(window["webpackJsonp"] = window["webpackJsonp"] || []).push([[2],{

/***/ "./node_modules/array-flat-polyfill/index.mjs":
/*!****************************************************!*\
  !*** ./node_modules/array-flat-polyfill/index.mjs ***!
  \****************************************************/
/*! no exports provided */
/***/ (function(__webpack_module__, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\nArray.prototype.flat||Object.defineProperty(Array.prototype,\"flat\",{configurable:!0,value:function r(){var t=isNaN(arguments[0])?1:Number(arguments[0]);return t?Array.prototype.reduce.call(this,function(a,e){return Array.isArray(e)?a.push.apply(a,r.call(e,t-1)):a.push(e),a},[]):Array.prototype.slice.call(this)},writable:!0}),Array.prototype.flatMap||Object.defineProperty(Array.prototype,\"flatMap\",{configurable:!0,value:function(r){return Array.prototype.map.apply(this,arguments).flat()},writable:!0})\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvYXJyYXktZmxhdC1wb2x5ZmlsbC9pbmRleC5tanMuanMiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvYXJyYXktZmxhdC1wb2x5ZmlsbC9pbmRleC5tanM/YmE2MSJdLCJzb3VyY2VzQ29udGVudCI6WyJBcnJheS5wcm90b3R5cGUuZmxhdHx8T2JqZWN0LmRlZmluZVByb3BlcnR5KEFycmF5LnByb3RvdHlwZSxcImZsYXRcIix7Y29uZmlndXJhYmxlOiEwLHZhbHVlOmZ1bmN0aW9uIHIoKXt2YXIgdD1pc05hTihhcmd1bWVudHNbMF0pPzE6TnVtYmVyKGFyZ3VtZW50c1swXSk7cmV0dXJuIHQ/QXJyYXkucHJvdG90eXBlLnJlZHVjZS5jYWxsKHRoaXMsZnVuY3Rpb24oYSxlKXtyZXR1cm4gQXJyYXkuaXNBcnJheShlKT9hLnB1c2guYXBwbHkoYSxyLmNhbGwoZSx0LTEpKTphLnB1c2goZSksYX0sW10pOkFycmF5LnByb3RvdHlwZS5zbGljZS5jYWxsKHRoaXMpfSx3cml0YWJsZTohMH0pLEFycmF5LnByb3RvdHlwZS5mbGF0TWFwfHxPYmplY3QuZGVmaW5lUHJvcGVydHkoQXJyYXkucHJvdG90eXBlLFwiZmxhdE1hcFwiLHtjb25maWd1cmFibGU6ITAsdmFsdWU6ZnVuY3Rpb24ocil7cmV0dXJuIEFycmF5LnByb3RvdHlwZS5tYXAuYXBwbHkodGhpcyxhcmd1bWVudHMpLmZsYXQoKX0sd3JpdGFibGU6ITB9KVxuIl0sIm1hcHBpbmdzIjoiQUFBQTtBQUFBOyIsInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///./node_modules/array-flat-polyfill/index.mjs\n");

/***/ }),

/***/ "./node_modules/clone/clone.js":
/*!*************************************!*\
  !*** ./node_modules/clone/clone.js ***!
  \*************************************/
/*! no static exports found */
/***/ (function(module, exports, __webpack_require__) {

eval("/* WEBPACK VAR INJECTION */(function(Buffer) {var clone = (function() {\n'use strict';\n\nfunction _instanceof(obj, type) {\n  return type != null && obj instanceof type;\n}\n\nvar nativeMap;\ntry {\n  nativeMap = Map;\n} catch(_) {\n  // maybe a reference error because no `Map`. Give it a dummy value that no\n  // value will ever be an instanceof.\n  nativeMap = function() {};\n}\n\nvar nativeSet;\ntry {\n  nativeSet = Set;\n} catch(_) {\n  nativeSet = function() {};\n}\n\nvar nativePromise;\ntry {\n  nativePromise = Promise;\n} catch(_) {\n  nativePromise = function() {};\n}\n\n/**\n * Clones (copies) an Object using deep copying.\n *\n * This function supports circular references by default, but if you are certain\n * there are no circular references in your object, you can save some CPU time\n * by calling clone(obj, false).\n *\n * Caution: if `circular` is false and `parent` contains circular references,\n * your program may enter an infinite loop and crash.\n *\n * @param `parent` - the object to be cloned\n * @param `circular` - set to true if the object to be cloned may contain\n *    circular references. (optional - true by default)\n * @param `depth` - set to a number if the object is only to be cloned to\n *    a particular depth. (optional - defaults to Infinity)\n * @param `prototype` - sets the prototype to be used when cloning an object.\n *    (optional - defaults to parent prototype).\n * @param `includeNonEnumerable` - set to true if the non-enumerable properties\n *    should be cloned as well. Non-enumerable properties on the prototype\n *    chain will be ignored. (optional - false by default)\n*/\nfunction clone(parent, circular, depth, prototype, includeNonEnumerable) {\n  if (typeof circular === 'object') {\n    depth = circular.depth;\n    prototype = circular.prototype;\n    includeNonEnumerable = circular.includeNonEnumerable;\n    circular = circular.circular;\n  }\n  // maintain two arrays for circular references, where corresponding parents\n  // and children have the same index\n  var allParents = [];\n  var allChildren = [];\n\n  var useBuffer = typeof Buffer != 'undefined';\n\n  if (typeof circular == 'undefined')\n    circular = true;\n\n  if (typeof depth == 'undefined')\n    depth = Infinity;\n\n  // recurse this function so we don't reset allParents and allChildren\n  function _clone(parent, depth) {\n    // cloning null always returns null\n    if (parent === null)\n      return null;\n\n    if (depth === 0)\n      return parent;\n\n    var child;\n    var proto;\n    if (typeof parent != 'object') {\n      return parent;\n    }\n\n    if (_instanceof(parent, nativeMap)) {\n      child = new nativeMap();\n    } else if (_instanceof(parent, nativeSet)) {\n      child = new nativeSet();\n    } else if (_instanceof(parent, nativePromise)) {\n      child = new nativePromise(function (resolve, reject) {\n        parent.then(function(value) {\n          resolve(_clone(value, depth - 1));\n        }, function(err) {\n          reject(_clone(err, depth - 1));\n        });\n      });\n    } else if (clone.__isArray(parent)) {\n      child = [];\n    } else if (clone.__isRegExp(parent)) {\n      child = new RegExp(parent.source, __getRegExpFlags(parent));\n      if (parent.lastIndex) child.lastIndex = parent.lastIndex;\n    } else if (clone.__isDate(parent)) {\n      child = new Date(parent.getTime());\n    } else if (useBuffer && Buffer.isBuffer(parent)) {\n      if (Buffer.allocUnsafe) {\n        // Node.js >= 4.5.0\n        child = Buffer.allocUnsafe(parent.length);\n      } else {\n        // Older Node.js versions\n        child = new Buffer(parent.length);\n      }\n      parent.copy(child);\n      return child;\n    } else if (_instanceof(parent, Error)) {\n      child = Object.create(parent);\n    } else {\n      if (typeof prototype == 'undefined') {\n        proto = Object.getPrototypeOf(parent);\n        child = Object.create(proto);\n      }\n      else {\n        child = Object.create(prototype);\n        proto = prototype;\n      }\n    }\n\n    if (circular) {\n      var index = allParents.indexOf(parent);\n\n      if (index != -1) {\n        return allChildren[index];\n      }\n      allParents.push(parent);\n      allChildren.push(child);\n    }\n\n    if (_instanceof(parent, nativeMap)) {\n      parent.forEach(function(value, key) {\n        var keyChild = _clone(key, depth - 1);\n        var valueChild = _clone(value, depth - 1);\n        child.set(keyChild, valueChild);\n      });\n    }\n    if (_instanceof(parent, nativeSet)) {\n      parent.forEach(function(value) {\n        var entryChild = _clone(value, depth - 1);\n        child.add(entryChild);\n      });\n    }\n\n    for (var i in parent) {\n      var attrs;\n      if (proto) {\n        attrs = Object.getOwnPropertyDescriptor(proto, i);\n      }\n\n      if (attrs && attrs.set == null) {\n        continue;\n      }\n      child[i] = _clone(parent[i], depth - 1);\n    }\n\n    if (Object.getOwnPropertySymbols) {\n      var symbols = Object.getOwnPropertySymbols(parent);\n      for (var i = 0; i < symbols.length; i++) {\n        // Don't need to worry about cloning a symbol because it is a primitive,\n        // like a number or string.\n        var symbol = symbols[i];\n        var descriptor = Object.getOwnPropertyDescriptor(parent, symbol);\n        if (descriptor && !descriptor.enumerable && !includeNonEnumerable) {\n          continue;\n        }\n        child[symbol] = _clone(parent[symbol], depth - 1);\n        if (!descriptor.enumerable) {\n          Object.defineProperty(child, symbol, {\n            enumerable: false\n          });\n        }\n      }\n    }\n\n    if (includeNonEnumerable) {\n      var allPropertyNames = Object.getOwnPropertyNames(parent);\n      for (var i = 0; i < allPropertyNames.length; i++) {\n        var propertyName = allPropertyNames[i];\n        var descriptor = Object.getOwnPropertyDescriptor(parent, propertyName);\n        if (descriptor && descriptor.enumerable) {\n          continue;\n        }\n        child[propertyName] = _clone(parent[propertyName], depth - 1);\n        Object.defineProperty(child, propertyName, {\n          enumerable: false\n        });\n      }\n    }\n\n    return child;\n  }\n\n  return _clone(parent, depth);\n}\n\n/**\n * Simple flat clone using prototype, accepts only objects, usefull for property\n * override on FLAT configuration object (no nested props).\n *\n * USE WITH CAUTION! This may not behave as you wish if you do not know how this\n * works.\n */\nclone.clonePrototype = function clonePrototype(parent) {\n  if (parent === null)\n    return null;\n\n  var c = function () {};\n  c.prototype = parent;\n  return new c();\n};\n\n// private utility functions\n\nfunction __objToStr(o) {\n  return Object.prototype.toString.call(o);\n}\nclone.__objToStr = __objToStr;\n\nfunction __isDate(o) {\n  return typeof o === 'object' && __objToStr(o) === '[object Date]';\n}\nclone.__isDate = __isDate;\n\nfunction __isArray(o) {\n  return typeof o === 'object' && __objToStr(o) === '[object Array]';\n}\nclone.__isArray = __isArray;\n\nfunction __isRegExp(o) {\n  return typeof o === 'object' && __objToStr(o) === '[object RegExp]';\n}\nclone.__isRegExp = __isRegExp;\n\nfunction __getRegExpFlags(re) {\n  var flags = '';\n  if (re.global) flags += 'g';\n  if (re.ignoreCase) flags += 'i';\n  if (re.multiline) flags += 'm';\n  return flags;\n}\nclone.__getRegExpFlags = __getRegExpFlags;\n\nreturn clone;\n})();\n\nif ( true && module.exports) {\n  module.exports = clone;\n}\n\n/* WEBPACK VAR INJECTION */}.call(this, __webpack_require__(/*! ./../buffer/index.js */ \"./node_modules/buffer/index.js\").Buffer))//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,[encoded data, 12008 characters]\n//# sourceURL=webpack-internal:///./node_modules/clone/clone.js\n");

/***/ }),

/***/ "./node_modules/d3-delaunay/src/delaunay.js":
/*!**************************************************!*\
  !*** ./node_modules/d3-delaunay/src/delaunay.js ***!
  \**************************************************/
/*! exports provided: default */
/***/ (function(module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"default\", function() { return Delaunay; });\n/* harmony import */ var delaunator__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! delaunator */ \"./node_modules/delaunator/index.js\");\n/* harmony import */ var _path_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./path.js */ \"./node_modules/d3-delaunay/src/path.js\");\n/* harmony import */ var _polygon_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./polygon.js */ \"./node_modules/d3-delaunay/src/polygon.js\");\n/* harmony import */ var _voronoi_js__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ./voronoi.js */ \"./node_modules/d3-delaunay/src/voronoi.js\");\n\n\n\n\n\nconst tau = 2 * Math.PI, pow = Math.pow;\n\nfunction pointX(p) {\n  return p[0];\n}\n\nfunction pointY(p) {\n  return p[1];\n}\n\n// A triangulation is collinear if all its triangles have a non-null area\nfunction collinear(d) {\n  const {triangles, coords} = d;\n  for (let i = 0; i < triangles.length; i += 3) {\n    const a = 2 * triangles[i],\n          b = 2 * triangles[i + 1],\n          c = 2 * triangles[i + 2],\n          cross = (coords[c] - coords[a]) * (coords[b + 1] - coords[a + 1])\n                - (coords[b] - coords[a]) * (coords[c + 1] - coords[a + 1]);\n    if (cross > 1e-10) return false;\n  }\n  return true;\n}\n\nfunction jitter(x, y, r) {\n  return [x + Math.sin(x + y) * r, y + Math.cos(x - y) * r];\n}\n\nclass Delaunay {\n  static from(points, fx = pointX, fy = pointY, that) {\n    return new Delaunay(\"length\" in points\n        ? flatArray(points, fx, fy, that)\n        : Float64Array.from(flatIterable(points, fx, fy, that)));\n  }\n  constructor(points) {\n    this._delaunator = new delaunator__WEBPACK_IMPORTED_MODULE_0__[\"default\"](points);\n    this.inedges = new Int32Array(points.length / 2);\n    this._hullIndex = new Int32Array(points.length / 2);\n    this.points = this._delaunator.coords;\n    this._init();\n  }\n  update() {\n    this._delaunator.update();\n    this._init();\n    return this;\n  }\n  _init() {\n    const d = this._delaunator, points = this.points;\n\n    // check for collinear\n    if (d.hull && d.hull.length > 2 && collinear(d)) {\n      this.collinear = Int32Array.from({length: points.length/2}, (_,i) => i)\n        .sort((i, j) => points[2 * i] - points[2 * j] || points[2 * i + 1] - points[2 * j + 1]); // for exact neighbors\n      const e = this.collinear[0], f = this.collinear[this.collinear.length - 1],\n        bounds = [ points[2 * e], points[2 * e + 1], points[2 * f], points[2 * f + 1] ],\n        r = 1e-8 * Math.hypot(bounds[3] - bounds[1], bounds[2] - bounds[0]);\n      for (let i = 0, n = points.length / 2; i < n; ++i) {\n        const p = jitter(points[2 * i], points[2 * i + 1], r);\n        points[2 * i] = p[0];\n        points[2 * i + 1] = p[1];\n      }\n      this._delaunator = new delaunator__WEBPACK_IMPORTED_MODULE_0__[\"default\"](points);\n    } else {\n      delete this.collinear;\n    }\n\n    const halfedges = this.halfedges = this._delaunator.halfedges;\n    const hull = this.hull = this._delaunator.hull;\n    const triangles = this.triangles = this._delaunator.triangles;\n    const inedges = this.inedges.fill(-1);\n    const hullIndex = this._hullIndex.fill(-1);\n\n    // Compute an index from each point to an (arbitrary) incoming halfedge\n    // Used to give the first neighbor of each point; for this reason,\n    // on the hull we give priority to exterior halfedges\n    for (let e = 0, n = halfedges.length; e < n; ++e) {\n      const p = triangles[e % 3 === 2 ? e - 2 : e + 1];\n      if (halfedges[e] === -1 || inedges[p] === -1) inedges[p] = e;\n    }\n    for (let i = 0, n = hull.length; i < n; ++i) {\n      hullIndex[hull[i]] = i;\n    }\n\n    // degenerate case: 1 or 2 (distinct) points\n    if (hull.length <= 2 && hull.length > 0) {\n      this.triangles = new Int32Array(3).fill(-1);\n      this.halfedges = new Int32Array(3).fill(-1);\n      this.triangles[0] = hull[0];\n      this.triangles[1] = hull[1];\n      this.triangles[2] = hull[1];\n      inedges[hull[0]] = 1;\n      if (hull.length === 2) inedges[hull[1]] = 0;\n    }\n  }\n  voronoi(bounds) {\n    return new _voronoi_js__WEBPACK_IMPORTED_MODULE_3__[\"default\"](this, bounds);\n  }\n  *neighbors(i) {\n    const {inedges, hull, _hullIndex, halfedges, triangles, collinear} = this;\n\n    // degenerate case with several collinear points\n    if (collinear) {\n      const l = collinear.indexOf(i);\n      if (l > 0) yield collinear[l - 1];\n      if (l < collinear.length - 1) yield collinear[l + 1];\n      return;\n    }\n\n    const e0 = inedges[i];\n    if (e0 === -1) return; // coincident point\n    let e = e0, p0 = -1;\n    do {\n      yield p0 = triangles[e];\n      e = e % 3 === 2 ? e - 2 : e + 1;\n      if (triangles[e] !== i) return; // bad triangulation\n      e = halfedges[e];\n      if (e === -1) {\n        const p = hull[(_hullIndex[i] + 1) % hull.length];\n        if (p !== p0) yield p;\n        return;\n      }\n    } while (e !== e0);\n  }\n  find(x, y, i = 0) {\n    if ((x = +x, x !== x) || (y = +y, y !== y)) return -1;\n    const i0 = i;\n    let c;\n    while ((c = this._step(i, x, y)) >= 0 && c !== i && c !== i0) i = c;\n    return c;\n  }\n  _step(i, x, y) {\n    const {inedges, hull, _hullIndex, halfedges, triangles, points} = this;\n    if (inedges[i] === -1 || !points.length) return (i + 1) % (points.length >> 1);\n    let c = i;\n    let dc = pow(x - points[i * 2], 2) + pow(y - points[i * 2 + 1], 2);\n    const e0 = inedges[i];\n    let e = e0;\n    do {\n      let t = triangles[e];\n      const dt = pow(x - points[t * 2], 2) + pow(y - points[t * 2 + 1], 2);\n      if (dt < dc) dc = dt, c = t;\n      e = e % 3 === 2 ? e - 2 : e + 1;\n      if (triangles[e] !== i) break; // bad triangulation\n      e = halfedges[e];\n      if (e === -1) {\n        e = hull[(_hullIndex[i] + 1) % hull.length];\n        if (e !== t) {\n          if (pow(x - points[e * 2], 2) + pow(y - points[e * 2 + 1], 2) < dc) return e;\n        }\n        break;\n      }\n    } while (e !== e0);\n    return c;\n  }\n  render(context) {\n    const buffer = context == null ? context = new _path_js__WEBPACK_IMPORTED_MODULE_1__[\"default\"] : undefined;\n    const {points, halfedges, triangles} = this;\n    for (let i = 0, n = halfedges.length; i < n; ++i) {\n      const j = halfedges[i];\n      if (j < i) continue;\n      const ti = triangles[i] * 2;\n      const tj = triangles[j] * 2;\n      context.moveTo(points[ti], points[ti + 1]);\n      context.lineTo(points[tj], points[tj + 1]);\n    }\n    this.renderHull(context);\n    return buffer && buffer.value();\n  }\n  renderPoints(context, r = 2) {\n    const buffer = context == null ? context = new _path_js__WEBPACK_IMPORTED_MODULE_1__[\"default\"] : undefined;\n    const {points} = this;\n    for (let i = 0, n = points.length; i < n; i += 2) {\n      const x = points[i], y = points[i + 1];\n      context.moveTo(x + r, y);\n      context.arc(x, y, r, 0, tau);\n    }\n    return buffer && buffer.value();\n  }\n  renderHull(context) {\n    const buffer = context == null ? context = new _path_js__WEBPACK_IMPORTED_MODULE_1__[\"default\"] : undefined;\n    const {hull, points} = this;\n    const h = hull[0] * 2, n = hull.length;\n    context.moveTo(points[h], points[h + 1]);\n    for (let i = 1; i < n; ++i) {\n      const h = 2 * hull[i];\n      context.lineTo(points[h], points[h + 1]);\n    }\n    context.closePath();\n    return buffer && buffer.value();\n  }\n  hullPolygon() {\n    const polygon = new _polygon_js__WEBPACK_IMPORTED_MODULE_2__[\"default\"];\n    this.renderHull(polygon);\n    return polygon.value();\n  }\n  renderTriangle(i, context) {\n    const buffer = context == null ? context = new _path_js__WEBPACK_IMPORTED_MODULE_1__[\"default\"] : undefined;\n    const {points, triangles} = this;\n    const t0 = triangles[i *= 3] * 2;\n    const t1 = triangles[i + 1] * 2;\n    const t2 = triangles[i + 2] * 2;\n    context.moveTo(points[t0], points[t0 + 1]);\n    context.lineTo(points[t1], points[t1 + 1]);\n    context.lineTo(points[t2], points[t2 + 1]);\n    context.closePath();\n    return buffer && buffer.value();\n  }\n  *trianglePolygons() {\n    const {triangles} = this;\n    for (let i = 0, n = triangles.length / 3; i < n; ++i) {\n      yield this.trianglePolygon(i);\n    }\n  }\n  trianglePolygon(i) {\n    const polygon = new _polygon_js__WEBPACK_IMPORTED_MODULE_2__[\"default\"];\n    this.renderTriangle(i, polygon);\n    return polygon.value();\n  }\n}\n\nfunction flatArray(points, fx, fy, that) {\n  const n = points.length;\n  const array = new Float64Array(n * 2);\n  for (let i = 0; i < n; ++i) {\n    const p = points[i];\n    array[i * 2] = fx.call(that, p, i, points);\n    array[i * 2 + 1] = fy.call(that, p, i, points);\n  }\n  return array;\n}\n\nfunction* flatIterable(points, fx, fy, that) {\n  let i = 0;\n  for (const p of points) {\n    yield fx.call(that, p, i, points);\n    yield fy.call(that, p, i, points);\n    ++i;\n  }\n}\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,[encoded data, 12788 characters]\n//# sourceURL=webpack-internal:///./node_modules/d3-delaunay/src/delaunay.js\n");

/***/ }),

/***/ "./node_modules/d3-delaunay/src/index.js":
/*!***********************************************!*\
  !*** ./node_modules/d3-delaunay/src/index.js ***!
  \***********************************************/
/*! exports provided: Delaunay, Voronoi */
/***/ (function(module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _delaunay_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./delaunay.js */ \"./node_modules/d3-delaunay/src/delaunay.js\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"Delaunay\", function() { return _delaunay_js__WEBPACK_IMPORTED_MODULE_0__[\"default\"]; });\n\n/* harmony import */ var _voronoi_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./voronoi.js */ \"./node_modules/d3-delaunay/src/voronoi.js\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"Voronoi\", function() { return _voronoi_js__WEBPACK_IMPORTED_MODULE_1__[\"default\"]; });\n\n\n\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvZDMtZGVsYXVuYXkvc3JjL2luZGV4LmpzLmpzIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL2QzLWRlbGF1bmF5L3NyYy9pbmRleC5qcz9jZmNhIl0sInNvdXJjZXNDb250ZW50IjpbImV4cG9ydCB7ZGVmYXVsdCBhcyBEZWxhdW5heX0gZnJvbSBcIi4vZGVsYXVuYXkuanNcIjtcbmV4cG9ydCB7ZGVmYXVsdCBhcyBWb3Jvbm9pfSBmcm9tIFwiLi92b3Jvbm9pLmpzXCI7XG4iXSwibWFwcGluZ3MiOiJBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFDQTsiLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///./node_modules/d3-delaunay/src/index.js\n");

/***/ }),

/***/ "./node_modules/d3-delaunay/src/path.js":
/*!**********************************************!*\
  !*** ./node_modules/d3-delaunay/src/path.js ***!
  \**********************************************/
/*! exports provided: default */
/***/ (function(module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"default\", function() { return Path; });\nconst epsilon = 1e-6;\n\nclass Path {\n  constructor() {\n    this._x0 = this._y0 = // start of current subpath\n    this._x1 = this._y1 = null; // end of current subpath\n    this._ = \"\";\n  }\n  moveTo(x, y) {\n    this._ += `M${this._x0 = this._x1 = +x},${this._y0 = this._y1 = +y}`;\n  }\n  closePath() {\n    if (this._x1 !== null) {\n      this._x1 = this._x0, this._y1 = this._y0;\n      this._ += \"Z\";\n    }\n  }\n  lineTo(x, y) {\n    this._ += `L${this._x1 = +x},${this._y1 = +y}`;\n  }\n  arc(x, y, r) {\n    x = +x, y = +y, r = +r;\n    const x0 = x + r;\n    const y0 = y;\n    if (r < 0) throw new Error(\"negative radius\");\n    if (this._x1 === null) this._ += `M${x0},${y0}`;\n    else if (Math.abs(this._x1 - x0) > epsilon || Math.abs(this._y1 - y0) > epsilon) this._ += \"L\" + x0 + \",\" + y0;\n    if (!r) return;\n    this._ += `A${r},${r},0,1,1,${x - r},${y}A${r},${r},0,1,1,${this._x1 = x0},${this._y1 = y0}`;\n  }\n  rect(x, y, w, h) {\n    this._ += `M${this._x0 = this._x1 = +x},${this._y0 = this._y1 = +y}h${+w}v${+h}h${-w}Z`;\n  }\n  value() {\n    return this._ || null;\n  }\n}\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvZDMtZGVsYXVuYXkvc3JjL3BhdGguanMuanMiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvZDMtZGVsYXVuYXkvc3JjL3BhdGguanM/ZjEyYiJdLCJzb3VyY2VzQ29udGVudCI6WyJjb25zdCBlcHNpbG9uID0gMWUtNjtcblxuZXhwb3J0IGRlZmF1bHQgY2xhc3MgUGF0aCB7XG4gIGNvbnN0cnVjdG9yKCkge1xuICAgIHRoaXMuX3gwID0gdGhpcy5feTAgPSAvLyBzdGFydCBvZiBjdXJyZW50IHN1YnBhdGhcbiAgICB0aGlzLl94MSA9IHRoaXMuX3kxID0gbnVsbDsgLy8gZW5kIG9mIGN1cnJlbnQgc3VicGF0aFxuICAgIHRoaXMuXyA9IFwiXCI7XG4gIH1cbiAgbW92ZVRvKHgsIHkpIHtcbiAgICB0aGlzLl8gKz0gYE0ke3RoaXMuX3gwID0gdGhpcy5feDEgPSAreH0sJHt0aGlzLl95MCA9IHRoaXMuX3kxID0gK3l9YDtcbiAgfVxuICBjbG9zZVBhdGgoKSB7XG4gICAgaWYgKHRoaXMuX3gxICE9PSBudWxsKSB7XG4gICAgICB0aGlzLl94MSA9IHRoaXMuX3gwLCB0aGlzLl95MSA9IHRoaXMuX3kwO1xuICAgICAgdGhpcy5fICs9IFwiWlwiO1xuICAgIH1cbiAgfVxuICBsaW5lVG8oeCwgeSkge1xuICAgIHRoaXMuXyArPSBgTCR7dGhpcy5feDEgPSAreH0sJHt0aGlzLl95MSA9ICt5fWA7XG4gIH1cbiAgYXJjKHgsIHksIHIpIHtcbiAgICB4ID0gK3gsIHkgPSAreSwgciA9ICtyO1xuICAgIGNvbnN0IHgwID0geCArIHI7XG4gICAgY29uc3QgeTAgPSB5O1xuICAgIGlmIChyIDwgMCkgdGhyb3cgbmV3IEVycm9yKFwibmVnYXRpdmUgcmFkaXVzXCIpO1xuICAgIGlmICh0aGlzLl94MSA9PT0gbnVsbCkgdGhpcy5fICs9IGBNJHt4MH0sJHt5MH1gO1xuICAgIGVsc2UgaWYgKE1hdGguYWJzKHRoaXMuX3gxIC0geDApID4gZXBzaWxvbiB8fCBNYXRoLmFicyh0aGlzLl95MSAtIHkwKSA+IGVwc2lsb24pIHRoaXMuXyArPSBcIkxcIiArIHgwICsgXCIsXCIgKyB5MDtcbiAgICBpZiAoIXIpIHJldHVybjtcbiAgICB0aGlzLl8gKz0gYEEke3J9LCR7cn0sMCwxLDEsJHt4IC0gcn0sJHt5fUEke3J9LCR7cn0sMCwxLDEsJHt0aGlzLl94MSA9IHgwfSwke3RoaXMuX3kxID0geTB9YDtcbiAgfVxuICByZWN0KHgsIHksIHcsIGgpIHtcbiAgICB0aGlzLl8gKz0gYE0ke3RoaXMuX3gwID0gdGhpcy5feDEgPSAreH0sJHt0aGlzLl95MCA9IHRoaXMuX3kxID0gK3l9aCR7K3d9diR7K2h9aCR7LXd9WmA7XG4gIH1cbiAgdmFsdWUoKSB7XG4gICAgcmV0dXJuIHRoaXMuXyB8fCBudWxsO1xuICB9XG59XG4iXSwibWFwcGluZ3MiOiJBQUFBO0FBQUE7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTsiLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///./node_modules/d3-delaunay/src/path.js\n");

/***/ }),

/***/ "./node_modules/d3-delaunay/src/polygon.js":
/*!*************************************************!*\
  !*** ./node_modules/d3-delaunay/src/polygon.js ***!
  \*************************************************/
/*! exports provided: default */
/***/ (function(module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"default\", function() { return Polygon; });\nclass Polygon {\n  constructor() {\n    this._ = [];\n  }\n  moveTo(x, y) {\n    this._.push([x, y]);\n  }\n  closePath() {\n    this._.push(this._[0].slice());\n  }\n  lineTo(x, y) {\n    this._.push([x, y]);\n  }\n  value() {\n    return this._.length ? this._ : null;\n  }\n}\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvZDMtZGVsYXVuYXkvc3JjL3BvbHlnb24uanMuanMiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvZDMtZGVsYXVuYXkvc3JjL3BvbHlnb24uanM/NTgzNCJdLCJzb3VyY2VzQ29udGVudCI6WyJleHBvcnQgZGVmYXVsdCBjbGFzcyBQb2x5Z29uIHtcbiAgY29uc3RydWN0b3IoKSB7XG4gICAgdGhpcy5fID0gW107XG4gIH1cbiAgbW92ZVRvKHgsIHkpIHtcbiAgICB0aGlzLl8ucHVzaChbeCwgeV0pO1xuICB9XG4gIGNsb3NlUGF0aCgpIHtcbiAgICB0aGlzLl8ucHVzaCh0aGlzLl9bMF0uc2xpY2UoKSk7XG4gIH1cbiAgbGluZVRvKHgsIHkpIHtcbiAgICB0aGlzLl8ucHVzaChbeCwgeV0pO1xuICB9XG4gIHZhbHVlKCkge1xuICAgIHJldHVybiB0aGlzLl8ubGVuZ3RoID8gdGhpcy5fIDogbnVsbDtcbiAgfVxufVxuIl0sIm1hcHBpbmdzIjoiQUFBQTtBQUFBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTsiLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///./node_modules/d3-delaunay/src/polygon.js\n");

/***/ }),

/***/ "./node_modules/d3-delaunay/src/voronoi.js":
/*!*************************************************!*\
  !*** ./node_modules/d3-delaunay/src/voronoi.js ***!
  \*************************************************/
/*! exports provided: default */
/***/ (function(module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"default\", function() { return Voronoi; });\n/* harmony import */ var _path_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./path.js */ \"./node_modules/d3-delaunay/src/path.js\");\n/* harmony import */ var _polygon_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./polygon.js */ \"./node_modules/d3-delaunay/src/polygon.js\");\n\n\n\nclass Voronoi {\n  constructor(delaunay, [xmin, ymin, xmax, ymax] = [0, 0, 960, 500]) {\n    if (!((xmax = +xmax) >= (xmin = +xmin)) || !((ymax = +ymax) >= (ymin = +ymin))) throw new Error(\"invalid bounds\");\n    this.delaunay = delaunay;\n    this._circumcenters = new Float64Array(delaunay.points.length * 2);\n    this.vectors = new Float64Array(delaunay.points.length * 2);\n    this.xmax = xmax, this.xmin = xmin;\n    this.ymax = ymax, this.ymin = ymin;\n    this._init();\n  }\n  update() {\n    this.delaunay.update();\n    this._init();\n    return this;\n  }\n  _init() {\n    const {delaunay: {points, hull, triangles}, vectors} = this;\n\n    // Compute circumcenters.\n    const circumcenters = this.circumcenters = this._circumcenters.subarray(0, triangles.length / 3 * 2);\n    for (let i = 0, j = 0, n = triangles.length, x, y; i < n; i += 3, j += 2) {\n      const t1 = triangles[i] * 2;\n      const t2 = triangles[i + 1] * 2;\n      const t3 = triangles[i + 2] * 2;\n      const x1 = points[t1];\n      const y1 = points[t1 + 1];\n      const x2 = points[t2];\n      const y2 = points[t2 + 1];\n      const x3 = points[t3];\n      const y3 = points[t3 + 1];\n\n      const dx = x2 - x1;\n      const dy = y2 - y1;\n      const ex = x3 - x1;\n      const ey = y3 - y1;\n      const bl = dx * dx + dy * dy;\n      const cl = ex * ex + ey * ey;\n      const ab = (dx * ey - dy * ex) * 2;\n\n      if (!ab) {\n        // degenerate case (collinear diagram)\n        x = (x1 + x3) / 2 - 1e8 * ey;\n        y = (y1 + y3) / 2 + 1e8 * ex;\n      }\n      else if (Math.abs(ab) < 1e-8) {\n        // almost equal points (degenerate triangle)\n        x = (x1 + x3) / 2;\n        y = (y1 + y3) / 2;\n      } else {\n        const d = 1 / ab;\n        x = x1 + (ey * bl - dy * cl) * d;\n        y = y1 + (dx * cl - ex * bl) * d;\n      }\n      circumcenters[j] = x;\n      circumcenters[j + 1] = y;\n    }\n\n    // Compute exterior cell rays.\n    let h = hull[hull.length - 1];\n    let p0, p1 = h * 4;\n    let x0, x1 = points[2 * h];\n    let y0, y1 = points[2 * h + 1];\n    vectors.fill(0);\n    for (let i = 0; i < hull.length; ++i) {\n      h = hull[i];\n      p0 = p1, x0 = x1, y0 = y1;\n      p1 = h * 4, x1 = points[2 * h], y1 = points[2 * h + 1];\n      vectors[p0 + 2] = vectors[p1] = y0 - y1;\n      vectors[p0 + 3] = vectors[p1 + 1] = x1 - x0;\n    }\n  }\n  render(context) {\n    const buffer = context == null ? context = new _path_js__WEBPACK_IMPORTED_MODULE_0__[\"default\"] : undefined;\n    const {delaunay: {halfedges, inedges, hull}, circumcenters, vectors} = this;\n    if (hull.length <= 1) return null;\n    for (let i = 0, n = halfedges.length; i < n; ++i) {\n      const j = halfedges[i];\n      if (j < i) continue;\n      const ti = Math.floor(i / 3) * 2;\n      const tj = Math.floor(j / 3) * 2;\n      const xi = circumcenters[ti];\n      const yi = circumcenters[ti + 1];\n      const xj = circumcenters[tj];\n      const yj = circumcenters[tj + 1];\n      this._renderSegment(xi, yi, xj, yj, context);\n    }\n    let h0, h1 = hull[hull.length - 1];\n    for (let i = 0; i < hull.length; ++i) {\n      h0 = h1, h1 = hull[i];\n      const t = Math.floor(inedges[h1] / 3) * 2;\n      const x = circumcenters[t];\n      const y = circumcenters[t + 1];\n      const v = h0 * 4;\n      const p = this._project(x, y, vectors[v + 2], vectors[v + 3]);\n      if (p) this._renderSegment(x, y, p[0], p[1], context);\n    }\n    return buffer && buffer.value();\n  }\n  renderBounds(context) {\n    const buffer = context == null ? context = new _path_js__WEBPACK_IMPORTED_MODULE_0__[\"default\"] : undefined;\n    context.rect(this.xmin, this.ymin, this.xmax - this.xmin, this.ymax - this.ymin);\n    return buffer && buffer.value();\n  }\n  renderCell(i, context) {\n    const buffer = context == null ? context = new _path_js__WEBPACK_IMPORTED_MODULE_0__[\"default\"] : undefined;\n    const points = this._clip(i);\n    if (points === null || !points.length) return;\n    context.moveTo(points[0], points[1]);\n    let n = points.length;\n    while (points[0] === points[n-2] && points[1] === points[n-1] && n > 1) n -= 2;\n    for (let i = 2; i < n; i += 2) {\n      if (points[i] !== points[i-2] || points[i+1] !== points[i-1])\n        context.lineTo(points[i], points[i + 1]);\n    }\n    context.closePath();\n    return buffer && buffer.value();\n  }\n  *cellPolygons() {\n    const {delaunay: {points}} = this;\n    for (let i = 0, n = points.length / 2; i < n; ++i) {\n      const cell = this.cellPolygon(i);\n      if (cell) cell.index = i, yield cell;\n    }\n  }\n  cellPolygon(i) {\n    const polygon = new _polygon_js__WEBPACK_IMPORTED_MODULE_1__[\"default\"];\n    this.renderCell(i, polygon);\n    return polygon.value();\n  }\n  _renderSegment(x0, y0, x1, y1, context) {\n    let S;\n    const c0 = this._regioncode(x0, y0);\n    const c1 = this._regioncode(x1, y1);\n    if (c0 === 0 && c1 === 0) {\n      context.moveTo(x0, y0);\n      context.lineTo(x1, y1);\n    } else if (S = this._clipSegment(x0, y0, x1, y1, c0, c1)) {\n      context.moveTo(S[0], S[1]);\n      context.lineTo(S[2], S[3]);\n    }\n  }\n  contains(i, x, y) {\n    if ((x = +x, x !== x) || (y = +y, y !== y)) return false;\n    return this.delaunay._step(i, x, y) === i;\n  }\n  *neighbors(i) {\n    const ci = this._clip(i);\n    if (ci) for (const j of this.delaunay.neighbors(i)) {\n      const cj = this._clip(j);\n      // find the common edge\n      if (cj) loop: for (let ai = 0, li = ci.length; ai < li; ai += 2) {\n        for (let aj = 0, lj = cj.length; aj < lj; aj += 2) {\n          if (ci[ai] == cj[aj]\n          && ci[ai + 1] == cj[aj + 1]\n          && ci[(ai + 2) % li] == cj[(aj + lj - 2) % lj]\n          && ci[(ai + 3) % li] == cj[(aj + lj - 1) % lj]\n          ) {\n            yield j;\n            break loop;\n          }\n        }\n      }\n    }\n  }\n  _cell(i) {\n    const {circumcenters, delaunay: {inedges, halfedges, triangles}} = this;\n    const e0 = inedges[i];\n    if (e0 === -1) return null; // coincident point\n    const points = [];\n    let e = e0;\n    do {\n      const t = Math.floor(e / 3);\n      points.push(circumcenters[t * 2], circumcenters[t * 2 + 1]);\n      e = e % 3 === 2 ? e - 2 : e + 1;\n      if (triangles[e] !== i) break; // bad triangulation\n      e = halfedges[e];\n    } while (e !== e0 && e !== -1);\n    return points;\n  }\n  _clip(i) {\n    // degenerate case (1 valid point: return the box)\n    if (i === 0 && this.delaunay.hull.length === 1) {\n      return [this.xmax, this.ymin, this.xmax, this.ymax, this.xmin, this.ymax, this.xmin, this.ymin];\n    }\n    const points = this._cell(i);\n    if (points === null) return null;\n    const {vectors: V} = this;\n    const v = i * 4;\n    return V[v] || V[v + 1]\n        ? this._clipInfinite(i, points, V[v], V[v + 1], V[v + 2], V[v + 3])\n        : this._clipFinite(i, points);\n  }\n  _clipFinite(i, points) {\n    const n = points.length;\n    let P = null;\n    let x0, y0, x1 = points[n - 2], y1 = points[n - 1];\n    let c0, c1 = this._regioncode(x1, y1);\n    let e0, e1;\n    for (let j = 0; j < n; j += 2) {\n      x0 = x1, y0 = y1, x1 = points[j], y1 = points[j + 1];\n      c0 = c1, c1 = this._regioncode(x1, y1);\n      if (c0 === 0 && c1 === 0) {\n        e0 = e1, e1 = 0;\n        if (P) P.push(x1, y1);\n        else P = [x1, y1];\n      } else {\n        let S, sx0, sy0, sx1, sy1;\n        if (c0 === 0) {\n          if ((S = this._clipSegment(x0, y0, x1, y1, c0, c1)) === null) continue;\n          [sx0, sy0, sx1, sy1] = S;\n        } else {\n          if ((S = this._clipSegment(x1, y1, x0, y0, c1, c0)) === null) continue;\n          [sx1, sy1, sx0, sy0] = S;\n          e0 = e1, e1 = this._edgecode(sx0, sy0);\n          if (e0 && e1) this._edge(i, e0, e1, P, P.length);\n          if (P) P.push(sx0, sy0);\n          else P = [sx0, sy0];\n        }\n        e0 = e1, e1 = this._edgecode(sx1, sy1);\n        if (e0 && e1) this._edge(i, e0, e1, P, P.length);\n        if (P) P.push(sx1, sy1);\n        else P = [sx1, sy1];\n      }\n    }\n    if (P) {\n      e0 = e1, e1 = this._edgecode(P[0], P[1]);\n      if (e0 && e1) this._edge(i, e0, e1, P, P.length);\n    } else if (this.contains(i, (this.xmin + this.xmax) / 2, (this.ymin + this.ymax) / 2)) {\n      return [this.xmax, this.ymin, this.xmax, this.ymax, this.xmin, this.ymax, this.xmin, this.ymin];\n    }\n    return P;\n  }\n  _clipSegment(x0, y0, x1, y1, c0, c1) {\n    while (true) {\n      if (c0 === 0 && c1 === 0) return [x0, y0, x1, y1];\n      if (c0 & c1) return null;\n      let x, y, c = c0 || c1;\n      if (c & 0b1000) x = x0 + (x1 - x0) * (this.ymax - y0) / (y1 - y0), y = this.ymax;\n      else if (c & 0b0100) x = x0 + (x1 - x0) * (this.ymin - y0) / (y1 - y0), y = this.ymin;\n      else if (c & 0b0010) y = y0 + (y1 - y0) * (this.xmax - x0) / (x1 - x0), x = this.xmax;\n      else y = y0 + (y1 - y0) * (this.xmin - x0) / (x1 - x0), x = this.xmin;\n      if (c0) x0 = x, y0 = y, c0 = this._regioncode(x0, y0);\n      else x1 = x, y1 = y, c1 = this._regioncode(x1, y1);\n    }\n  }\n  _clipInfinite(i, points, vx0, vy0, vxn, vyn) {\n    let P = Array.from(points), p;\n    if (p = this._project(P[0], P[1], vx0, vy0)) P.unshift(p[0], p[1]);\n    if (p = this._project(P[P.length - 2], P[P.length - 1], vxn, vyn)) P.push(p[0], p[1]);\n    if (P = this._clipFinite(i, P)) {\n      for (let j = 0, n = P.length, c0, c1 = this._edgecode(P[n - 2], P[n - 1]); j < n; j += 2) {\n        c0 = c1, c1 = this._edgecode(P[j], P[j + 1]);\n        if (c0 && c1) j = this._edge(i, c0, c1, P, j), n = P.length;\n      }\n    } else if (this.contains(i, (this.xmin + this.xmax) / 2, (this.ymin + this.ymax) / 2)) {\n      P = [this.xmin, this.ymin, this.xmax, this.ymin, this.xmax, this.ymax, this.xmin, this.ymax];\n    }\n    return P;\n  }\n  _edge(i, e0, e1, P, j) {\n    while (e0 !== e1) {\n      let x, y;\n      switch (e0) {\n        case 0b0101: e0 = 0b0100; continue; // top-left\n        case 0b0100: e0 = 0b0110, x = this.xmax, y = this.ymin; break; // top\n        case 0b0110: e0 = 0b0010; continue; // top-right\n        case 0b0010: e0 = 0b1010, x = this.xmax, y = this.ymax; break; // right\n        case 0b1010: e0 = 0b1000; continue; // bottom-right\n        case 0b1000: e0 = 0b1001, x = this.xmin, y = this.ymax; break; // bottom\n        case 0b1001: e0 = 0b0001; continue; // bottom-left\n        case 0b0001: e0 = 0b0101, x = this.xmin, y = this.ymin; break; // left\n      }\n      if ((P[j] !== x || P[j + 1] !== y) && this.contains(i, x, y)) {\n        P.splice(j, 0, x, y), j += 2;\n      }\n    }\n    if (P.length > 4) {\n      for (let i = 0; i < P.length; i+= 2) {\n        const j = (i + 2) % P.length, k = (i + 4) % P.length;\n        if (P[i] === P[j] && P[j] === P[k]\n        || P[i + 1] === P[j + 1] && P[j + 1] === P[k + 1])\n          P.splice(j, 2), i -= 2;\n      }\n    }\n    return j;\n  }\n  _project(x0, y0, vx, vy) {\n    let t = Infinity, c, x, y;\n    if (vy < 0) { // top\n      if (y0 <= this.ymin) return null;\n      if ((c = (this.ymin - y0) / vy) < t) y = this.ymin, x = x0 + (t = c) * vx;\n    } else if (vy > 0) { // bottom\n      if (y0 >= this.ymax) return null;\n      if ((c = (this.ymax - y0) / vy) < t) y = this.ymax, x = x0 + (t = c) * vx;\n    }\n    if (vx > 0) { // right\n      if (x0 >= this.xmax) return null;\n      if ((c = (this.xmax - x0) / vx) < t) x = this.xmax, y = y0 + (t = c) * vy;\n    } else if (vx < 0) { // left\n      if (x0 <= this.xmin) return null;\n      if ((c = (this.xmin - x0) / vx) < t) x = this.xmin, y = y0 + (t = c) * vy;\n    }\n    return [x, y];\n  }\n  _edgecode(x, y) {\n    return (x === this.xmin ? 0b0001\n        : x === this.xmax ? 0b0010 : 0b0000)\n        | (y === this.ymin ? 0b0100\n        : y === this.ymax ? 0b1000 : 0b0000);\n  }\n  _regioncode(x, y) {\n    return (x < this.xmin ? 0b0001\n        : x > this.xmax ? 0b0010 : 0b0000)\n        | (y < this.ymin ? 0b0100\n        : y > this.ymax ? 0b1000 : 0b0000);\n  }\n}\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,[encoded data, 18380 characters]\n//# sourceURL=webpack-internal:///./node_modules/d3-delaunay/src/voronoi.js\n");

/***/ }),

/***/ "./node_modules/delaunator/index.js":
/*!******************************************!*\
  !*** ./node_modules/delaunator/index.js ***!
  \******************************************/
/*! exports provided: default */
/***/ (function(module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"default\", function() { return Delaunator; });\n\nconst EPSILON = Math.pow(2, -52);\nconst EDGE_STACK = new Uint32Array(512);\n\nclass Delaunator {\n\n    static from(points, getX = defaultGetX, getY = defaultGetY) {\n        const n = points.length;\n        const coords = new Float64Array(n * 2);\n\n        for (let i = 0; i < n; i++) {\n            const p = points[i];\n            coords[2 * i] = getX(p);\n            coords[2 * i + 1] = getY(p);\n        }\n\n        return new Delaunator(coords);\n    }\n\n    constructor(coords) {\n        const n = coords.length >> 1;\n        if (n > 0 && typeof coords[0] !== 'number') throw new Error('Expected coords to contain numbers.');\n\n        this.coords = coords;\n\n        // arrays that will store the triangulation graph\n        const maxTriangles = Math.max(2 * n - 5, 0);\n        this._triangles = new Uint32Array(maxTriangles * 3);\n        this._halfedges = new Int32Array(maxTriangles * 3);\n\n        // temporary arrays for tracking the edges of the advancing convex hull\n        this._hashSize = Math.ceil(Math.sqrt(n));\n        this._hullPrev = new Uint32Array(n); // edge to prev edge\n        this._hullNext = new Uint32Array(n); // edge to next edge\n        this._hullTri = new Uint32Array(n); // edge to adjacent triangle\n        this._hullHash = new Int32Array(this._hashSize).fill(-1); // angular edge hash\n\n        // temporary arrays for sorting points\n        this._ids = new Uint32Array(n);\n        this._dists = new Float64Array(n);\n\n        this.update();\n    }\n\n    update() {\n        const {coords, _hullPrev: hullPrev, _hullNext: hullNext, _hullTri: hullTri, _hullHash: hullHash} =  this;\n        const n = coords.length >> 1;\n\n        // populate an array of point indices; calculate input data bbox\n        let minX = Infinity;\n        let minY = Infinity;\n        let maxX = -Infinity;\n        let maxY = -Infinity;\n\n        for (let i = 0; i < n; i++) {\n            const x = coords[2 * i];\n            const y = coords[2 * i + 1];\n            if (x < minX) minX = x;\n            if (y < minY) minY = y;\n            if (x > maxX) maxX = x;\n            if (y > maxY) maxY = y;\n            this._ids[i] = i;\n        }\n        const cx = (minX + maxX) / 2;\n        const cy = (minY + maxY) / 2;\n\n        let minDist = Infinity;\n        let i0, i1, i2;\n\n        // pick a seed point close to the center\n        for (let i = 0; i < n; i++) {\n            const d = dist(cx, cy, coords[2 * i], coords[2 * i + 1]);\n            if (d < minDist) {\n                i0 = i;\n                minDist = d;\n            }\n        }\n        const i0x = coords[2 * i0];\n        const i0y = coords[2 * i0 + 1];\n\n        minDist = Infinity;\n\n        // find the point closest to the seed\n        for (let i = 0; i < n; i++) {\n            if (i === i0) continue;\n            const d = dist(i0x, i0y, coords[2 * i], coords[2 * i + 1]);\n            if (d < minDist && d > 0) {\n                i1 = i;\n                minDist = d;\n            }\n        }\n        let i1x = coords[2 * i1];\n        let i1y = coords[2 * i1 + 1];\n\n        let minRadius = Infinity;\n\n        // find the third point which forms the smallest circumcircle with the first two\n        for (let i = 0; i < n; i++) {\n            if (i === i0 || i === i1) continue;\n            const r = circumradius(i0x, i0y, i1x, i1y, coords[2 * i], coords[2 * i + 1]);\n            if (r < minRadius) {\n                i2 = i;\n                minRadius = r;\n            }\n        }\n        let i2x = coords[2 * i2];\n        let i2y = coords[2 * i2 + 1];\n\n        if (minRadius === Infinity) {\n            // order collinear points by dx (or dy if all x are identical)\n            // and return the list as a hull\n            for (let i = 0; i < n; i++) {\n                this._dists[i] = (coords[2 * i] - coords[0]) || (coords[2 * i + 1] - coords[1]);\n            }\n            quicksort(this._ids, this._dists, 0, n - 1);\n            const hull = new Uint32Array(n);\n            let j = 0;\n            for (let i = 0, d0 = -Infinity; i < n; i++) {\n                const id = this._ids[i];\n                if (this._dists[id] > d0) {\n                    hull[j++] = id;\n                    d0 = this._dists[id];\n                }\n            }\n            this.hull = hull.subarray(0, j);\n            this.triangles = new Uint32Array(0);\n            this.halfedges = new Uint32Array(0);\n            return;\n        }\n\n        // swap the order of the seed points for counter-clockwise orientation\n        if (orient(i0x, i0y, i1x, i1y, i2x, i2y)) {\n            const i = i1;\n            const x = i1x;\n            const y = i1y;\n            i1 = i2;\n            i1x = i2x;\n            i1y = i2y;\n            i2 = i;\n            i2x = x;\n            i2y = y;\n        }\n\n        const center = circumcenter(i0x, i0y, i1x, i1y, i2x, i2y);\n        this._cx = center.x;\n        this._cy = center.y;\n\n        for (let i = 0; i < n; i++) {\n            this._dists[i] = dist(coords[2 * i], coords[2 * i + 1], center.x, center.y);\n        }\n\n        // sort the points by distance from the seed triangle circumcenter\n        quicksort(this._ids, this._dists, 0, n - 1);\n\n        // set up the seed triangle as the starting hull\n        this._hullStart = i0;\n        let hullSize = 3;\n\n        hullNext[i0] = hullPrev[i2] = i1;\n        hullNext[i1] = hullPrev[i0] = i2;\n        hullNext[i2] = hullPrev[i1] = i0;\n\n        hullTri[i0] = 0;\n        hullTri[i1] = 1;\n        hullTri[i2] = 2;\n\n        hullHash.fill(-1);\n        hullHash[this._hashKey(i0x, i0y)] = i0;\n        hullHash[this._hashKey(i1x, i1y)] = i1;\n        hullHash[this._hashKey(i2x, i2y)] = i2;\n\n        this.trianglesLen = 0;\n        this._addTriangle(i0, i1, i2, -1, -1, -1);\n\n        for (let k = 0, xp, yp; k < this._ids.length; k++) {\n            const i = this._ids[k];\n            const x = coords[2 * i];\n            const y = coords[2 * i + 1];\n\n            // skip near-duplicate points\n            if (k > 0 && Math.abs(x - xp) <= EPSILON && Math.abs(y - yp) <= EPSILON) continue;\n            xp = x;\n            yp = y;\n\n            // skip seed triangle points\n            if (i === i0 || i === i1 || i === i2) continue;\n\n            // find a visible edge on the convex hull using edge hash\n            let start = 0;\n            for (let j = 0, key = this._hashKey(x, y); j < this._hashSize; j++) {\n                start = hullHash[(key + j) % this._hashSize];\n                if (start !== -1 && start !== hullNext[start]) break;\n            }\n\n            start = hullPrev[start];\n            let e = start, q;\n            while (q = hullNext[e], !orient(x, y, coords[2 * e], coords[2 * e + 1], coords[2 * q], coords[2 * q + 1])) {\n                e = q;\n                if (e === start) {\n                    e = -1;\n                    break;\n                }\n            }\n            if (e === -1) continue; // likely a near-duplicate point; skip it\n\n            // add the first triangle from the point\n            let t = this._addTriangle(e, i, hullNext[e], -1, -1, hullTri[e]);\n\n            // recursively flip triangles from the point until they satisfy the Delaunay condition\n            hullTri[i] = this._legalize(t + 2);\n            hullTri[e] = t; // keep track of boundary triangles on the hull\n            hullSize++;\n\n            // walk forward through the hull, adding more triangles and flipping recursively\n            let n = hullNext[e];\n            while (q = hullNext[n], orient(x, y, coords[2 * n], coords[2 * n + 1], coords[2 * q], coords[2 * q + 1])) {\n                t = this._addTriangle(n, i, q, hullTri[i], -1, hullTri[n]);\n                hullTri[i] = this._legalize(t + 2);\n                hullNext[n] = n; // mark as removed\n                hullSize--;\n                n = q;\n            }\n\n            // walk backward from the other side, adding more triangles and flipping\n            if (e === start) {\n                while (q = hullPrev[e], orient(x, y, coords[2 * q], coords[2 * q + 1], coords[2 * e], coords[2 * e + 1])) {\n                    t = this._addTriangle(q, i, e, -1, hullTri[e], hullTri[q]);\n                    this._legalize(t + 2);\n                    hullTri[q] = t;\n                    hullNext[e] = e; // mark as removed\n                    hullSize--;\n                    e = q;\n                }\n            }\n\n            // update the hull indices\n            this._hullStart = hullPrev[i] = e;\n            hullNext[e] = hullPrev[n] = i;\n            hullNext[i] = n;\n\n            // save the two new edges in the hash table\n            hullHash[this._hashKey(x, y)] = i;\n            hullHash[this._hashKey(coords[2 * e], coords[2 * e + 1])] = e;\n        }\n\n        this.hull = new Uint32Array(hullSize);\n        for (let i = 0, e = this._hullStart; i < hullSize; i++) {\n            this.hull[i] = e;\n            e = hullNext[e];\n        }\n\n        // trim typed triangle mesh arrays\n        this.triangles = this._triangles.subarray(0, this.trianglesLen);\n        this.halfedges = this._halfedges.subarray(0, this.trianglesLen);\n    }\n\n    _hashKey(x, y) {\n        return Math.floor(pseudoAngle(x - this._cx, y - this._cy) * this._hashSize) % this._hashSize;\n    }\n\n    _legalize(a) {\n        const {_triangles: triangles, _halfedges: halfedges, coords} = this;\n\n        let i = 0;\n        let ar = 0;\n\n        // recursion eliminated with a fixed-size stack\n        while (true) {\n            const b = halfedges[a];\n\n            /* if the pair of triangles doesn't satisfy the Delaunay condition\n             * (p1 is inside the circumcircle of [p0, pl, pr]), flip them,\n             * then do the same check/flip recursively for the new pair of triangles\n             *\n             *           pl                    pl\n             *          /||\\                  /  \\\n             *       al/ || \\bl            al/    \\a\n             *        /  ||  \\              /      \\\n             *       /  a||b  \\    flip    /___ar___\\\n             *     p0\\   ||   /p1   =>   p0\\---bl---/p1\n             *        \\  ||  /              \\      /\n             *       ar\\ || /br             b\\    /br\n             *          \\||/                  \\  /\n             *           pr                    pr\n             */\n            const a0 = a - a % 3;\n            ar = a0 + (a + 2) % 3;\n\n            if (b === -1) { // convex hull edge\n                if (i === 0) break;\n                a = EDGE_STACK[--i];\n                continue;\n            }\n\n            const b0 = b - b % 3;\n            const al = a0 + (a + 1) % 3;\n            const bl = b0 + (b + 2) % 3;\n\n            const p0 = triangles[ar];\n            const pr = triangles[a];\n            const pl = triangles[al];\n            const p1 = triangles[bl];\n\n            const illegal = inCircle(\n                coords[2 * p0], coords[2 * p0 + 1],\n                coords[2 * pr], coords[2 * pr + 1],\n                coords[2 * pl], coords[2 * pl + 1],\n                coords[2 * p1], coords[2 * p1 + 1]);\n\n            if (illegal) {\n                triangles[a] = p1;\n                triangles[b] = p0;\n\n                const hbl = halfedges[bl];\n\n                // edge swapped on the other side of the hull (rare); fix the halfedge reference\n                if (hbl === -1) {\n                    let e = this._hullStart;\n                    do {\n                        if (this._hullTri[e] === bl) {\n                            this._hullTri[e] = a;\n                            break;\n                        }\n                        e = this._hullPrev[e];\n                    } while (e !== this._hullStart);\n                }\n                this._link(a, hbl);\n                this._link(b, halfedges[ar]);\n                this._link(ar, bl);\n\n                const br = b0 + (b + 1) % 3;\n\n                // don't worry about hitting the cap: it can only happen on extremely degenerate input\n                if (i < EDGE_STACK.length) {\n                    EDGE_STACK[i++] = br;\n                }\n            } else {\n                if (i === 0) break;\n                a = EDGE_STACK[--i];\n            }\n        }\n\n        return ar;\n    }\n\n    _link(a, b) {\n        this._halfedges[a] = b;\n        if (b !== -1) this._halfedges[b] = a;\n    }\n\n    // add a new triangle given vertex indices and adjacent half-edge ids\n    _addTriangle(i0, i1, i2, a, b, c) {\n        const t = this.trianglesLen;\n\n        this._triangles[t] = i0;\n        this._triangles[t + 1] = i1;\n        this._triangles[t + 2] = i2;\n\n        this._link(t, a);\n        this._link(t + 1, b);\n        this._link(t + 2, c);\n\n        this.trianglesLen += 3;\n\n        return t;\n    }\n}\n\n// monotonically increases with real angle, but doesn't need expensive trigonometry\nfunction pseudoAngle(dx, dy) {\n    const p = dx / (Math.abs(dx) + Math.abs(dy));\n    return (dy > 0 ? 3 - p : 1 + p) / 4; // [0..1]\n}\n\nfunction dist(ax, ay, bx, by) {\n    const dx = ax - bx;\n    const dy = ay - by;\n    return dx * dx + dy * dy;\n}\n\n// return 2d orientation sign if we're confident in it through J. Shewchuk's error bound check\nfunction orientIfSure(px, py, rx, ry, qx, qy) {\n    const l = (ry - py) * (qx - px);\n    const r = (rx - px) * (qy - py);\n    return Math.abs(l - r) >= 3.3306690738754716e-16 * Math.abs(l + r) ? l - r : 0;\n}\n\n// a more robust orientation test that's stable in a given triangle (to fix robustness issues)\nfunction orient(rx, ry, qx, qy, px, py) {\n    const sign = orientIfSure(px, py, rx, ry, qx, qy) ||\n    orientIfSure(rx, ry, qx, qy, px, py) ||\n    orientIfSure(qx, qy, px, py, rx, ry);\n    return sign < 0;\n}\n\nfunction inCircle(ax, ay, bx, by, cx, cy, px, py) {\n    const dx = ax - px;\n    const dy = ay - py;\n    const ex = bx - px;\n    const ey = by - py;\n    const fx = cx - px;\n    const fy = cy - py;\n\n    const ap = dx * dx + dy * dy;\n    const bp = ex * ex + ey * ey;\n    const cp = fx * fx + fy * fy;\n\n    return dx * (ey * cp - bp * fy) -\n           dy * (ex * cp - bp * fx) +\n           ap * (ex * fy - ey * fx) < 0;\n}\n\nfunction circumradius(ax, ay, bx, by, cx, cy) {\n    const dx = bx - ax;\n    const dy = by - ay;\n    const ex = cx - ax;\n    const ey = cy - ay;\n\n    const bl = dx * dx + dy * dy;\n    const cl = ex * ex + ey * ey;\n    const d = 0.5 / (dx * ey - dy * ex);\n\n    const x = (ey * bl - dy * cl) * d;\n    const y = (dx * cl - ex * bl) * d;\n\n    return x * x + y * y;\n}\n\nfunction circumcenter(ax, ay, bx, by, cx, cy) {\n    const dx = bx - ax;\n    const dy = by - ay;\n    const ex = cx - ax;\n    const ey = cy - ay;\n\n    const bl = dx * dx + dy * dy;\n    const cl = ex * ex + ey * ey;\n    const d = 0.5 / (dx * ey - dy * ex);\n\n    const x = ax + (ey * bl - dy * cl) * d;\n    const y = ay + (dx * cl - ex * bl) * d;\n\n    return {x, y};\n}\n\nfunction quicksort(ids, dists, left, right) {\n    if (right - left <= 20) {\n        for (let i = left + 1; i <= right; i++) {\n            const temp = ids[i];\n            const tempDist = dists[temp];\n            let j = i - 1;\n            while (j >= left && dists[ids[j]] > tempDist) ids[j + 1] = ids[j--];\n            ids[j + 1] = temp;\n        }\n    } else {\n        const median = (left + right) >> 1;\n        let i = left + 1;\n        let j = right;\n        swap(ids, median, i);\n        if (dists[ids[left]] > dists[ids[right]]) swap(ids, left, right);\n        if (dists[ids[i]] > dists[ids[right]]) swap(ids, i, right);\n        if (dists[ids[left]] > dists[ids[i]]) swap(ids, left, i);\n\n        const temp = ids[i];\n        const tempDist = dists[temp];\n        while (true) {\n            do i++; while (dists[ids[i]] < tempDist);\n            do j--; while (dists[ids[j]] > tempDist);\n            if (j < i) break;\n            swap(ids, i, j);\n        }\n        ids[left + 1] = ids[j];\n        ids[j] = temp;\n\n        if (right - i + 1 >= j - left) {\n            quicksort(ids, dists, i, right);\n            quicksort(ids, dists, left, j - 1);\n        } else {\n            quicksort(ids, dists, left, j - 1);\n            quicksort(ids, dists, i, right);\n        }\n    }\n}\n\nfunction swap(arr, i, j) {\n    const tmp = arr[i];\n    arr[i] = arr[j];\n    arr[j] = tmp;\n}\n\nfunction defaultGetX(p) {\n    return p[0];\n}\nfunction defaultGetY(p) {\n    return p[1];\n}\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,[encoded data, 25796 characters]\n//# sourceURL=webpack-internal:///./node_modules/delaunator/index.js\n");

/***/ }),

/***/ "./node_modules/fast-deep-equal/index.js":
/*!***********************************************!*\
  !*** ./node_modules/fast-deep-equal/index.js ***!
  \***********************************************/
/*! no static exports found */
/***/ (function(module, exports, __webpack_require__) {

"use strict";
eval("\n\n// do not edit .js files directly - edit src/index.jst\n\n\n\nmodule.exports = function equal(a, b) {\n  if (a === b) return true;\n\n  if (a && b && typeof a == 'object' && typeof b == 'object') {\n    if (a.constructor !== b.constructor) return false;\n\n    var length, i, keys;\n    if (Array.isArray(a)) {\n      length = a.length;\n      if (length != b.length) return false;\n      for (i = length; i-- !== 0;)\n        if (!equal(a[i], b[i])) return false;\n      return true;\n    }\n\n\n\n    if (a.constructor === RegExp) return a.source === b.source && a.flags === b.flags;\n    if (a.valueOf !== Object.prototype.valueOf) return a.valueOf() === b.valueOf();\n    if (a.toString !== Object.prototype.toString) return a.toString() === b.toString();\n\n    keys = Object.keys(a);\n    length = keys.length;\n    if (length !== Object.keys(b).length) return false;\n\n    for (i = length; i-- !== 0;)\n      if (!Object.prototype.hasOwnProperty.call(b, keys[i])) return false;\n\n    for (i = length; i-- !== 0;) {\n      var key = keys[i];\n\n      if (!equal(a[key], b[key])) return false;\n    }\n\n    return true;\n  }\n\n  // true if both NaN, false otherwise\n  return a!==a && b!==b;\n};\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvZmFzdC1kZWVwLWVxdWFsL2luZGV4LmpzLmpzIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL2Zhc3QtZGVlcC1lcXVhbC9pbmRleC5qcz82OTRiIl0sInNvdXJjZXNDb250ZW50IjpbIid1c2Ugc3RyaWN0JztcblxuLy8gZG8gbm90IGVkaXQgLmpzIGZpbGVzIGRpcmVjdGx5IC0gZWRpdCBzcmMvaW5kZXguanN0XG5cblxuXG5tb2R1bGUuZXhwb3J0cyA9IGZ1bmN0aW9uIGVxdWFsKGEsIGIpIHtcbiAgaWYgKGEgPT09IGIpIHJldHVybiB0cnVlO1xuXG4gIGlmIChhICYmIGIgJiYgdHlwZW9mIGEgPT0gJ29iamVjdCcgJiYgdHlwZW9mIGIgPT0gJ29iamVjdCcpIHtcbiAgICBpZiAoYS5jb25zdHJ1Y3RvciAhPT0gYi5jb25zdHJ1Y3RvcikgcmV0dXJuIGZhbHNlO1xuXG4gICAgdmFyIGxlbmd0aCwgaSwga2V5cztcbiAgICBpZiAoQXJyYXkuaXNBcnJheShhKSkge1xuICAgICAgbGVuZ3RoID0gYS5sZW5ndGg7XG4gICAgICBpZiAobGVuZ3RoICE9IGIubGVuZ3RoKSByZXR1cm4gZmFsc2U7XG4gICAgICBmb3IgKGkgPSBsZW5ndGg7IGktLSAhPT0gMDspXG4gICAgICAgIGlmICghZXF1YWwoYVtpXSwgYltpXSkpIHJldHVybiBmYWxzZTtcbiAgICAgIHJldHVybiB0cnVlO1xuICAgIH1cblxuXG5cbiAgICBpZiAoYS5jb25zdHJ1Y3RvciA9PT0gUmVnRXhwKSByZXR1cm4gYS5zb3VyY2UgPT09IGIuc291cmNlICYmIGEuZmxhZ3MgPT09IGIuZmxhZ3M7XG4gICAgaWYgKGEudmFsdWVPZiAhPT0gT2JqZWN0LnByb3RvdHlwZS52YWx1ZU9mKSByZXR1cm4gYS52YWx1ZU9mKCkgPT09IGIudmFsdWVPZigpO1xuICAgIGlmIChhLnRvU3RyaW5nICE9PSBPYmplY3QucHJvdG90eXBlLnRvU3RyaW5nKSByZXR1cm4gYS50b1N0cmluZygpID09PSBiLnRvU3RyaW5nKCk7XG5cbiAgICBrZXlzID0gT2JqZWN0LmtleXMoYSk7XG4gICAgbGVuZ3RoID0ga2V5cy5sZW5ndGg7XG4gICAgaWYgKGxlbmd0aCAhPT0gT2JqZWN0LmtleXMoYikubGVuZ3RoKSByZXR1cm4gZmFsc2U7XG5cbiAgICBmb3IgKGkgPSBsZW5ndGg7IGktLSAhPT0gMDspXG4gICAgICBpZiAoIU9iamVjdC5wcm90b3R5cGUuaGFzT3duUHJvcGVydHkuY2FsbChiLCBrZXlzW2ldKSkgcmV0dXJuIGZhbHNlO1xuXG4gICAgZm9yIChpID0gbGVuZ3RoOyBpLS0gIT09IDA7KSB7XG4gICAgICB2YXIga2V5ID0ga2V5c1tpXTtcblxuICAgICAgaWYgKCFlcXVhbChhW2tleV0sIGJba2V5XSkpIHJldHVybiBmYWxzZTtcbiAgICB9XG5cbiAgICByZXR1cm4gdHJ1ZTtcbiAgfVxuXG4gIC8vIHRydWUgaWYgYm90aCBOYU4sIGZhbHNlIG90aGVyd2lzZVxuICByZXR1cm4gYSE9PWEgJiYgYiE9PWI7XG59O1xuIl0sIm1hcHBpbmdzIjoiQUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTsiLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///./node_modules/fast-deep-equal/index.js\n");

/***/ }),

/***/ "./node_modules/fast-json-patch/index.mjs":
/*!************************************************!*\
  !*** ./node_modules/fast-json-patch/index.mjs ***!
  \************************************************/
/*! exports provided: getValueByPointer, applyOperation, applyPatch, applyReducer, validator, validate, _areEquals, unobserve, observe, generate, compare, JsonPatchError, deepClone, escapePathComponent, unescapePathComponent, default */
/***/ (function(__webpack_module__, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _module_core_mjs__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./module/core.mjs */ \"./node_modules/fast-json-patch/module/core.mjs\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"getValueByPointer\", function() { return _module_core_mjs__WEBPACK_IMPORTED_MODULE_0__[\"getValueByPointer\"]; });\n\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"applyOperation\", function() { return _module_core_mjs__WEBPACK_IMPORTED_MODULE_0__[\"applyOperation\"]; });\n\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"applyPatch\", function() { return _module_core_mjs__WEBPACK_IMPORTED_MODULE_0__[\"applyPatch\"]; });\n\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"applyReducer\", function() { return _module_core_mjs__WEBPACK_IMPORTED_MODULE_0__[\"applyReducer\"]; });\n\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"validator\", function() { return _module_core_mjs__WEBPACK_IMPORTED_MODULE_0__[\"validator\"]; });\n\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"validate\", function() { return _module_core_mjs__WEBPACK_IMPORTED_MODULE_0__[\"validate\"]; });\n\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"_areEquals\", function() { return _module_core_mjs__WEBPACK_IMPORTED_MODULE_0__[\"_areEquals\"]; });\n\n/* harmony import */ var _module_duplex_mjs__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./module/duplex.mjs */ \"./node_modules/fast-json-patch/module/duplex.mjs\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"unobserve\", function() { return _module_duplex_mjs__WEBPACK_IMPORTED_MODULE_1__[\"unobserve\"]; });\n\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"observe\", function() { return _module_duplex_mjs__WEBPACK_IMPORTED_MODULE_1__[\"observe\"]; });\n\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"generate\", function() { return _module_duplex_mjs__WEBPACK_IMPORTED_MODULE_1__[\"generate\"]; });\n\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"compare\", function() { return _module_duplex_mjs__WEBPACK_IMPORTED_MODULE_1__[\"compare\"]; });\n\n/* harmony import */ var _module_helpers_mjs__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./module/helpers.mjs */ \"./node_modules/fast-json-patch/module/helpers.mjs\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"JsonPatchError\", function() { return _module_helpers_mjs__WEBPACK_IMPORTED_MODULE_2__[\"PatchError\"]; });\n\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"deepClone\", function() { return _module_helpers_mjs__WEBPACK_IMPORTED_MODULE_2__[\"_deepClone\"]; });\n\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"escapePathComponent\", function() { return _module_helpers_mjs__WEBPACK_IMPORTED_MODULE_2__[\"escapePathComponent\"]; });\n\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"unescapePathComponent\", function() { return _module_helpers_mjs__WEBPACK_IMPORTED_MODULE_2__[\"unescapePathComponent\"]; });\n\n\r\n\r\n\r\n\r\n\r\n/**\r\n * Default export for backwards compat\r\n */\r\n\r\n\r\n\r\n\r\n\r\n/* harmony default export */ __webpack_exports__[\"default\"] = (Object.assign({}, _module_core_mjs__WEBPACK_IMPORTED_MODULE_0__, _module_duplex_mjs__WEBPACK_IMPORTED_MODULE_1__, {\r\n    JsonPatchError: _module_helpers_mjs__WEBPACK_IMPORTED_MODULE_2__[\"PatchError\"],\r\n    deepClone: _module_helpers_mjs__WEBPACK_IMPORTED_MODULE_2__[\"_deepClone\"],\r\n    escapePathComponent: _module_helpers_mjs__WEBPACK_IMPORTED_MODULE_2__[\"escapePathComponent\"],\r\n    unescapePathComponent: _module_helpers_mjs__WEBPACK_IMPORTED_MODULE_2__[\"unescapePathComponent\"]\r\n}));//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvZmFzdC1qc29uLXBhdGNoL2luZGV4Lm1qcy5qcyIsInNvdXJjZXMiOlsid2VicGFjazovLy8uL25vZGVfbW9kdWxlcy9mYXN0LWpzb24tcGF0Y2gvaW5kZXgubWpzP2Q3MzMiXSwic291cmNlc0NvbnRlbnQiOlsiZXhwb3J0ICogZnJvbSAnLi9tb2R1bGUvY29yZS5tanMnO1xyXG5leHBvcnQgKiBmcm9tICcuL21vZHVsZS9kdXBsZXgubWpzJztcclxuZXhwb3J0IHtcclxuICAgIFBhdGNoRXJyb3IgYXMgSnNvblBhdGNoRXJyb3IsXHJcbiAgICBfZGVlcENsb25lIGFzIGRlZXBDbG9uZSxcclxuICAgIGVzY2FwZVBhdGhDb21wb25lbnQsXHJcbiAgICB1bmVzY2FwZVBhdGhDb21wb25lbnRcclxufSBmcm9tICcuL21vZHVsZS9oZWxwZXJzLm1qcyc7XHJcblxyXG5cclxuLyoqXHJcbiAqIERlZmF1bHQgZXhwb3J0IGZvciBiYWNrd2FyZHMgY29tcGF0XHJcbiAqL1xyXG5cclxuaW1wb3J0ICogYXMgY29yZSBmcm9tICcuL21vZHVsZS9jb3JlLm1qcyc7XHJcbmltcG9ydCAqIGFzIGR1cGxleCBmcm9tICcuL21vZHVsZS9kdXBsZXgubWpzJztcclxuaW1wb3J0IHtcclxuICAgIFBhdGNoRXJyb3IgYXMgSnNvblBhdGNoRXJyb3IsXHJcbiAgICBfZGVlcENsb25lIGFzIGRlZXBDbG9uZSxcclxuICAgIGVzY2FwZVBhdGhDb21wb25lbnQsXHJcbiAgICB1bmVzY2FwZVBhdGhDb21wb25lbnRcclxufSBmcm9tICcuL21vZHVsZS9oZWxwZXJzLm1qcyc7XHJcblxyXG5leHBvcnQgZGVmYXVsdCBPYmplY3QuYXNzaWduKHt9LCBjb3JlLCBkdXBsZXgsIHtcclxuICAgIEpzb25QYXRjaEVycm9yLFxyXG4gICAgZGVlcENsb25lLFxyXG4gICAgZXNjYXBlUGF0aENvbXBvbmVudCxcclxuICAgIHVuZXNjYXBlUGF0aENvbXBvbmVudFxyXG59KTsiXSwibWFwcGluZ3MiOiJBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFDQTtBQU1BO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQU1BO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EiLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///./node_modules/fast-json-patch/index.mjs\n");

/***/ }),

/***/ "./node_modules/fast-json-patch/module/core.mjs":
/*!******************************************************!*\
  !*** ./node_modules/fast-json-patch/module/core.mjs ***!
  \******************************************************/
/*! exports provided: JsonPatchError, deepClone, getValueByPointer, applyOperation, applyPatch, applyReducer, validator, validate, _areEquals */
/***/ (function(__webpack_module__, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"JsonPatchError\", function() { return JsonPatchError; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"deepClone\", function() { return deepClone; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"getValueByPointer\", function() { return getValueByPointer; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"applyOperation\", function() { return applyOperation; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"applyPatch\", function() { return applyPatch; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"applyReducer\", function() { return applyReducer; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"validator\", function() { return validator; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"validate\", function() { return validate; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"_areEquals\", function() { return _areEquals; });\n/* harmony import */ var _helpers_mjs__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./helpers.mjs */ \"./node_modules/fast-json-patch/module/helpers.mjs\");\n\nvar JsonPatchError = _helpers_mjs__WEBPACK_IMPORTED_MODULE_0__[\"PatchError\"];\nvar deepClone = _helpers_mjs__WEBPACK_IMPORTED_MODULE_0__[\"_deepClone\"];\n/* We use a Javascript hash to store each\n function. Each hash entry (property) uses\n the operation identifiers specified in rfc6902.\n In this way, we can map each patch operation\n to its dedicated function in efficient way.\n */\n/* The operations applicable to an object */\nvar objOps = {\n    add: function (obj, key, document) {\n        obj[key] = this.value;\n        return { newDocument: document };\n    },\n    remove: function (obj, key, document) {\n        var removed = obj[key];\n        delete obj[key];\n        return { newDocument: document, removed: removed };\n    },\n    replace: function (obj, key, document) {\n        var removed = obj[key];\n        obj[key] = this.value;\n        return { newDocument: document, removed: removed };\n    },\n    move: function (obj, key, document) {\n        /* in case move target overwrites an existing value,\n        return the removed value, this can be taxing performance-wise,\n        and is potentially unneeded */\n        var removed = getValueByPointer(document, this.path);\n        if (removed) {\n            removed = Object(_helpers_mjs__WEBPACK_IMPORTED_MODULE_0__[\"_deepClone\"])(removed);\n        }\n        var originalValue = applyOperation(document, { op: \"remove\", path: this.from }).removed;\n        applyOperation(document, { op: \"add\", path: this.path, value: originalValue });\n        return { newDocument: document, removed: removed };\n    },\n    copy: function (obj, key, document) {\n        var valueToCopy = getValueByPointer(document, this.from);\n        // enforce copy by value so further operations don't affect source (see issue #177)\n        applyOperation(document, { op: \"add\", path: this.path, value: Object(_helpers_mjs__WEBPACK_IMPORTED_MODULE_0__[\"_deepClone\"])(valueToCopy) });\n        return { newDocument: document };\n    },\n    test: function (obj, key, document) {\n        return { newDocument: document, test: _areEquals(obj[key], this.value) };\n    },\n    _get: function (obj, key, document) {\n        this.value = obj[key];\n        return { newDocument: document };\n    }\n};\n/* The operations applicable to an array. Many are the same as for the object */\nvar arrOps = {\n    add: function (arr, i, document) {\n        if (Object(_helpers_mjs__WEBPACK_IMPORTED_MODULE_0__[\"isInteger\"])(i)) {\n            arr.splice(i, 0, this.value);\n        }\n        else { // array props\n            arr[i] = this.value;\n        }\n        // this may be needed when using '-' in an array\n        return { newDocument: document, index: i };\n    },\n    remove: function (arr, i, document) {\n        var removedList = arr.splice(i, 1);\n        return { newDocument: document, removed: removedList[0] };\n    },\n    replace: function (arr, i, document) {\n        var removed = arr[i];\n        arr[i] = this.value;\n        return { newDocument: document, removed: removed };\n    },\n    move: objOps.move,\n    copy: objOps.copy,\n    test: objOps.test,\n    _get: objOps._get\n};\n/**\n * Retrieves a value from a JSON document by a JSON pointer.\n * Returns the value.\n *\n * @param document The document to get the value from\n * @param pointer an escaped JSON pointer\n * @return The retrieved value\n */\nfunction getValueByPointer(document, pointer) {\n    if (pointer == '') {\n        return document;\n    }\n    var getOriginalDestination = { op: \"_get\", path: pointer };\n    applyOperation(document, getOriginalDestination);\n    return getOriginalDestination.value;\n}\n/**\n * Apply a single JSON Patch Operation on a JSON document.\n * Returns the {newDocument, result} of the operation.\n * It modifies the `document` and `operation` objects - it gets the values by reference.\n * If you would like to avoid touching your values, clone them:\n * `jsonpatch.applyOperation(document, jsonpatch._deepClone(operation))`.\n *\n * @param document The document to patch\n * @param operation The operation to apply\n * @param validateOperation `false` is without validation, `true` to use default jsonpatch's validation, or you can pass a `validateOperation` callback to be used for validation.\n * @param mutateDocument Whether to mutate the original document or clone it before applying\n * @param banPrototypeModifications Whether to ban modifications to `__proto__`, defaults to `true`.\n * @return `{newDocument, result}` after the operation\n */\nfunction applyOperation(document, operation, validateOperation, mutateDocument, banPrototypeModifications, index) {\n    if (validateOperation === void 0) { validateOperation = false; }\n    if (mutateDocument === void 0) { mutateDocument = true; }\n    if (banPrototypeModifications === void 0) { banPrototypeModifications = true; }\n    if (index === void 0) { index = 0; }\n    if (validateOperation) {\n        if (typeof validateOperation == 'function') {\n            validateOperation(operation, 0, document, operation.path);\n        }\n        else {\n            validator(operation, 0);\n        }\n    }\n    /* ROOT OPERATIONS */\n    if (operation.path === \"\") {\n        var returnValue = { newDocument: document };\n        if (operation.op === 'add') {\n            returnValue.newDocument = operation.value;\n            return returnValue;\n        }\n        else if (operation.op === 'replace') {\n            returnValue.newDocument = operation.value;\n            returnValue.removed = document; //document we removed\n            return returnValue;\n        }\n        else if (operation.op === 'move' || operation.op === 'copy') { // it's a move or copy to root\n            returnValue.newDocument = getValueByPointer(document, operation.from); // get the value by json-pointer in `from` field\n            if (operation.op === 'move') { // report removed item\n                returnValue.removed = document;\n            }\n            return returnValue;\n        }\n        else if (operation.op === 'test') {\n            returnValue.test = _areEquals(document, operation.value);\n            if (returnValue.test === false) {\n                throw new JsonPatchError(\"Test operation failed\", 'TEST_OPERATION_FAILED', index, operation, document);\n            }\n            returnValue.newDocument = document;\n            return returnValue;\n        }\n        else if (operation.op === 'remove') { // a remove on root\n            returnValue.removed = document;\n            returnValue.newDocument = null;\n            return returnValue;\n        }\n        else if (operation.op === '_get') {\n            operation.value = document;\n            return returnValue;\n        }\n        else { /* bad operation */\n            if (validateOperation) {\n                throw new JsonPatchError('Operation `op` property is not one of operations defined in RFC-6902', 'OPERATION_OP_INVALID', index, operation, document);\n            }\n            else {\n                return returnValue;\n            }\n        }\n    } /* END ROOT OPERATIONS */\n    else {\n        if (!mutateDocument) {\n            document = Object(_helpers_mjs__WEBPACK_IMPORTED_MODULE_0__[\"_deepClone\"])(document);\n        }\n        var path = operation.path || \"\";\n        var keys = path.split('/');\n        var obj = document;\n        var t = 1; //skip empty element - http://jsperf.com/to-shift-or-not-to-shift\n        var len = keys.length;\n        var existingPathFragment = undefined;\n        var key = void 0;\n        var validateFunction = void 0;\n        if (typeof validateOperation == 'function') {\n            validateFunction = validateOperation;\n        }\n        else {\n            validateFunction = validator;\n        }\n        while (true) {\n            key = keys[t];\n            if (banPrototypeModifications && key == '__proto__') {\n                throw new TypeError('JSON-Patch: modifying `__proto__` prop is banned for security reasons, if this was on purpose, please set `banPrototypeModifications` flag false and pass it to this function. More info in fast-json-patch README');\n            }\n            if (validateOperation) {\n                if (existingPathFragment === undefined) {\n                    if (obj[key] === undefined) {\n                        existingPathFragment = keys.slice(0, t).join('/');\n                    }\n                    else if (t == len - 1) {\n                        existingPathFragment = operation.path;\n                    }\n                    if (existingPathFragment !== undefined) {\n                        validateFunction(operation, 0, document, existingPathFragment);\n                    }\n                }\n            }\n            t++;\n            if (Array.isArray(obj)) {\n                if (key === '-') {\n                    key = obj.length;\n                }\n                else {\n                    if (validateOperation && !Object(_helpers_mjs__WEBPACK_IMPORTED_MODULE_0__[\"isInteger\"])(key)) {\n                        throw new JsonPatchError(\"Expected an unsigned base-10 integer value, making the new referenced value the array element with the zero-based index\", \"OPERATION_PATH_ILLEGAL_ARRAY_INDEX\", index, operation, document);\n                    } // only parse key when it's an integer for `arr.prop` to work\n                    else if (Object(_helpers_mjs__WEBPACK_IMPORTED_MODULE_0__[\"isInteger\"])(key)) {\n                        key = ~~key;\n                    }\n                }\n                if (t >= len) {\n                    if (validateOperation && operation.op === \"add\" && key > obj.length) {\n                        throw new JsonPatchError(\"The specified index MUST NOT be greater than the number of elements in the array\", \"OPERATION_VALUE_OUT_OF_BOUNDS\", index, operation, document);\n                    }\n                    var returnValue = arrOps[operation.op].call(operation, obj, key, document); // Apply patch\n                    if (returnValue.test === false) {\n                        throw new JsonPatchError(\"Test operation failed\", 'TEST_OPERATION_FAILED', index, operation, document);\n                    }\n                    return returnValue;\n                }\n            }\n            else {\n                if (key && key.indexOf('~') != -1) {\n                    key = Object(_helpers_mjs__WEBPACK_IMPORTED_MODULE_0__[\"unescapePathComponent\"])(key);\n                }\n                if (t >= len) {\n                    var returnValue = objOps[operation.op].call(operation, obj, key, document); // Apply patch\n                    if (returnValue.test === false) {\n                        throw new JsonPatchError(\"Test operation failed\", 'TEST_OPERATION_FAILED', index, operation, document);\n                    }\n                    return returnValue;\n                }\n            }\n            obj = obj[key];\n        }\n    }\n}\n/**\n * Apply a full JSON Patch array on a JSON document.\n * Returns the {newDocument, result} of the patch.\n * It modifies the `document` object and `patch` - it gets the values by reference.\n * If you would like to avoid touching your values, clone them:\n * `jsonpatch.applyPatch(document, jsonpatch._deepClone(patch))`.\n *\n * @param document The document to patch\n * @param patch The patch to apply\n * @param validateOperation `false` is without validation, `true` to use default jsonpatch's validation, or you can pass a `validateOperation` callback to be used for validation.\n * @param mutateDocument Whether to mutate the original document or clone it before applying\n * @param banPrototypeModifications Whether to ban modifications to `__proto__`, defaults to `true`.\n * @return An array of `{newDocument, result}` after the patch\n */\nfunction applyPatch(document, patch, validateOperation, mutateDocument, banPrototypeModifications) {\n    if (mutateDocument === void 0) { mutateDocument = true; }\n    if (banPrototypeModifications === void 0) { banPrototypeModifications = true; }\n    if (validateOperation) {\n        if (!Array.isArray(patch)) {\n            throw new JsonPatchError('Patch sequence must be an array', 'SEQUENCE_NOT_AN_ARRAY');\n        }\n    }\n    if (!mutateDocument) {\n        document = Object(_helpers_mjs__WEBPACK_IMPORTED_MODULE_0__[\"_deepClone\"])(document);\n    }\n    var results = new Array(patch.length);\n    for (var i = 0, length_1 = patch.length; i < length_1; i++) {\n        // we don't need to pass mutateDocument argument because if it was true, we already deep cloned the object, we'll just pass `true`\n        results[i] = applyOperation(document, patch[i], validateOperation, true, banPrototypeModifications, i);\n        document = results[i].newDocument; // in case root was replaced\n    }\n    results.newDocument = document;\n    return results;\n}\n/**\n * Apply a single JSON Patch Operation on a JSON document.\n * Returns the updated document.\n * Suitable as a reducer.\n *\n * @param document The document to patch\n * @param operation The operation to apply\n * @return The updated document\n */\nfunction applyReducer(document, operation, index) {\n    var operationResult = applyOperation(document, operation);\n    if (operationResult.test === false) { // failed test\n        throw new JsonPatchError(\"Test operation failed\", 'TEST_OPERATION_FAILED', index, operation, document);\n    }\n    return operationResult.newDocument;\n}\n/**\n * Validates a single operation. Called from `jsonpatch.validate`. Throws `JsonPatchError` in case of an error.\n * @param {object} operation - operation object (patch)\n * @param {number} index - index of operation in the sequence\n * @param {object} [document] - object where the operation is supposed to be applied\n * @param {string} [existingPathFragment] - comes along with `document`\n */\nfunction validator(operation, index, document, existingPathFragment) {\n    if (typeof operation !== 'object' || operation === null || Array.isArray(operation)) {\n        throw new JsonPatchError('Operation is not an object', 'OPERATION_NOT_AN_OBJECT', index, operation, document);\n    }\n    else if (!objOps[operation.op]) {\n        throw new JsonPatchError('Operation `op` property is not one of operations defined in RFC-6902', 'OPERATION_OP_INVALID', index, operation, document);\n    }\n    else if (typeof operation.path !== 'string') {\n        throw new JsonPatchError('Operation `path` property is not a string', 'OPERATION_PATH_INVALID', index, operation, document);\n    }\n    else if (operation.path.indexOf('/') !== 0 && operation.path.length > 0) {\n        // paths that aren't empty string should start with \"/\"\n        throw new JsonPatchError('Operation `path` property must start with \"/\"', 'OPERATION_PATH_INVALID', index, operation, document);\n    }\n    else if ((operation.op === 'move' || operation.op === 'copy') && typeof operation.from !== 'string') {\n        throw new JsonPatchError('Operation `from` property is not present (applicable in `move` and `copy` operations)', 'OPERATION_FROM_REQUIRED', index, operation, document);\n    }\n    else if ((operation.op === 'add' || operation.op === 'replace' || operation.op === 'test') && operation.value === undefined) {\n        throw new JsonPatchError('Operation `value` property is not present (applicable in `add`, `replace` and `test` operations)', 'OPERATION_VALUE_REQUIRED', index, operation, document);\n    }\n    else if ((operation.op === 'add' || operation.op === 'replace' || operation.op === 'test') && Object(_helpers_mjs__WEBPACK_IMPORTED_MODULE_0__[\"hasUndefined\"])(operation.value)) {\n        throw new JsonPatchError('Operation `value` property is not present (applicable in `add`, `replace` and `test` operations)', 'OPERATION_VALUE_CANNOT_CONTAIN_UNDEFINED', index, operation, document);\n    }\n    else if (document) {\n        if (operation.op == \"add\") {\n            var pathLen = operation.path.split(\"/\").length;\n            var existingPathLen = existingPathFragment.split(\"/\").length;\n            if (pathLen !== existingPathLen + 1 && pathLen !== existingPathLen) {\n                throw new JsonPatchError('Cannot perform an `add` operation at the desired path', 'OPERATION_PATH_CANNOT_ADD', index, operation, document);\n            }\n        }\n        else if (operation.op === 'replace' || operation.op === 'remove' || operation.op === '_get') {\n            if (operation.path !== existingPathFragment) {\n                throw new JsonPatchError('Cannot perform the operation at a path that does not exist', 'OPERATION_PATH_UNRESOLVABLE', index, operation, document);\n            }\n        }\n        else if (operation.op === 'move' || operation.op === 'copy') {\n            var existingValue = { op: \"_get\", path: operation.from, value: undefined };\n            var error = validate([existingValue], document);\n            if (error && error.name === 'OPERATION_PATH_UNRESOLVABLE') {\n                throw new JsonPatchError('Cannot perform the operation from a path that does not exist', 'OPERATION_FROM_UNRESOLVABLE', index, operation, document);\n            }\n        }\n    }\n}\n/**\n * Validates a sequence of operations. If `document` parameter is provided, the sequence is additionally validated against the object document.\n * If error is encountered, returns a JsonPatchError object\n * @param sequence\n * @param document\n * @returns {JsonPatchError|undefined}\n */\nfunction validate(sequence, document, externalValidator) {\n    try {\n        if (!Array.isArray(sequence)) {\n            throw new JsonPatchError('Patch sequence must be an array', 'SEQUENCE_NOT_AN_ARRAY');\n        }\n        if (document) {\n            //clone document and sequence so that we can safely try applying operations\n            applyPatch(Object(_helpers_mjs__WEBPACK_IMPORTED_MODULE_0__[\"_deepClone\"])(document), Object(_helpers_mjs__WEBPACK_IMPORTED_MODULE_0__[\"_deepClone\"])(sequence), externalValidator || true);\n        }\n        else {\n            externalValidator = externalValidator || validator;\n            for (var i = 0; i < sequence.length; i++) {\n                externalValidator(sequence[i], i, document, undefined);\n            }\n        }\n    }\n    catch (e) {\n        if (e instanceof JsonPatchError) {\n            return e;\n        }\n        else {\n            throw e;\n        }\n    }\n}\n// based on https://github.com/epoberezkin/fast-deep-equal\n// MIT License\n// Copyright (c) 2017 Evgeny Poberezkin\n// Permission is hereby granted, free of charge, to any person obtaining a copy\n// of this software and associated documentation files (the \"Software\"), to deal\n// in the Software without restriction, including without limitation the rights\n// to use, copy, modify, merge, publish, distribute, sublicense, and/or sell\n// copies of the Software, and to permit persons to whom the Software is\n// furnished to do so, subject to the following conditions:\n// The above copyright notice and this permission notice shall be included in all\n// copies or substantial portions of the Software.\n// THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\n// AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n// LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\n// OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE\n// SOFTWARE.\nfunction _areEquals(a, b) {\n    if (a === b)\n        return true;\n    if (a && b && typeof a == 'object' && typeof b == 'object') {\n        var arrA = Array.isArray(a), arrB = Array.isArray(b), i, length, key;\n        if (arrA && arrB) {\n            length = a.length;\n            if (length != b.length)\n                return false;\n            for (i = length; i-- !== 0;)\n                if (!_areEquals(a[i], b[i]))\n                    return false;\n            return true;\n        }\n        if (arrA != arrB)\n            return false;\n        var keys = Object.keys(a);\n        length = keys.length;\n        if (length !== Object.keys(b).length)\n            return false;\n        for (i = length; i-- !== 0;)\n            if (!b.hasOwnProperty(keys[i]))\n                return false;\n        for (i = length; i-- !== 0;) {\n            key = keys[i];\n            if (!_areEquals(a[key], b[key]))\n                return false;\n        }\n        return true;\n    }\n    return a !== a && b !== b;\n}\n;\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,[encoded data, 30216 characters]\n//# sourceURL=webpack-internal:///./node_modules/fast-json-patch/module/core.mjs\n");

/***/ }),

/***/ "./node_modules/fast-json-patch/module/duplex.mjs":
/*!********************************************************!*\
  !*** ./node_modules/fast-json-patch/module/duplex.mjs ***!
  \********************************************************/
/*! exports provided: unobserve, observe, generate, compare */
/***/ (function(__webpack_module__, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"unobserve\", function() { return unobserve; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"observe\", function() { return observe; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"generate\", function() { return generate; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"compare\", function() { return compare; });\n/* harmony import */ var _helpers_mjs__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./helpers.mjs */ \"./node_modules/fast-json-patch/module/helpers.mjs\");\n/* harmony import */ var _core_mjs__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./core.mjs */ \"./node_modules/fast-json-patch/module/core.mjs\");\n/*!\n * https://github.com/Starcounter-Jack/JSON-Patch\n * (c) 2017 Joachim Wester\n * MIT license\n */\n\n\nvar beforeDict = new WeakMap();\nvar Mirror = /** @class */ (function () {\n    function Mirror(obj) {\n        this.observers = new Map();\n        this.obj = obj;\n    }\n    return Mirror;\n}());\nvar ObserverInfo = /** @class */ (function () {\n    function ObserverInfo(callback, observer) {\n        this.callback = callback;\n        this.observer = observer;\n    }\n    return ObserverInfo;\n}());\nfunction getMirror(obj) {\n    return beforeDict.get(obj);\n}\nfunction getObserverFromMirror(mirror, callback) {\n    return mirror.observers.get(callback);\n}\nfunction removeObserverFromMirror(mirror, observer) {\n    mirror.observers.delete(observer.callback);\n}\n/**\n * Detach an observer from an object\n */\nfunction unobserve(root, observer) {\n    observer.unobserve();\n}\n/**\n * Observes changes made to an object, which can then be retrieved using generate\n */\nfunction observe(obj, callback) {\n    var patches = [];\n    var observer;\n    var mirror = getMirror(obj);\n    if (!mirror) {\n        mirror = new Mirror(obj);\n        beforeDict.set(obj, mirror);\n    }\n    else {\n        var observerInfo = getObserverFromMirror(mirror, callback);\n        observer = observerInfo && observerInfo.observer;\n    }\n    if (observer) {\n        return observer;\n    }\n    observer = {};\n    mirror.value = Object(_helpers_mjs__WEBPACK_IMPORTED_MODULE_0__[\"_deepClone\"])(obj);\n    if (callback) {\n        observer.callback = callback;\n        observer.next = null;\n        var dirtyCheck = function () {\n            generate(observer);\n        };\n        var fastCheck = function () {\n            clearTimeout(observer.next);\n            observer.next = setTimeout(dirtyCheck);\n        };\n        if (typeof window !== 'undefined') { //not Node\n            window.addEventListener('mouseup', fastCheck);\n            window.addEventListener('keyup', fastCheck);\n            window.addEventListener('mousedown', fastCheck);\n            window.addEventListener('keydown', fastCheck);\n            window.addEventListener('change', fastCheck);\n        }\n    }\n    observer.patches = patches;\n    observer.object = obj;\n    observer.unobserve = function () {\n        generate(observer);\n        clearTimeout(observer.next);\n        removeObserverFromMirror(mirror, observer);\n        if (typeof window !== 'undefined') {\n            window.removeEventListener('mouseup', fastCheck);\n            window.removeEventListener('keyup', fastCheck);\n            window.removeEventListener('mousedown', fastCheck);\n            window.removeEventListener('keydown', fastCheck);\n            window.removeEventListener('change', fastCheck);\n        }\n    };\n    mirror.observers.set(callback, new ObserverInfo(callback, observer));\n    return observer;\n}\n/**\n * Generate an array of patches from an observer\n */\nfunction generate(observer, invertible) {\n    if (invertible === void 0) { invertible = false; }\n    var mirror = beforeDict.get(observer.object);\n    _generate(mirror.value, observer.object, observer.patches, \"\", invertible);\n    if (observer.patches.length) {\n        Object(_core_mjs__WEBPACK_IMPORTED_MODULE_1__[\"applyPatch\"])(mirror.value, observer.patches);\n    }\n    var temp = observer.patches;\n    if (temp.length > 0) {\n        observer.patches = [];\n        if (observer.callback) {\n            observer.callback(temp);\n        }\n    }\n    return temp;\n}\n// Dirty check if obj is different from mirror, generate patches and update mirror\nfunction _generate(mirror, obj, patches, path, invertible) {\n    if (obj === mirror) {\n        return;\n    }\n    if (typeof obj.toJSON === \"function\") {\n        obj = obj.toJSON();\n    }\n    var newKeys = Object(_helpers_mjs__WEBPACK_IMPORTED_MODULE_0__[\"_objectKeys\"])(obj);\n    var oldKeys = Object(_helpers_mjs__WEBPACK_IMPORTED_MODULE_0__[\"_objectKeys\"])(mirror);\n    var changed = false;\n    var deleted = false;\n    //if ever \"move\" operation is implemented here, make sure this test runs OK: \"should not generate the same patch twice (move)\"\n    for (var t = oldKeys.length - 1; t >= 0; t--) {\n        var key = oldKeys[t];\n        var oldVal = mirror[key];\n        if (Object(_helpers_mjs__WEBPACK_IMPORTED_MODULE_0__[\"hasOwnProperty\"])(obj, key) && !(obj[key] === undefined && oldVal !== undefined && Array.isArray(obj) === false)) {\n            var newVal = obj[key];\n            if (typeof oldVal == \"object\" && oldVal != null && typeof newVal == \"object\" && newVal != null) {\n                _generate(oldVal, newVal, patches, path + \"/\" + Object(_helpers_mjs__WEBPACK_IMPORTED_MODULE_0__[\"escapePathComponent\"])(key), invertible);\n            }\n            else {\n                if (oldVal !== newVal) {\n                    changed = true;\n                    if (invertible) {\n                        patches.push({ op: \"test\", path: path + \"/\" + Object(_helpers_mjs__WEBPACK_IMPORTED_MODULE_0__[\"escapePathComponent\"])(key), value: Object(_helpers_mjs__WEBPACK_IMPORTED_MODULE_0__[\"_deepClone\"])(oldVal) });\n                    }\n                    patches.push({ op: \"replace\", path: path + \"/\" + Object(_helpers_mjs__WEBPACK_IMPORTED_MODULE_0__[\"escapePathComponent\"])(key), value: Object(_helpers_mjs__WEBPACK_IMPORTED_MODULE_0__[\"_deepClone\"])(newVal) });\n                }\n            }\n        }\n        else if (Array.isArray(mirror) === Array.isArray(obj)) {\n            if (invertible) {\n                patches.push({ op: \"test\", path: path + \"/\" + Object(_helpers_mjs__WEBPACK_IMPORTED_MODULE_0__[\"escapePathComponent\"])(key), value: Object(_helpers_mjs__WEBPACK_IMPORTED_MODULE_0__[\"_deepClone\"])(oldVal) });\n            }\n            patches.push({ op: \"remove\", path: path + \"/\" + Object(_helpers_mjs__WEBPACK_IMPORTED_MODULE_0__[\"escapePathComponent\"])(key) });\n            deleted = true; // property has been deleted\n        }\n        else {\n            if (invertible) {\n                patches.push({ op: \"test\", path: path, value: mirror });\n            }\n            patches.push({ op: \"replace\", path: path, value: obj });\n            changed = true;\n        }\n    }\n    if (!deleted && newKeys.length == oldKeys.length) {\n        return;\n    }\n    for (var t = 0; t < newKeys.length; t++) {\n        var key = newKeys[t];\n        if (!Object(_helpers_mjs__WEBPACK_IMPORTED_MODULE_0__[\"hasOwnProperty\"])(mirror, key) && obj[key] !== undefined) {\n            patches.push({ op: \"add\", path: path + \"/\" + Object(_helpers_mjs__WEBPACK_IMPORTED_MODULE_0__[\"escapePathComponent\"])(key), value: Object(_helpers_mjs__WEBPACK_IMPORTED_MODULE_0__[\"_deepClone\"])(obj[key]) });\n        }\n    }\n}\n/**\n * Create an array of patches from the differences in two objects\n */\nfunction compare(tree1, tree2, invertible) {\n    if (invertible === void 0) { invertible = false; }\n    var patches = [];\n    _generate(tree1, tree2, patches, '', invertible);\n    return patches;\n}\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,[encoded data, 10096 characters]\n//# sourceURL=webpack-internal:///./node_modules/fast-json-patch/module/duplex.mjs\n");

/***/ }),

/***/ "./node_modules/fast-json-patch/module/helpers.mjs":
/*!*********************************************************!*\
  !*** ./node_modules/fast-json-patch/module/helpers.mjs ***!
  \*********************************************************/
/*! exports provided: hasOwnProperty, _objectKeys, _deepClone, isInteger, escapePathComponent, unescapePathComponent, _getPathRecursive, getPath, hasUndefined, PatchError */
/***/ (function(__webpack_module__, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"hasOwnProperty\", function() { return hasOwnProperty; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"_objectKeys\", function() { return _objectKeys; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"_deepClone\", function() { return _deepClone; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"isInteger\", function() { return isInteger; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"escapePathComponent\", function() { return escapePathComponent; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"unescapePathComponent\", function() { return unescapePathComponent; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"_getPathRecursive\", function() { return _getPathRecursive; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"getPath\", function() { return getPath; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"hasUndefined\", function() { return hasUndefined; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"PatchError\", function() { return PatchError; });\n/*!\r\n * https://github.com/Starcounter-Jack/JSON-Patch\r\n * (c) 2017 Joachim Wester\r\n * MIT license\r\n */\r\nvar __extends = (undefined && undefined.__extends) || (function () {\r\n    var extendStatics = function (d, b) {\r\n        extendStatics = Object.setPrototypeOf ||\r\n            ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\r\n            function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\r\n        return extendStatics(d, b);\r\n    };\r\n    return function (d, b) {\r\n        extendStatics(d, b);\r\n        function __() { this.constructor = d; }\r\n        d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\r\n    };\r\n})();\r\nvar _hasOwnProperty = Object.prototype.hasOwnProperty;\r\nfunction hasOwnProperty(obj, key) {\r\n    return _hasOwnProperty.call(obj, key);\r\n}\r\nfunction _objectKeys(obj) {\r\n    if (Array.isArray(obj)) {\r\n        var keys = new Array(obj.length);\r\n        for (var k = 0; k < keys.length; k++) {\r\n            keys[k] = \"\" + k;\r\n        }\r\n        return keys;\r\n    }\r\n    if (Object.keys) {\r\n        return Object.keys(obj);\r\n    }\r\n    var keys = [];\r\n    for (var i in obj) {\r\n        if (hasOwnProperty(obj, i)) {\r\n            keys.push(i);\r\n        }\r\n    }\r\n    return keys;\r\n}\r\n;\r\n/**\r\n* Deeply clone the object.\r\n* https://jsperf.com/deep-copy-vs-json-stringify-json-parse/25 (recursiveDeepCopy)\r\n* @param  {any} obj value to clone\r\n* @return {any} cloned obj\r\n*/\r\nfunction _deepClone(obj) {\r\n    switch (typeof obj) {\r\n        case \"object\":\r\n            return JSON.parse(JSON.stringify(obj)); //Faster than ES5 clone - http://jsperf.com/deep-cloning-of-objects/5\r\n        case \"undefined\":\r\n            return null; //this is how JSON.stringify behaves for array items\r\n        default:\r\n            return obj; //no need to clone primitives\r\n    }\r\n}\r\n//3x faster than cached /^\\d+$/.test(str)\r\nfunction isInteger(str) {\r\n    var i = 0;\r\n    var len = str.length;\r\n    var charCode;\r\n    while (i < len) {\r\n        charCode = str.charCodeAt(i);\r\n        if (charCode >= 48 && charCode <= 57) {\r\n            i++;\r\n            continue;\r\n        }\r\n        return false;\r\n    }\r\n    return true;\r\n}\r\n/**\r\n* Escapes a json pointer path\r\n* @param path The raw pointer\r\n* @return the Escaped path\r\n*/\r\nfunction escapePathComponent(path) {\r\n    if (path.indexOf('/') === -1 && path.indexOf('~') === -1)\r\n        return path;\r\n    return path.replace(/~/g, '~0').replace(/\\//g, '~1');\r\n}\r\n/**\r\n * Unescapes a json pointer path\r\n * @param path The escaped pointer\r\n * @return The unescaped path\r\n */\r\nfunction unescapePathComponent(path) {\r\n    return path.replace(/~1/g, '/').replace(/~0/g, '~');\r\n}\r\nfunction _getPathRecursive(root, obj) {\r\n    var found;\r\n    for (var key in root) {\r\n        if (hasOwnProperty(root, key)) {\r\n            if (root[key] === obj) {\r\n                return escapePathComponent(key) + '/';\r\n            }\r\n            else if (typeof root[key] === 'object') {\r\n                found = _getPathRecursive(root[key], obj);\r\n                if (found != '') {\r\n                    return escapePathComponent(key) + '/' + found;\r\n                }\r\n            }\r\n        }\r\n    }\r\n    return '';\r\n}\r\nfunction getPath(root, obj) {\r\n    if (root === obj) {\r\n        return '/';\r\n    }\r\n    var path = _getPathRecursive(root, obj);\r\n    if (path === '') {\r\n        throw new Error(\"Object not found in root\");\r\n    }\r\n    return '/' + path;\r\n}\r\n/**\r\n* Recursively checks whether an object has any undefined values inside.\r\n*/\r\nfunction hasUndefined(obj) {\r\n    if (obj === undefined) {\r\n        return true;\r\n    }\r\n    if (obj) {\r\n        if (Array.isArray(obj)) {\r\n            for (var i = 0, len = obj.length; i < len; i++) {\r\n                if (hasUndefined(obj[i])) {\r\n                    return true;\r\n                }\r\n            }\r\n        }\r\n        else if (typeof obj === \"object\") {\r\n            var objKeys = _objectKeys(obj);\r\n            var objKeysLength = objKeys.length;\r\n            for (var i = 0; i < objKeysLength; i++) {\r\n                if (hasUndefined(obj[objKeys[i]])) {\r\n                    return true;\r\n                }\r\n            }\r\n        }\r\n    }\r\n    return false;\r\n}\r\nfunction patchErrorMessageFormatter(message, args) {\r\n    var messageParts = [message];\r\n    for (var key in args) {\r\n        var value = typeof args[key] === 'object' ? JSON.stringify(args[key], null, 2) : args[key]; // pretty print\r\n        if (typeof value !== 'undefined') {\r\n            messageParts.push(key + \": \" + value);\r\n        }\r\n    }\r\n    return messageParts.join('\\n');\r\n}\r\nvar PatchError = /** @class */ (function (_super) {\r\n    __extends(PatchError, _super);\r\n    function PatchError(message, name, index, operation, tree) {\r\n        var _newTarget = this.constructor;\r\n        var _this = _super.call(this, patchErrorMessageFormatter(message, { name: name, index: index, operation: operation, tree: tree })) || this;\r\n        _this.name = name;\r\n        _this.index = index;\r\n        _this.operation = operation;\r\n        _this.tree = tree;\r\n        Object.setPrototypeOf(_this, _newTarget.prototype); // restore prototype chain, see https://stackoverflow.com/a/48342359\r\n        _this.message = patchErrorMessageFormatter(message, { name: name, index: index, operation: operation, tree: tree });\r\n        return _this;\r\n    }\r\n    return PatchError;\r\n}(Error));\r\n\r\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,[encoded data, 9312 characters]\n//# sourceURL=webpack-internal:///./node_modules/fast-json-patch/module/helpers.mjs\n");

/***/ }),

/***/ "./node_modules/fast-json-stable-stringify/index.js":
/*!**********************************************************!*\
  !*** ./node_modules/fast-json-stable-stringify/index.js ***!
  \**********************************************************/
/*! no static exports found */
/***/ (function(module, exports, __webpack_require__) {

"use strict";
eval("\n\nmodule.exports = function (data, opts) {\n    if (!opts) opts = {};\n    if (typeof opts === 'function') opts = { cmp: opts };\n    var cycles = (typeof opts.cycles === 'boolean') ? opts.cycles : false;\n\n    var cmp = opts.cmp && (function (f) {\n        return function (node) {\n            return function (a, b) {\n                var aobj = { key: a, value: node[a] };\n                var bobj = { key: b, value: node[b] };\n                return f(aobj, bobj);\n            };\n        };\n    })(opts.cmp);\n\n    var seen = [];\n    return (function stringify (node) {\n        if (node && node.toJSON && typeof node.toJSON === 'function') {\n            node = node.toJSON();\n        }\n\n        if (node === undefined) return;\n        if (typeof node == 'number') return isFinite(node) ? '' + node : 'null';\n        if (typeof node !== 'object') return JSON.stringify(node);\n\n        var i, out;\n        if (Array.isArray(node)) {\n            out = '[';\n            for (i = 0; i < node.length; i++) {\n                if (i) out += ',';\n                out += stringify(node[i]) || 'null';\n            }\n            return out + ']';\n        }\n\n        if (node === null) return 'null';\n\n        if (seen.indexOf(node) !== -1) {\n            if (cycles) return JSON.stringify('__cycle__');\n            throw new TypeError('Converting circular structure to JSON');\n        }\n\n        var seenIndex = seen.push(node) - 1;\n        var keys = Object.keys(node).sort(cmp && cmp(node));\n        out = '';\n        for (i = 0; i < keys.length; i++) {\n            var key = keys[i];\n            var value = stringify(node[key]);\n\n            if (!value) continue;\n            if (out) out += ',';\n            out += JSON.stringify(key) + ':' + value;\n        }\n        seen.splice(seenIndex, 1);\n        return '{' + out + '}';\n    })(data);\n};\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvZmFzdC1qc29uLXN0YWJsZS1zdHJpbmdpZnkvaW5kZXguanMuanMiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvZmFzdC1qc29uLXN0YWJsZS1zdHJpbmdpZnkvaW5kZXguanM/ZjcxZSJdLCJzb3VyY2VzQ29udGVudCI6WyIndXNlIHN0cmljdCc7XG5cbm1vZHVsZS5leHBvcnRzID0gZnVuY3Rpb24gKGRhdGEsIG9wdHMpIHtcbiAgICBpZiAoIW9wdHMpIG9wdHMgPSB7fTtcbiAgICBpZiAodHlwZW9mIG9wdHMgPT09ICdmdW5jdGlvbicpIG9wdHMgPSB7IGNtcDogb3B0cyB9O1xuICAgIHZhciBjeWNsZXMgPSAodHlwZW9mIG9wdHMuY3ljbGVzID09PSAnYm9vbGVhbicpID8gb3B0cy5jeWNsZXMgOiBmYWxzZTtcblxuICAgIHZhciBjbXAgPSBvcHRzLmNtcCAmJiAoZnVuY3Rpb24gKGYpIHtcbiAgICAgICAgcmV0dXJuIGZ1bmN0aW9uIChub2RlKSB7XG4gICAgICAgICAgICByZXR1cm4gZnVuY3Rpb24gKGEsIGIpIHtcbiAgICAgICAgICAgICAgICB2YXIgYW9iaiA9IHsga2V5OiBhLCB2YWx1ZTogbm9kZVthXSB9O1xuICAgICAgICAgICAgICAgIHZhciBib2JqID0geyBrZXk6IGIsIHZhbHVlOiBub2RlW2JdIH07XG4gICAgICAgICAgICAgICAgcmV0dXJuIGYoYW9iaiwgYm9iaik7XG4gICAgICAgICAgICB9O1xuICAgICAgICB9O1xuICAgIH0pKG9wdHMuY21wKTtcblxuICAgIHZhciBzZWVuID0gW107XG4gICAgcmV0dXJuIChmdW5jdGlvbiBzdHJpbmdpZnkgKG5vZGUpIHtcbiAgICAgICAgaWYgKG5vZGUgJiYgbm9kZS50b0pTT04gJiYgdHlwZW9mIG5vZGUudG9KU09OID09PSAnZnVuY3Rpb24nKSB7XG4gICAgICAgICAgICBub2RlID0gbm9kZS50b0pTT04oKTtcbiAgICAgICAgfVxuXG4gICAgICAgIGlmIChub2RlID09PSB1bmRlZmluZWQpIHJldHVybjtcbiAgICAgICAgaWYgKHR5cGVvZiBub2RlID09ICdudW1iZXInKSByZXR1cm4gaXNGaW5pdGUobm9kZSkgPyAnJyArIG5vZGUgOiAnbnVsbCc7XG4gICAgICAgIGlmICh0eXBlb2Ygbm9kZSAhPT0gJ29iamVjdCcpIHJldHVybiBKU09OLnN0cmluZ2lmeShub2RlKTtcblxuICAgICAgICB2YXIgaSwgb3V0O1xuICAgICAgICBpZiAoQXJyYXkuaXNBcnJheShub2RlKSkge1xuICAgICAgICAgICAgb3V0ID0gJ1snO1xuICAgICAgICAgICAgZm9yIChpID0gMDsgaSA8IG5vZGUubGVuZ3RoOyBpKyspIHtcbiAgICAgICAgICAgICAgICBpZiAoaSkgb3V0ICs9ICcsJztcbiAgICAgICAgICAgICAgICBvdXQgKz0gc3RyaW5naWZ5KG5vZGVbaV0pIHx8ICdudWxsJztcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIHJldHVybiBvdXQgKyAnXSc7XG4gICAgICAgIH1cblxuICAgICAgICBpZiAobm9kZSA9PT0gbnVsbCkgcmV0dXJuICdudWxsJztcblxuICAgICAgICBpZiAoc2Vlbi5pbmRleE9mKG5vZGUpICE9PSAtMSkge1xuICAgICAgICAgICAgaWYgKGN5Y2xlcykgcmV0dXJuIEpTT04uc3RyaW5naWZ5KCdfX2N5Y2xlX18nKTtcbiAgICAgICAgICAgIHRocm93IG5ldyBUeXBlRXJyb3IoJ0NvbnZlcnRpbmcgY2lyY3VsYXIgc3RydWN0dXJlIHRvIEpTT04nKTtcbiAgICAgICAgfVxuXG4gICAgICAgIHZhciBzZWVuSW5kZXggPSBzZWVuLnB1c2gobm9kZSkgLSAxO1xuICAgICAgICB2YXIga2V5cyA9IE9iamVjdC5rZXlzKG5vZGUpLnNvcnQoY21wICYmIGNtcChub2RlKSk7XG4gICAgICAgIG91dCA9ICcnO1xuICAgICAgICBmb3IgKGkgPSAwOyBpIDwga2V5cy5sZW5ndGg7IGkrKykge1xuICAgICAgICAgICAgdmFyIGtleSA9IGtleXNbaV07XG4gICAgICAgICAgICB2YXIgdmFsdWUgPSBzdHJpbmdpZnkobm9kZVtrZXldKTtcblxuICAgICAgICAgICAgaWYgKCF2YWx1ZSkgY29udGludWU7XG4gICAgICAgICAgICBpZiAob3V0KSBvdXQgKz0gJywnO1xuICAgICAgICAgICAgb3V0ICs9IEpTT04uc3RyaW5naWZ5KGtleSkgKyAnOicgKyB2YWx1ZTtcbiAgICAgICAgfVxuICAgICAgICBzZWVuLnNwbGljZShzZWVuSW5kZXgsIDEpO1xuICAgICAgICByZXR1cm4gJ3snICsgb3V0ICsgJ30nO1xuICAgIH0pKGRhdGEpO1xufTtcbiJdLCJtYXBwaW5ncyI6IkFBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTsiLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///./node_modules/fast-json-stable-stringify/index.js\n");

/***/ }),

/***/ "./node_modules/json-stringify-pretty-compact/index.js":
/*!*************************************************************!*\
  !*** ./node_modules/json-stringify-pretty-compact/index.js ***!
  \*************************************************************/
/*! no static exports found */
/***/ (function(module, exports, __webpack_require__) {

"use strict";
eval("\n\n// Note: This regex matches even invalid JSON strings, but since we’re\n// working on the output of `JSON.stringify` we know that only valid strings\n// are present (unless the user supplied a weird `options.indent` but in\n// that case we don’t care since the output would be invalid anyway).\nvar stringOrChar = /(\"(?:[^\\\\\"]|\\\\.)*\")|[:,]/g;\n\nmodule.exports = function stringify(passedObj, options) {\n  var indent, maxLength, replacer;\n\n  options = options || {};\n  indent = JSON.stringify(\n    [1],\n    undefined,\n    options.indent === undefined ? 2 : options.indent\n  ).slice(2, -3);\n  maxLength =\n    indent === \"\"\n      ? Infinity\n      : options.maxLength === undefined\n      ? 80\n      : options.maxLength;\n  replacer = options.replacer;\n\n  return (function _stringify(obj, currentIndent, reserved) {\n    // prettier-ignore\n    var end, index, items, key, keyPart, keys, length, nextIndent, prettified, start, string, value;\n\n    if (obj && typeof obj.toJSON === \"function\") {\n      obj = obj.toJSON();\n    }\n\n    string = JSON.stringify(obj, replacer);\n\n    if (string === undefined) {\n      return string;\n    }\n\n    length = maxLength - currentIndent.length - reserved;\n\n    if (string.length <= length) {\n      prettified = string.replace(\n        stringOrChar,\n        function (match, stringLiteral) {\n          return stringLiteral || match + \" \";\n        }\n      );\n      if (prettified.length <= length) {\n        return prettified;\n      }\n    }\n\n    if (replacer != null) {\n      obj = JSON.parse(string);\n      replacer = undefined;\n    }\n\n    if (typeof obj === \"object\" && obj !== null) {\n      nextIndent = currentIndent + indent;\n      items = [];\n      index = 0;\n\n      if (Array.isArray(obj)) {\n        start = \"[\";\n        end = \"]\";\n        length = obj.length;\n        for (; index < length; index++) {\n          items.push(\n            _stringify(obj[index], nextIndent, index === length - 1 ? 0 : 1) ||\n              \"null\"\n          );\n        }\n      } else {\n        start = \"{\";\n        end = \"}\";\n        keys = Object.keys(obj);\n        length = keys.length;\n        for (; index < length; index++) {\n          key = keys[index];\n          keyPart = JSON.stringify(key) + \": \";\n          value = _stringify(\n            obj[key],\n            nextIndent,\n            keyPart.length + (index === length - 1 ? 0 : 1)\n          );\n          if (value !== undefined) {\n            items.push(keyPart + value);\n          }\n        }\n      }\n\n      if (items.length > 0) {\n        return [start, indent + items.join(\",\\n\" + nextIndent), end].join(\n          \"\\n\" + currentIndent\n        );\n      }\n    }\n\n    return string;\n  })(passedObj, \"\", 0);\n};\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,[encoded data, 4748 characters]\n//# sourceURL=webpack-internal:///./node_modules/json-stringify-pretty-compact/index.js\n");

/***/ }),

/***/ "./node_modules/jsonschema/lib/attribute.js":
/*!**************************************************!*\
  !*** ./node_modules/jsonschema/lib/attribute.js ***!
  \**************************************************/
/*! no static exports found */
/***/ (function(module, exports, __webpack_require__) {

"use strict";
eval("\n\nvar helpers = __webpack_require__(/*! ./helpers */ \"./node_modules/jsonschema/lib/helpers.js\");\n\n/** @type ValidatorResult */\nvar ValidatorResult = helpers.ValidatorResult;\n/** @type SchemaError */\nvar SchemaError = helpers.SchemaError;\n\nvar attribute = {};\n\nattribute.ignoreProperties = {\n  // informative properties\n  'id': true,\n  'default': true,\n  'description': true,\n  'title': true,\n  // arguments to other properties\n  'additionalItems': true,\n  'then': true,\n  'else': true,\n  // special-handled properties\n  '$schema': true,\n  '$ref': true,\n  'extends': true,\n};\n\n/**\n * @name validators\n */\nvar validators = attribute.validators = {};\n\n/**\n * Validates whether the instance if of a certain type\n * @param instance\n * @param schema\n * @param options\n * @param ctx\n * @return {ValidatorResult|null}\n */\nvalidators.type = function validateType (instance, schema, options, ctx) {\n  // Ignore undefined instances\n  if (instance === undefined) {\n    return null;\n  }\n  var result = new ValidatorResult(instance, schema, options, ctx);\n  var types = Array.isArray(schema.type) ? schema.type : [schema.type];\n  if (!types.some(this.testType.bind(this, instance, schema, options, ctx))) {\n    var list = types.map(function (v) {\n      if(!v) return;\n      var id = v.$id || v.id;\n      return id ? ('<' + id + '>') : (v+'');\n    });\n    result.addError({\n      name: 'type',\n      argument: list,\n      message: \"is not of a type(s) \" + list,\n    });\n  }\n  return result;\n};\n\nfunction testSchemaNoThrow(instance, options, ctx, callback, schema){\n  var throwError = options.throwError;\n  var throwAll = options.throwAll;\n  options.throwError = false;\n  options.throwAll = false;\n  var res = this.validateSchema(instance, schema, options, ctx);\n  options.throwError = throwError;\n  options.throwAll = throwAll;\n\n  if (!res.valid && callback instanceof Function) {\n    callback(res);\n  }\n  return res.valid;\n}\n\n/**\n * Validates whether the instance matches some of the given schemas\n * @param instance\n * @param schema\n * @param options\n * @param ctx\n * @return {ValidatorResult|null}\n */\nvalidators.anyOf = function validateAnyOf (instance, schema, options, ctx) {\n  // Ignore undefined instances\n  if (instance === undefined) {\n    return null;\n  }\n  var result = new ValidatorResult(instance, schema, options, ctx);\n  var inner = new ValidatorResult(instance, schema, options, ctx);\n  if (!Array.isArray(schema.anyOf)){\n    throw new SchemaError(\"anyOf must be an array\");\n  }\n  if (!schema.anyOf.some(\n    testSchemaNoThrow.bind(\n      this, instance, options, ctx, function(res){inner.importErrors(res);}\n    ))) {\n    var list = schema.anyOf.map(function (v, i) {\n      var id = v.$id || v.id;\n      if(id) return '<' + id + '>';\n      return(v.title && JSON.stringify(v.title)) || (v['$ref'] && ('<' + v['$ref'] + '>')) || '[subschema '+i+']';\n    });\n    if (options.nestedErrors) {\n      result.importErrors(inner);\n    }\n    result.addError({\n      name: 'anyOf',\n      argument: list,\n      message: \"is not any of \" + list.join(','),\n    });\n  }\n  return result;\n};\n\n/**\n * Validates whether the instance matches every given schema\n * @param instance\n * @param schema\n * @param options\n * @param ctx\n * @return {String|null}\n */\nvalidators.allOf = function validateAllOf (instance, schema, options, ctx) {\n  // Ignore undefined instances\n  if (instance === undefined) {\n    return null;\n  }\n  if (!Array.isArray(schema.allOf)){\n    throw new SchemaError(\"allOf must be an array\");\n  }\n  var result = new ValidatorResult(instance, schema, options, ctx);\n  var self = this;\n  schema.allOf.forEach(function(v, i){\n    var valid = self.validateSchema(instance, v, options, ctx);\n    if(!valid.valid){\n      var id = v.$id || v.id;\n      var msg = id || (v.title && JSON.stringify(v.title)) || (v['$ref'] && ('<' + v['$ref'] + '>')) || '[subschema '+i+']';\n      result.addError({\n        name: 'allOf',\n        argument: { id: msg, length: valid.errors.length, valid: valid },\n        message: 'does not match allOf schema ' + msg + ' with ' + valid.errors.length + ' error[s]:',\n      });\n      result.importErrors(valid);\n    }\n  });\n  return result;\n};\n\n/**\n * Validates whether the instance matches exactly one of the given schemas\n * @param instance\n * @param schema\n * @param options\n * @param ctx\n * @return {String|null}\n */\nvalidators.oneOf = function validateOneOf (instance, schema, options, ctx) {\n  // Ignore undefined instances\n  if (instance === undefined) {\n    return null;\n  }\n  if (!Array.isArray(schema.oneOf)){\n    throw new SchemaError(\"oneOf must be an array\");\n  }\n  var result = new ValidatorResult(instance, schema, options, ctx);\n  var inner = new ValidatorResult(instance, schema, options, ctx);\n  var count = schema.oneOf.filter(\n    testSchemaNoThrow.bind(\n      this, instance, options, ctx, function(res) {inner.importErrors(res);}\n    ) ).length;\n  var list = schema.oneOf.map(function (v, i) {\n    var id = v.$id || v.id;\n    return id || (v.title && JSON.stringify(v.title)) || (v['$ref'] && ('<' + v['$ref'] + '>')) || '[subschema '+i+']';\n  });\n  if (count!==1) {\n    if (options.nestedErrors) {\n      result.importErrors(inner);\n    }\n    result.addError({\n      name: 'oneOf',\n      argument: list,\n      message: \"is not exactly one from \" + list.join(','),\n    });\n  }\n  return result;\n};\n\n/**\n * Validates \"then\" or \"else\" depending on the result of validating \"if\"\n * @param instance\n * @param schema\n * @param options\n * @param ctx\n * @return {String|null}\n */\nvalidators.if = function validateIf (instance, schema, options, ctx) {\n  // Ignore undefined instances\n  if (instance === undefined) return null;\n  if (!helpers.isSchema(schema.if)) throw new Error('Expected \"if\" keyword to be a schema');\n  var ifValid = testSchemaNoThrow.call(this, instance, options, ctx, null, schema.if);\n  var result = new ValidatorResult(instance, schema, options, ctx);\n  var res;\n  if(ifValid){\n    if (schema.then === undefined) return;\n    if (!helpers.isSchema(schema.then)) throw new Error('Expected \"then\" keyword to be a schema');\n    res = this.validateSchema(instance, schema.then, options, ctx.makeChild(schema.then));\n    result.importErrors(res);\n  }else{\n    if (schema.else === undefined) return;\n    if (!helpers.isSchema(schema.else)) throw new Error('Expected \"else\" keyword to be a schema');\n    res = this.validateSchema(instance, schema.else, options, ctx.makeChild(schema.else));\n    result.importErrors(res);\n  }\n  return result;\n};\n\nfunction getEnumerableProperty(object, key){\n  // Determine if `key` shows up in `for(var key in object)`\n  // First test Object.hasOwnProperty.call as an optimization: that guarantees it does\n  if(Object.hasOwnProperty.call(object, key)) return object[key];\n  // Test `key in object` as an optimization; false means it won't\n  if(!(key in object)) return;\n  while( (object = Object.getPrototypeOf(object)) ){\n    if(Object.propertyIsEnumerable.call(object, key)) return object[key];\n  }\n}\n\n/**\n * Validates propertyNames\n * @param instance\n * @param schema\n * @param options\n * @param ctx\n * @return {String|null|ValidatorResult}\n */\nvalidators.propertyNames = function validatePropertyNames (instance, schema, options, ctx) {\n  if(!this.types.object(instance)) return;\n  var result = new ValidatorResult(instance, schema, options, ctx);\n  var subschema = schema.propertyNames!==undefined ? schema.propertyNames : {};\n  if(!helpers.isSchema(subschema)) throw new SchemaError('Expected \"propertyNames\" to be a schema (object or boolean)');\n\n  for (var property in instance) {\n    if(getEnumerableProperty(instance, property) !== undefined){\n      var res = this.validateSchema(property, subschema, options, ctx.makeChild(subschema));\n      result.importErrors(res);\n    }\n  }\n\n  return result;\n};\n\n/**\n * Validates properties\n * @param instance\n * @param schema\n * @param options\n * @param ctx\n * @return {String|null|ValidatorResult}\n */\nvalidators.properties = function validateProperties (instance, schema, options, ctx) {\n  if(!this.types.object(instance)) return;\n  var result = new ValidatorResult(instance, schema, options, ctx);\n  var properties = schema.properties || {};\n  for (var property in properties) {\n    var subschema = properties[property];\n    if(subschema===undefined){\n      continue;\n    }else if(subschema===null){\n      throw new SchemaError('Unexpected null, expected schema in \"properties\"');\n    }\n    if (typeof options.preValidateProperty == 'function') {\n      options.preValidateProperty(instance, property, subschema, options, ctx);\n    }\n    var prop = getEnumerableProperty(instance, property);\n    var res = this.validateSchema(prop, subschema, options, ctx.makeChild(subschema, property));\n    if(res.instance !== result.instance[property]) result.instance[property] = res.instance;\n    result.importErrors(res);\n  }\n  return result;\n};\n\n/**\n * Test a specific property within in instance against the additionalProperties schema attribute\n * This ignores properties with definitions in the properties schema attribute, but no other attributes.\n * If too many more types of property-existence tests pop up they may need their own class of tests (like `type` has)\n * @private\n * @return {boolean}\n */\nfunction testAdditionalProperty (instance, schema, options, ctx, property, result) {\n  if(!this.types.object(instance)) return;\n  if (schema.properties && schema.properties[property] !== undefined) {\n    return;\n  }\n  if (schema.additionalProperties === false) {\n    result.addError({\n      name: 'additionalProperties',\n      argument: property,\n      message: \"is not allowed to have the additional property \" + JSON.stringify(property),\n    });\n  } else {\n    var additionalProperties = schema.additionalProperties || {};\n\n    if (typeof options.preValidateProperty == 'function') {\n      options.preValidateProperty(instance, property, additionalProperties, options, ctx);\n    }\n\n    var res = this.validateSchema(instance[property], additionalProperties, options, ctx.makeChild(additionalProperties, property));\n    if(res.instance !== result.instance[property]) result.instance[property] = res.instance;\n    result.importErrors(res);\n  }\n}\n\n/**\n * Validates patternProperties\n * @param instance\n * @param schema\n * @param options\n * @param ctx\n * @return {String|null|ValidatorResult}\n */\nvalidators.patternProperties = function validatePatternProperties (instance, schema, options, ctx) {\n  if(!this.types.object(instance)) return;\n  var result = new ValidatorResult(instance, schema, options, ctx);\n  var patternProperties = schema.patternProperties || {};\n\n  for (var property in instance) {\n    var test = true;\n    for (var pattern in patternProperties) {\n      var subschema = patternProperties[pattern];\n      if(subschema===undefined){\n        continue;\n      }else if(subschema===null){\n        throw new SchemaError('Unexpected null, expected schema in \"patternProperties\"');\n      }\n      try {\n        var regexp = new RegExp(pattern, 'u');\n      } catch(_e) {\n        // In the event the stricter handling causes an error, fall back on the forgiving handling\n        // DEPRECATED\n        regexp = new RegExp(pattern);\n      }\n      if (!regexp.test(property)) {\n        continue;\n      }\n      test = false;\n\n      if (typeof options.preValidateProperty == 'function') {\n        options.preValidateProperty(instance, property, subschema, options, ctx);\n      }\n\n      var res = this.validateSchema(instance[property], subschema, options, ctx.makeChild(subschema, property));\n      if(res.instance !== result.instance[property]) result.instance[property] = res.instance;\n      result.importErrors(res);\n    }\n    if (test) {\n      testAdditionalProperty.call(this, instance, schema, options, ctx, property, result);\n    }\n  }\n\n  return result;\n};\n\n/**\n * Validates additionalProperties\n * @param instance\n * @param schema\n * @param options\n * @param ctx\n * @return {String|null|ValidatorResult}\n */\nvalidators.additionalProperties = function validateAdditionalProperties (instance, schema, options, ctx) {\n  if(!this.types.object(instance)) return;\n  // if patternProperties is defined then we'll test when that one is called instead\n  if (schema.patternProperties) {\n    return null;\n  }\n  var result = new ValidatorResult(instance, schema, options, ctx);\n  for (var property in instance) {\n    testAdditionalProperty.call(this, instance, schema, options, ctx, property, result);\n  }\n  return result;\n};\n\n/**\n * Validates whether the instance value is at least of a certain length, when the instance value is a string.\n * @param instance\n * @param schema\n * @return {String|null}\n */\nvalidators.minProperties = function validateMinProperties (instance, schema, options, ctx) {\n  if (!this.types.object(instance)) return;\n  var result = new ValidatorResult(instance, schema, options, ctx);\n  var keys = Object.keys(instance);\n  if (!(keys.length >= schema.minProperties)) {\n    result.addError({\n      name: 'minProperties',\n      argument: schema.minProperties,\n      message: \"does not meet minimum property length of \" + schema.minProperties,\n    });\n  }\n  return result;\n};\n\n/**\n * Validates whether the instance value is at most of a certain length, when the instance value is a string.\n * @param instance\n * @param schema\n * @return {String|null}\n */\nvalidators.maxProperties = function validateMaxProperties (instance, schema, options, ctx) {\n  if (!this.types.object(instance)) return;\n  var result = new ValidatorResult(instance, schema, options, ctx);\n  var keys = Object.keys(instance);\n  if (!(keys.length <= schema.maxProperties)) {\n    result.addError({\n      name: 'maxProperties',\n      argument: schema.maxProperties,\n      message: \"does not meet maximum property length of \" + schema.maxProperties,\n    });\n  }\n  return result;\n};\n\n/**\n * Validates items when instance is an array\n * @param instance\n * @param schema\n * @param options\n * @param ctx\n * @return {String|null|ValidatorResult}\n */\nvalidators.items = function validateItems (instance, schema, options, ctx) {\n  var self = this;\n  if (!this.types.array(instance)) return;\n  if (!schema.items) return;\n  var result = new ValidatorResult(instance, schema, options, ctx);\n  instance.every(function (value, i) {\n    var items = Array.isArray(schema.items) ? (schema.items[i] || schema.additionalItems) : schema.items;\n    if (items === undefined) {\n      return true;\n    }\n    if (items === false) {\n      result.addError({\n        name: 'items',\n        message: \"additionalItems not permitted\",\n      });\n      return false;\n    }\n    var res = self.validateSchema(value, items, options, ctx.makeChild(items, i));\n    if(res.instance !== result.instance[i]) result.instance[i] = res.instance;\n    result.importErrors(res);\n    return true;\n  });\n  return result;\n};\n\n/**\n * Validates minimum and exclusiveMinimum when the type of the instance value is a number.\n * @param instance\n * @param schema\n * @return {String|null}\n */\nvalidators.minimum = function validateMinimum (instance, schema, options, ctx) {\n  if (!this.types.number(instance)) return;\n  var result = new ValidatorResult(instance, schema, options, ctx);\n  if (schema.exclusiveMinimum && schema.exclusiveMinimum === true) {\n    if(!(instance > schema.minimum)){\n      result.addError({\n        name: 'minimum',\n        argument: schema.minimum,\n        message: \"must be greater than \" + schema.minimum,\n      });\n    }\n  } else {\n    if(!(instance >= schema.minimum)){\n      result.addError({\n        name: 'minimum',\n        argument: schema.minimum,\n        message: \"must be greater than or equal to \" + schema.minimum,\n      });\n    }\n  }\n  return result;\n};\n\n/**\n * Validates maximum and exclusiveMaximum when the type of the instance value is a number.\n * @param instance\n * @param schema\n * @return {String|null}\n */\nvalidators.maximum = function validateMaximum (instance, schema, options, ctx) {\n  if (!this.types.number(instance)) return;\n  var result = new ValidatorResult(instance, schema, options, ctx);\n  if (schema.exclusiveMaximum && schema.exclusiveMaximum === true) {\n    if(!(instance < schema.maximum)){\n      result.addError({\n        name: 'maximum',\n        argument: schema.maximum,\n        message: \"must be less than \" + schema.maximum,\n      });\n    }\n  } else {\n    if(!(instance <= schema.maximum)){\n      result.addError({\n        name: 'maximum',\n        argument: schema.maximum,\n        message: \"must be less than or equal to \" + schema.maximum,\n      });\n    }\n  }\n  return result;\n};\n\n/**\n * Validates the number form of exclusiveMinimum when the type of the instance value is a number.\n * @param instance\n * @param schema\n * @return {String|null}\n */\nvalidators.exclusiveMinimum = function validateExclusiveMinimum (instance, schema, options, ctx) {\n  // Support the boolean form of exclusiveMinimum, which is handled by the \"minimum\" keyword.\n  if(typeof schema.exclusiveMaximum === 'boolean') return;\n  if (!this.types.number(instance)) return;\n  var result = new ValidatorResult(instance, schema, options, ctx);\n  var valid = instance > schema.exclusiveMinimum;\n  if (!valid) {\n    result.addError({\n      name: 'exclusiveMinimum',\n      argument: schema.exclusiveMinimum,\n      message: \"must be strictly greater than \" + schema.exclusiveMinimum,\n    });\n  }\n  return result;\n};\n\n/**\n * Validates the number form of exclusiveMaximum when the type of the instance value is a number.\n * @param instance\n * @param schema\n * @return {String|null}\n */\nvalidators.exclusiveMaximum = function validateExclusiveMaximum (instance, schema, options, ctx) {\n  // Support the boolean form of exclusiveMaximum, which is handled by the \"maximum\" keyword.\n  if(typeof schema.exclusiveMaximum === 'boolean') return;\n  if (!this.types.number(instance)) return;\n  var result = new ValidatorResult(instance, schema, options, ctx);\n  var valid = instance < schema.exclusiveMaximum;\n  if (!valid) {\n    result.addError({\n      name: 'exclusiveMaximum',\n      argument: schema.exclusiveMaximum,\n      message: \"must be strictly less than \" + schema.exclusiveMaximum,\n    });\n  }\n  return result;\n};\n\n/**\n * Perform validation for multipleOf and divisibleBy, which are essentially the same.\n * @param instance\n * @param schema\n * @param validationType\n * @param errorMessage\n * @returns {String|null}\n */\nvar validateMultipleOfOrDivisbleBy = function validateMultipleOfOrDivisbleBy (instance, schema, options, ctx, validationType, errorMessage) {\n  if (!this.types.number(instance)) return;\n\n  var validationArgument = schema[validationType];\n  if (validationArgument == 0) {\n    throw new SchemaError(validationType + \" cannot be zero\");\n  }\n\n  var result = new ValidatorResult(instance, schema, options, ctx);\n\n  var instanceDecimals = helpers.getDecimalPlaces(instance);\n  var divisorDecimals = helpers.getDecimalPlaces(validationArgument);\n\n  var maxDecimals = Math.max(instanceDecimals , divisorDecimals);\n  var multiplier = Math.pow(10, maxDecimals);\n\n  if (Math.round(instance * multiplier) % Math.round(validationArgument * multiplier) !== 0) {\n    result.addError({\n      name: validationType,\n      argument:  validationArgument,\n      message: errorMessage + JSON.stringify(validationArgument),\n    });\n  }\n\n  return result;\n};\n\n/**\n * Validates divisibleBy when the type of the instance value is a number.\n * @param instance\n * @param schema\n * @return {String|null}\n */\nvalidators.multipleOf = function validateMultipleOf (instance, schema, options, ctx) {\n  return validateMultipleOfOrDivisbleBy.call(this, instance, schema, options, ctx, \"multipleOf\", \"is not a multiple of (divisible by) \");\n};\n\n/**\n * Validates multipleOf when the type of the instance value is a number.\n * @param instance\n * @param schema\n * @return {String|null}\n */\nvalidators.divisibleBy = function validateDivisibleBy (instance, schema, options, ctx) {\n  return validateMultipleOfOrDivisbleBy.call(this, instance, schema, options, ctx, \"divisibleBy\", \"is not divisible by (multiple of) \");\n};\n\n/**\n * Validates whether the instance value is present.\n * @param instance\n * @param schema\n * @return {String|null}\n */\nvalidators.required = function validateRequired (instance, schema, options, ctx) {\n  var result = new ValidatorResult(instance, schema, options, ctx);\n  if (instance === undefined && schema.required === true) {\n    // A boolean form is implemented for reverse-compatibility with schemas written against older drafts\n    result.addError({\n      name: 'required',\n      message: \"is required\",\n    });\n  } else if (this.types.object(instance) && Array.isArray(schema.required)) {\n    schema.required.forEach(function(n){\n      if(getEnumerableProperty(instance, n)===undefined){\n        result.addError({\n          name: 'required',\n          argument: n,\n          message: \"requires property \" + JSON.stringify(n),\n        });\n      }\n    });\n  }\n  return result;\n};\n\n/**\n * Validates whether the instance value matches the regular expression, when the instance value is a string.\n * @param instance\n * @param schema\n * @return {String|null}\n */\nvalidators.pattern = function validatePattern (instance, schema, options, ctx) {\n  if (!this.types.string(instance)) return;\n  var result = new ValidatorResult(instance, schema, options, ctx);\n  var pattern = schema.pattern;\n  try {\n    var regexp = new RegExp(pattern, 'u');\n  } catch(_e) {\n    // In the event the stricter handling causes an error, fall back on the forgiving handling\n    // DEPRECATED\n    regexp = new RegExp(pattern);\n  }\n  if (!instance.match(regexp)) {\n    result.addError({\n      name: 'pattern',\n      argument: schema.pattern,\n      message: \"does not match pattern \" + JSON.stringify(schema.pattern.toString()),\n    });\n  }\n  return result;\n};\n\n/**\n * Validates whether the instance value is of a certain defined format or a custom\n * format.\n * The following formats are supported for string types:\n *   - date-time\n *   - date\n *   - time\n *   - ip-address\n *   - ipv6\n *   - uri\n *   - color\n *   - host-name\n *   - alpha\n *   - alpha-numeric\n *   - utc-millisec\n * @param instance\n * @param schema\n * @param [options]\n * @param [ctx]\n * @return {String|null}\n */\nvalidators.format = function validateFormat (instance, schema, options, ctx) {\n  if (instance===undefined) return;\n  var result = new ValidatorResult(instance, schema, options, ctx);\n  if (!result.disableFormat && !helpers.isFormat(instance, schema.format, this)) {\n    result.addError({\n      name: 'format',\n      argument: schema.format,\n      message: \"does not conform to the \" + JSON.stringify(schema.format) + \" format\",\n    });\n  }\n  return result;\n};\n\n/**\n * Validates whether the instance value is at least of a certain length, when the instance value is a string.\n * @param instance\n * @param schema\n * @return {String|null}\n */\nvalidators.minLength = function validateMinLength (instance, schema, options, ctx) {\n  if (!this.types.string(instance)) return;\n  var result = new ValidatorResult(instance, schema, options, ctx);\n  var hsp = instance.match(/[\\uDC00-\\uDFFF]/g);\n  var length = instance.length - (hsp ? hsp.length : 0);\n  if (!(length >= schema.minLength)) {\n    result.addError({\n      name: 'minLength',\n      argument: schema.minLength,\n      message: \"does not meet minimum length of \" + schema.minLength,\n    });\n  }\n  return result;\n};\n\n/**\n * Validates whether the instance value is at most of a certain length, when the instance value is a string.\n * @param instance\n * @param schema\n * @return {String|null}\n */\nvalidators.maxLength = function validateMaxLength (instance, schema, options, ctx) {\n  if (!this.types.string(instance)) return;\n  var result = new ValidatorResult(instance, schema, options, ctx);\n  // TODO if this was already computed in \"minLength\", use that value instead of re-computing\n  var hsp = instance.match(/[\\uDC00-\\uDFFF]/g);\n  var length = instance.length - (hsp ? hsp.length : 0);\n  if (!(length <= schema.maxLength)) {\n    result.addError({\n      name: 'maxLength',\n      argument: schema.maxLength,\n      message: \"does not meet maximum length of \" + schema.maxLength,\n    });\n  }\n  return result;\n};\n\n/**\n * Validates whether instance contains at least a minimum number of items, when the instance is an Array.\n * @param instance\n * @param schema\n * @return {String|null}\n */\nvalidators.minItems = function validateMinItems (instance, schema, options, ctx) {\n  if (!this.types.array(instance)) return;\n  var result = new ValidatorResult(instance, schema, options, ctx);\n  if (!(instance.length >= schema.minItems)) {\n    result.addError({\n      name: 'minItems',\n      argument: schema.minItems,\n      message: \"does not meet minimum length of \" + schema.minItems,\n    });\n  }\n  return result;\n};\n\n/**\n * Validates whether instance contains no more than a maximum number of items, when the instance is an Array.\n * @param instance\n * @param schema\n * @return {String|null}\n */\nvalidators.maxItems = function validateMaxItems (instance, schema, options, ctx) {\n  if (!this.types.array(instance)) return;\n  var result = new ValidatorResult(instance, schema, options, ctx);\n  if (!(instance.length <= schema.maxItems)) {\n    result.addError({\n      name: 'maxItems',\n      argument: schema.maxItems,\n      message: \"does not meet maximum length of \" + schema.maxItems,\n    });\n  }\n  return result;\n};\n\n/**\n * Deep compares arrays for duplicates\n * @param v\n * @param i\n * @param a\n * @private\n * @return {boolean}\n */\nfunction testArrays (v, i, a) {\n  var j, len = a.length;\n  for (j = i + 1, len; j < len; j++) {\n    if (helpers.deepCompareStrict(v, a[j])) {\n      return false;\n    }\n  }\n  return true;\n}\n\n/**\n * Validates whether there are no duplicates, when the instance is an Array.\n * @param instance\n * @return {String|null}\n */\nvalidators.uniqueItems = function validateUniqueItems (instance, schema, options, ctx) {\n  if (schema.uniqueItems!==true) return;\n  if (!this.types.array(instance)) return;\n  var result = new ValidatorResult(instance, schema, options, ctx);\n  if (!instance.every(testArrays)) {\n    result.addError({\n      name: 'uniqueItems',\n      message: \"contains duplicate item\",\n    });\n  }\n  return result;\n};\n\n/**\n * Validate for the presence of dependency properties, if the instance is an object.\n * @param instance\n * @param schema\n * @param options\n * @param ctx\n * @return {null|ValidatorResult}\n */\nvalidators.dependencies = function validateDependencies (instance, schema, options, ctx) {\n  if (!this.types.object(instance)) return;\n  var result = new ValidatorResult(instance, schema, options, ctx);\n  for (var property in schema.dependencies) {\n    if (instance[property] === undefined) {\n      continue;\n    }\n    var dep = schema.dependencies[property];\n    var childContext = ctx.makeChild(dep, property);\n    if (typeof dep == 'string') {\n      dep = [dep];\n    }\n    if (Array.isArray(dep)) {\n      dep.forEach(function (prop) {\n        if (instance[prop] === undefined) {\n          result.addError({\n            // FIXME there's two different \"dependencies\" errors here with slightly different outputs\n            // Can we make these the same? Or should we create different error types?\n            name: 'dependencies',\n            argument: childContext.propertyPath,\n            message: \"property \" + prop + \" not found, required by \" + childContext.propertyPath,\n          });\n        }\n      });\n    } else {\n      var res = this.validateSchema(instance, dep, options, childContext);\n      if(result.instance !== res.instance) result.instance = res.instance;\n      if (res && res.errors.length) {\n        result.addError({\n          name: 'dependencies',\n          argument: childContext.propertyPath,\n          message: \"does not meet dependency required by \" + childContext.propertyPath,\n        });\n        result.importErrors(res);\n      }\n    }\n  }\n  return result;\n};\n\n/**\n * Validates whether the instance value is one of the enumerated values.\n *\n * @param instance\n * @param schema\n * @return {ValidatorResult|null}\n */\nvalidators['enum'] = function validateEnum (instance, schema, options, ctx) {\n  if (instance === undefined) {\n    return null;\n  }\n  if (!Array.isArray(schema['enum'])) {\n    throw new SchemaError(\"enum expects an array\", schema);\n  }\n  var result = new ValidatorResult(instance, schema, options, ctx);\n  if (!schema['enum'].some(helpers.deepCompareStrict.bind(null, instance))) {\n    result.addError({\n      name: 'enum',\n      argument: schema['enum'],\n      message: \"is not one of enum values: \" + schema['enum'].map(String).join(','),\n    });\n  }\n  return result;\n};\n\n/**\n * Validates whether the instance exactly matches a given value\n *\n * @param instance\n * @param schema\n * @return {ValidatorResult|null}\n */\nvalidators['const'] = function validateEnum (instance, schema, options, ctx) {\n  if (instance === undefined) {\n    return null;\n  }\n  var result = new ValidatorResult(instance, schema, options, ctx);\n  if (!helpers.deepCompareStrict(schema['const'], instance)) {\n    result.addError({\n      name: 'const',\n      argument: schema['const'],\n      message: \"does not exactly match expected constant: \" + schema['const'],\n    });\n  }\n  return result;\n};\n\n/**\n * Validates whether the instance if of a prohibited type.\n * @param instance\n * @param schema\n * @param options\n * @param ctx\n * @return {null|ValidatorResult}\n */\nvalidators.not = validators.disallow = function validateNot (instance, schema, options, ctx) {\n  var self = this;\n  if(instance===undefined) return null;\n  var result = new ValidatorResult(instance, schema, options, ctx);\n  var notTypes = schema.not || schema.disallow;\n  if(!notTypes) return null;\n  if(!Array.isArray(notTypes)) notTypes=[notTypes];\n  notTypes.forEach(function (type) {\n    if (self.testType(instance, schema, options, ctx, type)) {\n      var id = type && (type.$id || type.id);\n      var schemaId = id || type;\n      result.addError({\n        name: 'not',\n        argument: schemaId,\n        message: \"is of prohibited type \" + schemaId,\n      });\n    }\n  });\n  return result;\n};\n\nmodule.exports = attribute;\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,[encoded data, 47988 characters]\n//# sourceURL=webpack-internal:///./node_modules/jsonschema/lib/attribute.js\n");

/***/ }),

/***/ "./node_modules/jsonschema/lib/helpers.js":
/*!************************************************!*\
  !*** ./node_modules/jsonschema/lib/helpers.js ***!
  \************************************************/
/*! no static exports found */
/***/ (function(module, exports, __webpack_require__) {

"use strict";
eval("\n\nvar uri = __webpack_require__(/*! url */ \"./node_modules/url/url.js\");\n\nvar ValidationError = exports.ValidationError = function ValidationError (message, instance, schema, path, name, argument) {\n  if(Array.isArray(path)){\n    this.path = path;\n    this.property = path.reduce(function(sum, item){\n      return sum + makeSuffix(item);\n    }, 'instance');\n  }else if(path !== undefined){\n    this.property = path;\n  }\n  if (message) {\n    this.message = message;\n  }\n  if (schema) {\n    var id = schema.$id || schema.id;\n    this.schema = id || schema;\n  }\n  if (instance !== undefined) {\n    this.instance = instance;\n  }\n  this.name = name;\n  this.argument = argument;\n  this.stack = this.toString();\n};\n\nValidationError.prototype.toString = function toString() {\n  return this.property + ' ' + this.message;\n};\n\nvar ValidatorResult = exports.ValidatorResult = function ValidatorResult(instance, schema, options, ctx) {\n  this.instance = instance;\n  this.schema = schema;\n  this.options = options;\n  this.path = ctx.path;\n  this.propertyPath = ctx.propertyPath;\n  this.errors = [];\n  this.throwError = options && options.throwError;\n  this.throwFirst = options && options.throwFirst;\n  this.throwAll = options && options.throwAll;\n  this.disableFormat = options && options.disableFormat === true;\n};\n\nValidatorResult.prototype.addError = function addError(detail) {\n  var err;\n  if (typeof detail == 'string') {\n    err = new ValidationError(detail, this.instance, this.schema, this.path);\n  } else {\n    if (!detail) throw new Error('Missing error detail');\n    if (!detail.message) throw new Error('Missing error message');\n    if (!detail.name) throw new Error('Missing validator type');\n    err = new ValidationError(detail.message, this.instance, this.schema, this.path, detail.name, detail.argument);\n  }\n\n  this.errors.push(err);\n  if (this.throwFirst) {\n    throw new ValidatorResultError(this);\n  }else if(this.throwError){\n    throw err;\n  }\n  return err;\n};\n\nValidatorResult.prototype.importErrors = function importErrors(res) {\n  if (typeof res == 'string' || (res && res.validatorType)) {\n    this.addError(res);\n  } else if (res && res.errors) {\n    Array.prototype.push.apply(this.errors, res.errors);\n  }\n};\n\nfunction stringizer (v,i){\n  return i+': '+v.toString()+'\\n';\n}\nValidatorResult.prototype.toString = function toString(res) {\n  return this.errors.map(stringizer).join('');\n};\n\nObject.defineProperty(ValidatorResult.prototype, \"valid\", { get: function() {\n  return !this.errors.length;\n} });\n\nmodule.exports.ValidatorResultError = ValidatorResultError;\nfunction ValidatorResultError(result) {\n  if(Error.captureStackTrace){\n    Error.captureStackTrace(this, ValidatorResultError);\n  }\n  this.instance = result.instance;\n  this.schema = result.schema;\n  this.options = result.options;\n  this.errors = result.errors;\n}\nValidatorResultError.prototype = new Error();\nValidatorResultError.prototype.constructor = ValidatorResultError;\nValidatorResultError.prototype.name = \"Validation Error\";\n\n/**\n * Describes a problem with a Schema which prevents validation of an instance\n * @name SchemaError\n * @constructor\n */\nvar SchemaError = exports.SchemaError = function SchemaError (msg, schema) {\n  this.message = msg;\n  this.schema = schema;\n  Error.call(this, msg);\n  Error.captureStackTrace(this, SchemaError);\n};\nSchemaError.prototype = Object.create(Error.prototype,\n  {\n    constructor: {value: SchemaError, enumerable: false},\n    name: {value: 'SchemaError', enumerable: false},\n  });\n\nvar SchemaContext = exports.SchemaContext = function SchemaContext (schema, options, path, base, schemas) {\n  this.schema = schema;\n  this.options = options;\n  if(Array.isArray(path)){\n    this.path = path;\n    this.propertyPath = path.reduce(function(sum, item){\n      return sum + makeSuffix(item);\n    }, 'instance');\n  }else{\n    this.propertyPath = path;\n  }\n  this.base = base;\n  this.schemas = schemas;\n};\n\nSchemaContext.prototype.resolve = function resolve (target) {\n  return uri.resolve(this.base, target);\n};\n\nSchemaContext.prototype.makeChild = function makeChild(schema, propertyName){\n  var path = (propertyName===undefined) ? this.path : this.path.concat([propertyName]);\n  var id = schema.$id || schema.id;\n  var base = uri.resolve(this.base, id||'');\n  var ctx = new SchemaContext(schema, this.options, path, base, Object.create(this.schemas));\n  if(id && !ctx.schemas[base]){\n    ctx.schemas[base] = schema;\n  }\n  return ctx;\n};\n\nvar FORMAT_REGEXPS = exports.FORMAT_REGEXPS = {\n  'date-time': /^\\d{4}-(?:0[0-9]{1}|1[0-2]{1})-(3[01]|0[1-9]|[12][0-9])[tT ](2[0-4]|[01][0-9]):([0-5][0-9]):(60|[0-5][0-9])(\\.\\d+)?([zZ]|[+-]([0-5][0-9]):(60|[0-5][0-9]))$/,\n  'date': /^\\d{4}-(?:0[0-9]{1}|1[0-2]{1})-(3[01]|0[1-9]|[12][0-9])$/,\n  'time': /^(2[0-4]|[01][0-9]):([0-5][0-9]):(60|[0-5][0-9])$/,\n\n  'email': /^(?:[\\w\\!\\#\\$\\%\\&\\'\\*\\+\\-\\/\\=\\?\\^\\`\\{\\|\\}\\~]+\\.)*[\\w\\!\\#\\$\\%\\&\\'\\*\\+\\-\\/\\=\\?\\^\\`\\{\\|\\}\\~]+@(?:(?:(?:[a-zA-Z0-9](?:[a-zA-Z0-9\\-](?!\\.)){0,61}[a-zA-Z0-9]?\\.)+[a-zA-Z0-9](?:[a-zA-Z0-9\\-](?!$)){0,61}[a-zA-Z0-9]?)|(?:\\[(?:(?:[01]?\\d{1,2}|2[0-4]\\d|25[0-5])\\.){3}(?:[01]?\\d{1,2}|2[0-4]\\d|25[0-5])\\]))$/,\n  'ip-address': /^(?:(?:25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)\\.){3}(?:25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)$/,\n  'ipv6': /^\\s*((([0-9A-Fa-f]{1,4}:){7}([0-9A-Fa-f]{1,4}|:))|(([0-9A-Fa-f]{1,4}:){6}(:[0-9A-Fa-f]{1,4}|((25[0-5]|2[0-4]\\d|1\\d\\d|[1-9]?\\d)(\\.(25[0-5]|2[0-4]\\d|1\\d\\d|[1-9]?\\d)){3})|:))|(([0-9A-Fa-f]{1,4}:){5}(((:[0-9A-Fa-f]{1,4}){1,2})|:((25[0-5]|2[0-4]\\d|1\\d\\d|[1-9]?\\d)(\\.(25[0-5]|2[0-4]\\d|1\\d\\d|[1-9]?\\d)){3})|:))|(([0-9A-Fa-f]{1,4}:){4}(((:[0-9A-Fa-f]{1,4}){1,3})|((:[0-9A-Fa-f]{1,4})?:((25[0-5]|2[0-4]\\d|1\\d\\d|[1-9]?\\d)(\\.(25[0-5]|2[0-4]\\d|1\\d\\d|[1-9]?\\d)){3}))|:))|(([0-9A-Fa-f]{1,4}:){3}(((:[0-9A-Fa-f]{1,4}){1,4})|((:[0-9A-Fa-f]{1,4}){0,2}:((25[0-5]|2[0-4]\\d|1\\d\\d|[1-9]?\\d)(\\.(25[0-5]|2[0-4]\\d|1\\d\\d|[1-9]?\\d)){3}))|:))|(([0-9A-Fa-f]{1,4}:){2}(((:[0-9A-Fa-f]{1,4}){1,5})|((:[0-9A-Fa-f]{1,4}){0,3}:((25[0-5]|2[0-4]\\d|1\\d\\d|[1-9]?\\d)(\\.(25[0-5]|2[0-4]\\d|1\\d\\d|[1-9]?\\d)){3}))|:))|(([0-9A-Fa-f]{1,4}:){1}(((:[0-9A-Fa-f]{1,4}){1,6})|((:[0-9A-Fa-f]{1,4}){0,4}:((25[0-5]|2[0-4]\\d|1\\d\\d|[1-9]?\\d)(\\.(25[0-5]|2[0-4]\\d|1\\d\\d|[1-9]?\\d)){3}))|:))|(:(((:[0-9A-Fa-f]{1,4}){1,7})|((:[0-9A-Fa-f]{1,4}){0,5}:((25[0-5]|2[0-4]\\d|1\\d\\d|[1-9]?\\d)(\\.(25[0-5]|2[0-4]\\d|1\\d\\d|[1-9]?\\d)){3}))|:)))(%.+)?\\s*$/,\n\n  // TODO: A more accurate regular expression for \"uri\" goes:\n  // [A-Za-z][+\\-.0-9A-Za-z]*:((/(/((%[0-9A-Fa-f]{2}|[!$&-.0-9;=A-Z_a-z~])+|(\\[(([Vv][0-9A-Fa-f]+\\.[!$&-.0-;=A-Z_a-z~]+)?|[.0-:A-Fa-f]+)\\])?)(:\\d*)?)?)?#(%[0-9A-Fa-f]{2}|[!$&-;=?-Z_a-z~])*|(/(/((%[0-9A-Fa-f]{2}|[!$&-.0-9;=A-Z_a-z~])+|(\\[(([Vv][0-9A-Fa-f]+\\.[!$&-.0-;=A-Z_a-z~]+)?|[.0-:A-Fa-f]+)\\])?)(:\\d*)?[/?]|[!$&-.0-;=?-Z_a-z~])|/?%[0-9A-Fa-f]{2}|[!$&-.0-;=?-Z_a-z~])(%[0-9A-Fa-f]{2}|[!$&-;=?-Z_a-z~])*(#(%[0-9A-Fa-f]{2}|[!$&-;=?-Z_a-z~])*)?|/(/((%[0-9A-Fa-f]{2}|[!$&-.0-9;=A-Z_a-z~])+(:\\d*)?|(\\[(([Vv][0-9A-Fa-f]+\\.[!$&-.0-;=A-Z_a-z~]+)?|[.0-:A-Fa-f]+)\\])?:\\d*|\\[(([Vv][0-9A-Fa-f]+\\.[!$&-.0-;=A-Z_a-z~]+)?|[.0-:A-Fa-f]+)\\])?)?)?\n  'uri': /^[a-zA-Z][a-zA-Z0-9+-.]*:[^\\s]*$/,\n  'uri-reference': /^(((([A-Za-z][+\\-.0-9A-Za-z]*(:%[0-9A-Fa-f]{2}|:[!$&-.0-;=?-Z_a-z~]|[/?])|\\?)(%[0-9A-Fa-f]{2}|[!$&-;=?-Z_a-z~])*|([A-Za-z][+\\-.0-9A-Za-z]*:?)?)|([A-Za-z][+\\-.0-9A-Za-z]*:)?\\/((%[0-9A-Fa-f]{2}|\\/((%[0-9A-Fa-f]{2}|[!$&-.0-9;=A-Z_a-z~])+|(\\[(([Vv][0-9A-Fa-f]+\\.[!$&-.0-;=A-Z_a-z~]+)?|[.0-:A-Fa-f]+)\\])?)(:\\d*)?[/?]|[!$&-.0-;=?-Z_a-z~])(%[0-9A-Fa-f]{2}|[!$&-;=?-Z_a-z~])*|(\\/((%[0-9A-Fa-f]{2}|[!$&-.0-9;=A-Z_a-z~])+|(\\[(([Vv][0-9A-Fa-f]+\\.[!$&-.0-;=A-Z_a-z~]+)?|[.0-:A-Fa-f]+)\\])?)(:\\d*)?)?))#(%[0-9A-Fa-f]{2}|[!$&-;=?-Z_a-z~])*|(([A-Za-z][+\\-.0-9A-Za-z]*)?%[0-9A-Fa-f]{2}|[!$&-.0-9;=@_~]|[A-Za-z][+\\-.0-9A-Za-z]*[!$&-*,;=@_~])(%[0-9A-Fa-f]{2}|[!$&-.0-9;=@-Z_a-z~])*((([/?](%[0-9A-Fa-f]{2}|[!$&-;=?-Z_a-z~])*)?#|[/?])(%[0-9A-Fa-f]{2}|[!$&-;=?-Z_a-z~])*)?|([A-Za-z][+\\-.0-9A-Za-z]*(:%[0-9A-Fa-f]{2}|:[!$&-.0-;=?-Z_a-z~]|[/?])|\\?)(%[0-9A-Fa-f]{2}|[!$&-;=?-Z_a-z~])*|([A-Za-z][+\\-.0-9A-Za-z]*:)?\\/((%[0-9A-Fa-f]{2}|\\/((%[0-9A-Fa-f]{2}|[!$&-.0-9;=A-Z_a-z~])+|(\\[(([Vv][0-9A-Fa-f]+\\.[!$&-.0-;=A-Z_a-z~]+)?|[.0-:A-Fa-f]+)\\])?)(:\\d*)?[/?]|[!$&-.0-;=?-Z_a-z~])(%[0-9A-Fa-f]{2}|[!$&-;=?-Z_a-z~])*|\\/((%[0-9A-Fa-f]{2}|[!$&-.0-9;=A-Z_a-z~])+(:\\d*)?|(\\[(([Vv][0-9A-Fa-f]+\\.[!$&-.0-;=A-Z_a-z~]+)?|[.0-:A-Fa-f]+)\\])?:\\d*|\\[(([Vv][0-9A-Fa-f]+\\.[!$&-.0-;=A-Z_a-z~]+)?|[.0-:A-Fa-f]+)\\])?)?|[A-Za-z][+\\-.0-9A-Za-z]*:?)?$/,\n\n  'color': /^(#?([0-9A-Fa-f]{3}){1,2}\\b|aqua|black|blue|fuchsia|gray|green|lime|maroon|navy|olive|orange|purple|red|silver|teal|white|yellow|(rgb\\(\\s*\\b([0-9]|[1-9][0-9]|1[0-9][0-9]|2[0-4][0-9]|25[0-5])\\b\\s*,\\s*\\b([0-9]|[1-9][0-9]|1[0-9][0-9]|2[0-4][0-9]|25[0-5])\\b\\s*,\\s*\\b([0-9]|[1-9][0-9]|1[0-9][0-9]|2[0-4][0-9]|25[0-5])\\b\\s*\\))|(rgb\\(\\s*(\\d?\\d%|100%)+\\s*,\\s*(\\d?\\d%|100%)+\\s*,\\s*(\\d?\\d%|100%)+\\s*\\)))$/,\n\n  // hostname regex from: http://stackoverflow.com/a/1420225/5628\n  'hostname': /^(?=.{1,255}$)[0-9A-Za-z](?:(?:[0-9A-Za-z]|-){0,61}[0-9A-Za-z])?(?:\\.[0-9A-Za-z](?:(?:[0-9A-Za-z]|-){0,61}[0-9A-Za-z])?)*\\.?$/,\n  'host-name': /^(?=.{1,255}$)[0-9A-Za-z](?:(?:[0-9A-Za-z]|-){0,61}[0-9A-Za-z])?(?:\\.[0-9A-Za-z](?:(?:[0-9A-Za-z]|-){0,61}[0-9A-Za-z])?)*\\.?$/,\n\n  'alpha': /^[a-zA-Z]+$/,\n  'alphanumeric': /^[a-zA-Z0-9]+$/,\n  'utc-millisec': function (input) {\n    return (typeof input === 'string') && parseFloat(input) === parseInt(input, 10) && !isNaN(input);\n  },\n  'regex': function (input) {\n    var result = true;\n    try {\n      new RegExp(input);\n    } catch (e) {\n      result = false;\n    }\n    return result;\n  },\n  'style': /\\s*(.+?):\\s*([^;]+);?/,\n  'phone': /^\\+(?:[0-9] ?){6,14}[0-9]$/,\n};\n\nFORMAT_REGEXPS.regexp = FORMAT_REGEXPS.regex;\nFORMAT_REGEXPS.pattern = FORMAT_REGEXPS.regex;\nFORMAT_REGEXPS.ipv4 = FORMAT_REGEXPS['ip-address'];\n\nexports.isFormat = function isFormat (input, format, validator) {\n  if (typeof input === 'string' && FORMAT_REGEXPS[format] !== undefined) {\n    if (FORMAT_REGEXPS[format] instanceof RegExp) {\n      return FORMAT_REGEXPS[format].test(input);\n    }\n    if (typeof FORMAT_REGEXPS[format] === 'function') {\n      return FORMAT_REGEXPS[format](input);\n    }\n  } else if (validator && validator.customFormats &&\n      typeof validator.customFormats[format] === 'function') {\n    return validator.customFormats[format](input);\n  }\n  return true;\n};\n\nvar makeSuffix = exports.makeSuffix = function makeSuffix (key) {\n  key = key.toString();\n  // This function could be capable of outputting valid a ECMAScript string, but the\n  // resulting code for testing which form to use would be tens of thousands of characters long\n  // That means this will use the name form for some illegal forms\n  if (!key.match(/[.\\s\\[\\]]/) && !key.match(/^[\\d]/)) {\n    return '.' + key;\n  }\n  if (key.match(/^\\d+$/)) {\n    return '[' + key + ']';\n  }\n  return '[' + JSON.stringify(key) + ']';\n};\n\nexports.deepCompareStrict = function deepCompareStrict (a, b) {\n  if (typeof a !== typeof b) {\n    return false;\n  }\n  if (Array.isArray(a)) {\n    if (!Array.isArray(b)) {\n      return false;\n    }\n    if (a.length !== b.length) {\n      return false;\n    }\n    return a.every(function (v, i) {\n      return deepCompareStrict(a[i], b[i]);\n    });\n  }\n  if (typeof a === 'object') {\n    if (!a || !b) {\n      return a === b;\n    }\n    var aKeys = Object.keys(a);\n    var bKeys = Object.keys(b);\n    if (aKeys.length !== bKeys.length) {\n      return false;\n    }\n    return aKeys.every(function (v) {\n      return deepCompareStrict(a[v], b[v]);\n    });\n  }\n  return a === b;\n};\n\nfunction deepMerger (target, dst, e, i) {\n  if (typeof e === 'object') {\n    dst[i] = deepMerge(target[i], e);\n  } else {\n    if (target.indexOf(e) === -1) {\n      dst.push(e);\n    }\n  }\n}\n\nfunction copyist (src, dst, key) {\n  dst[key] = src[key];\n}\n\nfunction copyistWithDeepMerge (target, src, dst, key) {\n  if (typeof src[key] !== 'object' || !src[key]) {\n    dst[key] = src[key];\n  }\n  else {\n    if (!target[key]) {\n      dst[key] = src[key];\n    } else {\n      dst[key] = deepMerge(target[key], src[key]);\n    }\n  }\n}\n\nfunction deepMerge (target, src) {\n  var array = Array.isArray(src);\n  var dst = array && [] || {};\n\n  if (array) {\n    target = target || [];\n    dst = dst.concat(target);\n    src.forEach(deepMerger.bind(null, target, dst));\n  } else {\n    if (target && typeof target === 'object') {\n      Object.keys(target).forEach(copyist.bind(null, target, dst));\n    }\n    Object.keys(src).forEach(copyistWithDeepMerge.bind(null, target, src, dst));\n  }\n\n  return dst;\n}\n\nmodule.exports.deepMerge = deepMerge;\n\n/**\n * Validates instance against the provided schema\n * Implements URI+JSON Pointer encoding, e.g. \"%7e\"=\"~0\"=>\"~\", \"~1\"=\"%2f\"=>\"/\"\n * @param o\n * @param s The path to walk o along\n * @return any\n */\nexports.objectGetPath = function objectGetPath(o, s) {\n  var parts = s.split('/').slice(1);\n  var k;\n  while (typeof (k=parts.shift()) == 'string') {\n    var n = decodeURIComponent(k.replace(/~0/,'~').replace(/~1/g,'/'));\n    if (!(n in o)) return;\n    o = o[n];\n  }\n  return o;\n};\n\nfunction pathEncoder (v) {\n  return '/'+encodeURIComponent(v).replace(/~/g,'%7E');\n}\n/**\n * Accept an Array of property names and return a JSON Pointer URI fragment\n * @param Array a\n * @return {String}\n */\nexports.encodePath = function encodePointer(a){\n  // ~ must be encoded explicitly because hacks\n  // the slash is encoded by encodeURIComponent\n  return a.map(pathEncoder).join('');\n};\n\n\n/**\n * Calculate the number of decimal places a number uses\n * We need this to get correct results out of multipleOf and divisibleBy\n * when either figure is has decimal places, due to IEEE-754 float issues.\n * @param number\n * @returns {number}\n */\nexports.getDecimalPlaces = function getDecimalPlaces(number) {\n\n  var decimalPlaces = 0;\n  if (isNaN(number)) return decimalPlaces;\n\n  if (typeof number !== 'number') {\n    number = Number(number);\n  }\n\n  var parts = number.toString().split('e');\n  if (parts.length === 2) {\n    if (parts[1][0] !== '-') {\n      return decimalPlaces;\n    } else {\n      decimalPlaces = Number(parts[1].slice(1));\n    }\n  }\n\n  var decimalParts = parts[0].split('.');\n  if (decimalParts.length === 2) {\n    decimalPlaces += decimalParts[1].length;\n  }\n\n  return decimalPlaces;\n};\n\nexports.isSchema = function isSchema(val){\n  return (typeof val === 'object' && val) || (typeof val === 'boolean');\n};\n\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,[encoded data, 22540 characters]\n//# sourceURL=webpack-internal:///./node_modules/jsonschema/lib/helpers.js\n");

/***/ }),

/***/ "./node_modules/jsonschema/lib/index.js":
/*!**********************************************!*\
  !*** ./node_modules/jsonschema/lib/index.js ***!
  \**********************************************/
/*! no static exports found */
/***/ (function(module, exports, __webpack_require__) {

"use strict";
eval("\n\nvar Validator = module.exports.Validator = __webpack_require__(/*! ./validator */ \"./node_modules/jsonschema/lib/validator.js\");\n\nmodule.exports.ValidatorResult = __webpack_require__(/*! ./helpers */ \"./node_modules/jsonschema/lib/helpers.js\").ValidatorResult;\nmodule.exports.ValidatorResultError = __webpack_require__(/*! ./helpers */ \"./node_modules/jsonschema/lib/helpers.js\").ValidatorResultError;\nmodule.exports.ValidationError = __webpack_require__(/*! ./helpers */ \"./node_modules/jsonschema/lib/helpers.js\").ValidationError;\nmodule.exports.SchemaError = __webpack_require__(/*! ./helpers */ \"./node_modules/jsonschema/lib/helpers.js\").SchemaError;\nmodule.exports.SchemaScanResult = __webpack_require__(/*! ./scan */ \"./node_modules/jsonschema/lib/scan.js\").SchemaScanResult;\nmodule.exports.scan = __webpack_require__(/*! ./scan */ \"./node_modules/jsonschema/lib/scan.js\").scan;\n\nmodule.exports.validate = function (instance, schema, options) {\n  var v = new Validator();\n  return v.validate(instance, schema, options);\n};\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvanNvbnNjaGVtYS9saWIvaW5kZXguanMuanMiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvanNvbnNjaGVtYS9saWIvaW5kZXguanM/YTQxYiJdLCJzb3VyY2VzQ29udGVudCI6WyIndXNlIHN0cmljdCc7XG5cbnZhciBWYWxpZGF0b3IgPSBtb2R1bGUuZXhwb3J0cy5WYWxpZGF0b3IgPSByZXF1aXJlKCcuL3ZhbGlkYXRvcicpO1xuXG5tb2R1bGUuZXhwb3J0cy5WYWxpZGF0b3JSZXN1bHQgPSByZXF1aXJlKCcuL2hlbHBlcnMnKS5WYWxpZGF0b3JSZXN1bHQ7XG5tb2R1bGUuZXhwb3J0cy5WYWxpZGF0b3JSZXN1bHRFcnJvciA9IHJlcXVpcmUoJy4vaGVscGVycycpLlZhbGlkYXRvclJlc3VsdEVycm9yO1xubW9kdWxlLmV4cG9ydHMuVmFsaWRhdGlvbkVycm9yID0gcmVxdWlyZSgnLi9oZWxwZXJzJykuVmFsaWRhdGlvbkVycm9yO1xubW9kdWxlLmV4cG9ydHMuU2NoZW1hRXJyb3IgPSByZXF1aXJlKCcuL2hlbHBlcnMnKS5TY2hlbWFFcnJvcjtcbm1vZHVsZS5leHBvcnRzLlNjaGVtYVNjYW5SZXN1bHQgPSByZXF1aXJlKCcuL3NjYW4nKS5TY2hlbWFTY2FuUmVzdWx0O1xubW9kdWxlLmV4cG9ydHMuc2NhbiA9IHJlcXVpcmUoJy4vc2NhbicpLnNjYW47XG5cbm1vZHVsZS5leHBvcnRzLnZhbGlkYXRlID0gZnVuY3Rpb24gKGluc3RhbmNlLCBzY2hlbWEsIG9wdGlvbnMpIHtcbiAgdmFyIHYgPSBuZXcgVmFsaWRhdG9yKCk7XG4gIHJldHVybiB2LnZhbGlkYXRlKGluc3RhbmNlLCBzY2hlbWEsIG9wdGlvbnMpO1xufTtcbiJdLCJtYXBwaW5ncyI6IkFBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOyIsInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///./node_modules/jsonschema/lib/index.js\n");

/***/ }),

/***/ "./node_modules/jsonschema/lib/scan.js":
/*!*********************************************!*\
  !*** ./node_modules/jsonschema/lib/scan.js ***!
  \*********************************************/
/*! no static exports found */
/***/ (function(module, exports, __webpack_require__) {

"use strict";
eval("\n\nvar urilib = __webpack_require__(/*! url */ \"./node_modules/url/url.js\");\nvar helpers = __webpack_require__(/*! ./helpers */ \"./node_modules/jsonschema/lib/helpers.js\");\n\nmodule.exports.SchemaScanResult = SchemaScanResult;\nfunction SchemaScanResult(found, ref){\n  this.id = found;\n  this.ref = ref;\n}\n\n/**\n * Adds a schema with a certain urn to the Validator instance.\n * @param string uri\n * @param object schema\n * @return {Object}\n */\nmodule.exports.scan = function scan(base, schema){\n  function scanSchema(baseuri, schema){\n    if(!schema || typeof schema!='object') return;\n    // Mark all referenced schemas so we can tell later which schemas are referred to, but never defined\n    if(schema.$ref){\n      var resolvedUri = urilib.resolve(baseuri, schema.$ref);\n      ref[resolvedUri] = ref[resolvedUri] ? ref[resolvedUri]+1 : 0;\n      return;\n    }\n    var id = schema.$id || schema.id;\n    var ourBase = id ? urilib.resolve(baseuri, id) : baseuri;\n    if (ourBase) {\n      // If there's no fragment, append an empty one\n      if(ourBase.indexOf('#')<0) ourBase += '#';\n      if(found[ourBase]){\n        if(!helpers.deepCompareStrict(found[ourBase], schema)){\n          throw new Error('Schema <'+ourBase+'> already exists with different definition');\n        }\n        return found[ourBase];\n      }\n      found[ourBase] = schema;\n      // strip trailing fragment\n      if(ourBase[ourBase.length-1]=='#'){\n        found[ourBase.substring(0, ourBase.length-1)] = schema;\n      }\n    }\n    scanArray(ourBase+'/items', (Array.isArray(schema.items)?schema.items:[schema.items]));\n    scanArray(ourBase+'/extends', (Array.isArray(schema.extends)?schema.extends:[schema.extends]));\n    scanSchema(ourBase+'/additionalItems', schema.additionalItems);\n    scanObject(ourBase+'/properties', schema.properties);\n    scanSchema(ourBase+'/additionalProperties', schema.additionalProperties);\n    scanObject(ourBase+'/definitions', schema.definitions);\n    scanObject(ourBase+'/patternProperties', schema.patternProperties);\n    scanObject(ourBase+'/dependencies', schema.dependencies);\n    scanArray(ourBase+'/disallow', schema.disallow);\n    scanArray(ourBase+'/allOf', schema.allOf);\n    scanArray(ourBase+'/anyOf', schema.anyOf);\n    scanArray(ourBase+'/oneOf', schema.oneOf);\n    scanSchema(ourBase+'/not', schema.not);\n  }\n  function scanArray(baseuri, schemas){\n    if(!Array.isArray(schemas)) return;\n    for(var i=0; i<schemas.length; i++){\n      scanSchema(baseuri+'/'+i, schemas[i]);\n    }\n  }\n  function scanObject(baseuri, schemas){\n    if(!schemas || typeof schemas!='object') return;\n    for(var p in schemas){\n      scanSchema(baseuri+'/'+p, schemas[p]);\n    }\n  }\n\n  var found = {};\n  var ref = {};\n  scanSchema(base, schema);\n  return new SchemaScanResult(found, ref);\n};\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,[encoded data, 4440 characters]\n//# sourceURL=webpack-internal:///./node_modules/jsonschema/lib/scan.js\n");

/***/ }),

/***/ "./node_modules/jsonschema/lib/validator.js":
/*!**************************************************!*\
  !*** ./node_modules/jsonschema/lib/validator.js ***!
  \**************************************************/
/*! no static exports found */
/***/ (function(module, exports, __webpack_require__) {

"use strict";
eval("\n\nvar urilib = __webpack_require__(/*! url */ \"./node_modules/url/url.js\");\n\nvar attribute = __webpack_require__(/*! ./attribute */ \"./node_modules/jsonschema/lib/attribute.js\");\nvar helpers = __webpack_require__(/*! ./helpers */ \"./node_modules/jsonschema/lib/helpers.js\");\nvar scanSchema = __webpack_require__(/*! ./scan */ \"./node_modules/jsonschema/lib/scan.js\").scan;\nvar ValidatorResult = helpers.ValidatorResult;\nvar ValidatorResultError = helpers.ValidatorResultError;\nvar SchemaError = helpers.SchemaError;\nvar SchemaContext = helpers.SchemaContext;\n//var anonymousBase = 'vnd.jsonschema:///';\nvar anonymousBase = '/';\n\n/**\n * Creates a new Validator object\n * @name Validator\n * @constructor\n */\nvar Validator = function Validator () {\n  // Allow a validator instance to override global custom formats or to have their\n  // own custom formats.\n  this.customFormats = Object.create(Validator.prototype.customFormats);\n  this.schemas = {};\n  this.unresolvedRefs = [];\n\n  // Use Object.create to make this extensible without Validator instances stepping on each other's toes.\n  this.types = Object.create(types);\n  this.attributes = Object.create(attribute.validators);\n};\n\n// Allow formats to be registered globally.\nValidator.prototype.customFormats = {};\n\n// Hint at the presence of a property\nValidator.prototype.schemas = null;\nValidator.prototype.types = null;\nValidator.prototype.attributes = null;\nValidator.prototype.unresolvedRefs = null;\n\n/**\n * Adds a schema with a certain urn to the Validator instance.\n * @param schema\n * @param urn\n * @return {Object}\n */\nValidator.prototype.addSchema = function addSchema (schema, base) {\n  var self = this;\n  if (!schema) {\n    return null;\n  }\n  var scan = scanSchema(base||anonymousBase, schema);\n  var ourUri = base || schema.$id || schema.id;\n  for(var uri in scan.id){\n    this.schemas[uri] = scan.id[uri];\n  }\n  for(var uri in scan.ref){\n    // If this schema is already defined, it will be filtered out by the next step\n    this.unresolvedRefs.push(uri);\n  }\n  // Remove newly defined schemas from unresolvedRefs\n  this.unresolvedRefs = this.unresolvedRefs.filter(function(uri){\n    return typeof self.schemas[uri]==='undefined';\n  });\n  return this.schemas[ourUri];\n};\n\nValidator.prototype.addSubSchemaArray = function addSubSchemaArray(baseuri, schemas) {\n  if(!Array.isArray(schemas)) return;\n  for(var i=0; i<schemas.length; i++){\n    this.addSubSchema(baseuri, schemas[i]);\n  }\n};\n\nValidator.prototype.addSubSchemaObject = function addSubSchemaArray(baseuri, schemas) {\n  if(!schemas || typeof schemas!='object') return;\n  for(var p in schemas){\n    this.addSubSchema(baseuri, schemas[p]);\n  }\n};\n\n\n\n/**\n * Sets all the schemas of the Validator instance.\n * @param schemas\n */\nValidator.prototype.setSchemas = function setSchemas (schemas) {\n  this.schemas = schemas;\n};\n\n/**\n * Returns the schema of a certain urn\n * @param urn\n */\nValidator.prototype.getSchema = function getSchema (urn) {\n  return this.schemas[urn];\n};\n\n/**\n * Validates instance against the provided schema\n * @param instance\n * @param schema\n * @param [options]\n * @param [ctx]\n * @return {Array}\n */\nValidator.prototype.validate = function validate (instance, schema, options, ctx) {\n  if((typeof schema !== 'boolean' && typeof schema !== 'object') || schema === null){\n    throw new SchemaError('Expected `schema` to be an object or boolean');\n  }\n  if (!options) {\n    options = {};\n  }\n  // This section indexes subschemas in the provided schema, so they don't need to be added with Validator#addSchema\n  // This will work so long as the function at uri.resolve() will resolve a relative URI to a relative URI\n  var id = schema.$id || schema.id;\n  var base = urilib.resolve(options.base||anonymousBase, id||'');\n  if(!ctx){\n    ctx = new SchemaContext(schema, options, [], base, Object.create(this.schemas));\n    if (!ctx.schemas[base]) {\n      ctx.schemas[base] = schema;\n    }\n    var found = scanSchema(base, schema);\n    for(var n in found.id){\n      var sch = found.id[n];\n      ctx.schemas[n] = sch;\n    }\n  }\n  if(options.required && instance===undefined){\n    var result = new ValidatorResult(instance, schema, options, ctx);\n    result.addError('is required, but is undefined');\n    return result;\n  }\n  var result = this.validateSchema(instance, schema, options, ctx);\n  if (!result) {\n    throw new Error('Result undefined');\n  }else if(options.throwAll && result.errors.length){\n    throw new ValidatorResultError(result);\n  }\n  return result;\n};\n\n/**\n* @param Object schema\n* @return mixed schema uri or false\n*/\nfunction shouldResolve(schema) {\n  var ref = (typeof schema === 'string') ? schema : schema.$ref;\n  if (typeof ref=='string') return ref;\n  return false;\n}\n\n/**\n * Validates an instance against the schema (the actual work horse)\n * @param instance\n * @param schema\n * @param options\n * @param ctx\n * @private\n * @return {ValidatorResult}\n */\nValidator.prototype.validateSchema = function validateSchema (instance, schema, options, ctx) {\n  var result = new ValidatorResult(instance, schema, options, ctx);\n\n  // Support for the true/false schemas\n  if(typeof schema==='boolean') {\n    if(schema===true){\n      // `true` is always valid\n      schema = {};\n    }else if(schema===false){\n      // `false` is always invalid\n      schema = {type: []};\n    }\n  }else if(!schema){\n    // This might be a string\n    throw new Error(\"schema is undefined\");\n  }\n\n  if (schema['extends']) {\n    if (Array.isArray(schema['extends'])) {\n      var schemaobj = {schema: schema, ctx: ctx};\n      schema['extends'].forEach(this.schemaTraverser.bind(this, schemaobj));\n      schema = schemaobj.schema;\n      schemaobj.schema = null;\n      schemaobj.ctx = null;\n      schemaobj = null;\n    } else {\n      schema = helpers.deepMerge(schema, this.superResolve(schema['extends'], ctx));\n    }\n  }\n\n  // If passed a string argument, load that schema URI\n  var switchSchema = shouldResolve(schema);\n  if (switchSchema) {\n    var resolved = this.resolve(schema, switchSchema, ctx);\n    var subctx = new SchemaContext(resolved.subschema, options, ctx.path, resolved.switchSchema, ctx.schemas);\n    return this.validateSchema(instance, resolved.subschema, options, subctx);\n  }\n\n  var skipAttributes = options && options.skipAttributes || [];\n  // Validate each schema attribute against the instance\n  for (var key in schema) {\n    if (!attribute.ignoreProperties[key] && skipAttributes.indexOf(key) < 0) {\n      var validatorErr = null;\n      var validator = this.attributes[key];\n      if (validator) {\n        validatorErr = validator.call(this, instance, schema, options, ctx);\n      } else if (options.allowUnknownAttributes === false) {\n        // This represents an error with the schema itself, not an invalid instance\n        throw new SchemaError(\"Unsupported attribute: \" + key, schema);\n      }\n      if (validatorErr) {\n        result.importErrors(validatorErr);\n      }\n    }\n  }\n\n  if (typeof options.rewrite == 'function') {\n    var value = options.rewrite.call(this, instance, schema, options, ctx);\n    result.instance = value;\n  }\n  return result;\n};\n\n/**\n* @private\n* @param Object schema\n* @param SchemaContext ctx\n* @returns Object schema or resolved schema\n*/\nValidator.prototype.schemaTraverser = function schemaTraverser (schemaobj, s) {\n  schemaobj.schema = helpers.deepMerge(schemaobj.schema, this.superResolve(s, schemaobj.ctx));\n};\n\n/**\n* @private\n* @param Object schema\n* @param SchemaContext ctx\n* @returns Object schema or resolved schema\n*/\nValidator.prototype.superResolve = function superResolve (schema, ctx) {\n  var ref = shouldResolve(schema);\n  if(ref) {\n    return this.resolve(schema, ref, ctx).subschema;\n  }\n  return schema;\n};\n\n/**\n* @private\n* @param Object schema\n* @param Object switchSchema\n* @param SchemaContext ctx\n* @return Object resolved schemas {subschema:String, switchSchema: String}\n* @throws SchemaError\n*/\nValidator.prototype.resolve = function resolve (schema, switchSchema, ctx) {\n  switchSchema = ctx.resolve(switchSchema);\n  // First see if the schema exists under the provided URI\n  if (ctx.schemas[switchSchema]) {\n    return {subschema: ctx.schemas[switchSchema], switchSchema: switchSchema};\n  }\n  // Else try walking the property pointer\n  var parsed = urilib.parse(switchSchema);\n  var fragment = parsed && parsed.hash;\n  var document = fragment && fragment.length && switchSchema.substr(0, switchSchema.length - fragment.length);\n  if (!document || !ctx.schemas[document]) {\n    throw new SchemaError(\"no such schema <\" + switchSchema + \">\", schema);\n  }\n  var subschema = helpers.objectGetPath(ctx.schemas[document], fragment.substr(1));\n  if(subschema===undefined){\n    throw new SchemaError(\"no such schema \" + fragment + \" located in <\" + document + \">\", schema);\n  }\n  return {subschema: subschema, switchSchema: switchSchema};\n};\n\n/**\n * Tests whether the instance if of a certain type.\n * @private\n * @param instance\n * @param schema\n * @param options\n * @param ctx\n * @param type\n * @return {boolean}\n */\nValidator.prototype.testType = function validateType (instance, schema, options, ctx, type) {\n  if(type===undefined){\n    return;\n  }else if(type===null){\n    throw new SchemaError('Unexpected null in \"type\" keyword');\n  }\n  if (typeof this.types[type] == 'function') {\n    return this.types[type].call(this, instance);\n  }\n  if (type && typeof type == 'object') {\n    var res = this.validateSchema(instance, type, options, ctx);\n    return res === undefined || !(res && res.errors.length);\n  }\n  // Undefined or properties not on the list are acceptable, same as not being defined\n  return true;\n};\n\nvar types = Validator.prototype.types = {};\ntypes.string = function testString (instance) {\n  return typeof instance == 'string';\n};\ntypes.number = function testNumber (instance) {\n  // isFinite returns false for NaN, Infinity, and -Infinity\n  return typeof instance == 'number' && isFinite(instance);\n};\ntypes.integer = function testInteger (instance) {\n  return (typeof instance == 'number') && instance % 1 === 0;\n};\ntypes.boolean = function testBoolean (instance) {\n  return typeof instance == 'boolean';\n};\ntypes.array = function testArray (instance) {\n  return Array.isArray(instance);\n};\ntypes['null'] = function testNull (instance) {\n  return instance === null;\n};\ntypes.date = function testDate (instance) {\n  return instance instanceof Date;\n};\ntypes.any = function testAny (instance) {\n  return true;\n};\ntypes.object = function testObject (instance) {\n  // TODO: fix this - see #15\n  return instance && (typeof instance === 'object') && !(Array.isArray(instance)) && !(instance instanceof Date);\n};\n\nmodule.exports = Validator;\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,[encoded data, 16912 characters]\n//# sourceURL=webpack-internal:///./node_modules/jsonschema/lib/validator.js\n");

/***/ }),

/***/ "./node_modules/lru-cache/index.js":
/*!*****************************************!*\
  !*** ./node_modules/lru-cache/index.js ***!
  \*****************************************/
/*! no static exports found */
/***/ (function(module, exports, __webpack_require__) {

"use strict";
eval("\n\n// A linked list to keep track of recently-used-ness\nconst Yallist = __webpack_require__(/*! yallist */ \"./node_modules/yallist/yallist.js\")\n\nconst MAX = Symbol('max')\nconst LENGTH = Symbol('length')\nconst LENGTH_CALCULATOR = Symbol('lengthCalculator')\nconst ALLOW_STALE = Symbol('allowStale')\nconst MAX_AGE = Symbol('maxAge')\nconst DISPOSE = Symbol('dispose')\nconst NO_DISPOSE_ON_SET = Symbol('noDisposeOnSet')\nconst LRU_LIST = Symbol('lruList')\nconst CACHE = Symbol('cache')\nconst UPDATE_AGE_ON_GET = Symbol('updateAgeOnGet')\n\nconst naiveLength = () => 1\n\n// lruList is a yallist where the head is the youngest\n// item, and the tail is the oldest.  the list contains the Hit\n// objects as the entries.\n// Each Hit object has a reference to its Yallist.Node.  This\n// never changes.\n//\n// cache is a Map (or PseudoMap) that matches the keys to\n// the Yallist.Node object.\nclass LRUCache {\n  constructor (options) {\n    if (typeof options === 'number')\n      options = { max: options }\n\n    if (!options)\n      options = {}\n\n    if (options.max && (typeof options.max !== 'number' || options.max < 0))\n      throw new TypeError('max must be a non-negative number')\n    // Kind of weird to have a default max of Infinity, but oh well.\n    const max = this[MAX] = options.max || Infinity\n\n    const lc = options.length || naiveLength\n    this[LENGTH_CALCULATOR] = (typeof lc !== 'function') ? naiveLength : lc\n    this[ALLOW_STALE] = options.stale || false\n    if (options.maxAge && typeof options.maxAge !== 'number')\n      throw new TypeError('maxAge must be a number')\n    this[MAX_AGE] = options.maxAge || 0\n    this[DISPOSE] = options.dispose\n    this[NO_DISPOSE_ON_SET] = options.noDisposeOnSet || false\n    this[UPDATE_AGE_ON_GET] = options.updateAgeOnGet || false\n    this.reset()\n  }\n\n  // resize the cache when the max changes.\n  set max (mL) {\n    if (typeof mL !== 'number' || mL < 0)\n      throw new TypeError('max must be a non-negative number')\n\n    this[MAX] = mL || Infinity\n    trim(this)\n  }\n  get max () {\n    return this[MAX]\n  }\n\n  set allowStale (allowStale) {\n    this[ALLOW_STALE] = !!allowStale\n  }\n  get allowStale () {\n    return this[ALLOW_STALE]\n  }\n\n  set maxAge (mA) {\n    if (typeof mA !== 'number')\n      throw new TypeError('maxAge must be a non-negative number')\n\n    this[MAX_AGE] = mA\n    trim(this)\n  }\n  get maxAge () {\n    return this[MAX_AGE]\n  }\n\n  // resize the cache when the lengthCalculator changes.\n  set lengthCalculator (lC) {\n    if (typeof lC !== 'function')\n      lC = naiveLength\n\n    if (lC !== this[LENGTH_CALCULATOR]) {\n      this[LENGTH_CALCULATOR] = lC\n      this[LENGTH] = 0\n      this[LRU_LIST].forEach(hit => {\n        hit.length = this[LENGTH_CALCULATOR](hit.value, hit.key)\n        this[LENGTH] += hit.length\n      })\n    }\n    trim(this)\n  }\n  get lengthCalculator () { return this[LENGTH_CALCULATOR] }\n\n  get length () { return this[LENGTH] }\n  get itemCount () { return this[LRU_LIST].length }\n\n  rforEach (fn, thisp) {\n    thisp = thisp || this\n    for (let walker = this[LRU_LIST].tail; walker !== null;) {\n      const prev = walker.prev\n      forEachStep(this, fn, walker, thisp)\n      walker = prev\n    }\n  }\n\n  forEach (fn, thisp) {\n    thisp = thisp || this\n    for (let walker = this[LRU_LIST].head; walker !== null;) {\n      const next = walker.next\n      forEachStep(this, fn, walker, thisp)\n      walker = next\n    }\n  }\n\n  keys () {\n    return this[LRU_LIST].toArray().map(k => k.key)\n  }\n\n  values () {\n    return this[LRU_LIST].toArray().map(k => k.value)\n  }\n\n  reset () {\n    if (this[DISPOSE] &&\n        this[LRU_LIST] &&\n        this[LRU_LIST].length) {\n      this[LRU_LIST].forEach(hit => this[DISPOSE](hit.key, hit.value))\n    }\n\n    this[CACHE] = new Map() // hash of items by key\n    this[LRU_LIST] = new Yallist() // list of items in order of use recency\n    this[LENGTH] = 0 // length of items in the list\n  }\n\n  dump () {\n    return this[LRU_LIST].map(hit =>\n      isStale(this, hit) ? false : {\n        k: hit.key,\n        v: hit.value,\n        e: hit.now + (hit.maxAge || 0)\n      }).toArray().filter(h => h)\n  }\n\n  dumpLru () {\n    return this[LRU_LIST]\n  }\n\n  set (key, value, maxAge) {\n    maxAge = maxAge || this[MAX_AGE]\n\n    if (maxAge && typeof maxAge !== 'number')\n      throw new TypeError('maxAge must be a number')\n\n    const now = maxAge ? Date.now() : 0\n    const len = this[LENGTH_CALCULATOR](value, key)\n\n    if (this[CACHE].has(key)) {\n      if (len > this[MAX]) {\n        del(this, this[CACHE].get(key))\n        return false\n      }\n\n      const node = this[CACHE].get(key)\n      const item = node.value\n\n      // dispose of the old one before overwriting\n      // split out into 2 ifs for better coverage tracking\n      if (this[DISPOSE]) {\n        if (!this[NO_DISPOSE_ON_SET])\n          this[DISPOSE](key, item.value)\n      }\n\n      item.now = now\n      item.maxAge = maxAge\n      item.value = value\n      this[LENGTH] += len - item.length\n      item.length = len\n      this.get(key)\n      trim(this)\n      return true\n    }\n\n    const hit = new Entry(key, value, len, now, maxAge)\n\n    // oversized objects fall out of cache automatically.\n    if (hit.length > this[MAX]) {\n      if (this[DISPOSE])\n        this[DISPOSE](key, value)\n\n      return false\n    }\n\n    this[LENGTH] += hit.length\n    this[LRU_LIST].unshift(hit)\n    this[CACHE].set(key, this[LRU_LIST].head)\n    trim(this)\n    return true\n  }\n\n  has (key) {\n    if (!this[CACHE].has(key)) return false\n    const hit = this[CACHE].get(key).value\n    return !isStale(this, hit)\n  }\n\n  get (key) {\n    return get(this, key, true)\n  }\n\n  peek (key) {\n    return get(this, key, false)\n  }\n\n  pop () {\n    const node = this[LRU_LIST].tail\n    if (!node)\n      return null\n\n    del(this, node)\n    return node.value\n  }\n\n  del (key) {\n    del(this, this[CACHE].get(key))\n  }\n\n  load (arr) {\n    // reset the cache\n    this.reset()\n\n    const now = Date.now()\n    // A previous serialized cache has the most recent items first\n    for (let l = arr.length - 1; l >= 0; l--) {\n      const hit = arr[l]\n      const expiresAt = hit.e || 0\n      if (expiresAt === 0)\n        // the item was created without expiration in a non aged cache\n        this.set(hit.k, hit.v)\n      else {\n        const maxAge = expiresAt - now\n        // dont add already expired items\n        if (maxAge > 0) {\n          this.set(hit.k, hit.v, maxAge)\n        }\n      }\n    }\n  }\n\n  prune () {\n    this[CACHE].forEach((value, key) => get(this, key, false))\n  }\n}\n\nconst get = (self, key, doUse) => {\n  const node = self[CACHE].get(key)\n  if (node) {\n    const hit = node.value\n    if (isStale(self, hit)) {\n      del(self, node)\n      if (!self[ALLOW_STALE])\n        return undefined\n    } else {\n      if (doUse) {\n        if (self[UPDATE_AGE_ON_GET])\n          node.value.now = Date.now()\n        self[LRU_LIST].unshiftNode(node)\n      }\n    }\n    return hit.value\n  }\n}\n\nconst isStale = (self, hit) => {\n  if (!hit || (!hit.maxAge && !self[MAX_AGE]))\n    return false\n\n  const diff = Date.now() - hit.now\n  return hit.maxAge ? diff > hit.maxAge\n    : self[MAX_AGE] && (diff > self[MAX_AGE])\n}\n\nconst trim = self => {\n  if (self[LENGTH] > self[MAX]) {\n    for (let walker = self[LRU_LIST].tail;\n      self[LENGTH] > self[MAX] && walker !== null;) {\n      // We know that we're about to delete this one, and also\n      // what the next least recently used key will be, so just\n      // go ahead and set it now.\n      const prev = walker.prev\n      del(self, walker)\n      walker = prev\n    }\n  }\n}\n\nconst del = (self, node) => {\n  if (node) {\n    const hit = node.value\n    if (self[DISPOSE])\n      self[DISPOSE](hit.key, hit.value)\n\n    self[LENGTH] -= hit.length\n    self[CACHE].delete(hit.key)\n    self[LRU_LIST].removeNode(node)\n  }\n}\n\nclass Entry {\n  constructor (key, value, length, now, maxAge) {\n    this.key = key\n    this.value = value\n    this.length = length\n    this.now = now\n    this.maxAge = maxAge || 0\n  }\n}\n\nconst forEachStep = (self, fn, node, thisp) => {\n  let hit = node.value\n  if (isStale(self, hit)) {\n    del(self, node)\n    if (!self[ALLOW_STALE])\n      hit = undefined\n  }\n  if (hit)\n    fn.call(thisp, hit.value, hit.key, self)\n}\n\nmodule.exports = LRUCache\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,[encoded data, 13820 characters]\n//# sourceURL=webpack-internal:///./node_modules/lru-cache/index.js\n");

/***/ }),

/***/ "./node_modules/node-libs-browser/node_modules/punycode/punycode.js":
/*!**************************************************************************!*\
  !*** ./node_modules/node-libs-browser/node_modules/punycode/punycode.js ***!
  \**************************************************************************/
/*! no static exports found */
/***/ (function(module, exports, __webpack_require__) {

eval("/* WEBPACK VAR INJECTION */(function(module, global) {var __WEBPACK_AMD_DEFINE_RESULT__;/*! https://mths.be/punycode v1.4.1 by @mathias */\n;(function(root) {\n\n\t/** Detect free variables */\n\tvar freeExports =  true && exports &&\n\t\t!exports.nodeType && exports;\n\tvar freeModule =  true && module &&\n\t\t!module.nodeType && module;\n\tvar freeGlobal = typeof global == 'object' && global;\n\tif (\n\t\tfreeGlobal.global === freeGlobal ||\n\t\tfreeGlobal.window === freeGlobal ||\n\t\tfreeGlobal.self === freeGlobal\n\t) {\n\t\troot = freeGlobal;\n\t}\n\n\t/**\n\t * The `punycode` object.\n\t * @name punycode\n\t * @type Object\n\t */\n\tvar punycode,\n\n\t/** Highest positive signed 32-bit float value */\n\tmaxInt = 2147483647, // aka. 0x7FFFFFFF or 2^31-1\n\n\t/** Bootstring parameters */\n\tbase = 36,\n\ttMin = 1,\n\ttMax = 26,\n\tskew = 38,\n\tdamp = 700,\n\tinitialBias = 72,\n\tinitialN = 128, // 0x80\n\tdelimiter = '-', // '\\x2D'\n\n\t/** Regular expressions */\n\tregexPunycode = /^xn--/,\n\tregexNonASCII = /[^\\x20-\\x7E]/, // unprintable ASCII chars + non-ASCII chars\n\tregexSeparators = /[\\x2E\\u3002\\uFF0E\\uFF61]/g, // RFC 3490 separators\n\n\t/** Error messages */\n\terrors = {\n\t\t'overflow': 'Overflow: input needs wider integers to process',\n\t\t'not-basic': 'Illegal input >= 0x80 (not a basic code point)',\n\t\t'invalid-input': 'Invalid input'\n\t},\n\n\t/** Convenience shortcuts */\n\tbaseMinusTMin = base - tMin,\n\tfloor = Math.floor,\n\tstringFromCharCode = String.fromCharCode,\n\n\t/** Temporary variable */\n\tkey;\n\n\t/*--------------------------------------------------------------------------*/\n\n\t/**\n\t * A generic error utility function.\n\t * @private\n\t * @param {String} type The error type.\n\t * @returns {Error} Throws a `RangeError` with the applicable error message.\n\t */\n\tfunction error(type) {\n\t\tthrow new RangeError(errors[type]);\n\t}\n\n\t/**\n\t * A generic `Array#map` utility function.\n\t * @private\n\t * @param {Array} array The array to iterate over.\n\t * @param {Function} callback The function that gets called for every array\n\t * item.\n\t * @returns {Array} A new array of values returned by the callback function.\n\t */\n\tfunction map(array, fn) {\n\t\tvar length = array.length;\n\t\tvar result = [];\n\t\twhile (length--) {\n\t\t\tresult[length] = fn(array[length]);\n\t\t}\n\t\treturn result;\n\t}\n\n\t/**\n\t * A simple `Array#map`-like wrapper to work with domain name strings or email\n\t * addresses.\n\t * @private\n\t * @param {String} domain The domain name or email address.\n\t * @param {Function} callback The function that gets called for every\n\t * character.\n\t * @returns {Array} A new string of characters returned by the callback\n\t * function.\n\t */\n\tfunction mapDomain(string, fn) {\n\t\tvar parts = string.split('@');\n\t\tvar result = '';\n\t\tif (parts.length > 1) {\n\t\t\t// In email addresses, only the domain name should be punycoded. Leave\n\t\t\t// the local part (i.e. everything up to `@`) intact.\n\t\t\tresult = parts[0] + '@';\n\t\t\tstring = parts[1];\n\t\t}\n\t\t// Avoid `split(regex)` for IE8 compatibility. See #17.\n\t\tstring = string.replace(regexSeparators, '\\x2E');\n\t\tvar labels = string.split('.');\n\t\tvar encoded = map(labels, fn).join('.');\n\t\treturn result + encoded;\n\t}\n\n\t/**\n\t * Creates an array containing the numeric code points of each Unicode\n\t * character in the string. While JavaScript uses UCS-2 internally,\n\t * this function will convert a pair of surrogate halves (each of which\n\t * UCS-2 exposes as separate characters) into a single code point,\n\t * matching UTF-16.\n\t * @see `punycode.ucs2.encode`\n\t * @see <https://mathiasbynens.be/notes/javascript-encoding>\n\t * @memberOf punycode.ucs2\n\t * @name decode\n\t * @param {String} string The Unicode input string (UCS-2).\n\t * @returns {Array} The new array of code points.\n\t */\n\tfunction ucs2decode(string) {\n\t\tvar output = [],\n\t\t    counter = 0,\n\t\t    length = string.length,\n\t\t    value,\n\t\t    extra;\n\t\twhile (counter < length) {\n\t\t\tvalue = string.charCodeAt(counter++);\n\t\t\tif (value >= 0xD800 && value <= 0xDBFF && counter < length) {\n\t\t\t\t// high surrogate, and there is a next character\n\t\t\t\textra = string.charCodeAt(counter++);\n\t\t\t\tif ((extra & 0xFC00) == 0xDC00) { // low surrogate\n\t\t\t\t\toutput.push(((value & 0x3FF) << 10) + (extra & 0x3FF) + 0x10000);\n\t\t\t\t} else {\n\t\t\t\t\t// unmatched surrogate; only append this code unit, in case the next\n\t\t\t\t\t// code unit is the high surrogate of a surrogate pair\n\t\t\t\t\toutput.push(value);\n\t\t\t\t\tcounter--;\n\t\t\t\t}\n\t\t\t} else {\n\t\t\t\toutput.push(value);\n\t\t\t}\n\t\t}\n\t\treturn output;\n\t}\n\n\t/**\n\t * Creates a string based on an array of numeric code points.\n\t * @see `punycode.ucs2.decode`\n\t * @memberOf punycode.ucs2\n\t * @name encode\n\t * @param {Array} codePoints The array of numeric code points.\n\t * @returns {String} The new Unicode string (UCS-2).\n\t */\n\tfunction ucs2encode(array) {\n\t\treturn map(array, function(value) {\n\t\t\tvar output = '';\n\t\t\tif (value > 0xFFFF) {\n\t\t\t\tvalue -= 0x10000;\n\t\t\t\toutput += stringFromCharCode(value >>> 10 & 0x3FF | 0xD800);\n\t\t\t\tvalue = 0xDC00 | value & 0x3FF;\n\t\t\t}\n\t\t\toutput += stringFromCharCode(value);\n\t\t\treturn output;\n\t\t}).join('');\n\t}\n\n\t/**\n\t * Converts a basic code point into a digit/integer.\n\t * @see `digitToBasic()`\n\t * @private\n\t * @param {Number} codePoint The basic numeric code point value.\n\t * @returns {Number} The numeric value of a basic code point (for use in\n\t * representing integers) in the range `0` to `base - 1`, or `base` if\n\t * the code point does not represent a value.\n\t */\n\tfunction basicToDigit(codePoint) {\n\t\tif (codePoint - 48 < 10) {\n\t\t\treturn codePoint - 22;\n\t\t}\n\t\tif (codePoint - 65 < 26) {\n\t\t\treturn codePoint - 65;\n\t\t}\n\t\tif (codePoint - 97 < 26) {\n\t\t\treturn codePoint - 97;\n\t\t}\n\t\treturn base;\n\t}\n\n\t/**\n\t * Converts a digit/integer into a basic code point.\n\t * @see `basicToDigit()`\n\t * @private\n\t * @param {Number} digit The numeric value of a basic code point.\n\t * @returns {Number} The basic code point whose value (when used for\n\t * representing integers) is `digit`, which needs to be in the range\n\t * `0` to `base - 1`. If `flag` is non-zero, the uppercase form is\n\t * used; else, the lowercase form is used. The behavior is undefined\n\t * if `flag` is non-zero and `digit` has no uppercase form.\n\t */\n\tfunction digitToBasic(digit, flag) {\n\t\t//  0..25 map to ASCII a..z or A..Z\n\t\t// 26..35 map to ASCII 0..9\n\t\treturn digit + 22 + 75 * (digit < 26) - ((flag != 0) << 5);\n\t}\n\n\t/**\n\t * Bias adaptation function as per section 3.4 of RFC 3492.\n\t * https://tools.ietf.org/html/rfc3492#section-3.4\n\t * @private\n\t */\n\tfunction adapt(delta, numPoints, firstTime) {\n\t\tvar k = 0;\n\t\tdelta = firstTime ? floor(delta / damp) : delta >> 1;\n\t\tdelta += floor(delta / numPoints);\n\t\tfor (/* no initialization */; delta > baseMinusTMin * tMax >> 1; k += base) {\n\t\t\tdelta = floor(delta / baseMinusTMin);\n\t\t}\n\t\treturn floor(k + (baseMinusTMin + 1) * delta / (delta + skew));\n\t}\n\n\t/**\n\t * Converts a Punycode string of ASCII-only symbols to a string of Unicode\n\t * symbols.\n\t * @memberOf punycode\n\t * @param {String} input The Punycode string of ASCII-only symbols.\n\t * @returns {String} The resulting string of Unicode symbols.\n\t */\n\tfunction decode(input) {\n\t\t// Don't use UCS-2\n\t\tvar output = [],\n\t\t    inputLength = input.length,\n\t\t    out,\n\t\t    i = 0,\n\t\t    n = initialN,\n\t\t    bias = initialBias,\n\t\t    basic,\n\t\t    j,\n\t\t    index,\n\t\t    oldi,\n\t\t    w,\n\t\t    k,\n\t\t    digit,\n\t\t    t,\n\t\t    /** Cached calculation results */\n\t\t    baseMinusT;\n\n\t\t// Handle the basic code points: let `basic` be the number of input code\n\t\t// points before the last delimiter, or `0` if there is none, then copy\n\t\t// the first basic code points to the output.\n\n\t\tbasic = input.lastIndexOf(delimiter);\n\t\tif (basic < 0) {\n\t\t\tbasic = 0;\n\t\t}\n\n\t\tfor (j = 0; j < basic; ++j) {\n\t\t\t// if it's not a basic code point\n\t\t\tif (input.charCodeAt(j) >= 0x80) {\n\t\t\t\terror('not-basic');\n\t\t\t}\n\t\t\toutput.push(input.charCodeAt(j));\n\t\t}\n\n\t\t// Main decoding loop: start just after the last delimiter if any basic code\n\t\t// points were copied; start at the beginning otherwise.\n\n\t\tfor (index = basic > 0 ? basic + 1 : 0; index < inputLength; /* no final expression */) {\n\n\t\t\t// `index` is the index of the next character to be consumed.\n\t\t\t// Decode a generalized variable-length integer into `delta`,\n\t\t\t// which gets added to `i`. The overflow checking is easier\n\t\t\t// if we increase `i` as we go, then subtract off its starting\n\t\t\t// value at the end to obtain `delta`.\n\t\t\tfor (oldi = i, w = 1, k = base; /* no condition */; k += base) {\n\n\t\t\t\tif (index >= inputLength) {\n\t\t\t\t\terror('invalid-input');\n\t\t\t\t}\n\n\t\t\t\tdigit = basicToDigit(input.charCodeAt(index++));\n\n\t\t\t\tif (digit >= base || digit > floor((maxInt - i) / w)) {\n\t\t\t\t\terror('overflow');\n\t\t\t\t}\n\n\t\t\t\ti += digit * w;\n\t\t\t\tt = k <= bias ? tMin : (k >= bias + tMax ? tMax : k - bias);\n\n\t\t\t\tif (digit < t) {\n\t\t\t\t\tbreak;\n\t\t\t\t}\n\n\t\t\t\tbaseMinusT = base - t;\n\t\t\t\tif (w > floor(maxInt / baseMinusT)) {\n\t\t\t\t\terror('overflow');\n\t\t\t\t}\n\n\t\t\t\tw *= baseMinusT;\n\n\t\t\t}\n\n\t\t\tout = output.length + 1;\n\t\t\tbias = adapt(i - oldi, out, oldi == 0);\n\n\t\t\t// `i` was supposed to wrap around from `out` to `0`,\n\t\t\t// incrementing `n` each time, so we'll fix that now:\n\t\t\tif (floor(i / out) > maxInt - n) {\n\t\t\t\terror('overflow');\n\t\t\t}\n\n\t\t\tn += floor(i / out);\n\t\t\ti %= out;\n\n\t\t\t// Insert `n` at position `i` of the output\n\t\t\toutput.splice(i++, 0, n);\n\n\t\t}\n\n\t\treturn ucs2encode(output);\n\t}\n\n\t/**\n\t * Converts a string of Unicode symbols (e.g. a domain name label) to a\n\t * Punycode string of ASCII-only symbols.\n\t * @memberOf punycode\n\t * @param {String} input The string of Unicode symbols.\n\t * @returns {String} The resulting Punycode string of ASCII-only symbols.\n\t */\n\tfunction encode(input) {\n\t\tvar n,\n\t\t    delta,\n\t\t    handledCPCount,\n\t\t    basicLength,\n\t\t    bias,\n\t\t    j,\n\t\t    m,\n\t\t    q,\n\t\t    k,\n\t\t    t,\n\t\t    currentValue,\n\t\t    output = [],\n\t\t    /** `inputLength` will hold the number of code points in `input`. */\n\t\t    inputLength,\n\t\t    /** Cached calculation results */\n\t\t    handledCPCountPlusOne,\n\t\t    baseMinusT,\n\t\t    qMinusT;\n\n\t\t// Convert the input in UCS-2 to Unicode\n\t\tinput = ucs2decode(input);\n\n\t\t// Cache the length\n\t\tinputLength = input.length;\n\n\t\t// Initialize the state\n\t\tn = initialN;\n\t\tdelta = 0;\n\t\tbias = initialBias;\n\n\t\t// Handle the basic code points\n\t\tfor (j = 0; j < inputLength; ++j) {\n\t\t\tcurrentValue = input[j];\n\t\t\tif (currentValue < 0x80) {\n\t\t\t\toutput.push(stringFromCharCode(currentValue));\n\t\t\t}\n\t\t}\n\n\t\thandledCPCount = basicLength = output.length;\n\n\t\t// `handledCPCount` is the number of code points that have been handled;\n\t\t// `basicLength` is the number of basic code points.\n\n\t\t// Finish the basic string - if it is not empty - with a delimiter\n\t\tif (basicLength) {\n\t\t\toutput.push(delimiter);\n\t\t}\n\n\t\t// Main encoding loop:\n\t\twhile (handledCPCount < inputLength) {\n\n\t\t\t// All non-basic code points < n have been handled already. Find the next\n\t\t\t// larger one:\n\t\t\tfor (m = maxInt, j = 0; j < inputLength; ++j) {\n\t\t\t\tcurrentValue = input[j];\n\t\t\t\tif (currentValue >= n && currentValue < m) {\n\t\t\t\t\tm = currentValue;\n\t\t\t\t}\n\t\t\t}\n\n\t\t\t// Increase `delta` enough to advance the decoder's <n,i> state to <m,0>,\n\t\t\t// but guard against overflow\n\t\t\thandledCPCountPlusOne = handledCPCount + 1;\n\t\t\tif (m - n > floor((maxInt - delta) / handledCPCountPlusOne)) {\n\t\t\t\terror('overflow');\n\t\t\t}\n\n\t\t\tdelta += (m - n) * handledCPCountPlusOne;\n\t\t\tn = m;\n\n\t\t\tfor (j = 0; j < inputLength; ++j) {\n\t\t\t\tcurrentValue = input[j];\n\n\t\t\t\tif (currentValue < n && ++delta > maxInt) {\n\t\t\t\t\terror('overflow');\n\t\t\t\t}\n\n\t\t\t\tif (currentValue == n) {\n\t\t\t\t\t// Represent delta as a generalized variable-length integer\n\t\t\t\t\tfor (q = delta, k = base; /* no condition */; k += base) {\n\t\t\t\t\t\tt = k <= bias ? tMin : (k >= bias + tMax ? tMax : k - bias);\n\t\t\t\t\t\tif (q < t) {\n\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\t}\n\t\t\t\t\t\tqMinusT = q - t;\n\t\t\t\t\t\tbaseMinusT = base - t;\n\t\t\t\t\t\toutput.push(\n\t\t\t\t\t\t\tstringFromCharCode(digitToBasic(t + qMinusT % baseMinusT, 0))\n\t\t\t\t\t\t);\n\t\t\t\t\t\tq = floor(qMinusT / baseMinusT);\n\t\t\t\t\t}\n\n\t\t\t\t\toutput.push(stringFromCharCode(digitToBasic(q, 0)));\n\t\t\t\t\tbias = adapt(delta, handledCPCountPlusOne, handledCPCount == basicLength);\n\t\t\t\t\tdelta = 0;\n\t\t\t\t\t++handledCPCount;\n\t\t\t\t}\n\t\t\t}\n\n\t\t\t++delta;\n\t\t\t++n;\n\n\t\t}\n\t\treturn output.join('');\n\t}\n\n\t/**\n\t * Converts a Punycode string representing a domain name or an email address\n\t * to Unicode. Only the Punycoded parts of the input will be converted, i.e.\n\t * it doesn't matter if you call it on a string that has already been\n\t * converted to Unicode.\n\t * @memberOf punycode\n\t * @param {String} input The Punycoded domain name or email address to\n\t * convert to Unicode.\n\t * @returns {String} The Unicode representation of the given Punycode\n\t * string.\n\t */\n\tfunction toUnicode(input) {\n\t\treturn mapDomain(input, function(string) {\n\t\t\treturn regexPunycode.test(string)\n\t\t\t\t? decode(string.slice(4).toLowerCase())\n\t\t\t\t: string;\n\t\t});\n\t}\n\n\t/**\n\t * Converts a Unicode string representing a domain name or an email address to\n\t * Punycode. Only the non-ASCII parts of the domain name will be converted,\n\t * i.e. it doesn't matter if you call it with a domain that's already in\n\t * ASCII.\n\t * @memberOf punycode\n\t * @param {String} input The domain name or email address to convert, as a\n\t * Unicode string.\n\t * @returns {String} The Punycode representation of the given domain name or\n\t * email address.\n\t */\n\tfunction toASCII(input) {\n\t\treturn mapDomain(input, function(string) {\n\t\t\treturn regexNonASCII.test(string)\n\t\t\t\t? 'xn--' + encode(string)\n\t\t\t\t: string;\n\t\t});\n\t}\n\n\t/*--------------------------------------------------------------------------*/\n\n\t/** Define the public API */\n\tpunycode = {\n\t\t/**\n\t\t * A string representing the current Punycode.js version number.\n\t\t * @memberOf punycode\n\t\t * @type String\n\t\t */\n\t\t'version': '1.4.1',\n\t\t/**\n\t\t * An object of methods to convert from JavaScript's internal character\n\t\t * representation (UCS-2) to Unicode code points, and back.\n\t\t * @see <https://mathiasbynens.be/notes/javascript-encoding>\n\t\t * @memberOf punycode\n\t\t * @type Object\n\t\t */\n\t\t'ucs2': {\n\t\t\t'decode': ucs2decode,\n\t\t\t'encode': ucs2encode\n\t\t},\n\t\t'decode': decode,\n\t\t'encode': encode,\n\t\t'toASCII': toASCII,\n\t\t'toUnicode': toUnicode\n\t};\n\n\t/** Expose `punycode` */\n\t// Some AMD build optimizers, like r.js, check for specific condition patterns\n\t// like the following:\n\tif (\n\t\ttrue\n\t) {\n\t\t!(__WEBPACK_AMD_DEFINE_RESULT__ = (function() {\n\t\t\treturn punycode;\n\t\t}).call(exports, __webpack_require__, exports, module),\n\t\t\t\t__WEBPACK_AMD_DEFINE_RESULT__ !== undefined && (module.exports = __WEBPACK_AMD_DEFINE_RESULT__));\n\t} else {}\n\n}(this));\n\n/* WEBPACK VAR INJECTION */}.call(this, __webpack_require__(/*! ./../../../webpack/buildin/module.js */ \"./node_modules/webpack/buildin/module.js\")(module), __webpack_require__(/*! ./../../../webpack/buildin/global.js */ \"./node_modules/webpack/buildin/global.js\")))//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,[encoded data, 25412 characters]\n//# sourceURL=webpack-internal:///./node_modules/node-libs-browser/node_modules/punycode/punycode.js\n");

/***/ }),

/***/ "./node_modules/querystring-es3/decode.js":
/*!************************************************!*\
  !*** ./node_modules/querystring-es3/decode.js ***!
  \************************************************/
/*! no static exports found */
/***/ (function(module, exports, __webpack_require__) {

"use strict";
eval("// Copyright Joyent, Inc. and other Node contributors.\n//\n// Permission is hereby granted, free of charge, to any person obtaining a\n// copy of this software and associated documentation files (the\n// \"Software\"), to deal in the Software without restriction, including\n// without limitation the rights to use, copy, modify, merge, publish,\n// distribute, sublicense, and/or sell copies of the Software, and to permit\n// persons to whom the Software is furnished to do so, subject to the\n// following conditions:\n//\n// The above copyright notice and this permission notice shall be included\n// in all copies or substantial portions of the Software.\n//\n// THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS\n// OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF\n// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN\n// NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM,\n// DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR\n// OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE\n// USE OR OTHER DEALINGS IN THE SOFTWARE.\n\n\n\n// If obj.hasOwnProperty has been overridden, then calling\n// obj.hasOwnProperty(prop) will break.\n// See: https://github.com/joyent/node/issues/1707\nfunction hasOwnProperty(obj, prop) {\n  return Object.prototype.hasOwnProperty.call(obj, prop);\n}\n\nmodule.exports = function(qs, sep, eq, options) {\n  sep = sep || '&';\n  eq = eq || '=';\n  var obj = {};\n\n  if (typeof qs !== 'string' || qs.length === 0) {\n    return obj;\n  }\n\n  var regexp = /\\+/g;\n  qs = qs.split(sep);\n\n  var maxKeys = 1000;\n  if (options && typeof options.maxKeys === 'number') {\n    maxKeys = options.maxKeys;\n  }\n\n  var len = qs.length;\n  // maxKeys <= 0 means that we should not limit keys count\n  if (maxKeys > 0 && len > maxKeys) {\n    len = maxKeys;\n  }\n\n  for (var i = 0; i < len; ++i) {\n    var x = qs[i].replace(regexp, '%20'),\n        idx = x.indexOf(eq),\n        kstr, vstr, k, v;\n\n    if (idx >= 0) {\n      kstr = x.substr(0, idx);\n      vstr = x.substr(idx + 1);\n    } else {\n      kstr = x;\n      vstr = '';\n    }\n\n    k = decodeURIComponent(kstr);\n    v = decodeURIComponent(vstr);\n\n    if (!hasOwnProperty(obj, k)) {\n      obj[k] = v;\n    } else if (isArray(obj[k])) {\n      obj[k].push(v);\n    } else {\n      obj[k] = [obj[k], v];\n    }\n  }\n\n  return obj;\n};\n\nvar isArray = Array.isArray || function (xs) {\n  return Object.prototype.toString.call(xs) === '[object Array]';\n};\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,[encoded data, 4280 characters]\n//# sourceURL=webpack-internal:///./node_modules/querystring-es3/decode.js\n");

/***/ }),

/***/ "./node_modules/querystring-es3/encode.js":
/*!************************************************!*\
  !*** ./node_modules/querystring-es3/encode.js ***!
  \************************************************/
/*! no static exports found */
/***/ (function(module, exports, __webpack_require__) {

"use strict";
eval("// Copyright Joyent, Inc. and other Node contributors.\n//\n// Permission is hereby granted, free of charge, to any person obtaining a\n// copy of this software and associated documentation files (the\n// \"Software\"), to deal in the Software without restriction, including\n// without limitation the rights to use, copy, modify, merge, publish,\n// distribute, sublicense, and/or sell copies of the Software, and to permit\n// persons to whom the Software is furnished to do so, subject to the\n// following conditions:\n//\n// The above copyright notice and this permission notice shall be included\n// in all copies or substantial portions of the Software.\n//\n// THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS\n// OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF\n// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN\n// NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM,\n// DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR\n// OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE\n// USE OR OTHER DEALINGS IN THE SOFTWARE.\n\n\n\nvar stringifyPrimitive = function(v) {\n  switch (typeof v) {\n    case 'string':\n      return v;\n\n    case 'boolean':\n      return v ? 'true' : 'false';\n\n    case 'number':\n      return isFinite(v) ? v : '';\n\n    default:\n      return '';\n  }\n};\n\nmodule.exports = function(obj, sep, eq, name) {\n  sep = sep || '&';\n  eq = eq || '=';\n  if (obj === null) {\n    obj = undefined;\n  }\n\n  if (typeof obj === 'object') {\n    return map(objectKeys(obj), function(k) {\n      var ks = encodeURIComponent(stringifyPrimitive(k)) + eq;\n      if (isArray(obj[k])) {\n        return map(obj[k], function(v) {\n          return ks + encodeURIComponent(stringifyPrimitive(v));\n        }).join(sep);\n      } else {\n        return ks + encodeURIComponent(stringifyPrimitive(obj[k]));\n      }\n    }).join(sep);\n\n  }\n\n  if (!name) return '';\n  return encodeURIComponent(stringifyPrimitive(name)) + eq +\n         encodeURIComponent(stringifyPrimitive(obj));\n};\n\nvar isArray = Array.isArray || function (xs) {\n  return Object.prototype.toString.call(xs) === '[object Array]';\n};\n\nfunction map (xs, f) {\n  if (xs.map) return xs.map(f);\n  var res = [];\n  for (var i = 0; i < xs.length; i++) {\n    res.push(f(xs[i], i));\n  }\n  return res;\n}\n\nvar objectKeys = Object.keys || function (obj) {\n  var res = [];\n  for (var key in obj) {\n    if (Object.prototype.hasOwnProperty.call(obj, key)) res.push(key);\n  }\n  return res;\n};\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,[encoded data, 4332 characters]\n//# sourceURL=webpack-internal:///./node_modules/querystring-es3/encode.js\n");

/***/ }),

/***/ "./node_modules/querystring-es3/index.js":
/*!***********************************************!*\
  !*** ./node_modules/querystring-es3/index.js ***!
  \***********************************************/
/*! no static exports found */
/***/ (function(module, exports, __webpack_require__) {

"use strict";
eval("\n\nexports.decode = exports.parse = __webpack_require__(/*! ./decode */ \"./node_modules/querystring-es3/decode.js\");\nexports.encode = exports.stringify = __webpack_require__(/*! ./encode */ \"./node_modules/querystring-es3/encode.js\");\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvcXVlcnlzdHJpbmctZXMzL2luZGV4LmpzLmpzIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL3F1ZXJ5c3RyaW5nLWVzMy9pbmRleC5qcz9iMzgzIl0sInNvdXJjZXNDb250ZW50IjpbIid1c2Ugc3RyaWN0JztcblxuZXhwb3J0cy5kZWNvZGUgPSBleHBvcnRzLnBhcnNlID0gcmVxdWlyZSgnLi9kZWNvZGUnKTtcbmV4cG9ydHMuZW5jb2RlID0gZXhwb3J0cy5zdHJpbmdpZnkgPSByZXF1aXJlKCcuL2VuY29kZScpO1xuIl0sIm1hcHBpbmdzIjoiQUFBQTtBQUNBO0FBQ0E7QUFDQTsiLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///./node_modules/querystring-es3/index.js\n");

/***/ }),

/***/ "./node_modules/url/url.js":
/*!*********************************!*\
  !*** ./node_modules/url/url.js ***!
  \*********************************/
/*! no static exports found */
/***/ (function(module, exports, __webpack_require__) {

"use strict";
eval("// Copyright Joyent, Inc. and other Node contributors.\n//\n// Permission is hereby granted, free of charge, to any person obtaining a\n// copy of this software and associated documentation files (the\n// \"Software\"), to deal in the Software without restriction, including\n// without limitation the rights to use, copy, modify, merge, publish,\n// distribute, sublicense, and/or sell copies of the Software, and to permit\n// persons to whom the Software is furnished to do so, subject to the\n// following conditions:\n//\n// The above copyright notice and this permission notice shall be included\n// in all copies or substantial portions of the Software.\n//\n// THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS\n// OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF\n// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN\n// NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM,\n// DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR\n// OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE\n// USE OR OTHER DEALINGS IN THE SOFTWARE.\n\n\n\nvar punycode = __webpack_require__(/*! punycode */ \"./node_modules/node-libs-browser/node_modules/punycode/punycode.js\");\nvar util = __webpack_require__(/*! ./util */ \"./node_modules/url/util.js\");\n\nexports.parse = urlParse;\nexports.resolve = urlResolve;\nexports.resolveObject = urlResolveObject;\nexports.format = urlFormat;\n\nexports.Url = Url;\n\nfunction Url() {\n  this.protocol = null;\n  this.slashes = null;\n  this.auth = null;\n  this.host = null;\n  this.port = null;\n  this.hostname = null;\n  this.hash = null;\n  this.search = null;\n  this.query = null;\n  this.pathname = null;\n  this.path = null;\n  this.href = null;\n}\n\n// Reference: RFC 3986, RFC 1808, RFC 2396\n\n// define these here so at least they only have to be\n// compiled once on the first module load.\nvar protocolPattern = /^([a-z0-9.+-]+:)/i,\n    portPattern = /:[0-9]*$/,\n\n    // Special case for a simple path URL\n    simplePathPattern = /^(\\/\\/?(?!\\/)[^\\?\\s]*)(\\?[^\\s]*)?$/,\n\n    // RFC 2396: characters reserved for delimiting URLs.\n    // We actually just auto-escape these.\n    delims = ['<', '>', '\"', '`', ' ', '\\r', '\\n', '\\t'],\n\n    // RFC 2396: characters not allowed for various reasons.\n    unwise = ['{', '}', '|', '\\\\', '^', '`'].concat(delims),\n\n    // Allowed by RFCs, but cause of XSS attacks.  Always escape these.\n    autoEscape = ['\\''].concat(unwise),\n    // Characters that are never ever allowed in a hostname.\n    // Note that any invalid chars are also handled, but these\n    // are the ones that are *expected* to be seen, so we fast-path\n    // them.\n    nonHostChars = ['%', '/', '?', ';', '#'].concat(autoEscape),\n    hostEndingChars = ['/', '?', '#'],\n    hostnameMaxLen = 255,\n    hostnamePartPattern = /^[+a-z0-9A-Z_-]{0,63}$/,\n    hostnamePartStart = /^([+a-z0-9A-Z_-]{0,63})(.*)$/,\n    // protocols that can allow \"unsafe\" and \"unwise\" chars.\n    unsafeProtocol = {\n      'javascript': true,\n      'javascript:': true\n    },\n    // protocols that never have a hostname.\n    hostlessProtocol = {\n      'javascript': true,\n      'javascript:': true\n    },\n    // protocols that always contain a // bit.\n    slashedProtocol = {\n      'http': true,\n      'https': true,\n      'ftp': true,\n      'gopher': true,\n      'file': true,\n      'http:': true,\n      'https:': true,\n      'ftp:': true,\n      'gopher:': true,\n      'file:': true\n    },\n    querystring = __webpack_require__(/*! querystring */ \"./node_modules/querystring-es3/index.js\");\n\nfunction urlParse(url, parseQueryString, slashesDenoteHost) {\n  if (url && util.isObject(url) && url instanceof Url) return url;\n\n  var u = new Url;\n  u.parse(url, parseQueryString, slashesDenoteHost);\n  return u;\n}\n\nUrl.prototype.parse = function(url, parseQueryString, slashesDenoteHost) {\n  if (!util.isString(url)) {\n    throw new TypeError(\"Parameter 'url' must be a string, not \" + typeof url);\n  }\n\n  // Copy chrome, IE, opera backslash-handling behavior.\n  // Back slashes before the query string get converted to forward slashes\n  // See: https://code.google.com/p/chromium/issues/detail?id=25916\n  var queryIndex = url.indexOf('?'),\n      splitter =\n          (queryIndex !== -1 && queryIndex < url.indexOf('#')) ? '?' : '#',\n      uSplit = url.split(splitter),\n      slashRegex = /\\\\/g;\n  uSplit[0] = uSplit[0].replace(slashRegex, '/');\n  url = uSplit.join(splitter);\n\n  var rest = url;\n\n  // trim before proceeding.\n  // This is to support parse stuff like \"  http://foo.com  \\n\"\n  rest = rest.trim();\n\n  if (!slashesDenoteHost && url.split('#').length === 1) {\n    // Try fast path regexp\n    var simplePath = simplePathPattern.exec(rest);\n    if (simplePath) {\n      this.path = rest;\n      this.href = rest;\n      this.pathname = simplePath[1];\n      if (simplePath[2]) {\n        this.search = simplePath[2];\n        if (parseQueryString) {\n          this.query = querystring.parse(this.search.substr(1));\n        } else {\n          this.query = this.search.substr(1);\n        }\n      } else if (parseQueryString) {\n        this.search = '';\n        this.query = {};\n      }\n      return this;\n    }\n  }\n\n  var proto = protocolPattern.exec(rest);\n  if (proto) {\n    proto = proto[0];\n    var lowerProto = proto.toLowerCase();\n    this.protocol = lowerProto;\n    rest = rest.substr(proto.length);\n  }\n\n  // figure out if it's got a host\n  // user@server is *always* interpreted as a hostname, and url\n  // resolution will treat //foo/bar as host=foo,path=bar because that's\n  // how the browser resolves relative URLs.\n  if (slashesDenoteHost || proto || rest.match(/^\\/\\/[^@\\/]+@[^@\\/]+/)) {\n    var slashes = rest.substr(0, 2) === '//';\n    if (slashes && !(proto && hostlessProtocol[proto])) {\n      rest = rest.substr(2);\n      this.slashes = true;\n    }\n  }\n\n  if (!hostlessProtocol[proto] &&\n      (slashes || (proto && !slashedProtocol[proto]))) {\n\n    // there's a hostname.\n    // the first instance of /, ?, ;, or # ends the host.\n    //\n    // If there is an @ in the hostname, then non-host chars *are* allowed\n    // to the left of the last @ sign, unless some host-ending character\n    // comes *before* the @-sign.\n    // URLs are obnoxious.\n    //\n    // ex:\n    // http://a@b@c/ => user:a@b host:c\n    // http://a@b?@c => user:a host:c path:/?@c\n\n    // v0.12 TODO(isaacs): This is not quite how Chrome does things.\n    // Review our test case against browsers more comprehensively.\n\n    // find the first instance of any hostEndingChars\n    var hostEnd = -1;\n    for (var i = 0; i < hostEndingChars.length; i++) {\n      var hec = rest.indexOf(hostEndingChars[i]);\n      if (hec !== -1 && (hostEnd === -1 || hec < hostEnd))\n        hostEnd = hec;\n    }\n\n    // at this point, either we have an explicit point where the\n    // auth portion cannot go past, or the last @ char is the decider.\n    var auth, atSign;\n    if (hostEnd === -1) {\n      // atSign can be anywhere.\n      atSign = rest.lastIndexOf('@');\n    } else {\n      // atSign must be in auth portion.\n      // http://a@b/c@d => host:b auth:a path:/c@d\n      atSign = rest.lastIndexOf('@', hostEnd);\n    }\n\n    // Now we have a portion which is definitely the auth.\n    // Pull that off.\n    if (atSign !== -1) {\n      auth = rest.slice(0, atSign);\n      rest = rest.slice(atSign + 1);\n      this.auth = decodeURIComponent(auth);\n    }\n\n    // the host is the remaining to the left of the first non-host char\n    hostEnd = -1;\n    for (var i = 0; i < nonHostChars.length; i++) {\n      var hec = rest.indexOf(nonHostChars[i]);\n      if (hec !== -1 && (hostEnd === -1 || hec < hostEnd))\n        hostEnd = hec;\n    }\n    // if we still have not hit it, then the entire thing is a host.\n    if (hostEnd === -1)\n      hostEnd = rest.length;\n\n    this.host = rest.slice(0, hostEnd);\n    rest = rest.slice(hostEnd);\n\n    // pull out port.\n    this.parseHost();\n\n    // we've indicated that there is a hostname,\n    // so even if it's empty, it has to be present.\n    this.hostname = this.hostname || '';\n\n    // if hostname begins with [ and ends with ]\n    // assume that it's an IPv6 address.\n    var ipv6Hostname = this.hostname[0] === '[' &&\n        this.hostname[this.hostname.length - 1] === ']';\n\n    // validate a little.\n    if (!ipv6Hostname) {\n      var hostparts = this.hostname.split(/\\./);\n      for (var i = 0, l = hostparts.length; i < l; i++) {\n        var part = hostparts[i];\n        if (!part) continue;\n        if (!part.match(hostnamePartPattern)) {\n          var newpart = '';\n          for (var j = 0, k = part.length; j < k; j++) {\n            if (part.charCodeAt(j) > 127) {\n              // we replace non-ASCII char with a temporary placeholder\n              // we need this to make sure size of hostname is not\n              // broken by replacing non-ASCII by nothing\n              newpart += 'x';\n            } else {\n              newpart += part[j];\n            }\n          }\n          // we test again with ASCII char only\n          if (!newpart.match(hostnamePartPattern)) {\n            var validParts = hostparts.slice(0, i);\n            var notHost = hostparts.slice(i + 1);\n            var bit = part.match(hostnamePartStart);\n            if (bit) {\n              validParts.push(bit[1]);\n              notHost.unshift(bit[2]);\n            }\n            if (notHost.length) {\n              rest = '/' + notHost.join('.') + rest;\n            }\n            this.hostname = validParts.join('.');\n            break;\n          }\n        }\n      }\n    }\n\n    if (this.hostname.length > hostnameMaxLen) {\n      this.hostname = '';\n    } else {\n      // hostnames are always lower case.\n      this.hostname = this.hostname.toLowerCase();\n    }\n\n    if (!ipv6Hostname) {\n      // IDNA Support: Returns a punycoded representation of \"domain\".\n      // It only converts parts of the domain name that\n      // have non-ASCII characters, i.e. it doesn't matter if\n      // you call it with a domain that already is ASCII-only.\n      this.hostname = punycode.toASCII(this.hostname);\n    }\n\n    var p = this.port ? ':' + this.port : '';\n    var h = this.hostname || '';\n    this.host = h + p;\n    this.href += this.host;\n\n    // strip [ and ] from the hostname\n    // the host field still retains them, though\n    if (ipv6Hostname) {\n      this.hostname = this.hostname.substr(1, this.hostname.length - 2);\n      if (rest[0] !== '/') {\n        rest = '/' + rest;\n      }\n    }\n  }\n\n  // now rest is set to the post-host stuff.\n  // chop off any delim chars.\n  if (!unsafeProtocol[lowerProto]) {\n\n    // First, make 100% sure that any \"autoEscape\" chars get\n    // escaped, even if encodeURIComponent doesn't think they\n    // need to be.\n    for (var i = 0, l = autoEscape.length; i < l; i++) {\n      var ae = autoEscape[i];\n      if (rest.indexOf(ae) === -1)\n        continue;\n      var esc = encodeURIComponent(ae);\n      if (esc === ae) {\n        esc = escape(ae);\n      }\n      rest = rest.split(ae).join(esc);\n    }\n  }\n\n\n  // chop off from the tail first.\n  var hash = rest.indexOf('#');\n  if (hash !== -1) {\n    // got a fragment string.\n    this.hash = rest.substr(hash);\n    rest = rest.slice(0, hash);\n  }\n  var qm = rest.indexOf('?');\n  if (qm !== -1) {\n    this.search = rest.substr(qm);\n    this.query = rest.substr(qm + 1);\n    if (parseQueryString) {\n      this.query = querystring.parse(this.query);\n    }\n    rest = rest.slice(0, qm);\n  } else if (parseQueryString) {\n    // no query string, but parseQueryString still requested\n    this.search = '';\n    this.query = {};\n  }\n  if (rest) this.pathname = rest;\n  if (slashedProtocol[lowerProto] &&\n      this.hostname && !this.pathname) {\n    this.pathname = '/';\n  }\n\n  //to support http.request\n  if (this.pathname || this.search) {\n    var p = this.pathname || '';\n    var s = this.search || '';\n    this.path = p + s;\n  }\n\n  // finally, reconstruct the href based on what has been validated.\n  this.href = this.format();\n  return this;\n};\n\n// format a parsed object into a url string\nfunction urlFormat(obj) {\n  // ensure it's an object, and not a string url.\n  // If it's an obj, this is a no-op.\n  // this way, you can call url_format() on strings\n  // to clean up potentially wonky urls.\n  if (util.isString(obj)) obj = urlParse(obj);\n  if (!(obj instanceof Url)) return Url.prototype.format.call(obj);\n  return obj.format();\n}\n\nUrl.prototype.format = function() {\n  var auth = this.auth || '';\n  if (auth) {\n    auth = encodeURIComponent(auth);\n    auth = auth.replace(/%3A/i, ':');\n    auth += '@';\n  }\n\n  var protocol = this.protocol || '',\n      pathname = this.pathname || '',\n      hash = this.hash || '',\n      host = false,\n      query = '';\n\n  if (this.host) {\n    host = auth + this.host;\n  } else if (this.hostname) {\n    host = auth + (this.hostname.indexOf(':') === -1 ?\n        this.hostname :\n        '[' + this.hostname + ']');\n    if (this.port) {\n      host += ':' + this.port;\n    }\n  }\n\n  if (this.query &&\n      util.isObject(this.query) &&\n      Object.keys(this.query).length) {\n    query = querystring.stringify(this.query);\n  }\n\n  var search = this.search || (query && ('?' + query)) || '';\n\n  if (protocol && protocol.substr(-1) !== ':') protocol += ':';\n\n  // only the slashedProtocols get the //.  Not mailto:, xmpp:, etc.\n  // unless they had them to begin with.\n  if (this.slashes ||\n      (!protocol || slashedProtocol[protocol]) && host !== false) {\n    host = '//' + (host || '');\n    if (pathname && pathname.charAt(0) !== '/') pathname = '/' + pathname;\n  } else if (!host) {\n    host = '';\n  }\n\n  if (hash && hash.charAt(0) !== '#') hash = '#' + hash;\n  if (search && search.charAt(0) !== '?') search = '?' + search;\n\n  pathname = pathname.replace(/[?#]/g, function(match) {\n    return encodeURIComponent(match);\n  });\n  search = search.replace('#', '%23');\n\n  return protocol + host + pathname + search + hash;\n};\n\nfunction urlResolve(source, relative) {\n  return urlParse(source, false, true).resolve(relative);\n}\n\nUrl.prototype.resolve = function(relative) {\n  return this.resolveObject(urlParse(relative, false, true)).format();\n};\n\nfunction urlResolveObject(source, relative) {\n  if (!source) return relative;\n  return urlParse(source, false, true).resolveObject(relative);\n}\n\nUrl.prototype.resolveObject = function(relative) {\n  if (util.isString(relative)) {\n    var rel = new Url();\n    rel.parse(relative, false, true);\n    relative = rel;\n  }\n\n  var result = new Url();\n  var tkeys = Object.keys(this);\n  for (var tk = 0; tk < tkeys.length; tk++) {\n    var tkey = tkeys[tk];\n    result[tkey] = this[tkey];\n  }\n\n  // hash is always overridden, no matter what.\n  // even href=\"\" will remove it.\n  result.hash = relative.hash;\n\n  // if the relative url is empty, then there's nothing left to do here.\n  if (relative.href === '') {\n    result.href = result.format();\n    return result;\n  }\n\n  // hrefs like //foo/bar always cut to the protocol.\n  if (relative.slashes && !relative.protocol) {\n    // take everything except the protocol from relative\n    var rkeys = Object.keys(relative);\n    for (var rk = 0; rk < rkeys.length; rk++) {\n      var rkey = rkeys[rk];\n      if (rkey !== 'protocol')\n        result[rkey] = relative[rkey];\n    }\n\n    //urlParse appends trailing / to urls like http://www.example.com\n    if (slashedProtocol[result.protocol] &&\n        result.hostname && !result.pathname) {\n      result.path = result.pathname = '/';\n    }\n\n    result.href = result.format();\n    return result;\n  }\n\n  if (relative.protocol && relative.protocol !== result.protocol) {\n    // if it's a known url protocol, then changing\n    // the protocol does weird things\n    // first, if it's not file:, then we MUST have a host,\n    // and if there was a path\n    // to begin with, then we MUST have a path.\n    // if it is file:, then the host is dropped,\n    // because that's known to be hostless.\n    // anything else is assumed to be absolute.\n    if (!slashedProtocol[relative.protocol]) {\n      var keys = Object.keys(relative);\n      for (var v = 0; v < keys.length; v++) {\n        var k = keys[v];\n        result[k] = relative[k];\n      }\n      result.href = result.format();\n      return result;\n    }\n\n    result.protocol = relative.protocol;\n    if (!relative.host && !hostlessProtocol[relative.protocol]) {\n      var relPath = (relative.pathname || '').split('/');\n      while (relPath.length && !(relative.host = relPath.shift()));\n      if (!relative.host) relative.host = '';\n      if (!relative.hostname) relative.hostname = '';\n      if (relPath[0] !== '') relPath.unshift('');\n      if (relPath.length < 2) relPath.unshift('');\n      result.pathname = relPath.join('/');\n    } else {\n      result.pathname = relative.pathname;\n    }\n    result.search = relative.search;\n    result.query = relative.query;\n    result.host = relative.host || '';\n    result.auth = relative.auth;\n    result.hostname = relative.hostname || relative.host;\n    result.port = relative.port;\n    // to support http.request\n    if (result.pathname || result.search) {\n      var p = result.pathname || '';\n      var s = result.search || '';\n      result.path = p + s;\n    }\n    result.slashes = result.slashes || relative.slashes;\n    result.href = result.format();\n    return result;\n  }\n\n  var isSourceAbs = (result.pathname && result.pathname.charAt(0) === '/'),\n      isRelAbs = (\n          relative.host ||\n          relative.pathname && relative.pathname.charAt(0) === '/'\n      ),\n      mustEndAbs = (isRelAbs || isSourceAbs ||\n                    (result.host && relative.pathname)),\n      removeAllDots = mustEndAbs,\n      srcPath = result.pathname && result.pathname.split('/') || [],\n      relPath = relative.pathname && relative.pathname.split('/') || [],\n      psychotic = result.protocol && !slashedProtocol[result.protocol];\n\n  // if the url is a non-slashed url, then relative\n  // links like ../.. should be able\n  // to crawl up to the hostname, as well.  This is strange.\n  // result.protocol has already been set by now.\n  // Later on, put the first path part into the host field.\n  if (psychotic) {\n    result.hostname = '';\n    result.port = null;\n    if (result.host) {\n      if (srcPath[0] === '') srcPath[0] = result.host;\n      else srcPath.unshift(result.host);\n    }\n    result.host = '';\n    if (relative.protocol) {\n      relative.hostname = null;\n      relative.port = null;\n      if (relative.host) {\n        if (relPath[0] === '') relPath[0] = relative.host;\n        else relPath.unshift(relative.host);\n      }\n      relative.host = null;\n    }\n    mustEndAbs = mustEndAbs && (relPath[0] === '' || srcPath[0] === '');\n  }\n\n  if (isRelAbs) {\n    // it's absolute.\n    result.host = (relative.host || relative.host === '') ?\n                  relative.host : result.host;\n    result.hostname = (relative.hostname || relative.hostname === '') ?\n                      relative.hostname : result.hostname;\n    result.search = relative.search;\n    result.query = relative.query;\n    srcPath = relPath;\n    // fall through to the dot-handling below.\n  } else if (relPath.length) {\n    // it's relative\n    // throw away the existing file, and take the new path instead.\n    if (!srcPath) srcPath = [];\n    srcPath.pop();\n    srcPath = srcPath.concat(relPath);\n    result.search = relative.search;\n    result.query = relative.query;\n  } else if (!util.isNullOrUndefined(relative.search)) {\n    // just pull out the search.\n    // like href='?foo'.\n    // Put this after the other two cases because it simplifies the booleans\n    if (psychotic) {\n      result.hostname = result.host = srcPath.shift();\n      //occationaly the auth can get stuck only in host\n      //this especially happens in cases like\n      //url.resolveObject('mailto:local1@domain1', 'local2@domain2')\n      var authInHost = result.host && result.host.indexOf('@') > 0 ?\n                       result.host.split('@') : false;\n      if (authInHost) {\n        result.auth = authInHost.shift();\n        result.host = result.hostname = authInHost.shift();\n      }\n    }\n    result.search = relative.search;\n    result.query = relative.query;\n    //to support http.request\n    if (!util.isNull(result.pathname) || !util.isNull(result.search)) {\n      result.path = (result.pathname ? result.pathname : '') +\n                    (result.search ? result.search : '');\n    }\n    result.href = result.format();\n    return result;\n  }\n\n  if (!srcPath.length) {\n    // no path at all.  easy.\n    // we've already handled the other stuff above.\n    result.pathname = null;\n    //to support http.request\n    if (result.search) {\n      result.path = '/' + result.search;\n    } else {\n      result.path = null;\n    }\n    result.href = result.format();\n    return result;\n  }\n\n  // if a url ENDs in . or .., then it must get a trailing slash.\n  // however, if it ends in anything else non-slashy,\n  // then it must NOT get a trailing slash.\n  var last = srcPath.slice(-1)[0];\n  var hasTrailingSlash = (\n      (result.host || relative.host || srcPath.length > 1) &&\n      (last === '.' || last === '..') || last === '');\n\n  // strip single dots, resolve double dots to parent dir\n  // if the path tries to go above the root, `up` ends up > 0\n  var up = 0;\n  for (var i = srcPath.length; i >= 0; i--) {\n    last = srcPath[i];\n    if (last === '.') {\n      srcPath.splice(i, 1);\n    } else if (last === '..') {\n      srcPath.splice(i, 1);\n      up++;\n    } else if (up) {\n      srcPath.splice(i, 1);\n      up--;\n    }\n  }\n\n  // if the path is allowed to go above the root, restore leading ..s\n  if (!mustEndAbs && !removeAllDots) {\n    for (; up--; up) {\n      srcPath.unshift('..');\n    }\n  }\n\n  if (mustEndAbs && srcPath[0] !== '' &&\n      (!srcPath[0] || srcPath[0].charAt(0) !== '/')) {\n    srcPath.unshift('');\n  }\n\n  if (hasTrailingSlash && (srcPath.join('/').substr(-1) !== '/')) {\n    srcPath.push('');\n  }\n\n  var isAbsolute = srcPath[0] === '' ||\n      (srcPath[0] && srcPath[0].charAt(0) === '/');\n\n  // put the host back\n  if (psychotic) {\n    result.hostname = result.host = isAbsolute ? '' :\n                                    srcPath.length ? srcPath.shift() : '';\n    //occationaly the auth can get stuck only in host\n    //this especially happens in cases like\n    //url.resolveObject('mailto:local1@domain1', 'local2@domain2')\n    var authInHost = result.host && result.host.indexOf('@') > 0 ?\n                     result.host.split('@') : false;\n    if (authInHost) {\n      result.auth = authInHost.shift();\n      result.host = result.hostname = authInHost.shift();\n    }\n  }\n\n  mustEndAbs = mustEndAbs || (result.host && srcPath.length);\n\n  if (mustEndAbs && !isAbsolute) {\n    srcPath.unshift('');\n  }\n\n  if (!srcPath.length) {\n    result.pathname = null;\n    result.path = null;\n  } else {\n    result.pathname = srcPath.join('/');\n  }\n\n  //to support request.http\n  if (!util.isNull(result.pathname) || !util.isNull(result.search)) {\n    result.path = (result.pathname ? result.pathname : '') +\n                  (result.search ? result.search : '');\n  }\n  result.auth = relative.auth || result.auth;\n  result.slashes = result.slashes || relative.slashes;\n  result.href = result.format();\n  return result;\n};\n\nUrl.prototype.parseHost = function() {\n  var host = this.host;\n  var port = portPattern.exec(host);\n  if (port) {\n    port = port[0];\n    if (port !== ':') {\n      this.port = port.substr(1);\n    }\n    host = host.substr(0, host.length - port.length);\n  }\n  if (host) this.hostname = host;\n};\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,[encoded data, 37212 characters]\n//# sourceURL=webpack-internal:///./node_modules/url/url.js\n");

/***/ }),

/***/ "./node_modules/url/util.js":
/*!**********************************!*\
  !*** ./node_modules/url/util.js ***!
  \**********************************/
/*! no static exports found */
/***/ (function(module, exports, __webpack_require__) {

"use strict";
eval("\n\nmodule.exports = {\n  isString: function(arg) {\n    return typeof(arg) === 'string';\n  },\n  isObject: function(arg) {\n    return typeof(arg) === 'object' && arg !== null;\n  },\n  isNull: function(arg) {\n    return arg === null;\n  },\n  isNullOrUndefined: function(arg) {\n    return arg == null;\n  }\n};\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvdXJsL3V0aWwuanMuanMiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvdXJsL3V0aWwuanM/MzVlOCJdLCJzb3VyY2VzQ29udGVudCI6WyIndXNlIHN0cmljdCc7XG5cbm1vZHVsZS5leHBvcnRzID0ge1xuICBpc1N0cmluZzogZnVuY3Rpb24oYXJnKSB7XG4gICAgcmV0dXJuIHR5cGVvZihhcmcpID09PSAnc3RyaW5nJztcbiAgfSxcbiAgaXNPYmplY3Q6IGZ1bmN0aW9uKGFyZykge1xuICAgIHJldHVybiB0eXBlb2YoYXJnKSA9PT0gJ29iamVjdCcgJiYgYXJnICE9PSBudWxsO1xuICB9LFxuICBpc051bGw6IGZ1bmN0aW9uKGFyZykge1xuICAgIHJldHVybiBhcmcgPT09IG51bGw7XG4gIH0sXG4gIGlzTnVsbE9yVW5kZWZpbmVkOiBmdW5jdGlvbihhcmcpIHtcbiAgICByZXR1cm4gYXJnID09IG51bGw7XG4gIH1cbn07XG4iXSwibWFwcGluZ3MiOiJBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOyIsInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///./node_modules/url/util.js\n");

/***/ }),

/***/ "./node_modules/vega-embed/build/vega-embed.module.js":
/*!************************************************************!*\
  !*** ./node_modules/vega-embed/build/vega-embed.module.js ***!
  \************************************************************/
/*! exports provided: default, DEFAULT_ACTIONS, guessMode, vega, vegaLite */
/***/ (function(module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"DEFAULT_ACTIONS\", function() { return DEFAULT_ACTIONS; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"guessMode\", function() { return guessMode; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"vega\", function() { return vega; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"vegaLite\", function() { return vegaLite; });\n/* harmony import */ var fast_json_patch__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! fast-json-patch */ \"./node_modules/fast-json-patch/index.mjs\");\n/* harmony import */ var json_stringify_pretty_compact__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! json-stringify-pretty-compact */ \"./node_modules/json-stringify-pretty-compact/index.js\");\n/* harmony import */ var json_stringify_pretty_compact__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(json_stringify_pretty_compact__WEBPACK_IMPORTED_MODULE_1__);\n/* harmony import */ var semver__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! semver */ \"./node_modules/vega-embed/node_modules/semver/index.js\");\n/* harmony import */ var semver__WEBPACK_IMPORTED_MODULE_2___default = /*#__PURE__*/__webpack_require__.n(semver__WEBPACK_IMPORTED_MODULE_2__);\n/* harmony import */ var vega__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! vega */ \"./node_modules/vega/build/vega.module.js\");\n/* harmony import */ var vega_lite__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! vega-lite */ \"./node_modules/vega-lite/build/src/index.js\");\n/* harmony import */ var vega_schema_url_parser__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! vega-schema-url-parser */ \"./node_modules/vega-schema-url-parser/dist/parser.module.js\");\n/* harmony import */ var vega_themes__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! vega-themes */ \"./node_modules/vega-themes/build/vega-themes.module.js\");\n/* harmony import */ var vega_tooltip__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! vega-tooltip */ \"./node_modules/vega-embed/node_modules/vega-tooltip/build/vega-tooltip.module.js\");\n\n\n\n\n\n\n\n\n\n\n/*! *****************************************************************************\r\nCopyright (c) Microsoft Corporation.\r\n\r\nPermission to use, copy, modify, and/or distribute this software for any\r\npurpose with or without fee is hereby granted.\r\n\r\nTHE SOFTWARE IS PROVIDED \"AS IS\" AND THE AUTHOR DISCLAIMS ALL WARRANTIES WITH\r\nREGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY\r\nAND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT,\r\nINDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM\r\nLOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR\r\nOTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR\r\nPERFORMANCE OF THIS SOFTWARE.\r\n***************************************************************************** */\r\n\r\nfunction __awaiter(thisArg, _arguments, P, generator) {\r\n    function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }\r\n    return new (P || (P = Promise))(function (resolve, reject) {\r\n        function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }\r\n        function rejected(value) { try { step(generator[\"throw\"](value)); } catch (e) { reject(e); } }\r\n        function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }\r\n        step((generator = generator.apply(thisArg, _arguments || [])).next());\r\n    });\r\n}\n\n/**\n * Open editor url in a new window, and pass a message.\n */\nfunction post (window, url, data) {\n    // eslint-disable-next-line @typescript-eslint/no-non-null-assertion\n    const editor = window.open(url);\n    const wait = 10000;\n    const step = 250;\n    const { origin } = new URL(url);\n    // eslint-disable-next-line no-bitwise\n    let count = ~~(wait / step);\n    function listen(evt) {\n        if (evt.source === editor) {\n            count = 0;\n            window.removeEventListener('message', listen, false);\n        }\n    }\n    window.addEventListener('message', listen, false);\n    // send message\n    // periodically resend until ack received or timeout\n    function send() {\n        if (count <= 0) {\n            return;\n        }\n        editor.postMessage(data, origin);\n        setTimeout(send, step);\n        count -= 1;\n    }\n    setTimeout(send, step);\n}\n\n// generated with build-style.sh\nvar embedStyle = `.vega-embed {\n  position: relative;\n  display: inline-block;\n  box-sizing: border-box; }\n  .vega-embed.has-actions {\n    padding-right: 38px; }\n  .vega-embed details:not([open]) > :not(summary) {\n    display: none !important; }\n  .vega-embed summary {\n    list-style: none;\n    position: absolute;\n    top: 0;\n    right: 0;\n    padding: 6px;\n    z-index: 1000;\n    background: white;\n    box-shadow: 1px 1px 3px rgba(0, 0, 0, 0.1);\n    color: #1b1e23;\n    border: 1px solid #aaa;\n    border-radius: 999px;\n    opacity: 0.2;\n    transition: opacity 0.4s ease-in;\n    outline: none;\n    cursor: pointer;\n    line-height: 0px; }\n    .vega-embed summary::-webkit-details-marker {\n      display: none; }\n    .vega-embed summary:active {\n      box-shadow: #aaa 0px 0px 0px 1px inset; }\n    .vega-embed summary svg {\n      width: 14px;\n      height: 14px; }\n  .vega-embed details[open] summary {\n    opacity: 0.7; }\n  .vega-embed:hover summary,\n  .vega-embed:focus summary {\n    opacity: 1 !important;\n    transition: opacity 0.2s ease; }\n  .vega-embed .vega-actions {\n    position: absolute;\n    z-index: 1001;\n    top: 35px;\n    right: -9px;\n    display: flex;\n    flex-direction: column;\n    padding-bottom: 8px;\n    padding-top: 8px;\n    border-radius: 4px;\n    box-shadow: 0 2px 8px 0 rgba(0, 0, 0, 0.2);\n    border: 1px solid #d9d9d9;\n    background: white;\n    animation-duration: 0.15s;\n    animation-name: scale-in;\n    animation-timing-function: cubic-bezier(0.2, 0, 0.13, 1.5);\n    text-align: left; }\n    .vega-embed .vega-actions a {\n      padding: 8px 16px;\n      font-family: sans-serif;\n      font-size: 14px;\n      font-weight: 600;\n      white-space: nowrap;\n      color: #434a56;\n      text-decoration: none; }\n      .vega-embed .vega-actions a:hover {\n        background-color: #f7f7f9;\n        color: black; }\n    .vega-embed .vega-actions::before, .vega-embed .vega-actions::after {\n      content: \"\";\n      display: inline-block;\n      position: absolute; }\n    .vega-embed .vega-actions::before {\n      left: auto;\n      right: 14px;\n      top: -16px;\n      border: 8px solid #0000;\n      border-bottom-color: #d9d9d9; }\n    .vega-embed .vega-actions::after {\n      left: auto;\n      right: 15px;\n      top: -14px;\n      border: 7px solid #0000;\n      border-bottom-color: #fff; }\n  .vega-embed .chart-wrapper {\n    width: 100%;\n    height: 100%; }\n\n.vega-embed-wrapper {\n  max-width: 100%;\n  overflow: auto;\n  padding-right: 14px; }\n\n@keyframes scale-in {\n  from {\n    opacity: 0;\n    transform: scale(0.6); }\n  to {\n    opacity: 1;\n    transform: scale(1); } }\n`;\n\n// polyfill for IE\nif (!String.prototype.startsWith) {\n    // eslint-disable-next-line no-extend-native,func-names\n    String.prototype.startsWith = function (search, pos) {\n        return this.substr(!pos || pos < 0 ? 0 : +pos, search.length) === search;\n    };\n}\nfunction mergeDeep(dest, ...src) {\n    for (const s of src) {\n        deepMerge_(dest, s);\n    }\n    return dest;\n}\nfunction deepMerge_(dest, src) {\n    for (const property of Object.keys(src)) {\n        Object(vega__WEBPACK_IMPORTED_MODULE_3__[\"writeConfig\"])(dest, property, src[property], true);\n    }\n}\n\nvar _a;\nconst vega = vega__WEBPACK_IMPORTED_MODULE_3__;\nlet vegaLite = vega_lite__WEBPACK_IMPORTED_MODULE_4__;\n// For backwards compatibility with Vega-Lite before v4.\nconst w = (typeof window !== 'undefined' ? window : undefined);\nif (vegaLite === undefined && ((_a = w === null || w === void 0 ? void 0 : w['vl']) === null || _a === void 0 ? void 0 : _a.compile)) {\n    vegaLite = w['vl'];\n}\nconst DEFAULT_ACTIONS = { export: { svg: true, png: true }, source: true, compiled: true, editor: true };\nconst I18N = {\n    CLICK_TO_VIEW_ACTIONS: 'Click to view actions',\n    COMPILED_ACTION: 'View Compiled Vega',\n    EDITOR_ACTION: 'Open in Vega Editor',\n    PNG_ACTION: 'Save as PNG',\n    SOURCE_ACTION: 'View Source',\n    SVG_ACTION: 'Save as SVG',\n};\nconst NAMES = {\n    vega: 'Vega',\n    'vega-lite': 'Vega-Lite',\n};\nconst VERSION = {\n    vega: vega.version,\n    'vega-lite': vegaLite ? vegaLite.version : 'not available',\n};\nconst PREPROCESSOR = {\n    vega: (vgSpec) => vgSpec,\n    'vega-lite': (vlSpec, config) => vegaLite.compile(vlSpec, { config: config }).spec,\n};\nconst SVG_CIRCLES = `\n<svg viewBox=\"0 0 16 16\" fill=\"currentColor\" stroke=\"none\" stroke-width=\"1\" stroke-linecap=\"round\" stroke-linejoin=\"round\">\n  <circle r=\"2\" cy=\"8\" cx=\"2\"></circle>\n  <circle r=\"2\" cy=\"8\" cx=\"8\"></circle>\n  <circle r=\"2\" cy=\"8\" cx=\"14\"></circle>\n</svg>`;\nconst CHART_WRAPPER_CLASS = 'chart-wrapper';\nfunction isTooltipHandler(h) {\n    return typeof h === 'function';\n}\nfunction viewSource(source, sourceHeader, sourceFooter, mode) {\n    const header = `<html><head>${sourceHeader}</head><body><pre><code class=\"json\">`;\n    const footer = `</code></pre>${sourceFooter}</body></html>`;\n    // eslint-disable-next-line @typescript-eslint/no-non-null-assertion\n    const win = window.open('');\n    win.document.write(header + source + footer);\n    win.document.title = `${NAMES[mode]} JSON Source`;\n}\n/**\n * Try to guess the type of spec.\n *\n * @param spec Vega or Vega-Lite spec.\n */\nfunction guessMode(spec, providedMode) {\n    var _a;\n    // Decide mode\n    if (spec.$schema) {\n        const parsed = Object(vega_schema_url_parser__WEBPACK_IMPORTED_MODULE_5__[\"default\"])(spec.$schema);\n        if (providedMode && providedMode !== parsed.library) {\n            console.warn(`The given visualization spec is written in ${NAMES[parsed.library]}, but mode argument sets ${(_a = NAMES[providedMode]) !== null && _a !== void 0 ? _a : providedMode}.`);\n        }\n        const mode = parsed.library;\n        if (!Object(semver__WEBPACK_IMPORTED_MODULE_2__[\"satisfies\"])(VERSION[mode], `^${parsed.version.slice(1)}`)) {\n            console.warn(`The input spec uses ${NAMES[mode]} ${parsed.version}, but the current version of ${NAMES[mode]} is v${VERSION[mode]}.`);\n        }\n        return mode;\n    }\n    // try to guess from the provided spec\n    if ('mark' in spec ||\n        'encoding' in spec ||\n        'layer' in spec ||\n        'hconcat' in spec ||\n        'vconcat' in spec ||\n        'facet' in spec ||\n        'repeat' in spec) {\n        return 'vega-lite';\n    }\n    if ('marks' in spec || 'signals' in spec || 'scales' in spec || 'axes' in spec) {\n        return 'vega';\n    }\n    return providedMode !== null && providedMode !== void 0 ? providedMode : 'vega';\n}\nfunction isLoader(o) {\n    return !!(o && 'load' in o);\n}\nfunction createLoader(opts) {\n    return isLoader(opts) ? opts : vega.loader(opts);\n}\nfunction embedOptionsFromUsermeta(parsedSpec) {\n    var _a;\n    return (_a = (parsedSpec.usermeta && parsedSpec.usermeta['embedOptions'])) !== null && _a !== void 0 ? _a : {};\n}\n/**\n * Embed a Vega visualization component in a web page. This function returns a promise.\n *\n * @param el        DOM element in which to place component (DOM node or CSS selector).\n * @param spec      String : A URL string from which to load the Vega specification.\n *                  Object : The Vega/Vega-Lite specification as a parsed JSON object.\n * @param opts       A JavaScript object containing options for embedding.\n */\nfunction embed(el, spec, opts = {}) {\n    var _a, _b, _c;\n    return __awaiter(this, void 0, void 0, function* () {\n        let parsedSpec;\n        let loader;\n        if (Object(vega__WEBPACK_IMPORTED_MODULE_3__[\"isString\"])(spec)) {\n            loader = createLoader(opts.loader);\n            parsedSpec = JSON.parse(yield loader.load(spec));\n        }\n        else {\n            parsedSpec = spec;\n        }\n        const usermetaLoader = embedOptionsFromUsermeta(parsedSpec).loader;\n        // either create the loader for the first time or create a new loader if the spec has new loader options\n        if (!loader || usermetaLoader) {\n            loader = createLoader((_a = opts.loader) !== null && _a !== void 0 ? _a : usermetaLoader);\n        }\n        const usermetaOpts = yield loadOpts(embedOptionsFromUsermeta(parsedSpec), loader);\n        const parsedOpts = yield loadOpts(opts, loader);\n        const mergedOpts = Object.assign(Object.assign({}, mergeDeep(parsedOpts, usermetaOpts)), { config: Object(vega__WEBPACK_IMPORTED_MODULE_3__[\"mergeConfig\"])((_b = parsedOpts.config) !== null && _b !== void 0 ? _b : {}, (_c = usermetaOpts.config) !== null && _c !== void 0 ? _c : {}) });\n        return yield _embed(el, parsedSpec, mergedOpts, loader);\n    });\n}\nfunction loadOpts(opt, loader) {\n    var _a;\n    return __awaiter(this, void 0, void 0, function* () {\n        const config = Object(vega__WEBPACK_IMPORTED_MODULE_3__[\"isString\"])(opt.config) ? JSON.parse(yield loader.load(opt.config)) : (_a = opt.config) !== null && _a !== void 0 ? _a : {};\n        const patch = Object(vega__WEBPACK_IMPORTED_MODULE_3__[\"isString\"])(opt.patch) ? JSON.parse(yield loader.load(opt.patch)) : opt.patch;\n        return Object.assign(Object.assign(Object.assign({}, opt), (patch ? { patch } : {})), (config ? { config } : {}));\n    });\n}\nfunction getRoot(el) {\n    var _a;\n    const possibleRoot = el.getRootNode ? el.getRootNode() : document;\n    if (possibleRoot instanceof ShadowRoot) {\n        return { root: possibleRoot, rootContainer: possibleRoot };\n    }\n    else {\n        return { root: document, rootContainer: (_a = document.head) !== null && _a !== void 0 ? _a : document.body };\n    }\n}\nfunction _embed(el, spec, opts = {}, loader) {\n    var _a, _b, _c, _d, _e, _f;\n    return __awaiter(this, void 0, void 0, function* () {\n        const config = opts.theme ? Object(vega__WEBPACK_IMPORTED_MODULE_3__[\"mergeConfig\"])(vega_themes__WEBPACK_IMPORTED_MODULE_6__[opts.theme], (_a = opts.config) !== null && _a !== void 0 ? _a : {}) : opts.config;\n        const actions = Object(vega__WEBPACK_IMPORTED_MODULE_3__[\"isBoolean\"])(opts.actions) ? opts.actions : mergeDeep({}, DEFAULT_ACTIONS, (_b = opts.actions) !== null && _b !== void 0 ? _b : {});\n        const i18n = Object.assign(Object.assign({}, I18N), opts.i18n);\n        const renderer = (_c = opts.renderer) !== null && _c !== void 0 ? _c : 'canvas';\n        const logLevel = (_d = opts.logLevel) !== null && _d !== void 0 ? _d : vega.Warn;\n        const downloadFileName = (_e = opts.downloadFileName) !== null && _e !== void 0 ? _e : 'visualization';\n        const element = typeof el === 'string' ? document.querySelector(el) : el;\n        if (!element) {\n            throw new Error(`${el} does not exist`);\n        }\n        if (opts.defaultStyle !== false) {\n            // Add a default stylesheet to the head of the document.\n            const ID = 'vega-embed-style';\n            const { root, rootContainer } = getRoot(element);\n            if (!root.getElementById(ID)) {\n                const style = document.createElement('style');\n                style.id = ID;\n                style.innerText =\n                    opts.defaultStyle === undefined || opts.defaultStyle === true\n                        ? (embedStyle ).toString()\n                        : opts.defaultStyle;\n                rootContainer.appendChild(style);\n            }\n        }\n        const mode = guessMode(spec, opts.mode);\n        let vgSpec = PREPROCESSOR[mode](spec, config);\n        if (mode === 'vega-lite') {\n            if (vgSpec.$schema) {\n                const parsed = Object(vega_schema_url_parser__WEBPACK_IMPORTED_MODULE_5__[\"default\"])(vgSpec.$schema);\n                if (!Object(semver__WEBPACK_IMPORTED_MODULE_2__[\"satisfies\"])(VERSION.vega, `^${parsed.version.slice(1)}`)) {\n                    console.warn(`The compiled spec uses Vega ${parsed.version}, but current version is v${VERSION.vega}.`);\n                }\n            }\n        }\n        element.classList.add('vega-embed');\n        if (actions) {\n            element.classList.add('has-actions');\n        }\n        element.innerHTML = ''; // clear container\n        let container = element;\n        if (actions) {\n            const chartWrapper = document.createElement('div');\n            chartWrapper.classList.add(CHART_WRAPPER_CLASS);\n            element.appendChild(chartWrapper);\n            container = chartWrapper;\n        }\n        const patch = opts.patch;\n        if (patch) {\n            if (patch instanceof Function) {\n                vgSpec = patch(vgSpec);\n            }\n            else {\n                vgSpec = Object(fast_json_patch__WEBPACK_IMPORTED_MODULE_0__[\"applyPatch\"])(vgSpec, patch, true, false).newDocument;\n            }\n        }\n        // Set locale. Note that this is a global setting.\n        if (opts.formatLocale) {\n            vega.formatLocale(opts.formatLocale);\n        }\n        if (opts.timeFormatLocale) {\n            vega.timeFormatLocale(opts.timeFormatLocale);\n        }\n        const { ast } = opts;\n        // Do not apply the config to Vega when we have already applied it to Vega-Lite.\n        // This call may throw an Error if parsing fails.\n        const runtime = vega.parse(vgSpec, mode === 'vega-lite' ? {} : config, { ast });\n        const view = new (opts.viewClass || vega.View)(runtime, Object.assign({ loader,\n            logLevel,\n            renderer }, (ast ? { expr: vega.expressionInterpreter } : {})));\n        if (opts.tooltip !== false) {\n            let handler;\n            if (isTooltipHandler(opts.tooltip)) {\n                handler = opts.tooltip;\n            }\n            else {\n                // user provided boolean true or tooltip options\n                handler = new vega_tooltip__WEBPACK_IMPORTED_MODULE_7__[\"Handler\"](opts.tooltip === true ? {} : opts.tooltip).call;\n            }\n            view.tooltip(handler);\n        }\n        let { hover } = opts;\n        if (hover === undefined) {\n            hover = mode === 'vega';\n        }\n        if (hover) {\n            const { hoverSet, updateSet } = (typeof hover === 'boolean' ? {} : hover);\n            view.hover(hoverSet, updateSet);\n        }\n        if (opts) {\n            if (opts.width != null) {\n                view.width(opts.width);\n            }\n            if (opts.height != null) {\n                view.height(opts.height);\n            }\n            if (opts.padding != null) {\n                view.padding(opts.padding);\n            }\n        }\n        yield view.initialize(container, opts.bind).runAsync();\n        let documentClickHandler;\n        if (actions !== false) {\n            let wrapper = element;\n            if (opts.defaultStyle !== false) {\n                const details = document.createElement('details');\n                details.title = i18n.CLICK_TO_VIEW_ACTIONS;\n                element.append(details);\n                wrapper = details;\n                const summary = document.createElement('summary');\n                summary.innerHTML = SVG_CIRCLES;\n                details.append(summary);\n                documentClickHandler = (ev) => {\n                    if (!details.contains(ev.target)) {\n                        details.removeAttribute('open');\n                    }\n                };\n                document.addEventListener('click', documentClickHandler);\n            }\n            const ctrl = document.createElement('div');\n            wrapper.append(ctrl);\n            ctrl.classList.add('vega-actions');\n            // add 'Export' action\n            if (actions === true || actions.export !== false) {\n                for (const ext of ['svg', 'png']) {\n                    if (actions === true || actions.export === true || actions.export[ext]) {\n                        const i18nExportAction = i18n[`${ext.toUpperCase()}_ACTION`];\n                        const exportLink = document.createElement('a');\n                        exportLink.text = i18nExportAction;\n                        exportLink.href = '#';\n                        exportLink.target = '_blank';\n                        exportLink.download = `${downloadFileName}.${ext}`;\n                        // add link on mousedown so that it's correct when the click happens\n                        exportLink.addEventListener('mousedown', function (e) {\n                            return __awaiter(this, void 0, void 0, function* () {\n                                e.preventDefault();\n                                const url = yield view.toImageURL(ext, opts.scaleFactor);\n                                this.href = url;\n                            });\n                        });\n                        ctrl.append(exportLink);\n                    }\n                }\n            }\n            // add 'View Source' action\n            if (actions === true || actions.source !== false) {\n                const viewSourceLink = document.createElement('a');\n                viewSourceLink.text = i18n.SOURCE_ACTION;\n                viewSourceLink.href = '#';\n                viewSourceLink.addEventListener('click', function (e) {\n                    var _a, _b;\n                    viewSource(json_stringify_pretty_compact__WEBPACK_IMPORTED_MODULE_1___default()(spec), (_a = opts.sourceHeader) !== null && _a !== void 0 ? _a : '', (_b = opts.sourceFooter) !== null && _b !== void 0 ? _b : '', mode);\n                    e.preventDefault();\n                });\n                ctrl.append(viewSourceLink);\n            }\n            // add 'View Compiled' action\n            if (mode === 'vega-lite' && (actions === true || actions.compiled !== false)) {\n                const compileLink = document.createElement('a');\n                compileLink.text = i18n.COMPILED_ACTION;\n                compileLink.href = '#';\n                compileLink.addEventListener('click', function (e) {\n                    var _a, _b;\n                    viewSource(json_stringify_pretty_compact__WEBPACK_IMPORTED_MODULE_1___default()(vgSpec), (_a = opts.sourceHeader) !== null && _a !== void 0 ? _a : '', (_b = opts.sourceFooter) !== null && _b !== void 0 ? _b : '', 'vega');\n                    e.preventDefault();\n                });\n                ctrl.append(compileLink);\n            }\n            // add 'Open in Vega Editor' action\n            if (actions === true || actions.editor !== false) {\n                const editorUrl = (_f = opts.editorUrl) !== null && _f !== void 0 ? _f : 'https://vega.github.io/editor/';\n                const editorLink = document.createElement('a');\n                editorLink.text = i18n.EDITOR_ACTION;\n                editorLink.href = '#';\n                editorLink.addEventListener('click', function (e) {\n                    post(window, editorUrl, {\n                        config: config,\n                        mode,\n                        renderer,\n                        spec: json_stringify_pretty_compact__WEBPACK_IMPORTED_MODULE_1___default()(spec),\n                    });\n                    e.preventDefault();\n                });\n                ctrl.append(editorLink);\n            }\n        }\n        function finalize() {\n            if (documentClickHandler) {\n                document.removeEventListener('click', documentClickHandler);\n            }\n            view.finalize();\n        }\n        return { view, spec, vgSpec, finalize };\n    });\n}\n\n/* harmony default export */ __webpack_exports__[\"default\"] = (embed);\n\n//# sourceMappingURL=vega-embed.module.js.map\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,[encoded data, 32888 characters]\n//# sourceURL=webpack-internal:///./node_modules/vega-embed/build/vega-embed.module.js\n");

/***/ }),

/***/ "./node_modules/vega-embed/node_modules/semver/classes/comparator.js":
/*!***************************************************************************!*\
  !*** ./node_modules/vega-embed/node_modules/semver/classes/comparator.js ***!
  \***************************************************************************/
/*! no static exports found */
/***/ (function(module, exports, __webpack_require__) {

eval("const ANY = Symbol('SemVer ANY')\n// hoisted class for cyclic dependency\nclass Comparator {\n  static get ANY () {\n    return ANY\n  }\n  constructor (comp, options) {\n    options = parseOptions(options)\n\n    if (comp instanceof Comparator) {\n      if (comp.loose === !!options.loose) {\n        return comp\n      } else {\n        comp = comp.value\n      }\n    }\n\n    debug('comparator', comp, options)\n    this.options = options\n    this.loose = !!options.loose\n    this.parse(comp)\n\n    if (this.semver === ANY) {\n      this.value = ''\n    } else {\n      this.value = this.operator + this.semver.version\n    }\n\n    debug('comp', this)\n  }\n\n  parse (comp) {\n    const r = this.options.loose ? re[t.COMPARATORLOOSE] : re[t.COMPARATOR]\n    const m = comp.match(r)\n\n    if (!m) {\n      throw new TypeError(`Invalid comparator: ${comp}`)\n    }\n\n    this.operator = m[1] !== undefined ? m[1] : ''\n    if (this.operator === '=') {\n      this.operator = ''\n    }\n\n    // if it literally is just '>' or '' then allow anything.\n    if (!m[2]) {\n      this.semver = ANY\n    } else {\n      this.semver = new SemVer(m[2], this.options.loose)\n    }\n  }\n\n  toString () {\n    return this.value\n  }\n\n  test (version) {\n    debug('Comparator.test', version, this.options.loose)\n\n    if (this.semver === ANY || version === ANY) {\n      return true\n    }\n\n    if (typeof version === 'string') {\n      try {\n        version = new SemVer(version, this.options)\n      } catch (er) {\n        return false\n      }\n    }\n\n    return cmp(version, this.operator, this.semver, this.options)\n  }\n\n  intersects (comp, options) {\n    if (!(comp instanceof Comparator)) {\n      throw new TypeError('a Comparator is required')\n    }\n\n    if (!options || typeof options !== 'object') {\n      options = {\n        loose: !!options,\n        includePrerelease: false\n      }\n    }\n\n    if (this.operator === '') {\n      if (this.value === '') {\n        return true\n      }\n      return new Range(comp.value, options).test(this.value)\n    } else if (comp.operator === '') {\n      if (comp.value === '') {\n        return true\n      }\n      return new Range(this.value, options).test(comp.semver)\n    }\n\n    const sameDirectionIncreasing =\n      (this.operator === '>=' || this.operator === '>') &&\n      (comp.operator === '>=' || comp.operator === '>')\n    const sameDirectionDecreasing =\n      (this.operator === '<=' || this.operator === '<') &&\n      (comp.operator === '<=' || comp.operator === '<')\n    const sameSemVer = this.semver.version === comp.semver.version\n    const differentDirectionsInclusive =\n      (this.operator === '>=' || this.operator === '<=') &&\n      (comp.operator === '>=' || comp.operator === '<=')\n    const oppositeDirectionsLessThan =\n      cmp(this.semver, '<', comp.semver, options) &&\n      (this.operator === '>=' || this.operator === '>') &&\n        (comp.operator === '<=' || comp.operator === '<')\n    const oppositeDirectionsGreaterThan =\n      cmp(this.semver, '>', comp.semver, options) &&\n      (this.operator === '<=' || this.operator === '<') &&\n        (comp.operator === '>=' || comp.operator === '>')\n\n    return (\n      sameDirectionIncreasing ||\n      sameDirectionDecreasing ||\n      (sameSemVer && differentDirectionsInclusive) ||\n      oppositeDirectionsLessThan ||\n      oppositeDirectionsGreaterThan\n    )\n  }\n}\n\nmodule.exports = Comparator\n\nconst parseOptions = __webpack_require__(/*! ../internal/parse-options */ \"./node_modules/vega-embed/node_modules/semver/internal/parse-options.js\")\nconst {re, t} = __webpack_require__(/*! ../internal/re */ \"./node_modules/vega-embed/node_modules/semver/internal/re.js\")\nconst cmp = __webpack_require__(/*! ../functions/cmp */ \"./node_modules/vega-embed/node_modules/semver/functions/cmp.js\")\nconst debug = __webpack_require__(/*! ../internal/debug */ \"./node_modules/vega-embed/node_modules/semver/internal/debug.js\")\nconst SemVer = __webpack_require__(/*! ./semver */ \"./node_modules/vega-embed/node_modules/semver/classes/semver.js\")\nconst Range = __webpack_require__(/*! ./range */ \"./node_modules/vega-embed/node_modules/semver/classes/range.js\")\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,[encoded data, 6212 characters]\n//# sourceURL=webpack-internal:///./node_modules/vega-embed/node_modules/semver/classes/comparator.js\n");

/***/ }),

/***/ "./node_modules/vega-embed/node_modules/semver/classes/range.js":
/*!**********************************************************************!*\
  !*** ./node_modules/vega-embed/node_modules/semver/classes/range.js ***!
  \**********************************************************************/
/*! no static exports found */
/***/ (function(module, exports, __webpack_require__) {

eval("// hoisted class for cyclic dependency\nclass Range {\n  constructor (range, options) {\n    options = parseOptions(options)\n\n    if (range instanceof Range) {\n      if (\n        range.loose === !!options.loose &&\n        range.includePrerelease === !!options.includePrerelease\n      ) {\n        return range\n      } else {\n        return new Range(range.raw, options)\n      }\n    }\n\n    if (range instanceof Comparator) {\n      // just put it in the set and return\n      this.raw = range.value\n      this.set = [[range]]\n      this.format()\n      return this\n    }\n\n    this.options = options\n    this.loose = !!options.loose\n    this.includePrerelease = !!options.includePrerelease\n\n    // First, split based on boolean or ||\n    this.raw = range\n    this.set = range\n      .split(/\\s*\\|\\|\\s*/)\n      // map the range to a 2d array of comparators\n      .map(range => this.parseRange(range.trim()))\n      // throw out any comparator lists that are empty\n      // this generally means that it was not a valid range, which is allowed\n      // in loose mode, but will still throw if the WHOLE range is invalid.\n      .filter(c => c.length)\n\n    if (!this.set.length) {\n      throw new TypeError(`Invalid SemVer Range: ${range}`)\n    }\n\n    // if we have any that are not the null set, throw out null sets.\n    if (this.set.length > 1) {\n      // keep the first one, in case they're all null sets\n      const first = this.set[0]\n      this.set = this.set.filter(c => !isNullSet(c[0]))\n      if (this.set.length === 0)\n        this.set = [first]\n      else if (this.set.length > 1) {\n        // if we have any that are *, then the range is just *\n        for (const c of this.set) {\n          if (c.length === 1 && isAny(c[0])) {\n            this.set = [c]\n            break\n          }\n        }\n      }\n    }\n\n    this.format()\n  }\n\n  format () {\n    this.range = this.set\n      .map((comps) => {\n        return comps.join(' ').trim()\n      })\n      .join('||')\n      .trim()\n    return this.range\n  }\n\n  toString () {\n    return this.range\n  }\n\n  parseRange (range) {\n    range = range.trim()\n\n    // memoize range parsing for performance.\n    // this is a very hot path, and fully deterministic.\n    const memoOpts = Object.keys(this.options).join(',')\n    const memoKey = `parseRange:${memoOpts}:${range}`\n    const cached = cache.get(memoKey)\n    if (cached)\n      return cached\n\n    const loose = this.options.loose\n    // `1.2.3 - 1.2.4` => `>=1.2.3 <=1.2.4`\n    const hr = loose ? re[t.HYPHENRANGELOOSE] : re[t.HYPHENRANGE]\n    range = range.replace(hr, hyphenReplace(this.options.includePrerelease))\n    debug('hyphen replace', range)\n    // `> 1.2.3 < 1.2.5` => `>1.2.3 <1.2.5`\n    range = range.replace(re[t.COMPARATORTRIM], comparatorTrimReplace)\n    debug('comparator trim', range, re[t.COMPARATORTRIM])\n\n    // `~ 1.2.3` => `~1.2.3`\n    range = range.replace(re[t.TILDETRIM], tildeTrimReplace)\n\n    // `^ 1.2.3` => `^1.2.3`\n    range = range.replace(re[t.CARETTRIM], caretTrimReplace)\n\n    // normalize spaces\n    range = range.split(/\\s+/).join(' ')\n\n    // At this point, the range is completely trimmed and\n    // ready to be split into comparators.\n\n    const compRe = loose ? re[t.COMPARATORLOOSE] : re[t.COMPARATOR]\n    const rangeList = range\n      .split(' ')\n      .map(comp => parseComparator(comp, this.options))\n      .join(' ')\n      .split(/\\s+/)\n      // >=0.0.0 is equivalent to *\n      .map(comp => replaceGTE0(comp, this.options))\n      // in loose mode, throw out any that are not valid comparators\n      .filter(this.options.loose ? comp => !!comp.match(compRe) : () => true)\n      .map(comp => new Comparator(comp, this.options))\n\n    // if any comparators are the null set, then replace with JUST null set\n    // if more than one comparator, remove any * comparators\n    // also, don't include the same comparator more than once\n    const l = rangeList.length\n    const rangeMap = new Map()\n    for (const comp of rangeList) {\n      if (isNullSet(comp))\n        return [comp]\n      rangeMap.set(comp.value, comp)\n    }\n    if (rangeMap.size > 1 && rangeMap.has(''))\n      rangeMap.delete('')\n\n    const result = [...rangeMap.values()]\n    cache.set(memoKey, result)\n    return result\n  }\n\n  intersects (range, options) {\n    if (!(range instanceof Range)) {\n      throw new TypeError('a Range is required')\n    }\n\n    return this.set.some((thisComparators) => {\n      return (\n        isSatisfiable(thisComparators, options) &&\n        range.set.some((rangeComparators) => {\n          return (\n            isSatisfiable(rangeComparators, options) &&\n            thisComparators.every((thisComparator) => {\n              return rangeComparators.every((rangeComparator) => {\n                return thisComparator.intersects(rangeComparator, options)\n              })\n            })\n          )\n        })\n      )\n    })\n  }\n\n  // if ANY of the sets match ALL of its comparators, then pass\n  test (version) {\n    if (!version) {\n      return false\n    }\n\n    if (typeof version === 'string') {\n      try {\n        version = new SemVer(version, this.options)\n      } catch (er) {\n        return false\n      }\n    }\n\n    for (let i = 0; i < this.set.length; i++) {\n      if (testSet(this.set[i], version, this.options)) {\n        return true\n      }\n    }\n    return false\n  }\n}\nmodule.exports = Range\n\nconst LRU = __webpack_require__(/*! lru-cache */ \"./node_modules/lru-cache/index.js\")\nconst cache = new LRU({ max: 1000 })\n\nconst parseOptions = __webpack_require__(/*! ../internal/parse-options */ \"./node_modules/vega-embed/node_modules/semver/internal/parse-options.js\")\nconst Comparator = __webpack_require__(/*! ./comparator */ \"./node_modules/vega-embed/node_modules/semver/classes/comparator.js\")\nconst debug = __webpack_require__(/*! ../internal/debug */ \"./node_modules/vega-embed/node_modules/semver/internal/debug.js\")\nconst SemVer = __webpack_require__(/*! ./semver */ \"./node_modules/vega-embed/node_modules/semver/classes/semver.js\")\nconst {\n  re,\n  t,\n  comparatorTrimReplace,\n  tildeTrimReplace,\n  caretTrimReplace\n} = __webpack_require__(/*! ../internal/re */ \"./node_modules/vega-embed/node_modules/semver/internal/re.js\")\n\nconst isNullSet = c => c.value === '<0.0.0-0'\nconst isAny = c => c.value === ''\n\n// take a set of comparators and determine whether there\n// exists a version which can satisfy it\nconst isSatisfiable = (comparators, options) => {\n  let result = true\n  const remainingComparators = comparators.slice()\n  let testComparator = remainingComparators.pop()\n\n  while (result && remainingComparators.length) {\n    result = remainingComparators.every((otherComparator) => {\n      return testComparator.intersects(otherComparator, options)\n    })\n\n    testComparator = remainingComparators.pop()\n  }\n\n  return result\n}\n\n// comprised of xranges, tildes, stars, and gtlt's at this point.\n// already replaced the hyphen ranges\n// turn into a set of JUST comparators.\nconst parseComparator = (comp, options) => {\n  debug('comp', comp, options)\n  comp = replaceCarets(comp, options)\n  debug('caret', comp)\n  comp = replaceTildes(comp, options)\n  debug('tildes', comp)\n  comp = replaceXRanges(comp, options)\n  debug('xrange', comp)\n  comp = replaceStars(comp, options)\n  debug('stars', comp)\n  return comp\n}\n\nconst isX = id => !id || id.toLowerCase() === 'x' || id === '*'\n\n// ~, ~> --> * (any, kinda silly)\n// ~2, ~2.x, ~2.x.x, ~>2, ~>2.x ~>2.x.x --> >=2.0.0 <3.0.0-0\n// ~2.0, ~2.0.x, ~>2.0, ~>2.0.x --> >=2.0.0 <2.1.0-0\n// ~1.2, ~1.2.x, ~>1.2, ~>1.2.x --> >=1.2.0 <1.3.0-0\n// ~1.2.3, ~>1.2.3 --> >=1.2.3 <1.3.0-0\n// ~1.2.0, ~>1.2.0 --> >=1.2.0 <1.3.0-0\nconst replaceTildes = (comp, options) =>\n  comp.trim().split(/\\s+/).map((comp) => {\n    return replaceTilde(comp, options)\n  }).join(' ')\n\nconst replaceTilde = (comp, options) => {\n  const r = options.loose ? re[t.TILDELOOSE] : re[t.TILDE]\n  return comp.replace(r, (_, M, m, p, pr) => {\n    debug('tilde', comp, _, M, m, p, pr)\n    let ret\n\n    if (isX(M)) {\n      ret = ''\n    } else if (isX(m)) {\n      ret = `>=${M}.0.0 <${+M + 1}.0.0-0`\n    } else if (isX(p)) {\n      // ~1.2 == >=1.2.0 <1.3.0-0\n      ret = `>=${M}.${m}.0 <${M}.${+m + 1}.0-0`\n    } else if (pr) {\n      debug('replaceTilde pr', pr)\n      ret = `>=${M}.${m}.${p}-${pr\n      } <${M}.${+m + 1}.0-0`\n    } else {\n      // ~1.2.3 == >=1.2.3 <1.3.0-0\n      ret = `>=${M}.${m}.${p\n      } <${M}.${+m + 1}.0-0`\n    }\n\n    debug('tilde return', ret)\n    return ret\n  })\n}\n\n// ^ --> * (any, kinda silly)\n// ^2, ^2.x, ^2.x.x --> >=2.0.0 <3.0.0-0\n// ^2.0, ^2.0.x --> >=2.0.0 <3.0.0-0\n// ^1.2, ^1.2.x --> >=1.2.0 <2.0.0-0\n// ^1.2.3 --> >=1.2.3 <2.0.0-0\n// ^1.2.0 --> >=1.2.0 <2.0.0-0\nconst replaceCarets = (comp, options) =>\n  comp.trim().split(/\\s+/).map((comp) => {\n    return replaceCaret(comp, options)\n  }).join(' ')\n\nconst replaceCaret = (comp, options) => {\n  debug('caret', comp, options)\n  const r = options.loose ? re[t.CARETLOOSE] : re[t.CARET]\n  const z = options.includePrerelease ? '-0' : ''\n  return comp.replace(r, (_, M, m, p, pr) => {\n    debug('caret', comp, _, M, m, p, pr)\n    let ret\n\n    if (isX(M)) {\n      ret = ''\n    } else if (isX(m)) {\n      ret = `>=${M}.0.0${z} <${+M + 1}.0.0-0`\n    } else if (isX(p)) {\n      if (M === '0') {\n        ret = `>=${M}.${m}.0${z} <${M}.${+m + 1}.0-0`\n      } else {\n        ret = `>=${M}.${m}.0${z} <${+M + 1}.0.0-0`\n      }\n    } else if (pr) {\n      debug('replaceCaret pr', pr)\n      if (M === '0') {\n        if (m === '0') {\n          ret = `>=${M}.${m}.${p}-${pr\n          } <${M}.${m}.${+p + 1}-0`\n        } else {\n          ret = `>=${M}.${m}.${p}-${pr\n          } <${M}.${+m + 1}.0-0`\n        }\n      } else {\n        ret = `>=${M}.${m}.${p}-${pr\n        } <${+M + 1}.0.0-0`\n      }\n    } else {\n      debug('no pr')\n      if (M === '0') {\n        if (m === '0') {\n          ret = `>=${M}.${m}.${p\n          }${z} <${M}.${m}.${+p + 1}-0`\n        } else {\n          ret = `>=${M}.${m}.${p\n          }${z} <${M}.${+m + 1}.0-0`\n        }\n      } else {\n        ret = `>=${M}.${m}.${p\n        } <${+M + 1}.0.0-0`\n      }\n    }\n\n    debug('caret return', ret)\n    return ret\n  })\n}\n\nconst replaceXRanges = (comp, options) => {\n  debug('replaceXRanges', comp, options)\n  return comp.split(/\\s+/).map((comp) => {\n    return replaceXRange(comp, options)\n  }).join(' ')\n}\n\nconst replaceXRange = (comp, options) => {\n  comp = comp.trim()\n  const r = options.loose ? re[t.XRANGELOOSE] : re[t.XRANGE]\n  return comp.replace(r, (ret, gtlt, M, m, p, pr) => {\n    debug('xRange', comp, ret, gtlt, M, m, p, pr)\n    const xM = isX(M)\n    const xm = xM || isX(m)\n    const xp = xm || isX(p)\n    const anyX = xp\n\n    if (gtlt === '=' && anyX) {\n      gtlt = ''\n    }\n\n    // if we're including prereleases in the match, then we need\n    // to fix this to -0, the lowest possible prerelease value\n    pr = options.includePrerelease ? '-0' : ''\n\n    if (xM) {\n      if (gtlt === '>' || gtlt === '<') {\n        // nothing is allowed\n        ret = '<0.0.0-0'\n      } else {\n        // nothing is forbidden\n        ret = '*'\n      }\n    } else if (gtlt && anyX) {\n      // we know patch is an x, because we have any x at all.\n      // replace X with 0\n      if (xm) {\n        m = 0\n      }\n      p = 0\n\n      if (gtlt === '>') {\n        // >1 => >=2.0.0\n        // >1.2 => >=1.3.0\n        gtlt = '>='\n        if (xm) {\n          M = +M + 1\n          m = 0\n          p = 0\n        } else {\n          m = +m + 1\n          p = 0\n        }\n      } else if (gtlt === '<=') {\n        // <=0.7.x is actually <0.8.0, since any 0.7.x should\n        // pass.  Similarly, <=7.x is actually <8.0.0, etc.\n        gtlt = '<'\n        if (xm) {\n          M = +M + 1\n        } else {\n          m = +m + 1\n        }\n      }\n\n      if (gtlt === '<')\n        pr = '-0'\n\n      ret = `${gtlt + M}.${m}.${p}${pr}`\n    } else if (xm) {\n      ret = `>=${M}.0.0${pr} <${+M + 1}.0.0-0`\n    } else if (xp) {\n      ret = `>=${M}.${m}.0${pr\n      } <${M}.${+m + 1}.0-0`\n    }\n\n    debug('xRange return', ret)\n\n    return ret\n  })\n}\n\n// Because * is AND-ed with everything else in the comparator,\n// and '' means \"any version\", just remove the *s entirely.\nconst replaceStars = (comp, options) => {\n  debug('replaceStars', comp, options)\n  // Looseness is ignored here.  star is always as loose as it gets!\n  return comp.trim().replace(re[t.STAR], '')\n}\n\nconst replaceGTE0 = (comp, options) => {\n  debug('replaceGTE0', comp, options)\n  return comp.trim()\n    .replace(re[options.includePrerelease ? t.GTE0PRE : t.GTE0], '')\n}\n\n// This function is passed to string.replace(re[t.HYPHENRANGE])\n// M, m, patch, prerelease, build\n// 1.2 - 3.4.5 => >=1.2.0 <=3.4.5\n// 1.2.3 - 3.4 => >=1.2.0 <3.5.0-0 Any 3.4.x will do\n// 1.2 - 3.4 => >=1.2.0 <3.5.0-0\nconst hyphenReplace = incPr => ($0,\n  from, fM, fm, fp, fpr, fb,\n  to, tM, tm, tp, tpr, tb) => {\n  if (isX(fM)) {\n    from = ''\n  } else if (isX(fm)) {\n    from = `>=${fM}.0.0${incPr ? '-0' : ''}`\n  } else if (isX(fp)) {\n    from = `>=${fM}.${fm}.0${incPr ? '-0' : ''}`\n  } else if (fpr) {\n    from = `>=${from}`\n  } else {\n    from = `>=${from}${incPr ? '-0' : ''}`\n  }\n\n  if (isX(tM)) {\n    to = ''\n  } else if (isX(tm)) {\n    to = `<${+tM + 1}.0.0-0`\n  } else if (isX(tp)) {\n    to = `<${tM}.${+tm + 1}.0-0`\n  } else if (tpr) {\n    to = `<=${tM}.${tm}.${tp}-${tpr}`\n  } else if (incPr) {\n    to = `<${tM}.${tm}.${+tp + 1}-0`\n  } else {\n    to = `<=${to}`\n  }\n\n  return (`${from} ${to}`).trim()\n}\n\nconst testSet = (set, version, options) => {\n  for (let i = 0; i < set.length; i++) {\n    if (!set[i].test(version)) {\n      return false\n    }\n  }\n\n  if (version.prerelease.length && !options.includePrerelease) {\n    // Find the set of versions that are allowed to have prereleases\n    // For example, ^1.2.3-pr.1 desugars to >=1.2.3-pr.1 <2.0.0\n    // That should allow `1.2.3-pr.2` to pass.\n    // However, `1.2.4-alpha.notready` should NOT be allowed,\n    // even though it's within the range set by the comparators.\n    for (let i = 0; i < set.length; i++) {\n      debug(set[i].semver)\n      if (set[i].semver === Comparator.ANY) {\n        continue\n      }\n\n      if (set[i].semver.prerelease.length > 0) {\n        const allowed = set[i].semver\n        if (allowed.major === version.major &&\n            allowed.minor === version.minor &&\n            allowed.patch === version.patch) {\n          return true\n        }\n      }\n    }\n\n    // Version has a -pre, but it's not one of the ones we like.\n    return false\n  }\n\n  return true\n}\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,[encoded data, 23060 characters]\n//# sourceURL=webpack-internal:///./node_modules/vega-embed/node_modules/semver/classes/range.js\n");

/***/ }),

/***/ "./node_modules/vega-embed/node_modules/semver/classes/semver.js":
/*!***********************************************************************!*\
  !*** ./node_modules/vega-embed/node_modules/semver/classes/semver.js ***!
  \***********************************************************************/
/*! no static exports found */
/***/ (function(module, exports, __webpack_require__) {

eval("const debug = __webpack_require__(/*! ../internal/debug */ \"./node_modules/vega-embed/node_modules/semver/internal/debug.js\")\nconst { MAX_LENGTH, MAX_SAFE_INTEGER } = __webpack_require__(/*! ../internal/constants */ \"./node_modules/vega-embed/node_modules/semver/internal/constants.js\")\nconst { re, t } = __webpack_require__(/*! ../internal/re */ \"./node_modules/vega-embed/node_modules/semver/internal/re.js\")\n\nconst parseOptions = __webpack_require__(/*! ../internal/parse-options */ \"./node_modules/vega-embed/node_modules/semver/internal/parse-options.js\")\nconst { compareIdentifiers } = __webpack_require__(/*! ../internal/identifiers */ \"./node_modules/vega-embed/node_modules/semver/internal/identifiers.js\")\nclass SemVer {\n  constructor (version, options) {\n    options = parseOptions(options)\n\n    if (version instanceof SemVer) {\n      if (version.loose === !!options.loose &&\n          version.includePrerelease === !!options.includePrerelease) {\n        return version\n      } else {\n        version = version.version\n      }\n    } else if (typeof version !== 'string') {\n      throw new TypeError(`Invalid Version: ${version}`)\n    }\n\n    if (version.length > MAX_LENGTH) {\n      throw new TypeError(\n        `version is longer than ${MAX_LENGTH} characters`\n      )\n    }\n\n    debug('SemVer', version, options)\n    this.options = options\n    this.loose = !!options.loose\n    // this isn't actually relevant for versions, but keep it so that we\n    // don't run into trouble passing this.options around.\n    this.includePrerelease = !!options.includePrerelease\n\n    const m = version.trim().match(options.loose ? re[t.LOOSE] : re[t.FULL])\n\n    if (!m) {\n      throw new TypeError(`Invalid Version: ${version}`)\n    }\n\n    this.raw = version\n\n    // these are actually numbers\n    this.major = +m[1]\n    this.minor = +m[2]\n    this.patch = +m[3]\n\n    if (this.major > MAX_SAFE_INTEGER || this.major < 0) {\n      throw new TypeError('Invalid major version')\n    }\n\n    if (this.minor > MAX_SAFE_INTEGER || this.minor < 0) {\n      throw new TypeError('Invalid minor version')\n    }\n\n    if (this.patch > MAX_SAFE_INTEGER || this.patch < 0) {\n      throw new TypeError('Invalid patch version')\n    }\n\n    // numberify any prerelease numeric ids\n    if (!m[4]) {\n      this.prerelease = []\n    } else {\n      this.prerelease = m[4].split('.').map((id) => {\n        if (/^[0-9]+$/.test(id)) {\n          const num = +id\n          if (num >= 0 && num < MAX_SAFE_INTEGER) {\n            return num\n          }\n        }\n        return id\n      })\n    }\n\n    this.build = m[5] ? m[5].split('.') : []\n    this.format()\n  }\n\n  format () {\n    this.version = `${this.major}.${this.minor}.${this.patch}`\n    if (this.prerelease.length) {\n      this.version += `-${this.prerelease.join('.')}`\n    }\n    return this.version\n  }\n\n  toString () {\n    return this.version\n  }\n\n  compare (other) {\n    debug('SemVer.compare', this.version, this.options, other)\n    if (!(other instanceof SemVer)) {\n      if (typeof other === 'string' && other === this.version) {\n        return 0\n      }\n      other = new SemVer(other, this.options)\n    }\n\n    if (other.version === this.version) {\n      return 0\n    }\n\n    return this.compareMain(other) || this.comparePre(other)\n  }\n\n  compareMain (other) {\n    if (!(other instanceof SemVer)) {\n      other = new SemVer(other, this.options)\n    }\n\n    return (\n      compareIdentifiers(this.major, other.major) ||\n      compareIdentifiers(this.minor, other.minor) ||\n      compareIdentifiers(this.patch, other.patch)\n    )\n  }\n\n  comparePre (other) {\n    if (!(other instanceof SemVer)) {\n      other = new SemVer(other, this.options)\n    }\n\n    // NOT having a prerelease is > having one\n    if (this.prerelease.length && !other.prerelease.length) {\n      return -1\n    } else if (!this.prerelease.length && other.prerelease.length) {\n      return 1\n    } else if (!this.prerelease.length && !other.prerelease.length) {\n      return 0\n    }\n\n    let i = 0\n    do {\n      const a = this.prerelease[i]\n      const b = other.prerelease[i]\n      debug('prerelease compare', i, a, b)\n      if (a === undefined && b === undefined) {\n        return 0\n      } else if (b === undefined) {\n        return 1\n      } else if (a === undefined) {\n        return -1\n      } else if (a === b) {\n        continue\n      } else {\n        return compareIdentifiers(a, b)\n      }\n    } while (++i)\n  }\n\n  compareBuild (other) {\n    if (!(other instanceof SemVer)) {\n      other = new SemVer(other, this.options)\n    }\n\n    let i = 0\n    do {\n      const a = this.build[i]\n      const b = other.build[i]\n      debug('prerelease compare', i, a, b)\n      if (a === undefined && b === undefined) {\n        return 0\n      } else if (b === undefined) {\n        return 1\n      } else if (a === undefined) {\n        return -1\n      } else if (a === b) {\n        continue\n      } else {\n        return compareIdentifiers(a, b)\n      }\n    } while (++i)\n  }\n\n  // preminor will bump the version up to the next minor release, and immediately\n  // down to pre-release. premajor and prepatch work the same way.\n  inc (release, identifier) {\n    switch (release) {\n      case 'premajor':\n        this.prerelease.length = 0\n        this.patch = 0\n        this.minor = 0\n        this.major++\n        this.inc('pre', identifier)\n        break\n      case 'preminor':\n        this.prerelease.length = 0\n        this.patch = 0\n        this.minor++\n        this.inc('pre', identifier)\n        break\n      case 'prepatch':\n        // If this is already a prerelease, it will bump to the next version\n        // drop any prereleases that might already exist, since they are not\n        // relevant at this point.\n        this.prerelease.length = 0\n        this.inc('patch', identifier)\n        this.inc('pre', identifier)\n        break\n      // If the input is a non-prerelease version, this acts the same as\n      // prepatch.\n      case 'prerelease':\n        if (this.prerelease.length === 0) {\n          this.inc('patch', identifier)\n        }\n        this.inc('pre', identifier)\n        break\n\n      case 'major':\n        // If this is a pre-major version, bump up to the same major version.\n        // Otherwise increment major.\n        // 1.0.0-5 bumps to 1.0.0\n        // 1.1.0 bumps to 2.0.0\n        if (\n          this.minor !== 0 ||\n          this.patch !== 0 ||\n          this.prerelease.length === 0\n        ) {\n          this.major++\n        }\n        this.minor = 0\n        this.patch = 0\n        this.prerelease = []\n        break\n      case 'minor':\n        // If this is a pre-minor version, bump up to the same minor version.\n        // Otherwise increment minor.\n        // 1.2.0-5 bumps to 1.2.0\n        // 1.2.1 bumps to 1.3.0\n        if (this.patch !== 0 || this.prerelease.length === 0) {\n          this.minor++\n        }\n        this.patch = 0\n        this.prerelease = []\n        break\n      case 'patch':\n        // If this is not a pre-release version, it will increment the patch.\n        // If it is a pre-release it will bump up to the same patch version.\n        // 1.2.0-5 patches to 1.2.0\n        // 1.2.0 patches to 1.2.1\n        if (this.prerelease.length === 0) {\n          this.patch++\n        }\n        this.prerelease = []\n        break\n      // This probably shouldn't be used publicly.\n      // 1.0.0 'pre' would become 1.0.0-0 which is the wrong direction.\n      case 'pre':\n        if (this.prerelease.length === 0) {\n          this.prerelease = [0]\n        } else {\n          let i = this.prerelease.length\n          while (--i >= 0) {\n            if (typeof this.prerelease[i] === 'number') {\n              this.prerelease[i]++\n              i = -2\n            }\n          }\n          if (i === -1) {\n            // didn't increment anything\n            this.prerelease.push(0)\n          }\n        }\n        if (identifier) {\n          // 1.2.0-beta.1 bumps to 1.2.0-beta.2,\n          // 1.2.0-beta.fooblz or 1.2.0-beta bumps to 1.2.0-beta.0\n          if (this.prerelease[0] === identifier) {\n            if (isNaN(this.prerelease[1])) {\n              this.prerelease = [identifier, 0]\n            }\n          } else {\n            this.prerelease = [identifier, 0]\n          }\n        }\n        break\n\n      default:\n        throw new Error(`invalid increment argument: ${release}`)\n    }\n    this.format()\n    this.raw = this.version\n    return this\n  }\n}\n\nmodule.exports = SemVer\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,[encoded data, 13256 characters]\n//# sourceURL=webpack-internal:///./node_modules/vega-embed/node_modules/semver/classes/semver.js\n");

/***/ }),

/***/ "./node_modules/vega-embed/node_modules/semver/functions/clean.js":
/*!************************************************************************!*\
  !*** ./node_modules/vega-embed/node_modules/semver/functions/clean.js ***!
  \************************************************************************/
/*! no static exports found */
/***/ (function(module, exports, __webpack_require__) {

eval("const parse = __webpack_require__(/*! ./parse */ \"./node_modules/vega-embed/node_modules/semver/functions/parse.js\")\nconst clean = (version, options) => {\n  const s = parse(version.trim().replace(/^[=v]+/, ''), options)\n  return s ? s.version : null\n}\nmodule.exports = clean\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvdmVnYS1lbWJlZC9ub2RlX21vZHVsZXMvc2VtdmVyL2Z1bmN0aW9ucy9jbGVhbi5qcy5qcyIsInNvdXJjZXMiOlsid2VicGFjazovLy8uL25vZGVfbW9kdWxlcy92ZWdhLWVtYmVkL25vZGVfbW9kdWxlcy9zZW12ZXIvZnVuY3Rpb25zL2NsZWFuLmpzP2QyZWYiXSwic291cmNlc0NvbnRlbnQiOlsiY29uc3QgcGFyc2UgPSByZXF1aXJlKCcuL3BhcnNlJylcbmNvbnN0IGNsZWFuID0gKHZlcnNpb24sIG9wdGlvbnMpID0+IHtcbiAgY29uc3QgcyA9IHBhcnNlKHZlcnNpb24udHJpbSgpLnJlcGxhY2UoL15bPXZdKy8sICcnKSwgb3B0aW9ucylcbiAgcmV0dXJuIHMgPyBzLnZlcnNpb24gOiBudWxsXG59XG5tb2R1bGUuZXhwb3J0cyA9IGNsZWFuXG4iXSwibWFwcGluZ3MiOiJBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTsiLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///./node_modules/vega-embed/node_modules/semver/functions/clean.js\n");

/***/ }),

/***/ "./node_modules/vega-embed/node_modules/semver/functions/cmp.js":
/*!**********************************************************************!*\
  !*** ./node_modules/vega-embed/node_modules/semver/functions/cmp.js ***!
  \**********************************************************************/
/*! no static exports found */
/***/ (function(module, exports, __webpack_require__) {

eval("const eq = __webpack_require__(/*! ./eq */ \"./node_modules/vega-embed/node_modules/semver/functions/eq.js\")\nconst neq = __webpack_require__(/*! ./neq */ \"./node_modules/vega-embed/node_modules/semver/functions/neq.js\")\nconst gt = __webpack_require__(/*! ./gt */ \"./node_modules/vega-embed/node_modules/semver/functions/gt.js\")\nconst gte = __webpack_require__(/*! ./gte */ \"./node_modules/vega-embed/node_modules/semver/functions/gte.js\")\nconst lt = __webpack_require__(/*! ./lt */ \"./node_modules/vega-embed/node_modules/semver/functions/lt.js\")\nconst lte = __webpack_require__(/*! ./lte */ \"./node_modules/vega-embed/node_modules/semver/functions/lte.js\")\n\nconst cmp = (a, op, b, loose) => {\n  switch (op) {\n    case '===':\n      if (typeof a === 'object')\n        a = a.version\n      if (typeof b === 'object')\n        b = b.version\n      return a === b\n\n    case '!==':\n      if (typeof a === 'object')\n        a = a.version\n      if (typeof b === 'object')\n        b = b.version\n      return a !== b\n\n    case '':\n    case '=':\n    case '==':\n      return eq(a, b, loose)\n\n    case '!=':\n      return neq(a, b, loose)\n\n    case '>':\n      return gt(a, b, loose)\n\n    case '>=':\n      return gte(a, b, loose)\n\n    case '<':\n      return lt(a, b, loose)\n\n    case '<=':\n      return lte(a, b, loose)\n\n    default:\n      throw new TypeError(`Invalid operator: ${op}`)\n  }\n}\nmodule.exports = cmp\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvdmVnYS1lbWJlZC9ub2RlX21vZHVsZXMvc2VtdmVyL2Z1bmN0aW9ucy9jbXAuanMuanMiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvdmVnYS1lbWJlZC9ub2RlX21vZHVsZXMvc2VtdmVyL2Z1bmN0aW9ucy9jbXAuanM/YzRiZSJdLCJzb3VyY2VzQ29udGVudCI6WyJjb25zdCBlcSA9IHJlcXVpcmUoJy4vZXEnKVxuY29uc3QgbmVxID0gcmVxdWlyZSgnLi9uZXEnKVxuY29uc3QgZ3QgPSByZXF1aXJlKCcuL2d0JylcbmNvbnN0IGd0ZSA9IHJlcXVpcmUoJy4vZ3RlJylcbmNvbnN0IGx0ID0gcmVxdWlyZSgnLi9sdCcpXG5jb25zdCBsdGUgPSByZXF1aXJlKCcuL2x0ZScpXG5cbmNvbnN0IGNtcCA9IChhLCBvcCwgYiwgbG9vc2UpID0+IHtcbiAgc3dpdGNoIChvcCkge1xuICAgIGNhc2UgJz09PSc6XG4gICAgICBpZiAodHlwZW9mIGEgPT09ICdvYmplY3QnKVxuICAgICAgICBhID0gYS52ZXJzaW9uXG4gICAgICBpZiAodHlwZW9mIGIgPT09ICdvYmplY3QnKVxuICAgICAgICBiID0gYi52ZXJzaW9uXG4gICAgICByZXR1cm4gYSA9PT0gYlxuXG4gICAgY2FzZSAnIT09JzpcbiAgICAgIGlmICh0eXBlb2YgYSA9PT0gJ29iamVjdCcpXG4gICAgICAgIGEgPSBhLnZlcnNpb25cbiAgICAgIGlmICh0eXBlb2YgYiA9PT0gJ29iamVjdCcpXG4gICAgICAgIGIgPSBiLnZlcnNpb25cbiAgICAgIHJldHVybiBhICE9PSBiXG5cbiAgICBjYXNlICcnOlxuICAgIGNhc2UgJz0nOlxuICAgIGNhc2UgJz09JzpcbiAgICAgIHJldHVybiBlcShhLCBiLCBsb29zZSlcblxuICAgIGNhc2UgJyE9JzpcbiAgICAgIHJldHVybiBuZXEoYSwgYiwgbG9vc2UpXG5cbiAgICBjYXNlICc+JzpcbiAgICAgIHJldHVybiBndChhLCBiLCBsb29zZSlcblxuICAgIGNhc2UgJz49JzpcbiAgICAgIHJldHVybiBndGUoYSwgYiwgbG9vc2UpXG5cbiAgICBjYXNlICc8JzpcbiAgICAgIHJldHVybiBsdChhLCBiLCBsb29zZSlcblxuICAgIGNhc2UgJzw9JzpcbiAgICAgIHJldHVybiBsdGUoYSwgYiwgbG9vc2UpXG5cbiAgICBkZWZhdWx0OlxuICAgICAgdGhyb3cgbmV3IFR5cGVFcnJvcihgSW52YWxpZCBvcGVyYXRvcjogJHtvcH1gKVxuICB9XG59XG5tb2R1bGUuZXhwb3J0cyA9IGNtcFxuIl0sIm1hcHBpbmdzIjoiQUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7Iiwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///./node_modules/vega-embed/node_modules/semver/functions/cmp.js\n");

/***/ }),

/***/ "./node_modules/vega-embed/node_modules/semver/functions/coerce.js":
/*!*************************************************************************!*\
  !*** ./node_modules/vega-embed/node_modules/semver/functions/coerce.js ***!
  \*************************************************************************/
/*! no static exports found */
/***/ (function(module, exports, __webpack_require__) {

eval("const SemVer = __webpack_require__(/*! ../classes/semver */ \"./node_modules/vega-embed/node_modules/semver/classes/semver.js\")\nconst parse = __webpack_require__(/*! ./parse */ \"./node_modules/vega-embed/node_modules/semver/functions/parse.js\")\nconst {re, t} = __webpack_require__(/*! ../internal/re */ \"./node_modules/vega-embed/node_modules/semver/internal/re.js\")\n\nconst coerce = (version, options) => {\n  if (version instanceof SemVer) {\n    return version\n  }\n\n  if (typeof version === 'number') {\n    version = String(version)\n  }\n\n  if (typeof version !== 'string') {\n    return null\n  }\n\n  options = options || {}\n\n  let match = null\n  if (!options.rtl) {\n    match = version.match(re[t.COERCE])\n  } else {\n    // Find the right-most coercible string that does not share\n    // a terminus with a more left-ward coercible string.\n    // Eg, '1.2.3.4' wants to coerce '2.3.4', not '3.4' or '4'\n    //\n    // Walk through the string checking with a /g regexp\n    // Manually set the index so as to pick up overlapping matches.\n    // Stop when we get a match that ends at the string end, since no\n    // coercible string can be more right-ward without the same terminus.\n    let next\n    while ((next = re[t.COERCERTL].exec(version)) &&\n        (!match || match.index + match[0].length !== version.length)\n    ) {\n      if (!match ||\n            next.index + next[0].length !== match.index + match[0].length) {\n        match = next\n      }\n      re[t.COERCERTL].lastIndex = next.index + next[1].length + next[2].length\n    }\n    // leave it in a clean state\n    re[t.COERCERTL].lastIndex = -1\n  }\n\n  if (match === null)\n    return null\n\n  return parse(`${match[2]}.${match[3] || '0'}.${match[4] || '0'}`, options)\n}\nmodule.exports = coerce\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvdmVnYS1lbWJlZC9ub2RlX21vZHVsZXMvc2VtdmVyL2Z1bmN0aW9ucy9jb2VyY2UuanMuanMiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvdmVnYS1lbWJlZC9ub2RlX21vZHVsZXMvc2VtdmVyL2Z1bmN0aW9ucy9jb2VyY2UuanM/MGE2NyJdLCJzb3VyY2VzQ29udGVudCI6WyJjb25zdCBTZW1WZXIgPSByZXF1aXJlKCcuLi9jbGFzc2VzL3NlbXZlcicpXG5jb25zdCBwYXJzZSA9IHJlcXVpcmUoJy4vcGFyc2UnKVxuY29uc3Qge3JlLCB0fSA9IHJlcXVpcmUoJy4uL2ludGVybmFsL3JlJylcblxuY29uc3QgY29lcmNlID0gKHZlcnNpb24sIG9wdGlvbnMpID0+IHtcbiAgaWYgKHZlcnNpb24gaW5zdGFuY2VvZiBTZW1WZXIpIHtcbiAgICByZXR1cm4gdmVyc2lvblxuICB9XG5cbiAgaWYgKHR5cGVvZiB2ZXJzaW9uID09PSAnbnVtYmVyJykge1xuICAgIHZlcnNpb24gPSBTdHJpbmcodmVyc2lvbilcbiAgfVxuXG4gIGlmICh0eXBlb2YgdmVyc2lvbiAhPT0gJ3N0cmluZycpIHtcbiAgICByZXR1cm4gbnVsbFxuICB9XG5cbiAgb3B0aW9ucyA9IG9wdGlvbnMgfHwge31cblxuICBsZXQgbWF0Y2ggPSBudWxsXG4gIGlmICghb3B0aW9ucy5ydGwpIHtcbiAgICBtYXRjaCA9IHZlcnNpb24ubWF0Y2gocmVbdC5DT0VSQ0VdKVxuICB9IGVsc2Uge1xuICAgIC8vIEZpbmQgdGhlIHJpZ2h0LW1vc3QgY29lcmNpYmxlIHN0cmluZyB0aGF0IGRvZXMgbm90IHNoYXJlXG4gICAgLy8gYSB0ZXJtaW51cyB3aXRoIGEgbW9yZSBsZWZ0LXdhcmQgY29lcmNpYmxlIHN0cmluZy5cbiAgICAvLyBFZywgJzEuMi4zLjQnIHdhbnRzIHRvIGNvZXJjZSAnMi4zLjQnLCBub3QgJzMuNCcgb3IgJzQnXG4gICAgLy9cbiAgICAvLyBXYWxrIHRocm91Z2ggdGhlIHN0cmluZyBjaGVja2luZyB3aXRoIGEgL2cgcmVnZXhwXG4gICAgLy8gTWFudWFsbHkgc2V0IHRoZSBpbmRleCBzbyBhcyB0byBwaWNrIHVwIG92ZXJsYXBwaW5nIG1hdGNoZXMuXG4gICAgLy8gU3RvcCB3aGVuIHdlIGdldCBhIG1hdGNoIHRoYXQgZW5kcyBhdCB0aGUgc3RyaW5nIGVuZCwgc2luY2Ugbm9cbiAgICAvLyBjb2VyY2libGUgc3RyaW5nIGNhbiBiZSBtb3JlIHJpZ2h0LXdhcmQgd2l0aG91dCB0aGUgc2FtZSB0ZXJtaW51cy5cbiAgICBsZXQgbmV4dFxuICAgIHdoaWxlICgobmV4dCA9IHJlW3QuQ09FUkNFUlRMXS5leGVjKHZlcnNpb24pKSAmJlxuICAgICAgICAoIW1hdGNoIHx8IG1hdGNoLmluZGV4ICsgbWF0Y2hbMF0ubGVuZ3RoICE9PSB2ZXJzaW9uLmxlbmd0aClcbiAgICApIHtcbiAgICAgIGlmICghbWF0Y2ggfHxcbiAgICAgICAgICAgIG5leHQuaW5kZXggKyBuZXh0WzBdLmxlbmd0aCAhPT0gbWF0Y2guaW5kZXggKyBtYXRjaFswXS5sZW5ndGgpIHtcbiAgICAgICAgbWF0Y2ggPSBuZXh0XG4gICAgICB9XG4gICAgICByZVt0LkNPRVJDRVJUTF0ubGFzdEluZGV4ID0gbmV4dC5pbmRleCArIG5leHRbMV0ubGVuZ3RoICsgbmV4dFsyXS5sZW5ndGhcbiAgICB9XG4gICAgLy8gbGVhdmUgaXQgaW4gYSBjbGVhbiBzdGF0ZVxuICAgIHJlW3QuQ09FUkNFUlRMXS5sYXN0SW5kZXggPSAtMVxuICB9XG5cbiAgaWYgKG1hdGNoID09PSBudWxsKVxuICAgIHJldHVybiBudWxsXG5cbiAgcmV0dXJuIHBhcnNlKGAke21hdGNoWzJdfS4ke21hdGNoWzNdIHx8ICcwJ30uJHttYXRjaFs0XSB8fCAnMCd9YCwgb3B0aW9ucylcbn1cbm1vZHVsZS5leHBvcnRzID0gY29lcmNlXG4iXSwibWFwcGluZ3MiOiJBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTsiLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///./node_modules/vega-embed/node_modules/semver/functions/coerce.js\n");

/***/ }),

/***/ "./node_modules/vega-embed/node_modules/semver/functions/compare-build.js":
/*!********************************************************************************!*\
  !*** ./node_modules/vega-embed/node_modules/semver/functions/compare-build.js ***!
  \********************************************************************************/
/*! no static exports found */
/***/ (function(module, exports, __webpack_require__) {

eval("const SemVer = __webpack_require__(/*! ../classes/semver */ \"./node_modules/vega-embed/node_modules/semver/classes/semver.js\")\nconst compareBuild = (a, b, loose) => {\n  const versionA = new SemVer(a, loose)\n  const versionB = new SemVer(b, loose)\n  return versionA.compare(versionB) || versionA.compareBuild(versionB)\n}\nmodule.exports = compareBuild\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvdmVnYS1lbWJlZC9ub2RlX21vZHVsZXMvc2VtdmVyL2Z1bmN0aW9ucy9jb21wYXJlLWJ1aWxkLmpzLmpzIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL3ZlZ2EtZW1iZWQvbm9kZV9tb2R1bGVzL3NlbXZlci9mdW5jdGlvbnMvY29tcGFyZS1idWlsZC5qcz8xY2M2Il0sInNvdXJjZXNDb250ZW50IjpbImNvbnN0IFNlbVZlciA9IHJlcXVpcmUoJy4uL2NsYXNzZXMvc2VtdmVyJylcbmNvbnN0IGNvbXBhcmVCdWlsZCA9IChhLCBiLCBsb29zZSkgPT4ge1xuICBjb25zdCB2ZXJzaW9uQSA9IG5ldyBTZW1WZXIoYSwgbG9vc2UpXG4gIGNvbnN0IHZlcnNpb25CID0gbmV3IFNlbVZlcihiLCBsb29zZSlcbiAgcmV0dXJuIHZlcnNpb25BLmNvbXBhcmUodmVyc2lvbkIpIHx8IHZlcnNpb25BLmNvbXBhcmVCdWlsZCh2ZXJzaW9uQilcbn1cbm1vZHVsZS5leHBvcnRzID0gY29tcGFyZUJ1aWxkXG4iXSwibWFwcGluZ3MiOiJBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOyIsInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///./node_modules/vega-embed/node_modules/semver/functions/compare-build.js\n");

/***/ }),

/***/ "./node_modules/vega-embed/node_modules/semver/functions/compare-loose.js":
/*!********************************************************************************!*\
  !*** ./node_modules/vega-embed/node_modules/semver/functions/compare-loose.js ***!
  \********************************************************************************/
/*! no static exports found */
/***/ (function(module, exports, __webpack_require__) {

eval("const compare = __webpack_require__(/*! ./compare */ \"./node_modules/vega-embed/node_modules/semver/functions/compare.js\")\nconst compareLoose = (a, b) => compare(a, b, true)\nmodule.exports = compareLoose\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvdmVnYS1lbWJlZC9ub2RlX21vZHVsZXMvc2VtdmVyL2Z1bmN0aW9ucy9jb21wYXJlLWxvb3NlLmpzLmpzIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL3ZlZ2EtZW1iZWQvbm9kZV9tb2R1bGVzL3NlbXZlci9mdW5jdGlvbnMvY29tcGFyZS1sb29zZS5qcz9iMDBiIl0sInNvdXJjZXNDb250ZW50IjpbImNvbnN0IGNvbXBhcmUgPSByZXF1aXJlKCcuL2NvbXBhcmUnKVxuY29uc3QgY29tcGFyZUxvb3NlID0gKGEsIGIpID0+IGNvbXBhcmUoYSwgYiwgdHJ1ZSlcbm1vZHVsZS5leHBvcnRzID0gY29tcGFyZUxvb3NlXG4iXSwibWFwcGluZ3MiOiJBQUFBO0FBQ0E7QUFDQTsiLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///./node_modules/vega-embed/node_modules/semver/functions/compare-loose.js\n");

/***/ }),

/***/ "./node_modules/vega-embed/node_modules/semver/functions/compare.js":
/*!**************************************************************************!*\
  !*** ./node_modules/vega-embed/node_modules/semver/functions/compare.js ***!
  \**************************************************************************/
/*! no static exports found */
/***/ (function(module, exports, __webpack_require__) {

eval("const SemVer = __webpack_require__(/*! ../classes/semver */ \"./node_modules/vega-embed/node_modules/semver/classes/semver.js\")\nconst compare = (a, b, loose) =>\n  new SemVer(a, loose).compare(new SemVer(b, loose))\n\nmodule.exports = compare\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvdmVnYS1lbWJlZC9ub2RlX21vZHVsZXMvc2VtdmVyL2Z1bmN0aW9ucy9jb21wYXJlLmpzLmpzIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL3ZlZ2EtZW1iZWQvbm9kZV9tb2R1bGVzL3NlbXZlci9mdW5jdGlvbnMvY29tcGFyZS5qcz8zMDM0Il0sInNvdXJjZXNDb250ZW50IjpbImNvbnN0IFNlbVZlciA9IHJlcXVpcmUoJy4uL2NsYXNzZXMvc2VtdmVyJylcbmNvbnN0IGNvbXBhcmUgPSAoYSwgYiwgbG9vc2UpID0+XG4gIG5ldyBTZW1WZXIoYSwgbG9vc2UpLmNvbXBhcmUobmV3IFNlbVZlcihiLCBsb29zZSkpXG5cbm1vZHVsZS5leHBvcnRzID0gY29tcGFyZVxuIl0sIm1hcHBpbmdzIjoiQUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOyIsInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///./node_modules/vega-embed/node_modules/semver/functions/compare.js\n");

/***/ }),

/***/ "./node_modules/vega-embed/node_modules/semver/functions/diff.js":
/*!***********************************************************************!*\
  !*** ./node_modules/vega-embed/node_modules/semver/functions/diff.js ***!
  \***********************************************************************/
/*! no static exports found */
/***/ (function(module, exports, __webpack_require__) {

eval("const parse = __webpack_require__(/*! ./parse */ \"./node_modules/vega-embed/node_modules/semver/functions/parse.js\")\nconst eq = __webpack_require__(/*! ./eq */ \"./node_modules/vega-embed/node_modules/semver/functions/eq.js\")\n\nconst diff = (version1, version2) => {\n  if (eq(version1, version2)) {\n    return null\n  } else {\n    const v1 = parse(version1)\n    const v2 = parse(version2)\n    const hasPre = v1.prerelease.length || v2.prerelease.length\n    const prefix = hasPre ? 'pre' : ''\n    const defaultResult = hasPre ? 'prerelease' : ''\n    for (const key in v1) {\n      if (key === 'major' || key === 'minor' || key === 'patch') {\n        if (v1[key] !== v2[key]) {\n          return prefix + key\n        }\n      }\n    }\n    return defaultResult // may be undefined\n  }\n}\nmodule.exports = diff\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvdmVnYS1lbWJlZC9ub2RlX21vZHVsZXMvc2VtdmVyL2Z1bmN0aW9ucy9kaWZmLmpzLmpzIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL3ZlZ2EtZW1iZWQvbm9kZV9tb2R1bGVzL3NlbXZlci9mdW5jdGlvbnMvZGlmZi5qcz82Yjc4Il0sInNvdXJjZXNDb250ZW50IjpbImNvbnN0IHBhcnNlID0gcmVxdWlyZSgnLi9wYXJzZScpXG5jb25zdCBlcSA9IHJlcXVpcmUoJy4vZXEnKVxuXG5jb25zdCBkaWZmID0gKHZlcnNpb24xLCB2ZXJzaW9uMikgPT4ge1xuICBpZiAoZXEodmVyc2lvbjEsIHZlcnNpb24yKSkge1xuICAgIHJldHVybiBudWxsXG4gIH0gZWxzZSB7XG4gICAgY29uc3QgdjEgPSBwYXJzZSh2ZXJzaW9uMSlcbiAgICBjb25zdCB2MiA9IHBhcnNlKHZlcnNpb24yKVxuICAgIGNvbnN0IGhhc1ByZSA9IHYxLnByZXJlbGVhc2UubGVuZ3RoIHx8IHYyLnByZXJlbGVhc2UubGVuZ3RoXG4gICAgY29uc3QgcHJlZml4ID0gaGFzUHJlID8gJ3ByZScgOiAnJ1xuICAgIGNvbnN0IGRlZmF1bHRSZXN1bHQgPSBoYXNQcmUgPyAncHJlcmVsZWFzZScgOiAnJ1xuICAgIGZvciAoY29uc3Qga2V5IGluIHYxKSB7XG4gICAgICBpZiAoa2V5ID09PSAnbWFqb3InIHx8IGtleSA9PT0gJ21pbm9yJyB8fCBrZXkgPT09ICdwYXRjaCcpIHtcbiAgICAgICAgaWYgKHYxW2tleV0gIT09IHYyW2tleV0pIHtcbiAgICAgICAgICByZXR1cm4gcHJlZml4ICsga2V5XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9XG4gICAgcmV0dXJuIGRlZmF1bHRSZXN1bHQgLy8gbWF5IGJlIHVuZGVmaW5lZFxuICB9XG59XG5tb2R1bGUuZXhwb3J0cyA9IGRpZmZcbiJdLCJtYXBwaW5ncyI6IkFBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTsiLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///./node_modules/vega-embed/node_modules/semver/functions/diff.js\n");

/***/ }),

/***/ "./node_modules/vega-embed/node_modules/semver/functions/eq.js":
/*!*********************************************************************!*\
  !*** ./node_modules/vega-embed/node_modules/semver/functions/eq.js ***!
  \*********************************************************************/
/*! no static exports found */
/***/ (function(module, exports, __webpack_require__) {

eval("const compare = __webpack_require__(/*! ./compare */ \"./node_modules/vega-embed/node_modules/semver/functions/compare.js\")\nconst eq = (a, b, loose) => compare(a, b, loose) === 0\nmodule.exports = eq\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvdmVnYS1lbWJlZC9ub2RlX21vZHVsZXMvc2VtdmVyL2Z1bmN0aW9ucy9lcS5qcy5qcyIsInNvdXJjZXMiOlsid2VicGFjazovLy8uL25vZGVfbW9kdWxlcy92ZWdhLWVtYmVkL25vZGVfbW9kdWxlcy9zZW12ZXIvZnVuY3Rpb25zL2VxLmpzPzQzOTIiXSwic291cmNlc0NvbnRlbnQiOlsiY29uc3QgY29tcGFyZSA9IHJlcXVpcmUoJy4vY29tcGFyZScpXG5jb25zdCBlcSA9IChhLCBiLCBsb29zZSkgPT4gY29tcGFyZShhLCBiLCBsb29zZSkgPT09IDBcbm1vZHVsZS5leHBvcnRzID0gZXFcbiJdLCJtYXBwaW5ncyI6IkFBQUE7QUFDQTtBQUNBOyIsInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///./node_modules/vega-embed/node_modules/semver/functions/eq.js\n");

/***/ }),

/***/ "./node_modules/vega-embed/node_modules/semver/functions/gt.js":
/*!*********************************************************************!*\
  !*** ./node_modules/vega-embed/node_modules/semver/functions/gt.js ***!
  \*********************************************************************/
/*! no static exports found */
/***/ (function(module, exports, __webpack_require__) {

eval("const compare = __webpack_require__(/*! ./compare */ \"./node_modules/vega-embed/node_modules/semver/functions/compare.js\")\nconst gt = (a, b, loose) => compare(a, b, loose) > 0\nmodule.exports = gt\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvdmVnYS1lbWJlZC9ub2RlX21vZHVsZXMvc2VtdmVyL2Z1bmN0aW9ucy9ndC5qcy5qcyIsInNvdXJjZXMiOlsid2VicGFjazovLy8uL25vZGVfbW9kdWxlcy92ZWdhLWVtYmVkL25vZGVfbW9kdWxlcy9zZW12ZXIvZnVuY3Rpb25zL2d0LmpzP2JhYzQiXSwic291cmNlc0NvbnRlbnQiOlsiY29uc3QgY29tcGFyZSA9IHJlcXVpcmUoJy4vY29tcGFyZScpXG5jb25zdCBndCA9IChhLCBiLCBsb29zZSkgPT4gY29tcGFyZShhLCBiLCBsb29zZSkgPiAwXG5tb2R1bGUuZXhwb3J0cyA9IGd0XG4iXSwibWFwcGluZ3MiOiJBQUFBO0FBQ0E7QUFDQTsiLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///./node_modules/vega-embed/node_modules/semver/functions/gt.js\n");

/***/ }),

/***/ "./node_modules/vega-embed/node_modules/semver/functions/gte.js":
/*!**********************************************************************!*\
  !*** ./node_modules/vega-embed/node_modules/semver/functions/gte.js ***!
  \**********************************************************************/
/*! no static exports found */
/***/ (function(module, exports, __webpack_require__) {

eval("const compare = __webpack_require__(/*! ./compare */ \"./node_modules/vega-embed/node_modules/semver/functions/compare.js\")\nconst gte = (a, b, loose) => compare(a, b, loose) >= 0\nmodule.exports = gte\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvdmVnYS1lbWJlZC9ub2RlX21vZHVsZXMvc2VtdmVyL2Z1bmN0aW9ucy9ndGUuanMuanMiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvdmVnYS1lbWJlZC9ub2RlX21vZHVsZXMvc2VtdmVyL2Z1bmN0aW9ucy9ndGUuanM/YTJhMyJdLCJzb3VyY2VzQ29udGVudCI6WyJjb25zdCBjb21wYXJlID0gcmVxdWlyZSgnLi9jb21wYXJlJylcbmNvbnN0IGd0ZSA9IChhLCBiLCBsb29zZSkgPT4gY29tcGFyZShhLCBiLCBsb29zZSkgPj0gMFxubW9kdWxlLmV4cG9ydHMgPSBndGVcbiJdLCJtYXBwaW5ncyI6IkFBQUE7QUFDQTtBQUNBOyIsInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///./node_modules/vega-embed/node_modules/semver/functions/gte.js\n");

/***/ }),

/***/ "./node_modules/vega-embed/node_modules/semver/functions/inc.js":
/*!**********************************************************************!*\
  !*** ./node_modules/vega-embed/node_modules/semver/functions/inc.js ***!
  \**********************************************************************/
/*! no static exports found */
/***/ (function(module, exports, __webpack_require__) {

eval("const SemVer = __webpack_require__(/*! ../classes/semver */ \"./node_modules/vega-embed/node_modules/semver/classes/semver.js\")\n\nconst inc = (version, release, options, identifier) => {\n  if (typeof (options) === 'string') {\n    identifier = options\n    options = undefined\n  }\n\n  try {\n    return new SemVer(version, options).inc(release, identifier).version\n  } catch (er) {\n    return null\n  }\n}\nmodule.exports = inc\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvdmVnYS1lbWJlZC9ub2RlX21vZHVsZXMvc2VtdmVyL2Z1bmN0aW9ucy9pbmMuanMuanMiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvdmVnYS1lbWJlZC9ub2RlX21vZHVsZXMvc2VtdmVyL2Z1bmN0aW9ucy9pbmMuanM/MDE1OSJdLCJzb3VyY2VzQ29udGVudCI6WyJjb25zdCBTZW1WZXIgPSByZXF1aXJlKCcuLi9jbGFzc2VzL3NlbXZlcicpXG5cbmNvbnN0IGluYyA9ICh2ZXJzaW9uLCByZWxlYXNlLCBvcHRpb25zLCBpZGVudGlmaWVyKSA9PiB7XG4gIGlmICh0eXBlb2YgKG9wdGlvbnMpID09PSAnc3RyaW5nJykge1xuICAgIGlkZW50aWZpZXIgPSBvcHRpb25zXG4gICAgb3B0aW9ucyA9IHVuZGVmaW5lZFxuICB9XG5cbiAgdHJ5IHtcbiAgICByZXR1cm4gbmV3IFNlbVZlcih2ZXJzaW9uLCBvcHRpb25zKS5pbmMocmVsZWFzZSwgaWRlbnRpZmllcikudmVyc2lvblxuICB9IGNhdGNoIChlcikge1xuICAgIHJldHVybiBudWxsXG4gIH1cbn1cbm1vZHVsZS5leHBvcnRzID0gaW5jXG4iXSwibWFwcGluZ3MiOiJBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTsiLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///./node_modules/vega-embed/node_modules/semver/functions/inc.js\n");

/***/ }),

/***/ "./node_modules/vega-embed/node_modules/semver/functions/lt.js":
/*!*********************************************************************!*\
  !*** ./node_modules/vega-embed/node_modules/semver/functions/lt.js ***!
  \*********************************************************************/
/*! no static exports found */
/***/ (function(module, exports, __webpack_require__) {

eval("const compare = __webpack_require__(/*! ./compare */ \"./node_modules/vega-embed/node_modules/semver/functions/compare.js\")\nconst lt = (a, b, loose) => compare(a, b, loose) < 0\nmodule.exports = lt\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvdmVnYS1lbWJlZC9ub2RlX21vZHVsZXMvc2VtdmVyL2Z1bmN0aW9ucy9sdC5qcy5qcyIsInNvdXJjZXMiOlsid2VicGFjazovLy8uL25vZGVfbW9kdWxlcy92ZWdhLWVtYmVkL25vZGVfbW9kdWxlcy9zZW12ZXIvZnVuY3Rpb25zL2x0LmpzPzM4ZmEiXSwic291cmNlc0NvbnRlbnQiOlsiY29uc3QgY29tcGFyZSA9IHJlcXVpcmUoJy4vY29tcGFyZScpXG5jb25zdCBsdCA9IChhLCBiLCBsb29zZSkgPT4gY29tcGFyZShhLCBiLCBsb29zZSkgPCAwXG5tb2R1bGUuZXhwb3J0cyA9IGx0XG4iXSwibWFwcGluZ3MiOiJBQUFBO0FBQ0E7QUFDQTsiLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///./node_modules/vega-embed/node_modules/semver/functions/lt.js\n");

/***/ }),

/***/ "./node_modules/vega-embed/node_modules/semver/functions/lte.js":
/*!**********************************************************************!*\
  !*** ./node_modules/vega-embed/node_modules/semver/functions/lte.js ***!
  \**********************************************************************/
/*! no static exports found */
/***/ (function(module, exports, __webpack_require__) {

eval("const compare = __webpack_require__(/*! ./compare */ \"./node_modules/vega-embed/node_modules/semver/functions/compare.js\")\nconst lte = (a, b, loose) => compare(a, b, loose) <= 0\nmodule.exports = lte\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvdmVnYS1lbWJlZC9ub2RlX21vZHVsZXMvc2VtdmVyL2Z1bmN0aW9ucy9sdGUuanMuanMiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvdmVnYS1lbWJlZC9ub2RlX21vZHVsZXMvc2VtdmVyL2Z1bmN0aW9ucy9sdGUuanM/NjhkMyJdLCJzb3VyY2VzQ29udGVudCI6WyJjb25zdCBjb21wYXJlID0gcmVxdWlyZSgnLi9jb21wYXJlJylcbmNvbnN0IGx0ZSA9IChhLCBiLCBsb29zZSkgPT4gY29tcGFyZShhLCBiLCBsb29zZSkgPD0gMFxubW9kdWxlLmV4cG9ydHMgPSBsdGVcbiJdLCJtYXBwaW5ncyI6IkFBQUE7QUFDQTtBQUNBOyIsInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///./node_modules/vega-embed/node_modules/semver/functions/lte.js\n");

/***/ }),

/***/ "./node_modules/vega-embed/node_modules/semver/functions/major.js":
/*!************************************************************************!*\
  !*** ./node_modules/vega-embed/node_modules/semver/functions/major.js ***!
  \************************************************************************/
/*! no static exports found */
/***/ (function(module, exports, __webpack_require__) {

eval("const SemVer = __webpack_require__(/*! ../classes/semver */ \"./node_modules/vega-embed/node_modules/semver/classes/semver.js\")\nconst major = (a, loose) => new SemVer(a, loose).major\nmodule.exports = major\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvdmVnYS1lbWJlZC9ub2RlX21vZHVsZXMvc2VtdmVyL2Z1bmN0aW9ucy9tYWpvci5qcy5qcyIsInNvdXJjZXMiOlsid2VicGFjazovLy8uL25vZGVfbW9kdWxlcy92ZWdhLWVtYmVkL25vZGVfbW9kdWxlcy9zZW12ZXIvZnVuY3Rpb25zL21ham9yLmpzPzRlMTQiXSwic291cmNlc0NvbnRlbnQiOlsiY29uc3QgU2VtVmVyID0gcmVxdWlyZSgnLi4vY2xhc3Nlcy9zZW12ZXInKVxuY29uc3QgbWFqb3IgPSAoYSwgbG9vc2UpID0+IG5ldyBTZW1WZXIoYSwgbG9vc2UpLm1ham9yXG5tb2R1bGUuZXhwb3J0cyA9IG1ham9yXG4iXSwibWFwcGluZ3MiOiJBQUFBO0FBQ0E7QUFDQTsiLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///./node_modules/vega-embed/node_modules/semver/functions/major.js\n");

/***/ }),

/***/ "./node_modules/vega-embed/node_modules/semver/functions/minor.js":
/*!************************************************************************!*\
  !*** ./node_modules/vega-embed/node_modules/semver/functions/minor.js ***!
  \************************************************************************/
/*! no static exports found */
/***/ (function(module, exports, __webpack_require__) {

eval("const SemVer = __webpack_require__(/*! ../classes/semver */ \"./node_modules/vega-embed/node_modules/semver/classes/semver.js\")\nconst minor = (a, loose) => new SemVer(a, loose).minor\nmodule.exports = minor\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvdmVnYS1lbWJlZC9ub2RlX21vZHVsZXMvc2VtdmVyL2Z1bmN0aW9ucy9taW5vci5qcy5qcyIsInNvdXJjZXMiOlsid2VicGFjazovLy8uL25vZGVfbW9kdWxlcy92ZWdhLWVtYmVkL25vZGVfbW9kdWxlcy9zZW12ZXIvZnVuY3Rpb25zL21pbm9yLmpzP2MyZDUiXSwic291cmNlc0NvbnRlbnQiOlsiY29uc3QgU2VtVmVyID0gcmVxdWlyZSgnLi4vY2xhc3Nlcy9zZW12ZXInKVxuY29uc3QgbWlub3IgPSAoYSwgbG9vc2UpID0+IG5ldyBTZW1WZXIoYSwgbG9vc2UpLm1pbm9yXG5tb2R1bGUuZXhwb3J0cyA9IG1pbm9yXG4iXSwibWFwcGluZ3MiOiJBQUFBO0FBQ0E7QUFDQTsiLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///./node_modules/vega-embed/node_modules/semver/functions/minor.js\n");

/***/ }),

/***/ "./node_modules/vega-embed/node_modules/semver/functions/neq.js":
/*!**********************************************************************!*\
  !*** ./node_modules/vega-embed/node_modules/semver/functions/neq.js ***!
  \**********************************************************************/
/*! no static exports found */
/***/ (function(module, exports, __webpack_require__) {

eval("const compare = __webpack_require__(/*! ./compare */ \"./node_modules/vega-embed/node_modules/semver/functions/compare.js\")\nconst neq = (a, b, loose) => compare(a, b, loose) !== 0\nmodule.exports = neq\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvdmVnYS1lbWJlZC9ub2RlX21vZHVsZXMvc2VtdmVyL2Z1bmN0aW9ucy9uZXEuanMuanMiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvdmVnYS1lbWJlZC9ub2RlX21vZHVsZXMvc2VtdmVyL2Z1bmN0aW9ucy9uZXEuanM/ZjE5NSJdLCJzb3VyY2VzQ29udGVudCI6WyJjb25zdCBjb21wYXJlID0gcmVxdWlyZSgnLi9jb21wYXJlJylcbmNvbnN0IG5lcSA9IChhLCBiLCBsb29zZSkgPT4gY29tcGFyZShhLCBiLCBsb29zZSkgIT09IDBcbm1vZHVsZS5leHBvcnRzID0gbmVxXG4iXSwibWFwcGluZ3MiOiJBQUFBO0FBQ0E7QUFDQTsiLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///./node_modules/vega-embed/node_modules/semver/functions/neq.js\n");

/***/ }),

/***/ "./node_modules/vega-embed/node_modules/semver/functions/parse.js":
/*!************************************************************************!*\
  !*** ./node_modules/vega-embed/node_modules/semver/functions/parse.js ***!
  \************************************************************************/
/*! no static exports found */
/***/ (function(module, exports, __webpack_require__) {

eval("const {MAX_LENGTH} = __webpack_require__(/*! ../internal/constants */ \"./node_modules/vega-embed/node_modules/semver/internal/constants.js\")\nconst { re, t } = __webpack_require__(/*! ../internal/re */ \"./node_modules/vega-embed/node_modules/semver/internal/re.js\")\nconst SemVer = __webpack_require__(/*! ../classes/semver */ \"./node_modules/vega-embed/node_modules/semver/classes/semver.js\")\n\nconst parseOptions = __webpack_require__(/*! ../internal/parse-options */ \"./node_modules/vega-embed/node_modules/semver/internal/parse-options.js\")\nconst parse = (version, options) => {\n  options = parseOptions(options)\n\n  if (version instanceof SemVer) {\n    return version\n  }\n\n  if (typeof version !== 'string') {\n    return null\n  }\n\n  if (version.length > MAX_LENGTH) {\n    return null\n  }\n\n  const r = options.loose ? re[t.LOOSE] : re[t.FULL]\n  if (!r.test(version)) {\n    return null\n  }\n\n  try {\n    return new SemVer(version, options)\n  } catch (er) {\n    return null\n  }\n}\n\nmodule.exports = parse\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvdmVnYS1lbWJlZC9ub2RlX21vZHVsZXMvc2VtdmVyL2Z1bmN0aW9ucy9wYXJzZS5qcy5qcyIsInNvdXJjZXMiOlsid2VicGFjazovLy8uL25vZGVfbW9kdWxlcy92ZWdhLWVtYmVkL25vZGVfbW9kdWxlcy9zZW12ZXIvZnVuY3Rpb25zL3BhcnNlLmpzP2EyMzYiXSwic291cmNlc0NvbnRlbnQiOlsiY29uc3Qge01BWF9MRU5HVEh9ID0gcmVxdWlyZSgnLi4vaW50ZXJuYWwvY29uc3RhbnRzJylcbmNvbnN0IHsgcmUsIHQgfSA9IHJlcXVpcmUoJy4uL2ludGVybmFsL3JlJylcbmNvbnN0IFNlbVZlciA9IHJlcXVpcmUoJy4uL2NsYXNzZXMvc2VtdmVyJylcblxuY29uc3QgcGFyc2VPcHRpb25zID0gcmVxdWlyZSgnLi4vaW50ZXJuYWwvcGFyc2Utb3B0aW9ucycpXG5jb25zdCBwYXJzZSA9ICh2ZXJzaW9uLCBvcHRpb25zKSA9PiB7XG4gIG9wdGlvbnMgPSBwYXJzZU9wdGlvbnMob3B0aW9ucylcblxuICBpZiAodmVyc2lvbiBpbnN0YW5jZW9mIFNlbVZlcikge1xuICAgIHJldHVybiB2ZXJzaW9uXG4gIH1cblxuICBpZiAodHlwZW9mIHZlcnNpb24gIT09ICdzdHJpbmcnKSB7XG4gICAgcmV0dXJuIG51bGxcbiAgfVxuXG4gIGlmICh2ZXJzaW9uLmxlbmd0aCA+IE1BWF9MRU5HVEgpIHtcbiAgICByZXR1cm4gbnVsbFxuICB9XG5cbiAgY29uc3QgciA9IG9wdGlvbnMubG9vc2UgPyByZVt0LkxPT1NFXSA6IHJlW3QuRlVMTF1cbiAgaWYgKCFyLnRlc3QodmVyc2lvbikpIHtcbiAgICByZXR1cm4gbnVsbFxuICB9XG5cbiAgdHJ5IHtcbiAgICByZXR1cm4gbmV3IFNlbVZlcih2ZXJzaW9uLCBvcHRpb25zKVxuICB9IGNhdGNoIChlcikge1xuICAgIHJldHVybiBudWxsXG4gIH1cbn1cblxubW9kdWxlLmV4cG9ydHMgPSBwYXJzZVxuIl0sIm1hcHBpbmdzIjoiQUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7Iiwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///./node_modules/vega-embed/node_modules/semver/functions/parse.js\n");

/***/ }),

/***/ "./node_modules/vega-embed/node_modules/semver/functions/patch.js":
/*!************************************************************************!*\
  !*** ./node_modules/vega-embed/node_modules/semver/functions/patch.js ***!
  \************************************************************************/
/*! no static exports found */
/***/ (function(module, exports, __webpack_require__) {

eval("const SemVer = __webpack_require__(/*! ../classes/semver */ \"./node_modules/vega-embed/node_modules/semver/classes/semver.js\")\nconst patch = (a, loose) => new SemVer(a, loose).patch\nmodule.exports = patch\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvdmVnYS1lbWJlZC9ub2RlX21vZHVsZXMvc2VtdmVyL2Z1bmN0aW9ucy9wYXRjaC5qcy5qcyIsInNvdXJjZXMiOlsid2VicGFjazovLy8uL25vZGVfbW9kdWxlcy92ZWdhLWVtYmVkL25vZGVfbW9kdWxlcy9zZW12ZXIvZnVuY3Rpb25zL3BhdGNoLmpzPzRjYTQiXSwic291cmNlc0NvbnRlbnQiOlsiY29uc3QgU2VtVmVyID0gcmVxdWlyZSgnLi4vY2xhc3Nlcy9zZW12ZXInKVxuY29uc3QgcGF0Y2ggPSAoYSwgbG9vc2UpID0+IG5ldyBTZW1WZXIoYSwgbG9vc2UpLnBhdGNoXG5tb2R1bGUuZXhwb3J0cyA9IHBhdGNoXG4iXSwibWFwcGluZ3MiOiJBQUFBO0FBQ0E7QUFDQTsiLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///./node_modules/vega-embed/node_modules/semver/functions/patch.js\n");

/***/ }),

/***/ "./node_modules/vega-embed/node_modules/semver/functions/prerelease.js":
/*!*****************************************************************************!*\
  !*** ./node_modules/vega-embed/node_modules/semver/functions/prerelease.js ***!
  \*****************************************************************************/
/*! no static exports found */
/***/ (function(module, exports, __webpack_require__) {

eval("const parse = __webpack_require__(/*! ./parse */ \"./node_modules/vega-embed/node_modules/semver/functions/parse.js\")\nconst prerelease = (version, options) => {\n  const parsed = parse(version, options)\n  return (parsed && parsed.prerelease.length) ? parsed.prerelease : null\n}\nmodule.exports = prerelease\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvdmVnYS1lbWJlZC9ub2RlX21vZHVsZXMvc2VtdmVyL2Z1bmN0aW9ucy9wcmVyZWxlYXNlLmpzLmpzIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL3ZlZ2EtZW1iZWQvbm9kZV9tb2R1bGVzL3NlbXZlci9mdW5jdGlvbnMvcHJlcmVsZWFzZS5qcz84OTcwIl0sInNvdXJjZXNDb250ZW50IjpbImNvbnN0IHBhcnNlID0gcmVxdWlyZSgnLi9wYXJzZScpXG5jb25zdCBwcmVyZWxlYXNlID0gKHZlcnNpb24sIG9wdGlvbnMpID0+IHtcbiAgY29uc3QgcGFyc2VkID0gcGFyc2UodmVyc2lvbiwgb3B0aW9ucylcbiAgcmV0dXJuIChwYXJzZWQgJiYgcGFyc2VkLnByZXJlbGVhc2UubGVuZ3RoKSA/IHBhcnNlZC5wcmVyZWxlYXNlIDogbnVsbFxufVxubW9kdWxlLmV4cG9ydHMgPSBwcmVyZWxlYXNlXG4iXSwibWFwcGluZ3MiOiJBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTsiLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///./node_modules/vega-embed/node_modules/semver/functions/prerelease.js\n");

/***/ }),

/***/ "./node_modules/vega-embed/node_modules/semver/functions/rcompare.js":
/*!***************************************************************************!*\
  !*** ./node_modules/vega-embed/node_modules/semver/functions/rcompare.js ***!
  \***************************************************************************/
/*! no static exports found */
/***/ (function(module, exports, __webpack_require__) {

eval("const compare = __webpack_require__(/*! ./compare */ \"./node_modules/vega-embed/node_modules/semver/functions/compare.js\")\nconst rcompare = (a, b, loose) => compare(b, a, loose)\nmodule.exports = rcompare\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvdmVnYS1lbWJlZC9ub2RlX21vZHVsZXMvc2VtdmVyL2Z1bmN0aW9ucy9yY29tcGFyZS5qcy5qcyIsInNvdXJjZXMiOlsid2VicGFjazovLy8uL25vZGVfbW9kdWxlcy92ZWdhLWVtYmVkL25vZGVfbW9kdWxlcy9zZW12ZXIvZnVuY3Rpb25zL3Jjb21wYXJlLmpzP2I4MDUiXSwic291cmNlc0NvbnRlbnQiOlsiY29uc3QgY29tcGFyZSA9IHJlcXVpcmUoJy4vY29tcGFyZScpXG5jb25zdCByY29tcGFyZSA9IChhLCBiLCBsb29zZSkgPT4gY29tcGFyZShiLCBhLCBsb29zZSlcbm1vZHVsZS5leHBvcnRzID0gcmNvbXBhcmVcbiJdLCJtYXBwaW5ncyI6IkFBQUE7QUFDQTtBQUNBOyIsInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///./node_modules/vega-embed/node_modules/semver/functions/rcompare.js\n");

/***/ }),

/***/ "./node_modules/vega-embed/node_modules/semver/functions/rsort.js":
/*!************************************************************************!*\
  !*** ./node_modules/vega-embed/node_modules/semver/functions/rsort.js ***!
  \************************************************************************/
/*! no static exports found */
/***/ (function(module, exports, __webpack_require__) {

eval("const compareBuild = __webpack_require__(/*! ./compare-build */ \"./node_modules/vega-embed/node_modules/semver/functions/compare-build.js\")\nconst rsort = (list, loose) => list.sort((a, b) => compareBuild(b, a, loose))\nmodule.exports = rsort\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvdmVnYS1lbWJlZC9ub2RlX21vZHVsZXMvc2VtdmVyL2Z1bmN0aW9ucy9yc29ydC5qcy5qcyIsInNvdXJjZXMiOlsid2VicGFjazovLy8uL25vZGVfbW9kdWxlcy92ZWdhLWVtYmVkL25vZGVfbW9kdWxlcy9zZW12ZXIvZnVuY3Rpb25zL3Jzb3J0LmpzPzZmYTciXSwic291cmNlc0NvbnRlbnQiOlsiY29uc3QgY29tcGFyZUJ1aWxkID0gcmVxdWlyZSgnLi9jb21wYXJlLWJ1aWxkJylcbmNvbnN0IHJzb3J0ID0gKGxpc3QsIGxvb3NlKSA9PiBsaXN0LnNvcnQoKGEsIGIpID0+IGNvbXBhcmVCdWlsZChiLCBhLCBsb29zZSkpXG5tb2R1bGUuZXhwb3J0cyA9IHJzb3J0XG4iXSwibWFwcGluZ3MiOiJBQUFBO0FBQ0E7QUFDQTsiLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///./node_modules/vega-embed/node_modules/semver/functions/rsort.js\n");

/***/ }),

/***/ "./node_modules/vega-embed/node_modules/semver/functions/satisfies.js":
/*!****************************************************************************!*\
  !*** ./node_modules/vega-embed/node_modules/semver/functions/satisfies.js ***!
  \****************************************************************************/
/*! no static exports found */
/***/ (function(module, exports, __webpack_require__) {

eval("const Range = __webpack_require__(/*! ../classes/range */ \"./node_modules/vega-embed/node_modules/semver/classes/range.js\")\nconst satisfies = (version, range, options) => {\n  try {\n    range = new Range(range, options)\n  } catch (er) {\n    return false\n  }\n  return range.test(version)\n}\nmodule.exports = satisfies\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvdmVnYS1lbWJlZC9ub2RlX21vZHVsZXMvc2VtdmVyL2Z1bmN0aW9ucy9zYXRpc2ZpZXMuanMuanMiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvdmVnYS1lbWJlZC9ub2RlX21vZHVsZXMvc2VtdmVyL2Z1bmN0aW9ucy9zYXRpc2ZpZXMuanM/MmE4NiJdLCJzb3VyY2VzQ29udGVudCI6WyJjb25zdCBSYW5nZSA9IHJlcXVpcmUoJy4uL2NsYXNzZXMvcmFuZ2UnKVxuY29uc3Qgc2F0aXNmaWVzID0gKHZlcnNpb24sIHJhbmdlLCBvcHRpb25zKSA9PiB7XG4gIHRyeSB7XG4gICAgcmFuZ2UgPSBuZXcgUmFuZ2UocmFuZ2UsIG9wdGlvbnMpXG4gIH0gY2F0Y2ggKGVyKSB7XG4gICAgcmV0dXJuIGZhbHNlXG4gIH1cbiAgcmV0dXJuIHJhbmdlLnRlc3QodmVyc2lvbilcbn1cbm1vZHVsZS5leHBvcnRzID0gc2F0aXNmaWVzXG4iXSwibWFwcGluZ3MiOiJBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOyIsInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///./node_modules/vega-embed/node_modules/semver/functions/satisfies.js\n");

/***/ }),

/***/ "./node_modules/vega-embed/node_modules/semver/functions/sort.js":
/*!***********************************************************************!*\
  !*** ./node_modules/vega-embed/node_modules/semver/functions/sort.js ***!
  \***********************************************************************/
/*! no static exports found */
/***/ (function(module, exports, __webpack_require__) {

eval("const compareBuild = __webpack_require__(/*! ./compare-build */ \"./node_modules/vega-embed/node_modules/semver/functions/compare-build.js\")\nconst sort = (list, loose) => list.sort((a, b) => compareBuild(a, b, loose))\nmodule.exports = sort\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvdmVnYS1lbWJlZC9ub2RlX21vZHVsZXMvc2VtdmVyL2Z1bmN0aW9ucy9zb3J0LmpzLmpzIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL3ZlZ2EtZW1iZWQvbm9kZV9tb2R1bGVzL3NlbXZlci9mdW5jdGlvbnMvc29ydC5qcz8yYTJlIl0sInNvdXJjZXNDb250ZW50IjpbImNvbnN0IGNvbXBhcmVCdWlsZCA9IHJlcXVpcmUoJy4vY29tcGFyZS1idWlsZCcpXG5jb25zdCBzb3J0ID0gKGxpc3QsIGxvb3NlKSA9PiBsaXN0LnNvcnQoKGEsIGIpID0+IGNvbXBhcmVCdWlsZChhLCBiLCBsb29zZSkpXG5tb2R1bGUuZXhwb3J0cyA9IHNvcnRcbiJdLCJtYXBwaW5ncyI6IkFBQUE7QUFDQTtBQUNBOyIsInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///./node_modules/vega-embed/node_modules/semver/functions/sort.js\n");

/***/ }),

/***/ "./node_modules/vega-embed/node_modules/semver/functions/valid.js":
/*!************************************************************************!*\
  !*** ./node_modules/vega-embed/node_modules/semver/functions/valid.js ***!
  \************************************************************************/
/*! no static exports found */
/***/ (function(module, exports, __webpack_require__) {

eval("const parse = __webpack_require__(/*! ./parse */ \"./node_modules/vega-embed/node_modules/semver/functions/parse.js\")\nconst valid = (version, options) => {\n  const v = parse(version, options)\n  return v ? v.version : null\n}\nmodule.exports = valid\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvdmVnYS1lbWJlZC9ub2RlX21vZHVsZXMvc2VtdmVyL2Z1bmN0aW9ucy92YWxpZC5qcy5qcyIsInNvdXJjZXMiOlsid2VicGFjazovLy8uL25vZGVfbW9kdWxlcy92ZWdhLWVtYmVkL25vZGVfbW9kdWxlcy9zZW12ZXIvZnVuY3Rpb25zL3ZhbGlkLmpzP2FjZWYiXSwic291cmNlc0NvbnRlbnQiOlsiY29uc3QgcGFyc2UgPSByZXF1aXJlKCcuL3BhcnNlJylcbmNvbnN0IHZhbGlkID0gKHZlcnNpb24sIG9wdGlvbnMpID0+IHtcbiAgY29uc3QgdiA9IHBhcnNlKHZlcnNpb24sIG9wdGlvbnMpXG4gIHJldHVybiB2ID8gdi52ZXJzaW9uIDogbnVsbFxufVxubW9kdWxlLmV4cG9ydHMgPSB2YWxpZFxuIl0sIm1hcHBpbmdzIjoiQUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7Iiwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///./node_modules/vega-embed/node_modules/semver/functions/valid.js\n");

/***/ }),

/***/ "./node_modules/vega-embed/node_modules/semver/index.js":
/*!**************************************************************!*\
  !*** ./node_modules/vega-embed/node_modules/semver/index.js ***!
  \**************************************************************/
/*! no static exports found */
/***/ (function(module, exports, __webpack_require__) {

eval("// just pre-load all the stuff that index.js lazily exports\nconst internalRe = __webpack_require__(/*! ./internal/re */ \"./node_modules/vega-embed/node_modules/semver/internal/re.js\")\nmodule.exports = {\n  re: internalRe.re,\n  src: internalRe.src,\n  tokens: internalRe.t,\n  SEMVER_SPEC_VERSION: __webpack_require__(/*! ./internal/constants */ \"./node_modules/vega-embed/node_modules/semver/internal/constants.js\").SEMVER_SPEC_VERSION,\n  SemVer: __webpack_require__(/*! ./classes/semver */ \"./node_modules/vega-embed/node_modules/semver/classes/semver.js\"),\n  compareIdentifiers: __webpack_require__(/*! ./internal/identifiers */ \"./node_modules/vega-embed/node_modules/semver/internal/identifiers.js\").compareIdentifiers,\n  rcompareIdentifiers: __webpack_require__(/*! ./internal/identifiers */ \"./node_modules/vega-embed/node_modules/semver/internal/identifiers.js\").rcompareIdentifiers,\n  parse: __webpack_require__(/*! ./functions/parse */ \"./node_modules/vega-embed/node_modules/semver/functions/parse.js\"),\n  valid: __webpack_require__(/*! ./functions/valid */ \"./node_modules/vega-embed/node_modules/semver/functions/valid.js\"),\n  clean: __webpack_require__(/*! ./functions/clean */ \"./node_modules/vega-embed/node_modules/semver/functions/clean.js\"),\n  inc: __webpack_require__(/*! ./functions/inc */ \"./node_modules/vega-embed/node_modules/semver/functions/inc.js\"),\n  diff: __webpack_require__(/*! ./functions/diff */ \"./node_modules/vega-embed/node_modules/semver/functions/diff.js\"),\n  major: __webpack_require__(/*! ./functions/major */ \"./node_modules/vega-embed/node_modules/semver/functions/major.js\"),\n  minor: __webpack_require__(/*! ./functions/minor */ \"./node_modules/vega-embed/node_modules/semver/functions/minor.js\"),\n  patch: __webpack_require__(/*! ./functions/patch */ \"./node_modules/vega-embed/node_modules/semver/functions/patch.js\"),\n  prerelease: __webpack_require__(/*! ./functions/prerelease */ \"./node_modules/vega-embed/node_modules/semver/functions/prerelease.js\"),\n  compare: __webpack_require__(/*! ./functions/compare */ \"./node_modules/vega-embed/node_modules/semver/functions/compare.js\"),\n  rcompare: __webpack_require__(/*! ./functions/rcompare */ \"./node_modules/vega-embed/node_modules/semver/functions/rcompare.js\"),\n  compareLoose: __webpack_require__(/*! ./functions/compare-loose */ \"./node_modules/vega-embed/node_modules/semver/functions/compare-loose.js\"),\n  compareBuild: __webpack_require__(/*! ./functions/compare-build */ \"./node_modules/vega-embed/node_modules/semver/functions/compare-build.js\"),\n  sort: __webpack_require__(/*! ./functions/sort */ \"./node_modules/vega-embed/node_modules/semver/functions/sort.js\"),\n  rsort: __webpack_require__(/*! ./functions/rsort */ \"./node_modules/vega-embed/node_modules/semver/functions/rsort.js\"),\n  gt: __webpack_require__(/*! ./functions/gt */ \"./node_modules/vega-embed/node_modules/semver/functions/gt.js\"),\n  lt: __webpack_require__(/*! ./functions/lt */ \"./node_modules/vega-embed/node_modules/semver/functions/lt.js\"),\n  eq: __webpack_require__(/*! ./functions/eq */ \"./node_modules/vega-embed/node_modules/semver/functions/eq.js\"),\n  neq: __webpack_require__(/*! ./functions/neq */ \"./node_modules/vega-embed/node_modules/semver/functions/neq.js\"),\n  gte: __webpack_require__(/*! ./functions/gte */ \"./node_modules/vega-embed/node_modules/semver/functions/gte.js\"),\n  lte: __webpack_require__(/*! ./functions/lte */ \"./node_modules/vega-embed/node_modules/semver/functions/lte.js\"),\n  cmp: __webpack_require__(/*! ./functions/cmp */ \"./node_modules/vega-embed/node_modules/semver/functions/cmp.js\"),\n  coerce: __webpack_require__(/*! ./functions/coerce */ \"./node_modules/vega-embed/node_modules/semver/functions/coerce.js\"),\n  Comparator: __webpack_require__(/*! ./classes/comparator */ \"./node_modules/vega-embed/node_modules/semver/classes/comparator.js\"),\n  Range: __webpack_require__(/*! ./classes/range */ \"./node_modules/vega-embed/node_modules/semver/classes/range.js\"),\n  satisfies: __webpack_require__(/*! ./functions/satisfies */ \"./node_modules/vega-embed/node_modules/semver/functions/satisfies.js\"),\n  toComparators: __webpack_require__(/*! ./ranges/to-comparators */ \"./node_modules/vega-embed/node_modules/semver/ranges/to-comparators.js\"),\n  maxSatisfying: __webpack_require__(/*! ./ranges/max-satisfying */ \"./node_modules/vega-embed/node_modules/semver/ranges/max-satisfying.js\"),\n  minSatisfying: __webpack_require__(/*! ./ranges/min-satisfying */ \"./node_modules/vega-embed/node_modules/semver/ranges/min-satisfying.js\"),\n  minVersion: __webpack_require__(/*! ./ranges/min-version */ \"./node_modules/vega-embed/node_modules/semver/ranges/min-version.js\"),\n  validRange: __webpack_require__(/*! ./ranges/valid */ \"./node_modules/vega-embed/node_modules/semver/ranges/valid.js\"),\n  outside: __webpack_require__(/*! ./ranges/outside */ \"./node_modules/vega-embed/node_modules/semver/ranges/outside.js\"),\n  gtr: __webpack_require__(/*! ./ranges/gtr */ \"./node_modules/vega-embed/node_modules/semver/ranges/gtr.js\"),\n  ltr: __webpack_require__(/*! ./ranges/ltr */ \"./node_modules/vega-embed/node_modules/semver/ranges/ltr.js\"),\n  intersects: __webpack_require__(/*! ./ranges/intersects */ \"./node_modules/vega-embed/node_modules/semver/ranges/intersects.js\"),\n  simplifyRange: __webpack_require__(/*! ./ranges/simplify */ \"./node_modules/vega-embed/node_modules/semver/ranges/simplify.js\"),\n  subset: __webpack_require__(/*! ./ranges/subset */ \"./node_modules/vega-embed/node_modules/semver/ranges/subset.js\"),\n}\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvdmVnYS1lbWJlZC9ub2RlX21vZHVsZXMvc2VtdmVyL2luZGV4LmpzLmpzIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL3ZlZ2EtZW1iZWQvbm9kZV9tb2R1bGVzL3NlbXZlci9pbmRleC5qcz80ZDg5Il0sInNvdXJjZXNDb250ZW50IjpbIi8vIGp1c3QgcHJlLWxvYWQgYWxsIHRoZSBzdHVmZiB0aGF0IGluZGV4LmpzIGxhemlseSBleHBvcnRzXG5jb25zdCBpbnRlcm5hbFJlID0gcmVxdWlyZSgnLi9pbnRlcm5hbC9yZScpXG5tb2R1bGUuZXhwb3J0cyA9IHtcbiAgcmU6IGludGVybmFsUmUucmUsXG4gIHNyYzogaW50ZXJuYWxSZS5zcmMsXG4gIHRva2VuczogaW50ZXJuYWxSZS50LFxuICBTRU1WRVJfU1BFQ19WRVJTSU9OOiByZXF1aXJlKCcuL2ludGVybmFsL2NvbnN0YW50cycpLlNFTVZFUl9TUEVDX1ZFUlNJT04sXG4gIFNlbVZlcjogcmVxdWlyZSgnLi9jbGFzc2VzL3NlbXZlcicpLFxuICBjb21wYXJlSWRlbnRpZmllcnM6IHJlcXVpcmUoJy4vaW50ZXJuYWwvaWRlbnRpZmllcnMnKS5jb21wYXJlSWRlbnRpZmllcnMsXG4gIHJjb21wYXJlSWRlbnRpZmllcnM6IHJlcXVpcmUoJy4vaW50ZXJuYWwvaWRlbnRpZmllcnMnKS5yY29tcGFyZUlkZW50aWZpZXJzLFxuICBwYXJzZTogcmVxdWlyZSgnLi9mdW5jdGlvbnMvcGFyc2UnKSxcbiAgdmFsaWQ6IHJlcXVpcmUoJy4vZnVuY3Rpb25zL3ZhbGlkJyksXG4gIGNsZWFuOiByZXF1aXJlKCcuL2Z1bmN0aW9ucy9jbGVhbicpLFxuICBpbmM6IHJlcXVpcmUoJy4vZnVuY3Rpb25zL2luYycpLFxuICBkaWZmOiByZXF1aXJlKCcuL2Z1bmN0aW9ucy9kaWZmJyksXG4gIG1ham9yOiByZXF1aXJlKCcuL2Z1bmN0aW9ucy9tYWpvcicpLFxuICBtaW5vcjogcmVxdWlyZSgnLi9mdW5jdGlvbnMvbWlub3InKSxcbiAgcGF0Y2g6IHJlcXVpcmUoJy4vZnVuY3Rpb25zL3BhdGNoJyksXG4gIHByZXJlbGVhc2U6IHJlcXVpcmUoJy4vZnVuY3Rpb25zL3ByZXJlbGVhc2UnKSxcbiAgY29tcGFyZTogcmVxdWlyZSgnLi9mdW5jdGlvbnMvY29tcGFyZScpLFxuICByY29tcGFyZTogcmVxdWlyZSgnLi9mdW5jdGlvbnMvcmNvbXBhcmUnKSxcbiAgY29tcGFyZUxvb3NlOiByZXF1aXJlKCcuL2Z1bmN0aW9ucy9jb21wYXJlLWxvb3NlJyksXG4gIGNvbXBhcmVCdWlsZDogcmVxdWlyZSgnLi9mdW5jdGlvbnMvY29tcGFyZS1idWlsZCcpLFxuICBzb3J0OiByZXF1aXJlKCcuL2Z1bmN0aW9ucy9zb3J0JyksXG4gIHJzb3J0OiByZXF1aXJlKCcuL2Z1bmN0aW9ucy9yc29ydCcpLFxuICBndDogcmVxdWlyZSgnLi9mdW5jdGlvbnMvZ3QnKSxcbiAgbHQ6IHJlcXVpcmUoJy4vZnVuY3Rpb25zL2x0JyksXG4gIGVxOiByZXF1aXJlKCcuL2Z1bmN0aW9ucy9lcScpLFxuICBuZXE6IHJlcXVpcmUoJy4vZnVuY3Rpb25zL25lcScpLFxuICBndGU6IHJlcXVpcmUoJy4vZnVuY3Rpb25zL2d0ZScpLFxuICBsdGU6IHJlcXVpcmUoJy4vZnVuY3Rpb25zL2x0ZScpLFxuICBjbXA6IHJlcXVpcmUoJy4vZnVuY3Rpb25zL2NtcCcpLFxuICBjb2VyY2U6IHJlcXVpcmUoJy4vZnVuY3Rpb25zL2NvZXJjZScpLFxuICBDb21wYXJhdG9yOiByZXF1aXJlKCcuL2NsYXNzZXMvY29tcGFyYXRvcicpLFxuICBSYW5nZTogcmVxdWlyZSgnLi9jbGFzc2VzL3JhbmdlJyksXG4gIHNhdGlzZmllczogcmVxdWlyZSgnLi9mdW5jdGlvbnMvc2F0aXNmaWVzJyksXG4gIHRvQ29tcGFyYXRvcnM6IHJlcXVpcmUoJy4vcmFuZ2VzL3RvLWNvbXBhcmF0b3JzJyksXG4gIG1heFNhdGlzZnlpbmc6IHJlcXVpcmUoJy4vcmFuZ2VzL21heC1zYXRpc2Z5aW5nJyksXG4gIG1pblNhdGlzZnlpbmc6IHJlcXVpcmUoJy4vcmFuZ2VzL21pbi1zYXRpc2Z5aW5nJyksXG4gIG1pblZlcnNpb246IHJlcXVpcmUoJy4vcmFuZ2VzL21pbi12ZXJzaW9uJyksXG4gIHZhbGlkUmFuZ2U6IHJlcXVpcmUoJy4vcmFuZ2VzL3ZhbGlkJyksXG4gIG91dHNpZGU6IHJlcXVpcmUoJy4vcmFuZ2VzL291dHNpZGUnKSxcbiAgZ3RyOiByZXF1aXJlKCcuL3Jhbmdlcy9ndHInKSxcbiAgbHRyOiByZXF1aXJlKCcuL3Jhbmdlcy9sdHInKSxcbiAgaW50ZXJzZWN0czogcmVxdWlyZSgnLi9yYW5nZXMvaW50ZXJzZWN0cycpLFxuICBzaW1wbGlmeVJhbmdlOiByZXF1aXJlKCcuL3Jhbmdlcy9zaW1wbGlmeScpLFxuICBzdWJzZXQ6IHJlcXVpcmUoJy4vcmFuZ2VzL3N1YnNldCcpLFxufVxuIl0sIm1hcHBpbmdzIjoiQUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7Iiwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///./node_modules/vega-embed/node_modules/semver/index.js\n");

/***/ }),

/***/ "./node_modules/vega-embed/node_modules/semver/internal/constants.js":
/*!***************************************************************************!*\
  !*** ./node_modules/vega-embed/node_modules/semver/internal/constants.js ***!
  \***************************************************************************/
/*! no static exports found */
/***/ (function(module, exports) {

eval("// Note: this is the semver.org version of the spec that it implements\n// Not necessarily the package version of this code.\nconst SEMVER_SPEC_VERSION = '2.0.0'\n\nconst MAX_LENGTH = 256\nconst MAX_SAFE_INTEGER = Number.MAX_SAFE_INTEGER ||\n  /* istanbul ignore next */ 9007199254740991\n\n// Max safe segment length for coercion.\nconst MAX_SAFE_COMPONENT_LENGTH = 16\n\nmodule.exports = {\n  SEMVER_SPEC_VERSION,\n  MAX_LENGTH,\n  MAX_SAFE_INTEGER,\n  MAX_SAFE_COMPONENT_LENGTH\n}\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvdmVnYS1lbWJlZC9ub2RlX21vZHVsZXMvc2VtdmVyL2ludGVybmFsL2NvbnN0YW50cy5qcy5qcyIsInNvdXJjZXMiOlsid2VicGFjazovLy8uL25vZGVfbW9kdWxlcy92ZWdhLWVtYmVkL25vZGVfbW9kdWxlcy9zZW12ZXIvaW50ZXJuYWwvY29uc3RhbnRzLmpzP2IxNWMiXSwic291cmNlc0NvbnRlbnQiOlsiLy8gTm90ZTogdGhpcyBpcyB0aGUgc2VtdmVyLm9yZyB2ZXJzaW9uIG9mIHRoZSBzcGVjIHRoYXQgaXQgaW1wbGVtZW50c1xuLy8gTm90IG5lY2Vzc2FyaWx5IHRoZSBwYWNrYWdlIHZlcnNpb24gb2YgdGhpcyBjb2RlLlxuY29uc3QgU0VNVkVSX1NQRUNfVkVSU0lPTiA9ICcyLjAuMCdcblxuY29uc3QgTUFYX0xFTkdUSCA9IDI1NlxuY29uc3QgTUFYX1NBRkVfSU5URUdFUiA9IE51bWJlci5NQVhfU0FGRV9JTlRFR0VSIHx8XG4gIC8qIGlzdGFuYnVsIGlnbm9yZSBuZXh0ICovIDkwMDcxOTkyNTQ3NDA5OTFcblxuLy8gTWF4IHNhZmUgc2VnbWVudCBsZW5ndGggZm9yIGNvZXJjaW9uLlxuY29uc3QgTUFYX1NBRkVfQ09NUE9ORU5UX0xFTkdUSCA9IDE2XG5cbm1vZHVsZS5leHBvcnRzID0ge1xuICBTRU1WRVJfU1BFQ19WRVJTSU9OLFxuICBNQVhfTEVOR1RILFxuICBNQVhfU0FGRV9JTlRFR0VSLFxuICBNQVhfU0FGRV9DT01QT05FTlRfTEVOR1RIXG59XG4iXSwibWFwcGluZ3MiOiJBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7Iiwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///./node_modules/vega-embed/node_modules/semver/internal/constants.js\n");

/***/ }),

/***/ "./node_modules/vega-embed/node_modules/semver/internal/debug.js":
/*!***********************************************************************!*\
  !*** ./node_modules/vega-embed/node_modules/semver/internal/debug.js ***!
  \***********************************************************************/
/*! no static exports found */
/***/ (function(module, exports, __webpack_require__) {

eval("/* WEBPACK VAR INJECTION */(function(process) {const debug = (\n  typeof process === 'object' &&\n  process.env &&\n  process.env.NODE_DEBUG &&\n  /\\bsemver\\b/i.test(process.env.NODE_DEBUG)\n) ? (...args) => console.error('SEMVER', ...args)\n  : () => {}\n\nmodule.exports = debug\n\n/* WEBPACK VAR INJECTION */}.call(this, __webpack_require__(/*! ./../../../../process/browser.js */ \"./node_modules/process/browser.js\")))//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvdmVnYS1lbWJlZC9ub2RlX21vZHVsZXMvc2VtdmVyL2ludGVybmFsL2RlYnVnLmpzLmpzIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL3ZlZ2EtZW1iZWQvbm9kZV9tb2R1bGVzL3NlbXZlci9pbnRlcm5hbC9kZWJ1Zy5qcz9iODAyIl0sInNvdXJjZXNDb250ZW50IjpbImNvbnN0IGRlYnVnID0gKFxuICB0eXBlb2YgcHJvY2VzcyA9PT0gJ29iamVjdCcgJiZcbiAgcHJvY2Vzcy5lbnYgJiZcbiAgcHJvY2Vzcy5lbnYuTk9ERV9ERUJVRyAmJlxuICAvXFxic2VtdmVyXFxiL2kudGVzdChwcm9jZXNzLmVudi5OT0RFX0RFQlVHKVxuKSA/ICguLi5hcmdzKSA9PiBjb25zb2xlLmVycm9yKCdTRU1WRVInLCAuLi5hcmdzKVxuICA6ICgpID0+IHt9XG5cbm1vZHVsZS5leHBvcnRzID0gZGVidWdcbiJdLCJtYXBwaW5ncyI6IkFBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBIiwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///./node_modules/vega-embed/node_modules/semver/internal/debug.js\n");

/***/ }),

/***/ "./node_modules/vega-embed/node_modules/semver/internal/identifiers.js":
/*!*****************************************************************************!*\
  !*** ./node_modules/vega-embed/node_modules/semver/internal/identifiers.js ***!
  \*****************************************************************************/
/*! no static exports found */
/***/ (function(module, exports) {

eval("const numeric = /^[0-9]+$/\nconst compareIdentifiers = (a, b) => {\n  const anum = numeric.test(a)\n  const bnum = numeric.test(b)\n\n  if (anum && bnum) {\n    a = +a\n    b = +b\n  }\n\n  return a === b ? 0\n    : (anum && !bnum) ? -1\n    : (bnum && !anum) ? 1\n    : a < b ? -1\n    : 1\n}\n\nconst rcompareIdentifiers = (a, b) => compareIdentifiers(b, a)\n\nmodule.exports = {\n  compareIdentifiers,\n  rcompareIdentifiers\n}\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvdmVnYS1lbWJlZC9ub2RlX21vZHVsZXMvc2VtdmVyL2ludGVybmFsL2lkZW50aWZpZXJzLmpzLmpzIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL3ZlZ2EtZW1iZWQvbm9kZV9tb2R1bGVzL3NlbXZlci9pbnRlcm5hbC9pZGVudGlmaWVycy5qcz8yY2RmIl0sInNvdXJjZXNDb250ZW50IjpbImNvbnN0IG51bWVyaWMgPSAvXlswLTldKyQvXG5jb25zdCBjb21wYXJlSWRlbnRpZmllcnMgPSAoYSwgYikgPT4ge1xuICBjb25zdCBhbnVtID0gbnVtZXJpYy50ZXN0KGEpXG4gIGNvbnN0IGJudW0gPSBudW1lcmljLnRlc3QoYilcblxuICBpZiAoYW51bSAmJiBibnVtKSB7XG4gICAgYSA9ICthXG4gICAgYiA9ICtiXG4gIH1cblxuICByZXR1cm4gYSA9PT0gYiA/IDBcbiAgICA6IChhbnVtICYmICFibnVtKSA/IC0xXG4gICAgOiAoYm51bSAmJiAhYW51bSkgPyAxXG4gICAgOiBhIDwgYiA/IC0xXG4gICAgOiAxXG59XG5cbmNvbnN0IHJjb21wYXJlSWRlbnRpZmllcnMgPSAoYSwgYikgPT4gY29tcGFyZUlkZW50aWZpZXJzKGIsIGEpXG5cbm1vZHVsZS5leHBvcnRzID0ge1xuICBjb21wYXJlSWRlbnRpZmllcnMsXG4gIHJjb21wYXJlSWRlbnRpZmllcnNcbn1cbiJdLCJtYXBwaW5ncyI6IkFBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTsiLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///./node_modules/vega-embed/node_modules/semver/internal/identifiers.js\n");

/***/ }),

/***/ "./node_modules/vega-embed/node_modules/semver/internal/parse-options.js":
/*!*******************************************************************************!*\
  !*** ./node_modules/vega-embed/node_modules/semver/internal/parse-options.js ***!
  \*******************************************************************************/
/*! no static exports found */
/***/ (function(module, exports) {

eval("// parse out just the options we care about so we always get a consistent\n// obj with keys in a consistent order.\nconst opts = ['includePrerelease', 'loose', 'rtl']\nconst parseOptions = options =>\n  !options ? {}\n  : typeof options !== 'object' ? { loose: true }\n  : opts.filter(k => options[k]).reduce((options, k) => {\n    options[k] = true\n    return options\n  }, {})\nmodule.exports = parseOptions\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvdmVnYS1lbWJlZC9ub2RlX21vZHVsZXMvc2VtdmVyL2ludGVybmFsL3BhcnNlLW9wdGlvbnMuanMuanMiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvdmVnYS1lbWJlZC9ub2RlX21vZHVsZXMvc2VtdmVyL2ludGVybmFsL3BhcnNlLW9wdGlvbnMuanM/NGM3NSJdLCJzb3VyY2VzQ29udGVudCI6WyIvLyBwYXJzZSBvdXQganVzdCB0aGUgb3B0aW9ucyB3ZSBjYXJlIGFib3V0IHNvIHdlIGFsd2F5cyBnZXQgYSBjb25zaXN0ZW50XG4vLyBvYmogd2l0aCBrZXlzIGluIGEgY29uc2lzdGVudCBvcmRlci5cbmNvbnN0IG9wdHMgPSBbJ2luY2x1ZGVQcmVyZWxlYXNlJywgJ2xvb3NlJywgJ3J0bCddXG5jb25zdCBwYXJzZU9wdGlvbnMgPSBvcHRpb25zID0+XG4gICFvcHRpb25zID8ge31cbiAgOiB0eXBlb2Ygb3B0aW9ucyAhPT0gJ29iamVjdCcgPyB7IGxvb3NlOiB0cnVlIH1cbiAgOiBvcHRzLmZpbHRlcihrID0+IG9wdGlvbnNba10pLnJlZHVjZSgob3B0aW9ucywgaykgPT4ge1xuICAgIG9wdGlvbnNba10gPSB0cnVlXG4gICAgcmV0dXJuIG9wdGlvbnNcbiAgfSwge30pXG5tb2R1bGUuZXhwb3J0cyA9IHBhcnNlT3B0aW9uc1xuIl0sIm1hcHBpbmdzIjoiQUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOyIsInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///./node_modules/vega-embed/node_modules/semver/internal/parse-options.js\n");

/***/ }),

/***/ "./node_modules/vega-embed/node_modules/semver/internal/re.js":
/*!********************************************************************!*\
  !*** ./node_modules/vega-embed/node_modules/semver/internal/re.js ***!
  \********************************************************************/
/*! no static exports found */
/***/ (function(module, exports, __webpack_require__) {

eval("const { MAX_SAFE_COMPONENT_LENGTH } = __webpack_require__(/*! ./constants */ \"./node_modules/vega-embed/node_modules/semver/internal/constants.js\")\nconst debug = __webpack_require__(/*! ./debug */ \"./node_modules/vega-embed/node_modules/semver/internal/debug.js\")\nexports = module.exports = {}\n\n// The actual regexps go on exports.re\nconst re = exports.re = []\nconst src = exports.src = []\nconst t = exports.t = {}\nlet R = 0\n\nconst createToken = (name, value, isGlobal) => {\n  const index = R++\n  debug(index, value)\n  t[name] = index\n  src[index] = value\n  re[index] = new RegExp(value, isGlobal ? 'g' : undefined)\n}\n\n// The following Regular Expressions can be used for tokenizing,\n// validating, and parsing SemVer version strings.\n\n// ## Numeric Identifier\n// A single `0`, or a non-zero digit followed by zero or more digits.\n\ncreateToken('NUMERICIDENTIFIER', '0|[1-9]\\\\d*')\ncreateToken('NUMERICIDENTIFIERLOOSE', '[0-9]+')\n\n// ## Non-numeric Identifier\n// Zero or more digits, followed by a letter or hyphen, and then zero or\n// more letters, digits, or hyphens.\n\ncreateToken('NONNUMERICIDENTIFIER', '\\\\d*[a-zA-Z-][a-zA-Z0-9-]*')\n\n// ## Main Version\n// Three dot-separated numeric identifiers.\n\ncreateToken('MAINVERSION', `(${src[t.NUMERICIDENTIFIER]})\\\\.` +\n                   `(${src[t.NUMERICIDENTIFIER]})\\\\.` +\n                   `(${src[t.NUMERICIDENTIFIER]})`)\n\ncreateToken('MAINVERSIONLOOSE', `(${src[t.NUMERICIDENTIFIERLOOSE]})\\\\.` +\n                        `(${src[t.NUMERICIDENTIFIERLOOSE]})\\\\.` +\n                        `(${src[t.NUMERICIDENTIFIERLOOSE]})`)\n\n// ## Pre-release Version Identifier\n// A numeric identifier, or a non-numeric identifier.\n\ncreateToken('PRERELEASEIDENTIFIER', `(?:${src[t.NUMERICIDENTIFIER]\n}|${src[t.NONNUMERICIDENTIFIER]})`)\n\ncreateToken('PRERELEASEIDENTIFIERLOOSE', `(?:${src[t.NUMERICIDENTIFIERLOOSE]\n}|${src[t.NONNUMERICIDENTIFIER]})`)\n\n// ## Pre-release Version\n// Hyphen, followed by one or more dot-separated pre-release version\n// identifiers.\n\ncreateToken('PRERELEASE', `(?:-(${src[t.PRERELEASEIDENTIFIER]\n}(?:\\\\.${src[t.PRERELEASEIDENTIFIER]})*))`)\n\ncreateToken('PRERELEASELOOSE', `(?:-?(${src[t.PRERELEASEIDENTIFIERLOOSE]\n}(?:\\\\.${src[t.PRERELEASEIDENTIFIERLOOSE]})*))`)\n\n// ## Build Metadata Identifier\n// Any combination of digits, letters, or hyphens.\n\ncreateToken('BUILDIDENTIFIER', '[0-9A-Za-z-]+')\n\n// ## Build Metadata\n// Plus sign, followed by one or more period-separated build metadata\n// identifiers.\n\ncreateToken('BUILD', `(?:\\\\+(${src[t.BUILDIDENTIFIER]\n}(?:\\\\.${src[t.BUILDIDENTIFIER]})*))`)\n\n// ## Full Version String\n// A main version, followed optionally by a pre-release version and\n// build metadata.\n\n// Note that the only major, minor, patch, and pre-release sections of\n// the version string are capturing groups.  The build metadata is not a\n// capturing group, because it should not ever be used in version\n// comparison.\n\ncreateToken('FULLPLAIN', `v?${src[t.MAINVERSION]\n}${src[t.PRERELEASE]}?${\n  src[t.BUILD]}?`)\n\ncreateToken('FULL', `^${src[t.FULLPLAIN]}$`)\n\n// like full, but allows v1.2.3 and =1.2.3, which people do sometimes.\n// also, 1.0.0alpha1 (prerelease without the hyphen) which is pretty\n// common in the npm registry.\ncreateToken('LOOSEPLAIN', `[v=\\\\s]*${src[t.MAINVERSIONLOOSE]\n}${src[t.PRERELEASELOOSE]}?${\n  src[t.BUILD]}?`)\n\ncreateToken('LOOSE', `^${src[t.LOOSEPLAIN]}$`)\n\ncreateToken('GTLT', '((?:<|>)?=?)')\n\n// Something like \"2.*\" or \"1.2.x\".\n// Note that \"x.x\" is a valid xRange identifer, meaning \"any version\"\n// Only the first item is strictly required.\ncreateToken('XRANGEIDENTIFIERLOOSE', `${src[t.NUMERICIDENTIFIERLOOSE]}|x|X|\\\\*`)\ncreateToken('XRANGEIDENTIFIER', `${src[t.NUMERICIDENTIFIER]}|x|X|\\\\*`)\n\ncreateToken('XRANGEPLAIN', `[v=\\\\s]*(${src[t.XRANGEIDENTIFIER]})` +\n                   `(?:\\\\.(${src[t.XRANGEIDENTIFIER]})` +\n                   `(?:\\\\.(${src[t.XRANGEIDENTIFIER]})` +\n                   `(?:${src[t.PRERELEASE]})?${\n                     src[t.BUILD]}?` +\n                   `)?)?`)\n\ncreateToken('XRANGEPLAINLOOSE', `[v=\\\\s]*(${src[t.XRANGEIDENTIFIERLOOSE]})` +\n                        `(?:\\\\.(${src[t.XRANGEIDENTIFIERLOOSE]})` +\n                        `(?:\\\\.(${src[t.XRANGEIDENTIFIERLOOSE]})` +\n                        `(?:${src[t.PRERELEASELOOSE]})?${\n                          src[t.BUILD]}?` +\n                        `)?)?`)\n\ncreateToken('XRANGE', `^${src[t.GTLT]}\\\\s*${src[t.XRANGEPLAIN]}$`)\ncreateToken('XRANGELOOSE', `^${src[t.GTLT]}\\\\s*${src[t.XRANGEPLAINLOOSE]}$`)\n\n// Coercion.\n// Extract anything that could conceivably be a part of a valid semver\ncreateToken('COERCE', `${'(^|[^\\\\d])' +\n              '(\\\\d{1,'}${MAX_SAFE_COMPONENT_LENGTH}})` +\n              `(?:\\\\.(\\\\d{1,${MAX_SAFE_COMPONENT_LENGTH}}))?` +\n              `(?:\\\\.(\\\\d{1,${MAX_SAFE_COMPONENT_LENGTH}}))?` +\n              `(?:$|[^\\\\d])`)\ncreateToken('COERCERTL', src[t.COERCE], true)\n\n// Tilde ranges.\n// Meaning is \"reasonably at or greater than\"\ncreateToken('LONETILDE', '(?:~>?)')\n\ncreateToken('TILDETRIM', `(\\\\s*)${src[t.LONETILDE]}\\\\s+`, true)\nexports.tildeTrimReplace = '$1~'\n\ncreateToken('TILDE', `^${src[t.LONETILDE]}${src[t.XRANGEPLAIN]}$`)\ncreateToken('TILDELOOSE', `^${src[t.LONETILDE]}${src[t.XRANGEPLAINLOOSE]}$`)\n\n// Caret ranges.\n// Meaning is \"at least and backwards compatible with\"\ncreateToken('LONECARET', '(?:\\\\^)')\n\ncreateToken('CARETTRIM', `(\\\\s*)${src[t.LONECARET]}\\\\s+`, true)\nexports.caretTrimReplace = '$1^'\n\ncreateToken('CARET', `^${src[t.LONECARET]}${src[t.XRANGEPLAIN]}$`)\ncreateToken('CARETLOOSE', `^${src[t.LONECARET]}${src[t.XRANGEPLAINLOOSE]}$`)\n\n// A simple gt/lt/eq thing, or just \"\" to indicate \"any version\"\ncreateToken('COMPARATORLOOSE', `^${src[t.GTLT]}\\\\s*(${src[t.LOOSEPLAIN]})$|^$`)\ncreateToken('COMPARATOR', `^${src[t.GTLT]}\\\\s*(${src[t.FULLPLAIN]})$|^$`)\n\n// An expression to strip any whitespace between the gtlt and the thing\n// it modifies, so that `> 1.2.3` ==> `>1.2.3`\ncreateToken('COMPARATORTRIM', `(\\\\s*)${src[t.GTLT]\n}\\\\s*(${src[t.LOOSEPLAIN]}|${src[t.XRANGEPLAIN]})`, true)\nexports.comparatorTrimReplace = '$1$2$3'\n\n// Something like `1.2.3 - 1.2.4`\n// Note that these all use the loose form, because they'll be\n// checked against either the strict or loose comparator form\n// later.\ncreateToken('HYPHENRANGE', `^\\\\s*(${src[t.XRANGEPLAIN]})` +\n                   `\\\\s+-\\\\s+` +\n                   `(${src[t.XRANGEPLAIN]})` +\n                   `\\\\s*$`)\n\ncreateToken('HYPHENRANGELOOSE', `^\\\\s*(${src[t.XRANGEPLAINLOOSE]})` +\n                        `\\\\s+-\\\\s+` +\n                        `(${src[t.XRANGEPLAINLOOSE]})` +\n                        `\\\\s*$`)\n\n// Star ranges basically just allow anything at all.\ncreateToken('STAR', '(<|>)?=?\\\\s*\\\\*')\n// >=0.0.0 is like a star\ncreateToken('GTE0', '^\\\\s*>=\\\\s*0\\.0\\.0\\\\s*$')\ncreateToken('GTE0PRE', '^\\\\s*>=\\\\s*0\\.0\\.0-0\\\\s*$')\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,[encoded data, 10812 characters]\n//# sourceURL=webpack-internal:///./node_modules/vega-embed/node_modules/semver/internal/re.js\n");

/***/ }),

/***/ "./node_modules/vega-embed/node_modules/semver/ranges/gtr.js":
/*!*******************************************************************!*\
  !*** ./node_modules/vega-embed/node_modules/semver/ranges/gtr.js ***!
  \*******************************************************************/
/*! no static exports found */
/***/ (function(module, exports, __webpack_require__) {

eval("// Determine if version is greater than all the versions possible in the range.\nconst outside = __webpack_require__(/*! ./outside */ \"./node_modules/vega-embed/node_modules/semver/ranges/outside.js\")\nconst gtr = (version, range, options) => outside(version, range, '>', options)\nmodule.exports = gtr\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvdmVnYS1lbWJlZC9ub2RlX21vZHVsZXMvc2VtdmVyL3Jhbmdlcy9ndHIuanMuanMiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvdmVnYS1lbWJlZC9ub2RlX21vZHVsZXMvc2VtdmVyL3Jhbmdlcy9ndHIuanM/OGJkNiJdLCJzb3VyY2VzQ29udGVudCI6WyIvLyBEZXRlcm1pbmUgaWYgdmVyc2lvbiBpcyBncmVhdGVyIHRoYW4gYWxsIHRoZSB2ZXJzaW9ucyBwb3NzaWJsZSBpbiB0aGUgcmFuZ2UuXG5jb25zdCBvdXRzaWRlID0gcmVxdWlyZSgnLi9vdXRzaWRlJylcbmNvbnN0IGd0ciA9ICh2ZXJzaW9uLCByYW5nZSwgb3B0aW9ucykgPT4gb3V0c2lkZSh2ZXJzaW9uLCByYW5nZSwgJz4nLCBvcHRpb25zKVxubW9kdWxlLmV4cG9ydHMgPSBndHJcbiJdLCJtYXBwaW5ncyI6IkFBQUE7QUFDQTtBQUNBO0FBQ0E7Iiwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///./node_modules/vega-embed/node_modules/semver/ranges/gtr.js\n");

/***/ }),

/***/ "./node_modules/vega-embed/node_modules/semver/ranges/intersects.js":
/*!**************************************************************************!*\
  !*** ./node_modules/vega-embed/node_modules/semver/ranges/intersects.js ***!
  \**************************************************************************/
/*! no static exports found */
/***/ (function(module, exports, __webpack_require__) {

eval("const Range = __webpack_require__(/*! ../classes/range */ \"./node_modules/vega-embed/node_modules/semver/classes/range.js\")\nconst intersects = (r1, r2, options) => {\n  r1 = new Range(r1, options)\n  r2 = new Range(r2, options)\n  return r1.intersects(r2)\n}\nmodule.exports = intersects\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvdmVnYS1lbWJlZC9ub2RlX21vZHVsZXMvc2VtdmVyL3Jhbmdlcy9pbnRlcnNlY3RzLmpzLmpzIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL3ZlZ2EtZW1iZWQvbm9kZV9tb2R1bGVzL3NlbXZlci9yYW5nZXMvaW50ZXJzZWN0cy5qcz81MjM3Il0sInNvdXJjZXNDb250ZW50IjpbImNvbnN0IFJhbmdlID0gcmVxdWlyZSgnLi4vY2xhc3Nlcy9yYW5nZScpXG5jb25zdCBpbnRlcnNlY3RzID0gKHIxLCByMiwgb3B0aW9ucykgPT4ge1xuICByMSA9IG5ldyBSYW5nZShyMSwgb3B0aW9ucylcbiAgcjIgPSBuZXcgUmFuZ2UocjIsIG9wdGlvbnMpXG4gIHJldHVybiByMS5pbnRlcnNlY3RzKHIyKVxufVxubW9kdWxlLmV4cG9ydHMgPSBpbnRlcnNlY3RzXG4iXSwibWFwcGluZ3MiOiJBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOyIsInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///./node_modules/vega-embed/node_modules/semver/ranges/intersects.js\n");

/***/ }),

/***/ "./node_modules/vega-embed/node_modules/semver/ranges/ltr.js":
/*!*******************************************************************!*\
  !*** ./node_modules/vega-embed/node_modules/semver/ranges/ltr.js ***!
  \*******************************************************************/
/*! no static exports found */
/***/ (function(module, exports, __webpack_require__) {

eval("const outside = __webpack_require__(/*! ./outside */ \"./node_modules/vega-embed/node_modules/semver/ranges/outside.js\")\n// Determine if version is less than all the versions possible in the range\nconst ltr = (version, range, options) => outside(version, range, '<', options)\nmodule.exports = ltr\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvdmVnYS1lbWJlZC9ub2RlX21vZHVsZXMvc2VtdmVyL3Jhbmdlcy9sdHIuanMuanMiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvdmVnYS1lbWJlZC9ub2RlX21vZHVsZXMvc2VtdmVyL3Jhbmdlcy9sdHIuanM/OWI2YyJdLCJzb3VyY2VzQ29udGVudCI6WyJjb25zdCBvdXRzaWRlID0gcmVxdWlyZSgnLi9vdXRzaWRlJylcbi8vIERldGVybWluZSBpZiB2ZXJzaW9uIGlzIGxlc3MgdGhhbiBhbGwgdGhlIHZlcnNpb25zIHBvc3NpYmxlIGluIHRoZSByYW5nZVxuY29uc3QgbHRyID0gKHZlcnNpb24sIHJhbmdlLCBvcHRpb25zKSA9PiBvdXRzaWRlKHZlcnNpb24sIHJhbmdlLCAnPCcsIG9wdGlvbnMpXG5tb2R1bGUuZXhwb3J0cyA9IGx0clxuIl0sIm1hcHBpbmdzIjoiQUFBQTtBQUNBO0FBQ0E7QUFDQTsiLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///./node_modules/vega-embed/node_modules/semver/ranges/ltr.js\n");

/***/ }),

/***/ "./node_modules/vega-embed/node_modules/semver/ranges/max-satisfying.js":
/*!******************************************************************************!*\
  !*** ./node_modules/vega-embed/node_modules/semver/ranges/max-satisfying.js ***!
  \******************************************************************************/
/*! no static exports found */
/***/ (function(module, exports, __webpack_require__) {

eval("const SemVer = __webpack_require__(/*! ../classes/semver */ \"./node_modules/vega-embed/node_modules/semver/classes/semver.js\")\nconst Range = __webpack_require__(/*! ../classes/range */ \"./node_modules/vega-embed/node_modules/semver/classes/range.js\")\n\nconst maxSatisfying = (versions, range, options) => {\n  let max = null\n  let maxSV = null\n  let rangeObj = null\n  try {\n    rangeObj = new Range(range, options)\n  } catch (er) {\n    return null\n  }\n  versions.forEach((v) => {\n    if (rangeObj.test(v)) {\n      // satisfies(v, range, options)\n      if (!max || maxSV.compare(v) === -1) {\n        // compare(max, v, true)\n        max = v\n        maxSV = new SemVer(max, options)\n      }\n    }\n  })\n  return max\n}\nmodule.exports = maxSatisfying\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvdmVnYS1lbWJlZC9ub2RlX21vZHVsZXMvc2VtdmVyL3Jhbmdlcy9tYXgtc2F0aXNmeWluZy5qcy5qcyIsInNvdXJjZXMiOlsid2VicGFjazovLy8uL25vZGVfbW9kdWxlcy92ZWdhLWVtYmVkL25vZGVfbW9kdWxlcy9zZW12ZXIvcmFuZ2VzL21heC1zYXRpc2Z5aW5nLmpzPzEzYWYiXSwic291cmNlc0NvbnRlbnQiOlsiY29uc3QgU2VtVmVyID0gcmVxdWlyZSgnLi4vY2xhc3Nlcy9zZW12ZXInKVxuY29uc3QgUmFuZ2UgPSByZXF1aXJlKCcuLi9jbGFzc2VzL3JhbmdlJylcblxuY29uc3QgbWF4U2F0aXNmeWluZyA9ICh2ZXJzaW9ucywgcmFuZ2UsIG9wdGlvbnMpID0+IHtcbiAgbGV0IG1heCA9IG51bGxcbiAgbGV0IG1heFNWID0gbnVsbFxuICBsZXQgcmFuZ2VPYmogPSBudWxsXG4gIHRyeSB7XG4gICAgcmFuZ2VPYmogPSBuZXcgUmFuZ2UocmFuZ2UsIG9wdGlvbnMpXG4gIH0gY2F0Y2ggKGVyKSB7XG4gICAgcmV0dXJuIG51bGxcbiAgfVxuICB2ZXJzaW9ucy5mb3JFYWNoKCh2KSA9PiB7XG4gICAgaWYgKHJhbmdlT2JqLnRlc3QodikpIHtcbiAgICAgIC8vIHNhdGlzZmllcyh2LCByYW5nZSwgb3B0aW9ucylcbiAgICAgIGlmICghbWF4IHx8IG1heFNWLmNvbXBhcmUodikgPT09IC0xKSB7XG4gICAgICAgIC8vIGNvbXBhcmUobWF4LCB2LCB0cnVlKVxuICAgICAgICBtYXggPSB2XG4gICAgICAgIG1heFNWID0gbmV3IFNlbVZlcihtYXgsIG9wdGlvbnMpXG4gICAgICB9XG4gICAgfVxuICB9KVxuICByZXR1cm4gbWF4XG59XG5tb2R1bGUuZXhwb3J0cyA9IG1heFNhdGlzZnlpbmdcbiJdLCJtYXBwaW5ncyI6IkFBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7Iiwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///./node_modules/vega-embed/node_modules/semver/ranges/max-satisfying.js\n");

/***/ }),

/***/ "./node_modules/vega-embed/node_modules/semver/ranges/min-satisfying.js":
/*!******************************************************************************!*\
  !*** ./node_modules/vega-embed/node_modules/semver/ranges/min-satisfying.js ***!
  \******************************************************************************/
/*! no static exports found */
/***/ (function(module, exports, __webpack_require__) {

eval("const SemVer = __webpack_require__(/*! ../classes/semver */ \"./node_modules/vega-embed/node_modules/semver/classes/semver.js\")\nconst Range = __webpack_require__(/*! ../classes/range */ \"./node_modules/vega-embed/node_modules/semver/classes/range.js\")\nconst minSatisfying = (versions, range, options) => {\n  let min = null\n  let minSV = null\n  let rangeObj = null\n  try {\n    rangeObj = new Range(range, options)\n  } catch (er) {\n    return null\n  }\n  versions.forEach((v) => {\n    if (rangeObj.test(v)) {\n      // satisfies(v, range, options)\n      if (!min || minSV.compare(v) === 1) {\n        // compare(min, v, true)\n        min = v\n        minSV = new SemVer(min, options)\n      }\n    }\n  })\n  return min\n}\nmodule.exports = minSatisfying\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvdmVnYS1lbWJlZC9ub2RlX21vZHVsZXMvc2VtdmVyL3Jhbmdlcy9taW4tc2F0aXNmeWluZy5qcy5qcyIsInNvdXJjZXMiOlsid2VicGFjazovLy8uL25vZGVfbW9kdWxlcy92ZWdhLWVtYmVkL25vZGVfbW9kdWxlcy9zZW12ZXIvcmFuZ2VzL21pbi1zYXRpc2Z5aW5nLmpzP2ZkOTAiXSwic291cmNlc0NvbnRlbnQiOlsiY29uc3QgU2VtVmVyID0gcmVxdWlyZSgnLi4vY2xhc3Nlcy9zZW12ZXInKVxuY29uc3QgUmFuZ2UgPSByZXF1aXJlKCcuLi9jbGFzc2VzL3JhbmdlJylcbmNvbnN0IG1pblNhdGlzZnlpbmcgPSAodmVyc2lvbnMsIHJhbmdlLCBvcHRpb25zKSA9PiB7XG4gIGxldCBtaW4gPSBudWxsXG4gIGxldCBtaW5TViA9IG51bGxcbiAgbGV0IHJhbmdlT2JqID0gbnVsbFxuICB0cnkge1xuICAgIHJhbmdlT2JqID0gbmV3IFJhbmdlKHJhbmdlLCBvcHRpb25zKVxuICB9IGNhdGNoIChlcikge1xuICAgIHJldHVybiBudWxsXG4gIH1cbiAgdmVyc2lvbnMuZm9yRWFjaCgodikgPT4ge1xuICAgIGlmIChyYW5nZU9iai50ZXN0KHYpKSB7XG4gICAgICAvLyBzYXRpc2ZpZXModiwgcmFuZ2UsIG9wdGlvbnMpXG4gICAgICBpZiAoIW1pbiB8fCBtaW5TVi5jb21wYXJlKHYpID09PSAxKSB7XG4gICAgICAgIC8vIGNvbXBhcmUobWluLCB2LCB0cnVlKVxuICAgICAgICBtaW4gPSB2XG4gICAgICAgIG1pblNWID0gbmV3IFNlbVZlcihtaW4sIG9wdGlvbnMpXG4gICAgICB9XG4gICAgfVxuICB9KVxuICByZXR1cm4gbWluXG59XG5tb2R1bGUuZXhwb3J0cyA9IG1pblNhdGlzZnlpbmdcbiJdLCJtYXBwaW5ncyI6IkFBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOyIsInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///./node_modules/vega-embed/node_modules/semver/ranges/min-satisfying.js\n");

/***/ }),

/***/ "./node_modules/vega-embed/node_modules/semver/ranges/min-version.js":
/*!***************************************************************************!*\
  !*** ./node_modules/vega-embed/node_modules/semver/ranges/min-version.js ***!
  \***************************************************************************/
/*! no static exports found */
/***/ (function(module, exports, __webpack_require__) {

eval("const SemVer = __webpack_require__(/*! ../classes/semver */ \"./node_modules/vega-embed/node_modules/semver/classes/semver.js\")\nconst Range = __webpack_require__(/*! ../classes/range */ \"./node_modules/vega-embed/node_modules/semver/classes/range.js\")\nconst gt = __webpack_require__(/*! ../functions/gt */ \"./node_modules/vega-embed/node_modules/semver/functions/gt.js\")\n\nconst minVersion = (range, loose) => {\n  range = new Range(range, loose)\n\n  let minver = new SemVer('0.0.0')\n  if (range.test(minver)) {\n    return minver\n  }\n\n  minver = new SemVer('0.0.0-0')\n  if (range.test(minver)) {\n    return minver\n  }\n\n  minver = null\n  for (let i = 0; i < range.set.length; ++i) {\n    const comparators = range.set[i]\n\n    let setMin = null\n    comparators.forEach((comparator) => {\n      // Clone to avoid manipulating the comparator's semver object.\n      const compver = new SemVer(comparator.semver.version)\n      switch (comparator.operator) {\n        case '>':\n          if (compver.prerelease.length === 0) {\n            compver.patch++\n          } else {\n            compver.prerelease.push(0)\n          }\n          compver.raw = compver.format()\n          /* fallthrough */\n        case '':\n        case '>=':\n          if (!setMin || gt(compver, setMin)) {\n            setMin = compver\n          }\n          break\n        case '<':\n        case '<=':\n          /* Ignore maximum versions */\n          break\n        /* istanbul ignore next */\n        default:\n          throw new Error(`Unexpected operation: ${comparator.operator}`)\n      }\n    })\n    if (setMin && (!minver || gt(minver, setMin)))\n      minver = setMin\n  }\n\n  if (minver && range.test(minver)) {\n    return minver\n  }\n\n  return null\n}\nmodule.exports = minVersion\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvdmVnYS1lbWJlZC9ub2RlX21vZHVsZXMvc2VtdmVyL3Jhbmdlcy9taW4tdmVyc2lvbi5qcy5qcyIsInNvdXJjZXMiOlsid2VicGFjazovLy8uL25vZGVfbW9kdWxlcy92ZWdhLWVtYmVkL25vZGVfbW9kdWxlcy9zZW12ZXIvcmFuZ2VzL21pbi12ZXJzaW9uLmpzPzg2ZDQiXSwic291cmNlc0NvbnRlbnQiOlsiY29uc3QgU2VtVmVyID0gcmVxdWlyZSgnLi4vY2xhc3Nlcy9zZW12ZXInKVxuY29uc3QgUmFuZ2UgPSByZXF1aXJlKCcuLi9jbGFzc2VzL3JhbmdlJylcbmNvbnN0IGd0ID0gcmVxdWlyZSgnLi4vZnVuY3Rpb25zL2d0JylcblxuY29uc3QgbWluVmVyc2lvbiA9IChyYW5nZSwgbG9vc2UpID0+IHtcbiAgcmFuZ2UgPSBuZXcgUmFuZ2UocmFuZ2UsIGxvb3NlKVxuXG4gIGxldCBtaW52ZXIgPSBuZXcgU2VtVmVyKCcwLjAuMCcpXG4gIGlmIChyYW5nZS50ZXN0KG1pbnZlcikpIHtcbiAgICByZXR1cm4gbWludmVyXG4gIH1cblxuICBtaW52ZXIgPSBuZXcgU2VtVmVyKCcwLjAuMC0wJylcbiAgaWYgKHJhbmdlLnRlc3QobWludmVyKSkge1xuICAgIHJldHVybiBtaW52ZXJcbiAgfVxuXG4gIG1pbnZlciA9IG51bGxcbiAgZm9yIChsZXQgaSA9IDA7IGkgPCByYW5nZS5zZXQubGVuZ3RoOyArK2kpIHtcbiAgICBjb25zdCBjb21wYXJhdG9ycyA9IHJhbmdlLnNldFtpXVxuXG4gICAgbGV0IHNldE1pbiA9IG51bGxcbiAgICBjb21wYXJhdG9ycy5mb3JFYWNoKChjb21wYXJhdG9yKSA9PiB7XG4gICAgICAvLyBDbG9uZSB0byBhdm9pZCBtYW5pcHVsYXRpbmcgdGhlIGNvbXBhcmF0b3IncyBzZW12ZXIgb2JqZWN0LlxuICAgICAgY29uc3QgY29tcHZlciA9IG5ldyBTZW1WZXIoY29tcGFyYXRvci5zZW12ZXIudmVyc2lvbilcbiAgICAgIHN3aXRjaCAoY29tcGFyYXRvci5vcGVyYXRvcikge1xuICAgICAgICBjYXNlICc+JzpcbiAgICAgICAgICBpZiAoY29tcHZlci5wcmVyZWxlYXNlLmxlbmd0aCA9PT0gMCkge1xuICAgICAgICAgICAgY29tcHZlci5wYXRjaCsrXG4gICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIGNvbXB2ZXIucHJlcmVsZWFzZS5wdXNoKDApXG4gICAgICAgICAgfVxuICAgICAgICAgIGNvbXB2ZXIucmF3ID0gY29tcHZlci5mb3JtYXQoKVxuICAgICAgICAgIC8qIGZhbGx0aHJvdWdoICovXG4gICAgICAgIGNhc2UgJyc6XG4gICAgICAgIGNhc2UgJz49JzpcbiAgICAgICAgICBpZiAoIXNldE1pbiB8fCBndChjb21wdmVyLCBzZXRNaW4pKSB7XG4gICAgICAgICAgICBzZXRNaW4gPSBjb21wdmVyXG4gICAgICAgICAgfVxuICAgICAgICAgIGJyZWFrXG4gICAgICAgIGNhc2UgJzwnOlxuICAgICAgICBjYXNlICc8PSc6XG4gICAgICAgICAgLyogSWdub3JlIG1heGltdW0gdmVyc2lvbnMgKi9cbiAgICAgICAgICBicmVha1xuICAgICAgICAvKiBpc3RhbmJ1bCBpZ25vcmUgbmV4dCAqL1xuICAgICAgICBkZWZhdWx0OlxuICAgICAgICAgIHRocm93IG5ldyBFcnJvcihgVW5leHBlY3RlZCBvcGVyYXRpb246ICR7Y29tcGFyYXRvci5vcGVyYXRvcn1gKVxuICAgICAgfVxuICAgIH0pXG4gICAgaWYgKHNldE1pbiAmJiAoIW1pbnZlciB8fCBndChtaW52ZXIsIHNldE1pbikpKVxuICAgICAgbWludmVyID0gc2V0TWluXG4gIH1cblxuICBpZiAobWludmVyICYmIHJhbmdlLnRlc3QobWludmVyKSkge1xuICAgIHJldHVybiBtaW52ZXJcbiAgfVxuXG4gIHJldHVybiBudWxsXG59XG5tb2R1bGUuZXhwb3J0cyA9IG1pblZlcnNpb25cbiJdLCJtYXBwaW5ncyI6IkFBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOyIsInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///./node_modules/vega-embed/node_modules/semver/ranges/min-version.js\n");

/***/ }),

/***/ "./node_modules/vega-embed/node_modules/semver/ranges/outside.js":
/*!***********************************************************************!*\
  !*** ./node_modules/vega-embed/node_modules/semver/ranges/outside.js ***!
  \***********************************************************************/
/*! no static exports found */
/***/ (function(module, exports, __webpack_require__) {

eval("const SemVer = __webpack_require__(/*! ../classes/semver */ \"./node_modules/vega-embed/node_modules/semver/classes/semver.js\")\nconst Comparator = __webpack_require__(/*! ../classes/comparator */ \"./node_modules/vega-embed/node_modules/semver/classes/comparator.js\")\nconst {ANY} = Comparator\nconst Range = __webpack_require__(/*! ../classes/range */ \"./node_modules/vega-embed/node_modules/semver/classes/range.js\")\nconst satisfies = __webpack_require__(/*! ../functions/satisfies */ \"./node_modules/vega-embed/node_modules/semver/functions/satisfies.js\")\nconst gt = __webpack_require__(/*! ../functions/gt */ \"./node_modules/vega-embed/node_modules/semver/functions/gt.js\")\nconst lt = __webpack_require__(/*! ../functions/lt */ \"./node_modules/vega-embed/node_modules/semver/functions/lt.js\")\nconst lte = __webpack_require__(/*! ../functions/lte */ \"./node_modules/vega-embed/node_modules/semver/functions/lte.js\")\nconst gte = __webpack_require__(/*! ../functions/gte */ \"./node_modules/vega-embed/node_modules/semver/functions/gte.js\")\n\nconst outside = (version, range, hilo, options) => {\n  version = new SemVer(version, options)\n  range = new Range(range, options)\n\n  let gtfn, ltefn, ltfn, comp, ecomp\n  switch (hilo) {\n    case '>':\n      gtfn = gt\n      ltefn = lte\n      ltfn = lt\n      comp = '>'\n      ecomp = '>='\n      break\n    case '<':\n      gtfn = lt\n      ltefn = gte\n      ltfn = gt\n      comp = '<'\n      ecomp = '<='\n      break\n    default:\n      throw new TypeError('Must provide a hilo val of \"<\" or \">\"')\n  }\n\n  // If it satisfies the range it is not outside\n  if (satisfies(version, range, options)) {\n    return false\n  }\n\n  // From now on, variable terms are as if we're in \"gtr\" mode.\n  // but note that everything is flipped for the \"ltr\" function.\n\n  for (let i = 0; i < range.set.length; ++i) {\n    const comparators = range.set[i]\n\n    let high = null\n    let low = null\n\n    comparators.forEach((comparator) => {\n      if (comparator.semver === ANY) {\n        comparator = new Comparator('>=0.0.0')\n      }\n      high = high || comparator\n      low = low || comparator\n      if (gtfn(comparator.semver, high.semver, options)) {\n        high = comparator\n      } else if (ltfn(comparator.semver, low.semver, options)) {\n        low = comparator\n      }\n    })\n\n    // If the edge version comparator has a operator then our version\n    // isn't outside it\n    if (high.operator === comp || high.operator === ecomp) {\n      return false\n    }\n\n    // If the lowest version comparator has an operator and our version\n    // is less than it then it isn't higher than the range\n    if ((!low.operator || low.operator === comp) &&\n        ltefn(version, low.semver)) {\n      return false\n    } else if (low.operator === ecomp && ltfn(version, low.semver)) {\n      return false\n    }\n  }\n  return true\n}\n\nmodule.exports = outside\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvdmVnYS1lbWJlZC9ub2RlX21vZHVsZXMvc2VtdmVyL3Jhbmdlcy9vdXRzaWRlLmpzLmpzIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL3ZlZ2EtZW1iZWQvbm9kZV9tb2R1bGVzL3NlbXZlci9yYW5nZXMvb3V0c2lkZS5qcz8zOGNiIl0sInNvdXJjZXNDb250ZW50IjpbImNvbnN0IFNlbVZlciA9IHJlcXVpcmUoJy4uL2NsYXNzZXMvc2VtdmVyJylcbmNvbnN0IENvbXBhcmF0b3IgPSByZXF1aXJlKCcuLi9jbGFzc2VzL2NvbXBhcmF0b3InKVxuY29uc3Qge0FOWX0gPSBDb21wYXJhdG9yXG5jb25zdCBSYW5nZSA9IHJlcXVpcmUoJy4uL2NsYXNzZXMvcmFuZ2UnKVxuY29uc3Qgc2F0aXNmaWVzID0gcmVxdWlyZSgnLi4vZnVuY3Rpb25zL3NhdGlzZmllcycpXG5jb25zdCBndCA9IHJlcXVpcmUoJy4uL2Z1bmN0aW9ucy9ndCcpXG5jb25zdCBsdCA9IHJlcXVpcmUoJy4uL2Z1bmN0aW9ucy9sdCcpXG5jb25zdCBsdGUgPSByZXF1aXJlKCcuLi9mdW5jdGlvbnMvbHRlJylcbmNvbnN0IGd0ZSA9IHJlcXVpcmUoJy4uL2Z1bmN0aW9ucy9ndGUnKVxuXG5jb25zdCBvdXRzaWRlID0gKHZlcnNpb24sIHJhbmdlLCBoaWxvLCBvcHRpb25zKSA9PiB7XG4gIHZlcnNpb24gPSBuZXcgU2VtVmVyKHZlcnNpb24sIG9wdGlvbnMpXG4gIHJhbmdlID0gbmV3IFJhbmdlKHJhbmdlLCBvcHRpb25zKVxuXG4gIGxldCBndGZuLCBsdGVmbiwgbHRmbiwgY29tcCwgZWNvbXBcbiAgc3dpdGNoIChoaWxvKSB7XG4gICAgY2FzZSAnPic6XG4gICAgICBndGZuID0gZ3RcbiAgICAgIGx0ZWZuID0gbHRlXG4gICAgICBsdGZuID0gbHRcbiAgICAgIGNvbXAgPSAnPidcbiAgICAgIGVjb21wID0gJz49J1xuICAgICAgYnJlYWtcbiAgICBjYXNlICc8JzpcbiAgICAgIGd0Zm4gPSBsdFxuICAgICAgbHRlZm4gPSBndGVcbiAgICAgIGx0Zm4gPSBndFxuICAgICAgY29tcCA9ICc8J1xuICAgICAgZWNvbXAgPSAnPD0nXG4gICAgICBicmVha1xuICAgIGRlZmF1bHQ6XG4gICAgICB0aHJvdyBuZXcgVHlwZUVycm9yKCdNdXN0IHByb3ZpZGUgYSBoaWxvIHZhbCBvZiBcIjxcIiBvciBcIj5cIicpXG4gIH1cblxuICAvLyBJZiBpdCBzYXRpc2ZpZXMgdGhlIHJhbmdlIGl0IGlzIG5vdCBvdXRzaWRlXG4gIGlmIChzYXRpc2ZpZXModmVyc2lvbiwgcmFuZ2UsIG9wdGlvbnMpKSB7XG4gICAgcmV0dXJuIGZhbHNlXG4gIH1cblxuICAvLyBGcm9tIG5vdyBvbiwgdmFyaWFibGUgdGVybXMgYXJlIGFzIGlmIHdlJ3JlIGluIFwiZ3RyXCIgbW9kZS5cbiAgLy8gYnV0IG5vdGUgdGhhdCBldmVyeXRoaW5nIGlzIGZsaXBwZWQgZm9yIHRoZSBcImx0clwiIGZ1bmN0aW9uLlxuXG4gIGZvciAobGV0IGkgPSAwOyBpIDwgcmFuZ2Uuc2V0Lmxlbmd0aDsgKytpKSB7XG4gICAgY29uc3QgY29tcGFyYXRvcnMgPSByYW5nZS5zZXRbaV1cblxuICAgIGxldCBoaWdoID0gbnVsbFxuICAgIGxldCBsb3cgPSBudWxsXG5cbiAgICBjb21wYXJhdG9ycy5mb3JFYWNoKChjb21wYXJhdG9yKSA9PiB7XG4gICAgICBpZiAoY29tcGFyYXRvci5zZW12ZXIgPT09IEFOWSkge1xuICAgICAgICBjb21wYXJhdG9yID0gbmV3IENvbXBhcmF0b3IoJz49MC4wLjAnKVxuICAgICAgfVxuICAgICAgaGlnaCA9IGhpZ2ggfHwgY29tcGFyYXRvclxuICAgICAgbG93ID0gbG93IHx8IGNvbXBhcmF0b3JcbiAgICAgIGlmIChndGZuKGNvbXBhcmF0b3Iuc2VtdmVyLCBoaWdoLnNlbXZlciwgb3B0aW9ucykpIHtcbiAgICAgICAgaGlnaCA9IGNvbXBhcmF0b3JcbiAgICAgIH0gZWxzZSBpZiAobHRmbihjb21wYXJhdG9yLnNlbXZlciwgbG93LnNlbXZlciwgb3B0aW9ucykpIHtcbiAgICAgICAgbG93ID0gY29tcGFyYXRvclxuICAgICAgfVxuICAgIH0pXG5cbiAgICAvLyBJZiB0aGUgZWRnZSB2ZXJzaW9uIGNvbXBhcmF0b3IgaGFzIGEgb3BlcmF0b3IgdGhlbiBvdXIgdmVyc2lvblxuICAgIC8vIGlzbid0IG91dHNpZGUgaXRcbiAgICBpZiAoaGlnaC5vcGVyYXRvciA9PT0gY29tcCB8fCBoaWdoLm9wZXJhdG9yID09PSBlY29tcCkge1xuICAgICAgcmV0dXJuIGZhbHNlXG4gICAgfVxuXG4gICAgLy8gSWYgdGhlIGxvd2VzdCB2ZXJzaW9uIGNvbXBhcmF0b3IgaGFzIGFuIG9wZXJhdG9yIGFuZCBvdXIgdmVyc2lvblxuICAgIC8vIGlzIGxlc3MgdGhhbiBpdCB0aGVuIGl0IGlzbid0IGhpZ2hlciB0aGFuIHRoZSByYW5nZVxuICAgIGlmICgoIWxvdy5vcGVyYXRvciB8fCBsb3cub3BlcmF0b3IgPT09IGNvbXApICYmXG4gICAgICAgIGx0ZWZuKHZlcnNpb24sIGxvdy5zZW12ZXIpKSB7XG4gICAgICByZXR1cm4gZmFsc2VcbiAgICB9IGVsc2UgaWYgKGxvdy5vcGVyYXRvciA9PT0gZWNvbXAgJiYgbHRmbih2ZXJzaW9uLCBsb3cuc2VtdmVyKSkge1xuICAgICAgcmV0dXJuIGZhbHNlXG4gICAgfVxuICB9XG4gIHJldHVybiB0cnVlXG59XG5cbm1vZHVsZS5leHBvcnRzID0gb3V0c2lkZVxuIl0sIm1hcHBpbmdzIjoiQUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOyIsInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///./node_modules/vega-embed/node_modules/semver/ranges/outside.js\n");

/***/ }),

/***/ "./node_modules/vega-embed/node_modules/semver/ranges/simplify.js":
/*!************************************************************************!*\
  !*** ./node_modules/vega-embed/node_modules/semver/ranges/simplify.js ***!
  \************************************************************************/
/*! no static exports found */
/***/ (function(module, exports, __webpack_require__) {

eval("// given a set of versions and a range, create a \"simplified\" range\n// that includes the same versions that the original range does\n// If the original range is shorter than the simplified one, return that.\nconst satisfies = __webpack_require__(/*! ../functions/satisfies.js */ \"./node_modules/vega-embed/node_modules/semver/functions/satisfies.js\")\nconst compare = __webpack_require__(/*! ../functions/compare.js */ \"./node_modules/vega-embed/node_modules/semver/functions/compare.js\")\nmodule.exports = (versions, range, options) => {\n  const set = []\n  let min = null\n  let prev = null\n  const v = versions.sort((a, b) => compare(a, b, options))\n  for (const version of v) {\n    const included = satisfies(version, range, options)\n    if (included) {\n      prev = version\n      if (!min)\n        min = version\n    } else {\n      if (prev) {\n        set.push([min, prev])\n      }\n      prev = null\n      min = null\n    }\n  }\n  if (min)\n    set.push([min, null])\n\n  const ranges = []\n  for (const [min, max] of set) {\n    if (min === max)\n      ranges.push(min)\n    else if (!max && min === v[0])\n      ranges.push('*')\n    else if (!max)\n      ranges.push(`>=${min}`)\n    else if (min === v[0])\n      ranges.push(`<=${max}`)\n    else\n      ranges.push(`${min} - ${max}`)\n  }\n  const simplified = ranges.join(' || ')\n  const original = typeof range.raw === 'string' ? range.raw : String(range)\n  return simplified.length < original.length ? simplified : range\n}\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvdmVnYS1lbWJlZC9ub2RlX21vZHVsZXMvc2VtdmVyL3Jhbmdlcy9zaW1wbGlmeS5qcy5qcyIsInNvdXJjZXMiOlsid2VicGFjazovLy8uL25vZGVfbW9kdWxlcy92ZWdhLWVtYmVkL25vZGVfbW9kdWxlcy9zZW12ZXIvcmFuZ2VzL3NpbXBsaWZ5LmpzP2Y2N2MiXSwic291cmNlc0NvbnRlbnQiOlsiLy8gZ2l2ZW4gYSBzZXQgb2YgdmVyc2lvbnMgYW5kIGEgcmFuZ2UsIGNyZWF0ZSBhIFwic2ltcGxpZmllZFwiIHJhbmdlXG4vLyB0aGF0IGluY2x1ZGVzIHRoZSBzYW1lIHZlcnNpb25zIHRoYXQgdGhlIG9yaWdpbmFsIHJhbmdlIGRvZXNcbi8vIElmIHRoZSBvcmlnaW5hbCByYW5nZSBpcyBzaG9ydGVyIHRoYW4gdGhlIHNpbXBsaWZpZWQgb25lLCByZXR1cm4gdGhhdC5cbmNvbnN0IHNhdGlzZmllcyA9IHJlcXVpcmUoJy4uL2Z1bmN0aW9ucy9zYXRpc2ZpZXMuanMnKVxuY29uc3QgY29tcGFyZSA9IHJlcXVpcmUoJy4uL2Z1bmN0aW9ucy9jb21wYXJlLmpzJylcbm1vZHVsZS5leHBvcnRzID0gKHZlcnNpb25zLCByYW5nZSwgb3B0aW9ucykgPT4ge1xuICBjb25zdCBzZXQgPSBbXVxuICBsZXQgbWluID0gbnVsbFxuICBsZXQgcHJldiA9IG51bGxcbiAgY29uc3QgdiA9IHZlcnNpb25zLnNvcnQoKGEsIGIpID0+IGNvbXBhcmUoYSwgYiwgb3B0aW9ucykpXG4gIGZvciAoY29uc3QgdmVyc2lvbiBvZiB2KSB7XG4gICAgY29uc3QgaW5jbHVkZWQgPSBzYXRpc2ZpZXModmVyc2lvbiwgcmFuZ2UsIG9wdGlvbnMpXG4gICAgaWYgKGluY2x1ZGVkKSB7XG4gICAgICBwcmV2ID0gdmVyc2lvblxuICAgICAgaWYgKCFtaW4pXG4gICAgICAgIG1pbiA9IHZlcnNpb25cbiAgICB9IGVsc2Uge1xuICAgICAgaWYgKHByZXYpIHtcbiAgICAgICAgc2V0LnB1c2goW21pbiwgcHJldl0pXG4gICAgICB9XG4gICAgICBwcmV2ID0gbnVsbFxuICAgICAgbWluID0gbnVsbFxuICAgIH1cbiAgfVxuICBpZiAobWluKVxuICAgIHNldC5wdXNoKFttaW4sIG51bGxdKVxuXG4gIGNvbnN0IHJhbmdlcyA9IFtdXG4gIGZvciAoY29uc3QgW21pbiwgbWF4XSBvZiBzZXQpIHtcbiAgICBpZiAobWluID09PSBtYXgpXG4gICAgICByYW5nZXMucHVzaChtaW4pXG4gICAgZWxzZSBpZiAoIW1heCAmJiBtaW4gPT09IHZbMF0pXG4gICAgICByYW5nZXMucHVzaCgnKicpXG4gICAgZWxzZSBpZiAoIW1heClcbiAgICAgIHJhbmdlcy5wdXNoKGA+PSR7bWlufWApXG4gICAgZWxzZSBpZiAobWluID09PSB2WzBdKVxuICAgICAgcmFuZ2VzLnB1c2goYDw9JHttYXh9YClcbiAgICBlbHNlXG4gICAgICByYW5nZXMucHVzaChgJHttaW59IC0gJHttYXh9YClcbiAgfVxuICBjb25zdCBzaW1wbGlmaWVkID0gcmFuZ2VzLmpvaW4oJyB8fCAnKVxuICBjb25zdCBvcmlnaW5hbCA9IHR5cGVvZiByYW5nZS5yYXcgPT09ICdzdHJpbmcnID8gcmFuZ2UucmF3IDogU3RyaW5nKHJhbmdlKVxuICByZXR1cm4gc2ltcGxpZmllZC5sZW5ndGggPCBvcmlnaW5hbC5sZW5ndGggPyBzaW1wbGlmaWVkIDogcmFuZ2Vcbn1cbiJdLCJtYXBwaW5ncyI6IkFBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTsiLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///./node_modules/vega-embed/node_modules/semver/ranges/simplify.js\n");

/***/ }),

/***/ "./node_modules/vega-embed/node_modules/semver/ranges/subset.js":
/*!**********************************************************************!*\
  !*** ./node_modules/vega-embed/node_modules/semver/ranges/subset.js ***!
  \**********************************************************************/
/*! no static exports found */
/***/ (function(module, exports, __webpack_require__) {

eval("const Range = __webpack_require__(/*! ../classes/range.js */ \"./node_modules/vega-embed/node_modules/semver/classes/range.js\")\nconst Comparator = __webpack_require__(/*! ../classes/comparator.js */ \"./node_modules/vega-embed/node_modules/semver/classes/comparator.js\")\nconst { ANY } = Comparator\nconst satisfies = __webpack_require__(/*! ../functions/satisfies.js */ \"./node_modules/vega-embed/node_modules/semver/functions/satisfies.js\")\nconst compare = __webpack_require__(/*! ../functions/compare.js */ \"./node_modules/vega-embed/node_modules/semver/functions/compare.js\")\n\n// Complex range `r1 || r2 || ...` is a subset of `R1 || R2 || ...` iff:\n// - Every simple range `r1, r2, ...` is a null set, OR\n// - Every simple range `r1, r2, ...` which is not a null set is a subset of\n//   some `R1, R2, ...`\n//\n// Simple range `c1 c2 ...` is a subset of simple range `C1 C2 ...` iff:\n// - If c is only the ANY comparator\n//   - If C is only the ANY comparator, return true\n//   - Else if in prerelease mode, return false\n//   - else replace c with `[>=0.0.0]`\n// - If C is only the ANY comparator\n//   - if in prerelease mode, return true\n//   - else replace C with `[>=0.0.0]`\n// - Let EQ be the set of = comparators in c\n// - If EQ is more than one, return true (null set)\n// - Let GT be the highest > or >= comparator in c\n// - Let LT be the lowest < or <= comparator in c\n// - If GT and LT, and GT.semver > LT.semver, return true (null set)\n// - If any C is a = range, and GT or LT are set, return false\n// - If EQ\n//   - If GT, and EQ does not satisfy GT, return true (null set)\n//   - If LT, and EQ does not satisfy LT, return true (null set)\n//   - If EQ satisfies every C, return true\n//   - Else return false\n// - If GT\n//   - If GT.semver is lower than any > or >= comp in C, return false\n//   - If GT is >=, and GT.semver does not satisfy every C, return false\n//   - If GT.semver has a prerelease, and not in prerelease mode\n//     - If no C has a prerelease and the GT.semver tuple, return false\n// - If LT\n//   - If LT.semver is greater than any < or <= comp in C, return false\n//   - If LT is <=, and LT.semver does not satisfy every C, return false\n//   - If GT.semver has a prerelease, and not in prerelease mode\n//     - If no C has a prerelease and the LT.semver tuple, return false\n// - Else return true\n\nconst subset = (sub, dom, options = {}) => {\n  if (sub === dom)\n    return true\n\n  sub = new Range(sub, options)\n  dom = new Range(dom, options)\n  let sawNonNull = false\n\n  OUTER: for (const simpleSub of sub.set) {\n    for (const simpleDom of dom.set) {\n      const isSub = simpleSubset(simpleSub, simpleDom, options)\n      sawNonNull = sawNonNull || isSub !== null\n      if (isSub)\n        continue OUTER\n    }\n    // the null set is a subset of everything, but null simple ranges in\n    // a complex range should be ignored.  so if we saw a non-null range,\n    // then we know this isn't a subset, but if EVERY simple range was null,\n    // then it is a subset.\n    if (sawNonNull)\n      return false\n  }\n  return true\n}\n\nconst simpleSubset = (sub, dom, options) => {\n  if (sub === dom)\n    return true\n\n  if (sub.length === 1 && sub[0].semver === ANY) {\n    if (dom.length === 1 && dom[0].semver === ANY)\n      return true\n    else if (options.includePrerelease)\n      sub = [ new Comparator('>=0.0.0-0') ]\n    else\n      sub = [ new Comparator('>=0.0.0') ]\n  }\n\n  if (dom.length === 1 && dom[0].semver === ANY) {\n    if (options.includePrerelease)\n      return true\n    else\n      dom = [ new Comparator('>=0.0.0') ]\n  }\n\n  const eqSet = new Set()\n  let gt, lt\n  for (const c of sub) {\n    if (c.operator === '>' || c.operator === '>=')\n      gt = higherGT(gt, c, options)\n    else if (c.operator === '<' || c.operator === '<=')\n      lt = lowerLT(lt, c, options)\n    else\n      eqSet.add(c.semver)\n  }\n\n  if (eqSet.size > 1)\n    return null\n\n  let gtltComp\n  if (gt && lt) {\n    gtltComp = compare(gt.semver, lt.semver, options)\n    if (gtltComp > 0)\n      return null\n    else if (gtltComp === 0 && (gt.operator !== '>=' || lt.operator !== '<='))\n      return null\n  }\n\n  // will iterate one or zero times\n  for (const eq of eqSet) {\n    if (gt && !satisfies(eq, String(gt), options))\n      return null\n\n    if (lt && !satisfies(eq, String(lt), options))\n      return null\n\n    for (const c of dom) {\n      if (!satisfies(eq, String(c), options))\n        return false\n    }\n\n    return true\n  }\n\n  let higher, lower\n  let hasDomLT, hasDomGT\n  // if the subset has a prerelease, we need a comparator in the superset\n  // with the same tuple and a prerelease, or it's not a subset\n  let needDomLTPre = lt &&\n    !options.includePrerelease &&\n    lt.semver.prerelease.length ? lt.semver : false\n  let needDomGTPre = gt &&\n    !options.includePrerelease &&\n    gt.semver.prerelease.length ? gt.semver : false\n  // exception: <1.2.3-0 is the same as <1.2.3\n  if (needDomLTPre && needDomLTPre.prerelease.length === 1 &&\n      lt.operator === '<' && needDomLTPre.prerelease[0] === 0) {\n    needDomLTPre = false\n  }\n\n  for (const c of dom) {\n    hasDomGT = hasDomGT || c.operator === '>' || c.operator === '>='\n    hasDomLT = hasDomLT || c.operator === '<' || c.operator === '<='\n    if (gt) {\n      if (needDomGTPre) {\n        if (c.semver.prerelease && c.semver.prerelease.length &&\n            c.semver.major === needDomGTPre.major &&\n            c.semver.minor === needDomGTPre.minor &&\n            c.semver.patch === needDomGTPre.patch) {\n          needDomGTPre = false\n        }\n      }\n      if (c.operator === '>' || c.operator === '>=') {\n        higher = higherGT(gt, c, options)\n        if (higher === c && higher !== gt)\n          return false\n      } else if (gt.operator === '>=' && !satisfies(gt.semver, String(c), options))\n        return false\n    }\n    if (lt) {\n      if (needDomLTPre) {\n        if (c.semver.prerelease && c.semver.prerelease.length &&\n            c.semver.major === needDomLTPre.major &&\n            c.semver.minor === needDomLTPre.minor &&\n            c.semver.patch === needDomLTPre.patch) {\n          needDomLTPre = false\n        }\n      }\n      if (c.operator === '<' || c.operator === '<=') {\n        lower = lowerLT(lt, c, options)\n        if (lower === c && lower !== lt)\n          return false\n      } else if (lt.operator === '<=' && !satisfies(lt.semver, String(c), options))\n        return false\n    }\n    if (!c.operator && (lt || gt) && gtltComp !== 0)\n      return false\n  }\n\n  // if there was a < or >, and nothing in the dom, then must be false\n  // UNLESS it was limited by another range in the other direction.\n  // Eg, >1.0.0 <1.0.1 is still a subset of <2.0.0\n  if (gt && hasDomLT && !lt && gtltComp !== 0)\n    return false\n\n  if (lt && hasDomGT && !gt && gtltComp !== 0)\n    return false\n\n  // we needed a prerelease range in a specific tuple, but didn't get one\n  // then this isn't a subset.  eg >=1.2.3-pre is not a subset of >=1.0.0,\n  // because it includes prereleases in the 1.2.3 tuple\n  if (needDomGTPre || needDomLTPre)\n    return false\n\n  return true\n}\n\n// >=1.2.3 is lower than >1.2.3\nconst higherGT = (a, b, options) => {\n  if (!a)\n    return b\n  const comp = compare(a.semver, b.semver, options)\n  return comp > 0 ? a\n    : comp < 0 ? b\n    : b.operator === '>' && a.operator === '>=' ? b\n    : a\n}\n\n// <=1.2.3 is higher than <1.2.3\nconst lowerLT = (a, b, options) => {\n  if (!a)\n    return b\n  const comp = compare(a.semver, b.semver, options)\n  return comp < 0 ? a\n    : comp > 0 ? b\n    : b.operator === '<' && a.operator === '<=' ? b\n    : a\n}\n\nmodule.exports = subset\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,[encoded data, 11720 characters]\n//# sourceURL=webpack-internal:///./node_modules/vega-embed/node_modules/semver/ranges/subset.js\n");

/***/ }),

/***/ "./node_modules/vega-embed/node_modules/semver/ranges/to-comparators.js":
/*!******************************************************************************!*\
  !*** ./node_modules/vega-embed/node_modules/semver/ranges/to-comparators.js ***!
  \******************************************************************************/
/*! no static exports found */
/***/ (function(module, exports, __webpack_require__) {

eval("const Range = __webpack_require__(/*! ../classes/range */ \"./node_modules/vega-embed/node_modules/semver/classes/range.js\")\n\n// Mostly just for testing and legacy API reasons\nconst toComparators = (range, options) =>\n  new Range(range, options).set\n    .map(comp => comp.map(c => c.value).join(' ').trim().split(' '))\n\nmodule.exports = toComparators\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvdmVnYS1lbWJlZC9ub2RlX21vZHVsZXMvc2VtdmVyL3Jhbmdlcy90by1jb21wYXJhdG9ycy5qcy5qcyIsInNvdXJjZXMiOlsid2VicGFjazovLy8uL25vZGVfbW9kdWxlcy92ZWdhLWVtYmVkL25vZGVfbW9kdWxlcy9zZW12ZXIvcmFuZ2VzL3RvLWNvbXBhcmF0b3JzLmpzPzdkNjMiXSwic291cmNlc0NvbnRlbnQiOlsiY29uc3QgUmFuZ2UgPSByZXF1aXJlKCcuLi9jbGFzc2VzL3JhbmdlJylcblxuLy8gTW9zdGx5IGp1c3QgZm9yIHRlc3RpbmcgYW5kIGxlZ2FjeSBBUEkgcmVhc29uc1xuY29uc3QgdG9Db21wYXJhdG9ycyA9IChyYW5nZSwgb3B0aW9ucykgPT5cbiAgbmV3IFJhbmdlKHJhbmdlLCBvcHRpb25zKS5zZXRcbiAgICAubWFwKGNvbXAgPT4gY29tcC5tYXAoYyA9PiBjLnZhbHVlKS5qb2luKCcgJykudHJpbSgpLnNwbGl0KCcgJykpXG5cbm1vZHVsZS5leHBvcnRzID0gdG9Db21wYXJhdG9yc1xuIl0sIm1hcHBpbmdzIjoiQUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOyIsInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///./node_modules/vega-embed/node_modules/semver/ranges/to-comparators.js\n");

/***/ }),

/***/ "./node_modules/vega-embed/node_modules/semver/ranges/valid.js":
/*!*********************************************************************!*\
  !*** ./node_modules/vega-embed/node_modules/semver/ranges/valid.js ***!
  \*********************************************************************/
/*! no static exports found */
/***/ (function(module, exports, __webpack_require__) {

eval("const Range = __webpack_require__(/*! ../classes/range */ \"./node_modules/vega-embed/node_modules/semver/classes/range.js\")\nconst validRange = (range, options) => {\n  try {\n    // Return '*' instead of '' so that truthiness works.\n    // This will throw if it's invalid anyway\n    return new Range(range, options).range || '*'\n  } catch (er) {\n    return null\n  }\n}\nmodule.exports = validRange\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvdmVnYS1lbWJlZC9ub2RlX21vZHVsZXMvc2VtdmVyL3Jhbmdlcy92YWxpZC5qcy5qcyIsInNvdXJjZXMiOlsid2VicGFjazovLy8uL25vZGVfbW9kdWxlcy92ZWdhLWVtYmVkL25vZGVfbW9kdWxlcy9zZW12ZXIvcmFuZ2VzL3ZhbGlkLmpzPzA5ODIiXSwic291cmNlc0NvbnRlbnQiOlsiY29uc3QgUmFuZ2UgPSByZXF1aXJlKCcuLi9jbGFzc2VzL3JhbmdlJylcbmNvbnN0IHZhbGlkUmFuZ2UgPSAocmFuZ2UsIG9wdGlvbnMpID0+IHtcbiAgdHJ5IHtcbiAgICAvLyBSZXR1cm4gJyonIGluc3RlYWQgb2YgJycgc28gdGhhdCB0cnV0aGluZXNzIHdvcmtzLlxuICAgIC8vIFRoaXMgd2lsbCB0aHJvdyBpZiBpdCdzIGludmFsaWQgYW55d2F5XG4gICAgcmV0dXJuIG5ldyBSYW5nZShyYW5nZSwgb3B0aW9ucykucmFuZ2UgfHwgJyonXG4gIH0gY2F0Y2ggKGVyKSB7XG4gICAgcmV0dXJuIG51bGxcbiAgfVxufVxubW9kdWxlLmV4cG9ydHMgPSB2YWxpZFJhbmdlXG4iXSwibWFwcGluZ3MiOiJBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7Iiwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///./node_modules/vega-embed/node_modules/semver/ranges/valid.js\n");

/***/ }),

/***/ "./node_modules/vega-embed/node_modules/vega-tooltip/build/vega-tooltip.module.js":
/*!****************************************************************************************!*\
  !*** ./node_modules/vega-embed/node_modules/vega-tooltip/build/vega-tooltip.module.js ***!
  \****************************************************************************************/
/*! exports provided: default, DEFAULT_OPTIONS, Handler, calculatePosition, createDefaultStyle, escapeHTML, formatValue, replacer, stringify, version */
/***/ (function(module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"DEFAULT_OPTIONS\", function() { return DEFAULT_OPTIONS; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"Handler\", function() { return Handler; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"calculatePosition\", function() { return calculatePosition; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"createDefaultStyle\", function() { return createDefaultStyle; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"escapeHTML\", function() { return escapeHTML; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"formatValue\", function() { return formatValue; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"replacer\", function() { return replacer; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"stringify\", function() { return stringify; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"version\", function() { return version$1; });\n/* harmony import */ var vega_util__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! vega-util */ \"./node_modules/vega-embed/node_modules/vega-util/build/vega-util.module.js\");\n\n\nvar name = \"vega-tooltip\";\nvar version = \"0.25.1\";\nvar description = \"A tooltip plugin for Vega-Lite and Vega visualizations.\";\nvar keywords = [\n\t\"vega-lite\",\n\t\"vega\",\n\t\"tooltip\"\n];\nvar repository = {\n\ttype: \"git\",\n\turl: \"https://github.com/vega/vega-tooltip.git\"\n};\nvar author = {\n\tname: \"UW Interactive Data Lab\",\n\turl: \"https://idl.cs.washington.edu\"\n};\nvar collaborators = [\n\t\"Dominik Moritz\",\n\t\"Sira Horradarn\",\n\t\"Zening Qu\",\n\t\"Kanit Wongsuphasawat\",\n\t\"Yuri Astrakhan\",\n\t\"Jeffrey Heer\"\n];\nvar license = \"BSD-3-Clause\";\nvar bugs = {\n\turl: \"https://github.com/vega/vega-tooltip/issues\"\n};\nvar homepage = \"https://github.com/vega/vega-tooltip#readme\";\nvar main = \"build/vega-tooltip.js\";\nvar module = \"build/vega-tooltip.module.js\";\nvar unpkg = \"build/vega-tooltip.min.js\";\nvar jsdelivr = \"build/vega-tooltip.min.js\";\nvar types = \"build/vega-tooltip.module.d.ts\";\nvar files = [\n\t\"src\",\n\t\"build\",\n\t\"types\"\n];\nvar scripts = {\n\tprebuild: \"yarn clean && yarn build:style\",\n\tbuild: \"rollup -c\",\n\t\"build:style\": \"./build-style.sh\",\n\tclean: \"rimraf build && rimraf src/style.ts\",\n\t\"copy:data\": \"rsync -r node_modules/vega-datasets/data/* examples/data\",\n\t\"copy:build\": \"rsync -r build/* examples/build\",\n\t\"deploy:gh\": \"yarn build && yarn copy:build && gh-pages -d examples && yarn clean\",\n\tprepublishOnly: \"yarn clean && yarn build\",\n\tpreversion: \"yarn lint && yarn test\",\n\tserve: \"browser-sync start -s -f build examples --serveStatic examples\",\n\tstart: \"yarn build && concurrently --kill-others -n Server,Rollup 'yarn serve' 'rollup -c -w'\",\n\tpretest: \"yarn build:style\",\n\ttest: \"beemo jest\",\n\t\"test:inspect\": \"node --inspect-brk ./node_modules/.bin/jest --runInBand\",\n\tprepare: \"beemo create-config && yarn copy:data\",\n\tprettierbase: \"beemo prettier '*.{css,scss,html}'\",\n\teslintbase: \"beemo eslint .\",\n\tformat: \"yarn eslintbase --fix && yarn prettierbase --write\",\n\tlint: \"yarn eslintbase && yarn prettierbase --check\"\n};\nvar devDependencies = {\n\t\"@rollup/plugin-json\": \"^4.1.0\",\n\t\"@rollup/plugin-node-resolve\": \"^11.2.0\",\n\t\"@wessberg/rollup-plugin-ts\": \"^1.3.8\",\n\t\"browser-sync\": \"^2.26.14\",\n\tconcurrently: \"^6.0.0\",\n\t\"gh-pages\": \"^3.1.0\",\n\t\"node-sass\": \"^5.0.0\",\n\tpath: \"^0.12.7\",\n\trollup: \"^2.39.1\",\n\t\"rollup-plugin-bundle-size\": \"^1.0.3\",\n\t\"rollup-plugin-terser\": \"^7.0.2\",\n\ttypescript: \"~4.2.2\",\n\t\"vega-datasets\": \"^2.2.0\",\n\t\"vega-lite-dev-config\": \"^0.16.1\",\n\t\"vega-typings\": \"^0.19.2\"\n};\nvar dependencies = {\n\t\"vega-util\": \"^1.16.0\"\n};\nvar pkg = {\n\tname: name,\n\tversion: version,\n\tdescription: description,\n\tkeywords: keywords,\n\trepository: repository,\n\tauthor: author,\n\tcollaborators: collaborators,\n\tlicense: license,\n\tbugs: bugs,\n\thomepage: homepage,\n\tmain: main,\n\tmodule: module,\n\tunpkg: unpkg,\n\tjsdelivr: jsdelivr,\n\ttypes: types,\n\tfiles: files,\n\tscripts: scripts,\n\tdevDependencies: devDependencies,\n\tdependencies: dependencies\n};\n\n// generated with build-style.sh\nvar defaultStyle = `#vg-tooltip-element {\n  visibility: hidden;\n  padding: 8px;\n  position: fixed;\n  z-index: 1000;\n  font-family: sans-serif;\n  font-size: 11px;\n  border-radius: 3px;\n  box-shadow: 2px 2px 4px rgba(0, 0, 0, 0.1);\n  /* The default theme is the light theme. */\n  background-color: rgba(255, 255, 255, 0.95);\n  border: 1px solid #d9d9d9;\n  color: black; }\n  #vg-tooltip-element.visible {\n    visibility: visible; }\n  #vg-tooltip-element h2 {\n    margin-top: 0;\n    margin-bottom: 10px;\n    font-size: 13px; }\n  #vg-tooltip-element img {\n    max-width: 200px;\n    max-height: 200px; }\n  #vg-tooltip-element table {\n    border-spacing: 0; }\n    #vg-tooltip-element table tr {\n      border: none; }\n      #vg-tooltip-element table tr td {\n        overflow: hidden;\n        text-overflow: ellipsis;\n        padding-top: 2px;\n        padding-bottom: 2px; }\n        #vg-tooltip-element table tr td.key {\n          color: #808080;\n          max-width: 150px;\n          text-align: right;\n          padding-right: 4px; }\n        #vg-tooltip-element table tr td.value {\n          display: block;\n          max-width: 300px;\n          max-height: 7em;\n          text-align: left; }\n  #vg-tooltip-element.dark-theme {\n    background-color: rgba(32, 32, 32, 0.9);\n    border: 1px solid #f5f5f5;\n    color: white; }\n    #vg-tooltip-element.dark-theme td.key {\n      color: #bfbfbf; }\n`;\n\nconst EL_ID = 'vg-tooltip-element';\nconst DEFAULT_OPTIONS = {\n    /**\n     * X offset.\n     */\n    offsetX: 10,\n    /**\n     * Y offset.\n     */\n    offsetY: 10,\n    /**\n     * ID of the tooltip element.\n     */\n    id: EL_ID,\n    /**\n     * ID of the tooltip CSS style.\n     */\n    styleId: 'vega-tooltip-style',\n    /**\n     * The name of the theme. You can use the CSS class called [THEME]-theme to style the tooltips.\n     *\n     * There are two predefined themes: \"light\" (default) and \"dark\".\n     */\n    theme: 'light',\n    /**\n     * Do not use the default styles provided by Vega Tooltip. If you enable this option, you need to use your own styles. It is not necessary to disable the default style when using a custom theme.\n     */\n    disableDefaultStyle: false,\n    /**\n     * HTML sanitizer function that removes dangerous HTML to prevent XSS.\n     *\n     * This should be a function from string to string. You may replace it with a formatter such as a markdown formatter.\n     */\n    sanitize: escapeHTML,\n    /**\n     * The maximum recursion depth when printing objects in the tooltip.\n     */\n    maxDepth: 2,\n};\n/**\n * Escape special HTML characters.\n *\n * @param value A value to convert to string and HTML-escape.\n */\nfunction escapeHTML(value) {\n    return String(value).replace(/&/g, '&amp;').replace(/</g, '&lt;');\n}\nfunction createDefaultStyle(id) {\n    // Just in case this id comes from a user, ensure these is no security issues\n    if (!/^[A-Za-z]+[-:.\\w]*$/.test(id)) {\n        throw new Error('Invalid HTML ID');\n    }\n    return defaultStyle.toString().replace(EL_ID, id);\n}\n\n/*! *****************************************************************************\r\nCopyright (c) Microsoft Corporation.\r\n\r\nPermission to use, copy, modify, and/or distribute this software for any\r\npurpose with or without fee is hereby granted.\r\n\r\nTHE SOFTWARE IS PROVIDED \"AS IS\" AND THE AUTHOR DISCLAIMS ALL WARRANTIES WITH\r\nREGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY\r\nAND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT,\r\nINDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM\r\nLOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR\r\nOTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR\r\nPERFORMANCE OF THIS SOFTWARE.\r\n***************************************************************************** */\r\n\r\nfunction __rest(s, e) {\r\n    var t = {};\r\n    for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0)\r\n        t[p] = s[p];\r\n    if (s != null && typeof Object.getOwnPropertySymbols === \"function\")\r\n        for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) {\r\n            if (e.indexOf(p[i]) < 0 && Object.prototype.propertyIsEnumerable.call(s, p[i]))\r\n                t[p[i]] = s[p[i]];\r\n        }\r\n    return t;\r\n}\n\n/**\n * Format the value to be shown in the tooltip.\n *\n * @param value The value to show in the tooltip.\n * @param valueToHtml Function to convert a single cell value to an HTML string\n */\nfunction formatValue(value, valueToHtml, maxDepth) {\n    if (Object(vega_util__WEBPACK_IMPORTED_MODULE_0__[\"isArray\"])(value)) {\n        return `[${value.map((v) => valueToHtml(Object(vega_util__WEBPACK_IMPORTED_MODULE_0__[\"isString\"])(v) ? v : stringify(v, maxDepth))).join(', ')}]`;\n    }\n    if (Object(vega_util__WEBPACK_IMPORTED_MODULE_0__[\"isObject\"])(value)) {\n        let content = '';\n        const _a = value, { title, image } = _a, rest = __rest(_a, [\"title\", \"image\"]);\n        if (title) {\n            content += `<h2>${valueToHtml(title)}</h2>`;\n        }\n        if (image) {\n            content += `<img src=\"${valueToHtml(image)}\">`;\n        }\n        const keys = Object.keys(rest);\n        if (keys.length > 0) {\n            content += '<table>';\n            for (const key of keys) {\n                let val = rest[key];\n                // ignore undefined properties\n                if (val === undefined) {\n                    continue;\n                }\n                if (Object(vega_util__WEBPACK_IMPORTED_MODULE_0__[\"isObject\"])(val)) {\n                    val = stringify(val, maxDepth);\n                }\n                content += `<tr><td class=\"key\">${valueToHtml(key)}:</td><td class=\"value\">${valueToHtml(val)}</td></tr>`;\n            }\n            content += `</table>`;\n        }\n        return content || '{}'; // show empty object if there are no properties\n    }\n    return valueToHtml(value);\n}\nfunction replacer(maxDepth) {\n    const stack = [];\n    return function (key, value) {\n        if (typeof value !== 'object' || value === null) {\n            return value;\n        }\n        const pos = stack.indexOf(this) + 1;\n        stack.length = pos;\n        if (stack.length > maxDepth) {\n            return '[Object]';\n        }\n        if (stack.indexOf(value) >= 0) {\n            return '[Circular]';\n        }\n        stack.push(value);\n        return value;\n    };\n}\n/**\n * Stringify any JS object to valid JSON\n */\nfunction stringify(obj, maxDepth) {\n    return JSON.stringify(obj, replacer(maxDepth));\n}\n\n/**\n * Position the tooltip\n *\n * @param event The mouse event.\n * @param tooltipBox\n * @param offsetX Horizontal offset.\n * @param offsetY Vertical offset.\n */\nfunction calculatePosition(event, tooltipBox, offsetX, offsetY) {\n    let x = event.clientX + offsetX;\n    if (x + tooltipBox.width > window.innerWidth) {\n        x = +event.clientX - offsetX - tooltipBox.width;\n    }\n    let y = event.clientY + offsetY;\n    if (y + tooltipBox.height > window.innerHeight) {\n        y = +event.clientY - offsetY - tooltipBox.height;\n    }\n    return { x, y };\n}\n\n/**\n * The tooltip handler class.\n */\nclass Handler {\n    /**\n     * Create the tooltip handler and initialize the element and style.\n     *\n     * @param options Tooltip Options\n     */\n    constructor(options) {\n        this.options = Object.assign(Object.assign({}, DEFAULT_OPTIONS), options);\n        const elementId = this.options.id;\n        this.el = null;\n        // bind this to call\n        this.call = this.tooltipHandler.bind(this);\n        // prepend a default stylesheet for tooltips to the head\n        if (!this.options.disableDefaultStyle && !document.getElementById(this.options.styleId)) {\n            const style = document.createElement('style');\n            style.setAttribute('id', this.options.styleId);\n            style.innerHTML = createDefaultStyle(elementId);\n            const head = document.head;\n            if (head.childNodes.length > 0) {\n                head.insertBefore(style, head.childNodes[0]);\n            }\n            else {\n                head.appendChild(style);\n            }\n        }\n    }\n    /**\n     * The tooltip handler function.\n     */\n    tooltipHandler(handler, event, item, value) {\n        // console.log(handler, event, item, value);\n        // append a div element that we use as a tooltip unless it already exists\n        this.el = document.getElementById(this.options.id);\n        if (!this.el) {\n            this.el = document.createElement('div');\n            this.el.setAttribute('id', this.options.id);\n            this.el.classList.add('vg-tooltip');\n            document.body.appendChild(this.el);\n        }\n        const tooltipContainer = document.fullscreenElement != null ? document.fullscreenElement : document.body;\n        tooltipContainer.appendChild(this.el);\n        // hide tooltip for null, undefined, or empty string values\n        if (value == null || value === '') {\n            this.el.classList.remove('visible', `${this.options.theme}-theme`);\n            return;\n        }\n        // set the tooltip content\n        this.el.innerHTML = formatValue(value, this.options.sanitize, this.options.maxDepth);\n        // make the tooltip visible\n        this.el.classList.add('visible', `${this.options.theme}-theme`);\n        const { x, y } = calculatePosition(event, this.el.getBoundingClientRect(), this.options.offsetX, this.options.offsetY);\n        this.el.setAttribute('style', `top: ${y}px; left: ${x}px`);\n    }\n}\n\nconst version$1 = pkg.version;\n/**\n * Create a tooltip handler and register it with the provided view.\n *\n * @param view The Vega view.\n * @param opt Tooltip options.\n */\nfunction index (view, opt) {\n    const handler = new Handler(opt);\n    view.tooltip(handler.call).run();\n    return handler;\n}\n\n/* harmony default export */ __webpack_exports__[\"default\"] = (index);\n\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,[encoded data, 20864 characters]\n//# sourceURL=webpack-internal:///./node_modules/vega-embed/node_modules/vega-tooltip/build/vega-tooltip.module.js\n");

/***/ }),

/***/ "./node_modules/vega-embed/node_modules/vega-util/build/vega-util.module.js":
/*!**********************************************************************************!*\
  !*** ./node_modules/vega-embed/node_modules/vega-util/build/vega-util.module.js ***!
  \**********************************************************************************/
/*! exports provided: Debug, Error, Info, None, Warn, accessor, accessorFields, accessorName, array, ascending, clampRange, compare, constant, debounce, error, extend, extent, extentIndex, falsy, fastmap, field, flush, hasOwnProperty, id, identity, inherits, inrange, isArray, isBoolean, isDate, isFunction, isIterable, isNumber, isObject, isRegExp, isString, key, lerp, logger, lruCache, merge, mergeConfig, one, pad, panLinear, panLog, panPow, panSymlog, peek, quarter, repeat, span, splitAccessPath, stringValue, toBoolean, toDate, toNumber, toSet, toString, truncate, truthy, utcquarter, visitArray, writeConfig, zero, zoomLinear, zoomLog, zoomPow, zoomSymlog */
/***/ (function(module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"Debug\", function() { return Debug; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"Error\", function() { return Error$1; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"Info\", function() { return Info; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"None\", function() { return None; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"Warn\", function() { return Warn; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"accessor\", function() { return accessor; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"accessorFields\", function() { return accessorFields; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"accessorName\", function() { return accessorName; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"array\", function() { return array; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"ascending\", function() { return ascending; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"clampRange\", function() { return clampRange; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"compare\", function() { return compare; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"constant\", function() { return constant; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"debounce\", function() { return debounce; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"error\", function() { return error; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"extend\", function() { return extend; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"extent\", function() { return extent; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"extentIndex\", function() { return extentIndex; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"falsy\", function() { return falsy; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"fastmap\", function() { return fastmap; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"field\", function() { return field; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"flush\", function() { return flush; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"hasOwnProperty\", function() { return has; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"id\", function() { return id; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"identity\", function() { return identity; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"inherits\", function() { return inherits; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"inrange\", function() { return inrange; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"isArray\", function() { return isArray; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"isBoolean\", function() { return isBoolean; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"isDate\", function() { return isDate; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"isFunction\", function() { return isFunction; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"isIterable\", function() { return isIterable; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"isNumber\", function() { return isNumber; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"isObject\", function() { return isObject; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"isRegExp\", function() { return isRegExp; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"isString\", function() { return isString; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"key\", function() { return key; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"lerp\", function() { return lerp; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"logger\", function() { return logger; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"lruCache\", function() { return lruCache; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"merge\", function() { return merge; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"mergeConfig\", function() { return mergeConfig; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"one\", function() { return one; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"pad\", function() { return pad; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"panLinear\", function() { return panLinear; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"panLog\", function() { return panLog; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"panPow\", function() { return panPow; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"panSymlog\", function() { return panSymlog; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"peek\", function() { return peek; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"quarter\", function() { return quarter; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"repeat\", function() { return repeat; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"span\", function() { return span; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"splitAccessPath\", function() { return splitAccessPath; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"stringValue\", function() { return $; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"toBoolean\", function() { return toBoolean; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"toDate\", function() { return toDate; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"toNumber\", function() { return toNumber; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"toSet\", function() { return toSet; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"toString\", function() { return toString; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"truncate\", function() { return truncate; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"truthy\", function() { return truthy; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"utcquarter\", function() { return utcquarter; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"visitArray\", function() { return visitArray; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"writeConfig\", function() { return writeConfig; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"zero\", function() { return zero; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"zoomLinear\", function() { return zoomLinear; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"zoomLog\", function() { return zoomLog; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"zoomPow\", function() { return zoomPow; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"zoomSymlog\", function() { return zoomSymlog; });\nfunction accessor (fn, fields, name) {\n  fn.fields = fields || [];\n  fn.fname = name;\n  return fn;\n}\nfunction accessorName(fn) {\n  return fn == null ? null : fn.fname;\n}\nfunction accessorFields(fn) {\n  return fn == null ? null : fn.fields;\n}\n\nfunction getter (path) {\n  return path.length === 1 ? get1(path[0]) : getN(path);\n}\n\nconst get1 = field => function (obj) {\n  return obj[field];\n};\n\nconst getN = path => {\n  const len = path.length;\n  return function (obj) {\n    for (let i = 0; i < len; ++i) {\n      obj = obj[path[i]];\n    }\n\n    return obj;\n  };\n};\n\nfunction error (message) {\n  throw Error(message);\n}\n\nfunction splitAccessPath (p) {\n  const path = [],\n        n = p.length;\n  let q = null,\n      b = 0,\n      s = '',\n      i,\n      j,\n      c;\n  p = p + '';\n\n  function push() {\n    path.push(s + p.substring(i, j));\n    s = '';\n    i = j + 1;\n  }\n\n  for (i = j = 0; j < n; ++j) {\n    c = p[j];\n\n    if (c === '\\\\') {\n      s += p.substring(i, j);\n      s += p.substring(++j, ++j);\n      i = j;\n    } else if (c === q) {\n      push();\n      q = null;\n      b = -1;\n    } else if (q) {\n      continue;\n    } else if (i === b && c === '\"') {\n      i = j + 1;\n      q = c;\n    } else if (i === b && c === \"'\") {\n      i = j + 1;\n      q = c;\n    } else if (c === '.' && !b) {\n      if (j > i) {\n        push();\n      } else {\n        i = j + 1;\n      }\n    } else if (c === '[') {\n      if (j > i) push();\n      b = i = j + 1;\n    } else if (c === ']') {\n      if (!b) error('Access path missing open bracket: ' + p);\n      if (b > 0) push();\n      b = 0;\n      i = j + 1;\n    }\n  }\n\n  if (b) error('Access path missing closing bracket: ' + p);\n  if (q) error('Access path missing closing quote: ' + p);\n\n  if (j > i) {\n    j++;\n    push();\n  }\n\n  return path;\n}\n\nfunction field (field, name, opt) {\n  const path = splitAccessPath(field);\n  field = path.length === 1 ? path[0] : field;\n  return accessor((opt && opt.get || getter)(path), [field], name || field);\n}\n\nconst id = field('id');\nconst identity = accessor(_ => _, [], 'identity');\nconst zero = accessor(() => 0, [], 'zero');\nconst one = accessor(() => 1, [], 'one');\nconst truthy = accessor(() => true, [], 'true');\nconst falsy = accessor(() => false, [], 'false');\n\nfunction log$1(method, level, input) {\n  const args = [level].concat([].slice.call(input));\n  console[method].apply(console, args); // eslint-disable-line no-console\n}\n\nconst None = 0;\nconst Error$1 = 1;\nconst Warn = 2;\nconst Info = 3;\nconst Debug = 4;\nfunction logger (_, method) {\n  let level = _ || None;\n  return {\n    level(_) {\n      if (arguments.length) {\n        level = +_;\n        return this;\n      } else {\n        return level;\n      }\n    },\n\n    error() {\n      if (level >= Error$1) log$1(method || 'error', 'ERROR', arguments);\n      return this;\n    },\n\n    warn() {\n      if (level >= Warn) log$1(method || 'warn', 'WARN', arguments);\n      return this;\n    },\n\n    info() {\n      if (level >= Info) log$1(method || 'log', 'INFO', arguments);\n      return this;\n    },\n\n    debug() {\n      if (level >= Debug) log$1(method || 'log', 'DEBUG', arguments);\n      return this;\n    }\n\n  };\n}\n\nvar isArray = Array.isArray;\n\nfunction isObject (_) {\n  return _ === Object(_);\n}\n\nconst isLegalKey = key => key !== '__proto__';\n\nfunction mergeConfig(...configs) {\n  return configs.reduce((out, source) => {\n    for (const key in source) {\n      if (key === 'signals') {\n        // for signals, we merge the signals arrays\n        // source signals take precedence over\n        // existing signals with the same name\n        out.signals = mergeNamed(out.signals, source.signals);\n      } else {\n        // otherwise, merge objects subject to recursion constraints\n        // for legend block, recurse for the layout entry only\n        // for style block, recurse for all properties\n        // otherwise, no recursion: objects overwrite, no merging\n        const r = key === 'legend' ? {\n          layout: 1\n        } : key === 'style' ? true : null;\n        writeConfig(out, key, source[key], r);\n      }\n    }\n\n    return out;\n  }, {});\n}\nfunction writeConfig(output, key, value, recurse) {\n  if (!isLegalKey(key)) return;\n  let k, o;\n\n  if (isObject(value) && !isArray(value)) {\n    o = isObject(output[key]) ? output[key] : output[key] = {};\n\n    for (k in value) {\n      if (recurse && (recurse === true || recurse[k])) {\n        writeConfig(o, k, value[k]);\n      } else if (isLegalKey(k)) {\n        o[k] = value[k];\n      }\n    }\n  } else {\n    output[key] = value;\n  }\n}\n\nfunction mergeNamed(a, b) {\n  if (a == null) return b;\n  const map = {},\n        out = [];\n\n  function add(_) {\n    if (!map[_.name]) {\n      map[_.name] = 1;\n      out.push(_);\n    }\n  }\n\n  b.forEach(add);\n  a.forEach(add);\n  return out;\n}\n\nfunction peek (array) {\n  return array[array.length - 1];\n}\n\nfunction toNumber (_) {\n  return _ == null || _ === '' ? null : +_;\n}\n\nconst exp = sign => x => sign * Math.exp(x);\n\nconst log = sign => x => Math.log(sign * x);\n\nconst symlog = c => x => Math.sign(x) * Math.log1p(Math.abs(x / c));\n\nconst symexp = c => x => Math.sign(x) * Math.expm1(Math.abs(x)) * c;\n\nconst pow = exponent => x => x < 0 ? -Math.pow(-x, exponent) : Math.pow(x, exponent);\n\nfunction pan(domain, delta, lift, ground) {\n  const d0 = lift(domain[0]),\n        d1 = lift(peek(domain)),\n        dd = (d1 - d0) * delta;\n  return [ground(d0 - dd), ground(d1 - dd)];\n}\n\nfunction panLinear(domain, delta) {\n  return pan(domain, delta, toNumber, identity);\n}\nfunction panLog(domain, delta) {\n  var sign = Math.sign(domain[0]);\n  return pan(domain, delta, log(sign), exp(sign));\n}\nfunction panPow(domain, delta, exponent) {\n  return pan(domain, delta, pow(exponent), pow(1 / exponent));\n}\nfunction panSymlog(domain, delta, constant) {\n  return pan(domain, delta, symlog(constant), symexp(constant));\n}\n\nfunction zoom(domain, anchor, scale, lift, ground) {\n  const d0 = lift(domain[0]),\n        d1 = lift(peek(domain)),\n        da = anchor != null ? lift(anchor) : (d0 + d1) / 2;\n  return [ground(da + (d0 - da) * scale), ground(da + (d1 - da) * scale)];\n}\n\nfunction zoomLinear(domain, anchor, scale) {\n  return zoom(domain, anchor, scale, toNumber, identity);\n}\nfunction zoomLog(domain, anchor, scale) {\n  const sign = Math.sign(domain[0]);\n  return zoom(domain, anchor, scale, log(sign), exp(sign));\n}\nfunction zoomPow(domain, anchor, scale, exponent) {\n  return zoom(domain, anchor, scale, pow(exponent), pow(1 / exponent));\n}\nfunction zoomSymlog(domain, anchor, scale, constant) {\n  return zoom(domain, anchor, scale, symlog(constant), symexp(constant));\n}\n\nfunction quarter(date) {\n  return 1 + ~~(new Date(date).getMonth() / 3);\n}\nfunction utcquarter(date) {\n  return 1 + ~~(new Date(date).getUTCMonth() / 3);\n}\n\nfunction array (_) {\n  return _ != null ? isArray(_) ? _ : [_] : [];\n}\n\n/**\n * Span-preserving range clamp. If the span of the input range is less\n * than (max - min) and an endpoint exceeds either the min or max value,\n * the range is translated such that the span is preserved and one\n * endpoint touches the boundary of the min/max range.\n * If the span exceeds (max - min), the range [min, max] is returned.\n */\nfunction clampRange (range, min, max) {\n  let lo = range[0],\n      hi = range[1],\n      span;\n\n  if (hi < lo) {\n    span = hi;\n    hi = lo;\n    lo = span;\n  }\n\n  span = hi - lo;\n  return span >= max - min ? [min, max] : [lo = Math.min(Math.max(lo, min), max - span), lo + span];\n}\n\nfunction isFunction (_) {\n  return typeof _ === 'function';\n}\n\nconst DESCENDING = 'descending';\nfunction compare (fields, orders, opt) {\n  opt = opt || {};\n  orders = array(orders) || [];\n  const ord = [],\n        get = [],\n        fmap = {},\n        gen = opt.comparator || comparator;\n  array(fields).forEach((f, i) => {\n    if (f == null) return;\n    ord.push(orders[i] === DESCENDING ? -1 : 1);\n    get.push(f = isFunction(f) ? f : field(f, null, opt));\n    (accessorFields(f) || []).forEach(_ => fmap[_] = 1);\n  });\n  return get.length === 0 ? null : accessor(gen(get, ord), Object.keys(fmap));\n}\nconst ascending = (u, v) => (u < v || u == null) && v != null ? -1 : (u > v || v == null) && u != null ? 1 : (v = v instanceof Date ? +v : v, u = u instanceof Date ? +u : u) !== u && v === v ? -1 : v !== v && u === u ? 1 : 0;\n\nconst comparator = (fields, orders) => fields.length === 1 ? compare1(fields[0], orders[0]) : compareN(fields, orders, fields.length);\n\nconst compare1 = (field, order) => function (a, b) {\n  return ascending(field(a), field(b)) * order;\n};\n\nconst compareN = (fields, orders, n) => {\n  orders.push(0); // pad zero for convenient lookup\n\n  return function (a, b) {\n    let f,\n        c = 0,\n        i = -1;\n\n    while (c === 0 && ++i < n) {\n      f = fields[i];\n      c = ascending(f(a), f(b));\n    }\n\n    return c * orders[i];\n  };\n};\n\nfunction constant (_) {\n  return isFunction(_) ? _ : () => _;\n}\n\nfunction debounce (delay, handler) {\n  let tid;\n  return e => {\n    if (tid) clearTimeout(tid);\n    tid = setTimeout(() => (handler(e), tid = null), delay);\n  };\n}\n\nfunction extend (_) {\n  for (let x, k, i = 1, len = arguments.length; i < len; ++i) {\n    x = arguments[i];\n\n    for (k in x) {\n      _[k] = x[k];\n    }\n  }\n\n  return _;\n}\n\n/**\n * Return an array with minimum and maximum values, in the\n * form [min, max]. Ignores null, undefined, and NaN values.\n */\nfunction extent (array, f) {\n  let i = 0,\n      n,\n      v,\n      min,\n      max;\n\n  if (array && (n = array.length)) {\n    if (f == null) {\n      // find first valid value\n      for (v = array[i]; i < n && (v == null || v !== v); v = array[++i]);\n\n      min = max = v; // visit all other values\n\n      for (; i < n; ++i) {\n        v = array[i]; // skip null/undefined; NaN will fail all comparisons\n\n        if (v != null) {\n          if (v < min) min = v;\n          if (v > max) max = v;\n        }\n      }\n    } else {\n      // find first valid value\n      for (v = f(array[i]); i < n && (v == null || v !== v); v = f(array[++i]));\n\n      min = max = v; // visit all other values\n\n      for (; i < n; ++i) {\n        v = f(array[i]); // skip null/undefined; NaN will fail all comparisons\n\n        if (v != null) {\n          if (v < min) min = v;\n          if (v > max) max = v;\n        }\n      }\n    }\n  }\n\n  return [min, max];\n}\n\nfunction extentIndex (array, f) {\n  const n = array.length;\n  let i = -1,\n      a,\n      b,\n      c,\n      u,\n      v;\n\n  if (f == null) {\n    while (++i < n) {\n      b = array[i];\n\n      if (b != null && b >= b) {\n        a = c = b;\n        break;\n      }\n    }\n\n    if (i === n) return [-1, -1];\n    u = v = i;\n\n    while (++i < n) {\n      b = array[i];\n\n      if (b != null) {\n        if (a > b) {\n          a = b;\n          u = i;\n        }\n\n        if (c < b) {\n          c = b;\n          v = i;\n        }\n      }\n    }\n  } else {\n    while (++i < n) {\n      b = f(array[i], i, array);\n\n      if (b != null && b >= b) {\n        a = c = b;\n        break;\n      }\n    }\n\n    if (i === n) return [-1, -1];\n    u = v = i;\n\n    while (++i < n) {\n      b = f(array[i], i, array);\n\n      if (b != null) {\n        if (a > b) {\n          a = b;\n          u = i;\n        }\n\n        if (c < b) {\n          c = b;\n          v = i;\n        }\n      }\n    }\n  }\n\n  return [u, v];\n}\n\nconst hop = Object.prototype.hasOwnProperty;\nfunction has (object, property) {\n  return hop.call(object, property);\n}\n\nconst NULL = {};\nfunction fastmap (input) {\n  let obj = {},\n      test;\n\n  function has$1(key) {\n    return has(obj, key) && obj[key] !== NULL;\n  }\n\n  const map = {\n    size: 0,\n    empty: 0,\n    object: obj,\n    has: has$1,\n\n    get(key) {\n      return has$1(key) ? obj[key] : undefined;\n    },\n\n    set(key, value) {\n      if (!has$1(key)) {\n        ++map.size;\n        if (obj[key] === NULL) --map.empty;\n      }\n\n      obj[key] = value;\n      return this;\n    },\n\n    delete(key) {\n      if (has$1(key)) {\n        --map.size;\n        ++map.empty;\n        obj[key] = NULL;\n      }\n\n      return this;\n    },\n\n    clear() {\n      map.size = map.empty = 0;\n      map.object = obj = {};\n    },\n\n    test(_) {\n      if (arguments.length) {\n        test = _;\n        return map;\n      } else {\n        return test;\n      }\n    },\n\n    clean() {\n      const next = {};\n      let size = 0;\n\n      for (const key in obj) {\n        const value = obj[key];\n\n        if (value !== NULL && (!test || !test(value))) {\n          next[key] = value;\n          ++size;\n        }\n      }\n\n      map.size = size;\n      map.empty = 0;\n      map.object = obj = next;\n    }\n\n  };\n  if (input) Object.keys(input).forEach(key => {\n    map.set(key, input[key]);\n  });\n  return map;\n}\n\nfunction flush (range, value, threshold, left, right, center) {\n  if (!threshold && threshold !== 0) return center;\n  const t = +threshold;\n  let a = range[0],\n      b = peek(range),\n      l; // swap endpoints if range is reversed\n\n  if (b < a) {\n    l = a;\n    a = b;\n    b = l;\n  } // compare value to endpoints\n\n\n  l = Math.abs(value - a);\n  const r = Math.abs(b - value); // adjust if value is within threshold distance of endpoint\n\n  return l < r && l <= t ? left : r <= t ? right : center;\n}\n\nfunction inherits (child, parent, members) {\n  const proto = child.prototype = Object.create(parent.prototype);\n  Object.defineProperty(proto, 'constructor', {\n    value: child,\n    writable: true,\n    enumerable: true,\n    configurable: true\n  });\n  return extend(proto, members);\n}\n\n/**\n * Predicate that returns true if the value lies within the span\n * of the given range. The left and right flags control the use\n * of inclusive (true) or exclusive (false) comparisons.\n */\nfunction inrange (value, range, left, right) {\n  let r0 = range[0],\n      r1 = range[range.length - 1],\n      t;\n\n  if (r0 > r1) {\n    t = r0;\n    r0 = r1;\n    r1 = t;\n  }\n\n  left = left === undefined || left;\n  right = right === undefined || right;\n  return (left ? r0 <= value : r0 < value) && (right ? value <= r1 : value < r1);\n}\n\nfunction isBoolean (_) {\n  return typeof _ === 'boolean';\n}\n\nfunction isDate (_) {\n  return Object.prototype.toString.call(_) === '[object Date]';\n}\n\nfunction isIterable (_) {\n  return _ && isFunction(_[Symbol.iterator]);\n}\n\nfunction isNumber (_) {\n  return typeof _ === 'number';\n}\n\nfunction isRegExp (_) {\n  return Object.prototype.toString.call(_) === '[object RegExp]';\n}\n\nfunction isString (_) {\n  return typeof _ === 'string';\n}\n\nfunction key (fields, flat, opt) {\n  if (fields) {\n    fields = flat ? array(fields).map(f => f.replace(/\\\\(.)/g, '$1')) : array(fields);\n  }\n\n  const len = fields && fields.length,\n        gen = opt && opt.get || getter,\n        map = f => gen(flat ? [f] : splitAccessPath(f));\n\n  let fn;\n\n  if (!len) {\n    fn = function () {\n      return '';\n    };\n  } else if (len === 1) {\n    const get = map(fields[0]);\n\n    fn = function (_) {\n      return '' + get(_);\n    };\n  } else {\n    const get = fields.map(map);\n\n    fn = function (_) {\n      let s = '' + get[0](_),\n          i = 0;\n\n      while (++i < len) s += '|' + get[i](_);\n\n      return s;\n    };\n  }\n\n  return accessor(fn, fields, 'key');\n}\n\nfunction lerp (array, frac) {\n  const lo = array[0],\n        hi = peek(array),\n        f = +frac;\n  return !f ? lo : f === 1 ? hi : lo + f * (hi - lo);\n}\n\nconst DEFAULT_MAX_SIZE = 10000; // adapted from https://github.com/dominictarr/hashlru/ (MIT License)\n\nfunction lruCache (maxsize) {\n  maxsize = +maxsize || DEFAULT_MAX_SIZE;\n  let curr, prev, size;\n\n  const clear = () => {\n    curr = {};\n    prev = {};\n    size = 0;\n  };\n\n  const update = (key, value) => {\n    if (++size > maxsize) {\n      prev = curr;\n      curr = {};\n      size = 1;\n    }\n\n    return curr[key] = value;\n  };\n\n  clear();\n  return {\n    clear,\n    has: key => has(curr, key) || has(prev, key),\n    get: key => has(curr, key) ? curr[key] : has(prev, key) ? update(key, prev[key]) : undefined,\n    set: (key, value) => has(curr, key) ? curr[key] = value : update(key, value)\n  };\n}\n\nfunction merge (compare, array0, array1, output) {\n  const n0 = array0.length,\n        n1 = array1.length;\n  if (!n1) return array0;\n  if (!n0) return array1;\n  const merged = output || new array0.constructor(n0 + n1);\n  let i0 = 0,\n      i1 = 0,\n      i = 0;\n\n  for (; i0 < n0 && i1 < n1; ++i) {\n    merged[i] = compare(array0[i0], array1[i1]) > 0 ? array1[i1++] : array0[i0++];\n  }\n\n  for (; i0 < n0; ++i0, ++i) {\n    merged[i] = array0[i0];\n  }\n\n  for (; i1 < n1; ++i1, ++i) {\n    merged[i] = array1[i1];\n  }\n\n  return merged;\n}\n\nfunction repeat (str, reps) {\n  let s = '';\n\n  while (--reps >= 0) s += str;\n\n  return s;\n}\n\nfunction pad (str, length, padchar, align) {\n  const c = padchar || ' ',\n        s = str + '',\n        n = length - s.length;\n  return n <= 0 ? s : align === 'left' ? repeat(c, n) + s : align === 'center' ? repeat(c, ~~(n / 2)) + s + repeat(c, Math.ceil(n / 2)) : s + repeat(c, n);\n}\n\n/**\n * Return the numerical span of an array: the difference between\n * the last and first values.\n */\n\nfunction span (array) {\n  return array && peek(array) - array[0] || 0;\n}\n\nfunction $(x) {\n  return isArray(x) ? '[' + x.map($) + ']' : isObject(x) || isString(x) ? // Output valid JSON and JS source strings.\n  // See http://timelessrepo.com/json-isnt-a-javascript-subset\n  JSON.stringify(x).replace('\\u2028', '\\\\u2028').replace('\\u2029', '\\\\u2029') : x;\n}\n\nfunction toBoolean (_) {\n  return _ == null || _ === '' ? null : !_ || _ === 'false' || _ === '0' ? false : !!_;\n}\n\nconst defaultParser = _ => isNumber(_) ? _ : isDate(_) ? _ : Date.parse(_);\n\nfunction toDate (_, parser) {\n  parser = parser || defaultParser;\n  return _ == null || _ === '' ? null : parser(_);\n}\n\nfunction toString (_) {\n  return _ == null || _ === '' ? null : _ + '';\n}\n\nfunction toSet (_) {\n  const s = {},\n        n = _.length;\n\n  for (let i = 0; i < n; ++i) s[_[i]] = true;\n\n  return s;\n}\n\nfunction truncate (str, length, align, ellipsis) {\n  const e = ellipsis != null ? ellipsis : '\\u2026',\n        s = str + '',\n        n = s.length,\n        l = Math.max(0, length - e.length);\n  return n <= length ? s : align === 'left' ? e + s.slice(n - l) : align === 'center' ? s.slice(0, Math.ceil(l / 2)) + e + s.slice(n - ~~(l / 2)) : s.slice(0, l) + e;\n}\n\nfunction visitArray (array, filter, visitor) {\n  if (array) {\n    if (filter) {\n      const n = array.length;\n\n      for (let i = 0; i < n; ++i) {\n        const t = filter(array[i]);\n        if (t) visitor(t, i, array);\n      }\n    } else {\n      array.forEach(visitor);\n    }\n  }\n}\n\n\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,[encoded data, 33064 characters]\n//# sourceURL=webpack-internal:///./node_modules/vega-embed/node_modules/vega-util/build/vega-util.module.js\n");

/***/ }),

/***/ "./node_modules/vega-format/build/vega-format.module.js":
/*!**************************************************************!*\
  !*** ./node_modules/vega-format/build/vega-format.module.js ***!
  \**************************************************************/
/*! exports provided: defaultLocale, locale, numberFormatDefaultLocale, numberFormatLocale, resetDefaultLocale, resetNumberFormatDefaultLocale, resetTimeFormatDefaultLocale, timeFormatDefaultLocale, timeFormatLocale */
/***/ (function(module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"defaultLocale\", function() { return defaultLocale; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"locale\", function() { return locale; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"numberFormatDefaultLocale\", function() { return numberFormatDefaultLocale; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"numberFormatLocale\", function() { return numberFormatLocale; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"resetDefaultLocale\", function() { return resetDefaultLocale; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"resetNumberFormatDefaultLocale\", function() { return resetNumberFormatDefaultLocale; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"resetTimeFormatDefaultLocale\", function() { return resetTimeFormatDefaultLocale; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"timeFormatDefaultLocale\", function() { return timeFormatDefaultLocale; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"timeFormatLocale\", function() { return timeFormatLocale; });\n/* harmony import */ var d3_array__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! d3-array */ \"./node_modules/d3-array/src/index.js\");\n/* harmony import */ var d3_format__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! d3-format */ \"./node_modules/vega-format/node_modules/d3-format/src/index.js\");\n/* harmony import */ var vega_time__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! vega-time */ \"./node_modules/vega-time/build/vega-time.module.js\");\n/* harmony import */ var vega_util__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! vega-util */ \"./node_modules/vega-format/node_modules/vega-util/build/vega-util.module.js\");\n/* harmony import */ var d3_time_format__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! d3-time-format */ \"./node_modules/vega-format/node_modules/d3-time-format/src/index.js\");\n\n\n\n\n\n\nfunction memoize (method) {\n  const cache = {};\n  return spec => cache[spec] || (cache[spec] = method(spec));\n}\n\nfunction trimZeroes(numberFormat, decimalChar) {\n  return x => {\n    const str = numberFormat(x),\n          dec = str.indexOf(decimalChar);\n    if (dec < 0) return str;\n    let idx = rightmostDigit(str, dec);\n    const end = idx < str.length ? str.slice(idx) : '';\n\n    while (--idx > dec) if (str[idx] !== '0') {\n      ++idx;\n      break;\n    }\n\n    return str.slice(0, idx) + end;\n  };\n}\n\nfunction rightmostDigit(str, dec) {\n  let i = str.lastIndexOf('e'),\n      c;\n  if (i > 0) return i;\n\n  for (i = str.length; --i > dec;) {\n    c = str.charCodeAt(i);\n    if (c >= 48 && c <= 57) return i + 1; // is digit\n  }\n}\n\nfunction numberLocale(locale) {\n  const format = memoize(locale.format),\n        formatPrefix = locale.formatPrefix;\n  return {\n    format,\n    formatPrefix,\n\n    formatFloat(spec) {\n      const s = Object(d3_format__WEBPACK_IMPORTED_MODULE_1__[\"formatSpecifier\"])(spec || ',');\n\n      if (s.precision == null) {\n        s.precision = 12;\n\n        switch (s.type) {\n          case '%':\n            s.precision -= 2;\n            break;\n\n          case 'e':\n            s.precision -= 1;\n            break;\n        }\n\n        return trimZeroes(format(s), // number format\n        format('.1f')(1)[1] // decimal point character\n        );\n      } else {\n        return format(s);\n      }\n    },\n\n    formatSpan(start, stop, count, specifier) {\n      specifier = Object(d3_format__WEBPACK_IMPORTED_MODULE_1__[\"formatSpecifier\"])(specifier == null ? ',f' : specifier);\n      const step = Object(d3_array__WEBPACK_IMPORTED_MODULE_0__[\"tickStep\"])(start, stop, count),\n            value = Math.max(Math.abs(start), Math.abs(stop));\n      let precision;\n\n      if (specifier.precision == null) {\n        switch (specifier.type) {\n          case 's':\n            {\n              if (!isNaN(precision = Object(d3_format__WEBPACK_IMPORTED_MODULE_1__[\"precisionPrefix\"])(step, value))) {\n                specifier.precision = precision;\n              }\n\n              return formatPrefix(specifier, value);\n            }\n\n          case '':\n          case 'e':\n          case 'g':\n          case 'p':\n          case 'r':\n            {\n              if (!isNaN(precision = Object(d3_format__WEBPACK_IMPORTED_MODULE_1__[\"precisionRound\"])(step, value))) {\n                specifier.precision = precision - (specifier.type === 'e');\n              }\n\n              break;\n            }\n\n          case 'f':\n          case '%':\n            {\n              if (!isNaN(precision = Object(d3_format__WEBPACK_IMPORTED_MODULE_1__[\"precisionFixed\"])(step))) {\n                specifier.precision = precision - (specifier.type === '%') * 2;\n              }\n\n              break;\n            }\n        }\n      }\n\n      return format(specifier);\n    }\n\n  };\n}\n\nlet defaultNumberLocale;\nresetNumberFormatDefaultLocale();\nfunction resetNumberFormatDefaultLocale() {\n  return defaultNumberLocale = numberLocale({\n    format: d3_format__WEBPACK_IMPORTED_MODULE_1__[\"format\"],\n    formatPrefix: d3_format__WEBPACK_IMPORTED_MODULE_1__[\"formatPrefix\"]\n  });\n}\nfunction numberFormatLocale(definition) {\n  return numberLocale(Object(d3_format__WEBPACK_IMPORTED_MODULE_1__[\"formatLocale\"])(definition));\n}\nfunction numberFormatDefaultLocale(definition) {\n  return arguments.length ? defaultNumberLocale = numberFormatLocale(definition) : defaultNumberLocale;\n}\n\nfunction timeMultiFormat(format, interval, spec) {\n  spec = spec || {};\n\n  if (!Object(vega_util__WEBPACK_IMPORTED_MODULE_3__[\"isObject\"])(spec)) {\n    Object(vega_util__WEBPACK_IMPORTED_MODULE_3__[\"error\"])(\"Invalid time multi-format specifier: \".concat(spec));\n  }\n\n  const second = interval(vega_time__WEBPACK_IMPORTED_MODULE_2__[\"SECONDS\"]),\n        minute = interval(vega_time__WEBPACK_IMPORTED_MODULE_2__[\"MINUTES\"]),\n        hour = interval(vega_time__WEBPACK_IMPORTED_MODULE_2__[\"HOURS\"]),\n        day = interval(vega_time__WEBPACK_IMPORTED_MODULE_2__[\"DATE\"]),\n        week = interval(vega_time__WEBPACK_IMPORTED_MODULE_2__[\"WEEK\"]),\n        month = interval(vega_time__WEBPACK_IMPORTED_MODULE_2__[\"MONTH\"]),\n        quarter = interval(vega_time__WEBPACK_IMPORTED_MODULE_2__[\"QUARTER\"]),\n        year = interval(vega_time__WEBPACK_IMPORTED_MODULE_2__[\"YEAR\"]),\n        L = format(spec[vega_time__WEBPACK_IMPORTED_MODULE_2__[\"MILLISECONDS\"]] || '.%L'),\n        S = format(spec[vega_time__WEBPACK_IMPORTED_MODULE_2__[\"SECONDS\"]] || ':%S'),\n        M = format(spec[vega_time__WEBPACK_IMPORTED_MODULE_2__[\"MINUTES\"]] || '%I:%M'),\n        H = format(spec[vega_time__WEBPACK_IMPORTED_MODULE_2__[\"HOURS\"]] || '%I %p'),\n        d = format(spec[vega_time__WEBPACK_IMPORTED_MODULE_2__[\"DATE\"]] || spec[vega_time__WEBPACK_IMPORTED_MODULE_2__[\"DAY\"]] || '%a %d'),\n        w = format(spec[vega_time__WEBPACK_IMPORTED_MODULE_2__[\"WEEK\"]] || '%b %d'),\n        m = format(spec[vega_time__WEBPACK_IMPORTED_MODULE_2__[\"MONTH\"]] || '%B'),\n        q = format(spec[vega_time__WEBPACK_IMPORTED_MODULE_2__[\"QUARTER\"]] || '%B'),\n        y = format(spec[vega_time__WEBPACK_IMPORTED_MODULE_2__[\"YEAR\"]] || '%Y');\n  return date => (second(date) < date ? L : minute(date) < date ? S : hour(date) < date ? M : day(date) < date ? H : month(date) < date ? week(date) < date ? d : w : year(date) < date ? quarter(date) < date ? m : q : y)(date);\n}\n\nfunction timeLocale(locale) {\n  const timeFormat = memoize(locale.format),\n        utcFormat = memoize(locale.utcFormat);\n  return {\n    timeFormat: spec => Object(vega_util__WEBPACK_IMPORTED_MODULE_3__[\"isString\"])(spec) ? timeFormat(spec) : timeMultiFormat(timeFormat, vega_time__WEBPACK_IMPORTED_MODULE_2__[\"timeInterval\"], spec),\n    utcFormat: spec => Object(vega_util__WEBPACK_IMPORTED_MODULE_3__[\"isString\"])(spec) ? utcFormat(spec) : timeMultiFormat(utcFormat, vega_time__WEBPACK_IMPORTED_MODULE_2__[\"utcInterval\"], spec),\n    timeParse: memoize(locale.parse),\n    utcParse: memoize(locale.utcParse)\n  };\n}\n\nlet defaultTimeLocale;\nresetTimeFormatDefaultLocale();\nfunction resetTimeFormatDefaultLocale() {\n  return defaultTimeLocale = timeLocale({\n    format: d3_time_format__WEBPACK_IMPORTED_MODULE_4__[\"timeFormat\"],\n    parse: d3_time_format__WEBPACK_IMPORTED_MODULE_4__[\"timeParse\"],\n    utcFormat: d3_time_format__WEBPACK_IMPORTED_MODULE_4__[\"utcFormat\"],\n    utcParse: d3_time_format__WEBPACK_IMPORTED_MODULE_4__[\"utcParse\"]\n  });\n}\nfunction timeFormatLocale(definition) {\n  return timeLocale(Object(d3_time_format__WEBPACK_IMPORTED_MODULE_4__[\"timeFormatLocale\"])(definition));\n}\nfunction timeFormatDefaultLocale(definition) {\n  return arguments.length ? defaultTimeLocale = timeFormatLocale(definition) : defaultTimeLocale;\n}\n\nconst createLocale = (number, time) => Object(vega_util__WEBPACK_IMPORTED_MODULE_3__[\"extend\"])({}, number, time);\n\nfunction locale(numberSpec, timeSpec) {\n  const number = numberSpec ? numberFormatLocale(numberSpec) : numberFormatDefaultLocale();\n  const time = timeSpec ? timeFormatLocale(timeSpec) : timeFormatDefaultLocale();\n  return createLocale(number, time);\n}\nfunction defaultLocale(numberSpec, timeSpec) {\n  const args = arguments.length;\n\n  if (args && args !== 2) {\n    Object(vega_util__WEBPACK_IMPORTED_MODULE_3__[\"error\"])('defaultLocale expects either zero or two arguments.');\n  }\n\n  return args ? createLocale(numberFormatDefaultLocale(numberSpec), timeFormatDefaultLocale(timeSpec)) : createLocale(numberFormatDefaultLocale(), timeFormatDefaultLocale());\n}\nfunction resetDefaultLocale() {\n  resetNumberFormatDefaultLocale();\n  resetTimeFormatDefaultLocale();\n  return defaultLocale();\n}\n\n\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,[encoded data, 10752 characters]\n//# sourceURL=webpack-internal:///./node_modules/vega-format/build/vega-format.module.js\n");

/***/ }),

/***/ "./node_modules/vega-format/node_modules/d3-format/src/defaultLocale.js":
/*!******************************************************************************!*\
  !*** ./node_modules/vega-format/node_modules/d3-format/src/defaultLocale.js ***!
  \******************************************************************************/
/*! exports provided: format, formatPrefix, default */
/***/ (function(module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"format\", function() { return format; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"formatPrefix\", function() { return formatPrefix; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"default\", function() { return defaultLocale; });\n/* harmony import */ var _locale_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./locale.js */ \"./node_modules/vega-format/node_modules/d3-format/src/locale.js\");\n\n\nvar locale;\nvar format;\nvar formatPrefix;\n\ndefaultLocale({\n  thousands: \",\",\n  grouping: [3],\n  currency: [\"$\", \"\"]\n});\n\nfunction defaultLocale(definition) {\n  locale = Object(_locale_js__WEBPACK_IMPORTED_MODULE_0__[\"default\"])(definition);\n  format = locale.format;\n  formatPrefix = locale.formatPrefix;\n  return locale;\n}\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvdmVnYS1mb3JtYXQvbm9kZV9tb2R1bGVzL2QzLWZvcm1hdC9zcmMvZGVmYXVsdExvY2FsZS5qcy5qcyIsInNvdXJjZXMiOlsid2VicGFjazovLy8uL25vZGVfbW9kdWxlcy92ZWdhLWZvcm1hdC9ub2RlX21vZHVsZXMvZDMtZm9ybWF0L3NyYy9kZWZhdWx0TG9jYWxlLmpzP2E3OTAiXSwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IGZvcm1hdExvY2FsZSBmcm9tIFwiLi9sb2NhbGUuanNcIjtcblxudmFyIGxvY2FsZTtcbmV4cG9ydCB2YXIgZm9ybWF0O1xuZXhwb3J0IHZhciBmb3JtYXRQcmVmaXg7XG5cbmRlZmF1bHRMb2NhbGUoe1xuICB0aG91c2FuZHM6IFwiLFwiLFxuICBncm91cGluZzogWzNdLFxuICBjdXJyZW5jeTogW1wiJFwiLCBcIlwiXVxufSk7XG5cbmV4cG9ydCBkZWZhdWx0IGZ1bmN0aW9uIGRlZmF1bHRMb2NhbGUoZGVmaW5pdGlvbikge1xuICBsb2NhbGUgPSBmb3JtYXRMb2NhbGUoZGVmaW5pdGlvbik7XG4gIGZvcm1hdCA9IGxvY2FsZS5mb3JtYXQ7XG4gIGZvcm1hdFByZWZpeCA9IGxvY2FsZS5mb3JtYXRQcmVmaXg7XG4gIHJldHVybiBsb2NhbGU7XG59XG4iXSwibWFwcGluZ3MiOiJBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7Iiwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///./node_modules/vega-format/node_modules/d3-format/src/defaultLocale.js\n");

/***/ }),

/***/ "./node_modules/vega-format/node_modules/d3-format/src/exponent.js":
/*!*************************************************************************!*\
  !*** ./node_modules/vega-format/node_modules/d3-format/src/exponent.js ***!
  \*************************************************************************/
/*! exports provided: default */
/***/ (function(module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _formatDecimal_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./formatDecimal.js */ \"./node_modules/vega-format/node_modules/d3-format/src/formatDecimal.js\");\n\n\n/* harmony default export */ __webpack_exports__[\"default\"] = (function(x) {\n  return x = Object(_formatDecimal_js__WEBPACK_IMPORTED_MODULE_0__[\"formatDecimalParts\"])(Math.abs(x)), x ? x[1] : NaN;\n});\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvdmVnYS1mb3JtYXQvbm9kZV9tb2R1bGVzL2QzLWZvcm1hdC9zcmMvZXhwb25lbnQuanMuanMiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvdmVnYS1mb3JtYXQvbm9kZV9tb2R1bGVzL2QzLWZvcm1hdC9zcmMvZXhwb25lbnQuanM/MjAzNCJdLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge2Zvcm1hdERlY2ltYWxQYXJ0c30gZnJvbSBcIi4vZm9ybWF0RGVjaW1hbC5qc1wiO1xuXG5leHBvcnQgZGVmYXVsdCBmdW5jdGlvbih4KSB7XG4gIHJldHVybiB4ID0gZm9ybWF0RGVjaW1hbFBhcnRzKE1hdGguYWJzKHgpKSwgeCA/IHhbMV0gOiBOYU47XG59XG4iXSwibWFwcGluZ3MiOiJBQUFBO0FBQUE7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOyIsInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///./node_modules/vega-format/node_modules/d3-format/src/exponent.js\n");

/***/ }),

/***/ "./node_modules/vega-format/node_modules/d3-format/src/formatDecimal.js":
/*!******************************************************************************!*\
  !*** ./node_modules/vega-format/node_modules/d3-format/src/formatDecimal.js ***!
  \******************************************************************************/
/*! exports provided: default, formatDecimalParts */
/***/ (function(module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"formatDecimalParts\", function() { return formatDecimalParts; });\n/* harmony default export */ __webpack_exports__[\"default\"] = (function(x) {\n  return Math.abs(x = Math.round(x)) >= 1e21\n      ? x.toLocaleString(\"en\").replace(/,/g, \"\")\n      : x.toString(10);\n});\n\n// Computes the decimal coefficient and exponent of the specified number x with\n// significant digits p, where x is positive and p is in [1, 21] or undefined.\n// For example, formatDecimalParts(1.23) returns [\"123\", 0].\nfunction formatDecimalParts(x, p) {\n  if ((i = (x = p ? x.toExponential(p - 1) : x.toExponential()).indexOf(\"e\")) < 0) return null; // NaN, ±Infinity\n  var i, coefficient = x.slice(0, i);\n\n  // The string returned by toExponential either has the form \\d\\.\\d+e[-+]\\d+\n  // (e.g., 1.2e+3) or the form \\de[-+]\\d+ (e.g., 1e+3).\n  return [\n    coefficient.length > 1 ? coefficient[0] + coefficient.slice(2) : coefficient,\n    +x.slice(i + 1)\n  ];\n}\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvdmVnYS1mb3JtYXQvbm9kZV9tb2R1bGVzL2QzLWZvcm1hdC9zcmMvZm9ybWF0RGVjaW1hbC5qcy5qcyIsInNvdXJjZXMiOlsid2VicGFjazovLy8uL25vZGVfbW9kdWxlcy92ZWdhLWZvcm1hdC9ub2RlX21vZHVsZXMvZDMtZm9ybWF0L3NyYy9mb3JtYXREZWNpbWFsLmpzPzQ4NmIiXSwic291cmNlc0NvbnRlbnQiOlsiZXhwb3J0IGRlZmF1bHQgZnVuY3Rpb24oeCkge1xuICByZXR1cm4gTWF0aC5hYnMoeCA9IE1hdGgucm91bmQoeCkpID49IDFlMjFcbiAgICAgID8geC50b0xvY2FsZVN0cmluZyhcImVuXCIpLnJlcGxhY2UoLywvZywgXCJcIilcbiAgICAgIDogeC50b1N0cmluZygxMCk7XG59XG5cbi8vIENvbXB1dGVzIHRoZSBkZWNpbWFsIGNvZWZmaWNpZW50IGFuZCBleHBvbmVudCBvZiB0aGUgc3BlY2lmaWVkIG51bWJlciB4IHdpdGhcbi8vIHNpZ25pZmljYW50IGRpZ2l0cyBwLCB3aGVyZSB4IGlzIHBvc2l0aXZlIGFuZCBwIGlzIGluIFsxLCAyMV0gb3IgdW5kZWZpbmVkLlxuLy8gRm9yIGV4YW1wbGUsIGZvcm1hdERlY2ltYWxQYXJ0cygxLjIzKSByZXR1cm5zIFtcIjEyM1wiLCAwXS5cbmV4cG9ydCBmdW5jdGlvbiBmb3JtYXREZWNpbWFsUGFydHMoeCwgcCkge1xuICBpZiAoKGkgPSAoeCA9IHAgPyB4LnRvRXhwb25lbnRpYWwocCAtIDEpIDogeC50b0V4cG9uZW50aWFsKCkpLmluZGV4T2YoXCJlXCIpKSA8IDApIHJldHVybiBudWxsOyAvLyBOYU4sIMKxSW5maW5pdHlcbiAgdmFyIGksIGNvZWZmaWNpZW50ID0geC5zbGljZSgwLCBpKTtcblxuICAvLyBUaGUgc3RyaW5nIHJldHVybmVkIGJ5IHRvRXhwb25lbnRpYWwgZWl0aGVyIGhhcyB0aGUgZm9ybSBcXGRcXC5cXGQrZVstK11cXGQrXG4gIC8vIChlLmcuLCAxLjJlKzMpIG9yIHRoZSBmb3JtIFxcZGVbLStdXFxkKyAoZS5nLiwgMWUrMykuXG4gIHJldHVybiBbXG4gICAgY29lZmZpY2llbnQubGVuZ3RoID4gMSA/IGNvZWZmaWNpZW50WzBdICsgY29lZmZpY2llbnQuc2xpY2UoMikgOiBjb2VmZmljaWVudCxcbiAgICAreC5zbGljZShpICsgMSlcbiAgXTtcbn1cbiJdLCJtYXBwaW5ncyI6IkFBQUE7QUFBQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7Iiwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///./node_modules/vega-format/node_modules/d3-format/src/formatDecimal.js\n");

/***/ }),

/***/ "./node_modules/vega-format/node_modules/d3-format/src/formatGroup.js":
/*!****************************************************************************!*\
  !*** ./node_modules/vega-format/node_modules/d3-format/src/formatGroup.js ***!
  \****************************************************************************/
/*! exports provided: default */
/***/ (function(module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony default export */ __webpack_exports__[\"default\"] = (function(grouping, thousands) {\n  return function(value, width) {\n    var i = value.length,\n        t = [],\n        j = 0,\n        g = grouping[0],\n        length = 0;\n\n    while (i > 0 && g > 0) {\n      if (length + g + 1 > width) g = Math.max(1, width - length);\n      t.push(value.substring(i -= g, i + g));\n      if ((length += g + 1) > width) break;\n      g = grouping[j = (j + 1) % grouping.length];\n    }\n\n    return t.reverse().join(thousands);\n  };\n});\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvdmVnYS1mb3JtYXQvbm9kZV9tb2R1bGVzL2QzLWZvcm1hdC9zcmMvZm9ybWF0R3JvdXAuanMuanMiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvdmVnYS1mb3JtYXQvbm9kZV9tb2R1bGVzL2QzLWZvcm1hdC9zcmMvZm9ybWF0R3JvdXAuanM/MzFkNCJdLCJzb3VyY2VzQ29udGVudCI6WyJleHBvcnQgZGVmYXVsdCBmdW5jdGlvbihncm91cGluZywgdGhvdXNhbmRzKSB7XG4gIHJldHVybiBmdW5jdGlvbih2YWx1ZSwgd2lkdGgpIHtcbiAgICB2YXIgaSA9IHZhbHVlLmxlbmd0aCxcbiAgICAgICAgdCA9IFtdLFxuICAgICAgICBqID0gMCxcbiAgICAgICAgZyA9IGdyb3VwaW5nWzBdLFxuICAgICAgICBsZW5ndGggPSAwO1xuXG4gICAgd2hpbGUgKGkgPiAwICYmIGcgPiAwKSB7XG4gICAgICBpZiAobGVuZ3RoICsgZyArIDEgPiB3aWR0aCkgZyA9IE1hdGgubWF4KDEsIHdpZHRoIC0gbGVuZ3RoKTtcbiAgICAgIHQucHVzaCh2YWx1ZS5zdWJzdHJpbmcoaSAtPSBnLCBpICsgZykpO1xuICAgICAgaWYgKChsZW5ndGggKz0gZyArIDEpID4gd2lkdGgpIGJyZWFrO1xuICAgICAgZyA9IGdyb3VwaW5nW2ogPSAoaiArIDEpICUgZ3JvdXBpbmcubGVuZ3RoXTtcbiAgICB9XG5cbiAgICByZXR1cm4gdC5yZXZlcnNlKCkuam9pbih0aG91c2FuZHMpO1xuICB9O1xufVxuIl0sIm1hcHBpbmdzIjoiQUFBQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTsiLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///./node_modules/vega-format/node_modules/d3-format/src/formatGroup.js\n");

/***/ }),

/***/ "./node_modules/vega-format/node_modules/d3-format/src/formatNumerals.js":
/*!*******************************************************************************!*\
  !*** ./node_modules/vega-format/node_modules/d3-format/src/formatNumerals.js ***!
  \*******************************************************************************/
/*! exports provided: default */
/***/ (function(module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony default export */ __webpack_exports__[\"default\"] = (function(numerals) {\n  return function(value) {\n    return value.replace(/[0-9]/g, function(i) {\n      return numerals[+i];\n    });\n  };\n});\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvdmVnYS1mb3JtYXQvbm9kZV9tb2R1bGVzL2QzLWZvcm1hdC9zcmMvZm9ybWF0TnVtZXJhbHMuanMuanMiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvdmVnYS1mb3JtYXQvbm9kZV9tb2R1bGVzL2QzLWZvcm1hdC9zcmMvZm9ybWF0TnVtZXJhbHMuanM/ODkyYyJdLCJzb3VyY2VzQ29udGVudCI6WyJleHBvcnQgZGVmYXVsdCBmdW5jdGlvbihudW1lcmFscykge1xuICByZXR1cm4gZnVuY3Rpb24odmFsdWUpIHtcbiAgICByZXR1cm4gdmFsdWUucmVwbGFjZSgvWzAtOV0vZywgZnVuY3Rpb24oaSkge1xuICAgICAgcmV0dXJuIG51bWVyYWxzWytpXTtcbiAgICB9KTtcbiAgfTtcbn1cbiJdLCJtYXBwaW5ncyI6IkFBQUE7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTsiLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///./node_modules/vega-format/node_modules/d3-format/src/formatNumerals.js\n");

/***/ }),

/***/ "./node_modules/vega-format/node_modules/d3-format/src/formatPrefixAuto.js":
/*!*********************************************************************************!*\
  !*** ./node_modules/vega-format/node_modules/d3-format/src/formatPrefixAuto.js ***!
  \*********************************************************************************/
/*! exports provided: prefixExponent, default */
/***/ (function(module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"prefixExponent\", function() { return prefixExponent; });\n/* harmony import */ var _formatDecimal_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./formatDecimal.js */ \"./node_modules/vega-format/node_modules/d3-format/src/formatDecimal.js\");\n\n\nvar prefixExponent;\n\n/* harmony default export */ __webpack_exports__[\"default\"] = (function(x, p) {\n  var d = Object(_formatDecimal_js__WEBPACK_IMPORTED_MODULE_0__[\"formatDecimalParts\"])(x, p);\n  if (!d) return x + \"\";\n  var coefficient = d[0],\n      exponent = d[1],\n      i = exponent - (prefixExponent = Math.max(-8, Math.min(8, Math.floor(exponent / 3))) * 3) + 1,\n      n = coefficient.length;\n  return i === n ? coefficient\n      : i > n ? coefficient + new Array(i - n + 1).join(\"0\")\n      : i > 0 ? coefficient.slice(0, i) + \".\" + coefficient.slice(i)\n      : \"0.\" + new Array(1 - i).join(\"0\") + Object(_formatDecimal_js__WEBPACK_IMPORTED_MODULE_0__[\"formatDecimalParts\"])(x, Math.max(0, p + i - 1))[0]; // less than 1y!\n});\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvdmVnYS1mb3JtYXQvbm9kZV9tb2R1bGVzL2QzLWZvcm1hdC9zcmMvZm9ybWF0UHJlZml4QXV0by5qcy5qcyIsInNvdXJjZXMiOlsid2VicGFjazovLy8uL25vZGVfbW9kdWxlcy92ZWdhLWZvcm1hdC9ub2RlX21vZHVsZXMvZDMtZm9ybWF0L3NyYy9mb3JtYXRQcmVmaXhBdXRvLmpzPzJjZGMiXSwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtmb3JtYXREZWNpbWFsUGFydHN9IGZyb20gXCIuL2Zvcm1hdERlY2ltYWwuanNcIjtcblxuZXhwb3J0IHZhciBwcmVmaXhFeHBvbmVudDtcblxuZXhwb3J0IGRlZmF1bHQgZnVuY3Rpb24oeCwgcCkge1xuICB2YXIgZCA9IGZvcm1hdERlY2ltYWxQYXJ0cyh4LCBwKTtcbiAgaWYgKCFkKSByZXR1cm4geCArIFwiXCI7XG4gIHZhciBjb2VmZmljaWVudCA9IGRbMF0sXG4gICAgICBleHBvbmVudCA9IGRbMV0sXG4gICAgICBpID0gZXhwb25lbnQgLSAocHJlZml4RXhwb25lbnQgPSBNYXRoLm1heCgtOCwgTWF0aC5taW4oOCwgTWF0aC5mbG9vcihleHBvbmVudCAvIDMpKSkgKiAzKSArIDEsXG4gICAgICBuID0gY29lZmZpY2llbnQubGVuZ3RoO1xuICByZXR1cm4gaSA9PT0gbiA/IGNvZWZmaWNpZW50XG4gICAgICA6IGkgPiBuID8gY29lZmZpY2llbnQgKyBuZXcgQXJyYXkoaSAtIG4gKyAxKS5qb2luKFwiMFwiKVxuICAgICAgOiBpID4gMCA/IGNvZWZmaWNpZW50LnNsaWNlKDAsIGkpICsgXCIuXCIgKyBjb2VmZmljaWVudC5zbGljZShpKVxuICAgICAgOiBcIjAuXCIgKyBuZXcgQXJyYXkoMSAtIGkpLmpvaW4oXCIwXCIpICsgZm9ybWF0RGVjaW1hbFBhcnRzKHgsIE1hdGgubWF4KDAsIHAgKyBpIC0gMSkpWzBdOyAvLyBsZXNzIHRoYW4gMXkhXG59XG4iXSwibWFwcGluZ3MiOiJBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOyIsInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///./node_modules/vega-format/node_modules/d3-format/src/formatPrefixAuto.js\n");

/***/ }),

/***/ "./node_modules/vega-format/node_modules/d3-format/src/formatRounded.js":
/*!******************************************************************************!*\
  !*** ./node_modules/vega-format/node_modules/d3-format/src/formatRounded.js ***!
  \******************************************************************************/
/*! exports provided: default */
/***/ (function(module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _formatDecimal_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./formatDecimal.js */ \"./node_modules/vega-format/node_modules/d3-format/src/formatDecimal.js\");\n\n\n/* harmony default export */ __webpack_exports__[\"default\"] = (function(x, p) {\n  var d = Object(_formatDecimal_js__WEBPACK_IMPORTED_MODULE_0__[\"formatDecimalParts\"])(x, p);\n  if (!d) return x + \"\";\n  var coefficient = d[0],\n      exponent = d[1];\n  return exponent < 0 ? \"0.\" + new Array(-exponent).join(\"0\") + coefficient\n      : coefficient.length > exponent + 1 ? coefficient.slice(0, exponent + 1) + \".\" + coefficient.slice(exponent + 1)\n      : coefficient + new Array(exponent - coefficient.length + 2).join(\"0\");\n});\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvdmVnYS1mb3JtYXQvbm9kZV9tb2R1bGVzL2QzLWZvcm1hdC9zcmMvZm9ybWF0Um91bmRlZC5qcy5qcyIsInNvdXJjZXMiOlsid2VicGFjazovLy8uL25vZGVfbW9kdWxlcy92ZWdhLWZvcm1hdC9ub2RlX21vZHVsZXMvZDMtZm9ybWF0L3NyYy9mb3JtYXRSb3VuZGVkLmpzP2VmZWMiXSwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtmb3JtYXREZWNpbWFsUGFydHN9IGZyb20gXCIuL2Zvcm1hdERlY2ltYWwuanNcIjtcblxuZXhwb3J0IGRlZmF1bHQgZnVuY3Rpb24oeCwgcCkge1xuICB2YXIgZCA9IGZvcm1hdERlY2ltYWxQYXJ0cyh4LCBwKTtcbiAgaWYgKCFkKSByZXR1cm4geCArIFwiXCI7XG4gIHZhciBjb2VmZmljaWVudCA9IGRbMF0sXG4gICAgICBleHBvbmVudCA9IGRbMV07XG4gIHJldHVybiBleHBvbmVudCA8IDAgPyBcIjAuXCIgKyBuZXcgQXJyYXkoLWV4cG9uZW50KS5qb2luKFwiMFwiKSArIGNvZWZmaWNpZW50XG4gICAgICA6IGNvZWZmaWNpZW50Lmxlbmd0aCA+IGV4cG9uZW50ICsgMSA/IGNvZWZmaWNpZW50LnNsaWNlKDAsIGV4cG9uZW50ICsgMSkgKyBcIi5cIiArIGNvZWZmaWNpZW50LnNsaWNlKGV4cG9uZW50ICsgMSlcbiAgICAgIDogY29lZmZpY2llbnQgKyBuZXcgQXJyYXkoZXhwb25lbnQgLSBjb2VmZmljaWVudC5sZW5ndGggKyAyKS5qb2luKFwiMFwiKTtcbn1cbiJdLCJtYXBwaW5ncyI6IkFBQUE7QUFBQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7Iiwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///./node_modules/vega-format/node_modules/d3-format/src/formatRounded.js\n");

/***/ }),

/***/ "./node_modules/vega-format/node_modules/d3-format/src/formatSpecifier.js":
/*!********************************************************************************!*\
  !*** ./node_modules/vega-format/node_modules/d3-format/src/formatSpecifier.js ***!
  \********************************************************************************/
/*! exports provided: default, FormatSpecifier */
/***/ (function(module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"default\", function() { return formatSpecifier; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"FormatSpecifier\", function() { return FormatSpecifier; });\n// [[fill]align][sign][symbol][0][width][,][.precision][~][type]\nvar re = /^(?:(.)?([<>=^]))?([+\\-( ])?([$#])?(0)?(\\d+)?(,)?(\\.\\d+)?(~)?([a-z%])?$/i;\n\nfunction formatSpecifier(specifier) {\n  if (!(match = re.exec(specifier))) throw new Error(\"invalid format: \" + specifier);\n  var match;\n  return new FormatSpecifier({\n    fill: match[1],\n    align: match[2],\n    sign: match[3],\n    symbol: match[4],\n    zero: match[5],\n    width: match[6],\n    comma: match[7],\n    precision: match[8] && match[8].slice(1),\n    trim: match[9],\n    type: match[10]\n  });\n}\n\nformatSpecifier.prototype = FormatSpecifier.prototype; // instanceof\n\nfunction FormatSpecifier(specifier) {\n  this.fill = specifier.fill === undefined ? \" \" : specifier.fill + \"\";\n  this.align = specifier.align === undefined ? \">\" : specifier.align + \"\";\n  this.sign = specifier.sign === undefined ? \"-\" : specifier.sign + \"\";\n  this.symbol = specifier.symbol === undefined ? \"\" : specifier.symbol + \"\";\n  this.zero = !!specifier.zero;\n  this.width = specifier.width === undefined ? undefined : +specifier.width;\n  this.comma = !!specifier.comma;\n  this.precision = specifier.precision === undefined ? undefined : +specifier.precision;\n  this.trim = !!specifier.trim;\n  this.type = specifier.type === undefined ? \"\" : specifier.type + \"\";\n}\n\nFormatSpecifier.prototype.toString = function() {\n  return this.fill\n      + this.align\n      + this.sign\n      + this.symbol\n      + (this.zero ? \"0\" : \"\")\n      + (this.width === undefined ? \"\" : Math.max(1, this.width | 0))\n      + (this.comma ? \",\" : \"\")\n      + (this.precision === undefined ? \"\" : \".\" + Math.max(0, this.precision | 0))\n      + (this.trim ? \"~\" : \"\")\n      + this.type;\n};\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvdmVnYS1mb3JtYXQvbm9kZV9tb2R1bGVzL2QzLWZvcm1hdC9zcmMvZm9ybWF0U3BlY2lmaWVyLmpzLmpzIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL3ZlZ2EtZm9ybWF0L25vZGVfbW9kdWxlcy9kMy1mb3JtYXQvc3JjL2Zvcm1hdFNwZWNpZmllci5qcz9iNzAyIl0sInNvdXJjZXNDb250ZW50IjpbIi8vIFtbZmlsbF1hbGlnbl1bc2lnbl1bc3ltYm9sXVswXVt3aWR0aF1bLF1bLnByZWNpc2lvbl1bfl1bdHlwZV1cbnZhciByZSA9IC9eKD86KC4pPyhbPD49Xl0pKT8oWytcXC0oIF0pPyhbJCNdKT8oMCk/KFxcZCspPygsKT8oXFwuXFxkKyk/KH4pPyhbYS16JV0pPyQvaTtcblxuZXhwb3J0IGRlZmF1bHQgZnVuY3Rpb24gZm9ybWF0U3BlY2lmaWVyKHNwZWNpZmllcikge1xuICBpZiAoIShtYXRjaCA9IHJlLmV4ZWMoc3BlY2lmaWVyKSkpIHRocm93IG5ldyBFcnJvcihcImludmFsaWQgZm9ybWF0OiBcIiArIHNwZWNpZmllcik7XG4gIHZhciBtYXRjaDtcbiAgcmV0dXJuIG5ldyBGb3JtYXRTcGVjaWZpZXIoe1xuICAgIGZpbGw6IG1hdGNoWzFdLFxuICAgIGFsaWduOiBtYXRjaFsyXSxcbiAgICBzaWduOiBtYXRjaFszXSxcbiAgICBzeW1ib2w6IG1hdGNoWzRdLFxuICAgIHplcm86IG1hdGNoWzVdLFxuICAgIHdpZHRoOiBtYXRjaFs2XSxcbiAgICBjb21tYTogbWF0Y2hbN10sXG4gICAgcHJlY2lzaW9uOiBtYXRjaFs4XSAmJiBtYXRjaFs4XS5zbGljZSgxKSxcbiAgICB0cmltOiBtYXRjaFs5XSxcbiAgICB0eXBlOiBtYXRjaFsxMF1cbiAgfSk7XG59XG5cbmZvcm1hdFNwZWNpZmllci5wcm90b3R5cGUgPSBGb3JtYXRTcGVjaWZpZXIucHJvdG90eXBlOyAvLyBpbnN0YW5jZW9mXG5cbmV4cG9ydCBmdW5jdGlvbiBGb3JtYXRTcGVjaWZpZXIoc3BlY2lmaWVyKSB7XG4gIHRoaXMuZmlsbCA9IHNwZWNpZmllci5maWxsID09PSB1bmRlZmluZWQgPyBcIiBcIiA6IHNwZWNpZmllci5maWxsICsgXCJcIjtcbiAgdGhpcy5hbGlnbiA9IHNwZWNpZmllci5hbGlnbiA9PT0gdW5kZWZpbmVkID8gXCI+XCIgOiBzcGVjaWZpZXIuYWxpZ24gKyBcIlwiO1xuICB0aGlzLnNpZ24gPSBzcGVjaWZpZXIuc2lnbiA9PT0gdW5kZWZpbmVkID8gXCItXCIgOiBzcGVjaWZpZXIuc2lnbiArIFwiXCI7XG4gIHRoaXMuc3ltYm9sID0gc3BlY2lmaWVyLnN5bWJvbCA9PT0gdW5kZWZpbmVkID8gXCJcIiA6IHNwZWNpZmllci5zeW1ib2wgKyBcIlwiO1xuICB0aGlzLnplcm8gPSAhIXNwZWNpZmllci56ZXJvO1xuICB0aGlzLndpZHRoID0gc3BlY2lmaWVyLndpZHRoID09PSB1bmRlZmluZWQgPyB1bmRlZmluZWQgOiArc3BlY2lmaWVyLndpZHRoO1xuICB0aGlzLmNvbW1hID0gISFzcGVjaWZpZXIuY29tbWE7XG4gIHRoaXMucHJlY2lzaW9uID0gc3BlY2lmaWVyLnByZWNpc2lvbiA9PT0gdW5kZWZpbmVkID8gdW5kZWZpbmVkIDogK3NwZWNpZmllci5wcmVjaXNpb247XG4gIHRoaXMudHJpbSA9ICEhc3BlY2lmaWVyLnRyaW07XG4gIHRoaXMudHlwZSA9IHNwZWNpZmllci50eXBlID09PSB1bmRlZmluZWQgPyBcIlwiIDogc3BlY2lmaWVyLnR5cGUgKyBcIlwiO1xufVxuXG5Gb3JtYXRTcGVjaWZpZXIucHJvdG90eXBlLnRvU3RyaW5nID0gZnVuY3Rpb24oKSB7XG4gIHJldHVybiB0aGlzLmZpbGxcbiAgICAgICsgdGhpcy5hbGlnblxuICAgICAgKyB0aGlzLnNpZ25cbiAgICAgICsgdGhpcy5zeW1ib2xcbiAgICAgICsgKHRoaXMuemVybyA/IFwiMFwiIDogXCJcIilcbiAgICAgICsgKHRoaXMud2lkdGggPT09IHVuZGVmaW5lZCA/IFwiXCIgOiBNYXRoLm1heCgxLCB0aGlzLndpZHRoIHwgMCkpXG4gICAgICArICh0aGlzLmNvbW1hID8gXCIsXCIgOiBcIlwiKVxuICAgICAgKyAodGhpcy5wcmVjaXNpb24gPT09IHVuZGVmaW5lZCA/IFwiXCIgOiBcIi5cIiArIE1hdGgubWF4KDAsIHRoaXMucHJlY2lzaW9uIHwgMCkpXG4gICAgICArICh0aGlzLnRyaW0gPyBcIn5cIiA6IFwiXCIpXG4gICAgICArIHRoaXMudHlwZTtcbn07XG4iXSwibWFwcGluZ3MiOiJBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7Iiwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///./node_modules/vega-format/node_modules/d3-format/src/formatSpecifier.js\n");

/***/ }),

/***/ "./node_modules/vega-format/node_modules/d3-format/src/formatTrim.js":
/*!***************************************************************************!*\
  !*** ./node_modules/vega-format/node_modules/d3-format/src/formatTrim.js ***!
  \***************************************************************************/
/*! exports provided: default */
/***/ (function(module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n// Trims insignificant zeros, e.g., replaces 1.2000k with 1.2k.\n/* harmony default export */ __webpack_exports__[\"default\"] = (function(s) {\n  out: for (var n = s.length, i = 1, i0 = -1, i1; i < n; ++i) {\n    switch (s[i]) {\n      case \".\": i0 = i1 = i; break;\n      case \"0\": if (i0 === 0) i0 = i; i1 = i; break;\n      default: if (!+s[i]) break out; if (i0 > 0) i0 = 0; break;\n    }\n  }\n  return i0 > 0 ? s.slice(0, i0) + s.slice(i1 + 1) : s;\n});\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvdmVnYS1mb3JtYXQvbm9kZV9tb2R1bGVzL2QzLWZvcm1hdC9zcmMvZm9ybWF0VHJpbS5qcy5qcyIsInNvdXJjZXMiOlsid2VicGFjazovLy8uL25vZGVfbW9kdWxlcy92ZWdhLWZvcm1hdC9ub2RlX21vZHVsZXMvZDMtZm9ybWF0L3NyYy9mb3JtYXRUcmltLmpzP2UzMGMiXSwic291cmNlc0NvbnRlbnQiOlsiLy8gVHJpbXMgaW5zaWduaWZpY2FudCB6ZXJvcywgZS5nLiwgcmVwbGFjZXMgMS4yMDAwayB3aXRoIDEuMmsuXG5leHBvcnQgZGVmYXVsdCBmdW5jdGlvbihzKSB7XG4gIG91dDogZm9yICh2YXIgbiA9IHMubGVuZ3RoLCBpID0gMSwgaTAgPSAtMSwgaTE7IGkgPCBuOyArK2kpIHtcbiAgICBzd2l0Y2ggKHNbaV0pIHtcbiAgICAgIGNhc2UgXCIuXCI6IGkwID0gaTEgPSBpOyBicmVhaztcbiAgICAgIGNhc2UgXCIwXCI6IGlmIChpMCA9PT0gMCkgaTAgPSBpOyBpMSA9IGk7IGJyZWFrO1xuICAgICAgZGVmYXVsdDogaWYgKCErc1tpXSkgYnJlYWsgb3V0OyBpZiAoaTAgPiAwKSBpMCA9IDA7IGJyZWFrO1xuICAgIH1cbiAgfVxuICByZXR1cm4gaTAgPiAwID8gcy5zbGljZSgwLCBpMCkgKyBzLnNsaWNlKGkxICsgMSkgOiBzO1xufVxuIl0sIm1hcHBpbmdzIjoiQUFBQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7Iiwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///./node_modules/vega-format/node_modules/d3-format/src/formatTrim.js\n");

/***/ }),

/***/ "./node_modules/vega-format/node_modules/d3-format/src/formatTypes.js":
/*!****************************************************************************!*\
  !*** ./node_modules/vega-format/node_modules/d3-format/src/formatTypes.js ***!
  \****************************************************************************/
/*! exports provided: default */
/***/ (function(module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _formatDecimal_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./formatDecimal.js */ \"./node_modules/vega-format/node_modules/d3-format/src/formatDecimal.js\");\n/* harmony import */ var _formatPrefixAuto_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./formatPrefixAuto.js */ \"./node_modules/vega-format/node_modules/d3-format/src/formatPrefixAuto.js\");\n/* harmony import */ var _formatRounded_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./formatRounded.js */ \"./node_modules/vega-format/node_modules/d3-format/src/formatRounded.js\");\n\n\n\n\n/* harmony default export */ __webpack_exports__[\"default\"] = ({\n  \"%\": (x, p) => (x * 100).toFixed(p),\n  \"b\": (x) => Math.round(x).toString(2),\n  \"c\": (x) => x + \"\",\n  \"d\": _formatDecimal_js__WEBPACK_IMPORTED_MODULE_0__[\"default\"],\n  \"e\": (x, p) => x.toExponential(p),\n  \"f\": (x, p) => x.toFixed(p),\n  \"g\": (x, p) => x.toPrecision(p),\n  \"o\": (x) => Math.round(x).toString(8),\n  \"p\": (x, p) => Object(_formatRounded_js__WEBPACK_IMPORTED_MODULE_2__[\"default\"])(x * 100, p),\n  \"r\": _formatRounded_js__WEBPACK_IMPORTED_MODULE_2__[\"default\"],\n  \"s\": _formatPrefixAuto_js__WEBPACK_IMPORTED_MODULE_1__[\"default\"],\n  \"X\": (x) => Math.round(x).toString(16).toUpperCase(),\n  \"x\": (x) => Math.round(x).toString(16)\n});\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvdmVnYS1mb3JtYXQvbm9kZV9tb2R1bGVzL2QzLWZvcm1hdC9zcmMvZm9ybWF0VHlwZXMuanMuanMiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvdmVnYS1mb3JtYXQvbm9kZV9tb2R1bGVzL2QzLWZvcm1hdC9zcmMvZm9ybWF0VHlwZXMuanM/YjkxYyJdLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgZm9ybWF0RGVjaW1hbCBmcm9tIFwiLi9mb3JtYXREZWNpbWFsLmpzXCI7XG5pbXBvcnQgZm9ybWF0UHJlZml4QXV0byBmcm9tIFwiLi9mb3JtYXRQcmVmaXhBdXRvLmpzXCI7XG5pbXBvcnQgZm9ybWF0Um91bmRlZCBmcm9tIFwiLi9mb3JtYXRSb3VuZGVkLmpzXCI7XG5cbmV4cG9ydCBkZWZhdWx0IHtcbiAgXCIlXCI6ICh4LCBwKSA9PiAoeCAqIDEwMCkudG9GaXhlZChwKSxcbiAgXCJiXCI6ICh4KSA9PiBNYXRoLnJvdW5kKHgpLnRvU3RyaW5nKDIpLFxuICBcImNcIjogKHgpID0+IHggKyBcIlwiLFxuICBcImRcIjogZm9ybWF0RGVjaW1hbCxcbiAgXCJlXCI6ICh4LCBwKSA9PiB4LnRvRXhwb25lbnRpYWwocCksXG4gIFwiZlwiOiAoeCwgcCkgPT4geC50b0ZpeGVkKHApLFxuICBcImdcIjogKHgsIHApID0+IHgudG9QcmVjaXNpb24ocCksXG4gIFwib1wiOiAoeCkgPT4gTWF0aC5yb3VuZCh4KS50b1N0cmluZyg4KSxcbiAgXCJwXCI6ICh4LCBwKSA9PiBmb3JtYXRSb3VuZGVkKHggKiAxMDAsIHApLFxuICBcInJcIjogZm9ybWF0Um91bmRlZCxcbiAgXCJzXCI6IGZvcm1hdFByZWZpeEF1dG8sXG4gIFwiWFwiOiAoeCkgPT4gTWF0aC5yb3VuZCh4KS50b1N0cmluZygxNikudG9VcHBlckNhc2UoKSxcbiAgXCJ4XCI6ICh4KSA9PiBNYXRoLnJvdW5kKHgpLnRvU3RyaW5nKDE2KVxufTtcbiJdLCJtYXBwaW5ncyI6IkFBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTsiLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///./node_modules/vega-format/node_modules/d3-format/src/formatTypes.js\n");

/***/ }),

/***/ "./node_modules/vega-format/node_modules/d3-format/src/identity.js":
/*!*************************************************************************!*\
  !*** ./node_modules/vega-format/node_modules/d3-format/src/identity.js ***!
  \*************************************************************************/
/*! exports provided: default */
/***/ (function(module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony default export */ __webpack_exports__[\"default\"] = (function(x) {\n  return x;\n});\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvdmVnYS1mb3JtYXQvbm9kZV9tb2R1bGVzL2QzLWZvcm1hdC9zcmMvaWRlbnRpdHkuanMuanMiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvdmVnYS1mb3JtYXQvbm9kZV9tb2R1bGVzL2QzLWZvcm1hdC9zcmMvaWRlbnRpdHkuanM/ZmFlZiJdLCJzb3VyY2VzQ29udGVudCI6WyJleHBvcnQgZGVmYXVsdCBmdW5jdGlvbih4KSB7XG4gIHJldHVybiB4O1xufVxuIl0sIm1hcHBpbmdzIjoiQUFBQTtBQUFBO0FBQ0E7QUFDQTsiLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///./node_modules/vega-format/node_modules/d3-format/src/identity.js\n");

/***/ }),

/***/ "./node_modules/vega-format/node_modules/d3-format/src/index.js":
/*!**********************************************************************!*\
  !*** ./node_modules/vega-format/node_modules/d3-format/src/index.js ***!
  \**********************************************************************/
/*! exports provided: formatDefaultLocale, format, formatPrefix, formatLocale, formatSpecifier, FormatSpecifier, precisionFixed, precisionPrefix, precisionRound */
/***/ (function(module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _defaultLocale_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./defaultLocale.js */ \"./node_modules/vega-format/node_modules/d3-format/src/defaultLocale.js\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"formatDefaultLocale\", function() { return _defaultLocale_js__WEBPACK_IMPORTED_MODULE_0__[\"default\"]; });\n\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"format\", function() { return _defaultLocale_js__WEBPACK_IMPORTED_MODULE_0__[\"format\"]; });\n\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"formatPrefix\", function() { return _defaultLocale_js__WEBPACK_IMPORTED_MODULE_0__[\"formatPrefix\"]; });\n\n/* harmony import */ var _locale_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./locale.js */ \"./node_modules/vega-format/node_modules/d3-format/src/locale.js\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"formatLocale\", function() { return _locale_js__WEBPACK_IMPORTED_MODULE_1__[\"default\"]; });\n\n/* harmony import */ var _formatSpecifier_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./formatSpecifier.js */ \"./node_modules/vega-format/node_modules/d3-format/src/formatSpecifier.js\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"formatSpecifier\", function() { return _formatSpecifier_js__WEBPACK_IMPORTED_MODULE_2__[\"default\"]; });\n\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"FormatSpecifier\", function() { return _formatSpecifier_js__WEBPACK_IMPORTED_MODULE_2__[\"FormatSpecifier\"]; });\n\n/* harmony import */ var _precisionFixed_js__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ./precisionFixed.js */ \"./node_modules/vega-format/node_modules/d3-format/src/precisionFixed.js\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"precisionFixed\", function() { return _precisionFixed_js__WEBPACK_IMPORTED_MODULE_3__[\"default\"]; });\n\n/* harmony import */ var _precisionPrefix_js__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ./precisionPrefix.js */ \"./node_modules/vega-format/node_modules/d3-format/src/precisionPrefix.js\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"precisionPrefix\", function() { return _precisionPrefix_js__WEBPACK_IMPORTED_MODULE_4__[\"default\"]; });\n\n/* harmony import */ var _precisionRound_js__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! ./precisionRound.js */ \"./node_modules/vega-format/node_modules/d3-format/src/precisionRound.js\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"precisionRound\", function() { return _precisionRound_js__WEBPACK_IMPORTED_MODULE_5__[\"default\"]; });\n\n\n\n\n\n\n\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvdmVnYS1mb3JtYXQvbm9kZV9tb2R1bGVzL2QzLWZvcm1hdC9zcmMvaW5kZXguanMuanMiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvdmVnYS1mb3JtYXQvbm9kZV9tb2R1bGVzL2QzLWZvcm1hdC9zcmMvaW5kZXguanM/NzViNiJdLCJzb3VyY2VzQ29udGVudCI6WyJleHBvcnQge2RlZmF1bHQgYXMgZm9ybWF0RGVmYXVsdExvY2FsZSwgZm9ybWF0LCBmb3JtYXRQcmVmaXh9IGZyb20gXCIuL2RlZmF1bHRMb2NhbGUuanNcIjtcbmV4cG9ydCB7ZGVmYXVsdCBhcyBmb3JtYXRMb2NhbGV9IGZyb20gXCIuL2xvY2FsZS5qc1wiO1xuZXhwb3J0IHtkZWZhdWx0IGFzIGZvcm1hdFNwZWNpZmllciwgRm9ybWF0U3BlY2lmaWVyfSBmcm9tIFwiLi9mb3JtYXRTcGVjaWZpZXIuanNcIjtcbmV4cG9ydCB7ZGVmYXVsdCBhcyBwcmVjaXNpb25GaXhlZH0gZnJvbSBcIi4vcHJlY2lzaW9uRml4ZWQuanNcIjtcbmV4cG9ydCB7ZGVmYXVsdCBhcyBwcmVjaXNpb25QcmVmaXh9IGZyb20gXCIuL3ByZWNpc2lvblByZWZpeC5qc1wiO1xuZXhwb3J0IHtkZWZhdWx0IGFzIHByZWNpc2lvblJvdW5kfSBmcm9tIFwiLi9wcmVjaXNpb25Sb3VuZC5qc1wiO1xuIl0sIm1hcHBpbmdzIjoiQUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTsiLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///./node_modules/vega-format/node_modules/d3-format/src/index.js\n");

/***/ }),

/***/ "./node_modules/vega-format/node_modules/d3-format/src/locale.js":
/*!***********************************************************************!*\
  !*** ./node_modules/vega-format/node_modules/d3-format/src/locale.js ***!
  \***********************************************************************/
/*! exports provided: default */
/***/ (function(module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _exponent_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./exponent.js */ \"./node_modules/vega-format/node_modules/d3-format/src/exponent.js\");\n/* harmony import */ var _formatGroup_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./formatGroup.js */ \"./node_modules/vega-format/node_modules/d3-format/src/formatGroup.js\");\n/* harmony import */ var _formatNumerals_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./formatNumerals.js */ \"./node_modules/vega-format/node_modules/d3-format/src/formatNumerals.js\");\n/* harmony import */ var _formatSpecifier_js__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ./formatSpecifier.js */ \"./node_modules/vega-format/node_modules/d3-format/src/formatSpecifier.js\");\n/* harmony import */ var _formatTrim_js__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ./formatTrim.js */ \"./node_modules/vega-format/node_modules/d3-format/src/formatTrim.js\");\n/* harmony import */ var _formatTypes_js__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! ./formatTypes.js */ \"./node_modules/vega-format/node_modules/d3-format/src/formatTypes.js\");\n/* harmony import */ var _formatPrefixAuto_js__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! ./formatPrefixAuto.js */ \"./node_modules/vega-format/node_modules/d3-format/src/formatPrefixAuto.js\");\n/* harmony import */ var _identity_js__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! ./identity.js */ \"./node_modules/vega-format/node_modules/d3-format/src/identity.js\");\n\n\n\n\n\n\n\n\n\nvar map = Array.prototype.map,\n    prefixes = [\"y\",\"z\",\"a\",\"f\",\"p\",\"n\",\"µ\",\"m\",\"\",\"k\",\"M\",\"G\",\"T\",\"P\",\"E\",\"Z\",\"Y\"];\n\n/* harmony default export */ __webpack_exports__[\"default\"] = (function(locale) {\n  var group = locale.grouping === undefined || locale.thousands === undefined ? _identity_js__WEBPACK_IMPORTED_MODULE_7__[\"default\"] : Object(_formatGroup_js__WEBPACK_IMPORTED_MODULE_1__[\"default\"])(map.call(locale.grouping, Number), locale.thousands + \"\"),\n      currencyPrefix = locale.currency === undefined ? \"\" : locale.currency[0] + \"\",\n      currencySuffix = locale.currency === undefined ? \"\" : locale.currency[1] + \"\",\n      decimal = locale.decimal === undefined ? \".\" : locale.decimal + \"\",\n      numerals = locale.numerals === undefined ? _identity_js__WEBPACK_IMPORTED_MODULE_7__[\"default\"] : Object(_formatNumerals_js__WEBPACK_IMPORTED_MODULE_2__[\"default\"])(map.call(locale.numerals, String)),\n      percent = locale.percent === undefined ? \"%\" : locale.percent + \"\",\n      minus = locale.minus === undefined ? \"−\" : locale.minus + \"\",\n      nan = locale.nan === undefined ? \"NaN\" : locale.nan + \"\";\n\n  function newFormat(specifier) {\n    specifier = Object(_formatSpecifier_js__WEBPACK_IMPORTED_MODULE_3__[\"default\"])(specifier);\n\n    var fill = specifier.fill,\n        align = specifier.align,\n        sign = specifier.sign,\n        symbol = specifier.symbol,\n        zero = specifier.zero,\n        width = specifier.width,\n        comma = specifier.comma,\n        precision = specifier.precision,\n        trim = specifier.trim,\n        type = specifier.type;\n\n    // The \"n\" type is an alias for \",g\".\n    if (type === \"n\") comma = true, type = \"g\";\n\n    // The \"\" type, and any invalid type, is an alias for \".12~g\".\n    else if (!_formatTypes_js__WEBPACK_IMPORTED_MODULE_5__[\"default\"][type]) precision === undefined && (precision = 12), trim = true, type = \"g\";\n\n    // If zero fill is specified, padding goes after sign and before digits.\n    if (zero || (fill === \"0\" && align === \"=\")) zero = true, fill = \"0\", align = \"=\";\n\n    // Compute the prefix and suffix.\n    // For SI-prefix, the suffix is lazily computed.\n    var prefix = symbol === \"$\" ? currencyPrefix : symbol === \"#\" && /[boxX]/.test(type) ? \"0\" + type.toLowerCase() : \"\",\n        suffix = symbol === \"$\" ? currencySuffix : /[%p]/.test(type) ? percent : \"\";\n\n    // What format function should we use?\n    // Is this an integer type?\n    // Can this type generate exponential notation?\n    var formatType = _formatTypes_js__WEBPACK_IMPORTED_MODULE_5__[\"default\"][type],\n        maybeSuffix = /[defgprs%]/.test(type);\n\n    // Set the default precision if not specified,\n    // or clamp the specified precision to the supported range.\n    // For significant precision, it must be in [1, 21].\n    // For fixed precision, it must be in [0, 20].\n    precision = precision === undefined ? 6\n        : /[gprs]/.test(type) ? Math.max(1, Math.min(21, precision))\n        : Math.max(0, Math.min(20, precision));\n\n    function format(value) {\n      var valuePrefix = prefix,\n          valueSuffix = suffix,\n          i, n, c;\n\n      if (type === \"c\") {\n        valueSuffix = formatType(value) + valueSuffix;\n        value = \"\";\n      } else {\n        value = +value;\n\n        // Determine the sign. -0 is not less than 0, but 1 / -0 is!\n        var valueNegative = value < 0 || 1 / value < 0;\n\n        // Perform the initial formatting.\n        value = isNaN(value) ? nan : formatType(Math.abs(value), precision);\n\n        // Trim insignificant zeros.\n        if (trim) value = Object(_formatTrim_js__WEBPACK_IMPORTED_MODULE_4__[\"default\"])(value);\n\n        // If a negative value rounds to zero after formatting, and no explicit positive sign is requested, hide the sign.\n        if (valueNegative && +value === 0 && sign !== \"+\") valueNegative = false;\n\n        // Compute the prefix and suffix.\n        valuePrefix = (valueNegative ? (sign === \"(\" ? sign : minus) : sign === \"-\" || sign === \"(\" ? \"\" : sign) + valuePrefix;\n        valueSuffix = (type === \"s\" ? prefixes[8 + _formatPrefixAuto_js__WEBPACK_IMPORTED_MODULE_6__[\"prefixExponent\"] / 3] : \"\") + valueSuffix + (valueNegative && sign === \"(\" ? \")\" : \"\");\n\n        // Break the formatted value into the integer “value” part that can be\n        // grouped, and fractional or exponential “suffix” part that is not.\n        if (maybeSuffix) {\n          i = -1, n = value.length;\n          while (++i < n) {\n            if (c = value.charCodeAt(i), 48 > c || c > 57) {\n              valueSuffix = (c === 46 ? decimal + value.slice(i + 1) : value.slice(i)) + valueSuffix;\n              value = value.slice(0, i);\n              break;\n            }\n          }\n        }\n      }\n\n      // If the fill character is not \"0\", grouping is applied before padding.\n      if (comma && !zero) value = group(value, Infinity);\n\n      // Compute the padding.\n      var length = valuePrefix.length + value.length + valueSuffix.length,\n          padding = length < width ? new Array(width - length + 1).join(fill) : \"\";\n\n      // If the fill character is \"0\", grouping is applied after padding.\n      if (comma && zero) value = group(padding + value, padding.length ? width - valueSuffix.length : Infinity), padding = \"\";\n\n      // Reconstruct the final output based on the desired alignment.\n      switch (align) {\n        case \"<\": value = valuePrefix + value + valueSuffix + padding; break;\n        case \"=\": value = valuePrefix + padding + value + valueSuffix; break;\n        case \"^\": value = padding.slice(0, length = padding.length >> 1) + valuePrefix + value + valueSuffix + padding.slice(length); break;\n        default: value = padding + valuePrefix + value + valueSuffix; break;\n      }\n\n      return numerals(value);\n    }\n\n    format.toString = function() {\n      return specifier + \"\";\n    };\n\n    return format;\n  }\n\n  function formatPrefix(specifier, value) {\n    var f = newFormat((specifier = Object(_formatSpecifier_js__WEBPACK_IMPORTED_MODULE_3__[\"default\"])(specifier), specifier.type = \"f\", specifier)),\n        e = Math.max(-8, Math.min(8, Math.floor(Object(_exponent_js__WEBPACK_IMPORTED_MODULE_0__[\"default\"])(value) / 3))) * 3,\n        k = Math.pow(10, -e),\n        prefix = prefixes[8 + e / 3];\n    return function(value) {\n      return f(k * value) + prefix;\n    };\n  }\n\n  return {\n    format: newFormat,\n    formatPrefix: formatPrefix\n  };\n});\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,[encoded data, 9992 characters]\n//# sourceURL=webpack-internal:///./node_modules/vega-format/node_modules/d3-format/src/locale.js\n");

/***/ }),

/***/ "./node_modules/vega-format/node_modules/d3-format/src/precisionFixed.js":
/*!*******************************************************************************!*\
  !*** ./node_modules/vega-format/node_modules/d3-format/src/precisionFixed.js ***!
  \*******************************************************************************/
/*! exports provided: default */
/***/ (function(module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _exponent_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./exponent.js */ \"./node_modules/vega-format/node_modules/d3-format/src/exponent.js\");\n\n\n/* harmony default export */ __webpack_exports__[\"default\"] = (function(step) {\n  return Math.max(0, -Object(_exponent_js__WEBPACK_IMPORTED_MODULE_0__[\"default\"])(Math.abs(step)));\n});\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvdmVnYS1mb3JtYXQvbm9kZV9tb2R1bGVzL2QzLWZvcm1hdC9zcmMvcHJlY2lzaW9uRml4ZWQuanMuanMiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvdmVnYS1mb3JtYXQvbm9kZV9tb2R1bGVzL2QzLWZvcm1hdC9zcmMvcHJlY2lzaW9uRml4ZWQuanM/ZmYyYSJdLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgZXhwb25lbnQgZnJvbSBcIi4vZXhwb25lbnQuanNcIjtcblxuZXhwb3J0IGRlZmF1bHQgZnVuY3Rpb24oc3RlcCkge1xuICByZXR1cm4gTWF0aC5tYXgoMCwgLWV4cG9uZW50KE1hdGguYWJzKHN0ZXApKSk7XG59XG4iXSwibWFwcGluZ3MiOiJBQUFBO0FBQUE7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOyIsInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///./node_modules/vega-format/node_modules/d3-format/src/precisionFixed.js\n");

/***/ }),

/***/ "./node_modules/vega-format/node_modules/d3-format/src/precisionPrefix.js":
/*!********************************************************************************!*\
  !*** ./node_modules/vega-format/node_modules/d3-format/src/precisionPrefix.js ***!
  \********************************************************************************/
/*! exports provided: default */
/***/ (function(module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _exponent_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./exponent.js */ \"./node_modules/vega-format/node_modules/d3-format/src/exponent.js\");\n\n\n/* harmony default export */ __webpack_exports__[\"default\"] = (function(step, value) {\n  return Math.max(0, Math.max(-8, Math.min(8, Math.floor(Object(_exponent_js__WEBPACK_IMPORTED_MODULE_0__[\"default\"])(value) / 3))) * 3 - Object(_exponent_js__WEBPACK_IMPORTED_MODULE_0__[\"default\"])(Math.abs(step)));\n});\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvdmVnYS1mb3JtYXQvbm9kZV9tb2R1bGVzL2QzLWZvcm1hdC9zcmMvcHJlY2lzaW9uUHJlZml4LmpzLmpzIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL3ZlZ2EtZm9ybWF0L25vZGVfbW9kdWxlcy9kMy1mb3JtYXQvc3JjL3ByZWNpc2lvblByZWZpeC5qcz85OGE1Il0sInNvdXJjZXNDb250ZW50IjpbImltcG9ydCBleHBvbmVudCBmcm9tIFwiLi9leHBvbmVudC5qc1wiO1xuXG5leHBvcnQgZGVmYXVsdCBmdW5jdGlvbihzdGVwLCB2YWx1ZSkge1xuICByZXR1cm4gTWF0aC5tYXgoMCwgTWF0aC5tYXgoLTgsIE1hdGgubWluKDgsIE1hdGguZmxvb3IoZXhwb25lbnQodmFsdWUpIC8gMykpKSAqIDMgLSBleHBvbmVudChNYXRoLmFicyhzdGVwKSkpO1xufVxuIl0sIm1hcHBpbmdzIjoiQUFBQTtBQUFBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTsiLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///./node_modules/vega-format/node_modules/d3-format/src/precisionPrefix.js\n");

/***/ }),

/***/ "./node_modules/vega-format/node_modules/d3-format/src/precisionRound.js":
/*!*******************************************************************************!*\
  !*** ./node_modules/vega-format/node_modules/d3-format/src/precisionRound.js ***!
  \*******************************************************************************/
/*! exports provided: default */
/***/ (function(module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _exponent_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./exponent.js */ \"./node_modules/vega-format/node_modules/d3-format/src/exponent.js\");\n\n\n/* harmony default export */ __webpack_exports__[\"default\"] = (function(step, max) {\n  step = Math.abs(step), max = Math.abs(max) - step;\n  return Math.max(0, Object(_exponent_js__WEBPACK_IMPORTED_MODULE_0__[\"default\"])(max) - Object(_exponent_js__WEBPACK_IMPORTED_MODULE_0__[\"default\"])(step)) + 1;\n});\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvdmVnYS1mb3JtYXQvbm9kZV9tb2R1bGVzL2QzLWZvcm1hdC9zcmMvcHJlY2lzaW9uUm91bmQuanMuanMiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvdmVnYS1mb3JtYXQvbm9kZV9tb2R1bGVzL2QzLWZvcm1hdC9zcmMvcHJlY2lzaW9uUm91bmQuanM/MzkzMCJdLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgZXhwb25lbnQgZnJvbSBcIi4vZXhwb25lbnQuanNcIjtcblxuZXhwb3J0IGRlZmF1bHQgZnVuY3Rpb24oc3RlcCwgbWF4KSB7XG4gIHN0ZXAgPSBNYXRoLmFicyhzdGVwKSwgbWF4ID0gTWF0aC5hYnMobWF4KSAtIHN0ZXA7XG4gIHJldHVybiBNYXRoLm1heCgwLCBleHBvbmVudChtYXgpIC0gZXhwb25lbnQoc3RlcCkpICsgMTtcbn1cbiJdLCJtYXBwaW5ncyI6IkFBQUE7QUFBQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTsiLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///./node_modules/vega-format/node_modules/d3-format/src/precisionRound.js\n");

/***/ }),

/***/ "./node_modules/vega-format/node_modules/d3-time-format/src/defaultLocale.js":
/*!***********************************************************************************!*\
  !*** ./node_modules/vega-format/node_modules/d3-time-format/src/defaultLocale.js ***!
  \***********************************************************************************/
/*! exports provided: timeFormat, timeParse, utcFormat, utcParse, default */
/***/ (function(module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"timeFormat\", function() { return timeFormat; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"timeParse\", function() { return timeParse; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"utcFormat\", function() { return utcFormat; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"utcParse\", function() { return utcParse; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"default\", function() { return defaultLocale; });\n/* harmony import */ var _locale_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./locale.js */ \"./node_modules/vega-format/node_modules/d3-time-format/src/locale.js\");\n\n\nvar locale;\nvar timeFormat;\nvar timeParse;\nvar utcFormat;\nvar utcParse;\n\ndefaultLocale({\n  dateTime: \"%x, %X\",\n  date: \"%-m/%-d/%Y\",\n  time: \"%-I:%M:%S %p\",\n  periods: [\"AM\", \"PM\"],\n  days: [\"Sunday\", \"Monday\", \"Tuesday\", \"Wednesday\", \"Thursday\", \"Friday\", \"Saturday\"],\n  shortDays: [\"Sun\", \"Mon\", \"Tue\", \"Wed\", \"Thu\", \"Fri\", \"Sat\"],\n  months: [\"January\", \"February\", \"March\", \"April\", \"May\", \"June\", \"July\", \"August\", \"September\", \"October\", \"November\", \"December\"],\n  shortMonths: [\"Jan\", \"Feb\", \"Mar\", \"Apr\", \"May\", \"Jun\", \"Jul\", \"Aug\", \"Sep\", \"Oct\", \"Nov\", \"Dec\"]\n});\n\nfunction defaultLocale(definition) {\n  locale = Object(_locale_js__WEBPACK_IMPORTED_MODULE_0__[\"default\"])(definition);\n  timeFormat = locale.format;\n  timeParse = locale.parse;\n  utcFormat = locale.utcFormat;\n  utcParse = locale.utcParse;\n  return locale;\n}\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvdmVnYS1mb3JtYXQvbm9kZV9tb2R1bGVzL2QzLXRpbWUtZm9ybWF0L3NyYy9kZWZhdWx0TG9jYWxlLmpzLmpzIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL3ZlZ2EtZm9ybWF0L25vZGVfbW9kdWxlcy9kMy10aW1lLWZvcm1hdC9zcmMvZGVmYXVsdExvY2FsZS5qcz9hNTdkIl0sInNvdXJjZXNDb250ZW50IjpbImltcG9ydCBmb3JtYXRMb2NhbGUgZnJvbSBcIi4vbG9jYWxlLmpzXCI7XG5cbnZhciBsb2NhbGU7XG5leHBvcnQgdmFyIHRpbWVGb3JtYXQ7XG5leHBvcnQgdmFyIHRpbWVQYXJzZTtcbmV4cG9ydCB2YXIgdXRjRm9ybWF0O1xuZXhwb3J0IHZhciB1dGNQYXJzZTtcblxuZGVmYXVsdExvY2FsZSh7XG4gIGRhdGVUaW1lOiBcIiV4LCAlWFwiLFxuICBkYXRlOiBcIiUtbS8lLWQvJVlcIixcbiAgdGltZTogXCIlLUk6JU06JVMgJXBcIixcbiAgcGVyaW9kczogW1wiQU1cIiwgXCJQTVwiXSxcbiAgZGF5czogW1wiU3VuZGF5XCIsIFwiTW9uZGF5XCIsIFwiVHVlc2RheVwiLCBcIldlZG5lc2RheVwiLCBcIlRodXJzZGF5XCIsIFwiRnJpZGF5XCIsIFwiU2F0dXJkYXlcIl0sXG4gIHNob3J0RGF5czogW1wiU3VuXCIsIFwiTW9uXCIsIFwiVHVlXCIsIFwiV2VkXCIsIFwiVGh1XCIsIFwiRnJpXCIsIFwiU2F0XCJdLFxuICBtb250aHM6IFtcIkphbnVhcnlcIiwgXCJGZWJydWFyeVwiLCBcIk1hcmNoXCIsIFwiQXByaWxcIiwgXCJNYXlcIiwgXCJKdW5lXCIsIFwiSnVseVwiLCBcIkF1Z3VzdFwiLCBcIlNlcHRlbWJlclwiLCBcIk9jdG9iZXJcIiwgXCJOb3ZlbWJlclwiLCBcIkRlY2VtYmVyXCJdLFxuICBzaG9ydE1vbnRoczogW1wiSmFuXCIsIFwiRmViXCIsIFwiTWFyXCIsIFwiQXByXCIsIFwiTWF5XCIsIFwiSnVuXCIsIFwiSnVsXCIsIFwiQXVnXCIsIFwiU2VwXCIsIFwiT2N0XCIsIFwiTm92XCIsIFwiRGVjXCJdXG59KTtcblxuZXhwb3J0IGRlZmF1bHQgZnVuY3Rpb24gZGVmYXVsdExvY2FsZShkZWZpbml0aW9uKSB7XG4gIGxvY2FsZSA9IGZvcm1hdExvY2FsZShkZWZpbml0aW9uKTtcbiAgdGltZUZvcm1hdCA9IGxvY2FsZS5mb3JtYXQ7XG4gIHRpbWVQYXJzZSA9IGxvY2FsZS5wYXJzZTtcbiAgdXRjRm9ybWF0ID0gbG9jYWxlLnV0Y0Zvcm1hdDtcbiAgdXRjUGFyc2UgPSBsb2NhbGUudXRjUGFyc2U7XG4gIHJldHVybiBsb2NhbGU7XG59XG4iXSwibWFwcGluZ3MiOiJBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOyIsInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///./node_modules/vega-format/node_modules/d3-time-format/src/defaultLocale.js\n");

/***/ }),

/***/ "./node_modules/vega-format/node_modules/d3-time-format/src/index.js":
/*!***************************************************************************!*\
  !*** ./node_modules/vega-format/node_modules/d3-time-format/src/index.js ***!
  \***************************************************************************/
/*! exports provided: timeFormatDefaultLocale, timeFormat, timeParse, utcFormat, utcParse, timeFormatLocale, isoFormat, isoParse */
/***/ (function(module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _defaultLocale_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./defaultLocale.js */ \"./node_modules/vega-format/node_modules/d3-time-format/src/defaultLocale.js\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"timeFormatDefaultLocale\", function() { return _defaultLocale_js__WEBPACK_IMPORTED_MODULE_0__[\"default\"]; });\n\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"timeFormat\", function() { return _defaultLocale_js__WEBPACK_IMPORTED_MODULE_0__[\"timeFormat\"]; });\n\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"timeParse\", function() { return _defaultLocale_js__WEBPACK_IMPORTED_MODULE_0__[\"timeParse\"]; });\n\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"utcFormat\", function() { return _defaultLocale_js__WEBPACK_IMPORTED_MODULE_0__[\"utcFormat\"]; });\n\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"utcParse\", function() { return _defaultLocale_js__WEBPACK_IMPORTED_MODULE_0__[\"utcParse\"]; });\n\n/* harmony import */ var _locale_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./locale.js */ \"./node_modules/vega-format/node_modules/d3-time-format/src/locale.js\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"timeFormatLocale\", function() { return _locale_js__WEBPACK_IMPORTED_MODULE_1__[\"default\"]; });\n\n/* harmony import */ var _isoFormat_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./isoFormat.js */ \"./node_modules/vega-format/node_modules/d3-time-format/src/isoFormat.js\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"isoFormat\", function() { return _isoFormat_js__WEBPACK_IMPORTED_MODULE_2__[\"default\"]; });\n\n/* harmony import */ var _isoParse_js__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ./isoParse.js */ \"./node_modules/vega-format/node_modules/d3-time-format/src/isoParse.js\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"isoParse\", function() { return _isoParse_js__WEBPACK_IMPORTED_MODULE_3__[\"default\"]; });\n\n\n\n\n\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvdmVnYS1mb3JtYXQvbm9kZV9tb2R1bGVzL2QzLXRpbWUtZm9ybWF0L3NyYy9pbmRleC5qcy5qcyIsInNvdXJjZXMiOlsid2VicGFjazovLy8uL25vZGVfbW9kdWxlcy92ZWdhLWZvcm1hdC9ub2RlX21vZHVsZXMvZDMtdGltZS1mb3JtYXQvc3JjL2luZGV4LmpzP2I0ZDQiXSwic291cmNlc0NvbnRlbnQiOlsiZXhwb3J0IHtkZWZhdWx0IGFzIHRpbWVGb3JtYXREZWZhdWx0TG9jYWxlLCB0aW1lRm9ybWF0LCB0aW1lUGFyc2UsIHV0Y0Zvcm1hdCwgdXRjUGFyc2V9IGZyb20gXCIuL2RlZmF1bHRMb2NhbGUuanNcIjtcbmV4cG9ydCB7ZGVmYXVsdCBhcyB0aW1lRm9ybWF0TG9jYWxlfSBmcm9tIFwiLi9sb2NhbGUuanNcIjtcbmV4cG9ydCB7ZGVmYXVsdCBhcyBpc29Gb3JtYXR9IGZyb20gXCIuL2lzb0Zvcm1hdC5qc1wiO1xuZXhwb3J0IHtkZWZhdWx0IGFzIGlzb1BhcnNlfSBmcm9tIFwiLi9pc29QYXJzZS5qc1wiO1xuIl0sIm1hcHBpbmdzIjoiQUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUNBO0FBQ0E7QUFDQTsiLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///./node_modules/vega-format/node_modules/d3-time-format/src/index.js\n");

/***/ }),

/***/ "./node_modules/vega-format/node_modules/d3-time-format/src/isoFormat.js":
/*!*******************************************************************************!*\
  !*** ./node_modules/vega-format/node_modules/d3-time-format/src/isoFormat.js ***!
  \*******************************************************************************/
/*! exports provided: isoSpecifier, default */
/***/ (function(module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"isoSpecifier\", function() { return isoSpecifier; });\n/* harmony import */ var _defaultLocale_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./defaultLocale.js */ \"./node_modules/vega-format/node_modules/d3-time-format/src/defaultLocale.js\");\n\n\nvar isoSpecifier = \"%Y-%m-%dT%H:%M:%S.%LZ\";\n\nfunction formatIsoNative(date) {\n  return date.toISOString();\n}\n\nvar formatIso = Date.prototype.toISOString\n    ? formatIsoNative\n    : Object(_defaultLocale_js__WEBPACK_IMPORTED_MODULE_0__[\"utcFormat\"])(isoSpecifier);\n\n/* harmony default export */ __webpack_exports__[\"default\"] = (formatIso);\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvdmVnYS1mb3JtYXQvbm9kZV9tb2R1bGVzL2QzLXRpbWUtZm9ybWF0L3NyYy9pc29Gb3JtYXQuanMuanMiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvdmVnYS1mb3JtYXQvbm9kZV9tb2R1bGVzL2QzLXRpbWUtZm9ybWF0L3NyYy9pc29Gb3JtYXQuanM/NmUyMSJdLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge3V0Y0Zvcm1hdH0gZnJvbSBcIi4vZGVmYXVsdExvY2FsZS5qc1wiO1xuXG5leHBvcnQgdmFyIGlzb1NwZWNpZmllciA9IFwiJVktJW0tJWRUJUg6JU06JVMuJUxaXCI7XG5cbmZ1bmN0aW9uIGZvcm1hdElzb05hdGl2ZShkYXRlKSB7XG4gIHJldHVybiBkYXRlLnRvSVNPU3RyaW5nKCk7XG59XG5cbnZhciBmb3JtYXRJc28gPSBEYXRlLnByb3RvdHlwZS50b0lTT1N0cmluZ1xuICAgID8gZm9ybWF0SXNvTmF0aXZlXG4gICAgOiB1dGNGb3JtYXQoaXNvU3BlY2lmaWVyKTtcblxuZXhwb3J0IGRlZmF1bHQgZm9ybWF0SXNvO1xuIl0sIm1hcHBpbmdzIjoiQUFBQTtBQUFBO0FBQUE7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTsiLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///./node_modules/vega-format/node_modules/d3-time-format/src/isoFormat.js\n");

/***/ }),

/***/ "./node_modules/vega-format/node_modules/d3-time-format/src/isoParse.js":
/*!******************************************************************************!*\
  !*** ./node_modules/vega-format/node_modules/d3-time-format/src/isoParse.js ***!
  \******************************************************************************/
/*! exports provided: default */
/***/ (function(module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _isoFormat_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./isoFormat.js */ \"./node_modules/vega-format/node_modules/d3-time-format/src/isoFormat.js\");\n/* harmony import */ var _defaultLocale_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./defaultLocale.js */ \"./node_modules/vega-format/node_modules/d3-time-format/src/defaultLocale.js\");\n\n\n\nfunction parseIsoNative(string) {\n  var date = new Date(string);\n  return isNaN(date) ? null : date;\n}\n\nvar parseIso = +new Date(\"2000-01-01T00:00:00.000Z\")\n    ? parseIsoNative\n    : Object(_defaultLocale_js__WEBPACK_IMPORTED_MODULE_1__[\"utcParse\"])(_isoFormat_js__WEBPACK_IMPORTED_MODULE_0__[\"isoSpecifier\"]);\n\n/* harmony default export */ __webpack_exports__[\"default\"] = (parseIso);\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvdmVnYS1mb3JtYXQvbm9kZV9tb2R1bGVzL2QzLXRpbWUtZm9ybWF0L3NyYy9pc29QYXJzZS5qcy5qcyIsInNvdXJjZXMiOlsid2VicGFjazovLy8uL25vZGVfbW9kdWxlcy92ZWdhLWZvcm1hdC9ub2RlX21vZHVsZXMvZDMtdGltZS1mb3JtYXQvc3JjL2lzb1BhcnNlLmpzPzEyNTQiXSwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtpc29TcGVjaWZpZXJ9IGZyb20gXCIuL2lzb0Zvcm1hdC5qc1wiO1xuaW1wb3J0IHt1dGNQYXJzZX0gZnJvbSBcIi4vZGVmYXVsdExvY2FsZS5qc1wiO1xuXG5mdW5jdGlvbiBwYXJzZUlzb05hdGl2ZShzdHJpbmcpIHtcbiAgdmFyIGRhdGUgPSBuZXcgRGF0ZShzdHJpbmcpO1xuICByZXR1cm4gaXNOYU4oZGF0ZSkgPyBudWxsIDogZGF0ZTtcbn1cblxudmFyIHBhcnNlSXNvID0gK25ldyBEYXRlKFwiMjAwMC0wMS0wMVQwMDowMDowMC4wMDBaXCIpXG4gICAgPyBwYXJzZUlzb05hdGl2ZVxuICAgIDogdXRjUGFyc2UoaXNvU3BlY2lmaWVyKTtcblxuZXhwb3J0IGRlZmF1bHQgcGFyc2VJc287XG4iXSwibWFwcGluZ3MiOiJBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOyIsInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///./node_modules/vega-format/node_modules/d3-time-format/src/isoParse.js\n");

/***/ }),

/***/ "./node_modules/vega-format/node_modules/d3-time-format/src/locale.js":
/*!****************************************************************************!*\
  !*** ./node_modules/vega-format/node_modules/d3-time-format/src/locale.js ***!
  \****************************************************************************/
/*! exports provided: default */
/***/ (function(module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"default\", function() { return formatLocale; });\n/* harmony import */ var d3_time__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! d3-time */ \"./node_modules/vega-format/node_modules/d3-time/src/index.js\");\n\n\nfunction localDate(d) {\n  if (0 <= d.y && d.y < 100) {\n    var date = new Date(-1, d.m, d.d, d.H, d.M, d.S, d.L);\n    date.setFullYear(d.y);\n    return date;\n  }\n  return new Date(d.y, d.m, d.d, d.H, d.M, d.S, d.L);\n}\n\nfunction utcDate(d) {\n  if (0 <= d.y && d.y < 100) {\n    var date = new Date(Date.UTC(-1, d.m, d.d, d.H, d.M, d.S, d.L));\n    date.setUTCFullYear(d.y);\n    return date;\n  }\n  return new Date(Date.UTC(d.y, d.m, d.d, d.H, d.M, d.S, d.L));\n}\n\nfunction newDate(y, m, d) {\n  return {y: y, m: m, d: d, H: 0, M: 0, S: 0, L: 0};\n}\n\nfunction formatLocale(locale) {\n  var locale_dateTime = locale.dateTime,\n      locale_date = locale.date,\n      locale_time = locale.time,\n      locale_periods = locale.periods,\n      locale_weekdays = locale.days,\n      locale_shortWeekdays = locale.shortDays,\n      locale_months = locale.months,\n      locale_shortMonths = locale.shortMonths;\n\n  var periodRe = formatRe(locale_periods),\n      periodLookup = formatLookup(locale_periods),\n      weekdayRe = formatRe(locale_weekdays),\n      weekdayLookup = formatLookup(locale_weekdays),\n      shortWeekdayRe = formatRe(locale_shortWeekdays),\n      shortWeekdayLookup = formatLookup(locale_shortWeekdays),\n      monthRe = formatRe(locale_months),\n      monthLookup = formatLookup(locale_months),\n      shortMonthRe = formatRe(locale_shortMonths),\n      shortMonthLookup = formatLookup(locale_shortMonths);\n\n  var formats = {\n    \"a\": formatShortWeekday,\n    \"A\": formatWeekday,\n    \"b\": formatShortMonth,\n    \"B\": formatMonth,\n    \"c\": null,\n    \"d\": formatDayOfMonth,\n    \"e\": formatDayOfMonth,\n    \"f\": formatMicroseconds,\n    \"g\": formatYearISO,\n    \"G\": formatFullYearISO,\n    \"H\": formatHour24,\n    \"I\": formatHour12,\n    \"j\": formatDayOfYear,\n    \"L\": formatMilliseconds,\n    \"m\": formatMonthNumber,\n    \"M\": formatMinutes,\n    \"p\": formatPeriod,\n    \"q\": formatQuarter,\n    \"Q\": formatUnixTimestamp,\n    \"s\": formatUnixTimestampSeconds,\n    \"S\": formatSeconds,\n    \"u\": formatWeekdayNumberMonday,\n    \"U\": formatWeekNumberSunday,\n    \"V\": formatWeekNumberISO,\n    \"w\": formatWeekdayNumberSunday,\n    \"W\": formatWeekNumberMonday,\n    \"x\": null,\n    \"X\": null,\n    \"y\": formatYear,\n    \"Y\": formatFullYear,\n    \"Z\": formatZone,\n    \"%\": formatLiteralPercent\n  };\n\n  var utcFormats = {\n    \"a\": formatUTCShortWeekday,\n    \"A\": formatUTCWeekday,\n    \"b\": formatUTCShortMonth,\n    \"B\": formatUTCMonth,\n    \"c\": null,\n    \"d\": formatUTCDayOfMonth,\n    \"e\": formatUTCDayOfMonth,\n    \"f\": formatUTCMicroseconds,\n    \"g\": formatUTCYearISO,\n    \"G\": formatUTCFullYearISO,\n    \"H\": formatUTCHour24,\n    \"I\": formatUTCHour12,\n    \"j\": formatUTCDayOfYear,\n    \"L\": formatUTCMilliseconds,\n    \"m\": formatUTCMonthNumber,\n    \"M\": formatUTCMinutes,\n    \"p\": formatUTCPeriod,\n    \"q\": formatUTCQuarter,\n    \"Q\": formatUnixTimestamp,\n    \"s\": formatUnixTimestampSeconds,\n    \"S\": formatUTCSeconds,\n    \"u\": formatUTCWeekdayNumberMonday,\n    \"U\": formatUTCWeekNumberSunday,\n    \"V\": formatUTCWeekNumberISO,\n    \"w\": formatUTCWeekdayNumberSunday,\n    \"W\": formatUTCWeekNumberMonday,\n    \"x\": null,\n    \"X\": null,\n    \"y\": formatUTCYear,\n    \"Y\": formatUTCFullYear,\n    \"Z\": formatUTCZone,\n    \"%\": formatLiteralPercent\n  };\n\n  var parses = {\n    \"a\": parseShortWeekday,\n    \"A\": parseWeekday,\n    \"b\": parseShortMonth,\n    \"B\": parseMonth,\n    \"c\": parseLocaleDateTime,\n    \"d\": parseDayOfMonth,\n    \"e\": parseDayOfMonth,\n    \"f\": parseMicroseconds,\n    \"g\": parseYear,\n    \"G\": parseFullYear,\n    \"H\": parseHour24,\n    \"I\": parseHour24,\n    \"j\": parseDayOfYear,\n    \"L\": parseMilliseconds,\n    \"m\": parseMonthNumber,\n    \"M\": parseMinutes,\n    \"p\": parsePeriod,\n    \"q\": parseQuarter,\n    \"Q\": parseUnixTimestamp,\n    \"s\": parseUnixTimestampSeconds,\n    \"S\": parseSeconds,\n    \"u\": parseWeekdayNumberMonday,\n    \"U\": parseWeekNumberSunday,\n    \"V\": parseWeekNumberISO,\n    \"w\": parseWeekdayNumberSunday,\n    \"W\": parseWeekNumberMonday,\n    \"x\": parseLocaleDate,\n    \"X\": parseLocaleTime,\n    \"y\": parseYear,\n    \"Y\": parseFullYear,\n    \"Z\": parseZone,\n    \"%\": parseLiteralPercent\n  };\n\n  // These recursive directive definitions must be deferred.\n  formats.x = newFormat(locale_date, formats);\n  formats.X = newFormat(locale_time, formats);\n  formats.c = newFormat(locale_dateTime, formats);\n  utcFormats.x = newFormat(locale_date, utcFormats);\n  utcFormats.X = newFormat(locale_time, utcFormats);\n  utcFormats.c = newFormat(locale_dateTime, utcFormats);\n\n  function newFormat(specifier, formats) {\n    return function(date) {\n      var string = [],\n          i = -1,\n          j = 0,\n          n = specifier.length,\n          c,\n          pad,\n          format;\n\n      if (!(date instanceof Date)) date = new Date(+date);\n\n      while (++i < n) {\n        if (specifier.charCodeAt(i) === 37) {\n          string.push(specifier.slice(j, i));\n          if ((pad = pads[c = specifier.charAt(++i)]) != null) c = specifier.charAt(++i);\n          else pad = c === \"e\" ? \" \" : \"0\";\n          if (format = formats[c]) c = format(date, pad);\n          string.push(c);\n          j = i + 1;\n        }\n      }\n\n      string.push(specifier.slice(j, i));\n      return string.join(\"\");\n    };\n  }\n\n  function newParse(specifier, Z) {\n    return function(string) {\n      var d = newDate(1900, undefined, 1),\n          i = parseSpecifier(d, specifier, string += \"\", 0),\n          week, day;\n      if (i != string.length) return null;\n\n      // If a UNIX timestamp is specified, return it.\n      if (\"Q\" in d) return new Date(d.Q);\n      if (\"s\" in d) return new Date(d.s * 1000 + (\"L\" in d ? d.L : 0));\n\n      // If this is utcParse, never use the local timezone.\n      if (Z && !(\"Z\" in d)) d.Z = 0;\n\n      // The am-pm flag is 0 for AM, and 1 for PM.\n      if (\"p\" in d) d.H = d.H % 12 + d.p * 12;\n\n      // If the month was not specified, inherit from the quarter.\n      if (d.m === undefined) d.m = \"q\" in d ? d.q : 0;\n\n      // Convert day-of-week and week-of-year to day-of-year.\n      if (\"V\" in d) {\n        if (d.V < 1 || d.V > 53) return null;\n        if (!(\"w\" in d)) d.w = 1;\n        if (\"Z\" in d) {\n          week = utcDate(newDate(d.y, 0, 1)), day = week.getUTCDay();\n          week = day > 4 || day === 0 ? d3_time__WEBPACK_IMPORTED_MODULE_0__[\"utcMonday\"].ceil(week) : Object(d3_time__WEBPACK_IMPORTED_MODULE_0__[\"utcMonday\"])(week);\n          week = d3_time__WEBPACK_IMPORTED_MODULE_0__[\"utcDay\"].offset(week, (d.V - 1) * 7);\n          d.y = week.getUTCFullYear();\n          d.m = week.getUTCMonth();\n          d.d = week.getUTCDate() + (d.w + 6) % 7;\n        } else {\n          week = localDate(newDate(d.y, 0, 1)), day = week.getDay();\n          week = day > 4 || day === 0 ? d3_time__WEBPACK_IMPORTED_MODULE_0__[\"timeMonday\"].ceil(week) : Object(d3_time__WEBPACK_IMPORTED_MODULE_0__[\"timeMonday\"])(week);\n          week = d3_time__WEBPACK_IMPORTED_MODULE_0__[\"timeDay\"].offset(week, (d.V - 1) * 7);\n          d.y = week.getFullYear();\n          d.m = week.getMonth();\n          d.d = week.getDate() + (d.w + 6) % 7;\n        }\n      } else if (\"W\" in d || \"U\" in d) {\n        if (!(\"w\" in d)) d.w = \"u\" in d ? d.u % 7 : \"W\" in d ? 1 : 0;\n        day = \"Z\" in d ? utcDate(newDate(d.y, 0, 1)).getUTCDay() : localDate(newDate(d.y, 0, 1)).getDay();\n        d.m = 0;\n        d.d = \"W\" in d ? (d.w + 6) % 7 + d.W * 7 - (day + 5) % 7 : d.w + d.U * 7 - (day + 6) % 7;\n      }\n\n      // If a time zone is specified, all fields are interpreted as UTC and then\n      // offset according to the specified time zone.\n      if (\"Z\" in d) {\n        d.H += d.Z / 100 | 0;\n        d.M += d.Z % 100;\n        return utcDate(d);\n      }\n\n      // Otherwise, all fields are in local time.\n      return localDate(d);\n    };\n  }\n\n  function parseSpecifier(d, specifier, string, j) {\n    var i = 0,\n        n = specifier.length,\n        m = string.length,\n        c,\n        parse;\n\n    while (i < n) {\n      if (j >= m) return -1;\n      c = specifier.charCodeAt(i++);\n      if (c === 37) {\n        c = specifier.charAt(i++);\n        parse = parses[c in pads ? specifier.charAt(i++) : c];\n        if (!parse || ((j = parse(d, string, j)) < 0)) return -1;\n      } else if (c != string.charCodeAt(j++)) {\n        return -1;\n      }\n    }\n\n    return j;\n  }\n\n  function parsePeriod(d, string, i) {\n    var n = periodRe.exec(string.slice(i));\n    return n ? (d.p = periodLookup.get(n[0].toLowerCase()), i + n[0].length) : -1;\n  }\n\n  function parseShortWeekday(d, string, i) {\n    var n = shortWeekdayRe.exec(string.slice(i));\n    return n ? (d.w = shortWeekdayLookup.get(n[0].toLowerCase()), i + n[0].length) : -1;\n  }\n\n  function parseWeekday(d, string, i) {\n    var n = weekdayRe.exec(string.slice(i));\n    return n ? (d.w = weekdayLookup.get(n[0].toLowerCase()), i + n[0].length) : -1;\n  }\n\n  function parseShortMonth(d, string, i) {\n    var n = shortMonthRe.exec(string.slice(i));\n    return n ? (d.m = shortMonthLookup.get(n[0].toLowerCase()), i + n[0].length) : -1;\n  }\n\n  function parseMonth(d, string, i) {\n    var n = monthRe.exec(string.slice(i));\n    return n ? (d.m = monthLookup.get(n[0].toLowerCase()), i + n[0].length) : -1;\n  }\n\n  function parseLocaleDateTime(d, string, i) {\n    return parseSpecifier(d, locale_dateTime, string, i);\n  }\n\n  function parseLocaleDate(d, string, i) {\n    return parseSpecifier(d, locale_date, string, i);\n  }\n\n  function parseLocaleTime(d, string, i) {\n    return parseSpecifier(d, locale_time, string, i);\n  }\n\n  function formatShortWeekday(d) {\n    return locale_shortWeekdays[d.getDay()];\n  }\n\n  function formatWeekday(d) {\n    return locale_weekdays[d.getDay()];\n  }\n\n  function formatShortMonth(d) {\n    return locale_shortMonths[d.getMonth()];\n  }\n\n  function formatMonth(d) {\n    return locale_months[d.getMonth()];\n  }\n\n  function formatPeriod(d) {\n    return locale_periods[+(d.getHours() >= 12)];\n  }\n\n  function formatQuarter(d) {\n    return 1 + ~~(d.getMonth() / 3);\n  }\n\n  function formatUTCShortWeekday(d) {\n    return locale_shortWeekdays[d.getUTCDay()];\n  }\n\n  function formatUTCWeekday(d) {\n    return locale_weekdays[d.getUTCDay()];\n  }\n\n  function formatUTCShortMonth(d) {\n    return locale_shortMonths[d.getUTCMonth()];\n  }\n\n  function formatUTCMonth(d) {\n    return locale_months[d.getUTCMonth()];\n  }\n\n  function formatUTCPeriod(d) {\n    return locale_periods[+(d.getUTCHours() >= 12)];\n  }\n\n  function formatUTCQuarter(d) {\n    return 1 + ~~(d.getUTCMonth() / 3);\n  }\n\n  return {\n    format: function(specifier) {\n      var f = newFormat(specifier += \"\", formats);\n      f.toString = function() { return specifier; };\n      return f;\n    },\n    parse: function(specifier) {\n      var p = newParse(specifier += \"\", false);\n      p.toString = function() { return specifier; };\n      return p;\n    },\n    utcFormat: function(specifier) {\n      var f = newFormat(specifier += \"\", utcFormats);\n      f.toString = function() { return specifier; };\n      return f;\n    },\n    utcParse: function(specifier) {\n      var p = newParse(specifier += \"\", true);\n      p.toString = function() { return specifier; };\n      return p;\n    }\n  };\n}\n\nvar pads = {\"-\": \"\", \"_\": \" \", \"0\": \"0\"},\n    numberRe = /^\\s*\\d+/, // note: ignores next directive\n    percentRe = /^%/,\n    requoteRe = /[\\\\^$*+?|[\\]().{}]/g;\n\nfunction pad(value, fill, width) {\n  var sign = value < 0 ? \"-\" : \"\",\n      string = (sign ? -value : value) + \"\",\n      length = string.length;\n  return sign + (length < width ? new Array(width - length + 1).join(fill) + string : string);\n}\n\nfunction requote(s) {\n  return s.replace(requoteRe, \"\\\\$&\");\n}\n\nfunction formatRe(names) {\n  return new RegExp(\"^(?:\" + names.map(requote).join(\"|\") + \")\", \"i\");\n}\n\nfunction formatLookup(names) {\n  return new Map(names.map((name, i) => [name.toLowerCase(), i]));\n}\n\nfunction parseWeekdayNumberSunday(d, string, i) {\n  var n = numberRe.exec(string.slice(i, i + 1));\n  return n ? (d.w = +n[0], i + n[0].length) : -1;\n}\n\nfunction parseWeekdayNumberMonday(d, string, i) {\n  var n = numberRe.exec(string.slice(i, i + 1));\n  return n ? (d.u = +n[0], i + n[0].length) : -1;\n}\n\nfunction parseWeekNumberSunday(d, string, i) {\n  var n = numberRe.exec(string.slice(i, i + 2));\n  return n ? (d.U = +n[0], i + n[0].length) : -1;\n}\n\nfunction parseWeekNumberISO(d, string, i) {\n  var n = numberRe.exec(string.slice(i, i + 2));\n  return n ? (d.V = +n[0], i + n[0].length) : -1;\n}\n\nfunction parseWeekNumberMonday(d, string, i) {\n  var n = numberRe.exec(string.slice(i, i + 2));\n  return n ? (d.W = +n[0], i + n[0].length) : -1;\n}\n\nfunction parseFullYear(d, string, i) {\n  var n = numberRe.exec(string.slice(i, i + 4));\n  return n ? (d.y = +n[0], i + n[0].length) : -1;\n}\n\nfunction parseYear(d, string, i) {\n  var n = numberRe.exec(string.slice(i, i + 2));\n  return n ? (d.y = +n[0] + (+n[0] > 68 ? 1900 : 2000), i + n[0].length) : -1;\n}\n\nfunction parseZone(d, string, i) {\n  var n = /^(Z)|([+-]\\d\\d)(?::?(\\d\\d))?/.exec(string.slice(i, i + 6));\n  return n ? (d.Z = n[1] ? 0 : -(n[2] + (n[3] || \"00\")), i + n[0].length) : -1;\n}\n\nfunction parseQuarter(d, string, i) {\n  var n = numberRe.exec(string.slice(i, i + 1));\n  return n ? (d.q = n[0] * 3 - 3, i + n[0].length) : -1;\n}\n\nfunction parseMonthNumber(d, string, i) {\n  var n = numberRe.exec(string.slice(i, i + 2));\n  return n ? (d.m = n[0] - 1, i + n[0].length) : -1;\n}\n\nfunction parseDayOfMonth(d, string, i) {\n  var n = numberRe.exec(string.slice(i, i + 2));\n  return n ? (d.d = +n[0], i + n[0].length) : -1;\n}\n\nfunction parseDayOfYear(d, string, i) {\n  var n = numberRe.exec(string.slice(i, i + 3));\n  return n ? (d.m = 0, d.d = +n[0], i + n[0].length) : -1;\n}\n\nfunction parseHour24(d, string, i) {\n  var n = numberRe.exec(string.slice(i, i + 2));\n  return n ? (d.H = +n[0], i + n[0].length) : -1;\n}\n\nfunction parseMinutes(d, string, i) {\n  var n = numberRe.exec(string.slice(i, i + 2));\n  return n ? (d.M = +n[0], i + n[0].length) : -1;\n}\n\nfunction parseSeconds(d, string, i) {\n  var n = numberRe.exec(string.slice(i, i + 2));\n  return n ? (d.S = +n[0], i + n[0].length) : -1;\n}\n\nfunction parseMilliseconds(d, string, i) {\n  var n = numberRe.exec(string.slice(i, i + 3));\n  return n ? (d.L = +n[0], i + n[0].length) : -1;\n}\n\nfunction parseMicroseconds(d, string, i) {\n  var n = numberRe.exec(string.slice(i, i + 6));\n  return n ? (d.L = Math.floor(n[0] / 1000), i + n[0].length) : -1;\n}\n\nfunction parseLiteralPercent(d, string, i) {\n  var n = percentRe.exec(string.slice(i, i + 1));\n  return n ? i + n[0].length : -1;\n}\n\nfunction parseUnixTimestamp(d, string, i) {\n  var n = numberRe.exec(string.slice(i));\n  return n ? (d.Q = +n[0], i + n[0].length) : -1;\n}\n\nfunction parseUnixTimestampSeconds(d, string, i) {\n  var n = numberRe.exec(string.slice(i));\n  return n ? (d.s = +n[0], i + n[0].length) : -1;\n}\n\nfunction formatDayOfMonth(d, p) {\n  return pad(d.getDate(), p, 2);\n}\n\nfunction formatHour24(d, p) {\n  return pad(d.getHours(), p, 2);\n}\n\nfunction formatHour12(d, p) {\n  return pad(d.getHours() % 12 || 12, p, 2);\n}\n\nfunction formatDayOfYear(d, p) {\n  return pad(1 + d3_time__WEBPACK_IMPORTED_MODULE_0__[\"timeDay\"].count(Object(d3_time__WEBPACK_IMPORTED_MODULE_0__[\"timeYear\"])(d), d), p, 3);\n}\n\nfunction formatMilliseconds(d, p) {\n  return pad(d.getMilliseconds(), p, 3);\n}\n\nfunction formatMicroseconds(d, p) {\n  return formatMilliseconds(d, p) + \"000\";\n}\n\nfunction formatMonthNumber(d, p) {\n  return pad(d.getMonth() + 1, p, 2);\n}\n\nfunction formatMinutes(d, p) {\n  return pad(d.getMinutes(), p, 2);\n}\n\nfunction formatSeconds(d, p) {\n  return pad(d.getSeconds(), p, 2);\n}\n\nfunction formatWeekdayNumberMonday(d) {\n  var day = d.getDay();\n  return day === 0 ? 7 : day;\n}\n\nfunction formatWeekNumberSunday(d, p) {\n  return pad(d3_time__WEBPACK_IMPORTED_MODULE_0__[\"timeSunday\"].count(Object(d3_time__WEBPACK_IMPORTED_MODULE_0__[\"timeYear\"])(d) - 1, d), p, 2);\n}\n\nfunction dISO(d) {\n  var day = d.getDay();\n  return (day >= 4 || day === 0) ? Object(d3_time__WEBPACK_IMPORTED_MODULE_0__[\"timeThursday\"])(d) : d3_time__WEBPACK_IMPORTED_MODULE_0__[\"timeThursday\"].ceil(d);\n}\n\nfunction formatWeekNumberISO(d, p) {\n  d = dISO(d);\n  return pad(d3_time__WEBPACK_IMPORTED_MODULE_0__[\"timeThursday\"].count(Object(d3_time__WEBPACK_IMPORTED_MODULE_0__[\"timeYear\"])(d), d) + (Object(d3_time__WEBPACK_IMPORTED_MODULE_0__[\"timeYear\"])(d).getDay() === 4), p, 2);\n}\n\nfunction formatWeekdayNumberSunday(d) {\n  return d.getDay();\n}\n\nfunction formatWeekNumberMonday(d, p) {\n  return pad(d3_time__WEBPACK_IMPORTED_MODULE_0__[\"timeMonday\"].count(Object(d3_time__WEBPACK_IMPORTED_MODULE_0__[\"timeYear\"])(d) - 1, d), p, 2);\n}\n\nfunction formatYear(d, p) {\n  return pad(d.getFullYear() % 100, p, 2);\n}\n\nfunction formatYearISO(d, p) {\n  d = dISO(d);\n  return pad(d.getFullYear() % 100, p, 2);\n}\n\nfunction formatFullYear(d, p) {\n  return pad(d.getFullYear() % 10000, p, 4);\n}\n\nfunction formatFullYearISO(d, p) {\n  var day = d.getDay();\n  d = (day >= 4 || day === 0) ? Object(d3_time__WEBPACK_IMPORTED_MODULE_0__[\"timeThursday\"])(d) : d3_time__WEBPACK_IMPORTED_MODULE_0__[\"timeThursday\"].ceil(d);\n  return pad(d.getFullYear() % 10000, p, 4);\n}\n\nfunction formatZone(d) {\n  var z = d.getTimezoneOffset();\n  return (z > 0 ? \"-\" : (z *= -1, \"+\"))\n      + pad(z / 60 | 0, \"0\", 2)\n      + pad(z % 60, \"0\", 2);\n}\n\nfunction formatUTCDayOfMonth(d, p) {\n  return pad(d.getUTCDate(), p, 2);\n}\n\nfunction formatUTCHour24(d, p) {\n  return pad(d.getUTCHours(), p, 2);\n}\n\nfunction formatUTCHour12(d, p) {\n  return pad(d.getUTCHours() % 12 || 12, p, 2);\n}\n\nfunction formatUTCDayOfYear(d, p) {\n  return pad(1 + d3_time__WEBPACK_IMPORTED_MODULE_0__[\"utcDay\"].count(Object(d3_time__WEBPACK_IMPORTED_MODULE_0__[\"utcYear\"])(d), d), p, 3);\n}\n\nfunction formatUTCMilliseconds(d, p) {\n  return pad(d.getUTCMilliseconds(), p, 3);\n}\n\nfunction formatUTCMicroseconds(d, p) {\n  return formatUTCMilliseconds(d, p) + \"000\";\n}\n\nfunction formatUTCMonthNumber(d, p) {\n  return pad(d.getUTCMonth() + 1, p, 2);\n}\n\nfunction formatUTCMinutes(d, p) {\n  return pad(d.getUTCMinutes(), p, 2);\n}\n\nfunction formatUTCSeconds(d, p) {\n  return pad(d.getUTCSeconds(), p, 2);\n}\n\nfunction formatUTCWeekdayNumberMonday(d) {\n  var dow = d.getUTCDay();\n  return dow === 0 ? 7 : dow;\n}\n\nfunction formatUTCWeekNumberSunday(d, p) {\n  return pad(d3_time__WEBPACK_IMPORTED_MODULE_0__[\"utcSunday\"].count(Object(d3_time__WEBPACK_IMPORTED_MODULE_0__[\"utcYear\"])(d) - 1, d), p, 2);\n}\n\nfunction UTCdISO(d) {\n  var day = d.getUTCDay();\n  return (day >= 4 || day === 0) ? Object(d3_time__WEBPACK_IMPORTED_MODULE_0__[\"utcThursday\"])(d) : d3_time__WEBPACK_IMPORTED_MODULE_0__[\"utcThursday\"].ceil(d);\n}\n\nfunction formatUTCWeekNumberISO(d, p) {\n  d = UTCdISO(d);\n  return pad(d3_time__WEBPACK_IMPORTED_MODULE_0__[\"utcThursday\"].count(Object(d3_time__WEBPACK_IMPORTED_MODULE_0__[\"utcYear\"])(d), d) + (Object(d3_time__WEBPACK_IMPORTED_MODULE_0__[\"utcYear\"])(d).getUTCDay() === 4), p, 2);\n}\n\nfunction formatUTCWeekdayNumberSunday(d) {\n  return d.getUTCDay();\n}\n\nfunction formatUTCWeekNumberMonday(d, p) {\n  return pad(d3_time__WEBPACK_IMPORTED_MODULE_0__[\"utcMonday\"].count(Object(d3_time__WEBPACK_IMPORTED_MODULE_0__[\"utcYear\"])(d) - 1, d), p, 2);\n}\n\nfunction formatUTCYear(d, p) {\n  return pad(d.getUTCFullYear() % 100, p, 2);\n}\n\nfunction formatUTCYearISO(d, p) {\n  d = UTCdISO(d);\n  return pad(d.getUTCFullYear() % 100, p, 2);\n}\n\nfunction formatUTCFullYear(d, p) {\n  return pad(d.getUTCFullYear() % 10000, p, 4);\n}\n\nfunction formatUTCFullYearISO(d, p) {\n  var day = d.getUTCDay();\n  d = (day >= 4 || day === 0) ? Object(d3_time__WEBPACK_IMPORTED_MODULE_0__[\"utcThursday\"])(d) : d3_time__WEBPACK_IMPORTED_MODULE_0__[\"utcThursday\"].ceil(d);\n  return pad(d.getUTCFullYear() % 10000, p, 4);\n}\n\nfunction formatUTCZone() {\n  return \"+0000\";\n}\n\nfunction formatLiteralPercent() {\n  return \"%\";\n}\n\nfunction formatUnixTimestamp(d) {\n  return +d;\n}\n\nfunction formatUnixTimestampSeconds(d) {\n  return Math.floor(+d / 1000);\n}\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,[encoded data, 31024 characters]\n//# sourceURL=webpack-internal:///./node_modules/vega-format/node_modules/d3-time-format/src/locale.js\n");

/***/ }),

/***/ "./node_modules/vega-format/node_modules/d3-time/src/day.js":
/*!******************************************************************!*\
  !*** ./node_modules/vega-format/node_modules/d3-time/src/day.js ***!
  \******************************************************************/
/*! exports provided: default, days */
/***/ (function(module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"days\", function() { return days; });\n/* harmony import */ var _interval_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./interval.js */ \"./node_modules/vega-format/node_modules/d3-time/src/interval.js\");\n/* harmony import */ var _duration_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./duration.js */ \"./node_modules/vega-format/node_modules/d3-time/src/duration.js\");\n\n\n\nvar day = Object(_interval_js__WEBPACK_IMPORTED_MODULE_0__[\"default\"])(\n  date => date.setHours(0, 0, 0, 0),\n  (date, step) => date.setDate(date.getDate() + step),\n  (start, end) => (end - start - (end.getTimezoneOffset() - start.getTimezoneOffset()) * _duration_js__WEBPACK_IMPORTED_MODULE_1__[\"durationMinute\"]) / _duration_js__WEBPACK_IMPORTED_MODULE_1__[\"durationDay\"],\n  date => date.getDate() - 1\n);\n\n/* harmony default export */ __webpack_exports__[\"default\"] = (day);\nvar days = day.range;\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvdmVnYS1mb3JtYXQvbm9kZV9tb2R1bGVzL2QzLXRpbWUvc3JjL2RheS5qcy5qcyIsInNvdXJjZXMiOlsid2VicGFjazovLy8uL25vZGVfbW9kdWxlcy92ZWdhLWZvcm1hdC9ub2RlX21vZHVsZXMvZDMtdGltZS9zcmMvZGF5LmpzPzFkZGMiXSwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IGludGVydmFsIGZyb20gXCIuL2ludGVydmFsLmpzXCI7XG5pbXBvcnQge2R1cmF0aW9uRGF5LCBkdXJhdGlvbk1pbnV0ZX0gZnJvbSBcIi4vZHVyYXRpb24uanNcIjtcblxudmFyIGRheSA9IGludGVydmFsKFxuICBkYXRlID0+IGRhdGUuc2V0SG91cnMoMCwgMCwgMCwgMCksXG4gIChkYXRlLCBzdGVwKSA9PiBkYXRlLnNldERhdGUoZGF0ZS5nZXREYXRlKCkgKyBzdGVwKSxcbiAgKHN0YXJ0LCBlbmQpID0+IChlbmQgLSBzdGFydCAtIChlbmQuZ2V0VGltZXpvbmVPZmZzZXQoKSAtIHN0YXJ0LmdldFRpbWV6b25lT2Zmc2V0KCkpICogZHVyYXRpb25NaW51dGUpIC8gZHVyYXRpb25EYXksXG4gIGRhdGUgPT4gZGF0ZS5nZXREYXRlKCkgLSAxXG4pO1xuXG5leHBvcnQgZGVmYXVsdCBkYXk7XG5leHBvcnQgdmFyIGRheXMgPSBkYXkucmFuZ2U7XG4iXSwibWFwcGluZ3MiOiJBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOyIsInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///./node_modules/vega-format/node_modules/d3-time/src/day.js\n");

/***/ }),

/***/ "./node_modules/vega-format/node_modules/d3-time/src/duration.js":
/*!***********************************************************************!*\
  !*** ./node_modules/vega-format/node_modules/d3-time/src/duration.js ***!
  \***********************************************************************/
/*! exports provided: durationSecond, durationMinute, durationHour, durationDay, durationWeek, durationMonth, durationYear */
/***/ (function(module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"durationSecond\", function() { return durationSecond; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"durationMinute\", function() { return durationMinute; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"durationHour\", function() { return durationHour; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"durationDay\", function() { return durationDay; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"durationWeek\", function() { return durationWeek; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"durationMonth\", function() { return durationMonth; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"durationYear\", function() { return durationYear; });\nconst durationSecond = 1000;\nconst durationMinute = durationSecond * 60;\nconst durationHour = durationMinute * 60;\nconst durationDay = durationHour * 24;\nconst durationWeek = durationDay * 7;\nconst durationMonth = durationDay * 30;\nconst durationYear = durationDay * 365;\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvdmVnYS1mb3JtYXQvbm9kZV9tb2R1bGVzL2QzLXRpbWUvc3JjL2R1cmF0aW9uLmpzLmpzIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL3ZlZ2EtZm9ybWF0L25vZGVfbW9kdWxlcy9kMy10aW1lL3NyYy9kdXJhdGlvbi5qcz9mNmM3Il0sInNvdXJjZXNDb250ZW50IjpbImV4cG9ydCBjb25zdCBkdXJhdGlvblNlY29uZCA9IDEwMDA7XG5leHBvcnQgY29uc3QgZHVyYXRpb25NaW51dGUgPSBkdXJhdGlvblNlY29uZCAqIDYwO1xuZXhwb3J0IGNvbnN0IGR1cmF0aW9uSG91ciA9IGR1cmF0aW9uTWludXRlICogNjA7XG5leHBvcnQgY29uc3QgZHVyYXRpb25EYXkgPSBkdXJhdGlvbkhvdXIgKiAyNDtcbmV4cG9ydCBjb25zdCBkdXJhdGlvbldlZWsgPSBkdXJhdGlvbkRheSAqIDc7XG5leHBvcnQgY29uc3QgZHVyYXRpb25Nb250aCA9IGR1cmF0aW9uRGF5ICogMzA7XG5leHBvcnQgY29uc3QgZHVyYXRpb25ZZWFyID0gZHVyYXRpb25EYXkgKiAzNjU7XG4iXSwibWFwcGluZ3MiOiJBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTsiLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///./node_modules/vega-format/node_modules/d3-time/src/duration.js\n");

/***/ }),

/***/ "./node_modules/vega-format/node_modules/d3-time/src/hour.js":
/*!*******************************************************************!*\
  !*** ./node_modules/vega-format/node_modules/d3-time/src/hour.js ***!
  \*******************************************************************/
/*! exports provided: default, hours */
/***/ (function(module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"hours\", function() { return hours; });\n/* harmony import */ var _interval_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./interval.js */ \"./node_modules/vega-format/node_modules/d3-time/src/interval.js\");\n/* harmony import */ var _duration_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./duration.js */ \"./node_modules/vega-format/node_modules/d3-time/src/duration.js\");\n\n\n\nvar hour = Object(_interval_js__WEBPACK_IMPORTED_MODULE_0__[\"default\"])(function(date) {\n  date.setTime(date - date.getMilliseconds() - date.getSeconds() * _duration_js__WEBPACK_IMPORTED_MODULE_1__[\"durationSecond\"] - date.getMinutes() * _duration_js__WEBPACK_IMPORTED_MODULE_1__[\"durationMinute\"]);\n}, function(date, step) {\n  date.setTime(+date + step * _duration_js__WEBPACK_IMPORTED_MODULE_1__[\"durationHour\"]);\n}, function(start, end) {\n  return (end - start) / _duration_js__WEBPACK_IMPORTED_MODULE_1__[\"durationHour\"];\n}, function(date) {\n  return date.getHours();\n});\n\n/* harmony default export */ __webpack_exports__[\"default\"] = (hour);\nvar hours = hour.range;\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvdmVnYS1mb3JtYXQvbm9kZV9tb2R1bGVzL2QzLXRpbWUvc3JjL2hvdXIuanMuanMiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvdmVnYS1mb3JtYXQvbm9kZV9tb2R1bGVzL2QzLXRpbWUvc3JjL2hvdXIuanM/YmJlNCJdLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgaW50ZXJ2YWwgZnJvbSBcIi4vaW50ZXJ2YWwuanNcIjtcbmltcG9ydCB7ZHVyYXRpb25Ib3VyLCBkdXJhdGlvbk1pbnV0ZSwgZHVyYXRpb25TZWNvbmR9IGZyb20gXCIuL2R1cmF0aW9uLmpzXCI7XG5cbnZhciBob3VyID0gaW50ZXJ2YWwoZnVuY3Rpb24oZGF0ZSkge1xuICBkYXRlLnNldFRpbWUoZGF0ZSAtIGRhdGUuZ2V0TWlsbGlzZWNvbmRzKCkgLSBkYXRlLmdldFNlY29uZHMoKSAqIGR1cmF0aW9uU2Vjb25kIC0gZGF0ZS5nZXRNaW51dGVzKCkgKiBkdXJhdGlvbk1pbnV0ZSk7XG59LCBmdW5jdGlvbihkYXRlLCBzdGVwKSB7XG4gIGRhdGUuc2V0VGltZSgrZGF0ZSArIHN0ZXAgKiBkdXJhdGlvbkhvdXIpO1xufSwgZnVuY3Rpb24oc3RhcnQsIGVuZCkge1xuICByZXR1cm4gKGVuZCAtIHN0YXJ0KSAvIGR1cmF0aW9uSG91cjtcbn0sIGZ1bmN0aW9uKGRhdGUpIHtcbiAgcmV0dXJuIGRhdGUuZ2V0SG91cnMoKTtcbn0pO1xuXG5leHBvcnQgZGVmYXVsdCBob3VyO1xuZXhwb3J0IHZhciBob3VycyA9IGhvdXIucmFuZ2U7XG4iXSwibWFwcGluZ3MiOiJBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOyIsInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///./node_modules/vega-format/node_modules/d3-time/src/hour.js\n");

/***/ }),

/***/ "./node_modules/vega-format/node_modules/d3-time/src/index.js":
/*!********************************************************************!*\
  !*** ./node_modules/vega-format/node_modules/d3-time/src/index.js ***!
  \********************************************************************/
/*! exports provided: timeInterval, timeMillisecond, timeMilliseconds, utcMillisecond, utcMilliseconds, timeSecond, timeSeconds, utcSecond, utcSeconds, timeMinute, timeMinutes, timeHour, timeHours, timeDay, timeDays, timeWeek, timeWeeks, timeSunday, timeSundays, timeMonday, timeMondays, timeTuesday, timeTuesdays, timeWednesday, timeWednesdays, timeThursday, timeThursdays, timeFriday, timeFridays, timeSaturday, timeSaturdays, timeMonth, timeMonths, timeYear, timeYears, utcMinute, utcMinutes, utcHour, utcHours, utcDay, utcDays, utcWeek, utcWeeks, utcSunday, utcSundays, utcMonday, utcMondays, utcTuesday, utcTuesdays, utcWednesday, utcWednesdays, utcThursday, utcThursdays, utcFriday, utcFridays, utcSaturday, utcSaturdays, utcMonth, utcMonths, utcYear, utcYears, utcTicks, utcTickInterval, timeTicks, timeTickInterval */
/***/ (function(module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _interval_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./interval.js */ \"./node_modules/vega-format/node_modules/d3-time/src/interval.js\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"timeInterval\", function() { return _interval_js__WEBPACK_IMPORTED_MODULE_0__[\"default\"]; });\n\n/* harmony import */ var _millisecond_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./millisecond.js */ \"./node_modules/vega-format/node_modules/d3-time/src/millisecond.js\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"timeMillisecond\", function() { return _millisecond_js__WEBPACK_IMPORTED_MODULE_1__[\"default\"]; });\n\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"timeMilliseconds\", function() { return _millisecond_js__WEBPACK_IMPORTED_MODULE_1__[\"milliseconds\"]; });\n\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"utcMillisecond\", function() { return _millisecond_js__WEBPACK_IMPORTED_MODULE_1__[\"default\"]; });\n\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"utcMilliseconds\", function() { return _millisecond_js__WEBPACK_IMPORTED_MODULE_1__[\"milliseconds\"]; });\n\n/* harmony import */ var _second_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./second.js */ \"./node_modules/vega-format/node_modules/d3-time/src/second.js\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"timeSecond\", function() { return _second_js__WEBPACK_IMPORTED_MODULE_2__[\"default\"]; });\n\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"timeSeconds\", function() { return _second_js__WEBPACK_IMPORTED_MODULE_2__[\"seconds\"]; });\n\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"utcSecond\", function() { return _second_js__WEBPACK_IMPORTED_MODULE_2__[\"default\"]; });\n\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"utcSeconds\", function() { return _second_js__WEBPACK_IMPORTED_MODULE_2__[\"seconds\"]; });\n\n/* harmony import */ var _minute_js__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ./minute.js */ \"./node_modules/vega-format/node_modules/d3-time/src/minute.js\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"timeMinute\", function() { return _minute_js__WEBPACK_IMPORTED_MODULE_3__[\"default\"]; });\n\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"timeMinutes\", function() { return _minute_js__WEBPACK_IMPORTED_MODULE_3__[\"minutes\"]; });\n\n/* harmony import */ var _hour_js__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ./hour.js */ \"./node_modules/vega-format/node_modules/d3-time/src/hour.js\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"timeHour\", function() { return _hour_js__WEBPACK_IMPORTED_MODULE_4__[\"default\"]; });\n\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"timeHours\", function() { return _hour_js__WEBPACK_IMPORTED_MODULE_4__[\"hours\"]; });\n\n/* harmony import */ var _day_js__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! ./day.js */ \"./node_modules/vega-format/node_modules/d3-time/src/day.js\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"timeDay\", function() { return _day_js__WEBPACK_IMPORTED_MODULE_5__[\"default\"]; });\n\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"timeDays\", function() { return _day_js__WEBPACK_IMPORTED_MODULE_5__[\"days\"]; });\n\n/* harmony import */ var _week_js__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! ./week.js */ \"./node_modules/vega-format/node_modules/d3-time/src/week.js\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"timeWeek\", function() { return _week_js__WEBPACK_IMPORTED_MODULE_6__[\"sunday\"]; });\n\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"timeWeeks\", function() { return _week_js__WEBPACK_IMPORTED_MODULE_6__[\"sundays\"]; });\n\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"timeSunday\", function() { return _week_js__WEBPACK_IMPORTED_MODULE_6__[\"sunday\"]; });\n\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"timeSundays\", function() { return _week_js__WEBPACK_IMPORTED_MODULE_6__[\"sundays\"]; });\n\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"timeMonday\", function() { return _week_js__WEBPACK_IMPORTED_MODULE_6__[\"monday\"]; });\n\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"timeMondays\", function() { return _week_js__WEBPACK_IMPORTED_MODULE_6__[\"mondays\"]; });\n\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"timeTuesday\", function() { return _week_js__WEBPACK_IMPORTED_MODULE_6__[\"tuesday\"]; });\n\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"timeTuesdays\", function() { return _week_js__WEBPACK_IMPORTED_MODULE_6__[\"tuesdays\"]; });\n\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"timeWednesday\", function() { return _week_js__WEBPACK_IMPORTED_MODULE_6__[\"wednesday\"]; });\n\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"timeWednesdays\", function() { return _week_js__WEBPACK_IMPORTED_MODULE_6__[\"wednesdays\"]; });\n\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"timeThursday\", function() { return _week_js__WEBPACK_IMPORTED_MODULE_6__[\"thursday\"]; });\n\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"timeThursdays\", function() { return _week_js__WEBPACK_IMPORTED_MODULE_6__[\"thursdays\"]; });\n\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"timeFriday\", function() { return _week_js__WEBPACK_IMPORTED_MODULE_6__[\"friday\"]; });\n\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"timeFridays\", function() { return _week_js__WEBPACK_IMPORTED_MODULE_6__[\"fridays\"]; });\n\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"timeSaturday\", function() { return _week_js__WEBPACK_IMPORTED_MODULE_6__[\"saturday\"]; });\n\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"timeSaturdays\", function() { return _week_js__WEBPACK_IMPORTED_MODULE_6__[\"saturdays\"]; });\n\n/* harmony import */ var _month_js__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! ./month.js */ \"./node_modules/vega-format/node_modules/d3-time/src/month.js\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"timeMonth\", function() { return _month_js__WEBPACK_IMPORTED_MODULE_7__[\"default\"]; });\n\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"timeMonths\", function() { return _month_js__WEBPACK_IMPORTED_MODULE_7__[\"months\"]; });\n\n/* harmony import */ var _year_js__WEBPACK_IMPORTED_MODULE_8__ = __webpack_require__(/*! ./year.js */ \"./node_modules/vega-format/node_modules/d3-time/src/year.js\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"timeYear\", function() { return _year_js__WEBPACK_IMPORTED_MODULE_8__[\"default\"]; });\n\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"timeYears\", function() { return _year_js__WEBPACK_IMPORTED_MODULE_8__[\"years\"]; });\n\n/* harmony import */ var _utcMinute_js__WEBPACK_IMPORTED_MODULE_9__ = __webpack_require__(/*! ./utcMinute.js */ \"./node_modules/vega-format/node_modules/d3-time/src/utcMinute.js\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"utcMinute\", function() { return _utcMinute_js__WEBPACK_IMPORTED_MODULE_9__[\"default\"]; });\n\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"utcMinutes\", function() { return _utcMinute_js__WEBPACK_IMPORTED_MODULE_9__[\"utcMinutes\"]; });\n\n/* harmony import */ var _utcHour_js__WEBPACK_IMPORTED_MODULE_10__ = __webpack_require__(/*! ./utcHour.js */ \"./node_modules/vega-format/node_modules/d3-time/src/utcHour.js\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"utcHour\", function() { return _utcHour_js__WEBPACK_IMPORTED_MODULE_10__[\"default\"]; });\n\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"utcHours\", function() { return _utcHour_js__WEBPACK_IMPORTED_MODULE_10__[\"utcHours\"]; });\n\n/* harmony import */ var _utcDay_js__WEBPACK_IMPORTED_MODULE_11__ = __webpack_require__(/*! ./utcDay.js */ \"./node_modules/vega-format/node_modules/d3-time/src/utcDay.js\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"utcDay\", function() { return _utcDay_js__WEBPACK_IMPORTED_MODULE_11__[\"default\"]; });\n\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"utcDays\", function() { return _utcDay_js__WEBPACK_IMPORTED_MODULE_11__[\"utcDays\"]; });\n\n/* harmony import */ var _utcWeek_js__WEBPACK_IMPORTED_MODULE_12__ = __webpack_require__(/*! ./utcWeek.js */ \"./node_modules/vega-format/node_modules/d3-time/src/utcWeek.js\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"utcWeek\", function() { return _utcWeek_js__WEBPACK_IMPORTED_MODULE_12__[\"utcSunday\"]; });\n\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"utcWeeks\", function() { return _utcWeek_js__WEBPACK_IMPORTED_MODULE_12__[\"utcSundays\"]; });\n\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"utcSunday\", function() { return _utcWeek_js__WEBPACK_IMPORTED_MODULE_12__[\"utcSunday\"]; });\n\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"utcSundays\", function() { return _utcWeek_js__WEBPACK_IMPORTED_MODULE_12__[\"utcSundays\"]; });\n\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"utcMonday\", function() { return _utcWeek_js__WEBPACK_IMPORTED_MODULE_12__[\"utcMonday\"]; });\n\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"utcMondays\", function() { return _utcWeek_js__WEBPACK_IMPORTED_MODULE_12__[\"utcMondays\"]; });\n\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"utcTuesday\", function() { return _utcWeek_js__WEBPACK_IMPORTED_MODULE_12__[\"utcTuesday\"]; });\n\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"utcTuesdays\", function() { return _utcWeek_js__WEBPACK_IMPORTED_MODULE_12__[\"utcTuesdays\"]; });\n\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"utcWednesday\", function() { return _utcWeek_js__WEBPACK_IMPORTED_MODULE_12__[\"utcWednesday\"]; });\n\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"utcWednesdays\", function() { return _utcWeek_js__WEBPACK_IMPORTED_MODULE_12__[\"utcWednesdays\"]; });\n\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"utcThursday\", function() { return _utcWeek_js__WEBPACK_IMPORTED_MODULE_12__[\"utcThursday\"]; });\n\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"utcThursdays\", function() { return _utcWeek_js__WEBPACK_IMPORTED_MODULE_12__[\"utcThursdays\"]; });\n\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"utcFriday\", function() { return _utcWeek_js__WEBPACK_IMPORTED_MODULE_12__[\"utcFriday\"]; });\n\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"utcFridays\", function() { return _utcWeek_js__WEBPACK_IMPORTED_MODULE_12__[\"utcFridays\"]; });\n\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"utcSaturday\", function() { return _utcWeek_js__WEBPACK_IMPORTED_MODULE_12__[\"utcSaturday\"]; });\n\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"utcSaturdays\", function() { return _utcWeek_js__WEBPACK_IMPORTED_MODULE_12__[\"utcSaturdays\"]; });\n\n/* harmony import */ var _utcMonth_js__WEBPACK_IMPORTED_MODULE_13__ = __webpack_require__(/*! ./utcMonth.js */ \"./node_modules/vega-format/node_modules/d3-time/src/utcMonth.js\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"utcMonth\", function() { return _utcMonth_js__WEBPACK_IMPORTED_MODULE_13__[\"default\"]; });\n\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"utcMonths\", function() { return _utcMonth_js__WEBPACK_IMPORTED_MODULE_13__[\"utcMonths\"]; });\n\n/* harmony import */ var _utcYear_js__WEBPACK_IMPORTED_MODULE_14__ = __webpack_require__(/*! ./utcYear.js */ \"./node_modules/vega-format/node_modules/d3-time/src/utcYear.js\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"utcYear\", function() { return _utcYear_js__WEBPACK_IMPORTED_MODULE_14__[\"default\"]; });\n\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"utcYears\", function() { return _utcYear_js__WEBPACK_IMPORTED_MODULE_14__[\"utcYears\"]; });\n\n/* harmony import */ var _ticks_js__WEBPACK_IMPORTED_MODULE_15__ = __webpack_require__(/*! ./ticks.js */ \"./node_modules/vega-format/node_modules/d3-time/src/ticks.js\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"utcTicks\", function() { return _ticks_js__WEBPACK_IMPORTED_MODULE_15__[\"utcTicks\"]; });\n\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"utcTickInterval\", function() { return _ticks_js__WEBPACK_IMPORTED_MODULE_15__[\"utcTickInterval\"]; });\n\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"timeTicks\", function() { return _ticks_js__WEBPACK_IMPORTED_MODULE_15__[\"timeTicks\"]; });\n\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"timeTickInterval\", function() { return _ticks_js__WEBPACK_IMPORTED_MODULE_15__[\"timeTickInterval\"]; });\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,[encoded data, 4588 characters]\n//# sourceURL=webpack-internal:///./node_modules/vega-format/node_modules/d3-time/src/index.js\n");

/***/ }),

/***/ "./node_modules/vega-format/node_modules/d3-time/src/interval.js":
/*!***********************************************************************!*\
  !*** ./node_modules/vega-format/node_modules/d3-time/src/interval.js ***!
  \***********************************************************************/
/*! exports provided: default */
/***/ (function(module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"default\", function() { return newInterval; });\nvar t0 = new Date,\n    t1 = new Date;\n\nfunction newInterval(floori, offseti, count, field) {\n\n  function interval(date) {\n    return floori(date = arguments.length === 0 ? new Date : new Date(+date)), date;\n  }\n\n  interval.floor = function(date) {\n    return floori(date = new Date(+date)), date;\n  };\n\n  interval.ceil = function(date) {\n    return floori(date = new Date(date - 1)), offseti(date, 1), floori(date), date;\n  };\n\n  interval.round = function(date) {\n    var d0 = interval(date),\n        d1 = interval.ceil(date);\n    return date - d0 < d1 - date ? d0 : d1;\n  };\n\n  interval.offset = function(date, step) {\n    return offseti(date = new Date(+date), step == null ? 1 : Math.floor(step)), date;\n  };\n\n  interval.range = function(start, stop, step) {\n    var range = [], previous;\n    start = interval.ceil(start);\n    step = step == null ? 1 : Math.floor(step);\n    if (!(start < stop) || !(step > 0)) return range; // also handles Invalid Date\n    do range.push(previous = new Date(+start)), offseti(start, step), floori(start);\n    while (previous < start && start < stop);\n    return range;\n  };\n\n  interval.filter = function(test) {\n    return newInterval(function(date) {\n      if (date >= date) while (floori(date), !test(date)) date.setTime(date - 1);\n    }, function(date, step) {\n      if (date >= date) {\n        if (step < 0) while (++step <= 0) {\n          while (offseti(date, -1), !test(date)) {} // eslint-disable-line no-empty\n        } else while (--step >= 0) {\n          while (offseti(date, +1), !test(date)) {} // eslint-disable-line no-empty\n        }\n      }\n    });\n  };\n\n  if (count) {\n    interval.count = function(start, end) {\n      t0.setTime(+start), t1.setTime(+end);\n      floori(t0), floori(t1);\n      return Math.floor(count(t0, t1));\n    };\n\n    interval.every = function(step) {\n      step = Math.floor(step);\n      return !isFinite(step) || !(step > 0) ? null\n          : !(step > 1) ? interval\n          : interval.filter(field\n              ? function(d) { return field(d) % step === 0; }\n              : function(d) { return interval.count(0, d) % step === 0; });\n    };\n  }\n\n  return interval;\n}\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvdmVnYS1mb3JtYXQvbm9kZV9tb2R1bGVzL2QzLXRpbWUvc3JjL2ludGVydmFsLmpzLmpzIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL3ZlZ2EtZm9ybWF0L25vZGVfbW9kdWxlcy9kMy10aW1lL3NyYy9pbnRlcnZhbC5qcz84MTBjIl0sInNvdXJjZXNDb250ZW50IjpbInZhciB0MCA9IG5ldyBEYXRlLFxuICAgIHQxID0gbmV3IERhdGU7XG5cbmV4cG9ydCBkZWZhdWx0IGZ1bmN0aW9uIG5ld0ludGVydmFsKGZsb29yaSwgb2Zmc2V0aSwgY291bnQsIGZpZWxkKSB7XG5cbiAgZnVuY3Rpb24gaW50ZXJ2YWwoZGF0ZSkge1xuICAgIHJldHVybiBmbG9vcmkoZGF0ZSA9IGFyZ3VtZW50cy5sZW5ndGggPT09IDAgPyBuZXcgRGF0ZSA6IG5ldyBEYXRlKCtkYXRlKSksIGRhdGU7XG4gIH1cblxuICBpbnRlcnZhbC5mbG9vciA9IGZ1bmN0aW9uKGRhdGUpIHtcbiAgICByZXR1cm4gZmxvb3JpKGRhdGUgPSBuZXcgRGF0ZSgrZGF0ZSkpLCBkYXRlO1xuICB9O1xuXG4gIGludGVydmFsLmNlaWwgPSBmdW5jdGlvbihkYXRlKSB7XG4gICAgcmV0dXJuIGZsb29yaShkYXRlID0gbmV3IERhdGUoZGF0ZSAtIDEpKSwgb2Zmc2V0aShkYXRlLCAxKSwgZmxvb3JpKGRhdGUpLCBkYXRlO1xuICB9O1xuXG4gIGludGVydmFsLnJvdW5kID0gZnVuY3Rpb24oZGF0ZSkge1xuICAgIHZhciBkMCA9IGludGVydmFsKGRhdGUpLFxuICAgICAgICBkMSA9IGludGVydmFsLmNlaWwoZGF0ZSk7XG4gICAgcmV0dXJuIGRhdGUgLSBkMCA8IGQxIC0gZGF0ZSA/IGQwIDogZDE7XG4gIH07XG5cbiAgaW50ZXJ2YWwub2Zmc2V0ID0gZnVuY3Rpb24oZGF0ZSwgc3RlcCkge1xuICAgIHJldHVybiBvZmZzZXRpKGRhdGUgPSBuZXcgRGF0ZSgrZGF0ZSksIHN0ZXAgPT0gbnVsbCA/IDEgOiBNYXRoLmZsb29yKHN0ZXApKSwgZGF0ZTtcbiAgfTtcblxuICBpbnRlcnZhbC5yYW5nZSA9IGZ1bmN0aW9uKHN0YXJ0LCBzdG9wLCBzdGVwKSB7XG4gICAgdmFyIHJhbmdlID0gW10sIHByZXZpb3VzO1xuICAgIHN0YXJ0ID0gaW50ZXJ2YWwuY2VpbChzdGFydCk7XG4gICAgc3RlcCA9IHN0ZXAgPT0gbnVsbCA/IDEgOiBNYXRoLmZsb29yKHN0ZXApO1xuICAgIGlmICghKHN0YXJ0IDwgc3RvcCkgfHwgIShzdGVwID4gMCkpIHJldHVybiByYW5nZTsgLy8gYWxzbyBoYW5kbGVzIEludmFsaWQgRGF0ZVxuICAgIGRvIHJhbmdlLnB1c2gocHJldmlvdXMgPSBuZXcgRGF0ZSgrc3RhcnQpKSwgb2Zmc2V0aShzdGFydCwgc3RlcCksIGZsb29yaShzdGFydCk7XG4gICAgd2hpbGUgKHByZXZpb3VzIDwgc3RhcnQgJiYgc3RhcnQgPCBzdG9wKTtcbiAgICByZXR1cm4gcmFuZ2U7XG4gIH07XG5cbiAgaW50ZXJ2YWwuZmlsdGVyID0gZnVuY3Rpb24odGVzdCkge1xuICAgIHJldHVybiBuZXdJbnRlcnZhbChmdW5jdGlvbihkYXRlKSB7XG4gICAgICBpZiAoZGF0ZSA+PSBkYXRlKSB3aGlsZSAoZmxvb3JpKGRhdGUpLCAhdGVzdChkYXRlKSkgZGF0ZS5zZXRUaW1lKGRhdGUgLSAxKTtcbiAgICB9LCBmdW5jdGlvbihkYXRlLCBzdGVwKSB7XG4gICAgICBpZiAoZGF0ZSA+PSBkYXRlKSB7XG4gICAgICAgIGlmIChzdGVwIDwgMCkgd2hpbGUgKCsrc3RlcCA8PSAwKSB7XG4gICAgICAgICAgd2hpbGUgKG9mZnNldGkoZGF0ZSwgLTEpLCAhdGVzdChkYXRlKSkge30gLy8gZXNsaW50LWRpc2FibGUtbGluZSBuby1lbXB0eVxuICAgICAgICB9IGVsc2Ugd2hpbGUgKC0tc3RlcCA+PSAwKSB7XG4gICAgICAgICAgd2hpbGUgKG9mZnNldGkoZGF0ZSwgKzEpLCAhdGVzdChkYXRlKSkge30gLy8gZXNsaW50LWRpc2FibGUtbGluZSBuby1lbXB0eVxuICAgICAgICB9XG4gICAgICB9XG4gICAgfSk7XG4gIH07XG5cbiAgaWYgKGNvdW50KSB7XG4gICAgaW50ZXJ2YWwuY291bnQgPSBmdW5jdGlvbihzdGFydCwgZW5kKSB7XG4gICAgICB0MC5zZXRUaW1lKCtzdGFydCksIHQxLnNldFRpbWUoK2VuZCk7XG4gICAgICBmbG9vcmkodDApLCBmbG9vcmkodDEpO1xuICAgICAgcmV0dXJuIE1hdGguZmxvb3IoY291bnQodDAsIHQxKSk7XG4gICAgfTtcblxuICAgIGludGVydmFsLmV2ZXJ5ID0gZnVuY3Rpb24oc3RlcCkge1xuICAgICAgc3RlcCA9IE1hdGguZmxvb3Ioc3RlcCk7XG4gICAgICByZXR1cm4gIWlzRmluaXRlKHN0ZXApIHx8ICEoc3RlcCA+IDApID8gbnVsbFxuICAgICAgICAgIDogIShzdGVwID4gMSkgPyBpbnRlcnZhbFxuICAgICAgICAgIDogaW50ZXJ2YWwuZmlsdGVyKGZpZWxkXG4gICAgICAgICAgICAgID8gZnVuY3Rpb24oZCkgeyByZXR1cm4gZmllbGQoZCkgJSBzdGVwID09PSAwOyB9XG4gICAgICAgICAgICAgIDogZnVuY3Rpb24oZCkgeyByZXR1cm4gaW50ZXJ2YWwuY291bnQoMCwgZCkgJSBzdGVwID09PSAwOyB9KTtcbiAgICB9O1xuICB9XG5cbiAgcmV0dXJuIGludGVydmFsO1xufVxuIl0sIm1hcHBpbmdzIjoiQUFBQTtBQUFBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7Iiwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///./node_modules/vega-format/node_modules/d3-time/src/interval.js\n");

/***/ }),

/***/ "./node_modules/vega-format/node_modules/d3-time/src/millisecond.js":
/*!**************************************************************************!*\
  !*** ./node_modules/vega-format/node_modules/d3-time/src/millisecond.js ***!
  \**************************************************************************/
/*! exports provided: default, milliseconds */
/***/ (function(module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"milliseconds\", function() { return milliseconds; });\n/* harmony import */ var _interval_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./interval.js */ \"./node_modules/vega-format/node_modules/d3-time/src/interval.js\");\n\n\nvar millisecond = Object(_interval_js__WEBPACK_IMPORTED_MODULE_0__[\"default\"])(function() {\n  // noop\n}, function(date, step) {\n  date.setTime(+date + step);\n}, function(start, end) {\n  return end - start;\n});\n\n// An optimized implementation for this simple case.\nmillisecond.every = function(k) {\n  k = Math.floor(k);\n  if (!isFinite(k) || !(k > 0)) return null;\n  if (!(k > 1)) return millisecond;\n  return Object(_interval_js__WEBPACK_IMPORTED_MODULE_0__[\"default\"])(function(date) {\n    date.setTime(Math.floor(date / k) * k);\n  }, function(date, step) {\n    date.setTime(+date + step * k);\n  }, function(start, end) {\n    return (end - start) / k;\n  });\n};\n\n/* harmony default export */ __webpack_exports__[\"default\"] = (millisecond);\nvar milliseconds = millisecond.range;\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvdmVnYS1mb3JtYXQvbm9kZV9tb2R1bGVzL2QzLXRpbWUvc3JjL21pbGxpc2Vjb25kLmpzLmpzIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL3ZlZ2EtZm9ybWF0L25vZGVfbW9kdWxlcy9kMy10aW1lL3NyYy9taWxsaXNlY29uZC5qcz9mNTg0Il0sInNvdXJjZXNDb250ZW50IjpbImltcG9ydCBpbnRlcnZhbCBmcm9tIFwiLi9pbnRlcnZhbC5qc1wiO1xuXG52YXIgbWlsbGlzZWNvbmQgPSBpbnRlcnZhbChmdW5jdGlvbigpIHtcbiAgLy8gbm9vcFxufSwgZnVuY3Rpb24oZGF0ZSwgc3RlcCkge1xuICBkYXRlLnNldFRpbWUoK2RhdGUgKyBzdGVwKTtcbn0sIGZ1bmN0aW9uKHN0YXJ0LCBlbmQpIHtcbiAgcmV0dXJuIGVuZCAtIHN0YXJ0O1xufSk7XG5cbi8vIEFuIG9wdGltaXplZCBpbXBsZW1lbnRhdGlvbiBmb3IgdGhpcyBzaW1wbGUgY2FzZS5cbm1pbGxpc2Vjb25kLmV2ZXJ5ID0gZnVuY3Rpb24oaykge1xuICBrID0gTWF0aC5mbG9vcihrKTtcbiAgaWYgKCFpc0Zpbml0ZShrKSB8fCAhKGsgPiAwKSkgcmV0dXJuIG51bGw7XG4gIGlmICghKGsgPiAxKSkgcmV0dXJuIG1pbGxpc2Vjb25kO1xuICByZXR1cm4gaW50ZXJ2YWwoZnVuY3Rpb24oZGF0ZSkge1xuICAgIGRhdGUuc2V0VGltZShNYXRoLmZsb29yKGRhdGUgLyBrKSAqIGspO1xuICB9LCBmdW5jdGlvbihkYXRlLCBzdGVwKSB7XG4gICAgZGF0ZS5zZXRUaW1lKCtkYXRlICsgc3RlcCAqIGspO1xuICB9LCBmdW5jdGlvbihzdGFydCwgZW5kKSB7XG4gICAgcmV0dXJuIChlbmQgLSBzdGFydCkgLyBrO1xuICB9KTtcbn07XG5cbmV4cG9ydCBkZWZhdWx0IG1pbGxpc2Vjb25kO1xuZXhwb3J0IHZhciBtaWxsaXNlY29uZHMgPSBtaWxsaXNlY29uZC5yYW5nZTtcbiJdLCJtYXBwaW5ncyI6IkFBQUE7QUFBQTtBQUFBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTsiLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///./node_modules/vega-format/node_modules/d3-time/src/millisecond.js\n");

/***/ }),

/***/ "./node_modules/vega-format/node_modules/d3-time/src/minute.js":
/*!*********************************************************************!*\
  !*** ./node_modules/vega-format/node_modules/d3-time/src/minute.js ***!
  \*********************************************************************/
/*! exports provided: default, minutes */
/***/ (function(module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"minutes\", function() { return minutes; });\n/* harmony import */ var _interval_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./interval.js */ \"./node_modules/vega-format/node_modules/d3-time/src/interval.js\");\n/* harmony import */ var _duration_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./duration.js */ \"./node_modules/vega-format/node_modules/d3-time/src/duration.js\");\n\n\n\nvar minute = Object(_interval_js__WEBPACK_IMPORTED_MODULE_0__[\"default\"])(function(date) {\n  date.setTime(date - date.getMilliseconds() - date.getSeconds() * _duration_js__WEBPACK_IMPORTED_MODULE_1__[\"durationSecond\"]);\n}, function(date, step) {\n  date.setTime(+date + step * _duration_js__WEBPACK_IMPORTED_MODULE_1__[\"durationMinute\"]);\n}, function(start, end) {\n  return (end - start) / _duration_js__WEBPACK_IMPORTED_MODULE_1__[\"durationMinute\"];\n}, function(date) {\n  return date.getMinutes();\n});\n\n/* harmony default export */ __webpack_exports__[\"default\"] = (minute);\nvar minutes = minute.range;\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvdmVnYS1mb3JtYXQvbm9kZV9tb2R1bGVzL2QzLXRpbWUvc3JjL21pbnV0ZS5qcy5qcyIsInNvdXJjZXMiOlsid2VicGFjazovLy8uL25vZGVfbW9kdWxlcy92ZWdhLWZvcm1hdC9ub2RlX21vZHVsZXMvZDMtdGltZS9zcmMvbWludXRlLmpzP2Q2MjIiXSwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IGludGVydmFsIGZyb20gXCIuL2ludGVydmFsLmpzXCI7XG5pbXBvcnQge2R1cmF0aW9uTWludXRlLCBkdXJhdGlvblNlY29uZH0gZnJvbSBcIi4vZHVyYXRpb24uanNcIjtcblxudmFyIG1pbnV0ZSA9IGludGVydmFsKGZ1bmN0aW9uKGRhdGUpIHtcbiAgZGF0ZS5zZXRUaW1lKGRhdGUgLSBkYXRlLmdldE1pbGxpc2Vjb25kcygpIC0gZGF0ZS5nZXRTZWNvbmRzKCkgKiBkdXJhdGlvblNlY29uZCk7XG59LCBmdW5jdGlvbihkYXRlLCBzdGVwKSB7XG4gIGRhdGUuc2V0VGltZSgrZGF0ZSArIHN0ZXAgKiBkdXJhdGlvbk1pbnV0ZSk7XG59LCBmdW5jdGlvbihzdGFydCwgZW5kKSB7XG4gIHJldHVybiAoZW5kIC0gc3RhcnQpIC8gZHVyYXRpb25NaW51dGU7XG59LCBmdW5jdGlvbihkYXRlKSB7XG4gIHJldHVybiBkYXRlLmdldE1pbnV0ZXMoKTtcbn0pO1xuXG5leHBvcnQgZGVmYXVsdCBtaW51dGU7XG5leHBvcnQgdmFyIG1pbnV0ZXMgPSBtaW51dGUucmFuZ2U7XG4iXSwibWFwcGluZ3MiOiJBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOyIsInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///./node_modules/vega-format/node_modules/d3-time/src/minute.js\n");

/***/ }),

/***/ "./node_modules/vega-format/node_modules/d3-time/src/month.js":
/*!********************************************************************!*\
  !*** ./node_modules/vega-format/node_modules/d3-time/src/month.js ***!
  \********************************************************************/
/*! exports provided: default, months */
/***/ (function(module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"months\", function() { return months; });\n/* harmony import */ var _interval_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./interval.js */ \"./node_modules/vega-format/node_modules/d3-time/src/interval.js\");\n\n\nvar month = Object(_interval_js__WEBPACK_IMPORTED_MODULE_0__[\"default\"])(function(date) {\n  date.setDate(1);\n  date.setHours(0, 0, 0, 0);\n}, function(date, step) {\n  date.setMonth(date.getMonth() + step);\n}, function(start, end) {\n  return end.getMonth() - start.getMonth() + (end.getFullYear() - start.getFullYear()) * 12;\n}, function(date) {\n  return date.getMonth();\n});\n\n/* harmony default export */ __webpack_exports__[\"default\"] = (month);\nvar months = month.range;\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvdmVnYS1mb3JtYXQvbm9kZV9tb2R1bGVzL2QzLXRpbWUvc3JjL21vbnRoLmpzLmpzIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL3ZlZ2EtZm9ybWF0L25vZGVfbW9kdWxlcy9kMy10aW1lL3NyYy9tb250aC5qcz82ODk5Il0sInNvdXJjZXNDb250ZW50IjpbImltcG9ydCBpbnRlcnZhbCBmcm9tIFwiLi9pbnRlcnZhbC5qc1wiO1xuXG52YXIgbW9udGggPSBpbnRlcnZhbChmdW5jdGlvbihkYXRlKSB7XG4gIGRhdGUuc2V0RGF0ZSgxKTtcbiAgZGF0ZS5zZXRIb3VycygwLCAwLCAwLCAwKTtcbn0sIGZ1bmN0aW9uKGRhdGUsIHN0ZXApIHtcbiAgZGF0ZS5zZXRNb250aChkYXRlLmdldE1vbnRoKCkgKyBzdGVwKTtcbn0sIGZ1bmN0aW9uKHN0YXJ0LCBlbmQpIHtcbiAgcmV0dXJuIGVuZC5nZXRNb250aCgpIC0gc3RhcnQuZ2V0TW9udGgoKSArIChlbmQuZ2V0RnVsbFllYXIoKSAtIHN0YXJ0LmdldEZ1bGxZZWFyKCkpICogMTI7XG59LCBmdW5jdGlvbihkYXRlKSB7XG4gIHJldHVybiBkYXRlLmdldE1vbnRoKCk7XG59KTtcblxuZXhwb3J0IGRlZmF1bHQgbW9udGg7XG5leHBvcnQgdmFyIG1vbnRocyA9IG1vbnRoLnJhbmdlO1xuIl0sIm1hcHBpbmdzIjoiQUFBQTtBQUFBO0FBQUE7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7Iiwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///./node_modules/vega-format/node_modules/d3-time/src/month.js\n");

/***/ }),

/***/ "./node_modules/vega-format/node_modules/d3-time/src/second.js":
/*!*********************************************************************!*\
  !*** ./node_modules/vega-format/node_modules/d3-time/src/second.js ***!
  \*********************************************************************/
/*! exports provided: default, seconds */
/***/ (function(module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"seconds\", function() { return seconds; });\n/* harmony import */ var _interval_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./interval.js */ \"./node_modules/vega-format/node_modules/d3-time/src/interval.js\");\n/* harmony import */ var _duration_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./duration.js */ \"./node_modules/vega-format/node_modules/d3-time/src/duration.js\");\n\n\n\nvar second = Object(_interval_js__WEBPACK_IMPORTED_MODULE_0__[\"default\"])(function(date) {\n  date.setTime(date - date.getMilliseconds());\n}, function(date, step) {\n  date.setTime(+date + step * _duration_js__WEBPACK_IMPORTED_MODULE_1__[\"durationSecond\"]);\n}, function(start, end) {\n  return (end - start) / _duration_js__WEBPACK_IMPORTED_MODULE_1__[\"durationSecond\"];\n}, function(date) {\n  return date.getUTCSeconds();\n});\n\n/* harmony default export */ __webpack_exports__[\"default\"] = (second);\nvar seconds = second.range;\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvdmVnYS1mb3JtYXQvbm9kZV9tb2R1bGVzL2QzLXRpbWUvc3JjL3NlY29uZC5qcy5qcyIsInNvdXJjZXMiOlsid2VicGFjazovLy8uL25vZGVfbW9kdWxlcy92ZWdhLWZvcm1hdC9ub2RlX21vZHVsZXMvZDMtdGltZS9zcmMvc2Vjb25kLmpzPzU1NTMiXSwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IGludGVydmFsIGZyb20gXCIuL2ludGVydmFsLmpzXCI7XG5pbXBvcnQge2R1cmF0aW9uU2Vjb25kfSBmcm9tIFwiLi9kdXJhdGlvbi5qc1wiO1xuXG52YXIgc2Vjb25kID0gaW50ZXJ2YWwoZnVuY3Rpb24oZGF0ZSkge1xuICBkYXRlLnNldFRpbWUoZGF0ZSAtIGRhdGUuZ2V0TWlsbGlzZWNvbmRzKCkpO1xufSwgZnVuY3Rpb24oZGF0ZSwgc3RlcCkge1xuICBkYXRlLnNldFRpbWUoK2RhdGUgKyBzdGVwICogZHVyYXRpb25TZWNvbmQpO1xufSwgZnVuY3Rpb24oc3RhcnQsIGVuZCkge1xuICByZXR1cm4gKGVuZCAtIHN0YXJ0KSAvIGR1cmF0aW9uU2Vjb25kO1xufSwgZnVuY3Rpb24oZGF0ZSkge1xuICByZXR1cm4gZGF0ZS5nZXRVVENTZWNvbmRzKCk7XG59KTtcblxuZXhwb3J0IGRlZmF1bHQgc2Vjb25kO1xuZXhwb3J0IHZhciBzZWNvbmRzID0gc2Vjb25kLnJhbmdlO1xuIl0sIm1hcHBpbmdzIjoiQUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTsiLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///./node_modules/vega-format/node_modules/d3-time/src/second.js\n");

/***/ }),

/***/ "./node_modules/vega-format/node_modules/d3-time/src/ticks.js":
/*!********************************************************************!*\
  !*** ./node_modules/vega-format/node_modules/d3-time/src/ticks.js ***!
  \********************************************************************/
/*! exports provided: utcTicks, utcTickInterval, timeTicks, timeTickInterval */
/***/ (function(module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"utcTicks\", function() { return utcTicks; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"utcTickInterval\", function() { return utcTickInterval; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"timeTicks\", function() { return timeTicks; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"timeTickInterval\", function() { return timeTickInterval; });\n/* harmony import */ var d3_array__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! d3-array */ \"./node_modules/d3-array/src/index.js\");\n/* harmony import */ var _duration_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./duration.js */ \"./node_modules/vega-format/node_modules/d3-time/src/duration.js\");\n/* harmony import */ var _millisecond_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./millisecond.js */ \"./node_modules/vega-format/node_modules/d3-time/src/millisecond.js\");\n/* harmony import */ var _second_js__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ./second.js */ \"./node_modules/vega-format/node_modules/d3-time/src/second.js\");\n/* harmony import */ var _minute_js__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ./minute.js */ \"./node_modules/vega-format/node_modules/d3-time/src/minute.js\");\n/* harmony import */ var _hour_js__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! ./hour.js */ \"./node_modules/vega-format/node_modules/d3-time/src/hour.js\");\n/* harmony import */ var _day_js__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! ./day.js */ \"./node_modules/vega-format/node_modules/d3-time/src/day.js\");\n/* harmony import */ var _week_js__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! ./week.js */ \"./node_modules/vega-format/node_modules/d3-time/src/week.js\");\n/* harmony import */ var _month_js__WEBPACK_IMPORTED_MODULE_8__ = __webpack_require__(/*! ./month.js */ \"./node_modules/vega-format/node_modules/d3-time/src/month.js\");\n/* harmony import */ var _year_js__WEBPACK_IMPORTED_MODULE_9__ = __webpack_require__(/*! ./year.js */ \"./node_modules/vega-format/node_modules/d3-time/src/year.js\");\n/* harmony import */ var _utcMinute_js__WEBPACK_IMPORTED_MODULE_10__ = __webpack_require__(/*! ./utcMinute.js */ \"./node_modules/vega-format/node_modules/d3-time/src/utcMinute.js\");\n/* harmony import */ var _utcHour_js__WEBPACK_IMPORTED_MODULE_11__ = __webpack_require__(/*! ./utcHour.js */ \"./node_modules/vega-format/node_modules/d3-time/src/utcHour.js\");\n/* harmony import */ var _utcDay_js__WEBPACK_IMPORTED_MODULE_12__ = __webpack_require__(/*! ./utcDay.js */ \"./node_modules/vega-format/node_modules/d3-time/src/utcDay.js\");\n/* harmony import */ var _utcWeek_js__WEBPACK_IMPORTED_MODULE_13__ = __webpack_require__(/*! ./utcWeek.js */ \"./node_modules/vega-format/node_modules/d3-time/src/utcWeek.js\");\n/* harmony import */ var _utcMonth_js__WEBPACK_IMPORTED_MODULE_14__ = __webpack_require__(/*! ./utcMonth.js */ \"./node_modules/vega-format/node_modules/d3-time/src/utcMonth.js\");\n/* harmony import */ var _utcYear_js__WEBPACK_IMPORTED_MODULE_15__ = __webpack_require__(/*! ./utcYear.js */ \"./node_modules/vega-format/node_modules/d3-time/src/utcYear.js\");\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\nfunction ticker(year, month, week, day, hour, minute) {\n\n  const tickIntervals = [\n    [_second_js__WEBPACK_IMPORTED_MODULE_3__[\"default\"],  1,      _duration_js__WEBPACK_IMPORTED_MODULE_1__[\"durationSecond\"]],\n    [_second_js__WEBPACK_IMPORTED_MODULE_3__[\"default\"],  5,  5 * _duration_js__WEBPACK_IMPORTED_MODULE_1__[\"durationSecond\"]],\n    [_second_js__WEBPACK_IMPORTED_MODULE_3__[\"default\"], 15, 15 * _duration_js__WEBPACK_IMPORTED_MODULE_1__[\"durationSecond\"]],\n    [_second_js__WEBPACK_IMPORTED_MODULE_3__[\"default\"], 30, 30 * _duration_js__WEBPACK_IMPORTED_MODULE_1__[\"durationSecond\"]],\n    [minute,  1,      _duration_js__WEBPACK_IMPORTED_MODULE_1__[\"durationMinute\"]],\n    [minute,  5,  5 * _duration_js__WEBPACK_IMPORTED_MODULE_1__[\"durationMinute\"]],\n    [minute, 15, 15 * _duration_js__WEBPACK_IMPORTED_MODULE_1__[\"durationMinute\"]],\n    [minute, 30, 30 * _duration_js__WEBPACK_IMPORTED_MODULE_1__[\"durationMinute\"]],\n    [  hour,  1,      _duration_js__WEBPACK_IMPORTED_MODULE_1__[\"durationHour\"]  ],\n    [  hour,  3,  3 * _duration_js__WEBPACK_IMPORTED_MODULE_1__[\"durationHour\"]  ],\n    [  hour,  6,  6 * _duration_js__WEBPACK_IMPORTED_MODULE_1__[\"durationHour\"]  ],\n    [  hour, 12, 12 * _duration_js__WEBPACK_IMPORTED_MODULE_1__[\"durationHour\"]  ],\n    [   day,  1,      _duration_js__WEBPACK_IMPORTED_MODULE_1__[\"durationDay\"]   ],\n    [   day,  2,  2 * _duration_js__WEBPACK_IMPORTED_MODULE_1__[\"durationDay\"]   ],\n    [  week,  1,      _duration_js__WEBPACK_IMPORTED_MODULE_1__[\"durationWeek\"]  ],\n    [ month,  1,      _duration_js__WEBPACK_IMPORTED_MODULE_1__[\"durationMonth\"] ],\n    [ month,  3,  3 * _duration_js__WEBPACK_IMPORTED_MODULE_1__[\"durationMonth\"] ],\n    [  year,  1,      _duration_js__WEBPACK_IMPORTED_MODULE_1__[\"durationYear\"]  ]\n  ];\n\n  function ticks(start, stop, count) {\n    const reverse = stop < start;\n    if (reverse) [start, stop] = [stop, start];\n    const interval = count && typeof count.range === \"function\" ? count : tickInterval(start, stop, count);\n    const ticks = interval ? interval.range(start, +stop + 1) : []; // inclusive stop\n    return reverse ? ticks.reverse() : ticks;\n  }\n\n  function tickInterval(start, stop, count) {\n    const target = Math.abs(stop - start) / count;\n    const i = Object(d3_array__WEBPACK_IMPORTED_MODULE_0__[\"bisector\"])(([,, step]) => step).right(tickIntervals, target);\n    if (i === tickIntervals.length) return year.every(Object(d3_array__WEBPACK_IMPORTED_MODULE_0__[\"tickStep\"])(start / _duration_js__WEBPACK_IMPORTED_MODULE_1__[\"durationYear\"], stop / _duration_js__WEBPACK_IMPORTED_MODULE_1__[\"durationYear\"], count));\n    if (i === 0) return _millisecond_js__WEBPACK_IMPORTED_MODULE_2__[\"default\"].every(Math.max(Object(d3_array__WEBPACK_IMPORTED_MODULE_0__[\"tickStep\"])(start, stop, count), 1));\n    const [t, step] = tickIntervals[target / tickIntervals[i - 1][2] < tickIntervals[i][2] / target ? i - 1 : i];\n    return t.every(step);\n  }\n\n  return [ticks, tickInterval];\n}\n\nconst [utcTicks, utcTickInterval] = ticker(_utcYear_js__WEBPACK_IMPORTED_MODULE_15__[\"default\"], _utcMonth_js__WEBPACK_IMPORTED_MODULE_14__[\"default\"], _utcWeek_js__WEBPACK_IMPORTED_MODULE_13__[\"utcSunday\"], _utcDay_js__WEBPACK_IMPORTED_MODULE_12__[\"default\"], _utcHour_js__WEBPACK_IMPORTED_MODULE_11__[\"default\"], _utcMinute_js__WEBPACK_IMPORTED_MODULE_10__[\"default\"]);\nconst [timeTicks, timeTickInterval] = ticker(_year_js__WEBPACK_IMPORTED_MODULE_9__[\"default\"], _month_js__WEBPACK_IMPORTED_MODULE_8__[\"default\"], _week_js__WEBPACK_IMPORTED_MODULE_7__[\"sunday\"], _day_js__WEBPACK_IMPORTED_MODULE_6__[\"default\"], _hour_js__WEBPACK_IMPORTED_MODULE_5__[\"default\"], _minute_js__WEBPACK_IMPORTED_MODULE_4__[\"default\"]);\n\n\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,[encoded data, 4532 characters]\n//# sourceURL=webpack-internal:///./node_modules/vega-format/node_modules/d3-time/src/ticks.js\n");

/***/ }),

/***/ "./node_modules/vega-format/node_modules/d3-time/src/utcDay.js":
/*!*********************************************************************!*\
  !*** ./node_modules/vega-format/node_modules/d3-time/src/utcDay.js ***!
  \*********************************************************************/
/*! exports provided: default, utcDays */
/***/ (function(module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"utcDays\", function() { return utcDays; });\n/* harmony import */ var _interval_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./interval.js */ \"./node_modules/vega-format/node_modules/d3-time/src/interval.js\");\n/* harmony import */ var _duration_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./duration.js */ \"./node_modules/vega-format/node_modules/d3-time/src/duration.js\");\n\n\n\nvar utcDay = Object(_interval_js__WEBPACK_IMPORTED_MODULE_0__[\"default\"])(function(date) {\n  date.setUTCHours(0, 0, 0, 0);\n}, function(date, step) {\n  date.setUTCDate(date.getUTCDate() + step);\n}, function(start, end) {\n  return (end - start) / _duration_js__WEBPACK_IMPORTED_MODULE_1__[\"durationDay\"];\n}, function(date) {\n  return date.getUTCDate() - 1;\n});\n\n/* harmony default export */ __webpack_exports__[\"default\"] = (utcDay);\nvar utcDays = utcDay.range;\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvdmVnYS1mb3JtYXQvbm9kZV9tb2R1bGVzL2QzLXRpbWUvc3JjL3V0Y0RheS5qcy5qcyIsInNvdXJjZXMiOlsid2VicGFjazovLy8uL25vZGVfbW9kdWxlcy92ZWdhLWZvcm1hdC9ub2RlX21vZHVsZXMvZDMtdGltZS9zcmMvdXRjRGF5LmpzPzg0ZGEiXSwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IGludGVydmFsIGZyb20gXCIuL2ludGVydmFsLmpzXCI7XG5pbXBvcnQge2R1cmF0aW9uRGF5fSBmcm9tIFwiLi9kdXJhdGlvbi5qc1wiO1xuXG52YXIgdXRjRGF5ID0gaW50ZXJ2YWwoZnVuY3Rpb24oZGF0ZSkge1xuICBkYXRlLnNldFVUQ0hvdXJzKDAsIDAsIDAsIDApO1xufSwgZnVuY3Rpb24oZGF0ZSwgc3RlcCkge1xuICBkYXRlLnNldFVUQ0RhdGUoZGF0ZS5nZXRVVENEYXRlKCkgKyBzdGVwKTtcbn0sIGZ1bmN0aW9uKHN0YXJ0LCBlbmQpIHtcbiAgcmV0dXJuIChlbmQgLSBzdGFydCkgLyBkdXJhdGlvbkRheTtcbn0sIGZ1bmN0aW9uKGRhdGUpIHtcbiAgcmV0dXJuIGRhdGUuZ2V0VVRDRGF0ZSgpIC0gMTtcbn0pO1xuXG5leHBvcnQgZGVmYXVsdCB1dGNEYXk7XG5leHBvcnQgdmFyIHV0Y0RheXMgPSB1dGNEYXkucmFuZ2U7XG4iXSwibWFwcGluZ3MiOiJBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOyIsInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///./node_modules/vega-format/node_modules/d3-time/src/utcDay.js\n");

/***/ }),

/***/ "./node_modules/vega-format/node_modules/d3-time/src/utcHour.js":
/*!**********************************************************************!*\
  !*** ./node_modules/vega-format/node_modules/d3-time/src/utcHour.js ***!
  \**********************************************************************/
/*! exports provided: default, utcHours */
/***/ (function(module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"utcHours\", function() { return utcHours; });\n/* harmony import */ var _interval_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./interval.js */ \"./node_modules/vega-format/node_modules/d3-time/src/interval.js\");\n/* harmony import */ var _duration_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./duration.js */ \"./node_modules/vega-format/node_modules/d3-time/src/duration.js\");\n\n\n\nvar utcHour = Object(_interval_js__WEBPACK_IMPORTED_MODULE_0__[\"default\"])(function(date) {\n  date.setUTCMinutes(0, 0, 0);\n}, function(date, step) {\n  date.setTime(+date + step * _duration_js__WEBPACK_IMPORTED_MODULE_1__[\"durationHour\"]);\n}, function(start, end) {\n  return (end - start) / _duration_js__WEBPACK_IMPORTED_MODULE_1__[\"durationHour\"];\n}, function(date) {\n  return date.getUTCHours();\n});\n\n/* harmony default export */ __webpack_exports__[\"default\"] = (utcHour);\nvar utcHours = utcHour.range;\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvdmVnYS1mb3JtYXQvbm9kZV9tb2R1bGVzL2QzLXRpbWUvc3JjL3V0Y0hvdXIuanMuanMiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvdmVnYS1mb3JtYXQvbm9kZV9tb2R1bGVzL2QzLXRpbWUvc3JjL3V0Y0hvdXIuanM/Yzc0YiJdLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgaW50ZXJ2YWwgZnJvbSBcIi4vaW50ZXJ2YWwuanNcIjtcbmltcG9ydCB7ZHVyYXRpb25Ib3VyfSBmcm9tIFwiLi9kdXJhdGlvbi5qc1wiO1xuXG52YXIgdXRjSG91ciA9IGludGVydmFsKGZ1bmN0aW9uKGRhdGUpIHtcbiAgZGF0ZS5zZXRVVENNaW51dGVzKDAsIDAsIDApO1xufSwgZnVuY3Rpb24oZGF0ZSwgc3RlcCkge1xuICBkYXRlLnNldFRpbWUoK2RhdGUgKyBzdGVwICogZHVyYXRpb25Ib3VyKTtcbn0sIGZ1bmN0aW9uKHN0YXJ0LCBlbmQpIHtcbiAgcmV0dXJuIChlbmQgLSBzdGFydCkgLyBkdXJhdGlvbkhvdXI7XG59LCBmdW5jdGlvbihkYXRlKSB7XG4gIHJldHVybiBkYXRlLmdldFVUQ0hvdXJzKCk7XG59KTtcblxuZXhwb3J0IGRlZmF1bHQgdXRjSG91cjtcbmV4cG9ydCB2YXIgdXRjSG91cnMgPSB1dGNIb3VyLnJhbmdlO1xuIl0sIm1hcHBpbmdzIjoiQUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTsiLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///./node_modules/vega-format/node_modules/d3-time/src/utcHour.js\n");

/***/ }),

/***/ "./node_modules/vega-format/node_modules/d3-time/src/utcMinute.js":
/*!************************************************************************!*\
  !*** ./node_modules/vega-format/node_modules/d3-time/src/utcMinute.js ***!
  \************************************************************************/
/*! exports provided: default, utcMinutes */
/***/ (function(module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"utcMinutes\", function() { return utcMinutes; });\n/* harmony import */ var _interval_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./interval.js */ \"./node_modules/vega-format/node_modules/d3-time/src/interval.js\");\n/* harmony import */ var _duration_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./duration.js */ \"./node_modules/vega-format/node_modules/d3-time/src/duration.js\");\n\n\n\nvar utcMinute = Object(_interval_js__WEBPACK_IMPORTED_MODULE_0__[\"default\"])(function(date) {\n  date.setUTCSeconds(0, 0);\n}, function(date, step) {\n  date.setTime(+date + step * _duration_js__WEBPACK_IMPORTED_MODULE_1__[\"durationMinute\"]);\n}, function(start, end) {\n  return (end - start) / _duration_js__WEBPACK_IMPORTED_MODULE_1__[\"durationMinute\"];\n}, function(date) {\n  return date.getUTCMinutes();\n});\n\n/* harmony default export */ __webpack_exports__[\"default\"] = (utcMinute);\nvar utcMinutes = utcMinute.range;\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvdmVnYS1mb3JtYXQvbm9kZV9tb2R1bGVzL2QzLXRpbWUvc3JjL3V0Y01pbnV0ZS5qcy5qcyIsInNvdXJjZXMiOlsid2VicGFjazovLy8uL25vZGVfbW9kdWxlcy92ZWdhLWZvcm1hdC9ub2RlX21vZHVsZXMvZDMtdGltZS9zcmMvdXRjTWludXRlLmpzP2JiYzYiXSwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IGludGVydmFsIGZyb20gXCIuL2ludGVydmFsLmpzXCI7XG5pbXBvcnQge2R1cmF0aW9uTWludXRlfSBmcm9tIFwiLi9kdXJhdGlvbi5qc1wiO1xuXG52YXIgdXRjTWludXRlID0gaW50ZXJ2YWwoZnVuY3Rpb24oZGF0ZSkge1xuICBkYXRlLnNldFVUQ1NlY29uZHMoMCwgMCk7XG59LCBmdW5jdGlvbihkYXRlLCBzdGVwKSB7XG4gIGRhdGUuc2V0VGltZSgrZGF0ZSArIHN0ZXAgKiBkdXJhdGlvbk1pbnV0ZSk7XG59LCBmdW5jdGlvbihzdGFydCwgZW5kKSB7XG4gIHJldHVybiAoZW5kIC0gc3RhcnQpIC8gZHVyYXRpb25NaW51dGU7XG59LCBmdW5jdGlvbihkYXRlKSB7XG4gIHJldHVybiBkYXRlLmdldFVUQ01pbnV0ZXMoKTtcbn0pO1xuXG5leHBvcnQgZGVmYXVsdCB1dGNNaW51dGU7XG5leHBvcnQgdmFyIHV0Y01pbnV0ZXMgPSB1dGNNaW51dGUucmFuZ2U7XG4iXSwibWFwcGluZ3MiOiJBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOyIsInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///./node_modules/vega-format/node_modules/d3-time/src/utcMinute.js\n");

/***/ }),

/***/ "./node_modules/vega-format/node_modules/d3-time/src/utcMonth.js":
/*!***********************************************************************!*\
  !*** ./node_modules/vega-format/node_modules/d3-time/src/utcMonth.js ***!
  \***********************************************************************/
/*! exports provided: default, utcMonths */
/***/ (function(module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"utcMonths\", function() { return utcMonths; });\n/* harmony import */ var _interval_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./interval.js */ \"./node_modules/vega-format/node_modules/d3-time/src/interval.js\");\n\n\nvar utcMonth = Object(_interval_js__WEBPACK_IMPORTED_MODULE_0__[\"default\"])(function(date) {\n  date.setUTCDate(1);\n  date.setUTCHours(0, 0, 0, 0);\n}, function(date, step) {\n  date.setUTCMonth(date.getUTCMonth() + step);\n}, function(start, end) {\n  return end.getUTCMonth() - start.getUTCMonth() + (end.getUTCFullYear() - start.getUTCFullYear()) * 12;\n}, function(date) {\n  return date.getUTCMonth();\n});\n\n/* harmony default export */ __webpack_exports__[\"default\"] = (utcMonth);\nvar utcMonths = utcMonth.range;\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvdmVnYS1mb3JtYXQvbm9kZV9tb2R1bGVzL2QzLXRpbWUvc3JjL3V0Y01vbnRoLmpzLmpzIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL3ZlZ2EtZm9ybWF0L25vZGVfbW9kdWxlcy9kMy10aW1lL3NyYy91dGNNb250aC5qcz8xOGIwIl0sInNvdXJjZXNDb250ZW50IjpbImltcG9ydCBpbnRlcnZhbCBmcm9tIFwiLi9pbnRlcnZhbC5qc1wiO1xuXG52YXIgdXRjTW9udGggPSBpbnRlcnZhbChmdW5jdGlvbihkYXRlKSB7XG4gIGRhdGUuc2V0VVRDRGF0ZSgxKTtcbiAgZGF0ZS5zZXRVVENIb3VycygwLCAwLCAwLCAwKTtcbn0sIGZ1bmN0aW9uKGRhdGUsIHN0ZXApIHtcbiAgZGF0ZS5zZXRVVENNb250aChkYXRlLmdldFVUQ01vbnRoKCkgKyBzdGVwKTtcbn0sIGZ1bmN0aW9uKHN0YXJ0LCBlbmQpIHtcbiAgcmV0dXJuIGVuZC5nZXRVVENNb250aCgpIC0gc3RhcnQuZ2V0VVRDTW9udGgoKSArIChlbmQuZ2V0VVRDRnVsbFllYXIoKSAtIHN0YXJ0LmdldFVUQ0Z1bGxZZWFyKCkpICogMTI7XG59LCBmdW5jdGlvbihkYXRlKSB7XG4gIHJldHVybiBkYXRlLmdldFVUQ01vbnRoKCk7XG59KTtcblxuZXhwb3J0IGRlZmF1bHQgdXRjTW9udGg7XG5leHBvcnQgdmFyIHV0Y01vbnRocyA9IHV0Y01vbnRoLnJhbmdlO1xuIl0sIm1hcHBpbmdzIjoiQUFBQTtBQUFBO0FBQUE7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7Iiwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///./node_modules/vega-format/node_modules/d3-time/src/utcMonth.js\n");

/***/ }),

/***/ "./node_modules/vega-format/node_modules/d3-time/src/utcWeek.js":
/*!**********************************************************************!*\
  !*** ./node_modules/vega-format/node_modules/d3-time/src/utcWeek.js ***!
  \**********************************************************************/
/*! exports provided: utcSunday, utcMonday, utcTuesday, utcWednesday, utcThursday, utcFriday, utcSaturday, utcSundays, utcMondays, utcTuesdays, utcWednesdays, utcThursdays, utcFridays, utcSaturdays */
/***/ (function(module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"utcSunday\", function() { return utcSunday; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"utcMonday\", function() { return utcMonday; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"utcTuesday\", function() { return utcTuesday; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"utcWednesday\", function() { return utcWednesday; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"utcThursday\", function() { return utcThursday; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"utcFriday\", function() { return utcFriday; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"utcSaturday\", function() { return utcSaturday; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"utcSundays\", function() { return utcSundays; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"utcMondays\", function() { return utcMondays; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"utcTuesdays\", function() { return utcTuesdays; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"utcWednesdays\", function() { return utcWednesdays; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"utcThursdays\", function() { return utcThursdays; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"utcFridays\", function() { return utcFridays; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"utcSaturdays\", function() { return utcSaturdays; });\n/* harmony import */ var _interval_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./interval.js */ \"./node_modules/vega-format/node_modules/d3-time/src/interval.js\");\n/* harmony import */ var _duration_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./duration.js */ \"./node_modules/vega-format/node_modules/d3-time/src/duration.js\");\n\n\n\nfunction utcWeekday(i) {\n  return Object(_interval_js__WEBPACK_IMPORTED_MODULE_0__[\"default\"])(function(date) {\n    date.setUTCDate(date.getUTCDate() - (date.getUTCDay() + 7 - i) % 7);\n    date.setUTCHours(0, 0, 0, 0);\n  }, function(date, step) {\n    date.setUTCDate(date.getUTCDate() + step * 7);\n  }, function(start, end) {\n    return (end - start) / _duration_js__WEBPACK_IMPORTED_MODULE_1__[\"durationWeek\"];\n  });\n}\n\nvar utcSunday = utcWeekday(0);\nvar utcMonday = utcWeekday(1);\nvar utcTuesday = utcWeekday(2);\nvar utcWednesday = utcWeekday(3);\nvar utcThursday = utcWeekday(4);\nvar utcFriday = utcWeekday(5);\nvar utcSaturday = utcWeekday(6);\n\nvar utcSundays = utcSunday.range;\nvar utcMondays = utcMonday.range;\nvar utcTuesdays = utcTuesday.range;\nvar utcWednesdays = utcWednesday.range;\nvar utcThursdays = utcThursday.range;\nvar utcFridays = utcFriday.range;\nvar utcSaturdays = utcSaturday.range;\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvdmVnYS1mb3JtYXQvbm9kZV9tb2R1bGVzL2QzLXRpbWUvc3JjL3V0Y1dlZWsuanMuanMiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvdmVnYS1mb3JtYXQvbm9kZV9tb2R1bGVzL2QzLXRpbWUvc3JjL3V0Y1dlZWsuanM/NTU2NiJdLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgaW50ZXJ2YWwgZnJvbSBcIi4vaW50ZXJ2YWwuanNcIjtcbmltcG9ydCB7ZHVyYXRpb25XZWVrfSBmcm9tIFwiLi9kdXJhdGlvbi5qc1wiO1xuXG5mdW5jdGlvbiB1dGNXZWVrZGF5KGkpIHtcbiAgcmV0dXJuIGludGVydmFsKGZ1bmN0aW9uKGRhdGUpIHtcbiAgICBkYXRlLnNldFVUQ0RhdGUoZGF0ZS5nZXRVVENEYXRlKCkgLSAoZGF0ZS5nZXRVVENEYXkoKSArIDcgLSBpKSAlIDcpO1xuICAgIGRhdGUuc2V0VVRDSG91cnMoMCwgMCwgMCwgMCk7XG4gIH0sIGZ1bmN0aW9uKGRhdGUsIHN0ZXApIHtcbiAgICBkYXRlLnNldFVUQ0RhdGUoZGF0ZS5nZXRVVENEYXRlKCkgKyBzdGVwICogNyk7XG4gIH0sIGZ1bmN0aW9uKHN0YXJ0LCBlbmQpIHtcbiAgICByZXR1cm4gKGVuZCAtIHN0YXJ0KSAvIGR1cmF0aW9uV2VlaztcbiAgfSk7XG59XG5cbmV4cG9ydCB2YXIgdXRjU3VuZGF5ID0gdXRjV2Vla2RheSgwKTtcbmV4cG9ydCB2YXIgdXRjTW9uZGF5ID0gdXRjV2Vla2RheSgxKTtcbmV4cG9ydCB2YXIgdXRjVHVlc2RheSA9IHV0Y1dlZWtkYXkoMik7XG5leHBvcnQgdmFyIHV0Y1dlZG5lc2RheSA9IHV0Y1dlZWtkYXkoMyk7XG5leHBvcnQgdmFyIHV0Y1RodXJzZGF5ID0gdXRjV2Vla2RheSg0KTtcbmV4cG9ydCB2YXIgdXRjRnJpZGF5ID0gdXRjV2Vla2RheSg1KTtcbmV4cG9ydCB2YXIgdXRjU2F0dXJkYXkgPSB1dGNXZWVrZGF5KDYpO1xuXG5leHBvcnQgdmFyIHV0Y1N1bmRheXMgPSB1dGNTdW5kYXkucmFuZ2U7XG5leHBvcnQgdmFyIHV0Y01vbmRheXMgPSB1dGNNb25kYXkucmFuZ2U7XG5leHBvcnQgdmFyIHV0Y1R1ZXNkYXlzID0gdXRjVHVlc2RheS5yYW5nZTtcbmV4cG9ydCB2YXIgdXRjV2VkbmVzZGF5cyA9IHV0Y1dlZG5lc2RheS5yYW5nZTtcbmV4cG9ydCB2YXIgdXRjVGh1cnNkYXlzID0gdXRjVGh1cnNkYXkucmFuZ2U7XG5leHBvcnQgdmFyIHV0Y0ZyaWRheXMgPSB1dGNGcmlkYXkucmFuZ2U7XG5leHBvcnQgdmFyIHV0Y1NhdHVyZGF5cyA9IHV0Y1NhdHVyZGF5LnJhbmdlO1xuIl0sIm1hcHBpbmdzIjoiQUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTsiLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///./node_modules/vega-format/node_modules/d3-time/src/utcWeek.js\n");

/***/ }),

/***/ "./node_modules/vega-format/node_modules/d3-time/src/utcYear.js":
/*!**********************************************************************!*\
  !*** ./node_modules/vega-format/node_modules/d3-time/src/utcYear.js ***!
  \**********************************************************************/
/*! exports provided: default, utcYears */
/***/ (function(module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"utcYears\", function() { return utcYears; });\n/* harmony import */ var _interval_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./interval.js */ \"./node_modules/vega-format/node_modules/d3-time/src/interval.js\");\n\n\nvar utcYear = Object(_interval_js__WEBPACK_IMPORTED_MODULE_0__[\"default\"])(function(date) {\n  date.setUTCMonth(0, 1);\n  date.setUTCHours(0, 0, 0, 0);\n}, function(date, step) {\n  date.setUTCFullYear(date.getUTCFullYear() + step);\n}, function(start, end) {\n  return end.getUTCFullYear() - start.getUTCFullYear();\n}, function(date) {\n  return date.getUTCFullYear();\n});\n\n// An optimized implementation for this simple case.\nutcYear.every = function(k) {\n  return !isFinite(k = Math.floor(k)) || !(k > 0) ? null : Object(_interval_js__WEBPACK_IMPORTED_MODULE_0__[\"default\"])(function(date) {\n    date.setUTCFullYear(Math.floor(date.getUTCFullYear() / k) * k);\n    date.setUTCMonth(0, 1);\n    date.setUTCHours(0, 0, 0, 0);\n  }, function(date, step) {\n    date.setUTCFullYear(date.getUTCFullYear() + step * k);\n  });\n};\n\n/* harmony default export */ __webpack_exports__[\"default\"] = (utcYear);\nvar utcYears = utcYear.range;\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvdmVnYS1mb3JtYXQvbm9kZV9tb2R1bGVzL2QzLXRpbWUvc3JjL3V0Y1llYXIuanMuanMiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvdmVnYS1mb3JtYXQvbm9kZV9tb2R1bGVzL2QzLXRpbWUvc3JjL3V0Y1llYXIuanM/NmI1NSJdLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgaW50ZXJ2YWwgZnJvbSBcIi4vaW50ZXJ2YWwuanNcIjtcblxudmFyIHV0Y1llYXIgPSBpbnRlcnZhbChmdW5jdGlvbihkYXRlKSB7XG4gIGRhdGUuc2V0VVRDTW9udGgoMCwgMSk7XG4gIGRhdGUuc2V0VVRDSG91cnMoMCwgMCwgMCwgMCk7XG59LCBmdW5jdGlvbihkYXRlLCBzdGVwKSB7XG4gIGRhdGUuc2V0VVRDRnVsbFllYXIoZGF0ZS5nZXRVVENGdWxsWWVhcigpICsgc3RlcCk7XG59LCBmdW5jdGlvbihzdGFydCwgZW5kKSB7XG4gIHJldHVybiBlbmQuZ2V0VVRDRnVsbFllYXIoKSAtIHN0YXJ0LmdldFVUQ0Z1bGxZZWFyKCk7XG59LCBmdW5jdGlvbihkYXRlKSB7XG4gIHJldHVybiBkYXRlLmdldFVUQ0Z1bGxZZWFyKCk7XG59KTtcblxuLy8gQW4gb3B0aW1pemVkIGltcGxlbWVudGF0aW9uIGZvciB0aGlzIHNpbXBsZSBjYXNlLlxudXRjWWVhci5ldmVyeSA9IGZ1bmN0aW9uKGspIHtcbiAgcmV0dXJuICFpc0Zpbml0ZShrID0gTWF0aC5mbG9vcihrKSkgfHwgIShrID4gMCkgPyBudWxsIDogaW50ZXJ2YWwoZnVuY3Rpb24oZGF0ZSkge1xuICAgIGRhdGUuc2V0VVRDRnVsbFllYXIoTWF0aC5mbG9vcihkYXRlLmdldFVUQ0Z1bGxZZWFyKCkgLyBrKSAqIGspO1xuICAgIGRhdGUuc2V0VVRDTW9udGgoMCwgMSk7XG4gICAgZGF0ZS5zZXRVVENIb3VycygwLCAwLCAwLCAwKTtcbiAgfSwgZnVuY3Rpb24oZGF0ZSwgc3RlcCkge1xuICAgIGRhdGUuc2V0VVRDRnVsbFllYXIoZGF0ZS5nZXRVVENGdWxsWWVhcigpICsgc3RlcCAqIGspO1xuICB9KTtcbn07XG5cbmV4cG9ydCBkZWZhdWx0IHV0Y1llYXI7XG5leHBvcnQgdmFyIHV0Y1llYXJzID0gdXRjWWVhci5yYW5nZTtcbiJdLCJtYXBwaW5ncyI6IkFBQUE7QUFBQTtBQUFBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTsiLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///./node_modules/vega-format/node_modules/d3-time/src/utcYear.js\n");

/***/ }),

/***/ "./node_modules/vega-format/node_modules/d3-time/src/week.js":
/*!*******************************************************************!*\
  !*** ./node_modules/vega-format/node_modules/d3-time/src/week.js ***!
  \*******************************************************************/
/*! exports provided: sunday, monday, tuesday, wednesday, thursday, friday, saturday, sundays, mondays, tuesdays, wednesdays, thursdays, fridays, saturdays */
/***/ (function(module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"sunday\", function() { return sunday; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"monday\", function() { return monday; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"tuesday\", function() { return tuesday; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"wednesday\", function() { return wednesday; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"thursday\", function() { return thursday; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"friday\", function() { return friday; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"saturday\", function() { return saturday; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"sundays\", function() { return sundays; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"mondays\", function() { return mondays; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"tuesdays\", function() { return tuesdays; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"wednesdays\", function() { return wednesdays; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"thursdays\", function() { return thursdays; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"fridays\", function() { return fridays; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"saturdays\", function() { return saturdays; });\n/* harmony import */ var _interval_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./interval.js */ \"./node_modules/vega-format/node_modules/d3-time/src/interval.js\");\n/* harmony import */ var _duration_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./duration.js */ \"./node_modules/vega-format/node_modules/d3-time/src/duration.js\");\n\n\n\nfunction weekday(i) {\n  return Object(_interval_js__WEBPACK_IMPORTED_MODULE_0__[\"default\"])(function(date) {\n    date.setDate(date.getDate() - (date.getDay() + 7 - i) % 7);\n    date.setHours(0, 0, 0, 0);\n  }, function(date, step) {\n    date.setDate(date.getDate() + step * 7);\n  }, function(start, end) {\n    return (end - start - (end.getTimezoneOffset() - start.getTimezoneOffset()) * _duration_js__WEBPACK_IMPORTED_MODULE_1__[\"durationMinute\"]) / _duration_js__WEBPACK_IMPORTED_MODULE_1__[\"durationWeek\"];\n  });\n}\n\nvar sunday = weekday(0);\nvar monday = weekday(1);\nvar tuesday = weekday(2);\nvar wednesday = weekday(3);\nvar thursday = weekday(4);\nvar friday = weekday(5);\nvar saturday = weekday(6);\n\nvar sundays = sunday.range;\nvar mondays = monday.range;\nvar tuesdays = tuesday.range;\nvar wednesdays = wednesday.range;\nvar thursdays = thursday.range;\nvar fridays = friday.range;\nvar saturdays = saturday.range;\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvdmVnYS1mb3JtYXQvbm9kZV9tb2R1bGVzL2QzLXRpbWUvc3JjL3dlZWsuanMuanMiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvdmVnYS1mb3JtYXQvbm9kZV9tb2R1bGVzL2QzLXRpbWUvc3JjL3dlZWsuanM/YmQxMCJdLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgaW50ZXJ2YWwgZnJvbSBcIi4vaW50ZXJ2YWwuanNcIjtcbmltcG9ydCB7ZHVyYXRpb25NaW51dGUsIGR1cmF0aW9uV2Vla30gZnJvbSBcIi4vZHVyYXRpb24uanNcIjtcblxuZnVuY3Rpb24gd2Vla2RheShpKSB7XG4gIHJldHVybiBpbnRlcnZhbChmdW5jdGlvbihkYXRlKSB7XG4gICAgZGF0ZS5zZXREYXRlKGRhdGUuZ2V0RGF0ZSgpIC0gKGRhdGUuZ2V0RGF5KCkgKyA3IC0gaSkgJSA3KTtcbiAgICBkYXRlLnNldEhvdXJzKDAsIDAsIDAsIDApO1xuICB9LCBmdW5jdGlvbihkYXRlLCBzdGVwKSB7XG4gICAgZGF0ZS5zZXREYXRlKGRhdGUuZ2V0RGF0ZSgpICsgc3RlcCAqIDcpO1xuICB9LCBmdW5jdGlvbihzdGFydCwgZW5kKSB7XG4gICAgcmV0dXJuIChlbmQgLSBzdGFydCAtIChlbmQuZ2V0VGltZXpvbmVPZmZzZXQoKSAtIHN0YXJ0LmdldFRpbWV6b25lT2Zmc2V0KCkpICogZHVyYXRpb25NaW51dGUpIC8gZHVyYXRpb25XZWVrO1xuICB9KTtcbn1cblxuZXhwb3J0IHZhciBzdW5kYXkgPSB3ZWVrZGF5KDApO1xuZXhwb3J0IHZhciBtb25kYXkgPSB3ZWVrZGF5KDEpO1xuZXhwb3J0IHZhciB0dWVzZGF5ID0gd2Vla2RheSgyKTtcbmV4cG9ydCB2YXIgd2VkbmVzZGF5ID0gd2Vla2RheSgzKTtcbmV4cG9ydCB2YXIgdGh1cnNkYXkgPSB3ZWVrZGF5KDQpO1xuZXhwb3J0IHZhciBmcmlkYXkgPSB3ZWVrZGF5KDUpO1xuZXhwb3J0IHZhciBzYXR1cmRheSA9IHdlZWtkYXkoNik7XG5cbmV4cG9ydCB2YXIgc3VuZGF5cyA9IHN1bmRheS5yYW5nZTtcbmV4cG9ydCB2YXIgbW9uZGF5cyA9IG1vbmRheS5yYW5nZTtcbmV4cG9ydCB2YXIgdHVlc2RheXMgPSB0dWVzZGF5LnJhbmdlO1xuZXhwb3J0IHZhciB3ZWRuZXNkYXlzID0gd2VkbmVzZGF5LnJhbmdlO1xuZXhwb3J0IHZhciB0aHVyc2RheXMgPSB0aHVyc2RheS5yYW5nZTtcbmV4cG9ydCB2YXIgZnJpZGF5cyA9IGZyaWRheS5yYW5nZTtcbmV4cG9ydCB2YXIgc2F0dXJkYXlzID0gc2F0dXJkYXkucmFuZ2U7XG4iXSwibWFwcGluZ3MiOiJBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOyIsInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///./node_modules/vega-format/node_modules/d3-time/src/week.js\n");

/***/ }),

/***/ "./node_modules/vega-format/node_modules/d3-time/src/year.js":
/*!*******************************************************************!*\
  !*** ./node_modules/vega-format/node_modules/d3-time/src/year.js ***!
  \*******************************************************************/
/*! exports provided: default, years */
/***/ (function(module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"years\", function() { return years; });\n/* harmony import */ var _interval_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./interval.js */ \"./node_modules/vega-format/node_modules/d3-time/src/interval.js\");\n\n\nvar year = Object(_interval_js__WEBPACK_IMPORTED_MODULE_0__[\"default\"])(function(date) {\n  date.setMonth(0, 1);\n  date.setHours(0, 0, 0, 0);\n}, function(date, step) {\n  date.setFullYear(date.getFullYear() + step);\n}, function(start, end) {\n  return end.getFullYear() - start.getFullYear();\n}, function(date) {\n  return date.getFullYear();\n});\n\n// An optimized implementation for this simple case.\nyear.every = function(k) {\n  return !isFinite(k = Math.floor(k)) || !(k > 0) ? null : Object(_interval_js__WEBPACK_IMPORTED_MODULE_0__[\"default\"])(function(date) {\n    date.setFullYear(Math.floor(date.getFullYear() / k) * k);\n    date.setMonth(0, 1);\n    date.setHours(0, 0, 0, 0);\n  }, function(date, step) {\n    date.setFullYear(date.getFullYear() + step * k);\n  });\n};\n\n/* harmony default export */ __webpack_exports__[\"default\"] = (year);\nvar years = year.range;\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvdmVnYS1mb3JtYXQvbm9kZV9tb2R1bGVzL2QzLXRpbWUvc3JjL3llYXIuanMuanMiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvdmVnYS1mb3JtYXQvbm9kZV9tb2R1bGVzL2QzLXRpbWUvc3JjL3llYXIuanM/YmJhMSJdLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgaW50ZXJ2YWwgZnJvbSBcIi4vaW50ZXJ2YWwuanNcIjtcblxudmFyIHllYXIgPSBpbnRlcnZhbChmdW5jdGlvbihkYXRlKSB7XG4gIGRhdGUuc2V0TW9udGgoMCwgMSk7XG4gIGRhdGUuc2V0SG91cnMoMCwgMCwgMCwgMCk7XG59LCBmdW5jdGlvbihkYXRlLCBzdGVwKSB7XG4gIGRhdGUuc2V0RnVsbFllYXIoZGF0ZS5nZXRGdWxsWWVhcigpICsgc3RlcCk7XG59LCBmdW5jdGlvbihzdGFydCwgZW5kKSB7XG4gIHJldHVybiBlbmQuZ2V0RnVsbFllYXIoKSAtIHN0YXJ0LmdldEZ1bGxZZWFyKCk7XG59LCBmdW5jdGlvbihkYXRlKSB7XG4gIHJldHVybiBkYXRlLmdldEZ1bGxZZWFyKCk7XG59KTtcblxuLy8gQW4gb3B0aW1pemVkIGltcGxlbWVudGF0aW9uIGZvciB0aGlzIHNpbXBsZSBjYXNlLlxueWVhci5ldmVyeSA9IGZ1bmN0aW9uKGspIHtcbiAgcmV0dXJuICFpc0Zpbml0ZShrID0gTWF0aC5mbG9vcihrKSkgfHwgIShrID4gMCkgPyBudWxsIDogaW50ZXJ2YWwoZnVuY3Rpb24oZGF0ZSkge1xuICAgIGRhdGUuc2V0RnVsbFllYXIoTWF0aC5mbG9vcihkYXRlLmdldEZ1bGxZZWFyKCkgLyBrKSAqIGspO1xuICAgIGRhdGUuc2V0TW9udGgoMCwgMSk7XG4gICAgZGF0ZS5zZXRIb3VycygwLCAwLCAwLCAwKTtcbiAgfSwgZnVuY3Rpb24oZGF0ZSwgc3RlcCkge1xuICAgIGRhdGUuc2V0RnVsbFllYXIoZGF0ZS5nZXRGdWxsWWVhcigpICsgc3RlcCAqIGspO1xuICB9KTtcbn07XG5cbmV4cG9ydCBkZWZhdWx0IHllYXI7XG5leHBvcnQgdmFyIHllYXJzID0geWVhci5yYW5nZTtcbiJdLCJtYXBwaW5ncyI6IkFBQUE7QUFBQTtBQUFBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTsiLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///./node_modules/vega-format/node_modules/d3-time/src/year.js\n");

/***/ }),

/***/ "./node_modules/vega-format/node_modules/vega-util/build/vega-util.module.js":
/*!***********************************************************************************!*\
  !*** ./node_modules/vega-format/node_modules/vega-util/build/vega-util.module.js ***!
  \***********************************************************************************/
/*! exports provided: Debug, Error, Info, None, Warn, accessor, accessorFields, accessorName, array, ascending, clampRange, compare, constant, debounce, error, extend, extent, extentIndex, falsy, fastmap, field, flush, hasOwnProperty, id, identity, inherits, inrange, isArray, isBoolean, isDate, isFunction, isIterable, isNumber, isObject, isRegExp, isString, key, lerp, logger, lruCache, merge, mergeConfig, one, pad, panLinear, panLog, panPow, panSymlog, peek, quarter, repeat, span, splitAccessPath, stringValue, toBoolean, toDate, toNumber, toSet, toString, truncate, truthy, utcquarter, visitArray, writeConfig, zero, zoomLinear, zoomLog, zoomPow, zoomSymlog */
/***/ (function(module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"Debug\", function() { return Debug; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"Error\", function() { return Error$1; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"Info\", function() { return Info; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"None\", function() { return None; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"Warn\", function() { return Warn; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"accessor\", function() { return accessor; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"accessorFields\", function() { return accessorFields; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"accessorName\", function() { return accessorName; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"array\", function() { return array; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"ascending\", function() { return ascending; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"clampRange\", function() { return clampRange; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"compare\", function() { return compare; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"constant\", function() { return constant; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"debounce\", function() { return debounce; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"error\", function() { return error; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"extend\", function() { return extend; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"extent\", function() { return extent; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"extentIndex\", function() { return extentIndex; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"falsy\", function() { return falsy; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"fastmap\", function() { return fastmap; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"field\", function() { return field; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"flush\", function() { return flush; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"hasOwnProperty\", function() { return has; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"id\", function() { return id; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"identity\", function() { return identity; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"inherits\", function() { return inherits; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"inrange\", function() { return inrange; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"isArray\", function() { return isArray; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"isBoolean\", function() { return isBoolean; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"isDate\", function() { return isDate; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"isFunction\", function() { return isFunction; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"isIterable\", function() { return isIterable; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"isNumber\", function() { return isNumber; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"isObject\", function() { return isObject; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"isRegExp\", function() { return isRegExp; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"isString\", function() { return isString; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"key\", function() { return key; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"lerp\", function() { return lerp; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"logger\", function() { return logger; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"lruCache\", function() { return lruCache; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"merge\", function() { return merge; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"mergeConfig\", function() { return mergeConfig; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"one\", function() { return one; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"pad\", function() { return pad; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"panLinear\", function() { return panLinear; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"panLog\", function() { return panLog; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"panPow\", function() { return panPow; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"panSymlog\", function() { return panSymlog; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"peek\", function() { return peek; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"quarter\", function() { return quarter; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"repeat\", function() { return repeat; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"span\", function() { return span; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"splitAccessPath\", function() { return splitAccessPath; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"stringValue\", function() { return $; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"toBoolean\", function() { return toBoolean; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"toDate\", function() { return toDate; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"toNumber\", function() { return toNumber; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"toSet\", function() { return toSet; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"toString\", function() { return toString; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"truncate\", function() { return truncate; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"truthy\", function() { return truthy; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"utcquarter\", function() { return utcquarter; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"visitArray\", function() { return visitArray; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"writeConfig\", function() { return writeConfig; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"zero\", function() { return zero; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"zoomLinear\", function() { return zoomLinear; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"zoomLog\", function() { return zoomLog; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"zoomPow\", function() { return zoomPow; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"zoomSymlog\", function() { return zoomSymlog; });\nfunction accessor (fn, fields, name) {\n  fn.fields = fields || [];\n  fn.fname = name;\n  return fn;\n}\nfunction accessorName(fn) {\n  return fn == null ? null : fn.fname;\n}\nfunction accessorFields(fn) {\n  return fn == null ? null : fn.fields;\n}\n\nfunction getter (path) {\n  return path.length === 1 ? get1(path[0]) : getN(path);\n}\n\nconst get1 = field => function (obj) {\n  return obj[field];\n};\n\nconst getN = path => {\n  const len = path.length;\n  return function (obj) {\n    for (let i = 0; i < len; ++i) {\n      obj = obj[path[i]];\n    }\n\n    return obj;\n  };\n};\n\nfunction error (message) {\n  throw Error(message);\n}\n\nfunction splitAccessPath (p) {\n  const path = [],\n        n = p.length;\n  let q = null,\n      b = 0,\n      s = '',\n      i,\n      j,\n      c;\n  p = p + '';\n\n  function push() {\n    path.push(s + p.substring(i, j));\n    s = '';\n    i = j + 1;\n  }\n\n  for (i = j = 0; j < n; ++j) {\n    c = p[j];\n\n    if (c === '\\\\') {\n      s += p.substring(i, j);\n      s += p.substring(++j, ++j);\n      i = j;\n    } else if (c === q) {\n      push();\n      q = null;\n      b = -1;\n    } else if (q) {\n      continue;\n    } else if (i === b && c === '\"') {\n      i = j + 1;\n      q = c;\n    } else if (i === b && c === \"'\") {\n      i = j + 1;\n      q = c;\n    } else if (c === '.' && !b) {\n      if (j > i) {\n        push();\n      } else {\n        i = j + 1;\n      }\n    } else if (c === '[') {\n      if (j > i) push();\n      b = i = j + 1;\n    } else if (c === ']') {\n      if (!b) error('Access path missing open bracket: ' + p);\n      if (b > 0) push();\n      b = 0;\n      i = j + 1;\n    }\n  }\n\n  if (b) error('Access path missing closing bracket: ' + p);\n  if (q) error('Access path missing closing quote: ' + p);\n\n  if (j > i) {\n    j++;\n    push();\n  }\n\n  return path;\n}\n\nfunction field (field, name, opt) {\n  const path = splitAccessPath(field);\n  field = path.length === 1 ? path[0] : field;\n  return accessor((opt && opt.get || getter)(path), [field], name || field);\n}\n\nconst id = field('id');\nconst identity = accessor(_ => _, [], 'identity');\nconst zero = accessor(() => 0, [], 'zero');\nconst one = accessor(() => 1, [], 'one');\nconst truthy = accessor(() => true, [], 'true');\nconst falsy = accessor(() => false, [], 'false');\n\nfunction log$1(method, level, input) {\n  const args = [level].concat([].slice.call(input));\n  console[method].apply(console, args); // eslint-disable-line no-console\n}\n\nconst None = 0;\nconst Error$1 = 1;\nconst Warn = 2;\nconst Info = 3;\nconst Debug = 4;\nfunction logger (_, method) {\n  let level = _ || None;\n  return {\n    level(_) {\n      if (arguments.length) {\n        level = +_;\n        return this;\n      } else {\n        return level;\n      }\n    },\n\n    error() {\n      if (level >= Error$1) log$1(method || 'error', 'ERROR', arguments);\n      return this;\n    },\n\n    warn() {\n      if (level >= Warn) log$1(method || 'warn', 'WARN', arguments);\n      return this;\n    },\n\n    info() {\n      if (level >= Info) log$1(method || 'log', 'INFO', arguments);\n      return this;\n    },\n\n    debug() {\n      if (level >= Debug) log$1(method || 'log', 'DEBUG', arguments);\n      return this;\n    }\n\n  };\n}\n\nvar isArray = Array.isArray;\n\nfunction isObject (_) {\n  return _ === Object(_);\n}\n\nconst isLegalKey = key => key !== '__proto__';\n\nfunction mergeConfig(...configs) {\n  return configs.reduce((out, source) => {\n    for (const key in source) {\n      if (key === 'signals') {\n        // for signals, we merge the signals arrays\n        // source signals take precedence over\n        // existing signals with the same name\n        out.signals = mergeNamed(out.signals, source.signals);\n      } else {\n        // otherwise, merge objects subject to recursion constraints\n        // for legend block, recurse for the layout entry only\n        // for style block, recurse for all properties\n        // otherwise, no recursion: objects overwrite, no merging\n        const r = key === 'legend' ? {\n          layout: 1\n        } : key === 'style' ? true : null;\n        writeConfig(out, key, source[key], r);\n      }\n    }\n\n    return out;\n  }, {});\n}\nfunction writeConfig(output, key, value, recurse) {\n  if (!isLegalKey(key)) return;\n  let k, o;\n\n  if (isObject(value) && !isArray(value)) {\n    o = isObject(output[key]) ? output[key] : output[key] = {};\n\n    for (k in value) {\n      if (recurse && (recurse === true || recurse[k])) {\n        writeConfig(o, k, value[k]);\n      } else if (isLegalKey(k)) {\n        o[k] = value[k];\n      }\n    }\n  } else {\n    output[key] = value;\n  }\n}\n\nfunction mergeNamed(a, b) {\n  if (a == null) return b;\n  const map = {},\n        out = [];\n\n  function add(_) {\n    if (!map[_.name]) {\n      map[_.name] = 1;\n      out.push(_);\n    }\n  }\n\n  b.forEach(add);\n  a.forEach(add);\n  return out;\n}\n\nfunction peek (array) {\n  return array[array.length - 1];\n}\n\nfunction toNumber (_) {\n  return _ == null || _ === '' ? null : +_;\n}\n\nconst exp = sign => x => sign * Math.exp(x);\n\nconst log = sign => x => Math.log(sign * x);\n\nconst symlog = c => x => Math.sign(x) * Math.log1p(Math.abs(x / c));\n\nconst symexp = c => x => Math.sign(x) * Math.expm1(Math.abs(x)) * c;\n\nconst pow = exponent => x => x < 0 ? -Math.pow(-x, exponent) : Math.pow(x, exponent);\n\nfunction pan(domain, delta, lift, ground) {\n  const d0 = lift(domain[0]),\n        d1 = lift(peek(domain)),\n        dd = (d1 - d0) * delta;\n  return [ground(d0 - dd), ground(d1 - dd)];\n}\n\nfunction panLinear(domain, delta) {\n  return pan(domain, delta, toNumber, identity);\n}\nfunction panLog(domain, delta) {\n  var sign = Math.sign(domain[0]);\n  return pan(domain, delta, log(sign), exp(sign));\n}\nfunction panPow(domain, delta, exponent) {\n  return pan(domain, delta, pow(exponent), pow(1 / exponent));\n}\nfunction panSymlog(domain, delta, constant) {\n  return pan(domain, delta, symlog(constant), symexp(constant));\n}\n\nfunction zoom(domain, anchor, scale, lift, ground) {\n  const d0 = lift(domain[0]),\n        d1 = lift(peek(domain)),\n        da = anchor != null ? lift(anchor) : (d0 + d1) / 2;\n  return [ground(da + (d0 - da) * scale), ground(da + (d1 - da) * scale)];\n}\n\nfunction zoomLinear(domain, anchor, scale) {\n  return zoom(domain, anchor, scale, toNumber, identity);\n}\nfunction zoomLog(domain, anchor, scale) {\n  const sign = Math.sign(domain[0]);\n  return zoom(domain, anchor, scale, log(sign), exp(sign));\n}\nfunction zoomPow(domain, anchor, scale, exponent) {\n  return zoom(domain, anchor, scale, pow(exponent), pow(1 / exponent));\n}\nfunction zoomSymlog(domain, anchor, scale, constant) {\n  return zoom(domain, anchor, scale, symlog(constant), symexp(constant));\n}\n\nfunction quarter(date) {\n  return 1 + ~~(new Date(date).getMonth() / 3);\n}\nfunction utcquarter(date) {\n  return 1 + ~~(new Date(date).getUTCMonth() / 3);\n}\n\nfunction array (_) {\n  return _ != null ? isArray(_) ? _ : [_] : [];\n}\n\n/**\n * Span-preserving range clamp. If the span of the input range is less\n * than (max - min) and an endpoint exceeds either the min or max value,\n * the range is translated such that the span is preserved and one\n * endpoint touches the boundary of the min/max range.\n * If the span exceeds (max - min), the range [min, max] is returned.\n */\nfunction clampRange (range, min, max) {\n  let lo = range[0],\n      hi = range[1],\n      span;\n\n  if (hi < lo) {\n    span = hi;\n    hi = lo;\n    lo = span;\n  }\n\n  span = hi - lo;\n  return span >= max - min ? [min, max] : [lo = Math.min(Math.max(lo, min), max - span), lo + span];\n}\n\nfunction isFunction (_) {\n  return typeof _ === 'function';\n}\n\nconst DESCENDING = 'descending';\nfunction compare (fields, orders, opt) {\n  opt = opt || {};\n  orders = array(orders) || [];\n  const ord = [],\n        get = [],\n        fmap = {},\n        gen = opt.comparator || comparator;\n  array(fields).forEach((f, i) => {\n    if (f == null) return;\n    ord.push(orders[i] === DESCENDING ? -1 : 1);\n    get.push(f = isFunction(f) ? f : field(f, null, opt));\n    (accessorFields(f) || []).forEach(_ => fmap[_] = 1);\n  });\n  return get.length === 0 ? null : accessor(gen(get, ord), Object.keys(fmap));\n}\nconst ascending = (u, v) => (u < v || u == null) && v != null ? -1 : (u > v || v == null) && u != null ? 1 : (v = v instanceof Date ? +v : v, u = u instanceof Date ? +u : u) !== u && v === v ? -1 : v !== v && u === u ? 1 : 0;\n\nconst comparator = (fields, orders) => fields.length === 1 ? compare1(fields[0], orders[0]) : compareN(fields, orders, fields.length);\n\nconst compare1 = (field, order) => function (a, b) {\n  return ascending(field(a), field(b)) * order;\n};\n\nconst compareN = (fields, orders, n) => {\n  orders.push(0); // pad zero for convenient lookup\n\n  return function (a, b) {\n    let f,\n        c = 0,\n        i = -1;\n\n    while (c === 0 && ++i < n) {\n      f = fields[i];\n      c = ascending(f(a), f(b));\n    }\n\n    return c * orders[i];\n  };\n};\n\nfunction constant (_) {\n  return isFunction(_) ? _ : () => _;\n}\n\nfunction debounce (delay, handler) {\n  let tid;\n  return e => {\n    if (tid) clearTimeout(tid);\n    tid = setTimeout(() => (handler(e), tid = null), delay);\n  };\n}\n\nfunction extend (_) {\n  for (let x, k, i = 1, len = arguments.length; i < len; ++i) {\n    x = arguments[i];\n\n    for (k in x) {\n      _[k] = x[k];\n    }\n  }\n\n  return _;\n}\n\n/**\n * Return an array with minimum and maximum values, in the\n * form [min, max]. Ignores null, undefined, and NaN values.\n */\nfunction extent (array, f) {\n  let i = 0,\n      n,\n      v,\n      min,\n      max;\n\n  if (array && (n = array.length)) {\n    if (f == null) {\n      // find first valid value\n      for (v = array[i]; i < n && (v == null || v !== v); v = array[++i]);\n\n      min = max = v; // visit all other values\n\n      for (; i < n; ++i) {\n        v = array[i]; // skip null/undefined; NaN will fail all comparisons\n\n        if (v != null) {\n          if (v < min) min = v;\n          if (v > max) max = v;\n        }\n      }\n    } else {\n      // find first valid value\n      for (v = f(array[i]); i < n && (v == null || v !== v); v = f(array[++i]));\n\n      min = max = v; // visit all other values\n\n      for (; i < n; ++i) {\n        v = f(array[i]); // skip null/undefined; NaN will fail all comparisons\n\n        if (v != null) {\n          if (v < min) min = v;\n          if (v > max) max = v;\n        }\n      }\n    }\n  }\n\n  return [min, max];\n}\n\nfunction extentIndex (array, f) {\n  const n = array.length;\n  let i = -1,\n      a,\n      b,\n      c,\n      u,\n      v;\n\n  if (f == null) {\n    while (++i < n) {\n      b = array[i];\n\n      if (b != null && b >= b) {\n        a = c = b;\n        break;\n      }\n    }\n\n    if (i === n) return [-1, -1];\n    u = v = i;\n\n    while (++i < n) {\n      b = array[i];\n\n      if (b != null) {\n        if (a > b) {\n          a = b;\n          u = i;\n        }\n\n        if (c < b) {\n          c = b;\n          v = i;\n        }\n      }\n    }\n  } else {\n    while (++i < n) {\n      b = f(array[i], i, array);\n\n      if (b != null && b >= b) {\n        a = c = b;\n        break;\n      }\n    }\n\n    if (i === n) return [-1, -1];\n    u = v = i;\n\n    while (++i < n) {\n      b = f(array[i], i, array);\n\n      if (b != null) {\n        if (a > b) {\n          a = b;\n          u = i;\n        }\n\n        if (c < b) {\n          c = b;\n          v = i;\n        }\n      }\n    }\n  }\n\n  return [u, v];\n}\n\nconst hop = Object.prototype.hasOwnProperty;\nfunction has (object, property) {\n  return hop.call(object, property);\n}\n\nconst NULL = {};\nfunction fastmap (input) {\n  let obj = {},\n      test;\n\n  function has$1(key) {\n    return has(obj, key) && obj[key] !== NULL;\n  }\n\n  const map = {\n    size: 0,\n    empty: 0,\n    object: obj,\n    has: has$1,\n\n    get(key) {\n      return has$1(key) ? obj[key] : undefined;\n    },\n\n    set(key, value) {\n      if (!has$1(key)) {\n        ++map.size;\n        if (obj[key] === NULL) --map.empty;\n      }\n\n      obj[key] = value;\n      return this;\n    },\n\n    delete(key) {\n      if (has$1(key)) {\n        --map.size;\n        ++map.empty;\n        obj[key] = NULL;\n      }\n\n      return this;\n    },\n\n    clear() {\n      map.size = map.empty = 0;\n      map.object = obj = {};\n    },\n\n    test(_) {\n      if (arguments.length) {\n        test = _;\n        return map;\n      } else {\n        return test;\n      }\n    },\n\n    clean() {\n      const next = {};\n      let size = 0;\n\n      for (const key in obj) {\n        const value = obj[key];\n\n        if (value !== NULL && (!test || !test(value))) {\n          next[key] = value;\n          ++size;\n        }\n      }\n\n      map.size = size;\n      map.empty = 0;\n      map.object = obj = next;\n    }\n\n  };\n  if (input) Object.keys(input).forEach(key => {\n    map.set(key, input[key]);\n  });\n  return map;\n}\n\nfunction flush (range, value, threshold, left, right, center) {\n  if (!threshold && threshold !== 0) return center;\n  const t = +threshold;\n  let a = range[0],\n      b = peek(range),\n      l; // swap endpoints if range is reversed\n\n  if (b < a) {\n    l = a;\n    a = b;\n    b = l;\n  } // compare value to endpoints\n\n\n  l = Math.abs(value - a);\n  const r = Math.abs(b - value); // adjust if value is within threshold distance of endpoint\n\n  return l < r && l <= t ? left : r <= t ? right : center;\n}\n\nfunction inherits (child, parent, members) {\n  const proto = child.prototype = Object.create(parent.prototype);\n  Object.defineProperty(proto, 'constructor', {\n    value: child,\n    writable: true,\n    enumerable: true,\n    configurable: true\n  });\n  return extend(proto, members);\n}\n\n/**\n * Predicate that returns true if the value lies within the span\n * of the given range. The left and right flags control the use\n * of inclusive (true) or exclusive (false) comparisons.\n */\nfunction inrange (value, range, left, right) {\n  let r0 = range[0],\n      r1 = range[range.length - 1],\n      t;\n\n  if (r0 > r1) {\n    t = r0;\n    r0 = r1;\n    r1 = t;\n  }\n\n  left = left === undefined || left;\n  right = right === undefined || right;\n  return (left ? r0 <= value : r0 < value) && (right ? value <= r1 : value < r1);\n}\n\nfunction isBoolean (_) {\n  return typeof _ === 'boolean';\n}\n\nfunction isDate (_) {\n  return Object.prototype.toString.call(_) === '[object Date]';\n}\n\nfunction isIterable (_) {\n  return _ && isFunction(_[Symbol.iterator]);\n}\n\nfunction isNumber (_) {\n  return typeof _ === 'number';\n}\n\nfunction isRegExp (_) {\n  return Object.prototype.toString.call(_) === '[object RegExp]';\n}\n\nfunction isString (_) {\n  return typeof _ === 'string';\n}\n\nfunction key (fields, flat, opt) {\n  if (fields) {\n    fields = flat ? array(fields).map(f => f.replace(/\\\\(.)/g, '$1')) : array(fields);\n  }\n\n  const len = fields && fields.length,\n        gen = opt && opt.get || getter,\n        map = f => gen(flat ? [f] : splitAccessPath(f));\n\n  let fn;\n\n  if (!len) {\n    fn = function () {\n      return '';\n    };\n  } else if (len === 1) {\n    const get = map(fields[0]);\n\n    fn = function (_) {\n      return '' + get(_);\n    };\n  } else {\n    const get = fields.map(map);\n\n    fn = function (_) {\n      let s = '' + get[0](_),\n          i = 0;\n\n      while (++i < len) s += '|' + get[i](_);\n\n      return s;\n    };\n  }\n\n  return accessor(fn, fields, 'key');\n}\n\nfunction lerp (array, frac) {\n  const lo = array[0],\n        hi = peek(array),\n        f = +frac;\n  return !f ? lo : f === 1 ? hi : lo + f * (hi - lo);\n}\n\nconst DEFAULT_MAX_SIZE = 10000; // adapted from https://github.com/dominictarr/hashlru/ (MIT License)\n\nfunction lruCache (maxsize) {\n  maxsize = +maxsize || DEFAULT_MAX_SIZE;\n  let curr, prev, size;\n\n  const clear = () => {\n    curr = {};\n    prev = {};\n    size = 0;\n  };\n\n  const update = (key, value) => {\n    if (++size > maxsize) {\n      prev = curr;\n      curr = {};\n      size = 1;\n    }\n\n    return curr[key] = value;\n  };\n\n  clear();\n  return {\n    clear,\n    has: key => has(curr, key) || has(prev, key),\n    get: key => has(curr, key) ? curr[key] : has(prev, key) ? update(key, prev[key]) : undefined,\n    set: (key, value) => has(curr, key) ? curr[key] = value : update(key, value)\n  };\n}\n\nfunction merge (compare, array0, array1, output) {\n  const n0 = array0.length,\n        n1 = array1.length;\n  if (!n1) return array0;\n  if (!n0) return array1;\n  const merged = output || new array0.constructor(n0 + n1);\n  let i0 = 0,\n      i1 = 0,\n      i = 0;\n\n  for (; i0 < n0 && i1 < n1; ++i) {\n    merged[i] = compare(array0[i0], array1[i1]) > 0 ? array1[i1++] : array0[i0++];\n  }\n\n  for (; i0 < n0; ++i0, ++i) {\n    merged[i] = array0[i0];\n  }\n\n  for (; i1 < n1; ++i1, ++i) {\n    merged[i] = array1[i1];\n  }\n\n  return merged;\n}\n\nfunction repeat (str, reps) {\n  let s = '';\n\n  while (--reps >= 0) s += str;\n\n  return s;\n}\n\nfunction pad (str, length, padchar, align) {\n  const c = padchar || ' ',\n        s = str + '',\n        n = length - s.length;\n  return n <= 0 ? s : align === 'left' ? repeat(c, n) + s : align === 'center' ? repeat(c, ~~(n / 2)) + s + repeat(c, Math.ceil(n / 2)) : s + repeat(c, n);\n}\n\n/**\n * Return the numerical span of an array: the difference between\n * the last and first values.\n */\n\nfunction span (array) {\n  return array && peek(array) - array[0] || 0;\n}\n\nfunction $(x) {\n  return isArray(x) ? '[' + x.map($) + ']' : isObject(x) || isString(x) ? // Output valid JSON and JS source strings.\n  // See http://timelessrepo.com/json-isnt-a-javascript-subset\n  JSON.stringify(x).replace('\\u2028', '\\\\u2028').replace('\\u2029', '\\\\u2029') : x;\n}\n\nfunction toBoolean (_) {\n  return _ == null || _ === '' ? null : !_ || _ === 'false' || _ === '0' ? false : !!_;\n}\n\nconst defaultParser = _ => isNumber(_) ? _ : isDate(_) ? _ : Date.parse(_);\n\nfunction toDate (_, parser) {\n  parser = parser || defaultParser;\n  return _ == null || _ === '' ? null : parser(_);\n}\n\nfunction toString (_) {\n  return _ == null || _ === '' ? null : _ + '';\n}\n\nfunction toSet (_) {\n  const s = {},\n        n = _.length;\n\n  for (let i = 0; i < n; ++i) s[_[i]] = true;\n\n  return s;\n}\n\nfunction truncate (str, length, align, ellipsis) {\n  const e = ellipsis != null ? ellipsis : '\\u2026',\n        s = str + '',\n        n = s.length,\n        l = Math.max(0, length - e.length);\n  return n <= length ? s : align === 'left' ? e + s.slice(n - l) : align === 'center' ? s.slice(0, Math.ceil(l / 2)) + e + s.slice(n - ~~(l / 2)) : s.slice(0, l) + e;\n}\n\nfunction visitArray (array, filter, visitor) {\n  if (array) {\n    if (filter) {\n      const n = array.length;\n\n      for (let i = 0; i < n; ++i) {\n        const t = filter(array[i]);\n        if (t) visitor(t, i, array);\n      }\n    } else {\n      array.forEach(visitor);\n    }\n  }\n}\n\n\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,[encoded data, 33068 characters]\n//# sourceURL=webpack-internal:///./node_modules/vega-format/node_modules/vega-util/build/vega-util.module.js\n");

/***/ }),

/***/ "./node_modules/vega-functions/build/vega-functions.module.js":
/*!********************************************************************!*\
  !*** ./node_modules/vega-functions/build/vega-functions.module.js ***!
  \********************************************************************/
/*! exports provided: DataPrefix, IndexPrefix, ScalePrefix, SignalPrefix, bandspace, bandwidth, codeGenerator, codegenParams, containerSize, contrast, copy, data, dataVisitor, dayAbbrevFormat, dayFormat, debug, domain, encode, expressionFunction, format, functionContext, geoArea, geoBounds, geoCentroid, geoShape, inScope, indata, indataVisitor, indexof, info, invert, join, lastindexof, luminance, merge, modify, monthAbbrevFormat, monthFormat, parseExpression, pathShape, pinchAngle, pinchDistance, pluck, range, replace, reverse, scale, scaleGradient, scaleVisitor, screen, setdata, slice, timeFormat, timeParse, treeAncestors, treePath, utcFormat, utcParse, warn, windowSize */
/***/ (function(module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"DataPrefix\", function() { return DataPrefix; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"IndexPrefix\", function() { return IndexPrefix; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"ScalePrefix\", function() { return ScalePrefix; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"SignalPrefix\", function() { return SignalPrefix; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"bandspace\", function() { return bandspace; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"bandwidth\", function() { return bandwidth; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"codeGenerator\", function() { return codeGenerator; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"codegenParams\", function() { return codegenParams; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"containerSize\", function() { return containerSize; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"contrast\", function() { return contrast; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"copy\", function() { return copy; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"data\", function() { return data; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"dataVisitor\", function() { return dataVisitor; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"dayAbbrevFormat\", function() { return dayAbbrevFormat; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"dayFormat\", function() { return dayFormat; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"debug\", function() { return debug; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"domain\", function() { return domain; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"encode\", function() { return encode; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"expressionFunction\", function() { return expressionFunction; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"format\", function() { return format; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"functionContext\", function() { return functionContext; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"geoArea\", function() { return geoArea; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"geoBounds\", function() { return geoBounds; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"geoCentroid\", function() { return geoCentroid; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"geoShape\", function() { return geoShape; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"inScope\", function() { return inScope; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"indata\", function() { return indata; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"indataVisitor\", function() { return indataVisitor; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"indexof\", function() { return indexof; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"info\", function() { return info; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"invert\", function() { return invert; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"join\", function() { return join; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"lastindexof\", function() { return lastindexof; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"luminance\", function() { return luminance; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"merge\", function() { return merge; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"modify\", function() { return modify; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"monthAbbrevFormat\", function() { return monthAbbrevFormat; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"monthFormat\", function() { return monthFormat; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"parseExpression\", function() { return parser; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"pathShape\", function() { return pathShape; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"pinchAngle\", function() { return pinchAngle; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"pinchDistance\", function() { return pinchDistance; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"pluck\", function() { return pluck; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"range\", function() { return range; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"replace\", function() { return replace; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"reverse\", function() { return reverse; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"scale\", function() { return scale; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"scaleGradient\", function() { return scaleGradient; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"scaleVisitor\", function() { return scaleVisitor; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"screen\", function() { return screen; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"setdata\", function() { return setdata; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"slice\", function() { return slice; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"timeFormat\", function() { return timeFormat; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"timeParse\", function() { return timeParse; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"treeAncestors\", function() { return treeAncestors; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"treePath\", function() { return treePath; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"utcFormat\", function() { return utcFormat; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"utcParse\", function() { return utcParse; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"warn\", function() { return warn; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"windowSize\", function() { return windowSize; });\n/* harmony import */ var vega_util__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! vega-util */ \"./node_modules/vega-functions/node_modules/vega-util/build/vega-util.module.js\");\n/* harmony import */ var vega_expression__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! vega-expression */ \"./node_modules/vega-functions/node_modules/vega-expression/build/vega-expression.module.js\");\n/* harmony import */ var d3_geo__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! d3-geo */ \"./node_modules/vega-functions/node_modules/d3-geo/src/index.js\");\n/* harmony import */ var d3_color__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! d3-color */ \"./node_modules/vega-functions/node_modules/d3-color/src/index.js\");\n/* harmony import */ var vega_dataflow__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! vega-dataflow */ \"./node_modules/vega-functions/node_modules/vega-dataflow/build/vega-dataflow.module.js\");\n/* harmony import */ var vega_scale__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! vega-scale */ \"./node_modules/vega-functions/node_modules/vega-scale/build/vega-scale.module.js\");\n/* harmony import */ var vega_scenegraph__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! vega-scenegraph */ \"./node_modules/vega-functions/node_modules/vega-scenegraph/build/vega-scenegraph.module.js\");\n/* harmony import */ var vega_selections__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! vega-selections */ \"./node_modules/vega-selections/build/vega-selection.module.js\");\n/* harmony import */ var vega_statistics__WEBPACK_IMPORTED_MODULE_8__ = __webpack_require__(/*! vega-statistics */ \"./node_modules/vega-statistics/build/vega-statistics.module.js\");\n/* harmony import */ var vega_time__WEBPACK_IMPORTED_MODULE_9__ = __webpack_require__(/*! vega-time */ \"./node_modules/vega-time/build/vega-time.module.js\");\n/* harmony import */ var d3_array__WEBPACK_IMPORTED_MODULE_10__ = __webpack_require__(/*! d3-array */ \"./node_modules/d3-array/src/index.js\");\n\n\n\n\n\n\n\n\n\n\n\n\nfunction data(name) {\n  const data = this.context.data[name];\n  return data ? data.values.value : [];\n}\nfunction indata(name, field, value) {\n  const index = this.context.data[name]['index:' + field],\n        entry = index ? index.value.get(value) : undefined;\n  return entry ? entry.count : entry;\n}\nfunction setdata(name, tuples) {\n  const df = this.context.dataflow,\n        data = this.context.data[name],\n        input = data.input;\n  df.pulse(input, df.changeset().remove(vega_util__WEBPACK_IMPORTED_MODULE_0__[\"truthy\"]).insert(tuples));\n  return 1;\n}\n\nfunction encode (item, name, retval) {\n  if (item) {\n    const df = this.context.dataflow,\n          target = item.mark.source;\n    df.pulse(target, df.changeset().encode(item, name));\n  }\n\n  return retval !== undefined ? retval : item;\n}\n\nconst wrap = method => function (value, spec) {\n  const locale = this.context.dataflow.locale();\n  return locale[method](spec)(value);\n};\n\nconst format = wrap('format');\nconst timeFormat = wrap('timeFormat');\nconst utcFormat = wrap('utcFormat');\nconst timeParse = wrap('timeParse');\nconst utcParse = wrap('utcParse');\nconst dateObj = new Date(2000, 0, 1);\n\nfunction time(month, day, specifier) {\n  if (!Number.isInteger(month) || !Number.isInteger(day)) return '';\n  dateObj.setYear(2000);\n  dateObj.setMonth(month);\n  dateObj.setDate(day);\n  return timeFormat.call(this, dateObj, specifier);\n}\n\nfunction monthFormat(month) {\n  return time.call(this, month, 1, '%B');\n}\nfunction monthAbbrevFormat(month) {\n  return time.call(this, month, 1, '%b');\n}\nfunction dayFormat(day) {\n  return time.call(this, 0, 2 + day, '%A');\n}\nfunction dayAbbrevFormat(day) {\n  return time.call(this, 0, 2 + day, '%a');\n}\n\nconst DataPrefix = ':';\nconst IndexPrefix = '@';\nconst ScalePrefix = '%';\nconst SignalPrefix = '$';\n\nfunction dataVisitor(name, args, scope, params) {\n  if (args[0].type !== vega_expression__WEBPACK_IMPORTED_MODULE_1__[\"Literal\"]) {\n    Object(vega_util__WEBPACK_IMPORTED_MODULE_0__[\"error\"])('First argument to data functions must be a string literal.');\n  }\n\n  const data = args[0].value,\n        dataName = DataPrefix + data;\n\n  if (!Object(vega_util__WEBPACK_IMPORTED_MODULE_0__[\"hasOwnProperty\"])(dataName, params)) {\n    try {\n      params[dataName] = scope.getData(data).tuplesRef();\n    } catch (err) {// if data set does not exist, there's nothing to track\n    }\n  }\n}\nfunction indataVisitor(name, args, scope, params) {\n  if (args[0].type !== vega_expression__WEBPACK_IMPORTED_MODULE_1__[\"Literal\"]) Object(vega_util__WEBPACK_IMPORTED_MODULE_0__[\"error\"])('First argument to indata must be a string literal.');\n  if (args[1].type !== vega_expression__WEBPACK_IMPORTED_MODULE_1__[\"Literal\"]) Object(vega_util__WEBPACK_IMPORTED_MODULE_0__[\"error\"])('Second argument to indata must be a string literal.');\n  const data = args[0].value,\n        field = args[1].value,\n        indexName = IndexPrefix + field;\n\n  if (!Object(vega_util__WEBPACK_IMPORTED_MODULE_0__[\"hasOwnProperty\"])(indexName, params)) {\n    params[indexName] = scope.getData(data).indataRef(scope, field);\n  }\n}\nfunction scaleVisitor(name, args, scope, params) {\n  if (args[0].type === vega_expression__WEBPACK_IMPORTED_MODULE_1__[\"Literal\"]) {\n    // add scale dependency\n    addScaleDependency(scope, params, args[0].value);\n  } else {\n    // indirect scale lookup; add all scales as parameters\n    for (name in scope.scales) {\n      addScaleDependency(scope, params, name);\n    }\n  }\n}\n\nfunction addScaleDependency(scope, params, name) {\n  const scaleName = ScalePrefix + name;\n\n  if (!Object(vega_util__WEBPACK_IMPORTED_MODULE_0__[\"hasOwnProperty\"])(params, scaleName)) {\n    try {\n      params[scaleName] = scope.scaleRef(name);\n    } catch (err) {// TODO: error handling? warning?\n    }\n  }\n}\n\nfunction getScale(name, ctx) {\n  let s;\n  return Object(vega_util__WEBPACK_IMPORTED_MODULE_0__[\"isFunction\"])(name) ? name : Object(vega_util__WEBPACK_IMPORTED_MODULE_0__[\"isString\"])(name) ? (s = ctx.scales[name]) && s.value : undefined;\n}\nfunction internalScaleFunctions(codegen, fnctx, visitors) {\n  // add helper method to the 'this' expression function context\n  fnctx.__bandwidth = s => s && s.bandwidth ? s.bandwidth() : 0; // register AST visitors for internal scale functions\n\n\n  visitors._bandwidth = scaleVisitor;\n  visitors._range = scaleVisitor;\n  visitors._scale = scaleVisitor; // resolve scale reference directly to the signal hash argument\n\n  const ref = arg => '_[' + (arg.type === vega_expression__WEBPACK_IMPORTED_MODULE_1__[\"Literal\"] ? Object(vega_util__WEBPACK_IMPORTED_MODULE_0__[\"stringValue\"])(ScalePrefix + arg.value) : Object(vega_util__WEBPACK_IMPORTED_MODULE_0__[\"stringValue\"])(ScalePrefix) + '+' + codegen(arg)) + ']'; // define and return internal scale function code generators\n  // these internal functions are called by mark encoders\n\n\n  return {\n    _bandwidth: args => \"this.__bandwidth(\".concat(ref(args[0]), \")\"),\n    _range: args => \"\".concat(ref(args[0]), \".range()\"),\n    _scale: args => \"\".concat(ref(args[0]), \"(\").concat(codegen(args[1]), \")\")\n  };\n}\n\nfunction geoMethod(methodName, globalMethod) {\n  return function (projection, geojson, group) {\n    if (projection) {\n      // projection defined, use it\n      const p = getScale(projection, (group || this).context);\n      return p && p.path[methodName](geojson);\n    } else {\n      // projection undefined, use global method\n      return globalMethod(geojson);\n    }\n  };\n}\n\nconst geoArea = geoMethod('area', d3_geo__WEBPACK_IMPORTED_MODULE_2__[\"geoArea\"]);\nconst geoBounds = geoMethod('bounds', d3_geo__WEBPACK_IMPORTED_MODULE_2__[\"geoBounds\"]);\nconst geoCentroid = geoMethod('centroid', d3_geo__WEBPACK_IMPORTED_MODULE_2__[\"geoCentroid\"]);\n\nfunction inScope (item) {\n  const group = this.context.group;\n  let value = false;\n  if (group) while (item) {\n    if (item === group) {\n      value = true;\n      break;\n    }\n\n    item = item.mark.group;\n  }\n  return value;\n}\n\nfunction log(df, method, args) {\n  try {\n    df[method].apply(df, ['EXPRESSION'].concat([].slice.call(args)));\n  } catch (err) {\n    df.warn(err);\n  }\n\n  return args[args.length - 1];\n}\n\nfunction warn() {\n  return log(this.context.dataflow, 'warn', arguments);\n}\nfunction info() {\n  return log(this.context.dataflow, 'info', arguments);\n}\nfunction debug() {\n  return log(this.context.dataflow, 'debug', arguments);\n}\n\nfunction channel_luminance_value(channelValue) {\n  const val = channelValue / 255;\n\n  if (val <= 0.03928) {\n    return val / 12.92;\n  }\n\n  return Math.pow((val + 0.055) / 1.055, 2.4);\n}\n\nfunction luminance(color) {\n  const c = Object(d3_color__WEBPACK_IMPORTED_MODULE_3__[\"rgb\"])(color),\n        r = channel_luminance_value(c.r),\n        g = channel_luminance_value(c.g),\n        b = channel_luminance_value(c.b);\n  return 0.2126 * r + 0.7152 * g + 0.0722 * b;\n} // https://www.w3.org/TR/2008/REC-WCAG20-20081211/#contrast-ratiodef\n\nfunction contrast(color1, color2) {\n  const lum1 = luminance(color1),\n        lum2 = luminance(color2),\n        lumL = Math.max(lum1, lum2),\n        lumD = Math.min(lum1, lum2);\n  return (lumL + 0.05) / (lumD + 0.05);\n}\n\nfunction merge () {\n  const args = [].slice.call(arguments);\n  args.unshift({});\n  return Object(vega_util__WEBPACK_IMPORTED_MODULE_0__[\"extend\"])(...args);\n}\n\nfunction equal(a, b) {\n  return a === b || a !== a && b !== b ? true : Object(vega_util__WEBPACK_IMPORTED_MODULE_0__[\"isArray\"])(a) ? Object(vega_util__WEBPACK_IMPORTED_MODULE_0__[\"isArray\"])(b) && a.length === b.length ? equalArray(a, b) : false : Object(vega_util__WEBPACK_IMPORTED_MODULE_0__[\"isObject\"])(a) && Object(vega_util__WEBPACK_IMPORTED_MODULE_0__[\"isObject\"])(b) ? equalObject(a, b) : false;\n}\n\nfunction equalArray(a, b) {\n  for (let i = 0, n = a.length; i < n; ++i) {\n    if (!equal(a[i], b[i])) return false;\n  }\n\n  return true;\n}\n\nfunction equalObject(a, b) {\n  for (const key in a) {\n    if (!equal(a[key], b[key])) return false;\n  }\n\n  return true;\n}\n\nfunction removePredicate(props) {\n  return _ => equalObject(props, _);\n}\n\nfunction modify (name, insert, remove, toggle, modify, values) {\n  const df = this.context.dataflow,\n        data = this.context.data[name],\n        input = data.input,\n        stamp = df.stamp();\n  let changes = data.changes,\n      predicate,\n      key;\n\n  if (df._trigger === false || !(input.value.length || insert || toggle)) {\n    // nothing to do!\n    return 0;\n  }\n\n  if (!changes || changes.stamp < stamp) {\n    data.changes = changes = df.changeset();\n    changes.stamp = stamp;\n    df.runAfter(() => {\n      data.modified = true;\n      df.pulse(input, changes).run();\n    }, true, 1);\n  }\n\n  if (remove) {\n    predicate = remove === true ? vega_util__WEBPACK_IMPORTED_MODULE_0__[\"truthy\"] : Object(vega_util__WEBPACK_IMPORTED_MODULE_0__[\"isArray\"])(remove) || Object(vega_dataflow__WEBPACK_IMPORTED_MODULE_4__[\"isTuple\"])(remove) ? remove : removePredicate(remove);\n    changes.remove(predicate);\n  }\n\n  if (insert) {\n    changes.insert(insert);\n  }\n\n  if (toggle) {\n    predicate = removePredicate(toggle);\n\n    if (input.value.some(predicate)) {\n      changes.remove(predicate);\n    } else {\n      changes.insert(toggle);\n    }\n  }\n\n  if (modify) {\n    for (key in values) {\n      changes.modify(modify, key, values[key]);\n    }\n  }\n\n  return 1;\n}\n\nfunction pinchDistance(event) {\n  const t = event.touches,\n        dx = t[0].clientX - t[1].clientX,\n        dy = t[0].clientY - t[1].clientY;\n  return Math.sqrt(dx * dx + dy * dy);\n}\nfunction pinchAngle(event) {\n  const t = event.touches;\n  return Math.atan2(t[0].clientY - t[1].clientY, t[0].clientX - t[1].clientX);\n}\n\nconst accessors = {};\nfunction pluck (data, name) {\n  const accessor = accessors[name] || (accessors[name] = Object(vega_util__WEBPACK_IMPORTED_MODULE_0__[\"field\"])(name));\n  return Object(vega_util__WEBPACK_IMPORTED_MODULE_0__[\"isArray\"])(data) ? data.map(accessor) : accessor(data);\n}\n\nfunction array(seq) {\n  return Object(vega_util__WEBPACK_IMPORTED_MODULE_0__[\"isArray\"])(seq) || ArrayBuffer.isView(seq) ? seq : null;\n}\n\nfunction sequence(seq) {\n  return array(seq) || (Object(vega_util__WEBPACK_IMPORTED_MODULE_0__[\"isString\"])(seq) ? seq : null);\n}\n\nfunction join(seq, ...args) {\n  return array(seq).join(...args);\n}\nfunction indexof(seq, ...args) {\n  return sequence(seq).indexOf(...args);\n}\nfunction lastindexof(seq, ...args) {\n  return sequence(seq).lastIndexOf(...args);\n}\nfunction slice(seq, ...args) {\n  return sequence(seq).slice(...args);\n}\nfunction replace(str, pattern, repl) {\n  if (Object(vega_util__WEBPACK_IMPORTED_MODULE_0__[\"isFunction\"])(repl)) Object(vega_util__WEBPACK_IMPORTED_MODULE_0__[\"error\"])('Function argument passed to replace.');\n  return String(str).replace(pattern, repl);\n}\nfunction reverse(seq) {\n  return array(seq).slice().reverse();\n}\n\nfunction bandspace(count, paddingInner, paddingOuter) {\n  return Object(vega_scale__WEBPACK_IMPORTED_MODULE_5__[\"bandSpace\"])(count || 0, paddingInner || 0, paddingOuter || 0);\n}\nfunction bandwidth(name, group) {\n  const s = getScale(name, (group || this).context);\n  return s && s.bandwidth ? s.bandwidth() : 0;\n}\nfunction copy(name, group) {\n  const s = getScale(name, (group || this).context);\n  return s ? s.copy() : undefined;\n}\nfunction domain(name, group) {\n  const s = getScale(name, (group || this).context);\n  return s ? s.domain() : [];\n}\nfunction invert(name, range, group) {\n  const s = getScale(name, (group || this).context);\n  return !s ? undefined : Object(vega_util__WEBPACK_IMPORTED_MODULE_0__[\"isArray\"])(range) ? (s.invertRange || s.invert)(range) : (s.invert || s.invertExtent)(range);\n}\nfunction range(name, group) {\n  const s = getScale(name, (group || this).context);\n  return s && s.range ? s.range() : [];\n}\nfunction scale(name, value, group) {\n  const s = getScale(name, (group || this).context);\n  return s ? s(value) : undefined;\n}\n\nfunction scaleGradient (scale, p0, p1, count, group) {\n  scale = getScale(scale, (group || this).context);\n  const gradient = Object(vega_scenegraph__WEBPACK_IMPORTED_MODULE_6__[\"Gradient\"])(p0, p1);\n  let stops = scale.domain(),\n      min = stops[0],\n      max = Object(vega_util__WEBPACK_IMPORTED_MODULE_0__[\"peek\"])(stops),\n      fraction = vega_util__WEBPACK_IMPORTED_MODULE_0__[\"identity\"];\n\n  if (!(max - min)) {\n    // expand scale if domain has zero span, fix #1479\n    scale = (scale.interpolator ? Object(vega_scale__WEBPACK_IMPORTED_MODULE_5__[\"scale\"])('sequential')().interpolator(scale.interpolator()) : Object(vega_scale__WEBPACK_IMPORTED_MODULE_5__[\"scale\"])('linear')().interpolate(scale.interpolate()).range(scale.range())).domain([min = 0, max = 1]);\n  } else {\n    fraction = Object(vega_scale__WEBPACK_IMPORTED_MODULE_5__[\"scaleFraction\"])(scale, min, max);\n  }\n\n  if (scale.ticks) {\n    stops = scale.ticks(+count || 15);\n    if (min !== stops[0]) stops.unshift(min);\n    if (max !== Object(vega_util__WEBPACK_IMPORTED_MODULE_0__[\"peek\"])(stops)) stops.push(max);\n  }\n\n  stops.forEach(_ => gradient.stop(fraction(_), scale(_)));\n  return gradient;\n}\n\nfunction geoShape(projection, geojson, group) {\n  const p = getScale(projection, (group || this).context);\n  return function (context) {\n    return p ? p.path.context(context)(geojson) : '';\n  };\n}\nfunction pathShape(path) {\n  let p = null;\n  return function (context) {\n    return context ? Object(vega_scenegraph__WEBPACK_IMPORTED_MODULE_6__[\"pathRender\"])(context, p = p || Object(vega_scenegraph__WEBPACK_IMPORTED_MODULE_6__[\"pathParse\"])(path)) : path;\n  };\n}\n\nconst datum = d => d.data;\n\nfunction treeNodes(name, context) {\n  const tree = data.call(context, name);\n  return tree.root && tree.root.lookup || {};\n}\n\nfunction treePath(name, source, target) {\n  const nodes = treeNodes(name, this),\n        s = nodes[source],\n        t = nodes[target];\n  return s && t ? s.path(t).map(datum) : undefined;\n}\nfunction treeAncestors(name, node) {\n  const n = treeNodes(name, this)[node];\n  return n ? n.ancestors().map(datum) : undefined;\n}\n\nconst _window = () => typeof window !== 'undefined' && window || null;\n\nfunction screen() {\n  const w = _window();\n\n  return w ? w.screen : {};\n}\nfunction windowSize() {\n  const w = _window();\n\n  return w ? [w.innerWidth, w.innerHeight] : [undefined, undefined];\n}\nfunction containerSize() {\n  const view = this.context.dataflow,\n        el = view.container && view.container();\n  return el ? [el.clientWidth, el.clientHeight] : [undefined, undefined];\n}\n\nfunction intersect (b, opt, group) {\n  if (!b) return [];\n  const [u, v] = b,\n        box = new vega_scenegraph__WEBPACK_IMPORTED_MODULE_6__[\"Bounds\"]().set(u[0], u[1], v[0], v[1]),\n        scene = group || this.context.dataflow.scenegraph().root;\n  return Object(vega_scenegraph__WEBPACK_IMPORTED_MODULE_6__[\"intersect\"])(scene, box, filter(opt));\n}\n\nfunction filter(opt) {\n  let p = null;\n\n  if (opt) {\n    const types = Object(vega_util__WEBPACK_IMPORTED_MODULE_0__[\"array\"])(opt.marktype),\n          names = Object(vega_util__WEBPACK_IMPORTED_MODULE_0__[\"array\"])(opt.markname);\n\n    p = _ => (!types.length || types.some(t => _.marktype === t)) && (!names.length || names.some(s => _.name === s));\n  }\n\n  return p;\n}\n\nconst functionContext = {\n  random() {\n    return Object(vega_statistics__WEBPACK_IMPORTED_MODULE_8__[\"random\"])();\n  },\n\n  // override default\n  cumulativeNormal: vega_statistics__WEBPACK_IMPORTED_MODULE_8__[\"cumulativeNormal\"],\n  cumulativeLogNormal: vega_statistics__WEBPACK_IMPORTED_MODULE_8__[\"cumulativeLogNormal\"],\n  cumulativeUniform: vega_statistics__WEBPACK_IMPORTED_MODULE_8__[\"cumulativeUniform\"],\n  densityNormal: vega_statistics__WEBPACK_IMPORTED_MODULE_8__[\"densityNormal\"],\n  densityLogNormal: vega_statistics__WEBPACK_IMPORTED_MODULE_8__[\"densityLogNormal\"],\n  densityUniform: vega_statistics__WEBPACK_IMPORTED_MODULE_8__[\"densityUniform\"],\n  quantileNormal: vega_statistics__WEBPACK_IMPORTED_MODULE_8__[\"quantileNormal\"],\n  quantileLogNormal: vega_statistics__WEBPACK_IMPORTED_MODULE_8__[\"quantileLogNormal\"],\n  quantileUniform: vega_statistics__WEBPACK_IMPORTED_MODULE_8__[\"quantileUniform\"],\n  sampleNormal: vega_statistics__WEBPACK_IMPORTED_MODULE_8__[\"sampleNormal\"],\n  sampleLogNormal: vega_statistics__WEBPACK_IMPORTED_MODULE_8__[\"sampleLogNormal\"],\n  sampleUniform: vega_statistics__WEBPACK_IMPORTED_MODULE_8__[\"sampleUniform\"],\n  isArray: vega_util__WEBPACK_IMPORTED_MODULE_0__[\"isArray\"],\n  isBoolean: vega_util__WEBPACK_IMPORTED_MODULE_0__[\"isBoolean\"],\n  isDate: vega_util__WEBPACK_IMPORTED_MODULE_0__[\"isDate\"],\n\n  isDefined(_) {\n    return _ !== undefined;\n  },\n\n  isNumber: vega_util__WEBPACK_IMPORTED_MODULE_0__[\"isNumber\"],\n  isObject: vega_util__WEBPACK_IMPORTED_MODULE_0__[\"isObject\"],\n  isRegExp: vega_util__WEBPACK_IMPORTED_MODULE_0__[\"isRegExp\"],\n  isString: vega_util__WEBPACK_IMPORTED_MODULE_0__[\"isString\"],\n  isTuple: vega_dataflow__WEBPACK_IMPORTED_MODULE_4__[\"isTuple\"],\n\n  isValid(_) {\n    return _ != null && _ === _;\n  },\n\n  toBoolean: vega_util__WEBPACK_IMPORTED_MODULE_0__[\"toBoolean\"],\n  toDate: vega_util__WEBPACK_IMPORTED_MODULE_0__[\"toDate\"],\n  toNumber: vega_util__WEBPACK_IMPORTED_MODULE_0__[\"toNumber\"],\n  toString: vega_util__WEBPACK_IMPORTED_MODULE_0__[\"toString\"],\n  indexof,\n  join,\n  lastindexof,\n  replace,\n  reverse,\n  slice,\n  flush: vega_util__WEBPACK_IMPORTED_MODULE_0__[\"flush\"],\n  lerp: vega_util__WEBPACK_IMPORTED_MODULE_0__[\"lerp\"],\n  merge,\n  pad: vega_util__WEBPACK_IMPORTED_MODULE_0__[\"pad\"],\n  peek: vega_util__WEBPACK_IMPORTED_MODULE_0__[\"peek\"],\n  pluck,\n  span: vega_util__WEBPACK_IMPORTED_MODULE_0__[\"span\"],\n  inrange: vega_util__WEBPACK_IMPORTED_MODULE_0__[\"inrange\"],\n  truncate: vega_util__WEBPACK_IMPORTED_MODULE_0__[\"truncate\"],\n  rgb: d3_color__WEBPACK_IMPORTED_MODULE_3__[\"rgb\"],\n  lab: d3_color__WEBPACK_IMPORTED_MODULE_3__[\"lab\"],\n  hcl: d3_color__WEBPACK_IMPORTED_MODULE_3__[\"hcl\"],\n  hsl: d3_color__WEBPACK_IMPORTED_MODULE_3__[\"hsl\"],\n  luminance,\n  contrast,\n  sequence: d3_array__WEBPACK_IMPORTED_MODULE_10__[\"range\"],\n  format,\n  utcFormat,\n  utcParse,\n  utcOffset: vega_time__WEBPACK_IMPORTED_MODULE_9__[\"utcOffset\"],\n  utcSequence: vega_time__WEBPACK_IMPORTED_MODULE_9__[\"utcSequence\"],\n  timeFormat,\n  timeParse,\n  timeOffset: vega_time__WEBPACK_IMPORTED_MODULE_9__[\"timeOffset\"],\n  timeSequence: vega_time__WEBPACK_IMPORTED_MODULE_9__[\"timeSequence\"],\n  timeUnitSpecifier: vega_time__WEBPACK_IMPORTED_MODULE_9__[\"timeUnitSpecifier\"],\n  monthFormat,\n  monthAbbrevFormat,\n  dayFormat,\n  dayAbbrevFormat,\n  quarter: vega_util__WEBPACK_IMPORTED_MODULE_0__[\"quarter\"],\n  utcquarter: vega_util__WEBPACK_IMPORTED_MODULE_0__[\"utcquarter\"],\n  week: vega_time__WEBPACK_IMPORTED_MODULE_9__[\"week\"],\n  utcweek: vega_time__WEBPACK_IMPORTED_MODULE_9__[\"utcweek\"],\n  dayofyear: vega_time__WEBPACK_IMPORTED_MODULE_9__[\"dayofyear\"],\n  utcdayofyear: vega_time__WEBPACK_IMPORTED_MODULE_9__[\"utcdayofyear\"],\n  warn,\n  info,\n  debug,\n  extent: vega_util__WEBPACK_IMPORTED_MODULE_0__[\"extent\"],\n  inScope,\n  intersect,\n  clampRange: vega_util__WEBPACK_IMPORTED_MODULE_0__[\"clampRange\"],\n  pinchDistance,\n  pinchAngle,\n  screen,\n  containerSize,\n  windowSize,\n  bandspace,\n  setdata,\n  pathShape,\n  panLinear: vega_util__WEBPACK_IMPORTED_MODULE_0__[\"panLinear\"],\n  panLog: vega_util__WEBPACK_IMPORTED_MODULE_0__[\"panLog\"],\n  panPow: vega_util__WEBPACK_IMPORTED_MODULE_0__[\"panPow\"],\n  panSymlog: vega_util__WEBPACK_IMPORTED_MODULE_0__[\"panSymlog\"],\n  zoomLinear: vega_util__WEBPACK_IMPORTED_MODULE_0__[\"zoomLinear\"],\n  zoomLog: vega_util__WEBPACK_IMPORTED_MODULE_0__[\"zoomLog\"],\n  zoomPow: vega_util__WEBPACK_IMPORTED_MODULE_0__[\"zoomPow\"],\n  zoomSymlog: vega_util__WEBPACK_IMPORTED_MODULE_0__[\"zoomSymlog\"],\n  encode,\n  modify\n};\nconst eventFunctions = ['view', 'item', 'group', 'xy', 'x', 'y'],\n      // event functions\neventPrefix = 'event.vega.',\n      // event function prefix\nthisPrefix = 'this.',\n      // function context prefix\nastVisitors = {}; // AST visitors for dependency analysis\n// export code generator parameters\n\nconst codegenParams = {\n  forbidden: ['_'],\n  allowed: ['datum', 'event', 'item'],\n  fieldvar: 'datum',\n  globalvar: id => \"_[\".concat(Object(vega_util__WEBPACK_IMPORTED_MODULE_0__[\"stringValue\"])(SignalPrefix + id), \"]\"),\n  functions: buildFunctions,\n  constants: vega_expression__WEBPACK_IMPORTED_MODULE_1__[\"constants\"],\n  visitors: astVisitors\n}; // export code generator\n\nconst codeGenerator = Object(vega_expression__WEBPACK_IMPORTED_MODULE_1__[\"codegen\"])(codegenParams); // Build expression function registry\n\nfunction buildFunctions(codegen) {\n  const fn = Object(vega_expression__WEBPACK_IMPORTED_MODULE_1__[\"functions\"])(codegen);\n  eventFunctions.forEach(name => fn[name] = eventPrefix + name);\n\n  for (const name in functionContext) {\n    fn[name] = thisPrefix + name;\n  }\n\n  Object(vega_util__WEBPACK_IMPORTED_MODULE_0__[\"extend\"])(fn, internalScaleFunctions(codegen, functionContext, astVisitors));\n  return fn;\n} // Register an expression function\n\n\nfunction expressionFunction(name, fn, visitor) {\n  if (arguments.length === 1) {\n    return functionContext[name];\n  } // register with the functionContext\n\n\n  functionContext[name] = fn; // if there is an astVisitor register that, too\n\n  if (visitor) astVisitors[name] = visitor; // if the code generator has already been initialized,\n  // we need to also register the function with it\n\n  if (codeGenerator) codeGenerator.functions[name] = thisPrefix + name;\n  return this;\n} // register expression functions with ast visitors\n\nexpressionFunction('bandwidth', bandwidth, scaleVisitor);\nexpressionFunction('copy', copy, scaleVisitor);\nexpressionFunction('domain', domain, scaleVisitor);\nexpressionFunction('range', range, scaleVisitor);\nexpressionFunction('invert', invert, scaleVisitor);\nexpressionFunction('scale', scale, scaleVisitor);\nexpressionFunction('gradient', scaleGradient, scaleVisitor);\nexpressionFunction('geoArea', geoArea, scaleVisitor);\nexpressionFunction('geoBounds', geoBounds, scaleVisitor);\nexpressionFunction('geoCentroid', geoCentroid, scaleVisitor);\nexpressionFunction('geoShape', geoShape, scaleVisitor);\nexpressionFunction('indata', indata, indataVisitor);\nexpressionFunction('data', data, dataVisitor);\nexpressionFunction('treePath', treePath, dataVisitor);\nexpressionFunction('treeAncestors', treeAncestors, dataVisitor); // register Vega-Lite selection functions\n\nexpressionFunction('vlSelectionTest', vega_selections__WEBPACK_IMPORTED_MODULE_7__[\"selectionTest\"], vega_selections__WEBPACK_IMPORTED_MODULE_7__[\"selectionVisitor\"]);\nexpressionFunction('vlSelectionIdTest', vega_selections__WEBPACK_IMPORTED_MODULE_7__[\"selectionIdTest\"], vega_selections__WEBPACK_IMPORTED_MODULE_7__[\"selectionVisitor\"]);\nexpressionFunction('vlSelectionResolve', vega_selections__WEBPACK_IMPORTED_MODULE_7__[\"selectionResolve\"], vega_selections__WEBPACK_IMPORTED_MODULE_7__[\"selectionVisitor\"]);\nexpressionFunction('vlSelectionTuples', vega_selections__WEBPACK_IMPORTED_MODULE_7__[\"selectionTuples\"]);\n\nfunction parser (expr, scope) {\n  const params = {}; // parse the expression to an abstract syntax tree (ast)\n\n  let ast;\n\n  try {\n    expr = Object(vega_util__WEBPACK_IMPORTED_MODULE_0__[\"isString\"])(expr) ? expr : Object(vega_util__WEBPACK_IMPORTED_MODULE_0__[\"stringValue\"])(expr) + '';\n    ast = Object(vega_expression__WEBPACK_IMPORTED_MODULE_1__[\"parse\"])(expr);\n  } catch (err) {\n    Object(vega_util__WEBPACK_IMPORTED_MODULE_0__[\"error\"])('Expression parse error: ' + expr);\n  } // analyze ast function calls for dependencies\n\n\n  ast.visit(node => {\n    if (node.type !== vega_expression__WEBPACK_IMPORTED_MODULE_1__[\"CallExpression\"]) return;\n    const name = node.callee.name,\n          visit = codegenParams.visitors[name];\n    if (visit) visit(name, node.arguments, scope, params);\n  }); // perform code generation\n\n  const gen = codeGenerator(ast); // collect signal dependencies\n\n  gen.globals.forEach(name => {\n    const signalName = SignalPrefix + name;\n\n    if (!Object(vega_util__WEBPACK_IMPORTED_MODULE_0__[\"hasOwnProperty\"])(params, signalName) && scope.getSignal(name)) {\n      params[signalName] = scope.signalRef(name);\n    }\n  }); // return generated expression code and dependencies\n\n  return {\n    $expr: Object(vega_util__WEBPACK_IMPORTED_MODULE_0__[\"extend\"])({\n      code: gen.code\n    }, scope.options.ast ? {\n      ast\n    } : null),\n    $fields: gen.fields,\n    $params: params\n  };\n}\n\n\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,[encoded data, 32980 characters]\n//# sourceURL=webpack-internal:///./node_modules/vega-functions/build/vega-functions.module.js\n");

/***/ }),

/***/ "./node_modules/vega-functions/node_modules/d3-color/src/color.js":
/*!************************************************************************!*\
  !*** ./node_modules/vega-functions/node_modules/d3-color/src/color.js ***!
  \************************************************************************/
/*! exports provided: Color, darker, brighter, default, rgbConvert, rgb, Rgb, hslConvert, hsl */
/***/ (function(module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"Color\", function() { return Color; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"darker\", function() { return darker; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"brighter\", function() { return brighter; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"default\", function() { return color; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"rgbConvert\", function() { return rgbConvert; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"rgb\", function() { return rgb; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"Rgb\", function() { return Rgb; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"hslConvert\", function() { return hslConvert; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"hsl\", function() { return hsl; });\n/* harmony import */ var _define_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./define.js */ \"./node_modules/vega-functions/node_modules/d3-color/src/define.js\");\n\n\nfunction Color() {}\n\nvar darker = 0.7;\nvar brighter = 1 / darker;\n\nvar reI = \"\\\\s*([+-]?\\\\d+)\\\\s*\",\n    reN = \"\\\\s*([+-]?\\\\d*\\\\.?\\\\d+(?:[eE][+-]?\\\\d+)?)\\\\s*\",\n    reP = \"\\\\s*([+-]?\\\\d*\\\\.?\\\\d+(?:[eE][+-]?\\\\d+)?)%\\\\s*\",\n    reHex = /^#([0-9a-f]{3,8})$/,\n    reRgbInteger = new RegExp(\"^rgb\\\\(\" + [reI, reI, reI] + \"\\\\)$\"),\n    reRgbPercent = new RegExp(\"^rgb\\\\(\" + [reP, reP, reP] + \"\\\\)$\"),\n    reRgbaInteger = new RegExp(\"^rgba\\\\(\" + [reI, reI, reI, reN] + \"\\\\)$\"),\n    reRgbaPercent = new RegExp(\"^rgba\\\\(\" + [reP, reP, reP, reN] + \"\\\\)$\"),\n    reHslPercent = new RegExp(\"^hsl\\\\(\" + [reN, reP, reP] + \"\\\\)$\"),\n    reHslaPercent = new RegExp(\"^hsla\\\\(\" + [reN, reP, reP, reN] + \"\\\\)$\");\n\nvar named = {\n  aliceblue: 0xf0f8ff,\n  antiquewhite: 0xfaebd7,\n  aqua: 0x00ffff,\n  aquamarine: 0x7fffd4,\n  azure: 0xf0ffff,\n  beige: 0xf5f5dc,\n  bisque: 0xffe4c4,\n  black: 0x000000,\n  blanchedalmond: 0xffebcd,\n  blue: 0x0000ff,\n  blueviolet: 0x8a2be2,\n  brown: 0xa52a2a,\n  burlywood: 0xdeb887,\n  cadetblue: 0x5f9ea0,\n  chartreuse: 0x7fff00,\n  chocolate: 0xd2691e,\n  coral: 0xff7f50,\n  cornflowerblue: 0x6495ed,\n  cornsilk: 0xfff8dc,\n  crimson: 0xdc143c,\n  cyan: 0x00ffff,\n  darkblue: 0x00008b,\n  darkcyan: 0x008b8b,\n  darkgoldenrod: 0xb8860b,\n  darkgray: 0xa9a9a9,\n  darkgreen: 0x006400,\n  darkgrey: 0xa9a9a9,\n  darkkhaki: 0xbdb76b,\n  darkmagenta: 0x8b008b,\n  darkolivegreen: 0x556b2f,\n  darkorange: 0xff8c00,\n  darkorchid: 0x9932cc,\n  darkred: 0x8b0000,\n  darksalmon: 0xe9967a,\n  darkseagreen: 0x8fbc8f,\n  darkslateblue: 0x483d8b,\n  darkslategray: 0x2f4f4f,\n  darkslategrey: 0x2f4f4f,\n  darkturquoise: 0x00ced1,\n  darkviolet: 0x9400d3,\n  deeppink: 0xff1493,\n  deepskyblue: 0x00bfff,\n  dimgray: 0x696969,\n  dimgrey: 0x696969,\n  dodgerblue: 0x1e90ff,\n  firebrick: 0xb22222,\n  floralwhite: 0xfffaf0,\n  forestgreen: 0x228b22,\n  fuchsia: 0xff00ff,\n  gainsboro: 0xdcdcdc,\n  ghostwhite: 0xf8f8ff,\n  gold: 0xffd700,\n  goldenrod: 0xdaa520,\n  gray: 0x808080,\n  green: 0x008000,\n  greenyellow: 0xadff2f,\n  grey: 0x808080,\n  honeydew: 0xf0fff0,\n  hotpink: 0xff69b4,\n  indianred: 0xcd5c5c,\n  indigo: 0x4b0082,\n  ivory: 0xfffff0,\n  khaki: 0xf0e68c,\n  lavender: 0xe6e6fa,\n  lavenderblush: 0xfff0f5,\n  lawngreen: 0x7cfc00,\n  lemonchiffon: 0xfffacd,\n  lightblue: 0xadd8e6,\n  lightcoral: 0xf08080,\n  lightcyan: 0xe0ffff,\n  lightgoldenrodyellow: 0xfafad2,\n  lightgray: 0xd3d3d3,\n  lightgreen: 0x90ee90,\n  lightgrey: 0xd3d3d3,\n  lightpink: 0xffb6c1,\n  lightsalmon: 0xffa07a,\n  lightseagreen: 0x20b2aa,\n  lightskyblue: 0x87cefa,\n  lightslategray: 0x778899,\n  lightslategrey: 0x778899,\n  lightsteelblue: 0xb0c4de,\n  lightyellow: 0xffffe0,\n  lime: 0x00ff00,\n  limegreen: 0x32cd32,\n  linen: 0xfaf0e6,\n  magenta: 0xff00ff,\n  maroon: 0x800000,\n  mediumaquamarine: 0x66cdaa,\n  mediumblue: 0x0000cd,\n  mediumorchid: 0xba55d3,\n  mediumpurple: 0x9370db,\n  mediumseagreen: 0x3cb371,\n  mediumslateblue: 0x7b68ee,\n  mediumspringgreen: 0x00fa9a,\n  mediumturquoise: 0x48d1cc,\n  mediumvioletred: 0xc71585,\n  midnightblue: 0x191970,\n  mintcream: 0xf5fffa,\n  mistyrose: 0xffe4e1,\n  moccasin: 0xffe4b5,\n  navajowhite: 0xffdead,\n  navy: 0x000080,\n  oldlace: 0xfdf5e6,\n  olive: 0x808000,\n  olivedrab: 0x6b8e23,\n  orange: 0xffa500,\n  orangered: 0xff4500,\n  orchid: 0xda70d6,\n  palegoldenrod: 0xeee8aa,\n  palegreen: 0x98fb98,\n  paleturquoise: 0xafeeee,\n  palevioletred: 0xdb7093,\n  papayawhip: 0xffefd5,\n  peachpuff: 0xffdab9,\n  peru: 0xcd853f,\n  pink: 0xffc0cb,\n  plum: 0xdda0dd,\n  powderblue: 0xb0e0e6,\n  purple: 0x800080,\n  rebeccapurple: 0x663399,\n  red: 0xff0000,\n  rosybrown: 0xbc8f8f,\n  royalblue: 0x4169e1,\n  saddlebrown: 0x8b4513,\n  salmon: 0xfa8072,\n  sandybrown: 0xf4a460,\n  seagreen: 0x2e8b57,\n  seashell: 0xfff5ee,\n  sienna: 0xa0522d,\n  silver: 0xc0c0c0,\n  skyblue: 0x87ceeb,\n  slateblue: 0x6a5acd,\n  slategray: 0x708090,\n  slategrey: 0x708090,\n  snow: 0xfffafa,\n  springgreen: 0x00ff7f,\n  steelblue: 0x4682b4,\n  tan: 0xd2b48c,\n  teal: 0x008080,\n  thistle: 0xd8bfd8,\n  tomato: 0xff6347,\n  turquoise: 0x40e0d0,\n  violet: 0xee82ee,\n  wheat: 0xf5deb3,\n  white: 0xffffff,\n  whitesmoke: 0xf5f5f5,\n  yellow: 0xffff00,\n  yellowgreen: 0x9acd32\n};\n\nObject(_define_js__WEBPACK_IMPORTED_MODULE_0__[\"default\"])(Color, color, {\n  copy: function(channels) {\n    return Object.assign(new this.constructor, this, channels);\n  },\n  displayable: function() {\n    return this.rgb().displayable();\n  },\n  hex: color_formatHex, // Deprecated! Use color.formatHex.\n  formatHex: color_formatHex,\n  formatHsl: color_formatHsl,\n  formatRgb: color_formatRgb,\n  toString: color_formatRgb\n});\n\nfunction color_formatHex() {\n  return this.rgb().formatHex();\n}\n\nfunction color_formatHsl() {\n  return hslConvert(this).formatHsl();\n}\n\nfunction color_formatRgb() {\n  return this.rgb().formatRgb();\n}\n\nfunction color(format) {\n  var m, l;\n  format = (format + \"\").trim().toLowerCase();\n  return (m = reHex.exec(format)) ? (l = m[1].length, m = parseInt(m[1], 16), l === 6 ? rgbn(m) // #ff0000\n      : l === 3 ? new Rgb((m >> 8 & 0xf) | (m >> 4 & 0xf0), (m >> 4 & 0xf) | (m & 0xf0), ((m & 0xf) << 4) | (m & 0xf), 1) // #f00\n      : l === 8 ? rgba(m >> 24 & 0xff, m >> 16 & 0xff, m >> 8 & 0xff, (m & 0xff) / 0xff) // #ff000000\n      : l === 4 ? rgba((m >> 12 & 0xf) | (m >> 8 & 0xf0), (m >> 8 & 0xf) | (m >> 4 & 0xf0), (m >> 4 & 0xf) | (m & 0xf0), (((m & 0xf) << 4) | (m & 0xf)) / 0xff) // #f000\n      : null) // invalid hex\n      : (m = reRgbInteger.exec(format)) ? new Rgb(m[1], m[2], m[3], 1) // rgb(255, 0, 0)\n      : (m = reRgbPercent.exec(format)) ? new Rgb(m[1] * 255 / 100, m[2] * 255 / 100, m[3] * 255 / 100, 1) // rgb(100%, 0%, 0%)\n      : (m = reRgbaInteger.exec(format)) ? rgba(m[1], m[2], m[3], m[4]) // rgba(255, 0, 0, 1)\n      : (m = reRgbaPercent.exec(format)) ? rgba(m[1] * 255 / 100, m[2] * 255 / 100, m[3] * 255 / 100, m[4]) // rgb(100%, 0%, 0%, 1)\n      : (m = reHslPercent.exec(format)) ? hsla(m[1], m[2] / 100, m[3] / 100, 1) // hsl(120, 50%, 50%)\n      : (m = reHslaPercent.exec(format)) ? hsla(m[1], m[2] / 100, m[3] / 100, m[4]) // hsla(120, 50%, 50%, 1)\n      : named.hasOwnProperty(format) ? rgbn(named[format]) // eslint-disable-line no-prototype-builtins\n      : format === \"transparent\" ? new Rgb(NaN, NaN, NaN, 0)\n      : null;\n}\n\nfunction rgbn(n) {\n  return new Rgb(n >> 16 & 0xff, n >> 8 & 0xff, n & 0xff, 1);\n}\n\nfunction rgba(r, g, b, a) {\n  if (a <= 0) r = g = b = NaN;\n  return new Rgb(r, g, b, a);\n}\n\nfunction rgbConvert(o) {\n  if (!(o instanceof Color)) o = color(o);\n  if (!o) return new Rgb;\n  o = o.rgb();\n  return new Rgb(o.r, o.g, o.b, o.opacity);\n}\n\nfunction rgb(r, g, b, opacity) {\n  return arguments.length === 1 ? rgbConvert(r) : new Rgb(r, g, b, opacity == null ? 1 : opacity);\n}\n\nfunction Rgb(r, g, b, opacity) {\n  this.r = +r;\n  this.g = +g;\n  this.b = +b;\n  this.opacity = +opacity;\n}\n\nObject(_define_js__WEBPACK_IMPORTED_MODULE_0__[\"default\"])(Rgb, rgb, Object(_define_js__WEBPACK_IMPORTED_MODULE_0__[\"extend\"])(Color, {\n  brighter: function(k) {\n    k = k == null ? brighter : Math.pow(brighter, k);\n    return new Rgb(this.r * k, this.g * k, this.b * k, this.opacity);\n  },\n  darker: function(k) {\n    k = k == null ? darker : Math.pow(darker, k);\n    return new Rgb(this.r * k, this.g * k, this.b * k, this.opacity);\n  },\n  rgb: function() {\n    return this;\n  },\n  displayable: function() {\n    return (-0.5 <= this.r && this.r < 255.5)\n        && (-0.5 <= this.g && this.g < 255.5)\n        && (-0.5 <= this.b && this.b < 255.5)\n        && (0 <= this.opacity && this.opacity <= 1);\n  },\n  hex: rgb_formatHex, // Deprecated! Use color.formatHex.\n  formatHex: rgb_formatHex,\n  formatRgb: rgb_formatRgb,\n  toString: rgb_formatRgb\n}));\n\nfunction rgb_formatHex() {\n  return \"#\" + hex(this.r) + hex(this.g) + hex(this.b);\n}\n\nfunction rgb_formatRgb() {\n  var a = this.opacity; a = isNaN(a) ? 1 : Math.max(0, Math.min(1, a));\n  return (a === 1 ? \"rgb(\" : \"rgba(\")\n      + Math.max(0, Math.min(255, Math.round(this.r) || 0)) + \", \"\n      + Math.max(0, Math.min(255, Math.round(this.g) || 0)) + \", \"\n      + Math.max(0, Math.min(255, Math.round(this.b) || 0))\n      + (a === 1 ? \")\" : \", \" + a + \")\");\n}\n\nfunction hex(value) {\n  value = Math.max(0, Math.min(255, Math.round(value) || 0));\n  return (value < 16 ? \"0\" : \"\") + value.toString(16);\n}\n\nfunction hsla(h, s, l, a) {\n  if (a <= 0) h = s = l = NaN;\n  else if (l <= 0 || l >= 1) h = s = NaN;\n  else if (s <= 0) h = NaN;\n  return new Hsl(h, s, l, a);\n}\n\nfunction hslConvert(o) {\n  if (o instanceof Hsl) return new Hsl(o.h, o.s, o.l, o.opacity);\n  if (!(o instanceof Color)) o = color(o);\n  if (!o) return new Hsl;\n  if (o instanceof Hsl) return o;\n  o = o.rgb();\n  var r = o.r / 255,\n      g = o.g / 255,\n      b = o.b / 255,\n      min = Math.min(r, g, b),\n      max = Math.max(r, g, b),\n      h = NaN,\n      s = max - min,\n      l = (max + min) / 2;\n  if (s) {\n    if (r === max) h = (g - b) / s + (g < b) * 6;\n    else if (g === max) h = (b - r) / s + 2;\n    else h = (r - g) / s + 4;\n    s /= l < 0.5 ? max + min : 2 - max - min;\n    h *= 60;\n  } else {\n    s = l > 0 && l < 1 ? 0 : h;\n  }\n  return new Hsl(h, s, l, o.opacity);\n}\n\nfunction hsl(h, s, l, opacity) {\n  return arguments.length === 1 ? hslConvert(h) : new Hsl(h, s, l, opacity == null ? 1 : opacity);\n}\n\nfunction Hsl(h, s, l, opacity) {\n  this.h = +h;\n  this.s = +s;\n  this.l = +l;\n  this.opacity = +opacity;\n}\n\nObject(_define_js__WEBPACK_IMPORTED_MODULE_0__[\"default\"])(Hsl, hsl, Object(_define_js__WEBPACK_IMPORTED_MODULE_0__[\"extend\"])(Color, {\n  brighter: function(k) {\n    k = k == null ? brighter : Math.pow(brighter, k);\n    return new Hsl(this.h, this.s, this.l * k, this.opacity);\n  },\n  darker: function(k) {\n    k = k == null ? darker : Math.pow(darker, k);\n    return new Hsl(this.h, this.s, this.l * k, this.opacity);\n  },\n  rgb: function() {\n    var h = this.h % 360 + (this.h < 0) * 360,\n        s = isNaN(h) || isNaN(this.s) ? 0 : this.s,\n        l = this.l,\n        m2 = l + (l < 0.5 ? l : 1 - l) * s,\n        m1 = 2 * l - m2;\n    return new Rgb(\n      hsl2rgb(h >= 240 ? h - 240 : h + 120, m1, m2),\n      hsl2rgb(h, m1, m2),\n      hsl2rgb(h < 120 ? h + 240 : h - 120, m1, m2),\n      this.opacity\n    );\n  },\n  displayable: function() {\n    return (0 <= this.s && this.s <= 1 || isNaN(this.s))\n        && (0 <= this.l && this.l <= 1)\n        && (0 <= this.opacity && this.opacity <= 1);\n  },\n  formatHsl: function() {\n    var a = this.opacity; a = isNaN(a) ? 1 : Math.max(0, Math.min(1, a));\n    return (a === 1 ? \"hsl(\" : \"hsla(\")\n        + (this.h || 0) + \", \"\n        + (this.s || 0) * 100 + \"%, \"\n        + (this.l || 0) * 100 + \"%\"\n        + (a === 1 ? \")\" : \", \" + a + \")\");\n  }\n}));\n\n/* From FvD 13.37, CSS Color Module Level 3 */\nfunction hsl2rgb(h, m1, m2) {\n  return (h < 60 ? m1 + (m2 - m1) * h / 60\n      : h < 180 ? m2\n      : h < 240 ? m1 + (m2 - m1) * (240 - h) / 60\n      : m1) * 255;\n}\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,[encoded data, 17748 characters]\n//# sourceURL=webpack-internal:///./node_modules/vega-functions/node_modules/d3-color/src/color.js\n");

/***/ }),

/***/ "./node_modules/vega-functions/node_modules/d3-color/src/cubehelix.js":
/*!****************************************************************************!*\
  !*** ./node_modules/vega-functions/node_modules/d3-color/src/cubehelix.js ***!
  \****************************************************************************/
/*! exports provided: default, Cubehelix */
/***/ (function(module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"default\", function() { return cubehelix; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"Cubehelix\", function() { return Cubehelix; });\n/* harmony import */ var _define_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./define.js */ \"./node_modules/vega-functions/node_modules/d3-color/src/define.js\");\n/* harmony import */ var _color_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./color.js */ \"./node_modules/vega-functions/node_modules/d3-color/src/color.js\");\n/* harmony import */ var _math_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./math.js */ \"./node_modules/vega-functions/node_modules/d3-color/src/math.js\");\n\n\n\n\nvar A = -0.14861,\n    B = +1.78277,\n    C = -0.29227,\n    D = -0.90649,\n    E = +1.97294,\n    ED = E * D,\n    EB = E * B,\n    BC_DA = B * C - D * A;\n\nfunction cubehelixConvert(o) {\n  if (o instanceof Cubehelix) return new Cubehelix(o.h, o.s, o.l, o.opacity);\n  if (!(o instanceof _color_js__WEBPACK_IMPORTED_MODULE_1__[\"Rgb\"])) o = Object(_color_js__WEBPACK_IMPORTED_MODULE_1__[\"rgbConvert\"])(o);\n  var r = o.r / 255,\n      g = o.g / 255,\n      b = o.b / 255,\n      l = (BC_DA * b + ED * r - EB * g) / (BC_DA + ED - EB),\n      bl = b - l,\n      k = (E * (g - l) - C * bl) / D,\n      s = Math.sqrt(k * k + bl * bl) / (E * l * (1 - l)), // NaN if l=0 or l=1\n      h = s ? Math.atan2(k, bl) * _math_js__WEBPACK_IMPORTED_MODULE_2__[\"degrees\"] - 120 : NaN;\n  return new Cubehelix(h < 0 ? h + 360 : h, s, l, o.opacity);\n}\n\nfunction cubehelix(h, s, l, opacity) {\n  return arguments.length === 1 ? cubehelixConvert(h) : new Cubehelix(h, s, l, opacity == null ? 1 : opacity);\n}\n\nfunction Cubehelix(h, s, l, opacity) {\n  this.h = +h;\n  this.s = +s;\n  this.l = +l;\n  this.opacity = +opacity;\n}\n\nObject(_define_js__WEBPACK_IMPORTED_MODULE_0__[\"default\"])(Cubehelix, cubehelix, Object(_define_js__WEBPACK_IMPORTED_MODULE_0__[\"extend\"])(_color_js__WEBPACK_IMPORTED_MODULE_1__[\"Color\"], {\n  brighter: function(k) {\n    k = k == null ? _color_js__WEBPACK_IMPORTED_MODULE_1__[\"brighter\"] : Math.pow(_color_js__WEBPACK_IMPORTED_MODULE_1__[\"brighter\"], k);\n    return new Cubehelix(this.h, this.s, this.l * k, this.opacity);\n  },\n  darker: function(k) {\n    k = k == null ? _color_js__WEBPACK_IMPORTED_MODULE_1__[\"darker\"] : Math.pow(_color_js__WEBPACK_IMPORTED_MODULE_1__[\"darker\"], k);\n    return new Cubehelix(this.h, this.s, this.l * k, this.opacity);\n  },\n  rgb: function() {\n    var h = isNaN(this.h) ? 0 : (this.h + 120) * _math_js__WEBPACK_IMPORTED_MODULE_2__[\"radians\"],\n        l = +this.l,\n        a = isNaN(this.s) ? 0 : this.s * l * (1 - l),\n        cosh = Math.cos(h),\n        sinh = Math.sin(h);\n    return new _color_js__WEBPACK_IMPORTED_MODULE_1__[\"Rgb\"](\n      255 * (l + a * (A * cosh + B * sinh)),\n      255 * (l + a * (C * cosh + D * sinh)),\n      255 * (l + a * (E * cosh)),\n      this.opacity\n    );\n  }\n}));\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvdmVnYS1mdW5jdGlvbnMvbm9kZV9tb2R1bGVzL2QzLWNvbG9yL3NyYy9jdWJlaGVsaXguanMuanMiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvdmVnYS1mdW5jdGlvbnMvbm9kZV9tb2R1bGVzL2QzLWNvbG9yL3NyYy9jdWJlaGVsaXguanM/YTJjMyJdLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgZGVmaW5lLCB7ZXh0ZW5kfSBmcm9tIFwiLi9kZWZpbmUuanNcIjtcbmltcG9ydCB7Q29sb3IsIHJnYkNvbnZlcnQsIFJnYiwgZGFya2VyLCBicmlnaHRlcn0gZnJvbSBcIi4vY29sb3IuanNcIjtcbmltcG9ydCB7ZGVncmVlcywgcmFkaWFuc30gZnJvbSBcIi4vbWF0aC5qc1wiO1xuXG52YXIgQSA9IC0wLjE0ODYxLFxuICAgIEIgPSArMS43ODI3NyxcbiAgICBDID0gLTAuMjkyMjcsXG4gICAgRCA9IC0wLjkwNjQ5LFxuICAgIEUgPSArMS45NzI5NCxcbiAgICBFRCA9IEUgKiBELFxuICAgIEVCID0gRSAqIEIsXG4gICAgQkNfREEgPSBCICogQyAtIEQgKiBBO1xuXG5mdW5jdGlvbiBjdWJlaGVsaXhDb252ZXJ0KG8pIHtcbiAgaWYgKG8gaW5zdGFuY2VvZiBDdWJlaGVsaXgpIHJldHVybiBuZXcgQ3ViZWhlbGl4KG8uaCwgby5zLCBvLmwsIG8ub3BhY2l0eSk7XG4gIGlmICghKG8gaW5zdGFuY2VvZiBSZ2IpKSBvID0gcmdiQ29udmVydChvKTtcbiAgdmFyIHIgPSBvLnIgLyAyNTUsXG4gICAgICBnID0gby5nIC8gMjU1LFxuICAgICAgYiA9IG8uYiAvIDI1NSxcbiAgICAgIGwgPSAoQkNfREEgKiBiICsgRUQgKiByIC0gRUIgKiBnKSAvIChCQ19EQSArIEVEIC0gRUIpLFxuICAgICAgYmwgPSBiIC0gbCxcbiAgICAgIGsgPSAoRSAqIChnIC0gbCkgLSBDICogYmwpIC8gRCxcbiAgICAgIHMgPSBNYXRoLnNxcnQoayAqIGsgKyBibCAqIGJsKSAvIChFICogbCAqICgxIC0gbCkpLCAvLyBOYU4gaWYgbD0wIG9yIGw9MVxuICAgICAgaCA9IHMgPyBNYXRoLmF0YW4yKGssIGJsKSAqIGRlZ3JlZXMgLSAxMjAgOiBOYU47XG4gIHJldHVybiBuZXcgQ3ViZWhlbGl4KGggPCAwID8gaCArIDM2MCA6IGgsIHMsIGwsIG8ub3BhY2l0eSk7XG59XG5cbmV4cG9ydCBkZWZhdWx0IGZ1bmN0aW9uIGN1YmVoZWxpeChoLCBzLCBsLCBvcGFjaXR5KSB7XG4gIHJldHVybiBhcmd1bWVudHMubGVuZ3RoID09PSAxID8gY3ViZWhlbGl4Q29udmVydChoKSA6IG5ldyBDdWJlaGVsaXgoaCwgcywgbCwgb3BhY2l0eSA9PSBudWxsID8gMSA6IG9wYWNpdHkpO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gQ3ViZWhlbGl4KGgsIHMsIGwsIG9wYWNpdHkpIHtcbiAgdGhpcy5oID0gK2g7XG4gIHRoaXMucyA9ICtzO1xuICB0aGlzLmwgPSArbDtcbiAgdGhpcy5vcGFjaXR5ID0gK29wYWNpdHk7XG59XG5cbmRlZmluZShDdWJlaGVsaXgsIGN1YmVoZWxpeCwgZXh0ZW5kKENvbG9yLCB7XG4gIGJyaWdodGVyOiBmdW5jdGlvbihrKSB7XG4gICAgayA9IGsgPT0gbnVsbCA/IGJyaWdodGVyIDogTWF0aC5wb3coYnJpZ2h0ZXIsIGspO1xuICAgIHJldHVybiBuZXcgQ3ViZWhlbGl4KHRoaXMuaCwgdGhpcy5zLCB0aGlzLmwgKiBrLCB0aGlzLm9wYWNpdHkpO1xuICB9LFxuICBkYXJrZXI6IGZ1bmN0aW9uKGspIHtcbiAgICBrID0gayA9PSBudWxsID8gZGFya2VyIDogTWF0aC5wb3coZGFya2VyLCBrKTtcbiAgICByZXR1cm4gbmV3IEN1YmVoZWxpeCh0aGlzLmgsIHRoaXMucywgdGhpcy5sICogaywgdGhpcy5vcGFjaXR5KTtcbiAgfSxcbiAgcmdiOiBmdW5jdGlvbigpIHtcbiAgICB2YXIgaCA9IGlzTmFOKHRoaXMuaCkgPyAwIDogKHRoaXMuaCArIDEyMCkgKiByYWRpYW5zLFxuICAgICAgICBsID0gK3RoaXMubCxcbiAgICAgICAgYSA9IGlzTmFOKHRoaXMucykgPyAwIDogdGhpcy5zICogbCAqICgxIC0gbCksXG4gICAgICAgIGNvc2ggPSBNYXRoLmNvcyhoKSxcbiAgICAgICAgc2luaCA9IE1hdGguc2luKGgpO1xuICAgIHJldHVybiBuZXcgUmdiKFxuICAgICAgMjU1ICogKGwgKyBhICogKEEgKiBjb3NoICsgQiAqIHNpbmgpKSxcbiAgICAgIDI1NSAqIChsICsgYSAqIChDICogY29zaCArIEQgKiBzaW5oKSksXG4gICAgICAyNTUgKiAobCArIGEgKiAoRSAqIGNvc2gpKSxcbiAgICAgIHRoaXMub3BhY2l0eVxuICAgICk7XG4gIH1cbn0pKTtcbiJdLCJtYXBwaW5ncyI6IkFBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7Iiwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///./node_modules/vega-functions/node_modules/d3-color/src/cubehelix.js\n");

/***/ }),

/***/ "./node_modules/vega-functions/node_modules/d3-color/src/define.js":
/*!*************************************************************************!*\
  !*** ./node_modules/vega-functions/node_modules/d3-color/src/define.js ***!
  \*************************************************************************/
/*! exports provided: default, extend */
/***/ (function(module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"extend\", function() { return extend; });\n/* harmony default export */ __webpack_exports__[\"default\"] = (function(constructor, factory, prototype) {\n  constructor.prototype = factory.prototype = prototype;\n  prototype.constructor = constructor;\n});\n\nfunction extend(parent, definition) {\n  var prototype = Object.create(parent.prototype);\n  for (var key in definition) prototype[key] = definition[key];\n  return prototype;\n}\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvdmVnYS1mdW5jdGlvbnMvbm9kZV9tb2R1bGVzL2QzLWNvbG9yL3NyYy9kZWZpbmUuanMuanMiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvdmVnYS1mdW5jdGlvbnMvbm9kZV9tb2R1bGVzL2QzLWNvbG9yL3NyYy9kZWZpbmUuanM/OGU1MyJdLCJzb3VyY2VzQ29udGVudCI6WyJleHBvcnQgZGVmYXVsdCBmdW5jdGlvbihjb25zdHJ1Y3RvciwgZmFjdG9yeSwgcHJvdG90eXBlKSB7XG4gIGNvbnN0cnVjdG9yLnByb3RvdHlwZSA9IGZhY3RvcnkucHJvdG90eXBlID0gcHJvdG90eXBlO1xuICBwcm90b3R5cGUuY29uc3RydWN0b3IgPSBjb25zdHJ1Y3Rvcjtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGV4dGVuZChwYXJlbnQsIGRlZmluaXRpb24pIHtcbiAgdmFyIHByb3RvdHlwZSA9IE9iamVjdC5jcmVhdGUocGFyZW50LnByb3RvdHlwZSk7XG4gIGZvciAodmFyIGtleSBpbiBkZWZpbml0aW9uKSBwcm90b3R5cGVba2V5XSA9IGRlZmluaXRpb25ba2V5XTtcbiAgcmV0dXJuIHByb3RvdHlwZTtcbn1cbiJdLCJtYXBwaW5ncyI6IkFBQUE7QUFBQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOyIsInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///./node_modules/vega-functions/node_modules/d3-color/src/define.js\n");

/***/ }),

/***/ "./node_modules/vega-functions/node_modules/d3-color/src/index.js":
/*!************************************************************************!*\
  !*** ./node_modules/vega-functions/node_modules/d3-color/src/index.js ***!
  \************************************************************************/
/*! exports provided: color, rgb, hsl, lab, hcl, lch, gray, cubehelix */
/***/ (function(module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _color_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./color.js */ \"./node_modules/vega-functions/node_modules/d3-color/src/color.js\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"color\", function() { return _color_js__WEBPACK_IMPORTED_MODULE_0__[\"default\"]; });\n\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"rgb\", function() { return _color_js__WEBPACK_IMPORTED_MODULE_0__[\"rgb\"]; });\n\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"hsl\", function() { return _color_js__WEBPACK_IMPORTED_MODULE_0__[\"hsl\"]; });\n\n/* harmony import */ var _lab_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./lab.js */ \"./node_modules/vega-functions/node_modules/d3-color/src/lab.js\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"lab\", function() { return _lab_js__WEBPACK_IMPORTED_MODULE_1__[\"default\"]; });\n\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"hcl\", function() { return _lab_js__WEBPACK_IMPORTED_MODULE_1__[\"hcl\"]; });\n\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"lch\", function() { return _lab_js__WEBPACK_IMPORTED_MODULE_1__[\"lch\"]; });\n\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"gray\", function() { return _lab_js__WEBPACK_IMPORTED_MODULE_1__[\"gray\"]; });\n\n/* harmony import */ var _cubehelix_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./cubehelix.js */ \"./node_modules/vega-functions/node_modules/d3-color/src/cubehelix.js\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"cubehelix\", function() { return _cubehelix_js__WEBPACK_IMPORTED_MODULE_2__[\"default\"]; });\n\n\n\n\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvdmVnYS1mdW5jdGlvbnMvbm9kZV9tb2R1bGVzL2QzLWNvbG9yL3NyYy9pbmRleC5qcy5qcyIsInNvdXJjZXMiOlsid2VicGFjazovLy8uL25vZGVfbW9kdWxlcy92ZWdhLWZ1bmN0aW9ucy9ub2RlX21vZHVsZXMvZDMtY29sb3Ivc3JjL2luZGV4LmpzPzJhYTEiXSwic291cmNlc0NvbnRlbnQiOlsiZXhwb3J0IHtkZWZhdWx0IGFzIGNvbG9yLCByZ2IsIGhzbH0gZnJvbSBcIi4vY29sb3IuanNcIjtcbmV4cG9ydCB7ZGVmYXVsdCBhcyBsYWIsIGhjbCwgbGNoLCBncmF5fSBmcm9tIFwiLi9sYWIuanNcIjtcbmV4cG9ydCB7ZGVmYXVsdCBhcyBjdWJlaGVsaXh9IGZyb20gXCIuL2N1YmVoZWxpeC5qc1wiO1xuIl0sIm1hcHBpbmdzIjoiQUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFDQTtBQUNBOyIsInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///./node_modules/vega-functions/node_modules/d3-color/src/index.js\n");

/***/ }),

/***/ "./node_modules/vega-functions/node_modules/d3-color/src/lab.js":
/*!**********************************************************************!*\
  !*** ./node_modules/vega-functions/node_modules/d3-color/src/lab.js ***!
  \**********************************************************************/
/*! exports provided: gray, default, Lab, lch, hcl, Hcl */
/***/ (function(module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"gray\", function() { return gray; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"default\", function() { return lab; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"Lab\", function() { return Lab; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"lch\", function() { return lch; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"hcl\", function() { return hcl; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"Hcl\", function() { return Hcl; });\n/* harmony import */ var _define_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./define.js */ \"./node_modules/vega-functions/node_modules/d3-color/src/define.js\");\n/* harmony import */ var _color_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./color.js */ \"./node_modules/vega-functions/node_modules/d3-color/src/color.js\");\n/* harmony import */ var _math_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./math.js */ \"./node_modules/vega-functions/node_modules/d3-color/src/math.js\");\n\n\n\n\n// https://observablehq.com/@mbostock/lab-and-rgb\nconst K = 18,\n    Xn = 0.96422,\n    Yn = 1,\n    Zn = 0.82521,\n    t0 = 4 / 29,\n    t1 = 6 / 29,\n    t2 = 3 * t1 * t1,\n    t3 = t1 * t1 * t1;\n\nfunction labConvert(o) {\n  if (o instanceof Lab) return new Lab(o.l, o.a, o.b, o.opacity);\n  if (o instanceof Hcl) return hcl2lab(o);\n  if (!(o instanceof _color_js__WEBPACK_IMPORTED_MODULE_1__[\"Rgb\"])) o = Object(_color_js__WEBPACK_IMPORTED_MODULE_1__[\"rgbConvert\"])(o);\n  var r = rgb2lrgb(o.r),\n      g = rgb2lrgb(o.g),\n      b = rgb2lrgb(o.b),\n      y = xyz2lab((0.2225045 * r + 0.7168786 * g + 0.0606169 * b) / Yn), x, z;\n  if (r === g && g === b) x = z = y; else {\n    x = xyz2lab((0.4360747 * r + 0.3850649 * g + 0.1430804 * b) / Xn);\n    z = xyz2lab((0.0139322 * r + 0.0971045 * g + 0.7141733 * b) / Zn);\n  }\n  return new Lab(116 * y - 16, 500 * (x - y), 200 * (y - z), o.opacity);\n}\n\nfunction gray(l, opacity) {\n  return new Lab(l, 0, 0, opacity == null ? 1 : opacity);\n}\n\nfunction lab(l, a, b, opacity) {\n  return arguments.length === 1 ? labConvert(l) : new Lab(l, a, b, opacity == null ? 1 : opacity);\n}\n\nfunction Lab(l, a, b, opacity) {\n  this.l = +l;\n  this.a = +a;\n  this.b = +b;\n  this.opacity = +opacity;\n}\n\nObject(_define_js__WEBPACK_IMPORTED_MODULE_0__[\"default\"])(Lab, lab, Object(_define_js__WEBPACK_IMPORTED_MODULE_0__[\"extend\"])(_color_js__WEBPACK_IMPORTED_MODULE_1__[\"Color\"], {\n  brighter: function(k) {\n    return new Lab(this.l + K * (k == null ? 1 : k), this.a, this.b, this.opacity);\n  },\n  darker: function(k) {\n    return new Lab(this.l - K * (k == null ? 1 : k), this.a, this.b, this.opacity);\n  },\n  rgb: function() {\n    var y = (this.l + 16) / 116,\n        x = isNaN(this.a) ? y : y + this.a / 500,\n        z = isNaN(this.b) ? y : y - this.b / 200;\n    x = Xn * lab2xyz(x);\n    y = Yn * lab2xyz(y);\n    z = Zn * lab2xyz(z);\n    return new _color_js__WEBPACK_IMPORTED_MODULE_1__[\"Rgb\"](\n      lrgb2rgb( 3.1338561 * x - 1.6168667 * y - 0.4906146 * z),\n      lrgb2rgb(-0.9787684 * x + 1.9161415 * y + 0.0334540 * z),\n      lrgb2rgb( 0.0719453 * x - 0.2289914 * y + 1.4052427 * z),\n      this.opacity\n    );\n  }\n}));\n\nfunction xyz2lab(t) {\n  return t > t3 ? Math.pow(t, 1 / 3) : t / t2 + t0;\n}\n\nfunction lab2xyz(t) {\n  return t > t1 ? t * t * t : t2 * (t - t0);\n}\n\nfunction lrgb2rgb(x) {\n  return 255 * (x <= 0.0031308 ? 12.92 * x : 1.055 * Math.pow(x, 1 / 2.4) - 0.055);\n}\n\nfunction rgb2lrgb(x) {\n  return (x /= 255) <= 0.04045 ? x / 12.92 : Math.pow((x + 0.055) / 1.055, 2.4);\n}\n\nfunction hclConvert(o) {\n  if (o instanceof Hcl) return new Hcl(o.h, o.c, o.l, o.opacity);\n  if (!(o instanceof Lab)) o = labConvert(o);\n  if (o.a === 0 && o.b === 0) return new Hcl(NaN, 0 < o.l && o.l < 100 ? 0 : NaN, o.l, o.opacity);\n  var h = Math.atan2(o.b, o.a) * _math_js__WEBPACK_IMPORTED_MODULE_2__[\"degrees\"];\n  return new Hcl(h < 0 ? h + 360 : h, Math.sqrt(o.a * o.a + o.b * o.b), o.l, o.opacity);\n}\n\nfunction lch(l, c, h, opacity) {\n  return arguments.length === 1 ? hclConvert(l) : new Hcl(h, c, l, opacity == null ? 1 : opacity);\n}\n\nfunction hcl(h, c, l, opacity) {\n  return arguments.length === 1 ? hclConvert(h) : new Hcl(h, c, l, opacity == null ? 1 : opacity);\n}\n\nfunction Hcl(h, c, l, opacity) {\n  this.h = +h;\n  this.c = +c;\n  this.l = +l;\n  this.opacity = +opacity;\n}\n\nfunction hcl2lab(o) {\n  if (isNaN(o.h)) return new Lab(o.l, 0, 0, o.opacity);\n  var h = o.h * _math_js__WEBPACK_IMPORTED_MODULE_2__[\"radians\"];\n  return new Lab(o.l, Math.cos(h) * o.c, Math.sin(h) * o.c, o.opacity);\n}\n\nObject(_define_js__WEBPACK_IMPORTED_MODULE_0__[\"default\"])(Hcl, hcl, Object(_define_js__WEBPACK_IMPORTED_MODULE_0__[\"extend\"])(_color_js__WEBPACK_IMPORTED_MODULE_1__[\"Color\"], {\n  brighter: function(k) {\n    return new Hcl(this.h, this.c, this.l + K * (k == null ? 1 : k), this.opacity);\n  },\n  darker: function(k) {\n    return new Hcl(this.h, this.c, this.l - K * (k == null ? 1 : k), this.opacity);\n  },\n  rgb: function() {\n    return hcl2lab(this).rgb();\n  }\n}));\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,[encoded data, 6256 characters]\n//# sourceURL=webpack-internal:///./node_modules/vega-functions/node_modules/d3-color/src/lab.js\n");

/***/ }),

/***/ "./node_modules/vega-functions/node_modules/d3-color/src/math.js":
/*!***********************************************************************!*\
  !*** ./node_modules/vega-functions/node_modules/d3-color/src/math.js ***!
  \***********************************************************************/
/*! exports provided: radians, degrees */
/***/ (function(module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"radians\", function() { return radians; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"degrees\", function() { return degrees; });\nconst radians = Math.PI / 180;\nconst degrees = 180 / Math.PI;\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvdmVnYS1mdW5jdGlvbnMvbm9kZV9tb2R1bGVzL2QzLWNvbG9yL3NyYy9tYXRoLmpzLmpzIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL3ZlZ2EtZnVuY3Rpb25zL25vZGVfbW9kdWxlcy9kMy1jb2xvci9zcmMvbWF0aC5qcz8yNGJmIl0sInNvdXJjZXNDb250ZW50IjpbImV4cG9ydCBjb25zdCByYWRpYW5zID0gTWF0aC5QSSAvIDE4MDtcbmV4cG9ydCBjb25zdCBkZWdyZWVzID0gMTgwIC8gTWF0aC5QSTtcbiJdLCJtYXBwaW5ncyI6IkFBQUE7QUFBQTtBQUFBO0FBQUE7QUFDQTsiLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///./node_modules/vega-functions/node_modules/d3-color/src/math.js\n");

/***/ }),

/***/ "./node_modules/vega-functions/node_modules/d3-dsv/src/autoType.js":
/*!*************************************************************************!*\
  !*** ./node_modules/vega-functions/node_modules/d3-dsv/src/autoType.js ***!
  \*************************************************************************/
/*! exports provided: default */
/***/ (function(module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"default\", function() { return autoType; });\nfunction autoType(object) {\n  for (var key in object) {\n    var value = object[key].trim(), number, m;\n    if (!value) value = null;\n    else if (value === \"true\") value = true;\n    else if (value === \"false\") value = false;\n    else if (value === \"NaN\") value = NaN;\n    else if (!isNaN(number = +value)) value = number;\n    else if (m = value.match(/^([-+]\\d{2})?\\d{4}(-\\d{2}(-\\d{2})?)?(T\\d{2}:\\d{2}(:\\d{2}(\\.\\d{3})?)?(Z|[-+]\\d{2}:\\d{2})?)?$/)) {\n      if (fixtz && !!m[4] && !m[7]) value = value.replace(/-/g, \"/\").replace(/T/, \" \");\n      value = new Date(value);\n    }\n    else continue;\n    object[key] = value;\n  }\n  return object;\n}\n\n// https://github.com/d3/d3-dsv/issues/45\nconst fixtz = new Date(\"2019-01-01T00:00\").getHours() || new Date(\"2019-07-01T00:00\").getHours();//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvdmVnYS1mdW5jdGlvbnMvbm9kZV9tb2R1bGVzL2QzLWRzdi9zcmMvYXV0b1R5cGUuanMuanMiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvdmVnYS1mdW5jdGlvbnMvbm9kZV9tb2R1bGVzL2QzLWRzdi9zcmMvYXV0b1R5cGUuanM/OTJmYyJdLCJzb3VyY2VzQ29udGVudCI6WyJleHBvcnQgZGVmYXVsdCBmdW5jdGlvbiBhdXRvVHlwZShvYmplY3QpIHtcbiAgZm9yICh2YXIga2V5IGluIG9iamVjdCkge1xuICAgIHZhciB2YWx1ZSA9IG9iamVjdFtrZXldLnRyaW0oKSwgbnVtYmVyLCBtO1xuICAgIGlmICghdmFsdWUpIHZhbHVlID0gbnVsbDtcbiAgICBlbHNlIGlmICh2YWx1ZSA9PT0gXCJ0cnVlXCIpIHZhbHVlID0gdHJ1ZTtcbiAgICBlbHNlIGlmICh2YWx1ZSA9PT0gXCJmYWxzZVwiKSB2YWx1ZSA9IGZhbHNlO1xuICAgIGVsc2UgaWYgKHZhbHVlID09PSBcIk5hTlwiKSB2YWx1ZSA9IE5hTjtcbiAgICBlbHNlIGlmICghaXNOYU4obnVtYmVyID0gK3ZhbHVlKSkgdmFsdWUgPSBudW1iZXI7XG4gICAgZWxzZSBpZiAobSA9IHZhbHVlLm1hdGNoKC9eKFstK11cXGR7Mn0pP1xcZHs0fSgtXFxkezJ9KC1cXGR7Mn0pPyk/KFRcXGR7Mn06XFxkezJ9KDpcXGR7Mn0oXFwuXFxkezN9KT8pPyhafFstK11cXGR7Mn06XFxkezJ9KT8pPyQvKSkge1xuICAgICAgaWYgKGZpeHR6ICYmICEhbVs0XSAmJiAhbVs3XSkgdmFsdWUgPSB2YWx1ZS5yZXBsYWNlKC8tL2csIFwiL1wiKS5yZXBsYWNlKC9ULywgXCIgXCIpO1xuICAgICAgdmFsdWUgPSBuZXcgRGF0ZSh2YWx1ZSk7XG4gICAgfVxuICAgIGVsc2UgY29udGludWU7XG4gICAgb2JqZWN0W2tleV0gPSB2YWx1ZTtcbiAgfVxuICByZXR1cm4gb2JqZWN0O1xufVxuXG4vLyBodHRwczovL2dpdGh1Yi5jb20vZDMvZDMtZHN2L2lzc3Vlcy80NVxuY29uc3QgZml4dHogPSBuZXcgRGF0ZShcIjIwMTktMDEtMDFUMDA6MDBcIikuZ2V0SG91cnMoKSB8fCBuZXcgRGF0ZShcIjIwMTktMDctMDFUMDA6MDBcIikuZ2V0SG91cnMoKTsiXSwibWFwcGluZ3MiOiJBQUFBO0FBQUE7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBIiwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///./node_modules/vega-functions/node_modules/d3-dsv/src/autoType.js\n");

/***/ }),

/***/ "./node_modules/vega-functions/node_modules/d3-dsv/src/csv.js":
/*!********************************************************************!*\
  !*** ./node_modules/vega-functions/node_modules/d3-dsv/src/csv.js ***!
  \********************************************************************/
/*! exports provided: csvParse, csvParseRows, csvFormat, csvFormatBody, csvFormatRows, csvFormatRow, csvFormatValue */
/***/ (function(module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"csvParse\", function() { return csvParse; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"csvParseRows\", function() { return csvParseRows; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"csvFormat\", function() { return csvFormat; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"csvFormatBody\", function() { return csvFormatBody; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"csvFormatRows\", function() { return csvFormatRows; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"csvFormatRow\", function() { return csvFormatRow; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"csvFormatValue\", function() { return csvFormatValue; });\n/* harmony import */ var _dsv_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./dsv.js */ \"./node_modules/vega-functions/node_modules/d3-dsv/src/dsv.js\");\n\n\nvar csv = Object(_dsv_js__WEBPACK_IMPORTED_MODULE_0__[\"default\"])(\",\");\n\nvar csvParse = csv.parse;\nvar csvParseRows = csv.parseRows;\nvar csvFormat = csv.format;\nvar csvFormatBody = csv.formatBody;\nvar csvFormatRows = csv.formatRows;\nvar csvFormatRow = csv.formatRow;\nvar csvFormatValue = csv.formatValue;\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvdmVnYS1mdW5jdGlvbnMvbm9kZV9tb2R1bGVzL2QzLWRzdi9zcmMvY3N2LmpzLmpzIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL3ZlZ2EtZnVuY3Rpb25zL25vZGVfbW9kdWxlcy9kMy1kc3Yvc3JjL2Nzdi5qcz80MDk1Il0sInNvdXJjZXNDb250ZW50IjpbImltcG9ydCBkc3YgZnJvbSBcIi4vZHN2LmpzXCI7XG5cbnZhciBjc3YgPSBkc3YoXCIsXCIpO1xuXG5leHBvcnQgdmFyIGNzdlBhcnNlID0gY3N2LnBhcnNlO1xuZXhwb3J0IHZhciBjc3ZQYXJzZVJvd3MgPSBjc3YucGFyc2VSb3dzO1xuZXhwb3J0IHZhciBjc3ZGb3JtYXQgPSBjc3YuZm9ybWF0O1xuZXhwb3J0IHZhciBjc3ZGb3JtYXRCb2R5ID0gY3N2LmZvcm1hdEJvZHk7XG5leHBvcnQgdmFyIGNzdkZvcm1hdFJvd3MgPSBjc3YuZm9ybWF0Um93cztcbmV4cG9ydCB2YXIgY3N2Rm9ybWF0Um93ID0gY3N2LmZvcm1hdFJvdztcbmV4cG9ydCB2YXIgY3N2Rm9ybWF0VmFsdWUgPSBjc3YuZm9ybWF0VmFsdWU7XG4iXSwibWFwcGluZ3MiOiJBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7Iiwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///./node_modules/vega-functions/node_modules/d3-dsv/src/csv.js\n");

/***/ }),

/***/ "./node_modules/vega-functions/node_modules/d3-dsv/src/dsv.js":
/*!********************************************************************!*\
  !*** ./node_modules/vega-functions/node_modules/d3-dsv/src/dsv.js ***!
  \********************************************************************/
/*! exports provided: default */
/***/ (function(module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\nvar EOL = {},\n    EOF = {},\n    QUOTE = 34,\n    NEWLINE = 10,\n    RETURN = 13;\n\nfunction objectConverter(columns) {\n  return new Function(\"d\", \"return {\" + columns.map(function(name, i) {\n    return JSON.stringify(name) + \": d[\" + i + \"] || \\\"\\\"\";\n  }).join(\",\") + \"}\");\n}\n\nfunction customConverter(columns, f) {\n  var object = objectConverter(columns);\n  return function(row, i) {\n    return f(object(row), i, columns);\n  };\n}\n\n// Compute unique columns in order of discovery.\nfunction inferColumns(rows) {\n  var columnSet = Object.create(null),\n      columns = [];\n\n  rows.forEach(function(row) {\n    for (var column in row) {\n      if (!(column in columnSet)) {\n        columns.push(columnSet[column] = column);\n      }\n    }\n  });\n\n  return columns;\n}\n\nfunction pad(value, width) {\n  var s = value + \"\", length = s.length;\n  return length < width ? new Array(width - length + 1).join(0) + s : s;\n}\n\nfunction formatYear(year) {\n  return year < 0 ? \"-\" + pad(-year, 6)\n    : year > 9999 ? \"+\" + pad(year, 6)\n    : pad(year, 4);\n}\n\nfunction formatDate(date) {\n  var hours = date.getUTCHours(),\n      minutes = date.getUTCMinutes(),\n      seconds = date.getUTCSeconds(),\n      milliseconds = date.getUTCMilliseconds();\n  return isNaN(date) ? \"Invalid Date\"\n      : formatYear(date.getUTCFullYear(), 4) + \"-\" + pad(date.getUTCMonth() + 1, 2) + \"-\" + pad(date.getUTCDate(), 2)\n      + (milliseconds ? \"T\" + pad(hours, 2) + \":\" + pad(minutes, 2) + \":\" + pad(seconds, 2) + \".\" + pad(milliseconds, 3) + \"Z\"\n      : seconds ? \"T\" + pad(hours, 2) + \":\" + pad(minutes, 2) + \":\" + pad(seconds, 2) + \"Z\"\n      : minutes || hours ? \"T\" + pad(hours, 2) + \":\" + pad(minutes, 2) + \"Z\"\n      : \"\");\n}\n\n/* harmony default export */ __webpack_exports__[\"default\"] = (function(delimiter) {\n  var reFormat = new RegExp(\"[\\\"\" + delimiter + \"\\n\\r]\"),\n      DELIMITER = delimiter.charCodeAt(0);\n\n  function parse(text, f) {\n    var convert, columns, rows = parseRows(text, function(row, i) {\n      if (convert) return convert(row, i - 1);\n      columns = row, convert = f ? customConverter(row, f) : objectConverter(row);\n    });\n    rows.columns = columns || [];\n    return rows;\n  }\n\n  function parseRows(text, f) {\n    var rows = [], // output rows\n        N = text.length,\n        I = 0, // current character index\n        n = 0, // current line number\n        t, // current token\n        eof = N <= 0, // current token followed by EOF?\n        eol = false; // current token followed by EOL?\n\n    // Strip the trailing newline.\n    if (text.charCodeAt(N - 1) === NEWLINE) --N;\n    if (text.charCodeAt(N - 1) === RETURN) --N;\n\n    function token() {\n      if (eof) return EOF;\n      if (eol) return eol = false, EOL;\n\n      // Unescape quotes.\n      var i, j = I, c;\n      if (text.charCodeAt(j) === QUOTE) {\n        while (I++ < N && text.charCodeAt(I) !== QUOTE || text.charCodeAt(++I) === QUOTE);\n        if ((i = I) >= N) eof = true;\n        else if ((c = text.charCodeAt(I++)) === NEWLINE) eol = true;\n        else if (c === RETURN) { eol = true; if (text.charCodeAt(I) === NEWLINE) ++I; }\n        return text.slice(j + 1, i - 1).replace(/\"\"/g, \"\\\"\");\n      }\n\n      // Find next delimiter or newline.\n      while (I < N) {\n        if ((c = text.charCodeAt(i = I++)) === NEWLINE) eol = true;\n        else if (c === RETURN) { eol = true; if (text.charCodeAt(I) === NEWLINE) ++I; }\n        else if (c !== DELIMITER) continue;\n        return text.slice(j, i);\n      }\n\n      // Return last token before EOF.\n      return eof = true, text.slice(j, N);\n    }\n\n    while ((t = token()) !== EOF) {\n      var row = [];\n      while (t !== EOL && t !== EOF) row.push(t), t = token();\n      if (f && (row = f(row, n++)) == null) continue;\n      rows.push(row);\n    }\n\n    return rows;\n  }\n\n  function preformatBody(rows, columns) {\n    return rows.map(function(row) {\n      return columns.map(function(column) {\n        return formatValue(row[column]);\n      }).join(delimiter);\n    });\n  }\n\n  function format(rows, columns) {\n    if (columns == null) columns = inferColumns(rows);\n    return [columns.map(formatValue).join(delimiter)].concat(preformatBody(rows, columns)).join(\"\\n\");\n  }\n\n  function formatBody(rows, columns) {\n    if (columns == null) columns = inferColumns(rows);\n    return preformatBody(rows, columns).join(\"\\n\");\n  }\n\n  function formatRows(rows) {\n    return rows.map(formatRow).join(\"\\n\");\n  }\n\n  function formatRow(row) {\n    return row.map(formatValue).join(delimiter);\n  }\n\n  function formatValue(value) {\n    return value == null ? \"\"\n        : value instanceof Date ? formatDate(value)\n        : reFormat.test(value += \"\") ? \"\\\"\" + value.replace(/\"/g, \"\\\"\\\"\") + \"\\\"\"\n        : value;\n  }\n\n  return {\n    parse: parse,\n    parseRows: parseRows,\n    format: format,\n    formatBody: formatBody,\n    formatRows: formatRows,\n    formatRow: formatRow,\n    formatValue: formatValue\n  };\n});\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,[encoded data, 8204 characters]\n//# sourceURL=webpack-internal:///./node_modules/vega-functions/node_modules/d3-dsv/src/dsv.js\n");

/***/ }),

/***/ "./node_modules/vega-functions/node_modules/d3-dsv/src/index.js":
/*!**********************************************************************!*\
  !*** ./node_modules/vega-functions/node_modules/d3-dsv/src/index.js ***!
  \**********************************************************************/
/*! exports provided: dsvFormat, csvParse, csvParseRows, csvFormat, csvFormatBody, csvFormatRows, csvFormatRow, csvFormatValue, tsvParse, tsvParseRows, tsvFormat, tsvFormatBody, tsvFormatRows, tsvFormatRow, tsvFormatValue, autoType */
/***/ (function(module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _dsv_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./dsv.js */ \"./node_modules/vega-functions/node_modules/d3-dsv/src/dsv.js\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"dsvFormat\", function() { return _dsv_js__WEBPACK_IMPORTED_MODULE_0__[\"default\"]; });\n\n/* harmony import */ var _csv_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./csv.js */ \"./node_modules/vega-functions/node_modules/d3-dsv/src/csv.js\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"csvParse\", function() { return _csv_js__WEBPACK_IMPORTED_MODULE_1__[\"csvParse\"]; });\n\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"csvParseRows\", function() { return _csv_js__WEBPACK_IMPORTED_MODULE_1__[\"csvParseRows\"]; });\n\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"csvFormat\", function() { return _csv_js__WEBPACK_IMPORTED_MODULE_1__[\"csvFormat\"]; });\n\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"csvFormatBody\", function() { return _csv_js__WEBPACK_IMPORTED_MODULE_1__[\"csvFormatBody\"]; });\n\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"csvFormatRows\", function() { return _csv_js__WEBPACK_IMPORTED_MODULE_1__[\"csvFormatRows\"]; });\n\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"csvFormatRow\", function() { return _csv_js__WEBPACK_IMPORTED_MODULE_1__[\"csvFormatRow\"]; });\n\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"csvFormatValue\", function() { return _csv_js__WEBPACK_IMPORTED_MODULE_1__[\"csvFormatValue\"]; });\n\n/* harmony import */ var _tsv_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./tsv.js */ \"./node_modules/vega-functions/node_modules/d3-dsv/src/tsv.js\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"tsvParse\", function() { return _tsv_js__WEBPACK_IMPORTED_MODULE_2__[\"tsvParse\"]; });\n\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"tsvParseRows\", function() { return _tsv_js__WEBPACK_IMPORTED_MODULE_2__[\"tsvParseRows\"]; });\n\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"tsvFormat\", function() { return _tsv_js__WEBPACK_IMPORTED_MODULE_2__[\"tsvFormat\"]; });\n\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"tsvFormatBody\", function() { return _tsv_js__WEBPACK_IMPORTED_MODULE_2__[\"tsvFormatBody\"]; });\n\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"tsvFormatRows\", function() { return _tsv_js__WEBPACK_IMPORTED_MODULE_2__[\"tsvFormatRows\"]; });\n\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"tsvFormatRow\", function() { return _tsv_js__WEBPACK_IMPORTED_MODULE_2__[\"tsvFormatRow\"]; });\n\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"tsvFormatValue\", function() { return _tsv_js__WEBPACK_IMPORTED_MODULE_2__[\"tsvFormatValue\"]; });\n\n/* harmony import */ var _autoType_js__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ./autoType.js */ \"./node_modules/vega-functions/node_modules/d3-dsv/src/autoType.js\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"autoType\", function() { return _autoType_js__WEBPACK_IMPORTED_MODULE_3__[\"default\"]; });\n\n\n\n\n\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvdmVnYS1mdW5jdGlvbnMvbm9kZV9tb2R1bGVzL2QzLWRzdi9zcmMvaW5kZXguanMuanMiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvdmVnYS1mdW5jdGlvbnMvbm9kZV9tb2R1bGVzL2QzLWRzdi9zcmMvaW5kZXguanM/MWJkNSJdLCJzb3VyY2VzQ29udGVudCI6WyJleHBvcnQge2RlZmF1bHQgYXMgZHN2Rm9ybWF0fSBmcm9tIFwiLi9kc3YuanNcIjtcbmV4cG9ydCB7Y3N2UGFyc2UsIGNzdlBhcnNlUm93cywgY3N2Rm9ybWF0LCBjc3ZGb3JtYXRCb2R5LCBjc3ZGb3JtYXRSb3dzLCBjc3ZGb3JtYXRSb3csIGNzdkZvcm1hdFZhbHVlfSBmcm9tIFwiLi9jc3YuanNcIjtcbmV4cG9ydCB7dHN2UGFyc2UsIHRzdlBhcnNlUm93cywgdHN2Rm9ybWF0LCB0c3ZGb3JtYXRCb2R5LCB0c3ZGb3JtYXRSb3dzLCB0c3ZGb3JtYXRSb3csIHRzdkZvcm1hdFZhbHVlfSBmcm9tIFwiLi90c3YuanNcIjtcbmV4cG9ydCB7ZGVmYXVsdCBhcyBhdXRvVHlwZX0gZnJvbSBcIi4vYXV0b1R5cGUuanNcIjtcbiJdLCJtYXBwaW5ncyI6IkFBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUNBO0FBQ0E7QUFDQTsiLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///./node_modules/vega-functions/node_modules/d3-dsv/src/index.js\n");

/***/ }),

/***/ "./node_modules/vega-functions/node_modules/d3-dsv/src/tsv.js":
/*!********************************************************************!*\
  !*** ./node_modules/vega-functions/node_modules/d3-dsv/src/tsv.js ***!
  \********************************************************************/
/*! exports provided: tsvParse, tsvParseRows, tsvFormat, tsvFormatBody, tsvFormatRows, tsvFormatRow, tsvFormatValue */
/***/ (function(module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"tsvParse\", function() { return tsvParse; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"tsvParseRows\", function() { return tsvParseRows; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"tsvFormat\", function() { return tsvFormat; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"tsvFormatBody\", function() { return tsvFormatBody; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"tsvFormatRows\", function() { return tsvFormatRows; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"tsvFormatRow\", function() { return tsvFormatRow; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"tsvFormatValue\", function() { return tsvFormatValue; });\n/* harmony import */ var _dsv_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./dsv.js */ \"./node_modules/vega-functions/node_modules/d3-dsv/src/dsv.js\");\n\n\nvar tsv = Object(_dsv_js__WEBPACK_IMPORTED_MODULE_0__[\"default\"])(\"\\t\");\n\nvar tsvParse = tsv.parse;\nvar tsvParseRows = tsv.parseRows;\nvar tsvFormat = tsv.format;\nvar tsvFormatBody = tsv.formatBody;\nvar tsvFormatRows = tsv.formatRows;\nvar tsvFormatRow = tsv.formatRow;\nvar tsvFormatValue = tsv.formatValue;\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvdmVnYS1mdW5jdGlvbnMvbm9kZV9tb2R1bGVzL2QzLWRzdi9zcmMvdHN2LmpzLmpzIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL3ZlZ2EtZnVuY3Rpb25zL25vZGVfbW9kdWxlcy9kMy1kc3Yvc3JjL3Rzdi5qcz9hYzY0Il0sInNvdXJjZXNDb250ZW50IjpbImltcG9ydCBkc3YgZnJvbSBcIi4vZHN2LmpzXCI7XG5cbnZhciB0c3YgPSBkc3YoXCJcXHRcIik7XG5cbmV4cG9ydCB2YXIgdHN2UGFyc2UgPSB0c3YucGFyc2U7XG5leHBvcnQgdmFyIHRzdlBhcnNlUm93cyA9IHRzdi5wYXJzZVJvd3M7XG5leHBvcnQgdmFyIHRzdkZvcm1hdCA9IHRzdi5mb3JtYXQ7XG5leHBvcnQgdmFyIHRzdkZvcm1hdEJvZHkgPSB0c3YuZm9ybWF0Qm9keTtcbmV4cG9ydCB2YXIgdHN2Rm9ybWF0Um93cyA9IHRzdi5mb3JtYXRSb3dzO1xuZXhwb3J0IHZhciB0c3ZGb3JtYXRSb3cgPSB0c3YuZm9ybWF0Um93O1xuZXhwb3J0IHZhciB0c3ZGb3JtYXRWYWx1ZSA9IHRzdi5mb3JtYXRWYWx1ZTtcbiJdLCJtYXBwaW5ncyI6IkFBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTsiLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///./node_modules/vega-functions/node_modules/d3-dsv/src/tsv.js\n");

/***/ }),

/***/ "./node_modules/vega-functions/node_modules/d3-format/src/defaultLocale.js":
/*!*********************************************************************************!*\
  !*** ./node_modules/vega-functions/node_modules/d3-format/src/defaultLocale.js ***!
  \*********************************************************************************/
/*! exports provided: format, formatPrefix, default */
/***/ (function(module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"format\", function() { return format; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"formatPrefix\", function() { return formatPrefix; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"default\", function() { return defaultLocale; });\n/* harmony import */ var _locale_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./locale.js */ \"./node_modules/vega-functions/node_modules/d3-format/src/locale.js\");\n\n\nvar locale;\nvar format;\nvar formatPrefix;\n\ndefaultLocale({\n  thousands: \",\",\n  grouping: [3],\n  currency: [\"$\", \"\"]\n});\n\nfunction defaultLocale(definition) {\n  locale = Object(_locale_js__WEBPACK_IMPORTED_MODULE_0__[\"default\"])(definition);\n  format = locale.format;\n  formatPrefix = locale.formatPrefix;\n  return locale;\n}\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvdmVnYS1mdW5jdGlvbnMvbm9kZV9tb2R1bGVzL2QzLWZvcm1hdC9zcmMvZGVmYXVsdExvY2FsZS5qcy5qcyIsInNvdXJjZXMiOlsid2VicGFjazovLy8uL25vZGVfbW9kdWxlcy92ZWdhLWZ1bmN0aW9ucy9ub2RlX21vZHVsZXMvZDMtZm9ybWF0L3NyYy9kZWZhdWx0TG9jYWxlLmpzPzYyMjQiXSwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IGZvcm1hdExvY2FsZSBmcm9tIFwiLi9sb2NhbGUuanNcIjtcblxudmFyIGxvY2FsZTtcbmV4cG9ydCB2YXIgZm9ybWF0O1xuZXhwb3J0IHZhciBmb3JtYXRQcmVmaXg7XG5cbmRlZmF1bHRMb2NhbGUoe1xuICB0aG91c2FuZHM6IFwiLFwiLFxuICBncm91cGluZzogWzNdLFxuICBjdXJyZW5jeTogW1wiJFwiLCBcIlwiXVxufSk7XG5cbmV4cG9ydCBkZWZhdWx0IGZ1bmN0aW9uIGRlZmF1bHRMb2NhbGUoZGVmaW5pdGlvbikge1xuICBsb2NhbGUgPSBmb3JtYXRMb2NhbGUoZGVmaW5pdGlvbik7XG4gIGZvcm1hdCA9IGxvY2FsZS5mb3JtYXQ7XG4gIGZvcm1hdFByZWZpeCA9IGxvY2FsZS5mb3JtYXRQcmVmaXg7XG4gIHJldHVybiBsb2NhbGU7XG59XG4iXSwibWFwcGluZ3MiOiJBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7Iiwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///./node_modules/vega-functions/node_modules/d3-format/src/defaultLocale.js\n");

/***/ }),

/***/ "./node_modules/vega-functions/node_modules/d3-format/src/exponent.js":
/*!****************************************************************************!*\
  !*** ./node_modules/vega-functions/node_modules/d3-format/src/exponent.js ***!
  \****************************************************************************/
/*! exports provided: default */
/***/ (function(module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _formatDecimal_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./formatDecimal.js */ \"./node_modules/vega-functions/node_modules/d3-format/src/formatDecimal.js\");\n\n\n/* harmony default export */ __webpack_exports__[\"default\"] = (function(x) {\n  return x = Object(_formatDecimal_js__WEBPACK_IMPORTED_MODULE_0__[\"formatDecimalParts\"])(Math.abs(x)), x ? x[1] : NaN;\n});\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvdmVnYS1mdW5jdGlvbnMvbm9kZV9tb2R1bGVzL2QzLWZvcm1hdC9zcmMvZXhwb25lbnQuanMuanMiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvdmVnYS1mdW5jdGlvbnMvbm9kZV9tb2R1bGVzL2QzLWZvcm1hdC9zcmMvZXhwb25lbnQuanM/ZDViNCJdLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge2Zvcm1hdERlY2ltYWxQYXJ0c30gZnJvbSBcIi4vZm9ybWF0RGVjaW1hbC5qc1wiO1xuXG5leHBvcnQgZGVmYXVsdCBmdW5jdGlvbih4KSB7XG4gIHJldHVybiB4ID0gZm9ybWF0RGVjaW1hbFBhcnRzKE1hdGguYWJzKHgpKSwgeCA/IHhbMV0gOiBOYU47XG59XG4iXSwibWFwcGluZ3MiOiJBQUFBO0FBQUE7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOyIsInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///./node_modules/vega-functions/node_modules/d3-format/src/exponent.js\n");

/***/ }),

/***/ "./node_modules/vega-functions/node_modules/d3-format/src/formatDecimal.js":
/*!*********************************************************************************!*\
  !*** ./node_modules/vega-functions/node_modules/d3-format/src/formatDecimal.js ***!
  \*********************************************************************************/
/*! exports provided: default, formatDecimalParts */
/***/ (function(module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"formatDecimalParts\", function() { return formatDecimalParts; });\n/* harmony default export */ __webpack_exports__[\"default\"] = (function(x) {\n  return Math.abs(x = Math.round(x)) >= 1e21\n      ? x.toLocaleString(\"en\").replace(/,/g, \"\")\n      : x.toString(10);\n});\n\n// Computes the decimal coefficient and exponent of the specified number x with\n// significant digits p, where x is positive and p is in [1, 21] or undefined.\n// For example, formatDecimalParts(1.23) returns [\"123\", 0].\nfunction formatDecimalParts(x, p) {\n  if ((i = (x = p ? x.toExponential(p - 1) : x.toExponential()).indexOf(\"e\")) < 0) return null; // NaN, ±Infinity\n  var i, coefficient = x.slice(0, i);\n\n  // The string returned by toExponential either has the form \\d\\.\\d+e[-+]\\d+\n  // (e.g., 1.2e+3) or the form \\de[-+]\\d+ (e.g., 1e+3).\n  return [\n    coefficient.length > 1 ? coefficient[0] + coefficient.slice(2) : coefficient,\n    +x.slice(i + 1)\n  ];\n}\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvdmVnYS1mdW5jdGlvbnMvbm9kZV9tb2R1bGVzL2QzLWZvcm1hdC9zcmMvZm9ybWF0RGVjaW1hbC5qcy5qcyIsInNvdXJjZXMiOlsid2VicGFjazovLy8uL25vZGVfbW9kdWxlcy92ZWdhLWZ1bmN0aW9ucy9ub2RlX21vZHVsZXMvZDMtZm9ybWF0L3NyYy9mb3JtYXREZWNpbWFsLmpzPzBlNDciXSwic291cmNlc0NvbnRlbnQiOlsiZXhwb3J0IGRlZmF1bHQgZnVuY3Rpb24oeCkge1xuICByZXR1cm4gTWF0aC5hYnMoeCA9IE1hdGgucm91bmQoeCkpID49IDFlMjFcbiAgICAgID8geC50b0xvY2FsZVN0cmluZyhcImVuXCIpLnJlcGxhY2UoLywvZywgXCJcIilcbiAgICAgIDogeC50b1N0cmluZygxMCk7XG59XG5cbi8vIENvbXB1dGVzIHRoZSBkZWNpbWFsIGNvZWZmaWNpZW50IGFuZCBleHBvbmVudCBvZiB0aGUgc3BlY2lmaWVkIG51bWJlciB4IHdpdGhcbi8vIHNpZ25pZmljYW50IGRpZ2l0cyBwLCB3aGVyZSB4IGlzIHBvc2l0aXZlIGFuZCBwIGlzIGluIFsxLCAyMV0gb3IgdW5kZWZpbmVkLlxuLy8gRm9yIGV4YW1wbGUsIGZvcm1hdERlY2ltYWxQYXJ0cygxLjIzKSByZXR1cm5zIFtcIjEyM1wiLCAwXS5cbmV4cG9ydCBmdW5jdGlvbiBmb3JtYXREZWNpbWFsUGFydHMoeCwgcCkge1xuICBpZiAoKGkgPSAoeCA9IHAgPyB4LnRvRXhwb25lbnRpYWwocCAtIDEpIDogeC50b0V4cG9uZW50aWFsKCkpLmluZGV4T2YoXCJlXCIpKSA8IDApIHJldHVybiBudWxsOyAvLyBOYU4sIMKxSW5maW5pdHlcbiAgdmFyIGksIGNvZWZmaWNpZW50ID0geC5zbGljZSgwLCBpKTtcblxuICAvLyBUaGUgc3RyaW5nIHJldHVybmVkIGJ5IHRvRXhwb25lbnRpYWwgZWl0aGVyIGhhcyB0aGUgZm9ybSBcXGRcXC5cXGQrZVstK11cXGQrXG4gIC8vIChlLmcuLCAxLjJlKzMpIG9yIHRoZSBmb3JtIFxcZGVbLStdXFxkKyAoZS5nLiwgMWUrMykuXG4gIHJldHVybiBbXG4gICAgY29lZmZpY2llbnQubGVuZ3RoID4gMSA/IGNvZWZmaWNpZW50WzBdICsgY29lZmZpY2llbnQuc2xpY2UoMikgOiBjb2VmZmljaWVudCxcbiAgICAreC5zbGljZShpICsgMSlcbiAgXTtcbn1cbiJdLCJtYXBwaW5ncyI6IkFBQUE7QUFBQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7Iiwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///./node_modules/vega-functions/node_modules/d3-format/src/formatDecimal.js\n");

/***/ }),

/***/ "./node_modules/vega-functions/node_modules/d3-format/src/formatGroup.js":
/*!*******************************************************************************!*\
  !*** ./node_modules/vega-functions/node_modules/d3-format/src/formatGroup.js ***!
  \*******************************************************************************/
/*! exports provided: default */
/***/ (function(module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony default export */ __webpack_exports__[\"default\"] = (function(grouping, thousands) {\n  return function(value, width) {\n    var i = value.length,\n        t = [],\n        j = 0,\n        g = grouping[0],\n        length = 0;\n\n    while (i > 0 && g > 0) {\n      if (length + g + 1 > width) g = Math.max(1, width - length);\n      t.push(value.substring(i -= g, i + g));\n      if ((length += g + 1) > width) break;\n      g = grouping[j = (j + 1) % grouping.length];\n    }\n\n    return t.reverse().join(thousands);\n  };\n});\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvdmVnYS1mdW5jdGlvbnMvbm9kZV9tb2R1bGVzL2QzLWZvcm1hdC9zcmMvZm9ybWF0R3JvdXAuanMuanMiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvdmVnYS1mdW5jdGlvbnMvbm9kZV9tb2R1bGVzL2QzLWZvcm1hdC9zcmMvZm9ybWF0R3JvdXAuanM/ODg1YiJdLCJzb3VyY2VzQ29udGVudCI6WyJleHBvcnQgZGVmYXVsdCBmdW5jdGlvbihncm91cGluZywgdGhvdXNhbmRzKSB7XG4gIHJldHVybiBmdW5jdGlvbih2YWx1ZSwgd2lkdGgpIHtcbiAgICB2YXIgaSA9IHZhbHVlLmxlbmd0aCxcbiAgICAgICAgdCA9IFtdLFxuICAgICAgICBqID0gMCxcbiAgICAgICAgZyA9IGdyb3VwaW5nWzBdLFxuICAgICAgICBsZW5ndGggPSAwO1xuXG4gICAgd2hpbGUgKGkgPiAwICYmIGcgPiAwKSB7XG4gICAgICBpZiAobGVuZ3RoICsgZyArIDEgPiB3aWR0aCkgZyA9IE1hdGgubWF4KDEsIHdpZHRoIC0gbGVuZ3RoKTtcbiAgICAgIHQucHVzaCh2YWx1ZS5zdWJzdHJpbmcoaSAtPSBnLCBpICsgZykpO1xuICAgICAgaWYgKChsZW5ndGggKz0gZyArIDEpID4gd2lkdGgpIGJyZWFrO1xuICAgICAgZyA9IGdyb3VwaW5nW2ogPSAoaiArIDEpICUgZ3JvdXBpbmcubGVuZ3RoXTtcbiAgICB9XG5cbiAgICByZXR1cm4gdC5yZXZlcnNlKCkuam9pbih0aG91c2FuZHMpO1xuICB9O1xufVxuIl0sIm1hcHBpbmdzIjoiQUFBQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTsiLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///./node_modules/vega-functions/node_modules/d3-format/src/formatGroup.js\n");

/***/ }),

/***/ "./node_modules/vega-functions/node_modules/d3-format/src/formatNumerals.js":
/*!**********************************************************************************!*\
  !*** ./node_modules/vega-functions/node_modules/d3-format/src/formatNumerals.js ***!
  \**********************************************************************************/
/*! exports provided: default */
/***/ (function(module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony default export */ __webpack_exports__[\"default\"] = (function(numerals) {\n  return function(value) {\n    return value.replace(/[0-9]/g, function(i) {\n      return numerals[+i];\n    });\n  };\n});\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvdmVnYS1mdW5jdGlvbnMvbm9kZV9tb2R1bGVzL2QzLWZvcm1hdC9zcmMvZm9ybWF0TnVtZXJhbHMuanMuanMiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvdmVnYS1mdW5jdGlvbnMvbm9kZV9tb2R1bGVzL2QzLWZvcm1hdC9zcmMvZm9ybWF0TnVtZXJhbHMuanM/ZWYzYSJdLCJzb3VyY2VzQ29udGVudCI6WyJleHBvcnQgZGVmYXVsdCBmdW5jdGlvbihudW1lcmFscykge1xuICByZXR1cm4gZnVuY3Rpb24odmFsdWUpIHtcbiAgICByZXR1cm4gdmFsdWUucmVwbGFjZSgvWzAtOV0vZywgZnVuY3Rpb24oaSkge1xuICAgICAgcmV0dXJuIG51bWVyYWxzWytpXTtcbiAgICB9KTtcbiAgfTtcbn1cbiJdLCJtYXBwaW5ncyI6IkFBQUE7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTsiLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///./node_modules/vega-functions/node_modules/d3-format/src/formatNumerals.js\n");

/***/ }),

/***/ "./node_modules/vega-functions/node_modules/d3-format/src/formatPrefixAuto.js":
/*!************************************************************************************!*\
  !*** ./node_modules/vega-functions/node_modules/d3-format/src/formatPrefixAuto.js ***!
  \************************************************************************************/
/*! exports provided: prefixExponent, default */
/***/ (function(module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"prefixExponent\", function() { return prefixExponent; });\n/* harmony import */ var _formatDecimal_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./formatDecimal.js */ \"./node_modules/vega-functions/node_modules/d3-format/src/formatDecimal.js\");\n\n\nvar prefixExponent;\n\n/* harmony default export */ __webpack_exports__[\"default\"] = (function(x, p) {\n  var d = Object(_formatDecimal_js__WEBPACK_IMPORTED_MODULE_0__[\"formatDecimalParts\"])(x, p);\n  if (!d) return x + \"\";\n  var coefficient = d[0],\n      exponent = d[1],\n      i = exponent - (prefixExponent = Math.max(-8, Math.min(8, Math.floor(exponent / 3))) * 3) + 1,\n      n = coefficient.length;\n  return i === n ? coefficient\n      : i > n ? coefficient + new Array(i - n + 1).join(\"0\")\n      : i > 0 ? coefficient.slice(0, i) + \".\" + coefficient.slice(i)\n      : \"0.\" + new Array(1 - i).join(\"0\") + Object(_formatDecimal_js__WEBPACK_IMPORTED_MODULE_0__[\"formatDecimalParts\"])(x, Math.max(0, p + i - 1))[0]; // less than 1y!\n});\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvdmVnYS1mdW5jdGlvbnMvbm9kZV9tb2R1bGVzL2QzLWZvcm1hdC9zcmMvZm9ybWF0UHJlZml4QXV0by5qcy5qcyIsInNvdXJjZXMiOlsid2VicGFjazovLy8uL25vZGVfbW9kdWxlcy92ZWdhLWZ1bmN0aW9ucy9ub2RlX21vZHVsZXMvZDMtZm9ybWF0L3NyYy9mb3JtYXRQcmVmaXhBdXRvLmpzPzQ1ZjUiXSwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtmb3JtYXREZWNpbWFsUGFydHN9IGZyb20gXCIuL2Zvcm1hdERlY2ltYWwuanNcIjtcblxuZXhwb3J0IHZhciBwcmVmaXhFeHBvbmVudDtcblxuZXhwb3J0IGRlZmF1bHQgZnVuY3Rpb24oeCwgcCkge1xuICB2YXIgZCA9IGZvcm1hdERlY2ltYWxQYXJ0cyh4LCBwKTtcbiAgaWYgKCFkKSByZXR1cm4geCArIFwiXCI7XG4gIHZhciBjb2VmZmljaWVudCA9IGRbMF0sXG4gICAgICBleHBvbmVudCA9IGRbMV0sXG4gICAgICBpID0gZXhwb25lbnQgLSAocHJlZml4RXhwb25lbnQgPSBNYXRoLm1heCgtOCwgTWF0aC5taW4oOCwgTWF0aC5mbG9vcihleHBvbmVudCAvIDMpKSkgKiAzKSArIDEsXG4gICAgICBuID0gY29lZmZpY2llbnQubGVuZ3RoO1xuICByZXR1cm4gaSA9PT0gbiA/IGNvZWZmaWNpZW50XG4gICAgICA6IGkgPiBuID8gY29lZmZpY2llbnQgKyBuZXcgQXJyYXkoaSAtIG4gKyAxKS5qb2luKFwiMFwiKVxuICAgICAgOiBpID4gMCA/IGNvZWZmaWNpZW50LnNsaWNlKDAsIGkpICsgXCIuXCIgKyBjb2VmZmljaWVudC5zbGljZShpKVxuICAgICAgOiBcIjAuXCIgKyBuZXcgQXJyYXkoMSAtIGkpLmpvaW4oXCIwXCIpICsgZm9ybWF0RGVjaW1hbFBhcnRzKHgsIE1hdGgubWF4KDAsIHAgKyBpIC0gMSkpWzBdOyAvLyBsZXNzIHRoYW4gMXkhXG59XG4iXSwibWFwcGluZ3MiOiJBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOyIsInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///./node_modules/vega-functions/node_modules/d3-format/src/formatPrefixAuto.js\n");

/***/ }),

/***/ "./node_modules/vega-functions/node_modules/d3-format/src/formatRounded.js":
/*!*********************************************************************************!*\
  !*** ./node_modules/vega-functions/node_modules/d3-format/src/formatRounded.js ***!
  \*********************************************************************************/
/*! exports provided: default */
/***/ (function(module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _formatDecimal_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./formatDecimal.js */ \"./node_modules/vega-functions/node_modules/d3-format/src/formatDecimal.js\");\n\n\n/* harmony default export */ __webpack_exports__[\"default\"] = (function(x, p) {\n  var d = Object(_formatDecimal_js__WEBPACK_IMPORTED_MODULE_0__[\"formatDecimalParts\"])(x, p);\n  if (!d) return x + \"\";\n  var coefficient = d[0],\n      exponent = d[1];\n  return exponent < 0 ? \"0.\" + new Array(-exponent).join(\"0\") + coefficient\n      : coefficient.length > exponent + 1 ? coefficient.slice(0, exponent + 1) + \".\" + coefficient.slice(exponent + 1)\n      : coefficient + new Array(exponent - coefficient.length + 2).join(\"0\");\n});\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvdmVnYS1mdW5jdGlvbnMvbm9kZV9tb2R1bGVzL2QzLWZvcm1hdC9zcmMvZm9ybWF0Um91bmRlZC5qcy5qcyIsInNvdXJjZXMiOlsid2VicGFjazovLy8uL25vZGVfbW9kdWxlcy92ZWdhLWZ1bmN0aW9ucy9ub2RlX21vZHVsZXMvZDMtZm9ybWF0L3NyYy9mb3JtYXRSb3VuZGVkLmpzPzg5Y2UiXSwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtmb3JtYXREZWNpbWFsUGFydHN9IGZyb20gXCIuL2Zvcm1hdERlY2ltYWwuanNcIjtcblxuZXhwb3J0IGRlZmF1bHQgZnVuY3Rpb24oeCwgcCkge1xuICB2YXIgZCA9IGZvcm1hdERlY2ltYWxQYXJ0cyh4LCBwKTtcbiAgaWYgKCFkKSByZXR1cm4geCArIFwiXCI7XG4gIHZhciBjb2VmZmljaWVudCA9IGRbMF0sXG4gICAgICBleHBvbmVudCA9IGRbMV07XG4gIHJldHVybiBleHBvbmVudCA8IDAgPyBcIjAuXCIgKyBuZXcgQXJyYXkoLWV4cG9uZW50KS5qb2luKFwiMFwiKSArIGNvZWZmaWNpZW50XG4gICAgICA6IGNvZWZmaWNpZW50Lmxlbmd0aCA+IGV4cG9uZW50ICsgMSA/IGNvZWZmaWNpZW50LnNsaWNlKDAsIGV4cG9uZW50ICsgMSkgKyBcIi5cIiArIGNvZWZmaWNpZW50LnNsaWNlKGV4cG9uZW50ICsgMSlcbiAgICAgIDogY29lZmZpY2llbnQgKyBuZXcgQXJyYXkoZXhwb25lbnQgLSBjb2VmZmljaWVudC5sZW5ndGggKyAyKS5qb2luKFwiMFwiKTtcbn1cbiJdLCJtYXBwaW5ncyI6IkFBQUE7QUFBQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7Iiwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///./node_modules/vega-functions/node_modules/d3-format/src/formatRounded.js\n");

/***/ }),

/***/ "./node_modules/vega-functions/node_modules/d3-format/src/formatSpecifier.js":
/*!***********************************************************************************!*\
  !*** ./node_modules/vega-functions/node_modules/d3-format/src/formatSpecifier.js ***!
  \***********************************************************************************/
/*! exports provided: default, FormatSpecifier */
/***/ (function(module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"default\", function() { return formatSpecifier; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"FormatSpecifier\", function() { return FormatSpecifier; });\n// [[fill]align][sign][symbol][0][width][,][.precision][~][type]\nvar re = /^(?:(.)?([<>=^]))?([+\\-( ])?([$#])?(0)?(\\d+)?(,)?(\\.\\d+)?(~)?([a-z%])?$/i;\n\nfunction formatSpecifier(specifier) {\n  if (!(match = re.exec(specifier))) throw new Error(\"invalid format: \" + specifier);\n  var match;\n  return new FormatSpecifier({\n    fill: match[1],\n    align: match[2],\n    sign: match[3],\n    symbol: match[4],\n    zero: match[5],\n    width: match[6],\n    comma: match[7],\n    precision: match[8] && match[8].slice(1),\n    trim: match[9],\n    type: match[10]\n  });\n}\n\nformatSpecifier.prototype = FormatSpecifier.prototype; // instanceof\n\nfunction FormatSpecifier(specifier) {\n  this.fill = specifier.fill === undefined ? \" \" : specifier.fill + \"\";\n  this.align = specifier.align === undefined ? \">\" : specifier.align + \"\";\n  this.sign = specifier.sign === undefined ? \"-\" : specifier.sign + \"\";\n  this.symbol = specifier.symbol === undefined ? \"\" : specifier.symbol + \"\";\n  this.zero = !!specifier.zero;\n  this.width = specifier.width === undefined ? undefined : +specifier.width;\n  this.comma = !!specifier.comma;\n  this.precision = specifier.precision === undefined ? undefined : +specifier.precision;\n  this.trim = !!specifier.trim;\n  this.type = specifier.type === undefined ? \"\" : specifier.type + \"\";\n}\n\nFormatSpecifier.prototype.toString = function() {\n  return this.fill\n      + this.align\n      + this.sign\n      + this.symbol\n      + (this.zero ? \"0\" : \"\")\n      + (this.width === undefined ? \"\" : Math.max(1, this.width | 0))\n      + (this.comma ? \",\" : \"\")\n      + (this.precision === undefined ? \"\" : \".\" + Math.max(0, this.precision | 0))\n      + (this.trim ? \"~\" : \"\")\n      + this.type;\n};\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvdmVnYS1mdW5jdGlvbnMvbm9kZV9tb2R1bGVzL2QzLWZvcm1hdC9zcmMvZm9ybWF0U3BlY2lmaWVyLmpzLmpzIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL3ZlZ2EtZnVuY3Rpb25zL25vZGVfbW9kdWxlcy9kMy1mb3JtYXQvc3JjL2Zvcm1hdFNwZWNpZmllci5qcz9iOThmIl0sInNvdXJjZXNDb250ZW50IjpbIi8vIFtbZmlsbF1hbGlnbl1bc2lnbl1bc3ltYm9sXVswXVt3aWR0aF1bLF1bLnByZWNpc2lvbl1bfl1bdHlwZV1cbnZhciByZSA9IC9eKD86KC4pPyhbPD49Xl0pKT8oWytcXC0oIF0pPyhbJCNdKT8oMCk/KFxcZCspPygsKT8oXFwuXFxkKyk/KH4pPyhbYS16JV0pPyQvaTtcblxuZXhwb3J0IGRlZmF1bHQgZnVuY3Rpb24gZm9ybWF0U3BlY2lmaWVyKHNwZWNpZmllcikge1xuICBpZiAoIShtYXRjaCA9IHJlLmV4ZWMoc3BlY2lmaWVyKSkpIHRocm93IG5ldyBFcnJvcihcImludmFsaWQgZm9ybWF0OiBcIiArIHNwZWNpZmllcik7XG4gIHZhciBtYXRjaDtcbiAgcmV0dXJuIG5ldyBGb3JtYXRTcGVjaWZpZXIoe1xuICAgIGZpbGw6IG1hdGNoWzFdLFxuICAgIGFsaWduOiBtYXRjaFsyXSxcbiAgICBzaWduOiBtYXRjaFszXSxcbiAgICBzeW1ib2w6IG1hdGNoWzRdLFxuICAgIHplcm86IG1hdGNoWzVdLFxuICAgIHdpZHRoOiBtYXRjaFs2XSxcbiAgICBjb21tYTogbWF0Y2hbN10sXG4gICAgcHJlY2lzaW9uOiBtYXRjaFs4XSAmJiBtYXRjaFs4XS5zbGljZSgxKSxcbiAgICB0cmltOiBtYXRjaFs5XSxcbiAgICB0eXBlOiBtYXRjaFsxMF1cbiAgfSk7XG59XG5cbmZvcm1hdFNwZWNpZmllci5wcm90b3R5cGUgPSBGb3JtYXRTcGVjaWZpZXIucHJvdG90eXBlOyAvLyBpbnN0YW5jZW9mXG5cbmV4cG9ydCBmdW5jdGlvbiBGb3JtYXRTcGVjaWZpZXIoc3BlY2lmaWVyKSB7XG4gIHRoaXMuZmlsbCA9IHNwZWNpZmllci5maWxsID09PSB1bmRlZmluZWQgPyBcIiBcIiA6IHNwZWNpZmllci5maWxsICsgXCJcIjtcbiAgdGhpcy5hbGlnbiA9IHNwZWNpZmllci5hbGlnbiA9PT0gdW5kZWZpbmVkID8gXCI+XCIgOiBzcGVjaWZpZXIuYWxpZ24gKyBcIlwiO1xuICB0aGlzLnNpZ24gPSBzcGVjaWZpZXIuc2lnbiA9PT0gdW5kZWZpbmVkID8gXCItXCIgOiBzcGVjaWZpZXIuc2lnbiArIFwiXCI7XG4gIHRoaXMuc3ltYm9sID0gc3BlY2lmaWVyLnN5bWJvbCA9PT0gdW5kZWZpbmVkID8gXCJcIiA6IHNwZWNpZmllci5zeW1ib2wgKyBcIlwiO1xuICB0aGlzLnplcm8gPSAhIXNwZWNpZmllci56ZXJvO1xuICB0aGlzLndpZHRoID0gc3BlY2lmaWVyLndpZHRoID09PSB1bmRlZmluZWQgPyB1bmRlZmluZWQgOiArc3BlY2lmaWVyLndpZHRoO1xuICB0aGlzLmNvbW1hID0gISFzcGVjaWZpZXIuY29tbWE7XG4gIHRoaXMucHJlY2lzaW9uID0gc3BlY2lmaWVyLnByZWNpc2lvbiA9PT0gdW5kZWZpbmVkID8gdW5kZWZpbmVkIDogK3NwZWNpZmllci5wcmVjaXNpb247XG4gIHRoaXMudHJpbSA9ICEhc3BlY2lmaWVyLnRyaW07XG4gIHRoaXMudHlwZSA9IHNwZWNpZmllci50eXBlID09PSB1bmRlZmluZWQgPyBcIlwiIDogc3BlY2lmaWVyLnR5cGUgKyBcIlwiO1xufVxuXG5Gb3JtYXRTcGVjaWZpZXIucHJvdG90eXBlLnRvU3RyaW5nID0gZnVuY3Rpb24oKSB7XG4gIHJldHVybiB0aGlzLmZpbGxcbiAgICAgICsgdGhpcy5hbGlnblxuICAgICAgKyB0aGlzLnNpZ25cbiAgICAgICsgdGhpcy5zeW1ib2xcbiAgICAgICsgKHRoaXMuemVybyA/IFwiMFwiIDogXCJcIilcbiAgICAgICsgKHRoaXMud2lkdGggPT09IHVuZGVmaW5lZCA/IFwiXCIgOiBNYXRoLm1heCgxLCB0aGlzLndpZHRoIHwgMCkpXG4gICAgICArICh0aGlzLmNvbW1hID8gXCIsXCIgOiBcIlwiKVxuICAgICAgKyAodGhpcy5wcmVjaXNpb24gPT09IHVuZGVmaW5lZCA/IFwiXCIgOiBcIi5cIiArIE1hdGgubWF4KDAsIHRoaXMucHJlY2lzaW9uIHwgMCkpXG4gICAgICArICh0aGlzLnRyaW0gPyBcIn5cIiA6IFwiXCIpXG4gICAgICArIHRoaXMudHlwZTtcbn07XG4iXSwibWFwcGluZ3MiOiJBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7Iiwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///./node_modules/vega-functions/node_modules/d3-format/src/formatSpecifier.js\n");

/***/ }),

/***/ "./node_modules/vega-functions/node_modules/d3-format/src/formatTrim.js":
/*!******************************************************************************!*\
  !*** ./node_modules/vega-functions/node_modules/d3-format/src/formatTrim.js ***!
  \******************************************************************************/
/*! exports provided: default */
/***/ (function(module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n// Trims insignificant zeros, e.g., replaces 1.2000k with 1.2k.\n/* harmony default export */ __webpack_exports__[\"default\"] = (function(s) {\n  out: for (var n = s.length, i = 1, i0 = -1, i1; i < n; ++i) {\n    switch (s[i]) {\n      case \".\": i0 = i1 = i; break;\n      case \"0\": if (i0 === 0) i0 = i; i1 = i; break;\n      default: if (!+s[i]) break out; if (i0 > 0) i0 = 0; break;\n    }\n  }\n  return i0 > 0 ? s.slice(0, i0) + s.slice(i1 + 1) : s;\n});\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvdmVnYS1mdW5jdGlvbnMvbm9kZV9tb2R1bGVzL2QzLWZvcm1hdC9zcmMvZm9ybWF0VHJpbS5qcy5qcyIsInNvdXJjZXMiOlsid2VicGFjazovLy8uL25vZGVfbW9kdWxlcy92ZWdhLWZ1bmN0aW9ucy9ub2RlX21vZHVsZXMvZDMtZm9ybWF0L3NyYy9mb3JtYXRUcmltLmpzP2VjYWMiXSwic291cmNlc0NvbnRlbnQiOlsiLy8gVHJpbXMgaW5zaWduaWZpY2FudCB6ZXJvcywgZS5nLiwgcmVwbGFjZXMgMS4yMDAwayB3aXRoIDEuMmsuXG5leHBvcnQgZGVmYXVsdCBmdW5jdGlvbihzKSB7XG4gIG91dDogZm9yICh2YXIgbiA9IHMubGVuZ3RoLCBpID0gMSwgaTAgPSAtMSwgaTE7IGkgPCBuOyArK2kpIHtcbiAgICBzd2l0Y2ggKHNbaV0pIHtcbiAgICAgIGNhc2UgXCIuXCI6IGkwID0gaTEgPSBpOyBicmVhaztcbiAgICAgIGNhc2UgXCIwXCI6IGlmIChpMCA9PT0gMCkgaTAgPSBpOyBpMSA9IGk7IGJyZWFrO1xuICAgICAgZGVmYXVsdDogaWYgKCErc1tpXSkgYnJlYWsgb3V0OyBpZiAoaTAgPiAwKSBpMCA9IDA7IGJyZWFrO1xuICAgIH1cbiAgfVxuICByZXR1cm4gaTAgPiAwID8gcy5zbGljZSgwLCBpMCkgKyBzLnNsaWNlKGkxICsgMSkgOiBzO1xufVxuIl0sIm1hcHBpbmdzIjoiQUFBQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7Iiwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///./node_modules/vega-functions/node_modules/d3-format/src/formatTrim.js\n");

/***/ }),

/***/ "./node_modules/vega-functions/node_modules/d3-format/src/formatTypes.js":
/*!*******************************************************************************!*\
  !*** ./node_modules/vega-functions/node_modules/d3-format/src/formatTypes.js ***!
  \*******************************************************************************/
/*! exports provided: default */
/***/ (function(module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _formatDecimal_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./formatDecimal.js */ \"./node_modules/vega-functions/node_modules/d3-format/src/formatDecimal.js\");\n/* harmony import */ var _formatPrefixAuto_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./formatPrefixAuto.js */ \"./node_modules/vega-functions/node_modules/d3-format/src/formatPrefixAuto.js\");\n/* harmony import */ var _formatRounded_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./formatRounded.js */ \"./node_modules/vega-functions/node_modules/d3-format/src/formatRounded.js\");\n\n\n\n\n/* harmony default export */ __webpack_exports__[\"default\"] = ({\n  \"%\": (x, p) => (x * 100).toFixed(p),\n  \"b\": (x) => Math.round(x).toString(2),\n  \"c\": (x) => x + \"\",\n  \"d\": _formatDecimal_js__WEBPACK_IMPORTED_MODULE_0__[\"default\"],\n  \"e\": (x, p) => x.toExponential(p),\n  \"f\": (x, p) => x.toFixed(p),\n  \"g\": (x, p) => x.toPrecision(p),\n  \"o\": (x) => Math.round(x).toString(8),\n  \"p\": (x, p) => Object(_formatRounded_js__WEBPACK_IMPORTED_MODULE_2__[\"default\"])(x * 100, p),\n  \"r\": _formatRounded_js__WEBPACK_IMPORTED_MODULE_2__[\"default\"],\n  \"s\": _formatPrefixAuto_js__WEBPACK_IMPORTED_MODULE_1__[\"default\"],\n  \"X\": (x) => Math.round(x).toString(16).toUpperCase(),\n  \"x\": (x) => Math.round(x).toString(16)\n});\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvdmVnYS1mdW5jdGlvbnMvbm9kZV9tb2R1bGVzL2QzLWZvcm1hdC9zcmMvZm9ybWF0VHlwZXMuanMuanMiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvdmVnYS1mdW5jdGlvbnMvbm9kZV9tb2R1bGVzL2QzLWZvcm1hdC9zcmMvZm9ybWF0VHlwZXMuanM/MThmYSJdLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgZm9ybWF0RGVjaW1hbCBmcm9tIFwiLi9mb3JtYXREZWNpbWFsLmpzXCI7XG5pbXBvcnQgZm9ybWF0UHJlZml4QXV0byBmcm9tIFwiLi9mb3JtYXRQcmVmaXhBdXRvLmpzXCI7XG5pbXBvcnQgZm9ybWF0Um91bmRlZCBmcm9tIFwiLi9mb3JtYXRSb3VuZGVkLmpzXCI7XG5cbmV4cG9ydCBkZWZhdWx0IHtcbiAgXCIlXCI6ICh4LCBwKSA9PiAoeCAqIDEwMCkudG9GaXhlZChwKSxcbiAgXCJiXCI6ICh4KSA9PiBNYXRoLnJvdW5kKHgpLnRvU3RyaW5nKDIpLFxuICBcImNcIjogKHgpID0+IHggKyBcIlwiLFxuICBcImRcIjogZm9ybWF0RGVjaW1hbCxcbiAgXCJlXCI6ICh4LCBwKSA9PiB4LnRvRXhwb25lbnRpYWwocCksXG4gIFwiZlwiOiAoeCwgcCkgPT4geC50b0ZpeGVkKHApLFxuICBcImdcIjogKHgsIHApID0+IHgudG9QcmVjaXNpb24ocCksXG4gIFwib1wiOiAoeCkgPT4gTWF0aC5yb3VuZCh4KS50b1N0cmluZyg4KSxcbiAgXCJwXCI6ICh4LCBwKSA9PiBmb3JtYXRSb3VuZGVkKHggKiAxMDAsIHApLFxuICBcInJcIjogZm9ybWF0Um91bmRlZCxcbiAgXCJzXCI6IGZvcm1hdFByZWZpeEF1dG8sXG4gIFwiWFwiOiAoeCkgPT4gTWF0aC5yb3VuZCh4KS50b1N0cmluZygxNikudG9VcHBlckNhc2UoKSxcbiAgXCJ4XCI6ICh4KSA9PiBNYXRoLnJvdW5kKHgpLnRvU3RyaW5nKDE2KVxufTtcbiJdLCJtYXBwaW5ncyI6IkFBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTsiLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///./node_modules/vega-functions/node_modules/d3-format/src/formatTypes.js\n");

/***/ }),

/***/ "./node_modules/vega-functions/node_modules/d3-format/src/identity.js":
/*!****************************************************************************!*\
  !*** ./node_modules/vega-functions/node_modules/d3-format/src/identity.js ***!
  \****************************************************************************/
/*! exports provided: default */
/***/ (function(module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony default export */ __webpack_exports__[\"default\"] = (function(x) {\n  return x;\n});\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvdmVnYS1mdW5jdGlvbnMvbm9kZV9tb2R1bGVzL2QzLWZvcm1hdC9zcmMvaWRlbnRpdHkuanMuanMiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvdmVnYS1mdW5jdGlvbnMvbm9kZV9tb2R1bGVzL2QzLWZvcm1hdC9zcmMvaWRlbnRpdHkuanM/YTVhNSJdLCJzb3VyY2VzQ29udGVudCI6WyJleHBvcnQgZGVmYXVsdCBmdW5jdGlvbih4KSB7XG4gIHJldHVybiB4O1xufVxuIl0sIm1hcHBpbmdzIjoiQUFBQTtBQUFBO0FBQ0E7QUFDQTsiLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///./node_modules/vega-functions/node_modules/d3-format/src/identity.js\n");

/***/ }),

/***/ "./node_modules/vega-functions/node_modules/d3-format/src/index.js":
/*!*************************************************************************!*\
  !*** ./node_modules/vega-functions/node_modules/d3-format/src/index.js ***!
  \*************************************************************************/
/*! exports provided: formatDefaultLocale, format, formatPrefix, formatLocale, formatSpecifier, FormatSpecifier, precisionFixed, precisionPrefix, precisionRound */
/***/ (function(module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _defaultLocale_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./defaultLocale.js */ \"./node_modules/vega-functions/node_modules/d3-format/src/defaultLocale.js\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"formatDefaultLocale\", function() { return _defaultLocale_js__WEBPACK_IMPORTED_MODULE_0__[\"default\"]; });\n\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"format\", function() { return _defaultLocale_js__WEBPACK_IMPORTED_MODULE_0__[\"format\"]; });\n\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"formatPrefix\", function() { return _defaultLocale_js__WEBPACK_IMPORTED_MODULE_0__[\"formatPrefix\"]; });\n\n/* harmony import */ var _locale_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./locale.js */ \"./node_modules/vega-functions/node_modules/d3-format/src/locale.js\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"formatLocale\", function() { return _locale_js__WEBPACK_IMPORTED_MODULE_1__[\"default\"]; });\n\n/* harmony import */ var _formatSpecifier_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./formatSpecifier.js */ \"./node_modules/vega-functions/node_modules/d3-format/src/formatSpecifier.js\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"formatSpecifier\", function() { return _formatSpecifier_js__WEBPACK_IMPORTED_MODULE_2__[\"default\"]; });\n\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"FormatSpecifier\", function() { return _formatSpecifier_js__WEBPACK_IMPORTED_MODULE_2__[\"FormatSpecifier\"]; });\n\n/* harmony import */ var _precisionFixed_js__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ./precisionFixed.js */ \"./node_modules/vega-functions/node_modules/d3-format/src/precisionFixed.js\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"precisionFixed\", function() { return _precisionFixed_js__WEBPACK_IMPORTED_MODULE_3__[\"default\"]; });\n\n/* harmony import */ var _precisionPrefix_js__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ./precisionPrefix.js */ \"./node_modules/vega-functions/node_modules/d3-format/src/precisionPrefix.js\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"precisionPrefix\", function() { return _precisionPrefix_js__WEBPACK_IMPORTED_MODULE_4__[\"default\"]; });\n\n/* harmony import */ var _precisionRound_js__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! ./precisionRound.js */ \"./node_modules/vega-functions/node_modules/d3-format/src/precisionRound.js\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"precisionRound\", function() { return _precisionRound_js__WEBPACK_IMPORTED_MODULE_5__[\"default\"]; });\n\n\n\n\n\n\n\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvdmVnYS1mdW5jdGlvbnMvbm9kZV9tb2R1bGVzL2QzLWZvcm1hdC9zcmMvaW5kZXguanMuanMiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvdmVnYS1mdW5jdGlvbnMvbm9kZV9tb2R1bGVzL2QzLWZvcm1hdC9zcmMvaW5kZXguanM/NDg1MCJdLCJzb3VyY2VzQ29udGVudCI6WyJleHBvcnQge2RlZmF1bHQgYXMgZm9ybWF0RGVmYXVsdExvY2FsZSwgZm9ybWF0LCBmb3JtYXRQcmVmaXh9IGZyb20gXCIuL2RlZmF1bHRMb2NhbGUuanNcIjtcbmV4cG9ydCB7ZGVmYXVsdCBhcyBmb3JtYXRMb2NhbGV9IGZyb20gXCIuL2xvY2FsZS5qc1wiO1xuZXhwb3J0IHtkZWZhdWx0IGFzIGZvcm1hdFNwZWNpZmllciwgRm9ybWF0U3BlY2lmaWVyfSBmcm9tIFwiLi9mb3JtYXRTcGVjaWZpZXIuanNcIjtcbmV4cG9ydCB7ZGVmYXVsdCBhcyBwcmVjaXNpb25GaXhlZH0gZnJvbSBcIi4vcHJlY2lzaW9uRml4ZWQuanNcIjtcbmV4cG9ydCB7ZGVmYXVsdCBhcyBwcmVjaXNpb25QcmVmaXh9IGZyb20gXCIuL3ByZWNpc2lvblByZWZpeC5qc1wiO1xuZXhwb3J0IHtkZWZhdWx0IGFzIHByZWNpc2lvblJvdW5kfSBmcm9tIFwiLi9wcmVjaXNpb25Sb3VuZC5qc1wiO1xuIl0sIm1hcHBpbmdzIjoiQUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTsiLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///./node_modules/vega-functions/node_modules/d3-format/src/index.js\n");

/***/ }),

/***/ "./node_modules/vega-functions/node_modules/d3-format/src/locale.js":
/*!**************************************************************************!*\
  !*** ./node_modules/vega-functions/node_modules/d3-format/src/locale.js ***!
  \**************************************************************************/
/*! exports provided: default */
/***/ (function(module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _exponent_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./exponent.js */ \"./node_modules/vega-functions/node_modules/d3-format/src/exponent.js\");\n/* harmony import */ var _formatGroup_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./formatGroup.js */ \"./node_modules/vega-functions/node_modules/d3-format/src/formatGroup.js\");\n/* harmony import */ var _formatNumerals_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./formatNumerals.js */ \"./node_modules/vega-functions/node_modules/d3-format/src/formatNumerals.js\");\n/* harmony import */ var _formatSpecifier_js__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ./formatSpecifier.js */ \"./node_modules/vega-functions/node_modules/d3-format/src/formatSpecifier.js\");\n/* harmony import */ var _formatTrim_js__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ./formatTrim.js */ \"./node_modules/vega-functions/node_modules/d3-format/src/formatTrim.js\");\n/* harmony import */ var _formatTypes_js__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! ./formatTypes.js */ \"./node_modules/vega-functions/node_modules/d3-format/src/formatTypes.js\");\n/* harmony import */ var _formatPrefixAuto_js__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! ./formatPrefixAuto.js */ \"./node_modules/vega-functions/node_modules/d3-format/src/formatPrefixAuto.js\");\n/* harmony import */ var _identity_js__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! ./identity.js */ \"./node_modules/vega-functions/node_modules/d3-format/src/identity.js\");\n\n\n\n\n\n\n\n\n\nvar map = Array.prototype.map,\n    prefixes = [\"y\",\"z\",\"a\",\"f\",\"p\",\"n\",\"µ\",\"m\",\"\",\"k\",\"M\",\"G\",\"T\",\"P\",\"E\",\"Z\",\"Y\"];\n\n/* harmony default export */ __webpack_exports__[\"default\"] = (function(locale) {\n  var group = locale.grouping === undefined || locale.thousands === undefined ? _identity_js__WEBPACK_IMPORTED_MODULE_7__[\"default\"] : Object(_formatGroup_js__WEBPACK_IMPORTED_MODULE_1__[\"default\"])(map.call(locale.grouping, Number), locale.thousands + \"\"),\n      currencyPrefix = locale.currency === undefined ? \"\" : locale.currency[0] + \"\",\n      currencySuffix = locale.currency === undefined ? \"\" : locale.currency[1] + \"\",\n      decimal = locale.decimal === undefined ? \".\" : locale.decimal + \"\",\n      numerals = locale.numerals === undefined ? _identity_js__WEBPACK_IMPORTED_MODULE_7__[\"default\"] : Object(_formatNumerals_js__WEBPACK_IMPORTED_MODULE_2__[\"default\"])(map.call(locale.numerals, String)),\n      percent = locale.percent === undefined ? \"%\" : locale.percent + \"\",\n      minus = locale.minus === undefined ? \"−\" : locale.minus + \"\",\n      nan = locale.nan === undefined ? \"NaN\" : locale.nan + \"\";\n\n  function newFormat(specifier) {\n    specifier = Object(_formatSpecifier_js__WEBPACK_IMPORTED_MODULE_3__[\"default\"])(specifier);\n\n    var fill = specifier.fill,\n        align = specifier.align,\n        sign = specifier.sign,\n        symbol = specifier.symbol,\n        zero = specifier.zero,\n        width = specifier.width,\n        comma = specifier.comma,\n        precision = specifier.precision,\n        trim = specifier.trim,\n        type = specifier.type;\n\n    // The \"n\" type is an alias for \",g\".\n    if (type === \"n\") comma = true, type = \"g\";\n\n    // The \"\" type, and any invalid type, is an alias for \".12~g\".\n    else if (!_formatTypes_js__WEBPACK_IMPORTED_MODULE_5__[\"default\"][type]) precision === undefined && (precision = 12), trim = true, type = \"g\";\n\n    // If zero fill is specified, padding goes after sign and before digits.\n    if (zero || (fill === \"0\" && align === \"=\")) zero = true, fill = \"0\", align = \"=\";\n\n    // Compute the prefix and suffix.\n    // For SI-prefix, the suffix is lazily computed.\n    var prefix = symbol === \"$\" ? currencyPrefix : symbol === \"#\" && /[boxX]/.test(type) ? \"0\" + type.toLowerCase() : \"\",\n        suffix = symbol === \"$\" ? currencySuffix : /[%p]/.test(type) ? percent : \"\";\n\n    // What format function should we use?\n    // Is this an integer type?\n    // Can this type generate exponential notation?\n    var formatType = _formatTypes_js__WEBPACK_IMPORTED_MODULE_5__[\"default\"][type],\n        maybeSuffix = /[defgprs%]/.test(type);\n\n    // Set the default precision if not specified,\n    // or clamp the specified precision to the supported range.\n    // For significant precision, it must be in [1, 21].\n    // For fixed precision, it must be in [0, 20].\n    precision = precision === undefined ? 6\n        : /[gprs]/.test(type) ? Math.max(1, Math.min(21, precision))\n        : Math.max(0, Math.min(20, precision));\n\n    function format(value) {\n      var valuePrefix = prefix,\n          valueSuffix = suffix,\n          i, n, c;\n\n      if (type === \"c\") {\n        valueSuffix = formatType(value) + valueSuffix;\n        value = \"\";\n      } else {\n        value = +value;\n\n        // Determine the sign. -0 is not less than 0, but 1 / -0 is!\n        var valueNegative = value < 0 || 1 / value < 0;\n\n        // Perform the initial formatting.\n        value = isNaN(value) ? nan : formatType(Math.abs(value), precision);\n\n        // Trim insignificant zeros.\n        if (trim) value = Object(_formatTrim_js__WEBPACK_IMPORTED_MODULE_4__[\"default\"])(value);\n\n        // If a negative value rounds to zero after formatting, and no explicit positive sign is requested, hide the sign.\n        if (valueNegative && +value === 0 && sign !== \"+\") valueNegative = false;\n\n        // Compute the prefix and suffix.\n        valuePrefix = (valueNegative ? (sign === \"(\" ? sign : minus) : sign === \"-\" || sign === \"(\" ? \"\" : sign) + valuePrefix;\n        valueSuffix = (type === \"s\" ? prefixes[8 + _formatPrefixAuto_js__WEBPACK_IMPORTED_MODULE_6__[\"prefixExponent\"] / 3] : \"\") + valueSuffix + (valueNegative && sign === \"(\" ? \")\" : \"\");\n\n        // Break the formatted value into the integer “value” part that can be\n        // grouped, and fractional or exponential “suffix” part that is not.\n        if (maybeSuffix) {\n          i = -1, n = value.length;\n          while (++i < n) {\n            if (c = value.charCodeAt(i), 48 > c || c > 57) {\n              valueSuffix = (c === 46 ? decimal + value.slice(i + 1) : value.slice(i)) + valueSuffix;\n              value = value.slice(0, i);\n              break;\n            }\n          }\n        }\n      }\n\n      // If the fill character is not \"0\", grouping is applied before padding.\n      if (comma && !zero) value = group(value, Infinity);\n\n      // Compute the padding.\n      var length = valuePrefix.length + value.length + valueSuffix.length,\n          padding = length < width ? new Array(width - length + 1).join(fill) : \"\";\n\n      // If the fill character is \"0\", grouping is applied after padding.\n      if (comma && zero) value = group(padding + value, padding.length ? width - valueSuffix.length : Infinity), padding = \"\";\n\n      // Reconstruct the final output based on the desired alignment.\n      switch (align) {\n        case \"<\": value = valuePrefix + value + valueSuffix + padding; break;\n        case \"=\": value = valuePrefix + padding + value + valueSuffix; break;\n        case \"^\": value = padding.slice(0, length = padding.length >> 1) + valuePrefix + value + valueSuffix + padding.slice(length); break;\n        default: value = padding + valuePrefix + value + valueSuffix; break;\n      }\n\n      return numerals(value);\n    }\n\n    format.toString = function() {\n      return specifier + \"\";\n    };\n\n    return format;\n  }\n\n  function formatPrefix(specifier, value) {\n    var f = newFormat((specifier = Object(_formatSpecifier_js__WEBPACK_IMPORTED_MODULE_3__[\"default\"])(specifier), specifier.type = \"f\", specifier)),\n        e = Math.max(-8, Math.min(8, Math.floor(Object(_exponent_js__WEBPACK_IMPORTED_MODULE_0__[\"default\"])(value) / 3))) * 3,\n        k = Math.pow(10, -e),\n        prefix = prefixes[8 + e / 3];\n    return function(value) {\n      return f(k * value) + prefix;\n    };\n  }\n\n  return {\n    format: newFormat,\n    formatPrefix: formatPrefix\n  };\n});\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,[encoded data, 10000 characters]\n//# sourceURL=webpack-internal:///./node_modules/vega-functions/node_modules/d3-format/src/locale.js\n");

/***/ }),

/***/ "./node_modules/vega-functions/node_modules/d3-format/src/precisionFixed.js":
/*!**********************************************************************************!*\
  !*** ./node_modules/vega-functions/node_modules/d3-format/src/precisionFixed.js ***!
  \**********************************************************************************/
/*! exports provided: default */
/***/ (function(module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _exponent_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./exponent.js */ \"./node_modules/vega-functions/node_modules/d3-format/src/exponent.js\");\n\n\n/* harmony default export */ __webpack_exports__[\"default\"] = (function(step) {\n  return Math.max(0, -Object(_exponent_js__WEBPACK_IMPORTED_MODULE_0__[\"default\"])(Math.abs(step)));\n});\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvdmVnYS1mdW5jdGlvbnMvbm9kZV9tb2R1bGVzL2QzLWZvcm1hdC9zcmMvcHJlY2lzaW9uRml4ZWQuanMuanMiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvdmVnYS1mdW5jdGlvbnMvbm9kZV9tb2R1bGVzL2QzLWZvcm1hdC9zcmMvcHJlY2lzaW9uRml4ZWQuanM/NGVhMiJdLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgZXhwb25lbnQgZnJvbSBcIi4vZXhwb25lbnQuanNcIjtcblxuZXhwb3J0IGRlZmF1bHQgZnVuY3Rpb24oc3RlcCkge1xuICByZXR1cm4gTWF0aC5tYXgoMCwgLWV4cG9uZW50KE1hdGguYWJzKHN0ZXApKSk7XG59XG4iXSwibWFwcGluZ3MiOiJBQUFBO0FBQUE7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOyIsInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///./node_modules/vega-functions/node_modules/d3-format/src/precisionFixed.js\n");

/***/ }),

/***/ "./node_modules/vega-functions/node_modules/d3-format/src/precisionPrefix.js":
/*!***********************************************************************************!*\
  !*** ./node_modules/vega-functions/node_modules/d3-format/src/precisionPrefix.js ***!
  \***********************************************************************************/
/*! exports provided: default */
/***/ (function(module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _exponent_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./exponent.js */ \"./node_modules/vega-functions/node_modules/d3-format/src/exponent.js\");\n\n\n/* harmony default export */ __webpack_exports__[\"default\"] = (function(step, value) {\n  return Math.max(0, Math.max(-8, Math.min(8, Math.floor(Object(_exponent_js__WEBPACK_IMPORTED_MODULE_0__[\"default\"])(value) / 3))) * 3 - Object(_exponent_js__WEBPACK_IMPORTED_MODULE_0__[\"default\"])(Math.abs(step)));\n});\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvdmVnYS1mdW5jdGlvbnMvbm9kZV9tb2R1bGVzL2QzLWZvcm1hdC9zcmMvcHJlY2lzaW9uUHJlZml4LmpzLmpzIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL3ZlZ2EtZnVuY3Rpb25zL25vZGVfbW9kdWxlcy9kMy1mb3JtYXQvc3JjL3ByZWNpc2lvblByZWZpeC5qcz9lNjBlIl0sInNvdXJjZXNDb250ZW50IjpbImltcG9ydCBleHBvbmVudCBmcm9tIFwiLi9leHBvbmVudC5qc1wiO1xuXG5leHBvcnQgZGVmYXVsdCBmdW5jdGlvbihzdGVwLCB2YWx1ZSkge1xuICByZXR1cm4gTWF0aC5tYXgoMCwgTWF0aC5tYXgoLTgsIE1hdGgubWluKDgsIE1hdGguZmxvb3IoZXhwb25lbnQodmFsdWUpIC8gMykpKSAqIDMgLSBleHBvbmVudChNYXRoLmFicyhzdGVwKSkpO1xufVxuIl0sIm1hcHBpbmdzIjoiQUFBQTtBQUFBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTsiLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///./node_modules/vega-functions/node_modules/d3-format/src/precisionPrefix.js\n");

/***/ }),

/***/ "./node_modules/vega-functions/node_modules/d3-format/src/precisionRound.js":
/*!**********************************************************************************!*\
  !*** ./node_modules/vega-functions/node_modules/d3-format/src/precisionRound.js ***!
  \**********************************************************************************/
/*! exports provided: default */
/***/ (function(module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _exponent_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./exponent.js */ \"./node_modules/vega-functions/node_modules/d3-format/src/exponent.js\");\n\n\n/* harmony default export */ __webpack_exports__[\"default\"] = (function(step, max) {\n  step = Math.abs(step), max = Math.abs(max) - step;\n  return Math.max(0, Object(_exponent_js__WEBPACK_IMPORTED_MODULE_0__[\"default\"])(max) - Object(_exponent_js__WEBPACK_IMPORTED_MODULE_0__[\"default\"])(step)) + 1;\n});\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvdmVnYS1mdW5jdGlvbnMvbm9kZV9tb2R1bGVzL2QzLWZvcm1hdC9zcmMvcHJlY2lzaW9uUm91bmQuanMuanMiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvdmVnYS1mdW5jdGlvbnMvbm9kZV9tb2R1bGVzL2QzLWZvcm1hdC9zcmMvcHJlY2lzaW9uUm91bmQuanM/NjFmNSJdLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgZXhwb25lbnQgZnJvbSBcIi4vZXhwb25lbnQuanNcIjtcblxuZXhwb3J0IGRlZmF1bHQgZnVuY3Rpb24oc3RlcCwgbWF4KSB7XG4gIHN0ZXAgPSBNYXRoLmFicyhzdGVwKSwgbWF4ID0gTWF0aC5hYnMobWF4KSAtIHN0ZXA7XG4gIHJldHVybiBNYXRoLm1heCgwLCBleHBvbmVudChtYXgpIC0gZXhwb25lbnQoc3RlcCkpICsgMTtcbn1cbiJdLCJtYXBwaW5ncyI6IkFBQUE7QUFBQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTsiLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///./node_modules/vega-functions/node_modules/d3-format/src/precisionRound.js\n");

/***/ }),

/***/ "./node_modules/vega-functions/node_modules/d3-geo/src/area.js":
/*!*********************************************************************!*\
  !*** ./node_modules/vega-functions/node_modules/d3-geo/src/area.js ***!
  \*********************************************************************/
/*! exports provided: areaRingSum, areaStream, default */
/***/ (function(module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"areaRingSum\", function() { return areaRingSum; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"areaStream\", function() { return areaStream; });\n/* harmony import */ var d3_array__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! d3-array */ \"./node_modules/d3-array/src/index.js\");\n/* harmony import */ var _math_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./math.js */ \"./node_modules/vega-functions/node_modules/d3-geo/src/math.js\");\n/* harmony import */ var _noop_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./noop.js */ \"./node_modules/vega-functions/node_modules/d3-geo/src/noop.js\");\n/* harmony import */ var _stream_js__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ./stream.js */ \"./node_modules/vega-functions/node_modules/d3-geo/src/stream.js\");\n\n\n\n\n\nvar areaRingSum = new d3_array__WEBPACK_IMPORTED_MODULE_0__[\"Adder\"]();\n\n// hello?\n\nvar areaSum = new d3_array__WEBPACK_IMPORTED_MODULE_0__[\"Adder\"](),\n    lambda00,\n    phi00,\n    lambda0,\n    cosPhi0,\n    sinPhi0;\n\nvar areaStream = {\n  point: _noop_js__WEBPACK_IMPORTED_MODULE_2__[\"default\"],\n  lineStart: _noop_js__WEBPACK_IMPORTED_MODULE_2__[\"default\"],\n  lineEnd: _noop_js__WEBPACK_IMPORTED_MODULE_2__[\"default\"],\n  polygonStart: function() {\n    areaRingSum = new d3_array__WEBPACK_IMPORTED_MODULE_0__[\"Adder\"]();\n    areaStream.lineStart = areaRingStart;\n    areaStream.lineEnd = areaRingEnd;\n  },\n  polygonEnd: function() {\n    var areaRing = +areaRingSum;\n    areaSum.add(areaRing < 0 ? _math_js__WEBPACK_IMPORTED_MODULE_1__[\"tau\"] + areaRing : areaRing);\n    this.lineStart = this.lineEnd = this.point = _noop_js__WEBPACK_IMPORTED_MODULE_2__[\"default\"];\n  },\n  sphere: function() {\n    areaSum.add(_math_js__WEBPACK_IMPORTED_MODULE_1__[\"tau\"]);\n  }\n};\n\nfunction areaRingStart() {\n  areaStream.point = areaPointFirst;\n}\n\nfunction areaRingEnd() {\n  areaPoint(lambda00, phi00);\n}\n\nfunction areaPointFirst(lambda, phi) {\n  areaStream.point = areaPoint;\n  lambda00 = lambda, phi00 = phi;\n  lambda *= _math_js__WEBPACK_IMPORTED_MODULE_1__[\"radians\"], phi *= _math_js__WEBPACK_IMPORTED_MODULE_1__[\"radians\"];\n  lambda0 = lambda, cosPhi0 = Object(_math_js__WEBPACK_IMPORTED_MODULE_1__[\"cos\"])(phi = phi / 2 + _math_js__WEBPACK_IMPORTED_MODULE_1__[\"quarterPi\"]), sinPhi0 = Object(_math_js__WEBPACK_IMPORTED_MODULE_1__[\"sin\"])(phi);\n}\n\nfunction areaPoint(lambda, phi) {\n  lambda *= _math_js__WEBPACK_IMPORTED_MODULE_1__[\"radians\"], phi *= _math_js__WEBPACK_IMPORTED_MODULE_1__[\"radians\"];\n  phi = phi / 2 + _math_js__WEBPACK_IMPORTED_MODULE_1__[\"quarterPi\"]; // half the angular distance from south pole\n\n  // Spherical excess E for a spherical triangle with vertices: south pole,\n  // previous point, current point.  Uses a formula derived from Cagnoli’s\n  // theorem.  See Todhunter, Spherical Trig. (1871), Sec. 103, Eq. (2).\n  var dLambda = lambda - lambda0,\n      sdLambda = dLambda >= 0 ? 1 : -1,\n      adLambda = sdLambda * dLambda,\n      cosPhi = Object(_math_js__WEBPACK_IMPORTED_MODULE_1__[\"cos\"])(phi),\n      sinPhi = Object(_math_js__WEBPACK_IMPORTED_MODULE_1__[\"sin\"])(phi),\n      k = sinPhi0 * sinPhi,\n      u = cosPhi0 * cosPhi + k * Object(_math_js__WEBPACK_IMPORTED_MODULE_1__[\"cos\"])(adLambda),\n      v = k * sdLambda * Object(_math_js__WEBPACK_IMPORTED_MODULE_1__[\"sin\"])(adLambda);\n  areaRingSum.add(Object(_math_js__WEBPACK_IMPORTED_MODULE_1__[\"atan2\"])(v, u));\n\n  // Advance the previous points.\n  lambda0 = lambda, cosPhi0 = cosPhi, sinPhi0 = sinPhi;\n}\n\n/* harmony default export */ __webpack_exports__[\"default\"] = (function(object) {\n  areaSum = new d3_array__WEBPACK_IMPORTED_MODULE_0__[\"Adder\"]();\n  Object(_stream_js__WEBPACK_IMPORTED_MODULE_3__[\"default\"])(object, areaStream);\n  return areaSum * 2;\n});\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvdmVnYS1mdW5jdGlvbnMvbm9kZV9tb2R1bGVzL2QzLWdlby9zcmMvYXJlYS5qcy5qcyIsInNvdXJjZXMiOlsid2VicGFjazovLy8uL25vZGVfbW9kdWxlcy92ZWdhLWZ1bmN0aW9ucy9ub2RlX21vZHVsZXMvZDMtZ2VvL3NyYy9hcmVhLmpzPzJiYTAiXSwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtBZGRlcn0gZnJvbSBcImQzLWFycmF5XCI7XG5pbXBvcnQge2F0YW4yLCBjb3MsIHF1YXJ0ZXJQaSwgcmFkaWFucywgc2luLCB0YXV9IGZyb20gXCIuL21hdGguanNcIjtcbmltcG9ydCBub29wIGZyb20gXCIuL25vb3AuanNcIjtcbmltcG9ydCBzdHJlYW0gZnJvbSBcIi4vc3RyZWFtLmpzXCI7XG5cbmV4cG9ydCB2YXIgYXJlYVJpbmdTdW0gPSBuZXcgQWRkZXIoKTtcblxuLy8gaGVsbG8/XG5cbnZhciBhcmVhU3VtID0gbmV3IEFkZGVyKCksXG4gICAgbGFtYmRhMDAsXG4gICAgcGhpMDAsXG4gICAgbGFtYmRhMCxcbiAgICBjb3NQaGkwLFxuICAgIHNpblBoaTA7XG5cbmV4cG9ydCB2YXIgYXJlYVN0cmVhbSA9IHtcbiAgcG9pbnQ6IG5vb3AsXG4gIGxpbmVTdGFydDogbm9vcCxcbiAgbGluZUVuZDogbm9vcCxcbiAgcG9seWdvblN0YXJ0OiBmdW5jdGlvbigpIHtcbiAgICBhcmVhUmluZ1N1bSA9IG5ldyBBZGRlcigpO1xuICAgIGFyZWFTdHJlYW0ubGluZVN0YXJ0ID0gYXJlYVJpbmdTdGFydDtcbiAgICBhcmVhU3RyZWFtLmxpbmVFbmQgPSBhcmVhUmluZ0VuZDtcbiAgfSxcbiAgcG9seWdvbkVuZDogZnVuY3Rpb24oKSB7XG4gICAgdmFyIGFyZWFSaW5nID0gK2FyZWFSaW5nU3VtO1xuICAgIGFyZWFTdW0uYWRkKGFyZWFSaW5nIDwgMCA/IHRhdSArIGFyZWFSaW5nIDogYXJlYVJpbmcpO1xuICAgIHRoaXMubGluZVN0YXJ0ID0gdGhpcy5saW5lRW5kID0gdGhpcy5wb2ludCA9IG5vb3A7XG4gIH0sXG4gIHNwaGVyZTogZnVuY3Rpb24oKSB7XG4gICAgYXJlYVN1bS5hZGQodGF1KTtcbiAgfVxufTtcblxuZnVuY3Rpb24gYXJlYVJpbmdTdGFydCgpIHtcbiAgYXJlYVN0cmVhbS5wb2ludCA9IGFyZWFQb2ludEZpcnN0O1xufVxuXG5mdW5jdGlvbiBhcmVhUmluZ0VuZCgpIHtcbiAgYXJlYVBvaW50KGxhbWJkYTAwLCBwaGkwMCk7XG59XG5cbmZ1bmN0aW9uIGFyZWFQb2ludEZpcnN0KGxhbWJkYSwgcGhpKSB7XG4gIGFyZWFTdHJlYW0ucG9pbnQgPSBhcmVhUG9pbnQ7XG4gIGxhbWJkYTAwID0gbGFtYmRhLCBwaGkwMCA9IHBoaTtcbiAgbGFtYmRhICo9IHJhZGlhbnMsIHBoaSAqPSByYWRpYW5zO1xuICBsYW1iZGEwID0gbGFtYmRhLCBjb3NQaGkwID0gY29zKHBoaSA9IHBoaSAvIDIgKyBxdWFydGVyUGkpLCBzaW5QaGkwID0gc2luKHBoaSk7XG59XG5cbmZ1bmN0aW9uIGFyZWFQb2ludChsYW1iZGEsIHBoaSkge1xuICBsYW1iZGEgKj0gcmFkaWFucywgcGhpICo9IHJhZGlhbnM7XG4gIHBoaSA9IHBoaSAvIDIgKyBxdWFydGVyUGk7IC8vIGhhbGYgdGhlIGFuZ3VsYXIgZGlzdGFuY2UgZnJvbSBzb3V0aCBwb2xlXG5cbiAgLy8gU3BoZXJpY2FsIGV4Y2VzcyBFIGZvciBhIHNwaGVyaWNhbCB0cmlhbmdsZSB3aXRoIHZlcnRpY2VzOiBzb3V0aCBwb2xlLFxuICAvLyBwcmV2aW91cyBwb2ludCwgY3VycmVudCBwb2ludC4gIFVzZXMgYSBmb3JtdWxhIGRlcml2ZWQgZnJvbSBDYWdub2xp4oCZc1xuICAvLyB0aGVvcmVtLiAgU2VlIFRvZGh1bnRlciwgU3BoZXJpY2FsIFRyaWcuICgxODcxKSwgU2VjLiAxMDMsIEVxLiAoMikuXG4gIHZhciBkTGFtYmRhID0gbGFtYmRhIC0gbGFtYmRhMCxcbiAgICAgIHNkTGFtYmRhID0gZExhbWJkYSA+PSAwID8gMSA6IC0xLFxuICAgICAgYWRMYW1iZGEgPSBzZExhbWJkYSAqIGRMYW1iZGEsXG4gICAgICBjb3NQaGkgPSBjb3MocGhpKSxcbiAgICAgIHNpblBoaSA9IHNpbihwaGkpLFxuICAgICAgayA9IHNpblBoaTAgKiBzaW5QaGksXG4gICAgICB1ID0gY29zUGhpMCAqIGNvc1BoaSArIGsgKiBjb3MoYWRMYW1iZGEpLFxuICAgICAgdiA9IGsgKiBzZExhbWJkYSAqIHNpbihhZExhbWJkYSk7XG4gIGFyZWFSaW5nU3VtLmFkZChhdGFuMih2LCB1KSk7XG5cbiAgLy8gQWR2YW5jZSB0aGUgcHJldmlvdXMgcG9pbnRzLlxuICBsYW1iZGEwID0gbGFtYmRhLCBjb3NQaGkwID0gY29zUGhpLCBzaW5QaGkwID0gc2luUGhpO1xufVxuXG5leHBvcnQgZGVmYXVsdCBmdW5jdGlvbihvYmplY3QpIHtcbiAgYXJlYVN1bSA9IG5ldyBBZGRlcigpO1xuICBzdHJlYW0ob2JqZWN0LCBhcmVhU3RyZWFtKTtcbiAgcmV0dXJuIGFyZWFTdW0gKiAyO1xufVxuIl0sIm1hcHBpbmdzIjoiQUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOyIsInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///./node_modules/vega-functions/node_modules/d3-geo/src/area.js\n");

/***/ }),

/***/ "./node_modules/vega-functions/node_modules/d3-geo/src/bounds.js":
/*!***********************************************************************!*\
  !*** ./node_modules/vega-functions/node_modules/d3-geo/src/bounds.js ***!
  \***********************************************************************/
/*! exports provided: default */
/***/ (function(module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var d3_array__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! d3-array */ \"./node_modules/d3-array/src/index.js\");\n/* harmony import */ var _area_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./area.js */ \"./node_modules/vega-functions/node_modules/d3-geo/src/area.js\");\n/* harmony import */ var _cartesian_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./cartesian.js */ \"./node_modules/vega-functions/node_modules/d3-geo/src/cartesian.js\");\n/* harmony import */ var _math_js__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ./math.js */ \"./node_modules/vega-functions/node_modules/d3-geo/src/math.js\");\n/* harmony import */ var _stream_js__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ./stream.js */ \"./node_modules/vega-functions/node_modules/d3-geo/src/stream.js\");\n\n\n\n\n\n\nvar lambda0, phi0, lambda1, phi1, // bounds\n    lambda2, // previous lambda-coordinate\n    lambda00, phi00, // first point\n    p0, // previous 3D point\n    deltaSum,\n    ranges,\n    range;\n\nvar boundsStream = {\n  point: boundsPoint,\n  lineStart: boundsLineStart,\n  lineEnd: boundsLineEnd,\n  polygonStart: function() {\n    boundsStream.point = boundsRingPoint;\n    boundsStream.lineStart = boundsRingStart;\n    boundsStream.lineEnd = boundsRingEnd;\n    deltaSum = new d3_array__WEBPACK_IMPORTED_MODULE_0__[\"Adder\"]();\n    _area_js__WEBPACK_IMPORTED_MODULE_1__[\"areaStream\"].polygonStart();\n  },\n  polygonEnd: function() {\n    _area_js__WEBPACK_IMPORTED_MODULE_1__[\"areaStream\"].polygonEnd();\n    boundsStream.point = boundsPoint;\n    boundsStream.lineStart = boundsLineStart;\n    boundsStream.lineEnd = boundsLineEnd;\n    if (_area_js__WEBPACK_IMPORTED_MODULE_1__[\"areaRingSum\"] < 0) lambda0 = -(lambda1 = 180), phi0 = -(phi1 = 90);\n    else if (deltaSum > _math_js__WEBPACK_IMPORTED_MODULE_3__[\"epsilon\"]) phi1 = 90;\n    else if (deltaSum < -_math_js__WEBPACK_IMPORTED_MODULE_3__[\"epsilon\"]) phi0 = -90;\n    range[0] = lambda0, range[1] = lambda1;\n  },\n  sphere: function() {\n    lambda0 = -(lambda1 = 180), phi0 = -(phi1 = 90);\n  }\n};\n\nfunction boundsPoint(lambda, phi) {\n  ranges.push(range = [lambda0 = lambda, lambda1 = lambda]);\n  if (phi < phi0) phi0 = phi;\n  if (phi > phi1) phi1 = phi;\n}\n\nfunction linePoint(lambda, phi) {\n  var p = Object(_cartesian_js__WEBPACK_IMPORTED_MODULE_2__[\"cartesian\"])([lambda * _math_js__WEBPACK_IMPORTED_MODULE_3__[\"radians\"], phi * _math_js__WEBPACK_IMPORTED_MODULE_3__[\"radians\"]]);\n  if (p0) {\n    var normal = Object(_cartesian_js__WEBPACK_IMPORTED_MODULE_2__[\"cartesianCross\"])(p0, p),\n        equatorial = [normal[1], -normal[0], 0],\n        inflection = Object(_cartesian_js__WEBPACK_IMPORTED_MODULE_2__[\"cartesianCross\"])(equatorial, normal);\n    Object(_cartesian_js__WEBPACK_IMPORTED_MODULE_2__[\"cartesianNormalizeInPlace\"])(inflection);\n    inflection = Object(_cartesian_js__WEBPACK_IMPORTED_MODULE_2__[\"spherical\"])(inflection);\n    var delta = lambda - lambda2,\n        sign = delta > 0 ? 1 : -1,\n        lambdai = inflection[0] * _math_js__WEBPACK_IMPORTED_MODULE_3__[\"degrees\"] * sign,\n        phii,\n        antimeridian = Object(_math_js__WEBPACK_IMPORTED_MODULE_3__[\"abs\"])(delta) > 180;\n    if (antimeridian ^ (sign * lambda2 < lambdai && lambdai < sign * lambda)) {\n      phii = inflection[1] * _math_js__WEBPACK_IMPORTED_MODULE_3__[\"degrees\"];\n      if (phii > phi1) phi1 = phii;\n    } else if (lambdai = (lambdai + 360) % 360 - 180, antimeridian ^ (sign * lambda2 < lambdai && lambdai < sign * lambda)) {\n      phii = -inflection[1] * _math_js__WEBPACK_IMPORTED_MODULE_3__[\"degrees\"];\n      if (phii < phi0) phi0 = phii;\n    } else {\n      if (phi < phi0) phi0 = phi;\n      if (phi > phi1) phi1 = phi;\n    }\n    if (antimeridian) {\n      if (lambda < lambda2) {\n        if (angle(lambda0, lambda) > angle(lambda0, lambda1)) lambda1 = lambda;\n      } else {\n        if (angle(lambda, lambda1) > angle(lambda0, lambda1)) lambda0 = lambda;\n      }\n    } else {\n      if (lambda1 >= lambda0) {\n        if (lambda < lambda0) lambda0 = lambda;\n        if (lambda > lambda1) lambda1 = lambda;\n      } else {\n        if (lambda > lambda2) {\n          if (angle(lambda0, lambda) > angle(lambda0, lambda1)) lambda1 = lambda;\n        } else {\n          if (angle(lambda, lambda1) > angle(lambda0, lambda1)) lambda0 = lambda;\n        }\n      }\n    }\n  } else {\n    ranges.push(range = [lambda0 = lambda, lambda1 = lambda]);\n  }\n  if (phi < phi0) phi0 = phi;\n  if (phi > phi1) phi1 = phi;\n  p0 = p, lambda2 = lambda;\n}\n\nfunction boundsLineStart() {\n  boundsStream.point = linePoint;\n}\n\nfunction boundsLineEnd() {\n  range[0] = lambda0, range[1] = lambda1;\n  boundsStream.point = boundsPoint;\n  p0 = null;\n}\n\nfunction boundsRingPoint(lambda, phi) {\n  if (p0) {\n    var delta = lambda - lambda2;\n    deltaSum.add(Object(_math_js__WEBPACK_IMPORTED_MODULE_3__[\"abs\"])(delta) > 180 ? delta + (delta > 0 ? 360 : -360) : delta);\n  } else {\n    lambda00 = lambda, phi00 = phi;\n  }\n  _area_js__WEBPACK_IMPORTED_MODULE_1__[\"areaStream\"].point(lambda, phi);\n  linePoint(lambda, phi);\n}\n\nfunction boundsRingStart() {\n  _area_js__WEBPACK_IMPORTED_MODULE_1__[\"areaStream\"].lineStart();\n}\n\nfunction boundsRingEnd() {\n  boundsRingPoint(lambda00, phi00);\n  _area_js__WEBPACK_IMPORTED_MODULE_1__[\"areaStream\"].lineEnd();\n  if (Object(_math_js__WEBPACK_IMPORTED_MODULE_3__[\"abs\"])(deltaSum) > _math_js__WEBPACK_IMPORTED_MODULE_3__[\"epsilon\"]) lambda0 = -(lambda1 = 180);\n  range[0] = lambda0, range[1] = lambda1;\n  p0 = null;\n}\n\n// Finds the left-right distance between two longitudes.\n// This is almost the same as (lambda1 - lambda0 + 360°) % 360°, except that we want\n// the distance between ±180° to be 360°.\nfunction angle(lambda0, lambda1) {\n  return (lambda1 -= lambda0) < 0 ? lambda1 + 360 : lambda1;\n}\n\nfunction rangeCompare(a, b) {\n  return a[0] - b[0];\n}\n\nfunction rangeContains(range, x) {\n  return range[0] <= range[1] ? range[0] <= x && x <= range[1] : x < range[0] || range[1] < x;\n}\n\n/* harmony default export */ __webpack_exports__[\"default\"] = (function(feature) {\n  var i, n, a, b, merged, deltaMax, delta;\n\n  phi1 = lambda1 = -(lambda0 = phi0 = Infinity);\n  ranges = [];\n  Object(_stream_js__WEBPACK_IMPORTED_MODULE_4__[\"default\"])(feature, boundsStream);\n\n  // First, sort ranges by their minimum longitudes.\n  if (n = ranges.length) {\n    ranges.sort(rangeCompare);\n\n    // Then, merge any ranges that overlap.\n    for (i = 1, a = ranges[0], merged = [a]; i < n; ++i) {\n      b = ranges[i];\n      if (rangeContains(a, b[0]) || rangeContains(a, b[1])) {\n        if (angle(a[0], b[1]) > angle(a[0], a[1])) a[1] = b[1];\n        if (angle(b[0], a[1]) > angle(a[0], a[1])) a[0] = b[0];\n      } else {\n        merged.push(a = b);\n      }\n    }\n\n    // Finally, find the largest gap between the merged ranges.\n    // The final bounding box will be the inverse of this gap.\n    for (deltaMax = -Infinity, n = merged.length - 1, i = 0, a = merged[n]; i <= n; a = b, ++i) {\n      b = merged[i];\n      if ((delta = angle(a[1], b[0])) > deltaMax) deltaMax = delta, lambda0 = b[0], lambda1 = a[1];\n    }\n  }\n\n  ranges = range = null;\n\n  return lambda0 === Infinity || phi0 === Infinity\n      ? [[NaN, NaN], [NaN, NaN]]\n      : [[lambda0, phi0], [lambda1, phi1]];\n});\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,[encoded data, 9196 characters]\n//# sourceURL=webpack-internal:///./node_modules/vega-functions/node_modules/d3-geo/src/bounds.js\n");

/***/ }),

/***/ "./node_modules/vega-functions/node_modules/d3-geo/src/cartesian.js":
/*!**************************************************************************!*\
  !*** ./node_modules/vega-functions/node_modules/d3-geo/src/cartesian.js ***!
  \**************************************************************************/
/*! exports provided: spherical, cartesian, cartesianDot, cartesianCross, cartesianAddInPlace, cartesianScale, cartesianNormalizeInPlace */
/***/ (function(module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"spherical\", function() { return spherical; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"cartesian\", function() { return cartesian; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"cartesianDot\", function() { return cartesianDot; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"cartesianCross\", function() { return cartesianCross; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"cartesianAddInPlace\", function() { return cartesianAddInPlace; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"cartesianScale\", function() { return cartesianScale; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"cartesianNormalizeInPlace\", function() { return cartesianNormalizeInPlace; });\n/* harmony import */ var _math_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./math.js */ \"./node_modules/vega-functions/node_modules/d3-geo/src/math.js\");\n\n\nfunction spherical(cartesian) {\n  return [Object(_math_js__WEBPACK_IMPORTED_MODULE_0__[\"atan2\"])(cartesian[1], cartesian[0]), Object(_math_js__WEBPACK_IMPORTED_MODULE_0__[\"asin\"])(cartesian[2])];\n}\n\nfunction cartesian(spherical) {\n  var lambda = spherical[0], phi = spherical[1], cosPhi = Object(_math_js__WEBPACK_IMPORTED_MODULE_0__[\"cos\"])(phi);\n  return [cosPhi * Object(_math_js__WEBPACK_IMPORTED_MODULE_0__[\"cos\"])(lambda), cosPhi * Object(_math_js__WEBPACK_IMPORTED_MODULE_0__[\"sin\"])(lambda), Object(_math_js__WEBPACK_IMPORTED_MODULE_0__[\"sin\"])(phi)];\n}\n\nfunction cartesianDot(a, b) {\n  return a[0] * b[0] + a[1] * b[1] + a[2] * b[2];\n}\n\nfunction cartesianCross(a, b) {\n  return [a[1] * b[2] - a[2] * b[1], a[2] * b[0] - a[0] * b[2], a[0] * b[1] - a[1] * b[0]];\n}\n\n// TODO return a\nfunction cartesianAddInPlace(a, b) {\n  a[0] += b[0], a[1] += b[1], a[2] += b[2];\n}\n\nfunction cartesianScale(vector, k) {\n  return [vector[0] * k, vector[1] * k, vector[2] * k];\n}\n\n// TODO return d\nfunction cartesianNormalizeInPlace(d) {\n  var l = Object(_math_js__WEBPACK_IMPORTED_MODULE_0__[\"sqrt\"])(d[0] * d[0] + d[1] * d[1] + d[2] * d[2]);\n  d[0] /= l, d[1] /= l, d[2] /= l;\n}\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvdmVnYS1mdW5jdGlvbnMvbm9kZV9tb2R1bGVzL2QzLWdlby9zcmMvY2FydGVzaWFuLmpzLmpzIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL3ZlZ2EtZnVuY3Rpb25zL25vZGVfbW9kdWxlcy9kMy1nZW8vc3JjL2NhcnRlc2lhbi5qcz81N2NkIl0sInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7YXNpbiwgYXRhbjIsIGNvcywgc2luLCBzcXJ0fSBmcm9tIFwiLi9tYXRoLmpzXCI7XG5cbmV4cG9ydCBmdW5jdGlvbiBzcGhlcmljYWwoY2FydGVzaWFuKSB7XG4gIHJldHVybiBbYXRhbjIoY2FydGVzaWFuWzFdLCBjYXJ0ZXNpYW5bMF0pLCBhc2luKGNhcnRlc2lhblsyXSldO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gY2FydGVzaWFuKHNwaGVyaWNhbCkge1xuICB2YXIgbGFtYmRhID0gc3BoZXJpY2FsWzBdLCBwaGkgPSBzcGhlcmljYWxbMV0sIGNvc1BoaSA9IGNvcyhwaGkpO1xuICByZXR1cm4gW2Nvc1BoaSAqIGNvcyhsYW1iZGEpLCBjb3NQaGkgKiBzaW4obGFtYmRhKSwgc2luKHBoaSldO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gY2FydGVzaWFuRG90KGEsIGIpIHtcbiAgcmV0dXJuIGFbMF0gKiBiWzBdICsgYVsxXSAqIGJbMV0gKyBhWzJdICogYlsyXTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGNhcnRlc2lhbkNyb3NzKGEsIGIpIHtcbiAgcmV0dXJuIFthWzFdICogYlsyXSAtIGFbMl0gKiBiWzFdLCBhWzJdICogYlswXSAtIGFbMF0gKiBiWzJdLCBhWzBdICogYlsxXSAtIGFbMV0gKiBiWzBdXTtcbn1cblxuLy8gVE9ETyByZXR1cm4gYVxuZXhwb3J0IGZ1bmN0aW9uIGNhcnRlc2lhbkFkZEluUGxhY2UoYSwgYikge1xuICBhWzBdICs9IGJbMF0sIGFbMV0gKz0gYlsxXSwgYVsyXSArPSBiWzJdO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gY2FydGVzaWFuU2NhbGUodmVjdG9yLCBrKSB7XG4gIHJldHVybiBbdmVjdG9yWzBdICogaywgdmVjdG9yWzFdICogaywgdmVjdG9yWzJdICoga107XG59XG5cbi8vIFRPRE8gcmV0dXJuIGRcbmV4cG9ydCBmdW5jdGlvbiBjYXJ0ZXNpYW5Ob3JtYWxpemVJblBsYWNlKGQpIHtcbiAgdmFyIGwgPSBzcXJ0KGRbMF0gKiBkWzBdICsgZFsxXSAqIGRbMV0gKyBkWzJdICogZFsyXSk7XG4gIGRbMF0gLz0gbCwgZFsxXSAvPSBsLCBkWzJdIC89IGw7XG59XG4iXSwibWFwcGluZ3MiOiJBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTsiLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///./node_modules/vega-functions/node_modules/d3-geo/src/cartesian.js\n");

/***/ }),

/***/ "./node_modules/vega-functions/node_modules/d3-geo/src/centroid.js":
/*!*************************************************************************!*\
  !*** ./node_modules/vega-functions/node_modules/d3-geo/src/centroid.js ***!
  \*************************************************************************/
/*! exports provided: default */
/***/ (function(module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var d3_array__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! d3-array */ \"./node_modules/d3-array/src/index.js\");\n/* harmony import */ var _math_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./math.js */ \"./node_modules/vega-functions/node_modules/d3-geo/src/math.js\");\n/* harmony import */ var _noop_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./noop.js */ \"./node_modules/vega-functions/node_modules/d3-geo/src/noop.js\");\n/* harmony import */ var _stream_js__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ./stream.js */ \"./node_modules/vega-functions/node_modules/d3-geo/src/stream.js\");\n\n\n\n\n\nvar W0, W1,\n    X0, Y0, Z0,\n    X1, Y1, Z1,\n    X2, Y2, Z2,\n    lambda00, phi00, // first point\n    x0, y0, z0; // previous point\n\nvar centroidStream = {\n  sphere: _noop_js__WEBPACK_IMPORTED_MODULE_2__[\"default\"],\n  point: centroidPoint,\n  lineStart: centroidLineStart,\n  lineEnd: centroidLineEnd,\n  polygonStart: function() {\n    centroidStream.lineStart = centroidRingStart;\n    centroidStream.lineEnd = centroidRingEnd;\n  },\n  polygonEnd: function() {\n    centroidStream.lineStart = centroidLineStart;\n    centroidStream.lineEnd = centroidLineEnd;\n  }\n};\n\n// Arithmetic mean of Cartesian vectors.\nfunction centroidPoint(lambda, phi) {\n  lambda *= _math_js__WEBPACK_IMPORTED_MODULE_1__[\"radians\"], phi *= _math_js__WEBPACK_IMPORTED_MODULE_1__[\"radians\"];\n  var cosPhi = Object(_math_js__WEBPACK_IMPORTED_MODULE_1__[\"cos\"])(phi);\n  centroidPointCartesian(cosPhi * Object(_math_js__WEBPACK_IMPORTED_MODULE_1__[\"cos\"])(lambda), cosPhi * Object(_math_js__WEBPACK_IMPORTED_MODULE_1__[\"sin\"])(lambda), Object(_math_js__WEBPACK_IMPORTED_MODULE_1__[\"sin\"])(phi));\n}\n\nfunction centroidPointCartesian(x, y, z) {\n  ++W0;\n  X0 += (x - X0) / W0;\n  Y0 += (y - Y0) / W0;\n  Z0 += (z - Z0) / W0;\n}\n\nfunction centroidLineStart() {\n  centroidStream.point = centroidLinePointFirst;\n}\n\nfunction centroidLinePointFirst(lambda, phi) {\n  lambda *= _math_js__WEBPACK_IMPORTED_MODULE_1__[\"radians\"], phi *= _math_js__WEBPACK_IMPORTED_MODULE_1__[\"radians\"];\n  var cosPhi = Object(_math_js__WEBPACK_IMPORTED_MODULE_1__[\"cos\"])(phi);\n  x0 = cosPhi * Object(_math_js__WEBPACK_IMPORTED_MODULE_1__[\"cos\"])(lambda);\n  y0 = cosPhi * Object(_math_js__WEBPACK_IMPORTED_MODULE_1__[\"sin\"])(lambda);\n  z0 = Object(_math_js__WEBPACK_IMPORTED_MODULE_1__[\"sin\"])(phi);\n  centroidStream.point = centroidLinePoint;\n  centroidPointCartesian(x0, y0, z0);\n}\n\nfunction centroidLinePoint(lambda, phi) {\n  lambda *= _math_js__WEBPACK_IMPORTED_MODULE_1__[\"radians\"], phi *= _math_js__WEBPACK_IMPORTED_MODULE_1__[\"radians\"];\n  var cosPhi = Object(_math_js__WEBPACK_IMPORTED_MODULE_1__[\"cos\"])(phi),\n      x = cosPhi * Object(_math_js__WEBPACK_IMPORTED_MODULE_1__[\"cos\"])(lambda),\n      y = cosPhi * Object(_math_js__WEBPACK_IMPORTED_MODULE_1__[\"sin\"])(lambda),\n      z = Object(_math_js__WEBPACK_IMPORTED_MODULE_1__[\"sin\"])(phi),\n      w = Object(_math_js__WEBPACK_IMPORTED_MODULE_1__[\"atan2\"])(Object(_math_js__WEBPACK_IMPORTED_MODULE_1__[\"sqrt\"])((w = y0 * z - z0 * y) * w + (w = z0 * x - x0 * z) * w + (w = x0 * y - y0 * x) * w), x0 * x + y0 * y + z0 * z);\n  W1 += w;\n  X1 += w * (x0 + (x0 = x));\n  Y1 += w * (y0 + (y0 = y));\n  Z1 += w * (z0 + (z0 = z));\n  centroidPointCartesian(x0, y0, z0);\n}\n\nfunction centroidLineEnd() {\n  centroidStream.point = centroidPoint;\n}\n\n// See J. E. Brock, The Inertia Tensor for a Spherical Triangle,\n// J. Applied Mechanics 42, 239 (1975).\nfunction centroidRingStart() {\n  centroidStream.point = centroidRingPointFirst;\n}\n\nfunction centroidRingEnd() {\n  centroidRingPoint(lambda00, phi00);\n  centroidStream.point = centroidPoint;\n}\n\nfunction centroidRingPointFirst(lambda, phi) {\n  lambda00 = lambda, phi00 = phi;\n  lambda *= _math_js__WEBPACK_IMPORTED_MODULE_1__[\"radians\"], phi *= _math_js__WEBPACK_IMPORTED_MODULE_1__[\"radians\"];\n  centroidStream.point = centroidRingPoint;\n  var cosPhi = Object(_math_js__WEBPACK_IMPORTED_MODULE_1__[\"cos\"])(phi);\n  x0 = cosPhi * Object(_math_js__WEBPACK_IMPORTED_MODULE_1__[\"cos\"])(lambda);\n  y0 = cosPhi * Object(_math_js__WEBPACK_IMPORTED_MODULE_1__[\"sin\"])(lambda);\n  z0 = Object(_math_js__WEBPACK_IMPORTED_MODULE_1__[\"sin\"])(phi);\n  centroidPointCartesian(x0, y0, z0);\n}\n\nfunction centroidRingPoint(lambda, phi) {\n  lambda *= _math_js__WEBPACK_IMPORTED_MODULE_1__[\"radians\"], phi *= _math_js__WEBPACK_IMPORTED_MODULE_1__[\"radians\"];\n  var cosPhi = Object(_math_js__WEBPACK_IMPORTED_MODULE_1__[\"cos\"])(phi),\n      x = cosPhi * Object(_math_js__WEBPACK_IMPORTED_MODULE_1__[\"cos\"])(lambda),\n      y = cosPhi * Object(_math_js__WEBPACK_IMPORTED_MODULE_1__[\"sin\"])(lambda),\n      z = Object(_math_js__WEBPACK_IMPORTED_MODULE_1__[\"sin\"])(phi),\n      cx = y0 * z - z0 * y,\n      cy = z0 * x - x0 * z,\n      cz = x0 * y - y0 * x,\n      m = Object(_math_js__WEBPACK_IMPORTED_MODULE_1__[\"hypot\"])(cx, cy, cz),\n      w = Object(_math_js__WEBPACK_IMPORTED_MODULE_1__[\"asin\"])(m), // line weight = angle\n      v = m && -w / m; // area weight multiplier\n  X2.add(v * cx);\n  Y2.add(v * cy);\n  Z2.add(v * cz);\n  W1 += w;\n  X1 += w * (x0 + (x0 = x));\n  Y1 += w * (y0 + (y0 = y));\n  Z1 += w * (z0 + (z0 = z));\n  centroidPointCartesian(x0, y0, z0);\n}\n\n/* harmony default export */ __webpack_exports__[\"default\"] = (function(object) {\n  W0 = W1 =\n  X0 = Y0 = Z0 =\n  X1 = Y1 = Z1 = 0;\n  X2 = new d3_array__WEBPACK_IMPORTED_MODULE_0__[\"Adder\"]();\n  Y2 = new d3_array__WEBPACK_IMPORTED_MODULE_0__[\"Adder\"]();\n  Z2 = new d3_array__WEBPACK_IMPORTED_MODULE_0__[\"Adder\"]();\n  Object(_stream_js__WEBPACK_IMPORTED_MODULE_3__[\"default\"])(object, centroidStream);\n\n  var x = +X2,\n      y = +Y2,\n      z = +Z2,\n      m = Object(_math_js__WEBPACK_IMPORTED_MODULE_1__[\"hypot\"])(x, y, z);\n\n  // If the area-weighted ccentroid is undefined, fall back to length-weighted ccentroid.\n  if (m < _math_js__WEBPACK_IMPORTED_MODULE_1__[\"epsilon2\"]) {\n    x = X1, y = Y1, z = Z1;\n    // If the feature has zero length, fall back to arithmetic mean of point vectors.\n    if (W1 < _math_js__WEBPACK_IMPORTED_MODULE_1__[\"epsilon\"]) x = X0, y = Y0, z = Z0;\n    m = Object(_math_js__WEBPACK_IMPORTED_MODULE_1__[\"hypot\"])(x, y, z);\n    // If the feature still has an undefined ccentroid, then return.\n    if (m < _math_js__WEBPACK_IMPORTED_MODULE_1__[\"epsilon2\"]) return [NaN, NaN];\n  }\n\n  return [Object(_math_js__WEBPACK_IMPORTED_MODULE_1__[\"atan2\"])(y, x) * _math_js__WEBPACK_IMPORTED_MODULE_1__[\"degrees\"], Object(_math_js__WEBPACK_IMPORTED_MODULE_1__[\"asin\"])(z / m) * _math_js__WEBPACK_IMPORTED_MODULE_1__[\"degrees\"]];\n});\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,[encoded data, 6636 characters]\n//# sourceURL=webpack-internal:///./node_modules/vega-functions/node_modules/d3-geo/src/centroid.js\n");

/***/ }),

/***/ "./node_modules/vega-functions/node_modules/d3-geo/src/circle.js":
/*!***********************************************************************!*\
  !*** ./node_modules/vega-functions/node_modules/d3-geo/src/circle.js ***!
  \***********************************************************************/
/*! exports provided: circleStream, default */
/***/ (function(module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"circleStream\", function() { return circleStream; });\n/* harmony import */ var _cartesian_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./cartesian.js */ \"./node_modules/vega-functions/node_modules/d3-geo/src/cartesian.js\");\n/* harmony import */ var _constant_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./constant.js */ \"./node_modules/vega-functions/node_modules/d3-geo/src/constant.js\");\n/* harmony import */ var _math_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./math.js */ \"./node_modules/vega-functions/node_modules/d3-geo/src/math.js\");\n/* harmony import */ var _rotation_js__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ./rotation.js */ \"./node_modules/vega-functions/node_modules/d3-geo/src/rotation.js\");\n\n\n\n\n\n// Generates a circle centered at [0°, 0°], with a given radius and precision.\nfunction circleStream(stream, radius, delta, direction, t0, t1) {\n  if (!delta) return;\n  var cosRadius = Object(_math_js__WEBPACK_IMPORTED_MODULE_2__[\"cos\"])(radius),\n      sinRadius = Object(_math_js__WEBPACK_IMPORTED_MODULE_2__[\"sin\"])(radius),\n      step = direction * delta;\n  if (t0 == null) {\n    t0 = radius + direction * _math_js__WEBPACK_IMPORTED_MODULE_2__[\"tau\"];\n    t1 = radius - step / 2;\n  } else {\n    t0 = circleRadius(cosRadius, t0);\n    t1 = circleRadius(cosRadius, t1);\n    if (direction > 0 ? t0 < t1 : t0 > t1) t0 += direction * _math_js__WEBPACK_IMPORTED_MODULE_2__[\"tau\"];\n  }\n  for (var point, t = t0; direction > 0 ? t > t1 : t < t1; t -= step) {\n    point = Object(_cartesian_js__WEBPACK_IMPORTED_MODULE_0__[\"spherical\"])([cosRadius, -sinRadius * Object(_math_js__WEBPACK_IMPORTED_MODULE_2__[\"cos\"])(t), -sinRadius * Object(_math_js__WEBPACK_IMPORTED_MODULE_2__[\"sin\"])(t)]);\n    stream.point(point[0], point[1]);\n  }\n}\n\n// Returns the signed angle of a cartesian point relative to [cosRadius, 0, 0].\nfunction circleRadius(cosRadius, point) {\n  point = Object(_cartesian_js__WEBPACK_IMPORTED_MODULE_0__[\"cartesian\"])(point), point[0] -= cosRadius;\n  Object(_cartesian_js__WEBPACK_IMPORTED_MODULE_0__[\"cartesianNormalizeInPlace\"])(point);\n  var radius = Object(_math_js__WEBPACK_IMPORTED_MODULE_2__[\"acos\"])(-point[1]);\n  return ((-point[2] < 0 ? -radius : radius) + _math_js__WEBPACK_IMPORTED_MODULE_2__[\"tau\"] - _math_js__WEBPACK_IMPORTED_MODULE_2__[\"epsilon\"]) % _math_js__WEBPACK_IMPORTED_MODULE_2__[\"tau\"];\n}\n\n/* harmony default export */ __webpack_exports__[\"default\"] = (function() {\n  var center = Object(_constant_js__WEBPACK_IMPORTED_MODULE_1__[\"default\"])([0, 0]),\n      radius = Object(_constant_js__WEBPACK_IMPORTED_MODULE_1__[\"default\"])(90),\n      precision = Object(_constant_js__WEBPACK_IMPORTED_MODULE_1__[\"default\"])(6),\n      ring,\n      rotate,\n      stream = {point: point};\n\n  function point(x, y) {\n    ring.push(x = rotate(x, y));\n    x[0] *= _math_js__WEBPACK_IMPORTED_MODULE_2__[\"degrees\"], x[1] *= _math_js__WEBPACK_IMPORTED_MODULE_2__[\"degrees\"];\n  }\n\n  function circle() {\n    var c = center.apply(this, arguments),\n        r = radius.apply(this, arguments) * _math_js__WEBPACK_IMPORTED_MODULE_2__[\"radians\"],\n        p = precision.apply(this, arguments) * _math_js__WEBPACK_IMPORTED_MODULE_2__[\"radians\"];\n    ring = [];\n    rotate = Object(_rotation_js__WEBPACK_IMPORTED_MODULE_3__[\"rotateRadians\"])(-c[0] * _math_js__WEBPACK_IMPORTED_MODULE_2__[\"radians\"], -c[1] * _math_js__WEBPACK_IMPORTED_MODULE_2__[\"radians\"], 0).invert;\n    circleStream(stream, r, p, 1);\n    c = {type: \"Polygon\", coordinates: [ring]};\n    ring = rotate = null;\n    return c;\n  }\n\n  circle.center = function(_) {\n    return arguments.length ? (center = typeof _ === \"function\" ? _ : Object(_constant_js__WEBPACK_IMPORTED_MODULE_1__[\"default\"])([+_[0], +_[1]]), circle) : center;\n  };\n\n  circle.radius = function(_) {\n    return arguments.length ? (radius = typeof _ === \"function\" ? _ : Object(_constant_js__WEBPACK_IMPORTED_MODULE_1__[\"default\"])(+_), circle) : radius;\n  };\n\n  circle.precision = function(_) {\n    return arguments.length ? (precision = typeof _ === \"function\" ? _ : Object(_constant_js__WEBPACK_IMPORTED_MODULE_1__[\"default\"])(+_), circle) : precision;\n  };\n\n  return circle;\n});\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,[encoded data, 4132 characters]\n//# sourceURL=webpack-internal:///./node_modules/vega-functions/node_modules/d3-geo/src/circle.js\n");

/***/ }),

/***/ "./node_modules/vega-functions/node_modules/d3-geo/src/clip/antimeridian.js":
/*!**********************************************************************************!*\
  !*** ./node_modules/vega-functions/node_modules/d3-geo/src/clip/antimeridian.js ***!
  \**********************************************************************************/
/*! exports provided: default */
/***/ (function(module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _index_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./index.js */ \"./node_modules/vega-functions/node_modules/d3-geo/src/clip/index.js\");\n/* harmony import */ var _math_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../math.js */ \"./node_modules/vega-functions/node_modules/d3-geo/src/math.js\");\n\n\n\n/* harmony default export */ __webpack_exports__[\"default\"] = (Object(_index_js__WEBPACK_IMPORTED_MODULE_0__[\"default\"])(\n  function() { return true; },\n  clipAntimeridianLine,\n  clipAntimeridianInterpolate,\n  [-_math_js__WEBPACK_IMPORTED_MODULE_1__[\"pi\"], -_math_js__WEBPACK_IMPORTED_MODULE_1__[\"halfPi\"]]\n));\n\n// Takes a line and cuts into visible segments. Return values: 0 - there were\n// intersections or the line was empty; 1 - no intersections; 2 - there were\n// intersections, and the first and last segments should be rejoined.\nfunction clipAntimeridianLine(stream) {\n  var lambda0 = NaN,\n      phi0 = NaN,\n      sign0 = NaN,\n      clean; // no intersections\n\n  return {\n    lineStart: function() {\n      stream.lineStart();\n      clean = 1;\n    },\n    point: function(lambda1, phi1) {\n      var sign1 = lambda1 > 0 ? _math_js__WEBPACK_IMPORTED_MODULE_1__[\"pi\"] : -_math_js__WEBPACK_IMPORTED_MODULE_1__[\"pi\"],\n          delta = Object(_math_js__WEBPACK_IMPORTED_MODULE_1__[\"abs\"])(lambda1 - lambda0);\n      if (Object(_math_js__WEBPACK_IMPORTED_MODULE_1__[\"abs\"])(delta - _math_js__WEBPACK_IMPORTED_MODULE_1__[\"pi\"]) < _math_js__WEBPACK_IMPORTED_MODULE_1__[\"epsilon\"]) { // line crosses a pole\n        stream.point(lambda0, phi0 = (phi0 + phi1) / 2 > 0 ? _math_js__WEBPACK_IMPORTED_MODULE_1__[\"halfPi\"] : -_math_js__WEBPACK_IMPORTED_MODULE_1__[\"halfPi\"]);\n        stream.point(sign0, phi0);\n        stream.lineEnd();\n        stream.lineStart();\n        stream.point(sign1, phi0);\n        stream.point(lambda1, phi0);\n        clean = 0;\n      } else if (sign0 !== sign1 && delta >= _math_js__WEBPACK_IMPORTED_MODULE_1__[\"pi\"]) { // line crosses antimeridian\n        if (Object(_math_js__WEBPACK_IMPORTED_MODULE_1__[\"abs\"])(lambda0 - sign0) < _math_js__WEBPACK_IMPORTED_MODULE_1__[\"epsilon\"]) lambda0 -= sign0 * _math_js__WEBPACK_IMPORTED_MODULE_1__[\"epsilon\"]; // handle degeneracies\n        if (Object(_math_js__WEBPACK_IMPORTED_MODULE_1__[\"abs\"])(lambda1 - sign1) < _math_js__WEBPACK_IMPORTED_MODULE_1__[\"epsilon\"]) lambda1 -= sign1 * _math_js__WEBPACK_IMPORTED_MODULE_1__[\"epsilon\"];\n        phi0 = clipAntimeridianIntersect(lambda0, phi0, lambda1, phi1);\n        stream.point(sign0, phi0);\n        stream.lineEnd();\n        stream.lineStart();\n        stream.point(sign1, phi0);\n        clean = 0;\n      }\n      stream.point(lambda0 = lambda1, phi0 = phi1);\n      sign0 = sign1;\n    },\n    lineEnd: function() {\n      stream.lineEnd();\n      lambda0 = phi0 = NaN;\n    },\n    clean: function() {\n      return 2 - clean; // if intersections, rejoin first and last segments\n    }\n  };\n}\n\nfunction clipAntimeridianIntersect(lambda0, phi0, lambda1, phi1) {\n  var cosPhi0,\n      cosPhi1,\n      sinLambda0Lambda1 = Object(_math_js__WEBPACK_IMPORTED_MODULE_1__[\"sin\"])(lambda0 - lambda1);\n  return Object(_math_js__WEBPACK_IMPORTED_MODULE_1__[\"abs\"])(sinLambda0Lambda1) > _math_js__WEBPACK_IMPORTED_MODULE_1__[\"epsilon\"]\n      ? Object(_math_js__WEBPACK_IMPORTED_MODULE_1__[\"atan\"])((Object(_math_js__WEBPACK_IMPORTED_MODULE_1__[\"sin\"])(phi0) * (cosPhi1 = Object(_math_js__WEBPACK_IMPORTED_MODULE_1__[\"cos\"])(phi1)) * Object(_math_js__WEBPACK_IMPORTED_MODULE_1__[\"sin\"])(lambda1)\n          - Object(_math_js__WEBPACK_IMPORTED_MODULE_1__[\"sin\"])(phi1) * (cosPhi0 = Object(_math_js__WEBPACK_IMPORTED_MODULE_1__[\"cos\"])(phi0)) * Object(_math_js__WEBPACK_IMPORTED_MODULE_1__[\"sin\"])(lambda0))\n          / (cosPhi0 * cosPhi1 * sinLambda0Lambda1))\n      : (phi0 + phi1) / 2;\n}\n\nfunction clipAntimeridianInterpolate(from, to, direction, stream) {\n  var phi;\n  if (from == null) {\n    phi = direction * _math_js__WEBPACK_IMPORTED_MODULE_1__[\"halfPi\"];\n    stream.point(-_math_js__WEBPACK_IMPORTED_MODULE_1__[\"pi\"], phi);\n    stream.point(0, phi);\n    stream.point(_math_js__WEBPACK_IMPORTED_MODULE_1__[\"pi\"], phi);\n    stream.point(_math_js__WEBPACK_IMPORTED_MODULE_1__[\"pi\"], 0);\n    stream.point(_math_js__WEBPACK_IMPORTED_MODULE_1__[\"pi\"], -phi);\n    stream.point(0, -phi);\n    stream.point(-_math_js__WEBPACK_IMPORTED_MODULE_1__[\"pi\"], -phi);\n    stream.point(-_math_js__WEBPACK_IMPORTED_MODULE_1__[\"pi\"], 0);\n    stream.point(-_math_js__WEBPACK_IMPORTED_MODULE_1__[\"pi\"], phi);\n  } else if (Object(_math_js__WEBPACK_IMPORTED_MODULE_1__[\"abs\"])(from[0] - to[0]) > _math_js__WEBPACK_IMPORTED_MODULE_1__[\"epsilon\"]) {\n    var lambda = from[0] < to[0] ? _math_js__WEBPACK_IMPORTED_MODULE_1__[\"pi\"] : -_math_js__WEBPACK_IMPORTED_MODULE_1__[\"pi\"];\n    phi = direction * lambda / 2;\n    stream.point(-lambda, phi);\n    stream.point(0, phi);\n    stream.point(lambda, phi);\n  } else {\n    stream.point(to[0], to[1]);\n  }\n}\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,[encoded data, 4976 characters]\n//# sourceURL=webpack-internal:///./node_modules/vega-functions/node_modules/d3-geo/src/clip/antimeridian.js\n");

/***/ }),

/***/ "./node_modules/vega-functions/node_modules/d3-geo/src/clip/buffer.js":
/*!****************************************************************************!*\
  !*** ./node_modules/vega-functions/node_modules/d3-geo/src/clip/buffer.js ***!
  \****************************************************************************/
/*! exports provided: default */
/***/ (function(module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _noop_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../noop.js */ \"./node_modules/vega-functions/node_modules/d3-geo/src/noop.js\");\n\n\n/* harmony default export */ __webpack_exports__[\"default\"] = (function() {\n  var lines = [],\n      line;\n  return {\n    point: function(x, y, m) {\n      line.push([x, y, m]);\n    },\n    lineStart: function() {\n      lines.push(line = []);\n    },\n    lineEnd: _noop_js__WEBPACK_IMPORTED_MODULE_0__[\"default\"],\n    rejoin: function() {\n      if (lines.length > 1) lines.push(lines.pop().concat(lines.shift()));\n    },\n    result: function() {\n      var result = lines;\n      lines = [];\n      line = null;\n      return result;\n    }\n  };\n});\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvdmVnYS1mdW5jdGlvbnMvbm9kZV9tb2R1bGVzL2QzLWdlby9zcmMvY2xpcC9idWZmZXIuanMuanMiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvdmVnYS1mdW5jdGlvbnMvbm9kZV9tb2R1bGVzL2QzLWdlby9zcmMvY2xpcC9idWZmZXIuanM/MzhhOSJdLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgbm9vcCBmcm9tIFwiLi4vbm9vcC5qc1wiO1xuXG5leHBvcnQgZGVmYXVsdCBmdW5jdGlvbigpIHtcbiAgdmFyIGxpbmVzID0gW10sXG4gICAgICBsaW5lO1xuICByZXR1cm4ge1xuICAgIHBvaW50OiBmdW5jdGlvbih4LCB5LCBtKSB7XG4gICAgICBsaW5lLnB1c2goW3gsIHksIG1dKTtcbiAgICB9LFxuICAgIGxpbmVTdGFydDogZnVuY3Rpb24oKSB7XG4gICAgICBsaW5lcy5wdXNoKGxpbmUgPSBbXSk7XG4gICAgfSxcbiAgICBsaW5lRW5kOiBub29wLFxuICAgIHJlam9pbjogZnVuY3Rpb24oKSB7XG4gICAgICBpZiAobGluZXMubGVuZ3RoID4gMSkgbGluZXMucHVzaChsaW5lcy5wb3AoKS5jb25jYXQobGluZXMuc2hpZnQoKSkpO1xuICAgIH0sXG4gICAgcmVzdWx0OiBmdW5jdGlvbigpIHtcbiAgICAgIHZhciByZXN1bHQgPSBsaW5lcztcbiAgICAgIGxpbmVzID0gW107XG4gICAgICBsaW5lID0gbnVsbDtcbiAgICAgIHJldHVybiByZXN1bHQ7XG4gICAgfVxuICB9O1xufVxuIl0sIm1hcHBpbmdzIjoiQUFBQTtBQUFBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOyIsInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///./node_modules/vega-functions/node_modules/d3-geo/src/clip/buffer.js\n");

/***/ }),

/***/ "./node_modules/vega-functions/node_modules/d3-geo/src/clip/circle.js":
/*!****************************************************************************!*\
  !*** ./node_modules/vega-functions/node_modules/d3-geo/src/clip/circle.js ***!
  \****************************************************************************/
/*! exports provided: default */
/***/ (function(module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _cartesian_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../cartesian.js */ \"./node_modules/vega-functions/node_modules/d3-geo/src/cartesian.js\");\n/* harmony import */ var _circle_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../circle.js */ \"./node_modules/vega-functions/node_modules/d3-geo/src/circle.js\");\n/* harmony import */ var _math_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ../math.js */ \"./node_modules/vega-functions/node_modules/d3-geo/src/math.js\");\n/* harmony import */ var _pointEqual_js__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ../pointEqual.js */ \"./node_modules/vega-functions/node_modules/d3-geo/src/pointEqual.js\");\n/* harmony import */ var _index_js__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ./index.js */ \"./node_modules/vega-functions/node_modules/d3-geo/src/clip/index.js\");\n\n\n\n\n\n\n/* harmony default export */ __webpack_exports__[\"default\"] = (function(radius) {\n  var cr = Object(_math_js__WEBPACK_IMPORTED_MODULE_2__[\"cos\"])(radius),\n      delta = 6 * _math_js__WEBPACK_IMPORTED_MODULE_2__[\"radians\"],\n      smallRadius = cr > 0,\n      notHemisphere = Object(_math_js__WEBPACK_IMPORTED_MODULE_2__[\"abs\"])(cr) > _math_js__WEBPACK_IMPORTED_MODULE_2__[\"epsilon\"]; // TODO optimise for this common case\n\n  function interpolate(from, to, direction, stream) {\n    Object(_circle_js__WEBPACK_IMPORTED_MODULE_1__[\"circleStream\"])(stream, radius, delta, direction, from, to);\n  }\n\n  function visible(lambda, phi) {\n    return Object(_math_js__WEBPACK_IMPORTED_MODULE_2__[\"cos\"])(lambda) * Object(_math_js__WEBPACK_IMPORTED_MODULE_2__[\"cos\"])(phi) > cr;\n  }\n\n  // Takes a line and cuts into visible segments. Return values used for polygon\n  // clipping: 0 - there were intersections or the line was empty; 1 - no\n  // intersections 2 - there were intersections, and the first and last segments\n  // should be rejoined.\n  function clipLine(stream) {\n    var point0, // previous point\n        c0, // code for previous point\n        v0, // visibility of previous point\n        v00, // visibility of first point\n        clean; // no intersections\n    return {\n      lineStart: function() {\n        v00 = v0 = false;\n        clean = 1;\n      },\n      point: function(lambda, phi) {\n        var point1 = [lambda, phi],\n            point2,\n            v = visible(lambda, phi),\n            c = smallRadius\n              ? v ? 0 : code(lambda, phi)\n              : v ? code(lambda + (lambda < 0 ? _math_js__WEBPACK_IMPORTED_MODULE_2__[\"pi\"] : -_math_js__WEBPACK_IMPORTED_MODULE_2__[\"pi\"]), phi) : 0;\n        if (!point0 && (v00 = v0 = v)) stream.lineStart();\n        if (v !== v0) {\n          point2 = intersect(point0, point1);\n          if (!point2 || Object(_pointEqual_js__WEBPACK_IMPORTED_MODULE_3__[\"default\"])(point0, point2) || Object(_pointEqual_js__WEBPACK_IMPORTED_MODULE_3__[\"default\"])(point1, point2))\n            point1[2] = 1;\n        }\n        if (v !== v0) {\n          clean = 0;\n          if (v) {\n            // outside going in\n            stream.lineStart();\n            point2 = intersect(point1, point0);\n            stream.point(point2[0], point2[1]);\n          } else {\n            // inside going out\n            point2 = intersect(point0, point1);\n            stream.point(point2[0], point2[1], 2);\n            stream.lineEnd();\n          }\n          point0 = point2;\n        } else if (notHemisphere && point0 && smallRadius ^ v) {\n          var t;\n          // If the codes for two points are different, or are both zero,\n          // and there this segment intersects with the small circle.\n          if (!(c & c0) && (t = intersect(point1, point0, true))) {\n            clean = 0;\n            if (smallRadius) {\n              stream.lineStart();\n              stream.point(t[0][0], t[0][1]);\n              stream.point(t[1][0], t[1][1]);\n              stream.lineEnd();\n            } else {\n              stream.point(t[1][0], t[1][1]);\n              stream.lineEnd();\n              stream.lineStart();\n              stream.point(t[0][0], t[0][1], 3);\n            }\n          }\n        }\n        if (v && (!point0 || !Object(_pointEqual_js__WEBPACK_IMPORTED_MODULE_3__[\"default\"])(point0, point1))) {\n          stream.point(point1[0], point1[1]);\n        }\n        point0 = point1, v0 = v, c0 = c;\n      },\n      lineEnd: function() {\n        if (v0) stream.lineEnd();\n        point0 = null;\n      },\n      // Rejoin first and last segments if there were intersections and the first\n      // and last points were visible.\n      clean: function() {\n        return clean | ((v00 && v0) << 1);\n      }\n    };\n  }\n\n  // Intersects the great circle between a and b with the clip circle.\n  function intersect(a, b, two) {\n    var pa = Object(_cartesian_js__WEBPACK_IMPORTED_MODULE_0__[\"cartesian\"])(a),\n        pb = Object(_cartesian_js__WEBPACK_IMPORTED_MODULE_0__[\"cartesian\"])(b);\n\n    // We have two planes, n1.p = d1 and n2.p = d2.\n    // Find intersection line p(t) = c1 n1 + c2 n2 + t (n1 ⨯ n2).\n    var n1 = [1, 0, 0], // normal\n        n2 = Object(_cartesian_js__WEBPACK_IMPORTED_MODULE_0__[\"cartesianCross\"])(pa, pb),\n        n2n2 = Object(_cartesian_js__WEBPACK_IMPORTED_MODULE_0__[\"cartesianDot\"])(n2, n2),\n        n1n2 = n2[0], // cartesianDot(n1, n2),\n        determinant = n2n2 - n1n2 * n1n2;\n\n    // Two polar points.\n    if (!determinant) return !two && a;\n\n    var c1 =  cr * n2n2 / determinant,\n        c2 = -cr * n1n2 / determinant,\n        n1xn2 = Object(_cartesian_js__WEBPACK_IMPORTED_MODULE_0__[\"cartesianCross\"])(n1, n2),\n        A = Object(_cartesian_js__WEBPACK_IMPORTED_MODULE_0__[\"cartesianScale\"])(n1, c1),\n        B = Object(_cartesian_js__WEBPACK_IMPORTED_MODULE_0__[\"cartesianScale\"])(n2, c2);\n    Object(_cartesian_js__WEBPACK_IMPORTED_MODULE_0__[\"cartesianAddInPlace\"])(A, B);\n\n    // Solve |p(t)|^2 = 1.\n    var u = n1xn2,\n        w = Object(_cartesian_js__WEBPACK_IMPORTED_MODULE_0__[\"cartesianDot\"])(A, u),\n        uu = Object(_cartesian_js__WEBPACK_IMPORTED_MODULE_0__[\"cartesianDot\"])(u, u),\n        t2 = w * w - uu * (Object(_cartesian_js__WEBPACK_IMPORTED_MODULE_0__[\"cartesianDot\"])(A, A) - 1);\n\n    if (t2 < 0) return;\n\n    var t = Object(_math_js__WEBPACK_IMPORTED_MODULE_2__[\"sqrt\"])(t2),\n        q = Object(_cartesian_js__WEBPACK_IMPORTED_MODULE_0__[\"cartesianScale\"])(u, (-w - t) / uu);\n    Object(_cartesian_js__WEBPACK_IMPORTED_MODULE_0__[\"cartesianAddInPlace\"])(q, A);\n    q = Object(_cartesian_js__WEBPACK_IMPORTED_MODULE_0__[\"spherical\"])(q);\n\n    if (!two) return q;\n\n    // Two intersection points.\n    var lambda0 = a[0],\n        lambda1 = b[0],\n        phi0 = a[1],\n        phi1 = b[1],\n        z;\n\n    if (lambda1 < lambda0) z = lambda0, lambda0 = lambda1, lambda1 = z;\n\n    var delta = lambda1 - lambda0,\n        polar = Object(_math_js__WEBPACK_IMPORTED_MODULE_2__[\"abs\"])(delta - _math_js__WEBPACK_IMPORTED_MODULE_2__[\"pi\"]) < _math_js__WEBPACK_IMPORTED_MODULE_2__[\"epsilon\"],\n        meridian = polar || delta < _math_js__WEBPACK_IMPORTED_MODULE_2__[\"epsilon\"];\n\n    if (!polar && phi1 < phi0) z = phi0, phi0 = phi1, phi1 = z;\n\n    // Check that the first point is between a and b.\n    if (meridian\n        ? polar\n          ? phi0 + phi1 > 0 ^ q[1] < (Object(_math_js__WEBPACK_IMPORTED_MODULE_2__[\"abs\"])(q[0] - lambda0) < _math_js__WEBPACK_IMPORTED_MODULE_2__[\"epsilon\"] ? phi0 : phi1)\n          : phi0 <= q[1] && q[1] <= phi1\n        : delta > _math_js__WEBPACK_IMPORTED_MODULE_2__[\"pi\"] ^ (lambda0 <= q[0] && q[0] <= lambda1)) {\n      var q1 = Object(_cartesian_js__WEBPACK_IMPORTED_MODULE_0__[\"cartesianScale\"])(u, (-w + t) / uu);\n      Object(_cartesian_js__WEBPACK_IMPORTED_MODULE_0__[\"cartesianAddInPlace\"])(q1, A);\n      return [q, Object(_cartesian_js__WEBPACK_IMPORTED_MODULE_0__[\"spherical\"])(q1)];\n    }\n  }\n\n  // Generates a 4-bit vector representing the location of a point relative to\n  // the small circle's bounding box.\n  function code(lambda, phi) {\n    var r = smallRadius ? radius : _math_js__WEBPACK_IMPORTED_MODULE_2__[\"pi\"] - radius,\n        code = 0;\n    if (lambda < -r) code |= 1; // left\n    else if (lambda > r) code |= 2; // right\n    if (phi < -r) code |= 4; // below\n    else if (phi > r) code |= 8; // above\n    return code;\n  }\n\n  return Object(_index_js__WEBPACK_IMPORTED_MODULE_4__[\"default\"])(visible, clipLine, interpolate, smallRadius ? [0, -radius] : [-_math_js__WEBPACK_IMPORTED_MODULE_2__[\"pi\"], radius - _math_js__WEBPACK_IMPORTED_MODULE_2__[\"pi\"]]);\n});\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,[encoded data, 9576 characters]\n//# sourceURL=webpack-internal:///./node_modules/vega-functions/node_modules/d3-geo/src/clip/circle.js\n");

/***/ }),

/***/ "./node_modules/vega-functions/node_modules/d3-geo/src/clip/extent.js":
/*!****************************************************************************!*\
  !*** ./node_modules/vega-functions/node_modules/d3-geo/src/clip/extent.js ***!
  \****************************************************************************/
/*! exports provided: default */
/***/ (function(module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _rectangle_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./rectangle.js */ \"./node_modules/vega-functions/node_modules/d3-geo/src/clip/rectangle.js\");\n\n\n/* harmony default export */ __webpack_exports__[\"default\"] = (function() {\n  var x0 = 0,\n      y0 = 0,\n      x1 = 960,\n      y1 = 500,\n      cache,\n      cacheStream,\n      clip;\n\n  return clip = {\n    stream: function(stream) {\n      return cache && cacheStream === stream ? cache : cache = Object(_rectangle_js__WEBPACK_IMPORTED_MODULE_0__[\"default\"])(x0, y0, x1, y1)(cacheStream = stream);\n    },\n    extent: function(_) {\n      return arguments.length ? (x0 = +_[0][0], y0 = +_[0][1], x1 = +_[1][0], y1 = +_[1][1], cache = cacheStream = null, clip) : [[x0, y0], [x1, y1]];\n    }\n  };\n});\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvdmVnYS1mdW5jdGlvbnMvbm9kZV9tb2R1bGVzL2QzLWdlby9zcmMvY2xpcC9leHRlbnQuanMuanMiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvdmVnYS1mdW5jdGlvbnMvbm9kZV9tb2R1bGVzL2QzLWdlby9zcmMvY2xpcC9leHRlbnQuanM/YmJjNSJdLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgY2xpcFJlY3RhbmdsZSBmcm9tIFwiLi9yZWN0YW5nbGUuanNcIjtcblxuZXhwb3J0IGRlZmF1bHQgZnVuY3Rpb24oKSB7XG4gIHZhciB4MCA9IDAsXG4gICAgICB5MCA9IDAsXG4gICAgICB4MSA9IDk2MCxcbiAgICAgIHkxID0gNTAwLFxuICAgICAgY2FjaGUsXG4gICAgICBjYWNoZVN0cmVhbSxcbiAgICAgIGNsaXA7XG5cbiAgcmV0dXJuIGNsaXAgPSB7XG4gICAgc3RyZWFtOiBmdW5jdGlvbihzdHJlYW0pIHtcbiAgICAgIHJldHVybiBjYWNoZSAmJiBjYWNoZVN0cmVhbSA9PT0gc3RyZWFtID8gY2FjaGUgOiBjYWNoZSA9IGNsaXBSZWN0YW5nbGUoeDAsIHkwLCB4MSwgeTEpKGNhY2hlU3RyZWFtID0gc3RyZWFtKTtcbiAgICB9LFxuICAgIGV4dGVudDogZnVuY3Rpb24oXykge1xuICAgICAgcmV0dXJuIGFyZ3VtZW50cy5sZW5ndGggPyAoeDAgPSArX1swXVswXSwgeTAgPSArX1swXVsxXSwgeDEgPSArX1sxXVswXSwgeTEgPSArX1sxXVsxXSwgY2FjaGUgPSBjYWNoZVN0cmVhbSA9IG51bGwsIGNsaXApIDogW1t4MCwgeTBdLCBbeDEsIHkxXV07XG4gICAgfVxuICB9O1xufVxuIl0sIm1hcHBpbmdzIjoiQUFBQTtBQUFBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTsiLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///./node_modules/vega-functions/node_modules/d3-geo/src/clip/extent.js\n");

/***/ }),

/***/ "./node_modules/vega-functions/node_modules/d3-geo/src/clip/index.js":
/*!***************************************************************************!*\
  !*** ./node_modules/vega-functions/node_modules/d3-geo/src/clip/index.js ***!
  \***************************************************************************/
/*! exports provided: default */
/***/ (function(module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _buffer_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./buffer.js */ \"./node_modules/vega-functions/node_modules/d3-geo/src/clip/buffer.js\");\n/* harmony import */ var _rejoin_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./rejoin.js */ \"./node_modules/vega-functions/node_modules/d3-geo/src/clip/rejoin.js\");\n/* harmony import */ var _math_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ../math.js */ \"./node_modules/vega-functions/node_modules/d3-geo/src/math.js\");\n/* harmony import */ var _polygonContains_js__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ../polygonContains.js */ \"./node_modules/vega-functions/node_modules/d3-geo/src/polygonContains.js\");\n/* harmony import */ var d3_array__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! d3-array */ \"./node_modules/d3-array/src/index.js\");\n\n\n\n\n\n\n/* harmony default export */ __webpack_exports__[\"default\"] = (function(pointVisible, clipLine, interpolate, start) {\n  return function(sink) {\n    var line = clipLine(sink),\n        ringBuffer = Object(_buffer_js__WEBPACK_IMPORTED_MODULE_0__[\"default\"])(),\n        ringSink = clipLine(ringBuffer),\n        polygonStarted = false,\n        polygon,\n        segments,\n        ring;\n\n    var clip = {\n      point: point,\n      lineStart: lineStart,\n      lineEnd: lineEnd,\n      polygonStart: function() {\n        clip.point = pointRing;\n        clip.lineStart = ringStart;\n        clip.lineEnd = ringEnd;\n        segments = [];\n        polygon = [];\n      },\n      polygonEnd: function() {\n        clip.point = point;\n        clip.lineStart = lineStart;\n        clip.lineEnd = lineEnd;\n        segments = Object(d3_array__WEBPACK_IMPORTED_MODULE_4__[\"merge\"])(segments);\n        var startInside = Object(_polygonContains_js__WEBPACK_IMPORTED_MODULE_3__[\"default\"])(polygon, start);\n        if (segments.length) {\n          if (!polygonStarted) sink.polygonStart(), polygonStarted = true;\n          Object(_rejoin_js__WEBPACK_IMPORTED_MODULE_1__[\"default\"])(segments, compareIntersection, startInside, interpolate, sink);\n        } else if (startInside) {\n          if (!polygonStarted) sink.polygonStart(), polygonStarted = true;\n          sink.lineStart();\n          interpolate(null, null, 1, sink);\n          sink.lineEnd();\n        }\n        if (polygonStarted) sink.polygonEnd(), polygonStarted = false;\n        segments = polygon = null;\n      },\n      sphere: function() {\n        sink.polygonStart();\n        sink.lineStart();\n        interpolate(null, null, 1, sink);\n        sink.lineEnd();\n        sink.polygonEnd();\n      }\n    };\n\n    function point(lambda, phi) {\n      if (pointVisible(lambda, phi)) sink.point(lambda, phi);\n    }\n\n    function pointLine(lambda, phi) {\n      line.point(lambda, phi);\n    }\n\n    function lineStart() {\n      clip.point = pointLine;\n      line.lineStart();\n    }\n\n    function lineEnd() {\n      clip.point = point;\n      line.lineEnd();\n    }\n\n    function pointRing(lambda, phi) {\n      ring.push([lambda, phi]);\n      ringSink.point(lambda, phi);\n    }\n\n    function ringStart() {\n      ringSink.lineStart();\n      ring = [];\n    }\n\n    function ringEnd() {\n      pointRing(ring[0][0], ring[0][1]);\n      ringSink.lineEnd();\n\n      var clean = ringSink.clean(),\n          ringSegments = ringBuffer.result(),\n          i, n = ringSegments.length, m,\n          segment,\n          point;\n\n      ring.pop();\n      polygon.push(ring);\n      ring = null;\n\n      if (!n) return;\n\n      // No intersections.\n      if (clean & 1) {\n        segment = ringSegments[0];\n        if ((m = segment.length - 1) > 0) {\n          if (!polygonStarted) sink.polygonStart(), polygonStarted = true;\n          sink.lineStart();\n          for (i = 0; i < m; ++i) sink.point((point = segment[i])[0], point[1]);\n          sink.lineEnd();\n        }\n        return;\n      }\n\n      // Rejoin connected segments.\n      // TODO reuse ringBuffer.rejoin()?\n      if (n > 1 && clean & 2) ringSegments.push(ringSegments.pop().concat(ringSegments.shift()));\n\n      segments.push(ringSegments.filter(validSegment));\n    }\n\n    return clip;\n  };\n});\n\nfunction validSegment(segment) {\n  return segment.length > 1;\n}\n\n// Intersections are sorted along the clip edge. For both antimeridian cutting\n// and circle clipping, the same comparison is used.\nfunction compareIntersection(a, b) {\n  return ((a = a.x)[0] < 0 ? a[1] - _math_js__WEBPACK_IMPORTED_MODULE_2__[\"halfPi\"] - _math_js__WEBPACK_IMPORTED_MODULE_2__[\"epsilon\"] : _math_js__WEBPACK_IMPORTED_MODULE_2__[\"halfPi\"] - a[1])\n       - ((b = b.x)[0] < 0 ? b[1] - _math_js__WEBPACK_IMPORTED_MODULE_2__[\"halfPi\"] - _math_js__WEBPACK_IMPORTED_MODULE_2__[\"epsilon\"] : _math_js__WEBPACK_IMPORTED_MODULE_2__[\"halfPi\"] - b[1]);\n}\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,[encoded data, 6220 characters]\n//# sourceURL=webpack-internal:///./node_modules/vega-functions/node_modules/d3-geo/src/clip/index.js\n");

/***/ }),

/***/ "./node_modules/vega-functions/node_modules/d3-geo/src/clip/line.js":
/*!**************************************************************************!*\
  !*** ./node_modules/vega-functions/node_modules/d3-geo/src/clip/line.js ***!
  \**************************************************************************/
/*! exports provided: default */
/***/ (function(module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony default export */ __webpack_exports__[\"default\"] = (function(a, b, x0, y0, x1, y1) {\n  var ax = a[0],\n      ay = a[1],\n      bx = b[0],\n      by = b[1],\n      t0 = 0,\n      t1 = 1,\n      dx = bx - ax,\n      dy = by - ay,\n      r;\n\n  r = x0 - ax;\n  if (!dx && r > 0) return;\n  r /= dx;\n  if (dx < 0) {\n    if (r < t0) return;\n    if (r < t1) t1 = r;\n  } else if (dx > 0) {\n    if (r > t1) return;\n    if (r > t0) t0 = r;\n  }\n\n  r = x1 - ax;\n  if (!dx && r < 0) return;\n  r /= dx;\n  if (dx < 0) {\n    if (r > t1) return;\n    if (r > t0) t0 = r;\n  } else if (dx > 0) {\n    if (r < t0) return;\n    if (r < t1) t1 = r;\n  }\n\n  r = y0 - ay;\n  if (!dy && r > 0) return;\n  r /= dy;\n  if (dy < 0) {\n    if (r < t0) return;\n    if (r < t1) t1 = r;\n  } else if (dy > 0) {\n    if (r > t1) return;\n    if (r > t0) t0 = r;\n  }\n\n  r = y1 - ay;\n  if (!dy && r < 0) return;\n  r /= dy;\n  if (dy < 0) {\n    if (r > t1) return;\n    if (r > t0) t0 = r;\n  } else if (dy > 0) {\n    if (r < t0) return;\n    if (r < t1) t1 = r;\n  }\n\n  if (t0 > 0) a[0] = ax + t0 * dx, a[1] = ay + t0 * dy;\n  if (t1 < 1) b[0] = ax + t1 * dx, b[1] = ay + t1 * dy;\n  return true;\n});\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvdmVnYS1mdW5jdGlvbnMvbm9kZV9tb2R1bGVzL2QzLWdlby9zcmMvY2xpcC9saW5lLmpzLmpzIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL3ZlZ2EtZnVuY3Rpb25zL25vZGVfbW9kdWxlcy9kMy1nZW8vc3JjL2NsaXAvbGluZS5qcz9lNGJkIl0sInNvdXJjZXNDb250ZW50IjpbImV4cG9ydCBkZWZhdWx0IGZ1bmN0aW9uKGEsIGIsIHgwLCB5MCwgeDEsIHkxKSB7XG4gIHZhciBheCA9IGFbMF0sXG4gICAgICBheSA9IGFbMV0sXG4gICAgICBieCA9IGJbMF0sXG4gICAgICBieSA9IGJbMV0sXG4gICAgICB0MCA9IDAsXG4gICAgICB0MSA9IDEsXG4gICAgICBkeCA9IGJ4IC0gYXgsXG4gICAgICBkeSA9IGJ5IC0gYXksXG4gICAgICByO1xuXG4gIHIgPSB4MCAtIGF4O1xuICBpZiAoIWR4ICYmIHIgPiAwKSByZXR1cm47XG4gIHIgLz0gZHg7XG4gIGlmIChkeCA8IDApIHtcbiAgICBpZiAociA8IHQwKSByZXR1cm47XG4gICAgaWYgKHIgPCB0MSkgdDEgPSByO1xuICB9IGVsc2UgaWYgKGR4ID4gMCkge1xuICAgIGlmIChyID4gdDEpIHJldHVybjtcbiAgICBpZiAociA+IHQwKSB0MCA9IHI7XG4gIH1cblxuICByID0geDEgLSBheDtcbiAgaWYgKCFkeCAmJiByIDwgMCkgcmV0dXJuO1xuICByIC89IGR4O1xuICBpZiAoZHggPCAwKSB7XG4gICAgaWYgKHIgPiB0MSkgcmV0dXJuO1xuICAgIGlmIChyID4gdDApIHQwID0gcjtcbiAgfSBlbHNlIGlmIChkeCA+IDApIHtcbiAgICBpZiAociA8IHQwKSByZXR1cm47XG4gICAgaWYgKHIgPCB0MSkgdDEgPSByO1xuICB9XG5cbiAgciA9IHkwIC0gYXk7XG4gIGlmICghZHkgJiYgciA+IDApIHJldHVybjtcbiAgciAvPSBkeTtcbiAgaWYgKGR5IDwgMCkge1xuICAgIGlmIChyIDwgdDApIHJldHVybjtcbiAgICBpZiAociA8IHQxKSB0MSA9IHI7XG4gIH0gZWxzZSBpZiAoZHkgPiAwKSB7XG4gICAgaWYgKHIgPiB0MSkgcmV0dXJuO1xuICAgIGlmIChyID4gdDApIHQwID0gcjtcbiAgfVxuXG4gIHIgPSB5MSAtIGF5O1xuICBpZiAoIWR5ICYmIHIgPCAwKSByZXR1cm47XG4gIHIgLz0gZHk7XG4gIGlmIChkeSA8IDApIHtcbiAgICBpZiAociA+IHQxKSByZXR1cm47XG4gICAgaWYgKHIgPiB0MCkgdDAgPSByO1xuICB9IGVsc2UgaWYgKGR5ID4gMCkge1xuICAgIGlmIChyIDwgdDApIHJldHVybjtcbiAgICBpZiAociA8IHQxKSB0MSA9IHI7XG4gIH1cblxuICBpZiAodDAgPiAwKSBhWzBdID0gYXggKyB0MCAqIGR4LCBhWzFdID0gYXkgKyB0MCAqIGR5O1xuICBpZiAodDEgPCAxKSBiWzBdID0gYXggKyB0MSAqIGR4LCBiWzFdID0gYXkgKyB0MSAqIGR5O1xuICByZXR1cm4gdHJ1ZTtcbn1cbiJdLCJtYXBwaW5ncyI6IkFBQUE7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOyIsInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///./node_modules/vega-functions/node_modules/d3-geo/src/clip/line.js\n");

/***/ }),

/***/ "./node_modules/vega-functions/node_modules/d3-geo/src/clip/rectangle.js":
/*!*******************************************************************************!*\
  !*** ./node_modules/vega-functions/node_modules/d3-geo/src/clip/rectangle.js ***!
  \*******************************************************************************/
/*! exports provided: default */
/***/ (function(module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"default\", function() { return clipRectangle; });\n/* harmony import */ var _math_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../math.js */ \"./node_modules/vega-functions/node_modules/d3-geo/src/math.js\");\n/* harmony import */ var _buffer_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./buffer.js */ \"./node_modules/vega-functions/node_modules/d3-geo/src/clip/buffer.js\");\n/* harmony import */ var _line_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./line.js */ \"./node_modules/vega-functions/node_modules/d3-geo/src/clip/line.js\");\n/* harmony import */ var _rejoin_js__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ./rejoin.js */ \"./node_modules/vega-functions/node_modules/d3-geo/src/clip/rejoin.js\");\n/* harmony import */ var d3_array__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! d3-array */ \"./node_modules/d3-array/src/index.js\");\n\n\n\n\n\n\nvar clipMax = 1e9, clipMin = -clipMax;\n\n// TODO Use d3-polygon’s polygonContains here for the ring check?\n// TODO Eliminate duplicate buffering in clipBuffer and polygon.push?\n\nfunction clipRectangle(x0, y0, x1, y1) {\n\n  function visible(x, y) {\n    return x0 <= x && x <= x1 && y0 <= y && y <= y1;\n  }\n\n  function interpolate(from, to, direction, stream) {\n    var a = 0, a1 = 0;\n    if (from == null\n        || (a = corner(from, direction)) !== (a1 = corner(to, direction))\n        || comparePoint(from, to) < 0 ^ direction > 0) {\n      do stream.point(a === 0 || a === 3 ? x0 : x1, a > 1 ? y1 : y0);\n      while ((a = (a + direction + 4) % 4) !== a1);\n    } else {\n      stream.point(to[0], to[1]);\n    }\n  }\n\n  function corner(p, direction) {\n    return Object(_math_js__WEBPACK_IMPORTED_MODULE_0__[\"abs\"])(p[0] - x0) < _math_js__WEBPACK_IMPORTED_MODULE_0__[\"epsilon\"] ? direction > 0 ? 0 : 3\n        : Object(_math_js__WEBPACK_IMPORTED_MODULE_0__[\"abs\"])(p[0] - x1) < _math_js__WEBPACK_IMPORTED_MODULE_0__[\"epsilon\"] ? direction > 0 ? 2 : 1\n        : Object(_math_js__WEBPACK_IMPORTED_MODULE_0__[\"abs\"])(p[1] - y0) < _math_js__WEBPACK_IMPORTED_MODULE_0__[\"epsilon\"] ? direction > 0 ? 1 : 0\n        : direction > 0 ? 3 : 2; // abs(p[1] - y1) < epsilon\n  }\n\n  function compareIntersection(a, b) {\n    return comparePoint(a.x, b.x);\n  }\n\n  function comparePoint(a, b) {\n    var ca = corner(a, 1),\n        cb = corner(b, 1);\n    return ca !== cb ? ca - cb\n        : ca === 0 ? b[1] - a[1]\n        : ca === 1 ? a[0] - b[0]\n        : ca === 2 ? a[1] - b[1]\n        : b[0] - a[0];\n  }\n\n  return function(stream) {\n    var activeStream = stream,\n        bufferStream = Object(_buffer_js__WEBPACK_IMPORTED_MODULE_1__[\"default\"])(),\n        segments,\n        polygon,\n        ring,\n        x__, y__, v__, // first point\n        x_, y_, v_, // previous point\n        first,\n        clean;\n\n    var clipStream = {\n      point: point,\n      lineStart: lineStart,\n      lineEnd: lineEnd,\n      polygonStart: polygonStart,\n      polygonEnd: polygonEnd\n    };\n\n    function point(x, y) {\n      if (visible(x, y)) activeStream.point(x, y);\n    }\n\n    function polygonInside() {\n      var winding = 0;\n\n      for (var i = 0, n = polygon.length; i < n; ++i) {\n        for (var ring = polygon[i], j = 1, m = ring.length, point = ring[0], a0, a1, b0 = point[0], b1 = point[1]; j < m; ++j) {\n          a0 = b0, a1 = b1, point = ring[j], b0 = point[0], b1 = point[1];\n          if (a1 <= y1) { if (b1 > y1 && (b0 - a0) * (y1 - a1) > (b1 - a1) * (x0 - a0)) ++winding; }\n          else { if (b1 <= y1 && (b0 - a0) * (y1 - a1) < (b1 - a1) * (x0 - a0)) --winding; }\n        }\n      }\n\n      return winding;\n    }\n\n    // Buffer geometry within a polygon and then clip it en masse.\n    function polygonStart() {\n      activeStream = bufferStream, segments = [], polygon = [], clean = true;\n    }\n\n    function polygonEnd() {\n      var startInside = polygonInside(),\n          cleanInside = clean && startInside,\n          visible = (segments = Object(d3_array__WEBPACK_IMPORTED_MODULE_4__[\"merge\"])(segments)).length;\n      if (cleanInside || visible) {\n        stream.polygonStart();\n        if (cleanInside) {\n          stream.lineStart();\n          interpolate(null, null, 1, stream);\n          stream.lineEnd();\n        }\n        if (visible) {\n          Object(_rejoin_js__WEBPACK_IMPORTED_MODULE_3__[\"default\"])(segments, compareIntersection, startInside, interpolate, stream);\n        }\n        stream.polygonEnd();\n      }\n      activeStream = stream, segments = polygon = ring = null;\n    }\n\n    function lineStart() {\n      clipStream.point = linePoint;\n      if (polygon) polygon.push(ring = []);\n      first = true;\n      v_ = false;\n      x_ = y_ = NaN;\n    }\n\n    // TODO rather than special-case polygons, simply handle them separately.\n    // Ideally, coincident intersection points should be jittered to avoid\n    // clipping issues.\n    function lineEnd() {\n      if (segments) {\n        linePoint(x__, y__);\n        if (v__ && v_) bufferStream.rejoin();\n        segments.push(bufferStream.result());\n      }\n      clipStream.point = point;\n      if (v_) activeStream.lineEnd();\n    }\n\n    function linePoint(x, y) {\n      var v = visible(x, y);\n      if (polygon) ring.push([x, y]);\n      if (first) {\n        x__ = x, y__ = y, v__ = v;\n        first = false;\n        if (v) {\n          activeStream.lineStart();\n          activeStream.point(x, y);\n        }\n      } else {\n        if (v && v_) activeStream.point(x, y);\n        else {\n          var a = [x_ = Math.max(clipMin, Math.min(clipMax, x_)), y_ = Math.max(clipMin, Math.min(clipMax, y_))],\n              b = [x = Math.max(clipMin, Math.min(clipMax, x)), y = Math.max(clipMin, Math.min(clipMax, y))];\n          if (Object(_line_js__WEBPACK_IMPORTED_MODULE_2__[\"default\"])(a, b, x0, y0, x1, y1)) {\n            if (!v_) {\n              activeStream.lineStart();\n              activeStream.point(a[0], a[1]);\n            }\n            activeStream.point(b[0], b[1]);\n            if (!v) activeStream.lineEnd();\n            clean = false;\n          } else if (v) {\n            activeStream.lineStart();\n            activeStream.point(x, y);\n            clean = false;\n          }\n        }\n      }\n      x_ = x, y_ = y, v_ = v;\n    }\n\n    return clipStream;\n  };\n}\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,[encoded data, 8480 characters]\n//# sourceURL=webpack-internal:///./node_modules/vega-functions/node_modules/d3-geo/src/clip/rectangle.js\n");

/***/ }),

/***/ "./node_modules/vega-functions/node_modules/d3-geo/src/clip/rejoin.js":
/*!****************************************************************************!*\
  !*** ./node_modules/vega-functions/node_modules/d3-geo/src/clip/rejoin.js ***!
  \****************************************************************************/
/*! exports provided: default */
/***/ (function(module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _pointEqual_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../pointEqual.js */ \"./node_modules/vega-functions/node_modules/d3-geo/src/pointEqual.js\");\n/* harmony import */ var _math_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../math.js */ \"./node_modules/vega-functions/node_modules/d3-geo/src/math.js\");\n\n\n\nfunction Intersection(point, points, other, entry) {\n  this.x = point;\n  this.z = points;\n  this.o = other; // another intersection\n  this.e = entry; // is an entry?\n  this.v = false; // visited\n  this.n = this.p = null; // next & previous\n}\n\n// A generalized polygon clipping algorithm: given a polygon that has been cut\n// into its visible line segments, and rejoins the segments by interpolating\n// along the clip edge.\n/* harmony default export */ __webpack_exports__[\"default\"] = (function(segments, compareIntersection, startInside, interpolate, stream) {\n  var subject = [],\n      clip = [],\n      i,\n      n;\n\n  segments.forEach(function(segment) {\n    if ((n = segment.length - 1) <= 0) return;\n    var n, p0 = segment[0], p1 = segment[n], x;\n\n    if (Object(_pointEqual_js__WEBPACK_IMPORTED_MODULE_0__[\"default\"])(p0, p1)) {\n      if (!p0[2] && !p1[2]) {\n        stream.lineStart();\n        for (i = 0; i < n; ++i) stream.point((p0 = segment[i])[0], p0[1]);\n        stream.lineEnd();\n        return;\n      }\n      // handle degenerate cases by moving the point\n      p1[0] += 2 * _math_js__WEBPACK_IMPORTED_MODULE_1__[\"epsilon\"];\n    }\n\n    subject.push(x = new Intersection(p0, segment, null, true));\n    clip.push(x.o = new Intersection(p0, null, x, false));\n    subject.push(x = new Intersection(p1, segment, null, false));\n    clip.push(x.o = new Intersection(p1, null, x, true));\n  });\n\n  if (!subject.length) return;\n\n  clip.sort(compareIntersection);\n  link(subject);\n  link(clip);\n\n  for (i = 0, n = clip.length; i < n; ++i) {\n    clip[i].e = startInside = !startInside;\n  }\n\n  var start = subject[0],\n      points,\n      point;\n\n  while (1) {\n    // Find first unvisited intersection.\n    var current = start,\n        isSubject = true;\n    while (current.v) if ((current = current.n) === start) return;\n    points = current.z;\n    stream.lineStart();\n    do {\n      current.v = current.o.v = true;\n      if (current.e) {\n        if (isSubject) {\n          for (i = 0, n = points.length; i < n; ++i) stream.point((point = points[i])[0], point[1]);\n        } else {\n          interpolate(current.x, current.n.x, 1, stream);\n        }\n        current = current.n;\n      } else {\n        if (isSubject) {\n          points = current.p.z;\n          for (i = points.length - 1; i >= 0; --i) stream.point((point = points[i])[0], point[1]);\n        } else {\n          interpolate(current.x, current.p.x, -1, stream);\n        }\n        current = current.p;\n      }\n      current = current.o;\n      points = current.z;\n      isSubject = !isSubject;\n    } while (!current.v);\n    stream.lineEnd();\n  }\n});\n\nfunction link(array) {\n  if (!(n = array.length)) return;\n  var n,\n      i = 0,\n      a = array[0],\n      b;\n  while (++i < n) {\n    a.n = b = array[i];\n    b.p = a;\n    a = b;\n  }\n  a.n = b = array[0];\n  b.p = a;\n}\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,[encoded data, 4868 characters]\n//# sourceURL=webpack-internal:///./node_modules/vega-functions/node_modules/d3-geo/src/clip/rejoin.js\n");

/***/ }),

/***/ "./node_modules/vega-functions/node_modules/d3-geo/src/compose.js":
/*!************************************************************************!*\
  !*** ./node_modules/vega-functions/node_modules/d3-geo/src/compose.js ***!
  \************************************************************************/
/*! exports provided: default */
/***/ (function(module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony default export */ __webpack_exports__[\"default\"] = (function(a, b) {\n\n  function compose(x, y) {\n    return x = a(x, y), b(x[0], x[1]);\n  }\n\n  if (a.invert && b.invert) compose.invert = function(x, y) {\n    return x = b.invert(x, y), x && a.invert(x[0], x[1]);\n  };\n\n  return compose;\n});\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvdmVnYS1mdW5jdGlvbnMvbm9kZV9tb2R1bGVzL2QzLWdlby9zcmMvY29tcG9zZS5qcy5qcyIsInNvdXJjZXMiOlsid2VicGFjazovLy8uL25vZGVfbW9kdWxlcy92ZWdhLWZ1bmN0aW9ucy9ub2RlX21vZHVsZXMvZDMtZ2VvL3NyYy9jb21wb3NlLmpzPzVmY2YiXSwic291cmNlc0NvbnRlbnQiOlsiZXhwb3J0IGRlZmF1bHQgZnVuY3Rpb24oYSwgYikge1xuXG4gIGZ1bmN0aW9uIGNvbXBvc2UoeCwgeSkge1xuICAgIHJldHVybiB4ID0gYSh4LCB5KSwgYih4WzBdLCB4WzFdKTtcbiAgfVxuXG4gIGlmIChhLmludmVydCAmJiBiLmludmVydCkgY29tcG9zZS5pbnZlcnQgPSBmdW5jdGlvbih4LCB5KSB7XG4gICAgcmV0dXJuIHggPSBiLmludmVydCh4LCB5KSwgeCAmJiBhLmludmVydCh4WzBdLCB4WzFdKTtcbiAgfTtcblxuICByZXR1cm4gY29tcG9zZTtcbn1cbiJdLCJtYXBwaW5ncyI6IkFBQUE7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7Iiwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///./node_modules/vega-functions/node_modules/d3-geo/src/compose.js\n");

/***/ }),

/***/ "./node_modules/vega-functions/node_modules/d3-geo/src/constant.js":
/*!*************************************************************************!*\
  !*** ./node_modules/vega-functions/node_modules/d3-geo/src/constant.js ***!
  \*************************************************************************/
/*! exports provided: default */
/***/ (function(module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony default export */ __webpack_exports__[\"default\"] = (function(x) {\n  return function() {\n    return x;\n  };\n});\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvdmVnYS1mdW5jdGlvbnMvbm9kZV9tb2R1bGVzL2QzLWdlby9zcmMvY29uc3RhbnQuanMuanMiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvdmVnYS1mdW5jdGlvbnMvbm9kZV9tb2R1bGVzL2QzLWdlby9zcmMvY29uc3RhbnQuanM/NWJhZSJdLCJzb3VyY2VzQ29udGVudCI6WyJleHBvcnQgZGVmYXVsdCBmdW5jdGlvbih4KSB7XG4gIHJldHVybiBmdW5jdGlvbigpIHtcbiAgICByZXR1cm4geDtcbiAgfTtcbn1cbiJdLCJtYXBwaW5ncyI6IkFBQUE7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOyIsInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///./node_modules/vega-functions/node_modules/d3-geo/src/constant.js\n");

/***/ }),

/***/ "./node_modules/vega-functions/node_modules/d3-geo/src/contains.js":
/*!*************************************************************************!*\
  !*** ./node_modules/vega-functions/node_modules/d3-geo/src/contains.js ***!
  \*************************************************************************/
/*! exports provided: default */
/***/ (function(module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _polygonContains_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./polygonContains.js */ \"./node_modules/vega-functions/node_modules/d3-geo/src/polygonContains.js\");\n/* harmony import */ var _distance_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./distance.js */ \"./node_modules/vega-functions/node_modules/d3-geo/src/distance.js\");\n/* harmony import */ var _math_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./math.js */ \"./node_modules/vega-functions/node_modules/d3-geo/src/math.js\");\n\n\n\n\nvar containsObjectType = {\n  Feature: function(object, point) {\n    return containsGeometry(object.geometry, point);\n  },\n  FeatureCollection: function(object, point) {\n    var features = object.features, i = -1, n = features.length;\n    while (++i < n) if (containsGeometry(features[i].geometry, point)) return true;\n    return false;\n  }\n};\n\nvar containsGeometryType = {\n  Sphere: function() {\n    return true;\n  },\n  Point: function(object, point) {\n    return containsPoint(object.coordinates, point);\n  },\n  MultiPoint: function(object, point) {\n    var coordinates = object.coordinates, i = -1, n = coordinates.length;\n    while (++i < n) if (containsPoint(coordinates[i], point)) return true;\n    return false;\n  },\n  LineString: function(object, point) {\n    return containsLine(object.coordinates, point);\n  },\n  MultiLineString: function(object, point) {\n    var coordinates = object.coordinates, i = -1, n = coordinates.length;\n    while (++i < n) if (containsLine(coordinates[i], point)) return true;\n    return false;\n  },\n  Polygon: function(object, point) {\n    return containsPolygon(object.coordinates, point);\n  },\n  MultiPolygon: function(object, point) {\n    var coordinates = object.coordinates, i = -1, n = coordinates.length;\n    while (++i < n) if (containsPolygon(coordinates[i], point)) return true;\n    return false;\n  },\n  GeometryCollection: function(object, point) {\n    var geometries = object.geometries, i = -1, n = geometries.length;\n    while (++i < n) if (containsGeometry(geometries[i], point)) return true;\n    return false;\n  }\n};\n\nfunction containsGeometry(geometry, point) {\n  return geometry && containsGeometryType.hasOwnProperty(geometry.type)\n      ? containsGeometryType[geometry.type](geometry, point)\n      : false;\n}\n\nfunction containsPoint(coordinates, point) {\n  return Object(_distance_js__WEBPACK_IMPORTED_MODULE_1__[\"default\"])(coordinates, point) === 0;\n}\n\nfunction containsLine(coordinates, point) {\n  var ao, bo, ab;\n  for (var i = 0, n = coordinates.length; i < n; i++) {\n    bo = Object(_distance_js__WEBPACK_IMPORTED_MODULE_1__[\"default\"])(coordinates[i], point);\n    if (bo === 0) return true;\n    if (i > 0) {\n      ab = Object(_distance_js__WEBPACK_IMPORTED_MODULE_1__[\"default\"])(coordinates[i], coordinates[i - 1]);\n      if (\n        ab > 0 &&\n        ao <= ab &&\n        bo <= ab &&\n        (ao + bo - ab) * (1 - Math.pow((ao - bo) / ab, 2)) < _math_js__WEBPACK_IMPORTED_MODULE_2__[\"epsilon2\"] * ab\n      )\n        return true;\n    }\n    ao = bo;\n  }\n  return false;\n}\n\nfunction containsPolygon(coordinates, point) {\n  return !!Object(_polygonContains_js__WEBPACK_IMPORTED_MODULE_0__[\"default\"])(coordinates.map(ringRadians), pointRadians(point));\n}\n\nfunction ringRadians(ring) {\n  return ring = ring.map(pointRadians), ring.pop(), ring;\n}\n\nfunction pointRadians(point) {\n  return [point[0] * _math_js__WEBPACK_IMPORTED_MODULE_2__[\"radians\"], point[1] * _math_js__WEBPACK_IMPORTED_MODULE_2__[\"radians\"]];\n}\n\n/* harmony default export */ __webpack_exports__[\"default\"] = (function(object, point) {\n  return (object && containsObjectType.hasOwnProperty(object.type)\n      ? containsObjectType[object.type]\n      : containsGeometry)(object, point);\n});\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,[encoded data, 5128 characters]\n//# sourceURL=webpack-internal:///./node_modules/vega-functions/node_modules/d3-geo/src/contains.js\n");

/***/ }),

/***/ "./node_modules/vega-functions/node_modules/d3-geo/src/distance.js":
/*!*************************************************************************!*\
  !*** ./node_modules/vega-functions/node_modules/d3-geo/src/distance.js ***!
  \*************************************************************************/
/*! exports provided: default */
/***/ (function(module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _length_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./length.js */ \"./node_modules/vega-functions/node_modules/d3-geo/src/length.js\");\n\n\nvar coordinates = [null, null],\n    object = {type: \"LineString\", coordinates: coordinates};\n\n/* harmony default export */ __webpack_exports__[\"default\"] = (function(a, b) {\n  coordinates[0] = a;\n  coordinates[1] = b;\n  return Object(_length_js__WEBPACK_IMPORTED_MODULE_0__[\"default\"])(object);\n});\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvdmVnYS1mdW5jdGlvbnMvbm9kZV9tb2R1bGVzL2QzLWdlby9zcmMvZGlzdGFuY2UuanMuanMiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvdmVnYS1mdW5jdGlvbnMvbm9kZV9tb2R1bGVzL2QzLWdlby9zcmMvZGlzdGFuY2UuanM/NGI0NyJdLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgbGVuZ3RoIGZyb20gXCIuL2xlbmd0aC5qc1wiO1xuXG52YXIgY29vcmRpbmF0ZXMgPSBbbnVsbCwgbnVsbF0sXG4gICAgb2JqZWN0ID0ge3R5cGU6IFwiTGluZVN0cmluZ1wiLCBjb29yZGluYXRlczogY29vcmRpbmF0ZXN9O1xuXG5leHBvcnQgZGVmYXVsdCBmdW5jdGlvbihhLCBiKSB7XG4gIGNvb3JkaW5hdGVzWzBdID0gYTtcbiAgY29vcmRpbmF0ZXNbMV0gPSBiO1xuICByZXR1cm4gbGVuZ3RoKG9iamVjdCk7XG59XG4iXSwibWFwcGluZ3MiOiJBQUFBO0FBQUE7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTsiLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///./node_modules/vega-functions/node_modules/d3-geo/src/distance.js\n");

/***/ }),

/***/ "./node_modules/vega-functions/node_modules/d3-geo/src/graticule.js":
/*!**************************************************************************!*\
  !*** ./node_modules/vega-functions/node_modules/d3-geo/src/graticule.js ***!
  \**************************************************************************/
/*! exports provided: default, graticule10 */
/***/ (function(module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"default\", function() { return graticule; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"graticule10\", function() { return graticule10; });\n/* harmony import */ var d3_array__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! d3-array */ \"./node_modules/d3-array/src/index.js\");\n/* harmony import */ var _math_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./math.js */ \"./node_modules/vega-functions/node_modules/d3-geo/src/math.js\");\n\n\n\nfunction graticuleX(y0, y1, dy) {\n  var y = Object(d3_array__WEBPACK_IMPORTED_MODULE_0__[\"range\"])(y0, y1 - _math_js__WEBPACK_IMPORTED_MODULE_1__[\"epsilon\"], dy).concat(y1);\n  return function(x) { return y.map(function(y) { return [x, y]; }); };\n}\n\nfunction graticuleY(x0, x1, dx) {\n  var x = Object(d3_array__WEBPACK_IMPORTED_MODULE_0__[\"range\"])(x0, x1 - _math_js__WEBPACK_IMPORTED_MODULE_1__[\"epsilon\"], dx).concat(x1);\n  return function(y) { return x.map(function(x) { return [x, y]; }); };\n}\n\nfunction graticule() {\n  var x1, x0, X1, X0,\n      y1, y0, Y1, Y0,\n      dx = 10, dy = dx, DX = 90, DY = 360,\n      x, y, X, Y,\n      precision = 2.5;\n\n  function graticule() {\n    return {type: \"MultiLineString\", coordinates: lines()};\n  }\n\n  function lines() {\n    return Object(d3_array__WEBPACK_IMPORTED_MODULE_0__[\"range\"])(Object(_math_js__WEBPACK_IMPORTED_MODULE_1__[\"ceil\"])(X0 / DX) * DX, X1, DX).map(X)\n        .concat(Object(d3_array__WEBPACK_IMPORTED_MODULE_0__[\"range\"])(Object(_math_js__WEBPACK_IMPORTED_MODULE_1__[\"ceil\"])(Y0 / DY) * DY, Y1, DY).map(Y))\n        .concat(Object(d3_array__WEBPACK_IMPORTED_MODULE_0__[\"range\"])(Object(_math_js__WEBPACK_IMPORTED_MODULE_1__[\"ceil\"])(x0 / dx) * dx, x1, dx).filter(function(x) { return Object(_math_js__WEBPACK_IMPORTED_MODULE_1__[\"abs\"])(x % DX) > _math_js__WEBPACK_IMPORTED_MODULE_1__[\"epsilon\"]; }).map(x))\n        .concat(Object(d3_array__WEBPACK_IMPORTED_MODULE_0__[\"range\"])(Object(_math_js__WEBPACK_IMPORTED_MODULE_1__[\"ceil\"])(y0 / dy) * dy, y1, dy).filter(function(y) { return Object(_math_js__WEBPACK_IMPORTED_MODULE_1__[\"abs\"])(y % DY) > _math_js__WEBPACK_IMPORTED_MODULE_1__[\"epsilon\"]; }).map(y));\n  }\n\n  graticule.lines = function() {\n    return lines().map(function(coordinates) { return {type: \"LineString\", coordinates: coordinates}; });\n  };\n\n  graticule.outline = function() {\n    return {\n      type: \"Polygon\",\n      coordinates: [\n        X(X0).concat(\n        Y(Y1).slice(1),\n        X(X1).reverse().slice(1),\n        Y(Y0).reverse().slice(1))\n      ]\n    };\n  };\n\n  graticule.extent = function(_) {\n    if (!arguments.length) return graticule.extentMinor();\n    return graticule.extentMajor(_).extentMinor(_);\n  };\n\n  graticule.extentMajor = function(_) {\n    if (!arguments.length) return [[X0, Y0], [X1, Y1]];\n    X0 = +_[0][0], X1 = +_[1][0];\n    Y0 = +_[0][1], Y1 = +_[1][1];\n    if (X0 > X1) _ = X0, X0 = X1, X1 = _;\n    if (Y0 > Y1) _ = Y0, Y0 = Y1, Y1 = _;\n    return graticule.precision(precision);\n  };\n\n  graticule.extentMinor = function(_) {\n    if (!arguments.length) return [[x0, y0], [x1, y1]];\n    x0 = +_[0][0], x1 = +_[1][0];\n    y0 = +_[0][1], y1 = +_[1][1];\n    if (x0 > x1) _ = x0, x0 = x1, x1 = _;\n    if (y0 > y1) _ = y0, y0 = y1, y1 = _;\n    return graticule.precision(precision);\n  };\n\n  graticule.step = function(_) {\n    if (!arguments.length) return graticule.stepMinor();\n    return graticule.stepMajor(_).stepMinor(_);\n  };\n\n  graticule.stepMajor = function(_) {\n    if (!arguments.length) return [DX, DY];\n    DX = +_[0], DY = +_[1];\n    return graticule;\n  };\n\n  graticule.stepMinor = function(_) {\n    if (!arguments.length) return [dx, dy];\n    dx = +_[0], dy = +_[1];\n    return graticule;\n  };\n\n  graticule.precision = function(_) {\n    if (!arguments.length) return precision;\n    precision = +_;\n    x = graticuleX(y0, y1, 90);\n    y = graticuleY(x0, x1, precision);\n    X = graticuleX(Y0, Y1, 90);\n    Y = graticuleY(X0, X1, precision);\n    return graticule;\n  };\n\n  return graticule\n      .extentMajor([[-180, -90 + _math_js__WEBPACK_IMPORTED_MODULE_1__[\"epsilon\"]], [180, 90 - _math_js__WEBPACK_IMPORTED_MODULE_1__[\"epsilon\"]]])\n      .extentMinor([[-180, -80 - _math_js__WEBPACK_IMPORTED_MODULE_1__[\"epsilon\"]], [180, 80 + _math_js__WEBPACK_IMPORTED_MODULE_1__[\"epsilon\"]]]);\n}\n\nfunction graticule10() {\n  return graticule()();\n}\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,[encoded data, 5260 characters]\n//# sourceURL=webpack-internal:///./node_modules/vega-functions/node_modules/d3-geo/src/graticule.js\n");

/***/ }),

/***/ "./node_modules/vega-functions/node_modules/d3-geo/src/identity.js":
/*!*************************************************************************!*\
  !*** ./node_modules/vega-functions/node_modules/d3-geo/src/identity.js ***!
  \*************************************************************************/
/*! exports provided: default */
/***/ (function(module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony default export */ __webpack_exports__[\"default\"] = (x => x);\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvdmVnYS1mdW5jdGlvbnMvbm9kZV9tb2R1bGVzL2QzLWdlby9zcmMvaWRlbnRpdHkuanMuanMiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvdmVnYS1mdW5jdGlvbnMvbm9kZV9tb2R1bGVzL2QzLWdlby9zcmMvaWRlbnRpdHkuanM/ZGU1OCJdLCJzb3VyY2VzQ29udGVudCI6WyJleHBvcnQgZGVmYXVsdCB4ID0+IHg7XG4iXSwibWFwcGluZ3MiOiJBQUFBO0FBQUE7Iiwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///./node_modules/vega-functions/node_modules/d3-geo/src/identity.js\n");

/***/ }),

/***/ "./node_modules/vega-functions/node_modules/d3-geo/src/index.js":
/*!**********************************************************************!*\
  !*** ./node_modules/vega-functions/node_modules/d3-geo/src/index.js ***!
  \**********************************************************************/
/*! exports provided: geoArea, geoBounds, geoCentroid, geoCircle, geoClipAntimeridian, geoClipCircle, geoClipExtent, geoClipRectangle, geoContains, geoDistance, geoGraticule, geoGraticule10, geoInterpolate, geoLength, geoPath, geoAlbers, geoAlbersUsa, geoAzimuthalEqualArea, geoAzimuthalEqualAreaRaw, geoAzimuthalEquidistant, geoAzimuthalEquidistantRaw, geoConicConformal, geoConicConformalRaw, geoConicEqualArea, geoConicEqualAreaRaw, geoConicEquidistant, geoConicEquidistantRaw, geoEqualEarth, geoEqualEarthRaw, geoEquirectangular, geoEquirectangularRaw, geoGnomonic, geoGnomonicRaw, geoIdentity, geoProjection, geoProjectionMutator, geoMercator, geoMercatorRaw, geoNaturalEarth1, geoNaturalEarth1Raw, geoOrthographic, geoOrthographicRaw, geoStereographic, geoStereographicRaw, geoTransverseMercator, geoTransverseMercatorRaw, geoRotation, geoStream, geoTransform */
/***/ (function(module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _area_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./area.js */ \"./node_modules/vega-functions/node_modules/d3-geo/src/area.js\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"geoArea\", function() { return _area_js__WEBPACK_IMPORTED_MODULE_0__[\"default\"]; });\n\n/* harmony import */ var _bounds_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./bounds.js */ \"./node_modules/vega-functions/node_modules/d3-geo/src/bounds.js\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"geoBounds\", function() { return _bounds_js__WEBPACK_IMPORTED_MODULE_1__[\"default\"]; });\n\n/* harmony import */ var _centroid_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./centroid.js */ \"./node_modules/vega-functions/node_modules/d3-geo/src/centroid.js\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"geoCentroid\", function() { return _centroid_js__WEBPACK_IMPORTED_MODULE_2__[\"default\"]; });\n\n/* harmony import */ var _circle_js__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ./circle.js */ \"./node_modules/vega-functions/node_modules/d3-geo/src/circle.js\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"geoCircle\", function() { return _circle_js__WEBPACK_IMPORTED_MODULE_3__[\"default\"]; });\n\n/* harmony import */ var _clip_antimeridian_js__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ./clip/antimeridian.js */ \"./node_modules/vega-functions/node_modules/d3-geo/src/clip/antimeridian.js\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"geoClipAntimeridian\", function() { return _clip_antimeridian_js__WEBPACK_IMPORTED_MODULE_4__[\"default\"]; });\n\n/* harmony import */ var _clip_circle_js__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! ./clip/circle.js */ \"./node_modules/vega-functions/node_modules/d3-geo/src/clip/circle.js\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"geoClipCircle\", function() { return _clip_circle_js__WEBPACK_IMPORTED_MODULE_5__[\"default\"]; });\n\n/* harmony import */ var _clip_extent_js__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! ./clip/extent.js */ \"./node_modules/vega-functions/node_modules/d3-geo/src/clip/extent.js\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"geoClipExtent\", function() { return _clip_extent_js__WEBPACK_IMPORTED_MODULE_6__[\"default\"]; });\n\n/* harmony import */ var _clip_rectangle_js__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! ./clip/rectangle.js */ \"./node_modules/vega-functions/node_modules/d3-geo/src/clip/rectangle.js\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"geoClipRectangle\", function() { return _clip_rectangle_js__WEBPACK_IMPORTED_MODULE_7__[\"default\"]; });\n\n/* harmony import */ var _contains_js__WEBPACK_IMPORTED_MODULE_8__ = __webpack_require__(/*! ./contains.js */ \"./node_modules/vega-functions/node_modules/d3-geo/src/contains.js\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"geoContains\", function() { return _contains_js__WEBPACK_IMPORTED_MODULE_8__[\"default\"]; });\n\n/* harmony import */ var _distance_js__WEBPACK_IMPORTED_MODULE_9__ = __webpack_require__(/*! ./distance.js */ \"./node_modules/vega-functions/node_modules/d3-geo/src/distance.js\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"geoDistance\", function() { return _distance_js__WEBPACK_IMPORTED_MODULE_9__[\"default\"]; });\n\n/* harmony import */ var _graticule_js__WEBPACK_IMPORTED_MODULE_10__ = __webpack_require__(/*! ./graticule.js */ \"./node_modules/vega-functions/node_modules/d3-geo/src/graticule.js\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"geoGraticule\", function() { return _graticule_js__WEBPACK_IMPORTED_MODULE_10__[\"default\"]; });\n\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"geoGraticule10\", function() { return _graticule_js__WEBPACK_IMPORTED_MODULE_10__[\"graticule10\"]; });\n\n/* harmony import */ var _interpolate_js__WEBPACK_IMPORTED_MODULE_11__ = __webpack_require__(/*! ./interpolate.js */ \"./node_modules/vega-functions/node_modules/d3-geo/src/interpolate.js\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"geoInterpolate\", function() { return _interpolate_js__WEBPACK_IMPORTED_MODULE_11__[\"default\"]; });\n\n/* harmony import */ var _length_js__WEBPACK_IMPORTED_MODULE_12__ = __webpack_require__(/*! ./length.js */ \"./node_modules/vega-functions/node_modules/d3-geo/src/length.js\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"geoLength\", function() { return _length_js__WEBPACK_IMPORTED_MODULE_12__[\"default\"]; });\n\n/* harmony import */ var _path_index_js__WEBPACK_IMPORTED_MODULE_13__ = __webpack_require__(/*! ./path/index.js */ \"./node_modules/vega-functions/node_modules/d3-geo/src/path/index.js\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"geoPath\", function() { return _path_index_js__WEBPACK_IMPORTED_MODULE_13__[\"default\"]; });\n\n/* harmony import */ var _projection_albers_js__WEBPACK_IMPORTED_MODULE_14__ = __webpack_require__(/*! ./projection/albers.js */ \"./node_modules/vega-functions/node_modules/d3-geo/src/projection/albers.js\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"geoAlbers\", function() { return _projection_albers_js__WEBPACK_IMPORTED_MODULE_14__[\"default\"]; });\n\n/* harmony import */ var _projection_albersUsa_js__WEBPACK_IMPORTED_MODULE_15__ = __webpack_require__(/*! ./projection/albersUsa.js */ \"./node_modules/vega-functions/node_modules/d3-geo/src/projection/albersUsa.js\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"geoAlbersUsa\", function() { return _projection_albersUsa_js__WEBPACK_IMPORTED_MODULE_15__[\"default\"]; });\n\n/* harmony import */ var _projection_azimuthalEqualArea_js__WEBPACK_IMPORTED_MODULE_16__ = __webpack_require__(/*! ./projection/azimuthalEqualArea.js */ \"./node_modules/vega-functions/node_modules/d3-geo/src/projection/azimuthalEqualArea.js\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"geoAzimuthalEqualArea\", function() { return _projection_azimuthalEqualArea_js__WEBPACK_IMPORTED_MODULE_16__[\"default\"]; });\n\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"geoAzimuthalEqualAreaRaw\", function() { return _projection_azimuthalEqualArea_js__WEBPACK_IMPORTED_MODULE_16__[\"azimuthalEqualAreaRaw\"]; });\n\n/* harmony import */ var _projection_azimuthalEquidistant_js__WEBPACK_IMPORTED_MODULE_17__ = __webpack_require__(/*! ./projection/azimuthalEquidistant.js */ \"./node_modules/vega-functions/node_modules/d3-geo/src/projection/azimuthalEquidistant.js\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"geoAzimuthalEquidistant\", function() { return _projection_azimuthalEquidistant_js__WEBPACK_IMPORTED_MODULE_17__[\"default\"]; });\n\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"geoAzimuthalEquidistantRaw\", function() { return _projection_azimuthalEquidistant_js__WEBPACK_IMPORTED_MODULE_17__[\"azimuthalEquidistantRaw\"]; });\n\n/* harmony import */ var _projection_conicConformal_js__WEBPACK_IMPORTED_MODULE_18__ = __webpack_require__(/*! ./projection/conicConformal.js */ \"./node_modules/vega-functions/node_modules/d3-geo/src/projection/conicConformal.js\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"geoConicConformal\", function() { return _projection_conicConformal_js__WEBPACK_IMPORTED_MODULE_18__[\"default\"]; });\n\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"geoConicConformalRaw\", function() { return _projection_conicConformal_js__WEBPACK_IMPORTED_MODULE_18__[\"conicConformalRaw\"]; });\n\n/* harmony import */ var _projection_conicEqualArea_js__WEBPACK_IMPORTED_MODULE_19__ = __webpack_require__(/*! ./projection/conicEqualArea.js */ \"./node_modules/vega-functions/node_modules/d3-geo/src/projection/conicEqualArea.js\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"geoConicEqualArea\", function() { return _projection_conicEqualArea_js__WEBPACK_IMPORTED_MODULE_19__[\"default\"]; });\n\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"geoConicEqualAreaRaw\", function() { return _projection_conicEqualArea_js__WEBPACK_IMPORTED_MODULE_19__[\"conicEqualAreaRaw\"]; });\n\n/* harmony import */ var _projection_conicEquidistant_js__WEBPACK_IMPORTED_MODULE_20__ = __webpack_require__(/*! ./projection/conicEquidistant.js */ \"./node_modules/vega-functions/node_modules/d3-geo/src/projection/conicEquidistant.js\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"geoConicEquidistant\", function() { return _projection_conicEquidistant_js__WEBPACK_IMPORTED_MODULE_20__[\"default\"]; });\n\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"geoConicEquidistantRaw\", function() { return _projection_conicEquidistant_js__WEBPACK_IMPORTED_MODULE_20__[\"conicEquidistantRaw\"]; });\n\n/* harmony import */ var _projection_equalEarth_js__WEBPACK_IMPORTED_MODULE_21__ = __webpack_require__(/*! ./projection/equalEarth.js */ \"./node_modules/vega-functions/node_modules/d3-geo/src/projection/equalEarth.js\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"geoEqualEarth\", function() { return _projection_equalEarth_js__WEBPACK_IMPORTED_MODULE_21__[\"default\"]; });\n\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"geoEqualEarthRaw\", function() { return _projection_equalEarth_js__WEBPACK_IMPORTED_MODULE_21__[\"equalEarthRaw\"]; });\n\n/* harmony import */ var _projection_equirectangular_js__WEBPACK_IMPORTED_MODULE_22__ = __webpack_require__(/*! ./projection/equirectangular.js */ \"./node_modules/vega-functions/node_modules/d3-geo/src/projection/equirectangular.js\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"geoEquirectangular\", function() { return _projection_equirectangular_js__WEBPACK_IMPORTED_MODULE_22__[\"default\"]; });\n\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"geoEquirectangularRaw\", function() { return _projection_equirectangular_js__WEBPACK_IMPORTED_MODULE_22__[\"equirectangularRaw\"]; });\n\n/* harmony import */ var _projection_gnomonic_js__WEBPACK_IMPORTED_MODULE_23__ = __webpack_require__(/*! ./projection/gnomonic.js */ \"./node_modules/vega-functions/node_modules/d3-geo/src/projection/gnomonic.js\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"geoGnomonic\", function() { return _projection_gnomonic_js__WEBPACK_IMPORTED_MODULE_23__[\"default\"]; });\n\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"geoGnomonicRaw\", function() { return _projection_gnomonic_js__WEBPACK_IMPORTED_MODULE_23__[\"gnomonicRaw\"]; });\n\n/* harmony import */ var _projection_identity_js__WEBPACK_IMPORTED_MODULE_24__ = __webpack_require__(/*! ./projection/identity.js */ \"./node_modules/vega-functions/node_modules/d3-geo/src/projection/identity.js\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"geoIdentity\", function() { return _projection_identity_js__WEBPACK_IMPORTED_MODULE_24__[\"default\"]; });\n\n/* harmony import */ var _projection_index_js__WEBPACK_IMPORTED_MODULE_25__ = __webpack_require__(/*! ./projection/index.js */ \"./node_modules/vega-functions/node_modules/d3-geo/src/projection/index.js\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"geoProjection\", function() { return _projection_index_js__WEBPACK_IMPORTED_MODULE_25__[\"default\"]; });\n\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"geoProjectionMutator\", function() { return _projection_index_js__WEBPACK_IMPORTED_MODULE_25__[\"projectionMutator\"]; });\n\n/* harmony import */ var _projection_mercator_js__WEBPACK_IMPORTED_MODULE_26__ = __webpack_require__(/*! ./projection/mercator.js */ \"./node_modules/vega-functions/node_modules/d3-geo/src/projection/mercator.js\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"geoMercator\", function() { return _projection_mercator_js__WEBPACK_IMPORTED_MODULE_26__[\"default\"]; });\n\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"geoMercatorRaw\", function() { return _projection_mercator_js__WEBPACK_IMPORTED_MODULE_26__[\"mercatorRaw\"]; });\n\n/* harmony import */ var _projection_naturalEarth1_js__WEBPACK_IMPORTED_MODULE_27__ = __webpack_require__(/*! ./projection/naturalEarth1.js */ \"./node_modules/vega-functions/node_modules/d3-geo/src/projection/naturalEarth1.js\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"geoNaturalEarth1\", function() { return _projection_naturalEarth1_js__WEBPACK_IMPORTED_MODULE_27__[\"default\"]; });\n\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"geoNaturalEarth1Raw\", function() { return _projection_naturalEarth1_js__WEBPACK_IMPORTED_MODULE_27__[\"naturalEarth1Raw\"]; });\n\n/* harmony import */ var _projection_orthographic_js__WEBPACK_IMPORTED_MODULE_28__ = __webpack_require__(/*! ./projection/orthographic.js */ \"./node_modules/vega-functions/node_modules/d3-geo/src/projection/orthographic.js\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"geoOrthographic\", function() { return _projection_orthographic_js__WEBPACK_IMPORTED_MODULE_28__[\"default\"]; });\n\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"geoOrthographicRaw\", function() { return _projection_orthographic_js__WEBPACK_IMPORTED_MODULE_28__[\"orthographicRaw\"]; });\n\n/* harmony import */ var _projection_stereographic_js__WEBPACK_IMPORTED_MODULE_29__ = __webpack_require__(/*! ./projection/stereographic.js */ \"./node_modules/vega-functions/node_modules/d3-geo/src/projection/stereographic.js\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"geoStereographic\", function() { return _projection_stereographic_js__WEBPACK_IMPORTED_MODULE_29__[\"default\"]; });\n\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"geoStereographicRaw\", function() { return _projection_stereographic_js__WEBPACK_IMPORTED_MODULE_29__[\"stereographicRaw\"]; });\n\n/* harmony import */ var _projection_transverseMercator_js__WEBPACK_IMPORTED_MODULE_30__ = __webpack_require__(/*! ./projection/transverseMercator.js */ \"./node_modules/vega-functions/node_modules/d3-geo/src/projection/transverseMercator.js\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"geoTransverseMercator\", function() { return _projection_transverseMercator_js__WEBPACK_IMPORTED_MODULE_30__[\"default\"]; });\n\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"geoTransverseMercatorRaw\", function() { return _projection_transverseMercator_js__WEBPACK_IMPORTED_MODULE_30__[\"transverseMercatorRaw\"]; });\n\n/* harmony import */ var _rotation_js__WEBPACK_IMPORTED_MODULE_31__ = __webpack_require__(/*! ./rotation.js */ \"./node_modules/vega-functions/node_modules/d3-geo/src/rotation.js\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"geoRotation\", function() { return _rotation_js__WEBPACK_IMPORTED_MODULE_31__[\"default\"]; });\n\n/* harmony import */ var _stream_js__WEBPACK_IMPORTED_MODULE_32__ = __webpack_require__(/*! ./stream.js */ \"./node_modules/vega-functions/node_modules/d3-geo/src/stream.js\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"geoStream\", function() { return _stream_js__WEBPACK_IMPORTED_MODULE_32__[\"default\"]; });\n\n/* harmony import */ var _transform_js__WEBPACK_IMPORTED_MODULE_33__ = __webpack_require__(/*! ./transform.js */ \"./node_modules/vega-functions/node_modules/d3-geo/src/transform.js\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"geoTransform\", function() { return _transform_js__WEBPACK_IMPORTED_MODULE_33__[\"default\"]; });\n\n\n\n\n\n\n\n // DEPRECATED! Use d3.geoIdentity().clipExtent(…).\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,[encoded data, 5392 characters]\n//# sourceURL=webpack-internal:///./node_modules/vega-functions/node_modules/d3-geo/src/index.js\n");

/***/ }),

/***/ "./node_modules/vega-functions/node_modules/d3-geo/src/interpolate.js":
/*!****************************************************************************!*\
  !*** ./node_modules/vega-functions/node_modules/d3-geo/src/interpolate.js ***!
  \****************************************************************************/
/*! exports provided: default */
/***/ (function(module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _math_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./math.js */ \"./node_modules/vega-functions/node_modules/d3-geo/src/math.js\");\n\n\n/* harmony default export */ __webpack_exports__[\"default\"] = (function(a, b) {\n  var x0 = a[0] * _math_js__WEBPACK_IMPORTED_MODULE_0__[\"radians\"],\n      y0 = a[1] * _math_js__WEBPACK_IMPORTED_MODULE_0__[\"radians\"],\n      x1 = b[0] * _math_js__WEBPACK_IMPORTED_MODULE_0__[\"radians\"],\n      y1 = b[1] * _math_js__WEBPACK_IMPORTED_MODULE_0__[\"radians\"],\n      cy0 = Object(_math_js__WEBPACK_IMPORTED_MODULE_0__[\"cos\"])(y0),\n      sy0 = Object(_math_js__WEBPACK_IMPORTED_MODULE_0__[\"sin\"])(y0),\n      cy1 = Object(_math_js__WEBPACK_IMPORTED_MODULE_0__[\"cos\"])(y1),\n      sy1 = Object(_math_js__WEBPACK_IMPORTED_MODULE_0__[\"sin\"])(y1),\n      kx0 = cy0 * Object(_math_js__WEBPACK_IMPORTED_MODULE_0__[\"cos\"])(x0),\n      ky0 = cy0 * Object(_math_js__WEBPACK_IMPORTED_MODULE_0__[\"sin\"])(x0),\n      kx1 = cy1 * Object(_math_js__WEBPACK_IMPORTED_MODULE_0__[\"cos\"])(x1),\n      ky1 = cy1 * Object(_math_js__WEBPACK_IMPORTED_MODULE_0__[\"sin\"])(x1),\n      d = 2 * Object(_math_js__WEBPACK_IMPORTED_MODULE_0__[\"asin\"])(Object(_math_js__WEBPACK_IMPORTED_MODULE_0__[\"sqrt\"])(Object(_math_js__WEBPACK_IMPORTED_MODULE_0__[\"haversin\"])(y1 - y0) + cy0 * cy1 * Object(_math_js__WEBPACK_IMPORTED_MODULE_0__[\"haversin\"])(x1 - x0))),\n      k = Object(_math_js__WEBPACK_IMPORTED_MODULE_0__[\"sin\"])(d);\n\n  var interpolate = d ? function(t) {\n    var B = Object(_math_js__WEBPACK_IMPORTED_MODULE_0__[\"sin\"])(t *= d) / k,\n        A = Object(_math_js__WEBPACK_IMPORTED_MODULE_0__[\"sin\"])(d - t) / k,\n        x = A * kx0 + B * kx1,\n        y = A * ky0 + B * ky1,\n        z = A * sy0 + B * sy1;\n    return [\n      Object(_math_js__WEBPACK_IMPORTED_MODULE_0__[\"atan2\"])(y, x) * _math_js__WEBPACK_IMPORTED_MODULE_0__[\"degrees\"],\n      Object(_math_js__WEBPACK_IMPORTED_MODULE_0__[\"atan2\"])(z, Object(_math_js__WEBPACK_IMPORTED_MODULE_0__[\"sqrt\"])(x * x + y * y)) * _math_js__WEBPACK_IMPORTED_MODULE_0__[\"degrees\"]\n    ];\n  } : function() {\n    return [x0 * _math_js__WEBPACK_IMPORTED_MODULE_0__[\"degrees\"], y0 * _math_js__WEBPACK_IMPORTED_MODULE_0__[\"degrees\"]];\n  };\n\n  interpolate.distance = d;\n\n  return interpolate;\n});\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvdmVnYS1mdW5jdGlvbnMvbm9kZV9tb2R1bGVzL2QzLWdlby9zcmMvaW50ZXJwb2xhdGUuanMuanMiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvdmVnYS1mdW5jdGlvbnMvbm9kZV9tb2R1bGVzL2QzLWdlby9zcmMvaW50ZXJwb2xhdGUuanM/MjNiMSJdLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge2FzaW4sIGF0YW4yLCBjb3MsIGRlZ3JlZXMsIGhhdmVyc2luLCByYWRpYW5zLCBzaW4sIHNxcnR9IGZyb20gXCIuL21hdGguanNcIjtcblxuZXhwb3J0IGRlZmF1bHQgZnVuY3Rpb24oYSwgYikge1xuICB2YXIgeDAgPSBhWzBdICogcmFkaWFucyxcbiAgICAgIHkwID0gYVsxXSAqIHJhZGlhbnMsXG4gICAgICB4MSA9IGJbMF0gKiByYWRpYW5zLFxuICAgICAgeTEgPSBiWzFdICogcmFkaWFucyxcbiAgICAgIGN5MCA9IGNvcyh5MCksXG4gICAgICBzeTAgPSBzaW4oeTApLFxuICAgICAgY3kxID0gY29zKHkxKSxcbiAgICAgIHN5MSA9IHNpbih5MSksXG4gICAgICBreDAgPSBjeTAgKiBjb3MoeDApLFxuICAgICAga3kwID0gY3kwICogc2luKHgwKSxcbiAgICAgIGt4MSA9IGN5MSAqIGNvcyh4MSksXG4gICAgICBreTEgPSBjeTEgKiBzaW4oeDEpLFxuICAgICAgZCA9IDIgKiBhc2luKHNxcnQoaGF2ZXJzaW4oeTEgLSB5MCkgKyBjeTAgKiBjeTEgKiBoYXZlcnNpbih4MSAtIHgwKSkpLFxuICAgICAgayA9IHNpbihkKTtcblxuICB2YXIgaW50ZXJwb2xhdGUgPSBkID8gZnVuY3Rpb24odCkge1xuICAgIHZhciBCID0gc2luKHQgKj0gZCkgLyBrLFxuICAgICAgICBBID0gc2luKGQgLSB0KSAvIGssXG4gICAgICAgIHggPSBBICoga3gwICsgQiAqIGt4MSxcbiAgICAgICAgeSA9IEEgKiBreTAgKyBCICoga3kxLFxuICAgICAgICB6ID0gQSAqIHN5MCArIEIgKiBzeTE7XG4gICAgcmV0dXJuIFtcbiAgICAgIGF0YW4yKHksIHgpICogZGVncmVlcyxcbiAgICAgIGF0YW4yKHosIHNxcnQoeCAqIHggKyB5ICogeSkpICogZGVncmVlc1xuICAgIF07XG4gIH0gOiBmdW5jdGlvbigpIHtcbiAgICByZXR1cm4gW3gwICogZGVncmVlcywgeTAgKiBkZWdyZWVzXTtcbiAgfTtcblxuICBpbnRlcnBvbGF0ZS5kaXN0YW5jZSA9IGQ7XG5cbiAgcmV0dXJuIGludGVycG9sYXRlO1xufVxuIl0sIm1hcHBpbmdzIjoiQUFBQTtBQUFBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOyIsInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///./node_modules/vega-functions/node_modules/d3-geo/src/interpolate.js\n");

/***/ }),

/***/ "./node_modules/vega-functions/node_modules/d3-geo/src/length.js":
/*!***********************************************************************!*\
  !*** ./node_modules/vega-functions/node_modules/d3-geo/src/length.js ***!
  \***********************************************************************/
/*! exports provided: default */
/***/ (function(module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var d3_array__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! d3-array */ \"./node_modules/d3-array/src/index.js\");\n/* harmony import */ var _math_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./math.js */ \"./node_modules/vega-functions/node_modules/d3-geo/src/math.js\");\n/* harmony import */ var _noop_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./noop.js */ \"./node_modules/vega-functions/node_modules/d3-geo/src/noop.js\");\n/* harmony import */ var _stream_js__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ./stream.js */ \"./node_modules/vega-functions/node_modules/d3-geo/src/stream.js\");\n\n\n\n\n\nvar lengthSum,\n    lambda0,\n    sinPhi0,\n    cosPhi0;\n\nvar lengthStream = {\n  sphere: _noop_js__WEBPACK_IMPORTED_MODULE_2__[\"default\"],\n  point: _noop_js__WEBPACK_IMPORTED_MODULE_2__[\"default\"],\n  lineStart: lengthLineStart,\n  lineEnd: _noop_js__WEBPACK_IMPORTED_MODULE_2__[\"default\"],\n  polygonStart: _noop_js__WEBPACK_IMPORTED_MODULE_2__[\"default\"],\n  polygonEnd: _noop_js__WEBPACK_IMPORTED_MODULE_2__[\"default\"]\n};\n\nfunction lengthLineStart() {\n  lengthStream.point = lengthPointFirst;\n  lengthStream.lineEnd = lengthLineEnd;\n}\n\nfunction lengthLineEnd() {\n  lengthStream.point = lengthStream.lineEnd = _noop_js__WEBPACK_IMPORTED_MODULE_2__[\"default\"];\n}\n\nfunction lengthPointFirst(lambda, phi) {\n  lambda *= _math_js__WEBPACK_IMPORTED_MODULE_1__[\"radians\"], phi *= _math_js__WEBPACK_IMPORTED_MODULE_1__[\"radians\"];\n  lambda0 = lambda, sinPhi0 = Object(_math_js__WEBPACK_IMPORTED_MODULE_1__[\"sin\"])(phi), cosPhi0 = Object(_math_js__WEBPACK_IMPORTED_MODULE_1__[\"cos\"])(phi);\n  lengthStream.point = lengthPoint;\n}\n\nfunction lengthPoint(lambda, phi) {\n  lambda *= _math_js__WEBPACK_IMPORTED_MODULE_1__[\"radians\"], phi *= _math_js__WEBPACK_IMPORTED_MODULE_1__[\"radians\"];\n  var sinPhi = Object(_math_js__WEBPACK_IMPORTED_MODULE_1__[\"sin\"])(phi),\n      cosPhi = Object(_math_js__WEBPACK_IMPORTED_MODULE_1__[\"cos\"])(phi),\n      delta = Object(_math_js__WEBPACK_IMPORTED_MODULE_1__[\"abs\"])(lambda - lambda0),\n      cosDelta = Object(_math_js__WEBPACK_IMPORTED_MODULE_1__[\"cos\"])(delta),\n      sinDelta = Object(_math_js__WEBPACK_IMPORTED_MODULE_1__[\"sin\"])(delta),\n      x = cosPhi * sinDelta,\n      y = cosPhi0 * sinPhi - sinPhi0 * cosPhi * cosDelta,\n      z = sinPhi0 * sinPhi + cosPhi0 * cosPhi * cosDelta;\n  lengthSum.add(Object(_math_js__WEBPACK_IMPORTED_MODULE_1__[\"atan2\"])(Object(_math_js__WEBPACK_IMPORTED_MODULE_1__[\"sqrt\"])(x * x + y * y), z));\n  lambda0 = lambda, sinPhi0 = sinPhi, cosPhi0 = cosPhi;\n}\n\n/* harmony default export */ __webpack_exports__[\"default\"] = (function(object) {\n  lengthSum = new d3_array__WEBPACK_IMPORTED_MODULE_0__[\"Adder\"]();\n  Object(_stream_js__WEBPACK_IMPORTED_MODULE_3__[\"default\"])(object, lengthStream);\n  return +lengthSum;\n});\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvdmVnYS1mdW5jdGlvbnMvbm9kZV9tb2R1bGVzL2QzLWdlby9zcmMvbGVuZ3RoLmpzLmpzIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL3ZlZ2EtZnVuY3Rpb25zL25vZGVfbW9kdWxlcy9kMy1nZW8vc3JjL2xlbmd0aC5qcz9lMDA5Il0sInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7QWRkZXJ9IGZyb20gXCJkMy1hcnJheVwiO1xuaW1wb3J0IHthYnMsIGF0YW4yLCBjb3MsIHJhZGlhbnMsIHNpbiwgc3FydH0gZnJvbSBcIi4vbWF0aC5qc1wiO1xuaW1wb3J0IG5vb3AgZnJvbSBcIi4vbm9vcC5qc1wiO1xuaW1wb3J0IHN0cmVhbSBmcm9tIFwiLi9zdHJlYW0uanNcIjtcblxudmFyIGxlbmd0aFN1bSxcbiAgICBsYW1iZGEwLFxuICAgIHNpblBoaTAsXG4gICAgY29zUGhpMDtcblxudmFyIGxlbmd0aFN0cmVhbSA9IHtcbiAgc3BoZXJlOiBub29wLFxuICBwb2ludDogbm9vcCxcbiAgbGluZVN0YXJ0OiBsZW5ndGhMaW5lU3RhcnQsXG4gIGxpbmVFbmQ6IG5vb3AsXG4gIHBvbHlnb25TdGFydDogbm9vcCxcbiAgcG9seWdvbkVuZDogbm9vcFxufTtcblxuZnVuY3Rpb24gbGVuZ3RoTGluZVN0YXJ0KCkge1xuICBsZW5ndGhTdHJlYW0ucG9pbnQgPSBsZW5ndGhQb2ludEZpcnN0O1xuICBsZW5ndGhTdHJlYW0ubGluZUVuZCA9IGxlbmd0aExpbmVFbmQ7XG59XG5cbmZ1bmN0aW9uIGxlbmd0aExpbmVFbmQoKSB7XG4gIGxlbmd0aFN0cmVhbS5wb2ludCA9IGxlbmd0aFN0cmVhbS5saW5lRW5kID0gbm9vcDtcbn1cblxuZnVuY3Rpb24gbGVuZ3RoUG9pbnRGaXJzdChsYW1iZGEsIHBoaSkge1xuICBsYW1iZGEgKj0gcmFkaWFucywgcGhpICo9IHJhZGlhbnM7XG4gIGxhbWJkYTAgPSBsYW1iZGEsIHNpblBoaTAgPSBzaW4ocGhpKSwgY29zUGhpMCA9IGNvcyhwaGkpO1xuICBsZW5ndGhTdHJlYW0ucG9pbnQgPSBsZW5ndGhQb2ludDtcbn1cblxuZnVuY3Rpb24gbGVuZ3RoUG9pbnQobGFtYmRhLCBwaGkpIHtcbiAgbGFtYmRhICo9IHJhZGlhbnMsIHBoaSAqPSByYWRpYW5zO1xuICB2YXIgc2luUGhpID0gc2luKHBoaSksXG4gICAgICBjb3NQaGkgPSBjb3MocGhpKSxcbiAgICAgIGRlbHRhID0gYWJzKGxhbWJkYSAtIGxhbWJkYTApLFxuICAgICAgY29zRGVsdGEgPSBjb3MoZGVsdGEpLFxuICAgICAgc2luRGVsdGEgPSBzaW4oZGVsdGEpLFxuICAgICAgeCA9IGNvc1BoaSAqIHNpbkRlbHRhLFxuICAgICAgeSA9IGNvc1BoaTAgKiBzaW5QaGkgLSBzaW5QaGkwICogY29zUGhpICogY29zRGVsdGEsXG4gICAgICB6ID0gc2luUGhpMCAqIHNpblBoaSArIGNvc1BoaTAgKiBjb3NQaGkgKiBjb3NEZWx0YTtcbiAgbGVuZ3RoU3VtLmFkZChhdGFuMihzcXJ0KHggKiB4ICsgeSAqIHkpLCB6KSk7XG4gIGxhbWJkYTAgPSBsYW1iZGEsIHNpblBoaTAgPSBzaW5QaGksIGNvc1BoaTAgPSBjb3NQaGk7XG59XG5cbmV4cG9ydCBkZWZhdWx0IGZ1bmN0aW9uKG9iamVjdCkge1xuICBsZW5ndGhTdW0gPSBuZXcgQWRkZXIoKTtcbiAgc3RyZWFtKG9iamVjdCwgbGVuZ3RoU3RyZWFtKTtcbiAgcmV0dXJuICtsZW5ndGhTdW07XG59XG4iXSwibWFwcGluZ3MiOiJBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOyIsInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///./node_modules/vega-functions/node_modules/d3-geo/src/length.js\n");

/***/ }),

/***/ "./node_modules/vega-functions/node_modules/d3-geo/src/math.js":
/*!*********************************************************************!*\
  !*** ./node_modules/vega-functions/node_modules/d3-geo/src/math.js ***!
  \*********************************************************************/
/*! exports provided: epsilon, epsilon2, pi, halfPi, quarterPi, tau, degrees, radians, abs, atan, atan2, cos, ceil, exp, floor, hypot, log, pow, sin, sign, sqrt, tan, acos, asin, haversin */
/***/ (function(module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"epsilon\", function() { return epsilon; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"epsilon2\", function() { return epsilon2; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"pi\", function() { return pi; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"halfPi\", function() { return halfPi; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"quarterPi\", function() { return quarterPi; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"tau\", function() { return tau; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"degrees\", function() { return degrees; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"radians\", function() { return radians; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"abs\", function() { return abs; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"atan\", function() { return atan; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"atan2\", function() { return atan2; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"cos\", function() { return cos; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"ceil\", function() { return ceil; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"exp\", function() { return exp; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"floor\", function() { return floor; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"hypot\", function() { return hypot; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"log\", function() { return log; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"pow\", function() { return pow; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"sin\", function() { return sin; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"sign\", function() { return sign; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"sqrt\", function() { return sqrt; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"tan\", function() { return tan; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"acos\", function() { return acos; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"asin\", function() { return asin; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"haversin\", function() { return haversin; });\nvar epsilon = 1e-6;\nvar epsilon2 = 1e-12;\nvar pi = Math.PI;\nvar halfPi = pi / 2;\nvar quarterPi = pi / 4;\nvar tau = pi * 2;\n\nvar degrees = 180 / pi;\nvar radians = pi / 180;\n\nvar abs = Math.abs;\nvar atan = Math.atan;\nvar atan2 = Math.atan2;\nvar cos = Math.cos;\nvar ceil = Math.ceil;\nvar exp = Math.exp;\nvar floor = Math.floor;\nvar hypot = Math.hypot;\nvar log = Math.log;\nvar pow = Math.pow;\nvar sin = Math.sin;\nvar sign = Math.sign || function(x) { return x > 0 ? 1 : x < 0 ? -1 : 0; };\nvar sqrt = Math.sqrt;\nvar tan = Math.tan;\n\nfunction acos(x) {\n  return x > 1 ? 0 : x < -1 ? pi : Math.acos(x);\n}\n\nfunction asin(x) {\n  return x > 1 ? halfPi : x < -1 ? -halfPi : Math.asin(x);\n}\n\nfunction haversin(x) {\n  return (x = sin(x / 2)) * x;\n}\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvdmVnYS1mdW5jdGlvbnMvbm9kZV9tb2R1bGVzL2QzLWdlby9zcmMvbWF0aC5qcy5qcyIsInNvdXJjZXMiOlsid2VicGFjazovLy8uL25vZGVfbW9kdWxlcy92ZWdhLWZ1bmN0aW9ucy9ub2RlX21vZHVsZXMvZDMtZ2VvL3NyYy9tYXRoLmpzPzkwYjUiXSwic291cmNlc0NvbnRlbnQiOlsiZXhwb3J0IHZhciBlcHNpbG9uID0gMWUtNjtcbmV4cG9ydCB2YXIgZXBzaWxvbjIgPSAxZS0xMjtcbmV4cG9ydCB2YXIgcGkgPSBNYXRoLlBJO1xuZXhwb3J0IHZhciBoYWxmUGkgPSBwaSAvIDI7XG5leHBvcnQgdmFyIHF1YXJ0ZXJQaSA9IHBpIC8gNDtcbmV4cG9ydCB2YXIgdGF1ID0gcGkgKiAyO1xuXG5leHBvcnQgdmFyIGRlZ3JlZXMgPSAxODAgLyBwaTtcbmV4cG9ydCB2YXIgcmFkaWFucyA9IHBpIC8gMTgwO1xuXG5leHBvcnQgdmFyIGFicyA9IE1hdGguYWJzO1xuZXhwb3J0IHZhciBhdGFuID0gTWF0aC5hdGFuO1xuZXhwb3J0IHZhciBhdGFuMiA9IE1hdGguYXRhbjI7XG5leHBvcnQgdmFyIGNvcyA9IE1hdGguY29zO1xuZXhwb3J0IHZhciBjZWlsID0gTWF0aC5jZWlsO1xuZXhwb3J0IHZhciBleHAgPSBNYXRoLmV4cDtcbmV4cG9ydCB2YXIgZmxvb3IgPSBNYXRoLmZsb29yO1xuZXhwb3J0IHZhciBoeXBvdCA9IE1hdGguaHlwb3Q7XG5leHBvcnQgdmFyIGxvZyA9IE1hdGgubG9nO1xuZXhwb3J0IHZhciBwb3cgPSBNYXRoLnBvdztcbmV4cG9ydCB2YXIgc2luID0gTWF0aC5zaW47XG5leHBvcnQgdmFyIHNpZ24gPSBNYXRoLnNpZ24gfHwgZnVuY3Rpb24oeCkgeyByZXR1cm4geCA+IDAgPyAxIDogeCA8IDAgPyAtMSA6IDA7IH07XG5leHBvcnQgdmFyIHNxcnQgPSBNYXRoLnNxcnQ7XG5leHBvcnQgdmFyIHRhbiA9IE1hdGgudGFuO1xuXG5leHBvcnQgZnVuY3Rpb24gYWNvcyh4KSB7XG4gIHJldHVybiB4ID4gMSA/IDAgOiB4IDwgLTEgPyBwaSA6IE1hdGguYWNvcyh4KTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGFzaW4oeCkge1xuICByZXR1cm4geCA+IDEgPyBoYWxmUGkgOiB4IDwgLTEgPyAtaGFsZlBpIDogTWF0aC5hc2luKHgpO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gaGF2ZXJzaW4oeCkge1xuICByZXR1cm4gKHggPSBzaW4oeCAvIDIpKSAqIHg7XG59XG4iXSwibWFwcGluZ3MiOiJBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7Iiwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///./node_modules/vega-functions/node_modules/d3-geo/src/math.js\n");

/***/ }),

/***/ "./node_modules/vega-functions/node_modules/d3-geo/src/noop.js":
/*!*********************************************************************!*\
  !*** ./node_modules/vega-functions/node_modules/d3-geo/src/noop.js ***!
  \*********************************************************************/
/*! exports provided: default */
/***/ (function(module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"default\", function() { return noop; });\nfunction noop() {}\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvdmVnYS1mdW5jdGlvbnMvbm9kZV9tb2R1bGVzL2QzLWdlby9zcmMvbm9vcC5qcy5qcyIsInNvdXJjZXMiOlsid2VicGFjazovLy8uL25vZGVfbW9kdWxlcy92ZWdhLWZ1bmN0aW9ucy9ub2RlX21vZHVsZXMvZDMtZ2VvL3NyYy9ub29wLmpzP2I2YmUiXSwic291cmNlc0NvbnRlbnQiOlsiZXhwb3J0IGRlZmF1bHQgZnVuY3Rpb24gbm9vcCgpIHt9XG4iXSwibWFwcGluZ3MiOiJBQUFBO0FBQUE7QUFBQTsiLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///./node_modules/vega-functions/node_modules/d3-geo/src/noop.js\n");

/***/ }),

/***/ "./node_modules/vega-functions/node_modules/d3-geo/src/path/area.js":
/*!**************************************************************************!*\
  !*** ./node_modules/vega-functions/node_modules/d3-geo/src/path/area.js ***!
  \**************************************************************************/
/*! exports provided: default */
/***/ (function(module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var d3_array__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! d3-array */ \"./node_modules/d3-array/src/index.js\");\n/* harmony import */ var _math_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../math.js */ \"./node_modules/vega-functions/node_modules/d3-geo/src/math.js\");\n/* harmony import */ var _noop_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ../noop.js */ \"./node_modules/vega-functions/node_modules/d3-geo/src/noop.js\");\n\n\n\n\nvar areaSum = new d3_array__WEBPACK_IMPORTED_MODULE_0__[\"Adder\"](),\n    areaRingSum = new d3_array__WEBPACK_IMPORTED_MODULE_0__[\"Adder\"](),\n    x00,\n    y00,\n    x0,\n    y0;\n\nvar areaStream = {\n  point: _noop_js__WEBPACK_IMPORTED_MODULE_2__[\"default\"],\n  lineStart: _noop_js__WEBPACK_IMPORTED_MODULE_2__[\"default\"],\n  lineEnd: _noop_js__WEBPACK_IMPORTED_MODULE_2__[\"default\"],\n  polygonStart: function() {\n    areaStream.lineStart = areaRingStart;\n    areaStream.lineEnd = areaRingEnd;\n  },\n  polygonEnd: function() {\n    areaStream.lineStart = areaStream.lineEnd = areaStream.point = _noop_js__WEBPACK_IMPORTED_MODULE_2__[\"default\"];\n    areaSum.add(Object(_math_js__WEBPACK_IMPORTED_MODULE_1__[\"abs\"])(areaRingSum));\n    areaRingSum = new d3_array__WEBPACK_IMPORTED_MODULE_0__[\"Adder\"]();\n  },\n  result: function() {\n    var area = areaSum / 2;\n    areaSum = new d3_array__WEBPACK_IMPORTED_MODULE_0__[\"Adder\"]();\n    return area;\n  }\n};\n\nfunction areaRingStart() {\n  areaStream.point = areaPointFirst;\n}\n\nfunction areaPointFirst(x, y) {\n  areaStream.point = areaPoint;\n  x00 = x0 = x, y00 = y0 = y;\n}\n\nfunction areaPoint(x, y) {\n  areaRingSum.add(y0 * x - x0 * y);\n  x0 = x, y0 = y;\n}\n\nfunction areaRingEnd() {\n  areaPoint(x00, y00);\n}\n\n/* harmony default export */ __webpack_exports__[\"default\"] = (areaStream);\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvdmVnYS1mdW5jdGlvbnMvbm9kZV9tb2R1bGVzL2QzLWdlby9zcmMvcGF0aC9hcmVhLmpzLmpzIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL3ZlZ2EtZnVuY3Rpb25zL25vZGVfbW9kdWxlcy9kMy1nZW8vc3JjL3BhdGgvYXJlYS5qcz8xZTVhIl0sInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7QWRkZXJ9IGZyb20gXCJkMy1hcnJheVwiO1xuaW1wb3J0IHthYnN9IGZyb20gXCIuLi9tYXRoLmpzXCI7XG5pbXBvcnQgbm9vcCBmcm9tIFwiLi4vbm9vcC5qc1wiO1xuXG52YXIgYXJlYVN1bSA9IG5ldyBBZGRlcigpLFxuICAgIGFyZWFSaW5nU3VtID0gbmV3IEFkZGVyKCksXG4gICAgeDAwLFxuICAgIHkwMCxcbiAgICB4MCxcbiAgICB5MDtcblxudmFyIGFyZWFTdHJlYW0gPSB7XG4gIHBvaW50OiBub29wLFxuICBsaW5lU3RhcnQ6IG5vb3AsXG4gIGxpbmVFbmQ6IG5vb3AsXG4gIHBvbHlnb25TdGFydDogZnVuY3Rpb24oKSB7XG4gICAgYXJlYVN0cmVhbS5saW5lU3RhcnQgPSBhcmVhUmluZ1N0YXJ0O1xuICAgIGFyZWFTdHJlYW0ubGluZUVuZCA9IGFyZWFSaW5nRW5kO1xuICB9LFxuICBwb2x5Z29uRW5kOiBmdW5jdGlvbigpIHtcbiAgICBhcmVhU3RyZWFtLmxpbmVTdGFydCA9IGFyZWFTdHJlYW0ubGluZUVuZCA9IGFyZWFTdHJlYW0ucG9pbnQgPSBub29wO1xuICAgIGFyZWFTdW0uYWRkKGFicyhhcmVhUmluZ1N1bSkpO1xuICAgIGFyZWFSaW5nU3VtID0gbmV3IEFkZGVyKCk7XG4gIH0sXG4gIHJlc3VsdDogZnVuY3Rpb24oKSB7XG4gICAgdmFyIGFyZWEgPSBhcmVhU3VtIC8gMjtcbiAgICBhcmVhU3VtID0gbmV3IEFkZGVyKCk7XG4gICAgcmV0dXJuIGFyZWE7XG4gIH1cbn07XG5cbmZ1bmN0aW9uIGFyZWFSaW5nU3RhcnQoKSB7XG4gIGFyZWFTdHJlYW0ucG9pbnQgPSBhcmVhUG9pbnRGaXJzdDtcbn1cblxuZnVuY3Rpb24gYXJlYVBvaW50Rmlyc3QoeCwgeSkge1xuICBhcmVhU3RyZWFtLnBvaW50ID0gYXJlYVBvaW50O1xuICB4MDAgPSB4MCA9IHgsIHkwMCA9IHkwID0geTtcbn1cblxuZnVuY3Rpb24gYXJlYVBvaW50KHgsIHkpIHtcbiAgYXJlYVJpbmdTdW0uYWRkKHkwICogeCAtIHgwICogeSk7XG4gIHgwID0geCwgeTAgPSB5O1xufVxuXG5mdW5jdGlvbiBhcmVhUmluZ0VuZCgpIHtcbiAgYXJlYVBvaW50KHgwMCwgeTAwKTtcbn1cblxuZXhwb3J0IGRlZmF1bHQgYXJlYVN0cmVhbTtcbiJdLCJtYXBwaW5ncyI6IkFBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOyIsInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///./node_modules/vega-functions/node_modules/d3-geo/src/path/area.js\n");

/***/ }),

/***/ "./node_modules/vega-functions/node_modules/d3-geo/src/path/bounds.js":
/*!****************************************************************************!*\
  !*** ./node_modules/vega-functions/node_modules/d3-geo/src/path/bounds.js ***!
  \****************************************************************************/
/*! exports provided: default */
/***/ (function(module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _noop_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../noop.js */ \"./node_modules/vega-functions/node_modules/d3-geo/src/noop.js\");\n\n\nvar x0 = Infinity,\n    y0 = x0,\n    x1 = -x0,\n    y1 = x1;\n\nvar boundsStream = {\n  point: boundsPoint,\n  lineStart: _noop_js__WEBPACK_IMPORTED_MODULE_0__[\"default\"],\n  lineEnd: _noop_js__WEBPACK_IMPORTED_MODULE_0__[\"default\"],\n  polygonStart: _noop_js__WEBPACK_IMPORTED_MODULE_0__[\"default\"],\n  polygonEnd: _noop_js__WEBPACK_IMPORTED_MODULE_0__[\"default\"],\n  result: function() {\n    var bounds = [[x0, y0], [x1, y1]];\n    x1 = y1 = -(y0 = x0 = Infinity);\n    return bounds;\n  }\n};\n\nfunction boundsPoint(x, y) {\n  if (x < x0) x0 = x;\n  if (x > x1) x1 = x;\n  if (y < y0) y0 = y;\n  if (y > y1) y1 = y;\n}\n\n/* harmony default export */ __webpack_exports__[\"default\"] = (boundsStream);\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvdmVnYS1mdW5jdGlvbnMvbm9kZV9tb2R1bGVzL2QzLWdlby9zcmMvcGF0aC9ib3VuZHMuanMuanMiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvdmVnYS1mdW5jdGlvbnMvbm9kZV9tb2R1bGVzL2QzLWdlby9zcmMvcGF0aC9ib3VuZHMuanM/OTE2NCJdLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgbm9vcCBmcm9tIFwiLi4vbm9vcC5qc1wiO1xuXG52YXIgeDAgPSBJbmZpbml0eSxcbiAgICB5MCA9IHgwLFxuICAgIHgxID0gLXgwLFxuICAgIHkxID0geDE7XG5cbnZhciBib3VuZHNTdHJlYW0gPSB7XG4gIHBvaW50OiBib3VuZHNQb2ludCxcbiAgbGluZVN0YXJ0OiBub29wLFxuICBsaW5lRW5kOiBub29wLFxuICBwb2x5Z29uU3RhcnQ6IG5vb3AsXG4gIHBvbHlnb25FbmQ6IG5vb3AsXG4gIHJlc3VsdDogZnVuY3Rpb24oKSB7XG4gICAgdmFyIGJvdW5kcyA9IFtbeDAsIHkwXSwgW3gxLCB5MV1dO1xuICAgIHgxID0geTEgPSAtKHkwID0geDAgPSBJbmZpbml0eSk7XG4gICAgcmV0dXJuIGJvdW5kcztcbiAgfVxufTtcblxuZnVuY3Rpb24gYm91bmRzUG9pbnQoeCwgeSkge1xuICBpZiAoeCA8IHgwKSB4MCA9IHg7XG4gIGlmICh4ID4geDEpIHgxID0geDtcbiAgaWYgKHkgPCB5MCkgeTAgPSB5O1xuICBpZiAoeSA+IHkxKSB5MSA9IHk7XG59XG5cbmV4cG9ydCBkZWZhdWx0IGJvdW5kc1N0cmVhbTtcbiJdLCJtYXBwaW5ncyI6IkFBQUE7QUFBQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOyIsInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///./node_modules/vega-functions/node_modules/d3-geo/src/path/bounds.js\n");

/***/ }),

/***/ "./node_modules/vega-functions/node_modules/d3-geo/src/path/centroid.js":
/*!******************************************************************************!*\
  !*** ./node_modules/vega-functions/node_modules/d3-geo/src/path/centroid.js ***!
  \******************************************************************************/
/*! exports provided: default */
/***/ (function(module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _math_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../math.js */ \"./node_modules/vega-functions/node_modules/d3-geo/src/math.js\");\n\n\n// TODO Enforce positive area for exterior, negative area for interior?\n\nvar X0 = 0,\n    Y0 = 0,\n    Z0 = 0,\n    X1 = 0,\n    Y1 = 0,\n    Z1 = 0,\n    X2 = 0,\n    Y2 = 0,\n    Z2 = 0,\n    x00,\n    y00,\n    x0,\n    y0;\n\nvar centroidStream = {\n  point: centroidPoint,\n  lineStart: centroidLineStart,\n  lineEnd: centroidLineEnd,\n  polygonStart: function() {\n    centroidStream.lineStart = centroidRingStart;\n    centroidStream.lineEnd = centroidRingEnd;\n  },\n  polygonEnd: function() {\n    centroidStream.point = centroidPoint;\n    centroidStream.lineStart = centroidLineStart;\n    centroidStream.lineEnd = centroidLineEnd;\n  },\n  result: function() {\n    var centroid = Z2 ? [X2 / Z2, Y2 / Z2]\n        : Z1 ? [X1 / Z1, Y1 / Z1]\n        : Z0 ? [X0 / Z0, Y0 / Z0]\n        : [NaN, NaN];\n    X0 = Y0 = Z0 =\n    X1 = Y1 = Z1 =\n    X2 = Y2 = Z2 = 0;\n    return centroid;\n  }\n};\n\nfunction centroidPoint(x, y) {\n  X0 += x;\n  Y0 += y;\n  ++Z0;\n}\n\nfunction centroidLineStart() {\n  centroidStream.point = centroidPointFirstLine;\n}\n\nfunction centroidPointFirstLine(x, y) {\n  centroidStream.point = centroidPointLine;\n  centroidPoint(x0 = x, y0 = y);\n}\n\nfunction centroidPointLine(x, y) {\n  var dx = x - x0, dy = y - y0, z = Object(_math_js__WEBPACK_IMPORTED_MODULE_0__[\"sqrt\"])(dx * dx + dy * dy);\n  X1 += z * (x0 + x) / 2;\n  Y1 += z * (y0 + y) / 2;\n  Z1 += z;\n  centroidPoint(x0 = x, y0 = y);\n}\n\nfunction centroidLineEnd() {\n  centroidStream.point = centroidPoint;\n}\n\nfunction centroidRingStart() {\n  centroidStream.point = centroidPointFirstRing;\n}\n\nfunction centroidRingEnd() {\n  centroidPointRing(x00, y00);\n}\n\nfunction centroidPointFirstRing(x, y) {\n  centroidStream.point = centroidPointRing;\n  centroidPoint(x00 = x0 = x, y00 = y0 = y);\n}\n\nfunction centroidPointRing(x, y) {\n  var dx = x - x0,\n      dy = y - y0,\n      z = Object(_math_js__WEBPACK_IMPORTED_MODULE_0__[\"sqrt\"])(dx * dx + dy * dy);\n\n  X1 += z * (x0 + x) / 2;\n  Y1 += z * (y0 + y) / 2;\n  Z1 += z;\n\n  z = y0 * x - x0 * y;\n  X2 += z * (x0 + x);\n  Y2 += z * (y0 + y);\n  Z2 += z * 3;\n  centroidPoint(x0 = x, y0 = y);\n}\n\n/* harmony default export */ __webpack_exports__[\"default\"] = (centroidStream);\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvdmVnYS1mdW5jdGlvbnMvbm9kZV9tb2R1bGVzL2QzLWdlby9zcmMvcGF0aC9jZW50cm9pZC5qcy5qcyIsInNvdXJjZXMiOlsid2VicGFjazovLy8uL25vZGVfbW9kdWxlcy92ZWdhLWZ1bmN0aW9ucy9ub2RlX21vZHVsZXMvZDMtZ2VvL3NyYy9wYXRoL2NlbnRyb2lkLmpzP2QxMjAiXSwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtzcXJ0fSBmcm9tIFwiLi4vbWF0aC5qc1wiO1xuXG4vLyBUT0RPIEVuZm9yY2UgcG9zaXRpdmUgYXJlYSBmb3IgZXh0ZXJpb3IsIG5lZ2F0aXZlIGFyZWEgZm9yIGludGVyaW9yP1xuXG52YXIgWDAgPSAwLFxuICAgIFkwID0gMCxcbiAgICBaMCA9IDAsXG4gICAgWDEgPSAwLFxuICAgIFkxID0gMCxcbiAgICBaMSA9IDAsXG4gICAgWDIgPSAwLFxuICAgIFkyID0gMCxcbiAgICBaMiA9IDAsXG4gICAgeDAwLFxuICAgIHkwMCxcbiAgICB4MCxcbiAgICB5MDtcblxudmFyIGNlbnRyb2lkU3RyZWFtID0ge1xuICBwb2ludDogY2VudHJvaWRQb2ludCxcbiAgbGluZVN0YXJ0OiBjZW50cm9pZExpbmVTdGFydCxcbiAgbGluZUVuZDogY2VudHJvaWRMaW5lRW5kLFxuICBwb2x5Z29uU3RhcnQ6IGZ1bmN0aW9uKCkge1xuICAgIGNlbnRyb2lkU3RyZWFtLmxpbmVTdGFydCA9IGNlbnRyb2lkUmluZ1N0YXJ0O1xuICAgIGNlbnRyb2lkU3RyZWFtLmxpbmVFbmQgPSBjZW50cm9pZFJpbmdFbmQ7XG4gIH0sXG4gIHBvbHlnb25FbmQ6IGZ1bmN0aW9uKCkge1xuICAgIGNlbnRyb2lkU3RyZWFtLnBvaW50ID0gY2VudHJvaWRQb2ludDtcbiAgICBjZW50cm9pZFN0cmVhbS5saW5lU3RhcnQgPSBjZW50cm9pZExpbmVTdGFydDtcbiAgICBjZW50cm9pZFN0cmVhbS5saW5lRW5kID0gY2VudHJvaWRMaW5lRW5kO1xuICB9LFxuICByZXN1bHQ6IGZ1bmN0aW9uKCkge1xuICAgIHZhciBjZW50cm9pZCA9IFoyID8gW1gyIC8gWjIsIFkyIC8gWjJdXG4gICAgICAgIDogWjEgPyBbWDEgLyBaMSwgWTEgLyBaMV1cbiAgICAgICAgOiBaMCA/IFtYMCAvIFowLCBZMCAvIFowXVxuICAgICAgICA6IFtOYU4sIE5hTl07XG4gICAgWDAgPSBZMCA9IFowID1cbiAgICBYMSA9IFkxID0gWjEgPVxuICAgIFgyID0gWTIgPSBaMiA9IDA7XG4gICAgcmV0dXJuIGNlbnRyb2lkO1xuICB9XG59O1xuXG5mdW5jdGlvbiBjZW50cm9pZFBvaW50KHgsIHkpIHtcbiAgWDAgKz0geDtcbiAgWTAgKz0geTtcbiAgKytaMDtcbn1cblxuZnVuY3Rpb24gY2VudHJvaWRMaW5lU3RhcnQoKSB7XG4gIGNlbnRyb2lkU3RyZWFtLnBvaW50ID0gY2VudHJvaWRQb2ludEZpcnN0TGluZTtcbn1cblxuZnVuY3Rpb24gY2VudHJvaWRQb2ludEZpcnN0TGluZSh4LCB5KSB7XG4gIGNlbnRyb2lkU3RyZWFtLnBvaW50ID0gY2VudHJvaWRQb2ludExpbmU7XG4gIGNlbnRyb2lkUG9pbnQoeDAgPSB4LCB5MCA9IHkpO1xufVxuXG5mdW5jdGlvbiBjZW50cm9pZFBvaW50TGluZSh4LCB5KSB7XG4gIHZhciBkeCA9IHggLSB4MCwgZHkgPSB5IC0geTAsIHogPSBzcXJ0KGR4ICogZHggKyBkeSAqIGR5KTtcbiAgWDEgKz0geiAqICh4MCArIHgpIC8gMjtcbiAgWTEgKz0geiAqICh5MCArIHkpIC8gMjtcbiAgWjEgKz0gejtcbiAgY2VudHJvaWRQb2ludCh4MCA9IHgsIHkwID0geSk7XG59XG5cbmZ1bmN0aW9uIGNlbnRyb2lkTGluZUVuZCgpIHtcbiAgY2VudHJvaWRTdHJlYW0ucG9pbnQgPSBjZW50cm9pZFBvaW50O1xufVxuXG5mdW5jdGlvbiBjZW50cm9pZFJpbmdTdGFydCgpIHtcbiAgY2VudHJvaWRTdHJlYW0ucG9pbnQgPSBjZW50cm9pZFBvaW50Rmlyc3RSaW5nO1xufVxuXG5mdW5jdGlvbiBjZW50cm9pZFJpbmdFbmQoKSB7XG4gIGNlbnRyb2lkUG9pbnRSaW5nKHgwMCwgeTAwKTtcbn1cblxuZnVuY3Rpb24gY2VudHJvaWRQb2ludEZpcnN0UmluZyh4LCB5KSB7XG4gIGNlbnRyb2lkU3RyZWFtLnBvaW50ID0gY2VudHJvaWRQb2ludFJpbmc7XG4gIGNlbnRyb2lkUG9pbnQoeDAwID0geDAgPSB4LCB5MDAgPSB5MCA9IHkpO1xufVxuXG5mdW5jdGlvbiBjZW50cm9pZFBvaW50UmluZyh4LCB5KSB7XG4gIHZhciBkeCA9IHggLSB4MCxcbiAgICAgIGR5ID0geSAtIHkwLFxuICAgICAgeiA9IHNxcnQoZHggKiBkeCArIGR5ICogZHkpO1xuXG4gIFgxICs9IHogKiAoeDAgKyB4KSAvIDI7XG4gIFkxICs9IHogKiAoeTAgKyB5KSAvIDI7XG4gIFoxICs9IHo7XG5cbiAgeiA9IHkwICogeCAtIHgwICogeTtcbiAgWDIgKz0geiAqICh4MCArIHgpO1xuICBZMiArPSB6ICogKHkwICsgeSk7XG4gIFoyICs9IHogKiAzO1xuICBjZW50cm9pZFBvaW50KHgwID0geCwgeTAgPSB5KTtcbn1cblxuZXhwb3J0IGRlZmF1bHQgY2VudHJvaWRTdHJlYW07XG4iXSwibWFwcGluZ3MiOiJBQUFBO0FBQUE7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTsiLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///./node_modules/vega-functions/node_modules/d3-geo/src/path/centroid.js\n");

/***/ }),

/***/ "./node_modules/vega-functions/node_modules/d3-geo/src/path/context.js":
/*!*****************************************************************************!*\
  !*** ./node_modules/vega-functions/node_modules/d3-geo/src/path/context.js ***!
  \*****************************************************************************/
/*! exports provided: default */
/***/ (function(module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"default\", function() { return PathContext; });\n/* harmony import */ var _math_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../math.js */ \"./node_modules/vega-functions/node_modules/d3-geo/src/math.js\");\n/* harmony import */ var _noop_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../noop.js */ \"./node_modules/vega-functions/node_modules/d3-geo/src/noop.js\");\n\n\n\nfunction PathContext(context) {\n  this._context = context;\n}\n\nPathContext.prototype = {\n  _radius: 4.5,\n  pointRadius: function(_) {\n    return this._radius = _, this;\n  },\n  polygonStart: function() {\n    this._line = 0;\n  },\n  polygonEnd: function() {\n    this._line = NaN;\n  },\n  lineStart: function() {\n    this._point = 0;\n  },\n  lineEnd: function() {\n    if (this._line === 0) this._context.closePath();\n    this._point = NaN;\n  },\n  point: function(x, y) {\n    switch (this._point) {\n      case 0: {\n        this._context.moveTo(x, y);\n        this._point = 1;\n        break;\n      }\n      case 1: {\n        this._context.lineTo(x, y);\n        break;\n      }\n      default: {\n        this._context.moveTo(x + this._radius, y);\n        this._context.arc(x, y, this._radius, 0, _math_js__WEBPACK_IMPORTED_MODULE_0__[\"tau\"]);\n        break;\n      }\n    }\n  },\n  result: _noop_js__WEBPACK_IMPORTED_MODULE_1__[\"default\"]\n};\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvdmVnYS1mdW5jdGlvbnMvbm9kZV9tb2R1bGVzL2QzLWdlby9zcmMvcGF0aC9jb250ZXh0LmpzLmpzIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL3ZlZ2EtZnVuY3Rpb25zL25vZGVfbW9kdWxlcy9kMy1nZW8vc3JjL3BhdGgvY29udGV4dC5qcz84M2JlIl0sInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7dGF1fSBmcm9tIFwiLi4vbWF0aC5qc1wiO1xuaW1wb3J0IG5vb3AgZnJvbSBcIi4uL25vb3AuanNcIjtcblxuZXhwb3J0IGRlZmF1bHQgZnVuY3Rpb24gUGF0aENvbnRleHQoY29udGV4dCkge1xuICB0aGlzLl9jb250ZXh0ID0gY29udGV4dDtcbn1cblxuUGF0aENvbnRleHQucHJvdG90eXBlID0ge1xuICBfcmFkaXVzOiA0LjUsXG4gIHBvaW50UmFkaXVzOiBmdW5jdGlvbihfKSB7XG4gICAgcmV0dXJuIHRoaXMuX3JhZGl1cyA9IF8sIHRoaXM7XG4gIH0sXG4gIHBvbHlnb25TdGFydDogZnVuY3Rpb24oKSB7XG4gICAgdGhpcy5fbGluZSA9IDA7XG4gIH0sXG4gIHBvbHlnb25FbmQ6IGZ1bmN0aW9uKCkge1xuICAgIHRoaXMuX2xpbmUgPSBOYU47XG4gIH0sXG4gIGxpbmVTdGFydDogZnVuY3Rpb24oKSB7XG4gICAgdGhpcy5fcG9pbnQgPSAwO1xuICB9LFxuICBsaW5lRW5kOiBmdW5jdGlvbigpIHtcbiAgICBpZiAodGhpcy5fbGluZSA9PT0gMCkgdGhpcy5fY29udGV4dC5jbG9zZVBhdGgoKTtcbiAgICB0aGlzLl9wb2ludCA9IE5hTjtcbiAgfSxcbiAgcG9pbnQ6IGZ1bmN0aW9uKHgsIHkpIHtcbiAgICBzd2l0Y2ggKHRoaXMuX3BvaW50KSB7XG4gICAgICBjYXNlIDA6IHtcbiAgICAgICAgdGhpcy5fY29udGV4dC5tb3ZlVG8oeCwgeSk7XG4gICAgICAgIHRoaXMuX3BvaW50ID0gMTtcbiAgICAgICAgYnJlYWs7XG4gICAgICB9XG4gICAgICBjYXNlIDE6IHtcbiAgICAgICAgdGhpcy5fY29udGV4dC5saW5lVG8oeCwgeSk7XG4gICAgICAgIGJyZWFrO1xuICAgICAgfVxuICAgICAgZGVmYXVsdDoge1xuICAgICAgICB0aGlzLl9jb250ZXh0Lm1vdmVUbyh4ICsgdGhpcy5fcmFkaXVzLCB5KTtcbiAgICAgICAgdGhpcy5fY29udGV4dC5hcmMoeCwgeSwgdGhpcy5fcmFkaXVzLCAwLCB0YXUpO1xuICAgICAgICBicmVhaztcbiAgICAgIH1cbiAgICB9XG4gIH0sXG4gIHJlc3VsdDogbm9vcFxufTtcbiJdLCJtYXBwaW5ncyI6IkFBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7Iiwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///./node_modules/vega-functions/node_modules/d3-geo/src/path/context.js\n");

/***/ }),

/***/ "./node_modules/vega-functions/node_modules/d3-geo/src/path/index.js":
/*!***************************************************************************!*\
  !*** ./node_modules/vega-functions/node_modules/d3-geo/src/path/index.js ***!
  \***************************************************************************/
/*! exports provided: default */
/***/ (function(module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _identity_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../identity.js */ \"./node_modules/vega-functions/node_modules/d3-geo/src/identity.js\");\n/* harmony import */ var _stream_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../stream.js */ \"./node_modules/vega-functions/node_modules/d3-geo/src/stream.js\");\n/* harmony import */ var _area_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./area.js */ \"./node_modules/vega-functions/node_modules/d3-geo/src/path/area.js\");\n/* harmony import */ var _bounds_js__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ./bounds.js */ \"./node_modules/vega-functions/node_modules/d3-geo/src/path/bounds.js\");\n/* harmony import */ var _centroid_js__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ./centroid.js */ \"./node_modules/vega-functions/node_modules/d3-geo/src/path/centroid.js\");\n/* harmony import */ var _context_js__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! ./context.js */ \"./node_modules/vega-functions/node_modules/d3-geo/src/path/context.js\");\n/* harmony import */ var _measure_js__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! ./measure.js */ \"./node_modules/vega-functions/node_modules/d3-geo/src/path/measure.js\");\n/* harmony import */ var _string_js__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! ./string.js */ \"./node_modules/vega-functions/node_modules/d3-geo/src/path/string.js\");\n\n\n\n\n\n\n\n\n\n/* harmony default export */ __webpack_exports__[\"default\"] = (function(projection, context) {\n  var pointRadius = 4.5,\n      projectionStream,\n      contextStream;\n\n  function path(object) {\n    if (object) {\n      if (typeof pointRadius === \"function\") contextStream.pointRadius(+pointRadius.apply(this, arguments));\n      Object(_stream_js__WEBPACK_IMPORTED_MODULE_1__[\"default\"])(object, projectionStream(contextStream));\n    }\n    return contextStream.result();\n  }\n\n  path.area = function(object) {\n    Object(_stream_js__WEBPACK_IMPORTED_MODULE_1__[\"default\"])(object, projectionStream(_area_js__WEBPACK_IMPORTED_MODULE_2__[\"default\"]));\n    return _area_js__WEBPACK_IMPORTED_MODULE_2__[\"default\"].result();\n  };\n\n  path.measure = function(object) {\n    Object(_stream_js__WEBPACK_IMPORTED_MODULE_1__[\"default\"])(object, projectionStream(_measure_js__WEBPACK_IMPORTED_MODULE_6__[\"default\"]));\n    return _measure_js__WEBPACK_IMPORTED_MODULE_6__[\"default\"].result();\n  };\n\n  path.bounds = function(object) {\n    Object(_stream_js__WEBPACK_IMPORTED_MODULE_1__[\"default\"])(object, projectionStream(_bounds_js__WEBPACK_IMPORTED_MODULE_3__[\"default\"]));\n    return _bounds_js__WEBPACK_IMPORTED_MODULE_3__[\"default\"].result();\n  };\n\n  path.centroid = function(object) {\n    Object(_stream_js__WEBPACK_IMPORTED_MODULE_1__[\"default\"])(object, projectionStream(_centroid_js__WEBPACK_IMPORTED_MODULE_4__[\"default\"]));\n    return _centroid_js__WEBPACK_IMPORTED_MODULE_4__[\"default\"].result();\n  };\n\n  path.projection = function(_) {\n    return arguments.length ? (projectionStream = _ == null ? (projection = null, _identity_js__WEBPACK_IMPORTED_MODULE_0__[\"default\"]) : (projection = _).stream, path) : projection;\n  };\n\n  path.context = function(_) {\n    if (!arguments.length) return context;\n    contextStream = _ == null ? (context = null, new _string_js__WEBPACK_IMPORTED_MODULE_7__[\"default\"]) : new _context_js__WEBPACK_IMPORTED_MODULE_5__[\"default\"](context = _);\n    if (typeof pointRadius !== \"function\") contextStream.pointRadius(pointRadius);\n    return path;\n  };\n\n  path.pointRadius = function(_) {\n    if (!arguments.length) return pointRadius;\n    pointRadius = typeof _ === \"function\" ? _ : (contextStream.pointRadius(+_), +_);\n    return path;\n  };\n\n  return path.projection(projection).context(context);\n});\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvdmVnYS1mdW5jdGlvbnMvbm9kZV9tb2R1bGVzL2QzLWdlby9zcmMvcGF0aC9pbmRleC5qcy5qcyIsInNvdXJjZXMiOlsid2VicGFjazovLy8uL25vZGVfbW9kdWxlcy92ZWdhLWZ1bmN0aW9ucy9ub2RlX21vZHVsZXMvZDMtZ2VvL3NyYy9wYXRoL2luZGV4LmpzPzY3ZTIiXSwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IGlkZW50aXR5IGZyb20gXCIuLi9pZGVudGl0eS5qc1wiO1xuaW1wb3J0IHN0cmVhbSBmcm9tIFwiLi4vc3RyZWFtLmpzXCI7XG5pbXBvcnQgcGF0aEFyZWEgZnJvbSBcIi4vYXJlYS5qc1wiO1xuaW1wb3J0IHBhdGhCb3VuZHMgZnJvbSBcIi4vYm91bmRzLmpzXCI7XG5pbXBvcnQgcGF0aENlbnRyb2lkIGZyb20gXCIuL2NlbnRyb2lkLmpzXCI7XG5pbXBvcnQgUGF0aENvbnRleHQgZnJvbSBcIi4vY29udGV4dC5qc1wiO1xuaW1wb3J0IHBhdGhNZWFzdXJlIGZyb20gXCIuL21lYXN1cmUuanNcIjtcbmltcG9ydCBQYXRoU3RyaW5nIGZyb20gXCIuL3N0cmluZy5qc1wiO1xuXG5leHBvcnQgZGVmYXVsdCBmdW5jdGlvbihwcm9qZWN0aW9uLCBjb250ZXh0KSB7XG4gIHZhciBwb2ludFJhZGl1cyA9IDQuNSxcbiAgICAgIHByb2plY3Rpb25TdHJlYW0sXG4gICAgICBjb250ZXh0U3RyZWFtO1xuXG4gIGZ1bmN0aW9uIHBhdGgob2JqZWN0KSB7XG4gICAgaWYgKG9iamVjdCkge1xuICAgICAgaWYgKHR5cGVvZiBwb2ludFJhZGl1cyA9PT0gXCJmdW5jdGlvblwiKSBjb250ZXh0U3RyZWFtLnBvaW50UmFkaXVzKCtwb2ludFJhZGl1cy5hcHBseSh0aGlzLCBhcmd1bWVudHMpKTtcbiAgICAgIHN0cmVhbShvYmplY3QsIHByb2plY3Rpb25TdHJlYW0oY29udGV4dFN0cmVhbSkpO1xuICAgIH1cbiAgICByZXR1cm4gY29udGV4dFN0cmVhbS5yZXN1bHQoKTtcbiAgfVxuXG4gIHBhdGguYXJlYSA9IGZ1bmN0aW9uKG9iamVjdCkge1xuICAgIHN0cmVhbShvYmplY3QsIHByb2plY3Rpb25TdHJlYW0ocGF0aEFyZWEpKTtcbiAgICByZXR1cm4gcGF0aEFyZWEucmVzdWx0KCk7XG4gIH07XG5cbiAgcGF0aC5tZWFzdXJlID0gZnVuY3Rpb24ob2JqZWN0KSB7XG4gICAgc3RyZWFtKG9iamVjdCwgcHJvamVjdGlvblN0cmVhbShwYXRoTWVhc3VyZSkpO1xuICAgIHJldHVybiBwYXRoTWVhc3VyZS5yZXN1bHQoKTtcbiAgfTtcblxuICBwYXRoLmJvdW5kcyA9IGZ1bmN0aW9uKG9iamVjdCkge1xuICAgIHN0cmVhbShvYmplY3QsIHByb2plY3Rpb25TdHJlYW0ocGF0aEJvdW5kcykpO1xuICAgIHJldHVybiBwYXRoQm91bmRzLnJlc3VsdCgpO1xuICB9O1xuXG4gIHBhdGguY2VudHJvaWQgPSBmdW5jdGlvbihvYmplY3QpIHtcbiAgICBzdHJlYW0ob2JqZWN0LCBwcm9qZWN0aW9uU3RyZWFtKHBhdGhDZW50cm9pZCkpO1xuICAgIHJldHVybiBwYXRoQ2VudHJvaWQucmVzdWx0KCk7XG4gIH07XG5cbiAgcGF0aC5wcm9qZWN0aW9uID0gZnVuY3Rpb24oXykge1xuICAgIHJldHVybiBhcmd1bWVudHMubGVuZ3RoID8gKHByb2plY3Rpb25TdHJlYW0gPSBfID09IG51bGwgPyAocHJvamVjdGlvbiA9IG51bGwsIGlkZW50aXR5KSA6IChwcm9qZWN0aW9uID0gXykuc3RyZWFtLCBwYXRoKSA6IHByb2plY3Rpb247XG4gIH07XG5cbiAgcGF0aC5jb250ZXh0ID0gZnVuY3Rpb24oXykge1xuICAgIGlmICghYXJndW1lbnRzLmxlbmd0aCkgcmV0dXJuIGNvbnRleHQ7XG4gICAgY29udGV4dFN0cmVhbSA9IF8gPT0gbnVsbCA/IChjb250ZXh0ID0gbnVsbCwgbmV3IFBhdGhTdHJpbmcpIDogbmV3IFBhdGhDb250ZXh0KGNvbnRleHQgPSBfKTtcbiAgICBpZiAodHlwZW9mIHBvaW50UmFkaXVzICE9PSBcImZ1bmN0aW9uXCIpIGNvbnRleHRTdHJlYW0ucG9pbnRSYWRpdXMocG9pbnRSYWRpdXMpO1xuICAgIHJldHVybiBwYXRoO1xuICB9O1xuXG4gIHBhdGgucG9pbnRSYWRpdXMgPSBmdW5jdGlvbihfKSB7XG4gICAgaWYgKCFhcmd1bWVudHMubGVuZ3RoKSByZXR1cm4gcG9pbnRSYWRpdXM7XG4gICAgcG9pbnRSYWRpdXMgPSB0eXBlb2YgXyA9PT0gXCJmdW5jdGlvblwiID8gXyA6IChjb250ZXh0U3RyZWFtLnBvaW50UmFkaXVzKCtfKSwgK18pO1xuICAgIHJldHVybiBwYXRoO1xuICB9O1xuXG4gIHJldHVybiBwYXRoLnByb2plY3Rpb24ocHJvamVjdGlvbikuY29udGV4dChjb250ZXh0KTtcbn1cbiJdLCJtYXBwaW5ncyI6IkFBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7Iiwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///./node_modules/vega-functions/node_modules/d3-geo/src/path/index.js\n");

/***/ }),

/***/ "./node_modules/vega-functions/node_modules/d3-geo/src/path/measure.js":
/*!*****************************************************************************!*\
  !*** ./node_modules/vega-functions/node_modules/d3-geo/src/path/measure.js ***!
  \*****************************************************************************/
/*! exports provided: default */
/***/ (function(module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var d3_array__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! d3-array */ \"./node_modules/d3-array/src/index.js\");\n/* harmony import */ var _math_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../math.js */ \"./node_modules/vega-functions/node_modules/d3-geo/src/math.js\");\n/* harmony import */ var _noop_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ../noop.js */ \"./node_modules/vega-functions/node_modules/d3-geo/src/noop.js\");\n\n\n\n\nvar lengthSum = new d3_array__WEBPACK_IMPORTED_MODULE_0__[\"Adder\"](),\n    lengthRing,\n    x00,\n    y00,\n    x0,\n    y0;\n\nvar lengthStream = {\n  point: _noop_js__WEBPACK_IMPORTED_MODULE_2__[\"default\"],\n  lineStart: function() {\n    lengthStream.point = lengthPointFirst;\n  },\n  lineEnd: function() {\n    if (lengthRing) lengthPoint(x00, y00);\n    lengthStream.point = _noop_js__WEBPACK_IMPORTED_MODULE_2__[\"default\"];\n  },\n  polygonStart: function() {\n    lengthRing = true;\n  },\n  polygonEnd: function() {\n    lengthRing = null;\n  },\n  result: function() {\n    var length = +lengthSum;\n    lengthSum = new d3_array__WEBPACK_IMPORTED_MODULE_0__[\"Adder\"]();\n    return length;\n  }\n};\n\nfunction lengthPointFirst(x, y) {\n  lengthStream.point = lengthPoint;\n  x00 = x0 = x, y00 = y0 = y;\n}\n\nfunction lengthPoint(x, y) {\n  x0 -= x, y0 -= y;\n  lengthSum.add(Object(_math_js__WEBPACK_IMPORTED_MODULE_1__[\"sqrt\"])(x0 * x0 + y0 * y0));\n  x0 = x, y0 = y;\n}\n\n/* harmony default export */ __webpack_exports__[\"default\"] = (lengthStream);\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvdmVnYS1mdW5jdGlvbnMvbm9kZV9tb2R1bGVzL2QzLWdlby9zcmMvcGF0aC9tZWFzdXJlLmpzLmpzIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL3ZlZ2EtZnVuY3Rpb25zL25vZGVfbW9kdWxlcy9kMy1nZW8vc3JjL3BhdGgvbWVhc3VyZS5qcz80Zjk0Il0sInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7QWRkZXJ9IGZyb20gXCJkMy1hcnJheVwiO1xuaW1wb3J0IHtzcXJ0fSBmcm9tIFwiLi4vbWF0aC5qc1wiO1xuaW1wb3J0IG5vb3AgZnJvbSBcIi4uL25vb3AuanNcIjtcblxudmFyIGxlbmd0aFN1bSA9IG5ldyBBZGRlcigpLFxuICAgIGxlbmd0aFJpbmcsXG4gICAgeDAwLFxuICAgIHkwMCxcbiAgICB4MCxcbiAgICB5MDtcblxudmFyIGxlbmd0aFN0cmVhbSA9IHtcbiAgcG9pbnQ6IG5vb3AsXG4gIGxpbmVTdGFydDogZnVuY3Rpb24oKSB7XG4gICAgbGVuZ3RoU3RyZWFtLnBvaW50ID0gbGVuZ3RoUG9pbnRGaXJzdDtcbiAgfSxcbiAgbGluZUVuZDogZnVuY3Rpb24oKSB7XG4gICAgaWYgKGxlbmd0aFJpbmcpIGxlbmd0aFBvaW50KHgwMCwgeTAwKTtcbiAgICBsZW5ndGhTdHJlYW0ucG9pbnQgPSBub29wO1xuICB9LFxuICBwb2x5Z29uU3RhcnQ6IGZ1bmN0aW9uKCkge1xuICAgIGxlbmd0aFJpbmcgPSB0cnVlO1xuICB9LFxuICBwb2x5Z29uRW5kOiBmdW5jdGlvbigpIHtcbiAgICBsZW5ndGhSaW5nID0gbnVsbDtcbiAgfSxcbiAgcmVzdWx0OiBmdW5jdGlvbigpIHtcbiAgICB2YXIgbGVuZ3RoID0gK2xlbmd0aFN1bTtcbiAgICBsZW5ndGhTdW0gPSBuZXcgQWRkZXIoKTtcbiAgICByZXR1cm4gbGVuZ3RoO1xuICB9XG59O1xuXG5mdW5jdGlvbiBsZW5ndGhQb2ludEZpcnN0KHgsIHkpIHtcbiAgbGVuZ3RoU3RyZWFtLnBvaW50ID0gbGVuZ3RoUG9pbnQ7XG4gIHgwMCA9IHgwID0geCwgeTAwID0geTAgPSB5O1xufVxuXG5mdW5jdGlvbiBsZW5ndGhQb2ludCh4LCB5KSB7XG4gIHgwIC09IHgsIHkwIC09IHk7XG4gIGxlbmd0aFN1bS5hZGQoc3FydCh4MCAqIHgwICsgeTAgKiB5MCkpO1xuICB4MCA9IHgsIHkwID0geTtcbn1cblxuZXhwb3J0IGRlZmF1bHQgbGVuZ3RoU3RyZWFtO1xuIl0sIm1hcHBpbmdzIjoiQUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTsiLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///./node_modules/vega-functions/node_modules/d3-geo/src/path/measure.js\n");

/***/ }),

/***/ "./node_modules/vega-functions/node_modules/d3-geo/src/path/string.js":
/*!****************************************************************************!*\
  !*** ./node_modules/vega-functions/node_modules/d3-geo/src/path/string.js ***!
  \****************************************************************************/
/*! exports provided: default */
/***/ (function(module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"default\", function() { return PathString; });\nfunction PathString() {\n  this._string = [];\n}\n\nPathString.prototype = {\n  _radius: 4.5,\n  _circle: circle(4.5),\n  pointRadius: function(_) {\n    if ((_ = +_) !== this._radius) this._radius = _, this._circle = null;\n    return this;\n  },\n  polygonStart: function() {\n    this._line = 0;\n  },\n  polygonEnd: function() {\n    this._line = NaN;\n  },\n  lineStart: function() {\n    this._point = 0;\n  },\n  lineEnd: function() {\n    if (this._line === 0) this._string.push(\"Z\");\n    this._point = NaN;\n  },\n  point: function(x, y) {\n    switch (this._point) {\n      case 0: {\n        this._string.push(\"M\", x, \",\", y);\n        this._point = 1;\n        break;\n      }\n      case 1: {\n        this._string.push(\"L\", x, \",\", y);\n        break;\n      }\n      default: {\n        if (this._circle == null) this._circle = circle(this._radius);\n        this._string.push(\"M\", x, \",\", y, this._circle);\n        break;\n      }\n    }\n  },\n  result: function() {\n    if (this._string.length) {\n      var result = this._string.join(\"\");\n      this._string = [];\n      return result;\n    } else {\n      return null;\n    }\n  }\n};\n\nfunction circle(radius) {\n  return \"m0,\" + radius\n      + \"a\" + radius + \",\" + radius + \" 0 1,1 0,\" + -2 * radius\n      + \"a\" + radius + \",\" + radius + \" 0 1,1 0,\" + 2 * radius\n      + \"z\";\n}\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvdmVnYS1mdW5jdGlvbnMvbm9kZV9tb2R1bGVzL2QzLWdlby9zcmMvcGF0aC9zdHJpbmcuanMuanMiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvdmVnYS1mdW5jdGlvbnMvbm9kZV9tb2R1bGVzL2QzLWdlby9zcmMvcGF0aC9zdHJpbmcuanM/ZDY2NiJdLCJzb3VyY2VzQ29udGVudCI6WyJleHBvcnQgZGVmYXVsdCBmdW5jdGlvbiBQYXRoU3RyaW5nKCkge1xuICB0aGlzLl9zdHJpbmcgPSBbXTtcbn1cblxuUGF0aFN0cmluZy5wcm90b3R5cGUgPSB7XG4gIF9yYWRpdXM6IDQuNSxcbiAgX2NpcmNsZTogY2lyY2xlKDQuNSksXG4gIHBvaW50UmFkaXVzOiBmdW5jdGlvbihfKSB7XG4gICAgaWYgKChfID0gK18pICE9PSB0aGlzLl9yYWRpdXMpIHRoaXMuX3JhZGl1cyA9IF8sIHRoaXMuX2NpcmNsZSA9IG51bGw7XG4gICAgcmV0dXJuIHRoaXM7XG4gIH0sXG4gIHBvbHlnb25TdGFydDogZnVuY3Rpb24oKSB7XG4gICAgdGhpcy5fbGluZSA9IDA7XG4gIH0sXG4gIHBvbHlnb25FbmQ6IGZ1bmN0aW9uKCkge1xuICAgIHRoaXMuX2xpbmUgPSBOYU47XG4gIH0sXG4gIGxpbmVTdGFydDogZnVuY3Rpb24oKSB7XG4gICAgdGhpcy5fcG9pbnQgPSAwO1xuICB9LFxuICBsaW5lRW5kOiBmdW5jdGlvbigpIHtcbiAgICBpZiAodGhpcy5fbGluZSA9PT0gMCkgdGhpcy5fc3RyaW5nLnB1c2goXCJaXCIpO1xuICAgIHRoaXMuX3BvaW50ID0gTmFOO1xuICB9LFxuICBwb2ludDogZnVuY3Rpb24oeCwgeSkge1xuICAgIHN3aXRjaCAodGhpcy5fcG9pbnQpIHtcbiAgICAgIGNhc2UgMDoge1xuICAgICAgICB0aGlzLl9zdHJpbmcucHVzaChcIk1cIiwgeCwgXCIsXCIsIHkpO1xuICAgICAgICB0aGlzLl9wb2ludCA9IDE7XG4gICAgICAgIGJyZWFrO1xuICAgICAgfVxuICAgICAgY2FzZSAxOiB7XG4gICAgICAgIHRoaXMuX3N0cmluZy5wdXNoKFwiTFwiLCB4LCBcIixcIiwgeSk7XG4gICAgICAgIGJyZWFrO1xuICAgICAgfVxuICAgICAgZGVmYXVsdDoge1xuICAgICAgICBpZiAodGhpcy5fY2lyY2xlID09IG51bGwpIHRoaXMuX2NpcmNsZSA9IGNpcmNsZSh0aGlzLl9yYWRpdXMpO1xuICAgICAgICB0aGlzLl9zdHJpbmcucHVzaChcIk1cIiwgeCwgXCIsXCIsIHksIHRoaXMuX2NpcmNsZSk7XG4gICAgICAgIGJyZWFrO1xuICAgICAgfVxuICAgIH1cbiAgfSxcbiAgcmVzdWx0OiBmdW5jdGlvbigpIHtcbiAgICBpZiAodGhpcy5fc3RyaW5nLmxlbmd0aCkge1xuICAgICAgdmFyIHJlc3VsdCA9IHRoaXMuX3N0cmluZy5qb2luKFwiXCIpO1xuICAgICAgdGhpcy5fc3RyaW5nID0gW107XG4gICAgICByZXR1cm4gcmVzdWx0O1xuICAgIH0gZWxzZSB7XG4gICAgICByZXR1cm4gbnVsbDtcbiAgICB9XG4gIH1cbn07XG5cbmZ1bmN0aW9uIGNpcmNsZShyYWRpdXMpIHtcbiAgcmV0dXJuIFwibTAsXCIgKyByYWRpdXNcbiAgICAgICsgXCJhXCIgKyByYWRpdXMgKyBcIixcIiArIHJhZGl1cyArIFwiIDAgMSwxIDAsXCIgKyAtMiAqIHJhZGl1c1xuICAgICAgKyBcImFcIiArIHJhZGl1cyArIFwiLFwiICsgcmFkaXVzICsgXCIgMCAxLDEgMCxcIiArIDIgKiByYWRpdXNcbiAgICAgICsgXCJ6XCI7XG59XG4iXSwibWFwcGluZ3MiOiJBQUFBO0FBQUE7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOyIsInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///./node_modules/vega-functions/node_modules/d3-geo/src/path/string.js\n");

/***/ }),

/***/ "./node_modules/vega-functions/node_modules/d3-geo/src/pointEqual.js":
/*!***************************************************************************!*\
  !*** ./node_modules/vega-functions/node_modules/d3-geo/src/pointEqual.js ***!
  \***************************************************************************/
/*! exports provided: default */
/***/ (function(module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _math_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./math.js */ \"./node_modules/vega-functions/node_modules/d3-geo/src/math.js\");\n\n\n/* harmony default export */ __webpack_exports__[\"default\"] = (function(a, b) {\n  return Object(_math_js__WEBPACK_IMPORTED_MODULE_0__[\"abs\"])(a[0] - b[0]) < _math_js__WEBPACK_IMPORTED_MODULE_0__[\"epsilon\"] && Object(_math_js__WEBPACK_IMPORTED_MODULE_0__[\"abs\"])(a[1] - b[1]) < _math_js__WEBPACK_IMPORTED_MODULE_0__[\"epsilon\"];\n});\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvdmVnYS1mdW5jdGlvbnMvbm9kZV9tb2R1bGVzL2QzLWdlby9zcmMvcG9pbnRFcXVhbC5qcy5qcyIsInNvdXJjZXMiOlsid2VicGFjazovLy8uL25vZGVfbW9kdWxlcy92ZWdhLWZ1bmN0aW9ucy9ub2RlX21vZHVsZXMvZDMtZ2VvL3NyYy9wb2ludEVxdWFsLmpzPzUwMmUiXSwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHthYnMsIGVwc2lsb259IGZyb20gXCIuL21hdGguanNcIjtcblxuZXhwb3J0IGRlZmF1bHQgZnVuY3Rpb24oYSwgYikge1xuICByZXR1cm4gYWJzKGFbMF0gLSBiWzBdKSA8IGVwc2lsb24gJiYgYWJzKGFbMV0gLSBiWzFdKSA8IGVwc2lsb247XG59XG4iXSwibWFwcGluZ3MiOiJBQUFBO0FBQUE7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOyIsInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///./node_modules/vega-functions/node_modules/d3-geo/src/pointEqual.js\n");

/***/ }),

/***/ "./node_modules/vega-functions/node_modules/d3-geo/src/polygonContains.js":
/*!********************************************************************************!*\
  !*** ./node_modules/vega-functions/node_modules/d3-geo/src/polygonContains.js ***!
  \********************************************************************************/
/*! exports provided: default */
/***/ (function(module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var d3_array__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! d3-array */ \"./node_modules/d3-array/src/index.js\");\n/* harmony import */ var _cartesian_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./cartesian.js */ \"./node_modules/vega-functions/node_modules/d3-geo/src/cartesian.js\");\n/* harmony import */ var _math_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./math.js */ \"./node_modules/vega-functions/node_modules/d3-geo/src/math.js\");\n\n\n\n\nfunction longitude(point) {\n  if (Object(_math_js__WEBPACK_IMPORTED_MODULE_2__[\"abs\"])(point[0]) <= _math_js__WEBPACK_IMPORTED_MODULE_2__[\"pi\"])\n    return point[0];\n  else\n    return Object(_math_js__WEBPACK_IMPORTED_MODULE_2__[\"sign\"])(point[0]) * ((Object(_math_js__WEBPACK_IMPORTED_MODULE_2__[\"abs\"])(point[0]) + _math_js__WEBPACK_IMPORTED_MODULE_2__[\"pi\"]) % _math_js__WEBPACK_IMPORTED_MODULE_2__[\"tau\"] - _math_js__WEBPACK_IMPORTED_MODULE_2__[\"pi\"]);\n}\n\n/* harmony default export */ __webpack_exports__[\"default\"] = (function(polygon, point) {\n  var lambda = longitude(point),\n      phi = point[1],\n      sinPhi = Object(_math_js__WEBPACK_IMPORTED_MODULE_2__[\"sin\"])(phi),\n      normal = [Object(_math_js__WEBPACK_IMPORTED_MODULE_2__[\"sin\"])(lambda), -Object(_math_js__WEBPACK_IMPORTED_MODULE_2__[\"cos\"])(lambda), 0],\n      angle = 0,\n      winding = 0;\n\n  var sum = new d3_array__WEBPACK_IMPORTED_MODULE_0__[\"Adder\"]();\n\n  if (sinPhi === 1) phi = _math_js__WEBPACK_IMPORTED_MODULE_2__[\"halfPi\"] + _math_js__WEBPACK_IMPORTED_MODULE_2__[\"epsilon\"];\n  else if (sinPhi === -1) phi = -_math_js__WEBPACK_IMPORTED_MODULE_2__[\"halfPi\"] - _math_js__WEBPACK_IMPORTED_MODULE_2__[\"epsilon\"];\n\n  for (var i = 0, n = polygon.length; i < n; ++i) {\n    if (!(m = (ring = polygon[i]).length)) continue;\n    var ring,\n        m,\n        point0 = ring[m - 1],\n        lambda0 = longitude(point0),\n        phi0 = point0[1] / 2 + _math_js__WEBPACK_IMPORTED_MODULE_2__[\"quarterPi\"],\n        sinPhi0 = Object(_math_js__WEBPACK_IMPORTED_MODULE_2__[\"sin\"])(phi0),\n        cosPhi0 = Object(_math_js__WEBPACK_IMPORTED_MODULE_2__[\"cos\"])(phi0);\n\n    for (var j = 0; j < m; ++j, lambda0 = lambda1, sinPhi0 = sinPhi1, cosPhi0 = cosPhi1, point0 = point1) {\n      var point1 = ring[j],\n          lambda1 = longitude(point1),\n          phi1 = point1[1] / 2 + _math_js__WEBPACK_IMPORTED_MODULE_2__[\"quarterPi\"],\n          sinPhi1 = Object(_math_js__WEBPACK_IMPORTED_MODULE_2__[\"sin\"])(phi1),\n          cosPhi1 = Object(_math_js__WEBPACK_IMPORTED_MODULE_2__[\"cos\"])(phi1),\n          delta = lambda1 - lambda0,\n          sign = delta >= 0 ? 1 : -1,\n          absDelta = sign * delta,\n          antimeridian = absDelta > _math_js__WEBPACK_IMPORTED_MODULE_2__[\"pi\"],\n          k = sinPhi0 * sinPhi1;\n\n      sum.add(Object(_math_js__WEBPACK_IMPORTED_MODULE_2__[\"atan2\"])(k * sign * Object(_math_js__WEBPACK_IMPORTED_MODULE_2__[\"sin\"])(absDelta), cosPhi0 * cosPhi1 + k * Object(_math_js__WEBPACK_IMPORTED_MODULE_2__[\"cos\"])(absDelta)));\n      angle += antimeridian ? delta + sign * _math_js__WEBPACK_IMPORTED_MODULE_2__[\"tau\"] : delta;\n\n      // Are the longitudes either side of the point’s meridian (lambda),\n      // and are the latitudes smaller than the parallel (phi)?\n      if (antimeridian ^ lambda0 >= lambda ^ lambda1 >= lambda) {\n        var arc = Object(_cartesian_js__WEBPACK_IMPORTED_MODULE_1__[\"cartesianCross\"])(Object(_cartesian_js__WEBPACK_IMPORTED_MODULE_1__[\"cartesian\"])(point0), Object(_cartesian_js__WEBPACK_IMPORTED_MODULE_1__[\"cartesian\"])(point1));\n        Object(_cartesian_js__WEBPACK_IMPORTED_MODULE_1__[\"cartesianNormalizeInPlace\"])(arc);\n        var intersection = Object(_cartesian_js__WEBPACK_IMPORTED_MODULE_1__[\"cartesianCross\"])(normal, arc);\n        Object(_cartesian_js__WEBPACK_IMPORTED_MODULE_1__[\"cartesianNormalizeInPlace\"])(intersection);\n        var phiArc = (antimeridian ^ delta >= 0 ? -1 : 1) * Object(_math_js__WEBPACK_IMPORTED_MODULE_2__[\"asin\"])(intersection[2]);\n        if (phi > phiArc || phi === phiArc && (arc[0] || arc[1])) {\n          winding += antimeridian ^ delta >= 0 ? 1 : -1;\n        }\n      }\n    }\n  }\n\n  // First, determine whether the South pole is inside or outside:\n  //\n  // It is inside if:\n  // * the polygon winds around it in a clockwise direction.\n  // * the polygon does not (cumulatively) wind around it, but has a negative\n  //   (counter-clockwise) area.\n  //\n  // Second, count the (signed) number of times a segment crosses a lambda\n  // from the point to the South pole.  If it is zero, then the point is the\n  // same side as the South pole.\n\n  return (angle < -_math_js__WEBPACK_IMPORTED_MODULE_2__[\"epsilon\"] || angle < _math_js__WEBPACK_IMPORTED_MODULE_2__[\"epsilon\"] && sum < -_math_js__WEBPACK_IMPORTED_MODULE_2__[\"epsilon2\"]) ^ (winding & 1);\n});\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,[encoded data, 4740 characters]\n//# sourceURL=webpack-internal:///./node_modules/vega-functions/node_modules/d3-geo/src/polygonContains.js\n");

/***/ }),

/***/ "./node_modules/vega-functions/node_modules/d3-geo/src/projection/albers.js":
/*!**********************************************************************************!*\
  !*** ./node_modules/vega-functions/node_modules/d3-geo/src/projection/albers.js ***!
  \**********************************************************************************/
/*! exports provided: default */
/***/ (function(module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _conicEqualArea_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./conicEqualArea.js */ \"./node_modules/vega-functions/node_modules/d3-geo/src/projection/conicEqualArea.js\");\n\n\n/* harmony default export */ __webpack_exports__[\"default\"] = (function() {\n  return Object(_conicEqualArea_js__WEBPACK_IMPORTED_MODULE_0__[\"default\"])()\n      .parallels([29.5, 45.5])\n      .scale(1070)\n      .translate([480, 250])\n      .rotate([96, 0])\n      .center([-0.6, 38.7]);\n});\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvdmVnYS1mdW5jdGlvbnMvbm9kZV9tb2R1bGVzL2QzLWdlby9zcmMvcHJvamVjdGlvbi9hbGJlcnMuanMuanMiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvdmVnYS1mdW5jdGlvbnMvbm9kZV9tb2R1bGVzL2QzLWdlby9zcmMvcHJvamVjdGlvbi9hbGJlcnMuanM/NTczYiJdLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgY29uaWNFcXVhbEFyZWEgZnJvbSBcIi4vY29uaWNFcXVhbEFyZWEuanNcIjtcblxuZXhwb3J0IGRlZmF1bHQgZnVuY3Rpb24oKSB7XG4gIHJldHVybiBjb25pY0VxdWFsQXJlYSgpXG4gICAgICAucGFyYWxsZWxzKFsyOS41LCA0NS41XSlcbiAgICAgIC5zY2FsZSgxMDcwKVxuICAgICAgLnRyYW5zbGF0ZShbNDgwLCAyNTBdKVxuICAgICAgLnJvdGF0ZShbOTYsIDBdKVxuICAgICAgLmNlbnRlcihbLTAuNiwgMzguN10pO1xufVxuIl0sIm1hcHBpbmdzIjoiQUFBQTtBQUFBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7Iiwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///./node_modules/vega-functions/node_modules/d3-geo/src/projection/albers.js\n");

/***/ }),

/***/ "./node_modules/vega-functions/node_modules/d3-geo/src/projection/albersUsa.js":
/*!*************************************************************************************!*\
  !*** ./node_modules/vega-functions/node_modules/d3-geo/src/projection/albersUsa.js ***!
  \*************************************************************************************/
/*! exports provided: default */
/***/ (function(module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _math_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../math.js */ \"./node_modules/vega-functions/node_modules/d3-geo/src/math.js\");\n/* harmony import */ var _albers_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./albers.js */ \"./node_modules/vega-functions/node_modules/d3-geo/src/projection/albers.js\");\n/* harmony import */ var _conicEqualArea_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./conicEqualArea.js */ \"./node_modules/vega-functions/node_modules/d3-geo/src/projection/conicEqualArea.js\");\n/* harmony import */ var _fit_js__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ./fit.js */ \"./node_modules/vega-functions/node_modules/d3-geo/src/projection/fit.js\");\n\n\n\n\n\n// The projections must have mutually exclusive clip regions on the sphere,\n// as this will avoid emitting interleaving lines and polygons.\nfunction multiplex(streams) {\n  var n = streams.length;\n  return {\n    point: function(x, y) { var i = -1; while (++i < n) streams[i].point(x, y); },\n    sphere: function() { var i = -1; while (++i < n) streams[i].sphere(); },\n    lineStart: function() { var i = -1; while (++i < n) streams[i].lineStart(); },\n    lineEnd: function() { var i = -1; while (++i < n) streams[i].lineEnd(); },\n    polygonStart: function() { var i = -1; while (++i < n) streams[i].polygonStart(); },\n    polygonEnd: function() { var i = -1; while (++i < n) streams[i].polygonEnd(); }\n  };\n}\n\n// A composite projection for the United States, configured by default for\n// 960×500. The projection also works quite well at 960×600 if you change the\n// scale to 1285 and adjust the translate accordingly. The set of standard\n// parallels for each region comes from USGS, which is published here:\n// http://egsc.usgs.gov/isb/pubs/MapProjections/projections.html#albers\n/* harmony default export */ __webpack_exports__[\"default\"] = (function() {\n  var cache,\n      cacheStream,\n      lower48 = Object(_albers_js__WEBPACK_IMPORTED_MODULE_1__[\"default\"])(), lower48Point,\n      alaska = Object(_conicEqualArea_js__WEBPACK_IMPORTED_MODULE_2__[\"default\"])().rotate([154, 0]).center([-2, 58.5]).parallels([55, 65]), alaskaPoint, // EPSG:3338\n      hawaii = Object(_conicEqualArea_js__WEBPACK_IMPORTED_MODULE_2__[\"default\"])().rotate([157, 0]).center([-3, 19.9]).parallels([8, 18]), hawaiiPoint, // ESRI:102007\n      point, pointStream = {point: function(x, y) { point = [x, y]; }};\n\n  function albersUsa(coordinates) {\n    var x = coordinates[0], y = coordinates[1];\n    return point = null,\n        (lower48Point.point(x, y), point)\n        || (alaskaPoint.point(x, y), point)\n        || (hawaiiPoint.point(x, y), point);\n  }\n\n  albersUsa.invert = function(coordinates) {\n    var k = lower48.scale(),\n        t = lower48.translate(),\n        x = (coordinates[0] - t[0]) / k,\n        y = (coordinates[1] - t[1]) / k;\n    return (y >= 0.120 && y < 0.234 && x >= -0.425 && x < -0.214 ? alaska\n        : y >= 0.166 && y < 0.234 && x >= -0.214 && x < -0.115 ? hawaii\n        : lower48).invert(coordinates);\n  };\n\n  albersUsa.stream = function(stream) {\n    return cache && cacheStream === stream ? cache : cache = multiplex([lower48.stream(cacheStream = stream), alaska.stream(stream), hawaii.stream(stream)]);\n  };\n\n  albersUsa.precision = function(_) {\n    if (!arguments.length) return lower48.precision();\n    lower48.precision(_), alaska.precision(_), hawaii.precision(_);\n    return reset();\n  };\n\n  albersUsa.scale = function(_) {\n    if (!arguments.length) return lower48.scale();\n    lower48.scale(_), alaska.scale(_ * 0.35), hawaii.scale(_);\n    return albersUsa.translate(lower48.translate());\n  };\n\n  albersUsa.translate = function(_) {\n    if (!arguments.length) return lower48.translate();\n    var k = lower48.scale(), x = +_[0], y = +_[1];\n\n    lower48Point = lower48\n        .translate(_)\n        .clipExtent([[x - 0.455 * k, y - 0.238 * k], [x + 0.455 * k, y + 0.238 * k]])\n        .stream(pointStream);\n\n    alaskaPoint = alaska\n        .translate([x - 0.307 * k, y + 0.201 * k])\n        .clipExtent([[x - 0.425 * k + _math_js__WEBPACK_IMPORTED_MODULE_0__[\"epsilon\"], y + 0.120 * k + _math_js__WEBPACK_IMPORTED_MODULE_0__[\"epsilon\"]], [x - 0.214 * k - _math_js__WEBPACK_IMPORTED_MODULE_0__[\"epsilon\"], y + 0.234 * k - _math_js__WEBPACK_IMPORTED_MODULE_0__[\"epsilon\"]]])\n        .stream(pointStream);\n\n    hawaiiPoint = hawaii\n        .translate([x - 0.205 * k, y + 0.212 * k])\n        .clipExtent([[x - 0.214 * k + _math_js__WEBPACK_IMPORTED_MODULE_0__[\"epsilon\"], y + 0.166 * k + _math_js__WEBPACK_IMPORTED_MODULE_0__[\"epsilon\"]], [x - 0.115 * k - _math_js__WEBPACK_IMPORTED_MODULE_0__[\"epsilon\"], y + 0.234 * k - _math_js__WEBPACK_IMPORTED_MODULE_0__[\"epsilon\"]]])\n        .stream(pointStream);\n\n    return reset();\n  };\n\n  albersUsa.fitExtent = function(extent, object) {\n    return Object(_fit_js__WEBPACK_IMPORTED_MODULE_3__[\"fitExtent\"])(albersUsa, extent, object);\n  };\n\n  albersUsa.fitSize = function(size, object) {\n    return Object(_fit_js__WEBPACK_IMPORTED_MODULE_3__[\"fitSize\"])(albersUsa, size, object);\n  };\n\n  albersUsa.fitWidth = function(width, object) {\n    return Object(_fit_js__WEBPACK_IMPORTED_MODULE_3__[\"fitWidth\"])(albersUsa, width, object);\n  };\n\n  albersUsa.fitHeight = function(height, object) {\n    return Object(_fit_js__WEBPACK_IMPORTED_MODULE_3__[\"fitHeight\"])(albersUsa, height, object);\n  };\n\n  function reset() {\n    cache = cacheStream = null;\n    return albersUsa;\n  }\n\n  return albersUsa.scale(1070);\n});\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,[encoded data, 6920 characters]\n//# sourceURL=webpack-internal:///./node_modules/vega-functions/node_modules/d3-geo/src/projection/albersUsa.js\n");

/***/ }),

/***/ "./node_modules/vega-functions/node_modules/d3-geo/src/projection/azimuthal.js":
/*!*************************************************************************************!*\
  !*** ./node_modules/vega-functions/node_modules/d3-geo/src/projection/azimuthal.js ***!
  \*************************************************************************************/
/*! exports provided: azimuthalRaw, azimuthalInvert */
/***/ (function(module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"azimuthalRaw\", function() { return azimuthalRaw; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"azimuthalInvert\", function() { return azimuthalInvert; });\n/* harmony import */ var _math_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../math.js */ \"./node_modules/vega-functions/node_modules/d3-geo/src/math.js\");\n\n\nfunction azimuthalRaw(scale) {\n  return function(x, y) {\n    var cx = Object(_math_js__WEBPACK_IMPORTED_MODULE_0__[\"cos\"])(x),\n        cy = Object(_math_js__WEBPACK_IMPORTED_MODULE_0__[\"cos\"])(y),\n        k = scale(cx * cy);\n        if (k === Infinity) return [2, 0];\n    return [\n      k * cy * Object(_math_js__WEBPACK_IMPORTED_MODULE_0__[\"sin\"])(x),\n      k * Object(_math_js__WEBPACK_IMPORTED_MODULE_0__[\"sin\"])(y)\n    ];\n  }\n}\n\nfunction azimuthalInvert(angle) {\n  return function(x, y) {\n    var z = Object(_math_js__WEBPACK_IMPORTED_MODULE_0__[\"sqrt\"])(x * x + y * y),\n        c = angle(z),\n        sc = Object(_math_js__WEBPACK_IMPORTED_MODULE_0__[\"sin\"])(c),\n        cc = Object(_math_js__WEBPACK_IMPORTED_MODULE_0__[\"cos\"])(c);\n    return [\n      Object(_math_js__WEBPACK_IMPORTED_MODULE_0__[\"atan2\"])(x * sc, z * cc),\n      Object(_math_js__WEBPACK_IMPORTED_MODULE_0__[\"asin\"])(z && y * sc / z)\n    ];\n  }\n}\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvdmVnYS1mdW5jdGlvbnMvbm9kZV9tb2R1bGVzL2QzLWdlby9zcmMvcHJvamVjdGlvbi9hemltdXRoYWwuanMuanMiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvdmVnYS1mdW5jdGlvbnMvbm9kZV9tb2R1bGVzL2QzLWdlby9zcmMvcHJvamVjdGlvbi9hemltdXRoYWwuanM/Y2NhMiJdLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge2FzaW4sIGF0YW4yLCBjb3MsIHNpbiwgc3FydH0gZnJvbSBcIi4uL21hdGguanNcIjtcblxuZXhwb3J0IGZ1bmN0aW9uIGF6aW11dGhhbFJhdyhzY2FsZSkge1xuICByZXR1cm4gZnVuY3Rpb24oeCwgeSkge1xuICAgIHZhciBjeCA9IGNvcyh4KSxcbiAgICAgICAgY3kgPSBjb3MoeSksXG4gICAgICAgIGsgPSBzY2FsZShjeCAqIGN5KTtcbiAgICAgICAgaWYgKGsgPT09IEluZmluaXR5KSByZXR1cm4gWzIsIDBdO1xuICAgIHJldHVybiBbXG4gICAgICBrICogY3kgKiBzaW4oeCksXG4gICAgICBrICogc2luKHkpXG4gICAgXTtcbiAgfVxufVxuXG5leHBvcnQgZnVuY3Rpb24gYXppbXV0aGFsSW52ZXJ0KGFuZ2xlKSB7XG4gIHJldHVybiBmdW5jdGlvbih4LCB5KSB7XG4gICAgdmFyIHogPSBzcXJ0KHggKiB4ICsgeSAqIHkpLFxuICAgICAgICBjID0gYW5nbGUoeiksXG4gICAgICAgIHNjID0gc2luKGMpLFxuICAgICAgICBjYyA9IGNvcyhjKTtcbiAgICByZXR1cm4gW1xuICAgICAgYXRhbjIoeCAqIHNjLCB6ICogY2MpLFxuICAgICAgYXNpbih6ICYmIHkgKiBzYyAvIHopXG4gICAgXTtcbiAgfVxufVxuIl0sIm1hcHBpbmdzIjoiQUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTsiLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///./node_modules/vega-functions/node_modules/d3-geo/src/projection/azimuthal.js\n");

/***/ }),

/***/ "./node_modules/vega-functions/node_modules/d3-geo/src/projection/azimuthalEqualArea.js":
/*!**********************************************************************************************!*\
  !*** ./node_modules/vega-functions/node_modules/d3-geo/src/projection/azimuthalEqualArea.js ***!
  \**********************************************************************************************/
/*! exports provided: azimuthalEqualAreaRaw, default */
/***/ (function(module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"azimuthalEqualAreaRaw\", function() { return azimuthalEqualAreaRaw; });\n/* harmony import */ var _math_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../math.js */ \"./node_modules/vega-functions/node_modules/d3-geo/src/math.js\");\n/* harmony import */ var _azimuthal_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./azimuthal.js */ \"./node_modules/vega-functions/node_modules/d3-geo/src/projection/azimuthal.js\");\n/* harmony import */ var _index_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./index.js */ \"./node_modules/vega-functions/node_modules/d3-geo/src/projection/index.js\");\n\n\n\n\nvar azimuthalEqualAreaRaw = Object(_azimuthal_js__WEBPACK_IMPORTED_MODULE_1__[\"azimuthalRaw\"])(function(cxcy) {\n  return Object(_math_js__WEBPACK_IMPORTED_MODULE_0__[\"sqrt\"])(2 / (1 + cxcy));\n});\n\nazimuthalEqualAreaRaw.invert = Object(_azimuthal_js__WEBPACK_IMPORTED_MODULE_1__[\"azimuthalInvert\"])(function(z) {\n  return 2 * Object(_math_js__WEBPACK_IMPORTED_MODULE_0__[\"asin\"])(z / 2);\n});\n\n/* harmony default export */ __webpack_exports__[\"default\"] = (function() {\n  return Object(_index_js__WEBPACK_IMPORTED_MODULE_2__[\"default\"])(azimuthalEqualAreaRaw)\n      .scale(124.75)\n      .clipAngle(180 - 1e-3);\n});\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvdmVnYS1mdW5jdGlvbnMvbm9kZV9tb2R1bGVzL2QzLWdlby9zcmMvcHJvamVjdGlvbi9hemltdXRoYWxFcXVhbEFyZWEuanMuanMiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvdmVnYS1mdW5jdGlvbnMvbm9kZV9tb2R1bGVzL2QzLWdlby9zcmMvcHJvamVjdGlvbi9hemltdXRoYWxFcXVhbEFyZWEuanM/YTMxOCJdLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge2FzaW4sIHNxcnR9IGZyb20gXCIuLi9tYXRoLmpzXCI7XG5pbXBvcnQge2F6aW11dGhhbFJhdywgYXppbXV0aGFsSW52ZXJ0fSBmcm9tIFwiLi9hemltdXRoYWwuanNcIjtcbmltcG9ydCBwcm9qZWN0aW9uIGZyb20gXCIuL2luZGV4LmpzXCI7XG5cbmV4cG9ydCB2YXIgYXppbXV0aGFsRXF1YWxBcmVhUmF3ID0gYXppbXV0aGFsUmF3KGZ1bmN0aW9uKGN4Y3kpIHtcbiAgcmV0dXJuIHNxcnQoMiAvICgxICsgY3hjeSkpO1xufSk7XG5cbmF6aW11dGhhbEVxdWFsQXJlYVJhdy5pbnZlcnQgPSBhemltdXRoYWxJbnZlcnQoZnVuY3Rpb24oeikge1xuICByZXR1cm4gMiAqIGFzaW4oeiAvIDIpO1xufSk7XG5cbmV4cG9ydCBkZWZhdWx0IGZ1bmN0aW9uKCkge1xuICByZXR1cm4gcHJvamVjdGlvbihhemltdXRoYWxFcXVhbEFyZWFSYXcpXG4gICAgICAuc2NhbGUoMTI0Ljc1KVxuICAgICAgLmNsaXBBbmdsZSgxODAgLSAxZS0zKTtcbn1cbiJdLCJtYXBwaW5ncyI6IkFBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7Iiwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///./node_modules/vega-functions/node_modules/d3-geo/src/projection/azimuthalEqualArea.js\n");

/***/ }),

/***/ "./node_modules/vega-functions/node_modules/d3-geo/src/projection/azimuthalEquidistant.js":
/*!************************************************************************************************!*\
  !*** ./node_modules/vega-functions/node_modules/d3-geo/src/projection/azimuthalEquidistant.js ***!
  \************************************************************************************************/
/*! exports provided: azimuthalEquidistantRaw, default */
/***/ (function(module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"azimuthalEquidistantRaw\", function() { return azimuthalEquidistantRaw; });\n/* harmony import */ var _math_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../math.js */ \"./node_modules/vega-functions/node_modules/d3-geo/src/math.js\");\n/* harmony import */ var _azimuthal_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./azimuthal.js */ \"./node_modules/vega-functions/node_modules/d3-geo/src/projection/azimuthal.js\");\n/* harmony import */ var _index_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./index.js */ \"./node_modules/vega-functions/node_modules/d3-geo/src/projection/index.js\");\n\n\n\n\nvar azimuthalEquidistantRaw = Object(_azimuthal_js__WEBPACK_IMPORTED_MODULE_1__[\"azimuthalRaw\"])(function(c) {\n  return (c = Object(_math_js__WEBPACK_IMPORTED_MODULE_0__[\"acos\"])(c)) && c / Object(_math_js__WEBPACK_IMPORTED_MODULE_0__[\"sin\"])(c);\n});\n\nazimuthalEquidistantRaw.invert = Object(_azimuthal_js__WEBPACK_IMPORTED_MODULE_1__[\"azimuthalInvert\"])(function(z) {\n  return z;\n});\n\n/* harmony default export */ __webpack_exports__[\"default\"] = (function() {\n  return Object(_index_js__WEBPACK_IMPORTED_MODULE_2__[\"default\"])(azimuthalEquidistantRaw)\n      .scale(79.4188)\n      .clipAngle(180 - 1e-3);\n});\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvdmVnYS1mdW5jdGlvbnMvbm9kZV9tb2R1bGVzL2QzLWdlby9zcmMvcHJvamVjdGlvbi9hemltdXRoYWxFcXVpZGlzdGFudC5qcy5qcyIsInNvdXJjZXMiOlsid2VicGFjazovLy8uL25vZGVfbW9kdWxlcy92ZWdhLWZ1bmN0aW9ucy9ub2RlX21vZHVsZXMvZDMtZ2VvL3NyYy9wcm9qZWN0aW9uL2F6aW11dGhhbEVxdWlkaXN0YW50LmpzPzM2MDQiXSwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHthY29zLCBzaW59IGZyb20gXCIuLi9tYXRoLmpzXCI7XG5pbXBvcnQge2F6aW11dGhhbFJhdywgYXppbXV0aGFsSW52ZXJ0fSBmcm9tIFwiLi9hemltdXRoYWwuanNcIjtcbmltcG9ydCBwcm9qZWN0aW9uIGZyb20gXCIuL2luZGV4LmpzXCI7XG5cbmV4cG9ydCB2YXIgYXppbXV0aGFsRXF1aWRpc3RhbnRSYXcgPSBhemltdXRoYWxSYXcoZnVuY3Rpb24oYykge1xuICByZXR1cm4gKGMgPSBhY29zKGMpKSAmJiBjIC8gc2luKGMpO1xufSk7XG5cbmF6aW11dGhhbEVxdWlkaXN0YW50UmF3LmludmVydCA9IGF6aW11dGhhbEludmVydChmdW5jdGlvbih6KSB7XG4gIHJldHVybiB6O1xufSk7XG5cbmV4cG9ydCBkZWZhdWx0IGZ1bmN0aW9uKCkge1xuICByZXR1cm4gcHJvamVjdGlvbihhemltdXRoYWxFcXVpZGlzdGFudFJhdylcbiAgICAgIC5zY2FsZSg3OS40MTg4KVxuICAgICAgLmNsaXBBbmdsZSgxODAgLSAxZS0zKTtcbn1cbiJdLCJtYXBwaW5ncyI6IkFBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7Iiwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///./node_modules/vega-functions/node_modules/d3-geo/src/projection/azimuthalEquidistant.js\n");

/***/ }),

/***/ "./node_modules/vega-functions/node_modules/d3-geo/src/projection/conic.js":
/*!*********************************************************************************!*\
  !*** ./node_modules/vega-functions/node_modules/d3-geo/src/projection/conic.js ***!
  \*********************************************************************************/
/*! exports provided: conicProjection */
/***/ (function(module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"conicProjection\", function() { return conicProjection; });\n/* harmony import */ var _math_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../math.js */ \"./node_modules/vega-functions/node_modules/d3-geo/src/math.js\");\n/* harmony import */ var _index_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./index.js */ \"./node_modules/vega-functions/node_modules/d3-geo/src/projection/index.js\");\n\n\n\nfunction conicProjection(projectAt) {\n  var phi0 = 0,\n      phi1 = _math_js__WEBPACK_IMPORTED_MODULE_0__[\"pi\"] / 3,\n      m = Object(_index_js__WEBPACK_IMPORTED_MODULE_1__[\"projectionMutator\"])(projectAt),\n      p = m(phi0, phi1);\n\n  p.parallels = function(_) {\n    return arguments.length ? m(phi0 = _[0] * _math_js__WEBPACK_IMPORTED_MODULE_0__[\"radians\"], phi1 = _[1] * _math_js__WEBPACK_IMPORTED_MODULE_0__[\"radians\"]) : [phi0 * _math_js__WEBPACK_IMPORTED_MODULE_0__[\"degrees\"], phi1 * _math_js__WEBPACK_IMPORTED_MODULE_0__[\"degrees\"]];\n  };\n\n  return p;\n}\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvdmVnYS1mdW5jdGlvbnMvbm9kZV9tb2R1bGVzL2QzLWdlby9zcmMvcHJvamVjdGlvbi9jb25pYy5qcy5qcyIsInNvdXJjZXMiOlsid2VicGFjazovLy8uL25vZGVfbW9kdWxlcy92ZWdhLWZ1bmN0aW9ucy9ub2RlX21vZHVsZXMvZDMtZ2VvL3NyYy9wcm9qZWN0aW9uL2NvbmljLmpzP2IyNWEiXSwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtkZWdyZWVzLCBwaSwgcmFkaWFuc30gZnJvbSBcIi4uL21hdGguanNcIjtcbmltcG9ydCB7cHJvamVjdGlvbk11dGF0b3J9IGZyb20gXCIuL2luZGV4LmpzXCI7XG5cbmV4cG9ydCBmdW5jdGlvbiBjb25pY1Byb2plY3Rpb24ocHJvamVjdEF0KSB7XG4gIHZhciBwaGkwID0gMCxcbiAgICAgIHBoaTEgPSBwaSAvIDMsXG4gICAgICBtID0gcHJvamVjdGlvbk11dGF0b3IocHJvamVjdEF0KSxcbiAgICAgIHAgPSBtKHBoaTAsIHBoaTEpO1xuXG4gIHAucGFyYWxsZWxzID0gZnVuY3Rpb24oXykge1xuICAgIHJldHVybiBhcmd1bWVudHMubGVuZ3RoID8gbShwaGkwID0gX1swXSAqIHJhZGlhbnMsIHBoaTEgPSBfWzFdICogcmFkaWFucykgOiBbcGhpMCAqIGRlZ3JlZXMsIHBoaTEgKiBkZWdyZWVzXTtcbiAgfTtcblxuICByZXR1cm4gcDtcbn1cbiJdLCJtYXBwaW5ncyI6IkFBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7Iiwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///./node_modules/vega-functions/node_modules/d3-geo/src/projection/conic.js\n");

/***/ }),

/***/ "./node_modules/vega-functions/node_modules/d3-geo/src/projection/conicConformal.js":
/*!******************************************************************************************!*\
  !*** ./node_modules/vega-functions/node_modules/d3-geo/src/projection/conicConformal.js ***!
  \******************************************************************************************/
/*! exports provided: conicConformalRaw, default */
/***/ (function(module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"conicConformalRaw\", function() { return conicConformalRaw; });\n/* harmony import */ var _math_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../math.js */ \"./node_modules/vega-functions/node_modules/d3-geo/src/math.js\");\n/* harmony import */ var _conic_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./conic.js */ \"./node_modules/vega-functions/node_modules/d3-geo/src/projection/conic.js\");\n/* harmony import */ var _mercator_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./mercator.js */ \"./node_modules/vega-functions/node_modules/d3-geo/src/projection/mercator.js\");\n\n\n\n\nfunction tany(y) {\n  return Object(_math_js__WEBPACK_IMPORTED_MODULE_0__[\"tan\"])((_math_js__WEBPACK_IMPORTED_MODULE_0__[\"halfPi\"] + y) / 2);\n}\n\nfunction conicConformalRaw(y0, y1) {\n  var cy0 = Object(_math_js__WEBPACK_IMPORTED_MODULE_0__[\"cos\"])(y0),\n      n = y0 === y1 ? Object(_math_js__WEBPACK_IMPORTED_MODULE_0__[\"sin\"])(y0) : Object(_math_js__WEBPACK_IMPORTED_MODULE_0__[\"log\"])(cy0 / Object(_math_js__WEBPACK_IMPORTED_MODULE_0__[\"cos\"])(y1)) / Object(_math_js__WEBPACK_IMPORTED_MODULE_0__[\"log\"])(tany(y1) / tany(y0)),\n      f = cy0 * Object(_math_js__WEBPACK_IMPORTED_MODULE_0__[\"pow\"])(tany(y0), n) / n;\n\n  if (!n) return _mercator_js__WEBPACK_IMPORTED_MODULE_2__[\"mercatorRaw\"];\n\n  function project(x, y) {\n    if (f > 0) { if (y < -_math_js__WEBPACK_IMPORTED_MODULE_0__[\"halfPi\"] + _math_js__WEBPACK_IMPORTED_MODULE_0__[\"epsilon\"]) y = -_math_js__WEBPACK_IMPORTED_MODULE_0__[\"halfPi\"] + _math_js__WEBPACK_IMPORTED_MODULE_0__[\"epsilon\"]; }\n    else { if (y > _math_js__WEBPACK_IMPORTED_MODULE_0__[\"halfPi\"] - _math_js__WEBPACK_IMPORTED_MODULE_0__[\"epsilon\"]) y = _math_js__WEBPACK_IMPORTED_MODULE_0__[\"halfPi\"] - _math_js__WEBPACK_IMPORTED_MODULE_0__[\"epsilon\"]; }\n    var r = f / Object(_math_js__WEBPACK_IMPORTED_MODULE_0__[\"pow\"])(tany(y), n);\n    return [r * Object(_math_js__WEBPACK_IMPORTED_MODULE_0__[\"sin\"])(n * x), f - r * Object(_math_js__WEBPACK_IMPORTED_MODULE_0__[\"cos\"])(n * x)];\n  }\n\n  project.invert = function(x, y) {\n    var fy = f - y, r = Object(_math_js__WEBPACK_IMPORTED_MODULE_0__[\"sign\"])(n) * Object(_math_js__WEBPACK_IMPORTED_MODULE_0__[\"sqrt\"])(x * x + fy * fy),\n      l = Object(_math_js__WEBPACK_IMPORTED_MODULE_0__[\"atan2\"])(x, Object(_math_js__WEBPACK_IMPORTED_MODULE_0__[\"abs\"])(fy)) * Object(_math_js__WEBPACK_IMPORTED_MODULE_0__[\"sign\"])(fy);\n    if (fy * n < 0)\n      l -= _math_js__WEBPACK_IMPORTED_MODULE_0__[\"pi\"] * Object(_math_js__WEBPACK_IMPORTED_MODULE_0__[\"sign\"])(x) * Object(_math_js__WEBPACK_IMPORTED_MODULE_0__[\"sign\"])(fy);\n    return [l / n, 2 * Object(_math_js__WEBPACK_IMPORTED_MODULE_0__[\"atan\"])(Object(_math_js__WEBPACK_IMPORTED_MODULE_0__[\"pow\"])(f / r, 1 / n)) - _math_js__WEBPACK_IMPORTED_MODULE_0__[\"halfPi\"]];\n  };\n\n  return project;\n}\n\n/* harmony default export */ __webpack_exports__[\"default\"] = (function() {\n  return Object(_conic_js__WEBPACK_IMPORTED_MODULE_1__[\"conicProjection\"])(conicConformalRaw)\n      .scale(109.5)\n      .parallels([30, 30]);\n});\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvdmVnYS1mdW5jdGlvbnMvbm9kZV9tb2R1bGVzL2QzLWdlby9zcmMvcHJvamVjdGlvbi9jb25pY0NvbmZvcm1hbC5qcy5qcyIsInNvdXJjZXMiOlsid2VicGFjazovLy8uL25vZGVfbW9kdWxlcy92ZWdhLWZ1bmN0aW9ucy9ub2RlX21vZHVsZXMvZDMtZ2VvL3NyYy9wcm9qZWN0aW9uL2NvbmljQ29uZm9ybWFsLmpzP2FmMDIiXSwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHthYnMsIGF0YW4sIGF0YW4yLCBjb3MsIGVwc2lsb24sIGhhbGZQaSwgbG9nLCBwaSwgcG93LCBzaWduLCBzaW4sIHNxcnQsIHRhbn0gZnJvbSBcIi4uL21hdGguanNcIjtcbmltcG9ydCB7Y29uaWNQcm9qZWN0aW9ufSBmcm9tIFwiLi9jb25pYy5qc1wiO1xuaW1wb3J0IHttZXJjYXRvclJhd30gZnJvbSBcIi4vbWVyY2F0b3IuanNcIjtcblxuZnVuY3Rpb24gdGFueSh5KSB7XG4gIHJldHVybiB0YW4oKGhhbGZQaSArIHkpIC8gMik7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBjb25pY0NvbmZvcm1hbFJhdyh5MCwgeTEpIHtcbiAgdmFyIGN5MCA9IGNvcyh5MCksXG4gICAgICBuID0geTAgPT09IHkxID8gc2luKHkwKSA6IGxvZyhjeTAgLyBjb3MoeTEpKSAvIGxvZyh0YW55KHkxKSAvIHRhbnkoeTApKSxcbiAgICAgIGYgPSBjeTAgKiBwb3codGFueSh5MCksIG4pIC8gbjtcblxuICBpZiAoIW4pIHJldHVybiBtZXJjYXRvclJhdztcblxuICBmdW5jdGlvbiBwcm9qZWN0KHgsIHkpIHtcbiAgICBpZiAoZiA+IDApIHsgaWYgKHkgPCAtaGFsZlBpICsgZXBzaWxvbikgeSA9IC1oYWxmUGkgKyBlcHNpbG9uOyB9XG4gICAgZWxzZSB7IGlmICh5ID4gaGFsZlBpIC0gZXBzaWxvbikgeSA9IGhhbGZQaSAtIGVwc2lsb247IH1cbiAgICB2YXIgciA9IGYgLyBwb3codGFueSh5KSwgbik7XG4gICAgcmV0dXJuIFtyICogc2luKG4gKiB4KSwgZiAtIHIgKiBjb3MobiAqIHgpXTtcbiAgfVxuXG4gIHByb2plY3QuaW52ZXJ0ID0gZnVuY3Rpb24oeCwgeSkge1xuICAgIHZhciBmeSA9IGYgLSB5LCByID0gc2lnbihuKSAqIHNxcnQoeCAqIHggKyBmeSAqIGZ5KSxcbiAgICAgIGwgPSBhdGFuMih4LCBhYnMoZnkpKSAqIHNpZ24oZnkpO1xuICAgIGlmIChmeSAqIG4gPCAwKVxuICAgICAgbCAtPSBwaSAqIHNpZ24oeCkgKiBzaWduKGZ5KTtcbiAgICByZXR1cm4gW2wgLyBuLCAyICogYXRhbihwb3coZiAvIHIsIDEgLyBuKSkgLSBoYWxmUGldO1xuICB9O1xuXG4gIHJldHVybiBwcm9qZWN0O1xufVxuXG5leHBvcnQgZGVmYXVsdCBmdW5jdGlvbigpIHtcbiAgcmV0dXJuIGNvbmljUHJvamVjdGlvbihjb25pY0NvbmZvcm1hbFJhdylcbiAgICAgIC5zY2FsZSgxMDkuNSlcbiAgICAgIC5wYXJhbGxlbHMoWzMwLCAzMF0pO1xufVxuIl0sIm1hcHBpbmdzIjoiQUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTsiLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///./node_modules/vega-functions/node_modules/d3-geo/src/projection/conicConformal.js\n");

/***/ }),

/***/ "./node_modules/vega-functions/node_modules/d3-geo/src/projection/conicEqualArea.js":
/*!******************************************************************************************!*\
  !*** ./node_modules/vega-functions/node_modules/d3-geo/src/projection/conicEqualArea.js ***!
  \******************************************************************************************/
/*! exports provided: conicEqualAreaRaw, default */
/***/ (function(module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"conicEqualAreaRaw\", function() { return conicEqualAreaRaw; });\n/* harmony import */ var _math_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../math.js */ \"./node_modules/vega-functions/node_modules/d3-geo/src/math.js\");\n/* harmony import */ var _conic_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./conic.js */ \"./node_modules/vega-functions/node_modules/d3-geo/src/projection/conic.js\");\n/* harmony import */ var _cylindricalEqualArea_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./cylindricalEqualArea.js */ \"./node_modules/vega-functions/node_modules/d3-geo/src/projection/cylindricalEqualArea.js\");\n\n\n\n\nfunction conicEqualAreaRaw(y0, y1) {\n  var sy0 = Object(_math_js__WEBPACK_IMPORTED_MODULE_0__[\"sin\"])(y0), n = (sy0 + Object(_math_js__WEBPACK_IMPORTED_MODULE_0__[\"sin\"])(y1)) / 2;\n\n  // Are the parallels symmetrical around the Equator?\n  if (Object(_math_js__WEBPACK_IMPORTED_MODULE_0__[\"abs\"])(n) < _math_js__WEBPACK_IMPORTED_MODULE_0__[\"epsilon\"]) return Object(_cylindricalEqualArea_js__WEBPACK_IMPORTED_MODULE_2__[\"cylindricalEqualAreaRaw\"])(y0);\n\n  var c = 1 + sy0 * (2 * n - sy0), r0 = Object(_math_js__WEBPACK_IMPORTED_MODULE_0__[\"sqrt\"])(c) / n;\n\n  function project(x, y) {\n    var r = Object(_math_js__WEBPACK_IMPORTED_MODULE_0__[\"sqrt\"])(c - 2 * n * Object(_math_js__WEBPACK_IMPORTED_MODULE_0__[\"sin\"])(y)) / n;\n    return [r * Object(_math_js__WEBPACK_IMPORTED_MODULE_0__[\"sin\"])(x *= n), r0 - r * Object(_math_js__WEBPACK_IMPORTED_MODULE_0__[\"cos\"])(x)];\n  }\n\n  project.invert = function(x, y) {\n    var r0y = r0 - y,\n        l = Object(_math_js__WEBPACK_IMPORTED_MODULE_0__[\"atan2\"])(x, Object(_math_js__WEBPACK_IMPORTED_MODULE_0__[\"abs\"])(r0y)) * Object(_math_js__WEBPACK_IMPORTED_MODULE_0__[\"sign\"])(r0y);\n    if (r0y * n < 0)\n      l -= _math_js__WEBPACK_IMPORTED_MODULE_0__[\"pi\"] * Object(_math_js__WEBPACK_IMPORTED_MODULE_0__[\"sign\"])(x) * Object(_math_js__WEBPACK_IMPORTED_MODULE_0__[\"sign\"])(r0y);\n    return [l / n, Object(_math_js__WEBPACK_IMPORTED_MODULE_0__[\"asin\"])((c - (x * x + r0y * r0y) * n * n) / (2 * n))];\n  };\n\n  return project;\n}\n\n/* harmony default export */ __webpack_exports__[\"default\"] = (function() {\n  return Object(_conic_js__WEBPACK_IMPORTED_MODULE_1__[\"conicProjection\"])(conicEqualAreaRaw)\n      .scale(155.424)\n      .center([0, 33.6442]);\n});\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvdmVnYS1mdW5jdGlvbnMvbm9kZV9tb2R1bGVzL2QzLWdlby9zcmMvcHJvamVjdGlvbi9jb25pY0VxdWFsQXJlYS5qcy5qcyIsInNvdXJjZXMiOlsid2VicGFjazovLy8uL25vZGVfbW9kdWxlcy92ZWdhLWZ1bmN0aW9ucy9ub2RlX21vZHVsZXMvZDMtZ2VvL3NyYy9wcm9qZWN0aW9uL2NvbmljRXF1YWxBcmVhLmpzPzVmODIiXSwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHthYnMsIGFzaW4sIGF0YW4yLCBjb3MsIGVwc2lsb24sIHBpLCBzaWduLCBzaW4sIHNxcnR9IGZyb20gXCIuLi9tYXRoLmpzXCI7XG5pbXBvcnQge2NvbmljUHJvamVjdGlvbn0gZnJvbSBcIi4vY29uaWMuanNcIjtcbmltcG9ydCB7Y3lsaW5kcmljYWxFcXVhbEFyZWFSYXd9IGZyb20gXCIuL2N5bGluZHJpY2FsRXF1YWxBcmVhLmpzXCI7XG5cbmV4cG9ydCBmdW5jdGlvbiBjb25pY0VxdWFsQXJlYVJhdyh5MCwgeTEpIHtcbiAgdmFyIHN5MCA9IHNpbih5MCksIG4gPSAoc3kwICsgc2luKHkxKSkgLyAyO1xuXG4gIC8vIEFyZSB0aGUgcGFyYWxsZWxzIHN5bW1ldHJpY2FsIGFyb3VuZCB0aGUgRXF1YXRvcj9cbiAgaWYgKGFicyhuKSA8IGVwc2lsb24pIHJldHVybiBjeWxpbmRyaWNhbEVxdWFsQXJlYVJhdyh5MCk7XG5cbiAgdmFyIGMgPSAxICsgc3kwICogKDIgKiBuIC0gc3kwKSwgcjAgPSBzcXJ0KGMpIC8gbjtcblxuICBmdW5jdGlvbiBwcm9qZWN0KHgsIHkpIHtcbiAgICB2YXIgciA9IHNxcnQoYyAtIDIgKiBuICogc2luKHkpKSAvIG47XG4gICAgcmV0dXJuIFtyICogc2luKHggKj0gbiksIHIwIC0gciAqIGNvcyh4KV07XG4gIH1cblxuICBwcm9qZWN0LmludmVydCA9IGZ1bmN0aW9uKHgsIHkpIHtcbiAgICB2YXIgcjB5ID0gcjAgLSB5LFxuICAgICAgICBsID0gYXRhbjIoeCwgYWJzKHIweSkpICogc2lnbihyMHkpO1xuICAgIGlmIChyMHkgKiBuIDwgMClcbiAgICAgIGwgLT0gcGkgKiBzaWduKHgpICogc2lnbihyMHkpO1xuICAgIHJldHVybiBbbCAvIG4sIGFzaW4oKGMgLSAoeCAqIHggKyByMHkgKiByMHkpICogbiAqIG4pIC8gKDIgKiBuKSldO1xuICB9O1xuXG4gIHJldHVybiBwcm9qZWN0O1xufVxuXG5leHBvcnQgZGVmYXVsdCBmdW5jdGlvbigpIHtcbiAgcmV0dXJuIGNvbmljUHJvamVjdGlvbihjb25pY0VxdWFsQXJlYVJhdylcbiAgICAgIC5zY2FsZSgxNTUuNDI0KVxuICAgICAgLmNlbnRlcihbMCwgMzMuNjQ0Ml0pO1xufVxuIl0sIm1hcHBpbmdzIjoiQUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOyIsInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///./node_modules/vega-functions/node_modules/d3-geo/src/projection/conicEqualArea.js\n");

/***/ }),

/***/ "./node_modules/vega-functions/node_modules/d3-geo/src/projection/conicEquidistant.js":
/*!********************************************************************************************!*\
  !*** ./node_modules/vega-functions/node_modules/d3-geo/src/projection/conicEquidistant.js ***!
  \********************************************************************************************/
/*! exports provided: conicEquidistantRaw, default */
/***/ (function(module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"conicEquidistantRaw\", function() { return conicEquidistantRaw; });\n/* harmony import */ var _math_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../math.js */ \"./node_modules/vega-functions/node_modules/d3-geo/src/math.js\");\n/* harmony import */ var _conic_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./conic.js */ \"./node_modules/vega-functions/node_modules/d3-geo/src/projection/conic.js\");\n/* harmony import */ var _equirectangular_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./equirectangular.js */ \"./node_modules/vega-functions/node_modules/d3-geo/src/projection/equirectangular.js\");\n\n\n\n\nfunction conicEquidistantRaw(y0, y1) {\n  var cy0 = Object(_math_js__WEBPACK_IMPORTED_MODULE_0__[\"cos\"])(y0),\n      n = y0 === y1 ? Object(_math_js__WEBPACK_IMPORTED_MODULE_0__[\"sin\"])(y0) : (cy0 - Object(_math_js__WEBPACK_IMPORTED_MODULE_0__[\"cos\"])(y1)) / (y1 - y0),\n      g = cy0 / n + y0;\n\n  if (Object(_math_js__WEBPACK_IMPORTED_MODULE_0__[\"abs\"])(n) < _math_js__WEBPACK_IMPORTED_MODULE_0__[\"epsilon\"]) return _equirectangular_js__WEBPACK_IMPORTED_MODULE_2__[\"equirectangularRaw\"];\n\n  function project(x, y) {\n    var gy = g - y, nx = n * x;\n    return [gy * Object(_math_js__WEBPACK_IMPORTED_MODULE_0__[\"sin\"])(nx), g - gy * Object(_math_js__WEBPACK_IMPORTED_MODULE_0__[\"cos\"])(nx)];\n  }\n\n  project.invert = function(x, y) {\n    var gy = g - y,\n        l = Object(_math_js__WEBPACK_IMPORTED_MODULE_0__[\"atan2\"])(x, Object(_math_js__WEBPACK_IMPORTED_MODULE_0__[\"abs\"])(gy)) * Object(_math_js__WEBPACK_IMPORTED_MODULE_0__[\"sign\"])(gy);\n    if (gy * n < 0)\n      l -= _math_js__WEBPACK_IMPORTED_MODULE_0__[\"pi\"] * Object(_math_js__WEBPACK_IMPORTED_MODULE_0__[\"sign\"])(x) * Object(_math_js__WEBPACK_IMPORTED_MODULE_0__[\"sign\"])(gy);\n    return [l / n, g - Object(_math_js__WEBPACK_IMPORTED_MODULE_0__[\"sign\"])(n) * Object(_math_js__WEBPACK_IMPORTED_MODULE_0__[\"sqrt\"])(x * x + gy * gy)];\n  };\n\n  return project;\n}\n\n/* harmony default export */ __webpack_exports__[\"default\"] = (function() {\n  return Object(_conic_js__WEBPACK_IMPORTED_MODULE_1__[\"conicProjection\"])(conicEquidistantRaw)\n      .scale(131.154)\n      .center([0, 13.9389]);\n});\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvdmVnYS1mdW5jdGlvbnMvbm9kZV9tb2R1bGVzL2QzLWdlby9zcmMvcHJvamVjdGlvbi9jb25pY0VxdWlkaXN0YW50LmpzLmpzIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL3ZlZ2EtZnVuY3Rpb25zL25vZGVfbW9kdWxlcy9kMy1nZW8vc3JjL3Byb2plY3Rpb24vY29uaWNFcXVpZGlzdGFudC5qcz81ZWY0Il0sInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7YWJzLCBhdGFuMiwgY29zLCBlcHNpbG9uLCBwaSwgc2lnbiwgc2luLCBzcXJ0fSBmcm9tIFwiLi4vbWF0aC5qc1wiO1xuaW1wb3J0IHtjb25pY1Byb2plY3Rpb259IGZyb20gXCIuL2NvbmljLmpzXCI7XG5pbXBvcnQge2VxdWlyZWN0YW5ndWxhclJhd30gZnJvbSBcIi4vZXF1aXJlY3Rhbmd1bGFyLmpzXCI7XG5cbmV4cG9ydCBmdW5jdGlvbiBjb25pY0VxdWlkaXN0YW50UmF3KHkwLCB5MSkge1xuICB2YXIgY3kwID0gY29zKHkwKSxcbiAgICAgIG4gPSB5MCA9PT0geTEgPyBzaW4oeTApIDogKGN5MCAtIGNvcyh5MSkpIC8gKHkxIC0geTApLFxuICAgICAgZyA9IGN5MCAvIG4gKyB5MDtcblxuICBpZiAoYWJzKG4pIDwgZXBzaWxvbikgcmV0dXJuIGVxdWlyZWN0YW5ndWxhclJhdztcblxuICBmdW5jdGlvbiBwcm9qZWN0KHgsIHkpIHtcbiAgICB2YXIgZ3kgPSBnIC0geSwgbnggPSBuICogeDtcbiAgICByZXR1cm4gW2d5ICogc2luKG54KSwgZyAtIGd5ICogY29zKG54KV07XG4gIH1cblxuICBwcm9qZWN0LmludmVydCA9IGZ1bmN0aW9uKHgsIHkpIHtcbiAgICB2YXIgZ3kgPSBnIC0geSxcbiAgICAgICAgbCA9IGF0YW4yKHgsIGFicyhneSkpICogc2lnbihneSk7XG4gICAgaWYgKGd5ICogbiA8IDApXG4gICAgICBsIC09IHBpICogc2lnbih4KSAqIHNpZ24oZ3kpO1xuICAgIHJldHVybiBbbCAvIG4sIGcgLSBzaWduKG4pICogc3FydCh4ICogeCArIGd5ICogZ3kpXTtcbiAgfTtcblxuICByZXR1cm4gcHJvamVjdDtcbn1cblxuZXhwb3J0IGRlZmF1bHQgZnVuY3Rpb24oKSB7XG4gIHJldHVybiBjb25pY1Byb2plY3Rpb24oY29uaWNFcXVpZGlzdGFudFJhdylcbiAgICAgIC5zY2FsZSgxMzEuMTU0KVxuICAgICAgLmNlbnRlcihbMCwgMTMuOTM4OV0pO1xufVxuIl0sIm1hcHBpbmdzIjoiQUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTsiLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///./node_modules/vega-functions/node_modules/d3-geo/src/projection/conicEquidistant.js\n");

/***/ }),

/***/ "./node_modules/vega-functions/node_modules/d3-geo/src/projection/cylindricalEqualArea.js":
/*!************************************************************************************************!*\
  !*** ./node_modules/vega-functions/node_modules/d3-geo/src/projection/cylindricalEqualArea.js ***!
  \************************************************************************************************/
/*! exports provided: cylindricalEqualAreaRaw */
/***/ (function(module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"cylindricalEqualAreaRaw\", function() { return cylindricalEqualAreaRaw; });\n/* harmony import */ var _math_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../math.js */ \"./node_modules/vega-functions/node_modules/d3-geo/src/math.js\");\n\n\nfunction cylindricalEqualAreaRaw(phi0) {\n  var cosPhi0 = Object(_math_js__WEBPACK_IMPORTED_MODULE_0__[\"cos\"])(phi0);\n\n  function forward(lambda, phi) {\n    return [lambda * cosPhi0, Object(_math_js__WEBPACK_IMPORTED_MODULE_0__[\"sin\"])(phi) / cosPhi0];\n  }\n\n  forward.invert = function(x, y) {\n    return [x / cosPhi0, Object(_math_js__WEBPACK_IMPORTED_MODULE_0__[\"asin\"])(y * cosPhi0)];\n  };\n\n  return forward;\n}\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvdmVnYS1mdW5jdGlvbnMvbm9kZV9tb2R1bGVzL2QzLWdlby9zcmMvcHJvamVjdGlvbi9jeWxpbmRyaWNhbEVxdWFsQXJlYS5qcy5qcyIsInNvdXJjZXMiOlsid2VicGFjazovLy8uL25vZGVfbW9kdWxlcy92ZWdhLWZ1bmN0aW9ucy9ub2RlX21vZHVsZXMvZDMtZ2VvL3NyYy9wcm9qZWN0aW9uL2N5bGluZHJpY2FsRXF1YWxBcmVhLmpzP2RlNTciXSwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHthc2luLCBjb3MsIHNpbn0gZnJvbSBcIi4uL21hdGguanNcIjtcblxuZXhwb3J0IGZ1bmN0aW9uIGN5bGluZHJpY2FsRXF1YWxBcmVhUmF3KHBoaTApIHtcbiAgdmFyIGNvc1BoaTAgPSBjb3MocGhpMCk7XG5cbiAgZnVuY3Rpb24gZm9yd2FyZChsYW1iZGEsIHBoaSkge1xuICAgIHJldHVybiBbbGFtYmRhICogY29zUGhpMCwgc2luKHBoaSkgLyBjb3NQaGkwXTtcbiAgfVxuXG4gIGZvcndhcmQuaW52ZXJ0ID0gZnVuY3Rpb24oeCwgeSkge1xuICAgIHJldHVybiBbeCAvIGNvc1BoaTAsIGFzaW4oeSAqIGNvc1BoaTApXTtcbiAgfTtcblxuICByZXR1cm4gZm9yd2FyZDtcbn1cbiJdLCJtYXBwaW5ncyI6IkFBQUE7QUFBQTtBQUFBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOyIsInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///./node_modules/vega-functions/node_modules/d3-geo/src/projection/cylindricalEqualArea.js\n");

/***/ }),

/***/ "./node_modules/vega-functions/node_modules/d3-geo/src/projection/equalEarth.js":
/*!**************************************************************************************!*\
  !*** ./node_modules/vega-functions/node_modules/d3-geo/src/projection/equalEarth.js ***!
  \**************************************************************************************/
/*! exports provided: equalEarthRaw, default */
/***/ (function(module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"equalEarthRaw\", function() { return equalEarthRaw; });\n/* harmony import */ var _index_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./index.js */ \"./node_modules/vega-functions/node_modules/d3-geo/src/projection/index.js\");\n/* harmony import */ var _math_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../math.js */ \"./node_modules/vega-functions/node_modules/d3-geo/src/math.js\");\n\n\n\nvar A1 = 1.340264,\n    A2 = -0.081106,\n    A3 = 0.000893,\n    A4 = 0.003796,\n    M = Object(_math_js__WEBPACK_IMPORTED_MODULE_1__[\"sqrt\"])(3) / 2,\n    iterations = 12;\n\nfunction equalEarthRaw(lambda, phi) {\n  var l = Object(_math_js__WEBPACK_IMPORTED_MODULE_1__[\"asin\"])(M * Object(_math_js__WEBPACK_IMPORTED_MODULE_1__[\"sin\"])(phi)), l2 = l * l, l6 = l2 * l2 * l2;\n  return [\n    lambda * Object(_math_js__WEBPACK_IMPORTED_MODULE_1__[\"cos\"])(l) / (M * (A1 + 3 * A2 * l2 + l6 * (7 * A3 + 9 * A4 * l2))),\n    l * (A1 + A2 * l2 + l6 * (A3 + A4 * l2))\n  ];\n}\n\nequalEarthRaw.invert = function(x, y) {\n  var l = y, l2 = l * l, l6 = l2 * l2 * l2;\n  for (var i = 0, delta, fy, fpy; i < iterations; ++i) {\n    fy = l * (A1 + A2 * l2 + l6 * (A3 + A4 * l2)) - y;\n    fpy = A1 + 3 * A2 * l2 + l6 * (7 * A3 + 9 * A4 * l2);\n    l -= delta = fy / fpy, l2 = l * l, l6 = l2 * l2 * l2;\n    if (Object(_math_js__WEBPACK_IMPORTED_MODULE_1__[\"abs\"])(delta) < _math_js__WEBPACK_IMPORTED_MODULE_1__[\"epsilon2\"]) break;\n  }\n  return [\n    M * x * (A1 + 3 * A2 * l2 + l6 * (7 * A3 + 9 * A4 * l2)) / Object(_math_js__WEBPACK_IMPORTED_MODULE_1__[\"cos\"])(l),\n    Object(_math_js__WEBPACK_IMPORTED_MODULE_1__[\"asin\"])(Object(_math_js__WEBPACK_IMPORTED_MODULE_1__[\"sin\"])(l) / M)\n  ];\n};\n\n/* harmony default export */ __webpack_exports__[\"default\"] = (function() {\n  return Object(_index_js__WEBPACK_IMPORTED_MODULE_0__[\"default\"])(equalEarthRaw)\n      .scale(177.158);\n});\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvdmVnYS1mdW5jdGlvbnMvbm9kZV9tb2R1bGVzL2QzLWdlby9zcmMvcHJvamVjdGlvbi9lcXVhbEVhcnRoLmpzLmpzIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL3ZlZ2EtZnVuY3Rpb25zL25vZGVfbW9kdWxlcy9kMy1nZW8vc3JjL3Byb2plY3Rpb24vZXF1YWxFYXJ0aC5qcz8xYjM2Il0sInNvdXJjZXNDb250ZW50IjpbImltcG9ydCBwcm9qZWN0aW9uIGZyb20gXCIuL2luZGV4LmpzXCI7XG5pbXBvcnQge2FicywgYXNpbiwgY29zLCBlcHNpbG9uMiwgc2luLCBzcXJ0fSBmcm9tIFwiLi4vbWF0aC5qc1wiO1xuXG52YXIgQTEgPSAxLjM0MDI2NCxcbiAgICBBMiA9IC0wLjA4MTEwNixcbiAgICBBMyA9IDAuMDAwODkzLFxuICAgIEE0ID0gMC4wMDM3OTYsXG4gICAgTSA9IHNxcnQoMykgLyAyLFxuICAgIGl0ZXJhdGlvbnMgPSAxMjtcblxuZXhwb3J0IGZ1bmN0aW9uIGVxdWFsRWFydGhSYXcobGFtYmRhLCBwaGkpIHtcbiAgdmFyIGwgPSBhc2luKE0gKiBzaW4ocGhpKSksIGwyID0gbCAqIGwsIGw2ID0gbDIgKiBsMiAqIGwyO1xuICByZXR1cm4gW1xuICAgIGxhbWJkYSAqIGNvcyhsKSAvIChNICogKEExICsgMyAqIEEyICogbDIgKyBsNiAqICg3ICogQTMgKyA5ICogQTQgKiBsMikpKSxcbiAgICBsICogKEExICsgQTIgKiBsMiArIGw2ICogKEEzICsgQTQgKiBsMikpXG4gIF07XG59XG5cbmVxdWFsRWFydGhSYXcuaW52ZXJ0ID0gZnVuY3Rpb24oeCwgeSkge1xuICB2YXIgbCA9IHksIGwyID0gbCAqIGwsIGw2ID0gbDIgKiBsMiAqIGwyO1xuICBmb3IgKHZhciBpID0gMCwgZGVsdGEsIGZ5LCBmcHk7IGkgPCBpdGVyYXRpb25zOyArK2kpIHtcbiAgICBmeSA9IGwgKiAoQTEgKyBBMiAqIGwyICsgbDYgKiAoQTMgKyBBNCAqIGwyKSkgLSB5O1xuICAgIGZweSA9IEExICsgMyAqIEEyICogbDIgKyBsNiAqICg3ICogQTMgKyA5ICogQTQgKiBsMik7XG4gICAgbCAtPSBkZWx0YSA9IGZ5IC8gZnB5LCBsMiA9IGwgKiBsLCBsNiA9IGwyICogbDIgKiBsMjtcbiAgICBpZiAoYWJzKGRlbHRhKSA8IGVwc2lsb24yKSBicmVhaztcbiAgfVxuICByZXR1cm4gW1xuICAgIE0gKiB4ICogKEExICsgMyAqIEEyICogbDIgKyBsNiAqICg3ICogQTMgKyA5ICogQTQgKiBsMikpIC8gY29zKGwpLFxuICAgIGFzaW4oc2luKGwpIC8gTSlcbiAgXTtcbn07XG5cbmV4cG9ydCBkZWZhdWx0IGZ1bmN0aW9uKCkge1xuICByZXR1cm4gcHJvamVjdGlvbihlcXVhbEVhcnRoUmF3KVxuICAgICAgLnNjYWxlKDE3Ny4xNTgpO1xufVxuIl0sIm1hcHBpbmdzIjoiQUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTsiLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///./node_modules/vega-functions/node_modules/d3-geo/src/projection/equalEarth.js\n");

/***/ }),

/***/ "./node_modules/vega-functions/node_modules/d3-geo/src/projection/equirectangular.js":
/*!*******************************************************************************************!*\
  !*** ./node_modules/vega-functions/node_modules/d3-geo/src/projection/equirectangular.js ***!
  \*******************************************************************************************/
/*! exports provided: equirectangularRaw, default */
/***/ (function(module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"equirectangularRaw\", function() { return equirectangularRaw; });\n/* harmony import */ var _index_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./index.js */ \"./node_modules/vega-functions/node_modules/d3-geo/src/projection/index.js\");\n\n\nfunction equirectangularRaw(lambda, phi) {\n  return [lambda, phi];\n}\n\nequirectangularRaw.invert = equirectangularRaw;\n\n/* harmony default export */ __webpack_exports__[\"default\"] = (function() {\n  return Object(_index_js__WEBPACK_IMPORTED_MODULE_0__[\"default\"])(equirectangularRaw)\n      .scale(152.63);\n});\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvdmVnYS1mdW5jdGlvbnMvbm9kZV9tb2R1bGVzL2QzLWdlby9zcmMvcHJvamVjdGlvbi9lcXVpcmVjdGFuZ3VsYXIuanMuanMiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvdmVnYS1mdW5jdGlvbnMvbm9kZV9tb2R1bGVzL2QzLWdlby9zcmMvcHJvamVjdGlvbi9lcXVpcmVjdGFuZ3VsYXIuanM/MjQ5MiJdLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgcHJvamVjdGlvbiBmcm9tIFwiLi9pbmRleC5qc1wiO1xuXG5leHBvcnQgZnVuY3Rpb24gZXF1aXJlY3Rhbmd1bGFyUmF3KGxhbWJkYSwgcGhpKSB7XG4gIHJldHVybiBbbGFtYmRhLCBwaGldO1xufVxuXG5lcXVpcmVjdGFuZ3VsYXJSYXcuaW52ZXJ0ID0gZXF1aXJlY3Rhbmd1bGFyUmF3O1xuXG5leHBvcnQgZGVmYXVsdCBmdW5jdGlvbigpIHtcbiAgcmV0dXJuIHByb2plY3Rpb24oZXF1aXJlY3Rhbmd1bGFyUmF3KVxuICAgICAgLnNjYWxlKDE1Mi42Myk7XG59XG4iXSwibWFwcGluZ3MiOiJBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTsiLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///./node_modules/vega-functions/node_modules/d3-geo/src/projection/equirectangular.js\n");

/***/ }),

/***/ "./node_modules/vega-functions/node_modules/d3-geo/src/projection/fit.js":
/*!*******************************************************************************!*\
  !*** ./node_modules/vega-functions/node_modules/d3-geo/src/projection/fit.js ***!
  \*******************************************************************************/
/*! exports provided: fitExtent, fitSize, fitWidth, fitHeight */
/***/ (function(module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"fitExtent\", function() { return fitExtent; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"fitSize\", function() { return fitSize; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"fitWidth\", function() { return fitWidth; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"fitHeight\", function() { return fitHeight; });\n/* harmony import */ var _stream_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../stream.js */ \"./node_modules/vega-functions/node_modules/d3-geo/src/stream.js\");\n/* harmony import */ var _path_bounds_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../path/bounds.js */ \"./node_modules/vega-functions/node_modules/d3-geo/src/path/bounds.js\");\n\n\n\nfunction fit(projection, fitBounds, object) {\n  var clip = projection.clipExtent && projection.clipExtent();\n  projection.scale(150).translate([0, 0]);\n  if (clip != null) projection.clipExtent(null);\n  Object(_stream_js__WEBPACK_IMPORTED_MODULE_0__[\"default\"])(object, projection.stream(_path_bounds_js__WEBPACK_IMPORTED_MODULE_1__[\"default\"]));\n  fitBounds(_path_bounds_js__WEBPACK_IMPORTED_MODULE_1__[\"default\"].result());\n  if (clip != null) projection.clipExtent(clip);\n  return projection;\n}\n\nfunction fitExtent(projection, extent, object) {\n  return fit(projection, function(b) {\n    var w = extent[1][0] - extent[0][0],\n        h = extent[1][1] - extent[0][1],\n        k = Math.min(w / (b[1][0] - b[0][0]), h / (b[1][1] - b[0][1])),\n        x = +extent[0][0] + (w - k * (b[1][0] + b[0][0])) / 2,\n        y = +extent[0][1] + (h - k * (b[1][1] + b[0][1])) / 2;\n    projection.scale(150 * k).translate([x, y]);\n  }, object);\n}\n\nfunction fitSize(projection, size, object) {\n  return fitExtent(projection, [[0, 0], size], object);\n}\n\nfunction fitWidth(projection, width, object) {\n  return fit(projection, function(b) {\n    var w = +width,\n        k = w / (b[1][0] - b[0][0]),\n        x = (w - k * (b[1][0] + b[0][0])) / 2,\n        y = -k * b[0][1];\n    projection.scale(150 * k).translate([x, y]);\n  }, object);\n}\n\nfunction fitHeight(projection, height, object) {\n  return fit(projection, function(b) {\n    var h = +height,\n        k = h / (b[1][1] - b[0][1]),\n        x = -k * b[0][0],\n        y = (h - k * (b[1][1] + b[0][1])) / 2;\n    projection.scale(150 * k).translate([x, y]);\n  }, object);\n}\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvdmVnYS1mdW5jdGlvbnMvbm9kZV9tb2R1bGVzL2QzLWdlby9zcmMvcHJvamVjdGlvbi9maXQuanMuanMiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvdmVnYS1mdW5jdGlvbnMvbm9kZV9tb2R1bGVzL2QzLWdlby9zcmMvcHJvamVjdGlvbi9maXQuanM/ZjAxNyJdLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge2RlZmF1bHQgYXMgZ2VvU3RyZWFtfSBmcm9tIFwiLi4vc3RyZWFtLmpzXCI7XG5pbXBvcnQgYm91bmRzU3RyZWFtIGZyb20gXCIuLi9wYXRoL2JvdW5kcy5qc1wiO1xuXG5mdW5jdGlvbiBmaXQocHJvamVjdGlvbiwgZml0Qm91bmRzLCBvYmplY3QpIHtcbiAgdmFyIGNsaXAgPSBwcm9qZWN0aW9uLmNsaXBFeHRlbnQgJiYgcHJvamVjdGlvbi5jbGlwRXh0ZW50KCk7XG4gIHByb2plY3Rpb24uc2NhbGUoMTUwKS50cmFuc2xhdGUoWzAsIDBdKTtcbiAgaWYgKGNsaXAgIT0gbnVsbCkgcHJvamVjdGlvbi5jbGlwRXh0ZW50KG51bGwpO1xuICBnZW9TdHJlYW0ob2JqZWN0LCBwcm9qZWN0aW9uLnN0cmVhbShib3VuZHNTdHJlYW0pKTtcbiAgZml0Qm91bmRzKGJvdW5kc1N0cmVhbS5yZXN1bHQoKSk7XG4gIGlmIChjbGlwICE9IG51bGwpIHByb2plY3Rpb24uY2xpcEV4dGVudChjbGlwKTtcbiAgcmV0dXJuIHByb2plY3Rpb247XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBmaXRFeHRlbnQocHJvamVjdGlvbiwgZXh0ZW50LCBvYmplY3QpIHtcbiAgcmV0dXJuIGZpdChwcm9qZWN0aW9uLCBmdW5jdGlvbihiKSB7XG4gICAgdmFyIHcgPSBleHRlbnRbMV1bMF0gLSBleHRlbnRbMF1bMF0sXG4gICAgICAgIGggPSBleHRlbnRbMV1bMV0gLSBleHRlbnRbMF1bMV0sXG4gICAgICAgIGsgPSBNYXRoLm1pbih3IC8gKGJbMV1bMF0gLSBiWzBdWzBdKSwgaCAvIChiWzFdWzFdIC0gYlswXVsxXSkpLFxuICAgICAgICB4ID0gK2V4dGVudFswXVswXSArICh3IC0gayAqIChiWzFdWzBdICsgYlswXVswXSkpIC8gMixcbiAgICAgICAgeSA9ICtleHRlbnRbMF1bMV0gKyAoaCAtIGsgKiAoYlsxXVsxXSArIGJbMF1bMV0pKSAvIDI7XG4gICAgcHJvamVjdGlvbi5zY2FsZSgxNTAgKiBrKS50cmFuc2xhdGUoW3gsIHldKTtcbiAgfSwgb2JqZWN0KTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGZpdFNpemUocHJvamVjdGlvbiwgc2l6ZSwgb2JqZWN0KSB7XG4gIHJldHVybiBmaXRFeHRlbnQocHJvamVjdGlvbiwgW1swLCAwXSwgc2l6ZV0sIG9iamVjdCk7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBmaXRXaWR0aChwcm9qZWN0aW9uLCB3aWR0aCwgb2JqZWN0KSB7XG4gIHJldHVybiBmaXQocHJvamVjdGlvbiwgZnVuY3Rpb24oYikge1xuICAgIHZhciB3ID0gK3dpZHRoLFxuICAgICAgICBrID0gdyAvIChiWzFdWzBdIC0gYlswXVswXSksXG4gICAgICAgIHggPSAodyAtIGsgKiAoYlsxXVswXSArIGJbMF1bMF0pKSAvIDIsXG4gICAgICAgIHkgPSAtayAqIGJbMF1bMV07XG4gICAgcHJvamVjdGlvbi5zY2FsZSgxNTAgKiBrKS50cmFuc2xhdGUoW3gsIHldKTtcbiAgfSwgb2JqZWN0KTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGZpdEhlaWdodChwcm9qZWN0aW9uLCBoZWlnaHQsIG9iamVjdCkge1xuICByZXR1cm4gZml0KHByb2plY3Rpb24sIGZ1bmN0aW9uKGIpIHtcbiAgICB2YXIgaCA9ICtoZWlnaHQsXG4gICAgICAgIGsgPSBoIC8gKGJbMV1bMV0gLSBiWzBdWzFdKSxcbiAgICAgICAgeCA9IC1rICogYlswXVswXSxcbiAgICAgICAgeSA9IChoIC0gayAqIChiWzFdWzFdICsgYlswXVsxXSkpIC8gMjtcbiAgICBwcm9qZWN0aW9uLnNjYWxlKDE1MCAqIGspLnRyYW5zbGF0ZShbeCwgeV0pO1xuICB9LCBvYmplY3QpO1xufVxuIl0sIm1hcHBpbmdzIjoiQUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7Iiwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///./node_modules/vega-functions/node_modules/d3-geo/src/projection/fit.js\n");

/***/ }),

/***/ "./node_modules/vega-functions/node_modules/d3-geo/src/projection/gnomonic.js":
/*!************************************************************************************!*\
  !*** ./node_modules/vega-functions/node_modules/d3-geo/src/projection/gnomonic.js ***!
  \************************************************************************************/
/*! exports provided: gnomonicRaw, default */
/***/ (function(module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"gnomonicRaw\", function() { return gnomonicRaw; });\n/* harmony import */ var _math_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../math.js */ \"./node_modules/vega-functions/node_modules/d3-geo/src/math.js\");\n/* harmony import */ var _azimuthal_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./azimuthal.js */ \"./node_modules/vega-functions/node_modules/d3-geo/src/projection/azimuthal.js\");\n/* harmony import */ var _index_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./index.js */ \"./node_modules/vega-functions/node_modules/d3-geo/src/projection/index.js\");\n\n\n\n\nfunction gnomonicRaw(x, y) {\n  var cy = Object(_math_js__WEBPACK_IMPORTED_MODULE_0__[\"cos\"])(y), k = Object(_math_js__WEBPACK_IMPORTED_MODULE_0__[\"cos\"])(x) * cy;\n  return [cy * Object(_math_js__WEBPACK_IMPORTED_MODULE_0__[\"sin\"])(x) / k, Object(_math_js__WEBPACK_IMPORTED_MODULE_0__[\"sin\"])(y) / k];\n}\n\ngnomonicRaw.invert = Object(_azimuthal_js__WEBPACK_IMPORTED_MODULE_1__[\"azimuthalInvert\"])(_math_js__WEBPACK_IMPORTED_MODULE_0__[\"atan\"]);\n\n/* harmony default export */ __webpack_exports__[\"default\"] = (function() {\n  return Object(_index_js__WEBPACK_IMPORTED_MODULE_2__[\"default\"])(gnomonicRaw)\n      .scale(144.049)\n      .clipAngle(60);\n});\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvdmVnYS1mdW5jdGlvbnMvbm9kZV9tb2R1bGVzL2QzLWdlby9zcmMvcHJvamVjdGlvbi9nbm9tb25pYy5qcy5qcyIsInNvdXJjZXMiOlsid2VicGFjazovLy8uL25vZGVfbW9kdWxlcy92ZWdhLWZ1bmN0aW9ucy9ub2RlX21vZHVsZXMvZDMtZ2VvL3NyYy9wcm9qZWN0aW9uL2dub21vbmljLmpzPzBjZGEiXSwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHthdGFuLCBjb3MsIHNpbn0gZnJvbSBcIi4uL21hdGguanNcIjtcbmltcG9ydCB7YXppbXV0aGFsSW52ZXJ0fSBmcm9tIFwiLi9hemltdXRoYWwuanNcIjtcbmltcG9ydCBwcm9qZWN0aW9uIGZyb20gXCIuL2luZGV4LmpzXCI7XG5cbmV4cG9ydCBmdW5jdGlvbiBnbm9tb25pY1Jhdyh4LCB5KSB7XG4gIHZhciBjeSA9IGNvcyh5KSwgayA9IGNvcyh4KSAqIGN5O1xuICByZXR1cm4gW2N5ICogc2luKHgpIC8gaywgc2luKHkpIC8ga107XG59XG5cbmdub21vbmljUmF3LmludmVydCA9IGF6aW11dGhhbEludmVydChhdGFuKTtcblxuZXhwb3J0IGRlZmF1bHQgZnVuY3Rpb24oKSB7XG4gIHJldHVybiBwcm9qZWN0aW9uKGdub21vbmljUmF3KVxuICAgICAgLnNjYWxlKDE0NC4wNDkpXG4gICAgICAuY2xpcEFuZ2xlKDYwKTtcbn1cbiJdLCJtYXBwaW5ncyI6IkFBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOyIsInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///./node_modules/vega-functions/node_modules/d3-geo/src/projection/gnomonic.js\n");

/***/ }),

/***/ "./node_modules/vega-functions/node_modules/d3-geo/src/projection/identity.js":
/*!************************************************************************************!*\
  !*** ./node_modules/vega-functions/node_modules/d3-geo/src/projection/identity.js ***!
  \************************************************************************************/
/*! exports provided: default */
/***/ (function(module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _clip_rectangle_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../clip/rectangle.js */ \"./node_modules/vega-functions/node_modules/d3-geo/src/clip/rectangle.js\");\n/* harmony import */ var _identity_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../identity.js */ \"./node_modules/vega-functions/node_modules/d3-geo/src/identity.js\");\n/* harmony import */ var _transform_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ../transform.js */ \"./node_modules/vega-functions/node_modules/d3-geo/src/transform.js\");\n/* harmony import */ var _fit_js__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ./fit.js */ \"./node_modules/vega-functions/node_modules/d3-geo/src/projection/fit.js\");\n/* harmony import */ var _math_js__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ../math.js */ \"./node_modules/vega-functions/node_modules/d3-geo/src/math.js\");\n\n\n\n\n\n\n/* harmony default export */ __webpack_exports__[\"default\"] = (function() {\n  var k = 1, tx = 0, ty = 0, sx = 1, sy = 1, // scale, translate and reflect\n      alpha = 0, ca, sa, // angle\n      x0 = null, y0, x1, y1, // clip extent\n      kx = 1, ky = 1,\n      transform = Object(_transform_js__WEBPACK_IMPORTED_MODULE_2__[\"transformer\"])({\n        point: function(x, y) {\n          var p = projection([x, y])\n          this.stream.point(p[0], p[1]);\n        }\n      }),\n      postclip = _identity_js__WEBPACK_IMPORTED_MODULE_1__[\"default\"],\n      cache,\n      cacheStream;\n\n  function reset() {\n    kx = k * sx;\n    ky = k * sy;\n    cache = cacheStream = null;\n    return projection;\n  }\n\n  function projection (p) {\n    var x = p[0] * kx, y = p[1] * ky;\n    if (alpha) {\n      var t = y * ca - x * sa;\n      x = x * ca + y * sa;\n      y = t;\n    }    \n    return [x + tx, y + ty];\n  }\n  projection.invert = function(p) {\n    var x = p[0] - tx, y = p[1] - ty;\n    if (alpha) {\n      var t = y * ca + x * sa;\n      x = x * ca - y * sa;\n      y = t;\n    }\n    return [x / kx, y / ky];\n  };\n  projection.stream = function(stream) {\n    return cache && cacheStream === stream ? cache : cache = transform(postclip(cacheStream = stream));\n  };\n  projection.postclip = function(_) {\n    return arguments.length ? (postclip = _, x0 = y0 = x1 = y1 = null, reset()) : postclip;\n  };\n  projection.clipExtent = function(_) {\n    return arguments.length ? (postclip = _ == null ? (x0 = y0 = x1 = y1 = null, _identity_js__WEBPACK_IMPORTED_MODULE_1__[\"default\"]) : Object(_clip_rectangle_js__WEBPACK_IMPORTED_MODULE_0__[\"default\"])(x0 = +_[0][0], y0 = +_[0][1], x1 = +_[1][0], y1 = +_[1][1]), reset()) : x0 == null ? null : [[x0, y0], [x1, y1]];\n  };\n  projection.scale = function(_) {\n    return arguments.length ? (k = +_, reset()) : k;\n  };\n  projection.translate = function(_) {\n    return arguments.length ? (tx = +_[0], ty = +_[1], reset()) : [tx, ty];\n  }\n  projection.angle = function(_) {\n    return arguments.length ? (alpha = _ % 360 * _math_js__WEBPACK_IMPORTED_MODULE_4__[\"radians\"], sa = Object(_math_js__WEBPACK_IMPORTED_MODULE_4__[\"sin\"])(alpha), ca = Object(_math_js__WEBPACK_IMPORTED_MODULE_4__[\"cos\"])(alpha), reset()) : alpha * _math_js__WEBPACK_IMPORTED_MODULE_4__[\"degrees\"];\n  };\n  projection.reflectX = function(_) {\n    return arguments.length ? (sx = _ ? -1 : 1, reset()) : sx < 0;\n  };\n  projection.reflectY = function(_) {\n    return arguments.length ? (sy = _ ? -1 : 1, reset()) : sy < 0;\n  };\n  projection.fitExtent = function(extent, object) {\n    return Object(_fit_js__WEBPACK_IMPORTED_MODULE_3__[\"fitExtent\"])(projection, extent, object);\n  };\n  projection.fitSize = function(size, object) {\n    return Object(_fit_js__WEBPACK_IMPORTED_MODULE_3__[\"fitSize\"])(projection, size, object);\n  };\n  projection.fitWidth = function(width, object) {\n    return Object(_fit_js__WEBPACK_IMPORTED_MODULE_3__[\"fitWidth\"])(projection, width, object);\n  };\n  projection.fitHeight = function(height, object) {\n    return Object(_fit_js__WEBPACK_IMPORTED_MODULE_3__[\"fitHeight\"])(projection, height, object);\n  };\n\n  return projection;\n});\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,[encoded data, 4788 characters]\n//# sourceURL=webpack-internal:///./node_modules/vega-functions/node_modules/d3-geo/src/projection/identity.js\n");

/***/ }),

/***/ "./node_modules/vega-functions/node_modules/d3-geo/src/projection/index.js":
/*!*********************************************************************************!*\
  !*** ./node_modules/vega-functions/node_modules/d3-geo/src/projection/index.js ***!
  \*********************************************************************************/
/*! exports provided: default, projectionMutator */
/***/ (function(module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"default\", function() { return projection; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"projectionMutator\", function() { return projectionMutator; });\n/* harmony import */ var _clip_antimeridian_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../clip/antimeridian.js */ \"./node_modules/vega-functions/node_modules/d3-geo/src/clip/antimeridian.js\");\n/* harmony import */ var _clip_circle_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../clip/circle.js */ \"./node_modules/vega-functions/node_modules/d3-geo/src/clip/circle.js\");\n/* harmony import */ var _clip_rectangle_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ../clip/rectangle.js */ \"./node_modules/vega-functions/node_modules/d3-geo/src/clip/rectangle.js\");\n/* harmony import */ var _compose_js__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ../compose.js */ \"./node_modules/vega-functions/node_modules/d3-geo/src/compose.js\");\n/* harmony import */ var _identity_js__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ../identity.js */ \"./node_modules/vega-functions/node_modules/d3-geo/src/identity.js\");\n/* harmony import */ var _math_js__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! ../math.js */ \"./node_modules/vega-functions/node_modules/d3-geo/src/math.js\");\n/* harmony import */ var _rotation_js__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! ../rotation.js */ \"./node_modules/vega-functions/node_modules/d3-geo/src/rotation.js\");\n/* harmony import */ var _transform_js__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! ../transform.js */ \"./node_modules/vega-functions/node_modules/d3-geo/src/transform.js\");\n/* harmony import */ var _fit_js__WEBPACK_IMPORTED_MODULE_8__ = __webpack_require__(/*! ./fit.js */ \"./node_modules/vega-functions/node_modules/d3-geo/src/projection/fit.js\");\n/* harmony import */ var _resample_js__WEBPACK_IMPORTED_MODULE_9__ = __webpack_require__(/*! ./resample.js */ \"./node_modules/vega-functions/node_modules/d3-geo/src/projection/resample.js\");\n\n\n\n\n\n\n\n\n\n\n\nvar transformRadians = Object(_transform_js__WEBPACK_IMPORTED_MODULE_7__[\"transformer\"])({\n  point: function(x, y) {\n    this.stream.point(x * _math_js__WEBPACK_IMPORTED_MODULE_5__[\"radians\"], y * _math_js__WEBPACK_IMPORTED_MODULE_5__[\"radians\"]);\n  }\n});\n\nfunction transformRotate(rotate) {\n  return Object(_transform_js__WEBPACK_IMPORTED_MODULE_7__[\"transformer\"])({\n    point: function(x, y) {\n      var r = rotate(x, y);\n      return this.stream.point(r[0], r[1]);\n    }\n  });\n}\n\nfunction scaleTranslate(k, dx, dy, sx, sy) {\n  function transform(x, y) {\n    x *= sx; y *= sy;\n    return [dx + k * x, dy - k * y];\n  }\n  transform.invert = function(x, y) {\n    return [(x - dx) / k * sx, (dy - y) / k * sy];\n  };\n  return transform;\n}\n\nfunction scaleTranslateRotate(k, dx, dy, sx, sy, alpha) {\n  if (!alpha) return scaleTranslate(k, dx, dy, sx, sy);\n  var cosAlpha = Object(_math_js__WEBPACK_IMPORTED_MODULE_5__[\"cos\"])(alpha),\n      sinAlpha = Object(_math_js__WEBPACK_IMPORTED_MODULE_5__[\"sin\"])(alpha),\n      a = cosAlpha * k,\n      b = sinAlpha * k,\n      ai = cosAlpha / k,\n      bi = sinAlpha / k,\n      ci = (sinAlpha * dy - cosAlpha * dx) / k,\n      fi = (sinAlpha * dx + cosAlpha * dy) / k;\n  function transform(x, y) {\n    x *= sx; y *= sy;\n    return [a * x - b * y + dx, dy - b * x - a * y];\n  }\n  transform.invert = function(x, y) {\n    return [sx * (ai * x - bi * y + ci), sy * (fi - bi * x - ai * y)];\n  };\n  return transform;\n}\n\nfunction projection(project) {\n  return projectionMutator(function() { return project; })();\n}\n\nfunction projectionMutator(projectAt) {\n  var project,\n      k = 150, // scale\n      x = 480, y = 250, // translate\n      lambda = 0, phi = 0, // center\n      deltaLambda = 0, deltaPhi = 0, deltaGamma = 0, rotate, // pre-rotate\n      alpha = 0, // post-rotate angle\n      sx = 1, // reflectX\n      sy = 1, // reflectX\n      theta = null, preclip = _clip_antimeridian_js__WEBPACK_IMPORTED_MODULE_0__[\"default\"], // pre-clip angle\n      x0 = null, y0, x1, y1, postclip = _identity_js__WEBPACK_IMPORTED_MODULE_4__[\"default\"], // post-clip extent\n      delta2 = 0.5, // precision\n      projectResample,\n      projectTransform,\n      projectRotateTransform,\n      cache,\n      cacheStream;\n\n  function projection(point) {\n    return projectRotateTransform(point[0] * _math_js__WEBPACK_IMPORTED_MODULE_5__[\"radians\"], point[1] * _math_js__WEBPACK_IMPORTED_MODULE_5__[\"radians\"]);\n  }\n\n  function invert(point) {\n    point = projectRotateTransform.invert(point[0], point[1]);\n    return point && [point[0] * _math_js__WEBPACK_IMPORTED_MODULE_5__[\"degrees\"], point[1] * _math_js__WEBPACK_IMPORTED_MODULE_5__[\"degrees\"]];\n  }\n\n  projection.stream = function(stream) {\n    return cache && cacheStream === stream ? cache : cache = transformRadians(transformRotate(rotate)(preclip(projectResample(postclip(cacheStream = stream)))));\n  };\n\n  projection.preclip = function(_) {\n    return arguments.length ? (preclip = _, theta = undefined, reset()) : preclip;\n  };\n\n  projection.postclip = function(_) {\n    return arguments.length ? (postclip = _, x0 = y0 = x1 = y1 = null, reset()) : postclip;\n  };\n\n  projection.clipAngle = function(_) {\n    return arguments.length ? (preclip = +_ ? Object(_clip_circle_js__WEBPACK_IMPORTED_MODULE_1__[\"default\"])(theta = _ * _math_js__WEBPACK_IMPORTED_MODULE_5__[\"radians\"]) : (theta = null, _clip_antimeridian_js__WEBPACK_IMPORTED_MODULE_0__[\"default\"]), reset()) : theta * _math_js__WEBPACK_IMPORTED_MODULE_5__[\"degrees\"];\n  };\n\n  projection.clipExtent = function(_) {\n    return arguments.length ? (postclip = _ == null ? (x0 = y0 = x1 = y1 = null, _identity_js__WEBPACK_IMPORTED_MODULE_4__[\"default\"]) : Object(_clip_rectangle_js__WEBPACK_IMPORTED_MODULE_2__[\"default\"])(x0 = +_[0][0], y0 = +_[0][1], x1 = +_[1][0], y1 = +_[1][1]), reset()) : x0 == null ? null : [[x0, y0], [x1, y1]];\n  };\n\n  projection.scale = function(_) {\n    return arguments.length ? (k = +_, recenter()) : k;\n  };\n\n  projection.translate = function(_) {\n    return arguments.length ? (x = +_[0], y = +_[1], recenter()) : [x, y];\n  };\n\n  projection.center = function(_) {\n    return arguments.length ? (lambda = _[0] % 360 * _math_js__WEBPACK_IMPORTED_MODULE_5__[\"radians\"], phi = _[1] % 360 * _math_js__WEBPACK_IMPORTED_MODULE_5__[\"radians\"], recenter()) : [lambda * _math_js__WEBPACK_IMPORTED_MODULE_5__[\"degrees\"], phi * _math_js__WEBPACK_IMPORTED_MODULE_5__[\"degrees\"]];\n  };\n\n  projection.rotate = function(_) {\n    return arguments.length ? (deltaLambda = _[0] % 360 * _math_js__WEBPACK_IMPORTED_MODULE_5__[\"radians\"], deltaPhi = _[1] % 360 * _math_js__WEBPACK_IMPORTED_MODULE_5__[\"radians\"], deltaGamma = _.length > 2 ? _[2] % 360 * _math_js__WEBPACK_IMPORTED_MODULE_5__[\"radians\"] : 0, recenter()) : [deltaLambda * _math_js__WEBPACK_IMPORTED_MODULE_5__[\"degrees\"], deltaPhi * _math_js__WEBPACK_IMPORTED_MODULE_5__[\"degrees\"], deltaGamma * _math_js__WEBPACK_IMPORTED_MODULE_5__[\"degrees\"]];\n  };\n\n  projection.angle = function(_) {\n    return arguments.length ? (alpha = _ % 360 * _math_js__WEBPACK_IMPORTED_MODULE_5__[\"radians\"], recenter()) : alpha * _math_js__WEBPACK_IMPORTED_MODULE_5__[\"degrees\"];\n  };\n\n  projection.reflectX = function(_) {\n    return arguments.length ? (sx = _ ? -1 : 1, recenter()) : sx < 0;\n  };\n\n  projection.reflectY = function(_) {\n    return arguments.length ? (sy = _ ? -1 : 1, recenter()) : sy < 0;\n  };\n\n  projection.precision = function(_) {\n    return arguments.length ? (projectResample = Object(_resample_js__WEBPACK_IMPORTED_MODULE_9__[\"default\"])(projectTransform, delta2 = _ * _), reset()) : Object(_math_js__WEBPACK_IMPORTED_MODULE_5__[\"sqrt\"])(delta2);\n  };\n\n  projection.fitExtent = function(extent, object) {\n    return Object(_fit_js__WEBPACK_IMPORTED_MODULE_8__[\"fitExtent\"])(projection, extent, object);\n  };\n\n  projection.fitSize = function(size, object) {\n    return Object(_fit_js__WEBPACK_IMPORTED_MODULE_8__[\"fitSize\"])(projection, size, object);\n  };\n\n  projection.fitWidth = function(width, object) {\n    return Object(_fit_js__WEBPACK_IMPORTED_MODULE_8__[\"fitWidth\"])(projection, width, object);\n  };\n\n  projection.fitHeight = function(height, object) {\n    return Object(_fit_js__WEBPACK_IMPORTED_MODULE_8__[\"fitHeight\"])(projection, height, object);\n  };\n\n  function recenter() {\n    var center = scaleTranslateRotate(k, 0, 0, sx, sy, alpha).apply(null, project(lambda, phi)),\n        transform = scaleTranslateRotate(k, x - center[0], y - center[1], sx, sy, alpha);\n    rotate = Object(_rotation_js__WEBPACK_IMPORTED_MODULE_6__[\"rotateRadians\"])(deltaLambda, deltaPhi, deltaGamma);\n    projectTransform = Object(_compose_js__WEBPACK_IMPORTED_MODULE_3__[\"default\"])(project, transform);\n    projectRotateTransform = Object(_compose_js__WEBPACK_IMPORTED_MODULE_3__[\"default\"])(rotate, projectTransform);\n    projectResample = Object(_resample_js__WEBPACK_IMPORTED_MODULE_9__[\"default\"])(projectTransform, delta2);\n    return reset();\n  }\n\n  function reset() {\n    cache = cacheStream = null;\n    return projection;\n  }\n\n  return function() {\n    project = projectAt.apply(this, arguments);\n    projection.invert = project.invert && invert;\n    return recenter();\n  };\n}\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,[encoded data, 9696 characters]\n//# sourceURL=webpack-internal:///./node_modules/vega-functions/node_modules/d3-geo/src/projection/index.js\n");

/***/ }),

/***/ "./node_modules/vega-functions/node_modules/d3-geo/src/projection/mercator.js":
/*!************************************************************************************!*\
  !*** ./node_modules/vega-functions/node_modules/d3-geo/src/projection/mercator.js ***!
  \************************************************************************************/
/*! exports provided: mercatorRaw, default, mercatorProjection */
/***/ (function(module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"mercatorRaw\", function() { return mercatorRaw; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"mercatorProjection\", function() { return mercatorProjection; });\n/* harmony import */ var _math_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../math.js */ \"./node_modules/vega-functions/node_modules/d3-geo/src/math.js\");\n/* harmony import */ var _rotation_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../rotation.js */ \"./node_modules/vega-functions/node_modules/d3-geo/src/rotation.js\");\n/* harmony import */ var _index_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./index.js */ \"./node_modules/vega-functions/node_modules/d3-geo/src/projection/index.js\");\n\n\n\n\nfunction mercatorRaw(lambda, phi) {\n  return [lambda, Object(_math_js__WEBPACK_IMPORTED_MODULE_0__[\"log\"])(Object(_math_js__WEBPACK_IMPORTED_MODULE_0__[\"tan\"])((_math_js__WEBPACK_IMPORTED_MODULE_0__[\"halfPi\"] + phi) / 2))];\n}\n\nmercatorRaw.invert = function(x, y) {\n  return [x, 2 * Object(_math_js__WEBPACK_IMPORTED_MODULE_0__[\"atan\"])(Object(_math_js__WEBPACK_IMPORTED_MODULE_0__[\"exp\"])(y)) - _math_js__WEBPACK_IMPORTED_MODULE_0__[\"halfPi\"]];\n};\n\n/* harmony default export */ __webpack_exports__[\"default\"] = (function() {\n  return mercatorProjection(mercatorRaw)\n      .scale(961 / _math_js__WEBPACK_IMPORTED_MODULE_0__[\"tau\"]);\n});\n\nfunction mercatorProjection(project) {\n  var m = Object(_index_js__WEBPACK_IMPORTED_MODULE_2__[\"default\"])(project),\n      center = m.center,\n      scale = m.scale,\n      translate = m.translate,\n      clipExtent = m.clipExtent,\n      x0 = null, y0, x1, y1; // clip extent\n\n  m.scale = function(_) {\n    return arguments.length ? (scale(_), reclip()) : scale();\n  };\n\n  m.translate = function(_) {\n    return arguments.length ? (translate(_), reclip()) : translate();\n  };\n\n  m.center = function(_) {\n    return arguments.length ? (center(_), reclip()) : center();\n  };\n\n  m.clipExtent = function(_) {\n    return arguments.length ? ((_ == null ? x0 = y0 = x1 = y1 = null : (x0 = +_[0][0], y0 = +_[0][1], x1 = +_[1][0], y1 = +_[1][1])), reclip()) : x0 == null ? null : [[x0, y0], [x1, y1]];\n  };\n\n  function reclip() {\n    var k = _math_js__WEBPACK_IMPORTED_MODULE_0__[\"pi\"] * scale(),\n        t = m(Object(_rotation_js__WEBPACK_IMPORTED_MODULE_1__[\"default\"])(m.rotate()).invert([0, 0]));\n    return clipExtent(x0 == null\n        ? [[t[0] - k, t[1] - k], [t[0] + k, t[1] + k]] : project === mercatorRaw\n        ? [[Math.max(t[0] - k, x0), y0], [Math.min(t[0] + k, x1), y1]]\n        : [[x0, Math.max(t[1] - k, y0)], [x1, Math.min(t[1] + k, y1)]]);\n  }\n\n  return reclip();\n}\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvdmVnYS1mdW5jdGlvbnMvbm9kZV9tb2R1bGVzL2QzLWdlby9zcmMvcHJvamVjdGlvbi9tZXJjYXRvci5qcy5qcyIsInNvdXJjZXMiOlsid2VicGFjazovLy8uL25vZGVfbW9kdWxlcy92ZWdhLWZ1bmN0aW9ucy9ub2RlX21vZHVsZXMvZDMtZ2VvL3NyYy9wcm9qZWN0aW9uL21lcmNhdG9yLmpzPzA5ZTQiXSwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHthdGFuLCBleHAsIGhhbGZQaSwgbG9nLCBwaSwgdGFuLCB0YXV9IGZyb20gXCIuLi9tYXRoLmpzXCI7XG5pbXBvcnQgcm90YXRpb24gZnJvbSBcIi4uL3JvdGF0aW9uLmpzXCI7XG5pbXBvcnQgcHJvamVjdGlvbiBmcm9tIFwiLi9pbmRleC5qc1wiO1xuXG5leHBvcnQgZnVuY3Rpb24gbWVyY2F0b3JSYXcobGFtYmRhLCBwaGkpIHtcbiAgcmV0dXJuIFtsYW1iZGEsIGxvZyh0YW4oKGhhbGZQaSArIHBoaSkgLyAyKSldO1xufVxuXG5tZXJjYXRvclJhdy5pbnZlcnQgPSBmdW5jdGlvbih4LCB5KSB7XG4gIHJldHVybiBbeCwgMiAqIGF0YW4oZXhwKHkpKSAtIGhhbGZQaV07XG59O1xuXG5leHBvcnQgZGVmYXVsdCBmdW5jdGlvbigpIHtcbiAgcmV0dXJuIG1lcmNhdG9yUHJvamVjdGlvbihtZXJjYXRvclJhdylcbiAgICAgIC5zY2FsZSg5NjEgLyB0YXUpO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gbWVyY2F0b3JQcm9qZWN0aW9uKHByb2plY3QpIHtcbiAgdmFyIG0gPSBwcm9qZWN0aW9uKHByb2plY3QpLFxuICAgICAgY2VudGVyID0gbS5jZW50ZXIsXG4gICAgICBzY2FsZSA9IG0uc2NhbGUsXG4gICAgICB0cmFuc2xhdGUgPSBtLnRyYW5zbGF0ZSxcbiAgICAgIGNsaXBFeHRlbnQgPSBtLmNsaXBFeHRlbnQsXG4gICAgICB4MCA9IG51bGwsIHkwLCB4MSwgeTE7IC8vIGNsaXAgZXh0ZW50XG5cbiAgbS5zY2FsZSA9IGZ1bmN0aW9uKF8pIHtcbiAgICByZXR1cm4gYXJndW1lbnRzLmxlbmd0aCA/IChzY2FsZShfKSwgcmVjbGlwKCkpIDogc2NhbGUoKTtcbiAgfTtcblxuICBtLnRyYW5zbGF0ZSA9IGZ1bmN0aW9uKF8pIHtcbiAgICByZXR1cm4gYXJndW1lbnRzLmxlbmd0aCA/ICh0cmFuc2xhdGUoXyksIHJlY2xpcCgpKSA6IHRyYW5zbGF0ZSgpO1xuICB9O1xuXG4gIG0uY2VudGVyID0gZnVuY3Rpb24oXykge1xuICAgIHJldHVybiBhcmd1bWVudHMubGVuZ3RoID8gKGNlbnRlcihfKSwgcmVjbGlwKCkpIDogY2VudGVyKCk7XG4gIH07XG5cbiAgbS5jbGlwRXh0ZW50ID0gZnVuY3Rpb24oXykge1xuICAgIHJldHVybiBhcmd1bWVudHMubGVuZ3RoID8gKChfID09IG51bGwgPyB4MCA9IHkwID0geDEgPSB5MSA9IG51bGwgOiAoeDAgPSArX1swXVswXSwgeTAgPSArX1swXVsxXSwgeDEgPSArX1sxXVswXSwgeTEgPSArX1sxXVsxXSkpLCByZWNsaXAoKSkgOiB4MCA9PSBudWxsID8gbnVsbCA6IFtbeDAsIHkwXSwgW3gxLCB5MV1dO1xuICB9O1xuXG4gIGZ1bmN0aW9uIHJlY2xpcCgpIHtcbiAgICB2YXIgayA9IHBpICogc2NhbGUoKSxcbiAgICAgICAgdCA9IG0ocm90YXRpb24obS5yb3RhdGUoKSkuaW52ZXJ0KFswLCAwXSkpO1xuICAgIHJldHVybiBjbGlwRXh0ZW50KHgwID09IG51bGxcbiAgICAgICAgPyBbW3RbMF0gLSBrLCB0WzFdIC0ga10sIFt0WzBdICsgaywgdFsxXSArIGtdXSA6IHByb2plY3QgPT09IG1lcmNhdG9yUmF3XG4gICAgICAgID8gW1tNYXRoLm1heCh0WzBdIC0gaywgeDApLCB5MF0sIFtNYXRoLm1pbih0WzBdICsgaywgeDEpLCB5MV1dXG4gICAgICAgIDogW1t4MCwgTWF0aC5tYXgodFsxXSAtIGssIHkwKV0sIFt4MSwgTWF0aC5taW4odFsxXSArIGssIHkxKV1dKTtcbiAgfVxuXG4gIHJldHVybiByZWNsaXAoKTtcbn1cbiJdLCJtYXBwaW5ncyI6IkFBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7Iiwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///./node_modules/vega-functions/node_modules/d3-geo/src/projection/mercator.js\n");

/***/ }),

/***/ "./node_modules/vega-functions/node_modules/d3-geo/src/projection/naturalEarth1.js":
/*!*****************************************************************************************!*\
  !*** ./node_modules/vega-functions/node_modules/d3-geo/src/projection/naturalEarth1.js ***!
  \*****************************************************************************************/
/*! exports provided: naturalEarth1Raw, default */
/***/ (function(module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"naturalEarth1Raw\", function() { return naturalEarth1Raw; });\n/* harmony import */ var _index_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./index.js */ \"./node_modules/vega-functions/node_modules/d3-geo/src/projection/index.js\");\n/* harmony import */ var _math_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../math.js */ \"./node_modules/vega-functions/node_modules/d3-geo/src/math.js\");\n\n\n\nfunction naturalEarth1Raw(lambda, phi) {\n  var phi2 = phi * phi, phi4 = phi2 * phi2;\n  return [\n    lambda * (0.8707 - 0.131979 * phi2 + phi4 * (-0.013791 + phi4 * (0.003971 * phi2 - 0.001529 * phi4))),\n    phi * (1.007226 + phi2 * (0.015085 + phi4 * (-0.044475 + 0.028874 * phi2 - 0.005916 * phi4)))\n  ];\n}\n\nnaturalEarth1Raw.invert = function(x, y) {\n  var phi = y, i = 25, delta;\n  do {\n    var phi2 = phi * phi, phi4 = phi2 * phi2;\n    phi -= delta = (phi * (1.007226 + phi2 * (0.015085 + phi4 * (-0.044475 + 0.028874 * phi2 - 0.005916 * phi4))) - y) /\n        (1.007226 + phi2 * (0.015085 * 3 + phi4 * (-0.044475 * 7 + 0.028874 * 9 * phi2 - 0.005916 * 11 * phi4)));\n  } while (Object(_math_js__WEBPACK_IMPORTED_MODULE_1__[\"abs\"])(delta) > _math_js__WEBPACK_IMPORTED_MODULE_1__[\"epsilon\"] && --i > 0);\n  return [\n    x / (0.8707 + (phi2 = phi * phi) * (-0.131979 + phi2 * (-0.013791 + phi2 * phi2 * phi2 * (0.003971 - 0.001529 * phi2)))),\n    phi\n  ];\n};\n\n/* harmony default export */ __webpack_exports__[\"default\"] = (function() {\n  return Object(_index_js__WEBPACK_IMPORTED_MODULE_0__[\"default\"])(naturalEarth1Raw)\n      .scale(175.295);\n});\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvdmVnYS1mdW5jdGlvbnMvbm9kZV9tb2R1bGVzL2QzLWdlby9zcmMvcHJvamVjdGlvbi9uYXR1cmFsRWFydGgxLmpzLmpzIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL3ZlZ2EtZnVuY3Rpb25zL25vZGVfbW9kdWxlcy9kMy1nZW8vc3JjL3Byb2plY3Rpb24vbmF0dXJhbEVhcnRoMS5qcz9mY2QzIl0sInNvdXJjZXNDb250ZW50IjpbImltcG9ydCBwcm9qZWN0aW9uIGZyb20gXCIuL2luZGV4LmpzXCI7XG5pbXBvcnQge2FicywgZXBzaWxvbn0gZnJvbSBcIi4uL21hdGguanNcIjtcblxuZXhwb3J0IGZ1bmN0aW9uIG5hdHVyYWxFYXJ0aDFSYXcobGFtYmRhLCBwaGkpIHtcbiAgdmFyIHBoaTIgPSBwaGkgKiBwaGksIHBoaTQgPSBwaGkyICogcGhpMjtcbiAgcmV0dXJuIFtcbiAgICBsYW1iZGEgKiAoMC44NzA3IC0gMC4xMzE5NzkgKiBwaGkyICsgcGhpNCAqICgtMC4wMTM3OTEgKyBwaGk0ICogKDAuMDAzOTcxICogcGhpMiAtIDAuMDAxNTI5ICogcGhpNCkpKSxcbiAgICBwaGkgKiAoMS4wMDcyMjYgKyBwaGkyICogKDAuMDE1MDg1ICsgcGhpNCAqICgtMC4wNDQ0NzUgKyAwLjAyODg3NCAqIHBoaTIgLSAwLjAwNTkxNiAqIHBoaTQpKSlcbiAgXTtcbn1cblxubmF0dXJhbEVhcnRoMVJhdy5pbnZlcnQgPSBmdW5jdGlvbih4LCB5KSB7XG4gIHZhciBwaGkgPSB5LCBpID0gMjUsIGRlbHRhO1xuICBkbyB7XG4gICAgdmFyIHBoaTIgPSBwaGkgKiBwaGksIHBoaTQgPSBwaGkyICogcGhpMjtcbiAgICBwaGkgLT0gZGVsdGEgPSAocGhpICogKDEuMDA3MjI2ICsgcGhpMiAqICgwLjAxNTA4NSArIHBoaTQgKiAoLTAuMDQ0NDc1ICsgMC4wMjg4NzQgKiBwaGkyIC0gMC4wMDU5MTYgKiBwaGk0KSkpIC0geSkgL1xuICAgICAgICAoMS4wMDcyMjYgKyBwaGkyICogKDAuMDE1MDg1ICogMyArIHBoaTQgKiAoLTAuMDQ0NDc1ICogNyArIDAuMDI4ODc0ICogOSAqIHBoaTIgLSAwLjAwNTkxNiAqIDExICogcGhpNCkpKTtcbiAgfSB3aGlsZSAoYWJzKGRlbHRhKSA+IGVwc2lsb24gJiYgLS1pID4gMCk7XG4gIHJldHVybiBbXG4gICAgeCAvICgwLjg3MDcgKyAocGhpMiA9IHBoaSAqIHBoaSkgKiAoLTAuMTMxOTc5ICsgcGhpMiAqICgtMC4wMTM3OTEgKyBwaGkyICogcGhpMiAqIHBoaTIgKiAoMC4wMDM5NzEgLSAwLjAwMTUyOSAqIHBoaTIpKSkpLFxuICAgIHBoaVxuICBdO1xufTtcblxuZXhwb3J0IGRlZmF1bHQgZnVuY3Rpb24oKSB7XG4gIHJldHVybiBwcm9qZWN0aW9uKG5hdHVyYWxFYXJ0aDFSYXcpXG4gICAgICAuc2NhbGUoMTc1LjI5NSk7XG59XG4iXSwibWFwcGluZ3MiOiJBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7Iiwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///./node_modules/vega-functions/node_modules/d3-geo/src/projection/naturalEarth1.js\n");

/***/ }),

/***/ "./node_modules/vega-functions/node_modules/d3-geo/src/projection/orthographic.js":
/*!****************************************************************************************!*\
  !*** ./node_modules/vega-functions/node_modules/d3-geo/src/projection/orthographic.js ***!
  \****************************************************************************************/
/*! exports provided: orthographicRaw, default */
/***/ (function(module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"orthographicRaw\", function() { return orthographicRaw; });\n/* harmony import */ var _math_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../math.js */ \"./node_modules/vega-functions/node_modules/d3-geo/src/math.js\");\n/* harmony import */ var _azimuthal_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./azimuthal.js */ \"./node_modules/vega-functions/node_modules/d3-geo/src/projection/azimuthal.js\");\n/* harmony import */ var _index_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./index.js */ \"./node_modules/vega-functions/node_modules/d3-geo/src/projection/index.js\");\n\n\n\n\nfunction orthographicRaw(x, y) {\n  return [Object(_math_js__WEBPACK_IMPORTED_MODULE_0__[\"cos\"])(y) * Object(_math_js__WEBPACK_IMPORTED_MODULE_0__[\"sin\"])(x), Object(_math_js__WEBPACK_IMPORTED_MODULE_0__[\"sin\"])(y)];\n}\n\northographicRaw.invert = Object(_azimuthal_js__WEBPACK_IMPORTED_MODULE_1__[\"azimuthalInvert\"])(_math_js__WEBPACK_IMPORTED_MODULE_0__[\"asin\"]);\n\n/* harmony default export */ __webpack_exports__[\"default\"] = (function() {\n  return Object(_index_js__WEBPACK_IMPORTED_MODULE_2__[\"default\"])(orthographicRaw)\n      .scale(249.5)\n      .clipAngle(90 + _math_js__WEBPACK_IMPORTED_MODULE_0__[\"epsilon\"]);\n});\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvdmVnYS1mdW5jdGlvbnMvbm9kZV9tb2R1bGVzL2QzLWdlby9zcmMvcHJvamVjdGlvbi9vcnRob2dyYXBoaWMuanMuanMiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvdmVnYS1mdW5jdGlvbnMvbm9kZV9tb2R1bGVzL2QzLWdlby9zcmMvcHJvamVjdGlvbi9vcnRob2dyYXBoaWMuanM/ZmI2OSJdLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge2FzaW4sIGNvcywgZXBzaWxvbiwgc2lufSBmcm9tIFwiLi4vbWF0aC5qc1wiO1xuaW1wb3J0IHthemltdXRoYWxJbnZlcnR9IGZyb20gXCIuL2F6aW11dGhhbC5qc1wiO1xuaW1wb3J0IHByb2plY3Rpb24gZnJvbSBcIi4vaW5kZXguanNcIjtcblxuZXhwb3J0IGZ1bmN0aW9uIG9ydGhvZ3JhcGhpY1Jhdyh4LCB5KSB7XG4gIHJldHVybiBbY29zKHkpICogc2luKHgpLCBzaW4oeSldO1xufVxuXG5vcnRob2dyYXBoaWNSYXcuaW52ZXJ0ID0gYXppbXV0aGFsSW52ZXJ0KGFzaW4pO1xuXG5leHBvcnQgZGVmYXVsdCBmdW5jdGlvbigpIHtcbiAgcmV0dXJuIHByb2plY3Rpb24ob3J0aG9ncmFwaGljUmF3KVxuICAgICAgLnNjYWxlKDI0OS41KVxuICAgICAgLmNsaXBBbmdsZSg5MCArIGVwc2lsb24pO1xufVxuIl0sIm1hcHBpbmdzIjoiQUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOyIsInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///./node_modules/vega-functions/node_modules/d3-geo/src/projection/orthographic.js\n");

/***/ }),

/***/ "./node_modules/vega-functions/node_modules/d3-geo/src/projection/resample.js":
/*!************************************************************************************!*\
  !*** ./node_modules/vega-functions/node_modules/d3-geo/src/projection/resample.js ***!
  \************************************************************************************/
/*! exports provided: default */
/***/ (function(module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _cartesian_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../cartesian.js */ \"./node_modules/vega-functions/node_modules/d3-geo/src/cartesian.js\");\n/* harmony import */ var _math_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../math.js */ \"./node_modules/vega-functions/node_modules/d3-geo/src/math.js\");\n/* harmony import */ var _transform_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ../transform.js */ \"./node_modules/vega-functions/node_modules/d3-geo/src/transform.js\");\n\n\n\n\nvar maxDepth = 16, // maximum depth of subdivision\n    cosMinDistance = Object(_math_js__WEBPACK_IMPORTED_MODULE_1__[\"cos\"])(30 * _math_js__WEBPACK_IMPORTED_MODULE_1__[\"radians\"]); // cos(minimum angular distance)\n\n/* harmony default export */ __webpack_exports__[\"default\"] = (function(project, delta2) {\n  return +delta2 ? resample(project, delta2) : resampleNone(project);\n});\n\nfunction resampleNone(project) {\n  return Object(_transform_js__WEBPACK_IMPORTED_MODULE_2__[\"transformer\"])({\n    point: function(x, y) {\n      x = project(x, y);\n      this.stream.point(x[0], x[1]);\n    }\n  });\n}\n\nfunction resample(project, delta2) {\n\n  function resampleLineTo(x0, y0, lambda0, a0, b0, c0, x1, y1, lambda1, a1, b1, c1, depth, stream) {\n    var dx = x1 - x0,\n        dy = y1 - y0,\n        d2 = dx * dx + dy * dy;\n    if (d2 > 4 * delta2 && depth--) {\n      var a = a0 + a1,\n          b = b0 + b1,\n          c = c0 + c1,\n          m = Object(_math_js__WEBPACK_IMPORTED_MODULE_1__[\"sqrt\"])(a * a + b * b + c * c),\n          phi2 = Object(_math_js__WEBPACK_IMPORTED_MODULE_1__[\"asin\"])(c /= m),\n          lambda2 = Object(_math_js__WEBPACK_IMPORTED_MODULE_1__[\"abs\"])(Object(_math_js__WEBPACK_IMPORTED_MODULE_1__[\"abs\"])(c) - 1) < _math_js__WEBPACK_IMPORTED_MODULE_1__[\"epsilon\"] || Object(_math_js__WEBPACK_IMPORTED_MODULE_1__[\"abs\"])(lambda0 - lambda1) < _math_js__WEBPACK_IMPORTED_MODULE_1__[\"epsilon\"] ? (lambda0 + lambda1) / 2 : Object(_math_js__WEBPACK_IMPORTED_MODULE_1__[\"atan2\"])(b, a),\n          p = project(lambda2, phi2),\n          x2 = p[0],\n          y2 = p[1],\n          dx2 = x2 - x0,\n          dy2 = y2 - y0,\n          dz = dy * dx2 - dx * dy2;\n      if (dz * dz / d2 > delta2 // perpendicular projected distance\n          || Object(_math_js__WEBPACK_IMPORTED_MODULE_1__[\"abs\"])((dx * dx2 + dy * dy2) / d2 - 0.5) > 0.3 // midpoint close to an end\n          || a0 * a1 + b0 * b1 + c0 * c1 < cosMinDistance) { // angular distance\n        resampleLineTo(x0, y0, lambda0, a0, b0, c0, x2, y2, lambda2, a /= m, b /= m, c, depth, stream);\n        stream.point(x2, y2);\n        resampleLineTo(x2, y2, lambda2, a, b, c, x1, y1, lambda1, a1, b1, c1, depth, stream);\n      }\n    }\n  }\n  return function(stream) {\n    var lambda00, x00, y00, a00, b00, c00, // first point\n        lambda0, x0, y0, a0, b0, c0; // previous point\n\n    var resampleStream = {\n      point: point,\n      lineStart: lineStart,\n      lineEnd: lineEnd,\n      polygonStart: function() { stream.polygonStart(); resampleStream.lineStart = ringStart; },\n      polygonEnd: function() { stream.polygonEnd(); resampleStream.lineStart = lineStart; }\n    };\n\n    function point(x, y) {\n      x = project(x, y);\n      stream.point(x[0], x[1]);\n    }\n\n    function lineStart() {\n      x0 = NaN;\n      resampleStream.point = linePoint;\n      stream.lineStart();\n    }\n\n    function linePoint(lambda, phi) {\n      var c = Object(_cartesian_js__WEBPACK_IMPORTED_MODULE_0__[\"cartesian\"])([lambda, phi]), p = project(lambda, phi);\n      resampleLineTo(x0, y0, lambda0, a0, b0, c0, x0 = p[0], y0 = p[1], lambda0 = lambda, a0 = c[0], b0 = c[1], c0 = c[2], maxDepth, stream);\n      stream.point(x0, y0);\n    }\n\n    function lineEnd() {\n      resampleStream.point = point;\n      stream.lineEnd();\n    }\n\n    function ringStart() {\n      lineStart();\n      resampleStream.point = ringPoint;\n      resampleStream.lineEnd = ringEnd;\n    }\n\n    function ringPoint(lambda, phi) {\n      linePoint(lambda00 = lambda, phi), x00 = x0, y00 = y0, a00 = a0, b00 = b0, c00 = c0;\n      resampleStream.point = linePoint;\n    }\n\n    function ringEnd() {\n      resampleLineTo(x0, y0, lambda0, a0, b0, c0, x00, y00, lambda00, a00, b00, c00, maxDepth, stream);\n      resampleStream.lineEnd = lineEnd;\n      lineEnd();\n    }\n\n    return resampleStream;\n  };\n}\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,[encoded data, 5580 characters]\n//# sourceURL=webpack-internal:///./node_modules/vega-functions/node_modules/d3-geo/src/projection/resample.js\n");

/***/ }),

/***/ "./node_modules/vega-functions/node_modules/d3-geo/src/projection/stereographic.js":
/*!*****************************************************************************************!*\
  !*** ./node_modules/vega-functions/node_modules/d3-geo/src/projection/stereographic.js ***!
  \*****************************************************************************************/
/*! exports provided: stereographicRaw, default */
/***/ (function(module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"stereographicRaw\", function() { return stereographicRaw; });\n/* harmony import */ var _math_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../math.js */ \"./node_modules/vega-functions/node_modules/d3-geo/src/math.js\");\n/* harmony import */ var _azimuthal_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./azimuthal.js */ \"./node_modules/vega-functions/node_modules/d3-geo/src/projection/azimuthal.js\");\n/* harmony import */ var _index_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./index.js */ \"./node_modules/vega-functions/node_modules/d3-geo/src/projection/index.js\");\n\n\n\n\nfunction stereographicRaw(x, y) {\n  var cy = Object(_math_js__WEBPACK_IMPORTED_MODULE_0__[\"cos\"])(y), k = 1 + Object(_math_js__WEBPACK_IMPORTED_MODULE_0__[\"cos\"])(x) * cy;\n  return [cy * Object(_math_js__WEBPACK_IMPORTED_MODULE_0__[\"sin\"])(x) / k, Object(_math_js__WEBPACK_IMPORTED_MODULE_0__[\"sin\"])(y) / k];\n}\n\nstereographicRaw.invert = Object(_azimuthal_js__WEBPACK_IMPORTED_MODULE_1__[\"azimuthalInvert\"])(function(z) {\n  return 2 * Object(_math_js__WEBPACK_IMPORTED_MODULE_0__[\"atan\"])(z);\n});\n\n/* harmony default export */ __webpack_exports__[\"default\"] = (function() {\n  return Object(_index_js__WEBPACK_IMPORTED_MODULE_2__[\"default\"])(stereographicRaw)\n      .scale(250)\n      .clipAngle(142);\n});\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvdmVnYS1mdW5jdGlvbnMvbm9kZV9tb2R1bGVzL2QzLWdlby9zcmMvcHJvamVjdGlvbi9zdGVyZW9ncmFwaGljLmpzLmpzIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL3ZlZ2EtZnVuY3Rpb25zL25vZGVfbW9kdWxlcy9kMy1nZW8vc3JjL3Byb2plY3Rpb24vc3RlcmVvZ3JhcGhpYy5qcz9iOTA0Il0sInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7YXRhbiwgY29zLCBzaW59IGZyb20gXCIuLi9tYXRoLmpzXCI7XG5pbXBvcnQge2F6aW11dGhhbEludmVydH0gZnJvbSBcIi4vYXppbXV0aGFsLmpzXCI7XG5pbXBvcnQgcHJvamVjdGlvbiBmcm9tIFwiLi9pbmRleC5qc1wiO1xuXG5leHBvcnQgZnVuY3Rpb24gc3RlcmVvZ3JhcGhpY1Jhdyh4LCB5KSB7XG4gIHZhciBjeSA9IGNvcyh5KSwgayA9IDEgKyBjb3MoeCkgKiBjeTtcbiAgcmV0dXJuIFtjeSAqIHNpbih4KSAvIGssIHNpbih5KSAvIGtdO1xufVxuXG5zdGVyZW9ncmFwaGljUmF3LmludmVydCA9IGF6aW11dGhhbEludmVydChmdW5jdGlvbih6KSB7XG4gIHJldHVybiAyICogYXRhbih6KTtcbn0pO1xuXG5leHBvcnQgZGVmYXVsdCBmdW5jdGlvbigpIHtcbiAgcmV0dXJuIHByb2plY3Rpb24oc3RlcmVvZ3JhcGhpY1JhdylcbiAgICAgIC5zY2FsZSgyNTApXG4gICAgICAuY2xpcEFuZ2xlKDE0Mik7XG59XG4iXSwibWFwcGluZ3MiOiJBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7Iiwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///./node_modules/vega-functions/node_modules/d3-geo/src/projection/stereographic.js\n");

/***/ }),

/***/ "./node_modules/vega-functions/node_modules/d3-geo/src/projection/transverseMercator.js":
/*!**********************************************************************************************!*\
  !*** ./node_modules/vega-functions/node_modules/d3-geo/src/projection/transverseMercator.js ***!
  \**********************************************************************************************/
/*! exports provided: transverseMercatorRaw, default */
/***/ (function(module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"transverseMercatorRaw\", function() { return transverseMercatorRaw; });\n/* harmony import */ var _math_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../math.js */ \"./node_modules/vega-functions/node_modules/d3-geo/src/math.js\");\n/* harmony import */ var _mercator_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./mercator.js */ \"./node_modules/vega-functions/node_modules/d3-geo/src/projection/mercator.js\");\n\n\n\nfunction transverseMercatorRaw(lambda, phi) {\n  return [Object(_math_js__WEBPACK_IMPORTED_MODULE_0__[\"log\"])(Object(_math_js__WEBPACK_IMPORTED_MODULE_0__[\"tan\"])((_math_js__WEBPACK_IMPORTED_MODULE_0__[\"halfPi\"] + phi) / 2)), -lambda];\n}\n\ntransverseMercatorRaw.invert = function(x, y) {\n  return [-y, 2 * Object(_math_js__WEBPACK_IMPORTED_MODULE_0__[\"atan\"])(Object(_math_js__WEBPACK_IMPORTED_MODULE_0__[\"exp\"])(x)) - _math_js__WEBPACK_IMPORTED_MODULE_0__[\"halfPi\"]];\n};\n\n/* harmony default export */ __webpack_exports__[\"default\"] = (function() {\n  var m = Object(_mercator_js__WEBPACK_IMPORTED_MODULE_1__[\"mercatorProjection\"])(transverseMercatorRaw),\n      center = m.center,\n      rotate = m.rotate;\n\n  m.center = function(_) {\n    return arguments.length ? center([-_[1], _[0]]) : (_ = center(), [_[1], -_[0]]);\n  };\n\n  m.rotate = function(_) {\n    return arguments.length ? rotate([_[0], _[1], _.length > 2 ? _[2] + 90 : 90]) : (_ = rotate(), [_[0], _[1], _[2] - 90]);\n  };\n\n  return rotate([0, 0, 90])\n      .scale(159.155);\n});\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvdmVnYS1mdW5jdGlvbnMvbm9kZV9tb2R1bGVzL2QzLWdlby9zcmMvcHJvamVjdGlvbi90cmFuc3ZlcnNlTWVyY2F0b3IuanMuanMiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvdmVnYS1mdW5jdGlvbnMvbm9kZV9tb2R1bGVzL2QzLWdlby9zcmMvcHJvamVjdGlvbi90cmFuc3ZlcnNlTWVyY2F0b3IuanM/ZWQ3YiJdLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge2F0YW4sIGV4cCwgaGFsZlBpLCBsb2csIHRhbn0gZnJvbSBcIi4uL21hdGguanNcIjtcbmltcG9ydCB7bWVyY2F0b3JQcm9qZWN0aW9ufSBmcm9tIFwiLi9tZXJjYXRvci5qc1wiO1xuXG5leHBvcnQgZnVuY3Rpb24gdHJhbnN2ZXJzZU1lcmNhdG9yUmF3KGxhbWJkYSwgcGhpKSB7XG4gIHJldHVybiBbbG9nKHRhbigoaGFsZlBpICsgcGhpKSAvIDIpKSwgLWxhbWJkYV07XG59XG5cbnRyYW5zdmVyc2VNZXJjYXRvclJhdy5pbnZlcnQgPSBmdW5jdGlvbih4LCB5KSB7XG4gIHJldHVybiBbLXksIDIgKiBhdGFuKGV4cCh4KSkgLSBoYWxmUGldO1xufTtcblxuZXhwb3J0IGRlZmF1bHQgZnVuY3Rpb24oKSB7XG4gIHZhciBtID0gbWVyY2F0b3JQcm9qZWN0aW9uKHRyYW5zdmVyc2VNZXJjYXRvclJhdyksXG4gICAgICBjZW50ZXIgPSBtLmNlbnRlcixcbiAgICAgIHJvdGF0ZSA9IG0ucm90YXRlO1xuXG4gIG0uY2VudGVyID0gZnVuY3Rpb24oXykge1xuICAgIHJldHVybiBhcmd1bWVudHMubGVuZ3RoID8gY2VudGVyKFstX1sxXSwgX1swXV0pIDogKF8gPSBjZW50ZXIoKSwgW19bMV0sIC1fWzBdXSk7XG4gIH07XG5cbiAgbS5yb3RhdGUgPSBmdW5jdGlvbihfKSB7XG4gICAgcmV0dXJuIGFyZ3VtZW50cy5sZW5ndGggPyByb3RhdGUoW19bMF0sIF9bMV0sIF8ubGVuZ3RoID4gMiA/IF9bMl0gKyA5MCA6IDkwXSkgOiAoXyA9IHJvdGF0ZSgpLCBbX1swXSwgX1sxXSwgX1syXSAtIDkwXSk7XG4gIH07XG5cbiAgcmV0dXJuIHJvdGF0ZShbMCwgMCwgOTBdKVxuICAgICAgLnNjYWxlKDE1OS4xNTUpO1xufVxuIl0sIm1hcHBpbmdzIjoiQUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTsiLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///./node_modules/vega-functions/node_modules/d3-geo/src/projection/transverseMercator.js\n");

/***/ }),

/***/ "./node_modules/vega-functions/node_modules/d3-geo/src/rotation.js":
/*!*************************************************************************!*\
  !*** ./node_modules/vega-functions/node_modules/d3-geo/src/rotation.js ***!
  \*************************************************************************/
/*! exports provided: rotateRadians, default */
/***/ (function(module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"rotateRadians\", function() { return rotateRadians; });\n/* harmony import */ var _compose_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./compose.js */ \"./node_modules/vega-functions/node_modules/d3-geo/src/compose.js\");\n/* harmony import */ var _math_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./math.js */ \"./node_modules/vega-functions/node_modules/d3-geo/src/math.js\");\n\n\n\nfunction rotationIdentity(lambda, phi) {\n  return [Object(_math_js__WEBPACK_IMPORTED_MODULE_1__[\"abs\"])(lambda) > _math_js__WEBPACK_IMPORTED_MODULE_1__[\"pi\"] ? lambda + Math.round(-lambda / _math_js__WEBPACK_IMPORTED_MODULE_1__[\"tau\"]) * _math_js__WEBPACK_IMPORTED_MODULE_1__[\"tau\"] : lambda, phi];\n}\n\nrotationIdentity.invert = rotationIdentity;\n\nfunction rotateRadians(deltaLambda, deltaPhi, deltaGamma) {\n  return (deltaLambda %= _math_js__WEBPACK_IMPORTED_MODULE_1__[\"tau\"]) ? (deltaPhi || deltaGamma ? Object(_compose_js__WEBPACK_IMPORTED_MODULE_0__[\"default\"])(rotationLambda(deltaLambda), rotationPhiGamma(deltaPhi, deltaGamma))\n    : rotationLambda(deltaLambda))\n    : (deltaPhi || deltaGamma ? rotationPhiGamma(deltaPhi, deltaGamma)\n    : rotationIdentity);\n}\n\nfunction forwardRotationLambda(deltaLambda) {\n  return function(lambda, phi) {\n    return lambda += deltaLambda, [lambda > _math_js__WEBPACK_IMPORTED_MODULE_1__[\"pi\"] ? lambda - _math_js__WEBPACK_IMPORTED_MODULE_1__[\"tau\"] : lambda < -_math_js__WEBPACK_IMPORTED_MODULE_1__[\"pi\"] ? lambda + _math_js__WEBPACK_IMPORTED_MODULE_1__[\"tau\"] : lambda, phi];\n  };\n}\n\nfunction rotationLambda(deltaLambda) {\n  var rotation = forwardRotationLambda(deltaLambda);\n  rotation.invert = forwardRotationLambda(-deltaLambda);\n  return rotation;\n}\n\nfunction rotationPhiGamma(deltaPhi, deltaGamma) {\n  var cosDeltaPhi = Object(_math_js__WEBPACK_IMPORTED_MODULE_1__[\"cos\"])(deltaPhi),\n      sinDeltaPhi = Object(_math_js__WEBPACK_IMPORTED_MODULE_1__[\"sin\"])(deltaPhi),\n      cosDeltaGamma = Object(_math_js__WEBPACK_IMPORTED_MODULE_1__[\"cos\"])(deltaGamma),\n      sinDeltaGamma = Object(_math_js__WEBPACK_IMPORTED_MODULE_1__[\"sin\"])(deltaGamma);\n\n  function rotation(lambda, phi) {\n    var cosPhi = Object(_math_js__WEBPACK_IMPORTED_MODULE_1__[\"cos\"])(phi),\n        x = Object(_math_js__WEBPACK_IMPORTED_MODULE_1__[\"cos\"])(lambda) * cosPhi,\n        y = Object(_math_js__WEBPACK_IMPORTED_MODULE_1__[\"sin\"])(lambda) * cosPhi,\n        z = Object(_math_js__WEBPACK_IMPORTED_MODULE_1__[\"sin\"])(phi),\n        k = z * cosDeltaPhi + x * sinDeltaPhi;\n    return [\n      Object(_math_js__WEBPACK_IMPORTED_MODULE_1__[\"atan2\"])(y * cosDeltaGamma - k * sinDeltaGamma, x * cosDeltaPhi - z * sinDeltaPhi),\n      Object(_math_js__WEBPACK_IMPORTED_MODULE_1__[\"asin\"])(k * cosDeltaGamma + y * sinDeltaGamma)\n    ];\n  }\n\n  rotation.invert = function(lambda, phi) {\n    var cosPhi = Object(_math_js__WEBPACK_IMPORTED_MODULE_1__[\"cos\"])(phi),\n        x = Object(_math_js__WEBPACK_IMPORTED_MODULE_1__[\"cos\"])(lambda) * cosPhi,\n        y = Object(_math_js__WEBPACK_IMPORTED_MODULE_1__[\"sin\"])(lambda) * cosPhi,\n        z = Object(_math_js__WEBPACK_IMPORTED_MODULE_1__[\"sin\"])(phi),\n        k = z * cosDeltaGamma - y * sinDeltaGamma;\n    return [\n      Object(_math_js__WEBPACK_IMPORTED_MODULE_1__[\"atan2\"])(y * cosDeltaGamma + z * sinDeltaGamma, x * cosDeltaPhi + k * sinDeltaPhi),\n      Object(_math_js__WEBPACK_IMPORTED_MODULE_1__[\"asin\"])(k * cosDeltaPhi - x * sinDeltaPhi)\n    ];\n  };\n\n  return rotation;\n}\n\n/* harmony default export */ __webpack_exports__[\"default\"] = (function(rotate) {\n  rotate = rotateRadians(rotate[0] * _math_js__WEBPACK_IMPORTED_MODULE_1__[\"radians\"], rotate[1] * _math_js__WEBPACK_IMPORTED_MODULE_1__[\"radians\"], rotate.length > 2 ? rotate[2] * _math_js__WEBPACK_IMPORTED_MODULE_1__[\"radians\"] : 0);\n\n  function forward(coordinates) {\n    coordinates = rotate(coordinates[0] * _math_js__WEBPACK_IMPORTED_MODULE_1__[\"radians\"], coordinates[1] * _math_js__WEBPACK_IMPORTED_MODULE_1__[\"radians\"]);\n    return coordinates[0] *= _math_js__WEBPACK_IMPORTED_MODULE_1__[\"degrees\"], coordinates[1] *= _math_js__WEBPACK_IMPORTED_MODULE_1__[\"degrees\"], coordinates;\n  }\n\n  forward.invert = function(coordinates) {\n    coordinates = rotate.invert(coordinates[0] * _math_js__WEBPACK_IMPORTED_MODULE_1__[\"radians\"], coordinates[1] * _math_js__WEBPACK_IMPORTED_MODULE_1__[\"radians\"]);\n    return coordinates[0] *= _math_js__WEBPACK_IMPORTED_MODULE_1__[\"degrees\"], coordinates[1] *= _math_js__WEBPACK_IMPORTED_MODULE_1__[\"degrees\"], coordinates;\n  };\n\n  return forward;\n});\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,[encoded data, 4324 characters]\n//# sourceURL=webpack-internal:///./node_modules/vega-functions/node_modules/d3-geo/src/rotation.js\n");

/***/ }),

/***/ "./node_modules/vega-functions/node_modules/d3-geo/src/stream.js":
/*!***********************************************************************!*\
  !*** ./node_modules/vega-functions/node_modules/d3-geo/src/stream.js ***!
  \***********************************************************************/
/*! exports provided: default */
/***/ (function(module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\nfunction streamGeometry(geometry, stream) {\n  if (geometry && streamGeometryType.hasOwnProperty(geometry.type)) {\n    streamGeometryType[geometry.type](geometry, stream);\n  }\n}\n\nvar streamObjectType = {\n  Feature: function(object, stream) {\n    streamGeometry(object.geometry, stream);\n  },\n  FeatureCollection: function(object, stream) {\n    var features = object.features, i = -1, n = features.length;\n    while (++i < n) streamGeometry(features[i].geometry, stream);\n  }\n};\n\nvar streamGeometryType = {\n  Sphere: function(object, stream) {\n    stream.sphere();\n  },\n  Point: function(object, stream) {\n    object = object.coordinates;\n    stream.point(object[0], object[1], object[2]);\n  },\n  MultiPoint: function(object, stream) {\n    var coordinates = object.coordinates, i = -1, n = coordinates.length;\n    while (++i < n) object = coordinates[i], stream.point(object[0], object[1], object[2]);\n  },\n  LineString: function(object, stream) {\n    streamLine(object.coordinates, stream, 0);\n  },\n  MultiLineString: function(object, stream) {\n    var coordinates = object.coordinates, i = -1, n = coordinates.length;\n    while (++i < n) streamLine(coordinates[i], stream, 0);\n  },\n  Polygon: function(object, stream) {\n    streamPolygon(object.coordinates, stream);\n  },\n  MultiPolygon: function(object, stream) {\n    var coordinates = object.coordinates, i = -1, n = coordinates.length;\n    while (++i < n) streamPolygon(coordinates[i], stream);\n  },\n  GeometryCollection: function(object, stream) {\n    var geometries = object.geometries, i = -1, n = geometries.length;\n    while (++i < n) streamGeometry(geometries[i], stream);\n  }\n};\n\nfunction streamLine(coordinates, stream, closed) {\n  var i = -1, n = coordinates.length - closed, coordinate;\n  stream.lineStart();\n  while (++i < n) coordinate = coordinates[i], stream.point(coordinate[0], coordinate[1], coordinate[2]);\n  stream.lineEnd();\n}\n\nfunction streamPolygon(coordinates, stream) {\n  var i = -1, n = coordinates.length;\n  stream.polygonStart();\n  while (++i < n) streamLine(coordinates[i], stream, 1);\n  stream.polygonEnd();\n}\n\n/* harmony default export */ __webpack_exports__[\"default\"] = (function(object, stream) {\n  if (object && streamObjectType.hasOwnProperty(object.type)) {\n    streamObjectType[object.type](object, stream);\n  } else {\n    streamGeometry(object, stream);\n  }\n});\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvdmVnYS1mdW5jdGlvbnMvbm9kZV9tb2R1bGVzL2QzLWdlby9zcmMvc3RyZWFtLmpzLmpzIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL3ZlZ2EtZnVuY3Rpb25zL25vZGVfbW9kdWxlcy9kMy1nZW8vc3JjL3N0cmVhbS5qcz9mNzE0Il0sInNvdXJjZXNDb250ZW50IjpbImZ1bmN0aW9uIHN0cmVhbUdlb21ldHJ5KGdlb21ldHJ5LCBzdHJlYW0pIHtcbiAgaWYgKGdlb21ldHJ5ICYmIHN0cmVhbUdlb21ldHJ5VHlwZS5oYXNPd25Qcm9wZXJ0eShnZW9tZXRyeS50eXBlKSkge1xuICAgIHN0cmVhbUdlb21ldHJ5VHlwZVtnZW9tZXRyeS50eXBlXShnZW9tZXRyeSwgc3RyZWFtKTtcbiAgfVxufVxuXG52YXIgc3RyZWFtT2JqZWN0VHlwZSA9IHtcbiAgRmVhdHVyZTogZnVuY3Rpb24ob2JqZWN0LCBzdHJlYW0pIHtcbiAgICBzdHJlYW1HZW9tZXRyeShvYmplY3QuZ2VvbWV0cnksIHN0cmVhbSk7XG4gIH0sXG4gIEZlYXR1cmVDb2xsZWN0aW9uOiBmdW5jdGlvbihvYmplY3QsIHN0cmVhbSkge1xuICAgIHZhciBmZWF0dXJlcyA9IG9iamVjdC5mZWF0dXJlcywgaSA9IC0xLCBuID0gZmVhdHVyZXMubGVuZ3RoO1xuICAgIHdoaWxlICgrK2kgPCBuKSBzdHJlYW1HZW9tZXRyeShmZWF0dXJlc1tpXS5nZW9tZXRyeSwgc3RyZWFtKTtcbiAgfVxufTtcblxudmFyIHN0cmVhbUdlb21ldHJ5VHlwZSA9IHtcbiAgU3BoZXJlOiBmdW5jdGlvbihvYmplY3QsIHN0cmVhbSkge1xuICAgIHN0cmVhbS5zcGhlcmUoKTtcbiAgfSxcbiAgUG9pbnQ6IGZ1bmN0aW9uKG9iamVjdCwgc3RyZWFtKSB7XG4gICAgb2JqZWN0ID0gb2JqZWN0LmNvb3JkaW5hdGVzO1xuICAgIHN0cmVhbS5wb2ludChvYmplY3RbMF0sIG9iamVjdFsxXSwgb2JqZWN0WzJdKTtcbiAgfSxcbiAgTXVsdGlQb2ludDogZnVuY3Rpb24ob2JqZWN0LCBzdHJlYW0pIHtcbiAgICB2YXIgY29vcmRpbmF0ZXMgPSBvYmplY3QuY29vcmRpbmF0ZXMsIGkgPSAtMSwgbiA9IGNvb3JkaW5hdGVzLmxlbmd0aDtcbiAgICB3aGlsZSAoKytpIDwgbikgb2JqZWN0ID0gY29vcmRpbmF0ZXNbaV0sIHN0cmVhbS5wb2ludChvYmplY3RbMF0sIG9iamVjdFsxXSwgb2JqZWN0WzJdKTtcbiAgfSxcbiAgTGluZVN0cmluZzogZnVuY3Rpb24ob2JqZWN0LCBzdHJlYW0pIHtcbiAgICBzdHJlYW1MaW5lKG9iamVjdC5jb29yZGluYXRlcywgc3RyZWFtLCAwKTtcbiAgfSxcbiAgTXVsdGlMaW5lU3RyaW5nOiBmdW5jdGlvbihvYmplY3QsIHN0cmVhbSkge1xuICAgIHZhciBjb29yZGluYXRlcyA9IG9iamVjdC5jb29yZGluYXRlcywgaSA9IC0xLCBuID0gY29vcmRpbmF0ZXMubGVuZ3RoO1xuICAgIHdoaWxlICgrK2kgPCBuKSBzdHJlYW1MaW5lKGNvb3JkaW5hdGVzW2ldLCBzdHJlYW0sIDApO1xuICB9LFxuICBQb2x5Z29uOiBmdW5jdGlvbihvYmplY3QsIHN0cmVhbSkge1xuICAgIHN0cmVhbVBvbHlnb24ob2JqZWN0LmNvb3JkaW5hdGVzLCBzdHJlYW0pO1xuICB9LFxuICBNdWx0aVBvbHlnb246IGZ1bmN0aW9uKG9iamVjdCwgc3RyZWFtKSB7XG4gICAgdmFyIGNvb3JkaW5hdGVzID0gb2JqZWN0LmNvb3JkaW5hdGVzLCBpID0gLTEsIG4gPSBjb29yZGluYXRlcy5sZW5ndGg7XG4gICAgd2hpbGUgKCsraSA8IG4pIHN0cmVhbVBvbHlnb24oY29vcmRpbmF0ZXNbaV0sIHN0cmVhbSk7XG4gIH0sXG4gIEdlb21ldHJ5Q29sbGVjdGlvbjogZnVuY3Rpb24ob2JqZWN0LCBzdHJlYW0pIHtcbiAgICB2YXIgZ2VvbWV0cmllcyA9IG9iamVjdC5nZW9tZXRyaWVzLCBpID0gLTEsIG4gPSBnZW9tZXRyaWVzLmxlbmd0aDtcbiAgICB3aGlsZSAoKytpIDwgbikgc3RyZWFtR2VvbWV0cnkoZ2VvbWV0cmllc1tpXSwgc3RyZWFtKTtcbiAgfVxufTtcblxuZnVuY3Rpb24gc3RyZWFtTGluZShjb29yZGluYXRlcywgc3RyZWFtLCBjbG9zZWQpIHtcbiAgdmFyIGkgPSAtMSwgbiA9IGNvb3JkaW5hdGVzLmxlbmd0aCAtIGNsb3NlZCwgY29vcmRpbmF0ZTtcbiAgc3RyZWFtLmxpbmVTdGFydCgpO1xuICB3aGlsZSAoKytpIDwgbikgY29vcmRpbmF0ZSA9IGNvb3JkaW5hdGVzW2ldLCBzdHJlYW0ucG9pbnQoY29vcmRpbmF0ZVswXSwgY29vcmRpbmF0ZVsxXSwgY29vcmRpbmF0ZVsyXSk7XG4gIHN0cmVhbS5saW5lRW5kKCk7XG59XG5cbmZ1bmN0aW9uIHN0cmVhbVBvbHlnb24oY29vcmRpbmF0ZXMsIHN0cmVhbSkge1xuICB2YXIgaSA9IC0xLCBuID0gY29vcmRpbmF0ZXMubGVuZ3RoO1xuICBzdHJlYW0ucG9seWdvblN0YXJ0KCk7XG4gIHdoaWxlICgrK2kgPCBuKSBzdHJlYW1MaW5lKGNvb3JkaW5hdGVzW2ldLCBzdHJlYW0sIDEpO1xuICBzdHJlYW0ucG9seWdvbkVuZCgpO1xufVxuXG5leHBvcnQgZGVmYXVsdCBmdW5jdGlvbihvYmplY3QsIHN0cmVhbSkge1xuICBpZiAob2JqZWN0ICYmIHN0cmVhbU9iamVjdFR5cGUuaGFzT3duUHJvcGVydHkob2JqZWN0LnR5cGUpKSB7XG4gICAgc3RyZWFtT2JqZWN0VHlwZVtvYmplY3QudHlwZV0ob2JqZWN0LCBzdHJlYW0pO1xuICB9IGVsc2Uge1xuICAgIHN0cmVhbUdlb21ldHJ5KG9iamVjdCwgc3RyZWFtKTtcbiAgfVxufVxuIl0sIm1hcHBpbmdzIjoiQUFBQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTsiLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///./node_modules/vega-functions/node_modules/d3-geo/src/stream.js\n");

/***/ }),

/***/ "./node_modules/vega-functions/node_modules/d3-geo/src/transform.js":
/*!**************************************************************************!*\
  !*** ./node_modules/vega-functions/node_modules/d3-geo/src/transform.js ***!
  \**************************************************************************/
/*! exports provided: default, transformer */
/***/ (function(module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"transformer\", function() { return transformer; });\n/* harmony default export */ __webpack_exports__[\"default\"] = (function(methods) {\n  return {\n    stream: transformer(methods)\n  };\n});\n\nfunction transformer(methods) {\n  return function(stream) {\n    var s = new TransformStream;\n    for (var key in methods) s[key] = methods[key];\n    s.stream = stream;\n    return s;\n  };\n}\n\nfunction TransformStream() {}\n\nTransformStream.prototype = {\n  constructor: TransformStream,\n  point: function(x, y) { this.stream.point(x, y); },\n  sphere: function() { this.stream.sphere(); },\n  lineStart: function() { this.stream.lineStart(); },\n  lineEnd: function() { this.stream.lineEnd(); },\n  polygonStart: function() { this.stream.polygonStart(); },\n  polygonEnd: function() { this.stream.polygonEnd(); }\n};\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvdmVnYS1mdW5jdGlvbnMvbm9kZV9tb2R1bGVzL2QzLWdlby9zcmMvdHJhbnNmb3JtLmpzLmpzIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL3ZlZ2EtZnVuY3Rpb25zL25vZGVfbW9kdWxlcy9kMy1nZW8vc3JjL3RyYW5zZm9ybS5qcz9jMmFkIl0sInNvdXJjZXNDb250ZW50IjpbImV4cG9ydCBkZWZhdWx0IGZ1bmN0aW9uKG1ldGhvZHMpIHtcbiAgcmV0dXJuIHtcbiAgICBzdHJlYW06IHRyYW5zZm9ybWVyKG1ldGhvZHMpXG4gIH07XG59XG5cbmV4cG9ydCBmdW5jdGlvbiB0cmFuc2Zvcm1lcihtZXRob2RzKSB7XG4gIHJldHVybiBmdW5jdGlvbihzdHJlYW0pIHtcbiAgICB2YXIgcyA9IG5ldyBUcmFuc2Zvcm1TdHJlYW07XG4gICAgZm9yICh2YXIga2V5IGluIG1ldGhvZHMpIHNba2V5XSA9IG1ldGhvZHNba2V5XTtcbiAgICBzLnN0cmVhbSA9IHN0cmVhbTtcbiAgICByZXR1cm4gcztcbiAgfTtcbn1cblxuZnVuY3Rpb24gVHJhbnNmb3JtU3RyZWFtKCkge31cblxuVHJhbnNmb3JtU3RyZWFtLnByb3RvdHlwZSA9IHtcbiAgY29uc3RydWN0b3I6IFRyYW5zZm9ybVN0cmVhbSxcbiAgcG9pbnQ6IGZ1bmN0aW9uKHgsIHkpIHsgdGhpcy5zdHJlYW0ucG9pbnQoeCwgeSk7IH0sXG4gIHNwaGVyZTogZnVuY3Rpb24oKSB7IHRoaXMuc3RyZWFtLnNwaGVyZSgpOyB9LFxuICBsaW5lU3RhcnQ6IGZ1bmN0aW9uKCkgeyB0aGlzLnN0cmVhbS5saW5lU3RhcnQoKTsgfSxcbiAgbGluZUVuZDogZnVuY3Rpb24oKSB7IHRoaXMuc3RyZWFtLmxpbmVFbmQoKTsgfSxcbiAgcG9seWdvblN0YXJ0OiBmdW5jdGlvbigpIHsgdGhpcy5zdHJlYW0ucG9seWdvblN0YXJ0KCk7IH0sXG4gIHBvbHlnb25FbmQ6IGZ1bmN0aW9uKCkgeyB0aGlzLnN0cmVhbS5wb2x5Z29uRW5kKCk7IH1cbn07XG4iXSwibWFwcGluZ3MiOiJBQUFBO0FBQUE7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOyIsInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///./node_modules/vega-functions/node_modules/d3-geo/src/transform.js\n");

/***/ }),

/***/ "./node_modules/vega-functions/node_modules/d3-interpolate/src/array.js":
/*!******************************************************************************!*\
  !*** ./node_modules/vega-functions/node_modules/d3-interpolate/src/array.js ***!
  \******************************************************************************/
/*! exports provided: default, genericArray */
/***/ (function(module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"genericArray\", function() { return genericArray; });\n/* harmony import */ var _value_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./value.js */ \"./node_modules/vega-functions/node_modules/d3-interpolate/src/value.js\");\n/* harmony import */ var _numberArray_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./numberArray.js */ \"./node_modules/vega-functions/node_modules/d3-interpolate/src/numberArray.js\");\n\n\n\n/* harmony default export */ __webpack_exports__[\"default\"] = (function(a, b) {\n  return (Object(_numberArray_js__WEBPACK_IMPORTED_MODULE_1__[\"isNumberArray\"])(b) ? _numberArray_js__WEBPACK_IMPORTED_MODULE_1__[\"default\"] : genericArray)(a, b);\n});\n\nfunction genericArray(a, b) {\n  var nb = b ? b.length : 0,\n      na = a ? Math.min(nb, a.length) : 0,\n      x = new Array(na),\n      c = new Array(nb),\n      i;\n\n  for (i = 0; i < na; ++i) x[i] = Object(_value_js__WEBPACK_IMPORTED_MODULE_0__[\"default\"])(a[i], b[i]);\n  for (; i < nb; ++i) c[i] = b[i];\n\n  return function(t) {\n    for (i = 0; i < na; ++i) c[i] = x[i](t);\n    return c;\n  };\n}\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvdmVnYS1mdW5jdGlvbnMvbm9kZV9tb2R1bGVzL2QzLWludGVycG9sYXRlL3NyYy9hcnJheS5qcy5qcyIsInNvdXJjZXMiOlsid2VicGFjazovLy8uL25vZGVfbW9kdWxlcy92ZWdhLWZ1bmN0aW9ucy9ub2RlX21vZHVsZXMvZDMtaW50ZXJwb2xhdGUvc3JjL2FycmF5LmpzP2NhYmIiXSwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHZhbHVlIGZyb20gXCIuL3ZhbHVlLmpzXCI7XG5pbXBvcnQgbnVtYmVyQXJyYXksIHtpc051bWJlckFycmF5fSBmcm9tIFwiLi9udW1iZXJBcnJheS5qc1wiO1xuXG5leHBvcnQgZGVmYXVsdCBmdW5jdGlvbihhLCBiKSB7XG4gIHJldHVybiAoaXNOdW1iZXJBcnJheShiKSA/IG51bWJlckFycmF5IDogZ2VuZXJpY0FycmF5KShhLCBiKTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGdlbmVyaWNBcnJheShhLCBiKSB7XG4gIHZhciBuYiA9IGIgPyBiLmxlbmd0aCA6IDAsXG4gICAgICBuYSA9IGEgPyBNYXRoLm1pbihuYiwgYS5sZW5ndGgpIDogMCxcbiAgICAgIHggPSBuZXcgQXJyYXkobmEpLFxuICAgICAgYyA9IG5ldyBBcnJheShuYiksXG4gICAgICBpO1xuXG4gIGZvciAoaSA9IDA7IGkgPCBuYTsgKytpKSB4W2ldID0gdmFsdWUoYVtpXSwgYltpXSk7XG4gIGZvciAoOyBpIDwgbmI7ICsraSkgY1tpXSA9IGJbaV07XG5cbiAgcmV0dXJuIGZ1bmN0aW9uKHQpIHtcbiAgICBmb3IgKGkgPSAwOyBpIDwgbmE7ICsraSkgY1tpXSA9IHhbaV0odCk7XG4gICAgcmV0dXJuIGM7XG4gIH07XG59XG4iXSwibWFwcGluZ3MiOiJBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7Iiwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///./node_modules/vega-functions/node_modules/d3-interpolate/src/array.js\n");

/***/ }),

/***/ "./node_modules/vega-functions/node_modules/d3-interpolate/src/basis.js":
/*!******************************************************************************!*\
  !*** ./node_modules/vega-functions/node_modules/d3-interpolate/src/basis.js ***!
  \******************************************************************************/
/*! exports provided: basis, default */
/***/ (function(module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"basis\", function() { return basis; });\nfunction basis(t1, v0, v1, v2, v3) {\n  var t2 = t1 * t1, t3 = t2 * t1;\n  return ((1 - 3 * t1 + 3 * t2 - t3) * v0\n      + (4 - 6 * t2 + 3 * t3) * v1\n      + (1 + 3 * t1 + 3 * t2 - 3 * t3) * v2\n      + t3 * v3) / 6;\n}\n\n/* harmony default export */ __webpack_exports__[\"default\"] = (function(values) {\n  var n = values.length - 1;\n  return function(t) {\n    var i = t <= 0 ? (t = 0) : t >= 1 ? (t = 1, n - 1) : Math.floor(t * n),\n        v1 = values[i],\n        v2 = values[i + 1],\n        v0 = i > 0 ? values[i - 1] : 2 * v1 - v2,\n        v3 = i < n - 1 ? values[i + 2] : 2 * v2 - v1;\n    return basis((t - i / n) * n, v0, v1, v2, v3);\n  };\n});\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvdmVnYS1mdW5jdGlvbnMvbm9kZV9tb2R1bGVzL2QzLWludGVycG9sYXRlL3NyYy9iYXNpcy5qcy5qcyIsInNvdXJjZXMiOlsid2VicGFjazovLy8uL25vZGVfbW9kdWxlcy92ZWdhLWZ1bmN0aW9ucy9ub2RlX21vZHVsZXMvZDMtaW50ZXJwb2xhdGUvc3JjL2Jhc2lzLmpzP2U2YTYiXSwic291cmNlc0NvbnRlbnQiOlsiZXhwb3J0IGZ1bmN0aW9uIGJhc2lzKHQxLCB2MCwgdjEsIHYyLCB2Mykge1xuICB2YXIgdDIgPSB0MSAqIHQxLCB0MyA9IHQyICogdDE7XG4gIHJldHVybiAoKDEgLSAzICogdDEgKyAzICogdDIgLSB0MykgKiB2MFxuICAgICAgKyAoNCAtIDYgKiB0MiArIDMgKiB0MykgKiB2MVxuICAgICAgKyAoMSArIDMgKiB0MSArIDMgKiB0MiAtIDMgKiB0MykgKiB2MlxuICAgICAgKyB0MyAqIHYzKSAvIDY7XG59XG5cbmV4cG9ydCBkZWZhdWx0IGZ1bmN0aW9uKHZhbHVlcykge1xuICB2YXIgbiA9IHZhbHVlcy5sZW5ndGggLSAxO1xuICByZXR1cm4gZnVuY3Rpb24odCkge1xuICAgIHZhciBpID0gdCA8PSAwID8gKHQgPSAwKSA6IHQgPj0gMSA/ICh0ID0gMSwgbiAtIDEpIDogTWF0aC5mbG9vcih0ICogbiksXG4gICAgICAgIHYxID0gdmFsdWVzW2ldLFxuICAgICAgICB2MiA9IHZhbHVlc1tpICsgMV0sXG4gICAgICAgIHYwID0gaSA+IDAgPyB2YWx1ZXNbaSAtIDFdIDogMiAqIHYxIC0gdjIsXG4gICAgICAgIHYzID0gaSA8IG4gLSAxID8gdmFsdWVzW2kgKyAyXSA6IDIgKiB2MiAtIHYxO1xuICAgIHJldHVybiBiYXNpcygodCAtIGkgLyBuKSAqIG4sIHYwLCB2MSwgdjIsIHYzKTtcbiAgfTtcbn1cbiJdLCJtYXBwaW5ncyI6IkFBQUE7QUFBQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOyIsInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///./node_modules/vega-functions/node_modules/d3-interpolate/src/basis.js\n");

/***/ }),

/***/ "./node_modules/vega-functions/node_modules/d3-interpolate/src/basisClosed.js":
/*!************************************************************************************!*\
  !*** ./node_modules/vega-functions/node_modules/d3-interpolate/src/basisClosed.js ***!
  \************************************************************************************/
/*! exports provided: default */
/***/ (function(module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _basis_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./basis.js */ \"./node_modules/vega-functions/node_modules/d3-interpolate/src/basis.js\");\n\n\n/* harmony default export */ __webpack_exports__[\"default\"] = (function(values) {\n  var n = values.length;\n  return function(t) {\n    var i = Math.floor(((t %= 1) < 0 ? ++t : t) * n),\n        v0 = values[(i + n - 1) % n],\n        v1 = values[i % n],\n        v2 = values[(i + 1) % n],\n        v3 = values[(i + 2) % n];\n    return Object(_basis_js__WEBPACK_IMPORTED_MODULE_0__[\"basis\"])((t - i / n) * n, v0, v1, v2, v3);\n  };\n});\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvdmVnYS1mdW5jdGlvbnMvbm9kZV9tb2R1bGVzL2QzLWludGVycG9sYXRlL3NyYy9iYXNpc0Nsb3NlZC5qcy5qcyIsInNvdXJjZXMiOlsid2VicGFjazovLy8uL25vZGVfbW9kdWxlcy92ZWdhLWZ1bmN0aW9ucy9ub2RlX21vZHVsZXMvZDMtaW50ZXJwb2xhdGUvc3JjL2Jhc2lzQ2xvc2VkLmpzP2JhYTQiXSwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtiYXNpc30gZnJvbSBcIi4vYmFzaXMuanNcIjtcblxuZXhwb3J0IGRlZmF1bHQgZnVuY3Rpb24odmFsdWVzKSB7XG4gIHZhciBuID0gdmFsdWVzLmxlbmd0aDtcbiAgcmV0dXJuIGZ1bmN0aW9uKHQpIHtcbiAgICB2YXIgaSA9IE1hdGguZmxvb3IoKCh0ICU9IDEpIDwgMCA/ICsrdCA6IHQpICogbiksXG4gICAgICAgIHYwID0gdmFsdWVzWyhpICsgbiAtIDEpICUgbl0sXG4gICAgICAgIHYxID0gdmFsdWVzW2kgJSBuXSxcbiAgICAgICAgdjIgPSB2YWx1ZXNbKGkgKyAxKSAlIG5dLFxuICAgICAgICB2MyA9IHZhbHVlc1soaSArIDIpICUgbl07XG4gICAgcmV0dXJuIGJhc2lzKCh0IC0gaSAvIG4pICogbiwgdjAsIHYxLCB2MiwgdjMpO1xuICB9O1xufVxuIl0sIm1hcHBpbmdzIjoiQUFBQTtBQUFBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7Iiwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///./node_modules/vega-functions/node_modules/d3-interpolate/src/basisClosed.js\n");

/***/ }),

/***/ "./node_modules/vega-functions/node_modules/d3-interpolate/src/color.js":
/*!******************************************************************************!*\
  !*** ./node_modules/vega-functions/node_modules/d3-interpolate/src/color.js ***!
  \******************************************************************************/
/*! exports provided: hue, gamma, default */
/***/ (function(module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"hue\", function() { return hue; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"gamma\", function() { return gamma; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"default\", function() { return nogamma; });\n/* harmony import */ var _constant_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./constant.js */ \"./node_modules/vega-functions/node_modules/d3-interpolate/src/constant.js\");\n\n\nfunction linear(a, d) {\n  return function(t) {\n    return a + t * d;\n  };\n}\n\nfunction exponential(a, b, y) {\n  return a = Math.pow(a, y), b = Math.pow(b, y) - a, y = 1 / y, function(t) {\n    return Math.pow(a + t * b, y);\n  };\n}\n\nfunction hue(a, b) {\n  var d = b - a;\n  return d ? linear(a, d > 180 || d < -180 ? d - 360 * Math.round(d / 360) : d) : Object(_constant_js__WEBPACK_IMPORTED_MODULE_0__[\"default\"])(isNaN(a) ? b : a);\n}\n\nfunction gamma(y) {\n  return (y = +y) === 1 ? nogamma : function(a, b) {\n    return b - a ? exponential(a, b, y) : Object(_constant_js__WEBPACK_IMPORTED_MODULE_0__[\"default\"])(isNaN(a) ? b : a);\n  };\n}\n\nfunction nogamma(a, b) {\n  var d = b - a;\n  return d ? linear(a, d) : Object(_constant_js__WEBPACK_IMPORTED_MODULE_0__[\"default\"])(isNaN(a) ? b : a);\n}\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvdmVnYS1mdW5jdGlvbnMvbm9kZV9tb2R1bGVzL2QzLWludGVycG9sYXRlL3NyYy9jb2xvci5qcy5qcyIsInNvdXJjZXMiOlsid2VicGFjazovLy8uL25vZGVfbW9kdWxlcy92ZWdhLWZ1bmN0aW9ucy9ub2RlX21vZHVsZXMvZDMtaW50ZXJwb2xhdGUvc3JjL2NvbG9yLmpzPzU1MjUiXSwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IGNvbnN0YW50IGZyb20gXCIuL2NvbnN0YW50LmpzXCI7XG5cbmZ1bmN0aW9uIGxpbmVhcihhLCBkKSB7XG4gIHJldHVybiBmdW5jdGlvbih0KSB7XG4gICAgcmV0dXJuIGEgKyB0ICogZDtcbiAgfTtcbn1cblxuZnVuY3Rpb24gZXhwb25lbnRpYWwoYSwgYiwgeSkge1xuICByZXR1cm4gYSA9IE1hdGgucG93KGEsIHkpLCBiID0gTWF0aC5wb3coYiwgeSkgLSBhLCB5ID0gMSAvIHksIGZ1bmN0aW9uKHQpIHtcbiAgICByZXR1cm4gTWF0aC5wb3coYSArIHQgKiBiLCB5KTtcbiAgfTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGh1ZShhLCBiKSB7XG4gIHZhciBkID0gYiAtIGE7XG4gIHJldHVybiBkID8gbGluZWFyKGEsIGQgPiAxODAgfHwgZCA8IC0xODAgPyBkIC0gMzYwICogTWF0aC5yb3VuZChkIC8gMzYwKSA6IGQpIDogY29uc3RhbnQoaXNOYU4oYSkgPyBiIDogYSk7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBnYW1tYSh5KSB7XG4gIHJldHVybiAoeSA9ICt5KSA9PT0gMSA/IG5vZ2FtbWEgOiBmdW5jdGlvbihhLCBiKSB7XG4gICAgcmV0dXJuIGIgLSBhID8gZXhwb25lbnRpYWwoYSwgYiwgeSkgOiBjb25zdGFudChpc05hTihhKSA/IGIgOiBhKTtcbiAgfTtcbn1cblxuZXhwb3J0IGRlZmF1bHQgZnVuY3Rpb24gbm9nYW1tYShhLCBiKSB7XG4gIHZhciBkID0gYiAtIGE7XG4gIHJldHVybiBkID8gbGluZWFyKGEsIGQpIDogY29uc3RhbnQoaXNOYU4oYSkgPyBiIDogYSk7XG59XG4iXSwibWFwcGluZ3MiOiJBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOyIsInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///./node_modules/vega-functions/node_modules/d3-interpolate/src/color.js\n");

/***/ }),

/***/ "./node_modules/vega-functions/node_modules/d3-interpolate/src/constant.js":
/*!*********************************************************************************!*\
  !*** ./node_modules/vega-functions/node_modules/d3-interpolate/src/constant.js ***!
  \*********************************************************************************/
/*! exports provided: default */
/***/ (function(module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony default export */ __webpack_exports__[\"default\"] = (x => () => x);\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvdmVnYS1mdW5jdGlvbnMvbm9kZV9tb2R1bGVzL2QzLWludGVycG9sYXRlL3NyYy9jb25zdGFudC5qcy5qcyIsInNvdXJjZXMiOlsid2VicGFjazovLy8uL25vZGVfbW9kdWxlcy92ZWdhLWZ1bmN0aW9ucy9ub2RlX21vZHVsZXMvZDMtaW50ZXJwb2xhdGUvc3JjL2NvbnN0YW50LmpzPzlmMmMiXSwic291cmNlc0NvbnRlbnQiOlsiZXhwb3J0IGRlZmF1bHQgeCA9PiAoKSA9PiB4O1xuIl0sIm1hcHBpbmdzIjoiQUFBQTtBQUFBOyIsInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///./node_modules/vega-functions/node_modules/d3-interpolate/src/constant.js\n");

/***/ }),

/***/ "./node_modules/vega-functions/node_modules/d3-interpolate/src/cubehelix.js":
/*!**********************************************************************************!*\
  !*** ./node_modules/vega-functions/node_modules/d3-interpolate/src/cubehelix.js ***!
  \**********************************************************************************/
/*! exports provided: default, cubehelixLong */
/***/ (function(module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"cubehelixLong\", function() { return cubehelixLong; });\n/* harmony import */ var d3_color__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! d3-color */ \"./node_modules/vega-functions/node_modules/d3-color/src/index.js\");\n/* harmony import */ var _color_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./color.js */ \"./node_modules/vega-functions/node_modules/d3-interpolate/src/color.js\");\n\n\n\nfunction cubehelix(hue) {\n  return (function cubehelixGamma(y) {\n    y = +y;\n\n    function cubehelix(start, end) {\n      var h = hue((start = Object(d3_color__WEBPACK_IMPORTED_MODULE_0__[\"cubehelix\"])(start)).h, (end = Object(d3_color__WEBPACK_IMPORTED_MODULE_0__[\"cubehelix\"])(end)).h),\n          s = Object(_color_js__WEBPACK_IMPORTED_MODULE_1__[\"default\"])(start.s, end.s),\n          l = Object(_color_js__WEBPACK_IMPORTED_MODULE_1__[\"default\"])(start.l, end.l),\n          opacity = Object(_color_js__WEBPACK_IMPORTED_MODULE_1__[\"default\"])(start.opacity, end.opacity);\n      return function(t) {\n        start.h = h(t);\n        start.s = s(t);\n        start.l = l(Math.pow(t, y));\n        start.opacity = opacity(t);\n        return start + \"\";\n      };\n    }\n\n    cubehelix.gamma = cubehelixGamma;\n\n    return cubehelix;\n  })(1);\n}\n\n/* harmony default export */ __webpack_exports__[\"default\"] = (cubehelix(_color_js__WEBPACK_IMPORTED_MODULE_1__[\"hue\"]));\nvar cubehelixLong = cubehelix(_color_js__WEBPACK_IMPORTED_MODULE_1__[\"default\"]);\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvdmVnYS1mdW5jdGlvbnMvbm9kZV9tb2R1bGVzL2QzLWludGVycG9sYXRlL3NyYy9jdWJlaGVsaXguanMuanMiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvdmVnYS1mdW5jdGlvbnMvbm9kZV9tb2R1bGVzL2QzLWludGVycG9sYXRlL3NyYy9jdWJlaGVsaXguanM/MWJjMyJdLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge2N1YmVoZWxpeCBhcyBjb2xvckN1YmVoZWxpeH0gZnJvbSBcImQzLWNvbG9yXCI7XG5pbXBvcnQgY29sb3IsIHtodWV9IGZyb20gXCIuL2NvbG9yLmpzXCI7XG5cbmZ1bmN0aW9uIGN1YmVoZWxpeChodWUpIHtcbiAgcmV0dXJuIChmdW5jdGlvbiBjdWJlaGVsaXhHYW1tYSh5KSB7XG4gICAgeSA9ICt5O1xuXG4gICAgZnVuY3Rpb24gY3ViZWhlbGl4KHN0YXJ0LCBlbmQpIHtcbiAgICAgIHZhciBoID0gaHVlKChzdGFydCA9IGNvbG9yQ3ViZWhlbGl4KHN0YXJ0KSkuaCwgKGVuZCA9IGNvbG9yQ3ViZWhlbGl4KGVuZCkpLmgpLFxuICAgICAgICAgIHMgPSBjb2xvcihzdGFydC5zLCBlbmQucyksXG4gICAgICAgICAgbCA9IGNvbG9yKHN0YXJ0LmwsIGVuZC5sKSxcbiAgICAgICAgICBvcGFjaXR5ID0gY29sb3Ioc3RhcnQub3BhY2l0eSwgZW5kLm9wYWNpdHkpO1xuICAgICAgcmV0dXJuIGZ1bmN0aW9uKHQpIHtcbiAgICAgICAgc3RhcnQuaCA9IGgodCk7XG4gICAgICAgIHN0YXJ0LnMgPSBzKHQpO1xuICAgICAgICBzdGFydC5sID0gbChNYXRoLnBvdyh0LCB5KSk7XG4gICAgICAgIHN0YXJ0Lm9wYWNpdHkgPSBvcGFjaXR5KHQpO1xuICAgICAgICByZXR1cm4gc3RhcnQgKyBcIlwiO1xuICAgICAgfTtcbiAgICB9XG5cbiAgICBjdWJlaGVsaXguZ2FtbWEgPSBjdWJlaGVsaXhHYW1tYTtcblxuICAgIHJldHVybiBjdWJlaGVsaXg7XG4gIH0pKDEpO1xufVxuXG5leHBvcnQgZGVmYXVsdCBjdWJlaGVsaXgoaHVlKTtcbmV4cG9ydCB2YXIgY3ViZWhlbGl4TG9uZyA9IGN1YmVoZWxpeChjb2xvcik7XG4iXSwibWFwcGluZ3MiOiJBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTsiLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///./node_modules/vega-functions/node_modules/d3-interpolate/src/cubehelix.js\n");

/***/ }),

/***/ "./node_modules/vega-functions/node_modules/d3-interpolate/src/date.js":
/*!*****************************************************************************!*\
  !*** ./node_modules/vega-functions/node_modules/d3-interpolate/src/date.js ***!
  \*****************************************************************************/
/*! exports provided: default */
/***/ (function(module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony default export */ __webpack_exports__[\"default\"] = (function(a, b) {\n  var d = new Date;\n  return a = +a, b = +b, function(t) {\n    return d.setTime(a * (1 - t) + b * t), d;\n  };\n});\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvdmVnYS1mdW5jdGlvbnMvbm9kZV9tb2R1bGVzL2QzLWludGVycG9sYXRlL3NyYy9kYXRlLmpzLmpzIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL3ZlZ2EtZnVuY3Rpb25zL25vZGVfbW9kdWxlcy9kMy1pbnRlcnBvbGF0ZS9zcmMvZGF0ZS5qcz8wMDJlIl0sInNvdXJjZXNDb250ZW50IjpbImV4cG9ydCBkZWZhdWx0IGZ1bmN0aW9uKGEsIGIpIHtcbiAgdmFyIGQgPSBuZXcgRGF0ZTtcbiAgcmV0dXJuIGEgPSArYSwgYiA9ICtiLCBmdW5jdGlvbih0KSB7XG4gICAgcmV0dXJuIGQuc2V0VGltZShhICogKDEgLSB0KSArIGIgKiB0KSwgZDtcbiAgfTtcbn1cbiJdLCJtYXBwaW5ncyI6IkFBQUE7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7Iiwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///./node_modules/vega-functions/node_modules/d3-interpolate/src/date.js\n");

/***/ }),

/***/ "./node_modules/vega-functions/node_modules/d3-interpolate/src/discrete.js":
/*!*********************************************************************************!*\
  !*** ./node_modules/vega-functions/node_modules/d3-interpolate/src/discrete.js ***!
  \*********************************************************************************/
/*! exports provided: default */
/***/ (function(module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony default export */ __webpack_exports__[\"default\"] = (function(range) {\n  var n = range.length;\n  return function(t) {\n    return range[Math.max(0, Math.min(n - 1, Math.floor(t * n)))];\n  };\n});\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvdmVnYS1mdW5jdGlvbnMvbm9kZV9tb2R1bGVzL2QzLWludGVycG9sYXRlL3NyYy9kaXNjcmV0ZS5qcy5qcyIsInNvdXJjZXMiOlsid2VicGFjazovLy8uL25vZGVfbW9kdWxlcy92ZWdhLWZ1bmN0aW9ucy9ub2RlX21vZHVsZXMvZDMtaW50ZXJwb2xhdGUvc3JjL2Rpc2NyZXRlLmpzPzFjNWMiXSwic291cmNlc0NvbnRlbnQiOlsiZXhwb3J0IGRlZmF1bHQgZnVuY3Rpb24ocmFuZ2UpIHtcbiAgdmFyIG4gPSByYW5nZS5sZW5ndGg7XG4gIHJldHVybiBmdW5jdGlvbih0KSB7XG4gICAgcmV0dXJuIHJhbmdlW01hdGgubWF4KDAsIE1hdGgubWluKG4gLSAxLCBNYXRoLmZsb29yKHQgKiBuKSkpXTtcbiAgfTtcbn1cbiJdLCJtYXBwaW5ncyI6IkFBQUE7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7Iiwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///./node_modules/vega-functions/node_modules/d3-interpolate/src/discrete.js\n");

/***/ }),

/***/ "./node_modules/vega-functions/node_modules/d3-interpolate/src/hcl.js":
/*!****************************************************************************!*\
  !*** ./node_modules/vega-functions/node_modules/d3-interpolate/src/hcl.js ***!
  \****************************************************************************/
/*! exports provided: default, hclLong */
/***/ (function(module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"hclLong\", function() { return hclLong; });\n/* harmony import */ var d3_color__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! d3-color */ \"./node_modules/vega-functions/node_modules/d3-color/src/index.js\");\n/* harmony import */ var _color_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./color.js */ \"./node_modules/vega-functions/node_modules/d3-interpolate/src/color.js\");\n\n\n\nfunction hcl(hue) {\n  return function(start, end) {\n    var h = hue((start = Object(d3_color__WEBPACK_IMPORTED_MODULE_0__[\"hcl\"])(start)).h, (end = Object(d3_color__WEBPACK_IMPORTED_MODULE_0__[\"hcl\"])(end)).h),\n        c = Object(_color_js__WEBPACK_IMPORTED_MODULE_1__[\"default\"])(start.c, end.c),\n        l = Object(_color_js__WEBPACK_IMPORTED_MODULE_1__[\"default\"])(start.l, end.l),\n        opacity = Object(_color_js__WEBPACK_IMPORTED_MODULE_1__[\"default\"])(start.opacity, end.opacity);\n    return function(t) {\n      start.h = h(t);\n      start.c = c(t);\n      start.l = l(t);\n      start.opacity = opacity(t);\n      return start + \"\";\n    };\n  }\n}\n\n/* harmony default export */ __webpack_exports__[\"default\"] = (hcl(_color_js__WEBPACK_IMPORTED_MODULE_1__[\"hue\"]));\nvar hclLong = hcl(_color_js__WEBPACK_IMPORTED_MODULE_1__[\"default\"]);\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvdmVnYS1mdW5jdGlvbnMvbm9kZV9tb2R1bGVzL2QzLWludGVycG9sYXRlL3NyYy9oY2wuanMuanMiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvdmVnYS1mdW5jdGlvbnMvbm9kZV9tb2R1bGVzL2QzLWludGVycG9sYXRlL3NyYy9oY2wuanM/NDY5OSJdLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge2hjbCBhcyBjb2xvckhjbH0gZnJvbSBcImQzLWNvbG9yXCI7XG5pbXBvcnQgY29sb3IsIHtodWV9IGZyb20gXCIuL2NvbG9yLmpzXCI7XG5cbmZ1bmN0aW9uIGhjbChodWUpIHtcbiAgcmV0dXJuIGZ1bmN0aW9uKHN0YXJ0LCBlbmQpIHtcbiAgICB2YXIgaCA9IGh1ZSgoc3RhcnQgPSBjb2xvckhjbChzdGFydCkpLmgsIChlbmQgPSBjb2xvckhjbChlbmQpKS5oKSxcbiAgICAgICAgYyA9IGNvbG9yKHN0YXJ0LmMsIGVuZC5jKSxcbiAgICAgICAgbCA9IGNvbG9yKHN0YXJ0LmwsIGVuZC5sKSxcbiAgICAgICAgb3BhY2l0eSA9IGNvbG9yKHN0YXJ0Lm9wYWNpdHksIGVuZC5vcGFjaXR5KTtcbiAgICByZXR1cm4gZnVuY3Rpb24odCkge1xuICAgICAgc3RhcnQuaCA9IGgodCk7XG4gICAgICBzdGFydC5jID0gYyh0KTtcbiAgICAgIHN0YXJ0LmwgPSBsKHQpO1xuICAgICAgc3RhcnQub3BhY2l0eSA9IG9wYWNpdHkodCk7XG4gICAgICByZXR1cm4gc3RhcnQgKyBcIlwiO1xuICAgIH07XG4gIH1cbn1cblxuZXhwb3J0IGRlZmF1bHQgaGNsKGh1ZSk7XG5leHBvcnQgdmFyIGhjbExvbmcgPSBoY2woY29sb3IpO1xuIl0sIm1hcHBpbmdzIjoiQUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTsiLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///./node_modules/vega-functions/node_modules/d3-interpolate/src/hcl.js\n");

/***/ }),

/***/ "./node_modules/vega-functions/node_modules/d3-interpolate/src/hsl.js":
/*!****************************************************************************!*\
  !*** ./node_modules/vega-functions/node_modules/d3-interpolate/src/hsl.js ***!
  \****************************************************************************/
/*! exports provided: default, hslLong */
/***/ (function(module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"hslLong\", function() { return hslLong; });\n/* harmony import */ var d3_color__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! d3-color */ \"./node_modules/vega-functions/node_modules/d3-color/src/index.js\");\n/* harmony import */ var _color_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./color.js */ \"./node_modules/vega-functions/node_modules/d3-interpolate/src/color.js\");\n\n\n\nfunction hsl(hue) {\n  return function(start, end) {\n    var h = hue((start = Object(d3_color__WEBPACK_IMPORTED_MODULE_0__[\"hsl\"])(start)).h, (end = Object(d3_color__WEBPACK_IMPORTED_MODULE_0__[\"hsl\"])(end)).h),\n        s = Object(_color_js__WEBPACK_IMPORTED_MODULE_1__[\"default\"])(start.s, end.s),\n        l = Object(_color_js__WEBPACK_IMPORTED_MODULE_1__[\"default\"])(start.l, end.l),\n        opacity = Object(_color_js__WEBPACK_IMPORTED_MODULE_1__[\"default\"])(start.opacity, end.opacity);\n    return function(t) {\n      start.h = h(t);\n      start.s = s(t);\n      start.l = l(t);\n      start.opacity = opacity(t);\n      return start + \"\";\n    };\n  }\n}\n\n/* harmony default export */ __webpack_exports__[\"default\"] = (hsl(_color_js__WEBPACK_IMPORTED_MODULE_1__[\"hue\"]));\nvar hslLong = hsl(_color_js__WEBPACK_IMPORTED_MODULE_1__[\"default\"]);\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvdmVnYS1mdW5jdGlvbnMvbm9kZV9tb2R1bGVzL2QzLWludGVycG9sYXRlL3NyYy9oc2wuanMuanMiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvdmVnYS1mdW5jdGlvbnMvbm9kZV9tb2R1bGVzL2QzLWludGVycG9sYXRlL3NyYy9oc2wuanM/Zjg1NSJdLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge2hzbCBhcyBjb2xvckhzbH0gZnJvbSBcImQzLWNvbG9yXCI7XG5pbXBvcnQgY29sb3IsIHtodWV9IGZyb20gXCIuL2NvbG9yLmpzXCI7XG5cbmZ1bmN0aW9uIGhzbChodWUpIHtcbiAgcmV0dXJuIGZ1bmN0aW9uKHN0YXJ0LCBlbmQpIHtcbiAgICB2YXIgaCA9IGh1ZSgoc3RhcnQgPSBjb2xvckhzbChzdGFydCkpLmgsIChlbmQgPSBjb2xvckhzbChlbmQpKS5oKSxcbiAgICAgICAgcyA9IGNvbG9yKHN0YXJ0LnMsIGVuZC5zKSxcbiAgICAgICAgbCA9IGNvbG9yKHN0YXJ0LmwsIGVuZC5sKSxcbiAgICAgICAgb3BhY2l0eSA9IGNvbG9yKHN0YXJ0Lm9wYWNpdHksIGVuZC5vcGFjaXR5KTtcbiAgICByZXR1cm4gZnVuY3Rpb24odCkge1xuICAgICAgc3RhcnQuaCA9IGgodCk7XG4gICAgICBzdGFydC5zID0gcyh0KTtcbiAgICAgIHN0YXJ0LmwgPSBsKHQpO1xuICAgICAgc3RhcnQub3BhY2l0eSA9IG9wYWNpdHkodCk7XG4gICAgICByZXR1cm4gc3RhcnQgKyBcIlwiO1xuICAgIH07XG4gIH1cbn1cblxuZXhwb3J0IGRlZmF1bHQgaHNsKGh1ZSk7XG5leHBvcnQgdmFyIGhzbExvbmcgPSBoc2woY29sb3IpO1xuIl0sIm1hcHBpbmdzIjoiQUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTsiLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///./node_modules/vega-functions/node_modules/d3-interpolate/src/hsl.js\n");

/***/ }),

/***/ "./node_modules/vega-functions/node_modules/d3-interpolate/src/hue.js":
/*!****************************************************************************!*\
  !*** ./node_modules/vega-functions/node_modules/d3-interpolate/src/hue.js ***!
  \****************************************************************************/
/*! exports provided: default */
/***/ (function(module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _color_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./color.js */ \"./node_modules/vega-functions/node_modules/d3-interpolate/src/color.js\");\n\n\n/* harmony default export */ __webpack_exports__[\"default\"] = (function(a, b) {\n  var i = Object(_color_js__WEBPACK_IMPORTED_MODULE_0__[\"hue\"])(+a, +b);\n  return function(t) {\n    var x = i(t);\n    return x - 360 * Math.floor(x / 360);\n  };\n});\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvdmVnYS1mdW5jdGlvbnMvbm9kZV9tb2R1bGVzL2QzLWludGVycG9sYXRlL3NyYy9odWUuanMuanMiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvdmVnYS1mdW5jdGlvbnMvbm9kZV9tb2R1bGVzL2QzLWludGVycG9sYXRlL3NyYy9odWUuanM/ZTQ5OCJdLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge2h1ZX0gZnJvbSBcIi4vY29sb3IuanNcIjtcblxuZXhwb3J0IGRlZmF1bHQgZnVuY3Rpb24oYSwgYikge1xuICB2YXIgaSA9IGh1ZSgrYSwgK2IpO1xuICByZXR1cm4gZnVuY3Rpb24odCkge1xuICAgIHZhciB4ID0gaSh0KTtcbiAgICByZXR1cm4geCAtIDM2MCAqIE1hdGguZmxvb3IoeCAvIDM2MCk7XG4gIH07XG59XG4iXSwibWFwcGluZ3MiOiJBQUFBO0FBQUE7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7Iiwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///./node_modules/vega-functions/node_modules/d3-interpolate/src/hue.js\n");

/***/ }),

/***/ "./node_modules/vega-functions/node_modules/d3-interpolate/src/index.js":
/*!******************************************************************************!*\
  !*** ./node_modules/vega-functions/node_modules/d3-interpolate/src/index.js ***!
  \******************************************************************************/
/*! exports provided: interpolate, interpolateArray, interpolateBasis, interpolateBasisClosed, interpolateDate, interpolateDiscrete, interpolateHue, interpolateNumber, interpolateNumberArray, interpolateObject, interpolateRound, interpolateString, interpolateTransformCss, interpolateTransformSvg, interpolateZoom, interpolateRgb, interpolateRgbBasis, interpolateRgbBasisClosed, interpolateHsl, interpolateHslLong, interpolateLab, interpolateHcl, interpolateHclLong, interpolateCubehelix, interpolateCubehelixLong, piecewise, quantize */
/***/ (function(module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _value_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./value.js */ \"./node_modules/vega-functions/node_modules/d3-interpolate/src/value.js\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"interpolate\", function() { return _value_js__WEBPACK_IMPORTED_MODULE_0__[\"default\"]; });\n\n/* harmony import */ var _array_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./array.js */ \"./node_modules/vega-functions/node_modules/d3-interpolate/src/array.js\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"interpolateArray\", function() { return _array_js__WEBPACK_IMPORTED_MODULE_1__[\"default\"]; });\n\n/* harmony import */ var _basis_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./basis.js */ \"./node_modules/vega-functions/node_modules/d3-interpolate/src/basis.js\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"interpolateBasis\", function() { return _basis_js__WEBPACK_IMPORTED_MODULE_2__[\"default\"]; });\n\n/* harmony import */ var _basisClosed_js__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ./basisClosed.js */ \"./node_modules/vega-functions/node_modules/d3-interpolate/src/basisClosed.js\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"interpolateBasisClosed\", function() { return _basisClosed_js__WEBPACK_IMPORTED_MODULE_3__[\"default\"]; });\n\n/* harmony import */ var _date_js__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ./date.js */ \"./node_modules/vega-functions/node_modules/d3-interpolate/src/date.js\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"interpolateDate\", function() { return _date_js__WEBPACK_IMPORTED_MODULE_4__[\"default\"]; });\n\n/* harmony import */ var _discrete_js__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! ./discrete.js */ \"./node_modules/vega-functions/node_modules/d3-interpolate/src/discrete.js\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"interpolateDiscrete\", function() { return _discrete_js__WEBPACK_IMPORTED_MODULE_5__[\"default\"]; });\n\n/* harmony import */ var _hue_js__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! ./hue.js */ \"./node_modules/vega-functions/node_modules/d3-interpolate/src/hue.js\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"interpolateHue\", function() { return _hue_js__WEBPACK_IMPORTED_MODULE_6__[\"default\"]; });\n\n/* harmony import */ var _number_js__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! ./number.js */ \"./node_modules/vega-functions/node_modules/d3-interpolate/src/number.js\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"interpolateNumber\", function() { return _number_js__WEBPACK_IMPORTED_MODULE_7__[\"default\"]; });\n\n/* harmony import */ var _numberArray_js__WEBPACK_IMPORTED_MODULE_8__ = __webpack_require__(/*! ./numberArray.js */ \"./node_modules/vega-functions/node_modules/d3-interpolate/src/numberArray.js\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"interpolateNumberArray\", function() { return _numberArray_js__WEBPACK_IMPORTED_MODULE_8__[\"default\"]; });\n\n/* harmony import */ var _object_js__WEBPACK_IMPORTED_MODULE_9__ = __webpack_require__(/*! ./object.js */ \"./node_modules/vega-functions/node_modules/d3-interpolate/src/object.js\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"interpolateObject\", function() { return _object_js__WEBPACK_IMPORTED_MODULE_9__[\"default\"]; });\n\n/* harmony import */ var _round_js__WEBPACK_IMPORTED_MODULE_10__ = __webpack_require__(/*! ./round.js */ \"./node_modules/vega-functions/node_modules/d3-interpolate/src/round.js\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"interpolateRound\", function() { return _round_js__WEBPACK_IMPORTED_MODULE_10__[\"default\"]; });\n\n/* harmony import */ var _string_js__WEBPACK_IMPORTED_MODULE_11__ = __webpack_require__(/*! ./string.js */ \"./node_modules/vega-functions/node_modules/d3-interpolate/src/string.js\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"interpolateString\", function() { return _string_js__WEBPACK_IMPORTED_MODULE_11__[\"default\"]; });\n\n/* harmony import */ var _transform_index_js__WEBPACK_IMPORTED_MODULE_12__ = __webpack_require__(/*! ./transform/index.js */ \"./node_modules/vega-functions/node_modules/d3-interpolate/src/transform/index.js\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"interpolateTransformCss\", function() { return _transform_index_js__WEBPACK_IMPORTED_MODULE_12__[\"interpolateTransformCss\"]; });\n\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"interpolateTransformSvg\", function() { return _transform_index_js__WEBPACK_IMPORTED_MODULE_12__[\"interpolateTransformSvg\"]; });\n\n/* harmony import */ var _zoom_js__WEBPACK_IMPORTED_MODULE_13__ = __webpack_require__(/*! ./zoom.js */ \"./node_modules/vega-functions/node_modules/d3-interpolate/src/zoom.js\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"interpolateZoom\", function() { return _zoom_js__WEBPACK_IMPORTED_MODULE_13__[\"default\"]; });\n\n/* harmony import */ var _rgb_js__WEBPACK_IMPORTED_MODULE_14__ = __webpack_require__(/*! ./rgb.js */ \"./node_modules/vega-functions/node_modules/d3-interpolate/src/rgb.js\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"interpolateRgb\", function() { return _rgb_js__WEBPACK_IMPORTED_MODULE_14__[\"default\"]; });\n\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"interpolateRgbBasis\", function() { return _rgb_js__WEBPACK_IMPORTED_MODULE_14__[\"rgbBasis\"]; });\n\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"interpolateRgbBasisClosed\", function() { return _rgb_js__WEBPACK_IMPORTED_MODULE_14__[\"rgbBasisClosed\"]; });\n\n/* harmony import */ var _hsl_js__WEBPACK_IMPORTED_MODULE_15__ = __webpack_require__(/*! ./hsl.js */ \"./node_modules/vega-functions/node_modules/d3-interpolate/src/hsl.js\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"interpolateHsl\", function() { return _hsl_js__WEBPACK_IMPORTED_MODULE_15__[\"default\"]; });\n\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"interpolateHslLong\", function() { return _hsl_js__WEBPACK_IMPORTED_MODULE_15__[\"hslLong\"]; });\n\n/* harmony import */ var _lab_js__WEBPACK_IMPORTED_MODULE_16__ = __webpack_require__(/*! ./lab.js */ \"./node_modules/vega-functions/node_modules/d3-interpolate/src/lab.js\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"interpolateLab\", function() { return _lab_js__WEBPACK_IMPORTED_MODULE_16__[\"default\"]; });\n\n/* harmony import */ var _hcl_js__WEBPACK_IMPORTED_MODULE_17__ = __webpack_require__(/*! ./hcl.js */ \"./node_modules/vega-functions/node_modules/d3-interpolate/src/hcl.js\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"interpolateHcl\", function() { return _hcl_js__WEBPACK_IMPORTED_MODULE_17__[\"default\"]; });\n\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"interpolateHclLong\", function() { return _hcl_js__WEBPACK_IMPORTED_MODULE_17__[\"hclLong\"]; });\n\n/* harmony import */ var _cubehelix_js__WEBPACK_IMPORTED_MODULE_18__ = __webpack_require__(/*! ./cubehelix.js */ \"./node_modules/vega-functions/node_modules/d3-interpolate/src/cubehelix.js\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"interpolateCubehelix\", function() { return _cubehelix_js__WEBPACK_IMPORTED_MODULE_18__[\"default\"]; });\n\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"interpolateCubehelixLong\", function() { return _cubehelix_js__WEBPACK_IMPORTED_MODULE_18__[\"cubehelixLong\"]; });\n\n/* harmony import */ var _piecewise_js__WEBPACK_IMPORTED_MODULE_19__ = __webpack_require__(/*! ./piecewise.js */ \"./node_modules/vega-functions/node_modules/d3-interpolate/src/piecewise.js\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"piecewise\", function() { return _piecewise_js__WEBPACK_IMPORTED_MODULE_19__[\"default\"]; });\n\n/* harmony import */ var _quantize_js__WEBPACK_IMPORTED_MODULE_20__ = __webpack_require__(/*! ./quantize.js */ \"./node_modules/vega-functions/node_modules/d3-interpolate/src/quantize.js\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"quantize\", function() { return _quantize_js__WEBPACK_IMPORTED_MODULE_20__[\"default\"]; });\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvdmVnYS1mdW5jdGlvbnMvbm9kZV9tb2R1bGVzL2QzLWludGVycG9sYXRlL3NyYy9pbmRleC5qcy5qcyIsInNvdXJjZXMiOlsid2VicGFjazovLy8uL25vZGVfbW9kdWxlcy92ZWdhLWZ1bmN0aW9ucy9ub2RlX21vZHVsZXMvZDMtaW50ZXJwb2xhdGUvc3JjL2luZGV4LmpzP2Q0ZjIiXSwic291cmNlc0NvbnRlbnQiOlsiZXhwb3J0IHtkZWZhdWx0IGFzIGludGVycG9sYXRlfSBmcm9tIFwiLi92YWx1ZS5qc1wiO1xuZXhwb3J0IHtkZWZhdWx0IGFzIGludGVycG9sYXRlQXJyYXl9IGZyb20gXCIuL2FycmF5LmpzXCI7XG5leHBvcnQge2RlZmF1bHQgYXMgaW50ZXJwb2xhdGVCYXNpc30gZnJvbSBcIi4vYmFzaXMuanNcIjtcbmV4cG9ydCB7ZGVmYXVsdCBhcyBpbnRlcnBvbGF0ZUJhc2lzQ2xvc2VkfSBmcm9tIFwiLi9iYXNpc0Nsb3NlZC5qc1wiO1xuZXhwb3J0IHtkZWZhdWx0IGFzIGludGVycG9sYXRlRGF0ZX0gZnJvbSBcIi4vZGF0ZS5qc1wiO1xuZXhwb3J0IHtkZWZhdWx0IGFzIGludGVycG9sYXRlRGlzY3JldGV9IGZyb20gXCIuL2Rpc2NyZXRlLmpzXCI7XG5leHBvcnQge2RlZmF1bHQgYXMgaW50ZXJwb2xhdGVIdWV9IGZyb20gXCIuL2h1ZS5qc1wiO1xuZXhwb3J0IHtkZWZhdWx0IGFzIGludGVycG9sYXRlTnVtYmVyfSBmcm9tIFwiLi9udW1iZXIuanNcIjtcbmV4cG9ydCB7ZGVmYXVsdCBhcyBpbnRlcnBvbGF0ZU51bWJlckFycmF5fSBmcm9tIFwiLi9udW1iZXJBcnJheS5qc1wiO1xuZXhwb3J0IHtkZWZhdWx0IGFzIGludGVycG9sYXRlT2JqZWN0fSBmcm9tIFwiLi9vYmplY3QuanNcIjtcbmV4cG9ydCB7ZGVmYXVsdCBhcyBpbnRlcnBvbGF0ZVJvdW5kfSBmcm9tIFwiLi9yb3VuZC5qc1wiO1xuZXhwb3J0IHtkZWZhdWx0IGFzIGludGVycG9sYXRlU3RyaW5nfSBmcm9tIFwiLi9zdHJpbmcuanNcIjtcbmV4cG9ydCB7aW50ZXJwb2xhdGVUcmFuc2Zvcm1Dc3MsIGludGVycG9sYXRlVHJhbnNmb3JtU3ZnfSBmcm9tIFwiLi90cmFuc2Zvcm0vaW5kZXguanNcIjtcbmV4cG9ydCB7ZGVmYXVsdCBhcyBpbnRlcnBvbGF0ZVpvb219IGZyb20gXCIuL3pvb20uanNcIjtcbmV4cG9ydCB7ZGVmYXVsdCBhcyBpbnRlcnBvbGF0ZVJnYiwgcmdiQmFzaXMgYXMgaW50ZXJwb2xhdGVSZ2JCYXNpcywgcmdiQmFzaXNDbG9zZWQgYXMgaW50ZXJwb2xhdGVSZ2JCYXNpc0Nsb3NlZH0gZnJvbSBcIi4vcmdiLmpzXCI7XG5leHBvcnQge2RlZmF1bHQgYXMgaW50ZXJwb2xhdGVIc2wsIGhzbExvbmcgYXMgaW50ZXJwb2xhdGVIc2xMb25nfSBmcm9tIFwiLi9oc2wuanNcIjtcbmV4cG9ydCB7ZGVmYXVsdCBhcyBpbnRlcnBvbGF0ZUxhYn0gZnJvbSBcIi4vbGFiLmpzXCI7XG5leHBvcnQge2RlZmF1bHQgYXMgaW50ZXJwb2xhdGVIY2wsIGhjbExvbmcgYXMgaW50ZXJwb2xhdGVIY2xMb25nfSBmcm9tIFwiLi9oY2wuanNcIjtcbmV4cG9ydCB7ZGVmYXVsdCBhcyBpbnRlcnBvbGF0ZUN1YmVoZWxpeCwgY3ViZWhlbGl4TG9uZyBhcyBpbnRlcnBvbGF0ZUN1YmVoZWxpeExvbmd9IGZyb20gXCIuL2N1YmVoZWxpeC5qc1wiO1xuZXhwb3J0IHtkZWZhdWx0IGFzIHBpZWNld2lzZX0gZnJvbSBcIi4vcGllY2V3aXNlLmpzXCI7XG5leHBvcnQge2RlZmF1bHQgYXMgcXVhbnRpemV9IGZyb20gXCIuL3F1YW50aXplLmpzXCI7XG4iXSwibWFwcGluZ3MiOiJBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOyIsInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///./node_modules/vega-functions/node_modules/d3-interpolate/src/index.js\n");

/***/ }),

/***/ "./node_modules/vega-functions/node_modules/d3-interpolate/src/lab.js":
/*!****************************************************************************!*\
  !*** ./node_modules/vega-functions/node_modules/d3-interpolate/src/lab.js ***!
  \****************************************************************************/
/*! exports provided: default */
/***/ (function(module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"default\", function() { return lab; });\n/* harmony import */ var d3_color__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! d3-color */ \"./node_modules/vega-functions/node_modules/d3-color/src/index.js\");\n/* harmony import */ var _color_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./color.js */ \"./node_modules/vega-functions/node_modules/d3-interpolate/src/color.js\");\n\n\n\nfunction lab(start, end) {\n  var l = Object(_color_js__WEBPACK_IMPORTED_MODULE_1__[\"default\"])((start = Object(d3_color__WEBPACK_IMPORTED_MODULE_0__[\"lab\"])(start)).l, (end = Object(d3_color__WEBPACK_IMPORTED_MODULE_0__[\"lab\"])(end)).l),\n      a = Object(_color_js__WEBPACK_IMPORTED_MODULE_1__[\"default\"])(start.a, end.a),\n      b = Object(_color_js__WEBPACK_IMPORTED_MODULE_1__[\"default\"])(start.b, end.b),\n      opacity = Object(_color_js__WEBPACK_IMPORTED_MODULE_1__[\"default\"])(start.opacity, end.opacity);\n  return function(t) {\n    start.l = l(t);\n    start.a = a(t);\n    start.b = b(t);\n    start.opacity = opacity(t);\n    return start + \"\";\n  };\n}\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvdmVnYS1mdW5jdGlvbnMvbm9kZV9tb2R1bGVzL2QzLWludGVycG9sYXRlL3NyYy9sYWIuanMuanMiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvdmVnYS1mdW5jdGlvbnMvbm9kZV9tb2R1bGVzL2QzLWludGVycG9sYXRlL3NyYy9sYWIuanM/OGJjOCJdLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge2xhYiBhcyBjb2xvckxhYn0gZnJvbSBcImQzLWNvbG9yXCI7XG5pbXBvcnQgY29sb3IgZnJvbSBcIi4vY29sb3IuanNcIjtcblxuZXhwb3J0IGRlZmF1bHQgZnVuY3Rpb24gbGFiKHN0YXJ0LCBlbmQpIHtcbiAgdmFyIGwgPSBjb2xvcigoc3RhcnQgPSBjb2xvckxhYihzdGFydCkpLmwsIChlbmQgPSBjb2xvckxhYihlbmQpKS5sKSxcbiAgICAgIGEgPSBjb2xvcihzdGFydC5hLCBlbmQuYSksXG4gICAgICBiID0gY29sb3Ioc3RhcnQuYiwgZW5kLmIpLFxuICAgICAgb3BhY2l0eSA9IGNvbG9yKHN0YXJ0Lm9wYWNpdHksIGVuZC5vcGFjaXR5KTtcbiAgcmV0dXJuIGZ1bmN0aW9uKHQpIHtcbiAgICBzdGFydC5sID0gbCh0KTtcbiAgICBzdGFydC5hID0gYSh0KTtcbiAgICBzdGFydC5iID0gYih0KTtcbiAgICBzdGFydC5vcGFjaXR5ID0gb3BhY2l0eSh0KTtcbiAgICByZXR1cm4gc3RhcnQgKyBcIlwiO1xuICB9O1xufVxuIl0sIm1hcHBpbmdzIjoiQUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOyIsInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///./node_modules/vega-functions/node_modules/d3-interpolate/src/lab.js\n");

/***/ }),

/***/ "./node_modules/vega-functions/node_modules/d3-interpolate/src/number.js":
/*!*******************************************************************************!*\
  !*** ./node_modules/vega-functions/node_modules/d3-interpolate/src/number.js ***!
  \*******************************************************************************/
/*! exports provided: default */
/***/ (function(module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony default export */ __webpack_exports__[\"default\"] = (function(a, b) {\n  return a = +a, b = +b, function(t) {\n    return a * (1 - t) + b * t;\n  };\n});\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvdmVnYS1mdW5jdGlvbnMvbm9kZV9tb2R1bGVzL2QzLWludGVycG9sYXRlL3NyYy9udW1iZXIuanMuanMiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvdmVnYS1mdW5jdGlvbnMvbm9kZV9tb2R1bGVzL2QzLWludGVycG9sYXRlL3NyYy9udW1iZXIuanM/MDFjZiJdLCJzb3VyY2VzQ29udGVudCI6WyJleHBvcnQgZGVmYXVsdCBmdW5jdGlvbihhLCBiKSB7XG4gIHJldHVybiBhID0gK2EsIGIgPSArYiwgZnVuY3Rpb24odCkge1xuICAgIHJldHVybiBhICogKDEgLSB0KSArIGIgKiB0O1xuICB9O1xufVxuIl0sIm1hcHBpbmdzIjoiQUFBQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7Iiwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///./node_modules/vega-functions/node_modules/d3-interpolate/src/number.js\n");

/***/ }),

/***/ "./node_modules/vega-functions/node_modules/d3-interpolate/src/numberArray.js":
/*!************************************************************************************!*\
  !*** ./node_modules/vega-functions/node_modules/d3-interpolate/src/numberArray.js ***!
  \************************************************************************************/
/*! exports provided: default, isNumberArray */
/***/ (function(module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"isNumberArray\", function() { return isNumberArray; });\n/* harmony default export */ __webpack_exports__[\"default\"] = (function(a, b) {\n  if (!b) b = [];\n  var n = a ? Math.min(b.length, a.length) : 0,\n      c = b.slice(),\n      i;\n  return function(t) {\n    for (i = 0; i < n; ++i) c[i] = a[i] * (1 - t) + b[i] * t;\n    return c;\n  };\n});\n\nfunction isNumberArray(x) {\n  return ArrayBuffer.isView(x) && !(x instanceof DataView);\n}\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvdmVnYS1mdW5jdGlvbnMvbm9kZV9tb2R1bGVzL2QzLWludGVycG9sYXRlL3NyYy9udW1iZXJBcnJheS5qcy5qcyIsInNvdXJjZXMiOlsid2VicGFjazovLy8uL25vZGVfbW9kdWxlcy92ZWdhLWZ1bmN0aW9ucy9ub2RlX21vZHVsZXMvZDMtaW50ZXJwb2xhdGUvc3JjL251bWJlckFycmF5LmpzPzYxN2YiXSwic291cmNlc0NvbnRlbnQiOlsiZXhwb3J0IGRlZmF1bHQgZnVuY3Rpb24oYSwgYikge1xuICBpZiAoIWIpIGIgPSBbXTtcbiAgdmFyIG4gPSBhID8gTWF0aC5taW4oYi5sZW5ndGgsIGEubGVuZ3RoKSA6IDAsXG4gICAgICBjID0gYi5zbGljZSgpLFxuICAgICAgaTtcbiAgcmV0dXJuIGZ1bmN0aW9uKHQpIHtcbiAgICBmb3IgKGkgPSAwOyBpIDwgbjsgKytpKSBjW2ldID0gYVtpXSAqICgxIC0gdCkgKyBiW2ldICogdDtcbiAgICByZXR1cm4gYztcbiAgfTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGlzTnVtYmVyQXJyYXkoeCkge1xuICByZXR1cm4gQXJyYXlCdWZmZXIuaXNWaWV3KHgpICYmICEoeCBpbnN0YW5jZW9mIERhdGFWaWV3KTtcbn1cbiJdLCJtYXBwaW5ncyI6IkFBQUE7QUFBQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7Iiwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///./node_modules/vega-functions/node_modules/d3-interpolate/src/numberArray.js\n");

/***/ }),

/***/ "./node_modules/vega-functions/node_modules/d3-interpolate/src/object.js":
/*!*******************************************************************************!*\
  !*** ./node_modules/vega-functions/node_modules/d3-interpolate/src/object.js ***!
  \*******************************************************************************/
/*! exports provided: default */
/***/ (function(module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _value_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./value.js */ \"./node_modules/vega-functions/node_modules/d3-interpolate/src/value.js\");\n\n\n/* harmony default export */ __webpack_exports__[\"default\"] = (function(a, b) {\n  var i = {},\n      c = {},\n      k;\n\n  if (a === null || typeof a !== \"object\") a = {};\n  if (b === null || typeof b !== \"object\") b = {};\n\n  for (k in b) {\n    if (k in a) {\n      i[k] = Object(_value_js__WEBPACK_IMPORTED_MODULE_0__[\"default\"])(a[k], b[k]);\n    } else {\n      c[k] = b[k];\n    }\n  }\n\n  return function(t) {\n    for (k in i) c[k] = i[k](t);\n    return c;\n  };\n});\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvdmVnYS1mdW5jdGlvbnMvbm9kZV9tb2R1bGVzL2QzLWludGVycG9sYXRlL3NyYy9vYmplY3QuanMuanMiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvdmVnYS1mdW5jdGlvbnMvbm9kZV9tb2R1bGVzL2QzLWludGVycG9sYXRlL3NyYy9vYmplY3QuanM/ZTU2MSJdLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgdmFsdWUgZnJvbSBcIi4vdmFsdWUuanNcIjtcblxuZXhwb3J0IGRlZmF1bHQgZnVuY3Rpb24oYSwgYikge1xuICB2YXIgaSA9IHt9LFxuICAgICAgYyA9IHt9LFxuICAgICAgaztcblxuICBpZiAoYSA9PT0gbnVsbCB8fCB0eXBlb2YgYSAhPT0gXCJvYmplY3RcIikgYSA9IHt9O1xuICBpZiAoYiA9PT0gbnVsbCB8fCB0eXBlb2YgYiAhPT0gXCJvYmplY3RcIikgYiA9IHt9O1xuXG4gIGZvciAoayBpbiBiKSB7XG4gICAgaWYgKGsgaW4gYSkge1xuICAgICAgaVtrXSA9IHZhbHVlKGFba10sIGJba10pO1xuICAgIH0gZWxzZSB7XG4gICAgICBjW2tdID0gYltrXTtcbiAgICB9XG4gIH1cblxuICByZXR1cm4gZnVuY3Rpb24odCkge1xuICAgIGZvciAoayBpbiBpKSBjW2tdID0gaVtrXSh0KTtcbiAgICByZXR1cm4gYztcbiAgfTtcbn1cbiJdLCJtYXBwaW5ncyI6IkFBQUE7QUFBQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7Iiwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///./node_modules/vega-functions/node_modules/d3-interpolate/src/object.js\n");

/***/ }),

/***/ "./node_modules/vega-functions/node_modules/d3-interpolate/src/piecewise.js":
/*!**********************************************************************************!*\
  !*** ./node_modules/vega-functions/node_modules/d3-interpolate/src/piecewise.js ***!
  \**********************************************************************************/
/*! exports provided: default */
/***/ (function(module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"default\", function() { return piecewise; });\n/* harmony import */ var _value_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./value.js */ \"./node_modules/vega-functions/node_modules/d3-interpolate/src/value.js\");\n\n\nfunction piecewise(interpolate, values) {\n  if (values === undefined) values = interpolate, interpolate = _value_js__WEBPACK_IMPORTED_MODULE_0__[\"default\"];\n  var i = 0, n = values.length - 1, v = values[0], I = new Array(n < 0 ? 0 : n);\n  while (i < n) I[i] = interpolate(v, v = values[++i]);\n  return function(t) {\n    var i = Math.max(0, Math.min(n - 1, Math.floor(t *= n)));\n    return I[i](t - i);\n  };\n}\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvdmVnYS1mdW5jdGlvbnMvbm9kZV9tb2R1bGVzL2QzLWludGVycG9sYXRlL3NyYy9waWVjZXdpc2UuanMuanMiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvdmVnYS1mdW5jdGlvbnMvbm9kZV9tb2R1bGVzL2QzLWludGVycG9sYXRlL3NyYy9waWVjZXdpc2UuanM/NmIxMiJdLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge2RlZmF1bHQgYXMgdmFsdWV9IGZyb20gXCIuL3ZhbHVlLmpzXCI7XG5cbmV4cG9ydCBkZWZhdWx0IGZ1bmN0aW9uIHBpZWNld2lzZShpbnRlcnBvbGF0ZSwgdmFsdWVzKSB7XG4gIGlmICh2YWx1ZXMgPT09IHVuZGVmaW5lZCkgdmFsdWVzID0gaW50ZXJwb2xhdGUsIGludGVycG9sYXRlID0gdmFsdWU7XG4gIHZhciBpID0gMCwgbiA9IHZhbHVlcy5sZW5ndGggLSAxLCB2ID0gdmFsdWVzWzBdLCBJID0gbmV3IEFycmF5KG4gPCAwID8gMCA6IG4pO1xuICB3aGlsZSAoaSA8IG4pIElbaV0gPSBpbnRlcnBvbGF0ZSh2LCB2ID0gdmFsdWVzWysraV0pO1xuICByZXR1cm4gZnVuY3Rpb24odCkge1xuICAgIHZhciBpID0gTWF0aC5tYXgoMCwgTWF0aC5taW4obiAtIDEsIE1hdGguZmxvb3IodCAqPSBuKSkpO1xuICAgIHJldHVybiBJW2ldKHQgLSBpKTtcbiAgfTtcbn1cbiJdLCJtYXBwaW5ncyI6IkFBQUE7QUFBQTtBQUFBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTsiLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///./node_modules/vega-functions/node_modules/d3-interpolate/src/piecewise.js\n");

/***/ }),

/***/ "./node_modules/vega-functions/node_modules/d3-interpolate/src/quantize.js":
/*!*********************************************************************************!*\
  !*** ./node_modules/vega-functions/node_modules/d3-interpolate/src/quantize.js ***!
  \*********************************************************************************/
/*! exports provided: default */
/***/ (function(module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony default export */ __webpack_exports__[\"default\"] = (function(interpolator, n) {\n  var samples = new Array(n);\n  for (var i = 0; i < n; ++i) samples[i] = interpolator(i / (n - 1));\n  return samples;\n});\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvdmVnYS1mdW5jdGlvbnMvbm9kZV9tb2R1bGVzL2QzLWludGVycG9sYXRlL3NyYy9xdWFudGl6ZS5qcy5qcyIsInNvdXJjZXMiOlsid2VicGFjazovLy8uL25vZGVfbW9kdWxlcy92ZWdhLWZ1bmN0aW9ucy9ub2RlX21vZHVsZXMvZDMtaW50ZXJwb2xhdGUvc3JjL3F1YW50aXplLmpzPzgwYjYiXSwic291cmNlc0NvbnRlbnQiOlsiZXhwb3J0IGRlZmF1bHQgZnVuY3Rpb24oaW50ZXJwb2xhdG9yLCBuKSB7XG4gIHZhciBzYW1wbGVzID0gbmV3IEFycmF5KG4pO1xuICBmb3IgKHZhciBpID0gMDsgaSA8IG47ICsraSkgc2FtcGxlc1tpXSA9IGludGVycG9sYXRvcihpIC8gKG4gLSAxKSk7XG4gIHJldHVybiBzYW1wbGVzO1xufVxuIl0sIm1hcHBpbmdzIjoiQUFBQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7Iiwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///./node_modules/vega-functions/node_modules/d3-interpolate/src/quantize.js\n");

/***/ }),

/***/ "./node_modules/vega-functions/node_modules/d3-interpolate/src/rgb.js":
/*!****************************************************************************!*\
  !*** ./node_modules/vega-functions/node_modules/d3-interpolate/src/rgb.js ***!
  \****************************************************************************/
/*! exports provided: default, rgbBasis, rgbBasisClosed */
/***/ (function(module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"rgbBasis\", function() { return rgbBasis; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"rgbBasisClosed\", function() { return rgbBasisClosed; });\n/* harmony import */ var d3_color__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! d3-color */ \"./node_modules/vega-functions/node_modules/d3-color/src/index.js\");\n/* harmony import */ var _basis_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./basis.js */ \"./node_modules/vega-functions/node_modules/d3-interpolate/src/basis.js\");\n/* harmony import */ var _basisClosed_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./basisClosed.js */ \"./node_modules/vega-functions/node_modules/d3-interpolate/src/basisClosed.js\");\n/* harmony import */ var _color_js__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ./color.js */ \"./node_modules/vega-functions/node_modules/d3-interpolate/src/color.js\");\n\n\n\n\n\n/* harmony default export */ __webpack_exports__[\"default\"] = ((function rgbGamma(y) {\n  var color = Object(_color_js__WEBPACK_IMPORTED_MODULE_3__[\"gamma\"])(y);\n\n  function rgb(start, end) {\n    var r = color((start = Object(d3_color__WEBPACK_IMPORTED_MODULE_0__[\"rgb\"])(start)).r, (end = Object(d3_color__WEBPACK_IMPORTED_MODULE_0__[\"rgb\"])(end)).r),\n        g = color(start.g, end.g),\n        b = color(start.b, end.b),\n        opacity = Object(_color_js__WEBPACK_IMPORTED_MODULE_3__[\"default\"])(start.opacity, end.opacity);\n    return function(t) {\n      start.r = r(t);\n      start.g = g(t);\n      start.b = b(t);\n      start.opacity = opacity(t);\n      return start + \"\";\n    };\n  }\n\n  rgb.gamma = rgbGamma;\n\n  return rgb;\n})(1));\n\nfunction rgbSpline(spline) {\n  return function(colors) {\n    var n = colors.length,\n        r = new Array(n),\n        g = new Array(n),\n        b = new Array(n),\n        i, color;\n    for (i = 0; i < n; ++i) {\n      color = Object(d3_color__WEBPACK_IMPORTED_MODULE_0__[\"rgb\"])(colors[i]);\n      r[i] = color.r || 0;\n      g[i] = color.g || 0;\n      b[i] = color.b || 0;\n    }\n    r = spline(r);\n    g = spline(g);\n    b = spline(b);\n    color.opacity = 1;\n    return function(t) {\n      color.r = r(t);\n      color.g = g(t);\n      color.b = b(t);\n      return color + \"\";\n    };\n  };\n}\n\nvar rgbBasis = rgbSpline(_basis_js__WEBPACK_IMPORTED_MODULE_1__[\"default\"]);\nvar rgbBasisClosed = rgbSpline(_basisClosed_js__WEBPACK_IMPORTED_MODULE_2__[\"default\"]);\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvdmVnYS1mdW5jdGlvbnMvbm9kZV9tb2R1bGVzL2QzLWludGVycG9sYXRlL3NyYy9yZ2IuanMuanMiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvdmVnYS1mdW5jdGlvbnMvbm9kZV9tb2R1bGVzL2QzLWludGVycG9sYXRlL3NyYy9yZ2IuanM/YWM0NSJdLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge3JnYiBhcyBjb2xvclJnYn0gZnJvbSBcImQzLWNvbG9yXCI7XG5pbXBvcnQgYmFzaXMgZnJvbSBcIi4vYmFzaXMuanNcIjtcbmltcG9ydCBiYXNpc0Nsb3NlZCBmcm9tIFwiLi9iYXNpc0Nsb3NlZC5qc1wiO1xuaW1wb3J0IG5vZ2FtbWEsIHtnYW1tYX0gZnJvbSBcIi4vY29sb3IuanNcIjtcblxuZXhwb3J0IGRlZmF1bHQgKGZ1bmN0aW9uIHJnYkdhbW1hKHkpIHtcbiAgdmFyIGNvbG9yID0gZ2FtbWEoeSk7XG5cbiAgZnVuY3Rpb24gcmdiKHN0YXJ0LCBlbmQpIHtcbiAgICB2YXIgciA9IGNvbG9yKChzdGFydCA9IGNvbG9yUmdiKHN0YXJ0KSkuciwgKGVuZCA9IGNvbG9yUmdiKGVuZCkpLnIpLFxuICAgICAgICBnID0gY29sb3Ioc3RhcnQuZywgZW5kLmcpLFxuICAgICAgICBiID0gY29sb3Ioc3RhcnQuYiwgZW5kLmIpLFxuICAgICAgICBvcGFjaXR5ID0gbm9nYW1tYShzdGFydC5vcGFjaXR5LCBlbmQub3BhY2l0eSk7XG4gICAgcmV0dXJuIGZ1bmN0aW9uKHQpIHtcbiAgICAgIHN0YXJ0LnIgPSByKHQpO1xuICAgICAgc3RhcnQuZyA9IGcodCk7XG4gICAgICBzdGFydC5iID0gYih0KTtcbiAgICAgIHN0YXJ0Lm9wYWNpdHkgPSBvcGFjaXR5KHQpO1xuICAgICAgcmV0dXJuIHN0YXJ0ICsgXCJcIjtcbiAgICB9O1xuICB9XG5cbiAgcmdiLmdhbW1hID0gcmdiR2FtbWE7XG5cbiAgcmV0dXJuIHJnYjtcbn0pKDEpO1xuXG5mdW5jdGlvbiByZ2JTcGxpbmUoc3BsaW5lKSB7XG4gIHJldHVybiBmdW5jdGlvbihjb2xvcnMpIHtcbiAgICB2YXIgbiA9IGNvbG9ycy5sZW5ndGgsXG4gICAgICAgIHIgPSBuZXcgQXJyYXkobiksXG4gICAgICAgIGcgPSBuZXcgQXJyYXkobiksXG4gICAgICAgIGIgPSBuZXcgQXJyYXkobiksXG4gICAgICAgIGksIGNvbG9yO1xuICAgIGZvciAoaSA9IDA7IGkgPCBuOyArK2kpIHtcbiAgICAgIGNvbG9yID0gY29sb3JSZ2IoY29sb3JzW2ldKTtcbiAgICAgIHJbaV0gPSBjb2xvci5yIHx8IDA7XG4gICAgICBnW2ldID0gY29sb3IuZyB8fCAwO1xuICAgICAgYltpXSA9IGNvbG9yLmIgfHwgMDtcbiAgICB9XG4gICAgciA9IHNwbGluZShyKTtcbiAgICBnID0gc3BsaW5lKGcpO1xuICAgIGIgPSBzcGxpbmUoYik7XG4gICAgY29sb3Iub3BhY2l0eSA9IDE7XG4gICAgcmV0dXJuIGZ1bmN0aW9uKHQpIHtcbiAgICAgIGNvbG9yLnIgPSByKHQpO1xuICAgICAgY29sb3IuZyA9IGcodCk7XG4gICAgICBjb2xvci5iID0gYih0KTtcbiAgICAgIHJldHVybiBjb2xvciArIFwiXCI7XG4gICAgfTtcbiAgfTtcbn1cblxuZXhwb3J0IHZhciByZ2JCYXNpcyA9IHJnYlNwbGluZShiYXNpcyk7XG5leHBvcnQgdmFyIHJnYkJhc2lzQ2xvc2VkID0gcmdiU3BsaW5lKGJhc2lzQ2xvc2VkKTtcbiJdLCJtYXBwaW5ncyI6IkFBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTsiLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///./node_modules/vega-functions/node_modules/d3-interpolate/src/rgb.js\n");

/***/ }),

/***/ "./node_modules/vega-functions/node_modules/d3-interpolate/src/round.js":
/*!******************************************************************************!*\
  !*** ./node_modules/vega-functions/node_modules/d3-interpolate/src/round.js ***!
  \******************************************************************************/
/*! exports provided: default */
/***/ (function(module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony default export */ __webpack_exports__[\"default\"] = (function(a, b) {\n  return a = +a, b = +b, function(t) {\n    return Math.round(a * (1 - t) + b * t);\n  };\n});\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvdmVnYS1mdW5jdGlvbnMvbm9kZV9tb2R1bGVzL2QzLWludGVycG9sYXRlL3NyYy9yb3VuZC5qcy5qcyIsInNvdXJjZXMiOlsid2VicGFjazovLy8uL25vZGVfbW9kdWxlcy92ZWdhLWZ1bmN0aW9ucy9ub2RlX21vZHVsZXMvZDMtaW50ZXJwb2xhdGUvc3JjL3JvdW5kLmpzPzUxNTMiXSwic291cmNlc0NvbnRlbnQiOlsiZXhwb3J0IGRlZmF1bHQgZnVuY3Rpb24oYSwgYikge1xuICByZXR1cm4gYSA9ICthLCBiID0gK2IsIGZ1bmN0aW9uKHQpIHtcbiAgICByZXR1cm4gTWF0aC5yb3VuZChhICogKDEgLSB0KSArIGIgKiB0KTtcbiAgfTtcbn1cbiJdLCJtYXBwaW5ncyI6IkFBQUE7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOyIsInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///./node_modules/vega-functions/node_modules/d3-interpolate/src/round.js\n");

/***/ }),

/***/ "./node_modules/vega-functions/node_modules/d3-interpolate/src/string.js":
/*!*******************************************************************************!*\
  !*** ./node_modules/vega-functions/node_modules/d3-interpolate/src/string.js ***!
  \*******************************************************************************/
/*! exports provided: default */
/***/ (function(module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _number_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./number.js */ \"./node_modules/vega-functions/node_modules/d3-interpolate/src/number.js\");\n\n\nvar reA = /[-+]?(?:\\d+\\.?\\d*|\\.?\\d+)(?:[eE][-+]?\\d+)?/g,\n    reB = new RegExp(reA.source, \"g\");\n\nfunction zero(b) {\n  return function() {\n    return b;\n  };\n}\n\nfunction one(b) {\n  return function(t) {\n    return b(t) + \"\";\n  };\n}\n\n/* harmony default export */ __webpack_exports__[\"default\"] = (function(a, b) {\n  var bi = reA.lastIndex = reB.lastIndex = 0, // scan index for next number in b\n      am, // current match in a\n      bm, // current match in b\n      bs, // string preceding current number in b, if any\n      i = -1, // index in s\n      s = [], // string constants and placeholders\n      q = []; // number interpolators\n\n  // Coerce inputs to strings.\n  a = a + \"\", b = b + \"\";\n\n  // Interpolate pairs of numbers in a & b.\n  while ((am = reA.exec(a))\n      && (bm = reB.exec(b))) {\n    if ((bs = bm.index) > bi) { // a string precedes the next number in b\n      bs = b.slice(bi, bs);\n      if (s[i]) s[i] += bs; // coalesce with previous string\n      else s[++i] = bs;\n    }\n    if ((am = am[0]) === (bm = bm[0])) { // numbers in a & b match\n      if (s[i]) s[i] += bm; // coalesce with previous string\n      else s[++i] = bm;\n    } else { // interpolate non-matching numbers\n      s[++i] = null;\n      q.push({i: i, x: Object(_number_js__WEBPACK_IMPORTED_MODULE_0__[\"default\"])(am, bm)});\n    }\n    bi = reB.lastIndex;\n  }\n\n  // Add remains of b.\n  if (bi < b.length) {\n    bs = b.slice(bi);\n    if (s[i]) s[i] += bs; // coalesce with previous string\n    else s[++i] = bs;\n  }\n\n  // Special optimization for only a single match.\n  // Otherwise, interpolate each of the numbers and rejoin the string.\n  return s.length < 2 ? (q[0]\n      ? one(q[0].x)\n      : zero(b))\n      : (b = q.length, function(t) {\n          for (var i = 0, o; i < b; ++i) s[(o = q[i]).i] = o.x(t);\n          return s.join(\"\");\n        });\n});\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvdmVnYS1mdW5jdGlvbnMvbm9kZV9tb2R1bGVzL2QzLWludGVycG9sYXRlL3NyYy9zdHJpbmcuanMuanMiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvdmVnYS1mdW5jdGlvbnMvbm9kZV9tb2R1bGVzL2QzLWludGVycG9sYXRlL3NyYy9zdHJpbmcuanM/N2YzYyJdLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgbnVtYmVyIGZyb20gXCIuL251bWJlci5qc1wiO1xuXG52YXIgcmVBID0gL1stK10/KD86XFxkK1xcLj9cXGQqfFxcLj9cXGQrKSg/OltlRV1bLStdP1xcZCspPy9nLFxuICAgIHJlQiA9IG5ldyBSZWdFeHAocmVBLnNvdXJjZSwgXCJnXCIpO1xuXG5mdW5jdGlvbiB6ZXJvKGIpIHtcbiAgcmV0dXJuIGZ1bmN0aW9uKCkge1xuICAgIHJldHVybiBiO1xuICB9O1xufVxuXG5mdW5jdGlvbiBvbmUoYikge1xuICByZXR1cm4gZnVuY3Rpb24odCkge1xuICAgIHJldHVybiBiKHQpICsgXCJcIjtcbiAgfTtcbn1cblxuZXhwb3J0IGRlZmF1bHQgZnVuY3Rpb24oYSwgYikge1xuICB2YXIgYmkgPSByZUEubGFzdEluZGV4ID0gcmVCLmxhc3RJbmRleCA9IDAsIC8vIHNjYW4gaW5kZXggZm9yIG5leHQgbnVtYmVyIGluIGJcbiAgICAgIGFtLCAvLyBjdXJyZW50IG1hdGNoIGluIGFcbiAgICAgIGJtLCAvLyBjdXJyZW50IG1hdGNoIGluIGJcbiAgICAgIGJzLCAvLyBzdHJpbmcgcHJlY2VkaW5nIGN1cnJlbnQgbnVtYmVyIGluIGIsIGlmIGFueVxuICAgICAgaSA9IC0xLCAvLyBpbmRleCBpbiBzXG4gICAgICBzID0gW10sIC8vIHN0cmluZyBjb25zdGFudHMgYW5kIHBsYWNlaG9sZGVyc1xuICAgICAgcSA9IFtdOyAvLyBudW1iZXIgaW50ZXJwb2xhdG9yc1xuXG4gIC8vIENvZXJjZSBpbnB1dHMgdG8gc3RyaW5ncy5cbiAgYSA9IGEgKyBcIlwiLCBiID0gYiArIFwiXCI7XG5cbiAgLy8gSW50ZXJwb2xhdGUgcGFpcnMgb2YgbnVtYmVycyBpbiBhICYgYi5cbiAgd2hpbGUgKChhbSA9IHJlQS5leGVjKGEpKVxuICAgICAgJiYgKGJtID0gcmVCLmV4ZWMoYikpKSB7XG4gICAgaWYgKChicyA9IGJtLmluZGV4KSA+IGJpKSB7IC8vIGEgc3RyaW5nIHByZWNlZGVzIHRoZSBuZXh0IG51bWJlciBpbiBiXG4gICAgICBicyA9IGIuc2xpY2UoYmksIGJzKTtcbiAgICAgIGlmIChzW2ldKSBzW2ldICs9IGJzOyAvLyBjb2FsZXNjZSB3aXRoIHByZXZpb3VzIHN0cmluZ1xuICAgICAgZWxzZSBzWysraV0gPSBicztcbiAgICB9XG4gICAgaWYgKChhbSA9IGFtWzBdKSA9PT0gKGJtID0gYm1bMF0pKSB7IC8vIG51bWJlcnMgaW4gYSAmIGIgbWF0Y2hcbiAgICAgIGlmIChzW2ldKSBzW2ldICs9IGJtOyAvLyBjb2FsZXNjZSB3aXRoIHByZXZpb3VzIHN0cmluZ1xuICAgICAgZWxzZSBzWysraV0gPSBibTtcbiAgICB9IGVsc2UgeyAvLyBpbnRlcnBvbGF0ZSBub24tbWF0Y2hpbmcgbnVtYmVyc1xuICAgICAgc1srK2ldID0gbnVsbDtcbiAgICAgIHEucHVzaCh7aTogaSwgeDogbnVtYmVyKGFtLCBibSl9KTtcbiAgICB9XG4gICAgYmkgPSByZUIubGFzdEluZGV4O1xuICB9XG5cbiAgLy8gQWRkIHJlbWFpbnMgb2YgYi5cbiAgaWYgKGJpIDwgYi5sZW5ndGgpIHtcbiAgICBicyA9IGIuc2xpY2UoYmkpO1xuICAgIGlmIChzW2ldKSBzW2ldICs9IGJzOyAvLyBjb2FsZXNjZSB3aXRoIHByZXZpb3VzIHN0cmluZ1xuICAgIGVsc2Ugc1srK2ldID0gYnM7XG4gIH1cblxuICAvLyBTcGVjaWFsIG9wdGltaXphdGlvbiBmb3Igb25seSBhIHNpbmdsZSBtYXRjaC5cbiAgLy8gT3RoZXJ3aXNlLCBpbnRlcnBvbGF0ZSBlYWNoIG9mIHRoZSBudW1iZXJzIGFuZCByZWpvaW4gdGhlIHN0cmluZy5cbiAgcmV0dXJuIHMubGVuZ3RoIDwgMiA/IChxWzBdXG4gICAgICA/IG9uZShxWzBdLngpXG4gICAgICA6IHplcm8oYikpXG4gICAgICA6IChiID0gcS5sZW5ndGgsIGZ1bmN0aW9uKHQpIHtcbiAgICAgICAgICBmb3IgKHZhciBpID0gMCwgbzsgaSA8IGI7ICsraSkgc1sobyA9IHFbaV0pLmldID0gby54KHQpO1xuICAgICAgICAgIHJldHVybiBzLmpvaW4oXCJcIik7XG4gICAgICAgIH0pO1xufVxuIl0sIm1hcHBpbmdzIjoiQUFBQTtBQUFBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7Iiwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///./node_modules/vega-functions/node_modules/d3-interpolate/src/string.js\n");

/***/ }),

/***/ "./node_modules/vega-functions/node_modules/d3-interpolate/src/transform/decompose.js":
/*!********************************************************************************************!*\
  !*** ./node_modules/vega-functions/node_modules/d3-interpolate/src/transform/decompose.js ***!
  \********************************************************************************************/
/*! exports provided: identity, default */
/***/ (function(module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"identity\", function() { return identity; });\nvar degrees = 180 / Math.PI;\n\nvar identity = {\n  translateX: 0,\n  translateY: 0,\n  rotate: 0,\n  skewX: 0,\n  scaleX: 1,\n  scaleY: 1\n};\n\n/* harmony default export */ __webpack_exports__[\"default\"] = (function(a, b, c, d, e, f) {\n  var scaleX, scaleY, skewX;\n  if (scaleX = Math.sqrt(a * a + b * b)) a /= scaleX, b /= scaleX;\n  if (skewX = a * c + b * d) c -= a * skewX, d -= b * skewX;\n  if (scaleY = Math.sqrt(c * c + d * d)) c /= scaleY, d /= scaleY, skewX /= scaleY;\n  if (a * d < b * c) a = -a, b = -b, skewX = -skewX, scaleX = -scaleX;\n  return {\n    translateX: e,\n    translateY: f,\n    rotate: Math.atan2(b, a) * degrees,\n    skewX: Math.atan(skewX) * degrees,\n    scaleX: scaleX,\n    scaleY: scaleY\n  };\n});\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvdmVnYS1mdW5jdGlvbnMvbm9kZV9tb2R1bGVzL2QzLWludGVycG9sYXRlL3NyYy90cmFuc2Zvcm0vZGVjb21wb3NlLmpzLmpzIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL3ZlZ2EtZnVuY3Rpb25zL25vZGVfbW9kdWxlcy9kMy1pbnRlcnBvbGF0ZS9zcmMvdHJhbnNmb3JtL2RlY29tcG9zZS5qcz83ZDgwIl0sInNvdXJjZXNDb250ZW50IjpbInZhciBkZWdyZWVzID0gMTgwIC8gTWF0aC5QSTtcblxuZXhwb3J0IHZhciBpZGVudGl0eSA9IHtcbiAgdHJhbnNsYXRlWDogMCxcbiAgdHJhbnNsYXRlWTogMCxcbiAgcm90YXRlOiAwLFxuICBza2V3WDogMCxcbiAgc2NhbGVYOiAxLFxuICBzY2FsZVk6IDFcbn07XG5cbmV4cG9ydCBkZWZhdWx0IGZ1bmN0aW9uKGEsIGIsIGMsIGQsIGUsIGYpIHtcbiAgdmFyIHNjYWxlWCwgc2NhbGVZLCBza2V3WDtcbiAgaWYgKHNjYWxlWCA9IE1hdGguc3FydChhICogYSArIGIgKiBiKSkgYSAvPSBzY2FsZVgsIGIgLz0gc2NhbGVYO1xuICBpZiAoc2tld1ggPSBhICogYyArIGIgKiBkKSBjIC09IGEgKiBza2V3WCwgZCAtPSBiICogc2tld1g7XG4gIGlmIChzY2FsZVkgPSBNYXRoLnNxcnQoYyAqIGMgKyBkICogZCkpIGMgLz0gc2NhbGVZLCBkIC89IHNjYWxlWSwgc2tld1ggLz0gc2NhbGVZO1xuICBpZiAoYSAqIGQgPCBiICogYykgYSA9IC1hLCBiID0gLWIsIHNrZXdYID0gLXNrZXdYLCBzY2FsZVggPSAtc2NhbGVYO1xuICByZXR1cm4ge1xuICAgIHRyYW5zbGF0ZVg6IGUsXG4gICAgdHJhbnNsYXRlWTogZixcbiAgICByb3RhdGU6IE1hdGguYXRhbjIoYiwgYSkgKiBkZWdyZWVzLFxuICAgIHNrZXdYOiBNYXRoLmF0YW4oc2tld1gpICogZGVncmVlcyxcbiAgICBzY2FsZVg6IHNjYWxlWCxcbiAgICBzY2FsZVk6IHNjYWxlWVxuICB9O1xufVxuIl0sIm1hcHBpbmdzIjoiQUFBQTtBQUFBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTsiLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///./node_modules/vega-functions/node_modules/d3-interpolate/src/transform/decompose.js\n");

/***/ }),

/***/ "./node_modules/vega-functions/node_modules/d3-interpolate/src/transform/index.js":
/*!****************************************************************************************!*\
  !*** ./node_modules/vega-functions/node_modules/d3-interpolate/src/transform/index.js ***!
  \****************************************************************************************/
/*! exports provided: interpolateTransformCss, interpolateTransformSvg */
/***/ (function(module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"interpolateTransformCss\", function() { return interpolateTransformCss; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"interpolateTransformSvg\", function() { return interpolateTransformSvg; });\n/* harmony import */ var _number_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../number.js */ \"./node_modules/vega-functions/node_modules/d3-interpolate/src/number.js\");\n/* harmony import */ var _parse_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./parse.js */ \"./node_modules/vega-functions/node_modules/d3-interpolate/src/transform/parse.js\");\n\n\n\nfunction interpolateTransform(parse, pxComma, pxParen, degParen) {\n\n  function pop(s) {\n    return s.length ? s.pop() + \" \" : \"\";\n  }\n\n  function translate(xa, ya, xb, yb, s, q) {\n    if (xa !== xb || ya !== yb) {\n      var i = s.push(\"translate(\", null, pxComma, null, pxParen);\n      q.push({i: i - 4, x: Object(_number_js__WEBPACK_IMPORTED_MODULE_0__[\"default\"])(xa, xb)}, {i: i - 2, x: Object(_number_js__WEBPACK_IMPORTED_MODULE_0__[\"default\"])(ya, yb)});\n    } else if (xb || yb) {\n      s.push(\"translate(\" + xb + pxComma + yb + pxParen);\n    }\n  }\n\n  function rotate(a, b, s, q) {\n    if (a !== b) {\n      if (a - b > 180) b += 360; else if (b - a > 180) a += 360; // shortest path\n      q.push({i: s.push(pop(s) + \"rotate(\", null, degParen) - 2, x: Object(_number_js__WEBPACK_IMPORTED_MODULE_0__[\"default\"])(a, b)});\n    } else if (b) {\n      s.push(pop(s) + \"rotate(\" + b + degParen);\n    }\n  }\n\n  function skewX(a, b, s, q) {\n    if (a !== b) {\n      q.push({i: s.push(pop(s) + \"skewX(\", null, degParen) - 2, x: Object(_number_js__WEBPACK_IMPORTED_MODULE_0__[\"default\"])(a, b)});\n    } else if (b) {\n      s.push(pop(s) + \"skewX(\" + b + degParen);\n    }\n  }\n\n  function scale(xa, ya, xb, yb, s, q) {\n    if (xa !== xb || ya !== yb) {\n      var i = s.push(pop(s) + \"scale(\", null, \",\", null, \")\");\n      q.push({i: i - 4, x: Object(_number_js__WEBPACK_IMPORTED_MODULE_0__[\"default\"])(xa, xb)}, {i: i - 2, x: Object(_number_js__WEBPACK_IMPORTED_MODULE_0__[\"default\"])(ya, yb)});\n    } else if (xb !== 1 || yb !== 1) {\n      s.push(pop(s) + \"scale(\" + xb + \",\" + yb + \")\");\n    }\n  }\n\n  return function(a, b) {\n    var s = [], // string constants and placeholders\n        q = []; // number interpolators\n    a = parse(a), b = parse(b);\n    translate(a.translateX, a.translateY, b.translateX, b.translateY, s, q);\n    rotate(a.rotate, b.rotate, s, q);\n    skewX(a.skewX, b.skewX, s, q);\n    scale(a.scaleX, a.scaleY, b.scaleX, b.scaleY, s, q);\n    a = b = null; // gc\n    return function(t) {\n      var i = -1, n = q.length, o;\n      while (++i < n) s[(o = q[i]).i] = o.x(t);\n      return s.join(\"\");\n    };\n  };\n}\n\nvar interpolateTransformCss = interpolateTransform(_parse_js__WEBPACK_IMPORTED_MODULE_1__[\"parseCss\"], \"px, \", \"px)\", \"deg)\");\nvar interpolateTransformSvg = interpolateTransform(_parse_js__WEBPACK_IMPORTED_MODULE_1__[\"parseSvg\"], \", \", \")\", \")\");\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvdmVnYS1mdW5jdGlvbnMvbm9kZV9tb2R1bGVzL2QzLWludGVycG9sYXRlL3NyYy90cmFuc2Zvcm0vaW5kZXguanMuanMiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvdmVnYS1mdW5jdGlvbnMvbm9kZV9tb2R1bGVzL2QzLWludGVycG9sYXRlL3NyYy90cmFuc2Zvcm0vaW5kZXguanM/NWE3YiJdLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgbnVtYmVyIGZyb20gXCIuLi9udW1iZXIuanNcIjtcbmltcG9ydCB7cGFyc2VDc3MsIHBhcnNlU3ZnfSBmcm9tIFwiLi9wYXJzZS5qc1wiO1xuXG5mdW5jdGlvbiBpbnRlcnBvbGF0ZVRyYW5zZm9ybShwYXJzZSwgcHhDb21tYSwgcHhQYXJlbiwgZGVnUGFyZW4pIHtcblxuICBmdW5jdGlvbiBwb3Aocykge1xuICAgIHJldHVybiBzLmxlbmd0aCA/IHMucG9wKCkgKyBcIiBcIiA6IFwiXCI7XG4gIH1cblxuICBmdW5jdGlvbiB0cmFuc2xhdGUoeGEsIHlhLCB4YiwgeWIsIHMsIHEpIHtcbiAgICBpZiAoeGEgIT09IHhiIHx8IHlhICE9PSB5Yikge1xuICAgICAgdmFyIGkgPSBzLnB1c2goXCJ0cmFuc2xhdGUoXCIsIG51bGwsIHB4Q29tbWEsIG51bGwsIHB4UGFyZW4pO1xuICAgICAgcS5wdXNoKHtpOiBpIC0gNCwgeDogbnVtYmVyKHhhLCB4Yil9LCB7aTogaSAtIDIsIHg6IG51bWJlcih5YSwgeWIpfSk7XG4gICAgfSBlbHNlIGlmICh4YiB8fCB5Yikge1xuICAgICAgcy5wdXNoKFwidHJhbnNsYXRlKFwiICsgeGIgKyBweENvbW1hICsgeWIgKyBweFBhcmVuKTtcbiAgICB9XG4gIH1cblxuICBmdW5jdGlvbiByb3RhdGUoYSwgYiwgcywgcSkge1xuICAgIGlmIChhICE9PSBiKSB7XG4gICAgICBpZiAoYSAtIGIgPiAxODApIGIgKz0gMzYwOyBlbHNlIGlmIChiIC0gYSA+IDE4MCkgYSArPSAzNjA7IC8vIHNob3J0ZXN0IHBhdGhcbiAgICAgIHEucHVzaCh7aTogcy5wdXNoKHBvcChzKSArIFwicm90YXRlKFwiLCBudWxsLCBkZWdQYXJlbikgLSAyLCB4OiBudW1iZXIoYSwgYil9KTtcbiAgICB9IGVsc2UgaWYgKGIpIHtcbiAgICAgIHMucHVzaChwb3AocykgKyBcInJvdGF0ZShcIiArIGIgKyBkZWdQYXJlbik7XG4gICAgfVxuICB9XG5cbiAgZnVuY3Rpb24gc2tld1goYSwgYiwgcywgcSkge1xuICAgIGlmIChhICE9PSBiKSB7XG4gICAgICBxLnB1c2goe2k6IHMucHVzaChwb3AocykgKyBcInNrZXdYKFwiLCBudWxsLCBkZWdQYXJlbikgLSAyLCB4OiBudW1iZXIoYSwgYil9KTtcbiAgICB9IGVsc2UgaWYgKGIpIHtcbiAgICAgIHMucHVzaChwb3AocykgKyBcInNrZXdYKFwiICsgYiArIGRlZ1BhcmVuKTtcbiAgICB9XG4gIH1cblxuICBmdW5jdGlvbiBzY2FsZSh4YSwgeWEsIHhiLCB5YiwgcywgcSkge1xuICAgIGlmICh4YSAhPT0geGIgfHwgeWEgIT09IHliKSB7XG4gICAgICB2YXIgaSA9IHMucHVzaChwb3AocykgKyBcInNjYWxlKFwiLCBudWxsLCBcIixcIiwgbnVsbCwgXCIpXCIpO1xuICAgICAgcS5wdXNoKHtpOiBpIC0gNCwgeDogbnVtYmVyKHhhLCB4Yil9LCB7aTogaSAtIDIsIHg6IG51bWJlcih5YSwgeWIpfSk7XG4gICAgfSBlbHNlIGlmICh4YiAhPT0gMSB8fCB5YiAhPT0gMSkge1xuICAgICAgcy5wdXNoKHBvcChzKSArIFwic2NhbGUoXCIgKyB4YiArIFwiLFwiICsgeWIgKyBcIilcIik7XG4gICAgfVxuICB9XG5cbiAgcmV0dXJuIGZ1bmN0aW9uKGEsIGIpIHtcbiAgICB2YXIgcyA9IFtdLCAvLyBzdHJpbmcgY29uc3RhbnRzIGFuZCBwbGFjZWhvbGRlcnNcbiAgICAgICAgcSA9IFtdOyAvLyBudW1iZXIgaW50ZXJwb2xhdG9yc1xuICAgIGEgPSBwYXJzZShhKSwgYiA9IHBhcnNlKGIpO1xuICAgIHRyYW5zbGF0ZShhLnRyYW5zbGF0ZVgsIGEudHJhbnNsYXRlWSwgYi50cmFuc2xhdGVYLCBiLnRyYW5zbGF0ZVksIHMsIHEpO1xuICAgIHJvdGF0ZShhLnJvdGF0ZSwgYi5yb3RhdGUsIHMsIHEpO1xuICAgIHNrZXdYKGEuc2tld1gsIGIuc2tld1gsIHMsIHEpO1xuICAgIHNjYWxlKGEuc2NhbGVYLCBhLnNjYWxlWSwgYi5zY2FsZVgsIGIuc2NhbGVZLCBzLCBxKTtcbiAgICBhID0gYiA9IG51bGw7IC8vIGdjXG4gICAgcmV0dXJuIGZ1bmN0aW9uKHQpIHtcbiAgICAgIHZhciBpID0gLTEsIG4gPSBxLmxlbmd0aCwgbztcbiAgICAgIHdoaWxlICgrK2kgPCBuKSBzWyhvID0gcVtpXSkuaV0gPSBvLngodCk7XG4gICAgICByZXR1cm4gcy5qb2luKFwiXCIpO1xuICAgIH07XG4gIH07XG59XG5cbmV4cG9ydCB2YXIgaW50ZXJwb2xhdGVUcmFuc2Zvcm1Dc3MgPSBpbnRlcnBvbGF0ZVRyYW5zZm9ybShwYXJzZUNzcywgXCJweCwgXCIsIFwicHgpXCIsIFwiZGVnKVwiKTtcbmV4cG9ydCB2YXIgaW50ZXJwb2xhdGVUcmFuc2Zvcm1TdmcgPSBpbnRlcnBvbGF0ZVRyYW5zZm9ybShwYXJzZVN2ZywgXCIsIFwiLCBcIilcIiwgXCIpXCIpO1xuIl0sIm1hcHBpbmdzIjoiQUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOyIsInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///./node_modules/vega-functions/node_modules/d3-interpolate/src/transform/index.js\n");

/***/ }),

/***/ "./node_modules/vega-functions/node_modules/d3-interpolate/src/transform/parse.js":
/*!****************************************************************************************!*\
  !*** ./node_modules/vega-functions/node_modules/d3-interpolate/src/transform/parse.js ***!
  \****************************************************************************************/
/*! exports provided: parseCss, parseSvg */
/***/ (function(module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"parseCss\", function() { return parseCss; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"parseSvg\", function() { return parseSvg; });\n/* harmony import */ var _decompose_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./decompose.js */ \"./node_modules/vega-functions/node_modules/d3-interpolate/src/transform/decompose.js\");\n\n\nvar svgNode;\n\n/* eslint-disable no-undef */\nfunction parseCss(value) {\n  const m = new (typeof DOMMatrix === \"function\" ? DOMMatrix : WebKitCSSMatrix)(value + \"\");\n  return m.isIdentity ? _decompose_js__WEBPACK_IMPORTED_MODULE_0__[\"identity\"] : Object(_decompose_js__WEBPACK_IMPORTED_MODULE_0__[\"default\"])(m.a, m.b, m.c, m.d, m.e, m.f);\n}\n\nfunction parseSvg(value) {\n  if (value == null) return _decompose_js__WEBPACK_IMPORTED_MODULE_0__[\"identity\"];\n  if (!svgNode) svgNode = document.createElementNS(\"http://www.w3.org/2000/svg\", \"g\");\n  svgNode.setAttribute(\"transform\", value);\n  if (!(value = svgNode.transform.baseVal.consolidate())) return _decompose_js__WEBPACK_IMPORTED_MODULE_0__[\"identity\"];\n  value = value.matrix;\n  return Object(_decompose_js__WEBPACK_IMPORTED_MODULE_0__[\"default\"])(value.a, value.b, value.c, value.d, value.e, value.f);\n}\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvdmVnYS1mdW5jdGlvbnMvbm9kZV9tb2R1bGVzL2QzLWludGVycG9sYXRlL3NyYy90cmFuc2Zvcm0vcGFyc2UuanMuanMiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvdmVnYS1mdW5jdGlvbnMvbm9kZV9tb2R1bGVzL2QzLWludGVycG9sYXRlL3NyYy90cmFuc2Zvcm0vcGFyc2UuanM/OGJkZSJdLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgZGVjb21wb3NlLCB7aWRlbnRpdHl9IGZyb20gXCIuL2RlY29tcG9zZS5qc1wiO1xuXG52YXIgc3ZnTm9kZTtcblxuLyogZXNsaW50LWRpc2FibGUgbm8tdW5kZWYgKi9cbmV4cG9ydCBmdW5jdGlvbiBwYXJzZUNzcyh2YWx1ZSkge1xuICBjb25zdCBtID0gbmV3ICh0eXBlb2YgRE9NTWF0cml4ID09PSBcImZ1bmN0aW9uXCIgPyBET01NYXRyaXggOiBXZWJLaXRDU1NNYXRyaXgpKHZhbHVlICsgXCJcIik7XG4gIHJldHVybiBtLmlzSWRlbnRpdHkgPyBpZGVudGl0eSA6IGRlY29tcG9zZShtLmEsIG0uYiwgbS5jLCBtLmQsIG0uZSwgbS5mKTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIHBhcnNlU3ZnKHZhbHVlKSB7XG4gIGlmICh2YWx1ZSA9PSBudWxsKSByZXR1cm4gaWRlbnRpdHk7XG4gIGlmICghc3ZnTm9kZSkgc3ZnTm9kZSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnROUyhcImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnXCIsIFwiZ1wiKTtcbiAgc3ZnTm9kZS5zZXRBdHRyaWJ1dGUoXCJ0cmFuc2Zvcm1cIiwgdmFsdWUpO1xuICBpZiAoISh2YWx1ZSA9IHN2Z05vZGUudHJhbnNmb3JtLmJhc2VWYWwuY29uc29saWRhdGUoKSkpIHJldHVybiBpZGVudGl0eTtcbiAgdmFsdWUgPSB2YWx1ZS5tYXRyaXg7XG4gIHJldHVybiBkZWNvbXBvc2UodmFsdWUuYSwgdmFsdWUuYiwgdmFsdWUuYywgdmFsdWUuZCwgdmFsdWUuZSwgdmFsdWUuZik7XG59XG4iXSwibWFwcGluZ3MiOiJBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOyIsInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///./node_modules/vega-functions/node_modules/d3-interpolate/src/transform/parse.js\n");

/***/ }),

/***/ "./node_modules/vega-functions/node_modules/d3-interpolate/src/value.js":
/*!******************************************************************************!*\
  !*** ./node_modules/vega-functions/node_modules/d3-interpolate/src/value.js ***!
  \******************************************************************************/
/*! exports provided: default */
/***/ (function(module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var d3_color__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! d3-color */ \"./node_modules/vega-functions/node_modules/d3-color/src/index.js\");\n/* harmony import */ var _rgb_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./rgb.js */ \"./node_modules/vega-functions/node_modules/d3-interpolate/src/rgb.js\");\n/* harmony import */ var _array_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./array.js */ \"./node_modules/vega-functions/node_modules/d3-interpolate/src/array.js\");\n/* harmony import */ var _date_js__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ./date.js */ \"./node_modules/vega-functions/node_modules/d3-interpolate/src/date.js\");\n/* harmony import */ var _number_js__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ./number.js */ \"./node_modules/vega-functions/node_modules/d3-interpolate/src/number.js\");\n/* harmony import */ var _object_js__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! ./object.js */ \"./node_modules/vega-functions/node_modules/d3-interpolate/src/object.js\");\n/* harmony import */ var _string_js__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! ./string.js */ \"./node_modules/vega-functions/node_modules/d3-interpolate/src/string.js\");\n/* harmony import */ var _constant_js__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! ./constant.js */ \"./node_modules/vega-functions/node_modules/d3-interpolate/src/constant.js\");\n/* harmony import */ var _numberArray_js__WEBPACK_IMPORTED_MODULE_8__ = __webpack_require__(/*! ./numberArray.js */ \"./node_modules/vega-functions/node_modules/d3-interpolate/src/numberArray.js\");\n\n\n\n\n\n\n\n\n\n\n/* harmony default export */ __webpack_exports__[\"default\"] = (function(a, b) {\n  var t = typeof b, c;\n  return b == null || t === \"boolean\" ? Object(_constant_js__WEBPACK_IMPORTED_MODULE_7__[\"default\"])(b)\n      : (t === \"number\" ? _number_js__WEBPACK_IMPORTED_MODULE_4__[\"default\"]\n      : t === \"string\" ? ((c = Object(d3_color__WEBPACK_IMPORTED_MODULE_0__[\"color\"])(b)) ? (b = c, _rgb_js__WEBPACK_IMPORTED_MODULE_1__[\"default\"]) : _string_js__WEBPACK_IMPORTED_MODULE_6__[\"default\"])\n      : b instanceof d3_color__WEBPACK_IMPORTED_MODULE_0__[\"color\"] ? _rgb_js__WEBPACK_IMPORTED_MODULE_1__[\"default\"]\n      : b instanceof Date ? _date_js__WEBPACK_IMPORTED_MODULE_3__[\"default\"]\n      : Object(_numberArray_js__WEBPACK_IMPORTED_MODULE_8__[\"isNumberArray\"])(b) ? _numberArray_js__WEBPACK_IMPORTED_MODULE_8__[\"default\"]\n      : Array.isArray(b) ? _array_js__WEBPACK_IMPORTED_MODULE_2__[\"genericArray\"]\n      : typeof b.valueOf !== \"function\" && typeof b.toString !== \"function\" || isNaN(b) ? _object_js__WEBPACK_IMPORTED_MODULE_5__[\"default\"]\n      : _number_js__WEBPACK_IMPORTED_MODULE_4__[\"default\"])(a, b);\n});\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvdmVnYS1mdW5jdGlvbnMvbm9kZV9tb2R1bGVzL2QzLWludGVycG9sYXRlL3NyYy92YWx1ZS5qcy5qcyIsInNvdXJjZXMiOlsid2VicGFjazovLy8uL25vZGVfbW9kdWxlcy92ZWdhLWZ1bmN0aW9ucy9ub2RlX21vZHVsZXMvZDMtaW50ZXJwb2xhdGUvc3JjL3ZhbHVlLmpzPzk2NDUiXSwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtjb2xvcn0gZnJvbSBcImQzLWNvbG9yXCI7XG5pbXBvcnQgcmdiIGZyb20gXCIuL3JnYi5qc1wiO1xuaW1wb3J0IHtnZW5lcmljQXJyYXl9IGZyb20gXCIuL2FycmF5LmpzXCI7XG5pbXBvcnQgZGF0ZSBmcm9tIFwiLi9kYXRlLmpzXCI7XG5pbXBvcnQgbnVtYmVyIGZyb20gXCIuL251bWJlci5qc1wiO1xuaW1wb3J0IG9iamVjdCBmcm9tIFwiLi9vYmplY3QuanNcIjtcbmltcG9ydCBzdHJpbmcgZnJvbSBcIi4vc3RyaW5nLmpzXCI7XG5pbXBvcnQgY29uc3RhbnQgZnJvbSBcIi4vY29uc3RhbnQuanNcIjtcbmltcG9ydCBudW1iZXJBcnJheSwge2lzTnVtYmVyQXJyYXl9IGZyb20gXCIuL251bWJlckFycmF5LmpzXCI7XG5cbmV4cG9ydCBkZWZhdWx0IGZ1bmN0aW9uKGEsIGIpIHtcbiAgdmFyIHQgPSB0eXBlb2YgYiwgYztcbiAgcmV0dXJuIGIgPT0gbnVsbCB8fCB0ID09PSBcImJvb2xlYW5cIiA/IGNvbnN0YW50KGIpXG4gICAgICA6ICh0ID09PSBcIm51bWJlclwiID8gbnVtYmVyXG4gICAgICA6IHQgPT09IFwic3RyaW5nXCIgPyAoKGMgPSBjb2xvcihiKSkgPyAoYiA9IGMsIHJnYikgOiBzdHJpbmcpXG4gICAgICA6IGIgaW5zdGFuY2VvZiBjb2xvciA/IHJnYlxuICAgICAgOiBiIGluc3RhbmNlb2YgRGF0ZSA/IGRhdGVcbiAgICAgIDogaXNOdW1iZXJBcnJheShiKSA/IG51bWJlckFycmF5XG4gICAgICA6IEFycmF5LmlzQXJyYXkoYikgPyBnZW5lcmljQXJyYXlcbiAgICAgIDogdHlwZW9mIGIudmFsdWVPZiAhPT0gXCJmdW5jdGlvblwiICYmIHR5cGVvZiBiLnRvU3RyaW5nICE9PSBcImZ1bmN0aW9uXCIgfHwgaXNOYU4oYikgPyBvYmplY3RcbiAgICAgIDogbnVtYmVyKShhLCBiKTtcbn1cbiJdLCJtYXBwaW5ncyI6IkFBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTsiLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///./node_modules/vega-functions/node_modules/d3-interpolate/src/value.js\n");

/***/ }),

/***/ "./node_modules/vega-functions/node_modules/d3-interpolate/src/zoom.js":
/*!*****************************************************************************!*\
  !*** ./node_modules/vega-functions/node_modules/d3-interpolate/src/zoom.js ***!
  \*****************************************************************************/
/*! exports provided: default */
/***/ (function(module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\nvar epsilon2 = 1e-12;\n\nfunction cosh(x) {\n  return ((x = Math.exp(x)) + 1 / x) / 2;\n}\n\nfunction sinh(x) {\n  return ((x = Math.exp(x)) - 1 / x) / 2;\n}\n\nfunction tanh(x) {\n  return ((x = Math.exp(2 * x)) - 1) / (x + 1);\n}\n\n/* harmony default export */ __webpack_exports__[\"default\"] = ((function zoomRho(rho, rho2, rho4) {\n\n  // p0 = [ux0, uy0, w0]\n  // p1 = [ux1, uy1, w1]\n  function zoom(p0, p1) {\n    var ux0 = p0[0], uy0 = p0[1], w0 = p0[2],\n        ux1 = p1[0], uy1 = p1[1], w1 = p1[2],\n        dx = ux1 - ux0,\n        dy = uy1 - uy0,\n        d2 = dx * dx + dy * dy,\n        i,\n        S;\n\n    // Special case for u0 ≅ u1.\n    if (d2 < epsilon2) {\n      S = Math.log(w1 / w0) / rho;\n      i = function(t) {\n        return [\n          ux0 + t * dx,\n          uy0 + t * dy,\n          w0 * Math.exp(rho * t * S)\n        ];\n      }\n    }\n\n    // General case.\n    else {\n      var d1 = Math.sqrt(d2),\n          b0 = (w1 * w1 - w0 * w0 + rho4 * d2) / (2 * w0 * rho2 * d1),\n          b1 = (w1 * w1 - w0 * w0 - rho4 * d2) / (2 * w1 * rho2 * d1),\n          r0 = Math.log(Math.sqrt(b0 * b0 + 1) - b0),\n          r1 = Math.log(Math.sqrt(b1 * b1 + 1) - b1);\n      S = (r1 - r0) / rho;\n      i = function(t) {\n        var s = t * S,\n            coshr0 = cosh(r0),\n            u = w0 / (rho2 * d1) * (coshr0 * tanh(rho * s + r0) - sinh(r0));\n        return [\n          ux0 + u * dx,\n          uy0 + u * dy,\n          w0 * coshr0 / cosh(rho * s + r0)\n        ];\n      }\n    }\n\n    i.duration = S * 1000 * rho / Math.SQRT2;\n\n    return i;\n  }\n\n  zoom.rho = function(_) {\n    var _1 = Math.max(1e-3, +_), _2 = _1 * _1, _4 = _2 * _2;\n    return zoomRho(_1, _2, _4);\n  };\n\n  return zoom;\n})(Math.SQRT2, 2, 4));\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvdmVnYS1mdW5jdGlvbnMvbm9kZV9tb2R1bGVzL2QzLWludGVycG9sYXRlL3NyYy96b29tLmpzLmpzIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL3ZlZ2EtZnVuY3Rpb25zL25vZGVfbW9kdWxlcy9kMy1pbnRlcnBvbGF0ZS9zcmMvem9vbS5qcz85YzI3Il0sInNvdXJjZXNDb250ZW50IjpbInZhciBlcHNpbG9uMiA9IDFlLTEyO1xuXG5mdW5jdGlvbiBjb3NoKHgpIHtcbiAgcmV0dXJuICgoeCA9IE1hdGguZXhwKHgpKSArIDEgLyB4KSAvIDI7XG59XG5cbmZ1bmN0aW9uIHNpbmgoeCkge1xuICByZXR1cm4gKCh4ID0gTWF0aC5leHAoeCkpIC0gMSAvIHgpIC8gMjtcbn1cblxuZnVuY3Rpb24gdGFuaCh4KSB7XG4gIHJldHVybiAoKHggPSBNYXRoLmV4cCgyICogeCkpIC0gMSkgLyAoeCArIDEpO1xufVxuXG5leHBvcnQgZGVmYXVsdCAoZnVuY3Rpb24gem9vbVJobyhyaG8sIHJobzIsIHJobzQpIHtcblxuICAvLyBwMCA9IFt1eDAsIHV5MCwgdzBdXG4gIC8vIHAxID0gW3V4MSwgdXkxLCB3MV1cbiAgZnVuY3Rpb24gem9vbShwMCwgcDEpIHtcbiAgICB2YXIgdXgwID0gcDBbMF0sIHV5MCA9IHAwWzFdLCB3MCA9IHAwWzJdLFxuICAgICAgICB1eDEgPSBwMVswXSwgdXkxID0gcDFbMV0sIHcxID0gcDFbMl0sXG4gICAgICAgIGR4ID0gdXgxIC0gdXgwLFxuICAgICAgICBkeSA9IHV5MSAtIHV5MCxcbiAgICAgICAgZDIgPSBkeCAqIGR4ICsgZHkgKiBkeSxcbiAgICAgICAgaSxcbiAgICAgICAgUztcblxuICAgIC8vIFNwZWNpYWwgY2FzZSBmb3IgdTAg4omFIHUxLlxuICAgIGlmIChkMiA8IGVwc2lsb24yKSB7XG4gICAgICBTID0gTWF0aC5sb2codzEgLyB3MCkgLyByaG87XG4gICAgICBpID0gZnVuY3Rpb24odCkge1xuICAgICAgICByZXR1cm4gW1xuICAgICAgICAgIHV4MCArIHQgKiBkeCxcbiAgICAgICAgICB1eTAgKyB0ICogZHksXG4gICAgICAgICAgdzAgKiBNYXRoLmV4cChyaG8gKiB0ICogUylcbiAgICAgICAgXTtcbiAgICAgIH1cbiAgICB9XG5cbiAgICAvLyBHZW5lcmFsIGNhc2UuXG4gICAgZWxzZSB7XG4gICAgICB2YXIgZDEgPSBNYXRoLnNxcnQoZDIpLFxuICAgICAgICAgIGIwID0gKHcxICogdzEgLSB3MCAqIHcwICsgcmhvNCAqIGQyKSAvICgyICogdzAgKiByaG8yICogZDEpLFxuICAgICAgICAgIGIxID0gKHcxICogdzEgLSB3MCAqIHcwIC0gcmhvNCAqIGQyKSAvICgyICogdzEgKiByaG8yICogZDEpLFxuICAgICAgICAgIHIwID0gTWF0aC5sb2coTWF0aC5zcXJ0KGIwICogYjAgKyAxKSAtIGIwKSxcbiAgICAgICAgICByMSA9IE1hdGgubG9nKE1hdGguc3FydChiMSAqIGIxICsgMSkgLSBiMSk7XG4gICAgICBTID0gKHIxIC0gcjApIC8gcmhvO1xuICAgICAgaSA9IGZ1bmN0aW9uKHQpIHtcbiAgICAgICAgdmFyIHMgPSB0ICogUyxcbiAgICAgICAgICAgIGNvc2hyMCA9IGNvc2gocjApLFxuICAgICAgICAgICAgdSA9IHcwIC8gKHJobzIgKiBkMSkgKiAoY29zaHIwICogdGFuaChyaG8gKiBzICsgcjApIC0gc2luaChyMCkpO1xuICAgICAgICByZXR1cm4gW1xuICAgICAgICAgIHV4MCArIHUgKiBkeCxcbiAgICAgICAgICB1eTAgKyB1ICogZHksXG4gICAgICAgICAgdzAgKiBjb3NocjAgLyBjb3NoKHJobyAqIHMgKyByMClcbiAgICAgICAgXTtcbiAgICAgIH1cbiAgICB9XG5cbiAgICBpLmR1cmF0aW9uID0gUyAqIDEwMDAgKiByaG8gLyBNYXRoLlNRUlQyO1xuXG4gICAgcmV0dXJuIGk7XG4gIH1cblxuICB6b29tLnJobyA9IGZ1bmN0aW9uKF8pIHtcbiAgICB2YXIgXzEgPSBNYXRoLm1heCgxZS0zLCArXyksIF8yID0gXzEgKiBfMSwgXzQgPSBfMiAqIF8yO1xuICAgIHJldHVybiB6b29tUmhvKF8xLCBfMiwgXzQpO1xuICB9O1xuXG4gIHJldHVybiB6b29tO1xufSkoTWF0aC5TUVJUMiwgMiwgNCk7XG4iXSwibWFwcGluZ3MiOiJBQUFBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTsiLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///./node_modules/vega-functions/node_modules/d3-interpolate/src/zoom.js\n");

/***/ }),

/***/ "./node_modules/vega-functions/node_modules/d3-path/src/index.js":
/*!***********************************************************************!*\
  !*** ./node_modules/vega-functions/node_modules/d3-path/src/index.js ***!
  \***********************************************************************/
/*! exports provided: path */
/***/ (function(module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _path_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./path.js */ \"./node_modules/vega-functions/node_modules/d3-path/src/path.js\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"path\", function() { return _path_js__WEBPACK_IMPORTED_MODULE_0__[\"default\"]; });\n\n\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvdmVnYS1mdW5jdGlvbnMvbm9kZV9tb2R1bGVzL2QzLXBhdGgvc3JjL2luZGV4LmpzLmpzIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL3ZlZ2EtZnVuY3Rpb25zL25vZGVfbW9kdWxlcy9kMy1wYXRoL3NyYy9pbmRleC5qcz9jZmYzIl0sInNvdXJjZXNDb250ZW50IjpbImV4cG9ydCB7ZGVmYXVsdCBhcyBwYXRofSBmcm9tIFwiLi9wYXRoLmpzXCI7XG4iXSwibWFwcGluZ3MiOiJBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7Iiwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///./node_modules/vega-functions/node_modules/d3-path/src/index.js\n");

/***/ }),

/***/ "./node_modules/vega-functions/node_modules/d3-path/src/path.js":
/*!**********************************************************************!*\
  !*** ./node_modules/vega-functions/node_modules/d3-path/src/path.js ***!
  \**********************************************************************/
/*! exports provided: default */
/***/ (function(module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\nconst pi = Math.PI,\n    tau = 2 * pi,\n    epsilon = 1e-6,\n    tauEpsilon = tau - epsilon;\n\nfunction Path() {\n  this._x0 = this._y0 = // start of current subpath\n  this._x1 = this._y1 = null; // end of current subpath\n  this._ = \"\";\n}\n\nfunction path() {\n  return new Path;\n}\n\nPath.prototype = path.prototype = {\n  constructor: Path,\n  moveTo: function(x, y) {\n    this._ += \"M\" + (this._x0 = this._x1 = +x) + \",\" + (this._y0 = this._y1 = +y);\n  },\n  closePath: function() {\n    if (this._x1 !== null) {\n      this._x1 = this._x0, this._y1 = this._y0;\n      this._ += \"Z\";\n    }\n  },\n  lineTo: function(x, y) {\n    this._ += \"L\" + (this._x1 = +x) + \",\" + (this._y1 = +y);\n  },\n  quadraticCurveTo: function(x1, y1, x, y) {\n    this._ += \"Q\" + (+x1) + \",\" + (+y1) + \",\" + (this._x1 = +x) + \",\" + (this._y1 = +y);\n  },\n  bezierCurveTo: function(x1, y1, x2, y2, x, y) {\n    this._ += \"C\" + (+x1) + \",\" + (+y1) + \",\" + (+x2) + \",\" + (+y2) + \",\" + (this._x1 = +x) + \",\" + (this._y1 = +y);\n  },\n  arcTo: function(x1, y1, x2, y2, r) {\n    x1 = +x1, y1 = +y1, x2 = +x2, y2 = +y2, r = +r;\n    var x0 = this._x1,\n        y0 = this._y1,\n        x21 = x2 - x1,\n        y21 = y2 - y1,\n        x01 = x0 - x1,\n        y01 = y0 - y1,\n        l01_2 = x01 * x01 + y01 * y01;\n\n    // Is the radius negative? Error.\n    if (r < 0) throw new Error(\"negative radius: \" + r);\n\n    // Is this path empty? Move to (x1,y1).\n    if (this._x1 === null) {\n      this._ += \"M\" + (this._x1 = x1) + \",\" + (this._y1 = y1);\n    }\n\n    // Or, is (x1,y1) coincident with (x0,y0)? Do nothing.\n    else if (!(l01_2 > epsilon));\n\n    // Or, are (x0,y0), (x1,y1) and (x2,y2) collinear?\n    // Equivalently, is (x1,y1) coincident with (x2,y2)?\n    // Or, is the radius zero? Line to (x1,y1).\n    else if (!(Math.abs(y01 * x21 - y21 * x01) > epsilon) || !r) {\n      this._ += \"L\" + (this._x1 = x1) + \",\" + (this._y1 = y1);\n    }\n\n    // Otherwise, draw an arc!\n    else {\n      var x20 = x2 - x0,\n          y20 = y2 - y0,\n          l21_2 = x21 * x21 + y21 * y21,\n          l20_2 = x20 * x20 + y20 * y20,\n          l21 = Math.sqrt(l21_2),\n          l01 = Math.sqrt(l01_2),\n          l = r * Math.tan((pi - Math.acos((l21_2 + l01_2 - l20_2) / (2 * l21 * l01))) / 2),\n          t01 = l / l01,\n          t21 = l / l21;\n\n      // If the start tangent is not coincident with (x0,y0), line to.\n      if (Math.abs(t01 - 1) > epsilon) {\n        this._ += \"L\" + (x1 + t01 * x01) + \",\" + (y1 + t01 * y01);\n      }\n\n      this._ += \"A\" + r + \",\" + r + \",0,0,\" + (+(y01 * x20 > x01 * y20)) + \",\" + (this._x1 = x1 + t21 * x21) + \",\" + (this._y1 = y1 + t21 * y21);\n    }\n  },\n  arc: function(x, y, r, a0, a1, ccw) {\n    x = +x, y = +y, r = +r, ccw = !!ccw;\n    var dx = r * Math.cos(a0),\n        dy = r * Math.sin(a0),\n        x0 = x + dx,\n        y0 = y + dy,\n        cw = 1 ^ ccw,\n        da = ccw ? a0 - a1 : a1 - a0;\n\n    // Is the radius negative? Error.\n    if (r < 0) throw new Error(\"negative radius: \" + r);\n\n    // Is this path empty? Move to (x0,y0).\n    if (this._x1 === null) {\n      this._ += \"M\" + x0 + \",\" + y0;\n    }\n\n    // Or, is (x0,y0) not coincident with the previous point? Line to (x0,y0).\n    else if (Math.abs(this._x1 - x0) > epsilon || Math.abs(this._y1 - y0) > epsilon) {\n      this._ += \"L\" + x0 + \",\" + y0;\n    }\n\n    // Is this arc empty? We’re done.\n    if (!r) return;\n\n    // Does the angle go the wrong way? Flip the direction.\n    if (da < 0) da = da % tau + tau;\n\n    // Is this a complete circle? Draw two arcs to complete the circle.\n    if (da > tauEpsilon) {\n      this._ += \"A\" + r + \",\" + r + \",0,1,\" + cw + \",\" + (x - dx) + \",\" + (y - dy) + \"A\" + r + \",\" + r + \",0,1,\" + cw + \",\" + (this._x1 = x0) + \",\" + (this._y1 = y0);\n    }\n\n    // Is this arc non-empty? Draw an arc!\n    else if (da > epsilon) {\n      this._ += \"A\" + r + \",\" + r + \",0,\" + (+(da >= pi)) + \",\" + cw + \",\" + (this._x1 = x + r * Math.cos(a1)) + \",\" + (this._y1 = y + r * Math.sin(a1));\n    }\n  },\n  rect: function(x, y, w, h) {\n    this._ += \"M\" + (this._x0 = this._x1 = +x) + \",\" + (this._y0 = this._y1 = +y) + \"h\" + (+w) + \"v\" + (+h) + \"h\" + (-w) + \"Z\";\n  },\n  toString: function() {\n    return this._;\n  }\n};\n\n/* harmony default export */ __webpack_exports__[\"default\"] = (path);\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,[encoded data, 7092 characters]\n//# sourceURL=webpack-internal:///./node_modules/vega-functions/node_modules/d3-path/src/path.js\n");

/***/ }),

/***/ "./node_modules/vega-functions/node_modules/d3-scale/src/band.js":
/*!***********************************************************************!*\
  !*** ./node_modules/vega-functions/node_modules/d3-scale/src/band.js ***!
  \***********************************************************************/
/*! exports provided: default, point */
/***/ (function(module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"default\", function() { return band; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"point\", function() { return point; });\n/* harmony import */ var d3_array__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! d3-array */ \"./node_modules/d3-array/src/index.js\");\n/* harmony import */ var _init_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./init.js */ \"./node_modules/vega-functions/node_modules/d3-scale/src/init.js\");\n/* harmony import */ var _ordinal_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./ordinal.js */ \"./node_modules/vega-functions/node_modules/d3-scale/src/ordinal.js\");\n\n\n\n\nfunction band() {\n  var scale = Object(_ordinal_js__WEBPACK_IMPORTED_MODULE_2__[\"default\"])().unknown(undefined),\n      domain = scale.domain,\n      ordinalRange = scale.range,\n      r0 = 0,\n      r1 = 1,\n      step,\n      bandwidth,\n      round = false,\n      paddingInner = 0,\n      paddingOuter = 0,\n      align = 0.5;\n\n  delete scale.unknown;\n\n  function rescale() {\n    var n = domain().length,\n        reverse = r1 < r0,\n        start = reverse ? r1 : r0,\n        stop = reverse ? r0 : r1;\n    step = (stop - start) / Math.max(1, n - paddingInner + paddingOuter * 2);\n    if (round) step = Math.floor(step);\n    start += (stop - start - step * (n - paddingInner)) * align;\n    bandwidth = step * (1 - paddingInner);\n    if (round) start = Math.round(start), bandwidth = Math.round(bandwidth);\n    var values = Object(d3_array__WEBPACK_IMPORTED_MODULE_0__[\"range\"])(n).map(function(i) { return start + step * i; });\n    return ordinalRange(reverse ? values.reverse() : values);\n  }\n\n  scale.domain = function(_) {\n    return arguments.length ? (domain(_), rescale()) : domain();\n  };\n\n  scale.range = function(_) {\n    return arguments.length ? ([r0, r1] = _, r0 = +r0, r1 = +r1, rescale()) : [r0, r1];\n  };\n\n  scale.rangeRound = function(_) {\n    return [r0, r1] = _, r0 = +r0, r1 = +r1, round = true, rescale();\n  };\n\n  scale.bandwidth = function() {\n    return bandwidth;\n  };\n\n  scale.step = function() {\n    return step;\n  };\n\n  scale.round = function(_) {\n    return arguments.length ? (round = !!_, rescale()) : round;\n  };\n\n  scale.padding = function(_) {\n    return arguments.length ? (paddingInner = Math.min(1, paddingOuter = +_), rescale()) : paddingInner;\n  };\n\n  scale.paddingInner = function(_) {\n    return arguments.length ? (paddingInner = Math.min(1, _), rescale()) : paddingInner;\n  };\n\n  scale.paddingOuter = function(_) {\n    return arguments.length ? (paddingOuter = +_, rescale()) : paddingOuter;\n  };\n\n  scale.align = function(_) {\n    return arguments.length ? (align = Math.max(0, Math.min(1, _)), rescale()) : align;\n  };\n\n  scale.copy = function() {\n    return band(domain(), [r0, r1])\n        .round(round)\n        .paddingInner(paddingInner)\n        .paddingOuter(paddingOuter)\n        .align(align);\n  };\n\n  return _init_js__WEBPACK_IMPORTED_MODULE_1__[\"initRange\"].apply(rescale(), arguments);\n}\n\nfunction pointish(scale) {\n  var copy = scale.copy;\n\n  scale.padding = scale.paddingOuter;\n  delete scale.paddingInner;\n  delete scale.paddingOuter;\n\n  scale.copy = function() {\n    return pointish(copy());\n  };\n\n  return scale;\n}\n\nfunction point() {\n  return pointish(band.apply(null, arguments).paddingInner(1));\n}\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,[encoded data, 4708 characters]\n//# sourceURL=webpack-internal:///./node_modules/vega-functions/node_modules/d3-scale/src/band.js\n");

/***/ }),

/***/ "./node_modules/vega-functions/node_modules/d3-scale/src/constant.js":
/*!***************************************************************************!*\
  !*** ./node_modules/vega-functions/node_modules/d3-scale/src/constant.js ***!
  \***************************************************************************/
/*! exports provided: default */
/***/ (function(module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"default\", function() { return constants; });\nfunction constants(x) {\n  return function() {\n    return x;\n  };\n}\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvdmVnYS1mdW5jdGlvbnMvbm9kZV9tb2R1bGVzL2QzLXNjYWxlL3NyYy9jb25zdGFudC5qcy5qcyIsInNvdXJjZXMiOlsid2VicGFjazovLy8uL25vZGVfbW9kdWxlcy92ZWdhLWZ1bmN0aW9ucy9ub2RlX21vZHVsZXMvZDMtc2NhbGUvc3JjL2NvbnN0YW50LmpzPzkyYjUiXSwic291cmNlc0NvbnRlbnQiOlsiZXhwb3J0IGRlZmF1bHQgZnVuY3Rpb24gY29uc3RhbnRzKHgpIHtcbiAgcmV0dXJuIGZ1bmN0aW9uKCkge1xuICAgIHJldHVybiB4O1xuICB9O1xufVxuIl0sIm1hcHBpbmdzIjoiQUFBQTtBQUFBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTsiLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///./node_modules/vega-functions/node_modules/d3-scale/src/constant.js\n");

/***/ }),

/***/ "./node_modules/vega-functions/node_modules/d3-scale/src/continuous.js":
/*!*****************************************************************************!*\
  !*** ./node_modules/vega-functions/node_modules/d3-scale/src/continuous.js ***!
  \*****************************************************************************/
/*! exports provided: identity, copy, transformer, default */
/***/ (function(module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"identity\", function() { return identity; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"copy\", function() { return copy; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"transformer\", function() { return transformer; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"default\", function() { return continuous; });\n/* harmony import */ var d3_array__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! d3-array */ \"./node_modules/d3-array/src/index.js\");\n/* harmony import */ var d3_interpolate__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! d3-interpolate */ \"./node_modules/vega-functions/node_modules/d3-interpolate/src/index.js\");\n/* harmony import */ var _constant_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./constant.js */ \"./node_modules/vega-functions/node_modules/d3-scale/src/constant.js\");\n/* harmony import */ var _number_js__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ./number.js */ \"./node_modules/vega-functions/node_modules/d3-scale/src/number.js\");\n\n\n\n\n\nvar unit = [0, 1];\n\nfunction identity(x) {\n  return x;\n}\n\nfunction normalize(a, b) {\n  return (b -= (a = +a))\n      ? function(x) { return (x - a) / b; }\n      : Object(_constant_js__WEBPACK_IMPORTED_MODULE_2__[\"default\"])(isNaN(b) ? NaN : 0.5);\n}\n\nfunction clamper(a, b) {\n  var t;\n  if (a > b) t = a, a = b, b = t;\n  return function(x) { return Math.max(a, Math.min(b, x)); };\n}\n\n// normalize(a, b)(x) takes a domain value x in [a,b] and returns the corresponding parameter t in [0,1].\n// interpolate(a, b)(t) takes a parameter t in [0,1] and returns the corresponding range value x in [a,b].\nfunction bimap(domain, range, interpolate) {\n  var d0 = domain[0], d1 = domain[1], r0 = range[0], r1 = range[1];\n  if (d1 < d0) d0 = normalize(d1, d0), r0 = interpolate(r1, r0);\n  else d0 = normalize(d0, d1), r0 = interpolate(r0, r1);\n  return function(x) { return r0(d0(x)); };\n}\n\nfunction polymap(domain, range, interpolate) {\n  var j = Math.min(domain.length, range.length) - 1,\n      d = new Array(j),\n      r = new Array(j),\n      i = -1;\n\n  // Reverse descending domains.\n  if (domain[j] < domain[0]) {\n    domain = domain.slice().reverse();\n    range = range.slice().reverse();\n  }\n\n  while (++i < j) {\n    d[i] = normalize(domain[i], domain[i + 1]);\n    r[i] = interpolate(range[i], range[i + 1]);\n  }\n\n  return function(x) {\n    var i = Object(d3_array__WEBPACK_IMPORTED_MODULE_0__[\"bisect\"])(domain, x, 1, j) - 1;\n    return r[i](d[i](x));\n  };\n}\n\nfunction copy(source, target) {\n  return target\n      .domain(source.domain())\n      .range(source.range())\n      .interpolate(source.interpolate())\n      .clamp(source.clamp())\n      .unknown(source.unknown());\n}\n\nfunction transformer() {\n  var domain = unit,\n      range = unit,\n      interpolate = d3_interpolate__WEBPACK_IMPORTED_MODULE_1__[\"interpolate\"],\n      transform,\n      untransform,\n      unknown,\n      clamp = identity,\n      piecewise,\n      output,\n      input;\n\n  function rescale() {\n    var n = Math.min(domain.length, range.length);\n    if (clamp !== identity) clamp = clamper(domain[0], domain[n - 1]);\n    piecewise = n > 2 ? polymap : bimap;\n    output = input = null;\n    return scale;\n  }\n\n  function scale(x) {\n    return x == null || isNaN(x = +x) ? unknown : (output || (output = piecewise(domain.map(transform), range, interpolate)))(transform(clamp(x)));\n  }\n\n  scale.invert = function(y) {\n    return clamp(untransform((input || (input = piecewise(range, domain.map(transform), d3_interpolate__WEBPACK_IMPORTED_MODULE_1__[\"interpolateNumber\"])))(y)));\n  };\n\n  scale.domain = function(_) {\n    return arguments.length ? (domain = Array.from(_, _number_js__WEBPACK_IMPORTED_MODULE_3__[\"default\"]), rescale()) : domain.slice();\n  };\n\n  scale.range = function(_) {\n    return arguments.length ? (range = Array.from(_), rescale()) : range.slice();\n  };\n\n  scale.rangeRound = function(_) {\n    return range = Array.from(_), interpolate = d3_interpolate__WEBPACK_IMPORTED_MODULE_1__[\"interpolateRound\"], rescale();\n  };\n\n  scale.clamp = function(_) {\n    return arguments.length ? (clamp = _ ? true : identity, rescale()) : clamp !== identity;\n  };\n\n  scale.interpolate = function(_) {\n    return arguments.length ? (interpolate = _, rescale()) : interpolate;\n  };\n\n  scale.unknown = function(_) {\n    return arguments.length ? (unknown = _, scale) : unknown;\n  };\n\n  return function(t, u) {\n    transform = t, untransform = u;\n    return rescale();\n  };\n}\n\nfunction continuous() {\n  return transformer()(identity, identity);\n}\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,[encoded data, 6028 characters]\n//# sourceURL=webpack-internal:///./node_modules/vega-functions/node_modules/d3-scale/src/continuous.js\n");

/***/ }),

/***/ "./node_modules/vega-functions/node_modules/d3-scale/src/diverging.js":
/*!****************************************************************************!*\
  !*** ./node_modules/vega-functions/node_modules/d3-scale/src/diverging.js ***!
  \****************************************************************************/
/*! exports provided: default, divergingLog, divergingSymlog, divergingPow, divergingSqrt */
/***/ (function(module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"default\", function() { return diverging; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"divergingLog\", function() { return divergingLog; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"divergingSymlog\", function() { return divergingSymlog; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"divergingPow\", function() { return divergingPow; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"divergingSqrt\", function() { return divergingSqrt; });\n/* harmony import */ var d3_interpolate__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! d3-interpolate */ \"./node_modules/vega-functions/node_modules/d3-interpolate/src/index.js\");\n/* harmony import */ var _continuous_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./continuous.js */ \"./node_modules/vega-functions/node_modules/d3-scale/src/continuous.js\");\n/* harmony import */ var _init_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./init.js */ \"./node_modules/vega-functions/node_modules/d3-scale/src/init.js\");\n/* harmony import */ var _linear_js__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ./linear.js */ \"./node_modules/vega-functions/node_modules/d3-scale/src/linear.js\");\n/* harmony import */ var _log_js__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ./log.js */ \"./node_modules/vega-functions/node_modules/d3-scale/src/log.js\");\n/* harmony import */ var _sequential_js__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! ./sequential.js */ \"./node_modules/vega-functions/node_modules/d3-scale/src/sequential.js\");\n/* harmony import */ var _symlog_js__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! ./symlog.js */ \"./node_modules/vega-functions/node_modules/d3-scale/src/symlog.js\");\n/* harmony import */ var _pow_js__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! ./pow.js */ \"./node_modules/vega-functions/node_modules/d3-scale/src/pow.js\");\n\n\n\n\n\n\n\n\n\nfunction transformer() {\n  var x0 = 0,\n      x1 = 0.5,\n      x2 = 1,\n      s = 1,\n      t0,\n      t1,\n      t2,\n      k10,\n      k21,\n      interpolator = _continuous_js__WEBPACK_IMPORTED_MODULE_1__[\"identity\"],\n      transform,\n      clamp = false,\n      unknown;\n\n  function scale(x) {\n    return isNaN(x = +x) ? unknown : (x = 0.5 + ((x = +transform(x)) - t1) * (s * x < s * t1 ? k10 : k21), interpolator(clamp ? Math.max(0, Math.min(1, x)) : x));\n  }\n\n  scale.domain = function(_) {\n    return arguments.length ? ([x0, x1, x2] = _, t0 = transform(x0 = +x0), t1 = transform(x1 = +x1), t2 = transform(x2 = +x2), k10 = t0 === t1 ? 0 : 0.5 / (t1 - t0), k21 = t1 === t2 ? 0 : 0.5 / (t2 - t1), s = t1 < t0 ? -1 : 1, scale) : [x0, x1, x2];\n  };\n\n  scale.clamp = function(_) {\n    return arguments.length ? (clamp = !!_, scale) : clamp;\n  };\n\n  scale.interpolator = function(_) {\n    return arguments.length ? (interpolator = _, scale) : interpolator;\n  };\n\n  function range(interpolate) {\n    return function(_) {\n      var r0, r1, r2;\n      return arguments.length ? ([r0, r1, r2] = _, interpolator = Object(d3_interpolate__WEBPACK_IMPORTED_MODULE_0__[\"piecewise\"])(interpolate, [r0, r1, r2]), scale) : [interpolator(0), interpolator(0.5), interpolator(1)];\n    };\n  }\n\n  scale.range = range(d3_interpolate__WEBPACK_IMPORTED_MODULE_0__[\"interpolate\"]);\n\n  scale.rangeRound = range(d3_interpolate__WEBPACK_IMPORTED_MODULE_0__[\"interpolateRound\"]);\n\n  scale.unknown = function(_) {\n    return arguments.length ? (unknown = _, scale) : unknown;\n  };\n\n  return function(t) {\n    transform = t, t0 = t(x0), t1 = t(x1), t2 = t(x2), k10 = t0 === t1 ? 0 : 0.5 / (t1 - t0), k21 = t1 === t2 ? 0 : 0.5 / (t2 - t1), s = t1 < t0 ? -1 : 1;\n    return scale;\n  };\n}\n\nfunction diverging() {\n  var scale = Object(_linear_js__WEBPACK_IMPORTED_MODULE_3__[\"linearish\"])(transformer()(_continuous_js__WEBPACK_IMPORTED_MODULE_1__[\"identity\"]));\n\n  scale.copy = function() {\n    return Object(_sequential_js__WEBPACK_IMPORTED_MODULE_5__[\"copy\"])(scale, diverging());\n  };\n\n  return _init_js__WEBPACK_IMPORTED_MODULE_2__[\"initInterpolator\"].apply(scale, arguments);\n}\n\nfunction divergingLog() {\n  var scale = Object(_log_js__WEBPACK_IMPORTED_MODULE_4__[\"loggish\"])(transformer()).domain([0.1, 1, 10]);\n\n  scale.copy = function() {\n    return Object(_sequential_js__WEBPACK_IMPORTED_MODULE_5__[\"copy\"])(scale, divergingLog()).base(scale.base());\n  };\n\n  return _init_js__WEBPACK_IMPORTED_MODULE_2__[\"initInterpolator\"].apply(scale, arguments);\n}\n\nfunction divergingSymlog() {\n  var scale = Object(_symlog_js__WEBPACK_IMPORTED_MODULE_6__[\"symlogish\"])(transformer());\n\n  scale.copy = function() {\n    return Object(_sequential_js__WEBPACK_IMPORTED_MODULE_5__[\"copy\"])(scale, divergingSymlog()).constant(scale.constant());\n  };\n\n  return _init_js__WEBPACK_IMPORTED_MODULE_2__[\"initInterpolator\"].apply(scale, arguments);\n}\n\nfunction divergingPow() {\n  var scale = Object(_pow_js__WEBPACK_IMPORTED_MODULE_7__[\"powish\"])(transformer());\n\n  scale.copy = function() {\n    return Object(_sequential_js__WEBPACK_IMPORTED_MODULE_5__[\"copy\"])(scale, divergingPow()).exponent(scale.exponent());\n  };\n\n  return _init_js__WEBPACK_IMPORTED_MODULE_2__[\"initInterpolator\"].apply(scale, arguments);\n}\n\nfunction divergingSqrt() {\n  return divergingPow.apply(null, arguments).exponent(0.5);\n}\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,[encoded data, 5152 characters]\n//# sourceURL=webpack-internal:///./node_modules/vega-functions/node_modules/d3-scale/src/diverging.js\n");

/***/ }),

/***/ "./node_modules/vega-functions/node_modules/d3-scale/src/identity.js":
/*!***************************************************************************!*\
  !*** ./node_modules/vega-functions/node_modules/d3-scale/src/identity.js ***!
  \***************************************************************************/
/*! exports provided: default */
/***/ (function(module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"default\", function() { return identity; });\n/* harmony import */ var _linear_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./linear.js */ \"./node_modules/vega-functions/node_modules/d3-scale/src/linear.js\");\n/* harmony import */ var _number_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./number.js */ \"./node_modules/vega-functions/node_modules/d3-scale/src/number.js\");\n\n\n\nfunction identity(domain) {\n  var unknown;\n\n  function scale(x) {\n    return x == null || isNaN(x = +x) ? unknown : x;\n  }\n\n  scale.invert = scale;\n\n  scale.domain = scale.range = function(_) {\n    return arguments.length ? (domain = Array.from(_, _number_js__WEBPACK_IMPORTED_MODULE_1__[\"default\"]), scale) : domain.slice();\n  };\n\n  scale.unknown = function(_) {\n    return arguments.length ? (unknown = _, scale) : unknown;\n  };\n\n  scale.copy = function() {\n    return identity(domain).unknown(unknown);\n  };\n\n  domain = arguments.length ? Array.from(domain, _number_js__WEBPACK_IMPORTED_MODULE_1__[\"default\"]) : [0, 1];\n\n  return Object(_linear_js__WEBPACK_IMPORTED_MODULE_0__[\"linearish\"])(scale);\n}\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvdmVnYS1mdW5jdGlvbnMvbm9kZV9tb2R1bGVzL2QzLXNjYWxlL3NyYy9pZGVudGl0eS5qcy5qcyIsInNvdXJjZXMiOlsid2VicGFjazovLy8uL25vZGVfbW9kdWxlcy92ZWdhLWZ1bmN0aW9ucy9ub2RlX21vZHVsZXMvZDMtc2NhbGUvc3JjL2lkZW50aXR5LmpzPzg3MWQiXSwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtsaW5lYXJpc2h9IGZyb20gXCIuL2xpbmVhci5qc1wiO1xuaW1wb3J0IG51bWJlciBmcm9tIFwiLi9udW1iZXIuanNcIjtcblxuZXhwb3J0IGRlZmF1bHQgZnVuY3Rpb24gaWRlbnRpdHkoZG9tYWluKSB7XG4gIHZhciB1bmtub3duO1xuXG4gIGZ1bmN0aW9uIHNjYWxlKHgpIHtcbiAgICByZXR1cm4geCA9PSBudWxsIHx8IGlzTmFOKHggPSAreCkgPyB1bmtub3duIDogeDtcbiAgfVxuXG4gIHNjYWxlLmludmVydCA9IHNjYWxlO1xuXG4gIHNjYWxlLmRvbWFpbiA9IHNjYWxlLnJhbmdlID0gZnVuY3Rpb24oXykge1xuICAgIHJldHVybiBhcmd1bWVudHMubGVuZ3RoID8gKGRvbWFpbiA9IEFycmF5LmZyb20oXywgbnVtYmVyKSwgc2NhbGUpIDogZG9tYWluLnNsaWNlKCk7XG4gIH07XG5cbiAgc2NhbGUudW5rbm93biA9IGZ1bmN0aW9uKF8pIHtcbiAgICByZXR1cm4gYXJndW1lbnRzLmxlbmd0aCA/ICh1bmtub3duID0gXywgc2NhbGUpIDogdW5rbm93bjtcbiAgfTtcblxuICBzY2FsZS5jb3B5ID0gZnVuY3Rpb24oKSB7XG4gICAgcmV0dXJuIGlkZW50aXR5KGRvbWFpbikudW5rbm93bih1bmtub3duKTtcbiAgfTtcblxuICBkb21haW4gPSBhcmd1bWVudHMubGVuZ3RoID8gQXJyYXkuZnJvbShkb21haW4sIG51bWJlcikgOiBbMCwgMV07XG5cbiAgcmV0dXJuIGxpbmVhcmlzaChzY2FsZSk7XG59XG4iXSwibWFwcGluZ3MiOiJBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7Iiwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///./node_modules/vega-functions/node_modules/d3-scale/src/identity.js\n");

/***/ }),

/***/ "./node_modules/vega-functions/node_modules/d3-scale/src/index.js":
/*!************************************************************************!*\
  !*** ./node_modules/vega-functions/node_modules/d3-scale/src/index.js ***!
  \************************************************************************/
/*! exports provided: scaleBand, scalePoint, scaleIdentity, scaleLinear, scaleLog, scaleSymlog, scaleOrdinal, scaleImplicit, scalePow, scaleSqrt, scaleRadial, scaleQuantile, scaleQuantize, scaleThreshold, scaleTime, scaleUtc, scaleSequential, scaleSequentialLog, scaleSequentialPow, scaleSequentialSqrt, scaleSequentialSymlog, scaleSequentialQuantile, scaleDiverging, scaleDivergingLog, scaleDivergingPow, scaleDivergingSqrt, scaleDivergingSymlog, tickFormat */
/***/ (function(module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _band_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./band.js */ \"./node_modules/vega-functions/node_modules/d3-scale/src/band.js\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"scaleBand\", function() { return _band_js__WEBPACK_IMPORTED_MODULE_0__[\"default\"]; });\n\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"scalePoint\", function() { return _band_js__WEBPACK_IMPORTED_MODULE_0__[\"point\"]; });\n\n/* harmony import */ var _identity_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./identity.js */ \"./node_modules/vega-functions/node_modules/d3-scale/src/identity.js\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"scaleIdentity\", function() { return _identity_js__WEBPACK_IMPORTED_MODULE_1__[\"default\"]; });\n\n/* harmony import */ var _linear_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./linear.js */ \"./node_modules/vega-functions/node_modules/d3-scale/src/linear.js\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"scaleLinear\", function() { return _linear_js__WEBPACK_IMPORTED_MODULE_2__[\"default\"]; });\n\n/* harmony import */ var _log_js__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ./log.js */ \"./node_modules/vega-functions/node_modules/d3-scale/src/log.js\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"scaleLog\", function() { return _log_js__WEBPACK_IMPORTED_MODULE_3__[\"default\"]; });\n\n/* harmony import */ var _symlog_js__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ./symlog.js */ \"./node_modules/vega-functions/node_modules/d3-scale/src/symlog.js\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"scaleSymlog\", function() { return _symlog_js__WEBPACK_IMPORTED_MODULE_4__[\"default\"]; });\n\n/* harmony import */ var _ordinal_js__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! ./ordinal.js */ \"./node_modules/vega-functions/node_modules/d3-scale/src/ordinal.js\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"scaleOrdinal\", function() { return _ordinal_js__WEBPACK_IMPORTED_MODULE_5__[\"default\"]; });\n\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"scaleImplicit\", function() { return _ordinal_js__WEBPACK_IMPORTED_MODULE_5__[\"implicit\"]; });\n\n/* harmony import */ var _pow_js__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! ./pow.js */ \"./node_modules/vega-functions/node_modules/d3-scale/src/pow.js\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"scalePow\", function() { return _pow_js__WEBPACK_IMPORTED_MODULE_6__[\"default\"]; });\n\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"scaleSqrt\", function() { return _pow_js__WEBPACK_IMPORTED_MODULE_6__[\"sqrt\"]; });\n\n/* harmony import */ var _radial_js__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! ./radial.js */ \"./node_modules/vega-functions/node_modules/d3-scale/src/radial.js\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"scaleRadial\", function() { return _radial_js__WEBPACK_IMPORTED_MODULE_7__[\"default\"]; });\n\n/* harmony import */ var _quantile_js__WEBPACK_IMPORTED_MODULE_8__ = __webpack_require__(/*! ./quantile.js */ \"./node_modules/vega-functions/node_modules/d3-scale/src/quantile.js\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"scaleQuantile\", function() { return _quantile_js__WEBPACK_IMPORTED_MODULE_8__[\"default\"]; });\n\n/* harmony import */ var _quantize_js__WEBPACK_IMPORTED_MODULE_9__ = __webpack_require__(/*! ./quantize.js */ \"./node_modules/vega-functions/node_modules/d3-scale/src/quantize.js\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"scaleQuantize\", function() { return _quantize_js__WEBPACK_IMPORTED_MODULE_9__[\"default\"]; });\n\n/* harmony import */ var _threshold_js__WEBPACK_IMPORTED_MODULE_10__ = __webpack_require__(/*! ./threshold.js */ \"./node_modules/vega-functions/node_modules/d3-scale/src/threshold.js\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"scaleThreshold\", function() { return _threshold_js__WEBPACK_IMPORTED_MODULE_10__[\"default\"]; });\n\n/* harmony import */ var _time_js__WEBPACK_IMPORTED_MODULE_11__ = __webpack_require__(/*! ./time.js */ \"./node_modules/vega-functions/node_modules/d3-scale/src/time.js\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"scaleTime\", function() { return _time_js__WEBPACK_IMPORTED_MODULE_11__[\"default\"]; });\n\n/* harmony import */ var _utcTime_js__WEBPACK_IMPORTED_MODULE_12__ = __webpack_require__(/*! ./utcTime.js */ \"./node_modules/vega-functions/node_modules/d3-scale/src/utcTime.js\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"scaleUtc\", function() { return _utcTime_js__WEBPACK_IMPORTED_MODULE_12__[\"default\"]; });\n\n/* harmony import */ var _sequential_js__WEBPACK_IMPORTED_MODULE_13__ = __webpack_require__(/*! ./sequential.js */ \"./node_modules/vega-functions/node_modules/d3-scale/src/sequential.js\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"scaleSequential\", function() { return _sequential_js__WEBPACK_IMPORTED_MODULE_13__[\"default\"]; });\n\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"scaleSequentialLog\", function() { return _sequential_js__WEBPACK_IMPORTED_MODULE_13__[\"sequentialLog\"]; });\n\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"scaleSequentialPow\", function() { return _sequential_js__WEBPACK_IMPORTED_MODULE_13__[\"sequentialPow\"]; });\n\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"scaleSequentialSqrt\", function() { return _sequential_js__WEBPACK_IMPORTED_MODULE_13__[\"sequentialSqrt\"]; });\n\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"scaleSequentialSymlog\", function() { return _sequential_js__WEBPACK_IMPORTED_MODULE_13__[\"sequentialSymlog\"]; });\n\n/* harmony import */ var _sequentialQuantile_js__WEBPACK_IMPORTED_MODULE_14__ = __webpack_require__(/*! ./sequentialQuantile.js */ \"./node_modules/vega-functions/node_modules/d3-scale/src/sequentialQuantile.js\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"scaleSequentialQuantile\", function() { return _sequentialQuantile_js__WEBPACK_IMPORTED_MODULE_14__[\"default\"]; });\n\n/* harmony import */ var _diverging_js__WEBPACK_IMPORTED_MODULE_15__ = __webpack_require__(/*! ./diverging.js */ \"./node_modules/vega-functions/node_modules/d3-scale/src/diverging.js\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"scaleDiverging\", function() { return _diverging_js__WEBPACK_IMPORTED_MODULE_15__[\"default\"]; });\n\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"scaleDivergingLog\", function() { return _diverging_js__WEBPACK_IMPORTED_MODULE_15__[\"divergingLog\"]; });\n\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"scaleDivergingPow\", function() { return _diverging_js__WEBPACK_IMPORTED_MODULE_15__[\"divergingPow\"]; });\n\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"scaleDivergingSqrt\", function() { return _diverging_js__WEBPACK_IMPORTED_MODULE_15__[\"divergingSqrt\"]; });\n\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"scaleDivergingSymlog\", function() { return _diverging_js__WEBPACK_IMPORTED_MODULE_15__[\"divergingSymlog\"]; });\n\n/* harmony import */ var _tickFormat_js__WEBPACK_IMPORTED_MODULE_16__ = __webpack_require__(/*! ./tickFormat.js */ \"./node_modules/vega-functions/node_modules/d3-scale/src/tickFormat.js\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"tickFormat\", function() { return _tickFormat_js__WEBPACK_IMPORTED_MODULE_16__[\"default\"]; });\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvdmVnYS1mdW5jdGlvbnMvbm9kZV9tb2R1bGVzL2QzLXNjYWxlL3NyYy9pbmRleC5qcy5qcyIsInNvdXJjZXMiOlsid2VicGFjazovLy8uL25vZGVfbW9kdWxlcy92ZWdhLWZ1bmN0aW9ucy9ub2RlX21vZHVsZXMvZDMtc2NhbGUvc3JjL2luZGV4LmpzP2ZjNWEiXSwic291cmNlc0NvbnRlbnQiOlsiZXhwb3J0IHtcbiAgZGVmYXVsdCBhcyBzY2FsZUJhbmQsXG4gIHBvaW50IGFzIHNjYWxlUG9pbnRcbn0gZnJvbSBcIi4vYmFuZC5qc1wiO1xuXG5leHBvcnQge1xuICBkZWZhdWx0IGFzIHNjYWxlSWRlbnRpdHlcbn0gZnJvbSBcIi4vaWRlbnRpdHkuanNcIjtcblxuZXhwb3J0IHtcbiAgZGVmYXVsdCBhcyBzY2FsZUxpbmVhclxufSBmcm9tIFwiLi9saW5lYXIuanNcIjtcblxuZXhwb3J0IHtcbiAgZGVmYXVsdCBhcyBzY2FsZUxvZ1xufSBmcm9tIFwiLi9sb2cuanNcIjtcblxuZXhwb3J0IHtcbiAgZGVmYXVsdCBhcyBzY2FsZVN5bWxvZ1xufSBmcm9tIFwiLi9zeW1sb2cuanNcIjtcblxuZXhwb3J0IHtcbiAgZGVmYXVsdCBhcyBzY2FsZU9yZGluYWwsXG4gIGltcGxpY2l0IGFzIHNjYWxlSW1wbGljaXRcbn0gZnJvbSBcIi4vb3JkaW5hbC5qc1wiO1xuXG5leHBvcnQge1xuICBkZWZhdWx0IGFzIHNjYWxlUG93LFxuICBzcXJ0IGFzIHNjYWxlU3FydFxufSBmcm9tIFwiLi9wb3cuanNcIjtcblxuZXhwb3J0IHtcbiAgZGVmYXVsdCBhcyBzY2FsZVJhZGlhbFxufSBmcm9tIFwiLi9yYWRpYWwuanNcIjtcblxuZXhwb3J0IHtcbiAgZGVmYXVsdCBhcyBzY2FsZVF1YW50aWxlXG59IGZyb20gXCIuL3F1YW50aWxlLmpzXCI7XG5cbmV4cG9ydCB7XG4gIGRlZmF1bHQgYXMgc2NhbGVRdWFudGl6ZVxufSBmcm9tIFwiLi9xdWFudGl6ZS5qc1wiO1xuXG5leHBvcnQge1xuICBkZWZhdWx0IGFzIHNjYWxlVGhyZXNob2xkXG59IGZyb20gXCIuL3RocmVzaG9sZC5qc1wiO1xuXG5leHBvcnQge1xuICBkZWZhdWx0IGFzIHNjYWxlVGltZVxufSBmcm9tIFwiLi90aW1lLmpzXCI7XG5cbmV4cG9ydCB7XG4gIGRlZmF1bHQgYXMgc2NhbGVVdGNcbn0gZnJvbSBcIi4vdXRjVGltZS5qc1wiO1xuXG5leHBvcnQge1xuICBkZWZhdWx0IGFzIHNjYWxlU2VxdWVudGlhbCxcbiAgc2VxdWVudGlhbExvZyBhcyBzY2FsZVNlcXVlbnRpYWxMb2csXG4gIHNlcXVlbnRpYWxQb3cgYXMgc2NhbGVTZXF1ZW50aWFsUG93LFxuICBzZXF1ZW50aWFsU3FydCBhcyBzY2FsZVNlcXVlbnRpYWxTcXJ0LFxuICBzZXF1ZW50aWFsU3ltbG9nIGFzIHNjYWxlU2VxdWVudGlhbFN5bWxvZ1xufSBmcm9tIFwiLi9zZXF1ZW50aWFsLmpzXCI7XG5cbmV4cG9ydCB7XG4gIGRlZmF1bHQgYXMgc2NhbGVTZXF1ZW50aWFsUXVhbnRpbGVcbn0gZnJvbSBcIi4vc2VxdWVudGlhbFF1YW50aWxlLmpzXCI7XG5cbmV4cG9ydCB7XG4gIGRlZmF1bHQgYXMgc2NhbGVEaXZlcmdpbmcsXG4gIGRpdmVyZ2luZ0xvZyBhcyBzY2FsZURpdmVyZ2luZ0xvZyxcbiAgZGl2ZXJnaW5nUG93IGFzIHNjYWxlRGl2ZXJnaW5nUG93LFxuICBkaXZlcmdpbmdTcXJ0IGFzIHNjYWxlRGl2ZXJnaW5nU3FydCxcbiAgZGl2ZXJnaW5nU3ltbG9nIGFzIHNjYWxlRGl2ZXJnaW5nU3ltbG9nXG59IGZyb20gXCIuL2RpdmVyZ2luZy5qc1wiO1xuXG5leHBvcnQge1xuICBkZWZhdWx0IGFzIHRpY2tGb3JtYXRcbn0gZnJvbSBcIi4vdGlja0Zvcm1hdC5qc1wiO1xuIl0sIm1hcHBpbmdzIjoiQUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBR0E7QUFDQTtBQUdBO0FBQ0E7QUFHQTtBQUNBO0FBR0E7QUFDQTtBQUdBO0FBQ0E7QUFJQTtBQUNBO0FBSUE7QUFDQTtBQUdBO0FBQ0E7QUFHQTtBQUNBO0FBR0E7QUFDQTtBQUdBO0FBQ0E7QUFHQTtBQUNBO0FBR0E7QUFDQTtBQU9BO0FBQ0E7QUFHQTtBQUNBO0FBT0E7QUFDQTtBQUdBOyIsInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///./node_modules/vega-functions/node_modules/d3-scale/src/index.js\n");

/***/ }),

/***/ "./node_modules/vega-functions/node_modules/d3-scale/src/init.js":
/*!***********************************************************************!*\
  !*** ./node_modules/vega-functions/node_modules/d3-scale/src/init.js ***!
  \***********************************************************************/
/*! exports provided: initRange, initInterpolator */
/***/ (function(module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"initRange\", function() { return initRange; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"initInterpolator\", function() { return initInterpolator; });\nfunction initRange(domain, range) {\n  switch (arguments.length) {\n    case 0: break;\n    case 1: this.range(domain); break;\n    default: this.range(range).domain(domain); break;\n  }\n  return this;\n}\n\nfunction initInterpolator(domain, interpolator) {\n  switch (arguments.length) {\n    case 0: break;\n    case 1: {\n      if (typeof domain === \"function\") this.interpolator(domain);\n      else this.range(domain);\n      break;\n    }\n    default: {\n      this.domain(domain);\n      if (typeof interpolator === \"function\") this.interpolator(interpolator);\n      else this.range(interpolator);\n      break;\n    }\n  }\n  return this;\n}\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvdmVnYS1mdW5jdGlvbnMvbm9kZV9tb2R1bGVzL2QzLXNjYWxlL3NyYy9pbml0LmpzLmpzIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL3ZlZ2EtZnVuY3Rpb25zL25vZGVfbW9kdWxlcy9kMy1zY2FsZS9zcmMvaW5pdC5qcz82N2EyIl0sInNvdXJjZXNDb250ZW50IjpbImV4cG9ydCBmdW5jdGlvbiBpbml0UmFuZ2UoZG9tYWluLCByYW5nZSkge1xuICBzd2l0Y2ggKGFyZ3VtZW50cy5sZW5ndGgpIHtcbiAgICBjYXNlIDA6IGJyZWFrO1xuICAgIGNhc2UgMTogdGhpcy5yYW5nZShkb21haW4pOyBicmVhaztcbiAgICBkZWZhdWx0OiB0aGlzLnJhbmdlKHJhbmdlKS5kb21haW4oZG9tYWluKTsgYnJlYWs7XG4gIH1cbiAgcmV0dXJuIHRoaXM7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBpbml0SW50ZXJwb2xhdG9yKGRvbWFpbiwgaW50ZXJwb2xhdG9yKSB7XG4gIHN3aXRjaCAoYXJndW1lbnRzLmxlbmd0aCkge1xuICAgIGNhc2UgMDogYnJlYWs7XG4gICAgY2FzZSAxOiB7XG4gICAgICBpZiAodHlwZW9mIGRvbWFpbiA9PT0gXCJmdW5jdGlvblwiKSB0aGlzLmludGVycG9sYXRvcihkb21haW4pO1xuICAgICAgZWxzZSB0aGlzLnJhbmdlKGRvbWFpbik7XG4gICAgICBicmVhaztcbiAgICB9XG4gICAgZGVmYXVsdDoge1xuICAgICAgdGhpcy5kb21haW4oZG9tYWluKTtcbiAgICAgIGlmICh0eXBlb2YgaW50ZXJwb2xhdG9yID09PSBcImZ1bmN0aW9uXCIpIHRoaXMuaW50ZXJwb2xhdG9yKGludGVycG9sYXRvcik7XG4gICAgICBlbHNlIHRoaXMucmFuZ2UoaW50ZXJwb2xhdG9yKTtcbiAgICAgIGJyZWFrO1xuICAgIH1cbiAgfVxuICByZXR1cm4gdGhpcztcbn1cbiJdLCJtYXBwaW5ncyI6IkFBQUE7QUFBQTtBQUFBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTsiLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///./node_modules/vega-functions/node_modules/d3-scale/src/init.js\n");

/***/ }),

/***/ "./node_modules/vega-functions/node_modules/d3-scale/src/linear.js":
/*!*************************************************************************!*\
  !*** ./node_modules/vega-functions/node_modules/d3-scale/src/linear.js ***!
  \*************************************************************************/
/*! exports provided: linearish, default */
/***/ (function(module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"linearish\", function() { return linearish; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"default\", function() { return linear; });\n/* harmony import */ var d3_array__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! d3-array */ \"./node_modules/d3-array/src/index.js\");\n/* harmony import */ var _continuous_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./continuous.js */ \"./node_modules/vega-functions/node_modules/d3-scale/src/continuous.js\");\n/* harmony import */ var _init_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./init.js */ \"./node_modules/vega-functions/node_modules/d3-scale/src/init.js\");\n/* harmony import */ var _tickFormat_js__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ./tickFormat.js */ \"./node_modules/vega-functions/node_modules/d3-scale/src/tickFormat.js\");\n\n\n\n\n\nfunction linearish(scale) {\n  var domain = scale.domain;\n\n  scale.ticks = function(count) {\n    var d = domain();\n    return Object(d3_array__WEBPACK_IMPORTED_MODULE_0__[\"ticks\"])(d[0], d[d.length - 1], count == null ? 10 : count);\n  };\n\n  scale.tickFormat = function(count, specifier) {\n    var d = domain();\n    return Object(_tickFormat_js__WEBPACK_IMPORTED_MODULE_3__[\"default\"])(d[0], d[d.length - 1], count == null ? 10 : count, specifier);\n  };\n\n  scale.nice = function(count) {\n    if (count == null) count = 10;\n\n    var d = domain();\n    var i0 = 0;\n    var i1 = d.length - 1;\n    var start = d[i0];\n    var stop = d[i1];\n    var prestep;\n    var step;\n    var maxIter = 10;\n\n    if (stop < start) {\n      step = start, start = stop, stop = step;\n      step = i0, i0 = i1, i1 = step;\n    }\n    \n    while (maxIter-- > 0) {\n      step = Object(d3_array__WEBPACK_IMPORTED_MODULE_0__[\"tickIncrement\"])(start, stop, count);\n      if (step === prestep) {\n        d[i0] = start\n        d[i1] = stop\n        return domain(d);\n      } else if (step > 0) {\n        start = Math.floor(start / step) * step;\n        stop = Math.ceil(stop / step) * step;\n      } else if (step < 0) {\n        start = Math.ceil(start * step) / step;\n        stop = Math.floor(stop * step) / step;\n      } else {\n        break;\n      }\n      prestep = step;\n    }\n\n    return scale;\n  };\n\n  return scale;\n}\n\nfunction linear() {\n  var scale = Object(_continuous_js__WEBPACK_IMPORTED_MODULE_1__[\"default\"])();\n\n  scale.copy = function() {\n    return Object(_continuous_js__WEBPACK_IMPORTED_MODULE_1__[\"copy\"])(scale, linear());\n  };\n\n  _init_js__WEBPACK_IMPORTED_MODULE_2__[\"initRange\"].apply(scale, arguments);\n\n  return linearish(scale);\n}\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvdmVnYS1mdW5jdGlvbnMvbm9kZV9tb2R1bGVzL2QzLXNjYWxlL3NyYy9saW5lYXIuanMuanMiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvdmVnYS1mdW5jdGlvbnMvbm9kZV9tb2R1bGVzL2QzLXNjYWxlL3NyYy9saW5lYXIuanM/M2UxMyJdLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge3RpY2tzLCB0aWNrSW5jcmVtZW50fSBmcm9tIFwiZDMtYXJyYXlcIjtcbmltcG9ydCBjb250aW51b3VzLCB7Y29weX0gZnJvbSBcIi4vY29udGludW91cy5qc1wiO1xuaW1wb3J0IHtpbml0UmFuZ2V9IGZyb20gXCIuL2luaXQuanNcIjtcbmltcG9ydCB0aWNrRm9ybWF0IGZyb20gXCIuL3RpY2tGb3JtYXQuanNcIjtcblxuZXhwb3J0IGZ1bmN0aW9uIGxpbmVhcmlzaChzY2FsZSkge1xuICB2YXIgZG9tYWluID0gc2NhbGUuZG9tYWluO1xuXG4gIHNjYWxlLnRpY2tzID0gZnVuY3Rpb24oY291bnQpIHtcbiAgICB2YXIgZCA9IGRvbWFpbigpO1xuICAgIHJldHVybiB0aWNrcyhkWzBdLCBkW2QubGVuZ3RoIC0gMV0sIGNvdW50ID09IG51bGwgPyAxMCA6IGNvdW50KTtcbiAgfTtcblxuICBzY2FsZS50aWNrRm9ybWF0ID0gZnVuY3Rpb24oY291bnQsIHNwZWNpZmllcikge1xuICAgIHZhciBkID0gZG9tYWluKCk7XG4gICAgcmV0dXJuIHRpY2tGb3JtYXQoZFswXSwgZFtkLmxlbmd0aCAtIDFdLCBjb3VudCA9PSBudWxsID8gMTAgOiBjb3VudCwgc3BlY2lmaWVyKTtcbiAgfTtcblxuICBzY2FsZS5uaWNlID0gZnVuY3Rpb24oY291bnQpIHtcbiAgICBpZiAoY291bnQgPT0gbnVsbCkgY291bnQgPSAxMDtcblxuICAgIHZhciBkID0gZG9tYWluKCk7XG4gICAgdmFyIGkwID0gMDtcbiAgICB2YXIgaTEgPSBkLmxlbmd0aCAtIDE7XG4gICAgdmFyIHN0YXJ0ID0gZFtpMF07XG4gICAgdmFyIHN0b3AgPSBkW2kxXTtcbiAgICB2YXIgcHJlc3RlcDtcbiAgICB2YXIgc3RlcDtcbiAgICB2YXIgbWF4SXRlciA9IDEwO1xuXG4gICAgaWYgKHN0b3AgPCBzdGFydCkge1xuICAgICAgc3RlcCA9IHN0YXJ0LCBzdGFydCA9IHN0b3AsIHN0b3AgPSBzdGVwO1xuICAgICAgc3RlcCA9IGkwLCBpMCA9IGkxLCBpMSA9IHN0ZXA7XG4gICAgfVxuICAgIFxuICAgIHdoaWxlIChtYXhJdGVyLS0gPiAwKSB7XG4gICAgICBzdGVwID0gdGlja0luY3JlbWVudChzdGFydCwgc3RvcCwgY291bnQpO1xuICAgICAgaWYgKHN0ZXAgPT09IHByZXN0ZXApIHtcbiAgICAgICAgZFtpMF0gPSBzdGFydFxuICAgICAgICBkW2kxXSA9IHN0b3BcbiAgICAgICAgcmV0dXJuIGRvbWFpbihkKTtcbiAgICAgIH0gZWxzZSBpZiAoc3RlcCA+IDApIHtcbiAgICAgICAgc3RhcnQgPSBNYXRoLmZsb29yKHN0YXJ0IC8gc3RlcCkgKiBzdGVwO1xuICAgICAgICBzdG9wID0gTWF0aC5jZWlsKHN0b3AgLyBzdGVwKSAqIHN0ZXA7XG4gICAgICB9IGVsc2UgaWYgKHN0ZXAgPCAwKSB7XG4gICAgICAgIHN0YXJ0ID0gTWF0aC5jZWlsKHN0YXJ0ICogc3RlcCkgLyBzdGVwO1xuICAgICAgICBzdG9wID0gTWF0aC5mbG9vcihzdG9wICogc3RlcCkgLyBzdGVwO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgYnJlYWs7XG4gICAgICB9XG4gICAgICBwcmVzdGVwID0gc3RlcDtcbiAgICB9XG5cbiAgICByZXR1cm4gc2NhbGU7XG4gIH07XG5cbiAgcmV0dXJuIHNjYWxlO1xufVxuXG5leHBvcnQgZGVmYXVsdCBmdW5jdGlvbiBsaW5lYXIoKSB7XG4gIHZhciBzY2FsZSA9IGNvbnRpbnVvdXMoKTtcblxuICBzY2FsZS5jb3B5ID0gZnVuY3Rpb24oKSB7XG4gICAgcmV0dXJuIGNvcHkoc2NhbGUsIGxpbmVhcigpKTtcbiAgfTtcblxuICBpbml0UmFuZ2UuYXBwbHkoc2NhbGUsIGFyZ3VtZW50cyk7XG5cbiAgcmV0dXJuIGxpbmVhcmlzaChzY2FsZSk7XG59XG4iXSwibWFwcGluZ3MiOiJBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7Iiwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///./node_modules/vega-functions/node_modules/d3-scale/src/linear.js\n");

/***/ }),

/***/ "./node_modules/vega-functions/node_modules/d3-scale/src/log.js":
/*!**********************************************************************!*\
  !*** ./node_modules/vega-functions/node_modules/d3-scale/src/log.js ***!
  \**********************************************************************/
/*! exports provided: loggish, default */
/***/ (function(module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"loggish\", function() { return loggish; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"default\", function() { return log; });\n/* harmony import */ var d3_array__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! d3-array */ \"./node_modules/d3-array/src/index.js\");\n/* harmony import */ var d3_format__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! d3-format */ \"./node_modules/vega-functions/node_modules/d3-format/src/index.js\");\n/* harmony import */ var _nice_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./nice.js */ \"./node_modules/vega-functions/node_modules/d3-scale/src/nice.js\");\n/* harmony import */ var _continuous_js__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ./continuous.js */ \"./node_modules/vega-functions/node_modules/d3-scale/src/continuous.js\");\n/* harmony import */ var _init_js__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ./init.js */ \"./node_modules/vega-functions/node_modules/d3-scale/src/init.js\");\n\n\n\n\n\n\nfunction transformLog(x) {\n  return Math.log(x);\n}\n\nfunction transformExp(x) {\n  return Math.exp(x);\n}\n\nfunction transformLogn(x) {\n  return -Math.log(-x);\n}\n\nfunction transformExpn(x) {\n  return -Math.exp(-x);\n}\n\nfunction pow10(x) {\n  return isFinite(x) ? +(\"1e\" + x) : x < 0 ? 0 : x;\n}\n\nfunction powp(base) {\n  return base === 10 ? pow10\n      : base === Math.E ? Math.exp\n      : function(x) { return Math.pow(base, x); };\n}\n\nfunction logp(base) {\n  return base === Math.E ? Math.log\n      : base === 10 && Math.log10\n      || base === 2 && Math.log2\n      || (base = Math.log(base), function(x) { return Math.log(x) / base; });\n}\n\nfunction reflect(f) {\n  return function(x) {\n    return -f(-x);\n  };\n}\n\nfunction loggish(transform) {\n  var scale = transform(transformLog, transformExp),\n      domain = scale.domain,\n      base = 10,\n      logs,\n      pows;\n\n  function rescale() {\n    logs = logp(base), pows = powp(base);\n    if (domain()[0] < 0) {\n      logs = reflect(logs), pows = reflect(pows);\n      transform(transformLogn, transformExpn);\n    } else {\n      transform(transformLog, transformExp);\n    }\n    return scale;\n  }\n\n  scale.base = function(_) {\n    return arguments.length ? (base = +_, rescale()) : base;\n  };\n\n  scale.domain = function(_) {\n    return arguments.length ? (domain(_), rescale()) : domain();\n  };\n\n  scale.ticks = function(count) {\n    var d = domain(),\n        u = d[0],\n        v = d[d.length - 1],\n        r;\n\n    if (r = v < u) i = u, u = v, v = i;\n\n    var i = logs(u),\n        j = logs(v),\n        p,\n        k,\n        t,\n        n = count == null ? 10 : +count,\n        z = [];\n\n    if (!(base % 1) && j - i < n) {\n      i = Math.floor(i), j = Math.ceil(j);\n      if (u > 0) for (; i <= j; ++i) {\n        for (k = 1, p = pows(i); k < base; ++k) {\n          t = p * k;\n          if (t < u) continue;\n          if (t > v) break;\n          z.push(t);\n        }\n      } else for (; i <= j; ++i) {\n        for (k = base - 1, p = pows(i); k >= 1; --k) {\n          t = p * k;\n          if (t < u) continue;\n          if (t > v) break;\n          z.push(t);\n        }\n      }\n      if (z.length * 2 < n) z = Object(d3_array__WEBPACK_IMPORTED_MODULE_0__[\"ticks\"])(u, v, n);\n    } else {\n      z = Object(d3_array__WEBPACK_IMPORTED_MODULE_0__[\"ticks\"])(i, j, Math.min(j - i, n)).map(pows);\n    }\n\n    return r ? z.reverse() : z;\n  };\n\n  scale.tickFormat = function(count, specifier) {\n    if (specifier == null) specifier = base === 10 ? \".0e\" : \",\";\n    if (typeof specifier !== \"function\") specifier = Object(d3_format__WEBPACK_IMPORTED_MODULE_1__[\"format\"])(specifier);\n    if (count === Infinity) return specifier;\n    if (count == null) count = 10;\n    var k = Math.max(1, base * count / scale.ticks().length); // TODO fast estimate?\n    return function(d) {\n      var i = d / pows(Math.round(logs(d)));\n      if (i * base < base - 0.5) i *= base;\n      return i <= k ? specifier(d) : \"\";\n    };\n  };\n\n  scale.nice = function() {\n    return domain(Object(_nice_js__WEBPACK_IMPORTED_MODULE_2__[\"default\"])(domain(), {\n      floor: function(x) { return pows(Math.floor(logs(x))); },\n      ceil: function(x) { return pows(Math.ceil(logs(x))); }\n    }));\n  };\n\n  return scale;\n}\n\nfunction log() {\n  var scale = loggish(Object(_continuous_js__WEBPACK_IMPORTED_MODULE_3__[\"transformer\"])()).domain([1, 10]);\n\n  scale.copy = function() {\n    return Object(_continuous_js__WEBPACK_IMPORTED_MODULE_3__[\"copy\"])(scale, log()).base(scale.base());\n  };\n\n  _init_js__WEBPACK_IMPORTED_MODULE_4__[\"initRange\"].apply(scale, arguments);\n\n  return scale;\n}\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,[encoded data, 6140 characters]\n//# sourceURL=webpack-internal:///./node_modules/vega-functions/node_modules/d3-scale/src/log.js\n");

/***/ }),

/***/ "./node_modules/vega-functions/node_modules/d3-scale/src/nice.js":
/*!***********************************************************************!*\
  !*** ./node_modules/vega-functions/node_modules/d3-scale/src/nice.js ***!
  \***********************************************************************/
/*! exports provided: default */
/***/ (function(module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"default\", function() { return nice; });\nfunction nice(domain, interval) {\n  domain = domain.slice();\n\n  var i0 = 0,\n      i1 = domain.length - 1,\n      x0 = domain[i0],\n      x1 = domain[i1],\n      t;\n\n  if (x1 < x0) {\n    t = i0, i0 = i1, i1 = t;\n    t = x0, x0 = x1, x1 = t;\n  }\n\n  domain[i0] = interval.floor(x0);\n  domain[i1] = interval.ceil(x1);\n  return domain;\n}\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvdmVnYS1mdW5jdGlvbnMvbm9kZV9tb2R1bGVzL2QzLXNjYWxlL3NyYy9uaWNlLmpzLmpzIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL3ZlZ2EtZnVuY3Rpb25zL25vZGVfbW9kdWxlcy9kMy1zY2FsZS9zcmMvbmljZS5qcz8wZjU5Il0sInNvdXJjZXNDb250ZW50IjpbImV4cG9ydCBkZWZhdWx0IGZ1bmN0aW9uIG5pY2UoZG9tYWluLCBpbnRlcnZhbCkge1xuICBkb21haW4gPSBkb21haW4uc2xpY2UoKTtcblxuICB2YXIgaTAgPSAwLFxuICAgICAgaTEgPSBkb21haW4ubGVuZ3RoIC0gMSxcbiAgICAgIHgwID0gZG9tYWluW2kwXSxcbiAgICAgIHgxID0gZG9tYWluW2kxXSxcbiAgICAgIHQ7XG5cbiAgaWYgKHgxIDwgeDApIHtcbiAgICB0ID0gaTAsIGkwID0gaTEsIGkxID0gdDtcbiAgICB0ID0geDAsIHgwID0geDEsIHgxID0gdDtcbiAgfVxuXG4gIGRvbWFpbltpMF0gPSBpbnRlcnZhbC5mbG9vcih4MCk7XG4gIGRvbWFpbltpMV0gPSBpbnRlcnZhbC5jZWlsKHgxKTtcbiAgcmV0dXJuIGRvbWFpbjtcbn1cbiJdLCJtYXBwaW5ncyI6IkFBQUE7QUFBQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTsiLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///./node_modules/vega-functions/node_modules/d3-scale/src/nice.js\n");

/***/ }),

/***/ "./node_modules/vega-functions/node_modules/d3-scale/src/number.js":
/*!*************************************************************************!*\
  !*** ./node_modules/vega-functions/node_modules/d3-scale/src/number.js ***!
  \*************************************************************************/
/*! exports provided: default */
/***/ (function(module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"default\", function() { return number; });\nfunction number(x) {\n  return +x;\n}\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvdmVnYS1mdW5jdGlvbnMvbm9kZV9tb2R1bGVzL2QzLXNjYWxlL3NyYy9udW1iZXIuanMuanMiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvdmVnYS1mdW5jdGlvbnMvbm9kZV9tb2R1bGVzL2QzLXNjYWxlL3NyYy9udW1iZXIuanM/YzdjZCJdLCJzb3VyY2VzQ29udGVudCI6WyJleHBvcnQgZGVmYXVsdCBmdW5jdGlvbiBudW1iZXIoeCkge1xuICByZXR1cm4gK3g7XG59XG4iXSwibWFwcGluZ3MiOiJBQUFBO0FBQUE7QUFBQTtBQUNBO0FBQ0E7Iiwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///./node_modules/vega-functions/node_modules/d3-scale/src/number.js\n");

/***/ }),

/***/ "./node_modules/vega-functions/node_modules/d3-scale/src/ordinal.js":
/*!**************************************************************************!*\
  !*** ./node_modules/vega-functions/node_modules/d3-scale/src/ordinal.js ***!
  \**************************************************************************/
/*! exports provided: implicit, default */
/***/ (function(module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"implicit\", function() { return implicit; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"default\", function() { return ordinal; });\n/* harmony import */ var _init_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./init.js */ \"./node_modules/vega-functions/node_modules/d3-scale/src/init.js\");\n\n\nconst implicit = Symbol(\"implicit\");\n\nfunction ordinal() {\n  var index = new Map(),\n      domain = [],\n      range = [],\n      unknown = implicit;\n\n  function scale(d) {\n    var key = d + \"\", i = index.get(key);\n    if (!i) {\n      if (unknown !== implicit) return unknown;\n      index.set(key, i = domain.push(d));\n    }\n    return range[(i - 1) % range.length];\n  }\n\n  scale.domain = function(_) {\n    if (!arguments.length) return domain.slice();\n    domain = [], index = new Map();\n    for (const value of _) {\n      const key = value + \"\";\n      if (index.has(key)) continue;\n      index.set(key, domain.push(value));\n    }\n    return scale;\n  };\n\n  scale.range = function(_) {\n    return arguments.length ? (range = Array.from(_), scale) : range.slice();\n  };\n\n  scale.unknown = function(_) {\n    return arguments.length ? (unknown = _, scale) : unknown;\n  };\n\n  scale.copy = function() {\n    return ordinal(domain, range).unknown(unknown);\n  };\n\n  _init_js__WEBPACK_IMPORTED_MODULE_0__[\"initRange\"].apply(scale, arguments);\n\n  return scale;\n}\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvdmVnYS1mdW5jdGlvbnMvbm9kZV9tb2R1bGVzL2QzLXNjYWxlL3NyYy9vcmRpbmFsLmpzLmpzIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL3ZlZ2EtZnVuY3Rpb25zL25vZGVfbW9kdWxlcy9kMy1zY2FsZS9zcmMvb3JkaW5hbC5qcz9iYmE5Il0sInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7aW5pdFJhbmdlfSBmcm9tIFwiLi9pbml0LmpzXCI7XG5cbmV4cG9ydCBjb25zdCBpbXBsaWNpdCA9IFN5bWJvbChcImltcGxpY2l0XCIpO1xuXG5leHBvcnQgZGVmYXVsdCBmdW5jdGlvbiBvcmRpbmFsKCkge1xuICB2YXIgaW5kZXggPSBuZXcgTWFwKCksXG4gICAgICBkb21haW4gPSBbXSxcbiAgICAgIHJhbmdlID0gW10sXG4gICAgICB1bmtub3duID0gaW1wbGljaXQ7XG5cbiAgZnVuY3Rpb24gc2NhbGUoZCkge1xuICAgIHZhciBrZXkgPSBkICsgXCJcIiwgaSA9IGluZGV4LmdldChrZXkpO1xuICAgIGlmICghaSkge1xuICAgICAgaWYgKHVua25vd24gIT09IGltcGxpY2l0KSByZXR1cm4gdW5rbm93bjtcbiAgICAgIGluZGV4LnNldChrZXksIGkgPSBkb21haW4ucHVzaChkKSk7XG4gICAgfVxuICAgIHJldHVybiByYW5nZVsoaSAtIDEpICUgcmFuZ2UubGVuZ3RoXTtcbiAgfVxuXG4gIHNjYWxlLmRvbWFpbiA9IGZ1bmN0aW9uKF8pIHtcbiAgICBpZiAoIWFyZ3VtZW50cy5sZW5ndGgpIHJldHVybiBkb21haW4uc2xpY2UoKTtcbiAgICBkb21haW4gPSBbXSwgaW5kZXggPSBuZXcgTWFwKCk7XG4gICAgZm9yIChjb25zdCB2YWx1ZSBvZiBfKSB7XG4gICAgICBjb25zdCBrZXkgPSB2YWx1ZSArIFwiXCI7XG4gICAgICBpZiAoaW5kZXguaGFzKGtleSkpIGNvbnRpbnVlO1xuICAgICAgaW5kZXguc2V0KGtleSwgZG9tYWluLnB1c2godmFsdWUpKTtcbiAgICB9XG4gICAgcmV0dXJuIHNjYWxlO1xuICB9O1xuXG4gIHNjYWxlLnJhbmdlID0gZnVuY3Rpb24oXykge1xuICAgIHJldHVybiBhcmd1bWVudHMubGVuZ3RoID8gKHJhbmdlID0gQXJyYXkuZnJvbShfKSwgc2NhbGUpIDogcmFuZ2Uuc2xpY2UoKTtcbiAgfTtcblxuICBzY2FsZS51bmtub3duID0gZnVuY3Rpb24oXykge1xuICAgIHJldHVybiBhcmd1bWVudHMubGVuZ3RoID8gKHVua25vd24gPSBfLCBzY2FsZSkgOiB1bmtub3duO1xuICB9O1xuXG4gIHNjYWxlLmNvcHkgPSBmdW5jdGlvbigpIHtcbiAgICByZXR1cm4gb3JkaW5hbChkb21haW4sIHJhbmdlKS51bmtub3duKHVua25vd24pO1xuICB9O1xuXG4gIGluaXRSYW5nZS5hcHBseShzY2FsZSwgYXJndW1lbnRzKTtcblxuICByZXR1cm4gc2NhbGU7XG59XG4iXSwibWFwcGluZ3MiOiJBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7Iiwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///./node_modules/vega-functions/node_modules/d3-scale/src/ordinal.js\n");

/***/ }),

/***/ "./node_modules/vega-functions/node_modules/d3-scale/src/pow.js":
/*!**********************************************************************!*\
  !*** ./node_modules/vega-functions/node_modules/d3-scale/src/pow.js ***!
  \**********************************************************************/
/*! exports provided: powish, default, sqrt */
/***/ (function(module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"powish\", function() { return powish; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"default\", function() { return pow; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"sqrt\", function() { return sqrt; });\n/* harmony import */ var _linear_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./linear.js */ \"./node_modules/vega-functions/node_modules/d3-scale/src/linear.js\");\n/* harmony import */ var _continuous_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./continuous.js */ \"./node_modules/vega-functions/node_modules/d3-scale/src/continuous.js\");\n/* harmony import */ var _init_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./init.js */ \"./node_modules/vega-functions/node_modules/d3-scale/src/init.js\");\n\n\n\n\nfunction transformPow(exponent) {\n  return function(x) {\n    return x < 0 ? -Math.pow(-x, exponent) : Math.pow(x, exponent);\n  };\n}\n\nfunction transformSqrt(x) {\n  return x < 0 ? -Math.sqrt(-x) : Math.sqrt(x);\n}\n\nfunction transformSquare(x) {\n  return x < 0 ? -x * x : x * x;\n}\n\nfunction powish(transform) {\n  var scale = transform(_continuous_js__WEBPACK_IMPORTED_MODULE_1__[\"identity\"], _continuous_js__WEBPACK_IMPORTED_MODULE_1__[\"identity\"]),\n      exponent = 1;\n\n  function rescale() {\n    return exponent === 1 ? transform(_continuous_js__WEBPACK_IMPORTED_MODULE_1__[\"identity\"], _continuous_js__WEBPACK_IMPORTED_MODULE_1__[\"identity\"])\n        : exponent === 0.5 ? transform(transformSqrt, transformSquare)\n        : transform(transformPow(exponent), transformPow(1 / exponent));\n  }\n\n  scale.exponent = function(_) {\n    return arguments.length ? (exponent = +_, rescale()) : exponent;\n  };\n\n  return Object(_linear_js__WEBPACK_IMPORTED_MODULE_0__[\"linearish\"])(scale);\n}\n\nfunction pow() {\n  var scale = powish(Object(_continuous_js__WEBPACK_IMPORTED_MODULE_1__[\"transformer\"])());\n\n  scale.copy = function() {\n    return Object(_continuous_js__WEBPACK_IMPORTED_MODULE_1__[\"copy\"])(scale, pow()).exponent(scale.exponent());\n  };\n\n  _init_js__WEBPACK_IMPORTED_MODULE_2__[\"initRange\"].apply(scale, arguments);\n\n  return scale;\n}\n\nfunction sqrt() {\n  return pow.apply(null, arguments).exponent(0.5);\n}\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvdmVnYS1mdW5jdGlvbnMvbm9kZV9tb2R1bGVzL2QzLXNjYWxlL3NyYy9wb3cuanMuanMiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvdmVnYS1mdW5jdGlvbnMvbm9kZV9tb2R1bGVzL2QzLXNjYWxlL3NyYy9wb3cuanM/NjM3YSJdLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge2xpbmVhcmlzaH0gZnJvbSBcIi4vbGluZWFyLmpzXCI7XG5pbXBvcnQge2NvcHksIGlkZW50aXR5LCB0cmFuc2Zvcm1lcn0gZnJvbSBcIi4vY29udGludW91cy5qc1wiO1xuaW1wb3J0IHtpbml0UmFuZ2V9IGZyb20gXCIuL2luaXQuanNcIjtcblxuZnVuY3Rpb24gdHJhbnNmb3JtUG93KGV4cG9uZW50KSB7XG4gIHJldHVybiBmdW5jdGlvbih4KSB7XG4gICAgcmV0dXJuIHggPCAwID8gLU1hdGgucG93KC14LCBleHBvbmVudCkgOiBNYXRoLnBvdyh4LCBleHBvbmVudCk7XG4gIH07XG59XG5cbmZ1bmN0aW9uIHRyYW5zZm9ybVNxcnQoeCkge1xuICByZXR1cm4geCA8IDAgPyAtTWF0aC5zcXJ0KC14KSA6IE1hdGguc3FydCh4KTtcbn1cblxuZnVuY3Rpb24gdHJhbnNmb3JtU3F1YXJlKHgpIHtcbiAgcmV0dXJuIHggPCAwID8gLXggKiB4IDogeCAqIHg7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBwb3dpc2godHJhbnNmb3JtKSB7XG4gIHZhciBzY2FsZSA9IHRyYW5zZm9ybShpZGVudGl0eSwgaWRlbnRpdHkpLFxuICAgICAgZXhwb25lbnQgPSAxO1xuXG4gIGZ1bmN0aW9uIHJlc2NhbGUoKSB7XG4gICAgcmV0dXJuIGV4cG9uZW50ID09PSAxID8gdHJhbnNmb3JtKGlkZW50aXR5LCBpZGVudGl0eSlcbiAgICAgICAgOiBleHBvbmVudCA9PT0gMC41ID8gdHJhbnNmb3JtKHRyYW5zZm9ybVNxcnQsIHRyYW5zZm9ybVNxdWFyZSlcbiAgICAgICAgOiB0cmFuc2Zvcm0odHJhbnNmb3JtUG93KGV4cG9uZW50KSwgdHJhbnNmb3JtUG93KDEgLyBleHBvbmVudCkpO1xuICB9XG5cbiAgc2NhbGUuZXhwb25lbnQgPSBmdW5jdGlvbihfKSB7XG4gICAgcmV0dXJuIGFyZ3VtZW50cy5sZW5ndGggPyAoZXhwb25lbnQgPSArXywgcmVzY2FsZSgpKSA6IGV4cG9uZW50O1xuICB9O1xuXG4gIHJldHVybiBsaW5lYXJpc2goc2NhbGUpO1xufVxuXG5leHBvcnQgZGVmYXVsdCBmdW5jdGlvbiBwb3coKSB7XG4gIHZhciBzY2FsZSA9IHBvd2lzaCh0cmFuc2Zvcm1lcigpKTtcblxuICBzY2FsZS5jb3B5ID0gZnVuY3Rpb24oKSB7XG4gICAgcmV0dXJuIGNvcHkoc2NhbGUsIHBvdygpKS5leHBvbmVudChzY2FsZS5leHBvbmVudCgpKTtcbiAgfTtcblxuICBpbml0UmFuZ2UuYXBwbHkoc2NhbGUsIGFyZ3VtZW50cyk7XG5cbiAgcmV0dXJuIHNjYWxlO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gc3FydCgpIHtcbiAgcmV0dXJuIHBvdy5hcHBseShudWxsLCBhcmd1bWVudHMpLmV4cG9uZW50KDAuNSk7XG59XG4iXSwibWFwcGluZ3MiOiJBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTsiLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///./node_modules/vega-functions/node_modules/d3-scale/src/pow.js\n");

/***/ }),

/***/ "./node_modules/vega-functions/node_modules/d3-scale/src/quantile.js":
/*!***************************************************************************!*\
  !*** ./node_modules/vega-functions/node_modules/d3-scale/src/quantile.js ***!
  \***************************************************************************/
/*! exports provided: default */
/***/ (function(module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"default\", function() { return quantile; });\n/* harmony import */ var d3_array__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! d3-array */ \"./node_modules/d3-array/src/index.js\");\n/* harmony import */ var _init_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./init.js */ \"./node_modules/vega-functions/node_modules/d3-scale/src/init.js\");\n\n\n\nfunction quantile() {\n  var domain = [],\n      range = [],\n      thresholds = [],\n      unknown;\n\n  function rescale() {\n    var i = 0, n = Math.max(1, range.length);\n    thresholds = new Array(n - 1);\n    while (++i < n) thresholds[i - 1] = Object(d3_array__WEBPACK_IMPORTED_MODULE_0__[\"quantileSorted\"])(domain, i / n);\n    return scale;\n  }\n\n  function scale(x) {\n    return x == null || isNaN(x = +x) ? unknown : range[Object(d3_array__WEBPACK_IMPORTED_MODULE_0__[\"bisect\"])(thresholds, x)];\n  }\n\n  scale.invertExtent = function(y) {\n    var i = range.indexOf(y);\n    return i < 0 ? [NaN, NaN] : [\n      i > 0 ? thresholds[i - 1] : domain[0],\n      i < thresholds.length ? thresholds[i] : domain[domain.length - 1]\n    ];\n  };\n\n  scale.domain = function(_) {\n    if (!arguments.length) return domain.slice();\n    domain = [];\n    for (let d of _) if (d != null && !isNaN(d = +d)) domain.push(d);\n    domain.sort(d3_array__WEBPACK_IMPORTED_MODULE_0__[\"ascending\"]);\n    return rescale();\n  };\n\n  scale.range = function(_) {\n    return arguments.length ? (range = Array.from(_), rescale()) : range.slice();\n  };\n\n  scale.unknown = function(_) {\n    return arguments.length ? (unknown = _, scale) : unknown;\n  };\n\n  scale.quantiles = function() {\n    return thresholds.slice();\n  };\n\n  scale.copy = function() {\n    return quantile()\n        .domain(domain)\n        .range(range)\n        .unknown(unknown);\n  };\n\n  return _init_js__WEBPACK_IMPORTED_MODULE_1__[\"initRange\"].apply(scale, arguments);\n}\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvdmVnYS1mdW5jdGlvbnMvbm9kZV9tb2R1bGVzL2QzLXNjYWxlL3NyYy9xdWFudGlsZS5qcy5qcyIsInNvdXJjZXMiOlsid2VicGFjazovLy8uL25vZGVfbW9kdWxlcy92ZWdhLWZ1bmN0aW9ucy9ub2RlX21vZHVsZXMvZDMtc2NhbGUvc3JjL3F1YW50aWxlLmpzPzZkZTIiXSwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHthc2NlbmRpbmcsIGJpc2VjdCwgcXVhbnRpbGVTb3J0ZWQgYXMgdGhyZXNob2xkfSBmcm9tIFwiZDMtYXJyYXlcIjtcbmltcG9ydCB7aW5pdFJhbmdlfSBmcm9tIFwiLi9pbml0LmpzXCI7XG5cbmV4cG9ydCBkZWZhdWx0IGZ1bmN0aW9uIHF1YW50aWxlKCkge1xuICB2YXIgZG9tYWluID0gW10sXG4gICAgICByYW5nZSA9IFtdLFxuICAgICAgdGhyZXNob2xkcyA9IFtdLFxuICAgICAgdW5rbm93bjtcblxuICBmdW5jdGlvbiByZXNjYWxlKCkge1xuICAgIHZhciBpID0gMCwgbiA9IE1hdGgubWF4KDEsIHJhbmdlLmxlbmd0aCk7XG4gICAgdGhyZXNob2xkcyA9IG5ldyBBcnJheShuIC0gMSk7XG4gICAgd2hpbGUgKCsraSA8IG4pIHRocmVzaG9sZHNbaSAtIDFdID0gdGhyZXNob2xkKGRvbWFpbiwgaSAvIG4pO1xuICAgIHJldHVybiBzY2FsZTtcbiAgfVxuXG4gIGZ1bmN0aW9uIHNjYWxlKHgpIHtcbiAgICByZXR1cm4geCA9PSBudWxsIHx8IGlzTmFOKHggPSAreCkgPyB1bmtub3duIDogcmFuZ2VbYmlzZWN0KHRocmVzaG9sZHMsIHgpXTtcbiAgfVxuXG4gIHNjYWxlLmludmVydEV4dGVudCA9IGZ1bmN0aW9uKHkpIHtcbiAgICB2YXIgaSA9IHJhbmdlLmluZGV4T2YoeSk7XG4gICAgcmV0dXJuIGkgPCAwID8gW05hTiwgTmFOXSA6IFtcbiAgICAgIGkgPiAwID8gdGhyZXNob2xkc1tpIC0gMV0gOiBkb21haW5bMF0sXG4gICAgICBpIDwgdGhyZXNob2xkcy5sZW5ndGggPyB0aHJlc2hvbGRzW2ldIDogZG9tYWluW2RvbWFpbi5sZW5ndGggLSAxXVxuICAgIF07XG4gIH07XG5cbiAgc2NhbGUuZG9tYWluID0gZnVuY3Rpb24oXykge1xuICAgIGlmICghYXJndW1lbnRzLmxlbmd0aCkgcmV0dXJuIGRvbWFpbi5zbGljZSgpO1xuICAgIGRvbWFpbiA9IFtdO1xuICAgIGZvciAobGV0IGQgb2YgXykgaWYgKGQgIT0gbnVsbCAmJiAhaXNOYU4oZCA9ICtkKSkgZG9tYWluLnB1c2goZCk7XG4gICAgZG9tYWluLnNvcnQoYXNjZW5kaW5nKTtcbiAgICByZXR1cm4gcmVzY2FsZSgpO1xuICB9O1xuXG4gIHNjYWxlLnJhbmdlID0gZnVuY3Rpb24oXykge1xuICAgIHJldHVybiBhcmd1bWVudHMubGVuZ3RoID8gKHJhbmdlID0gQXJyYXkuZnJvbShfKSwgcmVzY2FsZSgpKSA6IHJhbmdlLnNsaWNlKCk7XG4gIH07XG5cbiAgc2NhbGUudW5rbm93biA9IGZ1bmN0aW9uKF8pIHtcbiAgICByZXR1cm4gYXJndW1lbnRzLmxlbmd0aCA/ICh1bmtub3duID0gXywgc2NhbGUpIDogdW5rbm93bjtcbiAgfTtcblxuICBzY2FsZS5xdWFudGlsZXMgPSBmdW5jdGlvbigpIHtcbiAgICByZXR1cm4gdGhyZXNob2xkcy5zbGljZSgpO1xuICB9O1xuXG4gIHNjYWxlLmNvcHkgPSBmdW5jdGlvbigpIHtcbiAgICByZXR1cm4gcXVhbnRpbGUoKVxuICAgICAgICAuZG9tYWluKGRvbWFpbilcbiAgICAgICAgLnJhbmdlKHJhbmdlKVxuICAgICAgICAudW5rbm93bih1bmtub3duKTtcbiAgfTtcblxuICByZXR1cm4gaW5pdFJhbmdlLmFwcGx5KHNjYWxlLCBhcmd1bWVudHMpO1xufVxuIl0sIm1hcHBpbmdzIjoiQUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTsiLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///./node_modules/vega-functions/node_modules/d3-scale/src/quantile.js\n");

/***/ }),

/***/ "./node_modules/vega-functions/node_modules/d3-scale/src/quantize.js":
/*!***************************************************************************!*\
  !*** ./node_modules/vega-functions/node_modules/d3-scale/src/quantize.js ***!
  \***************************************************************************/
/*! exports provided: default */
/***/ (function(module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"default\", function() { return quantize; });\n/* harmony import */ var d3_array__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! d3-array */ \"./node_modules/d3-array/src/index.js\");\n/* harmony import */ var _linear_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./linear.js */ \"./node_modules/vega-functions/node_modules/d3-scale/src/linear.js\");\n/* harmony import */ var _init_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./init.js */ \"./node_modules/vega-functions/node_modules/d3-scale/src/init.js\");\n\n\n\n\nfunction quantize() {\n  var x0 = 0,\n      x1 = 1,\n      n = 1,\n      domain = [0.5],\n      range = [0, 1],\n      unknown;\n\n  function scale(x) {\n    return x != null && x <= x ? range[Object(d3_array__WEBPACK_IMPORTED_MODULE_0__[\"bisect\"])(domain, x, 0, n)] : unknown;\n  }\n\n  function rescale() {\n    var i = -1;\n    domain = new Array(n);\n    while (++i < n) domain[i] = ((i + 1) * x1 - (i - n) * x0) / (n + 1);\n    return scale;\n  }\n\n  scale.domain = function(_) {\n    return arguments.length ? ([x0, x1] = _, x0 = +x0, x1 = +x1, rescale()) : [x0, x1];\n  };\n\n  scale.range = function(_) {\n    return arguments.length ? (n = (range = Array.from(_)).length - 1, rescale()) : range.slice();\n  };\n\n  scale.invertExtent = function(y) {\n    var i = range.indexOf(y);\n    return i < 0 ? [NaN, NaN]\n        : i < 1 ? [x0, domain[0]]\n        : i >= n ? [domain[n - 1], x1]\n        : [domain[i - 1], domain[i]];\n  };\n\n  scale.unknown = function(_) {\n    return arguments.length ? (unknown = _, scale) : scale;\n  };\n\n  scale.thresholds = function() {\n    return domain.slice();\n  };\n\n  scale.copy = function() {\n    return quantize()\n        .domain([x0, x1])\n        .range(range)\n        .unknown(unknown);\n  };\n\n  return _init_js__WEBPACK_IMPORTED_MODULE_2__[\"initRange\"].apply(Object(_linear_js__WEBPACK_IMPORTED_MODULE_1__[\"linearish\"])(scale), arguments);\n}\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvdmVnYS1mdW5jdGlvbnMvbm9kZV9tb2R1bGVzL2QzLXNjYWxlL3NyYy9xdWFudGl6ZS5qcy5qcyIsInNvdXJjZXMiOlsid2VicGFjazovLy8uL25vZGVfbW9kdWxlcy92ZWdhLWZ1bmN0aW9ucy9ub2RlX21vZHVsZXMvZDMtc2NhbGUvc3JjL3F1YW50aXplLmpzP2NiZmIiXSwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtiaXNlY3R9IGZyb20gXCJkMy1hcnJheVwiO1xuaW1wb3J0IHtsaW5lYXJpc2h9IGZyb20gXCIuL2xpbmVhci5qc1wiO1xuaW1wb3J0IHtpbml0UmFuZ2V9IGZyb20gXCIuL2luaXQuanNcIjtcblxuZXhwb3J0IGRlZmF1bHQgZnVuY3Rpb24gcXVhbnRpemUoKSB7XG4gIHZhciB4MCA9IDAsXG4gICAgICB4MSA9IDEsXG4gICAgICBuID0gMSxcbiAgICAgIGRvbWFpbiA9IFswLjVdLFxuICAgICAgcmFuZ2UgPSBbMCwgMV0sXG4gICAgICB1bmtub3duO1xuXG4gIGZ1bmN0aW9uIHNjYWxlKHgpIHtcbiAgICByZXR1cm4geCAhPSBudWxsICYmIHggPD0geCA/IHJhbmdlW2Jpc2VjdChkb21haW4sIHgsIDAsIG4pXSA6IHVua25vd247XG4gIH1cblxuICBmdW5jdGlvbiByZXNjYWxlKCkge1xuICAgIHZhciBpID0gLTE7XG4gICAgZG9tYWluID0gbmV3IEFycmF5KG4pO1xuICAgIHdoaWxlICgrK2kgPCBuKSBkb21haW5baV0gPSAoKGkgKyAxKSAqIHgxIC0gKGkgLSBuKSAqIHgwKSAvIChuICsgMSk7XG4gICAgcmV0dXJuIHNjYWxlO1xuICB9XG5cbiAgc2NhbGUuZG9tYWluID0gZnVuY3Rpb24oXykge1xuICAgIHJldHVybiBhcmd1bWVudHMubGVuZ3RoID8gKFt4MCwgeDFdID0gXywgeDAgPSAreDAsIHgxID0gK3gxLCByZXNjYWxlKCkpIDogW3gwLCB4MV07XG4gIH07XG5cbiAgc2NhbGUucmFuZ2UgPSBmdW5jdGlvbihfKSB7XG4gICAgcmV0dXJuIGFyZ3VtZW50cy5sZW5ndGggPyAobiA9IChyYW5nZSA9IEFycmF5LmZyb20oXykpLmxlbmd0aCAtIDEsIHJlc2NhbGUoKSkgOiByYW5nZS5zbGljZSgpO1xuICB9O1xuXG4gIHNjYWxlLmludmVydEV4dGVudCA9IGZ1bmN0aW9uKHkpIHtcbiAgICB2YXIgaSA9IHJhbmdlLmluZGV4T2YoeSk7XG4gICAgcmV0dXJuIGkgPCAwID8gW05hTiwgTmFOXVxuICAgICAgICA6IGkgPCAxID8gW3gwLCBkb21haW5bMF1dXG4gICAgICAgIDogaSA+PSBuID8gW2RvbWFpbltuIC0gMV0sIHgxXVxuICAgICAgICA6IFtkb21haW5baSAtIDFdLCBkb21haW5baV1dO1xuICB9O1xuXG4gIHNjYWxlLnVua25vd24gPSBmdW5jdGlvbihfKSB7XG4gICAgcmV0dXJuIGFyZ3VtZW50cy5sZW5ndGggPyAodW5rbm93biA9IF8sIHNjYWxlKSA6IHNjYWxlO1xuICB9O1xuXG4gIHNjYWxlLnRocmVzaG9sZHMgPSBmdW5jdGlvbigpIHtcbiAgICByZXR1cm4gZG9tYWluLnNsaWNlKCk7XG4gIH07XG5cbiAgc2NhbGUuY29weSA9IGZ1bmN0aW9uKCkge1xuICAgIHJldHVybiBxdWFudGl6ZSgpXG4gICAgICAgIC5kb21haW4oW3gwLCB4MV0pXG4gICAgICAgIC5yYW5nZShyYW5nZSlcbiAgICAgICAgLnVua25vd24odW5rbm93bik7XG4gIH07XG5cbiAgcmV0dXJuIGluaXRSYW5nZS5hcHBseShsaW5lYXJpc2goc2NhbGUpLCBhcmd1bWVudHMpO1xufVxuIl0sIm1hcHBpbmdzIjoiQUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTsiLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///./node_modules/vega-functions/node_modules/d3-scale/src/quantize.js\n");

/***/ }),

/***/ "./node_modules/vega-functions/node_modules/d3-scale/src/radial.js":
/*!*************************************************************************!*\
  !*** ./node_modules/vega-functions/node_modules/d3-scale/src/radial.js ***!
  \*************************************************************************/
/*! exports provided: default */
/***/ (function(module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"default\", function() { return radial; });\n/* harmony import */ var _continuous_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./continuous.js */ \"./node_modules/vega-functions/node_modules/d3-scale/src/continuous.js\");\n/* harmony import */ var _init_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./init.js */ \"./node_modules/vega-functions/node_modules/d3-scale/src/init.js\");\n/* harmony import */ var _linear_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./linear.js */ \"./node_modules/vega-functions/node_modules/d3-scale/src/linear.js\");\n/* harmony import */ var _number_js__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ./number.js */ \"./node_modules/vega-functions/node_modules/d3-scale/src/number.js\");\n\n\n\n\n\nfunction square(x) {\n  return Math.sign(x) * x * x;\n}\n\nfunction unsquare(x) {\n  return Math.sign(x) * Math.sqrt(Math.abs(x));\n}\n\nfunction radial() {\n  var squared = Object(_continuous_js__WEBPACK_IMPORTED_MODULE_0__[\"default\"])(),\n      range = [0, 1],\n      round = false,\n      unknown;\n\n  function scale(x) {\n    var y = unsquare(squared(x));\n    return isNaN(y) ? unknown : round ? Math.round(y) : y;\n  }\n\n  scale.invert = function(y) {\n    return squared.invert(square(y));\n  };\n\n  scale.domain = function(_) {\n    return arguments.length ? (squared.domain(_), scale) : squared.domain();\n  };\n\n  scale.range = function(_) {\n    return arguments.length ? (squared.range((range = Array.from(_, _number_js__WEBPACK_IMPORTED_MODULE_3__[\"default\"])).map(square)), scale) : range.slice();\n  };\n\n  scale.rangeRound = function(_) {\n    return scale.range(_).round(true);\n  };\n\n  scale.round = function(_) {\n    return arguments.length ? (round = !!_, scale) : round;\n  };\n\n  scale.clamp = function(_) {\n    return arguments.length ? (squared.clamp(_), scale) : squared.clamp();\n  };\n\n  scale.unknown = function(_) {\n    return arguments.length ? (unknown = _, scale) : unknown;\n  };\n\n  scale.copy = function() {\n    return radial(squared.domain(), range)\n        .round(round)\n        .clamp(squared.clamp())\n        .unknown(unknown);\n  };\n\n  _init_js__WEBPACK_IMPORTED_MODULE_1__[\"initRange\"].apply(scale, arguments);\n\n  return Object(_linear_js__WEBPACK_IMPORTED_MODULE_2__[\"linearish\"])(scale);\n}\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvdmVnYS1mdW5jdGlvbnMvbm9kZV9tb2R1bGVzL2QzLXNjYWxlL3NyYy9yYWRpYWwuanMuanMiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvdmVnYS1mdW5jdGlvbnMvbm9kZV9tb2R1bGVzL2QzLXNjYWxlL3NyYy9yYWRpYWwuanM/MWYzNiJdLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgY29udGludW91cyBmcm9tIFwiLi9jb250aW51b3VzLmpzXCI7XG5pbXBvcnQge2luaXRSYW5nZX0gZnJvbSBcIi4vaW5pdC5qc1wiO1xuaW1wb3J0IHtsaW5lYXJpc2h9IGZyb20gXCIuL2xpbmVhci5qc1wiO1xuaW1wb3J0IG51bWJlciBmcm9tIFwiLi9udW1iZXIuanNcIjtcblxuZnVuY3Rpb24gc3F1YXJlKHgpIHtcbiAgcmV0dXJuIE1hdGguc2lnbih4KSAqIHggKiB4O1xufVxuXG5mdW5jdGlvbiB1bnNxdWFyZSh4KSB7XG4gIHJldHVybiBNYXRoLnNpZ24oeCkgKiBNYXRoLnNxcnQoTWF0aC5hYnMoeCkpO1xufVxuXG5leHBvcnQgZGVmYXVsdCBmdW5jdGlvbiByYWRpYWwoKSB7XG4gIHZhciBzcXVhcmVkID0gY29udGludW91cygpLFxuICAgICAgcmFuZ2UgPSBbMCwgMV0sXG4gICAgICByb3VuZCA9IGZhbHNlLFxuICAgICAgdW5rbm93bjtcblxuICBmdW5jdGlvbiBzY2FsZSh4KSB7XG4gICAgdmFyIHkgPSB1bnNxdWFyZShzcXVhcmVkKHgpKTtcbiAgICByZXR1cm4gaXNOYU4oeSkgPyB1bmtub3duIDogcm91bmQgPyBNYXRoLnJvdW5kKHkpIDogeTtcbiAgfVxuXG4gIHNjYWxlLmludmVydCA9IGZ1bmN0aW9uKHkpIHtcbiAgICByZXR1cm4gc3F1YXJlZC5pbnZlcnQoc3F1YXJlKHkpKTtcbiAgfTtcblxuICBzY2FsZS5kb21haW4gPSBmdW5jdGlvbihfKSB7XG4gICAgcmV0dXJuIGFyZ3VtZW50cy5sZW5ndGggPyAoc3F1YXJlZC5kb21haW4oXyksIHNjYWxlKSA6IHNxdWFyZWQuZG9tYWluKCk7XG4gIH07XG5cbiAgc2NhbGUucmFuZ2UgPSBmdW5jdGlvbihfKSB7XG4gICAgcmV0dXJuIGFyZ3VtZW50cy5sZW5ndGggPyAoc3F1YXJlZC5yYW5nZSgocmFuZ2UgPSBBcnJheS5mcm9tKF8sIG51bWJlcikpLm1hcChzcXVhcmUpKSwgc2NhbGUpIDogcmFuZ2Uuc2xpY2UoKTtcbiAgfTtcblxuICBzY2FsZS5yYW5nZVJvdW5kID0gZnVuY3Rpb24oXykge1xuICAgIHJldHVybiBzY2FsZS5yYW5nZShfKS5yb3VuZCh0cnVlKTtcbiAgfTtcblxuICBzY2FsZS5yb3VuZCA9IGZ1bmN0aW9uKF8pIHtcbiAgICByZXR1cm4gYXJndW1lbnRzLmxlbmd0aCA/IChyb3VuZCA9ICEhXywgc2NhbGUpIDogcm91bmQ7XG4gIH07XG5cbiAgc2NhbGUuY2xhbXAgPSBmdW5jdGlvbihfKSB7XG4gICAgcmV0dXJuIGFyZ3VtZW50cy5sZW5ndGggPyAoc3F1YXJlZC5jbGFtcChfKSwgc2NhbGUpIDogc3F1YXJlZC5jbGFtcCgpO1xuICB9O1xuXG4gIHNjYWxlLnVua25vd24gPSBmdW5jdGlvbihfKSB7XG4gICAgcmV0dXJuIGFyZ3VtZW50cy5sZW5ndGggPyAodW5rbm93biA9IF8sIHNjYWxlKSA6IHVua25vd247XG4gIH07XG5cbiAgc2NhbGUuY29weSA9IGZ1bmN0aW9uKCkge1xuICAgIHJldHVybiByYWRpYWwoc3F1YXJlZC5kb21haW4oKSwgcmFuZ2UpXG4gICAgICAgIC5yb3VuZChyb3VuZClcbiAgICAgICAgLmNsYW1wKHNxdWFyZWQuY2xhbXAoKSlcbiAgICAgICAgLnVua25vd24odW5rbm93bik7XG4gIH07XG5cbiAgaW5pdFJhbmdlLmFwcGx5KHNjYWxlLCBhcmd1bWVudHMpO1xuXG4gIHJldHVybiBsaW5lYXJpc2goc2NhbGUpO1xufVxuIl0sIm1hcHBpbmdzIjoiQUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7Iiwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///./node_modules/vega-functions/node_modules/d3-scale/src/radial.js\n");

/***/ }),

/***/ "./node_modules/vega-functions/node_modules/d3-scale/src/sequential.js":
/*!*****************************************************************************!*\
  !*** ./node_modules/vega-functions/node_modules/d3-scale/src/sequential.js ***!
  \*****************************************************************************/
/*! exports provided: copy, default, sequentialLog, sequentialSymlog, sequentialPow, sequentialSqrt */
/***/ (function(module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"copy\", function() { return copy; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"default\", function() { return sequential; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"sequentialLog\", function() { return sequentialLog; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"sequentialSymlog\", function() { return sequentialSymlog; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"sequentialPow\", function() { return sequentialPow; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"sequentialSqrt\", function() { return sequentialSqrt; });\n/* harmony import */ var d3_interpolate__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! d3-interpolate */ \"./node_modules/vega-functions/node_modules/d3-interpolate/src/index.js\");\n/* harmony import */ var _continuous_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./continuous.js */ \"./node_modules/vega-functions/node_modules/d3-scale/src/continuous.js\");\n/* harmony import */ var _init_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./init.js */ \"./node_modules/vega-functions/node_modules/d3-scale/src/init.js\");\n/* harmony import */ var _linear_js__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ./linear.js */ \"./node_modules/vega-functions/node_modules/d3-scale/src/linear.js\");\n/* harmony import */ var _log_js__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ./log.js */ \"./node_modules/vega-functions/node_modules/d3-scale/src/log.js\");\n/* harmony import */ var _symlog_js__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! ./symlog.js */ \"./node_modules/vega-functions/node_modules/d3-scale/src/symlog.js\");\n/* harmony import */ var _pow_js__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! ./pow.js */ \"./node_modules/vega-functions/node_modules/d3-scale/src/pow.js\");\n\n\n\n\n\n\n\n\nfunction transformer() {\n  var x0 = 0,\n      x1 = 1,\n      t0,\n      t1,\n      k10,\n      transform,\n      interpolator = _continuous_js__WEBPACK_IMPORTED_MODULE_1__[\"identity\"],\n      clamp = false,\n      unknown;\n\n  function scale(x) {\n    return x == null || isNaN(x = +x) ? unknown : interpolator(k10 === 0 ? 0.5 : (x = (transform(x) - t0) * k10, clamp ? Math.max(0, Math.min(1, x)) : x));\n  }\n\n  scale.domain = function(_) {\n    return arguments.length ? ([x0, x1] = _, t0 = transform(x0 = +x0), t1 = transform(x1 = +x1), k10 = t0 === t1 ? 0 : 1 / (t1 - t0), scale) : [x0, x1];\n  };\n\n  scale.clamp = function(_) {\n    return arguments.length ? (clamp = !!_, scale) : clamp;\n  };\n\n  scale.interpolator = function(_) {\n    return arguments.length ? (interpolator = _, scale) : interpolator;\n  };\n\n  function range(interpolate) {\n    return function(_) {\n      var r0, r1;\n      return arguments.length ? ([r0, r1] = _, interpolator = interpolate(r0, r1), scale) : [interpolator(0), interpolator(1)];\n    };\n  }\n\n  scale.range = range(d3_interpolate__WEBPACK_IMPORTED_MODULE_0__[\"interpolate\"]);\n\n  scale.rangeRound = range(d3_interpolate__WEBPACK_IMPORTED_MODULE_0__[\"interpolateRound\"]);\n\n  scale.unknown = function(_) {\n    return arguments.length ? (unknown = _, scale) : unknown;\n  };\n\n  return function(t) {\n    transform = t, t0 = t(x0), t1 = t(x1), k10 = t0 === t1 ? 0 : 1 / (t1 - t0);\n    return scale;\n  };\n}\n\nfunction copy(source, target) {\n  return target\n      .domain(source.domain())\n      .interpolator(source.interpolator())\n      .clamp(source.clamp())\n      .unknown(source.unknown());\n}\n\nfunction sequential() {\n  var scale = Object(_linear_js__WEBPACK_IMPORTED_MODULE_3__[\"linearish\"])(transformer()(_continuous_js__WEBPACK_IMPORTED_MODULE_1__[\"identity\"]));\n\n  scale.copy = function() {\n    return copy(scale, sequential());\n  };\n\n  return _init_js__WEBPACK_IMPORTED_MODULE_2__[\"initInterpolator\"].apply(scale, arguments);\n}\n\nfunction sequentialLog() {\n  var scale = Object(_log_js__WEBPACK_IMPORTED_MODULE_4__[\"loggish\"])(transformer()).domain([1, 10]);\n\n  scale.copy = function() {\n    return copy(scale, sequentialLog()).base(scale.base());\n  };\n\n  return _init_js__WEBPACK_IMPORTED_MODULE_2__[\"initInterpolator\"].apply(scale, arguments);\n}\n\nfunction sequentialSymlog() {\n  var scale = Object(_symlog_js__WEBPACK_IMPORTED_MODULE_5__[\"symlogish\"])(transformer());\n\n  scale.copy = function() {\n    return copy(scale, sequentialSymlog()).constant(scale.constant());\n  };\n\n  return _init_js__WEBPACK_IMPORTED_MODULE_2__[\"initInterpolator\"].apply(scale, arguments);\n}\n\nfunction sequentialPow() {\n  var scale = Object(_pow_js__WEBPACK_IMPORTED_MODULE_6__[\"powish\"])(transformer());\n\n  scale.copy = function() {\n    return copy(scale, sequentialPow()).exponent(scale.exponent());\n  };\n\n  return _init_js__WEBPACK_IMPORTED_MODULE_2__[\"initInterpolator\"].apply(scale, arguments);\n}\n\nfunction sequentialSqrt() {\n  return sequentialPow.apply(null, arguments).exponent(0.5);\n}\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,[encoded data, 5012 characters]\n//# sourceURL=webpack-internal:///./node_modules/vega-functions/node_modules/d3-scale/src/sequential.js\n");

/***/ }),

/***/ "./node_modules/vega-functions/node_modules/d3-scale/src/sequentialQuantile.js":
/*!*************************************************************************************!*\
  !*** ./node_modules/vega-functions/node_modules/d3-scale/src/sequentialQuantile.js ***!
  \*************************************************************************************/
/*! exports provided: default */
/***/ (function(module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"default\", function() { return sequentialQuantile; });\n/* harmony import */ var d3_array__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! d3-array */ \"./node_modules/d3-array/src/index.js\");\n/* harmony import */ var _continuous_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./continuous.js */ \"./node_modules/vega-functions/node_modules/d3-scale/src/continuous.js\");\n/* harmony import */ var _init_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./init.js */ \"./node_modules/vega-functions/node_modules/d3-scale/src/init.js\");\n\n\n\n\nfunction sequentialQuantile() {\n  var domain = [],\n      interpolator = _continuous_js__WEBPACK_IMPORTED_MODULE_1__[\"identity\"];\n\n  function scale(x) {\n    if (x != null && !isNaN(x = +x)) return interpolator((Object(d3_array__WEBPACK_IMPORTED_MODULE_0__[\"bisect\"])(domain, x, 1) - 1) / (domain.length - 1));\n  }\n\n  scale.domain = function(_) {\n    if (!arguments.length) return domain.slice();\n    domain = [];\n    for (let d of _) if (d != null && !isNaN(d = +d)) domain.push(d);\n    domain.sort(d3_array__WEBPACK_IMPORTED_MODULE_0__[\"ascending\"]);\n    return scale;\n  };\n\n  scale.interpolator = function(_) {\n    return arguments.length ? (interpolator = _, scale) : interpolator;\n  };\n\n  scale.range = function() {\n    return domain.map((d, i) => interpolator(i / (domain.length - 1)));\n  };\n\n  scale.quantiles = function(n) {\n    return Array.from({length: n + 1}, (_, i) => Object(d3_array__WEBPACK_IMPORTED_MODULE_0__[\"quantile\"])(domain, i / n));\n  };\n\n  scale.copy = function() {\n    return sequentialQuantile(interpolator).domain(domain);\n  };\n\n  return _init_js__WEBPACK_IMPORTED_MODULE_2__[\"initInterpolator\"].apply(scale, arguments);\n}\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvdmVnYS1mdW5jdGlvbnMvbm9kZV9tb2R1bGVzL2QzLXNjYWxlL3NyYy9zZXF1ZW50aWFsUXVhbnRpbGUuanMuanMiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvdmVnYS1mdW5jdGlvbnMvbm9kZV9tb2R1bGVzL2QzLXNjYWxlL3NyYy9zZXF1ZW50aWFsUXVhbnRpbGUuanM/MjQwYiJdLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge2FzY2VuZGluZywgYmlzZWN0LCBxdWFudGlsZX0gZnJvbSBcImQzLWFycmF5XCI7XG5pbXBvcnQge2lkZW50aXR5fSBmcm9tIFwiLi9jb250aW51b3VzLmpzXCI7XG5pbXBvcnQge2luaXRJbnRlcnBvbGF0b3J9IGZyb20gXCIuL2luaXQuanNcIjtcblxuZXhwb3J0IGRlZmF1bHQgZnVuY3Rpb24gc2VxdWVudGlhbFF1YW50aWxlKCkge1xuICB2YXIgZG9tYWluID0gW10sXG4gICAgICBpbnRlcnBvbGF0b3IgPSBpZGVudGl0eTtcblxuICBmdW5jdGlvbiBzY2FsZSh4KSB7XG4gICAgaWYgKHggIT0gbnVsbCAmJiAhaXNOYU4oeCA9ICt4KSkgcmV0dXJuIGludGVycG9sYXRvcigoYmlzZWN0KGRvbWFpbiwgeCwgMSkgLSAxKSAvIChkb21haW4ubGVuZ3RoIC0gMSkpO1xuICB9XG5cbiAgc2NhbGUuZG9tYWluID0gZnVuY3Rpb24oXykge1xuICAgIGlmICghYXJndW1lbnRzLmxlbmd0aCkgcmV0dXJuIGRvbWFpbi5zbGljZSgpO1xuICAgIGRvbWFpbiA9IFtdO1xuICAgIGZvciAobGV0IGQgb2YgXykgaWYgKGQgIT0gbnVsbCAmJiAhaXNOYU4oZCA9ICtkKSkgZG9tYWluLnB1c2goZCk7XG4gICAgZG9tYWluLnNvcnQoYXNjZW5kaW5nKTtcbiAgICByZXR1cm4gc2NhbGU7XG4gIH07XG5cbiAgc2NhbGUuaW50ZXJwb2xhdG9yID0gZnVuY3Rpb24oXykge1xuICAgIHJldHVybiBhcmd1bWVudHMubGVuZ3RoID8gKGludGVycG9sYXRvciA9IF8sIHNjYWxlKSA6IGludGVycG9sYXRvcjtcbiAgfTtcblxuICBzY2FsZS5yYW5nZSA9IGZ1bmN0aW9uKCkge1xuICAgIHJldHVybiBkb21haW4ubWFwKChkLCBpKSA9PiBpbnRlcnBvbGF0b3IoaSAvIChkb21haW4ubGVuZ3RoIC0gMSkpKTtcbiAgfTtcblxuICBzY2FsZS5xdWFudGlsZXMgPSBmdW5jdGlvbihuKSB7XG4gICAgcmV0dXJuIEFycmF5LmZyb20oe2xlbmd0aDogbiArIDF9LCAoXywgaSkgPT4gcXVhbnRpbGUoZG9tYWluLCBpIC8gbikpO1xuICB9O1xuXG4gIHNjYWxlLmNvcHkgPSBmdW5jdGlvbigpIHtcbiAgICByZXR1cm4gc2VxdWVudGlhbFF1YW50aWxlKGludGVycG9sYXRvcikuZG9tYWluKGRvbWFpbik7XG4gIH07XG5cbiAgcmV0dXJuIGluaXRJbnRlcnBvbGF0b3IuYXBwbHkoc2NhbGUsIGFyZ3VtZW50cyk7XG59XG4iXSwibWFwcGluZ3MiOiJBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOyIsInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///./node_modules/vega-functions/node_modules/d3-scale/src/sequentialQuantile.js\n");

/***/ }),

/***/ "./node_modules/vega-functions/node_modules/d3-scale/src/symlog.js":
/*!*************************************************************************!*\
  !*** ./node_modules/vega-functions/node_modules/d3-scale/src/symlog.js ***!
  \*************************************************************************/
/*! exports provided: symlogish, default */
/***/ (function(module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"symlogish\", function() { return symlogish; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"default\", function() { return symlog; });\n/* harmony import */ var _linear_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./linear.js */ \"./node_modules/vega-functions/node_modules/d3-scale/src/linear.js\");\n/* harmony import */ var _continuous_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./continuous.js */ \"./node_modules/vega-functions/node_modules/d3-scale/src/continuous.js\");\n/* harmony import */ var _init_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./init.js */ \"./node_modules/vega-functions/node_modules/d3-scale/src/init.js\");\n\n\n\n\nfunction transformSymlog(c) {\n  return function(x) {\n    return Math.sign(x) * Math.log1p(Math.abs(x / c));\n  };\n}\n\nfunction transformSymexp(c) {\n  return function(x) {\n    return Math.sign(x) * Math.expm1(Math.abs(x)) * c;\n  };\n}\n\nfunction symlogish(transform) {\n  var c = 1, scale = transform(transformSymlog(c), transformSymexp(c));\n\n  scale.constant = function(_) {\n    return arguments.length ? transform(transformSymlog(c = +_), transformSymexp(c)) : c;\n  };\n\n  return Object(_linear_js__WEBPACK_IMPORTED_MODULE_0__[\"linearish\"])(scale);\n}\n\nfunction symlog() {\n  var scale = symlogish(Object(_continuous_js__WEBPACK_IMPORTED_MODULE_1__[\"transformer\"])());\n\n  scale.copy = function() {\n    return Object(_continuous_js__WEBPACK_IMPORTED_MODULE_1__[\"copy\"])(scale, symlog()).constant(scale.constant());\n  };\n\n  return _init_js__WEBPACK_IMPORTED_MODULE_2__[\"initRange\"].apply(scale, arguments);\n}\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvdmVnYS1mdW5jdGlvbnMvbm9kZV9tb2R1bGVzL2QzLXNjYWxlL3NyYy9zeW1sb2cuanMuanMiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvdmVnYS1mdW5jdGlvbnMvbm9kZV9tb2R1bGVzL2QzLXNjYWxlL3NyYy9zeW1sb2cuanM/N2NiOSJdLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge2xpbmVhcmlzaH0gZnJvbSBcIi4vbGluZWFyLmpzXCI7XG5pbXBvcnQge2NvcHksIHRyYW5zZm9ybWVyfSBmcm9tIFwiLi9jb250aW51b3VzLmpzXCI7XG5pbXBvcnQge2luaXRSYW5nZX0gZnJvbSBcIi4vaW5pdC5qc1wiO1xuXG5mdW5jdGlvbiB0cmFuc2Zvcm1TeW1sb2coYykge1xuICByZXR1cm4gZnVuY3Rpb24oeCkge1xuICAgIHJldHVybiBNYXRoLnNpZ24oeCkgKiBNYXRoLmxvZzFwKE1hdGguYWJzKHggLyBjKSk7XG4gIH07XG59XG5cbmZ1bmN0aW9uIHRyYW5zZm9ybVN5bWV4cChjKSB7XG4gIHJldHVybiBmdW5jdGlvbih4KSB7XG4gICAgcmV0dXJuIE1hdGguc2lnbih4KSAqIE1hdGguZXhwbTEoTWF0aC5hYnMoeCkpICogYztcbiAgfTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIHN5bWxvZ2lzaCh0cmFuc2Zvcm0pIHtcbiAgdmFyIGMgPSAxLCBzY2FsZSA9IHRyYW5zZm9ybSh0cmFuc2Zvcm1TeW1sb2coYyksIHRyYW5zZm9ybVN5bWV4cChjKSk7XG5cbiAgc2NhbGUuY29uc3RhbnQgPSBmdW5jdGlvbihfKSB7XG4gICAgcmV0dXJuIGFyZ3VtZW50cy5sZW5ndGggPyB0cmFuc2Zvcm0odHJhbnNmb3JtU3ltbG9nKGMgPSArXyksIHRyYW5zZm9ybVN5bWV4cChjKSkgOiBjO1xuICB9O1xuXG4gIHJldHVybiBsaW5lYXJpc2goc2NhbGUpO1xufVxuXG5leHBvcnQgZGVmYXVsdCBmdW5jdGlvbiBzeW1sb2coKSB7XG4gIHZhciBzY2FsZSA9IHN5bWxvZ2lzaCh0cmFuc2Zvcm1lcigpKTtcblxuICBzY2FsZS5jb3B5ID0gZnVuY3Rpb24oKSB7XG4gICAgcmV0dXJuIGNvcHkoc2NhbGUsIHN5bWxvZygpKS5jb25zdGFudChzY2FsZS5jb25zdGFudCgpKTtcbiAgfTtcblxuICByZXR1cm4gaW5pdFJhbmdlLmFwcGx5KHNjYWxlLCBhcmd1bWVudHMpO1xufVxuIl0sIm1hcHBpbmdzIjoiQUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOyIsInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///./node_modules/vega-functions/node_modules/d3-scale/src/symlog.js\n");

/***/ }),

/***/ "./node_modules/vega-functions/node_modules/d3-scale/src/threshold.js":
/*!****************************************************************************!*\
  !*** ./node_modules/vega-functions/node_modules/d3-scale/src/threshold.js ***!
  \****************************************************************************/
/*! exports provided: default */
/***/ (function(module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"default\", function() { return threshold; });\n/* harmony import */ var d3_array__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! d3-array */ \"./node_modules/d3-array/src/index.js\");\n/* harmony import */ var _init_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./init.js */ \"./node_modules/vega-functions/node_modules/d3-scale/src/init.js\");\n\n\n\nfunction threshold() {\n  var domain = [0.5],\n      range = [0, 1],\n      unknown,\n      n = 1;\n\n  function scale(x) {\n    return x != null && x <= x ? range[Object(d3_array__WEBPACK_IMPORTED_MODULE_0__[\"bisect\"])(domain, x, 0, n)] : unknown;\n  }\n\n  scale.domain = function(_) {\n    return arguments.length ? (domain = Array.from(_), n = Math.min(domain.length, range.length - 1), scale) : domain.slice();\n  };\n\n  scale.range = function(_) {\n    return arguments.length ? (range = Array.from(_), n = Math.min(domain.length, range.length - 1), scale) : range.slice();\n  };\n\n  scale.invertExtent = function(y) {\n    var i = range.indexOf(y);\n    return [domain[i - 1], domain[i]];\n  };\n\n  scale.unknown = function(_) {\n    return arguments.length ? (unknown = _, scale) : unknown;\n  };\n\n  scale.copy = function() {\n    return threshold()\n        .domain(domain)\n        .range(range)\n        .unknown(unknown);\n  };\n\n  return _init_js__WEBPACK_IMPORTED_MODULE_1__[\"initRange\"].apply(scale, arguments);\n}\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvdmVnYS1mdW5jdGlvbnMvbm9kZV9tb2R1bGVzL2QzLXNjYWxlL3NyYy90aHJlc2hvbGQuanMuanMiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvdmVnYS1mdW5jdGlvbnMvbm9kZV9tb2R1bGVzL2QzLXNjYWxlL3NyYy90aHJlc2hvbGQuanM/NzMzYyJdLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge2Jpc2VjdH0gZnJvbSBcImQzLWFycmF5XCI7XG5pbXBvcnQge2luaXRSYW5nZX0gZnJvbSBcIi4vaW5pdC5qc1wiO1xuXG5leHBvcnQgZGVmYXVsdCBmdW5jdGlvbiB0aHJlc2hvbGQoKSB7XG4gIHZhciBkb21haW4gPSBbMC41XSxcbiAgICAgIHJhbmdlID0gWzAsIDFdLFxuICAgICAgdW5rbm93bixcbiAgICAgIG4gPSAxO1xuXG4gIGZ1bmN0aW9uIHNjYWxlKHgpIHtcbiAgICByZXR1cm4geCAhPSBudWxsICYmIHggPD0geCA/IHJhbmdlW2Jpc2VjdChkb21haW4sIHgsIDAsIG4pXSA6IHVua25vd247XG4gIH1cblxuICBzY2FsZS5kb21haW4gPSBmdW5jdGlvbihfKSB7XG4gICAgcmV0dXJuIGFyZ3VtZW50cy5sZW5ndGggPyAoZG9tYWluID0gQXJyYXkuZnJvbShfKSwgbiA9IE1hdGgubWluKGRvbWFpbi5sZW5ndGgsIHJhbmdlLmxlbmd0aCAtIDEpLCBzY2FsZSkgOiBkb21haW4uc2xpY2UoKTtcbiAgfTtcblxuICBzY2FsZS5yYW5nZSA9IGZ1bmN0aW9uKF8pIHtcbiAgICByZXR1cm4gYXJndW1lbnRzLmxlbmd0aCA/IChyYW5nZSA9IEFycmF5LmZyb20oXyksIG4gPSBNYXRoLm1pbihkb21haW4ubGVuZ3RoLCByYW5nZS5sZW5ndGggLSAxKSwgc2NhbGUpIDogcmFuZ2Uuc2xpY2UoKTtcbiAgfTtcblxuICBzY2FsZS5pbnZlcnRFeHRlbnQgPSBmdW5jdGlvbih5KSB7XG4gICAgdmFyIGkgPSByYW5nZS5pbmRleE9mKHkpO1xuICAgIHJldHVybiBbZG9tYWluW2kgLSAxXSwgZG9tYWluW2ldXTtcbiAgfTtcblxuICBzY2FsZS51bmtub3duID0gZnVuY3Rpb24oXykge1xuICAgIHJldHVybiBhcmd1bWVudHMubGVuZ3RoID8gKHVua25vd24gPSBfLCBzY2FsZSkgOiB1bmtub3duO1xuICB9O1xuXG4gIHNjYWxlLmNvcHkgPSBmdW5jdGlvbigpIHtcbiAgICByZXR1cm4gdGhyZXNob2xkKClcbiAgICAgICAgLmRvbWFpbihkb21haW4pXG4gICAgICAgIC5yYW5nZShyYW5nZSlcbiAgICAgICAgLnVua25vd24odW5rbm93bik7XG4gIH07XG5cbiAgcmV0dXJuIGluaXRSYW5nZS5hcHBseShzY2FsZSwgYXJndW1lbnRzKTtcbn1cbiJdLCJtYXBwaW5ncyI6IkFBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7Iiwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///./node_modules/vega-functions/node_modules/d3-scale/src/threshold.js\n");

/***/ }),

/***/ "./node_modules/vega-functions/node_modules/d3-scale/src/tickFormat.js":
/*!*****************************************************************************!*\
  !*** ./node_modules/vega-functions/node_modules/d3-scale/src/tickFormat.js ***!
  \*****************************************************************************/
/*! exports provided: default */
/***/ (function(module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"default\", function() { return tickFormat; });\n/* harmony import */ var d3_array__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! d3-array */ \"./node_modules/d3-array/src/index.js\");\n/* harmony import */ var d3_format__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! d3-format */ \"./node_modules/vega-functions/node_modules/d3-format/src/index.js\");\n\n\n\nfunction tickFormat(start, stop, count, specifier) {\n  var step = Object(d3_array__WEBPACK_IMPORTED_MODULE_0__[\"tickStep\"])(start, stop, count),\n      precision;\n  specifier = Object(d3_format__WEBPACK_IMPORTED_MODULE_1__[\"formatSpecifier\"])(specifier == null ? \",f\" : specifier);\n  switch (specifier.type) {\n    case \"s\": {\n      var value = Math.max(Math.abs(start), Math.abs(stop));\n      if (specifier.precision == null && !isNaN(precision = Object(d3_format__WEBPACK_IMPORTED_MODULE_1__[\"precisionPrefix\"])(step, value))) specifier.precision = precision;\n      return Object(d3_format__WEBPACK_IMPORTED_MODULE_1__[\"formatPrefix\"])(specifier, value);\n    }\n    case \"\":\n    case \"e\":\n    case \"g\":\n    case \"p\":\n    case \"r\": {\n      if (specifier.precision == null && !isNaN(precision = Object(d3_format__WEBPACK_IMPORTED_MODULE_1__[\"precisionRound\"])(step, Math.max(Math.abs(start), Math.abs(stop))))) specifier.precision = precision - (specifier.type === \"e\");\n      break;\n    }\n    case \"f\":\n    case \"%\": {\n      if (specifier.precision == null && !isNaN(precision = Object(d3_format__WEBPACK_IMPORTED_MODULE_1__[\"precisionFixed\"])(step))) specifier.precision = precision - (specifier.type === \"%\") * 2;\n      break;\n    }\n  }\n  return Object(d3_format__WEBPACK_IMPORTED_MODULE_1__[\"format\"])(specifier);\n}\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvdmVnYS1mdW5jdGlvbnMvbm9kZV9tb2R1bGVzL2QzLXNjYWxlL3NyYy90aWNrRm9ybWF0LmpzLmpzIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL3ZlZ2EtZnVuY3Rpb25zL25vZGVfbW9kdWxlcy9kMy1zY2FsZS9zcmMvdGlja0Zvcm1hdC5qcz9lZTRjIl0sInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7dGlja1N0ZXB9IGZyb20gXCJkMy1hcnJheVwiO1xuaW1wb3J0IHtmb3JtYXQsIGZvcm1hdFByZWZpeCwgZm9ybWF0U3BlY2lmaWVyLCBwcmVjaXNpb25GaXhlZCwgcHJlY2lzaW9uUHJlZml4LCBwcmVjaXNpb25Sb3VuZH0gZnJvbSBcImQzLWZvcm1hdFwiO1xuXG5leHBvcnQgZGVmYXVsdCBmdW5jdGlvbiB0aWNrRm9ybWF0KHN0YXJ0LCBzdG9wLCBjb3VudCwgc3BlY2lmaWVyKSB7XG4gIHZhciBzdGVwID0gdGlja1N0ZXAoc3RhcnQsIHN0b3AsIGNvdW50KSxcbiAgICAgIHByZWNpc2lvbjtcbiAgc3BlY2lmaWVyID0gZm9ybWF0U3BlY2lmaWVyKHNwZWNpZmllciA9PSBudWxsID8gXCIsZlwiIDogc3BlY2lmaWVyKTtcbiAgc3dpdGNoIChzcGVjaWZpZXIudHlwZSkge1xuICAgIGNhc2UgXCJzXCI6IHtcbiAgICAgIHZhciB2YWx1ZSA9IE1hdGgubWF4KE1hdGguYWJzKHN0YXJ0KSwgTWF0aC5hYnMoc3RvcCkpO1xuICAgICAgaWYgKHNwZWNpZmllci5wcmVjaXNpb24gPT0gbnVsbCAmJiAhaXNOYU4ocHJlY2lzaW9uID0gcHJlY2lzaW9uUHJlZml4KHN0ZXAsIHZhbHVlKSkpIHNwZWNpZmllci5wcmVjaXNpb24gPSBwcmVjaXNpb247XG4gICAgICByZXR1cm4gZm9ybWF0UHJlZml4KHNwZWNpZmllciwgdmFsdWUpO1xuICAgIH1cbiAgICBjYXNlIFwiXCI6XG4gICAgY2FzZSBcImVcIjpcbiAgICBjYXNlIFwiZ1wiOlxuICAgIGNhc2UgXCJwXCI6XG4gICAgY2FzZSBcInJcIjoge1xuICAgICAgaWYgKHNwZWNpZmllci5wcmVjaXNpb24gPT0gbnVsbCAmJiAhaXNOYU4ocHJlY2lzaW9uID0gcHJlY2lzaW9uUm91bmQoc3RlcCwgTWF0aC5tYXgoTWF0aC5hYnMoc3RhcnQpLCBNYXRoLmFicyhzdG9wKSkpKSkgc3BlY2lmaWVyLnByZWNpc2lvbiA9IHByZWNpc2lvbiAtIChzcGVjaWZpZXIudHlwZSA9PT0gXCJlXCIpO1xuICAgICAgYnJlYWs7XG4gICAgfVxuICAgIGNhc2UgXCJmXCI6XG4gICAgY2FzZSBcIiVcIjoge1xuICAgICAgaWYgKHNwZWNpZmllci5wcmVjaXNpb24gPT0gbnVsbCAmJiAhaXNOYU4ocHJlY2lzaW9uID0gcHJlY2lzaW9uRml4ZWQoc3RlcCkpKSBzcGVjaWZpZXIucHJlY2lzaW9uID0gcHJlY2lzaW9uIC0gKHNwZWNpZmllci50eXBlID09PSBcIiVcIikgKiAyO1xuICAgICAgYnJlYWs7XG4gICAgfVxuICB9XG4gIHJldHVybiBmb3JtYXQoc3BlY2lmaWVyKTtcbn1cbiJdLCJtYXBwaW5ncyI6IkFBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOyIsInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///./node_modules/vega-functions/node_modules/d3-scale/src/tickFormat.js\n");

/***/ }),

/***/ "./node_modules/vega-functions/node_modules/d3-scale/src/time.js":
/*!***********************************************************************!*\
  !*** ./node_modules/vega-functions/node_modules/d3-scale/src/time.js ***!
  \***********************************************************************/
/*! exports provided: calendar, default */
/***/ (function(module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"calendar\", function() { return calendar; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"default\", function() { return time; });\n/* harmony import */ var d3_time__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! d3-time */ \"./node_modules/vega-functions/node_modules/d3-time/src/index.js\");\n/* harmony import */ var d3_time_format__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! d3-time-format */ \"./node_modules/vega-functions/node_modules/d3-time-format/src/index.js\");\n/* harmony import */ var _continuous_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./continuous.js */ \"./node_modules/vega-functions/node_modules/d3-scale/src/continuous.js\");\n/* harmony import */ var _init_js__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ./init.js */ \"./node_modules/vega-functions/node_modules/d3-scale/src/init.js\");\n/* harmony import */ var _nice_js__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ./nice.js */ \"./node_modules/vega-functions/node_modules/d3-scale/src/nice.js\");\n\n\n\n\n\n\nfunction date(t) {\n  return new Date(t);\n}\n\nfunction number(t) {\n  return t instanceof Date ? +t : +new Date(+t);\n}\n\nfunction calendar(ticks, tickInterval, year, month, week, day, hour, minute, second, format) {\n  var scale = Object(_continuous_js__WEBPACK_IMPORTED_MODULE_2__[\"default\"])(),\n      invert = scale.invert,\n      domain = scale.domain;\n\n  var formatMillisecond = format(\".%L\"),\n      formatSecond = format(\":%S\"),\n      formatMinute = format(\"%I:%M\"),\n      formatHour = format(\"%I %p\"),\n      formatDay = format(\"%a %d\"),\n      formatWeek = format(\"%b %d\"),\n      formatMonth = format(\"%B\"),\n      formatYear = format(\"%Y\");\n\n  function tickFormat(date) {\n    return (second(date) < date ? formatMillisecond\n        : minute(date) < date ? formatSecond\n        : hour(date) < date ? formatMinute\n        : day(date) < date ? formatHour\n        : month(date) < date ? (week(date) < date ? formatDay : formatWeek)\n        : year(date) < date ? formatMonth\n        : formatYear)(date);\n  }\n\n  scale.invert = function(y) {\n    return new Date(invert(y));\n  };\n\n  scale.domain = function(_) {\n    return arguments.length ? domain(Array.from(_, number)) : domain().map(date);\n  };\n\n  scale.ticks = function(interval) {\n    var d = domain();\n    return ticks(d[0], d[d.length - 1], interval == null ? 10 : interval);\n  };\n\n  scale.tickFormat = function(count, specifier) {\n    return specifier == null ? tickFormat : format(specifier);\n  };\n\n  scale.nice = function(interval) {\n    var d = domain();\n    if (!interval || typeof interval.range !== \"function\") interval = tickInterval(d[0], d[d.length - 1], interval == null ? 10 : interval);\n    return interval ? domain(Object(_nice_js__WEBPACK_IMPORTED_MODULE_4__[\"default\"])(d, interval)) : scale;\n  };\n\n  scale.copy = function() {\n    return Object(_continuous_js__WEBPACK_IMPORTED_MODULE_2__[\"copy\"])(scale, calendar(ticks, tickInterval, year, month, week, day, hour, minute, second, format));\n  };\n\n  return scale;\n}\n\nfunction time() {\n  return _init_js__WEBPACK_IMPORTED_MODULE_3__[\"initRange\"].apply(calendar(d3_time__WEBPACK_IMPORTED_MODULE_0__[\"timeTicks\"], d3_time__WEBPACK_IMPORTED_MODULE_0__[\"timeTickInterval\"], d3_time__WEBPACK_IMPORTED_MODULE_0__[\"timeYear\"], d3_time__WEBPACK_IMPORTED_MODULE_0__[\"timeMonth\"], d3_time__WEBPACK_IMPORTED_MODULE_0__[\"timeWeek\"], d3_time__WEBPACK_IMPORTED_MODULE_0__[\"timeDay\"], d3_time__WEBPACK_IMPORTED_MODULE_0__[\"timeHour\"], d3_time__WEBPACK_IMPORTED_MODULE_0__[\"timeMinute\"], d3_time__WEBPACK_IMPORTED_MODULE_0__[\"timeSecond\"], d3_time_format__WEBPACK_IMPORTED_MODULE_1__[\"timeFormat\"]).domain([new Date(2000, 0, 1), new Date(2000, 0, 2)]), arguments);\n}\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,[encoded data, 4128 characters]\n//# sourceURL=webpack-internal:///./node_modules/vega-functions/node_modules/d3-scale/src/time.js\n");

/***/ }),

/***/ "./node_modules/vega-functions/node_modules/d3-scale/src/utcTime.js":
/*!**************************************************************************!*\
  !*** ./node_modules/vega-functions/node_modules/d3-scale/src/utcTime.js ***!
  \**************************************************************************/
/*! exports provided: default */
/***/ (function(module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"default\", function() { return utcTime; });\n/* harmony import */ var d3_time__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! d3-time */ \"./node_modules/vega-functions/node_modules/d3-time/src/index.js\");\n/* harmony import */ var d3_time_format__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! d3-time-format */ \"./node_modules/vega-functions/node_modules/d3-time-format/src/index.js\");\n/* harmony import */ var _time_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./time.js */ \"./node_modules/vega-functions/node_modules/d3-scale/src/time.js\");\n/* harmony import */ var _init_js__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ./init.js */ \"./node_modules/vega-functions/node_modules/d3-scale/src/init.js\");\n\n\n\n\n\nfunction utcTime() {\n  return _init_js__WEBPACK_IMPORTED_MODULE_3__[\"initRange\"].apply(Object(_time_js__WEBPACK_IMPORTED_MODULE_2__[\"calendar\"])(d3_time__WEBPACK_IMPORTED_MODULE_0__[\"utcTicks\"], d3_time__WEBPACK_IMPORTED_MODULE_0__[\"utcTickInterval\"], d3_time__WEBPACK_IMPORTED_MODULE_0__[\"utcYear\"], d3_time__WEBPACK_IMPORTED_MODULE_0__[\"utcMonth\"], d3_time__WEBPACK_IMPORTED_MODULE_0__[\"utcWeek\"], d3_time__WEBPACK_IMPORTED_MODULE_0__[\"utcDay\"], d3_time__WEBPACK_IMPORTED_MODULE_0__[\"utcHour\"], d3_time__WEBPACK_IMPORTED_MODULE_0__[\"utcMinute\"], d3_time__WEBPACK_IMPORTED_MODULE_0__[\"utcSecond\"], d3_time_format__WEBPACK_IMPORTED_MODULE_1__[\"utcFormat\"]).domain([Date.UTC(2000, 0, 1), Date.UTC(2000, 0, 2)]), arguments);\n}\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvdmVnYS1mdW5jdGlvbnMvbm9kZV9tb2R1bGVzL2QzLXNjYWxlL3NyYy91dGNUaW1lLmpzLmpzIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL3ZlZ2EtZnVuY3Rpb25zL25vZGVfbW9kdWxlcy9kMy1zY2FsZS9zcmMvdXRjVGltZS5qcz80Y2I1Il0sInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7dXRjWWVhciwgdXRjTW9udGgsIHV0Y1dlZWssIHV0Y0RheSwgdXRjSG91ciwgdXRjTWludXRlLCB1dGNTZWNvbmQsIHV0Y1RpY2tzLCB1dGNUaWNrSW50ZXJ2YWx9IGZyb20gXCJkMy10aW1lXCI7XG5pbXBvcnQge3V0Y0Zvcm1hdH0gZnJvbSBcImQzLXRpbWUtZm9ybWF0XCI7XG5pbXBvcnQge2NhbGVuZGFyfSBmcm9tIFwiLi90aW1lLmpzXCI7XG5pbXBvcnQge2luaXRSYW5nZX0gZnJvbSBcIi4vaW5pdC5qc1wiO1xuXG5leHBvcnQgZGVmYXVsdCBmdW5jdGlvbiB1dGNUaW1lKCkge1xuICByZXR1cm4gaW5pdFJhbmdlLmFwcGx5KGNhbGVuZGFyKHV0Y1RpY2tzLCB1dGNUaWNrSW50ZXJ2YWwsIHV0Y1llYXIsIHV0Y01vbnRoLCB1dGNXZWVrLCB1dGNEYXksIHV0Y0hvdXIsIHV0Y01pbnV0ZSwgdXRjU2Vjb25kLCB1dGNGb3JtYXQpLmRvbWFpbihbRGF0ZS5VVEMoMjAwMCwgMCwgMSksIERhdGUuVVRDKDIwMDAsIDAsIDIpXSksIGFyZ3VtZW50cyk7XG59XG4iXSwibWFwcGluZ3MiOiJBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7Iiwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///./node_modules/vega-functions/node_modules/d3-scale/src/utcTime.js\n");

/***/ }),

/***/ "./node_modules/vega-functions/node_modules/d3-shape/src/arc.js":
/*!**********************************************************************!*\
  !*** ./node_modules/vega-functions/node_modules/d3-shape/src/arc.js ***!
  \**********************************************************************/
/*! exports provided: default */
/***/ (function(module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var d3_path__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! d3-path */ \"./node_modules/vega-functions/node_modules/d3-path/src/index.js\");\n/* harmony import */ var _constant_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./constant.js */ \"./node_modules/vega-functions/node_modules/d3-shape/src/constant.js\");\n/* harmony import */ var _math_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./math.js */ \"./node_modules/vega-functions/node_modules/d3-shape/src/math.js\");\n\n\n\n\nfunction arcInnerRadius(d) {\n  return d.innerRadius;\n}\n\nfunction arcOuterRadius(d) {\n  return d.outerRadius;\n}\n\nfunction arcStartAngle(d) {\n  return d.startAngle;\n}\n\nfunction arcEndAngle(d) {\n  return d.endAngle;\n}\n\nfunction arcPadAngle(d) {\n  return d && d.padAngle; // Note: optional!\n}\n\nfunction intersect(x0, y0, x1, y1, x2, y2, x3, y3) {\n  var x10 = x1 - x0, y10 = y1 - y0,\n      x32 = x3 - x2, y32 = y3 - y2,\n      t = y32 * x10 - x32 * y10;\n  if (t * t < _math_js__WEBPACK_IMPORTED_MODULE_2__[\"epsilon\"]) return;\n  t = (x32 * (y0 - y2) - y32 * (x0 - x2)) / t;\n  return [x0 + t * x10, y0 + t * y10];\n}\n\n// Compute perpendicular offset line of length rc.\n// http://mathworld.wolfram.com/Circle-LineIntersection.html\nfunction cornerTangents(x0, y0, x1, y1, r1, rc, cw) {\n  var x01 = x0 - x1,\n      y01 = y0 - y1,\n      lo = (cw ? rc : -rc) / Object(_math_js__WEBPACK_IMPORTED_MODULE_2__[\"sqrt\"])(x01 * x01 + y01 * y01),\n      ox = lo * y01,\n      oy = -lo * x01,\n      x11 = x0 + ox,\n      y11 = y0 + oy,\n      x10 = x1 + ox,\n      y10 = y1 + oy,\n      x00 = (x11 + x10) / 2,\n      y00 = (y11 + y10) / 2,\n      dx = x10 - x11,\n      dy = y10 - y11,\n      d2 = dx * dx + dy * dy,\n      r = r1 - rc,\n      D = x11 * y10 - x10 * y11,\n      d = (dy < 0 ? -1 : 1) * Object(_math_js__WEBPACK_IMPORTED_MODULE_2__[\"sqrt\"])(Object(_math_js__WEBPACK_IMPORTED_MODULE_2__[\"max\"])(0, r * r * d2 - D * D)),\n      cx0 = (D * dy - dx * d) / d2,\n      cy0 = (-D * dx - dy * d) / d2,\n      cx1 = (D * dy + dx * d) / d2,\n      cy1 = (-D * dx + dy * d) / d2,\n      dx0 = cx0 - x00,\n      dy0 = cy0 - y00,\n      dx1 = cx1 - x00,\n      dy1 = cy1 - y00;\n\n  // Pick the closer of the two intersection points.\n  // TODO Is there a faster way to determine which intersection to use?\n  if (dx0 * dx0 + dy0 * dy0 > dx1 * dx1 + dy1 * dy1) cx0 = cx1, cy0 = cy1;\n\n  return {\n    cx: cx0,\n    cy: cy0,\n    x01: -ox,\n    y01: -oy,\n    x11: cx0 * (r1 / r - 1),\n    y11: cy0 * (r1 / r - 1)\n  };\n}\n\n/* harmony default export */ __webpack_exports__[\"default\"] = (function() {\n  var innerRadius = arcInnerRadius,\n      outerRadius = arcOuterRadius,\n      cornerRadius = Object(_constant_js__WEBPACK_IMPORTED_MODULE_1__[\"default\"])(0),\n      padRadius = null,\n      startAngle = arcStartAngle,\n      endAngle = arcEndAngle,\n      padAngle = arcPadAngle,\n      context = null;\n\n  function arc() {\n    var buffer,\n        r,\n        r0 = +innerRadius.apply(this, arguments),\n        r1 = +outerRadius.apply(this, arguments),\n        a0 = startAngle.apply(this, arguments) - _math_js__WEBPACK_IMPORTED_MODULE_2__[\"halfPi\"],\n        a1 = endAngle.apply(this, arguments) - _math_js__WEBPACK_IMPORTED_MODULE_2__[\"halfPi\"],\n        da = Object(_math_js__WEBPACK_IMPORTED_MODULE_2__[\"abs\"])(a1 - a0),\n        cw = a1 > a0;\n\n    if (!context) context = buffer = Object(d3_path__WEBPACK_IMPORTED_MODULE_0__[\"path\"])();\n\n    // Ensure that the outer radius is always larger than the inner radius.\n    if (r1 < r0) r = r1, r1 = r0, r0 = r;\n\n    // Is it a point?\n    if (!(r1 > _math_js__WEBPACK_IMPORTED_MODULE_2__[\"epsilon\"])) context.moveTo(0, 0);\n\n    // Or is it a circle or annulus?\n    else if (da > _math_js__WEBPACK_IMPORTED_MODULE_2__[\"tau\"] - _math_js__WEBPACK_IMPORTED_MODULE_2__[\"epsilon\"]) {\n      context.moveTo(r1 * Object(_math_js__WEBPACK_IMPORTED_MODULE_2__[\"cos\"])(a0), r1 * Object(_math_js__WEBPACK_IMPORTED_MODULE_2__[\"sin\"])(a0));\n      context.arc(0, 0, r1, a0, a1, !cw);\n      if (r0 > _math_js__WEBPACK_IMPORTED_MODULE_2__[\"epsilon\"]) {\n        context.moveTo(r0 * Object(_math_js__WEBPACK_IMPORTED_MODULE_2__[\"cos\"])(a1), r0 * Object(_math_js__WEBPACK_IMPORTED_MODULE_2__[\"sin\"])(a1));\n        context.arc(0, 0, r0, a1, a0, cw);\n      }\n    }\n\n    // Or is it a circular or annular sector?\n    else {\n      var a01 = a0,\n          a11 = a1,\n          a00 = a0,\n          a10 = a1,\n          da0 = da,\n          da1 = da,\n          ap = padAngle.apply(this, arguments) / 2,\n          rp = (ap > _math_js__WEBPACK_IMPORTED_MODULE_2__[\"epsilon\"]) && (padRadius ? +padRadius.apply(this, arguments) : Object(_math_js__WEBPACK_IMPORTED_MODULE_2__[\"sqrt\"])(r0 * r0 + r1 * r1)),\n          rc = Object(_math_js__WEBPACK_IMPORTED_MODULE_2__[\"min\"])(Object(_math_js__WEBPACK_IMPORTED_MODULE_2__[\"abs\"])(r1 - r0) / 2, +cornerRadius.apply(this, arguments)),\n          rc0 = rc,\n          rc1 = rc,\n          t0,\n          t1;\n\n      // Apply padding? Note that since r1 ≥ r0, da1 ≥ da0.\n      if (rp > _math_js__WEBPACK_IMPORTED_MODULE_2__[\"epsilon\"]) {\n        var p0 = Object(_math_js__WEBPACK_IMPORTED_MODULE_2__[\"asin\"])(rp / r0 * Object(_math_js__WEBPACK_IMPORTED_MODULE_2__[\"sin\"])(ap)),\n            p1 = Object(_math_js__WEBPACK_IMPORTED_MODULE_2__[\"asin\"])(rp / r1 * Object(_math_js__WEBPACK_IMPORTED_MODULE_2__[\"sin\"])(ap));\n        if ((da0 -= p0 * 2) > _math_js__WEBPACK_IMPORTED_MODULE_2__[\"epsilon\"]) p0 *= (cw ? 1 : -1), a00 += p0, a10 -= p0;\n        else da0 = 0, a00 = a10 = (a0 + a1) / 2;\n        if ((da1 -= p1 * 2) > _math_js__WEBPACK_IMPORTED_MODULE_2__[\"epsilon\"]) p1 *= (cw ? 1 : -1), a01 += p1, a11 -= p1;\n        else da1 = 0, a01 = a11 = (a0 + a1) / 2;\n      }\n\n      var x01 = r1 * Object(_math_js__WEBPACK_IMPORTED_MODULE_2__[\"cos\"])(a01),\n          y01 = r1 * Object(_math_js__WEBPACK_IMPORTED_MODULE_2__[\"sin\"])(a01),\n          x10 = r0 * Object(_math_js__WEBPACK_IMPORTED_MODULE_2__[\"cos\"])(a10),\n          y10 = r0 * Object(_math_js__WEBPACK_IMPORTED_MODULE_2__[\"sin\"])(a10);\n\n      // Apply rounded corners?\n      if (rc > _math_js__WEBPACK_IMPORTED_MODULE_2__[\"epsilon\"]) {\n        var x11 = r1 * Object(_math_js__WEBPACK_IMPORTED_MODULE_2__[\"cos\"])(a11),\n            y11 = r1 * Object(_math_js__WEBPACK_IMPORTED_MODULE_2__[\"sin\"])(a11),\n            x00 = r0 * Object(_math_js__WEBPACK_IMPORTED_MODULE_2__[\"cos\"])(a00),\n            y00 = r0 * Object(_math_js__WEBPACK_IMPORTED_MODULE_2__[\"sin\"])(a00),\n            oc;\n\n        // Restrict the corner radius according to the sector angle.\n        if (da < _math_js__WEBPACK_IMPORTED_MODULE_2__[\"pi\"] && (oc = intersect(x01, y01, x00, y00, x11, y11, x10, y10))) {\n          var ax = x01 - oc[0],\n              ay = y01 - oc[1],\n              bx = x11 - oc[0],\n              by = y11 - oc[1],\n              kc = 1 / Object(_math_js__WEBPACK_IMPORTED_MODULE_2__[\"sin\"])(Object(_math_js__WEBPACK_IMPORTED_MODULE_2__[\"acos\"])((ax * bx + ay * by) / (Object(_math_js__WEBPACK_IMPORTED_MODULE_2__[\"sqrt\"])(ax * ax + ay * ay) * Object(_math_js__WEBPACK_IMPORTED_MODULE_2__[\"sqrt\"])(bx * bx + by * by))) / 2),\n              lc = Object(_math_js__WEBPACK_IMPORTED_MODULE_2__[\"sqrt\"])(oc[0] * oc[0] + oc[1] * oc[1]);\n          rc0 = Object(_math_js__WEBPACK_IMPORTED_MODULE_2__[\"min\"])(rc, (r0 - lc) / (kc - 1));\n          rc1 = Object(_math_js__WEBPACK_IMPORTED_MODULE_2__[\"min\"])(rc, (r1 - lc) / (kc + 1));\n        }\n      }\n\n      // Is the sector collapsed to a line?\n      if (!(da1 > _math_js__WEBPACK_IMPORTED_MODULE_2__[\"epsilon\"])) context.moveTo(x01, y01);\n\n      // Does the sector’s outer ring have rounded corners?\n      else if (rc1 > _math_js__WEBPACK_IMPORTED_MODULE_2__[\"epsilon\"]) {\n        t0 = cornerTangents(x00, y00, x01, y01, r1, rc1, cw);\n        t1 = cornerTangents(x11, y11, x10, y10, r1, rc1, cw);\n\n        context.moveTo(t0.cx + t0.x01, t0.cy + t0.y01);\n\n        // Have the corners merged?\n        if (rc1 < rc) context.arc(t0.cx, t0.cy, rc1, Object(_math_js__WEBPACK_IMPORTED_MODULE_2__[\"atan2\"])(t0.y01, t0.x01), Object(_math_js__WEBPACK_IMPORTED_MODULE_2__[\"atan2\"])(t1.y01, t1.x01), !cw);\n\n        // Otherwise, draw the two corners and the ring.\n        else {\n          context.arc(t0.cx, t0.cy, rc1, Object(_math_js__WEBPACK_IMPORTED_MODULE_2__[\"atan2\"])(t0.y01, t0.x01), Object(_math_js__WEBPACK_IMPORTED_MODULE_2__[\"atan2\"])(t0.y11, t0.x11), !cw);\n          context.arc(0, 0, r1, Object(_math_js__WEBPACK_IMPORTED_MODULE_2__[\"atan2\"])(t0.cy + t0.y11, t0.cx + t0.x11), Object(_math_js__WEBPACK_IMPORTED_MODULE_2__[\"atan2\"])(t1.cy + t1.y11, t1.cx + t1.x11), !cw);\n          context.arc(t1.cx, t1.cy, rc1, Object(_math_js__WEBPACK_IMPORTED_MODULE_2__[\"atan2\"])(t1.y11, t1.x11), Object(_math_js__WEBPACK_IMPORTED_MODULE_2__[\"atan2\"])(t1.y01, t1.x01), !cw);\n        }\n      }\n\n      // Or is the outer ring just a circular arc?\n      else context.moveTo(x01, y01), context.arc(0, 0, r1, a01, a11, !cw);\n\n      // Is there no inner ring, and it’s a circular sector?\n      // Or perhaps it’s an annular sector collapsed due to padding?\n      if (!(r0 > _math_js__WEBPACK_IMPORTED_MODULE_2__[\"epsilon\"]) || !(da0 > _math_js__WEBPACK_IMPORTED_MODULE_2__[\"epsilon\"])) context.lineTo(x10, y10);\n\n      // Does the sector’s inner ring (or point) have rounded corners?\n      else if (rc0 > _math_js__WEBPACK_IMPORTED_MODULE_2__[\"epsilon\"]) {\n        t0 = cornerTangents(x10, y10, x11, y11, r0, -rc0, cw);\n        t1 = cornerTangents(x01, y01, x00, y00, r0, -rc0, cw);\n\n        context.lineTo(t0.cx + t0.x01, t0.cy + t0.y01);\n\n        // Have the corners merged?\n        if (rc0 < rc) context.arc(t0.cx, t0.cy, rc0, Object(_math_js__WEBPACK_IMPORTED_MODULE_2__[\"atan2\"])(t0.y01, t0.x01), Object(_math_js__WEBPACK_IMPORTED_MODULE_2__[\"atan2\"])(t1.y01, t1.x01), !cw);\n\n        // Otherwise, draw the two corners and the ring.\n        else {\n          context.arc(t0.cx, t0.cy, rc0, Object(_math_js__WEBPACK_IMPORTED_MODULE_2__[\"atan2\"])(t0.y01, t0.x01), Object(_math_js__WEBPACK_IMPORTED_MODULE_2__[\"atan2\"])(t0.y11, t0.x11), !cw);\n          context.arc(0, 0, r0, Object(_math_js__WEBPACK_IMPORTED_MODULE_2__[\"atan2\"])(t0.cy + t0.y11, t0.cx + t0.x11), Object(_math_js__WEBPACK_IMPORTED_MODULE_2__[\"atan2\"])(t1.cy + t1.y11, t1.cx + t1.x11), cw);\n          context.arc(t1.cx, t1.cy, rc0, Object(_math_js__WEBPACK_IMPORTED_MODULE_2__[\"atan2\"])(t1.y11, t1.x11), Object(_math_js__WEBPACK_IMPORTED_MODULE_2__[\"atan2\"])(t1.y01, t1.x01), !cw);\n        }\n      }\n\n      // Or is the inner ring just a circular arc?\n      else context.arc(0, 0, r0, a10, a00, cw);\n    }\n\n    context.closePath();\n\n    if (buffer) return context = null, buffer + \"\" || null;\n  }\n\n  arc.centroid = function() {\n    var r = (+innerRadius.apply(this, arguments) + +outerRadius.apply(this, arguments)) / 2,\n        a = (+startAngle.apply(this, arguments) + +endAngle.apply(this, arguments)) / 2 - _math_js__WEBPACK_IMPORTED_MODULE_2__[\"pi\"] / 2;\n    return [Object(_math_js__WEBPACK_IMPORTED_MODULE_2__[\"cos\"])(a) * r, Object(_math_js__WEBPACK_IMPORTED_MODULE_2__[\"sin\"])(a) * r];\n  };\n\n  arc.innerRadius = function(_) {\n    return arguments.length ? (innerRadius = typeof _ === \"function\" ? _ : Object(_constant_js__WEBPACK_IMPORTED_MODULE_1__[\"default\"])(+_), arc) : innerRadius;\n  };\n\n  arc.outerRadius = function(_) {\n    return arguments.length ? (outerRadius = typeof _ === \"function\" ? _ : Object(_constant_js__WEBPACK_IMPORTED_MODULE_1__[\"default\"])(+_), arc) : outerRadius;\n  };\n\n  arc.cornerRadius = function(_) {\n    return arguments.length ? (cornerRadius = typeof _ === \"function\" ? _ : Object(_constant_js__WEBPACK_IMPORTED_MODULE_1__[\"default\"])(+_), arc) : cornerRadius;\n  };\n\n  arc.padRadius = function(_) {\n    return arguments.length ? (padRadius = _ == null ? null : typeof _ === \"function\" ? _ : Object(_constant_js__WEBPACK_IMPORTED_MODULE_1__[\"default\"])(+_), arc) : padRadius;\n  };\n\n  arc.startAngle = function(_) {\n    return arguments.length ? (startAngle = typeof _ === \"function\" ? _ : Object(_constant_js__WEBPACK_IMPORTED_MODULE_1__[\"default\"])(+_), arc) : startAngle;\n  };\n\n  arc.endAngle = function(_) {\n    return arguments.length ? (endAngle = typeof _ === \"function\" ? _ : Object(_constant_js__WEBPACK_IMPORTED_MODULE_1__[\"default\"])(+_), arc) : endAngle;\n  };\n\n  arc.padAngle = function(_) {\n    return arguments.length ? (padAngle = typeof _ === \"function\" ? _ : Object(_constant_js__WEBPACK_IMPORTED_MODULE_1__[\"default\"])(+_), arc) : padAngle;\n  };\n\n  arc.context = function(_) {\n    return arguments.length ? ((context = _ == null ? null : _), arc) : context;\n  };\n\n  return arc;\n});\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,[encoded data, 13908 characters]\n//# sourceURL=webpack-internal:///./node_modules/vega-functions/node_modules/d3-shape/src/arc.js\n");

/***/ }),

/***/ "./node_modules/vega-functions/node_modules/d3-shape/src/area.js":
/*!***********************************************************************!*\
  !*** ./node_modules/vega-functions/node_modules/d3-shape/src/area.js ***!
  \***********************************************************************/
/*! exports provided: default */
/***/ (function(module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var d3_path__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! d3-path */ \"./node_modules/vega-functions/node_modules/d3-path/src/index.js\");\n/* harmony import */ var _array_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./array.js */ \"./node_modules/vega-functions/node_modules/d3-shape/src/array.js\");\n/* harmony import */ var _constant_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./constant.js */ \"./node_modules/vega-functions/node_modules/d3-shape/src/constant.js\");\n/* harmony import */ var _curve_linear_js__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ./curve/linear.js */ \"./node_modules/vega-functions/node_modules/d3-shape/src/curve/linear.js\");\n/* harmony import */ var _line_js__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ./line.js */ \"./node_modules/vega-functions/node_modules/d3-shape/src/line.js\");\n/* harmony import */ var _point_js__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! ./point.js */ \"./node_modules/vega-functions/node_modules/d3-shape/src/point.js\");\n\n\n\n\n\n\n\n/* harmony default export */ __webpack_exports__[\"default\"] = (function(x0, y0, y1) {\n  var x1 = null,\n      defined = Object(_constant_js__WEBPACK_IMPORTED_MODULE_2__[\"default\"])(true),\n      context = null,\n      curve = _curve_linear_js__WEBPACK_IMPORTED_MODULE_3__[\"default\"],\n      output = null;\n\n  x0 = typeof x0 === \"function\" ? x0 : (x0 === undefined) ? _point_js__WEBPACK_IMPORTED_MODULE_5__[\"x\"] : Object(_constant_js__WEBPACK_IMPORTED_MODULE_2__[\"default\"])(+x0);\n  y0 = typeof y0 === \"function\" ? y0 : (y0 === undefined) ? Object(_constant_js__WEBPACK_IMPORTED_MODULE_2__[\"default\"])(0) : Object(_constant_js__WEBPACK_IMPORTED_MODULE_2__[\"default\"])(+y0);\n  y1 = typeof y1 === \"function\" ? y1 : (y1 === undefined) ? _point_js__WEBPACK_IMPORTED_MODULE_5__[\"y\"] : Object(_constant_js__WEBPACK_IMPORTED_MODULE_2__[\"default\"])(+y1);\n\n  function area(data) {\n    var i,\n        j,\n        k,\n        n = (data = Object(_array_js__WEBPACK_IMPORTED_MODULE_1__[\"default\"])(data)).length,\n        d,\n        defined0 = false,\n        buffer,\n        x0z = new Array(n),\n        y0z = new Array(n);\n\n    if (context == null) output = curve(buffer = Object(d3_path__WEBPACK_IMPORTED_MODULE_0__[\"path\"])());\n\n    for (i = 0; i <= n; ++i) {\n      if (!(i < n && defined(d = data[i], i, data)) === defined0) {\n        if (defined0 = !defined0) {\n          j = i;\n          output.areaStart();\n          output.lineStart();\n        } else {\n          output.lineEnd();\n          output.lineStart();\n          for (k = i - 1; k >= j; --k) {\n            output.point(x0z[k], y0z[k]);\n          }\n          output.lineEnd();\n          output.areaEnd();\n        }\n      }\n      if (defined0) {\n        x0z[i] = +x0(d, i, data), y0z[i] = +y0(d, i, data);\n        output.point(x1 ? +x1(d, i, data) : x0z[i], y1 ? +y1(d, i, data) : y0z[i]);\n      }\n    }\n\n    if (buffer) return output = null, buffer + \"\" || null;\n  }\n\n  function arealine() {\n    return Object(_line_js__WEBPACK_IMPORTED_MODULE_4__[\"default\"])().defined(defined).curve(curve).context(context);\n  }\n\n  area.x = function(_) {\n    return arguments.length ? (x0 = typeof _ === \"function\" ? _ : Object(_constant_js__WEBPACK_IMPORTED_MODULE_2__[\"default\"])(+_), x1 = null, area) : x0;\n  };\n\n  area.x0 = function(_) {\n    return arguments.length ? (x0 = typeof _ === \"function\" ? _ : Object(_constant_js__WEBPACK_IMPORTED_MODULE_2__[\"default\"])(+_), area) : x0;\n  };\n\n  area.x1 = function(_) {\n    return arguments.length ? (x1 = _ == null ? null : typeof _ === \"function\" ? _ : Object(_constant_js__WEBPACK_IMPORTED_MODULE_2__[\"default\"])(+_), area) : x1;\n  };\n\n  area.y = function(_) {\n    return arguments.length ? (y0 = typeof _ === \"function\" ? _ : Object(_constant_js__WEBPACK_IMPORTED_MODULE_2__[\"default\"])(+_), y1 = null, area) : y0;\n  };\n\n  area.y0 = function(_) {\n    return arguments.length ? (y0 = typeof _ === \"function\" ? _ : Object(_constant_js__WEBPACK_IMPORTED_MODULE_2__[\"default\"])(+_), area) : y0;\n  };\n\n  area.y1 = function(_) {\n    return arguments.length ? (y1 = _ == null ? null : typeof _ === \"function\" ? _ : Object(_constant_js__WEBPACK_IMPORTED_MODULE_2__[\"default\"])(+_), area) : y1;\n  };\n\n  area.lineX0 =\n  area.lineY0 = function() {\n    return arealine().x(x0).y(y0);\n  };\n\n  area.lineY1 = function() {\n    return arealine().x(x0).y(y1);\n  };\n\n  area.lineX1 = function() {\n    return arealine().x(x1).y(y0);\n  };\n\n  area.defined = function(_) {\n    return arguments.length ? (defined = typeof _ === \"function\" ? _ : Object(_constant_js__WEBPACK_IMPORTED_MODULE_2__[\"default\"])(!!_), area) : defined;\n  };\n\n  area.curve = function(_) {\n    return arguments.length ? (curve = _, context != null && (output = curve(context)), area) : curve;\n  };\n\n  area.context = function(_) {\n    return arguments.length ? (_ == null ? context = output = null : output = curve(context = _), area) : context;\n  };\n\n  return area;\n});\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,[encoded data, 5540 characters]\n//# sourceURL=webpack-internal:///./node_modules/vega-functions/node_modules/d3-shape/src/area.js\n");

/***/ }),

/***/ "./node_modules/vega-functions/node_modules/d3-shape/src/areaRadial.js":
/*!*****************************************************************************!*\
  !*** ./node_modules/vega-functions/node_modules/d3-shape/src/areaRadial.js ***!
  \*****************************************************************************/
/*! exports provided: default */
/***/ (function(module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _curve_radial_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./curve/radial.js */ \"./node_modules/vega-functions/node_modules/d3-shape/src/curve/radial.js\");\n/* harmony import */ var _area_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./area.js */ \"./node_modules/vega-functions/node_modules/d3-shape/src/area.js\");\n/* harmony import */ var _lineRadial_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./lineRadial.js */ \"./node_modules/vega-functions/node_modules/d3-shape/src/lineRadial.js\");\n\n\n\n\n/* harmony default export */ __webpack_exports__[\"default\"] = (function() {\n  var a = Object(_area_js__WEBPACK_IMPORTED_MODULE_1__[\"default\"])().curve(_curve_radial_js__WEBPACK_IMPORTED_MODULE_0__[\"curveRadialLinear\"]),\n      c = a.curve,\n      x0 = a.lineX0,\n      x1 = a.lineX1,\n      y0 = a.lineY0,\n      y1 = a.lineY1;\n\n  a.angle = a.x, delete a.x;\n  a.startAngle = a.x0, delete a.x0;\n  a.endAngle = a.x1, delete a.x1;\n  a.radius = a.y, delete a.y;\n  a.innerRadius = a.y0, delete a.y0;\n  a.outerRadius = a.y1, delete a.y1;\n  a.lineStartAngle = function() { return Object(_lineRadial_js__WEBPACK_IMPORTED_MODULE_2__[\"lineRadial\"])(x0()); }, delete a.lineX0;\n  a.lineEndAngle = function() { return Object(_lineRadial_js__WEBPACK_IMPORTED_MODULE_2__[\"lineRadial\"])(x1()); }, delete a.lineX1;\n  a.lineInnerRadius = function() { return Object(_lineRadial_js__WEBPACK_IMPORTED_MODULE_2__[\"lineRadial\"])(y0()); }, delete a.lineY0;\n  a.lineOuterRadius = function() { return Object(_lineRadial_js__WEBPACK_IMPORTED_MODULE_2__[\"lineRadial\"])(y1()); }, delete a.lineY1;\n\n  a.curve = function(_) {\n    return arguments.length ? c(Object(_curve_radial_js__WEBPACK_IMPORTED_MODULE_0__[\"default\"])(_)) : c()._curve;\n  };\n\n  return a;\n});\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvdmVnYS1mdW5jdGlvbnMvbm9kZV9tb2R1bGVzL2QzLXNoYXBlL3NyYy9hcmVhUmFkaWFsLmpzLmpzIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL3ZlZ2EtZnVuY3Rpb25zL25vZGVfbW9kdWxlcy9kMy1zaGFwZS9zcmMvYXJlYVJhZGlhbC5qcz85YjhkIl0sInNvdXJjZXNDb250ZW50IjpbImltcG9ydCBjdXJ2ZVJhZGlhbCwge2N1cnZlUmFkaWFsTGluZWFyfSBmcm9tIFwiLi9jdXJ2ZS9yYWRpYWwuanNcIjtcbmltcG9ydCBhcmVhIGZyb20gXCIuL2FyZWEuanNcIjtcbmltcG9ydCB7bGluZVJhZGlhbH0gZnJvbSBcIi4vbGluZVJhZGlhbC5qc1wiO1xuXG5leHBvcnQgZGVmYXVsdCBmdW5jdGlvbigpIHtcbiAgdmFyIGEgPSBhcmVhKCkuY3VydmUoY3VydmVSYWRpYWxMaW5lYXIpLFxuICAgICAgYyA9IGEuY3VydmUsXG4gICAgICB4MCA9IGEubGluZVgwLFxuICAgICAgeDEgPSBhLmxpbmVYMSxcbiAgICAgIHkwID0gYS5saW5lWTAsXG4gICAgICB5MSA9IGEubGluZVkxO1xuXG4gIGEuYW5nbGUgPSBhLngsIGRlbGV0ZSBhLng7XG4gIGEuc3RhcnRBbmdsZSA9IGEueDAsIGRlbGV0ZSBhLngwO1xuICBhLmVuZEFuZ2xlID0gYS54MSwgZGVsZXRlIGEueDE7XG4gIGEucmFkaXVzID0gYS55LCBkZWxldGUgYS55O1xuICBhLmlubmVyUmFkaXVzID0gYS55MCwgZGVsZXRlIGEueTA7XG4gIGEub3V0ZXJSYWRpdXMgPSBhLnkxLCBkZWxldGUgYS55MTtcbiAgYS5saW5lU3RhcnRBbmdsZSA9IGZ1bmN0aW9uKCkgeyByZXR1cm4gbGluZVJhZGlhbCh4MCgpKTsgfSwgZGVsZXRlIGEubGluZVgwO1xuICBhLmxpbmVFbmRBbmdsZSA9IGZ1bmN0aW9uKCkgeyByZXR1cm4gbGluZVJhZGlhbCh4MSgpKTsgfSwgZGVsZXRlIGEubGluZVgxO1xuICBhLmxpbmVJbm5lclJhZGl1cyA9IGZ1bmN0aW9uKCkgeyByZXR1cm4gbGluZVJhZGlhbCh5MCgpKTsgfSwgZGVsZXRlIGEubGluZVkwO1xuICBhLmxpbmVPdXRlclJhZGl1cyA9IGZ1bmN0aW9uKCkgeyByZXR1cm4gbGluZVJhZGlhbCh5MSgpKTsgfSwgZGVsZXRlIGEubGluZVkxO1xuXG4gIGEuY3VydmUgPSBmdW5jdGlvbihfKSB7XG4gICAgcmV0dXJuIGFyZ3VtZW50cy5sZW5ndGggPyBjKGN1cnZlUmFkaWFsKF8pKSA6IGMoKS5fY3VydmU7XG4gIH07XG5cbiAgcmV0dXJuIGE7XG59XG4iXSwibWFwcGluZ3MiOiJBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTsiLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///./node_modules/vega-functions/node_modules/d3-shape/src/areaRadial.js\n");

/***/ }),

/***/ "./node_modules/vega-functions/node_modules/d3-shape/src/array.js":
/*!************************************************************************!*\
  !*** ./node_modules/vega-functions/node_modules/d3-shape/src/array.js ***!
  \************************************************************************/
/*! exports provided: slice, default */
/***/ (function(module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"slice\", function() { return slice; });\nvar slice = Array.prototype.slice;\n\n/* harmony default export */ __webpack_exports__[\"default\"] = (function(x) {\n  return typeof x === \"object\" && \"length\" in x\n    ? x // Array, TypedArray, NodeList, array-like\n    : Array.from(x); // Map, Set, iterable, string, or anything else\n});\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvdmVnYS1mdW5jdGlvbnMvbm9kZV9tb2R1bGVzL2QzLXNoYXBlL3NyYy9hcnJheS5qcy5qcyIsInNvdXJjZXMiOlsid2VicGFjazovLy8uL25vZGVfbW9kdWxlcy92ZWdhLWZ1bmN0aW9ucy9ub2RlX21vZHVsZXMvZDMtc2hhcGUvc3JjL2FycmF5LmpzP2M0YmQiXSwic291cmNlc0NvbnRlbnQiOlsiZXhwb3J0IHZhciBzbGljZSA9IEFycmF5LnByb3RvdHlwZS5zbGljZTtcblxuZXhwb3J0IGRlZmF1bHQgZnVuY3Rpb24oeCkge1xuICByZXR1cm4gdHlwZW9mIHggPT09IFwib2JqZWN0XCIgJiYgXCJsZW5ndGhcIiBpbiB4XG4gICAgPyB4IC8vIEFycmF5LCBUeXBlZEFycmF5LCBOb2RlTGlzdCwgYXJyYXktbGlrZVxuICAgIDogQXJyYXkuZnJvbSh4KTsgLy8gTWFwLCBTZXQsIGl0ZXJhYmxlLCBzdHJpbmcsIG9yIGFueXRoaW5nIGVsc2Vcbn1cbiJdLCJtYXBwaW5ncyI6IkFBQUE7QUFBQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOyIsInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///./node_modules/vega-functions/node_modules/d3-shape/src/array.js\n");

/***/ }),

/***/ "./node_modules/vega-functions/node_modules/d3-shape/src/constant.js":
/*!***************************************************************************!*\
  !*** ./node_modules/vega-functions/node_modules/d3-shape/src/constant.js ***!
  \***************************************************************************/
/*! exports provided: default */
/***/ (function(module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony default export */ __webpack_exports__[\"default\"] = (function(x) {\n  return function constant() {\n    return x;\n  };\n});\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvdmVnYS1mdW5jdGlvbnMvbm9kZV9tb2R1bGVzL2QzLXNoYXBlL3NyYy9jb25zdGFudC5qcy5qcyIsInNvdXJjZXMiOlsid2VicGFjazovLy8uL25vZGVfbW9kdWxlcy92ZWdhLWZ1bmN0aW9ucy9ub2RlX21vZHVsZXMvZDMtc2hhcGUvc3JjL2NvbnN0YW50LmpzPzRhZTgiXSwic291cmNlc0NvbnRlbnQiOlsiZXhwb3J0IGRlZmF1bHQgZnVuY3Rpb24oeCkge1xuICByZXR1cm4gZnVuY3Rpb24gY29uc3RhbnQoKSB7XG4gICAgcmV0dXJuIHg7XG4gIH07XG59XG4iXSwibWFwcGluZ3MiOiJBQUFBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTsiLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///./node_modules/vega-functions/node_modules/d3-shape/src/constant.js\n");

/***/ }),

/***/ "./node_modules/vega-functions/node_modules/d3-shape/src/curve/basis.js":
/*!******************************************************************************!*\
  !*** ./node_modules/vega-functions/node_modules/d3-shape/src/curve/basis.js ***!
  \******************************************************************************/
/*! exports provided: point, Basis, default */
/***/ (function(module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"point\", function() { return point; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"Basis\", function() { return Basis; });\nfunction point(that, x, y) {\n  that._context.bezierCurveTo(\n    (2 * that._x0 + that._x1) / 3,\n    (2 * that._y0 + that._y1) / 3,\n    (that._x0 + 2 * that._x1) / 3,\n    (that._y0 + 2 * that._y1) / 3,\n    (that._x0 + 4 * that._x1 + x) / 6,\n    (that._y0 + 4 * that._y1 + y) / 6\n  );\n}\n\nfunction Basis(context) {\n  this._context = context;\n}\n\nBasis.prototype = {\n  areaStart: function() {\n    this._line = 0;\n  },\n  areaEnd: function() {\n    this._line = NaN;\n  },\n  lineStart: function() {\n    this._x0 = this._x1 =\n    this._y0 = this._y1 = NaN;\n    this._point = 0;\n  },\n  lineEnd: function() {\n    switch (this._point) {\n      case 3: point(this, this._x1, this._y1); // proceed\n      case 2: this._context.lineTo(this._x1, this._y1); break;\n    }\n    if (this._line || (this._line !== 0 && this._point === 1)) this._context.closePath();\n    this._line = 1 - this._line;\n  },\n  point: function(x, y) {\n    x = +x, y = +y;\n    switch (this._point) {\n      case 0: this._point = 1; this._line ? this._context.lineTo(x, y) : this._context.moveTo(x, y); break;\n      case 1: this._point = 2; break;\n      case 2: this._point = 3; this._context.lineTo((5 * this._x0 + this._x1) / 6, (5 * this._y0 + this._y1) / 6); // proceed\n      default: point(this, x, y); break;\n    }\n    this._x0 = this._x1, this._x1 = x;\n    this._y0 = this._y1, this._y1 = y;\n  }\n};\n\n/* harmony default export */ __webpack_exports__[\"default\"] = (function(context) {\n  return new Basis(context);\n});\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvdmVnYS1mdW5jdGlvbnMvbm9kZV9tb2R1bGVzL2QzLXNoYXBlL3NyYy9jdXJ2ZS9iYXNpcy5qcy5qcyIsInNvdXJjZXMiOlsid2VicGFjazovLy8uL25vZGVfbW9kdWxlcy92ZWdhLWZ1bmN0aW9ucy9ub2RlX21vZHVsZXMvZDMtc2hhcGUvc3JjL2N1cnZlL2Jhc2lzLmpzP2ViNjgiXSwic291cmNlc0NvbnRlbnQiOlsiZXhwb3J0IGZ1bmN0aW9uIHBvaW50KHRoYXQsIHgsIHkpIHtcbiAgdGhhdC5fY29udGV4dC5iZXppZXJDdXJ2ZVRvKFxuICAgICgyICogdGhhdC5feDAgKyB0aGF0Ll94MSkgLyAzLFxuICAgICgyICogdGhhdC5feTAgKyB0aGF0Ll95MSkgLyAzLFxuICAgICh0aGF0Ll94MCArIDIgKiB0aGF0Ll94MSkgLyAzLFxuICAgICh0aGF0Ll95MCArIDIgKiB0aGF0Ll95MSkgLyAzLFxuICAgICh0aGF0Ll94MCArIDQgKiB0aGF0Ll94MSArIHgpIC8gNixcbiAgICAodGhhdC5feTAgKyA0ICogdGhhdC5feTEgKyB5KSAvIDZcbiAgKTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIEJhc2lzKGNvbnRleHQpIHtcbiAgdGhpcy5fY29udGV4dCA9IGNvbnRleHQ7XG59XG5cbkJhc2lzLnByb3RvdHlwZSA9IHtcbiAgYXJlYVN0YXJ0OiBmdW5jdGlvbigpIHtcbiAgICB0aGlzLl9saW5lID0gMDtcbiAgfSxcbiAgYXJlYUVuZDogZnVuY3Rpb24oKSB7XG4gICAgdGhpcy5fbGluZSA9IE5hTjtcbiAgfSxcbiAgbGluZVN0YXJ0OiBmdW5jdGlvbigpIHtcbiAgICB0aGlzLl94MCA9IHRoaXMuX3gxID1cbiAgICB0aGlzLl95MCA9IHRoaXMuX3kxID0gTmFOO1xuICAgIHRoaXMuX3BvaW50ID0gMDtcbiAgfSxcbiAgbGluZUVuZDogZnVuY3Rpb24oKSB7XG4gICAgc3dpdGNoICh0aGlzLl9wb2ludCkge1xuICAgICAgY2FzZSAzOiBwb2ludCh0aGlzLCB0aGlzLl94MSwgdGhpcy5feTEpOyAvLyBwcm9jZWVkXG4gICAgICBjYXNlIDI6IHRoaXMuX2NvbnRleHQubGluZVRvKHRoaXMuX3gxLCB0aGlzLl95MSk7IGJyZWFrO1xuICAgIH1cbiAgICBpZiAodGhpcy5fbGluZSB8fCAodGhpcy5fbGluZSAhPT0gMCAmJiB0aGlzLl9wb2ludCA9PT0gMSkpIHRoaXMuX2NvbnRleHQuY2xvc2VQYXRoKCk7XG4gICAgdGhpcy5fbGluZSA9IDEgLSB0aGlzLl9saW5lO1xuICB9LFxuICBwb2ludDogZnVuY3Rpb24oeCwgeSkge1xuICAgIHggPSAreCwgeSA9ICt5O1xuICAgIHN3aXRjaCAodGhpcy5fcG9pbnQpIHtcbiAgICAgIGNhc2UgMDogdGhpcy5fcG9pbnQgPSAxOyB0aGlzLl9saW5lID8gdGhpcy5fY29udGV4dC5saW5lVG8oeCwgeSkgOiB0aGlzLl9jb250ZXh0Lm1vdmVUbyh4LCB5KTsgYnJlYWs7XG4gICAgICBjYXNlIDE6IHRoaXMuX3BvaW50ID0gMjsgYnJlYWs7XG4gICAgICBjYXNlIDI6IHRoaXMuX3BvaW50ID0gMzsgdGhpcy5fY29udGV4dC5saW5lVG8oKDUgKiB0aGlzLl94MCArIHRoaXMuX3gxKSAvIDYsICg1ICogdGhpcy5feTAgKyB0aGlzLl95MSkgLyA2KTsgLy8gcHJvY2VlZFxuICAgICAgZGVmYXVsdDogcG9pbnQodGhpcywgeCwgeSk7IGJyZWFrO1xuICAgIH1cbiAgICB0aGlzLl94MCA9IHRoaXMuX3gxLCB0aGlzLl94MSA9IHg7XG4gICAgdGhpcy5feTAgPSB0aGlzLl95MSwgdGhpcy5feTEgPSB5O1xuICB9XG59O1xuXG5leHBvcnQgZGVmYXVsdCBmdW5jdGlvbihjb250ZXh0KSB7XG4gIHJldHVybiBuZXcgQmFzaXMoY29udGV4dCk7XG59XG4iXSwibWFwcGluZ3MiOiJBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTsiLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///./node_modules/vega-functions/node_modules/d3-shape/src/curve/basis.js\n");

/***/ }),

/***/ "./node_modules/vega-functions/node_modules/d3-shape/src/curve/basisClosed.js":
/*!************************************************************************************!*\
  !*** ./node_modules/vega-functions/node_modules/d3-shape/src/curve/basisClosed.js ***!
  \************************************************************************************/
/*! exports provided: default */
/***/ (function(module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _noop_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../noop.js */ \"./node_modules/vega-functions/node_modules/d3-shape/src/noop.js\");\n/* harmony import */ var _basis_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./basis.js */ \"./node_modules/vega-functions/node_modules/d3-shape/src/curve/basis.js\");\n\n\n\nfunction BasisClosed(context) {\n  this._context = context;\n}\n\nBasisClosed.prototype = {\n  areaStart: _noop_js__WEBPACK_IMPORTED_MODULE_0__[\"default\"],\n  areaEnd: _noop_js__WEBPACK_IMPORTED_MODULE_0__[\"default\"],\n  lineStart: function() {\n    this._x0 = this._x1 = this._x2 = this._x3 = this._x4 =\n    this._y0 = this._y1 = this._y2 = this._y3 = this._y4 = NaN;\n    this._point = 0;\n  },\n  lineEnd: function() {\n    switch (this._point) {\n      case 1: {\n        this._context.moveTo(this._x2, this._y2);\n        this._context.closePath();\n        break;\n      }\n      case 2: {\n        this._context.moveTo((this._x2 + 2 * this._x3) / 3, (this._y2 + 2 * this._y3) / 3);\n        this._context.lineTo((this._x3 + 2 * this._x2) / 3, (this._y3 + 2 * this._y2) / 3);\n        this._context.closePath();\n        break;\n      }\n      case 3: {\n        this.point(this._x2, this._y2);\n        this.point(this._x3, this._y3);\n        this.point(this._x4, this._y4);\n        break;\n      }\n    }\n  },\n  point: function(x, y) {\n    x = +x, y = +y;\n    switch (this._point) {\n      case 0: this._point = 1; this._x2 = x, this._y2 = y; break;\n      case 1: this._point = 2; this._x3 = x, this._y3 = y; break;\n      case 2: this._point = 3; this._x4 = x, this._y4 = y; this._context.moveTo((this._x0 + 4 * this._x1 + x) / 6, (this._y0 + 4 * this._y1 + y) / 6); break;\n      default: Object(_basis_js__WEBPACK_IMPORTED_MODULE_1__[\"point\"])(this, x, y); break;\n    }\n    this._x0 = this._x1, this._x1 = x;\n    this._y0 = this._y1, this._y1 = y;\n  }\n};\n\n/* harmony default export */ __webpack_exports__[\"default\"] = (function(context) {\n  return new BasisClosed(context);\n});\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvdmVnYS1mdW5jdGlvbnMvbm9kZV9tb2R1bGVzL2QzLXNoYXBlL3NyYy9jdXJ2ZS9iYXNpc0Nsb3NlZC5qcy5qcyIsInNvdXJjZXMiOlsid2VicGFjazovLy8uL25vZGVfbW9kdWxlcy92ZWdhLWZ1bmN0aW9ucy9ub2RlX21vZHVsZXMvZDMtc2hhcGUvc3JjL2N1cnZlL2Jhc2lzQ2xvc2VkLmpzP2M2ZjEiXSwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IG5vb3AgZnJvbSBcIi4uL25vb3AuanNcIjtcbmltcG9ydCB7cG9pbnR9IGZyb20gXCIuL2Jhc2lzLmpzXCI7XG5cbmZ1bmN0aW9uIEJhc2lzQ2xvc2VkKGNvbnRleHQpIHtcbiAgdGhpcy5fY29udGV4dCA9IGNvbnRleHQ7XG59XG5cbkJhc2lzQ2xvc2VkLnByb3RvdHlwZSA9IHtcbiAgYXJlYVN0YXJ0OiBub29wLFxuICBhcmVhRW5kOiBub29wLFxuICBsaW5lU3RhcnQ6IGZ1bmN0aW9uKCkge1xuICAgIHRoaXMuX3gwID0gdGhpcy5feDEgPSB0aGlzLl94MiA9IHRoaXMuX3gzID0gdGhpcy5feDQgPVxuICAgIHRoaXMuX3kwID0gdGhpcy5feTEgPSB0aGlzLl95MiA9IHRoaXMuX3kzID0gdGhpcy5feTQgPSBOYU47XG4gICAgdGhpcy5fcG9pbnQgPSAwO1xuICB9LFxuICBsaW5lRW5kOiBmdW5jdGlvbigpIHtcbiAgICBzd2l0Y2ggKHRoaXMuX3BvaW50KSB7XG4gICAgICBjYXNlIDE6IHtcbiAgICAgICAgdGhpcy5fY29udGV4dC5tb3ZlVG8odGhpcy5feDIsIHRoaXMuX3kyKTtcbiAgICAgICAgdGhpcy5fY29udGV4dC5jbG9zZVBhdGgoKTtcbiAgICAgICAgYnJlYWs7XG4gICAgICB9XG4gICAgICBjYXNlIDI6IHtcbiAgICAgICAgdGhpcy5fY29udGV4dC5tb3ZlVG8oKHRoaXMuX3gyICsgMiAqIHRoaXMuX3gzKSAvIDMsICh0aGlzLl95MiArIDIgKiB0aGlzLl95MykgLyAzKTtcbiAgICAgICAgdGhpcy5fY29udGV4dC5saW5lVG8oKHRoaXMuX3gzICsgMiAqIHRoaXMuX3gyKSAvIDMsICh0aGlzLl95MyArIDIgKiB0aGlzLl95MikgLyAzKTtcbiAgICAgICAgdGhpcy5fY29udGV4dC5jbG9zZVBhdGgoKTtcbiAgICAgICAgYnJlYWs7XG4gICAgICB9XG4gICAgICBjYXNlIDM6IHtcbiAgICAgICAgdGhpcy5wb2ludCh0aGlzLl94MiwgdGhpcy5feTIpO1xuICAgICAgICB0aGlzLnBvaW50KHRoaXMuX3gzLCB0aGlzLl95Myk7XG4gICAgICAgIHRoaXMucG9pbnQodGhpcy5feDQsIHRoaXMuX3k0KTtcbiAgICAgICAgYnJlYWs7XG4gICAgICB9XG4gICAgfVxuICB9LFxuICBwb2ludDogZnVuY3Rpb24oeCwgeSkge1xuICAgIHggPSAreCwgeSA9ICt5O1xuICAgIHN3aXRjaCAodGhpcy5fcG9pbnQpIHtcbiAgICAgIGNhc2UgMDogdGhpcy5fcG9pbnQgPSAxOyB0aGlzLl94MiA9IHgsIHRoaXMuX3kyID0geTsgYnJlYWs7XG4gICAgICBjYXNlIDE6IHRoaXMuX3BvaW50ID0gMjsgdGhpcy5feDMgPSB4LCB0aGlzLl95MyA9IHk7IGJyZWFrO1xuICAgICAgY2FzZSAyOiB0aGlzLl9wb2ludCA9IDM7IHRoaXMuX3g0ID0geCwgdGhpcy5feTQgPSB5OyB0aGlzLl9jb250ZXh0Lm1vdmVUbygodGhpcy5feDAgKyA0ICogdGhpcy5feDEgKyB4KSAvIDYsICh0aGlzLl95MCArIDQgKiB0aGlzLl95MSArIHkpIC8gNik7IGJyZWFrO1xuICAgICAgZGVmYXVsdDogcG9pbnQodGhpcywgeCwgeSk7IGJyZWFrO1xuICAgIH1cbiAgICB0aGlzLl94MCA9IHRoaXMuX3gxLCB0aGlzLl94MSA9IHg7XG4gICAgdGhpcy5feTAgPSB0aGlzLl95MSwgdGhpcy5feTEgPSB5O1xuICB9XG59O1xuXG5leHBvcnQgZGVmYXVsdCBmdW5jdGlvbihjb250ZXh0KSB7XG4gIHJldHVybiBuZXcgQmFzaXNDbG9zZWQoY29udGV4dCk7XG59XG4iXSwibWFwcGluZ3MiOiJBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOyIsInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///./node_modules/vega-functions/node_modules/d3-shape/src/curve/basisClosed.js\n");

/***/ }),

/***/ "./node_modules/vega-functions/node_modules/d3-shape/src/curve/basisOpen.js":
/*!**********************************************************************************!*\
  !*** ./node_modules/vega-functions/node_modules/d3-shape/src/curve/basisOpen.js ***!
  \**********************************************************************************/
/*! exports provided: default */
/***/ (function(module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _basis_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./basis.js */ \"./node_modules/vega-functions/node_modules/d3-shape/src/curve/basis.js\");\n\n\nfunction BasisOpen(context) {\n  this._context = context;\n}\n\nBasisOpen.prototype = {\n  areaStart: function() {\n    this._line = 0;\n  },\n  areaEnd: function() {\n    this._line = NaN;\n  },\n  lineStart: function() {\n    this._x0 = this._x1 =\n    this._y0 = this._y1 = NaN;\n    this._point = 0;\n  },\n  lineEnd: function() {\n    if (this._line || (this._line !== 0 && this._point === 3)) this._context.closePath();\n    this._line = 1 - this._line;\n  },\n  point: function(x, y) {\n    x = +x, y = +y;\n    switch (this._point) {\n      case 0: this._point = 1; break;\n      case 1: this._point = 2; break;\n      case 2: this._point = 3; var x0 = (this._x0 + 4 * this._x1 + x) / 6, y0 = (this._y0 + 4 * this._y1 + y) / 6; this._line ? this._context.lineTo(x0, y0) : this._context.moveTo(x0, y0); break;\n      case 3: this._point = 4; // proceed\n      default: Object(_basis_js__WEBPACK_IMPORTED_MODULE_0__[\"point\"])(this, x, y); break;\n    }\n    this._x0 = this._x1, this._x1 = x;\n    this._y0 = this._y1, this._y1 = y;\n  }\n};\n\n/* harmony default export */ __webpack_exports__[\"default\"] = (function(context) {\n  return new BasisOpen(context);\n});\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvdmVnYS1mdW5jdGlvbnMvbm9kZV9tb2R1bGVzL2QzLXNoYXBlL3NyYy9jdXJ2ZS9iYXNpc09wZW4uanMuanMiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvdmVnYS1mdW5jdGlvbnMvbm9kZV9tb2R1bGVzL2QzLXNoYXBlL3NyYy9jdXJ2ZS9iYXNpc09wZW4uanM/OTFkMCJdLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge3BvaW50fSBmcm9tIFwiLi9iYXNpcy5qc1wiO1xuXG5mdW5jdGlvbiBCYXNpc09wZW4oY29udGV4dCkge1xuICB0aGlzLl9jb250ZXh0ID0gY29udGV4dDtcbn1cblxuQmFzaXNPcGVuLnByb3RvdHlwZSA9IHtcbiAgYXJlYVN0YXJ0OiBmdW5jdGlvbigpIHtcbiAgICB0aGlzLl9saW5lID0gMDtcbiAgfSxcbiAgYXJlYUVuZDogZnVuY3Rpb24oKSB7XG4gICAgdGhpcy5fbGluZSA9IE5hTjtcbiAgfSxcbiAgbGluZVN0YXJ0OiBmdW5jdGlvbigpIHtcbiAgICB0aGlzLl94MCA9IHRoaXMuX3gxID1cbiAgICB0aGlzLl95MCA9IHRoaXMuX3kxID0gTmFOO1xuICAgIHRoaXMuX3BvaW50ID0gMDtcbiAgfSxcbiAgbGluZUVuZDogZnVuY3Rpb24oKSB7XG4gICAgaWYgKHRoaXMuX2xpbmUgfHwgKHRoaXMuX2xpbmUgIT09IDAgJiYgdGhpcy5fcG9pbnQgPT09IDMpKSB0aGlzLl9jb250ZXh0LmNsb3NlUGF0aCgpO1xuICAgIHRoaXMuX2xpbmUgPSAxIC0gdGhpcy5fbGluZTtcbiAgfSxcbiAgcG9pbnQ6IGZ1bmN0aW9uKHgsIHkpIHtcbiAgICB4ID0gK3gsIHkgPSAreTtcbiAgICBzd2l0Y2ggKHRoaXMuX3BvaW50KSB7XG4gICAgICBjYXNlIDA6IHRoaXMuX3BvaW50ID0gMTsgYnJlYWs7XG4gICAgICBjYXNlIDE6IHRoaXMuX3BvaW50ID0gMjsgYnJlYWs7XG4gICAgICBjYXNlIDI6IHRoaXMuX3BvaW50ID0gMzsgdmFyIHgwID0gKHRoaXMuX3gwICsgNCAqIHRoaXMuX3gxICsgeCkgLyA2LCB5MCA9ICh0aGlzLl95MCArIDQgKiB0aGlzLl95MSArIHkpIC8gNjsgdGhpcy5fbGluZSA/IHRoaXMuX2NvbnRleHQubGluZVRvKHgwLCB5MCkgOiB0aGlzLl9jb250ZXh0Lm1vdmVUbyh4MCwgeTApOyBicmVhaztcbiAgICAgIGNhc2UgMzogdGhpcy5fcG9pbnQgPSA0OyAvLyBwcm9jZWVkXG4gICAgICBkZWZhdWx0OiBwb2ludCh0aGlzLCB4LCB5KTsgYnJlYWs7XG4gICAgfVxuICAgIHRoaXMuX3gwID0gdGhpcy5feDEsIHRoaXMuX3gxID0geDtcbiAgICB0aGlzLl95MCA9IHRoaXMuX3kxLCB0aGlzLl95MSA9IHk7XG4gIH1cbn07XG5cbmV4cG9ydCBkZWZhdWx0IGZ1bmN0aW9uKGNvbnRleHQpIHtcbiAgcmV0dXJuIG5ldyBCYXNpc09wZW4oY29udGV4dCk7XG59XG4iXSwibWFwcGluZ3MiOiJBQUFBO0FBQUE7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7Iiwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///./node_modules/vega-functions/node_modules/d3-shape/src/curve/basisOpen.js\n");

/***/ }),

/***/ "./node_modules/vega-functions/node_modules/d3-shape/src/curve/bump.js":
/*!*****************************************************************************!*\
  !*** ./node_modules/vega-functions/node_modules/d3-shape/src/curve/bump.js ***!
  \*****************************************************************************/
/*! exports provided: bumpX, bumpY */
/***/ (function(module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"bumpX\", function() { return bumpX; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"bumpY\", function() { return bumpY; });\nclass Bump {\n  constructor(context, x) {\n    this._context = context;\n    this._x = x;\n  }\n  areaStart() {\n    this._line = 0;\n  }\n  areaEnd() {\n    this._line = NaN;\n  }\n  lineStart() {\n    this._point = 0;\n  }\n  lineEnd() {\n    if (this._line || (this._line !== 0 && this._point === 1)) this._context.closePath();\n    this._line = 1 - this._line;\n  }\n  point(x, y) {\n    x = +x, y = +y;\n    switch (this._point) {\n      case 0: {\n        this._point = 1;\n        if (this._line) this._context.lineTo(x, y);\n        else this._context.moveTo(x, y);\n        break;\n      }\n      case 1: this._point = 2; // proceed\n      default: {\n        if (this._x) this._context.bezierCurveTo(this._x0 = (this._x0 + x) / 2, this._y0, this._x0, y, x, y);\n        else this._context.bezierCurveTo(this._x0, this._y0 = (this._y0 + y) / 2, x, this._y0, x, y);\n        break;\n      }\n    }\n    this._x0 = x, this._y0 = y;\n  }\n}\n\nfunction bumpX(context) {\n  return new Bump(context, true);\n}\n\nfunction bumpY(context) {\n  return new Bump(context, false);\n}\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvdmVnYS1mdW5jdGlvbnMvbm9kZV9tb2R1bGVzL2QzLXNoYXBlL3NyYy9jdXJ2ZS9idW1wLmpzLmpzIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL3ZlZ2EtZnVuY3Rpb25zL25vZGVfbW9kdWxlcy9kMy1zaGFwZS9zcmMvY3VydmUvYnVtcC5qcz8wOTRiIl0sInNvdXJjZXNDb250ZW50IjpbImNsYXNzIEJ1bXAge1xuICBjb25zdHJ1Y3Rvcihjb250ZXh0LCB4KSB7XG4gICAgdGhpcy5fY29udGV4dCA9IGNvbnRleHQ7XG4gICAgdGhpcy5feCA9IHg7XG4gIH1cbiAgYXJlYVN0YXJ0KCkge1xuICAgIHRoaXMuX2xpbmUgPSAwO1xuICB9XG4gIGFyZWFFbmQoKSB7XG4gICAgdGhpcy5fbGluZSA9IE5hTjtcbiAgfVxuICBsaW5lU3RhcnQoKSB7XG4gICAgdGhpcy5fcG9pbnQgPSAwO1xuICB9XG4gIGxpbmVFbmQoKSB7XG4gICAgaWYgKHRoaXMuX2xpbmUgfHwgKHRoaXMuX2xpbmUgIT09IDAgJiYgdGhpcy5fcG9pbnQgPT09IDEpKSB0aGlzLl9jb250ZXh0LmNsb3NlUGF0aCgpO1xuICAgIHRoaXMuX2xpbmUgPSAxIC0gdGhpcy5fbGluZTtcbiAgfVxuICBwb2ludCh4LCB5KSB7XG4gICAgeCA9ICt4LCB5ID0gK3k7XG4gICAgc3dpdGNoICh0aGlzLl9wb2ludCkge1xuICAgICAgY2FzZSAwOiB7XG4gICAgICAgIHRoaXMuX3BvaW50ID0gMTtcbiAgICAgICAgaWYgKHRoaXMuX2xpbmUpIHRoaXMuX2NvbnRleHQubGluZVRvKHgsIHkpO1xuICAgICAgICBlbHNlIHRoaXMuX2NvbnRleHQubW92ZVRvKHgsIHkpO1xuICAgICAgICBicmVhaztcbiAgICAgIH1cbiAgICAgIGNhc2UgMTogdGhpcy5fcG9pbnQgPSAyOyAvLyBwcm9jZWVkXG4gICAgICBkZWZhdWx0OiB7XG4gICAgICAgIGlmICh0aGlzLl94KSB0aGlzLl9jb250ZXh0LmJlemllckN1cnZlVG8odGhpcy5feDAgPSAodGhpcy5feDAgKyB4KSAvIDIsIHRoaXMuX3kwLCB0aGlzLl94MCwgeSwgeCwgeSk7XG4gICAgICAgIGVsc2UgdGhpcy5fY29udGV4dC5iZXppZXJDdXJ2ZVRvKHRoaXMuX3gwLCB0aGlzLl95MCA9ICh0aGlzLl95MCArIHkpIC8gMiwgeCwgdGhpcy5feTAsIHgsIHkpO1xuICAgICAgICBicmVhaztcbiAgICAgIH1cbiAgICB9XG4gICAgdGhpcy5feDAgPSB4LCB0aGlzLl95MCA9IHk7XG4gIH1cbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGJ1bXBYKGNvbnRleHQpIHtcbiAgcmV0dXJuIG5ldyBCdW1wKGNvbnRleHQsIHRydWUpO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gYnVtcFkoY29udGV4dCkge1xuICByZXR1cm4gbmV3IEJ1bXAoY29udGV4dCwgZmFsc2UpO1xufVxuIl0sIm1hcHBpbmdzIjoiQUFBQTtBQUFBO0FBQUE7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7Iiwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///./node_modules/vega-functions/node_modules/d3-shape/src/curve/bump.js\n");

/***/ }),

/***/ "./node_modules/vega-functions/node_modules/d3-shape/src/curve/bundle.js":
/*!*******************************************************************************!*\
  !*** ./node_modules/vega-functions/node_modules/d3-shape/src/curve/bundle.js ***!
  \*******************************************************************************/
/*! exports provided: default */
/***/ (function(module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _basis_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./basis.js */ \"./node_modules/vega-functions/node_modules/d3-shape/src/curve/basis.js\");\n\n\nfunction Bundle(context, beta) {\n  this._basis = new _basis_js__WEBPACK_IMPORTED_MODULE_0__[\"Basis\"](context);\n  this._beta = beta;\n}\n\nBundle.prototype = {\n  lineStart: function() {\n    this._x = [];\n    this._y = [];\n    this._basis.lineStart();\n  },\n  lineEnd: function() {\n    var x = this._x,\n        y = this._y,\n        j = x.length - 1;\n\n    if (j > 0) {\n      var x0 = x[0],\n          y0 = y[0],\n          dx = x[j] - x0,\n          dy = y[j] - y0,\n          i = -1,\n          t;\n\n      while (++i <= j) {\n        t = i / j;\n        this._basis.point(\n          this._beta * x[i] + (1 - this._beta) * (x0 + t * dx),\n          this._beta * y[i] + (1 - this._beta) * (y0 + t * dy)\n        );\n      }\n    }\n\n    this._x = this._y = null;\n    this._basis.lineEnd();\n  },\n  point: function(x, y) {\n    this._x.push(+x);\n    this._y.push(+y);\n  }\n};\n\n/* harmony default export */ __webpack_exports__[\"default\"] = ((function custom(beta) {\n\n  function bundle(context) {\n    return beta === 1 ? new _basis_js__WEBPACK_IMPORTED_MODULE_0__[\"Basis\"](context) : new Bundle(context, beta);\n  }\n\n  bundle.beta = function(beta) {\n    return custom(+beta);\n  };\n\n  return bundle;\n})(0.85));\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvdmVnYS1mdW5jdGlvbnMvbm9kZV9tb2R1bGVzL2QzLXNoYXBlL3NyYy9jdXJ2ZS9idW5kbGUuanMuanMiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvdmVnYS1mdW5jdGlvbnMvbm9kZV9tb2R1bGVzL2QzLXNoYXBlL3NyYy9jdXJ2ZS9idW5kbGUuanM/NmQ3NiJdLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge0Jhc2lzfSBmcm9tIFwiLi9iYXNpcy5qc1wiO1xuXG5mdW5jdGlvbiBCdW5kbGUoY29udGV4dCwgYmV0YSkge1xuICB0aGlzLl9iYXNpcyA9IG5ldyBCYXNpcyhjb250ZXh0KTtcbiAgdGhpcy5fYmV0YSA9IGJldGE7XG59XG5cbkJ1bmRsZS5wcm90b3R5cGUgPSB7XG4gIGxpbmVTdGFydDogZnVuY3Rpb24oKSB7XG4gICAgdGhpcy5feCA9IFtdO1xuICAgIHRoaXMuX3kgPSBbXTtcbiAgICB0aGlzLl9iYXNpcy5saW5lU3RhcnQoKTtcbiAgfSxcbiAgbGluZUVuZDogZnVuY3Rpb24oKSB7XG4gICAgdmFyIHggPSB0aGlzLl94LFxuICAgICAgICB5ID0gdGhpcy5feSxcbiAgICAgICAgaiA9IHgubGVuZ3RoIC0gMTtcblxuICAgIGlmIChqID4gMCkge1xuICAgICAgdmFyIHgwID0geFswXSxcbiAgICAgICAgICB5MCA9IHlbMF0sXG4gICAgICAgICAgZHggPSB4W2pdIC0geDAsXG4gICAgICAgICAgZHkgPSB5W2pdIC0geTAsXG4gICAgICAgICAgaSA9IC0xLFxuICAgICAgICAgIHQ7XG5cbiAgICAgIHdoaWxlICgrK2kgPD0gaikge1xuICAgICAgICB0ID0gaSAvIGo7XG4gICAgICAgIHRoaXMuX2Jhc2lzLnBvaW50KFxuICAgICAgICAgIHRoaXMuX2JldGEgKiB4W2ldICsgKDEgLSB0aGlzLl9iZXRhKSAqICh4MCArIHQgKiBkeCksXG4gICAgICAgICAgdGhpcy5fYmV0YSAqIHlbaV0gKyAoMSAtIHRoaXMuX2JldGEpICogKHkwICsgdCAqIGR5KVxuICAgICAgICApO1xuICAgICAgfVxuICAgIH1cblxuICAgIHRoaXMuX3ggPSB0aGlzLl95ID0gbnVsbDtcbiAgICB0aGlzLl9iYXNpcy5saW5lRW5kKCk7XG4gIH0sXG4gIHBvaW50OiBmdW5jdGlvbih4LCB5KSB7XG4gICAgdGhpcy5feC5wdXNoKCt4KTtcbiAgICB0aGlzLl95LnB1c2goK3kpO1xuICB9XG59O1xuXG5leHBvcnQgZGVmYXVsdCAoZnVuY3Rpb24gY3VzdG9tKGJldGEpIHtcblxuICBmdW5jdGlvbiBidW5kbGUoY29udGV4dCkge1xuICAgIHJldHVybiBiZXRhID09PSAxID8gbmV3IEJhc2lzKGNvbnRleHQpIDogbmV3IEJ1bmRsZShjb250ZXh0LCBiZXRhKTtcbiAgfVxuXG4gIGJ1bmRsZS5iZXRhID0gZnVuY3Rpb24oYmV0YSkge1xuICAgIHJldHVybiBjdXN0b20oK2JldGEpO1xuICB9O1xuXG4gIHJldHVybiBidW5kbGU7XG59KSgwLjg1KTtcbiJdLCJtYXBwaW5ncyI6IkFBQUE7QUFBQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7Iiwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///./node_modules/vega-functions/node_modules/d3-shape/src/curve/bundle.js\n");

/***/ }),

/***/ "./node_modules/vega-functions/node_modules/d3-shape/src/curve/cardinal.js":
/*!*********************************************************************************!*\
  !*** ./node_modules/vega-functions/node_modules/d3-shape/src/curve/cardinal.js ***!
  \*********************************************************************************/
/*! exports provided: point, Cardinal, default */
/***/ (function(module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"point\", function() { return point; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"Cardinal\", function() { return Cardinal; });\nfunction point(that, x, y) {\n  that._context.bezierCurveTo(\n    that._x1 + that._k * (that._x2 - that._x0),\n    that._y1 + that._k * (that._y2 - that._y0),\n    that._x2 + that._k * (that._x1 - x),\n    that._y2 + that._k * (that._y1 - y),\n    that._x2,\n    that._y2\n  );\n}\n\nfunction Cardinal(context, tension) {\n  this._context = context;\n  this._k = (1 - tension) / 6;\n}\n\nCardinal.prototype = {\n  areaStart: function() {\n    this._line = 0;\n  },\n  areaEnd: function() {\n    this._line = NaN;\n  },\n  lineStart: function() {\n    this._x0 = this._x1 = this._x2 =\n    this._y0 = this._y1 = this._y2 = NaN;\n    this._point = 0;\n  },\n  lineEnd: function() {\n    switch (this._point) {\n      case 2: this._context.lineTo(this._x2, this._y2); break;\n      case 3: point(this, this._x1, this._y1); break;\n    }\n    if (this._line || (this._line !== 0 && this._point === 1)) this._context.closePath();\n    this._line = 1 - this._line;\n  },\n  point: function(x, y) {\n    x = +x, y = +y;\n    switch (this._point) {\n      case 0: this._point = 1; this._line ? this._context.lineTo(x, y) : this._context.moveTo(x, y); break;\n      case 1: this._point = 2; this._x1 = x, this._y1 = y; break;\n      case 2: this._point = 3; // proceed\n      default: point(this, x, y); break;\n    }\n    this._x0 = this._x1, this._x1 = this._x2, this._x2 = x;\n    this._y0 = this._y1, this._y1 = this._y2, this._y2 = y;\n  }\n};\n\n/* harmony default export */ __webpack_exports__[\"default\"] = ((function custom(tension) {\n\n  function cardinal(context) {\n    return new Cardinal(context, tension);\n  }\n\n  cardinal.tension = function(tension) {\n    return custom(+tension);\n  };\n\n  return cardinal;\n})(0));\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvdmVnYS1mdW5jdGlvbnMvbm9kZV9tb2R1bGVzL2QzLXNoYXBlL3NyYy9jdXJ2ZS9jYXJkaW5hbC5qcy5qcyIsInNvdXJjZXMiOlsid2VicGFjazovLy8uL25vZGVfbW9kdWxlcy92ZWdhLWZ1bmN0aW9ucy9ub2RlX21vZHVsZXMvZDMtc2hhcGUvc3JjL2N1cnZlL2NhcmRpbmFsLmpzPzI0NTAiXSwic291cmNlc0NvbnRlbnQiOlsiZXhwb3J0IGZ1bmN0aW9uIHBvaW50KHRoYXQsIHgsIHkpIHtcbiAgdGhhdC5fY29udGV4dC5iZXppZXJDdXJ2ZVRvKFxuICAgIHRoYXQuX3gxICsgdGhhdC5fayAqICh0aGF0Ll94MiAtIHRoYXQuX3gwKSxcbiAgICB0aGF0Ll95MSArIHRoYXQuX2sgKiAodGhhdC5feTIgLSB0aGF0Ll95MCksXG4gICAgdGhhdC5feDIgKyB0aGF0Ll9rICogKHRoYXQuX3gxIC0geCksXG4gICAgdGhhdC5feTIgKyB0aGF0Ll9rICogKHRoYXQuX3kxIC0geSksXG4gICAgdGhhdC5feDIsXG4gICAgdGhhdC5feTJcbiAgKTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIENhcmRpbmFsKGNvbnRleHQsIHRlbnNpb24pIHtcbiAgdGhpcy5fY29udGV4dCA9IGNvbnRleHQ7XG4gIHRoaXMuX2sgPSAoMSAtIHRlbnNpb24pIC8gNjtcbn1cblxuQ2FyZGluYWwucHJvdG90eXBlID0ge1xuICBhcmVhU3RhcnQ6IGZ1bmN0aW9uKCkge1xuICAgIHRoaXMuX2xpbmUgPSAwO1xuICB9LFxuICBhcmVhRW5kOiBmdW5jdGlvbigpIHtcbiAgICB0aGlzLl9saW5lID0gTmFOO1xuICB9LFxuICBsaW5lU3RhcnQ6IGZ1bmN0aW9uKCkge1xuICAgIHRoaXMuX3gwID0gdGhpcy5feDEgPSB0aGlzLl94MiA9XG4gICAgdGhpcy5feTAgPSB0aGlzLl95MSA9IHRoaXMuX3kyID0gTmFOO1xuICAgIHRoaXMuX3BvaW50ID0gMDtcbiAgfSxcbiAgbGluZUVuZDogZnVuY3Rpb24oKSB7XG4gICAgc3dpdGNoICh0aGlzLl9wb2ludCkge1xuICAgICAgY2FzZSAyOiB0aGlzLl9jb250ZXh0LmxpbmVUbyh0aGlzLl94MiwgdGhpcy5feTIpOyBicmVhaztcbiAgICAgIGNhc2UgMzogcG9pbnQodGhpcywgdGhpcy5feDEsIHRoaXMuX3kxKTsgYnJlYWs7XG4gICAgfVxuICAgIGlmICh0aGlzLl9saW5lIHx8ICh0aGlzLl9saW5lICE9PSAwICYmIHRoaXMuX3BvaW50ID09PSAxKSkgdGhpcy5fY29udGV4dC5jbG9zZVBhdGgoKTtcbiAgICB0aGlzLl9saW5lID0gMSAtIHRoaXMuX2xpbmU7XG4gIH0sXG4gIHBvaW50OiBmdW5jdGlvbih4LCB5KSB7XG4gICAgeCA9ICt4LCB5ID0gK3k7XG4gICAgc3dpdGNoICh0aGlzLl9wb2ludCkge1xuICAgICAgY2FzZSAwOiB0aGlzLl9wb2ludCA9IDE7IHRoaXMuX2xpbmUgPyB0aGlzLl9jb250ZXh0LmxpbmVUbyh4LCB5KSA6IHRoaXMuX2NvbnRleHQubW92ZVRvKHgsIHkpOyBicmVhaztcbiAgICAgIGNhc2UgMTogdGhpcy5fcG9pbnQgPSAyOyB0aGlzLl94MSA9IHgsIHRoaXMuX3kxID0geTsgYnJlYWs7XG4gICAgICBjYXNlIDI6IHRoaXMuX3BvaW50ID0gMzsgLy8gcHJvY2VlZFxuICAgICAgZGVmYXVsdDogcG9pbnQodGhpcywgeCwgeSk7IGJyZWFrO1xuICAgIH1cbiAgICB0aGlzLl94MCA9IHRoaXMuX3gxLCB0aGlzLl94MSA9IHRoaXMuX3gyLCB0aGlzLl94MiA9IHg7XG4gICAgdGhpcy5feTAgPSB0aGlzLl95MSwgdGhpcy5feTEgPSB0aGlzLl95MiwgdGhpcy5feTIgPSB5O1xuICB9XG59O1xuXG5leHBvcnQgZGVmYXVsdCAoZnVuY3Rpb24gY3VzdG9tKHRlbnNpb24pIHtcblxuICBmdW5jdGlvbiBjYXJkaW5hbChjb250ZXh0KSB7XG4gICAgcmV0dXJuIG5ldyBDYXJkaW5hbChjb250ZXh0LCB0ZW5zaW9uKTtcbiAgfVxuXG4gIGNhcmRpbmFsLnRlbnNpb24gPSBmdW5jdGlvbih0ZW5zaW9uKSB7XG4gICAgcmV0dXJuIGN1c3RvbSgrdGVuc2lvbik7XG4gIH07XG5cbiAgcmV0dXJuIGNhcmRpbmFsO1xufSkoMCk7XG4iXSwibWFwcGluZ3MiOiJBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOyIsInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///./node_modules/vega-functions/node_modules/d3-shape/src/curve/cardinal.js\n");

/***/ }),

/***/ "./node_modules/vega-functions/node_modules/d3-shape/src/curve/cardinalClosed.js":
/*!***************************************************************************************!*\
  !*** ./node_modules/vega-functions/node_modules/d3-shape/src/curve/cardinalClosed.js ***!
  \***************************************************************************************/
/*! exports provided: CardinalClosed, default */
/***/ (function(module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"CardinalClosed\", function() { return CardinalClosed; });\n/* harmony import */ var _noop_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../noop.js */ \"./node_modules/vega-functions/node_modules/d3-shape/src/noop.js\");\n/* harmony import */ var _cardinal_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./cardinal.js */ \"./node_modules/vega-functions/node_modules/d3-shape/src/curve/cardinal.js\");\n\n\n\nfunction CardinalClosed(context, tension) {\n  this._context = context;\n  this._k = (1 - tension) / 6;\n}\n\nCardinalClosed.prototype = {\n  areaStart: _noop_js__WEBPACK_IMPORTED_MODULE_0__[\"default\"],\n  areaEnd: _noop_js__WEBPACK_IMPORTED_MODULE_0__[\"default\"],\n  lineStart: function() {\n    this._x0 = this._x1 = this._x2 = this._x3 = this._x4 = this._x5 =\n    this._y0 = this._y1 = this._y2 = this._y3 = this._y4 = this._y5 = NaN;\n    this._point = 0;\n  },\n  lineEnd: function() {\n    switch (this._point) {\n      case 1: {\n        this._context.moveTo(this._x3, this._y3);\n        this._context.closePath();\n        break;\n      }\n      case 2: {\n        this._context.lineTo(this._x3, this._y3);\n        this._context.closePath();\n        break;\n      }\n      case 3: {\n        this.point(this._x3, this._y3);\n        this.point(this._x4, this._y4);\n        this.point(this._x5, this._y5);\n        break;\n      }\n    }\n  },\n  point: function(x, y) {\n    x = +x, y = +y;\n    switch (this._point) {\n      case 0: this._point = 1; this._x3 = x, this._y3 = y; break;\n      case 1: this._point = 2; this._context.moveTo(this._x4 = x, this._y4 = y); break;\n      case 2: this._point = 3; this._x5 = x, this._y5 = y; break;\n      default: Object(_cardinal_js__WEBPACK_IMPORTED_MODULE_1__[\"point\"])(this, x, y); break;\n    }\n    this._x0 = this._x1, this._x1 = this._x2, this._x2 = x;\n    this._y0 = this._y1, this._y1 = this._y2, this._y2 = y;\n  }\n};\n\n/* harmony default export */ __webpack_exports__[\"default\"] = ((function custom(tension) {\n\n  function cardinal(context) {\n    return new CardinalClosed(context, tension);\n  }\n\n  cardinal.tension = function(tension) {\n    return custom(+tension);\n  };\n\n  return cardinal;\n})(0));\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvdmVnYS1mdW5jdGlvbnMvbm9kZV9tb2R1bGVzL2QzLXNoYXBlL3NyYy9jdXJ2ZS9jYXJkaW5hbENsb3NlZC5qcy5qcyIsInNvdXJjZXMiOlsid2VicGFjazovLy8uL25vZGVfbW9kdWxlcy92ZWdhLWZ1bmN0aW9ucy9ub2RlX21vZHVsZXMvZDMtc2hhcGUvc3JjL2N1cnZlL2NhcmRpbmFsQ2xvc2VkLmpzP2QxMDciXSwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IG5vb3AgZnJvbSBcIi4uL25vb3AuanNcIjtcbmltcG9ydCB7cG9pbnR9IGZyb20gXCIuL2NhcmRpbmFsLmpzXCI7XG5cbmV4cG9ydCBmdW5jdGlvbiBDYXJkaW5hbENsb3NlZChjb250ZXh0LCB0ZW5zaW9uKSB7XG4gIHRoaXMuX2NvbnRleHQgPSBjb250ZXh0O1xuICB0aGlzLl9rID0gKDEgLSB0ZW5zaW9uKSAvIDY7XG59XG5cbkNhcmRpbmFsQ2xvc2VkLnByb3RvdHlwZSA9IHtcbiAgYXJlYVN0YXJ0OiBub29wLFxuICBhcmVhRW5kOiBub29wLFxuICBsaW5lU3RhcnQ6IGZ1bmN0aW9uKCkge1xuICAgIHRoaXMuX3gwID0gdGhpcy5feDEgPSB0aGlzLl94MiA9IHRoaXMuX3gzID0gdGhpcy5feDQgPSB0aGlzLl94NSA9XG4gICAgdGhpcy5feTAgPSB0aGlzLl95MSA9IHRoaXMuX3kyID0gdGhpcy5feTMgPSB0aGlzLl95NCA9IHRoaXMuX3k1ID0gTmFOO1xuICAgIHRoaXMuX3BvaW50ID0gMDtcbiAgfSxcbiAgbGluZUVuZDogZnVuY3Rpb24oKSB7XG4gICAgc3dpdGNoICh0aGlzLl9wb2ludCkge1xuICAgICAgY2FzZSAxOiB7XG4gICAgICAgIHRoaXMuX2NvbnRleHQubW92ZVRvKHRoaXMuX3gzLCB0aGlzLl95Myk7XG4gICAgICAgIHRoaXMuX2NvbnRleHQuY2xvc2VQYXRoKCk7XG4gICAgICAgIGJyZWFrO1xuICAgICAgfVxuICAgICAgY2FzZSAyOiB7XG4gICAgICAgIHRoaXMuX2NvbnRleHQubGluZVRvKHRoaXMuX3gzLCB0aGlzLl95Myk7XG4gICAgICAgIHRoaXMuX2NvbnRleHQuY2xvc2VQYXRoKCk7XG4gICAgICAgIGJyZWFrO1xuICAgICAgfVxuICAgICAgY2FzZSAzOiB7XG4gICAgICAgIHRoaXMucG9pbnQodGhpcy5feDMsIHRoaXMuX3kzKTtcbiAgICAgICAgdGhpcy5wb2ludCh0aGlzLl94NCwgdGhpcy5feTQpO1xuICAgICAgICB0aGlzLnBvaW50KHRoaXMuX3g1LCB0aGlzLl95NSk7XG4gICAgICAgIGJyZWFrO1xuICAgICAgfVxuICAgIH1cbiAgfSxcbiAgcG9pbnQ6IGZ1bmN0aW9uKHgsIHkpIHtcbiAgICB4ID0gK3gsIHkgPSAreTtcbiAgICBzd2l0Y2ggKHRoaXMuX3BvaW50KSB7XG4gICAgICBjYXNlIDA6IHRoaXMuX3BvaW50ID0gMTsgdGhpcy5feDMgPSB4LCB0aGlzLl95MyA9IHk7IGJyZWFrO1xuICAgICAgY2FzZSAxOiB0aGlzLl9wb2ludCA9IDI7IHRoaXMuX2NvbnRleHQubW92ZVRvKHRoaXMuX3g0ID0geCwgdGhpcy5feTQgPSB5KTsgYnJlYWs7XG4gICAgICBjYXNlIDI6IHRoaXMuX3BvaW50ID0gMzsgdGhpcy5feDUgPSB4LCB0aGlzLl95NSA9IHk7IGJyZWFrO1xuICAgICAgZGVmYXVsdDogcG9pbnQodGhpcywgeCwgeSk7IGJyZWFrO1xuICAgIH1cbiAgICB0aGlzLl94MCA9IHRoaXMuX3gxLCB0aGlzLl94MSA9IHRoaXMuX3gyLCB0aGlzLl94MiA9IHg7XG4gICAgdGhpcy5feTAgPSB0aGlzLl95MSwgdGhpcy5feTEgPSB0aGlzLl95MiwgdGhpcy5feTIgPSB5O1xuICB9XG59O1xuXG5leHBvcnQgZGVmYXVsdCAoZnVuY3Rpb24gY3VzdG9tKHRlbnNpb24pIHtcblxuICBmdW5jdGlvbiBjYXJkaW5hbChjb250ZXh0KSB7XG4gICAgcmV0dXJuIG5ldyBDYXJkaW5hbENsb3NlZChjb250ZXh0LCB0ZW5zaW9uKTtcbiAgfVxuXG4gIGNhcmRpbmFsLnRlbnNpb24gPSBmdW5jdGlvbih0ZW5zaW9uKSB7XG4gICAgcmV0dXJuIGN1c3RvbSgrdGVuc2lvbik7XG4gIH07XG5cbiAgcmV0dXJuIGNhcmRpbmFsO1xufSkoMCk7XG4iXSwibWFwcGluZ3MiOiJBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7Iiwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///./node_modules/vega-functions/node_modules/d3-shape/src/curve/cardinalClosed.js\n");

/***/ }),

/***/ "./node_modules/vega-functions/node_modules/d3-shape/src/curve/cardinalOpen.js":
/*!*************************************************************************************!*\
  !*** ./node_modules/vega-functions/node_modules/d3-shape/src/curve/cardinalOpen.js ***!
  \*************************************************************************************/
/*! exports provided: CardinalOpen, default */
/***/ (function(module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"CardinalOpen\", function() { return CardinalOpen; });\n/* harmony import */ var _cardinal_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./cardinal.js */ \"./node_modules/vega-functions/node_modules/d3-shape/src/curve/cardinal.js\");\n\n\nfunction CardinalOpen(context, tension) {\n  this._context = context;\n  this._k = (1 - tension) / 6;\n}\n\nCardinalOpen.prototype = {\n  areaStart: function() {\n    this._line = 0;\n  },\n  areaEnd: function() {\n    this._line = NaN;\n  },\n  lineStart: function() {\n    this._x0 = this._x1 = this._x2 =\n    this._y0 = this._y1 = this._y2 = NaN;\n    this._point = 0;\n  },\n  lineEnd: function() {\n    if (this._line || (this._line !== 0 && this._point === 3)) this._context.closePath();\n    this._line = 1 - this._line;\n  },\n  point: function(x, y) {\n    x = +x, y = +y;\n    switch (this._point) {\n      case 0: this._point = 1; break;\n      case 1: this._point = 2; break;\n      case 2: this._point = 3; this._line ? this._context.lineTo(this._x2, this._y2) : this._context.moveTo(this._x2, this._y2); break;\n      case 3: this._point = 4; // proceed\n      default: Object(_cardinal_js__WEBPACK_IMPORTED_MODULE_0__[\"point\"])(this, x, y); break;\n    }\n    this._x0 = this._x1, this._x1 = this._x2, this._x2 = x;\n    this._y0 = this._y1, this._y1 = this._y2, this._y2 = y;\n  }\n};\n\n/* harmony default export */ __webpack_exports__[\"default\"] = ((function custom(tension) {\n\n  function cardinal(context) {\n    return new CardinalOpen(context, tension);\n  }\n\n  cardinal.tension = function(tension) {\n    return custom(+tension);\n  };\n\n  return cardinal;\n})(0));\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvdmVnYS1mdW5jdGlvbnMvbm9kZV9tb2R1bGVzL2QzLXNoYXBlL3NyYy9jdXJ2ZS9jYXJkaW5hbE9wZW4uanMuanMiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvdmVnYS1mdW5jdGlvbnMvbm9kZV9tb2R1bGVzL2QzLXNoYXBlL3NyYy9jdXJ2ZS9jYXJkaW5hbE9wZW4uanM/MGM5MCJdLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge3BvaW50fSBmcm9tIFwiLi9jYXJkaW5hbC5qc1wiO1xuXG5leHBvcnQgZnVuY3Rpb24gQ2FyZGluYWxPcGVuKGNvbnRleHQsIHRlbnNpb24pIHtcbiAgdGhpcy5fY29udGV4dCA9IGNvbnRleHQ7XG4gIHRoaXMuX2sgPSAoMSAtIHRlbnNpb24pIC8gNjtcbn1cblxuQ2FyZGluYWxPcGVuLnByb3RvdHlwZSA9IHtcbiAgYXJlYVN0YXJ0OiBmdW5jdGlvbigpIHtcbiAgICB0aGlzLl9saW5lID0gMDtcbiAgfSxcbiAgYXJlYUVuZDogZnVuY3Rpb24oKSB7XG4gICAgdGhpcy5fbGluZSA9IE5hTjtcbiAgfSxcbiAgbGluZVN0YXJ0OiBmdW5jdGlvbigpIHtcbiAgICB0aGlzLl94MCA9IHRoaXMuX3gxID0gdGhpcy5feDIgPVxuICAgIHRoaXMuX3kwID0gdGhpcy5feTEgPSB0aGlzLl95MiA9IE5hTjtcbiAgICB0aGlzLl9wb2ludCA9IDA7XG4gIH0sXG4gIGxpbmVFbmQ6IGZ1bmN0aW9uKCkge1xuICAgIGlmICh0aGlzLl9saW5lIHx8ICh0aGlzLl9saW5lICE9PSAwICYmIHRoaXMuX3BvaW50ID09PSAzKSkgdGhpcy5fY29udGV4dC5jbG9zZVBhdGgoKTtcbiAgICB0aGlzLl9saW5lID0gMSAtIHRoaXMuX2xpbmU7XG4gIH0sXG4gIHBvaW50OiBmdW5jdGlvbih4LCB5KSB7XG4gICAgeCA9ICt4LCB5ID0gK3k7XG4gICAgc3dpdGNoICh0aGlzLl9wb2ludCkge1xuICAgICAgY2FzZSAwOiB0aGlzLl9wb2ludCA9IDE7IGJyZWFrO1xuICAgICAgY2FzZSAxOiB0aGlzLl9wb2ludCA9IDI7IGJyZWFrO1xuICAgICAgY2FzZSAyOiB0aGlzLl9wb2ludCA9IDM7IHRoaXMuX2xpbmUgPyB0aGlzLl9jb250ZXh0LmxpbmVUbyh0aGlzLl94MiwgdGhpcy5feTIpIDogdGhpcy5fY29udGV4dC5tb3ZlVG8odGhpcy5feDIsIHRoaXMuX3kyKTsgYnJlYWs7XG4gICAgICBjYXNlIDM6IHRoaXMuX3BvaW50ID0gNDsgLy8gcHJvY2VlZFxuICAgICAgZGVmYXVsdDogcG9pbnQodGhpcywgeCwgeSk7IGJyZWFrO1xuICAgIH1cbiAgICB0aGlzLl94MCA9IHRoaXMuX3gxLCB0aGlzLl94MSA9IHRoaXMuX3gyLCB0aGlzLl94MiA9IHg7XG4gICAgdGhpcy5feTAgPSB0aGlzLl95MSwgdGhpcy5feTEgPSB0aGlzLl95MiwgdGhpcy5feTIgPSB5O1xuICB9XG59O1xuXG5leHBvcnQgZGVmYXVsdCAoZnVuY3Rpb24gY3VzdG9tKHRlbnNpb24pIHtcblxuICBmdW5jdGlvbiBjYXJkaW5hbChjb250ZXh0KSB7XG4gICAgcmV0dXJuIG5ldyBDYXJkaW5hbE9wZW4oY29udGV4dCwgdGVuc2lvbik7XG4gIH1cblxuICBjYXJkaW5hbC50ZW5zaW9uID0gZnVuY3Rpb24odGVuc2lvbikge1xuICAgIHJldHVybiBjdXN0b20oK3RlbnNpb24pO1xuICB9O1xuXG4gIHJldHVybiBjYXJkaW5hbDtcbn0pKDApO1xuIl0sIm1hcHBpbmdzIjoiQUFBQTtBQUFBO0FBQUE7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTsiLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///./node_modules/vega-functions/node_modules/d3-shape/src/curve/cardinalOpen.js\n");

/***/ }),

/***/ "./node_modules/vega-functions/node_modules/d3-shape/src/curve/catmullRom.js":
/*!***********************************************************************************!*\
  !*** ./node_modules/vega-functions/node_modules/d3-shape/src/curve/catmullRom.js ***!
  \***********************************************************************************/
/*! exports provided: point, default */
/***/ (function(module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"point\", function() { return point; });\n/* harmony import */ var _math_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../math.js */ \"./node_modules/vega-functions/node_modules/d3-shape/src/math.js\");\n/* harmony import */ var _cardinal_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./cardinal.js */ \"./node_modules/vega-functions/node_modules/d3-shape/src/curve/cardinal.js\");\n\n\n\nfunction point(that, x, y) {\n  var x1 = that._x1,\n      y1 = that._y1,\n      x2 = that._x2,\n      y2 = that._y2;\n\n  if (that._l01_a > _math_js__WEBPACK_IMPORTED_MODULE_0__[\"epsilon\"]) {\n    var a = 2 * that._l01_2a + 3 * that._l01_a * that._l12_a + that._l12_2a,\n        n = 3 * that._l01_a * (that._l01_a + that._l12_a);\n    x1 = (x1 * a - that._x0 * that._l12_2a + that._x2 * that._l01_2a) / n;\n    y1 = (y1 * a - that._y0 * that._l12_2a + that._y2 * that._l01_2a) / n;\n  }\n\n  if (that._l23_a > _math_js__WEBPACK_IMPORTED_MODULE_0__[\"epsilon\"]) {\n    var b = 2 * that._l23_2a + 3 * that._l23_a * that._l12_a + that._l12_2a,\n        m = 3 * that._l23_a * (that._l23_a + that._l12_a);\n    x2 = (x2 * b + that._x1 * that._l23_2a - x * that._l12_2a) / m;\n    y2 = (y2 * b + that._y1 * that._l23_2a - y * that._l12_2a) / m;\n  }\n\n  that._context.bezierCurveTo(x1, y1, x2, y2, that._x2, that._y2);\n}\n\nfunction CatmullRom(context, alpha) {\n  this._context = context;\n  this._alpha = alpha;\n}\n\nCatmullRom.prototype = {\n  areaStart: function() {\n    this._line = 0;\n  },\n  areaEnd: function() {\n    this._line = NaN;\n  },\n  lineStart: function() {\n    this._x0 = this._x1 = this._x2 =\n    this._y0 = this._y1 = this._y2 = NaN;\n    this._l01_a = this._l12_a = this._l23_a =\n    this._l01_2a = this._l12_2a = this._l23_2a =\n    this._point = 0;\n  },\n  lineEnd: function() {\n    switch (this._point) {\n      case 2: this._context.lineTo(this._x2, this._y2); break;\n      case 3: this.point(this._x2, this._y2); break;\n    }\n    if (this._line || (this._line !== 0 && this._point === 1)) this._context.closePath();\n    this._line = 1 - this._line;\n  },\n  point: function(x, y) {\n    x = +x, y = +y;\n\n    if (this._point) {\n      var x23 = this._x2 - x,\n          y23 = this._y2 - y;\n      this._l23_a = Math.sqrt(this._l23_2a = Math.pow(x23 * x23 + y23 * y23, this._alpha));\n    }\n\n    switch (this._point) {\n      case 0: this._point = 1; this._line ? this._context.lineTo(x, y) : this._context.moveTo(x, y); break;\n      case 1: this._point = 2; break;\n      case 2: this._point = 3; // proceed\n      default: point(this, x, y); break;\n    }\n\n    this._l01_a = this._l12_a, this._l12_a = this._l23_a;\n    this._l01_2a = this._l12_2a, this._l12_2a = this._l23_2a;\n    this._x0 = this._x1, this._x1 = this._x2, this._x2 = x;\n    this._y0 = this._y1, this._y1 = this._y2, this._y2 = y;\n  }\n};\n\n/* harmony default export */ __webpack_exports__[\"default\"] = ((function custom(alpha) {\n\n  function catmullRom(context) {\n    return alpha ? new CatmullRom(context, alpha) : new _cardinal_js__WEBPACK_IMPORTED_MODULE_1__[\"Cardinal\"](context, 0);\n  }\n\n  catmullRom.alpha = function(alpha) {\n    return custom(+alpha);\n  };\n\n  return catmullRom;\n})(0.5));\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,[encoded data, 4608 characters]\n//# sourceURL=webpack-internal:///./node_modules/vega-functions/node_modules/d3-shape/src/curve/catmullRom.js\n");

/***/ }),

/***/ "./node_modules/vega-functions/node_modules/d3-shape/src/curve/catmullRomClosed.js":
/*!*****************************************************************************************!*\
  !*** ./node_modules/vega-functions/node_modules/d3-shape/src/curve/catmullRomClosed.js ***!
  \*****************************************************************************************/
/*! exports provided: default */
/***/ (function(module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _cardinalClosed_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./cardinalClosed.js */ \"./node_modules/vega-functions/node_modules/d3-shape/src/curve/cardinalClosed.js\");\n/* harmony import */ var _noop_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../noop.js */ \"./node_modules/vega-functions/node_modules/d3-shape/src/noop.js\");\n/* harmony import */ var _catmullRom_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./catmullRom.js */ \"./node_modules/vega-functions/node_modules/d3-shape/src/curve/catmullRom.js\");\n\n\n\n\nfunction CatmullRomClosed(context, alpha) {\n  this._context = context;\n  this._alpha = alpha;\n}\n\nCatmullRomClosed.prototype = {\n  areaStart: _noop_js__WEBPACK_IMPORTED_MODULE_1__[\"default\"],\n  areaEnd: _noop_js__WEBPACK_IMPORTED_MODULE_1__[\"default\"],\n  lineStart: function() {\n    this._x0 = this._x1 = this._x2 = this._x3 = this._x4 = this._x5 =\n    this._y0 = this._y1 = this._y2 = this._y3 = this._y4 = this._y5 = NaN;\n    this._l01_a = this._l12_a = this._l23_a =\n    this._l01_2a = this._l12_2a = this._l23_2a =\n    this._point = 0;\n  },\n  lineEnd: function() {\n    switch (this._point) {\n      case 1: {\n        this._context.moveTo(this._x3, this._y3);\n        this._context.closePath();\n        break;\n      }\n      case 2: {\n        this._context.lineTo(this._x3, this._y3);\n        this._context.closePath();\n        break;\n      }\n      case 3: {\n        this.point(this._x3, this._y3);\n        this.point(this._x4, this._y4);\n        this.point(this._x5, this._y5);\n        break;\n      }\n    }\n  },\n  point: function(x, y) {\n    x = +x, y = +y;\n\n    if (this._point) {\n      var x23 = this._x2 - x,\n          y23 = this._y2 - y;\n      this._l23_a = Math.sqrt(this._l23_2a = Math.pow(x23 * x23 + y23 * y23, this._alpha));\n    }\n\n    switch (this._point) {\n      case 0: this._point = 1; this._x3 = x, this._y3 = y; break;\n      case 1: this._point = 2; this._context.moveTo(this._x4 = x, this._y4 = y); break;\n      case 2: this._point = 3; this._x5 = x, this._y5 = y; break;\n      default: Object(_catmullRom_js__WEBPACK_IMPORTED_MODULE_2__[\"point\"])(this, x, y); break;\n    }\n\n    this._l01_a = this._l12_a, this._l12_a = this._l23_a;\n    this._l01_2a = this._l12_2a, this._l12_2a = this._l23_2a;\n    this._x0 = this._x1, this._x1 = this._x2, this._x2 = x;\n    this._y0 = this._y1, this._y1 = this._y2, this._y2 = y;\n  }\n};\n\n/* harmony default export */ __webpack_exports__[\"default\"] = ((function custom(alpha) {\n\n  function catmullRom(context) {\n    return alpha ? new CatmullRomClosed(context, alpha) : new _cardinalClosed_js__WEBPACK_IMPORTED_MODULE_0__[\"CardinalClosed\"](context, 0);\n  }\n\n  catmullRom.alpha = function(alpha) {\n    return custom(+alpha);\n  };\n\n  return catmullRom;\n})(0.5));\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvdmVnYS1mdW5jdGlvbnMvbm9kZV9tb2R1bGVzL2QzLXNoYXBlL3NyYy9jdXJ2ZS9jYXRtdWxsUm9tQ2xvc2VkLmpzLmpzIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL3ZlZ2EtZnVuY3Rpb25zL25vZGVfbW9kdWxlcy9kMy1zaGFwZS9zcmMvY3VydmUvY2F0bXVsbFJvbUNsb3NlZC5qcz9mNzljIl0sInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7Q2FyZGluYWxDbG9zZWR9IGZyb20gXCIuL2NhcmRpbmFsQ2xvc2VkLmpzXCI7XG5pbXBvcnQgbm9vcCBmcm9tIFwiLi4vbm9vcC5qc1wiO1xuaW1wb3J0IHtwb2ludH0gZnJvbSBcIi4vY2F0bXVsbFJvbS5qc1wiO1xuXG5mdW5jdGlvbiBDYXRtdWxsUm9tQ2xvc2VkKGNvbnRleHQsIGFscGhhKSB7XG4gIHRoaXMuX2NvbnRleHQgPSBjb250ZXh0O1xuICB0aGlzLl9hbHBoYSA9IGFscGhhO1xufVxuXG5DYXRtdWxsUm9tQ2xvc2VkLnByb3RvdHlwZSA9IHtcbiAgYXJlYVN0YXJ0OiBub29wLFxuICBhcmVhRW5kOiBub29wLFxuICBsaW5lU3RhcnQ6IGZ1bmN0aW9uKCkge1xuICAgIHRoaXMuX3gwID0gdGhpcy5feDEgPSB0aGlzLl94MiA9IHRoaXMuX3gzID0gdGhpcy5feDQgPSB0aGlzLl94NSA9XG4gICAgdGhpcy5feTAgPSB0aGlzLl95MSA9IHRoaXMuX3kyID0gdGhpcy5feTMgPSB0aGlzLl95NCA9IHRoaXMuX3k1ID0gTmFOO1xuICAgIHRoaXMuX2wwMV9hID0gdGhpcy5fbDEyX2EgPSB0aGlzLl9sMjNfYSA9XG4gICAgdGhpcy5fbDAxXzJhID0gdGhpcy5fbDEyXzJhID0gdGhpcy5fbDIzXzJhID1cbiAgICB0aGlzLl9wb2ludCA9IDA7XG4gIH0sXG4gIGxpbmVFbmQ6IGZ1bmN0aW9uKCkge1xuICAgIHN3aXRjaCAodGhpcy5fcG9pbnQpIHtcbiAgICAgIGNhc2UgMToge1xuICAgICAgICB0aGlzLl9jb250ZXh0Lm1vdmVUbyh0aGlzLl94MywgdGhpcy5feTMpO1xuICAgICAgICB0aGlzLl9jb250ZXh0LmNsb3NlUGF0aCgpO1xuICAgICAgICBicmVhaztcbiAgICAgIH1cbiAgICAgIGNhc2UgMjoge1xuICAgICAgICB0aGlzLl9jb250ZXh0LmxpbmVUbyh0aGlzLl94MywgdGhpcy5feTMpO1xuICAgICAgICB0aGlzLl9jb250ZXh0LmNsb3NlUGF0aCgpO1xuICAgICAgICBicmVhaztcbiAgICAgIH1cbiAgICAgIGNhc2UgMzoge1xuICAgICAgICB0aGlzLnBvaW50KHRoaXMuX3gzLCB0aGlzLl95Myk7XG4gICAgICAgIHRoaXMucG9pbnQodGhpcy5feDQsIHRoaXMuX3k0KTtcbiAgICAgICAgdGhpcy5wb2ludCh0aGlzLl94NSwgdGhpcy5feTUpO1xuICAgICAgICBicmVhaztcbiAgICAgIH1cbiAgICB9XG4gIH0sXG4gIHBvaW50OiBmdW5jdGlvbih4LCB5KSB7XG4gICAgeCA9ICt4LCB5ID0gK3k7XG5cbiAgICBpZiAodGhpcy5fcG9pbnQpIHtcbiAgICAgIHZhciB4MjMgPSB0aGlzLl94MiAtIHgsXG4gICAgICAgICAgeTIzID0gdGhpcy5feTIgLSB5O1xuICAgICAgdGhpcy5fbDIzX2EgPSBNYXRoLnNxcnQodGhpcy5fbDIzXzJhID0gTWF0aC5wb3coeDIzICogeDIzICsgeTIzICogeTIzLCB0aGlzLl9hbHBoYSkpO1xuICAgIH1cblxuICAgIHN3aXRjaCAodGhpcy5fcG9pbnQpIHtcbiAgICAgIGNhc2UgMDogdGhpcy5fcG9pbnQgPSAxOyB0aGlzLl94MyA9IHgsIHRoaXMuX3kzID0geTsgYnJlYWs7XG4gICAgICBjYXNlIDE6IHRoaXMuX3BvaW50ID0gMjsgdGhpcy5fY29udGV4dC5tb3ZlVG8odGhpcy5feDQgPSB4LCB0aGlzLl95NCA9IHkpOyBicmVhaztcbiAgICAgIGNhc2UgMjogdGhpcy5fcG9pbnQgPSAzOyB0aGlzLl94NSA9IHgsIHRoaXMuX3k1ID0geTsgYnJlYWs7XG4gICAgICBkZWZhdWx0OiBwb2ludCh0aGlzLCB4LCB5KTsgYnJlYWs7XG4gICAgfVxuXG4gICAgdGhpcy5fbDAxX2EgPSB0aGlzLl9sMTJfYSwgdGhpcy5fbDEyX2EgPSB0aGlzLl9sMjNfYTtcbiAgICB0aGlzLl9sMDFfMmEgPSB0aGlzLl9sMTJfMmEsIHRoaXMuX2wxMl8yYSA9IHRoaXMuX2wyM18yYTtcbiAgICB0aGlzLl94MCA9IHRoaXMuX3gxLCB0aGlzLl94MSA9IHRoaXMuX3gyLCB0aGlzLl94MiA9IHg7XG4gICAgdGhpcy5feTAgPSB0aGlzLl95MSwgdGhpcy5feTEgPSB0aGlzLl95MiwgdGhpcy5feTIgPSB5O1xuICB9XG59O1xuXG5leHBvcnQgZGVmYXVsdCAoZnVuY3Rpb24gY3VzdG9tKGFscGhhKSB7XG5cbiAgZnVuY3Rpb24gY2F0bXVsbFJvbShjb250ZXh0KSB7XG4gICAgcmV0dXJuIGFscGhhID8gbmV3IENhdG11bGxSb21DbG9zZWQoY29udGV4dCwgYWxwaGEpIDogbmV3IENhcmRpbmFsQ2xvc2VkKGNvbnRleHQsIDApO1xuICB9XG5cbiAgY2F0bXVsbFJvbS5hbHBoYSA9IGZ1bmN0aW9uKGFscGhhKSB7XG4gICAgcmV0dXJuIGN1c3RvbSgrYWxwaGEpO1xuICB9O1xuXG4gIHJldHVybiBjYXRtdWxsUm9tO1xufSkoMC41KTtcbiJdLCJtYXBwaW5ncyI6IkFBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOyIsInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///./node_modules/vega-functions/node_modules/d3-shape/src/curve/catmullRomClosed.js\n");

/***/ }),

/***/ "./node_modules/vega-functions/node_modules/d3-shape/src/curve/catmullRomOpen.js":
/*!***************************************************************************************!*\
  !*** ./node_modules/vega-functions/node_modules/d3-shape/src/curve/catmullRomOpen.js ***!
  \***************************************************************************************/
/*! exports provided: default */
/***/ (function(module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _cardinalOpen_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./cardinalOpen.js */ \"./node_modules/vega-functions/node_modules/d3-shape/src/curve/cardinalOpen.js\");\n/* harmony import */ var _catmullRom_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./catmullRom.js */ \"./node_modules/vega-functions/node_modules/d3-shape/src/curve/catmullRom.js\");\n\n\n\nfunction CatmullRomOpen(context, alpha) {\n  this._context = context;\n  this._alpha = alpha;\n}\n\nCatmullRomOpen.prototype = {\n  areaStart: function() {\n    this._line = 0;\n  },\n  areaEnd: function() {\n    this._line = NaN;\n  },\n  lineStart: function() {\n    this._x0 = this._x1 = this._x2 =\n    this._y0 = this._y1 = this._y2 = NaN;\n    this._l01_a = this._l12_a = this._l23_a =\n    this._l01_2a = this._l12_2a = this._l23_2a =\n    this._point = 0;\n  },\n  lineEnd: function() {\n    if (this._line || (this._line !== 0 && this._point === 3)) this._context.closePath();\n    this._line = 1 - this._line;\n  },\n  point: function(x, y) {\n    x = +x, y = +y;\n\n    if (this._point) {\n      var x23 = this._x2 - x,\n          y23 = this._y2 - y;\n      this._l23_a = Math.sqrt(this._l23_2a = Math.pow(x23 * x23 + y23 * y23, this._alpha));\n    }\n\n    switch (this._point) {\n      case 0: this._point = 1; break;\n      case 1: this._point = 2; break;\n      case 2: this._point = 3; this._line ? this._context.lineTo(this._x2, this._y2) : this._context.moveTo(this._x2, this._y2); break;\n      case 3: this._point = 4; // proceed\n      default: Object(_catmullRom_js__WEBPACK_IMPORTED_MODULE_1__[\"point\"])(this, x, y); break;\n    }\n\n    this._l01_a = this._l12_a, this._l12_a = this._l23_a;\n    this._l01_2a = this._l12_2a, this._l12_2a = this._l23_2a;\n    this._x0 = this._x1, this._x1 = this._x2, this._x2 = x;\n    this._y0 = this._y1, this._y1 = this._y2, this._y2 = y;\n  }\n};\n\n/* harmony default export */ __webpack_exports__[\"default\"] = ((function custom(alpha) {\n\n  function catmullRom(context) {\n    return alpha ? new CatmullRomOpen(context, alpha) : new _cardinalOpen_js__WEBPACK_IMPORTED_MODULE_0__[\"CardinalOpen\"](context, 0);\n  }\n\n  catmullRom.alpha = function(alpha) {\n    return custom(+alpha);\n  };\n\n  return catmullRom;\n})(0.5));\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvdmVnYS1mdW5jdGlvbnMvbm9kZV9tb2R1bGVzL2QzLXNoYXBlL3NyYy9jdXJ2ZS9jYXRtdWxsUm9tT3Blbi5qcy5qcyIsInNvdXJjZXMiOlsid2VicGFjazovLy8uL25vZGVfbW9kdWxlcy92ZWdhLWZ1bmN0aW9ucy9ub2RlX21vZHVsZXMvZDMtc2hhcGUvc3JjL2N1cnZlL2NhdG11bGxSb21PcGVuLmpzPzE5MTgiXSwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtDYXJkaW5hbE9wZW59IGZyb20gXCIuL2NhcmRpbmFsT3Blbi5qc1wiO1xuaW1wb3J0IHtwb2ludH0gZnJvbSBcIi4vY2F0bXVsbFJvbS5qc1wiO1xuXG5mdW5jdGlvbiBDYXRtdWxsUm9tT3Blbihjb250ZXh0LCBhbHBoYSkge1xuICB0aGlzLl9jb250ZXh0ID0gY29udGV4dDtcbiAgdGhpcy5fYWxwaGEgPSBhbHBoYTtcbn1cblxuQ2F0bXVsbFJvbU9wZW4ucHJvdG90eXBlID0ge1xuICBhcmVhU3RhcnQ6IGZ1bmN0aW9uKCkge1xuICAgIHRoaXMuX2xpbmUgPSAwO1xuICB9LFxuICBhcmVhRW5kOiBmdW5jdGlvbigpIHtcbiAgICB0aGlzLl9saW5lID0gTmFOO1xuICB9LFxuICBsaW5lU3RhcnQ6IGZ1bmN0aW9uKCkge1xuICAgIHRoaXMuX3gwID0gdGhpcy5feDEgPSB0aGlzLl94MiA9XG4gICAgdGhpcy5feTAgPSB0aGlzLl95MSA9IHRoaXMuX3kyID0gTmFOO1xuICAgIHRoaXMuX2wwMV9hID0gdGhpcy5fbDEyX2EgPSB0aGlzLl9sMjNfYSA9XG4gICAgdGhpcy5fbDAxXzJhID0gdGhpcy5fbDEyXzJhID0gdGhpcy5fbDIzXzJhID1cbiAgICB0aGlzLl9wb2ludCA9IDA7XG4gIH0sXG4gIGxpbmVFbmQ6IGZ1bmN0aW9uKCkge1xuICAgIGlmICh0aGlzLl9saW5lIHx8ICh0aGlzLl9saW5lICE9PSAwICYmIHRoaXMuX3BvaW50ID09PSAzKSkgdGhpcy5fY29udGV4dC5jbG9zZVBhdGgoKTtcbiAgICB0aGlzLl9saW5lID0gMSAtIHRoaXMuX2xpbmU7XG4gIH0sXG4gIHBvaW50OiBmdW5jdGlvbih4LCB5KSB7XG4gICAgeCA9ICt4LCB5ID0gK3k7XG5cbiAgICBpZiAodGhpcy5fcG9pbnQpIHtcbiAgICAgIHZhciB4MjMgPSB0aGlzLl94MiAtIHgsXG4gICAgICAgICAgeTIzID0gdGhpcy5feTIgLSB5O1xuICAgICAgdGhpcy5fbDIzX2EgPSBNYXRoLnNxcnQodGhpcy5fbDIzXzJhID0gTWF0aC5wb3coeDIzICogeDIzICsgeTIzICogeTIzLCB0aGlzLl9hbHBoYSkpO1xuICAgIH1cblxuICAgIHN3aXRjaCAodGhpcy5fcG9pbnQpIHtcbiAgICAgIGNhc2UgMDogdGhpcy5fcG9pbnQgPSAxOyBicmVhaztcbiAgICAgIGNhc2UgMTogdGhpcy5fcG9pbnQgPSAyOyBicmVhaztcbiAgICAgIGNhc2UgMjogdGhpcy5fcG9pbnQgPSAzOyB0aGlzLl9saW5lID8gdGhpcy5fY29udGV4dC5saW5lVG8odGhpcy5feDIsIHRoaXMuX3kyKSA6IHRoaXMuX2NvbnRleHQubW92ZVRvKHRoaXMuX3gyLCB0aGlzLl95Mik7IGJyZWFrO1xuICAgICAgY2FzZSAzOiB0aGlzLl9wb2ludCA9IDQ7IC8vIHByb2NlZWRcbiAgICAgIGRlZmF1bHQ6IHBvaW50KHRoaXMsIHgsIHkpOyBicmVhaztcbiAgICB9XG5cbiAgICB0aGlzLl9sMDFfYSA9IHRoaXMuX2wxMl9hLCB0aGlzLl9sMTJfYSA9IHRoaXMuX2wyM19hO1xuICAgIHRoaXMuX2wwMV8yYSA9IHRoaXMuX2wxMl8yYSwgdGhpcy5fbDEyXzJhID0gdGhpcy5fbDIzXzJhO1xuICAgIHRoaXMuX3gwID0gdGhpcy5feDEsIHRoaXMuX3gxID0gdGhpcy5feDIsIHRoaXMuX3gyID0geDtcbiAgICB0aGlzLl95MCA9IHRoaXMuX3kxLCB0aGlzLl95MSA9IHRoaXMuX3kyLCB0aGlzLl95MiA9IHk7XG4gIH1cbn07XG5cbmV4cG9ydCBkZWZhdWx0IChmdW5jdGlvbiBjdXN0b20oYWxwaGEpIHtcblxuICBmdW5jdGlvbiBjYXRtdWxsUm9tKGNvbnRleHQpIHtcbiAgICByZXR1cm4gYWxwaGEgPyBuZXcgQ2F0bXVsbFJvbU9wZW4oY29udGV4dCwgYWxwaGEpIDogbmV3IENhcmRpbmFsT3Blbihjb250ZXh0LCAwKTtcbiAgfVxuXG4gIGNhdG11bGxSb20uYWxwaGEgPSBmdW5jdGlvbihhbHBoYSkge1xuICAgIHJldHVybiBjdXN0b20oK2FscGhhKTtcbiAgfTtcblxuICByZXR1cm4gY2F0bXVsbFJvbTtcbn0pKDAuNSk7XG4iXSwibWFwcGluZ3MiOiJBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7Iiwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///./node_modules/vega-functions/node_modules/d3-shape/src/curve/catmullRomOpen.js\n");

/***/ }),

/***/ "./node_modules/vega-functions/node_modules/d3-shape/src/curve/linear.js":
/*!*******************************************************************************!*\
  !*** ./node_modules/vega-functions/node_modules/d3-shape/src/curve/linear.js ***!
  \*******************************************************************************/
/*! exports provided: default */
/***/ (function(module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\nfunction Linear(context) {\n  this._context = context;\n}\n\nLinear.prototype = {\n  areaStart: function() {\n    this._line = 0;\n  },\n  areaEnd: function() {\n    this._line = NaN;\n  },\n  lineStart: function() {\n    this._point = 0;\n  },\n  lineEnd: function() {\n    if (this._line || (this._line !== 0 && this._point === 1)) this._context.closePath();\n    this._line = 1 - this._line;\n  },\n  point: function(x, y) {\n    x = +x, y = +y;\n    switch (this._point) {\n      case 0: this._point = 1; this._line ? this._context.lineTo(x, y) : this._context.moveTo(x, y); break;\n      case 1: this._point = 2; // proceed\n      default: this._context.lineTo(x, y); break;\n    }\n  }\n};\n\n/* harmony default export */ __webpack_exports__[\"default\"] = (function(context) {\n  return new Linear(context);\n});\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvdmVnYS1mdW5jdGlvbnMvbm9kZV9tb2R1bGVzL2QzLXNoYXBlL3NyYy9jdXJ2ZS9saW5lYXIuanMuanMiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvdmVnYS1mdW5jdGlvbnMvbm9kZV9tb2R1bGVzL2QzLXNoYXBlL3NyYy9jdXJ2ZS9saW5lYXIuanM/ZjlkMSJdLCJzb3VyY2VzQ29udGVudCI6WyJmdW5jdGlvbiBMaW5lYXIoY29udGV4dCkge1xuICB0aGlzLl9jb250ZXh0ID0gY29udGV4dDtcbn1cblxuTGluZWFyLnByb3RvdHlwZSA9IHtcbiAgYXJlYVN0YXJ0OiBmdW5jdGlvbigpIHtcbiAgICB0aGlzLl9saW5lID0gMDtcbiAgfSxcbiAgYXJlYUVuZDogZnVuY3Rpb24oKSB7XG4gICAgdGhpcy5fbGluZSA9IE5hTjtcbiAgfSxcbiAgbGluZVN0YXJ0OiBmdW5jdGlvbigpIHtcbiAgICB0aGlzLl9wb2ludCA9IDA7XG4gIH0sXG4gIGxpbmVFbmQ6IGZ1bmN0aW9uKCkge1xuICAgIGlmICh0aGlzLl9saW5lIHx8ICh0aGlzLl9saW5lICE9PSAwICYmIHRoaXMuX3BvaW50ID09PSAxKSkgdGhpcy5fY29udGV4dC5jbG9zZVBhdGgoKTtcbiAgICB0aGlzLl9saW5lID0gMSAtIHRoaXMuX2xpbmU7XG4gIH0sXG4gIHBvaW50OiBmdW5jdGlvbih4LCB5KSB7XG4gICAgeCA9ICt4LCB5ID0gK3k7XG4gICAgc3dpdGNoICh0aGlzLl9wb2ludCkge1xuICAgICAgY2FzZSAwOiB0aGlzLl9wb2ludCA9IDE7IHRoaXMuX2xpbmUgPyB0aGlzLl9jb250ZXh0LmxpbmVUbyh4LCB5KSA6IHRoaXMuX2NvbnRleHQubW92ZVRvKHgsIHkpOyBicmVhaztcbiAgICAgIGNhc2UgMTogdGhpcy5fcG9pbnQgPSAyOyAvLyBwcm9jZWVkXG4gICAgICBkZWZhdWx0OiB0aGlzLl9jb250ZXh0LmxpbmVUbyh4LCB5KTsgYnJlYWs7XG4gICAgfVxuICB9XG59O1xuXG5leHBvcnQgZGVmYXVsdCBmdW5jdGlvbihjb250ZXh0KSB7XG4gIHJldHVybiBuZXcgTGluZWFyKGNvbnRleHQpO1xufVxuIl0sIm1hcHBpbmdzIjoiQUFBQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOyIsInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///./node_modules/vega-functions/node_modules/d3-shape/src/curve/linear.js\n");

/***/ }),

/***/ "./node_modules/vega-functions/node_modules/d3-shape/src/curve/linearClosed.js":
/*!*************************************************************************************!*\
  !*** ./node_modules/vega-functions/node_modules/d3-shape/src/curve/linearClosed.js ***!
  \*************************************************************************************/
/*! exports provided: default */
/***/ (function(module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _noop_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../noop.js */ \"./node_modules/vega-functions/node_modules/d3-shape/src/noop.js\");\n\n\nfunction LinearClosed(context) {\n  this._context = context;\n}\n\nLinearClosed.prototype = {\n  areaStart: _noop_js__WEBPACK_IMPORTED_MODULE_0__[\"default\"],\n  areaEnd: _noop_js__WEBPACK_IMPORTED_MODULE_0__[\"default\"],\n  lineStart: function() {\n    this._point = 0;\n  },\n  lineEnd: function() {\n    if (this._point) this._context.closePath();\n  },\n  point: function(x, y) {\n    x = +x, y = +y;\n    if (this._point) this._context.lineTo(x, y);\n    else this._point = 1, this._context.moveTo(x, y);\n  }\n};\n\n/* harmony default export */ __webpack_exports__[\"default\"] = (function(context) {\n  return new LinearClosed(context);\n});\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvdmVnYS1mdW5jdGlvbnMvbm9kZV9tb2R1bGVzL2QzLXNoYXBlL3NyYy9jdXJ2ZS9saW5lYXJDbG9zZWQuanMuanMiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvdmVnYS1mdW5jdGlvbnMvbm9kZV9tb2R1bGVzL2QzLXNoYXBlL3NyYy9jdXJ2ZS9saW5lYXJDbG9zZWQuanM/YzliOSJdLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgbm9vcCBmcm9tIFwiLi4vbm9vcC5qc1wiO1xuXG5mdW5jdGlvbiBMaW5lYXJDbG9zZWQoY29udGV4dCkge1xuICB0aGlzLl9jb250ZXh0ID0gY29udGV4dDtcbn1cblxuTGluZWFyQ2xvc2VkLnByb3RvdHlwZSA9IHtcbiAgYXJlYVN0YXJ0OiBub29wLFxuICBhcmVhRW5kOiBub29wLFxuICBsaW5lU3RhcnQ6IGZ1bmN0aW9uKCkge1xuICAgIHRoaXMuX3BvaW50ID0gMDtcbiAgfSxcbiAgbGluZUVuZDogZnVuY3Rpb24oKSB7XG4gICAgaWYgKHRoaXMuX3BvaW50KSB0aGlzLl9jb250ZXh0LmNsb3NlUGF0aCgpO1xuICB9LFxuICBwb2ludDogZnVuY3Rpb24oeCwgeSkge1xuICAgIHggPSAreCwgeSA9ICt5O1xuICAgIGlmICh0aGlzLl9wb2ludCkgdGhpcy5fY29udGV4dC5saW5lVG8oeCwgeSk7XG4gICAgZWxzZSB0aGlzLl9wb2ludCA9IDEsIHRoaXMuX2NvbnRleHQubW92ZVRvKHgsIHkpO1xuICB9XG59O1xuXG5leHBvcnQgZGVmYXVsdCBmdW5jdGlvbihjb250ZXh0KSB7XG4gIHJldHVybiBuZXcgTGluZWFyQ2xvc2VkKGNvbnRleHQpO1xufVxuIl0sIm1hcHBpbmdzIjoiQUFBQTtBQUFBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7Iiwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///./node_modules/vega-functions/node_modules/d3-shape/src/curve/linearClosed.js\n");

/***/ }),

/***/ "./node_modules/vega-functions/node_modules/d3-shape/src/curve/monotone.js":
/*!*********************************************************************************!*\
  !*** ./node_modules/vega-functions/node_modules/d3-shape/src/curve/monotone.js ***!
  \*********************************************************************************/
/*! exports provided: monotoneX, monotoneY */
/***/ (function(module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"monotoneX\", function() { return monotoneX; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"monotoneY\", function() { return monotoneY; });\nfunction sign(x) {\n  return x < 0 ? -1 : 1;\n}\n\n// Calculate the slopes of the tangents (Hermite-type interpolation) based on\n// the following paper: Steffen, M. 1990. A Simple Method for Monotonic\n// Interpolation in One Dimension. Astronomy and Astrophysics, Vol. 239, NO.\n// NOV(II), P. 443, 1990.\nfunction slope3(that, x2, y2) {\n  var h0 = that._x1 - that._x0,\n      h1 = x2 - that._x1,\n      s0 = (that._y1 - that._y0) / (h0 || h1 < 0 && -0),\n      s1 = (y2 - that._y1) / (h1 || h0 < 0 && -0),\n      p = (s0 * h1 + s1 * h0) / (h0 + h1);\n  return (sign(s0) + sign(s1)) * Math.min(Math.abs(s0), Math.abs(s1), 0.5 * Math.abs(p)) || 0;\n}\n\n// Calculate a one-sided slope.\nfunction slope2(that, t) {\n  var h = that._x1 - that._x0;\n  return h ? (3 * (that._y1 - that._y0) / h - t) / 2 : t;\n}\n\n// According to https://en.wikipedia.org/wiki/Cubic_Hermite_spline#Representations\n// \"you can express cubic Hermite interpolation in terms of cubic Bézier curves\n// with respect to the four values p0, p0 + m0 / 3, p1 - m1 / 3, p1\".\nfunction point(that, t0, t1) {\n  var x0 = that._x0,\n      y0 = that._y0,\n      x1 = that._x1,\n      y1 = that._y1,\n      dx = (x1 - x0) / 3;\n  that._context.bezierCurveTo(x0 + dx, y0 + dx * t0, x1 - dx, y1 - dx * t1, x1, y1);\n}\n\nfunction MonotoneX(context) {\n  this._context = context;\n}\n\nMonotoneX.prototype = {\n  areaStart: function() {\n    this._line = 0;\n  },\n  areaEnd: function() {\n    this._line = NaN;\n  },\n  lineStart: function() {\n    this._x0 = this._x1 =\n    this._y0 = this._y1 =\n    this._t0 = NaN;\n    this._point = 0;\n  },\n  lineEnd: function() {\n    switch (this._point) {\n      case 2: this._context.lineTo(this._x1, this._y1); break;\n      case 3: point(this, this._t0, slope2(this, this._t0)); break;\n    }\n    if (this._line || (this._line !== 0 && this._point === 1)) this._context.closePath();\n    this._line = 1 - this._line;\n  },\n  point: function(x, y) {\n    var t1 = NaN;\n\n    x = +x, y = +y;\n    if (x === this._x1 && y === this._y1) return; // Ignore coincident points.\n    switch (this._point) {\n      case 0: this._point = 1; this._line ? this._context.lineTo(x, y) : this._context.moveTo(x, y); break;\n      case 1: this._point = 2; break;\n      case 2: this._point = 3; point(this, slope2(this, t1 = slope3(this, x, y)), t1); break;\n      default: point(this, this._t0, t1 = slope3(this, x, y)); break;\n    }\n\n    this._x0 = this._x1, this._x1 = x;\n    this._y0 = this._y1, this._y1 = y;\n    this._t0 = t1;\n  }\n}\n\nfunction MonotoneY(context) {\n  this._context = new ReflectContext(context);\n}\n\n(MonotoneY.prototype = Object.create(MonotoneX.prototype)).point = function(x, y) {\n  MonotoneX.prototype.point.call(this, y, x);\n};\n\nfunction ReflectContext(context) {\n  this._context = context;\n}\n\nReflectContext.prototype = {\n  moveTo: function(x, y) { this._context.moveTo(y, x); },\n  closePath: function() { this._context.closePath(); },\n  lineTo: function(x, y) { this._context.lineTo(y, x); },\n  bezierCurveTo: function(x1, y1, x2, y2, x, y) { this._context.bezierCurveTo(y1, x1, y2, x2, y, x); }\n};\n\nfunction monotoneX(context) {\n  return new MonotoneX(context);\n}\n\nfunction monotoneY(context) {\n  return new MonotoneY(context);\n}\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,[encoded data, 5468 characters]\n//# sourceURL=webpack-internal:///./node_modules/vega-functions/node_modules/d3-shape/src/curve/monotone.js\n");

/***/ }),

/***/ "./node_modules/vega-functions/node_modules/d3-shape/src/curve/natural.js":
/*!********************************************************************************!*\
  !*** ./node_modules/vega-functions/node_modules/d3-shape/src/curve/natural.js ***!
  \********************************************************************************/
/*! exports provided: default */
/***/ (function(module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\nfunction Natural(context) {\n  this._context = context;\n}\n\nNatural.prototype = {\n  areaStart: function() {\n    this._line = 0;\n  },\n  areaEnd: function() {\n    this._line = NaN;\n  },\n  lineStart: function() {\n    this._x = [];\n    this._y = [];\n  },\n  lineEnd: function() {\n    var x = this._x,\n        y = this._y,\n        n = x.length;\n\n    if (n) {\n      this._line ? this._context.lineTo(x[0], y[0]) : this._context.moveTo(x[0], y[0]);\n      if (n === 2) {\n        this._context.lineTo(x[1], y[1]);\n      } else {\n        var px = controlPoints(x),\n            py = controlPoints(y);\n        for (var i0 = 0, i1 = 1; i1 < n; ++i0, ++i1) {\n          this._context.bezierCurveTo(px[0][i0], py[0][i0], px[1][i0], py[1][i0], x[i1], y[i1]);\n        }\n      }\n    }\n\n    if (this._line || (this._line !== 0 && n === 1)) this._context.closePath();\n    this._line = 1 - this._line;\n    this._x = this._y = null;\n  },\n  point: function(x, y) {\n    this._x.push(+x);\n    this._y.push(+y);\n  }\n};\n\n// See https://www.particleincell.com/2012/bezier-splines/ for derivation.\nfunction controlPoints(x) {\n  var i,\n      n = x.length - 1,\n      m,\n      a = new Array(n),\n      b = new Array(n),\n      r = new Array(n);\n  a[0] = 0, b[0] = 2, r[0] = x[0] + 2 * x[1];\n  for (i = 1; i < n - 1; ++i) a[i] = 1, b[i] = 4, r[i] = 4 * x[i] + 2 * x[i + 1];\n  a[n - 1] = 2, b[n - 1] = 7, r[n - 1] = 8 * x[n - 1] + x[n];\n  for (i = 1; i < n; ++i) m = a[i] / b[i - 1], b[i] -= m, r[i] -= m * r[i - 1];\n  a[n - 1] = r[n - 1] / b[n - 1];\n  for (i = n - 2; i >= 0; --i) a[i] = (r[i] - a[i + 1]) / b[i];\n  b[n - 1] = (x[n] + a[n - 1]) / 2;\n  for (i = 0; i < n - 1; ++i) b[i] = 2 * x[i + 1] - a[i + 1];\n  return [a, b];\n}\n\n/* harmony default export */ __webpack_exports__[\"default\"] = (function(context) {\n  return new Natural(context);\n});\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvdmVnYS1mdW5jdGlvbnMvbm9kZV9tb2R1bGVzL2QzLXNoYXBlL3NyYy9jdXJ2ZS9uYXR1cmFsLmpzLmpzIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL3ZlZ2EtZnVuY3Rpb25zL25vZGVfbW9kdWxlcy9kMy1zaGFwZS9zcmMvY3VydmUvbmF0dXJhbC5qcz85Y2VmIl0sInNvdXJjZXNDb250ZW50IjpbImZ1bmN0aW9uIE5hdHVyYWwoY29udGV4dCkge1xuICB0aGlzLl9jb250ZXh0ID0gY29udGV4dDtcbn1cblxuTmF0dXJhbC5wcm90b3R5cGUgPSB7XG4gIGFyZWFTdGFydDogZnVuY3Rpb24oKSB7XG4gICAgdGhpcy5fbGluZSA9IDA7XG4gIH0sXG4gIGFyZWFFbmQ6IGZ1bmN0aW9uKCkge1xuICAgIHRoaXMuX2xpbmUgPSBOYU47XG4gIH0sXG4gIGxpbmVTdGFydDogZnVuY3Rpb24oKSB7XG4gICAgdGhpcy5feCA9IFtdO1xuICAgIHRoaXMuX3kgPSBbXTtcbiAgfSxcbiAgbGluZUVuZDogZnVuY3Rpb24oKSB7XG4gICAgdmFyIHggPSB0aGlzLl94LFxuICAgICAgICB5ID0gdGhpcy5feSxcbiAgICAgICAgbiA9IHgubGVuZ3RoO1xuXG4gICAgaWYgKG4pIHtcbiAgICAgIHRoaXMuX2xpbmUgPyB0aGlzLl9jb250ZXh0LmxpbmVUbyh4WzBdLCB5WzBdKSA6IHRoaXMuX2NvbnRleHQubW92ZVRvKHhbMF0sIHlbMF0pO1xuICAgICAgaWYgKG4gPT09IDIpIHtcbiAgICAgICAgdGhpcy5fY29udGV4dC5saW5lVG8oeFsxXSwgeVsxXSk7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICB2YXIgcHggPSBjb250cm9sUG9pbnRzKHgpLFxuICAgICAgICAgICAgcHkgPSBjb250cm9sUG9pbnRzKHkpO1xuICAgICAgICBmb3IgKHZhciBpMCA9IDAsIGkxID0gMTsgaTEgPCBuOyArK2kwLCArK2kxKSB7XG4gICAgICAgICAgdGhpcy5fY29udGV4dC5iZXppZXJDdXJ2ZVRvKHB4WzBdW2kwXSwgcHlbMF1baTBdLCBweFsxXVtpMF0sIHB5WzFdW2kwXSwgeFtpMV0sIHlbaTFdKTtcbiAgICAgICAgfVxuICAgICAgfVxuICAgIH1cblxuICAgIGlmICh0aGlzLl9saW5lIHx8ICh0aGlzLl9saW5lICE9PSAwICYmIG4gPT09IDEpKSB0aGlzLl9jb250ZXh0LmNsb3NlUGF0aCgpO1xuICAgIHRoaXMuX2xpbmUgPSAxIC0gdGhpcy5fbGluZTtcbiAgICB0aGlzLl94ID0gdGhpcy5feSA9IG51bGw7XG4gIH0sXG4gIHBvaW50OiBmdW5jdGlvbih4LCB5KSB7XG4gICAgdGhpcy5feC5wdXNoKCt4KTtcbiAgICB0aGlzLl95LnB1c2goK3kpO1xuICB9XG59O1xuXG4vLyBTZWUgaHR0cHM6Ly93d3cucGFydGljbGVpbmNlbGwuY29tLzIwMTIvYmV6aWVyLXNwbGluZXMvIGZvciBkZXJpdmF0aW9uLlxuZnVuY3Rpb24gY29udHJvbFBvaW50cyh4KSB7XG4gIHZhciBpLFxuICAgICAgbiA9IHgubGVuZ3RoIC0gMSxcbiAgICAgIG0sXG4gICAgICBhID0gbmV3IEFycmF5KG4pLFxuICAgICAgYiA9IG5ldyBBcnJheShuKSxcbiAgICAgIHIgPSBuZXcgQXJyYXkobik7XG4gIGFbMF0gPSAwLCBiWzBdID0gMiwgclswXSA9IHhbMF0gKyAyICogeFsxXTtcbiAgZm9yIChpID0gMTsgaSA8IG4gLSAxOyArK2kpIGFbaV0gPSAxLCBiW2ldID0gNCwgcltpXSA9IDQgKiB4W2ldICsgMiAqIHhbaSArIDFdO1xuICBhW24gLSAxXSA9IDIsIGJbbiAtIDFdID0gNywgcltuIC0gMV0gPSA4ICogeFtuIC0gMV0gKyB4W25dO1xuICBmb3IgKGkgPSAxOyBpIDwgbjsgKytpKSBtID0gYVtpXSAvIGJbaSAtIDFdLCBiW2ldIC09IG0sIHJbaV0gLT0gbSAqIHJbaSAtIDFdO1xuICBhW24gLSAxXSA9IHJbbiAtIDFdIC8gYltuIC0gMV07XG4gIGZvciAoaSA9IG4gLSAyOyBpID49IDA7IC0taSkgYVtpXSA9IChyW2ldIC0gYVtpICsgMV0pIC8gYltpXTtcbiAgYltuIC0gMV0gPSAoeFtuXSArIGFbbiAtIDFdKSAvIDI7XG4gIGZvciAoaSA9IDA7IGkgPCBuIC0gMTsgKytpKSBiW2ldID0gMiAqIHhbaSArIDFdIC0gYVtpICsgMV07XG4gIHJldHVybiBbYSwgYl07XG59XG5cbmV4cG9ydCBkZWZhdWx0IGZ1bmN0aW9uKGNvbnRleHQpIHtcbiAgcmV0dXJuIG5ldyBOYXR1cmFsKGNvbnRleHQpO1xufVxuIl0sIm1hcHBpbmdzIjoiQUFBQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7Iiwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///./node_modules/vega-functions/node_modules/d3-shape/src/curve/natural.js\n");

/***/ }),

/***/ "./node_modules/vega-functions/node_modules/d3-shape/src/curve/radial.js":
/*!*******************************************************************************!*\
  !*** ./node_modules/vega-functions/node_modules/d3-shape/src/curve/radial.js ***!
  \*******************************************************************************/
/*! exports provided: curveRadialLinear, default */
/***/ (function(module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"curveRadialLinear\", function() { return curveRadialLinear; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"default\", function() { return curveRadial; });\n/* harmony import */ var _linear_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./linear.js */ \"./node_modules/vega-functions/node_modules/d3-shape/src/curve/linear.js\");\n\n\nvar curveRadialLinear = curveRadial(_linear_js__WEBPACK_IMPORTED_MODULE_0__[\"default\"]);\n\nfunction Radial(curve) {\n  this._curve = curve;\n}\n\nRadial.prototype = {\n  areaStart: function() {\n    this._curve.areaStart();\n  },\n  areaEnd: function() {\n    this._curve.areaEnd();\n  },\n  lineStart: function() {\n    this._curve.lineStart();\n  },\n  lineEnd: function() {\n    this._curve.lineEnd();\n  },\n  point: function(a, r) {\n    this._curve.point(r * Math.sin(a), r * -Math.cos(a));\n  }\n};\n\nfunction curveRadial(curve) {\n\n  function radial(context) {\n    return new Radial(curve(context));\n  }\n\n  radial._curve = curve;\n\n  return radial;\n}\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvdmVnYS1mdW5jdGlvbnMvbm9kZV9tb2R1bGVzL2QzLXNoYXBlL3NyYy9jdXJ2ZS9yYWRpYWwuanMuanMiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvdmVnYS1mdW5jdGlvbnMvbm9kZV9tb2R1bGVzL2QzLXNoYXBlL3NyYy9jdXJ2ZS9yYWRpYWwuanM/MmRlYyJdLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgY3VydmVMaW5lYXIgZnJvbSBcIi4vbGluZWFyLmpzXCI7XG5cbmV4cG9ydCB2YXIgY3VydmVSYWRpYWxMaW5lYXIgPSBjdXJ2ZVJhZGlhbChjdXJ2ZUxpbmVhcik7XG5cbmZ1bmN0aW9uIFJhZGlhbChjdXJ2ZSkge1xuICB0aGlzLl9jdXJ2ZSA9IGN1cnZlO1xufVxuXG5SYWRpYWwucHJvdG90eXBlID0ge1xuICBhcmVhU3RhcnQ6IGZ1bmN0aW9uKCkge1xuICAgIHRoaXMuX2N1cnZlLmFyZWFTdGFydCgpO1xuICB9LFxuICBhcmVhRW5kOiBmdW5jdGlvbigpIHtcbiAgICB0aGlzLl9jdXJ2ZS5hcmVhRW5kKCk7XG4gIH0sXG4gIGxpbmVTdGFydDogZnVuY3Rpb24oKSB7XG4gICAgdGhpcy5fY3VydmUubGluZVN0YXJ0KCk7XG4gIH0sXG4gIGxpbmVFbmQ6IGZ1bmN0aW9uKCkge1xuICAgIHRoaXMuX2N1cnZlLmxpbmVFbmQoKTtcbiAgfSxcbiAgcG9pbnQ6IGZ1bmN0aW9uKGEsIHIpIHtcbiAgICB0aGlzLl9jdXJ2ZS5wb2ludChyICogTWF0aC5zaW4oYSksIHIgKiAtTWF0aC5jb3MoYSkpO1xuICB9XG59O1xuXG5leHBvcnQgZGVmYXVsdCBmdW5jdGlvbiBjdXJ2ZVJhZGlhbChjdXJ2ZSkge1xuXG4gIGZ1bmN0aW9uIHJhZGlhbChjb250ZXh0KSB7XG4gICAgcmV0dXJuIG5ldyBSYWRpYWwoY3VydmUoY29udGV4dCkpO1xuICB9XG5cbiAgcmFkaWFsLl9jdXJ2ZSA9IGN1cnZlO1xuXG4gIHJldHVybiByYWRpYWw7XG59XG4iXSwibWFwcGluZ3MiOiJBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOyIsInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///./node_modules/vega-functions/node_modules/d3-shape/src/curve/radial.js\n");

/***/ }),

/***/ "./node_modules/vega-functions/node_modules/d3-shape/src/curve/step.js":
/*!*****************************************************************************!*\
  !*** ./node_modules/vega-functions/node_modules/d3-shape/src/curve/step.js ***!
  \*****************************************************************************/
/*! exports provided: default, stepBefore, stepAfter */
/***/ (function(module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"stepBefore\", function() { return stepBefore; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"stepAfter\", function() { return stepAfter; });\nfunction Step(context, t) {\n  this._context = context;\n  this._t = t;\n}\n\nStep.prototype = {\n  areaStart: function() {\n    this._line = 0;\n  },\n  areaEnd: function() {\n    this._line = NaN;\n  },\n  lineStart: function() {\n    this._x = this._y = NaN;\n    this._point = 0;\n  },\n  lineEnd: function() {\n    if (0 < this._t && this._t < 1 && this._point === 2) this._context.lineTo(this._x, this._y);\n    if (this._line || (this._line !== 0 && this._point === 1)) this._context.closePath();\n    if (this._line >= 0) this._t = 1 - this._t, this._line = 1 - this._line;\n  },\n  point: function(x, y) {\n    x = +x, y = +y;\n    switch (this._point) {\n      case 0: this._point = 1; this._line ? this._context.lineTo(x, y) : this._context.moveTo(x, y); break;\n      case 1: this._point = 2; // proceed\n      default: {\n        if (this._t <= 0) {\n          this._context.lineTo(this._x, y);\n          this._context.lineTo(x, y);\n        } else {\n          var x1 = this._x * (1 - this._t) + x * this._t;\n          this._context.lineTo(x1, this._y);\n          this._context.lineTo(x1, y);\n        }\n        break;\n      }\n    }\n    this._x = x, this._y = y;\n  }\n};\n\n/* harmony default export */ __webpack_exports__[\"default\"] = (function(context) {\n  return new Step(context, 0.5);\n});\n\nfunction stepBefore(context) {\n  return new Step(context, 0);\n}\n\nfunction stepAfter(context) {\n  return new Step(context, 1);\n}\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvdmVnYS1mdW5jdGlvbnMvbm9kZV9tb2R1bGVzL2QzLXNoYXBlL3NyYy9jdXJ2ZS9zdGVwLmpzLmpzIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL3ZlZ2EtZnVuY3Rpb25zL25vZGVfbW9kdWxlcy9kMy1zaGFwZS9zcmMvY3VydmUvc3RlcC5qcz9lMGNkIl0sInNvdXJjZXNDb250ZW50IjpbImZ1bmN0aW9uIFN0ZXAoY29udGV4dCwgdCkge1xuICB0aGlzLl9jb250ZXh0ID0gY29udGV4dDtcbiAgdGhpcy5fdCA9IHQ7XG59XG5cblN0ZXAucHJvdG90eXBlID0ge1xuICBhcmVhU3RhcnQ6IGZ1bmN0aW9uKCkge1xuICAgIHRoaXMuX2xpbmUgPSAwO1xuICB9LFxuICBhcmVhRW5kOiBmdW5jdGlvbigpIHtcbiAgICB0aGlzLl9saW5lID0gTmFOO1xuICB9LFxuICBsaW5lU3RhcnQ6IGZ1bmN0aW9uKCkge1xuICAgIHRoaXMuX3ggPSB0aGlzLl95ID0gTmFOO1xuICAgIHRoaXMuX3BvaW50ID0gMDtcbiAgfSxcbiAgbGluZUVuZDogZnVuY3Rpb24oKSB7XG4gICAgaWYgKDAgPCB0aGlzLl90ICYmIHRoaXMuX3QgPCAxICYmIHRoaXMuX3BvaW50ID09PSAyKSB0aGlzLl9jb250ZXh0LmxpbmVUbyh0aGlzLl94LCB0aGlzLl95KTtcbiAgICBpZiAodGhpcy5fbGluZSB8fCAodGhpcy5fbGluZSAhPT0gMCAmJiB0aGlzLl9wb2ludCA9PT0gMSkpIHRoaXMuX2NvbnRleHQuY2xvc2VQYXRoKCk7XG4gICAgaWYgKHRoaXMuX2xpbmUgPj0gMCkgdGhpcy5fdCA9IDEgLSB0aGlzLl90LCB0aGlzLl9saW5lID0gMSAtIHRoaXMuX2xpbmU7XG4gIH0sXG4gIHBvaW50OiBmdW5jdGlvbih4LCB5KSB7XG4gICAgeCA9ICt4LCB5ID0gK3k7XG4gICAgc3dpdGNoICh0aGlzLl9wb2ludCkge1xuICAgICAgY2FzZSAwOiB0aGlzLl9wb2ludCA9IDE7IHRoaXMuX2xpbmUgPyB0aGlzLl9jb250ZXh0LmxpbmVUbyh4LCB5KSA6IHRoaXMuX2NvbnRleHQubW92ZVRvKHgsIHkpOyBicmVhaztcbiAgICAgIGNhc2UgMTogdGhpcy5fcG9pbnQgPSAyOyAvLyBwcm9jZWVkXG4gICAgICBkZWZhdWx0OiB7XG4gICAgICAgIGlmICh0aGlzLl90IDw9IDApIHtcbiAgICAgICAgICB0aGlzLl9jb250ZXh0LmxpbmVUbyh0aGlzLl94LCB5KTtcbiAgICAgICAgICB0aGlzLl9jb250ZXh0LmxpbmVUbyh4LCB5KTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICB2YXIgeDEgPSB0aGlzLl94ICogKDEgLSB0aGlzLl90KSArIHggKiB0aGlzLl90O1xuICAgICAgICAgIHRoaXMuX2NvbnRleHQubGluZVRvKHgxLCB0aGlzLl95KTtcbiAgICAgICAgICB0aGlzLl9jb250ZXh0LmxpbmVUbyh4MSwgeSk7XG4gICAgICAgIH1cbiAgICAgICAgYnJlYWs7XG4gICAgICB9XG4gICAgfVxuICAgIHRoaXMuX3ggPSB4LCB0aGlzLl95ID0geTtcbiAgfVxufTtcblxuZXhwb3J0IGRlZmF1bHQgZnVuY3Rpb24oY29udGV4dCkge1xuICByZXR1cm4gbmV3IFN0ZXAoY29udGV4dCwgMC41KTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIHN0ZXBCZWZvcmUoY29udGV4dCkge1xuICByZXR1cm4gbmV3IFN0ZXAoY29udGV4dCwgMCk7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBzdGVwQWZ0ZXIoY29udGV4dCkge1xuICByZXR1cm4gbmV3IFN0ZXAoY29udGV4dCwgMSk7XG59XG4iXSwibWFwcGluZ3MiOiJBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7Iiwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///./node_modules/vega-functions/node_modules/d3-shape/src/curve/step.js\n");

/***/ }),

/***/ "./node_modules/vega-functions/node_modules/d3-shape/src/descending.js":
/*!*****************************************************************************!*\
  !*** ./node_modules/vega-functions/node_modules/d3-shape/src/descending.js ***!
  \*****************************************************************************/
/*! exports provided: default */
/***/ (function(module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony default export */ __webpack_exports__[\"default\"] = (function(a, b) {\n  return b < a ? -1 : b > a ? 1 : b >= a ? 0 : NaN;\n});\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvdmVnYS1mdW5jdGlvbnMvbm9kZV9tb2R1bGVzL2QzLXNoYXBlL3NyYy9kZXNjZW5kaW5nLmpzLmpzIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL3ZlZ2EtZnVuY3Rpb25zL25vZGVfbW9kdWxlcy9kMy1zaGFwZS9zcmMvZGVzY2VuZGluZy5qcz8xNDE5Il0sInNvdXJjZXNDb250ZW50IjpbImV4cG9ydCBkZWZhdWx0IGZ1bmN0aW9uKGEsIGIpIHtcbiAgcmV0dXJuIGIgPCBhID8gLTEgOiBiID4gYSA/IDEgOiBiID49IGEgPyAwIDogTmFOO1xufVxuIl0sIm1hcHBpbmdzIjoiQUFBQTtBQUFBO0FBQ0E7QUFDQTsiLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///./node_modules/vega-functions/node_modules/d3-shape/src/descending.js\n");

/***/ }),

/***/ "./node_modules/vega-functions/node_modules/d3-shape/src/identity.js":
/*!***************************************************************************!*\
  !*** ./node_modules/vega-functions/node_modules/d3-shape/src/identity.js ***!
  \***************************************************************************/
/*! exports provided: default */
/***/ (function(module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony default export */ __webpack_exports__[\"default\"] = (function(d) {\n  return d;\n});\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvdmVnYS1mdW5jdGlvbnMvbm9kZV9tb2R1bGVzL2QzLXNoYXBlL3NyYy9pZGVudGl0eS5qcy5qcyIsInNvdXJjZXMiOlsid2VicGFjazovLy8uL25vZGVfbW9kdWxlcy92ZWdhLWZ1bmN0aW9ucy9ub2RlX21vZHVsZXMvZDMtc2hhcGUvc3JjL2lkZW50aXR5LmpzPzgwZDciXSwic291cmNlc0NvbnRlbnQiOlsiZXhwb3J0IGRlZmF1bHQgZnVuY3Rpb24oZCkge1xuICByZXR1cm4gZDtcbn1cbiJdLCJtYXBwaW5ncyI6IkFBQUE7QUFBQTtBQUNBO0FBQ0E7Iiwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///./node_modules/vega-functions/node_modules/d3-shape/src/identity.js\n");

/***/ }),

/***/ "./node_modules/vega-functions/node_modules/d3-shape/src/index.js":
/*!************************************************************************!*\
  !*** ./node_modules/vega-functions/node_modules/d3-shape/src/index.js ***!
  \************************************************************************/
/*! exports provided: arc, area, line, pie, areaRadial, radialArea, lineRadial, radialLine, pointRadial, linkHorizontal, linkVertical, linkRadial, symbol, symbols, symbolCircle, symbolCross, symbolDiamond, symbolSquare, symbolStar, symbolTriangle, symbolWye, curveBasisClosed, curveBasisOpen, curveBasis, curveBumpX, curveBumpY, curveBundle, curveCardinalClosed, curveCardinalOpen, curveCardinal, curveCatmullRomClosed, curveCatmullRomOpen, curveCatmullRom, curveLinearClosed, curveLinear, curveMonotoneX, curveMonotoneY, curveNatural, curveStep, curveStepAfter, curveStepBefore, stack, stackOffsetExpand, stackOffsetDiverging, stackOffsetNone, stackOffsetSilhouette, stackOffsetWiggle, stackOrderAppearance, stackOrderAscending, stackOrderDescending, stackOrderInsideOut, stackOrderNone, stackOrderReverse */
/***/ (function(module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _arc_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./arc.js */ \"./node_modules/vega-functions/node_modules/d3-shape/src/arc.js\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"arc\", function() { return _arc_js__WEBPACK_IMPORTED_MODULE_0__[\"default\"]; });\n\n/* harmony import */ var _area_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./area.js */ \"./node_modules/vega-functions/node_modules/d3-shape/src/area.js\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"area\", function() { return _area_js__WEBPACK_IMPORTED_MODULE_1__[\"default\"]; });\n\n/* harmony import */ var _line_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./line.js */ \"./node_modules/vega-functions/node_modules/d3-shape/src/line.js\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"line\", function() { return _line_js__WEBPACK_IMPORTED_MODULE_2__[\"default\"]; });\n\n/* harmony import */ var _pie_js__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ./pie.js */ \"./node_modules/vega-functions/node_modules/d3-shape/src/pie.js\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"pie\", function() { return _pie_js__WEBPACK_IMPORTED_MODULE_3__[\"default\"]; });\n\n/* harmony import */ var _areaRadial_js__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ./areaRadial.js */ \"./node_modules/vega-functions/node_modules/d3-shape/src/areaRadial.js\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"areaRadial\", function() { return _areaRadial_js__WEBPACK_IMPORTED_MODULE_4__[\"default\"]; });\n\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"radialArea\", function() { return _areaRadial_js__WEBPACK_IMPORTED_MODULE_4__[\"default\"]; });\n\n/* harmony import */ var _lineRadial_js__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! ./lineRadial.js */ \"./node_modules/vega-functions/node_modules/d3-shape/src/lineRadial.js\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"lineRadial\", function() { return _lineRadial_js__WEBPACK_IMPORTED_MODULE_5__[\"default\"]; });\n\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"radialLine\", function() { return _lineRadial_js__WEBPACK_IMPORTED_MODULE_5__[\"default\"]; });\n\n/* harmony import */ var _pointRadial_js__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! ./pointRadial.js */ \"./node_modules/vega-functions/node_modules/d3-shape/src/pointRadial.js\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"pointRadial\", function() { return _pointRadial_js__WEBPACK_IMPORTED_MODULE_6__[\"default\"]; });\n\n/* harmony import */ var _link_index_js__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! ./link/index.js */ \"./node_modules/vega-functions/node_modules/d3-shape/src/link/index.js\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"linkHorizontal\", function() { return _link_index_js__WEBPACK_IMPORTED_MODULE_7__[\"linkHorizontal\"]; });\n\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"linkVertical\", function() { return _link_index_js__WEBPACK_IMPORTED_MODULE_7__[\"linkVertical\"]; });\n\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"linkRadial\", function() { return _link_index_js__WEBPACK_IMPORTED_MODULE_7__[\"linkRadial\"]; });\n\n/* harmony import */ var _symbol_js__WEBPACK_IMPORTED_MODULE_8__ = __webpack_require__(/*! ./symbol.js */ \"./node_modules/vega-functions/node_modules/d3-shape/src/symbol.js\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"symbol\", function() { return _symbol_js__WEBPACK_IMPORTED_MODULE_8__[\"default\"]; });\n\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"symbols\", function() { return _symbol_js__WEBPACK_IMPORTED_MODULE_8__[\"symbols\"]; });\n\n/* harmony import */ var _symbol_circle_js__WEBPACK_IMPORTED_MODULE_9__ = __webpack_require__(/*! ./symbol/circle.js */ \"./node_modules/vega-functions/node_modules/d3-shape/src/symbol/circle.js\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"symbolCircle\", function() { return _symbol_circle_js__WEBPACK_IMPORTED_MODULE_9__[\"default\"]; });\n\n/* harmony import */ var _symbol_cross_js__WEBPACK_IMPORTED_MODULE_10__ = __webpack_require__(/*! ./symbol/cross.js */ \"./node_modules/vega-functions/node_modules/d3-shape/src/symbol/cross.js\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"symbolCross\", function() { return _symbol_cross_js__WEBPACK_IMPORTED_MODULE_10__[\"default\"]; });\n\n/* harmony import */ var _symbol_diamond_js__WEBPACK_IMPORTED_MODULE_11__ = __webpack_require__(/*! ./symbol/diamond.js */ \"./node_modules/vega-functions/node_modules/d3-shape/src/symbol/diamond.js\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"symbolDiamond\", function() { return _symbol_diamond_js__WEBPACK_IMPORTED_MODULE_11__[\"default\"]; });\n\n/* harmony import */ var _symbol_square_js__WEBPACK_IMPORTED_MODULE_12__ = __webpack_require__(/*! ./symbol/square.js */ \"./node_modules/vega-functions/node_modules/d3-shape/src/symbol/square.js\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"symbolSquare\", function() { return _symbol_square_js__WEBPACK_IMPORTED_MODULE_12__[\"default\"]; });\n\n/* harmony import */ var _symbol_star_js__WEBPACK_IMPORTED_MODULE_13__ = __webpack_require__(/*! ./symbol/star.js */ \"./node_modules/vega-functions/node_modules/d3-shape/src/symbol/star.js\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"symbolStar\", function() { return _symbol_star_js__WEBPACK_IMPORTED_MODULE_13__[\"default\"]; });\n\n/* harmony import */ var _symbol_triangle_js__WEBPACK_IMPORTED_MODULE_14__ = __webpack_require__(/*! ./symbol/triangle.js */ \"./node_modules/vega-functions/node_modules/d3-shape/src/symbol/triangle.js\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"symbolTriangle\", function() { return _symbol_triangle_js__WEBPACK_IMPORTED_MODULE_14__[\"default\"]; });\n\n/* harmony import */ var _symbol_wye_js__WEBPACK_IMPORTED_MODULE_15__ = __webpack_require__(/*! ./symbol/wye.js */ \"./node_modules/vega-functions/node_modules/d3-shape/src/symbol/wye.js\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"symbolWye\", function() { return _symbol_wye_js__WEBPACK_IMPORTED_MODULE_15__[\"default\"]; });\n\n/* harmony import */ var _curve_basisClosed_js__WEBPACK_IMPORTED_MODULE_16__ = __webpack_require__(/*! ./curve/basisClosed.js */ \"./node_modules/vega-functions/node_modules/d3-shape/src/curve/basisClosed.js\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"curveBasisClosed\", function() { return _curve_basisClosed_js__WEBPACK_IMPORTED_MODULE_16__[\"default\"]; });\n\n/* harmony import */ var _curve_basisOpen_js__WEBPACK_IMPORTED_MODULE_17__ = __webpack_require__(/*! ./curve/basisOpen.js */ \"./node_modules/vega-functions/node_modules/d3-shape/src/curve/basisOpen.js\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"curveBasisOpen\", function() { return _curve_basisOpen_js__WEBPACK_IMPORTED_MODULE_17__[\"default\"]; });\n\n/* harmony import */ var _curve_basis_js__WEBPACK_IMPORTED_MODULE_18__ = __webpack_require__(/*! ./curve/basis.js */ \"./node_modules/vega-functions/node_modules/d3-shape/src/curve/basis.js\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"curveBasis\", function() { return _curve_basis_js__WEBPACK_IMPORTED_MODULE_18__[\"default\"]; });\n\n/* harmony import */ var _curve_bump_js__WEBPACK_IMPORTED_MODULE_19__ = __webpack_require__(/*! ./curve/bump.js */ \"./node_modules/vega-functions/node_modules/d3-shape/src/curve/bump.js\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"curveBumpX\", function() { return _curve_bump_js__WEBPACK_IMPORTED_MODULE_19__[\"bumpX\"]; });\n\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"curveBumpY\", function() { return _curve_bump_js__WEBPACK_IMPORTED_MODULE_19__[\"bumpY\"]; });\n\n/* harmony import */ var _curve_bundle_js__WEBPACK_IMPORTED_MODULE_20__ = __webpack_require__(/*! ./curve/bundle.js */ \"./node_modules/vega-functions/node_modules/d3-shape/src/curve/bundle.js\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"curveBundle\", function() { return _curve_bundle_js__WEBPACK_IMPORTED_MODULE_20__[\"default\"]; });\n\n/* harmony import */ var _curve_cardinalClosed_js__WEBPACK_IMPORTED_MODULE_21__ = __webpack_require__(/*! ./curve/cardinalClosed.js */ \"./node_modules/vega-functions/node_modules/d3-shape/src/curve/cardinalClosed.js\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"curveCardinalClosed\", function() { return _curve_cardinalClosed_js__WEBPACK_IMPORTED_MODULE_21__[\"default\"]; });\n\n/* harmony import */ var _curve_cardinalOpen_js__WEBPACK_IMPORTED_MODULE_22__ = __webpack_require__(/*! ./curve/cardinalOpen.js */ \"./node_modules/vega-functions/node_modules/d3-shape/src/curve/cardinalOpen.js\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"curveCardinalOpen\", function() { return _curve_cardinalOpen_js__WEBPACK_IMPORTED_MODULE_22__[\"default\"]; });\n\n/* harmony import */ var _curve_cardinal_js__WEBPACK_IMPORTED_MODULE_23__ = __webpack_require__(/*! ./curve/cardinal.js */ \"./node_modules/vega-functions/node_modules/d3-shape/src/curve/cardinal.js\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"curveCardinal\", function() { return _curve_cardinal_js__WEBPACK_IMPORTED_MODULE_23__[\"default\"]; });\n\n/* harmony import */ var _curve_catmullRomClosed_js__WEBPACK_IMPORTED_MODULE_24__ = __webpack_require__(/*! ./curve/catmullRomClosed.js */ \"./node_modules/vega-functions/node_modules/d3-shape/src/curve/catmullRomClosed.js\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"curveCatmullRomClosed\", function() { return _curve_catmullRomClosed_js__WEBPACK_IMPORTED_MODULE_24__[\"default\"]; });\n\n/* harmony import */ var _curve_catmullRomOpen_js__WEBPACK_IMPORTED_MODULE_25__ = __webpack_require__(/*! ./curve/catmullRomOpen.js */ \"./node_modules/vega-functions/node_modules/d3-shape/src/curve/catmullRomOpen.js\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"curveCatmullRomOpen\", function() { return _curve_catmullRomOpen_js__WEBPACK_IMPORTED_MODULE_25__[\"default\"]; });\n\n/* harmony import */ var _curve_catmullRom_js__WEBPACK_IMPORTED_MODULE_26__ = __webpack_require__(/*! ./curve/catmullRom.js */ \"./node_modules/vega-functions/node_modules/d3-shape/src/curve/catmullRom.js\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"curveCatmullRom\", function() { return _curve_catmullRom_js__WEBPACK_IMPORTED_MODULE_26__[\"default\"]; });\n\n/* harmony import */ var _curve_linearClosed_js__WEBPACK_IMPORTED_MODULE_27__ = __webpack_require__(/*! ./curve/linearClosed.js */ \"./node_modules/vega-functions/node_modules/d3-shape/src/curve/linearClosed.js\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"curveLinearClosed\", function() { return _curve_linearClosed_js__WEBPACK_IMPORTED_MODULE_27__[\"default\"]; });\n\n/* harmony import */ var _curve_linear_js__WEBPACK_IMPORTED_MODULE_28__ = __webpack_require__(/*! ./curve/linear.js */ \"./node_modules/vega-functions/node_modules/d3-shape/src/curve/linear.js\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"curveLinear\", function() { return _curve_linear_js__WEBPACK_IMPORTED_MODULE_28__[\"default\"]; });\n\n/* harmony import */ var _curve_monotone_js__WEBPACK_IMPORTED_MODULE_29__ = __webpack_require__(/*! ./curve/monotone.js */ \"./node_modules/vega-functions/node_modules/d3-shape/src/curve/monotone.js\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"curveMonotoneX\", function() { return _curve_monotone_js__WEBPACK_IMPORTED_MODULE_29__[\"monotoneX\"]; });\n\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"curveMonotoneY\", function() { return _curve_monotone_js__WEBPACK_IMPORTED_MODULE_29__[\"monotoneY\"]; });\n\n/* harmony import */ var _curve_natural_js__WEBPACK_IMPORTED_MODULE_30__ = __webpack_require__(/*! ./curve/natural.js */ \"./node_modules/vega-functions/node_modules/d3-shape/src/curve/natural.js\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"curveNatural\", function() { return _curve_natural_js__WEBPACK_IMPORTED_MODULE_30__[\"default\"]; });\n\n/* harmony import */ var _curve_step_js__WEBPACK_IMPORTED_MODULE_31__ = __webpack_require__(/*! ./curve/step.js */ \"./node_modules/vega-functions/node_modules/d3-shape/src/curve/step.js\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"curveStep\", function() { return _curve_step_js__WEBPACK_IMPORTED_MODULE_31__[\"default\"]; });\n\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"curveStepAfter\", function() { return _curve_step_js__WEBPACK_IMPORTED_MODULE_31__[\"stepAfter\"]; });\n\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"curveStepBefore\", function() { return _curve_step_js__WEBPACK_IMPORTED_MODULE_31__[\"stepBefore\"]; });\n\n/* harmony import */ var _stack_js__WEBPACK_IMPORTED_MODULE_32__ = __webpack_require__(/*! ./stack.js */ \"./node_modules/vega-functions/node_modules/d3-shape/src/stack.js\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"stack\", function() { return _stack_js__WEBPACK_IMPORTED_MODULE_32__[\"default\"]; });\n\n/* harmony import */ var _offset_expand_js__WEBPACK_IMPORTED_MODULE_33__ = __webpack_require__(/*! ./offset/expand.js */ \"./node_modules/vega-functions/node_modules/d3-shape/src/offset/expand.js\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"stackOffsetExpand\", function() { return _offset_expand_js__WEBPACK_IMPORTED_MODULE_33__[\"default\"]; });\n\n/* harmony import */ var _offset_diverging_js__WEBPACK_IMPORTED_MODULE_34__ = __webpack_require__(/*! ./offset/diverging.js */ \"./node_modules/vega-functions/node_modules/d3-shape/src/offset/diverging.js\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"stackOffsetDiverging\", function() { return _offset_diverging_js__WEBPACK_IMPORTED_MODULE_34__[\"default\"]; });\n\n/* harmony import */ var _offset_none_js__WEBPACK_IMPORTED_MODULE_35__ = __webpack_require__(/*! ./offset/none.js */ \"./node_modules/vega-functions/node_modules/d3-shape/src/offset/none.js\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"stackOffsetNone\", function() { return _offset_none_js__WEBPACK_IMPORTED_MODULE_35__[\"default\"]; });\n\n/* harmony import */ var _offset_silhouette_js__WEBPACK_IMPORTED_MODULE_36__ = __webpack_require__(/*! ./offset/silhouette.js */ \"./node_modules/vega-functions/node_modules/d3-shape/src/offset/silhouette.js\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"stackOffsetSilhouette\", function() { return _offset_silhouette_js__WEBPACK_IMPORTED_MODULE_36__[\"default\"]; });\n\n/* harmony import */ var _offset_wiggle_js__WEBPACK_IMPORTED_MODULE_37__ = __webpack_require__(/*! ./offset/wiggle.js */ \"./node_modules/vega-functions/node_modules/d3-shape/src/offset/wiggle.js\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"stackOffsetWiggle\", function() { return _offset_wiggle_js__WEBPACK_IMPORTED_MODULE_37__[\"default\"]; });\n\n/* harmony import */ var _order_appearance_js__WEBPACK_IMPORTED_MODULE_38__ = __webpack_require__(/*! ./order/appearance.js */ \"./node_modules/vega-functions/node_modules/d3-shape/src/order/appearance.js\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"stackOrderAppearance\", function() { return _order_appearance_js__WEBPACK_IMPORTED_MODULE_38__[\"default\"]; });\n\n/* harmony import */ var _order_ascending_js__WEBPACK_IMPORTED_MODULE_39__ = __webpack_require__(/*! ./order/ascending.js */ \"./node_modules/vega-functions/node_modules/d3-shape/src/order/ascending.js\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"stackOrderAscending\", function() { return _order_ascending_js__WEBPACK_IMPORTED_MODULE_39__[\"default\"]; });\n\n/* harmony import */ var _order_descending_js__WEBPACK_IMPORTED_MODULE_40__ = __webpack_require__(/*! ./order/descending.js */ \"./node_modules/vega-functions/node_modules/d3-shape/src/order/descending.js\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"stackOrderDescending\", function() { return _order_descending_js__WEBPACK_IMPORTED_MODULE_40__[\"default\"]; });\n\n/* harmony import */ var _order_insideOut_js__WEBPACK_IMPORTED_MODULE_41__ = __webpack_require__(/*! ./order/insideOut.js */ \"./node_modules/vega-functions/node_modules/d3-shape/src/order/insideOut.js\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"stackOrderInsideOut\", function() { return _order_insideOut_js__WEBPACK_IMPORTED_MODULE_41__[\"default\"]; });\n\n/* harmony import */ var _order_none_js__WEBPACK_IMPORTED_MODULE_42__ = __webpack_require__(/*! ./order/none.js */ \"./node_modules/vega-functions/node_modules/d3-shape/src/order/none.js\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"stackOrderNone\", function() { return _order_none_js__WEBPACK_IMPORTED_MODULE_42__[\"default\"]; });\n\n/* harmony import */ var _order_reverse_js__WEBPACK_IMPORTED_MODULE_43__ = __webpack_require__(/*! ./order/reverse.js */ \"./node_modules/vega-functions/node_modules/d3-shape/src/order/reverse.js\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"stackOrderReverse\", function() { return _order_reverse_js__WEBPACK_IMPORTED_MODULE_43__[\"default\"]; });\n\n\n\n\n\n // Note: radialArea is deprecated!\n // Note: radialLine is deprecated!\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,[encoded data, 5712 characters]\n//# sourceURL=webpack-internal:///./node_modules/vega-functions/node_modules/d3-shape/src/index.js\n");

/***/ }),

/***/ "./node_modules/vega-functions/node_modules/d3-shape/src/line.js":
/*!***********************************************************************!*\
  !*** ./node_modules/vega-functions/node_modules/d3-shape/src/line.js ***!
  \***********************************************************************/
/*! exports provided: default */
/***/ (function(module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var d3_path__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! d3-path */ \"./node_modules/vega-functions/node_modules/d3-path/src/index.js\");\n/* harmony import */ var _array_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./array.js */ \"./node_modules/vega-functions/node_modules/d3-shape/src/array.js\");\n/* harmony import */ var _constant_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./constant.js */ \"./node_modules/vega-functions/node_modules/d3-shape/src/constant.js\");\n/* harmony import */ var _curve_linear_js__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ./curve/linear.js */ \"./node_modules/vega-functions/node_modules/d3-shape/src/curve/linear.js\");\n/* harmony import */ var _point_js__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ./point.js */ \"./node_modules/vega-functions/node_modules/d3-shape/src/point.js\");\n\n\n\n\n\n\n/* harmony default export */ __webpack_exports__[\"default\"] = (function(x, y) {\n  var defined = Object(_constant_js__WEBPACK_IMPORTED_MODULE_2__[\"default\"])(true),\n      context = null,\n      curve = _curve_linear_js__WEBPACK_IMPORTED_MODULE_3__[\"default\"],\n      output = null;\n\n  x = typeof x === \"function\" ? x : (x === undefined) ? _point_js__WEBPACK_IMPORTED_MODULE_4__[\"x\"] : Object(_constant_js__WEBPACK_IMPORTED_MODULE_2__[\"default\"])(x);\n  y = typeof y === \"function\" ? y : (y === undefined) ? _point_js__WEBPACK_IMPORTED_MODULE_4__[\"y\"] : Object(_constant_js__WEBPACK_IMPORTED_MODULE_2__[\"default\"])(y);\n\n  function line(data) {\n    var i,\n        n = (data = Object(_array_js__WEBPACK_IMPORTED_MODULE_1__[\"default\"])(data)).length,\n        d,\n        defined0 = false,\n        buffer;\n\n    if (context == null) output = curve(buffer = Object(d3_path__WEBPACK_IMPORTED_MODULE_0__[\"path\"])());\n\n    for (i = 0; i <= n; ++i) {\n      if (!(i < n && defined(d = data[i], i, data)) === defined0) {\n        if (defined0 = !defined0) output.lineStart();\n        else output.lineEnd();\n      }\n      if (defined0) output.point(+x(d, i, data), +y(d, i, data));\n    }\n\n    if (buffer) return output = null, buffer + \"\" || null;\n  }\n\n  line.x = function(_) {\n    return arguments.length ? (x = typeof _ === \"function\" ? _ : Object(_constant_js__WEBPACK_IMPORTED_MODULE_2__[\"default\"])(+_), line) : x;\n  };\n\n  line.y = function(_) {\n    return arguments.length ? (y = typeof _ === \"function\" ? _ : Object(_constant_js__WEBPACK_IMPORTED_MODULE_2__[\"default\"])(+_), line) : y;\n  };\n\n  line.defined = function(_) {\n    return arguments.length ? (defined = typeof _ === \"function\" ? _ : Object(_constant_js__WEBPACK_IMPORTED_MODULE_2__[\"default\"])(!!_), line) : defined;\n  };\n\n  line.curve = function(_) {\n    return arguments.length ? (curve = _, context != null && (output = curve(context)), line) : curve;\n  };\n\n  line.context = function(_) {\n    return arguments.length ? (_ == null ? context = output = null : output = curve(context = _), line) : context;\n  };\n\n  return line;\n});\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvdmVnYS1mdW5jdGlvbnMvbm9kZV9tb2R1bGVzL2QzLXNoYXBlL3NyYy9saW5lLmpzLmpzIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL3ZlZ2EtZnVuY3Rpb25zL25vZGVfbW9kdWxlcy9kMy1zaGFwZS9zcmMvbGluZS5qcz80M2I3Il0sInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7cGF0aH0gZnJvbSBcImQzLXBhdGhcIjtcbmltcG9ydCBhcnJheSBmcm9tIFwiLi9hcnJheS5qc1wiO1xuaW1wb3J0IGNvbnN0YW50IGZyb20gXCIuL2NvbnN0YW50LmpzXCI7XG5pbXBvcnQgY3VydmVMaW5lYXIgZnJvbSBcIi4vY3VydmUvbGluZWFyLmpzXCI7XG5pbXBvcnQge3ggYXMgcG9pbnRYLCB5IGFzIHBvaW50WX0gZnJvbSBcIi4vcG9pbnQuanNcIjtcblxuZXhwb3J0IGRlZmF1bHQgZnVuY3Rpb24oeCwgeSkge1xuICB2YXIgZGVmaW5lZCA9IGNvbnN0YW50KHRydWUpLFxuICAgICAgY29udGV4dCA9IG51bGwsXG4gICAgICBjdXJ2ZSA9IGN1cnZlTGluZWFyLFxuICAgICAgb3V0cHV0ID0gbnVsbDtcblxuICB4ID0gdHlwZW9mIHggPT09IFwiZnVuY3Rpb25cIiA/IHggOiAoeCA9PT0gdW5kZWZpbmVkKSA/IHBvaW50WCA6IGNvbnN0YW50KHgpO1xuICB5ID0gdHlwZW9mIHkgPT09IFwiZnVuY3Rpb25cIiA/IHkgOiAoeSA9PT0gdW5kZWZpbmVkKSA/IHBvaW50WSA6IGNvbnN0YW50KHkpO1xuXG4gIGZ1bmN0aW9uIGxpbmUoZGF0YSkge1xuICAgIHZhciBpLFxuICAgICAgICBuID0gKGRhdGEgPSBhcnJheShkYXRhKSkubGVuZ3RoLFxuICAgICAgICBkLFxuICAgICAgICBkZWZpbmVkMCA9IGZhbHNlLFxuICAgICAgICBidWZmZXI7XG5cbiAgICBpZiAoY29udGV4dCA9PSBudWxsKSBvdXRwdXQgPSBjdXJ2ZShidWZmZXIgPSBwYXRoKCkpO1xuXG4gICAgZm9yIChpID0gMDsgaSA8PSBuOyArK2kpIHtcbiAgICAgIGlmICghKGkgPCBuICYmIGRlZmluZWQoZCA9IGRhdGFbaV0sIGksIGRhdGEpKSA9PT0gZGVmaW5lZDApIHtcbiAgICAgICAgaWYgKGRlZmluZWQwID0gIWRlZmluZWQwKSBvdXRwdXQubGluZVN0YXJ0KCk7XG4gICAgICAgIGVsc2Ugb3V0cHV0LmxpbmVFbmQoKTtcbiAgICAgIH1cbiAgICAgIGlmIChkZWZpbmVkMCkgb3V0cHV0LnBvaW50KCt4KGQsIGksIGRhdGEpLCAreShkLCBpLCBkYXRhKSk7XG4gICAgfVxuXG4gICAgaWYgKGJ1ZmZlcikgcmV0dXJuIG91dHB1dCA9IG51bGwsIGJ1ZmZlciArIFwiXCIgfHwgbnVsbDtcbiAgfVxuXG4gIGxpbmUueCA9IGZ1bmN0aW9uKF8pIHtcbiAgICByZXR1cm4gYXJndW1lbnRzLmxlbmd0aCA/ICh4ID0gdHlwZW9mIF8gPT09IFwiZnVuY3Rpb25cIiA/IF8gOiBjb25zdGFudCgrXyksIGxpbmUpIDogeDtcbiAgfTtcblxuICBsaW5lLnkgPSBmdW5jdGlvbihfKSB7XG4gICAgcmV0dXJuIGFyZ3VtZW50cy5sZW5ndGggPyAoeSA9IHR5cGVvZiBfID09PSBcImZ1bmN0aW9uXCIgPyBfIDogY29uc3RhbnQoK18pLCBsaW5lKSA6IHk7XG4gIH07XG5cbiAgbGluZS5kZWZpbmVkID0gZnVuY3Rpb24oXykge1xuICAgIHJldHVybiBhcmd1bWVudHMubGVuZ3RoID8gKGRlZmluZWQgPSB0eXBlb2YgXyA9PT0gXCJmdW5jdGlvblwiID8gXyA6IGNvbnN0YW50KCEhXyksIGxpbmUpIDogZGVmaW5lZDtcbiAgfTtcblxuICBsaW5lLmN1cnZlID0gZnVuY3Rpb24oXykge1xuICAgIHJldHVybiBhcmd1bWVudHMubGVuZ3RoID8gKGN1cnZlID0gXywgY29udGV4dCAhPSBudWxsICYmIChvdXRwdXQgPSBjdXJ2ZShjb250ZXh0KSksIGxpbmUpIDogY3VydmU7XG4gIH07XG5cbiAgbGluZS5jb250ZXh0ID0gZnVuY3Rpb24oXykge1xuICAgIHJldHVybiBhcmd1bWVudHMubGVuZ3RoID8gKF8gPT0gbnVsbCA/IGNvbnRleHQgPSBvdXRwdXQgPSBudWxsIDogb3V0cHV0ID0gY3VydmUoY29udGV4dCA9IF8pLCBsaW5lKSA6IGNvbnRleHQ7XG4gIH07XG5cbiAgcmV0dXJuIGxpbmU7XG59XG4iXSwibWFwcGluZ3MiOiJBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTsiLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///./node_modules/vega-functions/node_modules/d3-shape/src/line.js\n");

/***/ }),

/***/ "./node_modules/vega-functions/node_modules/d3-shape/src/lineRadial.js":
/*!*****************************************************************************!*\
  !*** ./node_modules/vega-functions/node_modules/d3-shape/src/lineRadial.js ***!
  \*****************************************************************************/
/*! exports provided: lineRadial, default */
/***/ (function(module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"lineRadial\", function() { return lineRadial; });\n/* harmony import */ var _curve_radial_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./curve/radial.js */ \"./node_modules/vega-functions/node_modules/d3-shape/src/curve/radial.js\");\n/* harmony import */ var _line_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./line.js */ \"./node_modules/vega-functions/node_modules/d3-shape/src/line.js\");\n\n\n\nfunction lineRadial(l) {\n  var c = l.curve;\n\n  l.angle = l.x, delete l.x;\n  l.radius = l.y, delete l.y;\n\n  l.curve = function(_) {\n    return arguments.length ? c(Object(_curve_radial_js__WEBPACK_IMPORTED_MODULE_0__[\"default\"])(_)) : c()._curve;\n  };\n\n  return l;\n}\n\n/* harmony default export */ __webpack_exports__[\"default\"] = (function() {\n  return lineRadial(Object(_line_js__WEBPACK_IMPORTED_MODULE_1__[\"default\"])().curve(_curve_radial_js__WEBPACK_IMPORTED_MODULE_0__[\"curveRadialLinear\"]));\n});\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvdmVnYS1mdW5jdGlvbnMvbm9kZV9tb2R1bGVzL2QzLXNoYXBlL3NyYy9saW5lUmFkaWFsLmpzLmpzIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL3ZlZ2EtZnVuY3Rpb25zL25vZGVfbW9kdWxlcy9kMy1zaGFwZS9zcmMvbGluZVJhZGlhbC5qcz8wZTRhIl0sInNvdXJjZXNDb250ZW50IjpbImltcG9ydCBjdXJ2ZVJhZGlhbCwge2N1cnZlUmFkaWFsTGluZWFyfSBmcm9tIFwiLi9jdXJ2ZS9yYWRpYWwuanNcIjtcbmltcG9ydCBsaW5lIGZyb20gXCIuL2xpbmUuanNcIjtcblxuZXhwb3J0IGZ1bmN0aW9uIGxpbmVSYWRpYWwobCkge1xuICB2YXIgYyA9IGwuY3VydmU7XG5cbiAgbC5hbmdsZSA9IGwueCwgZGVsZXRlIGwueDtcbiAgbC5yYWRpdXMgPSBsLnksIGRlbGV0ZSBsLnk7XG5cbiAgbC5jdXJ2ZSA9IGZ1bmN0aW9uKF8pIHtcbiAgICByZXR1cm4gYXJndW1lbnRzLmxlbmd0aCA/IGMoY3VydmVSYWRpYWwoXykpIDogYygpLl9jdXJ2ZTtcbiAgfTtcblxuICByZXR1cm4gbDtcbn1cblxuZXhwb3J0IGRlZmF1bHQgZnVuY3Rpb24oKSB7XG4gIHJldHVybiBsaW5lUmFkaWFsKGxpbmUoKS5jdXJ2ZShjdXJ2ZVJhZGlhbExpbmVhcikpO1xufVxuIl0sIm1hcHBpbmdzIjoiQUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOyIsInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///./node_modules/vega-functions/node_modules/d3-shape/src/lineRadial.js\n");

/***/ }),

/***/ "./node_modules/vega-functions/node_modules/d3-shape/src/link/index.js":
/*!*****************************************************************************!*\
  !*** ./node_modules/vega-functions/node_modules/d3-shape/src/link/index.js ***!
  \*****************************************************************************/
/*! exports provided: linkHorizontal, linkVertical, linkRadial */
/***/ (function(module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"linkHorizontal\", function() { return linkHorizontal; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"linkVertical\", function() { return linkVertical; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"linkRadial\", function() { return linkRadial; });\n/* harmony import */ var d3_path__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! d3-path */ \"./node_modules/vega-functions/node_modules/d3-path/src/index.js\");\n/* harmony import */ var _array_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../array.js */ \"./node_modules/vega-functions/node_modules/d3-shape/src/array.js\");\n/* harmony import */ var _constant_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ../constant.js */ \"./node_modules/vega-functions/node_modules/d3-shape/src/constant.js\");\n/* harmony import */ var _point_js__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ../point.js */ \"./node_modules/vega-functions/node_modules/d3-shape/src/point.js\");\n/* harmony import */ var _pointRadial_js__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ../pointRadial.js */ \"./node_modules/vega-functions/node_modules/d3-shape/src/pointRadial.js\");\n\n\n\n\n\n\nfunction linkSource(d) {\n  return d.source;\n}\n\nfunction linkTarget(d) {\n  return d.target;\n}\n\nfunction link(curve) {\n  var source = linkSource,\n      target = linkTarget,\n      x = _point_js__WEBPACK_IMPORTED_MODULE_3__[\"x\"],\n      y = _point_js__WEBPACK_IMPORTED_MODULE_3__[\"y\"],\n      context = null;\n\n  function link() {\n    var buffer, argv = _array_js__WEBPACK_IMPORTED_MODULE_1__[\"slice\"].call(arguments), s = source.apply(this, argv), t = target.apply(this, argv);\n    if (!context) context = buffer = Object(d3_path__WEBPACK_IMPORTED_MODULE_0__[\"path\"])();\n    curve(context, +x.apply(this, (argv[0] = s, argv)), +y.apply(this, argv), +x.apply(this, (argv[0] = t, argv)), +y.apply(this, argv));\n    if (buffer) return context = null, buffer + \"\" || null;\n  }\n\n  link.source = function(_) {\n    return arguments.length ? (source = _, link) : source;\n  };\n\n  link.target = function(_) {\n    return arguments.length ? (target = _, link) : target;\n  };\n\n  link.x = function(_) {\n    return arguments.length ? (x = typeof _ === \"function\" ? _ : Object(_constant_js__WEBPACK_IMPORTED_MODULE_2__[\"default\"])(+_), link) : x;\n  };\n\n  link.y = function(_) {\n    return arguments.length ? (y = typeof _ === \"function\" ? _ : Object(_constant_js__WEBPACK_IMPORTED_MODULE_2__[\"default\"])(+_), link) : y;\n  };\n\n  link.context = function(_) {\n    return arguments.length ? ((context = _ == null ? null : _), link) : context;\n  };\n\n  return link;\n}\n\nfunction curveHorizontal(context, x0, y0, x1, y1) {\n  context.moveTo(x0, y0);\n  context.bezierCurveTo(x0 = (x0 + x1) / 2, y0, x0, y1, x1, y1);\n}\n\nfunction curveVertical(context, x0, y0, x1, y1) {\n  context.moveTo(x0, y0);\n  context.bezierCurveTo(x0, y0 = (y0 + y1) / 2, x1, y0, x1, y1);\n}\n\nfunction curveRadial(context, x0, y0, x1, y1) {\n  var p0 = Object(_pointRadial_js__WEBPACK_IMPORTED_MODULE_4__[\"default\"])(x0, y0),\n      p1 = Object(_pointRadial_js__WEBPACK_IMPORTED_MODULE_4__[\"default\"])(x0, y0 = (y0 + y1) / 2),\n      p2 = Object(_pointRadial_js__WEBPACK_IMPORTED_MODULE_4__[\"default\"])(x1, y0),\n      p3 = Object(_pointRadial_js__WEBPACK_IMPORTED_MODULE_4__[\"default\"])(x1, y1);\n  context.moveTo(p0[0], p0[1]);\n  context.bezierCurveTo(p1[0], p1[1], p2[0], p2[1], p3[0], p3[1]);\n}\n\nfunction linkHorizontal() {\n  return link(curveHorizontal);\n}\n\nfunction linkVertical() {\n  return link(curveVertical);\n}\n\nfunction linkRadial() {\n  var l = link(curveRadial);\n  l.angle = l.x, delete l.x;\n  l.radius = l.y, delete l.y;\n  return l;\n}\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvdmVnYS1mdW5jdGlvbnMvbm9kZV9tb2R1bGVzL2QzLXNoYXBlL3NyYy9saW5rL2luZGV4LmpzLmpzIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL3ZlZ2EtZnVuY3Rpb25zL25vZGVfbW9kdWxlcy9kMy1zaGFwZS9zcmMvbGluay9pbmRleC5qcz9mNjdiIl0sInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7cGF0aH0gZnJvbSBcImQzLXBhdGhcIjtcbmltcG9ydCB7c2xpY2V9IGZyb20gXCIuLi9hcnJheS5qc1wiO1xuaW1wb3J0IGNvbnN0YW50IGZyb20gXCIuLi9jb25zdGFudC5qc1wiO1xuaW1wb3J0IHt4IGFzIHBvaW50WCwgeSBhcyBwb2ludFl9IGZyb20gXCIuLi9wb2ludC5qc1wiO1xuaW1wb3J0IHBvaW50UmFkaWFsIGZyb20gXCIuLi9wb2ludFJhZGlhbC5qc1wiO1xuXG5mdW5jdGlvbiBsaW5rU291cmNlKGQpIHtcbiAgcmV0dXJuIGQuc291cmNlO1xufVxuXG5mdW5jdGlvbiBsaW5rVGFyZ2V0KGQpIHtcbiAgcmV0dXJuIGQudGFyZ2V0O1xufVxuXG5mdW5jdGlvbiBsaW5rKGN1cnZlKSB7XG4gIHZhciBzb3VyY2UgPSBsaW5rU291cmNlLFxuICAgICAgdGFyZ2V0ID0gbGlua1RhcmdldCxcbiAgICAgIHggPSBwb2ludFgsXG4gICAgICB5ID0gcG9pbnRZLFxuICAgICAgY29udGV4dCA9IG51bGw7XG5cbiAgZnVuY3Rpb24gbGluaygpIHtcbiAgICB2YXIgYnVmZmVyLCBhcmd2ID0gc2xpY2UuY2FsbChhcmd1bWVudHMpLCBzID0gc291cmNlLmFwcGx5KHRoaXMsIGFyZ3YpLCB0ID0gdGFyZ2V0LmFwcGx5KHRoaXMsIGFyZ3YpO1xuICAgIGlmICghY29udGV4dCkgY29udGV4dCA9IGJ1ZmZlciA9IHBhdGgoKTtcbiAgICBjdXJ2ZShjb250ZXh0LCAreC5hcHBseSh0aGlzLCAoYXJndlswXSA9IHMsIGFyZ3YpKSwgK3kuYXBwbHkodGhpcywgYXJndiksICt4LmFwcGx5KHRoaXMsIChhcmd2WzBdID0gdCwgYXJndikpLCAreS5hcHBseSh0aGlzLCBhcmd2KSk7XG4gICAgaWYgKGJ1ZmZlcikgcmV0dXJuIGNvbnRleHQgPSBudWxsLCBidWZmZXIgKyBcIlwiIHx8IG51bGw7XG4gIH1cblxuICBsaW5rLnNvdXJjZSA9IGZ1bmN0aW9uKF8pIHtcbiAgICByZXR1cm4gYXJndW1lbnRzLmxlbmd0aCA/IChzb3VyY2UgPSBfLCBsaW5rKSA6IHNvdXJjZTtcbiAgfTtcblxuICBsaW5rLnRhcmdldCA9IGZ1bmN0aW9uKF8pIHtcbiAgICByZXR1cm4gYXJndW1lbnRzLmxlbmd0aCA/ICh0YXJnZXQgPSBfLCBsaW5rKSA6IHRhcmdldDtcbiAgfTtcblxuICBsaW5rLnggPSBmdW5jdGlvbihfKSB7XG4gICAgcmV0dXJuIGFyZ3VtZW50cy5sZW5ndGggPyAoeCA9IHR5cGVvZiBfID09PSBcImZ1bmN0aW9uXCIgPyBfIDogY29uc3RhbnQoK18pLCBsaW5rKSA6IHg7XG4gIH07XG5cbiAgbGluay55ID0gZnVuY3Rpb24oXykge1xuICAgIHJldHVybiBhcmd1bWVudHMubGVuZ3RoID8gKHkgPSB0eXBlb2YgXyA9PT0gXCJmdW5jdGlvblwiID8gXyA6IGNvbnN0YW50KCtfKSwgbGluaykgOiB5O1xuICB9O1xuXG4gIGxpbmsuY29udGV4dCA9IGZ1bmN0aW9uKF8pIHtcbiAgICByZXR1cm4gYXJndW1lbnRzLmxlbmd0aCA/ICgoY29udGV4dCA9IF8gPT0gbnVsbCA/IG51bGwgOiBfKSwgbGluaykgOiBjb250ZXh0O1xuICB9O1xuXG4gIHJldHVybiBsaW5rO1xufVxuXG5mdW5jdGlvbiBjdXJ2ZUhvcml6b250YWwoY29udGV4dCwgeDAsIHkwLCB4MSwgeTEpIHtcbiAgY29udGV4dC5tb3ZlVG8oeDAsIHkwKTtcbiAgY29udGV4dC5iZXppZXJDdXJ2ZVRvKHgwID0gKHgwICsgeDEpIC8gMiwgeTAsIHgwLCB5MSwgeDEsIHkxKTtcbn1cblxuZnVuY3Rpb24gY3VydmVWZXJ0aWNhbChjb250ZXh0LCB4MCwgeTAsIHgxLCB5MSkge1xuICBjb250ZXh0Lm1vdmVUbyh4MCwgeTApO1xuICBjb250ZXh0LmJlemllckN1cnZlVG8oeDAsIHkwID0gKHkwICsgeTEpIC8gMiwgeDEsIHkwLCB4MSwgeTEpO1xufVxuXG5mdW5jdGlvbiBjdXJ2ZVJhZGlhbChjb250ZXh0LCB4MCwgeTAsIHgxLCB5MSkge1xuICB2YXIgcDAgPSBwb2ludFJhZGlhbCh4MCwgeTApLFxuICAgICAgcDEgPSBwb2ludFJhZGlhbCh4MCwgeTAgPSAoeTAgKyB5MSkgLyAyKSxcbiAgICAgIHAyID0gcG9pbnRSYWRpYWwoeDEsIHkwKSxcbiAgICAgIHAzID0gcG9pbnRSYWRpYWwoeDEsIHkxKTtcbiAgY29udGV4dC5tb3ZlVG8ocDBbMF0sIHAwWzFdKTtcbiAgY29udGV4dC5iZXppZXJDdXJ2ZVRvKHAxWzBdLCBwMVsxXSwgcDJbMF0sIHAyWzFdLCBwM1swXSwgcDNbMV0pO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gbGlua0hvcml6b250YWwoKSB7XG4gIHJldHVybiBsaW5rKGN1cnZlSG9yaXpvbnRhbCk7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBsaW5rVmVydGljYWwoKSB7XG4gIHJldHVybiBsaW5rKGN1cnZlVmVydGljYWwpO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gbGlua1JhZGlhbCgpIHtcbiAgdmFyIGwgPSBsaW5rKGN1cnZlUmFkaWFsKTtcbiAgbC5hbmdsZSA9IGwueCwgZGVsZXRlIGwueDtcbiAgbC5yYWRpdXMgPSBsLnksIGRlbGV0ZSBsLnk7XG4gIHJldHVybiBsO1xufVxuIl0sIm1hcHBpbmdzIjoiQUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7Iiwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///./node_modules/vega-functions/node_modules/d3-shape/src/link/index.js\n");

/***/ }),

/***/ "./node_modules/vega-functions/node_modules/d3-shape/src/math.js":
/*!***********************************************************************!*\
  !*** ./node_modules/vega-functions/node_modules/d3-shape/src/math.js ***!
  \***********************************************************************/
/*! exports provided: abs, atan2, cos, max, min, sin, sqrt, epsilon, pi, halfPi, tau, acos, asin */
/***/ (function(module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"abs\", function() { return abs; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"atan2\", function() { return atan2; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"cos\", function() { return cos; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"max\", function() { return max; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"min\", function() { return min; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"sin\", function() { return sin; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"sqrt\", function() { return sqrt; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"epsilon\", function() { return epsilon; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"pi\", function() { return pi; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"halfPi\", function() { return halfPi; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"tau\", function() { return tau; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"acos\", function() { return acos; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"asin\", function() { return asin; });\nvar abs = Math.abs;\nvar atan2 = Math.atan2;\nvar cos = Math.cos;\nvar max = Math.max;\nvar min = Math.min;\nvar sin = Math.sin;\nvar sqrt = Math.sqrt;\n\nvar epsilon = 1e-12;\nvar pi = Math.PI;\nvar halfPi = pi / 2;\nvar tau = 2 * pi;\n\nfunction acos(x) {\n  return x > 1 ? 0 : x < -1 ? pi : Math.acos(x);\n}\n\nfunction asin(x) {\n  return x >= 1 ? halfPi : x <= -1 ? -halfPi : Math.asin(x);\n}\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvdmVnYS1mdW5jdGlvbnMvbm9kZV9tb2R1bGVzL2QzLXNoYXBlL3NyYy9tYXRoLmpzLmpzIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL3ZlZ2EtZnVuY3Rpb25zL25vZGVfbW9kdWxlcy9kMy1zaGFwZS9zcmMvbWF0aC5qcz8yOTAyIl0sInNvdXJjZXNDb250ZW50IjpbImV4cG9ydCB2YXIgYWJzID0gTWF0aC5hYnM7XG5leHBvcnQgdmFyIGF0YW4yID0gTWF0aC5hdGFuMjtcbmV4cG9ydCB2YXIgY29zID0gTWF0aC5jb3M7XG5leHBvcnQgdmFyIG1heCA9IE1hdGgubWF4O1xuZXhwb3J0IHZhciBtaW4gPSBNYXRoLm1pbjtcbmV4cG9ydCB2YXIgc2luID0gTWF0aC5zaW47XG5leHBvcnQgdmFyIHNxcnQgPSBNYXRoLnNxcnQ7XG5cbmV4cG9ydCB2YXIgZXBzaWxvbiA9IDFlLTEyO1xuZXhwb3J0IHZhciBwaSA9IE1hdGguUEk7XG5leHBvcnQgdmFyIGhhbGZQaSA9IHBpIC8gMjtcbmV4cG9ydCB2YXIgdGF1ID0gMiAqIHBpO1xuXG5leHBvcnQgZnVuY3Rpb24gYWNvcyh4KSB7XG4gIHJldHVybiB4ID4gMSA/IDAgOiB4IDwgLTEgPyBwaSA6IE1hdGguYWNvcyh4KTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGFzaW4oeCkge1xuICByZXR1cm4geCA+PSAxID8gaGFsZlBpIDogeCA8PSAtMSA/IC1oYWxmUGkgOiBNYXRoLmFzaW4oeCk7XG59XG4iXSwibWFwcGluZ3MiOiJBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOyIsInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///./node_modules/vega-functions/node_modules/d3-shape/src/math.js\n");

/***/ }),

/***/ "./node_modules/vega-functions/node_modules/d3-shape/src/noop.js":
/*!***********************************************************************!*\
  !*** ./node_modules/vega-functions/node_modules/d3-shape/src/noop.js ***!
  \***********************************************************************/
/*! exports provided: default */
/***/ (function(module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony default export */ __webpack_exports__[\"default\"] = (function() {});\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvdmVnYS1mdW5jdGlvbnMvbm9kZV9tb2R1bGVzL2QzLXNoYXBlL3NyYy9ub29wLmpzLmpzIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL3ZlZ2EtZnVuY3Rpb25zL25vZGVfbW9kdWxlcy9kMy1zaGFwZS9zcmMvbm9vcC5qcz82ZDUwIl0sInNvdXJjZXNDb250ZW50IjpbImV4cG9ydCBkZWZhdWx0IGZ1bmN0aW9uKCkge31cbiJdLCJtYXBwaW5ncyI6IkFBQUE7QUFBQTsiLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///./node_modules/vega-functions/node_modules/d3-shape/src/noop.js\n");

/***/ }),

/***/ "./node_modules/vega-functions/node_modules/d3-shape/src/offset/diverging.js":
/*!***********************************************************************************!*\
  !*** ./node_modules/vega-functions/node_modules/d3-shape/src/offset/diverging.js ***!
  \***********************************************************************************/
/*! exports provided: default */
/***/ (function(module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony default export */ __webpack_exports__[\"default\"] = (function(series, order) {\n  if (!((n = series.length) > 0)) return;\n  for (var i, j = 0, d, dy, yp, yn, n, m = series[order[0]].length; j < m; ++j) {\n    for (yp = yn = 0, i = 0; i < n; ++i) {\n      if ((dy = (d = series[order[i]][j])[1] - d[0]) > 0) {\n        d[0] = yp, d[1] = yp += dy;\n      } else if (dy < 0) {\n        d[1] = yn, d[0] = yn += dy;\n      } else {\n        d[0] = 0, d[1] = dy;\n      }\n    }\n  }\n});\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvdmVnYS1mdW5jdGlvbnMvbm9kZV9tb2R1bGVzL2QzLXNoYXBlL3NyYy9vZmZzZXQvZGl2ZXJnaW5nLmpzLmpzIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL3ZlZ2EtZnVuY3Rpb25zL25vZGVfbW9kdWxlcy9kMy1zaGFwZS9zcmMvb2Zmc2V0L2RpdmVyZ2luZy5qcz8yMzhkIl0sInNvdXJjZXNDb250ZW50IjpbImV4cG9ydCBkZWZhdWx0IGZ1bmN0aW9uKHNlcmllcywgb3JkZXIpIHtcbiAgaWYgKCEoKG4gPSBzZXJpZXMubGVuZ3RoKSA+IDApKSByZXR1cm47XG4gIGZvciAodmFyIGksIGogPSAwLCBkLCBkeSwgeXAsIHluLCBuLCBtID0gc2VyaWVzW29yZGVyWzBdXS5sZW5ndGg7IGogPCBtOyArK2opIHtcbiAgICBmb3IgKHlwID0geW4gPSAwLCBpID0gMDsgaSA8IG47ICsraSkge1xuICAgICAgaWYgKChkeSA9IChkID0gc2VyaWVzW29yZGVyW2ldXVtqXSlbMV0gLSBkWzBdKSA+IDApIHtcbiAgICAgICAgZFswXSA9IHlwLCBkWzFdID0geXAgKz0gZHk7XG4gICAgICB9IGVsc2UgaWYgKGR5IDwgMCkge1xuICAgICAgICBkWzFdID0geW4sIGRbMF0gPSB5biArPSBkeTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIGRbMF0gPSAwLCBkWzFdID0gZHk7XG4gICAgICB9XG4gICAgfVxuICB9XG59XG4iXSwibWFwcGluZ3MiOiJBQUFBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTsiLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///./node_modules/vega-functions/node_modules/d3-shape/src/offset/diverging.js\n");

/***/ }),

/***/ "./node_modules/vega-functions/node_modules/d3-shape/src/offset/expand.js":
/*!********************************************************************************!*\
  !*** ./node_modules/vega-functions/node_modules/d3-shape/src/offset/expand.js ***!
  \********************************************************************************/
/*! exports provided: default */
/***/ (function(module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _none_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./none.js */ \"./node_modules/vega-functions/node_modules/d3-shape/src/offset/none.js\");\n\n\n/* harmony default export */ __webpack_exports__[\"default\"] = (function(series, order) {\n  if (!((n = series.length) > 0)) return;\n  for (var i, n, j = 0, m = series[0].length, y; j < m; ++j) {\n    for (y = i = 0; i < n; ++i) y += series[i][j][1] || 0;\n    if (y) for (i = 0; i < n; ++i) series[i][j][1] /= y;\n  }\n  Object(_none_js__WEBPACK_IMPORTED_MODULE_0__[\"default\"])(series, order);\n});\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvdmVnYS1mdW5jdGlvbnMvbm9kZV9tb2R1bGVzL2QzLXNoYXBlL3NyYy9vZmZzZXQvZXhwYW5kLmpzLmpzIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL3ZlZ2EtZnVuY3Rpb25zL25vZGVfbW9kdWxlcy9kMy1zaGFwZS9zcmMvb2Zmc2V0L2V4cGFuZC5qcz8xNWE0Il0sInNvdXJjZXNDb250ZW50IjpbImltcG9ydCBub25lIGZyb20gXCIuL25vbmUuanNcIjtcblxuZXhwb3J0IGRlZmF1bHQgZnVuY3Rpb24oc2VyaWVzLCBvcmRlcikge1xuICBpZiAoISgobiA9IHNlcmllcy5sZW5ndGgpID4gMCkpIHJldHVybjtcbiAgZm9yICh2YXIgaSwgbiwgaiA9IDAsIG0gPSBzZXJpZXNbMF0ubGVuZ3RoLCB5OyBqIDwgbTsgKytqKSB7XG4gICAgZm9yICh5ID0gaSA9IDA7IGkgPCBuOyArK2kpIHkgKz0gc2VyaWVzW2ldW2pdWzFdIHx8IDA7XG4gICAgaWYgKHkpIGZvciAoaSA9IDA7IGkgPCBuOyArK2kpIHNlcmllc1tpXVtqXVsxXSAvPSB5O1xuICB9XG4gIG5vbmUoc2VyaWVzLCBvcmRlcik7XG59XG4iXSwibWFwcGluZ3MiOiJBQUFBO0FBQUE7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTsiLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///./node_modules/vega-functions/node_modules/d3-shape/src/offset/expand.js\n");

/***/ }),

/***/ "./node_modules/vega-functions/node_modules/d3-shape/src/offset/none.js":
/*!******************************************************************************!*\
  !*** ./node_modules/vega-functions/node_modules/d3-shape/src/offset/none.js ***!
  \******************************************************************************/
/*! exports provided: default */
/***/ (function(module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony default export */ __webpack_exports__[\"default\"] = (function(series, order) {\n  if (!((n = series.length) > 1)) return;\n  for (var i = 1, j, s0, s1 = series[order[0]], n, m = s1.length; i < n; ++i) {\n    s0 = s1, s1 = series[order[i]];\n    for (j = 0; j < m; ++j) {\n      s1[j][1] += s1[j][0] = isNaN(s0[j][1]) ? s0[j][0] : s0[j][1];\n    }\n  }\n});\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvdmVnYS1mdW5jdGlvbnMvbm9kZV9tb2R1bGVzL2QzLXNoYXBlL3NyYy9vZmZzZXQvbm9uZS5qcy5qcyIsInNvdXJjZXMiOlsid2VicGFjazovLy8uL25vZGVfbW9kdWxlcy92ZWdhLWZ1bmN0aW9ucy9ub2RlX21vZHVsZXMvZDMtc2hhcGUvc3JjL29mZnNldC9ub25lLmpzP2VmYTgiXSwic291cmNlc0NvbnRlbnQiOlsiZXhwb3J0IGRlZmF1bHQgZnVuY3Rpb24oc2VyaWVzLCBvcmRlcikge1xuICBpZiAoISgobiA9IHNlcmllcy5sZW5ndGgpID4gMSkpIHJldHVybjtcbiAgZm9yICh2YXIgaSA9IDEsIGosIHMwLCBzMSA9IHNlcmllc1tvcmRlclswXV0sIG4sIG0gPSBzMS5sZW5ndGg7IGkgPCBuOyArK2kpIHtcbiAgICBzMCA9IHMxLCBzMSA9IHNlcmllc1tvcmRlcltpXV07XG4gICAgZm9yIChqID0gMDsgaiA8IG07ICsraikge1xuICAgICAgczFbal1bMV0gKz0gczFbal1bMF0gPSBpc05hTihzMFtqXVsxXSkgPyBzMFtqXVswXSA6IHMwW2pdWzFdO1xuICAgIH1cbiAgfVxufVxuIl0sIm1hcHBpbmdzIjoiQUFBQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTsiLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///./node_modules/vega-functions/node_modules/d3-shape/src/offset/none.js\n");

/***/ }),

/***/ "./node_modules/vega-functions/node_modules/d3-shape/src/offset/silhouette.js":
/*!************************************************************************************!*\
  !*** ./node_modules/vega-functions/node_modules/d3-shape/src/offset/silhouette.js ***!
  \************************************************************************************/
/*! exports provided: default */
/***/ (function(module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _none_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./none.js */ \"./node_modules/vega-functions/node_modules/d3-shape/src/offset/none.js\");\n\n\n/* harmony default export */ __webpack_exports__[\"default\"] = (function(series, order) {\n  if (!((n = series.length) > 0)) return;\n  for (var j = 0, s0 = series[order[0]], n, m = s0.length; j < m; ++j) {\n    for (var i = 0, y = 0; i < n; ++i) y += series[i][j][1] || 0;\n    s0[j][1] += s0[j][0] = -y / 2;\n  }\n  Object(_none_js__WEBPACK_IMPORTED_MODULE_0__[\"default\"])(series, order);\n});\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvdmVnYS1mdW5jdGlvbnMvbm9kZV9tb2R1bGVzL2QzLXNoYXBlL3NyYy9vZmZzZXQvc2lsaG91ZXR0ZS5qcy5qcyIsInNvdXJjZXMiOlsid2VicGFjazovLy8uL25vZGVfbW9kdWxlcy92ZWdhLWZ1bmN0aW9ucy9ub2RlX21vZHVsZXMvZDMtc2hhcGUvc3JjL29mZnNldC9zaWxob3VldHRlLmpzP2ViM2IiXSwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IG5vbmUgZnJvbSBcIi4vbm9uZS5qc1wiO1xuXG5leHBvcnQgZGVmYXVsdCBmdW5jdGlvbihzZXJpZXMsIG9yZGVyKSB7XG4gIGlmICghKChuID0gc2VyaWVzLmxlbmd0aCkgPiAwKSkgcmV0dXJuO1xuICBmb3IgKHZhciBqID0gMCwgczAgPSBzZXJpZXNbb3JkZXJbMF1dLCBuLCBtID0gczAubGVuZ3RoOyBqIDwgbTsgKytqKSB7XG4gICAgZm9yICh2YXIgaSA9IDAsIHkgPSAwOyBpIDwgbjsgKytpKSB5ICs9IHNlcmllc1tpXVtqXVsxXSB8fCAwO1xuICAgIHMwW2pdWzFdICs9IHMwW2pdWzBdID0gLXkgLyAyO1xuICB9XG4gIG5vbmUoc2VyaWVzLCBvcmRlcik7XG59XG4iXSwibWFwcGluZ3MiOiJBQUFBO0FBQUE7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTsiLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///./node_modules/vega-functions/node_modules/d3-shape/src/offset/silhouette.js\n");

/***/ }),

/***/ "./node_modules/vega-functions/node_modules/d3-shape/src/offset/wiggle.js":
/*!********************************************************************************!*\
  !*** ./node_modules/vega-functions/node_modules/d3-shape/src/offset/wiggle.js ***!
  \********************************************************************************/
/*! exports provided: default */
/***/ (function(module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _none_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./none.js */ \"./node_modules/vega-functions/node_modules/d3-shape/src/offset/none.js\");\n\n\n/* harmony default export */ __webpack_exports__[\"default\"] = (function(series, order) {\n  if (!((n = series.length) > 0) || !((m = (s0 = series[order[0]]).length) > 0)) return;\n  for (var y = 0, j = 1, s0, m, n; j < m; ++j) {\n    for (var i = 0, s1 = 0, s2 = 0; i < n; ++i) {\n      var si = series[order[i]],\n          sij0 = si[j][1] || 0,\n          sij1 = si[j - 1][1] || 0,\n          s3 = (sij0 - sij1) / 2;\n      for (var k = 0; k < i; ++k) {\n        var sk = series[order[k]],\n            skj0 = sk[j][1] || 0,\n            skj1 = sk[j - 1][1] || 0;\n        s3 += skj0 - skj1;\n      }\n      s1 += sij0, s2 += s3 * sij0;\n    }\n    s0[j - 1][1] += s0[j - 1][0] = y;\n    if (s1) y -= s2 / s1;\n  }\n  s0[j - 1][1] += s0[j - 1][0] = y;\n  Object(_none_js__WEBPACK_IMPORTED_MODULE_0__[\"default\"])(series, order);\n});\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvdmVnYS1mdW5jdGlvbnMvbm9kZV9tb2R1bGVzL2QzLXNoYXBlL3NyYy9vZmZzZXQvd2lnZ2xlLmpzLmpzIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL3ZlZ2EtZnVuY3Rpb25zL25vZGVfbW9kdWxlcy9kMy1zaGFwZS9zcmMvb2Zmc2V0L3dpZ2dsZS5qcz9jNzU1Il0sInNvdXJjZXNDb250ZW50IjpbImltcG9ydCBub25lIGZyb20gXCIuL25vbmUuanNcIjtcblxuZXhwb3J0IGRlZmF1bHQgZnVuY3Rpb24oc2VyaWVzLCBvcmRlcikge1xuICBpZiAoISgobiA9IHNlcmllcy5sZW5ndGgpID4gMCkgfHwgISgobSA9IChzMCA9IHNlcmllc1tvcmRlclswXV0pLmxlbmd0aCkgPiAwKSkgcmV0dXJuO1xuICBmb3IgKHZhciB5ID0gMCwgaiA9IDEsIHMwLCBtLCBuOyBqIDwgbTsgKytqKSB7XG4gICAgZm9yICh2YXIgaSA9IDAsIHMxID0gMCwgczIgPSAwOyBpIDwgbjsgKytpKSB7XG4gICAgICB2YXIgc2kgPSBzZXJpZXNbb3JkZXJbaV1dLFxuICAgICAgICAgIHNpajAgPSBzaVtqXVsxXSB8fCAwLFxuICAgICAgICAgIHNpajEgPSBzaVtqIC0gMV1bMV0gfHwgMCxcbiAgICAgICAgICBzMyA9IChzaWowIC0gc2lqMSkgLyAyO1xuICAgICAgZm9yICh2YXIgayA9IDA7IGsgPCBpOyArK2spIHtcbiAgICAgICAgdmFyIHNrID0gc2VyaWVzW29yZGVyW2tdXSxcbiAgICAgICAgICAgIHNrajAgPSBza1tqXVsxXSB8fCAwLFxuICAgICAgICAgICAgc2tqMSA9IHNrW2ogLSAxXVsxXSB8fCAwO1xuICAgICAgICBzMyArPSBza2owIC0gc2tqMTtcbiAgICAgIH1cbiAgICAgIHMxICs9IHNpajAsIHMyICs9IHMzICogc2lqMDtcbiAgICB9XG4gICAgczBbaiAtIDFdWzFdICs9IHMwW2ogLSAxXVswXSA9IHk7XG4gICAgaWYgKHMxKSB5IC09IHMyIC8gczE7XG4gIH1cbiAgczBbaiAtIDFdWzFdICs9IHMwW2ogLSAxXVswXSA9IHk7XG4gIG5vbmUoc2VyaWVzLCBvcmRlcik7XG59XG4iXSwibWFwcGluZ3MiOiJBQUFBO0FBQUE7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7Iiwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///./node_modules/vega-functions/node_modules/d3-shape/src/offset/wiggle.js\n");

/***/ }),

/***/ "./node_modules/vega-functions/node_modules/d3-shape/src/order/appearance.js":
/*!***********************************************************************************!*\
  !*** ./node_modules/vega-functions/node_modules/d3-shape/src/order/appearance.js ***!
  \***********************************************************************************/
/*! exports provided: default */
/***/ (function(module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _none_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./none.js */ \"./node_modules/vega-functions/node_modules/d3-shape/src/order/none.js\");\n\n\n/* harmony default export */ __webpack_exports__[\"default\"] = (function(series) {\n  var peaks = series.map(peak);\n  return Object(_none_js__WEBPACK_IMPORTED_MODULE_0__[\"default\"])(series).sort(function(a, b) { return peaks[a] - peaks[b]; });\n});\n\nfunction peak(series) {\n  var i = -1, j = 0, n = series.length, vi, vj = -Infinity;\n  while (++i < n) if ((vi = +series[i][1]) > vj) vj = vi, j = i;\n  return j;\n}\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvdmVnYS1mdW5jdGlvbnMvbm9kZV9tb2R1bGVzL2QzLXNoYXBlL3NyYy9vcmRlci9hcHBlYXJhbmNlLmpzLmpzIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL3ZlZ2EtZnVuY3Rpb25zL25vZGVfbW9kdWxlcy9kMy1zaGFwZS9zcmMvb3JkZXIvYXBwZWFyYW5jZS5qcz9iMTQ0Il0sInNvdXJjZXNDb250ZW50IjpbImltcG9ydCBub25lIGZyb20gXCIuL25vbmUuanNcIjtcblxuZXhwb3J0IGRlZmF1bHQgZnVuY3Rpb24oc2VyaWVzKSB7XG4gIHZhciBwZWFrcyA9IHNlcmllcy5tYXAocGVhayk7XG4gIHJldHVybiBub25lKHNlcmllcykuc29ydChmdW5jdGlvbihhLCBiKSB7IHJldHVybiBwZWFrc1thXSAtIHBlYWtzW2JdOyB9KTtcbn1cblxuZnVuY3Rpb24gcGVhayhzZXJpZXMpIHtcbiAgdmFyIGkgPSAtMSwgaiA9IDAsIG4gPSBzZXJpZXMubGVuZ3RoLCB2aSwgdmogPSAtSW5maW5pdHk7XG4gIHdoaWxlICgrK2kgPCBuKSBpZiAoKHZpID0gK3Nlcmllc1tpXVsxXSkgPiB2aikgdmogPSB2aSwgaiA9IGk7XG4gIHJldHVybiBqO1xufVxuIl0sIm1hcHBpbmdzIjoiQUFBQTtBQUFBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOyIsInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///./node_modules/vega-functions/node_modules/d3-shape/src/order/appearance.js\n");

/***/ }),

/***/ "./node_modules/vega-functions/node_modules/d3-shape/src/order/ascending.js":
/*!**********************************************************************************!*\
  !*** ./node_modules/vega-functions/node_modules/d3-shape/src/order/ascending.js ***!
  \**********************************************************************************/
/*! exports provided: default, sum */
/***/ (function(module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"sum\", function() { return sum; });\n/* harmony import */ var _none_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./none.js */ \"./node_modules/vega-functions/node_modules/d3-shape/src/order/none.js\");\n\n\n/* harmony default export */ __webpack_exports__[\"default\"] = (function(series) {\n  var sums = series.map(sum);\n  return Object(_none_js__WEBPACK_IMPORTED_MODULE_0__[\"default\"])(series).sort(function(a, b) { return sums[a] - sums[b]; });\n});\n\nfunction sum(series) {\n  var s = 0, i = -1, n = series.length, v;\n  while (++i < n) if (v = +series[i][1]) s += v;\n  return s;\n}\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvdmVnYS1mdW5jdGlvbnMvbm9kZV9tb2R1bGVzL2QzLXNoYXBlL3NyYy9vcmRlci9hc2NlbmRpbmcuanMuanMiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvdmVnYS1mdW5jdGlvbnMvbm9kZV9tb2R1bGVzL2QzLXNoYXBlL3NyYy9vcmRlci9hc2NlbmRpbmcuanM/NGM0OCJdLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgbm9uZSBmcm9tIFwiLi9ub25lLmpzXCI7XG5cbmV4cG9ydCBkZWZhdWx0IGZ1bmN0aW9uKHNlcmllcykge1xuICB2YXIgc3VtcyA9IHNlcmllcy5tYXAoc3VtKTtcbiAgcmV0dXJuIG5vbmUoc2VyaWVzKS5zb3J0KGZ1bmN0aW9uKGEsIGIpIHsgcmV0dXJuIHN1bXNbYV0gLSBzdW1zW2JdOyB9KTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIHN1bShzZXJpZXMpIHtcbiAgdmFyIHMgPSAwLCBpID0gLTEsIG4gPSBzZXJpZXMubGVuZ3RoLCB2O1xuICB3aGlsZSAoKytpIDwgbikgaWYgKHYgPSArc2VyaWVzW2ldWzFdKSBzICs9IHY7XG4gIHJldHVybiBzO1xufVxuIl0sIm1hcHBpbmdzIjoiQUFBQTtBQUFBO0FBQUE7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7Iiwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///./node_modules/vega-functions/node_modules/d3-shape/src/order/ascending.js\n");

/***/ }),

/***/ "./node_modules/vega-functions/node_modules/d3-shape/src/order/descending.js":
/*!***********************************************************************************!*\
  !*** ./node_modules/vega-functions/node_modules/d3-shape/src/order/descending.js ***!
  \***********************************************************************************/
/*! exports provided: default */
/***/ (function(module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _ascending_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./ascending.js */ \"./node_modules/vega-functions/node_modules/d3-shape/src/order/ascending.js\");\n\n\n/* harmony default export */ __webpack_exports__[\"default\"] = (function(series) {\n  return Object(_ascending_js__WEBPACK_IMPORTED_MODULE_0__[\"default\"])(series).reverse();\n});\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvdmVnYS1mdW5jdGlvbnMvbm9kZV9tb2R1bGVzL2QzLXNoYXBlL3NyYy9vcmRlci9kZXNjZW5kaW5nLmpzLmpzIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL3ZlZ2EtZnVuY3Rpb25zL25vZGVfbW9kdWxlcy9kMy1zaGFwZS9zcmMvb3JkZXIvZGVzY2VuZGluZy5qcz8zMjMwIl0sInNvdXJjZXNDb250ZW50IjpbImltcG9ydCBhc2NlbmRpbmcgZnJvbSBcIi4vYXNjZW5kaW5nLmpzXCI7XG5cbmV4cG9ydCBkZWZhdWx0IGZ1bmN0aW9uKHNlcmllcykge1xuICByZXR1cm4gYXNjZW5kaW5nKHNlcmllcykucmV2ZXJzZSgpO1xufVxuIl0sIm1hcHBpbmdzIjoiQUFBQTtBQUFBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTsiLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///./node_modules/vega-functions/node_modules/d3-shape/src/order/descending.js\n");

/***/ }),

/***/ "./node_modules/vega-functions/node_modules/d3-shape/src/order/insideOut.js":
/*!**********************************************************************************!*\
  !*** ./node_modules/vega-functions/node_modules/d3-shape/src/order/insideOut.js ***!
  \**********************************************************************************/
/*! exports provided: default */
/***/ (function(module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _appearance_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./appearance.js */ \"./node_modules/vega-functions/node_modules/d3-shape/src/order/appearance.js\");\n/* harmony import */ var _ascending_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./ascending.js */ \"./node_modules/vega-functions/node_modules/d3-shape/src/order/ascending.js\");\n\n\n\n/* harmony default export */ __webpack_exports__[\"default\"] = (function(series) {\n  var n = series.length,\n      i,\n      j,\n      sums = series.map(_ascending_js__WEBPACK_IMPORTED_MODULE_1__[\"sum\"]),\n      order = Object(_appearance_js__WEBPACK_IMPORTED_MODULE_0__[\"default\"])(series),\n      top = 0,\n      bottom = 0,\n      tops = [],\n      bottoms = [];\n\n  for (i = 0; i < n; ++i) {\n    j = order[i];\n    if (top < bottom) {\n      top += sums[j];\n      tops.push(j);\n    } else {\n      bottom += sums[j];\n      bottoms.push(j);\n    }\n  }\n\n  return bottoms.reverse().concat(tops);\n});\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvdmVnYS1mdW5jdGlvbnMvbm9kZV9tb2R1bGVzL2QzLXNoYXBlL3NyYy9vcmRlci9pbnNpZGVPdXQuanMuanMiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvdmVnYS1mdW5jdGlvbnMvbm9kZV9tb2R1bGVzL2QzLXNoYXBlL3NyYy9vcmRlci9pbnNpZGVPdXQuanM/MzZkNSJdLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgYXBwZWFyYW5jZSBmcm9tIFwiLi9hcHBlYXJhbmNlLmpzXCI7XG5pbXBvcnQge3N1bX0gZnJvbSBcIi4vYXNjZW5kaW5nLmpzXCI7XG5cbmV4cG9ydCBkZWZhdWx0IGZ1bmN0aW9uKHNlcmllcykge1xuICB2YXIgbiA9IHNlcmllcy5sZW5ndGgsXG4gICAgICBpLFxuICAgICAgaixcbiAgICAgIHN1bXMgPSBzZXJpZXMubWFwKHN1bSksXG4gICAgICBvcmRlciA9IGFwcGVhcmFuY2Uoc2VyaWVzKSxcbiAgICAgIHRvcCA9IDAsXG4gICAgICBib3R0b20gPSAwLFxuICAgICAgdG9wcyA9IFtdLFxuICAgICAgYm90dG9tcyA9IFtdO1xuXG4gIGZvciAoaSA9IDA7IGkgPCBuOyArK2kpIHtcbiAgICBqID0gb3JkZXJbaV07XG4gICAgaWYgKHRvcCA8IGJvdHRvbSkge1xuICAgICAgdG9wICs9IHN1bXNbal07XG4gICAgICB0b3BzLnB1c2goaik7XG4gICAgfSBlbHNlIHtcbiAgICAgIGJvdHRvbSArPSBzdW1zW2pdO1xuICAgICAgYm90dG9tcy5wdXNoKGopO1xuICAgIH1cbiAgfVxuXG4gIHJldHVybiBib3R0b21zLnJldmVyc2UoKS5jb25jYXQodG9wcyk7XG59XG4iXSwibWFwcGluZ3MiOiJBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTsiLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///./node_modules/vega-functions/node_modules/d3-shape/src/order/insideOut.js\n");

/***/ }),

/***/ "./node_modules/vega-functions/node_modules/d3-shape/src/order/none.js":
/*!*****************************************************************************!*\
  !*** ./node_modules/vega-functions/node_modules/d3-shape/src/order/none.js ***!
  \*****************************************************************************/
/*! exports provided: default */
/***/ (function(module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony default export */ __webpack_exports__[\"default\"] = (function(series) {\n  var n = series.length, o = new Array(n);\n  while (--n >= 0) o[n] = n;\n  return o;\n});\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvdmVnYS1mdW5jdGlvbnMvbm9kZV9tb2R1bGVzL2QzLXNoYXBlL3NyYy9vcmRlci9ub25lLmpzLmpzIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL3ZlZ2EtZnVuY3Rpb25zL25vZGVfbW9kdWxlcy9kMy1zaGFwZS9zcmMvb3JkZXIvbm9uZS5qcz81MTNjIl0sInNvdXJjZXNDb250ZW50IjpbImV4cG9ydCBkZWZhdWx0IGZ1bmN0aW9uKHNlcmllcykge1xuICB2YXIgbiA9IHNlcmllcy5sZW5ndGgsIG8gPSBuZXcgQXJyYXkobik7XG4gIHdoaWxlICgtLW4gPj0gMCkgb1tuXSA9IG47XG4gIHJldHVybiBvO1xufVxuIl0sIm1hcHBpbmdzIjoiQUFBQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7Iiwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///./node_modules/vega-functions/node_modules/d3-shape/src/order/none.js\n");

/***/ }),

/***/ "./node_modules/vega-functions/node_modules/d3-shape/src/order/reverse.js":
/*!********************************************************************************!*\
  !*** ./node_modules/vega-functions/node_modules/d3-shape/src/order/reverse.js ***!
  \********************************************************************************/
/*! exports provided: default */
/***/ (function(module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _none_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./none.js */ \"./node_modules/vega-functions/node_modules/d3-shape/src/order/none.js\");\n\n\n/* harmony default export */ __webpack_exports__[\"default\"] = (function(series) {\n  return Object(_none_js__WEBPACK_IMPORTED_MODULE_0__[\"default\"])(series).reverse();\n});\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvdmVnYS1mdW5jdGlvbnMvbm9kZV9tb2R1bGVzL2QzLXNoYXBlL3NyYy9vcmRlci9yZXZlcnNlLmpzLmpzIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL3ZlZ2EtZnVuY3Rpb25zL25vZGVfbW9kdWxlcy9kMy1zaGFwZS9zcmMvb3JkZXIvcmV2ZXJzZS5qcz9kZmIzIl0sInNvdXJjZXNDb250ZW50IjpbImltcG9ydCBub25lIGZyb20gXCIuL25vbmUuanNcIjtcblxuZXhwb3J0IGRlZmF1bHQgZnVuY3Rpb24oc2VyaWVzKSB7XG4gIHJldHVybiBub25lKHNlcmllcykucmV2ZXJzZSgpO1xufVxuIl0sIm1hcHBpbmdzIjoiQUFBQTtBQUFBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTsiLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///./node_modules/vega-functions/node_modules/d3-shape/src/order/reverse.js\n");

/***/ }),

/***/ "./node_modules/vega-functions/node_modules/d3-shape/src/pie.js":
/*!**********************************************************************!*\
  !*** ./node_modules/vega-functions/node_modules/d3-shape/src/pie.js ***!
  \**********************************************************************/
/*! exports provided: default */
/***/ (function(module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _array_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./array.js */ \"./node_modules/vega-functions/node_modules/d3-shape/src/array.js\");\n/* harmony import */ var _constant_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./constant.js */ \"./node_modules/vega-functions/node_modules/d3-shape/src/constant.js\");\n/* harmony import */ var _descending_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./descending.js */ \"./node_modules/vega-functions/node_modules/d3-shape/src/descending.js\");\n/* harmony import */ var _identity_js__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ./identity.js */ \"./node_modules/vega-functions/node_modules/d3-shape/src/identity.js\");\n/* harmony import */ var _math_js__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ./math.js */ \"./node_modules/vega-functions/node_modules/d3-shape/src/math.js\");\n\n\n\n\n\n\n/* harmony default export */ __webpack_exports__[\"default\"] = (function() {\n  var value = _identity_js__WEBPACK_IMPORTED_MODULE_3__[\"default\"],\n      sortValues = _descending_js__WEBPACK_IMPORTED_MODULE_2__[\"default\"],\n      sort = null,\n      startAngle = Object(_constant_js__WEBPACK_IMPORTED_MODULE_1__[\"default\"])(0),\n      endAngle = Object(_constant_js__WEBPACK_IMPORTED_MODULE_1__[\"default\"])(_math_js__WEBPACK_IMPORTED_MODULE_4__[\"tau\"]),\n      padAngle = Object(_constant_js__WEBPACK_IMPORTED_MODULE_1__[\"default\"])(0);\n\n  function pie(data) {\n    var i,\n        n = (data = Object(_array_js__WEBPACK_IMPORTED_MODULE_0__[\"default\"])(data)).length,\n        j,\n        k,\n        sum = 0,\n        index = new Array(n),\n        arcs = new Array(n),\n        a0 = +startAngle.apply(this, arguments),\n        da = Math.min(_math_js__WEBPACK_IMPORTED_MODULE_4__[\"tau\"], Math.max(-_math_js__WEBPACK_IMPORTED_MODULE_4__[\"tau\"], endAngle.apply(this, arguments) - a0)),\n        a1,\n        p = Math.min(Math.abs(da) / n, padAngle.apply(this, arguments)),\n        pa = p * (da < 0 ? -1 : 1),\n        v;\n\n    for (i = 0; i < n; ++i) {\n      if ((v = arcs[index[i] = i] = +value(data[i], i, data)) > 0) {\n        sum += v;\n      }\n    }\n\n    // Optionally sort the arcs by previously-computed values or by data.\n    if (sortValues != null) index.sort(function(i, j) { return sortValues(arcs[i], arcs[j]); });\n    else if (sort != null) index.sort(function(i, j) { return sort(data[i], data[j]); });\n\n    // Compute the arcs! They are stored in the original data's order.\n    for (i = 0, k = sum ? (da - n * pa) / sum : 0; i < n; ++i, a0 = a1) {\n      j = index[i], v = arcs[j], a1 = a0 + (v > 0 ? v * k : 0) + pa, arcs[j] = {\n        data: data[j],\n        index: i,\n        value: v,\n        startAngle: a0,\n        endAngle: a1,\n        padAngle: p\n      };\n    }\n\n    return arcs;\n  }\n\n  pie.value = function(_) {\n    return arguments.length ? (value = typeof _ === \"function\" ? _ : Object(_constant_js__WEBPACK_IMPORTED_MODULE_1__[\"default\"])(+_), pie) : value;\n  };\n\n  pie.sortValues = function(_) {\n    return arguments.length ? (sortValues = _, sort = null, pie) : sortValues;\n  };\n\n  pie.sort = function(_) {\n    return arguments.length ? (sort = _, sortValues = null, pie) : sort;\n  };\n\n  pie.startAngle = function(_) {\n    return arguments.length ? (startAngle = typeof _ === \"function\" ? _ : Object(_constant_js__WEBPACK_IMPORTED_MODULE_1__[\"default\"])(+_), pie) : startAngle;\n  };\n\n  pie.endAngle = function(_) {\n    return arguments.length ? (endAngle = typeof _ === \"function\" ? _ : Object(_constant_js__WEBPACK_IMPORTED_MODULE_1__[\"default\"])(+_), pie) : endAngle;\n  };\n\n  pie.padAngle = function(_) {\n    return arguments.length ? (padAngle = typeof _ === \"function\" ? _ : Object(_constant_js__WEBPACK_IMPORTED_MODULE_1__[\"default\"])(+_), pie) : padAngle;\n  };\n\n  return pie;\n});\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,[encoded data, 4212 characters]\n//# sourceURL=webpack-internal:///./node_modules/vega-functions/node_modules/d3-shape/src/pie.js\n");

/***/ }),

/***/ "./node_modules/vega-functions/node_modules/d3-shape/src/point.js":
/*!************************************************************************!*\
  !*** ./node_modules/vega-functions/node_modules/d3-shape/src/point.js ***!
  \************************************************************************/
/*! exports provided: x, y */
/***/ (function(module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"x\", function() { return x; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"y\", function() { return y; });\nfunction x(p) {\n  return p[0];\n}\n\nfunction y(p) {\n  return p[1];\n}\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvdmVnYS1mdW5jdGlvbnMvbm9kZV9tb2R1bGVzL2QzLXNoYXBlL3NyYy9wb2ludC5qcy5qcyIsInNvdXJjZXMiOlsid2VicGFjazovLy8uL25vZGVfbW9kdWxlcy92ZWdhLWZ1bmN0aW9ucy9ub2RlX21vZHVsZXMvZDMtc2hhcGUvc3JjL3BvaW50LmpzP2M4MDEiXSwic291cmNlc0NvbnRlbnQiOlsiZXhwb3J0IGZ1bmN0aW9uIHgocCkge1xuICByZXR1cm4gcFswXTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIHkocCkge1xuICByZXR1cm4gcFsxXTtcbn1cbiJdLCJtYXBwaW5ncyI6IkFBQUE7QUFBQTtBQUFBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7Iiwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///./node_modules/vega-functions/node_modules/d3-shape/src/point.js\n");

/***/ }),

/***/ "./node_modules/vega-functions/node_modules/d3-shape/src/pointRadial.js":
/*!******************************************************************************!*\
  !*** ./node_modules/vega-functions/node_modules/d3-shape/src/pointRadial.js ***!
  \******************************************************************************/
/*! exports provided: default */
/***/ (function(module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony default export */ __webpack_exports__[\"default\"] = (function(x, y) {\n  return [(y = +y) * Math.cos(x -= Math.PI / 2), y * Math.sin(x)];\n});\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvdmVnYS1mdW5jdGlvbnMvbm9kZV9tb2R1bGVzL2QzLXNoYXBlL3NyYy9wb2ludFJhZGlhbC5qcy5qcyIsInNvdXJjZXMiOlsid2VicGFjazovLy8uL25vZGVfbW9kdWxlcy92ZWdhLWZ1bmN0aW9ucy9ub2RlX21vZHVsZXMvZDMtc2hhcGUvc3JjL3BvaW50UmFkaWFsLmpzP2ZlNzEiXSwic291cmNlc0NvbnRlbnQiOlsiZXhwb3J0IGRlZmF1bHQgZnVuY3Rpb24oeCwgeSkge1xuICByZXR1cm4gWyh5ID0gK3kpICogTWF0aC5jb3MoeCAtPSBNYXRoLlBJIC8gMiksIHkgKiBNYXRoLnNpbih4KV07XG59XG4iXSwibWFwcGluZ3MiOiJBQUFBO0FBQUE7QUFDQTtBQUNBOyIsInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///./node_modules/vega-functions/node_modules/d3-shape/src/pointRadial.js\n");

/***/ }),

/***/ "./node_modules/vega-functions/node_modules/d3-shape/src/stack.js":
/*!************************************************************************!*\
  !*** ./node_modules/vega-functions/node_modules/d3-shape/src/stack.js ***!
  \************************************************************************/
/*! exports provided: default */
/***/ (function(module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _array_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./array.js */ \"./node_modules/vega-functions/node_modules/d3-shape/src/array.js\");\n/* harmony import */ var _constant_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./constant.js */ \"./node_modules/vega-functions/node_modules/d3-shape/src/constant.js\");\n/* harmony import */ var _offset_none_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./offset/none.js */ \"./node_modules/vega-functions/node_modules/d3-shape/src/offset/none.js\");\n/* harmony import */ var _order_none_js__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ./order/none.js */ \"./node_modules/vega-functions/node_modules/d3-shape/src/order/none.js\");\n\n\n\n\n\nfunction stackValue(d, key) {\n  return d[key];\n}\n\nfunction stackSeries(key) {\n  const series = [];\n  series.key = key;\n  return series;\n}\n\n/* harmony default export */ __webpack_exports__[\"default\"] = (function() {\n  var keys = Object(_constant_js__WEBPACK_IMPORTED_MODULE_1__[\"default\"])([]),\n      order = _order_none_js__WEBPACK_IMPORTED_MODULE_3__[\"default\"],\n      offset = _offset_none_js__WEBPACK_IMPORTED_MODULE_2__[\"default\"],\n      value = stackValue;\n\n  function stack(data) {\n    var sz = Array.from(keys.apply(this, arguments), stackSeries),\n        i, n = sz.length, j = -1,\n        oz;\n\n    for (const d of data) {\n      for (i = 0, ++j; i < n; ++i) {\n        (sz[i][j] = [0, +value(d, sz[i].key, j, data)]).data = d;\n      }\n    }\n\n    for (i = 0, oz = Object(_array_js__WEBPACK_IMPORTED_MODULE_0__[\"default\"])(order(sz)); i < n; ++i) {\n      sz[oz[i]].index = i;\n    }\n\n    offset(sz, oz);\n    return sz;\n  }\n\n  stack.keys = function(_) {\n    return arguments.length ? (keys = typeof _ === \"function\" ? _ : Object(_constant_js__WEBPACK_IMPORTED_MODULE_1__[\"default\"])(Array.from(_)), stack) : keys;\n  };\n\n  stack.value = function(_) {\n    return arguments.length ? (value = typeof _ === \"function\" ? _ : Object(_constant_js__WEBPACK_IMPORTED_MODULE_1__[\"default\"])(+_), stack) : value;\n  };\n\n  stack.order = function(_) {\n    return arguments.length ? (order = _ == null ? _order_none_js__WEBPACK_IMPORTED_MODULE_3__[\"default\"] : typeof _ === \"function\" ? _ : Object(_constant_js__WEBPACK_IMPORTED_MODULE_1__[\"default\"])(Array.from(_)), stack) : order;\n  };\n\n  stack.offset = function(_) {\n    return arguments.length ? (offset = _ == null ? _offset_none_js__WEBPACK_IMPORTED_MODULE_2__[\"default\"] : _, stack) : offset;\n  };\n\n  return stack;\n});\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvdmVnYS1mdW5jdGlvbnMvbm9kZV9tb2R1bGVzL2QzLXNoYXBlL3NyYy9zdGFjay5qcy5qcyIsInNvdXJjZXMiOlsid2VicGFjazovLy8uL25vZGVfbW9kdWxlcy92ZWdhLWZ1bmN0aW9ucy9ub2RlX21vZHVsZXMvZDMtc2hhcGUvc3JjL3N0YWNrLmpzP2IwNDEiXSwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IGFycmF5IGZyb20gXCIuL2FycmF5LmpzXCI7XG5pbXBvcnQgY29uc3RhbnQgZnJvbSBcIi4vY29uc3RhbnQuanNcIjtcbmltcG9ydCBvZmZzZXROb25lIGZyb20gXCIuL29mZnNldC9ub25lLmpzXCI7XG5pbXBvcnQgb3JkZXJOb25lIGZyb20gXCIuL29yZGVyL25vbmUuanNcIjtcblxuZnVuY3Rpb24gc3RhY2tWYWx1ZShkLCBrZXkpIHtcbiAgcmV0dXJuIGRba2V5XTtcbn1cblxuZnVuY3Rpb24gc3RhY2tTZXJpZXMoa2V5KSB7XG4gIGNvbnN0IHNlcmllcyA9IFtdO1xuICBzZXJpZXMua2V5ID0ga2V5O1xuICByZXR1cm4gc2VyaWVzO1xufVxuXG5leHBvcnQgZGVmYXVsdCBmdW5jdGlvbigpIHtcbiAgdmFyIGtleXMgPSBjb25zdGFudChbXSksXG4gICAgICBvcmRlciA9IG9yZGVyTm9uZSxcbiAgICAgIG9mZnNldCA9IG9mZnNldE5vbmUsXG4gICAgICB2YWx1ZSA9IHN0YWNrVmFsdWU7XG5cbiAgZnVuY3Rpb24gc3RhY2soZGF0YSkge1xuICAgIHZhciBzeiA9IEFycmF5LmZyb20oa2V5cy5hcHBseSh0aGlzLCBhcmd1bWVudHMpLCBzdGFja1NlcmllcyksXG4gICAgICAgIGksIG4gPSBzei5sZW5ndGgsIGogPSAtMSxcbiAgICAgICAgb3o7XG5cbiAgICBmb3IgKGNvbnN0IGQgb2YgZGF0YSkge1xuICAgICAgZm9yIChpID0gMCwgKytqOyBpIDwgbjsgKytpKSB7XG4gICAgICAgIChzeltpXVtqXSA9IFswLCArdmFsdWUoZCwgc3pbaV0ua2V5LCBqLCBkYXRhKV0pLmRhdGEgPSBkO1xuICAgICAgfVxuICAgIH1cblxuICAgIGZvciAoaSA9IDAsIG96ID0gYXJyYXkob3JkZXIoc3opKTsgaSA8IG47ICsraSkge1xuICAgICAgc3pbb3pbaV1dLmluZGV4ID0gaTtcbiAgICB9XG5cbiAgICBvZmZzZXQoc3osIG96KTtcbiAgICByZXR1cm4gc3o7XG4gIH1cblxuICBzdGFjay5rZXlzID0gZnVuY3Rpb24oXykge1xuICAgIHJldHVybiBhcmd1bWVudHMubGVuZ3RoID8gKGtleXMgPSB0eXBlb2YgXyA9PT0gXCJmdW5jdGlvblwiID8gXyA6IGNvbnN0YW50KEFycmF5LmZyb20oXykpLCBzdGFjaykgOiBrZXlzO1xuICB9O1xuXG4gIHN0YWNrLnZhbHVlID0gZnVuY3Rpb24oXykge1xuICAgIHJldHVybiBhcmd1bWVudHMubGVuZ3RoID8gKHZhbHVlID0gdHlwZW9mIF8gPT09IFwiZnVuY3Rpb25cIiA/IF8gOiBjb25zdGFudCgrXyksIHN0YWNrKSA6IHZhbHVlO1xuICB9O1xuXG4gIHN0YWNrLm9yZGVyID0gZnVuY3Rpb24oXykge1xuICAgIHJldHVybiBhcmd1bWVudHMubGVuZ3RoID8gKG9yZGVyID0gXyA9PSBudWxsID8gb3JkZXJOb25lIDogdHlwZW9mIF8gPT09IFwiZnVuY3Rpb25cIiA/IF8gOiBjb25zdGFudChBcnJheS5mcm9tKF8pKSwgc3RhY2spIDogb3JkZXI7XG4gIH07XG5cbiAgc3RhY2sub2Zmc2V0ID0gZnVuY3Rpb24oXykge1xuICAgIHJldHVybiBhcmd1bWVudHMubGVuZ3RoID8gKG9mZnNldCA9IF8gPT0gbnVsbCA/IG9mZnNldE5vbmUgOiBfLCBzdGFjaykgOiBvZmZzZXQ7XG4gIH07XG5cbiAgcmV0dXJuIHN0YWNrO1xufVxuIl0sIm1hcHBpbmdzIjoiQUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7Iiwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///./node_modules/vega-functions/node_modules/d3-shape/src/stack.js\n");

/***/ }),

/***/ "./node_modules/vega-functions/node_modules/d3-shape/src/symbol.js":
/*!*************************************************************************!*\
  !*** ./node_modules/vega-functions/node_modules/d3-shape/src/symbol.js ***!
  \*************************************************************************/
/*! exports provided: symbols, default */
/***/ (function(module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"symbols\", function() { return symbols; });\n/* harmony import */ var d3_path__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! d3-path */ \"./node_modules/vega-functions/node_modules/d3-path/src/index.js\");\n/* harmony import */ var _symbol_circle_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./symbol/circle.js */ \"./node_modules/vega-functions/node_modules/d3-shape/src/symbol/circle.js\");\n/* harmony import */ var _symbol_cross_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./symbol/cross.js */ \"./node_modules/vega-functions/node_modules/d3-shape/src/symbol/cross.js\");\n/* harmony import */ var _symbol_diamond_js__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ./symbol/diamond.js */ \"./node_modules/vega-functions/node_modules/d3-shape/src/symbol/diamond.js\");\n/* harmony import */ var _symbol_star_js__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ./symbol/star.js */ \"./node_modules/vega-functions/node_modules/d3-shape/src/symbol/star.js\");\n/* harmony import */ var _symbol_square_js__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! ./symbol/square.js */ \"./node_modules/vega-functions/node_modules/d3-shape/src/symbol/square.js\");\n/* harmony import */ var _symbol_triangle_js__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! ./symbol/triangle.js */ \"./node_modules/vega-functions/node_modules/d3-shape/src/symbol/triangle.js\");\n/* harmony import */ var _symbol_wye_js__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! ./symbol/wye.js */ \"./node_modules/vega-functions/node_modules/d3-shape/src/symbol/wye.js\");\n/* harmony import */ var _constant_js__WEBPACK_IMPORTED_MODULE_8__ = __webpack_require__(/*! ./constant.js */ \"./node_modules/vega-functions/node_modules/d3-shape/src/constant.js\");\n\n\n\n\n\n\n\n\n\n\nvar symbols = [\n  _symbol_circle_js__WEBPACK_IMPORTED_MODULE_1__[\"default\"],\n  _symbol_cross_js__WEBPACK_IMPORTED_MODULE_2__[\"default\"],\n  _symbol_diamond_js__WEBPACK_IMPORTED_MODULE_3__[\"default\"],\n  _symbol_square_js__WEBPACK_IMPORTED_MODULE_5__[\"default\"],\n  _symbol_star_js__WEBPACK_IMPORTED_MODULE_4__[\"default\"],\n  _symbol_triangle_js__WEBPACK_IMPORTED_MODULE_6__[\"default\"],\n  _symbol_wye_js__WEBPACK_IMPORTED_MODULE_7__[\"default\"]\n];\n\n/* harmony default export */ __webpack_exports__[\"default\"] = (function(type, size) {\n  var context = null;\n  type = typeof type === \"function\" ? type : Object(_constant_js__WEBPACK_IMPORTED_MODULE_8__[\"default\"])(type || _symbol_circle_js__WEBPACK_IMPORTED_MODULE_1__[\"default\"]);\n  size = typeof size === \"function\" ? size : Object(_constant_js__WEBPACK_IMPORTED_MODULE_8__[\"default\"])(size === undefined ? 64 : +size);\n\n  function symbol() {\n    var buffer;\n    if (!context) context = buffer = Object(d3_path__WEBPACK_IMPORTED_MODULE_0__[\"path\"])();\n    type.apply(this, arguments).draw(context, +size.apply(this, arguments));\n    if (buffer) return context = null, buffer + \"\" || null;\n  }\n\n  symbol.type = function(_) {\n    return arguments.length ? (type = typeof _ === \"function\" ? _ : Object(_constant_js__WEBPACK_IMPORTED_MODULE_8__[\"default\"])(_), symbol) : type;\n  };\n\n  symbol.size = function(_) {\n    return arguments.length ? (size = typeof _ === \"function\" ? _ : Object(_constant_js__WEBPACK_IMPORTED_MODULE_8__[\"default\"])(+_), symbol) : size;\n  };\n\n  symbol.context = function(_) {\n    return arguments.length ? (context = _ == null ? null : _, symbol) : context;\n  };\n\n  return symbol;\n});\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvdmVnYS1mdW5jdGlvbnMvbm9kZV9tb2R1bGVzL2QzLXNoYXBlL3NyYy9zeW1ib2wuanMuanMiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvdmVnYS1mdW5jdGlvbnMvbm9kZV9tb2R1bGVzL2QzLXNoYXBlL3NyYy9zeW1ib2wuanM/YWMwMiJdLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge3BhdGh9IGZyb20gXCJkMy1wYXRoXCI7XG5pbXBvcnQgY2lyY2xlIGZyb20gXCIuL3N5bWJvbC9jaXJjbGUuanNcIjtcbmltcG9ydCBjcm9zcyBmcm9tIFwiLi9zeW1ib2wvY3Jvc3MuanNcIjtcbmltcG9ydCBkaWFtb25kIGZyb20gXCIuL3N5bWJvbC9kaWFtb25kLmpzXCI7XG5pbXBvcnQgc3RhciBmcm9tIFwiLi9zeW1ib2wvc3Rhci5qc1wiO1xuaW1wb3J0IHNxdWFyZSBmcm9tIFwiLi9zeW1ib2wvc3F1YXJlLmpzXCI7XG5pbXBvcnQgdHJpYW5nbGUgZnJvbSBcIi4vc3ltYm9sL3RyaWFuZ2xlLmpzXCI7XG5pbXBvcnQgd3llIGZyb20gXCIuL3N5bWJvbC93eWUuanNcIjtcbmltcG9ydCBjb25zdGFudCBmcm9tIFwiLi9jb25zdGFudC5qc1wiO1xuXG5leHBvcnQgdmFyIHN5bWJvbHMgPSBbXG4gIGNpcmNsZSxcbiAgY3Jvc3MsXG4gIGRpYW1vbmQsXG4gIHNxdWFyZSxcbiAgc3RhcixcbiAgdHJpYW5nbGUsXG4gIHd5ZVxuXTtcblxuZXhwb3J0IGRlZmF1bHQgZnVuY3Rpb24odHlwZSwgc2l6ZSkge1xuICB2YXIgY29udGV4dCA9IG51bGw7XG4gIHR5cGUgPSB0eXBlb2YgdHlwZSA9PT0gXCJmdW5jdGlvblwiID8gdHlwZSA6IGNvbnN0YW50KHR5cGUgfHwgY2lyY2xlKTtcbiAgc2l6ZSA9IHR5cGVvZiBzaXplID09PSBcImZ1bmN0aW9uXCIgPyBzaXplIDogY29uc3RhbnQoc2l6ZSA9PT0gdW5kZWZpbmVkID8gNjQgOiArc2l6ZSk7XG5cbiAgZnVuY3Rpb24gc3ltYm9sKCkge1xuICAgIHZhciBidWZmZXI7XG4gICAgaWYgKCFjb250ZXh0KSBjb250ZXh0ID0gYnVmZmVyID0gcGF0aCgpO1xuICAgIHR5cGUuYXBwbHkodGhpcywgYXJndW1lbnRzKS5kcmF3KGNvbnRleHQsICtzaXplLmFwcGx5KHRoaXMsIGFyZ3VtZW50cykpO1xuICAgIGlmIChidWZmZXIpIHJldHVybiBjb250ZXh0ID0gbnVsbCwgYnVmZmVyICsgXCJcIiB8fCBudWxsO1xuICB9XG5cbiAgc3ltYm9sLnR5cGUgPSBmdW5jdGlvbihfKSB7XG4gICAgcmV0dXJuIGFyZ3VtZW50cy5sZW5ndGggPyAodHlwZSA9IHR5cGVvZiBfID09PSBcImZ1bmN0aW9uXCIgPyBfIDogY29uc3RhbnQoXyksIHN5bWJvbCkgOiB0eXBlO1xuICB9O1xuXG4gIHN5bWJvbC5zaXplID0gZnVuY3Rpb24oXykge1xuICAgIHJldHVybiBhcmd1bWVudHMubGVuZ3RoID8gKHNpemUgPSB0eXBlb2YgXyA9PT0gXCJmdW5jdGlvblwiID8gXyA6IGNvbnN0YW50KCtfKSwgc3ltYm9sKSA6IHNpemU7XG4gIH07XG5cbiAgc3ltYm9sLmNvbnRleHQgPSBmdW5jdGlvbihfKSB7XG4gICAgcmV0dXJuIGFyZ3VtZW50cy5sZW5ndGggPyAoY29udGV4dCA9IF8gPT0gbnVsbCA/IG51bGwgOiBfLCBzeW1ib2wpIDogY29udGV4dDtcbiAgfTtcblxuICByZXR1cm4gc3ltYm9sO1xufVxuIl0sIm1hcHBpbmdzIjoiQUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7Iiwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///./node_modules/vega-functions/node_modules/d3-shape/src/symbol.js\n");

/***/ }),

/***/ "./node_modules/vega-functions/node_modules/d3-shape/src/symbol/circle.js":
/*!********************************************************************************!*\
  !*** ./node_modules/vega-functions/node_modules/d3-shape/src/symbol/circle.js ***!
  \********************************************************************************/
/*! exports provided: default */
/***/ (function(module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _math_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../math.js */ \"./node_modules/vega-functions/node_modules/d3-shape/src/math.js\");\n\n\n/* harmony default export */ __webpack_exports__[\"default\"] = ({\n  draw: function(context, size) {\n    var r = Math.sqrt(size / _math_js__WEBPACK_IMPORTED_MODULE_0__[\"pi\"]);\n    context.moveTo(r, 0);\n    context.arc(0, 0, r, 0, _math_js__WEBPACK_IMPORTED_MODULE_0__[\"tau\"]);\n  }\n});\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvdmVnYS1mdW5jdGlvbnMvbm9kZV9tb2R1bGVzL2QzLXNoYXBlL3NyYy9zeW1ib2wvY2lyY2xlLmpzLmpzIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL3ZlZ2EtZnVuY3Rpb25zL25vZGVfbW9kdWxlcy9kMy1zaGFwZS9zcmMvc3ltYm9sL2NpcmNsZS5qcz9hZjIzIl0sInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7cGksIHRhdX0gZnJvbSBcIi4uL21hdGguanNcIjtcblxuZXhwb3J0IGRlZmF1bHQge1xuICBkcmF3OiBmdW5jdGlvbihjb250ZXh0LCBzaXplKSB7XG4gICAgdmFyIHIgPSBNYXRoLnNxcnQoc2l6ZSAvIHBpKTtcbiAgICBjb250ZXh0Lm1vdmVUbyhyLCAwKTtcbiAgICBjb250ZXh0LmFyYygwLCAwLCByLCAwLCB0YXUpO1xuICB9XG59O1xuIl0sIm1hcHBpbmdzIjoiQUFBQTtBQUFBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOyIsInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///./node_modules/vega-functions/node_modules/d3-shape/src/symbol/circle.js\n");

/***/ }),

/***/ "./node_modules/vega-functions/node_modules/d3-shape/src/symbol/cross.js":
/*!*******************************************************************************!*\
  !*** ./node_modules/vega-functions/node_modules/d3-shape/src/symbol/cross.js ***!
  \*******************************************************************************/
/*! exports provided: default */
/***/ (function(module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony default export */ __webpack_exports__[\"default\"] = ({\n  draw: function(context, size) {\n    var r = Math.sqrt(size / 5) / 2;\n    context.moveTo(-3 * r, -r);\n    context.lineTo(-r, -r);\n    context.lineTo(-r, -3 * r);\n    context.lineTo(r, -3 * r);\n    context.lineTo(r, -r);\n    context.lineTo(3 * r, -r);\n    context.lineTo(3 * r, r);\n    context.lineTo(r, r);\n    context.lineTo(r, 3 * r);\n    context.lineTo(-r, 3 * r);\n    context.lineTo(-r, r);\n    context.lineTo(-3 * r, r);\n    context.closePath();\n  }\n});\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvdmVnYS1mdW5jdGlvbnMvbm9kZV9tb2R1bGVzL2QzLXNoYXBlL3NyYy9zeW1ib2wvY3Jvc3MuanMuanMiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvdmVnYS1mdW5jdGlvbnMvbm9kZV9tb2R1bGVzL2QzLXNoYXBlL3NyYy9zeW1ib2wvY3Jvc3MuanM/NjBhOSJdLCJzb3VyY2VzQ29udGVudCI6WyJleHBvcnQgZGVmYXVsdCB7XG4gIGRyYXc6IGZ1bmN0aW9uKGNvbnRleHQsIHNpemUpIHtcbiAgICB2YXIgciA9IE1hdGguc3FydChzaXplIC8gNSkgLyAyO1xuICAgIGNvbnRleHQubW92ZVRvKC0zICogciwgLXIpO1xuICAgIGNvbnRleHQubGluZVRvKC1yLCAtcik7XG4gICAgY29udGV4dC5saW5lVG8oLXIsIC0zICogcik7XG4gICAgY29udGV4dC5saW5lVG8ociwgLTMgKiByKTtcbiAgICBjb250ZXh0LmxpbmVUbyhyLCAtcik7XG4gICAgY29udGV4dC5saW5lVG8oMyAqIHIsIC1yKTtcbiAgICBjb250ZXh0LmxpbmVUbygzICogciwgcik7XG4gICAgY29udGV4dC5saW5lVG8ociwgcik7XG4gICAgY29udGV4dC5saW5lVG8ociwgMyAqIHIpO1xuICAgIGNvbnRleHQubGluZVRvKC1yLCAzICogcik7XG4gICAgY29udGV4dC5saW5lVG8oLXIsIHIpO1xuICAgIGNvbnRleHQubGluZVRvKC0zICogciwgcik7XG4gICAgY29udGV4dC5jbG9zZVBhdGgoKTtcbiAgfVxufTtcbiJdLCJtYXBwaW5ncyI6IkFBQUE7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7Iiwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///./node_modules/vega-functions/node_modules/d3-shape/src/symbol/cross.js\n");

/***/ }),

/***/ "./node_modules/vega-functions/node_modules/d3-shape/src/symbol/diamond.js":
/*!*********************************************************************************!*\
  !*** ./node_modules/vega-functions/node_modules/d3-shape/src/symbol/diamond.js ***!
  \*********************************************************************************/
/*! exports provided: default */
/***/ (function(module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\nvar tan30 = Math.sqrt(1 / 3),\n    tan30_2 = tan30 * 2;\n\n/* harmony default export */ __webpack_exports__[\"default\"] = ({\n  draw: function(context, size) {\n    var y = Math.sqrt(size / tan30_2),\n        x = y * tan30;\n    context.moveTo(0, -y);\n    context.lineTo(x, 0);\n    context.lineTo(0, y);\n    context.lineTo(-x, 0);\n    context.closePath();\n  }\n});\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvdmVnYS1mdW5jdGlvbnMvbm9kZV9tb2R1bGVzL2QzLXNoYXBlL3NyYy9zeW1ib2wvZGlhbW9uZC5qcy5qcyIsInNvdXJjZXMiOlsid2VicGFjazovLy8uL25vZGVfbW9kdWxlcy92ZWdhLWZ1bmN0aW9ucy9ub2RlX21vZHVsZXMvZDMtc2hhcGUvc3JjL3N5bWJvbC9kaWFtb25kLmpzPzViZDgiXSwic291cmNlc0NvbnRlbnQiOlsidmFyIHRhbjMwID0gTWF0aC5zcXJ0KDEgLyAzKSxcbiAgICB0YW4zMF8yID0gdGFuMzAgKiAyO1xuXG5leHBvcnQgZGVmYXVsdCB7XG4gIGRyYXc6IGZ1bmN0aW9uKGNvbnRleHQsIHNpemUpIHtcbiAgICB2YXIgeSA9IE1hdGguc3FydChzaXplIC8gdGFuMzBfMiksXG4gICAgICAgIHggPSB5ICogdGFuMzA7XG4gICAgY29udGV4dC5tb3ZlVG8oMCwgLXkpO1xuICAgIGNvbnRleHQubGluZVRvKHgsIDApO1xuICAgIGNvbnRleHQubGluZVRvKDAsIHkpO1xuICAgIGNvbnRleHQubGluZVRvKC14LCAwKTtcbiAgICBjb250ZXh0LmNsb3NlUGF0aCgpO1xuICB9XG59O1xuIl0sIm1hcHBpbmdzIjoiQUFBQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7Iiwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///./node_modules/vega-functions/node_modules/d3-shape/src/symbol/diamond.js\n");

/***/ }),

/***/ "./node_modules/vega-functions/node_modules/d3-shape/src/symbol/square.js":
/*!********************************************************************************!*\
  !*** ./node_modules/vega-functions/node_modules/d3-shape/src/symbol/square.js ***!
  \********************************************************************************/
/*! exports provided: default */
/***/ (function(module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony default export */ __webpack_exports__[\"default\"] = ({\n  draw: function(context, size) {\n    var w = Math.sqrt(size),\n        x = -w / 2;\n    context.rect(x, x, w, w);\n  }\n});\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvdmVnYS1mdW5jdGlvbnMvbm9kZV9tb2R1bGVzL2QzLXNoYXBlL3NyYy9zeW1ib2wvc3F1YXJlLmpzLmpzIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL3ZlZ2EtZnVuY3Rpb25zL25vZGVfbW9kdWxlcy9kMy1zaGFwZS9zcmMvc3ltYm9sL3NxdWFyZS5qcz84MGRjIl0sInNvdXJjZXNDb250ZW50IjpbImV4cG9ydCBkZWZhdWx0IHtcbiAgZHJhdzogZnVuY3Rpb24oY29udGV4dCwgc2l6ZSkge1xuICAgIHZhciB3ID0gTWF0aC5zcXJ0KHNpemUpLFxuICAgICAgICB4ID0gLXcgLyAyO1xuICAgIGNvbnRleHQucmVjdCh4LCB4LCB3LCB3KTtcbiAgfVxufTtcbiJdLCJtYXBwaW5ncyI6IkFBQUE7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTsiLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///./node_modules/vega-functions/node_modules/d3-shape/src/symbol/square.js\n");

/***/ }),

/***/ "./node_modules/vega-functions/node_modules/d3-shape/src/symbol/star.js":
/*!******************************************************************************!*\
  !*** ./node_modules/vega-functions/node_modules/d3-shape/src/symbol/star.js ***!
  \******************************************************************************/
/*! exports provided: default */
/***/ (function(module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _math_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../math.js */ \"./node_modules/vega-functions/node_modules/d3-shape/src/math.js\");\n\n\nvar ka = 0.89081309152928522810,\n    kr = Math.sin(_math_js__WEBPACK_IMPORTED_MODULE_0__[\"pi\"] / 10) / Math.sin(7 * _math_js__WEBPACK_IMPORTED_MODULE_0__[\"pi\"] / 10),\n    kx = Math.sin(_math_js__WEBPACK_IMPORTED_MODULE_0__[\"tau\"] / 10) * kr,\n    ky = -Math.cos(_math_js__WEBPACK_IMPORTED_MODULE_0__[\"tau\"] / 10) * kr;\n\n/* harmony default export */ __webpack_exports__[\"default\"] = ({\n  draw: function(context, size) {\n    var r = Math.sqrt(size * ka),\n        x = kx * r,\n        y = ky * r;\n    context.moveTo(0, -r);\n    context.lineTo(x, y);\n    for (var i = 1; i < 5; ++i) {\n      var a = _math_js__WEBPACK_IMPORTED_MODULE_0__[\"tau\"] * i / 5,\n          c = Math.cos(a),\n          s = Math.sin(a);\n      context.lineTo(s * r, -c * r);\n      context.lineTo(c * x - s * y, s * x + c * y);\n    }\n    context.closePath();\n  }\n});\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvdmVnYS1mdW5jdGlvbnMvbm9kZV9tb2R1bGVzL2QzLXNoYXBlL3NyYy9zeW1ib2wvc3Rhci5qcy5qcyIsInNvdXJjZXMiOlsid2VicGFjazovLy8uL25vZGVfbW9kdWxlcy92ZWdhLWZ1bmN0aW9ucy9ub2RlX21vZHVsZXMvZDMtc2hhcGUvc3JjL3N5bWJvbC9zdGFyLmpzPzZmMjkiXSwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtwaSwgdGF1fSBmcm9tIFwiLi4vbWF0aC5qc1wiO1xuXG52YXIga2EgPSAwLjg5MDgxMzA5MTUyOTI4NTIyODEwLFxuICAgIGtyID0gTWF0aC5zaW4ocGkgLyAxMCkgLyBNYXRoLnNpbig3ICogcGkgLyAxMCksXG4gICAga3ggPSBNYXRoLnNpbih0YXUgLyAxMCkgKiBrcixcbiAgICBreSA9IC1NYXRoLmNvcyh0YXUgLyAxMCkgKiBrcjtcblxuZXhwb3J0IGRlZmF1bHQge1xuICBkcmF3OiBmdW5jdGlvbihjb250ZXh0LCBzaXplKSB7XG4gICAgdmFyIHIgPSBNYXRoLnNxcnQoc2l6ZSAqIGthKSxcbiAgICAgICAgeCA9IGt4ICogcixcbiAgICAgICAgeSA9IGt5ICogcjtcbiAgICBjb250ZXh0Lm1vdmVUbygwLCAtcik7XG4gICAgY29udGV4dC5saW5lVG8oeCwgeSk7XG4gICAgZm9yICh2YXIgaSA9IDE7IGkgPCA1OyArK2kpIHtcbiAgICAgIHZhciBhID0gdGF1ICogaSAvIDUsXG4gICAgICAgICAgYyA9IE1hdGguY29zKGEpLFxuICAgICAgICAgIHMgPSBNYXRoLnNpbihhKTtcbiAgICAgIGNvbnRleHQubGluZVRvKHMgKiByLCAtYyAqIHIpO1xuICAgICAgY29udGV4dC5saW5lVG8oYyAqIHggLSBzICogeSwgcyAqIHggKyBjICogeSk7XG4gICAgfVxuICAgIGNvbnRleHQuY2xvc2VQYXRoKCk7XG4gIH1cbn07XG4iXSwibWFwcGluZ3MiOiJBQUFBO0FBQUE7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7Iiwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///./node_modules/vega-functions/node_modules/d3-shape/src/symbol/star.js\n");

/***/ }),

/***/ "./node_modules/vega-functions/node_modules/d3-shape/src/symbol/triangle.js":
/*!**********************************************************************************!*\
  !*** ./node_modules/vega-functions/node_modules/d3-shape/src/symbol/triangle.js ***!
  \**********************************************************************************/
/*! exports provided: default */
/***/ (function(module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\nvar sqrt3 = Math.sqrt(3);\n\n/* harmony default export */ __webpack_exports__[\"default\"] = ({\n  draw: function(context, size) {\n    var y = -Math.sqrt(size / (sqrt3 * 3));\n    context.moveTo(0, y * 2);\n    context.lineTo(-sqrt3 * y, -y);\n    context.lineTo(sqrt3 * y, -y);\n    context.closePath();\n  }\n});\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvdmVnYS1mdW5jdGlvbnMvbm9kZV9tb2R1bGVzL2QzLXNoYXBlL3NyYy9zeW1ib2wvdHJpYW5nbGUuanMuanMiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvdmVnYS1mdW5jdGlvbnMvbm9kZV9tb2R1bGVzL2QzLXNoYXBlL3NyYy9zeW1ib2wvdHJpYW5nbGUuanM/NDI5NyJdLCJzb3VyY2VzQ29udGVudCI6WyJ2YXIgc3FydDMgPSBNYXRoLnNxcnQoMyk7XG5cbmV4cG9ydCBkZWZhdWx0IHtcbiAgZHJhdzogZnVuY3Rpb24oY29udGV4dCwgc2l6ZSkge1xuICAgIHZhciB5ID0gLU1hdGguc3FydChzaXplIC8gKHNxcnQzICogMykpO1xuICAgIGNvbnRleHQubW92ZVRvKDAsIHkgKiAyKTtcbiAgICBjb250ZXh0LmxpbmVUbygtc3FydDMgKiB5LCAteSk7XG4gICAgY29udGV4dC5saW5lVG8oc3FydDMgKiB5LCAteSk7XG4gICAgY29udGV4dC5jbG9zZVBhdGgoKTtcbiAgfVxufTtcbiJdLCJtYXBwaW5ncyI6IkFBQUE7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOyIsInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///./node_modules/vega-functions/node_modules/d3-shape/src/symbol/triangle.js\n");

/***/ }),

/***/ "./node_modules/vega-functions/node_modules/d3-shape/src/symbol/wye.js":
/*!*****************************************************************************!*\
  !*** ./node_modules/vega-functions/node_modules/d3-shape/src/symbol/wye.js ***!
  \*****************************************************************************/
/*! exports provided: default */
/***/ (function(module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\nvar c = -0.5,\n    s = Math.sqrt(3) / 2,\n    k = 1 / Math.sqrt(12),\n    a = (k / 2 + 1) * 3;\n\n/* harmony default export */ __webpack_exports__[\"default\"] = ({\n  draw: function(context, size) {\n    var r = Math.sqrt(size / a),\n        x0 = r / 2,\n        y0 = r * k,\n        x1 = x0,\n        y1 = r * k + r,\n        x2 = -x1,\n        y2 = y1;\n    context.moveTo(x0, y0);\n    context.lineTo(x1, y1);\n    context.lineTo(x2, y2);\n    context.lineTo(c * x0 - s * y0, s * x0 + c * y0);\n    context.lineTo(c * x1 - s * y1, s * x1 + c * y1);\n    context.lineTo(c * x2 - s * y2, s * x2 + c * y2);\n    context.lineTo(c * x0 + s * y0, c * y0 - s * x0);\n    context.lineTo(c * x1 + s * y1, c * y1 - s * x1);\n    context.lineTo(c * x2 + s * y2, c * y2 - s * x2);\n    context.closePath();\n  }\n});\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvdmVnYS1mdW5jdGlvbnMvbm9kZV9tb2R1bGVzL2QzLXNoYXBlL3NyYy9zeW1ib2wvd3llLmpzLmpzIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL3ZlZ2EtZnVuY3Rpb25zL25vZGVfbW9kdWxlcy9kMy1zaGFwZS9zcmMvc3ltYm9sL3d5ZS5qcz82MDNjIl0sInNvdXJjZXNDb250ZW50IjpbInZhciBjID0gLTAuNSxcbiAgICBzID0gTWF0aC5zcXJ0KDMpIC8gMixcbiAgICBrID0gMSAvIE1hdGguc3FydCgxMiksXG4gICAgYSA9IChrIC8gMiArIDEpICogMztcblxuZXhwb3J0IGRlZmF1bHQge1xuICBkcmF3OiBmdW5jdGlvbihjb250ZXh0LCBzaXplKSB7XG4gICAgdmFyIHIgPSBNYXRoLnNxcnQoc2l6ZSAvIGEpLFxuICAgICAgICB4MCA9IHIgLyAyLFxuICAgICAgICB5MCA9IHIgKiBrLFxuICAgICAgICB4MSA9IHgwLFxuICAgICAgICB5MSA9IHIgKiBrICsgcixcbiAgICAgICAgeDIgPSAteDEsXG4gICAgICAgIHkyID0geTE7XG4gICAgY29udGV4dC5tb3ZlVG8oeDAsIHkwKTtcbiAgICBjb250ZXh0LmxpbmVUbyh4MSwgeTEpO1xuICAgIGNvbnRleHQubGluZVRvKHgyLCB5Mik7XG4gICAgY29udGV4dC5saW5lVG8oYyAqIHgwIC0gcyAqIHkwLCBzICogeDAgKyBjICogeTApO1xuICAgIGNvbnRleHQubGluZVRvKGMgKiB4MSAtIHMgKiB5MSwgcyAqIHgxICsgYyAqIHkxKTtcbiAgICBjb250ZXh0LmxpbmVUbyhjICogeDIgLSBzICogeTIsIHMgKiB4MiArIGMgKiB5Mik7XG4gICAgY29udGV4dC5saW5lVG8oYyAqIHgwICsgcyAqIHkwLCBjICogeTAgLSBzICogeDApO1xuICAgIGNvbnRleHQubGluZVRvKGMgKiB4MSArIHMgKiB5MSwgYyAqIHkxIC0gcyAqIHgxKTtcbiAgICBjb250ZXh0LmxpbmVUbyhjICogeDIgKyBzICogeTIsIGMgKiB5MiAtIHMgKiB4Mik7XG4gICAgY29udGV4dC5jbG9zZVBhdGgoKTtcbiAgfVxufTtcbiJdLCJtYXBwaW5ncyI6IkFBQUE7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOyIsInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///./node_modules/vega-functions/node_modules/d3-shape/src/symbol/wye.js\n");

/***/ }),

/***/ "./node_modules/vega-functions/node_modules/d3-time-format/src/defaultLocale.js":
/*!**************************************************************************************!*\
  !*** ./node_modules/vega-functions/node_modules/d3-time-format/src/defaultLocale.js ***!
  \**************************************************************************************/
/*! exports provided: timeFormat, timeParse, utcFormat, utcParse, default */
/***/ (function(module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"timeFormat\", function() { return timeFormat; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"timeParse\", function() { return timeParse; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"utcFormat\", function() { return utcFormat; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"utcParse\", function() { return utcParse; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"default\", function() { return defaultLocale; });\n/* harmony import */ var _locale_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./locale.js */ \"./node_modules/vega-functions/node_modules/d3-time-format/src/locale.js\");\n\n\nvar locale;\nvar timeFormat;\nvar timeParse;\nvar utcFormat;\nvar utcParse;\n\ndefaultLocale({\n  dateTime: \"%x, %X\",\n  date: \"%-m/%-d/%Y\",\n  time: \"%-I:%M:%S %p\",\n  periods: [\"AM\", \"PM\"],\n  days: [\"Sunday\", \"Monday\", \"Tuesday\", \"Wednesday\", \"Thursday\", \"Friday\", \"Saturday\"],\n  shortDays: [\"Sun\", \"Mon\", \"Tue\", \"Wed\", \"Thu\", \"Fri\", \"Sat\"],\n  months: [\"January\", \"February\", \"March\", \"April\", \"May\", \"June\", \"July\", \"August\", \"September\", \"October\", \"November\", \"December\"],\n  shortMonths: [\"Jan\", \"Feb\", \"Mar\", \"Apr\", \"May\", \"Jun\", \"Jul\", \"Aug\", \"Sep\", \"Oct\", \"Nov\", \"Dec\"]\n});\n\nfunction defaultLocale(definition) {\n  locale = Object(_locale_js__WEBPACK_IMPORTED_MODULE_0__[\"default\"])(definition);\n  timeFormat = locale.format;\n  timeParse = locale.parse;\n  utcFormat = locale.utcFormat;\n  utcParse = locale.utcParse;\n  return locale;\n}\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvdmVnYS1mdW5jdGlvbnMvbm9kZV9tb2R1bGVzL2QzLXRpbWUtZm9ybWF0L3NyYy9kZWZhdWx0TG9jYWxlLmpzLmpzIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL3ZlZ2EtZnVuY3Rpb25zL25vZGVfbW9kdWxlcy9kMy10aW1lLWZvcm1hdC9zcmMvZGVmYXVsdExvY2FsZS5qcz9lMzQ2Il0sInNvdXJjZXNDb250ZW50IjpbImltcG9ydCBmb3JtYXRMb2NhbGUgZnJvbSBcIi4vbG9jYWxlLmpzXCI7XG5cbnZhciBsb2NhbGU7XG5leHBvcnQgdmFyIHRpbWVGb3JtYXQ7XG5leHBvcnQgdmFyIHRpbWVQYXJzZTtcbmV4cG9ydCB2YXIgdXRjRm9ybWF0O1xuZXhwb3J0IHZhciB1dGNQYXJzZTtcblxuZGVmYXVsdExvY2FsZSh7XG4gIGRhdGVUaW1lOiBcIiV4LCAlWFwiLFxuICBkYXRlOiBcIiUtbS8lLWQvJVlcIixcbiAgdGltZTogXCIlLUk6JU06JVMgJXBcIixcbiAgcGVyaW9kczogW1wiQU1cIiwgXCJQTVwiXSxcbiAgZGF5czogW1wiU3VuZGF5XCIsIFwiTW9uZGF5XCIsIFwiVHVlc2RheVwiLCBcIldlZG5lc2RheVwiLCBcIlRodXJzZGF5XCIsIFwiRnJpZGF5XCIsIFwiU2F0dXJkYXlcIl0sXG4gIHNob3J0RGF5czogW1wiU3VuXCIsIFwiTW9uXCIsIFwiVHVlXCIsIFwiV2VkXCIsIFwiVGh1XCIsIFwiRnJpXCIsIFwiU2F0XCJdLFxuICBtb250aHM6IFtcIkphbnVhcnlcIiwgXCJGZWJydWFyeVwiLCBcIk1hcmNoXCIsIFwiQXByaWxcIiwgXCJNYXlcIiwgXCJKdW5lXCIsIFwiSnVseVwiLCBcIkF1Z3VzdFwiLCBcIlNlcHRlbWJlclwiLCBcIk9jdG9iZXJcIiwgXCJOb3ZlbWJlclwiLCBcIkRlY2VtYmVyXCJdLFxuICBzaG9ydE1vbnRoczogW1wiSmFuXCIsIFwiRmViXCIsIFwiTWFyXCIsIFwiQXByXCIsIFwiTWF5XCIsIFwiSnVuXCIsIFwiSnVsXCIsIFwiQXVnXCIsIFwiU2VwXCIsIFwiT2N0XCIsIFwiTm92XCIsIFwiRGVjXCJdXG59KTtcblxuZXhwb3J0IGRlZmF1bHQgZnVuY3Rpb24gZGVmYXVsdExvY2FsZShkZWZpbml0aW9uKSB7XG4gIGxvY2FsZSA9IGZvcm1hdExvY2FsZShkZWZpbml0aW9uKTtcbiAgdGltZUZvcm1hdCA9IGxvY2FsZS5mb3JtYXQ7XG4gIHRpbWVQYXJzZSA9IGxvY2FsZS5wYXJzZTtcbiAgdXRjRm9ybWF0ID0gbG9jYWxlLnV0Y0Zvcm1hdDtcbiAgdXRjUGFyc2UgPSBsb2NhbGUudXRjUGFyc2U7XG4gIHJldHVybiBsb2NhbGU7XG59XG4iXSwibWFwcGluZ3MiOiJBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOyIsInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///./node_modules/vega-functions/node_modules/d3-time-format/src/defaultLocale.js\n");

/***/ }),

/***/ "./node_modules/vega-functions/node_modules/d3-time-format/src/index.js":
/*!******************************************************************************!*\
  !*** ./node_modules/vega-functions/node_modules/d3-time-format/src/index.js ***!
  \******************************************************************************/
/*! exports provided: timeFormatDefaultLocale, timeFormat, timeParse, utcFormat, utcParse, timeFormatLocale, isoFormat, isoParse */
/***/ (function(module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _defaultLocale_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./defaultLocale.js */ \"./node_modules/vega-functions/node_modules/d3-time-format/src/defaultLocale.js\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"timeFormatDefaultLocale\", function() { return _defaultLocale_js__WEBPACK_IMPORTED_MODULE_0__[\"default\"]; });\n\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"timeFormat\", function() { return _defaultLocale_js__WEBPACK_IMPORTED_MODULE_0__[\"timeFormat\"]; });\n\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"timeParse\", function() { return _defaultLocale_js__WEBPACK_IMPORTED_MODULE_0__[\"timeParse\"]; });\n\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"utcFormat\", function() { return _defaultLocale_js__WEBPACK_IMPORTED_MODULE_0__[\"utcFormat\"]; });\n\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"utcParse\", function() { return _defaultLocale_js__WEBPACK_IMPORTED_MODULE_0__[\"utcParse\"]; });\n\n/* harmony import */ var _locale_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./locale.js */ \"./node_modules/vega-functions/node_modules/d3-time-format/src/locale.js\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"timeFormatLocale\", function() { return _locale_js__WEBPACK_IMPORTED_MODULE_1__[\"default\"]; });\n\n/* harmony import */ var _isoFormat_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./isoFormat.js */ \"./node_modules/vega-functions/node_modules/d3-time-format/src/isoFormat.js\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"isoFormat\", function() { return _isoFormat_js__WEBPACK_IMPORTED_MODULE_2__[\"default\"]; });\n\n/* harmony import */ var _isoParse_js__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ./isoParse.js */ \"./node_modules/vega-functions/node_modules/d3-time-format/src/isoParse.js\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"isoParse\", function() { return _isoParse_js__WEBPACK_IMPORTED_MODULE_3__[\"default\"]; });\n\n\n\n\n\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvdmVnYS1mdW5jdGlvbnMvbm9kZV9tb2R1bGVzL2QzLXRpbWUtZm9ybWF0L3NyYy9pbmRleC5qcy5qcyIsInNvdXJjZXMiOlsid2VicGFjazovLy8uL25vZGVfbW9kdWxlcy92ZWdhLWZ1bmN0aW9ucy9ub2RlX21vZHVsZXMvZDMtdGltZS1mb3JtYXQvc3JjL2luZGV4LmpzPzdmZjkiXSwic291cmNlc0NvbnRlbnQiOlsiZXhwb3J0IHtkZWZhdWx0IGFzIHRpbWVGb3JtYXREZWZhdWx0TG9jYWxlLCB0aW1lRm9ybWF0LCB0aW1lUGFyc2UsIHV0Y0Zvcm1hdCwgdXRjUGFyc2V9IGZyb20gXCIuL2RlZmF1bHRMb2NhbGUuanNcIjtcbmV4cG9ydCB7ZGVmYXVsdCBhcyB0aW1lRm9ybWF0TG9jYWxlfSBmcm9tIFwiLi9sb2NhbGUuanNcIjtcbmV4cG9ydCB7ZGVmYXVsdCBhcyBpc29Gb3JtYXR9IGZyb20gXCIuL2lzb0Zvcm1hdC5qc1wiO1xuZXhwb3J0IHtkZWZhdWx0IGFzIGlzb1BhcnNlfSBmcm9tIFwiLi9pc29QYXJzZS5qc1wiO1xuIl0sIm1hcHBpbmdzIjoiQUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUNBO0FBQ0E7QUFDQTsiLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///./node_modules/vega-functions/node_modules/d3-time-format/src/index.js\n");

/***/ }),

/***/ "./node_modules/vega-functions/node_modules/d3-time-format/src/isoFormat.js":
/*!**********************************************************************************!*\
  !*** ./node_modules/vega-functions/node_modules/d3-time-format/src/isoFormat.js ***!
  \**********************************************************************************/
/*! exports provided: isoSpecifier, default */
/***/ (function(module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"isoSpecifier\", function() { return isoSpecifier; });\n/* harmony import */ var _defaultLocale_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./defaultLocale.js */ \"./node_modules/vega-functions/node_modules/d3-time-format/src/defaultLocale.js\");\n\n\nvar isoSpecifier = \"%Y-%m-%dT%H:%M:%S.%LZ\";\n\nfunction formatIsoNative(date) {\n  return date.toISOString();\n}\n\nvar formatIso = Date.prototype.toISOString\n    ? formatIsoNative\n    : Object(_defaultLocale_js__WEBPACK_IMPORTED_MODULE_0__[\"utcFormat\"])(isoSpecifier);\n\n/* harmony default export */ __webpack_exports__[\"default\"] = (formatIso);\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvdmVnYS1mdW5jdGlvbnMvbm9kZV9tb2R1bGVzL2QzLXRpbWUtZm9ybWF0L3NyYy9pc29Gb3JtYXQuanMuanMiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvdmVnYS1mdW5jdGlvbnMvbm9kZV9tb2R1bGVzL2QzLXRpbWUtZm9ybWF0L3NyYy9pc29Gb3JtYXQuanM/YjExOSJdLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge3V0Y0Zvcm1hdH0gZnJvbSBcIi4vZGVmYXVsdExvY2FsZS5qc1wiO1xuXG5leHBvcnQgdmFyIGlzb1NwZWNpZmllciA9IFwiJVktJW0tJWRUJUg6JU06JVMuJUxaXCI7XG5cbmZ1bmN0aW9uIGZvcm1hdElzb05hdGl2ZShkYXRlKSB7XG4gIHJldHVybiBkYXRlLnRvSVNPU3RyaW5nKCk7XG59XG5cbnZhciBmb3JtYXRJc28gPSBEYXRlLnByb3RvdHlwZS50b0lTT1N0cmluZ1xuICAgID8gZm9ybWF0SXNvTmF0aXZlXG4gICAgOiB1dGNGb3JtYXQoaXNvU3BlY2lmaWVyKTtcblxuZXhwb3J0IGRlZmF1bHQgZm9ybWF0SXNvO1xuIl0sIm1hcHBpbmdzIjoiQUFBQTtBQUFBO0FBQUE7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTsiLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///./node_modules/vega-functions/node_modules/d3-time-format/src/isoFormat.js\n");

/***/ }),

/***/ "./node_modules/vega-functions/node_modules/d3-time-format/src/isoParse.js":
/*!*********************************************************************************!*\
  !*** ./node_modules/vega-functions/node_modules/d3-time-format/src/isoParse.js ***!
  \*********************************************************************************/
/*! exports provided: default */
/***/ (function(module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _isoFormat_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./isoFormat.js */ \"./node_modules/vega-functions/node_modules/d3-time-format/src/isoFormat.js\");\n/* harmony import */ var _defaultLocale_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./defaultLocale.js */ \"./node_modules/vega-functions/node_modules/d3-time-format/src/defaultLocale.js\");\n\n\n\nfunction parseIsoNative(string) {\n  var date = new Date(string);\n  return isNaN(date) ? null : date;\n}\n\nvar parseIso = +new Date(\"2000-01-01T00:00:00.000Z\")\n    ? parseIsoNative\n    : Object(_defaultLocale_js__WEBPACK_IMPORTED_MODULE_1__[\"utcParse\"])(_isoFormat_js__WEBPACK_IMPORTED_MODULE_0__[\"isoSpecifier\"]);\n\n/* harmony default export */ __webpack_exports__[\"default\"] = (parseIso);\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvdmVnYS1mdW5jdGlvbnMvbm9kZV9tb2R1bGVzL2QzLXRpbWUtZm9ybWF0L3NyYy9pc29QYXJzZS5qcy5qcyIsInNvdXJjZXMiOlsid2VicGFjazovLy8uL25vZGVfbW9kdWxlcy92ZWdhLWZ1bmN0aW9ucy9ub2RlX21vZHVsZXMvZDMtdGltZS1mb3JtYXQvc3JjL2lzb1BhcnNlLmpzP2I1MjkiXSwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtpc29TcGVjaWZpZXJ9IGZyb20gXCIuL2lzb0Zvcm1hdC5qc1wiO1xuaW1wb3J0IHt1dGNQYXJzZX0gZnJvbSBcIi4vZGVmYXVsdExvY2FsZS5qc1wiO1xuXG5mdW5jdGlvbiBwYXJzZUlzb05hdGl2ZShzdHJpbmcpIHtcbiAgdmFyIGRhdGUgPSBuZXcgRGF0ZShzdHJpbmcpO1xuICByZXR1cm4gaXNOYU4oZGF0ZSkgPyBudWxsIDogZGF0ZTtcbn1cblxudmFyIHBhcnNlSXNvID0gK25ldyBEYXRlKFwiMjAwMC0wMS0wMVQwMDowMDowMC4wMDBaXCIpXG4gICAgPyBwYXJzZUlzb05hdGl2ZVxuICAgIDogdXRjUGFyc2UoaXNvU3BlY2lmaWVyKTtcblxuZXhwb3J0IGRlZmF1bHQgcGFyc2VJc287XG4iXSwibWFwcGluZ3MiOiJBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOyIsInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///./node_modules/vega-functions/node_modules/d3-time-format/src/isoParse.js\n");

/***/ }),

/***/ "./node_modules/vega-functions/node_modules/d3-time-format/src/locale.js":
/*!*******************************************************************************!*\
  !*** ./node_modules/vega-functions/node_modules/d3-time-format/src/locale.js ***!
  \*******************************************************************************/
/*! exports provided: default */
/***/ (function(module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"default\", function() { return formatLocale; });\n/* harmony import */ var d3_time__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! d3-time */ \"./node_modules/vega-functions/node_modules/d3-time/src/index.js\");\n\n\nfunction localDate(d) {\n  if (0 <= d.y && d.y < 100) {\n    var date = new Date(-1, d.m, d.d, d.H, d.M, d.S, d.L);\n    date.setFullYear(d.y);\n    return date;\n  }\n  return new Date(d.y, d.m, d.d, d.H, d.M, d.S, d.L);\n}\n\nfunction utcDate(d) {\n  if (0 <= d.y && d.y < 100) {\n    var date = new Date(Date.UTC(-1, d.m, d.d, d.H, d.M, d.S, d.L));\n    date.setUTCFullYear(d.y);\n    return date;\n  }\n  return new Date(Date.UTC(d.y, d.m, d.d, d.H, d.M, d.S, d.L));\n}\n\nfunction newDate(y, m, d) {\n  return {y: y, m: m, d: d, H: 0, M: 0, S: 0, L: 0};\n}\n\nfunction formatLocale(locale) {\n  var locale_dateTime = locale.dateTime,\n      locale_date = locale.date,\n      locale_time = locale.time,\n      locale_periods = locale.periods,\n      locale_weekdays = locale.days,\n      locale_shortWeekdays = locale.shortDays,\n      locale_months = locale.months,\n      locale_shortMonths = locale.shortMonths;\n\n  var periodRe = formatRe(locale_periods),\n      periodLookup = formatLookup(locale_periods),\n      weekdayRe = formatRe(locale_weekdays),\n      weekdayLookup = formatLookup(locale_weekdays),\n      shortWeekdayRe = formatRe(locale_shortWeekdays),\n      shortWeekdayLookup = formatLookup(locale_shortWeekdays),\n      monthRe = formatRe(locale_months),\n      monthLookup = formatLookup(locale_months),\n      shortMonthRe = formatRe(locale_shortMonths),\n      shortMonthLookup = formatLookup(locale_shortMonths);\n\n  var formats = {\n    \"a\": formatShortWeekday,\n    \"A\": formatWeekday,\n    \"b\": formatShortMonth,\n    \"B\": formatMonth,\n    \"c\": null,\n    \"d\": formatDayOfMonth,\n    \"e\": formatDayOfMonth,\n    \"f\": formatMicroseconds,\n    \"g\": formatYearISO,\n    \"G\": formatFullYearISO,\n    \"H\": formatHour24,\n    \"I\": formatHour12,\n    \"j\": formatDayOfYear,\n    \"L\": formatMilliseconds,\n    \"m\": formatMonthNumber,\n    \"M\": formatMinutes,\n    \"p\": formatPeriod,\n    \"q\": formatQuarter,\n    \"Q\": formatUnixTimestamp,\n    \"s\": formatUnixTimestampSeconds,\n    \"S\": formatSeconds,\n    \"u\": formatWeekdayNumberMonday,\n    \"U\": formatWeekNumberSunday,\n    \"V\": formatWeekNumberISO,\n    \"w\": formatWeekdayNumberSunday,\n    \"W\": formatWeekNumberMonday,\n    \"x\": null,\n    \"X\": null,\n    \"y\": formatYear,\n    \"Y\": formatFullYear,\n    \"Z\": formatZone,\n    \"%\": formatLiteralPercent\n  };\n\n  var utcFormats = {\n    \"a\": formatUTCShortWeekday,\n    \"A\": formatUTCWeekday,\n    \"b\": formatUTCShortMonth,\n    \"B\": formatUTCMonth,\n    \"c\": null,\n    \"d\": formatUTCDayOfMonth,\n    \"e\": formatUTCDayOfMonth,\n    \"f\": formatUTCMicroseconds,\n    \"g\": formatUTCYearISO,\n    \"G\": formatUTCFullYearISO,\n    \"H\": formatUTCHour24,\n    \"I\": formatUTCHour12,\n    \"j\": formatUTCDayOfYear,\n    \"L\": formatUTCMilliseconds,\n    \"m\": formatUTCMonthNumber,\n    \"M\": formatUTCMinutes,\n    \"p\": formatUTCPeriod,\n    \"q\": formatUTCQuarter,\n    \"Q\": formatUnixTimestamp,\n    \"s\": formatUnixTimestampSeconds,\n    \"S\": formatUTCSeconds,\n    \"u\": formatUTCWeekdayNumberMonday,\n    \"U\": formatUTCWeekNumberSunday,\n    \"V\": formatUTCWeekNumberISO,\n    \"w\": formatUTCWeekdayNumberSunday,\n    \"W\": formatUTCWeekNumberMonday,\n    \"x\": null,\n    \"X\": null,\n    \"y\": formatUTCYear,\n    \"Y\": formatUTCFullYear,\n    \"Z\": formatUTCZone,\n    \"%\": formatLiteralPercent\n  };\n\n  var parses = {\n    \"a\": parseShortWeekday,\n    \"A\": parseWeekday,\n    \"b\": parseShortMonth,\n    \"B\": parseMonth,\n    \"c\": parseLocaleDateTime,\n    \"d\": parseDayOfMonth,\n    \"e\": parseDayOfMonth,\n    \"f\": parseMicroseconds,\n    \"g\": parseYear,\n    \"G\": parseFullYear,\n    \"H\": parseHour24,\n    \"I\": parseHour24,\n    \"j\": parseDayOfYear,\n    \"L\": parseMilliseconds,\n    \"m\": parseMonthNumber,\n    \"M\": parseMinutes,\n    \"p\": parsePeriod,\n    \"q\": parseQuarter,\n    \"Q\": parseUnixTimestamp,\n    \"s\": parseUnixTimestampSeconds,\n    \"S\": parseSeconds,\n    \"u\": parseWeekdayNumberMonday,\n    \"U\": parseWeekNumberSunday,\n    \"V\": parseWeekNumberISO,\n    \"w\": parseWeekdayNumberSunday,\n    \"W\": parseWeekNumberMonday,\n    \"x\": parseLocaleDate,\n    \"X\": parseLocaleTime,\n    \"y\": parseYear,\n    \"Y\": parseFullYear,\n    \"Z\": parseZone,\n    \"%\": parseLiteralPercent\n  };\n\n  // These recursive directive definitions must be deferred.\n  formats.x = newFormat(locale_date, formats);\n  formats.X = newFormat(locale_time, formats);\n  formats.c = newFormat(locale_dateTime, formats);\n  utcFormats.x = newFormat(locale_date, utcFormats);\n  utcFormats.X = newFormat(locale_time, utcFormats);\n  utcFormats.c = newFormat(locale_dateTime, utcFormats);\n\n  function newFormat(specifier, formats) {\n    return function(date) {\n      var string = [],\n          i = -1,\n          j = 0,\n          n = specifier.length,\n          c,\n          pad,\n          format;\n\n      if (!(date instanceof Date)) date = new Date(+date);\n\n      while (++i < n) {\n        if (specifier.charCodeAt(i) === 37) {\n          string.push(specifier.slice(j, i));\n          if ((pad = pads[c = specifier.charAt(++i)]) != null) c = specifier.charAt(++i);\n          else pad = c === \"e\" ? \" \" : \"0\";\n          if (format = formats[c]) c = format(date, pad);\n          string.push(c);\n          j = i + 1;\n        }\n      }\n\n      string.push(specifier.slice(j, i));\n      return string.join(\"\");\n    };\n  }\n\n  function newParse(specifier, Z) {\n    return function(string) {\n      var d = newDate(1900, undefined, 1),\n          i = parseSpecifier(d, specifier, string += \"\", 0),\n          week, day;\n      if (i != string.length) return null;\n\n      // If a UNIX timestamp is specified, return it.\n      if (\"Q\" in d) return new Date(d.Q);\n      if (\"s\" in d) return new Date(d.s * 1000 + (\"L\" in d ? d.L : 0));\n\n      // If this is utcParse, never use the local timezone.\n      if (Z && !(\"Z\" in d)) d.Z = 0;\n\n      // The am-pm flag is 0 for AM, and 1 for PM.\n      if (\"p\" in d) d.H = d.H % 12 + d.p * 12;\n\n      // If the month was not specified, inherit from the quarter.\n      if (d.m === undefined) d.m = \"q\" in d ? d.q : 0;\n\n      // Convert day-of-week and week-of-year to day-of-year.\n      if (\"V\" in d) {\n        if (d.V < 1 || d.V > 53) return null;\n        if (!(\"w\" in d)) d.w = 1;\n        if (\"Z\" in d) {\n          week = utcDate(newDate(d.y, 0, 1)), day = week.getUTCDay();\n          week = day > 4 || day === 0 ? d3_time__WEBPACK_IMPORTED_MODULE_0__[\"utcMonday\"].ceil(week) : Object(d3_time__WEBPACK_IMPORTED_MODULE_0__[\"utcMonday\"])(week);\n          week = d3_time__WEBPACK_IMPORTED_MODULE_0__[\"utcDay\"].offset(week, (d.V - 1) * 7);\n          d.y = week.getUTCFullYear();\n          d.m = week.getUTCMonth();\n          d.d = week.getUTCDate() + (d.w + 6) % 7;\n        } else {\n          week = localDate(newDate(d.y, 0, 1)), day = week.getDay();\n          week = day > 4 || day === 0 ? d3_time__WEBPACK_IMPORTED_MODULE_0__[\"timeMonday\"].ceil(week) : Object(d3_time__WEBPACK_IMPORTED_MODULE_0__[\"timeMonday\"])(week);\n          week = d3_time__WEBPACK_IMPORTED_MODULE_0__[\"timeDay\"].offset(week, (d.V - 1) * 7);\n          d.y = week.getFullYear();\n          d.m = week.getMonth();\n          d.d = week.getDate() + (d.w + 6) % 7;\n        }\n      } else if (\"W\" in d || \"U\" in d) {\n        if (!(\"w\" in d)) d.w = \"u\" in d ? d.u % 7 : \"W\" in d ? 1 : 0;\n        day = \"Z\" in d ? utcDate(newDate(d.y, 0, 1)).getUTCDay() : localDate(newDate(d.y, 0, 1)).getDay();\n        d.m = 0;\n        d.d = \"W\" in d ? (d.w + 6) % 7 + d.W * 7 - (day + 5) % 7 : d.w + d.U * 7 - (day + 6) % 7;\n      }\n\n      // If a time zone is specified, all fields are interpreted as UTC and then\n      // offset according to the specified time zone.\n      if (\"Z\" in d) {\n        d.H += d.Z / 100 | 0;\n        d.M += d.Z % 100;\n        return utcDate(d);\n      }\n\n      // Otherwise, all fields are in local time.\n      return localDate(d);\n    };\n  }\n\n  function parseSpecifier(d, specifier, string, j) {\n    var i = 0,\n        n = specifier.length,\n        m = string.length,\n        c,\n        parse;\n\n    while (i < n) {\n      if (j >= m) return -1;\n      c = specifier.charCodeAt(i++);\n      if (c === 37) {\n        c = specifier.charAt(i++);\n        parse = parses[c in pads ? specifier.charAt(i++) : c];\n        if (!parse || ((j = parse(d, string, j)) < 0)) return -1;\n      } else if (c != string.charCodeAt(j++)) {\n        return -1;\n      }\n    }\n\n    return j;\n  }\n\n  function parsePeriod(d, string, i) {\n    var n = periodRe.exec(string.slice(i));\n    return n ? (d.p = periodLookup.get(n[0].toLowerCase()), i + n[0].length) : -1;\n  }\n\n  function parseShortWeekday(d, string, i) {\n    var n = shortWeekdayRe.exec(string.slice(i));\n    return n ? (d.w = shortWeekdayLookup.get(n[0].toLowerCase()), i + n[0].length) : -1;\n  }\n\n  function parseWeekday(d, string, i) {\n    var n = weekdayRe.exec(string.slice(i));\n    return n ? (d.w = weekdayLookup.get(n[0].toLowerCase()), i + n[0].length) : -1;\n  }\n\n  function parseShortMonth(d, string, i) {\n    var n = shortMonthRe.exec(string.slice(i));\n    return n ? (d.m = shortMonthLookup.get(n[0].toLowerCase()), i + n[0].length) : -1;\n  }\n\n  function parseMonth(d, string, i) {\n    var n = monthRe.exec(string.slice(i));\n    return n ? (d.m = monthLookup.get(n[0].toLowerCase()), i + n[0].length) : -1;\n  }\n\n  function parseLocaleDateTime(d, string, i) {\n    return parseSpecifier(d, locale_dateTime, string, i);\n  }\n\n  function parseLocaleDate(d, string, i) {\n    return parseSpecifier(d, locale_date, string, i);\n  }\n\n  function parseLocaleTime(d, string, i) {\n    return parseSpecifier(d, locale_time, string, i);\n  }\n\n  function formatShortWeekday(d) {\n    return locale_shortWeekdays[d.getDay()];\n  }\n\n  function formatWeekday(d) {\n    return locale_weekdays[d.getDay()];\n  }\n\n  function formatShortMonth(d) {\n    return locale_shortMonths[d.getMonth()];\n  }\n\n  function formatMonth(d) {\n    return locale_months[d.getMonth()];\n  }\n\n  function formatPeriod(d) {\n    return locale_periods[+(d.getHours() >= 12)];\n  }\n\n  function formatQuarter(d) {\n    return 1 + ~~(d.getMonth() / 3);\n  }\n\n  function formatUTCShortWeekday(d) {\n    return locale_shortWeekdays[d.getUTCDay()];\n  }\n\n  function formatUTCWeekday(d) {\n    return locale_weekdays[d.getUTCDay()];\n  }\n\n  function formatUTCShortMonth(d) {\n    return locale_shortMonths[d.getUTCMonth()];\n  }\n\n  function formatUTCMonth(d) {\n    return locale_months[d.getUTCMonth()];\n  }\n\n  function formatUTCPeriod(d) {\n    return locale_periods[+(d.getUTCHours() >= 12)];\n  }\n\n  function formatUTCQuarter(d) {\n    return 1 + ~~(d.getUTCMonth() / 3);\n  }\n\n  return {\n    format: function(specifier) {\n      var f = newFormat(specifier += \"\", formats);\n      f.toString = function() { return specifier; };\n      return f;\n    },\n    parse: function(specifier) {\n      var p = newParse(specifier += \"\", false);\n      p.toString = function() { return specifier; };\n      return p;\n    },\n    utcFormat: function(specifier) {\n      var f = newFormat(specifier += \"\", utcFormats);\n      f.toString = function() { return specifier; };\n      return f;\n    },\n    utcParse: function(specifier) {\n      var p = newParse(specifier += \"\", true);\n      p.toString = function() { return specifier; };\n      return p;\n    }\n  };\n}\n\nvar pads = {\"-\": \"\", \"_\": \" \", \"0\": \"0\"},\n    numberRe = /^\\s*\\d+/, // note: ignores next directive\n    percentRe = /^%/,\n    requoteRe = /[\\\\^$*+?|[\\]().{}]/g;\n\nfunction pad(value, fill, width) {\n  var sign = value < 0 ? \"-\" : \"\",\n      string = (sign ? -value : value) + \"\",\n      length = string.length;\n  return sign + (length < width ? new Array(width - length + 1).join(fill) + string : string);\n}\n\nfunction requote(s) {\n  return s.replace(requoteRe, \"\\\\$&\");\n}\n\nfunction formatRe(names) {\n  return new RegExp(\"^(?:\" + names.map(requote).join(\"|\") + \")\", \"i\");\n}\n\nfunction formatLookup(names) {\n  return new Map(names.map((name, i) => [name.toLowerCase(), i]));\n}\n\nfunction parseWeekdayNumberSunday(d, string, i) {\n  var n = numberRe.exec(string.slice(i, i + 1));\n  return n ? (d.w = +n[0], i + n[0].length) : -1;\n}\n\nfunction parseWeekdayNumberMonday(d, string, i) {\n  var n = numberRe.exec(string.slice(i, i + 1));\n  return n ? (d.u = +n[0], i + n[0].length) : -1;\n}\n\nfunction parseWeekNumberSunday(d, string, i) {\n  var n = numberRe.exec(string.slice(i, i + 2));\n  return n ? (d.U = +n[0], i + n[0].length) : -1;\n}\n\nfunction parseWeekNumberISO(d, string, i) {\n  var n = numberRe.exec(string.slice(i, i + 2));\n  return n ? (d.V = +n[0], i + n[0].length) : -1;\n}\n\nfunction parseWeekNumberMonday(d, string, i) {\n  var n = numberRe.exec(string.slice(i, i + 2));\n  return n ? (d.W = +n[0], i + n[0].length) : -1;\n}\n\nfunction parseFullYear(d, string, i) {\n  var n = numberRe.exec(string.slice(i, i + 4));\n  return n ? (d.y = +n[0], i + n[0].length) : -1;\n}\n\nfunction parseYear(d, string, i) {\n  var n = numberRe.exec(string.slice(i, i + 2));\n  return n ? (d.y = +n[0] + (+n[0] > 68 ? 1900 : 2000), i + n[0].length) : -1;\n}\n\nfunction parseZone(d, string, i) {\n  var n = /^(Z)|([+-]\\d\\d)(?::?(\\d\\d))?/.exec(string.slice(i, i + 6));\n  return n ? (d.Z = n[1] ? 0 : -(n[2] + (n[3] || \"00\")), i + n[0].length) : -1;\n}\n\nfunction parseQuarter(d, string, i) {\n  var n = numberRe.exec(string.slice(i, i + 1));\n  return n ? (d.q = n[0] * 3 - 3, i + n[0].length) : -1;\n}\n\nfunction parseMonthNumber(d, string, i) {\n  var n = numberRe.exec(string.slice(i, i + 2));\n  return n ? (d.m = n[0] - 1, i + n[0].length) : -1;\n}\n\nfunction parseDayOfMonth(d, string, i) {\n  var n = numberRe.exec(string.slice(i, i + 2));\n  return n ? (d.d = +n[0], i + n[0].length) : -1;\n}\n\nfunction parseDayOfYear(d, string, i) {\n  var n = numberRe.exec(string.slice(i, i + 3));\n  return n ? (d.m = 0, d.d = +n[0], i + n[0].length) : -1;\n}\n\nfunction parseHour24(d, string, i) {\n  var n = numberRe.exec(string.slice(i, i + 2));\n  return n ? (d.H = +n[0], i + n[0].length) : -1;\n}\n\nfunction parseMinutes(d, string, i) {\n  var n = numberRe.exec(string.slice(i, i + 2));\n  return n ? (d.M = +n[0], i + n[0].length) : -1;\n}\n\nfunction parseSeconds(d, string, i) {\n  var n = numberRe.exec(string.slice(i, i + 2));\n  return n ? (d.S = +n[0], i + n[0].length) : -1;\n}\n\nfunction parseMilliseconds(d, string, i) {\n  var n = numberRe.exec(string.slice(i, i + 3));\n  return n ? (d.L = +n[0], i + n[0].length) : -1;\n}\n\nfunction parseMicroseconds(d, string, i) {\n  var n = numberRe.exec(string.slice(i, i + 6));\n  return n ? (d.L = Math.floor(n[0] / 1000), i + n[0].length) : -1;\n}\n\nfunction parseLiteralPercent(d, string, i) {\n  var n = percentRe.exec(string.slice(i, i + 1));\n  return n ? i + n[0].length : -1;\n}\n\nfunction parseUnixTimestamp(d, string, i) {\n  var n = numberRe.exec(string.slice(i));\n  return n ? (d.Q = +n[0], i + n[0].length) : -1;\n}\n\nfunction parseUnixTimestampSeconds(d, string, i) {\n  var n = numberRe.exec(string.slice(i));\n  return n ? (d.s = +n[0], i + n[0].length) : -1;\n}\n\nfunction formatDayOfMonth(d, p) {\n  return pad(d.getDate(), p, 2);\n}\n\nfunction formatHour24(d, p) {\n  return pad(d.getHours(), p, 2);\n}\n\nfunction formatHour12(d, p) {\n  return pad(d.getHours() % 12 || 12, p, 2);\n}\n\nfunction formatDayOfYear(d, p) {\n  return pad(1 + d3_time__WEBPACK_IMPORTED_MODULE_0__[\"timeDay\"].count(Object(d3_time__WEBPACK_IMPORTED_MODULE_0__[\"timeYear\"])(d), d), p, 3);\n}\n\nfunction formatMilliseconds(d, p) {\n  return pad(d.getMilliseconds(), p, 3);\n}\n\nfunction formatMicroseconds(d, p) {\n  return formatMilliseconds(d, p) + \"000\";\n}\n\nfunction formatMonthNumber(d, p) {\n  return pad(d.getMonth() + 1, p, 2);\n}\n\nfunction formatMinutes(d, p) {\n  return pad(d.getMinutes(), p, 2);\n}\n\nfunction formatSeconds(d, p) {\n  return pad(d.getSeconds(), p, 2);\n}\n\nfunction formatWeekdayNumberMonday(d) {\n  var day = d.getDay();\n  return day === 0 ? 7 : day;\n}\n\nfunction formatWeekNumberSunday(d, p) {\n  return pad(d3_time__WEBPACK_IMPORTED_MODULE_0__[\"timeSunday\"].count(Object(d3_time__WEBPACK_IMPORTED_MODULE_0__[\"timeYear\"])(d) - 1, d), p, 2);\n}\n\nfunction dISO(d) {\n  var day = d.getDay();\n  return (day >= 4 || day === 0) ? Object(d3_time__WEBPACK_IMPORTED_MODULE_0__[\"timeThursday\"])(d) : d3_time__WEBPACK_IMPORTED_MODULE_0__[\"timeThursday\"].ceil(d);\n}\n\nfunction formatWeekNumberISO(d, p) {\n  d = dISO(d);\n  return pad(d3_time__WEBPACK_IMPORTED_MODULE_0__[\"timeThursday\"].count(Object(d3_time__WEBPACK_IMPORTED_MODULE_0__[\"timeYear\"])(d), d) + (Object(d3_time__WEBPACK_IMPORTED_MODULE_0__[\"timeYear\"])(d).getDay() === 4), p, 2);\n}\n\nfunction formatWeekdayNumberSunday(d) {\n  return d.getDay();\n}\n\nfunction formatWeekNumberMonday(d, p) {\n  return pad(d3_time__WEBPACK_IMPORTED_MODULE_0__[\"timeMonday\"].count(Object(d3_time__WEBPACK_IMPORTED_MODULE_0__[\"timeYear\"])(d) - 1, d), p, 2);\n}\n\nfunction formatYear(d, p) {\n  return pad(d.getFullYear() % 100, p, 2);\n}\n\nfunction formatYearISO(d, p) {\n  d = dISO(d);\n  return pad(d.getFullYear() % 100, p, 2);\n}\n\nfunction formatFullYear(d, p) {\n  return pad(d.getFullYear() % 10000, p, 4);\n}\n\nfunction formatFullYearISO(d, p) {\n  var day = d.getDay();\n  d = (day >= 4 || day === 0) ? Object(d3_time__WEBPACK_IMPORTED_MODULE_0__[\"timeThursday\"])(d) : d3_time__WEBPACK_IMPORTED_MODULE_0__[\"timeThursday\"].ceil(d);\n  return pad(d.getFullYear() % 10000, p, 4);\n}\n\nfunction formatZone(d) {\n  var z = d.getTimezoneOffset();\n  return (z > 0 ? \"-\" : (z *= -1, \"+\"))\n      + pad(z / 60 | 0, \"0\", 2)\n      + pad(z % 60, \"0\", 2);\n}\n\nfunction formatUTCDayOfMonth(d, p) {\n  return pad(d.getUTCDate(), p, 2);\n}\n\nfunction formatUTCHour24(d, p) {\n  return pad(d.getUTCHours(), p, 2);\n}\n\nfunction formatUTCHour12(d, p) {\n  return pad(d.getUTCHours() % 12 || 12, p, 2);\n}\n\nfunction formatUTCDayOfYear(d, p) {\n  return pad(1 + d3_time__WEBPACK_IMPORTED_MODULE_0__[\"utcDay\"].count(Object(d3_time__WEBPACK_IMPORTED_MODULE_0__[\"utcYear\"])(d), d), p, 3);\n}\n\nfunction formatUTCMilliseconds(d, p) {\n  return pad(d.getUTCMilliseconds(), p, 3);\n}\n\nfunction formatUTCMicroseconds(d, p) {\n  return formatUTCMilliseconds(d, p) + \"000\";\n}\n\nfunction formatUTCMonthNumber(d, p) {\n  return pad(d.getUTCMonth() + 1, p, 2);\n}\n\nfunction formatUTCMinutes(d, p) {\n  return pad(d.getUTCMinutes(), p, 2);\n}\n\nfunction formatUTCSeconds(d, p) {\n  return pad(d.getUTCSeconds(), p, 2);\n}\n\nfunction formatUTCWeekdayNumberMonday(d) {\n  var dow = d.getUTCDay();\n  return dow === 0 ? 7 : dow;\n}\n\nfunction formatUTCWeekNumberSunday(d, p) {\n  return pad(d3_time__WEBPACK_IMPORTED_MODULE_0__[\"utcSunday\"].count(Object(d3_time__WEBPACK_IMPORTED_MODULE_0__[\"utcYear\"])(d) - 1, d), p, 2);\n}\n\nfunction UTCdISO(d) {\n  var day = d.getUTCDay();\n  return (day >= 4 || day === 0) ? Object(d3_time__WEBPACK_IMPORTED_MODULE_0__[\"utcThursday\"])(d) : d3_time__WEBPACK_IMPORTED_MODULE_0__[\"utcThursday\"].ceil(d);\n}\n\nfunction formatUTCWeekNumberISO(d, p) {\n  d = UTCdISO(d);\n  return pad(d3_time__WEBPACK_IMPORTED_MODULE_0__[\"utcThursday\"].count(Object(d3_time__WEBPACK_IMPORTED_MODULE_0__[\"utcYear\"])(d), d) + (Object(d3_time__WEBPACK_IMPORTED_MODULE_0__[\"utcYear\"])(d).getUTCDay() === 4), p, 2);\n}\n\nfunction formatUTCWeekdayNumberSunday(d) {\n  return d.getUTCDay();\n}\n\nfunction formatUTCWeekNumberMonday(d, p) {\n  return pad(d3_time__WEBPACK_IMPORTED_MODULE_0__[\"utcMonday\"].count(Object(d3_time__WEBPACK_IMPORTED_MODULE_0__[\"utcYear\"])(d) - 1, d), p, 2);\n}\n\nfunction formatUTCYear(d, p) {\n  return pad(d.getUTCFullYear() % 100, p, 2);\n}\n\nfunction formatUTCYearISO(d, p) {\n  d = UTCdISO(d);\n  return pad(d.getUTCFullYear() % 100, p, 2);\n}\n\nfunction formatUTCFullYear(d, p) {\n  return pad(d.getUTCFullYear() % 10000, p, 4);\n}\n\nfunction formatUTCFullYearISO(d, p) {\n  var day = d.getUTCDay();\n  d = (day >= 4 || day === 0) ? Object(d3_time__WEBPACK_IMPORTED_MODULE_0__[\"utcThursday\"])(d) : d3_time__WEBPACK_IMPORTED_MODULE_0__[\"utcThursday\"].ceil(d);\n  return pad(d.getUTCFullYear() % 10000, p, 4);\n}\n\nfunction formatUTCZone() {\n  return \"+0000\";\n}\n\nfunction formatLiteralPercent() {\n  return \"%\";\n}\n\nfunction formatUnixTimestamp(d) {\n  return +d;\n}\n\nfunction formatUnixTimestampSeconds(d) {\n  return Math.floor(+d / 1000);\n}\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,[encoded data, 31032 characters]\n//# sourceURL=webpack-internal:///./node_modules/vega-functions/node_modules/d3-time-format/src/locale.js\n");

/***/ }),

/***/ "./node_modules/vega-functions/node_modules/d3-time/src/day.js":
/*!*********************************************************************!*\
  !*** ./node_modules/vega-functions/node_modules/d3-time/src/day.js ***!
  \*********************************************************************/
/*! exports provided: default, days */
/***/ (function(module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"days\", function() { return days; });\n/* harmony import */ var _interval_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./interval.js */ \"./node_modules/vega-functions/node_modules/d3-time/src/interval.js\");\n/* harmony import */ var _duration_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./duration.js */ \"./node_modules/vega-functions/node_modules/d3-time/src/duration.js\");\n\n\n\nvar day = Object(_interval_js__WEBPACK_IMPORTED_MODULE_0__[\"default\"])(\n  date => date.setHours(0, 0, 0, 0),\n  (date, step) => date.setDate(date.getDate() + step),\n  (start, end) => (end - start - (end.getTimezoneOffset() - start.getTimezoneOffset()) * _duration_js__WEBPACK_IMPORTED_MODULE_1__[\"durationMinute\"]) / _duration_js__WEBPACK_IMPORTED_MODULE_1__[\"durationDay\"],\n  date => date.getDate() - 1\n);\n\n/* harmony default export */ __webpack_exports__[\"default\"] = (day);\nvar days = day.range;\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvdmVnYS1mdW5jdGlvbnMvbm9kZV9tb2R1bGVzL2QzLXRpbWUvc3JjL2RheS5qcy5qcyIsInNvdXJjZXMiOlsid2VicGFjazovLy8uL25vZGVfbW9kdWxlcy92ZWdhLWZ1bmN0aW9ucy9ub2RlX21vZHVsZXMvZDMtdGltZS9zcmMvZGF5LmpzPzY4YzYiXSwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IGludGVydmFsIGZyb20gXCIuL2ludGVydmFsLmpzXCI7XG5pbXBvcnQge2R1cmF0aW9uRGF5LCBkdXJhdGlvbk1pbnV0ZX0gZnJvbSBcIi4vZHVyYXRpb24uanNcIjtcblxudmFyIGRheSA9IGludGVydmFsKFxuICBkYXRlID0+IGRhdGUuc2V0SG91cnMoMCwgMCwgMCwgMCksXG4gIChkYXRlLCBzdGVwKSA9PiBkYXRlLnNldERhdGUoZGF0ZS5nZXREYXRlKCkgKyBzdGVwKSxcbiAgKHN0YXJ0LCBlbmQpID0+IChlbmQgLSBzdGFydCAtIChlbmQuZ2V0VGltZXpvbmVPZmZzZXQoKSAtIHN0YXJ0LmdldFRpbWV6b25lT2Zmc2V0KCkpICogZHVyYXRpb25NaW51dGUpIC8gZHVyYXRpb25EYXksXG4gIGRhdGUgPT4gZGF0ZS5nZXREYXRlKCkgLSAxXG4pO1xuXG5leHBvcnQgZGVmYXVsdCBkYXk7XG5leHBvcnQgdmFyIGRheXMgPSBkYXkucmFuZ2U7XG4iXSwibWFwcGluZ3MiOiJBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOyIsInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///./node_modules/vega-functions/node_modules/d3-time/src/day.js\n");

/***/ }),

/***/ "./node_modules/vega-functions/node_modules/d3-time/src/duration.js":
/*!**************************************************************************!*\
  !*** ./node_modules/vega-functions/node_modules/d3-time/src/duration.js ***!
  \**************************************************************************/
/*! exports provided: durationSecond, durationMinute, durationHour, durationDay, durationWeek, durationMonth, durationYear */
/***/ (function(module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"durationSecond\", function() { return durationSecond; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"durationMinute\", function() { return durationMinute; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"durationHour\", function() { return durationHour; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"durationDay\", function() { return durationDay; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"durationWeek\", function() { return durationWeek; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"durationMonth\", function() { return durationMonth; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"durationYear\", function() { return durationYear; });\nconst durationSecond = 1000;\nconst durationMinute = durationSecond * 60;\nconst durationHour = durationMinute * 60;\nconst durationDay = durationHour * 24;\nconst durationWeek = durationDay * 7;\nconst durationMonth = durationDay * 30;\nconst durationYear = durationDay * 365;\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvdmVnYS1mdW5jdGlvbnMvbm9kZV9tb2R1bGVzL2QzLXRpbWUvc3JjL2R1cmF0aW9uLmpzLmpzIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL3ZlZ2EtZnVuY3Rpb25zL25vZGVfbW9kdWxlcy9kMy10aW1lL3NyYy9kdXJhdGlvbi5qcz9kZmRiIl0sInNvdXJjZXNDb250ZW50IjpbImV4cG9ydCBjb25zdCBkdXJhdGlvblNlY29uZCA9IDEwMDA7XG5leHBvcnQgY29uc3QgZHVyYXRpb25NaW51dGUgPSBkdXJhdGlvblNlY29uZCAqIDYwO1xuZXhwb3J0IGNvbnN0IGR1cmF0aW9uSG91ciA9IGR1cmF0aW9uTWludXRlICogNjA7XG5leHBvcnQgY29uc3QgZHVyYXRpb25EYXkgPSBkdXJhdGlvbkhvdXIgKiAyNDtcbmV4cG9ydCBjb25zdCBkdXJhdGlvbldlZWsgPSBkdXJhdGlvbkRheSAqIDc7XG5leHBvcnQgY29uc3QgZHVyYXRpb25Nb250aCA9IGR1cmF0aW9uRGF5ICogMzA7XG5leHBvcnQgY29uc3QgZHVyYXRpb25ZZWFyID0gZHVyYXRpb25EYXkgKiAzNjU7XG4iXSwibWFwcGluZ3MiOiJBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTsiLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///./node_modules/vega-functions/node_modules/d3-time/src/duration.js\n");

/***/ }),

/***/ "./node_modules/vega-functions/node_modules/d3-time/src/hour.js":
/*!**********************************************************************!*\
  !*** ./node_modules/vega-functions/node_modules/d3-time/src/hour.js ***!
  \**********************************************************************/
/*! exports provided: default, hours */
/***/ (function(module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"hours\", function() { return hours; });\n/* harmony import */ var _interval_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./interval.js */ \"./node_modules/vega-functions/node_modules/d3-time/src/interval.js\");\n/* harmony import */ var _duration_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./duration.js */ \"./node_modules/vega-functions/node_modules/d3-time/src/duration.js\");\n\n\n\nvar hour = Object(_interval_js__WEBPACK_IMPORTED_MODULE_0__[\"default\"])(function(date) {\n  date.setTime(date - date.getMilliseconds() - date.getSeconds() * _duration_js__WEBPACK_IMPORTED_MODULE_1__[\"durationSecond\"] - date.getMinutes() * _duration_js__WEBPACK_IMPORTED_MODULE_1__[\"durationMinute\"]);\n}, function(date, step) {\n  date.setTime(+date + step * _duration_js__WEBPACK_IMPORTED_MODULE_1__[\"durationHour\"]);\n}, function(start, end) {\n  return (end - start) / _duration_js__WEBPACK_IMPORTED_MODULE_1__[\"durationHour\"];\n}, function(date) {\n  return date.getHours();\n});\n\n/* harmony default export */ __webpack_exports__[\"default\"] = (hour);\nvar hours = hour.range;\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvdmVnYS1mdW5jdGlvbnMvbm9kZV9tb2R1bGVzL2QzLXRpbWUvc3JjL2hvdXIuanMuanMiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvdmVnYS1mdW5jdGlvbnMvbm9kZV9tb2R1bGVzL2QzLXRpbWUvc3JjL2hvdXIuanM/ZWM2NyJdLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgaW50ZXJ2YWwgZnJvbSBcIi4vaW50ZXJ2YWwuanNcIjtcbmltcG9ydCB7ZHVyYXRpb25Ib3VyLCBkdXJhdGlvbk1pbnV0ZSwgZHVyYXRpb25TZWNvbmR9IGZyb20gXCIuL2R1cmF0aW9uLmpzXCI7XG5cbnZhciBob3VyID0gaW50ZXJ2YWwoZnVuY3Rpb24oZGF0ZSkge1xuICBkYXRlLnNldFRpbWUoZGF0ZSAtIGRhdGUuZ2V0TWlsbGlzZWNvbmRzKCkgLSBkYXRlLmdldFNlY29uZHMoKSAqIGR1cmF0aW9uU2Vjb25kIC0gZGF0ZS5nZXRNaW51dGVzKCkgKiBkdXJhdGlvbk1pbnV0ZSk7XG59LCBmdW5jdGlvbihkYXRlLCBzdGVwKSB7XG4gIGRhdGUuc2V0VGltZSgrZGF0ZSArIHN0ZXAgKiBkdXJhdGlvbkhvdXIpO1xufSwgZnVuY3Rpb24oc3RhcnQsIGVuZCkge1xuICByZXR1cm4gKGVuZCAtIHN0YXJ0KSAvIGR1cmF0aW9uSG91cjtcbn0sIGZ1bmN0aW9uKGRhdGUpIHtcbiAgcmV0dXJuIGRhdGUuZ2V0SG91cnMoKTtcbn0pO1xuXG5leHBvcnQgZGVmYXVsdCBob3VyO1xuZXhwb3J0IHZhciBob3VycyA9IGhvdXIucmFuZ2U7XG4iXSwibWFwcGluZ3MiOiJBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOyIsInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///./node_modules/vega-functions/node_modules/d3-time/src/hour.js\n");

/***/ }),

/***/ "./node_modules/vega-functions/node_modules/d3-time/src/index.js":
/*!***********************************************************************!*\
  !*** ./node_modules/vega-functions/node_modules/d3-time/src/index.js ***!
  \***********************************************************************/
/*! exports provided: timeInterval, timeMillisecond, timeMilliseconds, utcMillisecond, utcMilliseconds, timeSecond, timeSeconds, utcSecond, utcSeconds, timeMinute, timeMinutes, timeHour, timeHours, timeDay, timeDays, timeWeek, timeWeeks, timeSunday, timeSundays, timeMonday, timeMondays, timeTuesday, timeTuesdays, timeWednesday, timeWednesdays, timeThursday, timeThursdays, timeFriday, timeFridays, timeSaturday, timeSaturdays, timeMonth, timeMonths, timeYear, timeYears, utcMinute, utcMinutes, utcHour, utcHours, utcDay, utcDays, utcWeek, utcWeeks, utcSunday, utcSundays, utcMonday, utcMondays, utcTuesday, utcTuesdays, utcWednesday, utcWednesdays, utcThursday, utcThursdays, utcFriday, utcFridays, utcSaturday, utcSaturdays, utcMonth, utcMonths, utcYear, utcYears, utcTicks, utcTickInterval, timeTicks, timeTickInterval */
/***/ (function(module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _interval_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./interval.js */ \"./node_modules/vega-functions/node_modules/d3-time/src/interval.js\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"timeInterval\", function() { return _interval_js__WEBPACK_IMPORTED_MODULE_0__[\"default\"]; });\n\n/* harmony import */ var _millisecond_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./millisecond.js */ \"./node_modules/vega-functions/node_modules/d3-time/src/millisecond.js\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"timeMillisecond\", function() { return _millisecond_js__WEBPACK_IMPORTED_MODULE_1__[\"default\"]; });\n\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"timeMilliseconds\", function() { return _millisecond_js__WEBPACK_IMPORTED_MODULE_1__[\"milliseconds\"]; });\n\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"utcMillisecond\", function() { return _millisecond_js__WEBPACK_IMPORTED_MODULE_1__[\"default\"]; });\n\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"utcMilliseconds\", function() { return _millisecond_js__WEBPACK_IMPORTED_MODULE_1__[\"milliseconds\"]; });\n\n/* harmony import */ var _second_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./second.js */ \"./node_modules/vega-functions/node_modules/d3-time/src/second.js\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"timeSecond\", function() { return _second_js__WEBPACK_IMPORTED_MODULE_2__[\"default\"]; });\n\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"timeSeconds\", function() { return _second_js__WEBPACK_IMPORTED_MODULE_2__[\"seconds\"]; });\n\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"utcSecond\", function() { return _second_js__WEBPACK_IMPORTED_MODULE_2__[\"default\"]; });\n\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"utcSeconds\", function() { return _second_js__WEBPACK_IMPORTED_MODULE_2__[\"seconds\"]; });\n\n/* harmony import */ var _minute_js__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ./minute.js */ \"./node_modules/vega-functions/node_modules/d3-time/src/minute.js\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"timeMinute\", function() { return _minute_js__WEBPACK_IMPORTED_MODULE_3__[\"default\"]; });\n\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"timeMinutes\", function() { return _minute_js__WEBPACK_IMPORTED_MODULE_3__[\"minutes\"]; });\n\n/* harmony import */ var _hour_js__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ./hour.js */ \"./node_modules/vega-functions/node_modules/d3-time/src/hour.js\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"timeHour\", function() { return _hour_js__WEBPACK_IMPORTED_MODULE_4__[\"default\"]; });\n\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"timeHours\", function() { return _hour_js__WEBPACK_IMPORTED_MODULE_4__[\"hours\"]; });\n\n/* harmony import */ var _day_js__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! ./day.js */ \"./node_modules/vega-functions/node_modules/d3-time/src/day.js\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"timeDay\", function() { return _day_js__WEBPACK_IMPORTED_MODULE_5__[\"default\"]; });\n\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"timeDays\", function() { return _day_js__WEBPACK_IMPORTED_MODULE_5__[\"days\"]; });\n\n/* harmony import */ var _week_js__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! ./week.js */ \"./node_modules/vega-functions/node_modules/d3-time/src/week.js\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"timeWeek\", function() { return _week_js__WEBPACK_IMPORTED_MODULE_6__[\"sunday\"]; });\n\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"timeWeeks\", function() { return _week_js__WEBPACK_IMPORTED_MODULE_6__[\"sundays\"]; });\n\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"timeSunday\", function() { return _week_js__WEBPACK_IMPORTED_MODULE_6__[\"sunday\"]; });\n\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"timeSundays\", function() { return _week_js__WEBPACK_IMPORTED_MODULE_6__[\"sundays\"]; });\n\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"timeMonday\", function() { return _week_js__WEBPACK_IMPORTED_MODULE_6__[\"monday\"]; });\n\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"timeMondays\", function() { return _week_js__WEBPACK_IMPORTED_MODULE_6__[\"mondays\"]; });\n\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"timeTuesday\", function() { return _week_js__WEBPACK_IMPORTED_MODULE_6__[\"tuesday\"]; });\n\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"timeTuesdays\", function() { return _week_js__WEBPACK_IMPORTED_MODULE_6__[\"tuesdays\"]; });\n\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"timeWednesday\", function() { return _week_js__WEBPACK_IMPORTED_MODULE_6__[\"wednesday\"]; });\n\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"timeWednesdays\", function() { return _week_js__WEBPACK_IMPORTED_MODULE_6__[\"wednesdays\"]; });\n\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"timeThursday\", function() { return _week_js__WEBPACK_IMPORTED_MODULE_6__[\"thursday\"]; });\n\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"timeThursdays\", function() { return _week_js__WEBPACK_IMPORTED_MODULE_6__[\"thursdays\"]; });\n\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"timeFriday\", function() { return _week_js__WEBPACK_IMPORTED_MODULE_6__[\"friday\"]; });\n\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"timeFridays\", function() { return _week_js__WEBPACK_IMPORTED_MODULE_6__[\"fridays\"]; });\n\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"timeSaturday\", function() { return _week_js__WEBPACK_IMPORTED_MODULE_6__[\"saturday\"]; });\n\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"timeSaturdays\", function() { return _week_js__WEBPACK_IMPORTED_MODULE_6__[\"saturdays\"]; });\n\n/* harmony import */ var _month_js__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! ./month.js */ \"./node_modules/vega-functions/node_modules/d3-time/src/month.js\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"timeMonth\", function() { return _month_js__WEBPACK_IMPORTED_MODULE_7__[\"default\"]; });\n\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"timeMonths\", function() { return _month_js__WEBPACK_IMPORTED_MODULE_7__[\"months\"]; });\n\n/* harmony import */ var _year_js__WEBPACK_IMPORTED_MODULE_8__ = __webpack_require__(/*! ./year.js */ \"./node_modules/vega-functions/node_modules/d3-time/src/year.js\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"timeYear\", function() { return _year_js__WEBPACK_IMPORTED_MODULE_8__[\"default\"]; });\n\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"timeYears\", function() { return _year_js__WEBPACK_IMPORTED_MODULE_8__[\"years\"]; });\n\n/* harmony import */ var _utcMinute_js__WEBPACK_IMPORTED_MODULE_9__ = __webpack_require__(/*! ./utcMinute.js */ \"./node_modules/vega-functions/node_modules/d3-time/src/utcMinute.js\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"utcMinute\", function() { return _utcMinute_js__WEBPACK_IMPORTED_MODULE_9__[\"default\"]; });\n\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"utcMinutes\", function() { return _utcMinute_js__WEBPACK_IMPORTED_MODULE_9__[\"utcMinutes\"]; });\n\n/* harmony import */ var _utcHour_js__WEBPACK_IMPORTED_MODULE_10__ = __webpack_require__(/*! ./utcHour.js */ \"./node_modules/vega-functions/node_modules/d3-time/src/utcHour.js\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"utcHour\", function() { return _utcHour_js__WEBPACK_IMPORTED_MODULE_10__[\"default\"]; });\n\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"utcHours\", function() { return _utcHour_js__WEBPACK_IMPORTED_MODULE_10__[\"utcHours\"]; });\n\n/* harmony import */ var _utcDay_js__WEBPACK_IMPORTED_MODULE_11__ = __webpack_require__(/*! ./utcDay.js */ \"./node_modules/vega-functions/node_modules/d3-time/src/utcDay.js\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"utcDay\", function() { return _utcDay_js__WEBPACK_IMPORTED_MODULE_11__[\"default\"]; });\n\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"utcDays\", function() { return _utcDay_js__WEBPACK_IMPORTED_MODULE_11__[\"utcDays\"]; });\n\n/* harmony import */ var _utcWeek_js__WEBPACK_IMPORTED_MODULE_12__ = __webpack_require__(/*! ./utcWeek.js */ \"./node_modules/vega-functions/node_modules/d3-time/src/utcWeek.js\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"utcWeek\", function() { return _utcWeek_js__WEBPACK_IMPORTED_MODULE_12__[\"utcSunday\"]; });\n\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"utcWeeks\", function() { return _utcWeek_js__WEBPACK_IMPORTED_MODULE_12__[\"utcSundays\"]; });\n\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"utcSunday\", function() { return _utcWeek_js__WEBPACK_IMPORTED_MODULE_12__[\"utcSunday\"]; });\n\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"utcSundays\", function() { return _utcWeek_js__WEBPACK_IMPORTED_MODULE_12__[\"utcSundays\"]; });\n\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"utcMonday\", function() { return _utcWeek_js__WEBPACK_IMPORTED_MODULE_12__[\"utcMonday\"]; });\n\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"utcMondays\", function() { return _utcWeek_js__WEBPACK_IMPORTED_MODULE_12__[\"utcMondays\"]; });\n\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"utcTuesday\", function() { return _utcWeek_js__WEBPACK_IMPORTED_MODULE_12__[\"utcTuesday\"]; });\n\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"utcTuesdays\", function() { return _utcWeek_js__WEBPACK_IMPORTED_MODULE_12__[\"utcTuesdays\"]; });\n\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"utcWednesday\", function() { return _utcWeek_js__WEBPACK_IMPORTED_MODULE_12__[\"utcWednesday\"]; });\n\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"utcWednesdays\", function() { return _utcWeek_js__WEBPACK_IMPORTED_MODULE_12__[\"utcWednesdays\"]; });\n\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"utcThursday\", function() { return _utcWeek_js__WEBPACK_IMPORTED_MODULE_12__[\"utcThursday\"]; });\n\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"utcThursdays\", function() { return _utcWeek_js__WEBPACK_IMPORTED_MODULE_12__[\"utcThursdays\"]; });\n\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"utcFriday\", function() { return _utcWeek_js__WEBPACK_IMPORTED_MODULE_12__[\"utcFriday\"]; });\n\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"utcFridays\", function() { return _utcWeek_js__WEBPACK_IMPORTED_MODULE_12__[\"utcFridays\"]; });\n\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"utcSaturday\", function() { return _utcWeek_js__WEBPACK_IMPORTED_MODULE_12__[\"utcSaturday\"]; });\n\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"utcSaturdays\", function() { return _utcWeek_js__WEBPACK_IMPORTED_MODULE_12__[\"utcSaturdays\"]; });\n\n/* harmony import */ var _utcMonth_js__WEBPACK_IMPORTED_MODULE_13__ = __webpack_require__(/*! ./utcMonth.js */ \"./node_modules/vega-functions/node_modules/d3-time/src/utcMonth.js\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"utcMonth\", function() { return _utcMonth_js__WEBPACK_IMPORTED_MODULE_13__[\"default\"]; });\n\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"utcMonths\", function() { return _utcMonth_js__WEBPACK_IMPORTED_MODULE_13__[\"utcMonths\"]; });\n\n/* harmony import */ var _utcYear_js__WEBPACK_IMPORTED_MODULE_14__ = __webpack_require__(/*! ./utcYear.js */ \"./node_modules/vega-functions/node_modules/d3-time/src/utcYear.js\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"utcYear\", function() { return _utcYear_js__WEBPACK_IMPORTED_MODULE_14__[\"default\"]; });\n\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"utcYears\", function() { return _utcYear_js__WEBPACK_IMPORTED_MODULE_14__[\"utcYears\"]; });\n\n/* harmony import */ var _ticks_js__WEBPACK_IMPORTED_MODULE_15__ = __webpack_require__(/*! ./ticks.js */ \"./node_modules/vega-functions/node_modules/d3-time/src/ticks.js\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"utcTicks\", function() { return _ticks_js__WEBPACK_IMPORTED_MODULE_15__[\"utcTicks\"]; });\n\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"utcTickInterval\", function() { return _ticks_js__WEBPACK_IMPORTED_MODULE_15__[\"utcTickInterval\"]; });\n\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"timeTicks\", function() { return _ticks_js__WEBPACK_IMPORTED_MODULE_15__[\"timeTicks\"]; });\n\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"timeTickInterval\", function() { return _ticks_js__WEBPACK_IMPORTED_MODULE_15__[\"timeTickInterval\"]; });\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,[encoded data, 4596 characters]\n//# sourceURL=webpack-internal:///./node_modules/vega-functions/node_modules/d3-time/src/index.js\n");

/***/ }),

/***/ "./node_modules/vega-functions/node_modules/d3-time/src/interval.js":
/*!**************************************************************************!*\
  !*** ./node_modules/vega-functions/node_modules/d3-time/src/interval.js ***!
  \**************************************************************************/
/*! exports provided: default */
/***/ (function(module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"default\", function() { return newInterval; });\nvar t0 = new Date,\n    t1 = new Date;\n\nfunction newInterval(floori, offseti, count, field) {\n\n  function interval(date) {\n    return floori(date = arguments.length === 0 ? new Date : new Date(+date)), date;\n  }\n\n  interval.floor = function(date) {\n    return floori(date = new Date(+date)), date;\n  };\n\n  interval.ceil = function(date) {\n    return floori(date = new Date(date - 1)), offseti(date, 1), floori(date), date;\n  };\n\n  interval.round = function(date) {\n    var d0 = interval(date),\n        d1 = interval.ceil(date);\n    return date - d0 < d1 - date ? d0 : d1;\n  };\n\n  interval.offset = function(date, step) {\n    return offseti(date = new Date(+date), step == null ? 1 : Math.floor(step)), date;\n  };\n\n  interval.range = function(start, stop, step) {\n    var range = [], previous;\n    start = interval.ceil(start);\n    step = step == null ? 1 : Math.floor(step);\n    if (!(start < stop) || !(step > 0)) return range; // also handles Invalid Date\n    do range.push(previous = new Date(+start)), offseti(start, step), floori(start);\n    while (previous < start && start < stop);\n    return range;\n  };\n\n  interval.filter = function(test) {\n    return newInterval(function(date) {\n      if (date >= date) while (floori(date), !test(date)) date.setTime(date - 1);\n    }, function(date, step) {\n      if (date >= date) {\n        if (step < 0) while (++step <= 0) {\n          while (offseti(date, -1), !test(date)) {} // eslint-disable-line no-empty\n        } else while (--step >= 0) {\n          while (offseti(date, +1), !test(date)) {} // eslint-disable-line no-empty\n        }\n      }\n    });\n  };\n\n  if (count) {\n    interval.count = function(start, end) {\n      t0.setTime(+start), t1.setTime(+end);\n      floori(t0), floori(t1);\n      return Math.floor(count(t0, t1));\n    };\n\n    interval.every = function(step) {\n      step = Math.floor(step);\n      return !isFinite(step) || !(step > 0) ? null\n          : !(step > 1) ? interval\n          : interval.filter(field\n              ? function(d) { return field(d) % step === 0; }\n              : function(d) { return interval.count(0, d) % step === 0; });\n    };\n  }\n\n  return interval;\n}\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvdmVnYS1mdW5jdGlvbnMvbm9kZV9tb2R1bGVzL2QzLXRpbWUvc3JjL2ludGVydmFsLmpzLmpzIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL3ZlZ2EtZnVuY3Rpb25zL25vZGVfbW9kdWxlcy9kMy10aW1lL3NyYy9pbnRlcnZhbC5qcz9mODYzIl0sInNvdXJjZXNDb250ZW50IjpbInZhciB0MCA9IG5ldyBEYXRlLFxuICAgIHQxID0gbmV3IERhdGU7XG5cbmV4cG9ydCBkZWZhdWx0IGZ1bmN0aW9uIG5ld0ludGVydmFsKGZsb29yaSwgb2Zmc2V0aSwgY291bnQsIGZpZWxkKSB7XG5cbiAgZnVuY3Rpb24gaW50ZXJ2YWwoZGF0ZSkge1xuICAgIHJldHVybiBmbG9vcmkoZGF0ZSA9IGFyZ3VtZW50cy5sZW5ndGggPT09IDAgPyBuZXcgRGF0ZSA6IG5ldyBEYXRlKCtkYXRlKSksIGRhdGU7XG4gIH1cblxuICBpbnRlcnZhbC5mbG9vciA9IGZ1bmN0aW9uKGRhdGUpIHtcbiAgICByZXR1cm4gZmxvb3JpKGRhdGUgPSBuZXcgRGF0ZSgrZGF0ZSkpLCBkYXRlO1xuICB9O1xuXG4gIGludGVydmFsLmNlaWwgPSBmdW5jdGlvbihkYXRlKSB7XG4gICAgcmV0dXJuIGZsb29yaShkYXRlID0gbmV3IERhdGUoZGF0ZSAtIDEpKSwgb2Zmc2V0aShkYXRlLCAxKSwgZmxvb3JpKGRhdGUpLCBkYXRlO1xuICB9O1xuXG4gIGludGVydmFsLnJvdW5kID0gZnVuY3Rpb24oZGF0ZSkge1xuICAgIHZhciBkMCA9IGludGVydmFsKGRhdGUpLFxuICAgICAgICBkMSA9IGludGVydmFsLmNlaWwoZGF0ZSk7XG4gICAgcmV0dXJuIGRhdGUgLSBkMCA8IGQxIC0gZGF0ZSA/IGQwIDogZDE7XG4gIH07XG5cbiAgaW50ZXJ2YWwub2Zmc2V0ID0gZnVuY3Rpb24oZGF0ZSwgc3RlcCkge1xuICAgIHJldHVybiBvZmZzZXRpKGRhdGUgPSBuZXcgRGF0ZSgrZGF0ZSksIHN0ZXAgPT0gbnVsbCA/IDEgOiBNYXRoLmZsb29yKHN0ZXApKSwgZGF0ZTtcbiAgfTtcblxuICBpbnRlcnZhbC5yYW5nZSA9IGZ1bmN0aW9uKHN0YXJ0LCBzdG9wLCBzdGVwKSB7XG4gICAgdmFyIHJhbmdlID0gW10sIHByZXZpb3VzO1xuICAgIHN0YXJ0ID0gaW50ZXJ2YWwuY2VpbChzdGFydCk7XG4gICAgc3RlcCA9IHN0ZXAgPT0gbnVsbCA/IDEgOiBNYXRoLmZsb29yKHN0ZXApO1xuICAgIGlmICghKHN0YXJ0IDwgc3RvcCkgfHwgIShzdGVwID4gMCkpIHJldHVybiByYW5nZTsgLy8gYWxzbyBoYW5kbGVzIEludmFsaWQgRGF0ZVxuICAgIGRvIHJhbmdlLnB1c2gocHJldmlvdXMgPSBuZXcgRGF0ZSgrc3RhcnQpKSwgb2Zmc2V0aShzdGFydCwgc3RlcCksIGZsb29yaShzdGFydCk7XG4gICAgd2hpbGUgKHByZXZpb3VzIDwgc3RhcnQgJiYgc3RhcnQgPCBzdG9wKTtcbiAgICByZXR1cm4gcmFuZ2U7XG4gIH07XG5cbiAgaW50ZXJ2YWwuZmlsdGVyID0gZnVuY3Rpb24odGVzdCkge1xuICAgIHJldHVybiBuZXdJbnRlcnZhbChmdW5jdGlvbihkYXRlKSB7XG4gICAgICBpZiAoZGF0ZSA+PSBkYXRlKSB3aGlsZSAoZmxvb3JpKGRhdGUpLCAhdGVzdChkYXRlKSkgZGF0ZS5zZXRUaW1lKGRhdGUgLSAxKTtcbiAgICB9LCBmdW5jdGlvbihkYXRlLCBzdGVwKSB7XG4gICAgICBpZiAoZGF0ZSA+PSBkYXRlKSB7XG4gICAgICAgIGlmIChzdGVwIDwgMCkgd2hpbGUgKCsrc3RlcCA8PSAwKSB7XG4gICAgICAgICAgd2hpbGUgKG9mZnNldGkoZGF0ZSwgLTEpLCAhdGVzdChkYXRlKSkge30gLy8gZXNsaW50LWRpc2FibGUtbGluZSBuby1lbXB0eVxuICAgICAgICB9IGVsc2Ugd2hpbGUgKC0tc3RlcCA+PSAwKSB7XG4gICAgICAgICAgd2hpbGUgKG9mZnNldGkoZGF0ZSwgKzEpLCAhdGVzdChkYXRlKSkge30gLy8gZXNsaW50LWRpc2FibGUtbGluZSBuby1lbXB0eVxuICAgICAgICB9XG4gICAgICB9XG4gICAgfSk7XG4gIH07XG5cbiAgaWYgKGNvdW50KSB7XG4gICAgaW50ZXJ2YWwuY291bnQgPSBmdW5jdGlvbihzdGFydCwgZW5kKSB7XG4gICAgICB0MC5zZXRUaW1lKCtzdGFydCksIHQxLnNldFRpbWUoK2VuZCk7XG4gICAgICBmbG9vcmkodDApLCBmbG9vcmkodDEpO1xuICAgICAgcmV0dXJuIE1hdGguZmxvb3IoY291bnQodDAsIHQxKSk7XG4gICAgfTtcblxuICAgIGludGVydmFsLmV2ZXJ5ID0gZnVuY3Rpb24oc3RlcCkge1xuICAgICAgc3RlcCA9IE1hdGguZmxvb3Ioc3RlcCk7XG4gICAgICByZXR1cm4gIWlzRmluaXRlKHN0ZXApIHx8ICEoc3RlcCA+IDApID8gbnVsbFxuICAgICAgICAgIDogIShzdGVwID4gMSkgPyBpbnRlcnZhbFxuICAgICAgICAgIDogaW50ZXJ2YWwuZmlsdGVyKGZpZWxkXG4gICAgICAgICAgICAgID8gZnVuY3Rpb24oZCkgeyByZXR1cm4gZmllbGQoZCkgJSBzdGVwID09PSAwOyB9XG4gICAgICAgICAgICAgIDogZnVuY3Rpb24oZCkgeyByZXR1cm4gaW50ZXJ2YWwuY291bnQoMCwgZCkgJSBzdGVwID09PSAwOyB9KTtcbiAgICB9O1xuICB9XG5cbiAgcmV0dXJuIGludGVydmFsO1xufVxuIl0sIm1hcHBpbmdzIjoiQUFBQTtBQUFBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7Iiwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///./node_modules/vega-functions/node_modules/d3-time/src/interval.js\n");

/***/ }),

/***/ "./node_modules/vega-functions/node_modules/d3-time/src/millisecond.js":
/*!*****************************************************************************!*\
  !*** ./node_modules/vega-functions/node_modules/d3-time/src/millisecond.js ***!
  \*****************************************************************************/
/*! exports provided: default, milliseconds */
/***/ (function(module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"milliseconds\", function() { return milliseconds; });\n/* harmony import */ var _interval_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./interval.js */ \"./node_modules/vega-functions/node_modules/d3-time/src/interval.js\");\n\n\nvar millisecond = Object(_interval_js__WEBPACK_IMPORTED_MODULE_0__[\"default\"])(function() {\n  // noop\n}, function(date, step) {\n  date.setTime(+date + step);\n}, function(start, end) {\n  return end - start;\n});\n\n// An optimized implementation for this simple case.\nmillisecond.every = function(k) {\n  k = Math.floor(k);\n  if (!isFinite(k) || !(k > 0)) return null;\n  if (!(k > 1)) return millisecond;\n  return Object(_interval_js__WEBPACK_IMPORTED_MODULE_0__[\"default\"])(function(date) {\n    date.setTime(Math.floor(date / k) * k);\n  }, function(date, step) {\n    date.setTime(+date + step * k);\n  }, function(start, end) {\n    return (end - start) / k;\n  });\n};\n\n/* harmony default export */ __webpack_exports__[\"default\"] = (millisecond);\nvar milliseconds = millisecond.range;\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvdmVnYS1mdW5jdGlvbnMvbm9kZV9tb2R1bGVzL2QzLXRpbWUvc3JjL21pbGxpc2Vjb25kLmpzLmpzIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL3ZlZ2EtZnVuY3Rpb25zL25vZGVfbW9kdWxlcy9kMy10aW1lL3NyYy9taWxsaXNlY29uZC5qcz9iM2E0Il0sInNvdXJjZXNDb250ZW50IjpbImltcG9ydCBpbnRlcnZhbCBmcm9tIFwiLi9pbnRlcnZhbC5qc1wiO1xuXG52YXIgbWlsbGlzZWNvbmQgPSBpbnRlcnZhbChmdW5jdGlvbigpIHtcbiAgLy8gbm9vcFxufSwgZnVuY3Rpb24oZGF0ZSwgc3RlcCkge1xuICBkYXRlLnNldFRpbWUoK2RhdGUgKyBzdGVwKTtcbn0sIGZ1bmN0aW9uKHN0YXJ0LCBlbmQpIHtcbiAgcmV0dXJuIGVuZCAtIHN0YXJ0O1xufSk7XG5cbi8vIEFuIG9wdGltaXplZCBpbXBsZW1lbnRhdGlvbiBmb3IgdGhpcyBzaW1wbGUgY2FzZS5cbm1pbGxpc2Vjb25kLmV2ZXJ5ID0gZnVuY3Rpb24oaykge1xuICBrID0gTWF0aC5mbG9vcihrKTtcbiAgaWYgKCFpc0Zpbml0ZShrKSB8fCAhKGsgPiAwKSkgcmV0dXJuIG51bGw7XG4gIGlmICghKGsgPiAxKSkgcmV0dXJuIG1pbGxpc2Vjb25kO1xuICByZXR1cm4gaW50ZXJ2YWwoZnVuY3Rpb24oZGF0ZSkge1xuICAgIGRhdGUuc2V0VGltZShNYXRoLmZsb29yKGRhdGUgLyBrKSAqIGspO1xuICB9LCBmdW5jdGlvbihkYXRlLCBzdGVwKSB7XG4gICAgZGF0ZS5zZXRUaW1lKCtkYXRlICsgc3RlcCAqIGspO1xuICB9LCBmdW5jdGlvbihzdGFydCwgZW5kKSB7XG4gICAgcmV0dXJuIChlbmQgLSBzdGFydCkgLyBrO1xuICB9KTtcbn07XG5cbmV4cG9ydCBkZWZhdWx0IG1pbGxpc2Vjb25kO1xuZXhwb3J0IHZhciBtaWxsaXNlY29uZHMgPSBtaWxsaXNlY29uZC5yYW5nZTtcbiJdLCJtYXBwaW5ncyI6IkFBQUE7QUFBQTtBQUFBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTsiLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///./node_modules/vega-functions/node_modules/d3-time/src/millisecond.js\n");

/***/ }),

/***/ "./node_modules/vega-functions/node_modules/d3-time/src/minute.js":
/*!************************************************************************!*\
  !*** ./node_modules/vega-functions/node_modules/d3-time/src/minute.js ***!
  \************************************************************************/
/*! exports provided: default, minutes */
/***/ (function(module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"minutes\", function() { return minutes; });\n/* harmony import */ var _interval_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./interval.js */ \"./node_modules/vega-functions/node_modules/d3-time/src/interval.js\");\n/* harmony import */ var _duration_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./duration.js */ \"./node_modules/vega-functions/node_modules/d3-time/src/duration.js\");\n\n\n\nvar minute = Object(_interval_js__WEBPACK_IMPORTED_MODULE_0__[\"default\"])(function(date) {\n  date.setTime(date - date.getMilliseconds() - date.getSeconds() * _duration_js__WEBPACK_IMPORTED_MODULE_1__[\"durationSecond\"]);\n}, function(date, step) {\n  date.setTime(+date + step * _duration_js__WEBPACK_IMPORTED_MODULE_1__[\"durationMinute\"]);\n}, function(start, end) {\n  return (end - start) / _duration_js__WEBPACK_IMPORTED_MODULE_1__[\"durationMinute\"];\n}, function(date) {\n  return date.getMinutes();\n});\n\n/* harmony default export */ __webpack_exports__[\"default\"] = (minute);\nvar minutes = minute.range;\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvdmVnYS1mdW5jdGlvbnMvbm9kZV9tb2R1bGVzL2QzLXRpbWUvc3JjL21pbnV0ZS5qcy5qcyIsInNvdXJjZXMiOlsid2VicGFjazovLy8uL25vZGVfbW9kdWxlcy92ZWdhLWZ1bmN0aW9ucy9ub2RlX21vZHVsZXMvZDMtdGltZS9zcmMvbWludXRlLmpzPzljMDAiXSwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IGludGVydmFsIGZyb20gXCIuL2ludGVydmFsLmpzXCI7XG5pbXBvcnQge2R1cmF0aW9uTWludXRlLCBkdXJhdGlvblNlY29uZH0gZnJvbSBcIi4vZHVyYXRpb24uanNcIjtcblxudmFyIG1pbnV0ZSA9IGludGVydmFsKGZ1bmN0aW9uKGRhdGUpIHtcbiAgZGF0ZS5zZXRUaW1lKGRhdGUgLSBkYXRlLmdldE1pbGxpc2Vjb25kcygpIC0gZGF0ZS5nZXRTZWNvbmRzKCkgKiBkdXJhdGlvblNlY29uZCk7XG59LCBmdW5jdGlvbihkYXRlLCBzdGVwKSB7XG4gIGRhdGUuc2V0VGltZSgrZGF0ZSArIHN0ZXAgKiBkdXJhdGlvbk1pbnV0ZSk7XG59LCBmdW5jdGlvbihzdGFydCwgZW5kKSB7XG4gIHJldHVybiAoZW5kIC0gc3RhcnQpIC8gZHVyYXRpb25NaW51dGU7XG59LCBmdW5jdGlvbihkYXRlKSB7XG4gIHJldHVybiBkYXRlLmdldE1pbnV0ZXMoKTtcbn0pO1xuXG5leHBvcnQgZGVmYXVsdCBtaW51dGU7XG5leHBvcnQgdmFyIG1pbnV0ZXMgPSBtaW51dGUucmFuZ2U7XG4iXSwibWFwcGluZ3MiOiJBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOyIsInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///./node_modules/vega-functions/node_modules/d3-time/src/minute.js\n");

/***/ }),

/***/ "./node_modules/vega-functions/node_modules/d3-time/src/month.js":
/*!***********************************************************************!*\
  !*** ./node_modules/vega-functions/node_modules/d3-time/src/month.js ***!
  \***********************************************************************/
/*! exports provided: default, months */
/***/ (function(module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"months\", function() { return months; });\n/* harmony import */ var _interval_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./interval.js */ \"./node_modules/vega-functions/node_modules/d3-time/src/interval.js\");\n\n\nvar month = Object(_interval_js__WEBPACK_IMPORTED_MODULE_0__[\"default\"])(function(date) {\n  date.setDate(1);\n  date.setHours(0, 0, 0, 0);\n}, function(date, step) {\n  date.setMonth(date.getMonth() + step);\n}, function(start, end) {\n  return end.getMonth() - start.getMonth() + (end.getFullYear() - start.getFullYear()) * 12;\n}, function(date) {\n  return date.getMonth();\n});\n\n/* harmony default export */ __webpack_exports__[\"default\"] = (month);\nvar months = month.range;\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvdmVnYS1mdW5jdGlvbnMvbm9kZV9tb2R1bGVzL2QzLXRpbWUvc3JjL21vbnRoLmpzLmpzIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL3ZlZ2EtZnVuY3Rpb25zL25vZGVfbW9kdWxlcy9kMy10aW1lL3NyYy9tb250aC5qcz83ZTg4Il0sInNvdXJjZXNDb250ZW50IjpbImltcG9ydCBpbnRlcnZhbCBmcm9tIFwiLi9pbnRlcnZhbC5qc1wiO1xuXG52YXIgbW9udGggPSBpbnRlcnZhbChmdW5jdGlvbihkYXRlKSB7XG4gIGRhdGUuc2V0RGF0ZSgxKTtcbiAgZGF0ZS5zZXRIb3VycygwLCAwLCAwLCAwKTtcbn0sIGZ1bmN0aW9uKGRhdGUsIHN0ZXApIHtcbiAgZGF0ZS5zZXRNb250aChkYXRlLmdldE1vbnRoKCkgKyBzdGVwKTtcbn0sIGZ1bmN0aW9uKHN0YXJ0LCBlbmQpIHtcbiAgcmV0dXJuIGVuZC5nZXRNb250aCgpIC0gc3RhcnQuZ2V0TW9udGgoKSArIChlbmQuZ2V0RnVsbFllYXIoKSAtIHN0YXJ0LmdldEZ1bGxZZWFyKCkpICogMTI7XG59LCBmdW5jdGlvbihkYXRlKSB7XG4gIHJldHVybiBkYXRlLmdldE1vbnRoKCk7XG59KTtcblxuZXhwb3J0IGRlZmF1bHQgbW9udGg7XG5leHBvcnQgdmFyIG1vbnRocyA9IG1vbnRoLnJhbmdlO1xuIl0sIm1hcHBpbmdzIjoiQUFBQTtBQUFBO0FBQUE7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7Iiwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///./node_modules/vega-functions/node_modules/d3-time/src/month.js\n");

/***/ }),

/***/ "./node_modules/vega-functions/node_modules/d3-time/src/second.js":
/*!************************************************************************!*\
  !*** ./node_modules/vega-functions/node_modules/d3-time/src/second.js ***!
  \************************************************************************/
/*! exports provided: default, seconds */
/***/ (function(module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"seconds\", function() { return seconds; });\n/* harmony import */ var _interval_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./interval.js */ \"./node_modules/vega-functions/node_modules/d3-time/src/interval.js\");\n/* harmony import */ var _duration_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./duration.js */ \"./node_modules/vega-functions/node_modules/d3-time/src/duration.js\");\n\n\n\nvar second = Object(_interval_js__WEBPACK_IMPORTED_MODULE_0__[\"default\"])(function(date) {\n  date.setTime(date - date.getMilliseconds());\n}, function(date, step) {\n  date.setTime(+date + step * _duration_js__WEBPACK_IMPORTED_MODULE_1__[\"durationSecond\"]);\n}, function(start, end) {\n  return (end - start) / _duration_js__WEBPACK_IMPORTED_MODULE_1__[\"durationSecond\"];\n}, function(date) {\n  return date.getUTCSeconds();\n});\n\n/* harmony default export */ __webpack_exports__[\"default\"] = (second);\nvar seconds = second.range;\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvdmVnYS1mdW5jdGlvbnMvbm9kZV9tb2R1bGVzL2QzLXRpbWUvc3JjL3NlY29uZC5qcy5qcyIsInNvdXJjZXMiOlsid2VicGFjazovLy8uL25vZGVfbW9kdWxlcy92ZWdhLWZ1bmN0aW9ucy9ub2RlX21vZHVsZXMvZDMtdGltZS9zcmMvc2Vjb25kLmpzP2ZiMGIiXSwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IGludGVydmFsIGZyb20gXCIuL2ludGVydmFsLmpzXCI7XG5pbXBvcnQge2R1cmF0aW9uU2Vjb25kfSBmcm9tIFwiLi9kdXJhdGlvbi5qc1wiO1xuXG52YXIgc2Vjb25kID0gaW50ZXJ2YWwoZnVuY3Rpb24oZGF0ZSkge1xuICBkYXRlLnNldFRpbWUoZGF0ZSAtIGRhdGUuZ2V0TWlsbGlzZWNvbmRzKCkpO1xufSwgZnVuY3Rpb24oZGF0ZSwgc3RlcCkge1xuICBkYXRlLnNldFRpbWUoK2RhdGUgKyBzdGVwICogZHVyYXRpb25TZWNvbmQpO1xufSwgZnVuY3Rpb24oc3RhcnQsIGVuZCkge1xuICByZXR1cm4gKGVuZCAtIHN0YXJ0KSAvIGR1cmF0aW9uU2Vjb25kO1xufSwgZnVuY3Rpb24oZGF0ZSkge1xuICByZXR1cm4gZGF0ZS5nZXRVVENTZWNvbmRzKCk7XG59KTtcblxuZXhwb3J0IGRlZmF1bHQgc2Vjb25kO1xuZXhwb3J0IHZhciBzZWNvbmRzID0gc2Vjb25kLnJhbmdlO1xuIl0sIm1hcHBpbmdzIjoiQUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTsiLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///./node_modules/vega-functions/node_modules/d3-time/src/second.js\n");

/***/ }),

/***/ "./node_modules/vega-functions/node_modules/d3-time/src/ticks.js":
/*!***********************************************************************!*\
  !*** ./node_modules/vega-functions/node_modules/d3-time/src/ticks.js ***!
  \***********************************************************************/
/*! exports provided: utcTicks, utcTickInterval, timeTicks, timeTickInterval */
/***/ (function(module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"utcTicks\", function() { return utcTicks; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"utcTickInterval\", function() { return utcTickInterval; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"timeTicks\", function() { return timeTicks; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"timeTickInterval\", function() { return timeTickInterval; });\n/* harmony import */ var d3_array__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! d3-array */ \"./node_modules/d3-array/src/index.js\");\n/* harmony import */ var _duration_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./duration.js */ \"./node_modules/vega-functions/node_modules/d3-time/src/duration.js\");\n/* harmony import */ var _millisecond_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./millisecond.js */ \"./node_modules/vega-functions/node_modules/d3-time/src/millisecond.js\");\n/* harmony import */ var _second_js__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ./second.js */ \"./node_modules/vega-functions/node_modules/d3-time/src/second.js\");\n/* harmony import */ var _minute_js__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ./minute.js */ \"./node_modules/vega-functions/node_modules/d3-time/src/minute.js\");\n/* harmony import */ var _hour_js__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! ./hour.js */ \"./node_modules/vega-functions/node_modules/d3-time/src/hour.js\");\n/* harmony import */ var _day_js__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! ./day.js */ \"./node_modules/vega-functions/node_modules/d3-time/src/day.js\");\n/* harmony import */ var _week_js__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! ./week.js */ \"./node_modules/vega-functions/node_modules/d3-time/src/week.js\");\n/* harmony import */ var _month_js__WEBPACK_IMPORTED_MODULE_8__ = __webpack_require__(/*! ./month.js */ \"./node_modules/vega-functions/node_modules/d3-time/src/month.js\");\n/* harmony import */ var _year_js__WEBPACK_IMPORTED_MODULE_9__ = __webpack_require__(/*! ./year.js */ \"./node_modules/vega-functions/node_modules/d3-time/src/year.js\");\n/* harmony import */ var _utcMinute_js__WEBPACK_IMPORTED_MODULE_10__ = __webpack_require__(/*! ./utcMinute.js */ \"./node_modules/vega-functions/node_modules/d3-time/src/utcMinute.js\");\n/* harmony import */ var _utcHour_js__WEBPACK_IMPORTED_MODULE_11__ = __webpack_require__(/*! ./utcHour.js */ \"./node_modules/vega-functions/node_modules/d3-time/src/utcHour.js\");\n/* harmony import */ var _utcDay_js__WEBPACK_IMPORTED_MODULE_12__ = __webpack_require__(/*! ./utcDay.js */ \"./node_modules/vega-functions/node_modules/d3-time/src/utcDay.js\");\n/* harmony import */ var _utcWeek_js__WEBPACK_IMPORTED_MODULE_13__ = __webpack_require__(/*! ./utcWeek.js */ \"./node_modules/vega-functions/node_modules/d3-time/src/utcWeek.js\");\n/* harmony import */ var _utcMonth_js__WEBPACK_IMPORTED_MODULE_14__ = __webpack_require__(/*! ./utcMonth.js */ \"./node_modules/vega-functions/node_modules/d3-time/src/utcMonth.js\");\n/* harmony import */ var _utcYear_js__WEBPACK_IMPORTED_MODULE_15__ = __webpack_require__(/*! ./utcYear.js */ \"./node_modules/vega-functions/node_modules/d3-time/src/utcYear.js\");\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\nfunction ticker(year, month, week, day, hour, minute) {\n\n  const tickIntervals = [\n    [_second_js__WEBPACK_IMPORTED_MODULE_3__[\"default\"],  1,      _duration_js__WEBPACK_IMPORTED_MODULE_1__[\"durationSecond\"]],\n    [_second_js__WEBPACK_IMPORTED_MODULE_3__[\"default\"],  5,  5 * _duration_js__WEBPACK_IMPORTED_MODULE_1__[\"durationSecond\"]],\n    [_second_js__WEBPACK_IMPORTED_MODULE_3__[\"default\"], 15, 15 * _duration_js__WEBPACK_IMPORTED_MODULE_1__[\"durationSecond\"]],\n    [_second_js__WEBPACK_IMPORTED_MODULE_3__[\"default\"], 30, 30 * _duration_js__WEBPACK_IMPORTED_MODULE_1__[\"durationSecond\"]],\n    [minute,  1,      _duration_js__WEBPACK_IMPORTED_MODULE_1__[\"durationMinute\"]],\n    [minute,  5,  5 * _duration_js__WEBPACK_IMPORTED_MODULE_1__[\"durationMinute\"]],\n    [minute, 15, 15 * _duration_js__WEBPACK_IMPORTED_MODULE_1__[\"durationMinute\"]],\n    [minute, 30, 30 * _duration_js__WEBPACK_IMPORTED_MODULE_1__[\"durationMinute\"]],\n    [  hour,  1,      _duration_js__WEBPACK_IMPORTED_MODULE_1__[\"durationHour\"]  ],\n    [  hour,  3,  3 * _duration_js__WEBPACK_IMPORTED_MODULE_1__[\"durationHour\"]  ],\n    [  hour,  6,  6 * _duration_js__WEBPACK_IMPORTED_MODULE_1__[\"durationHour\"]  ],\n    [  hour, 12, 12 * _duration_js__WEBPACK_IMPORTED_MODULE_1__[\"durationHour\"]  ],\n    [   day,  1,      _duration_js__WEBPACK_IMPORTED_MODULE_1__[\"durationDay\"]   ],\n    [   day,  2,  2 * _duration_js__WEBPACK_IMPORTED_MODULE_1__[\"durationDay\"]   ],\n    [  week,  1,      _duration_js__WEBPACK_IMPORTED_MODULE_1__[\"durationWeek\"]  ],\n    [ month,  1,      _duration_js__WEBPACK_IMPORTED_MODULE_1__[\"durationMonth\"] ],\n    [ month,  3,  3 * _duration_js__WEBPACK_IMPORTED_MODULE_1__[\"durationMonth\"] ],\n    [  year,  1,      _duration_js__WEBPACK_IMPORTED_MODULE_1__[\"durationYear\"]  ]\n  ];\n\n  function ticks(start, stop, count) {\n    const reverse = stop < start;\n    if (reverse) [start, stop] = [stop, start];\n    const interval = count && typeof count.range === \"function\" ? count : tickInterval(start, stop, count);\n    const ticks = interval ? interval.range(start, +stop + 1) : []; // inclusive stop\n    return reverse ? ticks.reverse() : ticks;\n  }\n\n  function tickInterval(start, stop, count) {\n    const target = Math.abs(stop - start) / count;\n    const i = Object(d3_array__WEBPACK_IMPORTED_MODULE_0__[\"bisector\"])(([,, step]) => step).right(tickIntervals, target);\n    if (i === tickIntervals.length) return year.every(Object(d3_array__WEBPACK_IMPORTED_MODULE_0__[\"tickStep\"])(start / _duration_js__WEBPACK_IMPORTED_MODULE_1__[\"durationYear\"], stop / _duration_js__WEBPACK_IMPORTED_MODULE_1__[\"durationYear\"], count));\n    if (i === 0) return _millisecond_js__WEBPACK_IMPORTED_MODULE_2__[\"default\"].every(Math.max(Object(d3_array__WEBPACK_IMPORTED_MODULE_0__[\"tickStep\"])(start, stop, count), 1));\n    const [t, step] = tickIntervals[target / tickIntervals[i - 1][2] < tickIntervals[i][2] / target ? i - 1 : i];\n    return t.every(step);\n  }\n\n  return [ticks, tickInterval];\n}\n\nconst [utcTicks, utcTickInterval] = ticker(_utcYear_js__WEBPACK_IMPORTED_MODULE_15__[\"default\"], _utcMonth_js__WEBPACK_IMPORTED_MODULE_14__[\"default\"], _utcWeek_js__WEBPACK_IMPORTED_MODULE_13__[\"utcSunday\"], _utcDay_js__WEBPACK_IMPORTED_MODULE_12__[\"default\"], _utcHour_js__WEBPACK_IMPORTED_MODULE_11__[\"default\"], _utcMinute_js__WEBPACK_IMPORTED_MODULE_10__[\"default\"]);\nconst [timeTicks, timeTickInterval] = ticker(_year_js__WEBPACK_IMPORTED_MODULE_9__[\"default\"], _month_js__WEBPACK_IMPORTED_MODULE_8__[\"default\"], _week_js__WEBPACK_IMPORTED_MODULE_7__[\"sunday\"], _day_js__WEBPACK_IMPORTED_MODULE_6__[\"default\"], _hour_js__WEBPACK_IMPORTED_MODULE_5__[\"default\"], _minute_js__WEBPACK_IMPORTED_MODULE_4__[\"default\"]);\n\n\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,[encoded data, 4540 characters]\n//# sourceURL=webpack-internal:///./node_modules/vega-functions/node_modules/d3-time/src/ticks.js\n");

/***/ }),

/***/ "./node_modules/vega-functions/node_modules/d3-time/src/utcDay.js":
/*!************************************************************************!*\
  !*** ./node_modules/vega-functions/node_modules/d3-time/src/utcDay.js ***!
  \************************************************************************/
/*! exports provided: default, utcDays */
/***/ (function(module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"utcDays\", function() { return utcDays; });\n/* harmony import */ var _interval_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./interval.js */ \"./node_modules/vega-functions/node_modules/d3-time/src/interval.js\");\n/* harmony import */ var _duration_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./duration.js */ \"./node_modules/vega-functions/node_modules/d3-time/src/duration.js\");\n\n\n\nvar utcDay = Object(_interval_js__WEBPACK_IMPORTED_MODULE_0__[\"default\"])(function(date) {\n  date.setUTCHours(0, 0, 0, 0);\n}, function(date, step) {\n  date.setUTCDate(date.getUTCDate() + step);\n}, function(start, end) {\n  return (end - start) / _duration_js__WEBPACK_IMPORTED_MODULE_1__[\"durationDay\"];\n}, function(date) {\n  return date.getUTCDate() - 1;\n});\n\n/* harmony default export */ __webpack_exports__[\"default\"] = (utcDay);\nvar utcDays = utcDay.range;\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvdmVnYS1mdW5jdGlvbnMvbm9kZV9tb2R1bGVzL2QzLXRpbWUvc3JjL3V0Y0RheS5qcy5qcyIsInNvdXJjZXMiOlsid2VicGFjazovLy8uL25vZGVfbW9kdWxlcy92ZWdhLWZ1bmN0aW9ucy9ub2RlX21vZHVsZXMvZDMtdGltZS9zcmMvdXRjRGF5LmpzP2RmMTEiXSwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IGludGVydmFsIGZyb20gXCIuL2ludGVydmFsLmpzXCI7XG5pbXBvcnQge2R1cmF0aW9uRGF5fSBmcm9tIFwiLi9kdXJhdGlvbi5qc1wiO1xuXG52YXIgdXRjRGF5ID0gaW50ZXJ2YWwoZnVuY3Rpb24oZGF0ZSkge1xuICBkYXRlLnNldFVUQ0hvdXJzKDAsIDAsIDAsIDApO1xufSwgZnVuY3Rpb24oZGF0ZSwgc3RlcCkge1xuICBkYXRlLnNldFVUQ0RhdGUoZGF0ZS5nZXRVVENEYXRlKCkgKyBzdGVwKTtcbn0sIGZ1bmN0aW9uKHN0YXJ0LCBlbmQpIHtcbiAgcmV0dXJuIChlbmQgLSBzdGFydCkgLyBkdXJhdGlvbkRheTtcbn0sIGZ1bmN0aW9uKGRhdGUpIHtcbiAgcmV0dXJuIGRhdGUuZ2V0VVRDRGF0ZSgpIC0gMTtcbn0pO1xuXG5leHBvcnQgZGVmYXVsdCB1dGNEYXk7XG5leHBvcnQgdmFyIHV0Y0RheXMgPSB1dGNEYXkucmFuZ2U7XG4iXSwibWFwcGluZ3MiOiJBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOyIsInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///./node_modules/vega-functions/node_modules/d3-time/src/utcDay.js\n");

/***/ }),

/***/ "./node_modules/vega-functions/node_modules/d3-time/src/utcHour.js":
/*!*************************************************************************!*\
  !*** ./node_modules/vega-functions/node_modules/d3-time/src/utcHour.js ***!
  \*************************************************************************/
/*! exports provided: default, utcHours */
/***/ (function(module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"utcHours\", function() { return utcHours; });\n/* harmony import */ var _interval_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./interval.js */ \"./node_modules/vega-functions/node_modules/d3-time/src/interval.js\");\n/* harmony import */ var _duration_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./duration.js */ \"./node_modules/vega-functions/node_modules/d3-time/src/duration.js\");\n\n\n\nvar utcHour = Object(_interval_js__WEBPACK_IMPORTED_MODULE_0__[\"default\"])(function(date) {\n  date.setUTCMinutes(0, 0, 0);\n}, function(date, step) {\n  date.setTime(+date + step * _duration_js__WEBPACK_IMPORTED_MODULE_1__[\"durationHour\"]);\n}, function(start, end) {\n  return (end - start) / _duration_js__WEBPACK_IMPORTED_MODULE_1__[\"durationHour\"];\n}, function(date) {\n  return date.getUTCHours();\n});\n\n/* harmony default export */ __webpack_exports__[\"default\"] = (utcHour);\nvar utcHours = utcHour.range;\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvdmVnYS1mdW5jdGlvbnMvbm9kZV9tb2R1bGVzL2QzLXRpbWUvc3JjL3V0Y0hvdXIuanMuanMiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvdmVnYS1mdW5jdGlvbnMvbm9kZV9tb2R1bGVzL2QzLXRpbWUvc3JjL3V0Y0hvdXIuanM/ODY0ZCJdLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgaW50ZXJ2YWwgZnJvbSBcIi4vaW50ZXJ2YWwuanNcIjtcbmltcG9ydCB7ZHVyYXRpb25Ib3VyfSBmcm9tIFwiLi9kdXJhdGlvbi5qc1wiO1xuXG52YXIgdXRjSG91ciA9IGludGVydmFsKGZ1bmN0aW9uKGRhdGUpIHtcbiAgZGF0ZS5zZXRVVENNaW51dGVzKDAsIDAsIDApO1xufSwgZnVuY3Rpb24oZGF0ZSwgc3RlcCkge1xuICBkYXRlLnNldFRpbWUoK2RhdGUgKyBzdGVwICogZHVyYXRpb25Ib3VyKTtcbn0sIGZ1bmN0aW9uKHN0YXJ0LCBlbmQpIHtcbiAgcmV0dXJuIChlbmQgLSBzdGFydCkgLyBkdXJhdGlvbkhvdXI7XG59LCBmdW5jdGlvbihkYXRlKSB7XG4gIHJldHVybiBkYXRlLmdldFVUQ0hvdXJzKCk7XG59KTtcblxuZXhwb3J0IGRlZmF1bHQgdXRjSG91cjtcbmV4cG9ydCB2YXIgdXRjSG91cnMgPSB1dGNIb3VyLnJhbmdlO1xuIl0sIm1hcHBpbmdzIjoiQUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTsiLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///./node_modules/vega-functions/node_modules/d3-time/src/utcHour.js\n");

/***/ }),

/***/ "./node_modules/vega-functions/node_modules/d3-time/src/utcMinute.js":
/*!***************************************************************************!*\
  !*** ./node_modules/vega-functions/node_modules/d3-time/src/utcMinute.js ***!
  \***************************************************************************/
/*! exports provided: default, utcMinutes */
/***/ (function(module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"utcMinutes\", function() { return utcMinutes; });\n/* harmony import */ var _interval_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./interval.js */ \"./node_modules/vega-functions/node_modules/d3-time/src/interval.js\");\n/* harmony import */ var _duration_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./duration.js */ \"./node_modules/vega-functions/node_modules/d3-time/src/duration.js\");\n\n\n\nvar utcMinute = Object(_interval_js__WEBPACK_IMPORTED_MODULE_0__[\"default\"])(function(date) {\n  date.setUTCSeconds(0, 0);\n}, function(date, step) {\n  date.setTime(+date + step * _duration_js__WEBPACK_IMPORTED_MODULE_1__[\"durationMinute\"]);\n}, function(start, end) {\n  return (end - start) / _duration_js__WEBPACK_IMPORTED_MODULE_1__[\"durationMinute\"];\n}, function(date) {\n  return date.getUTCMinutes();\n});\n\n/* harmony default export */ __webpack_exports__[\"default\"] = (utcMinute);\nvar utcMinutes = utcMinute.range;\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvdmVnYS1mdW5jdGlvbnMvbm9kZV9tb2R1bGVzL2QzLXRpbWUvc3JjL3V0Y01pbnV0ZS5qcy5qcyIsInNvdXJjZXMiOlsid2VicGFjazovLy8uL25vZGVfbW9kdWxlcy92ZWdhLWZ1bmN0aW9ucy9ub2RlX21vZHVsZXMvZDMtdGltZS9zcmMvdXRjTWludXRlLmpzPzE5ZmUiXSwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IGludGVydmFsIGZyb20gXCIuL2ludGVydmFsLmpzXCI7XG5pbXBvcnQge2R1cmF0aW9uTWludXRlfSBmcm9tIFwiLi9kdXJhdGlvbi5qc1wiO1xuXG52YXIgdXRjTWludXRlID0gaW50ZXJ2YWwoZnVuY3Rpb24oZGF0ZSkge1xuICBkYXRlLnNldFVUQ1NlY29uZHMoMCwgMCk7XG59LCBmdW5jdGlvbihkYXRlLCBzdGVwKSB7XG4gIGRhdGUuc2V0VGltZSgrZGF0ZSArIHN0ZXAgKiBkdXJhdGlvbk1pbnV0ZSk7XG59LCBmdW5jdGlvbihzdGFydCwgZW5kKSB7XG4gIHJldHVybiAoZW5kIC0gc3RhcnQpIC8gZHVyYXRpb25NaW51dGU7XG59LCBmdW5jdGlvbihkYXRlKSB7XG4gIHJldHVybiBkYXRlLmdldFVUQ01pbnV0ZXMoKTtcbn0pO1xuXG5leHBvcnQgZGVmYXVsdCB1dGNNaW51dGU7XG5leHBvcnQgdmFyIHV0Y01pbnV0ZXMgPSB1dGNNaW51dGUucmFuZ2U7XG4iXSwibWFwcGluZ3MiOiJBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOyIsInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///./node_modules/vega-functions/node_modules/d3-time/src/utcMinute.js\n");

/***/ }),

/***/ "./node_modules/vega-functions/node_modules/d3-time/src/utcMonth.js":
/*!**************************************************************************!*\
  !*** ./node_modules/vega-functions/node_modules/d3-time/src/utcMonth.js ***!
  \**************************************************************************/
/*! exports provided: default, utcMonths */
/***/ (function(module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"utcMonths\", function() { return utcMonths; });\n/* harmony import */ var _interval_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./interval.js */ \"./node_modules/vega-functions/node_modules/d3-time/src/interval.js\");\n\n\nvar utcMonth = Object(_interval_js__WEBPACK_IMPORTED_MODULE_0__[\"default\"])(function(date) {\n  date.setUTCDate(1);\n  date.setUTCHours(0, 0, 0, 0);\n}, function(date, step) {\n  date.setUTCMonth(date.getUTCMonth() + step);\n}, function(start, end) {\n  return end.getUTCMonth() - start.getUTCMonth() + (end.getUTCFullYear() - start.getUTCFullYear()) * 12;\n}, function(date) {\n  return date.getUTCMonth();\n});\n\n/* harmony default export */ __webpack_exports__[\"default\"] = (utcMonth);\nvar utcMonths = utcMonth.range;\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvdmVnYS1mdW5jdGlvbnMvbm9kZV9tb2R1bGVzL2QzLXRpbWUvc3JjL3V0Y01vbnRoLmpzLmpzIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL3ZlZ2EtZnVuY3Rpb25zL25vZGVfbW9kdWxlcy9kMy10aW1lL3NyYy91dGNNb250aC5qcz83N2FhIl0sInNvdXJjZXNDb250ZW50IjpbImltcG9ydCBpbnRlcnZhbCBmcm9tIFwiLi9pbnRlcnZhbC5qc1wiO1xuXG52YXIgdXRjTW9udGggPSBpbnRlcnZhbChmdW5jdGlvbihkYXRlKSB7XG4gIGRhdGUuc2V0VVRDRGF0ZSgxKTtcbiAgZGF0ZS5zZXRVVENIb3VycygwLCAwLCAwLCAwKTtcbn0sIGZ1bmN0aW9uKGRhdGUsIHN0ZXApIHtcbiAgZGF0ZS5zZXRVVENNb250aChkYXRlLmdldFVUQ01vbnRoKCkgKyBzdGVwKTtcbn0sIGZ1bmN0aW9uKHN0YXJ0LCBlbmQpIHtcbiAgcmV0dXJuIGVuZC5nZXRVVENNb250aCgpIC0gc3RhcnQuZ2V0VVRDTW9udGgoKSArIChlbmQuZ2V0VVRDRnVsbFllYXIoKSAtIHN0YXJ0LmdldFVUQ0Z1bGxZZWFyKCkpICogMTI7XG59LCBmdW5jdGlvbihkYXRlKSB7XG4gIHJldHVybiBkYXRlLmdldFVUQ01vbnRoKCk7XG59KTtcblxuZXhwb3J0IGRlZmF1bHQgdXRjTW9udGg7XG5leHBvcnQgdmFyIHV0Y01vbnRocyA9IHV0Y01vbnRoLnJhbmdlO1xuIl0sIm1hcHBpbmdzIjoiQUFBQTtBQUFBO0FBQUE7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7Iiwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///./node_modules/vega-functions/node_modules/d3-time/src/utcMonth.js\n");

/***/ }),

/***/ "./node_modules/vega-functions/node_modules/d3-time/src/utcWeek.js":
/*!*************************************************************************!*\
  !*** ./node_modules/vega-functions/node_modules/d3-time/src/utcWeek.js ***!
  \*************************************************************************/
/*! exports provided: utcSunday, utcMonday, utcTuesday, utcWednesday, utcThursday, utcFriday, utcSaturday, utcSundays, utcMondays, utcTuesdays, utcWednesdays, utcThursdays, utcFridays, utcSaturdays */
/***/ (function(module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"utcSunday\", function() { return utcSunday; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"utcMonday\", function() { return utcMonday; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"utcTuesday\", function() { return utcTuesday; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"utcWednesday\", function() { return utcWednesday; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"utcThursday\", function() { return utcThursday; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"utcFriday\", function() { return utcFriday; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"utcSaturday\", function() { return utcSaturday; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"utcSundays\", function() { return utcSundays; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"utcMondays\", function() { return utcMondays; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"utcTuesdays\", function() { return utcTuesdays; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"utcWednesdays\", function() { return utcWednesdays; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"utcThursdays\", function() { return utcThursdays; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"utcFridays\", function() { return utcFridays; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"utcSaturdays\", function() { return utcSaturdays; });\n/* harmony import */ var _interval_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./interval.js */ \"./node_modules/vega-functions/node_modules/d3-time/src/interval.js\");\n/* harmony import */ var _duration_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./duration.js */ \"./node_modules/vega-functions/node_modules/d3-time/src/duration.js\");\n\n\n\nfunction utcWeekday(i) {\n  return Object(_interval_js__WEBPACK_IMPORTED_MODULE_0__[\"default\"])(function(date) {\n    date.setUTCDate(date.getUTCDate() - (date.getUTCDay() + 7 - i) % 7);\n    date.setUTCHours(0, 0, 0, 0);\n  }, function(date, step) {\n    date.setUTCDate(date.getUTCDate() + step * 7);\n  }, function(start, end) {\n    return (end - start) / _duration_js__WEBPACK_IMPORTED_MODULE_1__[\"durationWeek\"];\n  });\n}\n\nvar utcSunday = utcWeekday(0);\nvar utcMonday = utcWeekday(1);\nvar utcTuesday = utcWeekday(2);\nvar utcWednesday = utcWeekday(3);\nvar utcThursday = utcWeekday(4);\nvar utcFriday = utcWeekday(5);\nvar utcSaturday = utcWeekday(6);\n\nvar utcSundays = utcSunday.range;\nvar utcMondays = utcMonday.range;\nvar utcTuesdays = utcTuesday.range;\nvar utcWednesdays = utcWednesday.range;\nvar utcThursdays = utcThursday.range;\nvar utcFridays = utcFriday.range;\nvar utcSaturdays = utcSaturday.range;\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvdmVnYS1mdW5jdGlvbnMvbm9kZV9tb2R1bGVzL2QzLXRpbWUvc3JjL3V0Y1dlZWsuanMuanMiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvdmVnYS1mdW5jdGlvbnMvbm9kZV9tb2R1bGVzL2QzLXRpbWUvc3JjL3V0Y1dlZWsuanM/MjIzNSJdLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgaW50ZXJ2YWwgZnJvbSBcIi4vaW50ZXJ2YWwuanNcIjtcbmltcG9ydCB7ZHVyYXRpb25XZWVrfSBmcm9tIFwiLi9kdXJhdGlvbi5qc1wiO1xuXG5mdW5jdGlvbiB1dGNXZWVrZGF5KGkpIHtcbiAgcmV0dXJuIGludGVydmFsKGZ1bmN0aW9uKGRhdGUpIHtcbiAgICBkYXRlLnNldFVUQ0RhdGUoZGF0ZS5nZXRVVENEYXRlKCkgLSAoZGF0ZS5nZXRVVENEYXkoKSArIDcgLSBpKSAlIDcpO1xuICAgIGRhdGUuc2V0VVRDSG91cnMoMCwgMCwgMCwgMCk7XG4gIH0sIGZ1bmN0aW9uKGRhdGUsIHN0ZXApIHtcbiAgICBkYXRlLnNldFVUQ0RhdGUoZGF0ZS5nZXRVVENEYXRlKCkgKyBzdGVwICogNyk7XG4gIH0sIGZ1bmN0aW9uKHN0YXJ0LCBlbmQpIHtcbiAgICByZXR1cm4gKGVuZCAtIHN0YXJ0KSAvIGR1cmF0aW9uV2VlaztcbiAgfSk7XG59XG5cbmV4cG9ydCB2YXIgdXRjU3VuZGF5ID0gdXRjV2Vla2RheSgwKTtcbmV4cG9ydCB2YXIgdXRjTW9uZGF5ID0gdXRjV2Vla2RheSgxKTtcbmV4cG9ydCB2YXIgdXRjVHVlc2RheSA9IHV0Y1dlZWtkYXkoMik7XG5leHBvcnQgdmFyIHV0Y1dlZG5lc2RheSA9IHV0Y1dlZWtkYXkoMyk7XG5leHBvcnQgdmFyIHV0Y1RodXJzZGF5ID0gdXRjV2Vla2RheSg0KTtcbmV4cG9ydCB2YXIgdXRjRnJpZGF5ID0gdXRjV2Vla2RheSg1KTtcbmV4cG9ydCB2YXIgdXRjU2F0dXJkYXkgPSB1dGNXZWVrZGF5KDYpO1xuXG5leHBvcnQgdmFyIHV0Y1N1bmRheXMgPSB1dGNTdW5kYXkucmFuZ2U7XG5leHBvcnQgdmFyIHV0Y01vbmRheXMgPSB1dGNNb25kYXkucmFuZ2U7XG5leHBvcnQgdmFyIHV0Y1R1ZXNkYXlzID0gdXRjVHVlc2RheS5yYW5nZTtcbmV4cG9ydCB2YXIgdXRjV2VkbmVzZGF5cyA9IHV0Y1dlZG5lc2RheS5yYW5nZTtcbmV4cG9ydCB2YXIgdXRjVGh1cnNkYXlzID0gdXRjVGh1cnNkYXkucmFuZ2U7XG5leHBvcnQgdmFyIHV0Y0ZyaWRheXMgPSB1dGNGcmlkYXkucmFuZ2U7XG5leHBvcnQgdmFyIHV0Y1NhdHVyZGF5cyA9IHV0Y1NhdHVyZGF5LnJhbmdlO1xuIl0sIm1hcHBpbmdzIjoiQUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTsiLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///./node_modules/vega-functions/node_modules/d3-time/src/utcWeek.js\n");

/***/ }),

/***/ "./node_modules/vega-functions/node_modules/d3-time/src/utcYear.js":
/*!*************************************************************************!*\
  !*** ./node_modules/vega-functions/node_modules/d3-time/src/utcYear.js ***!
  \*************************************************************************/
/*! exports provided: default, utcYears */
/***/ (function(module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"utcYears\", function() { return utcYears; });\n/* harmony import */ var _interval_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./interval.js */ \"./node_modules/vega-functions/node_modules/d3-time/src/interval.js\");\n\n\nvar utcYear = Object(_interval_js__WEBPACK_IMPORTED_MODULE_0__[\"default\"])(function(date) {\n  date.setUTCMonth(0, 1);\n  date.setUTCHours(0, 0, 0, 0);\n}, function(date, step) {\n  date.setUTCFullYear(date.getUTCFullYear() + step);\n}, function(start, end) {\n  return end.getUTCFullYear() - start.getUTCFullYear();\n}, function(date) {\n  return date.getUTCFullYear();\n});\n\n// An optimized implementation for this simple case.\nutcYear.every = function(k) {\n  return !isFinite(k = Math.floor(k)) || !(k > 0) ? null : Object(_interval_js__WEBPACK_IMPORTED_MODULE_0__[\"default\"])(function(date) {\n    date.setUTCFullYear(Math.floor(date.getUTCFullYear() / k) * k);\n    date.setUTCMonth(0, 1);\n    date.setUTCHours(0, 0, 0, 0);\n  }, function(date, step) {\n    date.setUTCFullYear(date.getUTCFullYear() + step * k);\n  });\n};\n\n/* harmony default export */ __webpack_exports__[\"default\"] = (utcYear);\nvar utcYears = utcYear.range;\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvdmVnYS1mdW5jdGlvbnMvbm9kZV9tb2R1bGVzL2QzLXRpbWUvc3JjL3V0Y1llYXIuanMuanMiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvdmVnYS1mdW5jdGlvbnMvbm9kZV9tb2R1bGVzL2QzLXRpbWUvc3JjL3V0Y1llYXIuanM/Mjk1MyJdLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgaW50ZXJ2YWwgZnJvbSBcIi4vaW50ZXJ2YWwuanNcIjtcblxudmFyIHV0Y1llYXIgPSBpbnRlcnZhbChmdW5jdGlvbihkYXRlKSB7XG4gIGRhdGUuc2V0VVRDTW9udGgoMCwgMSk7XG4gIGRhdGUuc2V0VVRDSG91cnMoMCwgMCwgMCwgMCk7XG59LCBmdW5jdGlvbihkYXRlLCBzdGVwKSB7XG4gIGRhdGUuc2V0VVRDRnVsbFllYXIoZGF0ZS5nZXRVVENGdWxsWWVhcigpICsgc3RlcCk7XG59LCBmdW5jdGlvbihzdGFydCwgZW5kKSB7XG4gIHJldHVybiBlbmQuZ2V0VVRDRnVsbFllYXIoKSAtIHN0YXJ0LmdldFVUQ0Z1bGxZZWFyKCk7XG59LCBmdW5jdGlvbihkYXRlKSB7XG4gIHJldHVybiBkYXRlLmdldFVUQ0Z1bGxZZWFyKCk7XG59KTtcblxuLy8gQW4gb3B0aW1pemVkIGltcGxlbWVudGF0aW9uIGZvciB0aGlzIHNpbXBsZSBjYXNlLlxudXRjWWVhci5ldmVyeSA9IGZ1bmN0aW9uKGspIHtcbiAgcmV0dXJuICFpc0Zpbml0ZShrID0gTWF0aC5mbG9vcihrKSkgfHwgIShrID4gMCkgPyBudWxsIDogaW50ZXJ2YWwoZnVuY3Rpb24oZGF0ZSkge1xuICAgIGRhdGUuc2V0VVRDRnVsbFllYXIoTWF0aC5mbG9vcihkYXRlLmdldFVUQ0Z1bGxZZWFyKCkgLyBrKSAqIGspO1xuICAgIGRhdGUuc2V0VVRDTW9udGgoMCwgMSk7XG4gICAgZGF0ZS5zZXRVVENIb3VycygwLCAwLCAwLCAwKTtcbiAgfSwgZnVuY3Rpb24oZGF0ZSwgc3RlcCkge1xuICAgIGRhdGUuc2V0VVRDRnVsbFllYXIoZGF0ZS5nZXRVVENGdWxsWWVhcigpICsgc3RlcCAqIGspO1xuICB9KTtcbn07XG5cbmV4cG9ydCBkZWZhdWx0IHV0Y1llYXI7XG5leHBvcnQgdmFyIHV0Y1llYXJzID0gdXRjWWVhci5yYW5nZTtcbiJdLCJtYXBwaW5ncyI6IkFBQUE7QUFBQTtBQUFBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTsiLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///./node_modules/vega-functions/node_modules/d3-time/src/utcYear.js\n");

/***/ }),

/***/ "./node_modules/vega-functions/node_modules/d3-time/src/week.js":
/*!**********************************************************************!*\
  !*** ./node_modules/vega-functions/node_modules/d3-time/src/week.js ***!
  \**********************************************************************/
/*! exports provided: sunday, monday, tuesday, wednesday, thursday, friday, saturday, sundays, mondays, tuesdays, wednesdays, thursdays, fridays, saturdays */
/***/ (function(module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"sunday\", function() { return sunday; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"monday\", function() { return monday; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"tuesday\", function() { return tuesday; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"wednesday\", function() { return wednesday; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"thursday\", function() { return thursday; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"friday\", function() { return friday; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"saturday\", function() { return saturday; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"sundays\", function() { return sundays; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"mondays\", function() { return mondays; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"tuesdays\", function() { return tuesdays; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"wednesdays\", function() { return wednesdays; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"thursdays\", function() { return thursdays; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"fridays\", function() { return fridays; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"saturdays\", function() { return saturdays; });\n/* harmony import */ var _interval_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./interval.js */ \"./node_modules/vega-functions/node_modules/d3-time/src/interval.js\");\n/* harmony import */ var _duration_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./duration.js */ \"./node_modules/vega-functions/node_modules/d3-time/src/duration.js\");\n\n\n\nfunction weekday(i) {\n  return Object(_interval_js__WEBPACK_IMPORTED_MODULE_0__[\"default\"])(function(date) {\n    date.setDate(date.getDate() - (date.getDay() + 7 - i) % 7);\n    date.setHours(0, 0, 0, 0);\n  }, function(date, step) {\n    date.setDate(date.getDate() + step * 7);\n  }, function(start, end) {\n    return (end - start - (end.getTimezoneOffset() - start.getTimezoneOffset()) * _duration_js__WEBPACK_IMPORTED_MODULE_1__[\"durationMinute\"]) / _duration_js__WEBPACK_IMPORTED_MODULE_1__[\"durationWeek\"];\n  });\n}\n\nvar sunday = weekday(0);\nvar monday = weekday(1);\nvar tuesday = weekday(2);\nvar wednesday = weekday(3);\nvar thursday = weekday(4);\nvar friday = weekday(5);\nvar saturday = weekday(6);\n\nvar sundays = sunday.range;\nvar mondays = monday.range;\nvar tuesdays = tuesday.range;\nvar wednesdays = wednesday.range;\nvar thursdays = thursday.range;\nvar fridays = friday.range;\nvar saturdays = saturday.range;\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvdmVnYS1mdW5jdGlvbnMvbm9kZV9tb2R1bGVzL2QzLXRpbWUvc3JjL3dlZWsuanMuanMiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvdmVnYS1mdW5jdGlvbnMvbm9kZV9tb2R1bGVzL2QzLXRpbWUvc3JjL3dlZWsuanM/MGZhYiJdLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgaW50ZXJ2YWwgZnJvbSBcIi4vaW50ZXJ2YWwuanNcIjtcbmltcG9ydCB7ZHVyYXRpb25NaW51dGUsIGR1cmF0aW9uV2Vla30gZnJvbSBcIi4vZHVyYXRpb24uanNcIjtcblxuZnVuY3Rpb24gd2Vla2RheShpKSB7XG4gIHJldHVybiBpbnRlcnZhbChmdW5jdGlvbihkYXRlKSB7XG4gICAgZGF0ZS5zZXREYXRlKGRhdGUuZ2V0RGF0ZSgpIC0gKGRhdGUuZ2V0RGF5KCkgKyA3IC0gaSkgJSA3KTtcbiAgICBkYXRlLnNldEhvdXJzKDAsIDAsIDAsIDApO1xuICB9LCBmdW5jdGlvbihkYXRlLCBzdGVwKSB7XG4gICAgZGF0ZS5zZXREYXRlKGRhdGUuZ2V0RGF0ZSgpICsgc3RlcCAqIDcpO1xuICB9LCBmdW5jdGlvbihzdGFydCwgZW5kKSB7XG4gICAgcmV0dXJuIChlbmQgLSBzdGFydCAtIChlbmQuZ2V0VGltZXpvbmVPZmZzZXQoKSAtIHN0YXJ0LmdldFRpbWV6b25lT2Zmc2V0KCkpICogZHVyYXRpb25NaW51dGUpIC8gZHVyYXRpb25XZWVrO1xuICB9KTtcbn1cblxuZXhwb3J0IHZhciBzdW5kYXkgPSB3ZWVrZGF5KDApO1xuZXhwb3J0IHZhciBtb25kYXkgPSB3ZWVrZGF5KDEpO1xuZXhwb3J0IHZhciB0dWVzZGF5ID0gd2Vla2RheSgyKTtcbmV4cG9ydCB2YXIgd2VkbmVzZGF5ID0gd2Vla2RheSgzKTtcbmV4cG9ydCB2YXIgdGh1cnNkYXkgPSB3ZWVrZGF5KDQpO1xuZXhwb3J0IHZhciBmcmlkYXkgPSB3ZWVrZGF5KDUpO1xuZXhwb3J0IHZhciBzYXR1cmRheSA9IHdlZWtkYXkoNik7XG5cbmV4cG9ydCB2YXIgc3VuZGF5cyA9IHN1bmRheS5yYW5nZTtcbmV4cG9ydCB2YXIgbW9uZGF5cyA9IG1vbmRheS5yYW5nZTtcbmV4cG9ydCB2YXIgdHVlc2RheXMgPSB0dWVzZGF5LnJhbmdlO1xuZXhwb3J0IHZhciB3ZWRuZXNkYXlzID0gd2VkbmVzZGF5LnJhbmdlO1xuZXhwb3J0IHZhciB0aHVyc2RheXMgPSB0aHVyc2RheS5yYW5nZTtcbmV4cG9ydCB2YXIgZnJpZGF5cyA9IGZyaWRheS5yYW5nZTtcbmV4cG9ydCB2YXIgc2F0dXJkYXlzID0gc2F0dXJkYXkucmFuZ2U7XG4iXSwibWFwcGluZ3MiOiJBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOyIsInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///./node_modules/vega-functions/node_modules/d3-time/src/week.js\n");

/***/ }),

/***/ "./node_modules/vega-functions/node_modules/d3-time/src/year.js":
/*!**********************************************************************!*\
  !*** ./node_modules/vega-functions/node_modules/d3-time/src/year.js ***!
  \**********************************************************************/
/*! exports provided: default, years */
/***/ (function(module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"years\", function() { return years; });\n/* harmony import */ var _interval_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./interval.js */ \"./node_modules/vega-functions/node_modules/d3-time/src/interval.js\");\n\n\nvar year = Object(_interval_js__WEBPACK_IMPORTED_MODULE_0__[\"default\"])(function(date) {\n  date.setMonth(0, 1);\n  date.setHours(0, 0, 0, 0);\n}, function(date, step) {\n  date.setFullYear(date.getFullYear() + step);\n}, function(start, end) {\n  return end.getFullYear() - start.getFullYear();\n}, function(date) {\n  return date.getFullYear();\n});\n\n// An optimized implementation for this simple case.\nyear.every = function(k) {\n  return !isFinite(k = Math.floor(k)) || !(k > 0) ? null : Object(_interval_js__WEBPACK_IMPORTED_MODULE_0__[\"default\"])(function(date) {\n    date.setFullYear(Math.floor(date.getFullYear() / k) * k);\n    date.setMonth(0, 1);\n    date.setHours(0, 0, 0, 0);\n  }, function(date, step) {\n    date.setFullYear(date.getFullYear() + step * k);\n  });\n};\n\n/* harmony default export */ __webpack_exports__[\"default\"] = (year);\nvar years = year.range;\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvdmVnYS1mdW5jdGlvbnMvbm9kZV9tb2R1bGVzL2QzLXRpbWUvc3JjL3llYXIuanMuanMiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvdmVnYS1mdW5jdGlvbnMvbm9kZV9tb2R1bGVzL2QzLXRpbWUvc3JjL3llYXIuanM/ZWEzNiJdLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgaW50ZXJ2YWwgZnJvbSBcIi4vaW50ZXJ2YWwuanNcIjtcblxudmFyIHllYXIgPSBpbnRlcnZhbChmdW5jdGlvbihkYXRlKSB7XG4gIGRhdGUuc2V0TW9udGgoMCwgMSk7XG4gIGRhdGUuc2V0SG91cnMoMCwgMCwgMCwgMCk7XG59LCBmdW5jdGlvbihkYXRlLCBzdGVwKSB7XG4gIGRhdGUuc2V0RnVsbFllYXIoZGF0ZS5nZXRGdWxsWWVhcigpICsgc3RlcCk7XG59LCBmdW5jdGlvbihzdGFydCwgZW5kKSB7XG4gIHJldHVybiBlbmQuZ2V0RnVsbFllYXIoKSAtIHN0YXJ0LmdldEZ1bGxZZWFyKCk7XG59LCBmdW5jdGlvbihkYXRlKSB7XG4gIHJldHVybiBkYXRlLmdldEZ1bGxZZWFyKCk7XG59KTtcblxuLy8gQW4gb3B0aW1pemVkIGltcGxlbWVudGF0aW9uIGZvciB0aGlzIHNpbXBsZSBjYXNlLlxueWVhci5ldmVyeSA9IGZ1bmN0aW9uKGspIHtcbiAgcmV0dXJuICFpc0Zpbml0ZShrID0gTWF0aC5mbG9vcihrKSkgfHwgIShrID4gMCkgPyBudWxsIDogaW50ZXJ2YWwoZnVuY3Rpb24oZGF0ZSkge1xuICAgIGRhdGUuc2V0RnVsbFllYXIoTWF0aC5mbG9vcihkYXRlLmdldEZ1bGxZZWFyKCkgLyBrKSAqIGspO1xuICAgIGRhdGUuc2V0TW9udGgoMCwgMSk7XG4gICAgZGF0ZS5zZXRIb3VycygwLCAwLCAwLCAwKTtcbiAgfSwgZnVuY3Rpb24oZGF0ZSwgc3RlcCkge1xuICAgIGRhdGUuc2V0RnVsbFllYXIoZGF0ZS5nZXRGdWxsWWVhcigpICsgc3RlcCAqIGspO1xuICB9KTtcbn07XG5cbmV4cG9ydCBkZWZhdWx0IHllYXI7XG5leHBvcnQgdmFyIHllYXJzID0geWVhci5yYW5nZTtcbiJdLCJtYXBwaW5ncyI6IkFBQUE7QUFBQTtBQUFBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTsiLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///./node_modules/vega-functions/node_modules/d3-time/src/year.js\n");

/***/ }),

/***/ "./node_modules/vega-functions/node_modules/vega-dataflow/build/vega-dataflow.module.js":
/*!**********************************************************************************************!*\
  !*** ./node_modules/vega-functions/node_modules/vega-dataflow/build/vega-dataflow.module.js ***!
  \**********************************************************************************************/
/*! exports provided: Dataflow, EventStream, MultiPulse, Operator, Parameters, Pulse, Transform, UniqueList, asyncCallback, changeset, definition, derive, ingest, isChangeSet, isTuple, rederive, replace, stableCompare, transform, transforms, tupleid */
/***/ (function(module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"Dataflow\", function() { return Dataflow; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"EventStream\", function() { return EventStream; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"MultiPulse\", function() { return MultiPulse; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"Operator\", function() { return Operator; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"Parameters\", function() { return Parameters; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"Pulse\", function() { return Pulse; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"Transform\", function() { return Transform; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"UniqueList\", function() { return UniqueList; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"asyncCallback\", function() { return asyncCallback; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"changeset\", function() { return changeset; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"definition\", function() { return definition; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"derive\", function() { return derive; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"ingest\", function() { return ingest$1; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"isChangeSet\", function() { return isChangeSet; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"isTuple\", function() { return isTuple; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"rederive\", function() { return rederive; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"replace\", function() { return replace; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"stableCompare\", function() { return stableCompare; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"transform\", function() { return transform; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"transforms\", function() { return transforms; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"tupleid\", function() { return tupleid; });\n/* harmony import */ var vega_util__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! vega-util */ \"./node_modules/vega-functions/node_modules/vega-util/build/vega-util.module.js\");\n/* harmony import */ var vega_loader__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! vega-loader */ \"./node_modules/vega-functions/node_modules/vega-loader/index.browser.js\");\n/* harmony import */ var vega_format__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! vega-format */ \"./node_modules/vega-format/build/vega-format.module.js\");\n\n\n\n\nfunction UniqueList(idFunc) {\n  const $ = idFunc || vega_util__WEBPACK_IMPORTED_MODULE_0__[\"identity\"],\n        list = [],\n        ids = {};\n\n  list.add = _ => {\n    const id = $(_);\n\n    if (!ids[id]) {\n      ids[id] = 1;\n      list.push(_);\n    }\n\n    return list;\n  };\n\n  list.remove = _ => {\n    const id = $(_);\n\n    if (ids[id]) {\n      ids[id] = 0;\n      const idx = list.indexOf(_);\n      if (idx >= 0) list.splice(idx, 1);\n    }\n\n    return list;\n  };\n\n  return list;\n}\n\n/**\n * Invoke and await a potentially async callback function. If\n * an error occurs, trap it and route to Dataflow.error.\n * @param {Dataflow} df - The dataflow instance\n * @param {function} callback - A callback function to invoke\n *   and then await. The dataflow will be passed as the single\n *   argument to the function.\n */\nasync function asyncCallback (df, callback) {\n  try {\n    await callback(df);\n  } catch (err) {\n    df.error(err);\n  }\n}\n\nconst TUPLE_ID_KEY = Symbol('vega_id');\nlet TUPLE_ID = 1;\n/**\n * Checks if an input value is a registered tuple.\n * @param {*} t - The value to check.\n * @return {boolean} True if the input is a tuple, false otherwise.\n */\n\nfunction isTuple(t) {\n  return !!(t && tupleid(t));\n}\n/**\n * Returns the id of a tuple.\n * @param {object} t - The input tuple.\n * @return {*} the tuple id.\n */\n\nfunction tupleid(t) {\n  return t[TUPLE_ID_KEY];\n}\n/**\n * Sets the id of a tuple.\n * @param {object} t - The input tuple.\n * @param {*} id - The id value to set.\n * @return {object} the input tuple.\n */\n\nfunction setid(t, id) {\n  t[TUPLE_ID_KEY] = id;\n  return t;\n}\n/**\n * Ingest an object or value as a data tuple.\n * If the input value is an object, an id field will be added to it. For\n * efficiency, the input object is modified directly. A copy is not made.\n * If the input value is a literal, it will be wrapped in a new object\n * instance, with the value accessible as the 'data' property.\n * @param datum - The value to ingest.\n * @return {object} The ingested data tuple.\n */\n\n\nfunction ingest$1(datum) {\n  const t = datum === Object(datum) ? datum : {\n    data: datum\n  };\n  return tupleid(t) ? t : setid(t, TUPLE_ID++);\n}\n/**\n * Given a source tuple, return a derived copy.\n * @param {object} t - The source tuple.\n * @return {object} The derived tuple.\n */\n\nfunction derive(t) {\n  return rederive(t, ingest$1({}));\n}\n/**\n * Rederive a derived tuple by copying values from the source tuple.\n * @param {object} t - The source tuple.\n * @param {object} d - The derived tuple.\n * @return {object} The derived tuple.\n */\n\nfunction rederive(t, d) {\n  for (const k in t) d[k] = t[k];\n\n  return d;\n}\n/**\n * Replace an existing tuple with a new tuple.\n * @param {object} t - The existing data tuple.\n * @param {object} d - The new tuple that replaces the old.\n * @return {object} The new tuple.\n */\n\nfunction replace(t, d) {\n  return setid(d, tupleid(t));\n}\n/**\n * Generate an augmented comparator function that provides stable\n * sorting by tuple id when the given comparator produces ties.\n * @param {function} cmp - The comparator to augment.\n * @param {function} [f] - Optional tuple accessor function.\n * @return {function} An augmented comparator function.\n */\n\nfunction stableCompare(cmp, f) {\n  return !cmp ? null : f ? (a, b) => cmp(a, b) || tupleid(f(a)) - tupleid(f(b)) : (a, b) => cmp(a, b) || tupleid(a) - tupleid(b);\n}\n\nfunction isChangeSet(v) {\n  return v && v.constructor === changeset;\n}\nfunction changeset() {\n  const add = [],\n        // insert tuples\n  rem = [],\n        // remove tuples\n  mod = [],\n        // modify tuples\n  remp = [],\n        // remove by predicate\n  modp = []; // modify by predicate\n\n  let clean = null,\n      reflow = false;\n  return {\n    constructor: changeset,\n\n    insert(t) {\n      const d = Object(vega_util__WEBPACK_IMPORTED_MODULE_0__[\"array\"])(t),\n            n = d.length;\n\n      for (let i = 0; i < n; ++i) add.push(d[i]);\n\n      return this;\n    },\n\n    remove(t) {\n      const a = Object(vega_util__WEBPACK_IMPORTED_MODULE_0__[\"isFunction\"])(t) ? remp : rem,\n            d = Object(vega_util__WEBPACK_IMPORTED_MODULE_0__[\"array\"])(t),\n            n = d.length;\n\n      for (let i = 0; i < n; ++i) a.push(d[i]);\n\n      return this;\n    },\n\n    modify(t, field, value) {\n      const m = {\n        field: field,\n        value: Object(vega_util__WEBPACK_IMPORTED_MODULE_0__[\"constant\"])(value)\n      };\n\n      if (Object(vega_util__WEBPACK_IMPORTED_MODULE_0__[\"isFunction\"])(t)) {\n        m.filter = t;\n        modp.push(m);\n      } else {\n        m.tuple = t;\n        mod.push(m);\n      }\n\n      return this;\n    },\n\n    encode(t, set) {\n      if (Object(vega_util__WEBPACK_IMPORTED_MODULE_0__[\"isFunction\"])(t)) modp.push({\n        filter: t,\n        field: set\n      });else mod.push({\n        tuple: t,\n        field: set\n      });\n      return this;\n    },\n\n    clean(value) {\n      clean = value;\n      return this;\n    },\n\n    reflow() {\n      reflow = true;\n      return this;\n    },\n\n    pulse(pulse, tuples) {\n      const cur = {},\n            out = {};\n      let i, n, m, f, t, id; // build lookup table of current tuples\n\n      for (i = 0, n = tuples.length; i < n; ++i) {\n        cur[tupleid(tuples[i])] = 1;\n      } // process individual tuples to remove\n\n\n      for (i = 0, n = rem.length; i < n; ++i) {\n        t = rem[i];\n        cur[tupleid(t)] = -1;\n      } // process predicate-based removals\n\n\n      for (i = 0, n = remp.length; i < n; ++i) {\n        f = remp[i];\n        tuples.forEach(t => {\n          if (f(t)) cur[tupleid(t)] = -1;\n        });\n      } // process all add tuples\n\n\n      for (i = 0, n = add.length; i < n; ++i) {\n        t = add[i];\n        id = tupleid(t);\n\n        if (cur[id]) {\n          // tuple already resides in dataset\n          // if flagged for both add and remove, cancel\n          cur[id] = 1;\n        } else {\n          // tuple does not reside in dataset, add\n          pulse.add.push(ingest$1(add[i]));\n        }\n      } // populate pulse rem list\n\n\n      for (i = 0, n = tuples.length; i < n; ++i) {\n        t = tuples[i];\n        if (cur[tupleid(t)] < 0) pulse.rem.push(t);\n      } // modify helper method\n\n\n      function modify(t, f, v) {\n        if (v) {\n          t[f] = v(t);\n        } else {\n          pulse.encode = f;\n        }\n\n        if (!reflow) out[tupleid(t)] = t;\n      } // process individual tuples to modify\n\n\n      for (i = 0, n = mod.length; i < n; ++i) {\n        m = mod[i];\n        t = m.tuple;\n        f = m.field;\n        id = cur[tupleid(t)];\n\n        if (id > 0) {\n          modify(t, f, m.value);\n          pulse.modifies(f);\n        }\n      } // process predicate-based modifications\n\n\n      for (i = 0, n = modp.length; i < n; ++i) {\n        m = modp[i];\n        f = m.filter;\n        tuples.forEach(t => {\n          if (f(t) && cur[tupleid(t)] > 0) {\n            modify(t, m.field, m.value);\n          }\n        });\n        pulse.modifies(m.field);\n      } // upon reflow request, populate mod with all non-removed tuples\n      // otherwise, populate mod with modified tuples only\n\n\n      if (reflow) {\n        pulse.mod = rem.length || remp.length ? tuples.filter(t => cur[tupleid(t)] > 0) : tuples.slice();\n      } else {\n        for (id in out) pulse.mod.push(out[id]);\n      } // set pulse garbage collection request\n\n\n      if (clean || clean == null && (rem.length || remp.length)) {\n        pulse.clean(true);\n      }\n\n      return pulse;\n    }\n\n  };\n}\n\nconst CACHE = '_:mod:_';\n/**\n * Hash that tracks modifications to assigned values.\n * Callers *must* use the set method to update values.\n */\n\nfunction Parameters() {\n  Object.defineProperty(this, CACHE, {\n    writable: true,\n    value: {}\n  });\n}\nParameters.prototype = {\n  /**\n   * Set a parameter value. If the parameter value changes, the parameter\n   * will be recorded as modified.\n   * @param {string} name - The parameter name.\n   * @param {number} index - The index into an array-value parameter. Ignored if\n   *   the argument is undefined, null or less than zero.\n   * @param {*} value - The parameter value to set.\n   * @param {boolean} [force=false] - If true, records the parameter as modified\n   *   even if the value is unchanged.\n   * @return {Parameters} - This parameter object.\n   */\n  set(name, index, value, force) {\n    const o = this,\n          v = o[name],\n          mod = o[CACHE];\n\n    if (index != null && index >= 0) {\n      if (v[index] !== value || force) {\n        v[index] = value;\n        mod[index + ':' + name] = -1;\n        mod[name] = -1;\n      }\n    } else if (v !== value || force) {\n      o[name] = value;\n      mod[name] = Object(vega_util__WEBPACK_IMPORTED_MODULE_0__[\"isArray\"])(value) ? 1 + value.length : -1;\n    }\n\n    return o;\n  },\n\n  /**\n   * Tests if one or more parameters has been modified. If invoked with no\n   * arguments, returns true if any parameter value has changed. If the first\n   * argument is array, returns trues if any parameter name in the array has\n   * changed. Otherwise, tests if the given name and optional array index has\n   * changed.\n   * @param {string} name - The parameter name to test.\n   * @param {number} [index=undefined] - The parameter array index to test.\n   * @return {boolean} - Returns true if a queried parameter was modified.\n   */\n  modified(name, index) {\n    const mod = this[CACHE];\n\n    if (!arguments.length) {\n      for (const k in mod) {\n        if (mod[k]) return true;\n      }\n\n      return false;\n    } else if (Object(vega_util__WEBPACK_IMPORTED_MODULE_0__[\"isArray\"])(name)) {\n      for (let k = 0; k < name.length; ++k) {\n        if (mod[name[k]]) return true;\n      }\n\n      return false;\n    }\n\n    return index != null && index >= 0 ? index + 1 < mod[name] || !!mod[index + ':' + name] : !!mod[name];\n  },\n\n  /**\n   * Clears the modification records. After calling this method,\n   * all parameters are considered unmodified.\n   */\n  clear() {\n    this[CACHE] = {};\n    return this;\n  }\n\n};\n\nlet OP_ID = 0;\nconst PULSE = 'pulse',\n      NO_PARAMS = new Parameters(); // Boolean Flags\n\nconst SKIP$1 = 1,\n      MODIFIED = 2;\n/**\n * An Operator is a processing node in a dataflow graph.\n * Each operator stores a value and an optional value update function.\n * Operators can accept a hash of named parameters. Parameter values can\n * either be direct (JavaScript literals, arrays, objects) or indirect\n * (other operators whose values will be pulled dynamically). Operators\n * included as parameters will have this operator added as a dependency.\n * @constructor\n * @param {*} [init] - The initial value for this operator.\n * @param {function(object, Pulse)} [update] - An update function. Upon\n *   evaluation of this operator, the update function will be invoked and the\n *   return value will be used as the new value of this operator.\n * @param {object} [params] - The parameters for this operator.\n * @param {boolean} [react=true] - Flag indicating if this operator should\n *   listen for changes to upstream operators included as parameters.\n * @see parameters\n */\n\nfunction Operator(init, update, params, react) {\n  this.id = ++OP_ID;\n  this.value = init;\n  this.stamp = -1;\n  this.rank = -1;\n  this.qrank = -1;\n  this.flags = 0;\n\n  if (update) {\n    this._update = update;\n  }\n\n  if (params) this.parameters(params, react);\n}\n\nfunction flag(bit) {\n  return function (state) {\n    const f = this.flags;\n    if (arguments.length === 0) return !!(f & bit);\n    this.flags = state ? f | bit : f & ~bit;\n    return this;\n  };\n}\n\nOperator.prototype = {\n  /**\n   * Returns a list of target operators dependent on this operator.\n   * If this list does not exist, it is created and then returned.\n   * @return {UniqueList}\n   */\n  targets() {\n    return this._targets || (this._targets = UniqueList(vega_util__WEBPACK_IMPORTED_MODULE_0__[\"id\"]));\n  },\n\n  /**\n   * Sets the value of this operator.\n   * @param {*} value - the value to set.\n   * @return {Number} Returns 1 if the operator value has changed\n   *   according to strict equality, returns 0 otherwise.\n   */\n  set(value) {\n    if (this.value !== value) {\n      this.value = value;\n      return 1;\n    } else {\n      return 0;\n    }\n  },\n\n  /**\n   * Indicates that operator evaluation should be skipped on the next pulse.\n   * This operator will still propagate incoming pulses, but its update function\n   * will not be invoked. The skip flag is reset after every pulse, so calling\n   * this method will affect processing of the next pulse only.\n   */\n  skip: flag(SKIP$1),\n\n  /**\n   * Indicates that this operator's value has been modified on its most recent\n   * pulse. Normally modification is checked via strict equality; however, in\n   * some cases it is more efficient to update the internal state of an object.\n   * In those cases, the modified flag can be used to trigger propagation. Once\n   * set, the modification flag persists across pulses until unset. The flag can\n   * be used with the last timestamp to test if a modification is recent.\n   */\n  modified: flag(MODIFIED),\n\n  /**\n   * Sets the parameters for this operator. The parameter values are analyzed for\n   * operator instances. If found, this operator will be added as a dependency\n   * of the parameterizing operator. Operator values are dynamically marshalled\n   * from each operator parameter prior to evaluation. If a parameter value is\n   * an array, the array will also be searched for Operator instances. However,\n   * the search does not recurse into sub-arrays or object properties.\n   * @param {object} params - A hash of operator parameters.\n   * @param {boolean} [react=true] - A flag indicating if this operator should\n   *   automatically update (react) when parameter values change. In other words,\n   *   this flag determines if the operator registers itself as a listener on\n   *   any upstream operators included in the parameters.\n   * @param {boolean} [initonly=false] - A flag indicating if this operator\n   *   should calculate an update only upon its initiatal evaluation, then\n   *   deregister dependencies and suppress all future update invocations.\n   * @return {Operator[]} - An array of upstream dependencies.\n   */\n  parameters(params, react, initonly) {\n    react = react !== false;\n    const argval = this._argval = this._argval || new Parameters(),\n          argops = this._argops = this._argops || [],\n          deps = [];\n    let name, value, n, i;\n\n    const add = (name, index, value) => {\n      if (value instanceof Operator) {\n        if (value !== this) {\n          if (react) value.targets().add(this);\n          deps.push(value);\n        }\n\n        argops.push({\n          op: value,\n          name: name,\n          index: index\n        });\n      } else {\n        argval.set(name, index, value);\n      }\n    };\n\n    for (name in params) {\n      value = params[name];\n\n      if (name === PULSE) {\n        Object(vega_util__WEBPACK_IMPORTED_MODULE_0__[\"array\"])(value).forEach(op => {\n          if (!(op instanceof Operator)) {\n            Object(vega_util__WEBPACK_IMPORTED_MODULE_0__[\"error\"])('Pulse parameters must be operator instances.');\n          } else if (op !== this) {\n            op.targets().add(this);\n            deps.push(op);\n          }\n        });\n        this.source = value;\n      } else if (Object(vega_util__WEBPACK_IMPORTED_MODULE_0__[\"isArray\"])(value)) {\n        argval.set(name, -1, Array(n = value.length));\n\n        for (i = 0; i < n; ++i) add(name, i, value[i]);\n      } else {\n        add(name, -1, value);\n      }\n    }\n\n    this.marshall().clear(); // initialize values\n\n    if (initonly) argops.initonly = true;\n    return deps;\n  },\n\n  /**\n   * Internal method for marshalling parameter values.\n   * Visits each operator dependency to pull the latest value.\n   * @return {Parameters} A Parameters object to pass to the update function.\n   */\n  marshall(stamp) {\n    const argval = this._argval || NO_PARAMS,\n          argops = this._argops;\n    let item, i, op, mod;\n\n    if (argops) {\n      const n = argops.length;\n\n      for (i = 0; i < n; ++i) {\n        item = argops[i];\n        op = item.op;\n        mod = op.modified() && op.stamp === stamp;\n        argval.set(item.name, item.index, op.value, mod);\n      }\n\n      if (argops.initonly) {\n        for (i = 0; i < n; ++i) {\n          item = argops[i];\n          item.op.targets().remove(this);\n        }\n\n        this._argops = null;\n        this._update = null;\n      }\n    }\n\n    return argval;\n  },\n\n  /**\n   * Detach this operator from the dataflow.\n   * Unregisters listeners on upstream dependencies.\n   */\n  detach() {\n    const argops = this._argops;\n    let i, n, item, op;\n\n    if (argops) {\n      for (i = 0, n = argops.length; i < n; ++i) {\n        item = argops[i];\n        op = item.op;\n\n        if (op._targets) {\n          op._targets.remove(this);\n        }\n      }\n    } // remove references to the source and pulse object,\n    // if present, to prevent memory leaks of old data.\n\n\n    this.pulse = null;\n    this.source = null;\n  },\n\n  /**\n   * Delegate method to perform operator processing.\n   * Subclasses can override this method to perform custom processing.\n   * By default, it marshalls parameters and calls the update function\n   * if that function is defined. If the update function does not\n   * change the operator value then StopPropagation is returned.\n   * If no update function is defined, this method does nothing.\n   * @param {Pulse} pulse - the current dataflow pulse.\n   * @return The output pulse or StopPropagation. A falsy return value\n   *   (including undefined) will let the input pulse pass through.\n   */\n  evaluate(pulse) {\n    const update = this._update;\n\n    if (update) {\n      const params = this.marshall(pulse.stamp),\n            v = update.call(this, params, pulse);\n      params.clear();\n\n      if (v !== this.value) {\n        this.value = v;\n      } else if (!this.modified()) {\n        return pulse.StopPropagation;\n      }\n    }\n  },\n\n  /**\n   * Run this operator for the current pulse. If this operator has already\n   * been run at (or after) the pulse timestamp, returns StopPropagation.\n   * Internally, this method calls {@link evaluate} to perform processing.\n   * If {@link evaluate} returns a falsy value, the input pulse is returned.\n   * This method should NOT be overridden, instead overrride {@link evaluate}.\n   * @param {Pulse} pulse - the current dataflow pulse.\n   * @return the output pulse for this operator (or StopPropagation)\n   */\n  run(pulse) {\n    if (pulse.stamp < this.stamp) return pulse.StopPropagation;\n    let rv;\n\n    if (this.skip()) {\n      this.skip(false);\n      rv = 0;\n    } else {\n      rv = this.evaluate(pulse);\n    }\n\n    return this.pulse = rv || pulse;\n  }\n\n};\n\n/**\n * Add an operator to the dataflow graph. This function accepts a\n * variety of input argument types. The basic signature supports an\n * initial value, update function and parameters. If the first parameter\n * is an Operator instance, it will be added directly. If it is a\n * constructor for an Operator subclass, a new instance will be instantiated.\n * Otherwise, if the first parameter is a function instance, it will be used\n * as the update function and a null initial value is assumed.\n * @param {*} init - One of: the operator to add, the initial value of\n *   the operator, an operator class to instantiate, or an update function.\n * @param {function} [update] - The operator update function.\n * @param {object} [params] - The operator parameters.\n * @param {boolean} [react=true] - Flag indicating if this operator should\n *   listen for changes to upstream operators included as parameters.\n * @return {Operator} - The added operator.\n */\n\nfunction add (init, update, params, react) {\n  let shift = 1,\n      op;\n\n  if (init instanceof Operator) {\n    op = init;\n  } else if (init && init.prototype instanceof Operator) {\n    op = new init();\n  } else if (Object(vega_util__WEBPACK_IMPORTED_MODULE_0__[\"isFunction\"])(init)) {\n    op = new Operator(null, init);\n  } else {\n    shift = 0;\n    op = new Operator(init, update);\n  }\n\n  this.rank(op);\n\n  if (shift) {\n    react = params;\n    params = update;\n  }\n\n  if (params) this.connect(op, op.parameters(params, react));\n  this.touch(op);\n  return op;\n}\n\n/**\n * Connect a target operator as a dependent of source operators.\n * If necessary, this method will rerank the target operator and its\n * dependents to ensure propagation proceeds in a topologically sorted order.\n * @param {Operator} target - The target operator.\n * @param {Array<Operator>} - The source operators that should propagate\n *   to the target operator.\n */\nfunction connect (target, sources) {\n  const targetRank = target.rank,\n        n = sources.length;\n\n  for (let i = 0; i < n; ++i) {\n    if (targetRank < sources[i].rank) {\n      this.rerank(target);\n      return;\n    }\n  }\n}\n\nlet STREAM_ID = 0;\n/**\n * Models an event stream.\n * @constructor\n * @param {function(Object, number): boolean} [filter] - Filter predicate.\n *   Events pass through when truthy, events are suppressed when falsy.\n * @param {function(Object): *} [apply] - Applied to input events to produce\n *   new event values.\n * @param {function(Object)} [receive] - Event callback function to invoke\n *   upon receipt of a new event. Use to override standard event processing.\n */\n\nfunction EventStream(filter, apply, receive) {\n  this.id = ++STREAM_ID;\n  this.value = null;\n  if (receive) this.receive = receive;\n  if (filter) this._filter = filter;\n  if (apply) this._apply = apply;\n}\n/**\n * Creates a new event stream instance with the provided\n * (optional) filter, apply and receive functions.\n * @param {function(Object, number): boolean} [filter] - Filter predicate.\n *   Events pass through when truthy, events are suppressed when falsy.\n * @param {function(Object): *} [apply] - Applied to input events to produce\n *   new event values.\n * @see EventStream\n */\n\nfunction stream(filter, apply, receive) {\n  return new EventStream(filter, apply, receive);\n}\nEventStream.prototype = {\n  _filter: vega_util__WEBPACK_IMPORTED_MODULE_0__[\"truthy\"],\n  _apply: vega_util__WEBPACK_IMPORTED_MODULE_0__[\"identity\"],\n\n  targets() {\n    return this._targets || (this._targets = UniqueList(vega_util__WEBPACK_IMPORTED_MODULE_0__[\"id\"]));\n  },\n\n  consume(_) {\n    if (!arguments.length) return !!this._consume;\n    this._consume = !!_;\n    return this;\n  },\n\n  receive(evt) {\n    if (this._filter(evt)) {\n      const val = this.value = this._apply(evt),\n            trg = this._targets,\n            n = trg ? trg.length : 0;\n\n      for (let i = 0; i < n; ++i) trg[i].receive(val);\n\n      if (this._consume) {\n        evt.preventDefault();\n        evt.stopPropagation();\n      }\n    }\n  },\n\n  filter(filter) {\n    const s = stream(filter);\n    this.targets().add(s);\n    return s;\n  },\n\n  apply(apply) {\n    const s = stream(null, apply);\n    this.targets().add(s);\n    return s;\n  },\n\n  merge() {\n    const s = stream();\n    this.targets().add(s);\n\n    for (let i = 0, n = arguments.length; i < n; ++i) {\n      arguments[i].targets().add(s);\n    }\n\n    return s;\n  },\n\n  throttle(pause) {\n    let t = -1;\n    return this.filter(() => {\n      const now = Date.now();\n\n      if (now - t > pause) {\n        t = now;\n        return 1;\n      } else {\n        return 0;\n      }\n    });\n  },\n\n  debounce(delay) {\n    const s = stream();\n    this.targets().add(stream(null, null, Object(vega_util__WEBPACK_IMPORTED_MODULE_0__[\"debounce\"])(delay, e => {\n      const df = e.dataflow;\n      s.receive(e);\n      if (df && df.run) df.run();\n    })));\n    return s;\n  },\n\n  between(a, b) {\n    let active = false;\n    a.targets().add(stream(null, null, () => active = true));\n    b.targets().add(stream(null, null, () => active = false));\n    return this.filter(() => active);\n  },\n\n  detach() {\n    // ensures compatibility with operators (#2753)\n    // remove references to other streams and filter functions that may\n    // be bound to subcontexts that need to be garbage collected.\n    this._filter = vega_util__WEBPACK_IMPORTED_MODULE_0__[\"truthy\"];\n    this._targets = null;\n  }\n\n};\n\n/**\n * Create a new event stream from an event source.\n * @param {object} source - The event source to monitor. The input must\n *  support the addEventListener method.\n * @param {string} type - The event type.\n * @param {function(object): boolean} [filter] - Event filter function.\n * @param {function(object): *} [apply] - Event application function.\n *   If provided, this function will be invoked and the result will be\n *   used as the downstream event value.\n * @return {EventStream}\n */\n\nfunction events (source, type, filter, apply) {\n  const df = this,\n        s = stream(filter, apply),\n        send = function (e) {\n    e.dataflow = df;\n\n    try {\n      s.receive(e);\n    } catch (error) {\n      df.error(error);\n    } finally {\n      df.run();\n    }\n  };\n\n  let sources;\n\n  if (typeof source === 'string' && typeof document !== 'undefined') {\n    sources = document.querySelectorAll(source);\n  } else {\n    sources = Object(vega_util__WEBPACK_IMPORTED_MODULE_0__[\"array\"])(source);\n  }\n\n  const n = sources.length;\n\n  for (let i = 0; i < n; ++i) {\n    sources[i].addEventListener(type, send);\n  }\n\n  return s;\n}\n\nfunction parse(data, format) {\n  const locale = this.locale();\n  return Object(vega_loader__WEBPACK_IMPORTED_MODULE_1__[\"read\"])(data, format, locale.timeParse, locale.utcParse);\n}\n/**\n * Ingests new data into the dataflow. First parses the data using the\n * vega-loader read method, then pulses a changeset to the target operator.\n * @param {Operator} target - The Operator to target with ingested data,\n *   typically a Collect transform instance.\n * @param {*} data - The input data, prior to parsing. For JSON this may\n *   be a string or an object. For CSV, TSV, etc should be a string.\n * @param {object} format - The data format description for parsing\n *   loaded data. This object is passed to the vega-loader read method.\n * @returns {Dataflow}\n */\n\nfunction ingest(target, data, format) {\n  data = this.parse(data, format);\n  return this.pulse(target, this.changeset().insert(data));\n}\n/**\n * Request data from an external source, parse it, and return a Promise.\n * @param {string} url - The URL from which to load the data. This string\n *   is passed to the vega-loader load method.\n * @param {object} [format] - The data format description for parsing\n *   loaded data. This object is passed to the vega-loader read method.\n * @return {Promise} A Promise that resolves upon completion of the request.\n *   The resolved object contains the following properties:\n *   - data: an array of parsed data (or null upon error)\n *   - status: a code for success (0), load fail (-1), or parse fail (-2)\n */\n\nasync function request(url, format) {\n  const df = this;\n  let status = 0,\n      data;\n\n  try {\n    data = await df.loader().load(url, {\n      context: 'dataflow',\n      response: Object(vega_loader__WEBPACK_IMPORTED_MODULE_1__[\"responseType\"])(format && format.type)\n    });\n\n    try {\n      data = df.parse(data, format);\n    } catch (err) {\n      status = -2;\n      df.warn('Data ingestion failed', url, err);\n    }\n  } catch (err) {\n    status = -1;\n    df.warn('Loading failed', url, err);\n  }\n\n  return {\n    data,\n    status\n  };\n}\nasync function preload(target, url, format) {\n  const df = this,\n        pending = df._pending || loadPending(df);\n  pending.requests += 1;\n  const res = await df.request(url, format);\n  df.pulse(target, df.changeset().remove(vega_util__WEBPACK_IMPORTED_MODULE_0__[\"truthy\"]).insert(res.data || []));\n  pending.done();\n  return res;\n}\n\nfunction loadPending(df) {\n  let accept;\n  const pending = new Promise(a => accept = a);\n  pending.requests = 0;\n\n  pending.done = () => {\n    if (--pending.requests === 0) {\n      df._pending = null;\n      accept(df);\n    }\n  };\n\n  return df._pending = pending;\n}\n\nconst SKIP = {\n  skip: true\n};\n/**\n * Perform operator updates in response to events. Applies an\n * update function to compute a new operator value. If the update function\n * returns a {@link ChangeSet}, the operator will be pulsed with those tuple\n * changes. Otherwise, the operator value will be updated to the return value.\n * @param {EventStream|Operator} source - The event source to react to.\n *   This argument can be either an EventStream or an Operator.\n * @param {Operator|function(object):Operator} target - The operator to update.\n *   This argument can either be an Operator instance or (if the source\n *   argument is an EventStream), a function that accepts an event object as\n *   input and returns an Operator to target.\n * @param {function(Parameters,Event): *} [update] - Optional update function\n *   to compute the new operator value, or a literal value to set. Update\n *   functions expect to receive a parameter object and event as arguments.\n *   This function can either return a new operator value or (if the source\n *   argument is an EventStream) a {@link ChangeSet} instance to pulse\n *   the target operator with tuple changes.\n * @param {object} [params] - The update function parameters.\n * @param {object} [options] - Additional options hash. If not overridden,\n *   updated operators will be skipped by default.\n * @param {boolean} [options.skip] - If true, the operator will\n *  be skipped: it will not be evaluated, but its dependents will be.\n * @param {boolean} [options.force] - If true, the operator will\n *   be re-evaluated even if its value has not changed.\n * @return {Dataflow}\n */\n\nfunction on (source, target, update, params, options) {\n  const fn = source instanceof Operator ? onOperator : onStream;\n  fn(this, source, target, update, params, options);\n  return this;\n}\n\nfunction onStream(df, stream, target, update, params, options) {\n  const opt = Object(vega_util__WEBPACK_IMPORTED_MODULE_0__[\"extend\"])({}, options, SKIP);\n  let func, op;\n  if (!Object(vega_util__WEBPACK_IMPORTED_MODULE_0__[\"isFunction\"])(target)) target = Object(vega_util__WEBPACK_IMPORTED_MODULE_0__[\"constant\"])(target);\n\n  if (update === undefined) {\n    func = e => df.touch(target(e));\n  } else if (Object(vega_util__WEBPACK_IMPORTED_MODULE_0__[\"isFunction\"])(update)) {\n    op = new Operator(null, update, params, false);\n\n    func = e => {\n      op.evaluate(e);\n      const t = target(e),\n            v = op.value;\n      isChangeSet(v) ? df.pulse(t, v, options) : df.update(t, v, opt);\n    };\n  } else {\n    func = e => df.update(target(e), update, opt);\n  }\n\n  stream.apply(func);\n}\n\nfunction onOperator(df, source, target, update, params, options) {\n  if (update === undefined) {\n    source.targets().add(target);\n  } else {\n    const opt = options || {},\n          op = new Operator(null, updater(target, update), params, false);\n    op.modified(opt.force);\n    op.rank = source.rank; // immediately follow source\n\n    source.targets().add(op); // add dependency\n\n    if (target) {\n      op.skip(true); // skip first invocation\n\n      op.value = target.value; // initialize value\n\n      op.targets().add(target); // chain dependencies\n\n      df.connect(target, [op]); // rerank as needed, #1672\n    }\n  }\n}\n\nfunction updater(target, update) {\n  update = Object(vega_util__WEBPACK_IMPORTED_MODULE_0__[\"isFunction\"])(update) ? update : Object(vega_util__WEBPACK_IMPORTED_MODULE_0__[\"constant\"])(update);\n  return target ? function (_, pulse) {\n    const value = update(_, pulse);\n\n    if (!target.skip()) {\n      target.skip(value !== this.value).value = value;\n    }\n\n    return value;\n  } : update;\n}\n\n/**\n * Assigns a rank to an operator. Ranks are assigned in increasing order\n * by incrementing an internal rank counter.\n * @param {Operator} op - The operator to assign a rank.\n */\n\nfunction rank(op) {\n  op.rank = ++this._rank;\n}\n/**\n * Re-ranks an operator and all downstream target dependencies. This\n * is necessary when upstream dependencies of higher rank are added to\n * a target operator.\n * @param {Operator} op - The operator to re-rank.\n */\n\nfunction rerank(op) {\n  const queue = [op];\n  let cur, list, i;\n\n  while (queue.length) {\n    this.rank(cur = queue.pop());\n\n    if (list = cur._targets) {\n      for (i = list.length; --i >= 0;) {\n        queue.push(cur = list[i]);\n        if (cur === op) Object(vega_util__WEBPACK_IMPORTED_MODULE_0__[\"error\"])('Cycle detected in dataflow graph.');\n      }\n    }\n  }\n}\n\n/**\n * Sentinel value indicating pulse propagation should stop.\n */\n\nconst StopPropagation = {}; // Pulse visit type flags\n\nconst ADD = 1 << 0,\n      REM = 1 << 1,\n      MOD = 1 << 2,\n      ADD_REM = ADD | REM,\n      ADD_MOD = ADD | MOD,\n      ALL = ADD | REM | MOD,\n      REFLOW = 1 << 3,\n      SOURCE = 1 << 4,\n      NO_SOURCE = 1 << 5,\n      NO_FIELDS = 1 << 6;\n/**\n * A Pulse enables inter-operator communication during a run of the\n * dataflow graph. In addition to the current timestamp, a pulse may also\n * contain a change-set of added, removed or modified data tuples, as well as\n * a pointer to a full backing data source. Tuple change sets may not\n * be fully materialized; for example, to prevent needless array creation\n * a change set may include larger arrays and corresponding filter functions.\n * The pulse provides a {@link visit} method to enable proper and efficient\n * iteration over requested data tuples.\n *\n * In addition, each pulse can track modification flags for data tuple fields.\n * Responsible transform operators should call the {@link modifies} method to\n * indicate changes to data fields. The {@link modified} method enables\n * querying of this modification state.\n *\n * @constructor\n * @param {Dataflow} dataflow - The backing dataflow instance.\n * @param {number} stamp - The current propagation timestamp.\n * @param {string} [encode] - An optional encoding set name, which is then\n *   accessible as Pulse.encode. Operators can respond to (or ignore) this\n *   setting as appropriate. This parameter can be used in conjunction with\n *   the Encode transform in the vega-encode module.\n */\n\nfunction Pulse(dataflow, stamp, encode) {\n  this.dataflow = dataflow;\n  this.stamp = stamp == null ? -1 : stamp;\n  this.add = [];\n  this.rem = [];\n  this.mod = [];\n  this.fields = null;\n  this.encode = encode || null;\n}\n\nfunction materialize(data, filter) {\n  const out = [];\n  Object(vega_util__WEBPACK_IMPORTED_MODULE_0__[\"visitArray\"])(data, filter, _ => out.push(_));\n  return out;\n}\n\nfunction filter(pulse, flags) {\n  const map = {};\n  pulse.visit(flags, t => {\n    map[tupleid(t)] = 1;\n  });\n  return t => map[tupleid(t)] ? null : t;\n}\n\nfunction addFilter(a, b) {\n  return a ? (t, i) => a(t, i) && b(t, i) : b;\n}\n\nPulse.prototype = {\n  /**\n   * Sentinel value indicating pulse propagation should stop.\n   */\n  StopPropagation,\n\n  /**\n   * Boolean flag indicating ADD (added) tuples.\n   */\n  ADD,\n\n  /**\n   * Boolean flag indicating REM (removed) tuples.\n   */\n  REM,\n\n  /**\n   * Boolean flag indicating MOD (modified) tuples.\n   */\n  MOD,\n\n  /**\n   * Boolean flag indicating ADD (added) and REM (removed) tuples.\n   */\n  ADD_REM,\n\n  /**\n   * Boolean flag indicating ADD (added) and MOD (modified) tuples.\n   */\n  ADD_MOD,\n\n  /**\n   * Boolean flag indicating ADD, REM and MOD tuples.\n   */\n  ALL,\n\n  /**\n   * Boolean flag indicating all tuples in a data source\n   * except for the ADD, REM and MOD tuples.\n   */\n  REFLOW,\n\n  /**\n   * Boolean flag indicating a 'pass-through' to a\n   * backing data source, ignoring ADD, REM and MOD tuples.\n   */\n  SOURCE,\n\n  /**\n   * Boolean flag indicating that source data should be\n   * suppressed when creating a forked pulse.\n   */\n  NO_SOURCE,\n\n  /**\n   * Boolean flag indicating that field modifications should be\n   * suppressed when creating a forked pulse.\n   */\n  NO_FIELDS,\n\n  /**\n   * Creates a new pulse based on the values of this pulse.\n   * The dataflow, time stamp and field modification values are copied over.\n   * By default, new empty ADD, REM and MOD arrays are created.\n   * @param {number} flags - Integer of boolean flags indicating which (if any)\n   *   tuple arrays should be copied to the new pulse. The supported flag values\n   *   are ADD, REM and MOD. Array references are copied directly: new array\n   *   instances are not created.\n   * @return {Pulse} - The forked pulse instance.\n   * @see init\n   */\n  fork(flags) {\n    return new Pulse(this.dataflow).init(this, flags);\n  },\n\n  /**\n   * Creates a copy of this pulse with new materialized array\n   * instances for the ADD, REM, MOD, and SOURCE arrays.\n   * The dataflow, time stamp and field modification values are copied over.\n   * @return {Pulse} - The cloned pulse instance.\n   * @see init\n   */\n  clone() {\n    const p = this.fork(ALL);\n    p.add = p.add.slice();\n    p.rem = p.rem.slice();\n    p.mod = p.mod.slice();\n    if (p.source) p.source = p.source.slice();\n    return p.materialize(ALL | SOURCE);\n  },\n\n  /**\n   * Returns a pulse that adds all tuples from a backing source. This is\n   * useful for cases where operators are added to a dataflow after an\n   * upstream data pipeline has already been processed, ensuring that\n   * new operators can observe all tuples within a stream.\n   * @return {Pulse} - A pulse instance with all source tuples included\n   *   in the add array. If the current pulse already has all source\n   *   tuples in its add array, it is returned directly. If the current\n   *   pulse does not have a backing source, it is returned directly.\n   */\n  addAll() {\n    let p = this;\n    const reuse = !p.source || p.add === p.rem // special case for indexed set (e.g., crossfilter)\n    || !p.rem.length && p.source.length === p.add.length;\n\n    if (reuse) {\n      return p;\n    } else {\n      p = new Pulse(this.dataflow).init(this);\n      p.add = p.source;\n      p.rem = []; // new operators can ignore rem #2769\n\n      return p;\n    }\n  },\n\n  /**\n   * Initialize this pulse based on the values of another pulse. This method\n   * is used internally by {@link fork} to initialize a new forked tuple.\n   * The dataflow, time stamp and field modification values are copied over.\n   * By default, new empty ADD, REM and MOD arrays are created.\n   * @param {Pulse} src - The source pulse to copy from.\n   * @param {number} flags - Integer of boolean flags indicating which (if any)\n   *   tuple arrays should be copied to the new pulse. The supported flag values\n   *   are ADD, REM and MOD. Array references are copied directly: new array\n   *   instances are not created. By default, source data arrays are copied\n   *   to the new pulse. Use the NO_SOURCE flag to enforce a null source.\n   * @return {Pulse} - Returns this Pulse instance.\n   */\n  init(src, flags) {\n    const p = this;\n    p.stamp = src.stamp;\n    p.encode = src.encode;\n\n    if (src.fields && !(flags & NO_FIELDS)) {\n      p.fields = src.fields;\n    }\n\n    if (flags & ADD) {\n      p.addF = src.addF;\n      p.add = src.add;\n    } else {\n      p.addF = null;\n      p.add = [];\n    }\n\n    if (flags & REM) {\n      p.remF = src.remF;\n      p.rem = src.rem;\n    } else {\n      p.remF = null;\n      p.rem = [];\n    }\n\n    if (flags & MOD) {\n      p.modF = src.modF;\n      p.mod = src.mod;\n    } else {\n      p.modF = null;\n      p.mod = [];\n    }\n\n    if (flags & NO_SOURCE) {\n      p.srcF = null;\n      p.source = null;\n    } else {\n      p.srcF = src.srcF;\n      p.source = src.source;\n      if (src.cleans) p.cleans = src.cleans;\n    }\n\n    return p;\n  },\n\n  /**\n   * Schedules a function to run after pulse propagation completes.\n   * @param {function} func - The function to run.\n   */\n  runAfter(func) {\n    this.dataflow.runAfter(func);\n  },\n\n  /**\n   * Indicates if tuples have been added, removed or modified.\n   * @param {number} [flags] - The tuple types (ADD, REM or MOD) to query.\n   *   Defaults to ALL, returning true if any tuple type has changed.\n   * @return {boolean} - Returns true if one or more queried tuple types have\n   *   changed, false otherwise.\n   */\n  changed(flags) {\n    const f = flags || ALL;\n    return f & ADD && this.add.length || f & REM && this.rem.length || f & MOD && this.mod.length;\n  },\n\n  /**\n   * Forces a \"reflow\" of tuple values, such that all tuples in the backing\n   * source are added to the MOD set, unless already present in the ADD set.\n   * @param {boolean} [fork=false] - If true, returns a forked copy of this\n   *   pulse, and invokes reflow on that derived pulse.\n   * @return {Pulse} - The reflowed pulse instance.\n   */\n  reflow(fork) {\n    if (fork) return this.fork(ALL).reflow();\n    const len = this.add.length,\n          src = this.source && this.source.length;\n\n    if (src && src !== len) {\n      this.mod = this.source;\n      if (len) this.filter(MOD, filter(this, ADD));\n    }\n\n    return this;\n  },\n\n  /**\n   * Get/set metadata to pulse requesting garbage collection\n   * to reclaim currently unused resources.\n   */\n  clean(value) {\n    if (arguments.length) {\n      this.cleans = !!value;\n      return this;\n    } else {\n      return this.cleans;\n    }\n  },\n\n  /**\n   * Marks one or more data field names as modified to assist dependency\n   * tracking and incremental processing by transform operators.\n   * @param {string|Array<string>} _ - The field(s) to mark as modified.\n   * @return {Pulse} - This pulse instance.\n   */\n  modifies(_) {\n    const hash = this.fields || (this.fields = {});\n\n    if (Object(vega_util__WEBPACK_IMPORTED_MODULE_0__[\"isArray\"])(_)) {\n      _.forEach(f => hash[f] = true);\n    } else {\n      hash[_] = true;\n    }\n\n    return this;\n  },\n\n  /**\n   * Checks if one or more data fields have been modified during this pulse\n   * propagation timestamp.\n   * @param {string|Array<string>} _ - The field(s) to check for modified.\n   * @param {boolean} nomod - If true, will check the modified flag even if\n   *   no mod tuples exist. If false (default), mod tuples must be present.\n   * @return {boolean} - Returns true if any of the provided fields has been\n   *   marked as modified, false otherwise.\n   */\n  modified(_, nomod) {\n    const fields = this.fields;\n    return !((nomod || this.mod.length) && fields) ? false : !arguments.length ? !!fields : Object(vega_util__WEBPACK_IMPORTED_MODULE_0__[\"isArray\"])(_) ? _.some(f => fields[f]) : fields[_];\n  },\n\n  /**\n   * Adds a filter function to one more tuple sets. Filters are applied to\n   * backing tuple arrays, to determine the actual set of tuples considered\n   * added, removed or modified. They can be used to delay materialization of\n   * a tuple set in order to avoid expensive array copies. In addition, the\n   * filter functions can serve as value transformers: unlike standard predicate\n   * function (which return boolean values), Pulse filters should return the\n   * actual tuple value to process. If a tuple set is already filtered, the\n   * new filter function will be appended into a conjuntive ('and') query.\n   * @param {number} flags - Flags indicating the tuple set(s) to filter.\n   * @param {function(*):object} filter - Filter function that will be applied\n   *   to the tuple set array, and should return a data tuple if the value\n   *   should be included in the tuple set, and falsy (or null) otherwise.\n   * @return {Pulse} - Returns this pulse instance.\n   */\n  filter(flags, filter) {\n    const p = this;\n    if (flags & ADD) p.addF = addFilter(p.addF, filter);\n    if (flags & REM) p.remF = addFilter(p.remF, filter);\n    if (flags & MOD) p.modF = addFilter(p.modF, filter);\n    if (flags & SOURCE) p.srcF = addFilter(p.srcF, filter);\n    return p;\n  },\n\n  /**\n   * Materialize one or more tuple sets in this pulse. If the tuple set(s) have\n   * a registered filter function, it will be applied and the tuple set(s) will\n   * be replaced with materialized tuple arrays.\n   * @param {number} flags - Flags indicating the tuple set(s) to materialize.\n   * @return {Pulse} - Returns this pulse instance.\n   */\n  materialize(flags) {\n    flags = flags || ALL;\n    const p = this;\n\n    if (flags & ADD && p.addF) {\n      p.add = materialize(p.add, p.addF);\n      p.addF = null;\n    }\n\n    if (flags & REM && p.remF) {\n      p.rem = materialize(p.rem, p.remF);\n      p.remF = null;\n    }\n\n    if (flags & MOD && p.modF) {\n      p.mod = materialize(p.mod, p.modF);\n      p.modF = null;\n    }\n\n    if (flags & SOURCE && p.srcF) {\n      p.source = p.source.filter(p.srcF);\n      p.srcF = null;\n    }\n\n    return p;\n  },\n\n  /**\n   * Visit one or more tuple sets in this pulse.\n   * @param {number} flags - Flags indicating the tuple set(s) to visit.\n   *   Legal values are ADD, REM, MOD and SOURCE (if a backing data source\n   *   has been set).\n   * @param {function(object):*} - Visitor function invoked per-tuple.\n   * @return {Pulse} - Returns this pulse instance.\n   */\n  visit(flags, visitor) {\n    const p = this,\n          v = visitor;\n\n    if (flags & SOURCE) {\n      Object(vega_util__WEBPACK_IMPORTED_MODULE_0__[\"visitArray\"])(p.source, p.srcF, v);\n      return p;\n    }\n\n    if (flags & ADD) Object(vega_util__WEBPACK_IMPORTED_MODULE_0__[\"visitArray\"])(p.add, p.addF, v);\n    if (flags & REM) Object(vega_util__WEBPACK_IMPORTED_MODULE_0__[\"visitArray\"])(p.rem, p.remF, v);\n    if (flags & MOD) Object(vega_util__WEBPACK_IMPORTED_MODULE_0__[\"visitArray\"])(p.mod, p.modF, v);\n    const src = p.source;\n\n    if (flags & REFLOW && src) {\n      const sum = p.add.length + p.mod.length;\n\n      if (sum === src.length) ; else if (sum) {\n        Object(vega_util__WEBPACK_IMPORTED_MODULE_0__[\"visitArray\"])(src, filter(p, ADD_MOD), v);\n      } else {\n        // if no add/rem/mod tuples, visit source\n        Object(vega_util__WEBPACK_IMPORTED_MODULE_0__[\"visitArray\"])(src, p.srcF, v);\n      }\n    }\n\n    return p;\n  }\n\n};\n\n/**\n * Represents a set of multiple pulses. Used as input for operators\n * that accept multiple pulses at a time. Contained pulses are\n * accessible via the public \"pulses\" array property. This pulse doe\n * not carry added, removed or modified tuples directly. However,\n * the visit method can be used to traverse all such tuples contained\n * in sub-pulses with a timestamp matching this parent multi-pulse.\n * @constructor\n * @param {Dataflow} dataflow - The backing dataflow instance.\n * @param {number} stamp - The timestamp.\n * @param {Array<Pulse>} pulses - The sub-pulses for this multi-pulse.\n */\n\nfunction MultiPulse(dataflow, stamp, pulses, encode) {\n  const p = this,\n        n = pulses.length;\n  let c = 0;\n  this.dataflow = dataflow;\n  this.stamp = stamp;\n  this.fields = null;\n  this.encode = encode || null;\n  this.pulses = pulses;\n\n  for (let i = 0; i < n; ++i) {\n    const pulse = pulses[i];\n    if (pulse.stamp !== stamp) continue;\n\n    if (pulse.fields) {\n      const hash = p.fields || (p.fields = {});\n\n      for (const f in pulse.fields) {\n        hash[f] = 1;\n      }\n    }\n\n    if (pulse.changed(p.ADD)) c |= p.ADD;\n    if (pulse.changed(p.REM)) c |= p.REM;\n    if (pulse.changed(p.MOD)) c |= p.MOD;\n  }\n\n  this.changes = c;\n}\nObject(vega_util__WEBPACK_IMPORTED_MODULE_0__[\"inherits\"])(MultiPulse, Pulse, {\n  /**\n   * Creates a new pulse based on the values of this pulse.\n   * The dataflow, time stamp and field modification values are copied over.\n   * @return {Pulse}\n   */\n  fork(flags) {\n    const p = new Pulse(this.dataflow).init(this, flags & this.NO_FIELDS);\n\n    if (flags !== undefined) {\n      if (flags & p.ADD) this.visit(p.ADD, t => p.add.push(t));\n      if (flags & p.REM) this.visit(p.REM, t => p.rem.push(t));\n      if (flags & p.MOD) this.visit(p.MOD, t => p.mod.push(t));\n    }\n\n    return p;\n  },\n\n  changed(flags) {\n    return this.changes & flags;\n  },\n\n  modified(_) {\n    const p = this,\n          fields = p.fields;\n    return !(fields && p.changes & p.MOD) ? 0 : Object(vega_util__WEBPACK_IMPORTED_MODULE_0__[\"isArray\"])(_) ? _.some(f => fields[f]) : fields[_];\n  },\n\n  filter() {\n    Object(vega_util__WEBPACK_IMPORTED_MODULE_0__[\"error\"])('MultiPulse does not support filtering.');\n  },\n\n  materialize() {\n    Object(vega_util__WEBPACK_IMPORTED_MODULE_0__[\"error\"])('MultiPulse does not support materialization.');\n  },\n\n  visit(flags, visitor) {\n    const p = this,\n          pulses = p.pulses,\n          n = pulses.length;\n    let i = 0;\n\n    if (flags & p.SOURCE) {\n      for (; i < n; ++i) {\n        pulses[i].visit(flags, visitor);\n      }\n    } else {\n      for (; i < n; ++i) {\n        if (pulses[i].stamp === p.stamp) {\n          pulses[i].visit(flags, visitor);\n        }\n      }\n    }\n\n    return p;\n  }\n\n});\n\n/* eslint-disable require-atomic-updates */\n/**\n * Evaluates the dataflow and returns a Promise that resolves when pulse\n * propagation completes. This method will increment the current timestamp\n * and process all updated, pulsed and touched operators. When invoked for\n * the first time, all registered operators will be processed. This method\n * should not be invoked by third-party clients, use {@link runAsync} or\n * {@link run} instead.\n * @param {string} [encode] - The name of an encoding set to invoke during\n *   propagation. This value is added to generated Pulse instances;\n *   operators can then respond to (or ignore) this setting as appropriate.\n *   This parameter can be used in conjunction with the Encode transform in\n *   the vega-encode package.\n * @param {function} [prerun] - An optional callback function to invoke\n *   immediately before dataflow evaluation commences.\n * @param {function} [postrun] - An optional callback function to invoke\n *   after dataflow evaluation completes. The callback will be invoked\n *   after those registered via {@link runAfter}.\n * @return {Promise} - A promise that resolves to this dataflow after\n *   evaluation completes.\n */\n\nasync function evaluate(encode, prerun, postrun) {\n  const df = this,\n        async = []; // if the pulse value is set, this is a re-entrant call\n\n  if (df._pulse) return reentrant(df); // wait for pending datasets to load\n\n  if (df._pending) await df._pending; // invoke prerun function, if provided\n\n  if (prerun) await asyncCallback(df, prerun); // exit early if there are no updates\n\n  if (!df._touched.length) {\n    df.debug('Dataflow invoked, but nothing to do.');\n    return df;\n  } // increment timestamp clock\n\n\n  const stamp = ++df._clock; // set the current pulse\n\n  df._pulse = new Pulse(df, stamp, encode); // initialize priority queue, reset touched operators\n\n  df._touched.forEach(op => df._enqueue(op, true));\n\n  df._touched = UniqueList(vega_util__WEBPACK_IMPORTED_MODULE_0__[\"id\"]);\n  let count = 0,\n      op,\n      next,\n      error;\n\n  try {\n    while (df._heap.size() > 0) {\n      // dequeue operator with highest priority\n      op = df._heap.pop(); // re-queue if rank changed\n\n      if (op.rank !== op.qrank) {\n        df._enqueue(op, true);\n\n        continue;\n      } // otherwise, evaluate the operator\n\n\n      next = op.run(df._getPulse(op, encode));\n\n      if (next.then) {\n        // await if operator returns a promise directly\n        next = await next;\n      } else if (next.async) {\n        // queue parallel asynchronous execution\n        async.push(next.async);\n        next = StopPropagation;\n      } // propagate evaluation, enqueue dependent operators\n\n\n      if (next !== StopPropagation) {\n        if (op._targets) op._targets.forEach(op => df._enqueue(op));\n      } // increment visit counter\n\n\n      ++count;\n    }\n  } catch (err) {\n    df._heap.clear();\n\n    error = err;\n  } // reset pulse map\n\n\n  df._input = {};\n  df._pulse = null;\n  df.debug(`Pulse ${stamp}: ${count} operators`);\n\n  if (error) {\n    df._postrun = [];\n    df.error(error);\n  } // invoke callbacks queued via runAfter\n\n\n  if (df._postrun.length) {\n    const pr = df._postrun.sort((a, b) => b.priority - a.priority);\n\n    df._postrun = [];\n\n    for (let i = 0; i < pr.length; ++i) {\n      await asyncCallback(df, pr[i].callback);\n    }\n  } // invoke postrun function, if provided\n\n\n  if (postrun) await asyncCallback(df, postrun); // handle non-blocking asynchronous callbacks\n\n  if (async.length) {\n    Promise.all(async).then(cb => df.runAsync(null, () => {\n      cb.forEach(f => {\n        try {\n          f(df);\n        } catch (err) {\n          df.error(err);\n        }\n      });\n    }));\n  }\n\n  return df;\n}\n/**\n * Queues dataflow evaluation to run once any other queued evaluations have\n * completed and returns a Promise that resolves when the queued pulse\n * propagation completes. If provided, a callback function will be invoked\n * immediately before evaluation commences. This method will ensure a\n * separate evaluation is invoked for each time it is called.\n * @param {string} [encode] - The name of an encoding set to invoke during\n *   propagation. This value is added to generated Pulse instances;\n *   operators can then respond to (or ignore) this setting as appropriate.\n *   This parameter can be used in conjunction with the Encode transform in\n *   the vega-encode package.\n * @param {function} [prerun] - An optional callback function to invoke\n *   immediately before dataflow evaluation commences.\n * @param {function} [postrun] - An optional callback function to invoke\n *   after dataflow evaluation completes. The callback will be invoked\n *   after those registered via {@link runAfter}.\n * @return {Promise} - A promise that resolves to this dataflow after\n *   evaluation completes.\n */\n\nasync function runAsync(encode, prerun, postrun) {\n  // await previously queued functions\n  while (this._running) await this._running; // run dataflow, manage running promise\n\n\n  const clear = () => this._running = null;\n\n  (this._running = this.evaluate(encode, prerun, postrun)).then(clear, clear);\n  return this._running;\n}\n/**\n * Requests dataflow evaluation and the immediately returns this dataflow\n * instance. If there are pending data loading or other asynchronous\n * operations, the dataflow will evaluate asynchronously after this method\n * has been invoked. To track when dataflow evaluation completes, use the\n * {@link runAsync} method instead. This method will raise an error if\n * invoked while the dataflow is already in the midst of evaluation.\n * @param {string} [encode] - The name of an encoding set to invoke during\n *   propagation. This value is added to generated Pulse instances;\n *   operators can then respond to (or ignore) this setting as appropriate.\n *   This parameter can be used in conjunction with the Encode transform in\n *   the vega-encode module.\n * @param {function} [prerun] - An optional callback function to invoke\n *   immediately before dataflow evaluation commences.\n * @param {function} [postrun] - An optional callback function to invoke\n *   after dataflow evaluation completes. The callback will be invoked\n *   after those registered via {@link runAfter}.\n * @return {Dataflow} - This dataflow instance.\n */\n\nfunction run(encode, prerun, postrun) {\n  return this._pulse ? reentrant(this) : (this.evaluate(encode, prerun, postrun), this);\n}\n/**\n * Schedules a callback function to be invoked after the current pulse\n * propagation completes. If no propagation is currently occurring,\n * the function is invoked immediately. Callbacks scheduled via runAfter\n * are invoked immediately upon completion of the current cycle, before\n * any request queued via runAsync. This method is primarily intended for\n * internal use. Third-party callers using runAfter to schedule a callback\n * that invokes {@link run} or {@link runAsync} should not use this method,\n * but instead use {@link runAsync} with prerun or postrun arguments.\n * @param {function(Dataflow)} callback - The callback function to run.\n *   The callback will be invoked with this Dataflow instance as its\n *   sole argument.\n * @param {boolean} enqueue - A boolean flag indicating that the\n *   callback should be queued up to run after the next propagation\n *   cycle, suppressing immediate invocation when propagation is not\n *   currently occurring.\n * @param {number} [priority] - A priority value used to sort registered\n *   callbacks to determine execution order. This argument is intended\n *   for internal Vega use only.\n */\n\nfunction runAfter(callback, enqueue, priority) {\n  if (this._pulse || enqueue) {\n    // pulse propagation is currently running, queue to run after\n    this._postrun.push({\n      priority: priority || 0,\n      callback: callback\n    });\n  } else {\n    // pulse propagation already complete, invoke immediately\n    try {\n      callback(this);\n    } catch (err) {\n      this.error(err);\n    }\n  }\n}\n/**\n * Raise an error for re-entrant dataflow evaluation.\n */\n\nfunction reentrant(df) {\n  df.error('Dataflow already running. Use runAsync() to chain invocations.');\n  return df;\n}\n/**\n * Enqueue an operator into the priority queue for evaluation. The operator\n * will be enqueued if it has no registered pulse for the current cycle, or if\n * the force argument is true. Upon enqueue, this method also sets the\n * operator's qrank to the current rank value.\n * @param {Operator} op - The operator to enqueue.\n * @param {boolean} [force] - A flag indicating if the operator should be\n *   forceably added to the queue, even if it has already been previously\n *   enqueued during the current pulse propagation. This is useful when the\n *   dataflow graph is dynamically modified and the operator rank changes.\n */\n\n\nfunction enqueue(op, force) {\n  const q = op.stamp < this._clock;\n  if (q) op.stamp = this._clock;\n\n  if (q || force) {\n    op.qrank = op.rank;\n\n    this._heap.push(op);\n  }\n}\n/**\n * Provide a correct pulse for evaluating an operator. If the operator has an\n * explicit source operator, we will try to pull the pulse(s) from it.\n * If there is an array of source operators, we build a multi-pulse.\n * Otherwise, we return a current pulse with correct source data.\n * If the pulse is the pulse map has an explicit target set, we use that.\n * Else if the pulse on the upstream source operator is current, we use that.\n * Else we use the pulse from the pulse map, but copy the source tuple array.\n * @param {Operator} op - The operator for which to get an input pulse.\n * @param {string} [encode] - An (optional) encoding set name with which to\n *   annotate the returned pulse. See {@link run} for more information.\n */\n\nfunction getPulse(op, encode) {\n  const s = op.source,\n        stamp = this._clock;\n  return s && Object(vega_util__WEBPACK_IMPORTED_MODULE_0__[\"isArray\"])(s) ? new MultiPulse(this, stamp, s.map(_ => _.pulse), encode) : this._input[op.id] || singlePulse(this._pulse, s && s.pulse);\n}\n\nfunction singlePulse(p, s) {\n  if (s && s.stamp === p.stamp) {\n    return s;\n  }\n\n  p = p.fork();\n\n  if (s && s !== StopPropagation) {\n    p.source = s.source;\n  }\n\n  return p;\n}\n\nconst NO_OPT = {\n  skip: false,\n  force: false\n};\n/**\n * Touches an operator, scheduling it to be evaluated. If invoked outside of\n * a pulse propagation, the operator will be evaluated the next time this\n * dataflow is run. If invoked in the midst of pulse propagation, the operator\n * will be queued for evaluation if and only if the operator has not yet been\n * evaluated on the current propagation timestamp.\n * @param {Operator} op - The operator to touch.\n * @param {object} [options] - Additional options hash.\n * @param {boolean} [options.skip] - If true, the operator will\n *   be skipped: it will not be evaluated, but its dependents will be.\n * @return {Dataflow}\n */\n\nfunction touch(op, options) {\n  const opt = options || NO_OPT;\n\n  if (this._pulse) {\n    // if in midst of propagation, add to priority queue\n    this._enqueue(op);\n  } else {\n    // otherwise, queue for next propagation\n    this._touched.add(op);\n  }\n\n  if (opt.skip) op.skip(true);\n  return this;\n}\n/**\n * Updates the value of the given operator.\n * @param {Operator} op - The operator to update.\n * @param {*} value - The value to set.\n * @param {object} [options] - Additional options hash.\n * @param {boolean} [options.force] - If true, the operator will\n *   be re-evaluated even if its value has not changed.\n * @param {boolean} [options.skip] - If true, the operator will\n *   be skipped: it will not be evaluated, but its dependents will be.\n * @return {Dataflow}\n */\n\nfunction update(op, value, options) {\n  const opt = options || NO_OPT;\n\n  if (op.set(value) || opt.force) {\n    this.touch(op, opt);\n  }\n\n  return this;\n}\n/**\n * Pulses an operator with a changeset of tuples. If invoked outside of\n * a pulse propagation, the pulse will be applied the next time this\n * dataflow is run. If invoked in the midst of pulse propagation, the pulse\n * will be added to the set of active pulses and will be applied if and\n * only if the target operator has not yet been evaluated on the current\n * propagation timestamp.\n * @param {Operator} op - The operator to pulse.\n * @param {ChangeSet} value - The tuple changeset to apply.\n * @param {object} [options] - Additional options hash.\n * @param {boolean} [options.skip] - If true, the operator will\n *   be skipped: it will not be evaluated, but its dependents will be.\n * @return {Dataflow}\n */\n\nfunction pulse(op, changeset, options) {\n  this.touch(op, options || NO_OPT);\n  const p = new Pulse(this, this._clock + (this._pulse ? 0 : 1)),\n        t = op.pulse && op.pulse.source || [];\n  p.target = op;\n  this._input[op.id] = changeset.pulse(p, t);\n  return this;\n}\n\nfunction Heap(cmp) {\n  let nodes = [];\n  return {\n    clear: () => nodes = [],\n    size: () => nodes.length,\n    peek: () => nodes[0],\n    push: x => {\n      nodes.push(x);\n      return siftdown(nodes, 0, nodes.length - 1, cmp);\n    },\n    pop: () => {\n      const last = nodes.pop();\n      let item;\n\n      if (nodes.length) {\n        item = nodes[0];\n        nodes[0] = last;\n        siftup(nodes, 0, cmp);\n      } else {\n        item = last;\n      }\n\n      return item;\n    }\n  };\n}\n\nfunction siftdown(array, start, idx, cmp) {\n  let parent, pidx;\n  const item = array[idx];\n\n  while (idx > start) {\n    pidx = idx - 1 >> 1;\n    parent = array[pidx];\n\n    if (cmp(item, parent) < 0) {\n      array[idx] = parent;\n      idx = pidx;\n      continue;\n    }\n\n    break;\n  }\n\n  return array[idx] = item;\n}\n\nfunction siftup(array, idx, cmp) {\n  const start = idx,\n        end = array.length,\n        item = array[idx];\n  let cidx = (idx << 1) + 1,\n      ridx;\n\n  while (cidx < end) {\n    ridx = cidx + 1;\n\n    if (ridx < end && cmp(array[cidx], array[ridx]) >= 0) {\n      cidx = ridx;\n    }\n\n    array[idx] = array[cidx];\n    idx = cidx;\n    cidx = (idx << 1) + 1;\n  }\n\n  array[idx] = item;\n  return siftdown(array, start, idx, cmp);\n}\n\n/**\n * A dataflow graph for reactive processing of data streams.\n * @constructor\n */\n\nfunction Dataflow() {\n  this.logger(Object(vega_util__WEBPACK_IMPORTED_MODULE_0__[\"logger\"])());\n  this.logLevel(vega_util__WEBPACK_IMPORTED_MODULE_0__[\"Error\"]);\n  this._clock = 0;\n  this._rank = 0;\n  this._locale = Object(vega_format__WEBPACK_IMPORTED_MODULE_2__[\"defaultLocale\"])();\n\n  try {\n    this._loader = Object(vega_loader__WEBPACK_IMPORTED_MODULE_1__[\"loader\"])();\n  } catch (e) {// do nothing if loader module is unavailable\n  }\n\n  this._touched = UniqueList(vega_util__WEBPACK_IMPORTED_MODULE_0__[\"id\"]);\n  this._input = {};\n  this._pulse = null;\n  this._heap = Heap((a, b) => a.qrank - b.qrank);\n  this._postrun = [];\n}\n\nfunction logMethod(method) {\n  return function () {\n    return this._log[method].apply(this, arguments);\n  };\n}\n\nDataflow.prototype = {\n  /**\n   * The current timestamp of this dataflow. This value reflects the\n   * timestamp of the previous dataflow run. The dataflow is initialized\n   * with a stamp value of 0. The initial run of the dataflow will have\n   * a timestap of 1, and so on. This value will match the\n   * {@link Pulse.stamp} property.\n   * @return {number} - The current timestamp value.\n   */\n  stamp() {\n    return this._clock;\n  },\n\n  /**\n   * Gets or sets the loader instance to use for data file loading. A\n   * loader object must provide a \"load\" method for loading files and a\n   * \"sanitize\" method for checking URL/filename validity. Both methods\n   * should accept a URI and options hash as arguments, and return a Promise\n   * that resolves to the loaded file contents (load) or a hash containing\n   * sanitized URI data with the sanitized url assigned to the \"href\" property\n   * (sanitize).\n   * @param {object} _ - The loader instance to use.\n   * @return {object|Dataflow} - If no arguments are provided, returns\n   *   the current loader instance. Otherwise returns this Dataflow instance.\n   */\n  loader(_) {\n    if (arguments.length) {\n      this._loader = _;\n      return this;\n    } else {\n      return this._loader;\n    }\n  },\n\n  /**\n   * Gets or sets the locale instance to use for formatting and parsing\n   * string values. The locale object should be provided by the\n   * vega-format library, and include methods such as format, timeFormat,\n   * utcFormat, timeParse, and utcParse.\n   * @param {object} _ - The locale instance to use.\n   * @return {object|Dataflow} - If no arguments are provided, returns\n   *   the current locale instance. Otherwise returns this Dataflow instance.\n   */\n  locale(_) {\n    if (arguments.length) {\n      this._locale = _;\n      return this;\n    } else {\n      return this._locale;\n    }\n  },\n\n  /**\n   * Get or set the logger instance used to log messages. If no arguments are\n   * provided, returns the current logger instance. Otherwise, sets the logger\n   * and return this Dataflow instance. Provided loggers must support the full\n   * API of logger objects generated by the vega-util logger method. Note that\n   * by default the log level of the new logger will be used; use the logLevel\n   * method to adjust the log level as needed.\n   */\n  logger(logger) {\n    if (arguments.length) {\n      this._log = logger;\n      return this;\n    } else {\n      return this._log;\n    }\n  },\n\n  /**\n   * Logs an error message. By default, logged messages are written to console\n   * output. The message will only be logged if the current log level is high\n   * enough to permit error messages.\n   */\n  error: logMethod('error'),\n\n  /**\n   * Logs a warning message. By default, logged messages are written to console\n   * output. The message will only be logged if the current log level is high\n   * enough to permit warning messages.\n   */\n  warn: logMethod('warn'),\n\n  /**\n   * Logs a information message. By default, logged messages are written to\n   * console output. The message will only be logged if the current log level is\n   * high enough to permit information messages.\n   */\n  info: logMethod('info'),\n\n  /**\n   * Logs a debug message. By default, logged messages are written to console\n   * output. The message will only be logged if the current log level is high\n   * enough to permit debug messages.\n   */\n  debug: logMethod('debug'),\n\n  /**\n   * Get or set the current log level. If an argument is provided, it\n   * will be used as the new log level.\n   * @param {number} [level] - Should be one of None, Warn, Info\n   * @return {number} - The current log level.\n   */\n  logLevel: logMethod('level'),\n\n  /**\n   * Empty entry threshold for garbage cleaning. Map data structures will\n   * perform cleaning once the number of empty entries exceeds this value.\n   */\n  cleanThreshold: 1e4,\n  // OPERATOR REGISTRATION\n  add,\n  connect,\n  rank,\n  rerank,\n  // OPERATOR UPDATES\n  pulse,\n  touch,\n  update,\n  changeset,\n  // DATA LOADING\n  ingest,\n  parse,\n  preload,\n  request,\n  // EVENT HANDLING\n  events,\n  on,\n  // PULSE PROPAGATION\n  evaluate,\n  run,\n  runAsync,\n  runAfter,\n  _enqueue: enqueue,\n  _getPulse: getPulse\n};\n\n/**\n * Abstract class for operators that process data tuples.\n * Subclasses must provide a {@link transform} method for operator processing.\n * @constructor\n * @param {*} [init] - The initial value for this operator.\n * @param {object} [params] - The parameters for this operator.\n * @param {Operator} [source] - The operator from which to receive pulses.\n */\n\nfunction Transform(init, params) {\n  Operator.call(this, init, null, params);\n}\nObject(vega_util__WEBPACK_IMPORTED_MODULE_0__[\"inherits\"])(Transform, Operator, {\n  /**\n   * Overrides {@link Operator.evaluate} for transform operators.\n   * Internally, this method calls {@link evaluate} to perform processing.\n   * If {@link evaluate} returns a falsy value, the input pulse is returned.\n   * This method should NOT be overridden, instead overrride {@link evaluate}.\n   * @param {Pulse} pulse - the current dataflow pulse.\n   * @return the output pulse for this operator (or StopPropagation)\n   */\n  run(pulse) {\n    if (pulse.stamp < this.stamp) return pulse.StopPropagation;\n    let rv;\n\n    if (this.skip()) {\n      this.skip(false);\n    } else {\n      rv = this.evaluate(pulse);\n    }\n\n    rv = rv || pulse;\n\n    if (rv.then) {\n      rv = rv.then(_ => this.pulse = _);\n    } else if (rv !== pulse.StopPropagation) {\n      this.pulse = rv;\n    }\n\n    return rv;\n  },\n\n  /**\n   * Overrides {@link Operator.evaluate} for transform operators.\n   * Marshalls parameter values and then invokes {@link transform}.\n   * @param {Pulse} pulse - the current dataflow pulse.\n   * @return {Pulse} The output pulse (or StopPropagation). A falsy return\n       value (including undefined) will let the input pulse pass through.\n  */\n  evaluate(pulse) {\n    const params = this.marshall(pulse.stamp),\n          out = this.transform(params, pulse);\n    params.clear();\n    return out;\n  },\n\n  /**\n   * Process incoming pulses.\n   * Subclasses should override this method to implement transforms.\n   * @param {Parameters} _ - The operator parameter values.\n   * @param {Pulse} pulse - The current dataflow pulse.\n   * @return {Pulse} The output pulse (or StopPropagation). A falsy return\n   *   value (including undefined) will let the input pulse pass through.\n   */\n  transform() {}\n\n});\n\nconst transforms = {};\nfunction definition(type) {\n  const t = transform(type);\n  return t && t.Definition || null;\n}\nfunction transform(type) {\n  type = type && type.toLowerCase();\n  return Object(vega_util__WEBPACK_IMPORTED_MODULE_0__[\"hasOwnProperty\"])(transforms, type) ? transforms[type] : null;\n}\n\n\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,[encoded data, 109500 characters]\n//# sourceURL=webpack-internal:///./node_modules/vega-functions/node_modules/vega-dataflow/build/vega-dataflow.module.js\n");

/***/ }),

/***/ "./node_modules/vega-functions/node_modules/vega-expression/build/vega-expression.module.js":
/*!**************************************************************************************************!*\
  !*** ./node_modules/vega-functions/node_modules/vega-expression/build/vega-expression.module.js ***!
  \**************************************************************************************************/
/*! exports provided: ASTNode, ArrayExpression, BinaryExpression, CallExpression, ConditionalExpression, Identifier, Literal, LogicalExpression, MemberExpression, ObjectExpression, Property, RawCode, UnaryExpression, codegen, constants, functions, parse */
/***/ (function(module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"ASTNode\", function() { return ASTNode; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"ArrayExpression\", function() { return ArrayExpression; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"BinaryExpression\", function() { return BinaryExpression; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"CallExpression\", function() { return CallExpression; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"ConditionalExpression\", function() { return ConditionalExpression; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"Identifier\", function() { return Identifier; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"Literal\", function() { return Literal; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"LogicalExpression\", function() { return LogicalExpression; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"MemberExpression\", function() { return MemberExpression; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"ObjectExpression\", function() { return ObjectExpression; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"Property\", function() { return Property; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"RawCode\", function() { return RawCode; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"UnaryExpression\", function() { return UnaryExpression; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"codegen\", function() { return codegen; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"constants\", function() { return Constants; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"functions\", function() { return Functions; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"parse\", function() { return parser; });\n/* harmony import */ var vega_util__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! vega-util */ \"./node_modules/vega-functions/node_modules/vega-util/build/vega-util.module.js\");\n\n\nconst RawCode = 'RawCode';\nconst Literal = 'Literal';\nconst Property = 'Property';\nconst Identifier = 'Identifier';\nconst ArrayExpression = 'ArrayExpression';\nconst BinaryExpression = 'BinaryExpression';\nconst CallExpression = 'CallExpression';\nconst ConditionalExpression = 'ConditionalExpression';\nconst LogicalExpression = 'LogicalExpression';\nconst MemberExpression = 'MemberExpression';\nconst ObjectExpression = 'ObjectExpression';\nconst UnaryExpression = 'UnaryExpression';\nfunction ASTNode(type) {\n  this.type = type;\n}\n\nASTNode.prototype.visit = function (visitor) {\n  let c, i, n;\n  if (visitor(this)) return 1;\n\n  for (c = children(this), i = 0, n = c.length; i < n; ++i) {\n    if (c[i].visit(visitor)) return 1;\n  }\n};\n\nfunction children(node) {\n  switch (node.type) {\n    case ArrayExpression:\n      return node.elements;\n\n    case BinaryExpression:\n    case LogicalExpression:\n      return [node.left, node.right];\n\n    case CallExpression:\n      return [node.callee].concat(node.arguments);\n\n    case ConditionalExpression:\n      return [node.test, node.consequent, node.alternate];\n\n    case MemberExpression:\n      return [node.object, node.property];\n\n    case ObjectExpression:\n      return node.properties;\n\n    case Property:\n      return [node.key, node.value];\n\n    case UnaryExpression:\n      return [node.argument];\n\n    case Identifier:\n    case Literal:\n    case RawCode:\n    default:\n      return [];\n  }\n}\n\n/*\n  The following expression parser is based on Esprima (http://esprima.org/).\n  Original header comment and license for Esprima is included here:\n\n  Copyright (C) 2013 Ariya Hidayat <ariya.hidayat@gmail.com>\n  Copyright (C) 2013 Thaddee Tyl <thaddee.tyl@gmail.com>\n  Copyright (C) 2013 Mathias Bynens <mathias@qiwi.be>\n  Copyright (C) 2012 Ariya Hidayat <ariya.hidayat@gmail.com>\n  Copyright (C) 2012 Mathias Bynens <mathias@qiwi.be>\n  Copyright (C) 2012 Joost-Wim Boekesteijn <joost-wim@boekesteijn.nl>\n  Copyright (C) 2012 Kris Kowal <kris.kowal@cixar.com>\n  Copyright (C) 2012 Yusuke Suzuki <utatane.tea@gmail.com>\n  Copyright (C) 2012 Arpad Borsos <arpad.borsos@googlemail.com>\n  Copyright (C) 2011 Ariya Hidayat <ariya.hidayat@gmail.com>\n\n  Redistribution and use in source and binary forms, with or without\n  modification, are permitted provided that the following conditions are met:\n\n    * Redistributions of source code must retain the above copyright\n      notice, this list of conditions and the following disclaimer.\n    * Redistributions in binary form must reproduce the above copyright\n      notice, this list of conditions and the following disclaimer in the\n      documentation and/or other materials provided with the distribution.\n\n  THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS \"AS IS\"\n  AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE\n  IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE\n  ARE DISCLAIMED. IN NO EVENT SHALL <COPYRIGHT HOLDER> BE LIABLE FOR ANY\n  DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES\n  (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;\n  LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND\n  ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT\n  (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF\n  THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.\n*/\nvar TokenName, source, index, length, lookahead;\nvar TokenBooleanLiteral = 1,\n    TokenEOF = 2,\n    TokenIdentifier = 3,\n    TokenKeyword = 4,\n    TokenNullLiteral = 5,\n    TokenNumericLiteral = 6,\n    TokenPunctuator = 7,\n    TokenStringLiteral = 8,\n    TokenRegularExpression = 9;\nTokenName = {};\nTokenName[TokenBooleanLiteral] = 'Boolean';\nTokenName[TokenEOF] = '<end>';\nTokenName[TokenIdentifier] = 'Identifier';\nTokenName[TokenKeyword] = 'Keyword';\nTokenName[TokenNullLiteral] = 'Null';\nTokenName[TokenNumericLiteral] = 'Numeric';\nTokenName[TokenPunctuator] = 'Punctuator';\nTokenName[TokenStringLiteral] = 'String';\nTokenName[TokenRegularExpression] = 'RegularExpression';\nvar SyntaxArrayExpression = 'ArrayExpression',\n    SyntaxBinaryExpression = 'BinaryExpression',\n    SyntaxCallExpression = 'CallExpression',\n    SyntaxConditionalExpression = 'ConditionalExpression',\n    SyntaxIdentifier = 'Identifier',\n    SyntaxLiteral = 'Literal',\n    SyntaxLogicalExpression = 'LogicalExpression',\n    SyntaxMemberExpression = 'MemberExpression',\n    SyntaxObjectExpression = 'ObjectExpression',\n    SyntaxProperty = 'Property',\n    SyntaxUnaryExpression = 'UnaryExpression'; // Error messages should be identical to V8.\n\nvar MessageUnexpectedToken = 'Unexpected token %0',\n    MessageUnexpectedNumber = 'Unexpected number',\n    MessageUnexpectedString = 'Unexpected string',\n    MessageUnexpectedIdentifier = 'Unexpected identifier',\n    MessageUnexpectedReserved = 'Unexpected reserved word',\n    MessageUnexpectedEOS = 'Unexpected end of input',\n    MessageInvalidRegExp = 'Invalid regular expression',\n    MessageUnterminatedRegExp = 'Invalid regular expression: missing /',\n    MessageStrictOctalLiteral = 'Octal literals are not allowed in strict mode.',\n    MessageStrictDuplicateProperty = 'Duplicate data property in object literal not allowed in strict mode';\nvar ILLEGAL = 'ILLEGAL',\n    DISABLED = 'Disabled.'; // See also tools/generate-unicode-regex.py.\n\nvar RegexNonAsciiIdentifierStart = new RegExp('[\\\\xAA\\\\xB5\\\\xBA\\\\xC0-\\\\xD6\\\\xD8-\\\\xF6\\\\xF8-\\\\u02C1\\\\u02C6-\\\\u02D1\\\\u02E0-\\\\u02E4\\\\u02EC\\\\u02EE\\\\u0370-\\\\u0374\\\\u0376\\\\u0377\\\\u037A-\\\\u037D\\\\u037F\\\\u0386\\\\u0388-\\\\u038A\\\\u038C\\\\u038E-\\\\u03A1\\\\u03A3-\\\\u03F5\\\\u03F7-\\\\u0481\\\\u048A-\\\\u052F\\\\u0531-\\\\u0556\\\\u0559\\\\u0561-\\\\u0587\\\\u05D0-\\\\u05EA\\\\u05F0-\\\\u05F2\\\\u0620-\\\\u064A\\\\u066E\\\\u066F\\\\u0671-\\\\u06D3\\\\u06D5\\\\u06E5\\\\u06E6\\\\u06EE\\\\u06EF\\\\u06FA-\\\\u06FC\\\\u06FF\\\\u0710\\\\u0712-\\\\u072F\\\\u074D-\\\\u07A5\\\\u07B1\\\\u07CA-\\\\u07EA\\\\u07F4\\\\u07F5\\\\u07FA\\\\u0800-\\\\u0815\\\\u081A\\\\u0824\\\\u0828\\\\u0840-\\\\u0858\\\\u08A0-\\\\u08B2\\\\u0904-\\\\u0939\\\\u093D\\\\u0950\\\\u0958-\\\\u0961\\\\u0971-\\\\u0980\\\\u0985-\\\\u098C\\\\u098F\\\\u0990\\\\u0993-\\\\u09A8\\\\u09AA-\\\\u09B0\\\\u09B2\\\\u09B6-\\\\u09B9\\\\u09BD\\\\u09CE\\\\u09DC\\\\u09DD\\\\u09DF-\\\\u09E1\\\\u09F0\\\\u09F1\\\\u0A05-\\\\u0A0A\\\\u0A0F\\\\u0A10\\\\u0A13-\\\\u0A28\\\\u0A2A-\\\\u0A30\\\\u0A32\\\\u0A33\\\\u0A35\\\\u0A36\\\\u0A38\\\\u0A39\\\\u0A59-\\\\u0A5C\\\\u0A5E\\\\u0A72-\\\\u0A74\\\\u0A85-\\\\u0A8D\\\\u0A8F-\\\\u0A91\\\\u0A93-\\\\u0AA8\\\\u0AAA-\\\\u0AB0\\\\u0AB2\\\\u0AB3\\\\u0AB5-\\\\u0AB9\\\\u0ABD\\\\u0AD0\\\\u0AE0\\\\u0AE1\\\\u0B05-\\\\u0B0C\\\\u0B0F\\\\u0B10\\\\u0B13-\\\\u0B28\\\\u0B2A-\\\\u0B30\\\\u0B32\\\\u0B33\\\\u0B35-\\\\u0B39\\\\u0B3D\\\\u0B5C\\\\u0B5D\\\\u0B5F-\\\\u0B61\\\\u0B71\\\\u0B83\\\\u0B85-\\\\u0B8A\\\\u0B8E-\\\\u0B90\\\\u0B92-\\\\u0B95\\\\u0B99\\\\u0B9A\\\\u0B9C\\\\u0B9E\\\\u0B9F\\\\u0BA3\\\\u0BA4\\\\u0BA8-\\\\u0BAA\\\\u0BAE-\\\\u0BB9\\\\u0BD0\\\\u0C05-\\\\u0C0C\\\\u0C0E-\\\\u0C10\\\\u0C12-\\\\u0C28\\\\u0C2A-\\\\u0C39\\\\u0C3D\\\\u0C58\\\\u0C59\\\\u0C60\\\\u0C61\\\\u0C85-\\\\u0C8C\\\\u0C8E-\\\\u0C90\\\\u0C92-\\\\u0CA8\\\\u0CAA-\\\\u0CB3\\\\u0CB5-\\\\u0CB9\\\\u0CBD\\\\u0CDE\\\\u0CE0\\\\u0CE1\\\\u0CF1\\\\u0CF2\\\\u0D05-\\\\u0D0C\\\\u0D0E-\\\\u0D10\\\\u0D12-\\\\u0D3A\\\\u0D3D\\\\u0D4E\\\\u0D60\\\\u0D61\\\\u0D7A-\\\\u0D7F\\\\u0D85-\\\\u0D96\\\\u0D9A-\\\\u0DB1\\\\u0DB3-\\\\u0DBB\\\\u0DBD\\\\u0DC0-\\\\u0DC6\\\\u0E01-\\\\u0E30\\\\u0E32\\\\u0E33\\\\u0E40-\\\\u0E46\\\\u0E81\\\\u0E82\\\\u0E84\\\\u0E87\\\\u0E88\\\\u0E8A\\\\u0E8D\\\\u0E94-\\\\u0E97\\\\u0E99-\\\\u0E9F\\\\u0EA1-\\\\u0EA3\\\\u0EA5\\\\u0EA7\\\\u0EAA\\\\u0EAB\\\\u0EAD-\\\\u0EB0\\\\u0EB2\\\\u0EB3\\\\u0EBD\\\\u0EC0-\\\\u0EC4\\\\u0EC6\\\\u0EDC-\\\\u0EDF\\\\u0F00\\\\u0F40-\\\\u0F47\\\\u0F49-\\\\u0F6C\\\\u0F88-\\\\u0F8C\\\\u1000-\\\\u102A\\\\u103F\\\\u1050-\\\\u1055\\\\u105A-\\\\u105D\\\\u1061\\\\u1065\\\\u1066\\\\u106E-\\\\u1070\\\\u1075-\\\\u1081\\\\u108E\\\\u10A0-\\\\u10C5\\\\u10C7\\\\u10CD\\\\u10D0-\\\\u10FA\\\\u10FC-\\\\u1248\\\\u124A-\\\\u124D\\\\u1250-\\\\u1256\\\\u1258\\\\u125A-\\\\u125D\\\\u1260-\\\\u1288\\\\u128A-\\\\u128D\\\\u1290-\\\\u12B0\\\\u12B2-\\\\u12B5\\\\u12B8-\\\\u12BE\\\\u12C0\\\\u12C2-\\\\u12C5\\\\u12C8-\\\\u12D6\\\\u12D8-\\\\u1310\\\\u1312-\\\\u1315\\\\u1318-\\\\u135A\\\\u1380-\\\\u138F\\\\u13A0-\\\\u13F4\\\\u1401-\\\\u166C\\\\u166F-\\\\u167F\\\\u1681-\\\\u169A\\\\u16A0-\\\\u16EA\\\\u16EE-\\\\u16F8\\\\u1700-\\\\u170C\\\\u170E-\\\\u1711\\\\u1720-\\\\u1731\\\\u1740-\\\\u1751\\\\u1760-\\\\u176C\\\\u176E-\\\\u1770\\\\u1780-\\\\u17B3\\\\u17D7\\\\u17DC\\\\u1820-\\\\u1877\\\\u1880-\\\\u18A8\\\\u18AA\\\\u18B0-\\\\u18F5\\\\u1900-\\\\u191E\\\\u1950-\\\\u196D\\\\u1970-\\\\u1974\\\\u1980-\\\\u19AB\\\\u19C1-\\\\u19C7\\\\u1A00-\\\\u1A16\\\\u1A20-\\\\u1A54\\\\u1AA7\\\\u1B05-\\\\u1B33\\\\u1B45-\\\\u1B4B\\\\u1B83-\\\\u1BA0\\\\u1BAE\\\\u1BAF\\\\u1BBA-\\\\u1BE5\\\\u1C00-\\\\u1C23\\\\u1C4D-\\\\u1C4F\\\\u1C5A-\\\\u1C7D\\\\u1CE9-\\\\u1CEC\\\\u1CEE-\\\\u1CF1\\\\u1CF5\\\\u1CF6\\\\u1D00-\\\\u1DBF\\\\u1E00-\\\\u1F15\\\\u1F18-\\\\u1F1D\\\\u1F20-\\\\u1F45\\\\u1F48-\\\\u1F4D\\\\u1F50-\\\\u1F57\\\\u1F59\\\\u1F5B\\\\u1F5D\\\\u1F5F-\\\\u1F7D\\\\u1F80-\\\\u1FB4\\\\u1FB6-\\\\u1FBC\\\\u1FBE\\\\u1FC2-\\\\u1FC4\\\\u1FC6-\\\\u1FCC\\\\u1FD0-\\\\u1FD3\\\\u1FD6-\\\\u1FDB\\\\u1FE0-\\\\u1FEC\\\\u1FF2-\\\\u1FF4\\\\u1FF6-\\\\u1FFC\\\\u2071\\\\u207F\\\\u2090-\\\\u209C\\\\u2102\\\\u2107\\\\u210A-\\\\u2113\\\\u2115\\\\u2119-\\\\u211D\\\\u2124\\\\u2126\\\\u2128\\\\u212A-\\\\u212D\\\\u212F-\\\\u2139\\\\u213C-\\\\u213F\\\\u2145-\\\\u2149\\\\u214E\\\\u2160-\\\\u2188\\\\u2C00-\\\\u2C2E\\\\u2C30-\\\\u2C5E\\\\u2C60-\\\\u2CE4\\\\u2CEB-\\\\u2CEE\\\\u2CF2\\\\u2CF3\\\\u2D00-\\\\u2D25\\\\u2D27\\\\u2D2D\\\\u2D30-\\\\u2D67\\\\u2D6F\\\\u2D80-\\\\u2D96\\\\u2DA0-\\\\u2DA6\\\\u2DA8-\\\\u2DAE\\\\u2DB0-\\\\u2DB6\\\\u2DB8-\\\\u2DBE\\\\u2DC0-\\\\u2DC6\\\\u2DC8-\\\\u2DCE\\\\u2DD0-\\\\u2DD6\\\\u2DD8-\\\\u2DDE\\\\u2E2F\\\\u3005-\\\\u3007\\\\u3021-\\\\u3029\\\\u3031-\\\\u3035\\\\u3038-\\\\u303C\\\\u3041-\\\\u3096\\\\u309D-\\\\u309F\\\\u30A1-\\\\u30FA\\\\u30FC-\\\\u30FF\\\\u3105-\\\\u312D\\\\u3131-\\\\u318E\\\\u31A0-\\\\u31BA\\\\u31F0-\\\\u31FF\\\\u3400-\\\\u4DB5\\\\u4E00-\\\\u9FCC\\\\uA000-\\\\uA48C\\\\uA4D0-\\\\uA4FD\\\\uA500-\\\\uA60C\\\\uA610-\\\\uA61F\\\\uA62A\\\\uA62B\\\\uA640-\\\\uA66E\\\\uA67F-\\\\uA69D\\\\uA6A0-\\\\uA6EF\\\\uA717-\\\\uA71F\\\\uA722-\\\\uA788\\\\uA78B-\\\\uA78E\\\\uA790-\\\\uA7AD\\\\uA7B0\\\\uA7B1\\\\uA7F7-\\\\uA801\\\\uA803-\\\\uA805\\\\uA807-\\\\uA80A\\\\uA80C-\\\\uA822\\\\uA840-\\\\uA873\\\\uA882-\\\\uA8B3\\\\uA8F2-\\\\uA8F7\\\\uA8FB\\\\uA90A-\\\\uA925\\\\uA930-\\\\uA946\\\\uA960-\\\\uA97C\\\\uA984-\\\\uA9B2\\\\uA9CF\\\\uA9E0-\\\\uA9E4\\\\uA9E6-\\\\uA9EF\\\\uA9FA-\\\\uA9FE\\\\uAA00-\\\\uAA28\\\\uAA40-\\\\uAA42\\\\uAA44-\\\\uAA4B\\\\uAA60-\\\\uAA76\\\\uAA7A\\\\uAA7E-\\\\uAAAF\\\\uAAB1\\\\uAAB5\\\\uAAB6\\\\uAAB9-\\\\uAABD\\\\uAAC0\\\\uAAC2\\\\uAADB-\\\\uAADD\\\\uAAE0-\\\\uAAEA\\\\uAAF2-\\\\uAAF4\\\\uAB01-\\\\uAB06\\\\uAB09-\\\\uAB0E\\\\uAB11-\\\\uAB16\\\\uAB20-\\\\uAB26\\\\uAB28-\\\\uAB2E\\\\uAB30-\\\\uAB5A\\\\uAB5C-\\\\uAB5F\\\\uAB64\\\\uAB65\\\\uABC0-\\\\uABE2\\\\uAC00-\\\\uD7A3\\\\uD7B0-\\\\uD7C6\\\\uD7CB-\\\\uD7FB\\\\uF900-\\\\uFA6D\\\\uFA70-\\\\uFAD9\\\\uFB00-\\\\uFB06\\\\uFB13-\\\\uFB17\\\\uFB1D\\\\uFB1F-\\\\uFB28\\\\uFB2A-\\\\uFB36\\\\uFB38-\\\\uFB3C\\\\uFB3E\\\\uFB40\\\\uFB41\\\\uFB43\\\\uFB44\\\\uFB46-\\\\uFBB1\\\\uFBD3-\\\\uFD3D\\\\uFD50-\\\\uFD8F\\\\uFD92-\\\\uFDC7\\\\uFDF0-\\\\uFDFB\\\\uFE70-\\\\uFE74\\\\uFE76-\\\\uFEFC\\\\uFF21-\\\\uFF3A\\\\uFF41-\\\\uFF5A\\\\uFF66-\\\\uFFBE\\\\uFFC2-\\\\uFFC7\\\\uFFCA-\\\\uFFCF\\\\uFFD2-\\\\uFFD7\\\\uFFDA-\\\\uFFDC]'),\n    // eslint-disable-next-line no-misleading-character-class\nRegexNonAsciiIdentifierPart = new RegExp('[\\\\xAA\\\\xB5\\\\xBA\\\\xC0-\\\\xD6\\\\xD8-\\\\xF6\\\\xF8-\\\\u02C1\\\\u02C6-\\\\u02D1\\\\u02E0-\\\\u02E4\\\\u02EC\\\\u02EE\\\\u0300-\\\\u0374\\\\u0376\\\\u0377\\\\u037A-\\\\u037D\\\\u037F\\\\u0386\\\\u0388-\\\\u038A\\\\u038C\\\\u038E-\\\\u03A1\\\\u03A3-\\\\u03F5\\\\u03F7-\\\\u0481\\\\u0483-\\\\u0487\\\\u048A-\\\\u052F\\\\u0531-\\\\u0556\\\\u0559\\\\u0561-\\\\u0587\\\\u0591-\\\\u05BD\\\\u05BF\\\\u05C1\\\\u05C2\\\\u05C4\\\\u05C5\\\\u05C7\\\\u05D0-\\\\u05EA\\\\u05F0-\\\\u05F2\\\\u0610-\\\\u061A\\\\u0620-\\\\u0669\\\\u066E-\\\\u06D3\\\\u06D5-\\\\u06DC\\\\u06DF-\\\\u06E8\\\\u06EA-\\\\u06FC\\\\u06FF\\\\u0710-\\\\u074A\\\\u074D-\\\\u07B1\\\\u07C0-\\\\u07F5\\\\u07FA\\\\u0800-\\\\u082D\\\\u0840-\\\\u085B\\\\u08A0-\\\\u08B2\\\\u08E4-\\\\u0963\\\\u0966-\\\\u096F\\\\u0971-\\\\u0983\\\\u0985-\\\\u098C\\\\u098F\\\\u0990\\\\u0993-\\\\u09A8\\\\u09AA-\\\\u09B0\\\\u09B2\\\\u09B6-\\\\u09B9\\\\u09BC-\\\\u09C4\\\\u09C7\\\\u09C8\\\\u09CB-\\\\u09CE\\\\u09D7\\\\u09DC\\\\u09DD\\\\u09DF-\\\\u09E3\\\\u09E6-\\\\u09F1\\\\u0A01-\\\\u0A03\\\\u0A05-\\\\u0A0A\\\\u0A0F\\\\u0A10\\\\u0A13-\\\\u0A28\\\\u0A2A-\\\\u0A30\\\\u0A32\\\\u0A33\\\\u0A35\\\\u0A36\\\\u0A38\\\\u0A39\\\\u0A3C\\\\u0A3E-\\\\u0A42\\\\u0A47\\\\u0A48\\\\u0A4B-\\\\u0A4D\\\\u0A51\\\\u0A59-\\\\u0A5C\\\\u0A5E\\\\u0A66-\\\\u0A75\\\\u0A81-\\\\u0A83\\\\u0A85-\\\\u0A8D\\\\u0A8F-\\\\u0A91\\\\u0A93-\\\\u0AA8\\\\u0AAA-\\\\u0AB0\\\\u0AB2\\\\u0AB3\\\\u0AB5-\\\\u0AB9\\\\u0ABC-\\\\u0AC5\\\\u0AC7-\\\\u0AC9\\\\u0ACB-\\\\u0ACD\\\\u0AD0\\\\u0AE0-\\\\u0AE3\\\\u0AE6-\\\\u0AEF\\\\u0B01-\\\\u0B03\\\\u0B05-\\\\u0B0C\\\\u0B0F\\\\u0B10\\\\u0B13-\\\\u0B28\\\\u0B2A-\\\\u0B30\\\\u0B32\\\\u0B33\\\\u0B35-\\\\u0B39\\\\u0B3C-\\\\u0B44\\\\u0B47\\\\u0B48\\\\u0B4B-\\\\u0B4D\\\\u0B56\\\\u0B57\\\\u0B5C\\\\u0B5D\\\\u0B5F-\\\\u0B63\\\\u0B66-\\\\u0B6F\\\\u0B71\\\\u0B82\\\\u0B83\\\\u0B85-\\\\u0B8A\\\\u0B8E-\\\\u0B90\\\\u0B92-\\\\u0B95\\\\u0B99\\\\u0B9A\\\\u0B9C\\\\u0B9E\\\\u0B9F\\\\u0BA3\\\\u0BA4\\\\u0BA8-\\\\u0BAA\\\\u0BAE-\\\\u0BB9\\\\u0BBE-\\\\u0BC2\\\\u0BC6-\\\\u0BC8\\\\u0BCA-\\\\u0BCD\\\\u0BD0\\\\u0BD7\\\\u0BE6-\\\\u0BEF\\\\u0C00-\\\\u0C03\\\\u0C05-\\\\u0C0C\\\\u0C0E-\\\\u0C10\\\\u0C12-\\\\u0C28\\\\u0C2A-\\\\u0C39\\\\u0C3D-\\\\u0C44\\\\u0C46-\\\\u0C48\\\\u0C4A-\\\\u0C4D\\\\u0C55\\\\u0C56\\\\u0C58\\\\u0C59\\\\u0C60-\\\\u0C63\\\\u0C66-\\\\u0C6F\\\\u0C81-\\\\u0C83\\\\u0C85-\\\\u0C8C\\\\u0C8E-\\\\u0C90\\\\u0C92-\\\\u0CA8\\\\u0CAA-\\\\u0CB3\\\\u0CB5-\\\\u0CB9\\\\u0CBC-\\\\u0CC4\\\\u0CC6-\\\\u0CC8\\\\u0CCA-\\\\u0CCD\\\\u0CD5\\\\u0CD6\\\\u0CDE\\\\u0CE0-\\\\u0CE3\\\\u0CE6-\\\\u0CEF\\\\u0CF1\\\\u0CF2\\\\u0D01-\\\\u0D03\\\\u0D05-\\\\u0D0C\\\\u0D0E-\\\\u0D10\\\\u0D12-\\\\u0D3A\\\\u0D3D-\\\\u0D44\\\\u0D46-\\\\u0D48\\\\u0D4A-\\\\u0D4E\\\\u0D57\\\\u0D60-\\\\u0D63\\\\u0D66-\\\\u0D6F\\\\u0D7A-\\\\u0D7F\\\\u0D82\\\\u0D83\\\\u0D85-\\\\u0D96\\\\u0D9A-\\\\u0DB1\\\\u0DB3-\\\\u0DBB\\\\u0DBD\\\\u0DC0-\\\\u0DC6\\\\u0DCA\\\\u0DCF-\\\\u0DD4\\\\u0DD6\\\\u0DD8-\\\\u0DDF\\\\u0DE6-\\\\u0DEF\\\\u0DF2\\\\u0DF3\\\\u0E01-\\\\u0E3A\\\\u0E40-\\\\u0E4E\\\\u0E50-\\\\u0E59\\\\u0E81\\\\u0E82\\\\u0E84\\\\u0E87\\\\u0E88\\\\u0E8A\\\\u0E8D\\\\u0E94-\\\\u0E97\\\\u0E99-\\\\u0E9F\\\\u0EA1-\\\\u0EA3\\\\u0EA5\\\\u0EA7\\\\u0EAA\\\\u0EAB\\\\u0EAD-\\\\u0EB9\\\\u0EBB-\\\\u0EBD\\\\u0EC0-\\\\u0EC4\\\\u0EC6\\\\u0EC8-\\\\u0ECD\\\\u0ED0-\\\\u0ED9\\\\u0EDC-\\\\u0EDF\\\\u0F00\\\\u0F18\\\\u0F19\\\\u0F20-\\\\u0F29\\\\u0F35\\\\u0F37\\\\u0F39\\\\u0F3E-\\\\u0F47\\\\u0F49-\\\\u0F6C\\\\u0F71-\\\\u0F84\\\\u0F86-\\\\u0F97\\\\u0F99-\\\\u0FBC\\\\u0FC6\\\\u1000-\\\\u1049\\\\u1050-\\\\u109D\\\\u10A0-\\\\u10C5\\\\u10C7\\\\u10CD\\\\u10D0-\\\\u10FA\\\\u10FC-\\\\u1248\\\\u124A-\\\\u124D\\\\u1250-\\\\u1256\\\\u1258\\\\u125A-\\\\u125D\\\\u1260-\\\\u1288\\\\u128A-\\\\u128D\\\\u1290-\\\\u12B0\\\\u12B2-\\\\u12B5\\\\u12B8-\\\\u12BE\\\\u12C0\\\\u12C2-\\\\u12C5\\\\u12C8-\\\\u12D6\\\\u12D8-\\\\u1310\\\\u1312-\\\\u1315\\\\u1318-\\\\u135A\\\\u135D-\\\\u135F\\\\u1380-\\\\u138F\\\\u13A0-\\\\u13F4\\\\u1401-\\\\u166C\\\\u166F-\\\\u167F\\\\u1681-\\\\u169A\\\\u16A0-\\\\u16EA\\\\u16EE-\\\\u16F8\\\\u1700-\\\\u170C\\\\u170E-\\\\u1714\\\\u1720-\\\\u1734\\\\u1740-\\\\u1753\\\\u1760-\\\\u176C\\\\u176E-\\\\u1770\\\\u1772\\\\u1773\\\\u1780-\\\\u17D3\\\\u17D7\\\\u17DC\\\\u17DD\\\\u17E0-\\\\u17E9\\\\u180B-\\\\u180D\\\\u1810-\\\\u1819\\\\u1820-\\\\u1877\\\\u1880-\\\\u18AA\\\\u18B0-\\\\u18F5\\\\u1900-\\\\u191E\\\\u1920-\\\\u192B\\\\u1930-\\\\u193B\\\\u1946-\\\\u196D\\\\u1970-\\\\u1974\\\\u1980-\\\\u19AB\\\\u19B0-\\\\u19C9\\\\u19D0-\\\\u19D9\\\\u1A00-\\\\u1A1B\\\\u1A20-\\\\u1A5E\\\\u1A60-\\\\u1A7C\\\\u1A7F-\\\\u1A89\\\\u1A90-\\\\u1A99\\\\u1AA7\\\\u1AB0-\\\\u1ABD\\\\u1B00-\\\\u1B4B\\\\u1B50-\\\\u1B59\\\\u1B6B-\\\\u1B73\\\\u1B80-\\\\u1BF3\\\\u1C00-\\\\u1C37\\\\u1C40-\\\\u1C49\\\\u1C4D-\\\\u1C7D\\\\u1CD0-\\\\u1CD2\\\\u1CD4-\\\\u1CF6\\\\u1CF8\\\\u1CF9\\\\u1D00-\\\\u1DF5\\\\u1DFC-\\\\u1F15\\\\u1F18-\\\\u1F1D\\\\u1F20-\\\\u1F45\\\\u1F48-\\\\u1F4D\\\\u1F50-\\\\u1F57\\\\u1F59\\\\u1F5B\\\\u1F5D\\\\u1F5F-\\\\u1F7D\\\\u1F80-\\\\u1FB4\\\\u1FB6-\\\\u1FBC\\\\u1FBE\\\\u1FC2-\\\\u1FC4\\\\u1FC6-\\\\u1FCC\\\\u1FD0-\\\\u1FD3\\\\u1FD6-\\\\u1FDB\\\\u1FE0-\\\\u1FEC\\\\u1FF2-\\\\u1FF4\\\\u1FF6-\\\\u1FFC\\\\u200C\\\\u200D\\\\u203F\\\\u2040\\\\u2054\\\\u2071\\\\u207F\\\\u2090-\\\\u209C\\\\u20D0-\\\\u20DC\\\\u20E1\\\\u20E5-\\\\u20F0\\\\u2102\\\\u2107\\\\u210A-\\\\u2113\\\\u2115\\\\u2119-\\\\u211D\\\\u2124\\\\u2126\\\\u2128\\\\u212A-\\\\u212D\\\\u212F-\\\\u2139\\\\u213C-\\\\u213F\\\\u2145-\\\\u2149\\\\u214E\\\\u2160-\\\\u2188\\\\u2C00-\\\\u2C2E\\\\u2C30-\\\\u2C5E\\\\u2C60-\\\\u2CE4\\\\u2CEB-\\\\u2CF3\\\\u2D00-\\\\u2D25\\\\u2D27\\\\u2D2D\\\\u2D30-\\\\u2D67\\\\u2D6F\\\\u2D7F-\\\\u2D96\\\\u2DA0-\\\\u2DA6\\\\u2DA8-\\\\u2DAE\\\\u2DB0-\\\\u2DB6\\\\u2DB8-\\\\u2DBE\\\\u2DC0-\\\\u2DC6\\\\u2DC8-\\\\u2DCE\\\\u2DD0-\\\\u2DD6\\\\u2DD8-\\\\u2DDE\\\\u2DE0-\\\\u2DFF\\\\u2E2F\\\\u3005-\\\\u3007\\\\u3021-\\\\u302F\\\\u3031-\\\\u3035\\\\u3038-\\\\u303C\\\\u3041-\\\\u3096\\\\u3099\\\\u309A\\\\u309D-\\\\u309F\\\\u30A1-\\\\u30FA\\\\u30FC-\\\\u30FF\\\\u3105-\\\\u312D\\\\u3131-\\\\u318E\\\\u31A0-\\\\u31BA\\\\u31F0-\\\\u31FF\\\\u3400-\\\\u4DB5\\\\u4E00-\\\\u9FCC\\\\uA000-\\\\uA48C\\\\uA4D0-\\\\uA4FD\\\\uA500-\\\\uA60C\\\\uA610-\\\\uA62B\\\\uA640-\\\\uA66F\\\\uA674-\\\\uA67D\\\\uA67F-\\\\uA69D\\\\uA69F-\\\\uA6F1\\\\uA717-\\\\uA71F\\\\uA722-\\\\uA788\\\\uA78B-\\\\uA78E\\\\uA790-\\\\uA7AD\\\\uA7B0\\\\uA7B1\\\\uA7F7-\\\\uA827\\\\uA840-\\\\uA873\\\\uA880-\\\\uA8C4\\\\uA8D0-\\\\uA8D9\\\\uA8E0-\\\\uA8F7\\\\uA8FB\\\\uA900-\\\\uA92D\\\\uA930-\\\\uA953\\\\uA960-\\\\uA97C\\\\uA980-\\\\uA9C0\\\\uA9CF-\\\\uA9D9\\\\uA9E0-\\\\uA9FE\\\\uAA00-\\\\uAA36\\\\uAA40-\\\\uAA4D\\\\uAA50-\\\\uAA59\\\\uAA60-\\\\uAA76\\\\uAA7A-\\\\uAAC2\\\\uAADB-\\\\uAADD\\\\uAAE0-\\\\uAAEF\\\\uAAF2-\\\\uAAF6\\\\uAB01-\\\\uAB06\\\\uAB09-\\\\uAB0E\\\\uAB11-\\\\uAB16\\\\uAB20-\\\\uAB26\\\\uAB28-\\\\uAB2E\\\\uAB30-\\\\uAB5A\\\\uAB5C-\\\\uAB5F\\\\uAB64\\\\uAB65\\\\uABC0-\\\\uABEA\\\\uABEC\\\\uABED\\\\uABF0-\\\\uABF9\\\\uAC00-\\\\uD7A3\\\\uD7B0-\\\\uD7C6\\\\uD7CB-\\\\uD7FB\\\\uF900-\\\\uFA6D\\\\uFA70-\\\\uFAD9\\\\uFB00-\\\\uFB06\\\\uFB13-\\\\uFB17\\\\uFB1D-\\\\uFB28\\\\uFB2A-\\\\uFB36\\\\uFB38-\\\\uFB3C\\\\uFB3E\\\\uFB40\\\\uFB41\\\\uFB43\\\\uFB44\\\\uFB46-\\\\uFBB1\\\\uFBD3-\\\\uFD3D\\\\uFD50-\\\\uFD8F\\\\uFD92-\\\\uFDC7\\\\uFDF0-\\\\uFDFB\\\\uFE00-\\\\uFE0F\\\\uFE20-\\\\uFE2D\\\\uFE33\\\\uFE34\\\\uFE4D-\\\\uFE4F\\\\uFE70-\\\\uFE74\\\\uFE76-\\\\uFEFC\\\\uFF10-\\\\uFF19\\\\uFF21-\\\\uFF3A\\\\uFF3F\\\\uFF41-\\\\uFF5A\\\\uFF66-\\\\uFFBE\\\\uFFC2-\\\\uFFC7\\\\uFFCA-\\\\uFFCF\\\\uFFD2-\\\\uFFD7\\\\uFFDA-\\\\uFFDC]'); // Ensure the condition is true, otherwise throw an error.\n// This is only to have a better contract semantic, i.e. another safety net\n// to catch a logic error. The condition shall be fulfilled in normal case.\n// Do NOT use this to enforce a certain condition on any user input.\n\nfunction assert(condition, message) {\n  /* istanbul ignore next */\n  if (!condition) {\n    throw new Error('ASSERT: ' + message);\n  }\n}\n\nfunction isDecimalDigit(ch) {\n  return ch >= 0x30 && ch <= 0x39; // 0..9\n}\n\nfunction isHexDigit(ch) {\n  return '0123456789abcdefABCDEF'.indexOf(ch) >= 0;\n}\n\nfunction isOctalDigit(ch) {\n  return '01234567'.indexOf(ch) >= 0;\n} // 7.2 White Space\n\n\nfunction isWhiteSpace(ch) {\n  return ch === 0x20 || ch === 0x09 || ch === 0x0B || ch === 0x0C || ch === 0xA0 || ch >= 0x1680 && [0x1680, 0x180E, 0x2000, 0x2001, 0x2002, 0x2003, 0x2004, 0x2005, 0x2006, 0x2007, 0x2008, 0x2009, 0x200A, 0x202F, 0x205F, 0x3000, 0xFEFF].indexOf(ch) >= 0;\n} // 7.3 Line Terminators\n\n\nfunction isLineTerminator(ch) {\n  return ch === 0x0A || ch === 0x0D || ch === 0x2028 || ch === 0x2029;\n} // 7.6 Identifier Names and Identifiers\n\n\nfunction isIdentifierStart(ch) {\n  return ch === 0x24 || ch === 0x5F || // $ (dollar) and _ (underscore)\n  ch >= 0x41 && ch <= 0x5A || // A..Z\n  ch >= 0x61 && ch <= 0x7A || // a..z\n  ch === 0x5C || // \\ (backslash)\n  ch >= 0x80 && RegexNonAsciiIdentifierStart.test(String.fromCharCode(ch));\n}\n\nfunction isIdentifierPart(ch) {\n  return ch === 0x24 || ch === 0x5F || // $ (dollar) and _ (underscore)\n  ch >= 0x41 && ch <= 0x5A || // A..Z\n  ch >= 0x61 && ch <= 0x7A || // a..z\n  ch >= 0x30 && ch <= 0x39 || // 0..9\n  ch === 0x5C || // \\ (backslash)\n  ch >= 0x80 && RegexNonAsciiIdentifierPart.test(String.fromCharCode(ch));\n} // 7.6.1.1 Keywords\n\n\nconst keywords = {\n  'if': 1,\n  'in': 1,\n  'do': 1,\n  'var': 1,\n  'for': 1,\n  'new': 1,\n  'try': 1,\n  'let': 1,\n  'this': 1,\n  'else': 1,\n  'case': 1,\n  'void': 1,\n  'with': 1,\n  'enum': 1,\n  'while': 1,\n  'break': 1,\n  'catch': 1,\n  'throw': 1,\n  'const': 1,\n  'yield': 1,\n  'class': 1,\n  'super': 1,\n  'return': 1,\n  'typeof': 1,\n  'delete': 1,\n  'switch': 1,\n  'export': 1,\n  'import': 1,\n  'public': 1,\n  'static': 1,\n  'default': 1,\n  'finally': 1,\n  'extends': 1,\n  'package': 1,\n  'private': 1,\n  'function': 1,\n  'continue': 1,\n  'debugger': 1,\n  'interface': 1,\n  'protected': 1,\n  'instanceof': 1,\n  'implements': 1\n};\n\nfunction skipComment() {\n  while (index < length) {\n    const ch = source.charCodeAt(index);\n\n    if (isWhiteSpace(ch) || isLineTerminator(ch)) {\n      ++index;\n    } else {\n      break;\n    }\n  }\n}\n\nfunction scanHexEscape(prefix) {\n  var i,\n      len,\n      ch,\n      code = 0;\n  len = prefix === 'u' ? 4 : 2;\n\n  for (i = 0; i < len; ++i) {\n    if (index < length && isHexDigit(source[index])) {\n      ch = source[index++];\n      code = code * 16 + '0123456789abcdef'.indexOf(ch.toLowerCase());\n    } else {\n      throwError({}, MessageUnexpectedToken, ILLEGAL);\n    }\n  }\n\n  return String.fromCharCode(code);\n}\n\nfunction scanUnicodeCodePointEscape() {\n  var ch, code, cu1, cu2;\n  ch = source[index];\n  code = 0; // At least, one hex digit is required.\n\n  if (ch === '}') {\n    throwError({}, MessageUnexpectedToken, ILLEGAL);\n  }\n\n  while (index < length) {\n    ch = source[index++];\n\n    if (!isHexDigit(ch)) {\n      break;\n    }\n\n    code = code * 16 + '0123456789abcdef'.indexOf(ch.toLowerCase());\n  }\n\n  if (code > 0x10FFFF || ch !== '}') {\n    throwError({}, MessageUnexpectedToken, ILLEGAL);\n  } // UTF-16 Encoding\n\n\n  if (code <= 0xFFFF) {\n    return String.fromCharCode(code);\n  }\n\n  cu1 = (code - 0x10000 >> 10) + 0xD800;\n  cu2 = (code - 0x10000 & 1023) + 0xDC00;\n  return String.fromCharCode(cu1, cu2);\n}\n\nfunction getEscapedIdentifier() {\n  var ch, id;\n  ch = source.charCodeAt(index++);\n  id = String.fromCharCode(ch); // '\\u' (U+005C, U+0075) denotes an escaped character.\n\n  if (ch === 0x5C) {\n    if (source.charCodeAt(index) !== 0x75) {\n      throwError({}, MessageUnexpectedToken, ILLEGAL);\n    }\n\n    ++index;\n    ch = scanHexEscape('u');\n\n    if (!ch || ch === '\\\\' || !isIdentifierStart(ch.charCodeAt(0))) {\n      throwError({}, MessageUnexpectedToken, ILLEGAL);\n    }\n\n    id = ch;\n  }\n\n  while (index < length) {\n    ch = source.charCodeAt(index);\n\n    if (!isIdentifierPart(ch)) {\n      break;\n    }\n\n    ++index;\n    id += String.fromCharCode(ch); // '\\u' (U+005C, U+0075) denotes an escaped character.\n\n    if (ch === 0x5C) {\n      id = id.substr(0, id.length - 1);\n\n      if (source.charCodeAt(index) !== 0x75) {\n        throwError({}, MessageUnexpectedToken, ILLEGAL);\n      }\n\n      ++index;\n      ch = scanHexEscape('u');\n\n      if (!ch || ch === '\\\\' || !isIdentifierPart(ch.charCodeAt(0))) {\n        throwError({}, MessageUnexpectedToken, ILLEGAL);\n      }\n\n      id += ch;\n    }\n  }\n\n  return id;\n}\n\nfunction getIdentifier() {\n  var start, ch;\n  start = index++;\n\n  while (index < length) {\n    ch = source.charCodeAt(index);\n\n    if (ch === 0x5C) {\n      // Blackslash (U+005C) marks Unicode escape sequence.\n      index = start;\n      return getEscapedIdentifier();\n    }\n\n    if (isIdentifierPart(ch)) {\n      ++index;\n    } else {\n      break;\n    }\n  }\n\n  return source.slice(start, index);\n}\n\nfunction scanIdentifier() {\n  var start, id, type;\n  start = index; // Backslash (U+005C) starts an escaped character.\n\n  id = source.charCodeAt(index) === 0x5C ? getEscapedIdentifier() : getIdentifier(); // There is no keyword or literal with only one character.\n  // Thus, it must be an identifier.\n\n  if (id.length === 1) {\n    type = TokenIdentifier;\n  } else if (keywords.hasOwnProperty(id)) {\n    // eslint-disable-line no-prototype-builtins\n    type = TokenKeyword;\n  } else if (id === 'null') {\n    type = TokenNullLiteral;\n  } else if (id === 'true' || id === 'false') {\n    type = TokenBooleanLiteral;\n  } else {\n    type = TokenIdentifier;\n  }\n\n  return {\n    type: type,\n    value: id,\n    start: start,\n    end: index\n  };\n} // 7.7 Punctuators\n\n\nfunction scanPunctuator() {\n  var start = index,\n      code = source.charCodeAt(index),\n      code2,\n      ch1 = source[index],\n      ch2,\n      ch3,\n      ch4;\n\n  switch (code) {\n    // Check for most common single-character punctuators.\n    case 0x2E: // . dot\n\n    case 0x28: // ( open bracket\n\n    case 0x29: // ) close bracket\n\n    case 0x3B: // ; semicolon\n\n    case 0x2C: // , comma\n\n    case 0x7B: // { open curly brace\n\n    case 0x7D: // } close curly brace\n\n    case 0x5B: // [\n\n    case 0x5D: // ]\n\n    case 0x3A: // :\n\n    case 0x3F: // ?\n\n    case 0x7E:\n      // ~\n      ++index;\n      return {\n        type: TokenPunctuator,\n        value: String.fromCharCode(code),\n        start: start,\n        end: index\n      };\n\n    default:\n      code2 = source.charCodeAt(index + 1); // '=' (U+003D) marks an assignment or comparison operator.\n\n      if (code2 === 0x3D) {\n        switch (code) {\n          case 0x2B: // +\n\n          case 0x2D: // -\n\n          case 0x2F: // /\n\n          case 0x3C: // <\n\n          case 0x3E: // >\n\n          case 0x5E: // ^\n\n          case 0x7C: // |\n\n          case 0x25: // %\n\n          case 0x26: // &\n\n          case 0x2A:\n            // *\n            index += 2;\n            return {\n              type: TokenPunctuator,\n              value: String.fromCharCode(code) + String.fromCharCode(code2),\n              start: start,\n              end: index\n            };\n\n          case 0x21: // !\n\n          case 0x3D:\n            // =\n            index += 2; // !== and ===\n\n            if (source.charCodeAt(index) === 0x3D) {\n              ++index;\n            }\n\n            return {\n              type: TokenPunctuator,\n              value: source.slice(start, index),\n              start: start,\n              end: index\n            };\n        }\n      }\n\n  } // 4-character punctuator: >>>=\n\n\n  ch4 = source.substr(index, 4);\n\n  if (ch4 === '>>>=') {\n    index += 4;\n    return {\n      type: TokenPunctuator,\n      value: ch4,\n      start: start,\n      end: index\n    };\n  } // 3-character punctuators: === !== >>> <<= >>=\n\n\n  ch3 = ch4.substr(0, 3);\n\n  if (ch3 === '>>>' || ch3 === '<<=' || ch3 === '>>=') {\n    index += 3;\n    return {\n      type: TokenPunctuator,\n      value: ch3,\n      start: start,\n      end: index\n    };\n  } // Other 2-character punctuators: ++ -- << >> && ||\n\n\n  ch2 = ch3.substr(0, 2);\n\n  if (ch1 === ch2[1] && '+-<>&|'.indexOf(ch1) >= 0 || ch2 === '=>') {\n    index += 2;\n    return {\n      type: TokenPunctuator,\n      value: ch2,\n      start: start,\n      end: index\n    };\n  }\n\n  if (ch2 === '//') {\n    throwError({}, MessageUnexpectedToken, ILLEGAL);\n  } // 1-character punctuators: < > = ! + - * % & | ^ /\n\n\n  if ('<>=!+-*%&|^/'.indexOf(ch1) >= 0) {\n    ++index;\n    return {\n      type: TokenPunctuator,\n      value: ch1,\n      start: start,\n      end: index\n    };\n  }\n\n  throwError({}, MessageUnexpectedToken, ILLEGAL);\n} // 7.8.3 Numeric Literals\n\n\nfunction scanHexLiteral(start) {\n  let number = '';\n\n  while (index < length) {\n    if (!isHexDigit(source[index])) {\n      break;\n    }\n\n    number += source[index++];\n  }\n\n  if (number.length === 0) {\n    throwError({}, MessageUnexpectedToken, ILLEGAL);\n  }\n\n  if (isIdentifierStart(source.charCodeAt(index))) {\n    throwError({}, MessageUnexpectedToken, ILLEGAL);\n  }\n\n  return {\n    type: TokenNumericLiteral,\n    value: parseInt('0x' + number, 16),\n    start: start,\n    end: index\n  };\n}\n\nfunction scanOctalLiteral(start) {\n  let number = '0' + source[index++];\n\n  while (index < length) {\n    if (!isOctalDigit(source[index])) {\n      break;\n    }\n\n    number += source[index++];\n  }\n\n  if (isIdentifierStart(source.charCodeAt(index)) || isDecimalDigit(source.charCodeAt(index))) {\n    throwError({}, MessageUnexpectedToken, ILLEGAL);\n  }\n\n  return {\n    type: TokenNumericLiteral,\n    value: parseInt(number, 8),\n    octal: true,\n    start: start,\n    end: index\n  };\n}\n\nfunction scanNumericLiteral() {\n  var number, start, ch;\n  ch = source[index];\n  assert(isDecimalDigit(ch.charCodeAt(0)) || ch === '.', 'Numeric literal must start with a decimal digit or a decimal point');\n  start = index;\n  number = '';\n\n  if (ch !== '.') {\n    number = source[index++];\n    ch = source[index]; // Hex number starts with '0x'.\n    // Octal number starts with '0'.\n\n    if (number === '0') {\n      if (ch === 'x' || ch === 'X') {\n        ++index;\n        return scanHexLiteral(start);\n      }\n\n      if (isOctalDigit(ch)) {\n        return scanOctalLiteral(start);\n      } // decimal number starts with '0' such as '09' is illegal.\n\n\n      if (ch && isDecimalDigit(ch.charCodeAt(0))) {\n        throwError({}, MessageUnexpectedToken, ILLEGAL);\n      }\n    }\n\n    while (isDecimalDigit(source.charCodeAt(index))) {\n      number += source[index++];\n    }\n\n    ch = source[index];\n  }\n\n  if (ch === '.') {\n    number += source[index++];\n\n    while (isDecimalDigit(source.charCodeAt(index))) {\n      number += source[index++];\n    }\n\n    ch = source[index];\n  }\n\n  if (ch === 'e' || ch === 'E') {\n    number += source[index++];\n    ch = source[index];\n\n    if (ch === '+' || ch === '-') {\n      number += source[index++];\n    }\n\n    if (isDecimalDigit(source.charCodeAt(index))) {\n      while (isDecimalDigit(source.charCodeAt(index))) {\n        number += source[index++];\n      }\n    } else {\n      throwError({}, MessageUnexpectedToken, ILLEGAL);\n    }\n  }\n\n  if (isIdentifierStart(source.charCodeAt(index))) {\n    throwError({}, MessageUnexpectedToken, ILLEGAL);\n  }\n\n  return {\n    type: TokenNumericLiteral,\n    value: parseFloat(number),\n    start: start,\n    end: index\n  };\n} // 7.8.4 String Literals\n\n\nfunction scanStringLiteral() {\n  var str = '',\n      quote,\n      start,\n      ch,\n      code,\n      octal = false;\n  quote = source[index];\n  assert(quote === '\\'' || quote === '\"', 'String literal must starts with a quote');\n  start = index;\n  ++index;\n\n  while (index < length) {\n    ch = source[index++];\n\n    if (ch === quote) {\n      quote = '';\n      break;\n    } else if (ch === '\\\\') {\n      ch = source[index++];\n\n      if (!ch || !isLineTerminator(ch.charCodeAt(0))) {\n        switch (ch) {\n          case 'u':\n          case 'x':\n            if (source[index] === '{') {\n              ++index;\n              str += scanUnicodeCodePointEscape();\n            } else {\n              str += scanHexEscape(ch);\n            }\n\n            break;\n\n          case 'n':\n            str += '\\n';\n            break;\n\n          case 'r':\n            str += '\\r';\n            break;\n\n          case 't':\n            str += '\\t';\n            break;\n\n          case 'b':\n            str += '\\b';\n            break;\n\n          case 'f':\n            str += '\\f';\n            break;\n\n          case 'v':\n            str += '\\x0B';\n            break;\n\n          default:\n            if (isOctalDigit(ch)) {\n              code = '01234567'.indexOf(ch); // \\0 is not octal escape sequence\n\n              if (code !== 0) {\n                octal = true;\n              }\n\n              if (index < length && isOctalDigit(source[index])) {\n                octal = true;\n                code = code * 8 + '01234567'.indexOf(source[index++]); // 3 digits are only allowed when string starts\n                // with 0, 1, 2, 3\n\n                if ('0123'.indexOf(ch) >= 0 && index < length && isOctalDigit(source[index])) {\n                  code = code * 8 + '01234567'.indexOf(source[index++]);\n                }\n              }\n\n              str += String.fromCharCode(code);\n            } else {\n              str += ch;\n            }\n\n            break;\n        }\n      } else {\n        if (ch === '\\r' && source[index] === '\\n') {\n          ++index;\n        }\n      }\n    } else if (isLineTerminator(ch.charCodeAt(0))) {\n      break;\n    } else {\n      str += ch;\n    }\n  }\n\n  if (quote !== '') {\n    throwError({}, MessageUnexpectedToken, ILLEGAL);\n  }\n\n  return {\n    type: TokenStringLiteral,\n    value: str,\n    octal: octal,\n    start: start,\n    end: index\n  };\n}\n\nfunction testRegExp(pattern, flags) {\n  let tmp = pattern;\n\n  if (flags.indexOf('u') >= 0) {\n    // Replace each astral symbol and every Unicode code point\n    // escape sequence with a single ASCII symbol to avoid throwing on\n    // regular expressions that are only valid in combination with the\n    // `/u` flag.\n    // Note: replacing with the ASCII symbol `x` might cause false\n    // negatives in unlikely scenarios. For example, `[\\u{61}-b]` is a\n    // perfectly valid pattern that is equivalent to `[a-b]`, but it\n    // would be replaced by `[x-b]` which throws an error.\n    tmp = tmp.replace(/\\\\u\\{([0-9a-fA-F]+)\\}/g, ($0, $1) => {\n      if (parseInt($1, 16) <= 0x10FFFF) {\n        return 'x';\n      }\n\n      throwError({}, MessageInvalidRegExp);\n    }).replace(/[\\uD800-\\uDBFF][\\uDC00-\\uDFFF]/g, 'x');\n  } // First, detect invalid regular expressions.\n\n\n  try {\n    new RegExp(tmp);\n  } catch (e) {\n    throwError({}, MessageInvalidRegExp);\n  } // Return a regular expression object for this pattern-flag pair, or\n  // `null` in case the current environment doesn't support the flags it\n  // uses.\n\n\n  try {\n    return new RegExp(pattern, flags);\n  } catch (exception) {\n    return null;\n  }\n}\n\nfunction scanRegExpBody() {\n  var ch, str, classMarker, terminated, body;\n  ch = source[index];\n  assert(ch === '/', 'Regular expression literal must start with a slash');\n  str = source[index++];\n  classMarker = false;\n  terminated = false;\n\n  while (index < length) {\n    ch = source[index++];\n    str += ch;\n\n    if (ch === '\\\\') {\n      ch = source[index++]; // ECMA-262 7.8.5\n\n      if (isLineTerminator(ch.charCodeAt(0))) {\n        throwError({}, MessageUnterminatedRegExp);\n      }\n\n      str += ch;\n    } else if (isLineTerminator(ch.charCodeAt(0))) {\n      throwError({}, MessageUnterminatedRegExp);\n    } else if (classMarker) {\n      if (ch === ']') {\n        classMarker = false;\n      }\n    } else {\n      if (ch === '/') {\n        terminated = true;\n        break;\n      } else if (ch === '[') {\n        classMarker = true;\n      }\n    }\n  }\n\n  if (!terminated) {\n    throwError({}, MessageUnterminatedRegExp);\n  } // Exclude leading and trailing slash.\n\n\n  body = str.substr(1, str.length - 2);\n  return {\n    value: body,\n    literal: str\n  };\n}\n\nfunction scanRegExpFlags() {\n  var ch, str, flags;\n  str = '';\n  flags = '';\n\n  while (index < length) {\n    ch = source[index];\n\n    if (!isIdentifierPart(ch.charCodeAt(0))) {\n      break;\n    }\n\n    ++index;\n\n    if (ch === '\\\\' && index < length) {\n      throwError({}, MessageUnexpectedToken, ILLEGAL);\n    } else {\n      flags += ch;\n      str += ch;\n    }\n  }\n\n  if (flags.search(/[^gimuy]/g) >= 0) {\n    throwError({}, MessageInvalidRegExp, flags);\n  }\n\n  return {\n    value: flags,\n    literal: str\n  };\n}\n\nfunction scanRegExp() {\n  var start, body, flags, value;\n  lookahead = null;\n  skipComment();\n  start = index;\n  body = scanRegExpBody();\n  flags = scanRegExpFlags();\n  value = testRegExp(body.value, flags.value);\n  return {\n    literal: body.literal + flags.literal,\n    value: value,\n    regex: {\n      pattern: body.value,\n      flags: flags.value\n    },\n    start: start,\n    end: index\n  };\n}\n\nfunction isIdentifierName(token) {\n  return token.type === TokenIdentifier || token.type === TokenKeyword || token.type === TokenBooleanLiteral || token.type === TokenNullLiteral;\n}\n\nfunction advance() {\n  skipComment();\n\n  if (index >= length) {\n    return {\n      type: TokenEOF,\n      start: index,\n      end: index\n    };\n  }\n\n  const ch = source.charCodeAt(index);\n\n  if (isIdentifierStart(ch)) {\n    return scanIdentifier();\n  } // Very common: ( and ) and ;\n\n\n  if (ch === 0x28 || ch === 0x29 || ch === 0x3B) {\n    return scanPunctuator();\n  } // String literal starts with single quote (U+0027) or double quote (U+0022).\n\n\n  if (ch === 0x27 || ch === 0x22) {\n    return scanStringLiteral();\n  } // Dot (.) U+002E can also start a floating-point number, hence the need\n  // to check the next character.\n\n\n  if (ch === 0x2E) {\n    if (isDecimalDigit(source.charCodeAt(index + 1))) {\n      return scanNumericLiteral();\n    }\n\n    return scanPunctuator();\n  }\n\n  if (isDecimalDigit(ch)) {\n    return scanNumericLiteral();\n  }\n\n  return scanPunctuator();\n}\n\nfunction lex() {\n  const token = lookahead;\n  index = token.end;\n  lookahead = advance();\n  index = token.end;\n  return token;\n}\n\nfunction peek() {\n  const pos = index;\n  lookahead = advance();\n  index = pos;\n}\n\nfunction finishArrayExpression(elements) {\n  const node = new ASTNode(SyntaxArrayExpression);\n  node.elements = elements;\n  return node;\n}\n\nfunction finishBinaryExpression(operator, left, right) {\n  const node = new ASTNode(operator === '||' || operator === '&&' ? SyntaxLogicalExpression : SyntaxBinaryExpression);\n  node.operator = operator;\n  node.left = left;\n  node.right = right;\n  return node;\n}\n\nfunction finishCallExpression(callee, args) {\n  const node = new ASTNode(SyntaxCallExpression);\n  node.callee = callee;\n  node.arguments = args;\n  return node;\n}\n\nfunction finishConditionalExpression(test, consequent, alternate) {\n  const node = new ASTNode(SyntaxConditionalExpression);\n  node.test = test;\n  node.consequent = consequent;\n  node.alternate = alternate;\n  return node;\n}\n\nfunction finishIdentifier(name) {\n  const node = new ASTNode(SyntaxIdentifier);\n  node.name = name;\n  return node;\n}\n\nfunction finishLiteral(token) {\n  const node = new ASTNode(SyntaxLiteral);\n  node.value = token.value;\n  node.raw = source.slice(token.start, token.end);\n\n  if (token.regex) {\n    if (node.raw === '//') {\n      node.raw = '/(?:)/';\n    }\n\n    node.regex = token.regex;\n  }\n\n  return node;\n}\n\nfunction finishMemberExpression(accessor, object, property) {\n  const node = new ASTNode(SyntaxMemberExpression);\n  node.computed = accessor === '[';\n  node.object = object;\n  node.property = property;\n  if (!node.computed) property.member = true;\n  return node;\n}\n\nfunction finishObjectExpression(properties) {\n  const node = new ASTNode(SyntaxObjectExpression);\n  node.properties = properties;\n  return node;\n}\n\nfunction finishProperty(kind, key, value) {\n  const node = new ASTNode(SyntaxProperty);\n  node.key = key;\n  node.value = value;\n  node.kind = kind;\n  return node;\n}\n\nfunction finishUnaryExpression(operator, argument) {\n  const node = new ASTNode(SyntaxUnaryExpression);\n  node.operator = operator;\n  node.argument = argument;\n  node.prefix = true;\n  return node;\n} // Throw an exception\n\n\nfunction throwError(token, messageFormat) {\n  var error,\n      args = Array.prototype.slice.call(arguments, 2),\n      msg = messageFormat.replace(/%(\\d)/g, (whole, index) => {\n    assert(index < args.length, 'Message reference must be in range');\n    return args[index];\n  });\n  error = new Error(msg);\n  error.index = index;\n  error.description = msg;\n  throw error;\n} // Throw an exception because of the token.\n\n\nfunction throwUnexpected(token) {\n  if (token.type === TokenEOF) {\n    throwError(token, MessageUnexpectedEOS);\n  }\n\n  if (token.type === TokenNumericLiteral) {\n    throwError(token, MessageUnexpectedNumber);\n  }\n\n  if (token.type === TokenStringLiteral) {\n    throwError(token, MessageUnexpectedString);\n  }\n\n  if (token.type === TokenIdentifier) {\n    throwError(token, MessageUnexpectedIdentifier);\n  }\n\n  if (token.type === TokenKeyword) {\n    throwError(token, MessageUnexpectedReserved);\n  } // BooleanLiteral, NullLiteral, or Punctuator.\n\n\n  throwError(token, MessageUnexpectedToken, token.value);\n} // Expect the next token to match the specified punctuator.\n// If not, an exception will be thrown.\n\n\nfunction expect(value) {\n  const token = lex();\n\n  if (token.type !== TokenPunctuator || token.value !== value) {\n    throwUnexpected(token);\n  }\n} // Return true if the next token matches the specified punctuator.\n\n\nfunction match(value) {\n  return lookahead.type === TokenPunctuator && lookahead.value === value;\n} // Return true if the next token matches the specified keyword\n\n\nfunction matchKeyword(keyword) {\n  return lookahead.type === TokenKeyword && lookahead.value === keyword;\n} // 11.1.4 Array Initialiser\n\n\nfunction parseArrayInitialiser() {\n  const elements = [];\n  index = lookahead.start;\n  expect('[');\n\n  while (!match(']')) {\n    if (match(',')) {\n      lex();\n      elements.push(null);\n    } else {\n      elements.push(parseConditionalExpression());\n\n      if (!match(']')) {\n        expect(',');\n      }\n    }\n  }\n\n  lex();\n  return finishArrayExpression(elements);\n} // 11.1.5 Object Initialiser\n\n\nfunction parseObjectPropertyKey() {\n  index = lookahead.start;\n  const token = lex(); // Note: This function is called only from parseObjectProperty(), where\n  // EOF and Punctuator tokens are already filtered out.\n\n  if (token.type === TokenStringLiteral || token.type === TokenNumericLiteral) {\n    if (token.octal) {\n      throwError(token, MessageStrictOctalLiteral);\n    }\n\n    return finishLiteral(token);\n  }\n\n  return finishIdentifier(token.value);\n}\n\nfunction parseObjectProperty() {\n  var token, key, id, value;\n  index = lookahead.start;\n  token = lookahead;\n\n  if (token.type === TokenIdentifier) {\n    id = parseObjectPropertyKey();\n    expect(':');\n    value = parseConditionalExpression();\n    return finishProperty('init', id, value);\n  }\n\n  if (token.type === TokenEOF || token.type === TokenPunctuator) {\n    throwUnexpected(token);\n  } else {\n    key = parseObjectPropertyKey();\n    expect(':');\n    value = parseConditionalExpression();\n    return finishProperty('init', key, value);\n  }\n}\n\nfunction parseObjectInitialiser() {\n  var properties = [],\n      property,\n      name,\n      key,\n      map = {},\n      toString = String;\n  index = lookahead.start;\n  expect('{');\n\n  while (!match('}')) {\n    property = parseObjectProperty();\n\n    if (property.key.type === SyntaxIdentifier) {\n      name = property.key.name;\n    } else {\n      name = toString(property.key.value);\n    }\n\n    key = '$' + name;\n\n    if (Object.prototype.hasOwnProperty.call(map, key)) {\n      throwError({}, MessageStrictDuplicateProperty);\n    } else {\n      map[key] = true;\n    }\n\n    properties.push(property);\n\n    if (!match('}')) {\n      expect(',');\n    }\n  }\n\n  expect('}');\n  return finishObjectExpression(properties);\n} // 11.1.6 The Grouping Operator\n\n\nfunction parseGroupExpression() {\n  expect('(');\n  const expr = parseExpression();\n  expect(')');\n  return expr;\n} // 11.1 Primary Expressions\n\n\nconst legalKeywords = {\n  'if': 1\n};\n\nfunction parsePrimaryExpression() {\n  var type, token, expr;\n\n  if (match('(')) {\n    return parseGroupExpression();\n  }\n\n  if (match('[')) {\n    return parseArrayInitialiser();\n  }\n\n  if (match('{')) {\n    return parseObjectInitialiser();\n  }\n\n  type = lookahead.type;\n  index = lookahead.start;\n\n  if (type === TokenIdentifier || legalKeywords[lookahead.value]) {\n    expr = finishIdentifier(lex().value);\n  } else if (type === TokenStringLiteral || type === TokenNumericLiteral) {\n    if (lookahead.octal) {\n      throwError(lookahead, MessageStrictOctalLiteral);\n    }\n\n    expr = finishLiteral(lex());\n  } else if (type === TokenKeyword) {\n    throw new Error(DISABLED);\n  } else if (type === TokenBooleanLiteral) {\n    token = lex();\n    token.value = token.value === 'true';\n    expr = finishLiteral(token);\n  } else if (type === TokenNullLiteral) {\n    token = lex();\n    token.value = null;\n    expr = finishLiteral(token);\n  } else if (match('/') || match('/=')) {\n    expr = finishLiteral(scanRegExp());\n    peek();\n  } else {\n    throwUnexpected(lex());\n  }\n\n  return expr;\n} // 11.2 Left-Hand-Side Expressions\n\n\nfunction parseArguments() {\n  const args = [];\n  expect('(');\n\n  if (!match(')')) {\n    while (index < length) {\n      args.push(parseConditionalExpression());\n\n      if (match(')')) {\n        break;\n      }\n\n      expect(',');\n    }\n  }\n\n  expect(')');\n  return args;\n}\n\nfunction parseNonComputedProperty() {\n  index = lookahead.start;\n  const token = lex();\n\n  if (!isIdentifierName(token)) {\n    throwUnexpected(token);\n  }\n\n  return finishIdentifier(token.value);\n}\n\nfunction parseNonComputedMember() {\n  expect('.');\n  return parseNonComputedProperty();\n}\n\nfunction parseComputedMember() {\n  expect('[');\n  const expr = parseExpression();\n  expect(']');\n  return expr;\n}\n\nfunction parseLeftHandSideExpressionAllowCall() {\n  var expr, args, property;\n  expr = parsePrimaryExpression();\n\n  for (;;) {\n    if (match('.')) {\n      property = parseNonComputedMember();\n      expr = finishMemberExpression('.', expr, property);\n    } else if (match('(')) {\n      args = parseArguments();\n      expr = finishCallExpression(expr, args);\n    } else if (match('[')) {\n      property = parseComputedMember();\n      expr = finishMemberExpression('[', expr, property);\n    } else {\n      break;\n    }\n  }\n\n  return expr;\n} // 11.3 Postfix Expressions\n\n\nfunction parsePostfixExpression() {\n  const expr = parseLeftHandSideExpressionAllowCall();\n\n  if (lookahead.type === TokenPunctuator) {\n    if (match('++') || match('--')) {\n      throw new Error(DISABLED);\n    }\n  }\n\n  return expr;\n} // 11.4 Unary Operators\n\n\nfunction parseUnaryExpression() {\n  var token, expr;\n\n  if (lookahead.type !== TokenPunctuator && lookahead.type !== TokenKeyword) {\n    expr = parsePostfixExpression();\n  } else if (match('++') || match('--')) {\n    throw new Error(DISABLED);\n  } else if (match('+') || match('-') || match('~') || match('!')) {\n    token = lex();\n    expr = parseUnaryExpression();\n    expr = finishUnaryExpression(token.value, expr);\n  } else if (matchKeyword('delete') || matchKeyword('void') || matchKeyword('typeof')) {\n    throw new Error(DISABLED);\n  } else {\n    expr = parsePostfixExpression();\n  }\n\n  return expr;\n}\n\nfunction binaryPrecedence(token) {\n  let prec = 0;\n\n  if (token.type !== TokenPunctuator && token.type !== TokenKeyword) {\n    return 0;\n  }\n\n  switch (token.value) {\n    case '||':\n      prec = 1;\n      break;\n\n    case '&&':\n      prec = 2;\n      break;\n\n    case '|':\n      prec = 3;\n      break;\n\n    case '^':\n      prec = 4;\n      break;\n\n    case '&':\n      prec = 5;\n      break;\n\n    case '==':\n    case '!=':\n    case '===':\n    case '!==':\n      prec = 6;\n      break;\n\n    case '<':\n    case '>':\n    case '<=':\n    case '>=':\n    case 'instanceof':\n    case 'in':\n      prec = 7;\n      break;\n\n    case '<<':\n    case '>>':\n    case '>>>':\n      prec = 8;\n      break;\n\n    case '+':\n    case '-':\n      prec = 9;\n      break;\n\n    case '*':\n    case '/':\n    case '%':\n      prec = 11;\n      break;\n  }\n\n  return prec;\n} // 11.5 Multiplicative Operators\n// 11.6 Additive Operators\n// 11.7 Bitwise Shift Operators\n// 11.8 Relational Operators\n// 11.9 Equality Operators\n// 11.10 Binary Bitwise Operators\n// 11.11 Binary Logical Operators\n\n\nfunction parseBinaryExpression() {\n  var marker, markers, expr, token, prec, stack, right, operator, left, i;\n  marker = lookahead;\n  left = parseUnaryExpression();\n  token = lookahead;\n  prec = binaryPrecedence(token);\n\n  if (prec === 0) {\n    return left;\n  }\n\n  token.prec = prec;\n  lex();\n  markers = [marker, lookahead];\n  right = parseUnaryExpression();\n  stack = [left, token, right];\n\n  while ((prec = binaryPrecedence(lookahead)) > 0) {\n    // Reduce: make a binary expression from the three topmost entries.\n    while (stack.length > 2 && prec <= stack[stack.length - 2].prec) {\n      right = stack.pop();\n      operator = stack.pop().value;\n      left = stack.pop();\n      markers.pop();\n      expr = finishBinaryExpression(operator, left, right);\n      stack.push(expr);\n    } // Shift.\n\n\n    token = lex();\n    token.prec = prec;\n    stack.push(token);\n    markers.push(lookahead);\n    expr = parseUnaryExpression();\n    stack.push(expr);\n  } // Final reduce to clean-up the stack.\n\n\n  i = stack.length - 1;\n  expr = stack[i];\n  markers.pop();\n\n  while (i > 1) {\n    markers.pop();\n    expr = finishBinaryExpression(stack[i - 1].value, stack[i - 2], expr);\n    i -= 2;\n  }\n\n  return expr;\n} // 11.12 Conditional Operator\n\n\nfunction parseConditionalExpression() {\n  var expr, consequent, alternate;\n  expr = parseBinaryExpression();\n\n  if (match('?')) {\n    lex();\n    consequent = parseConditionalExpression();\n    expect(':');\n    alternate = parseConditionalExpression();\n    expr = finishConditionalExpression(expr, consequent, alternate);\n  }\n\n  return expr;\n} // 11.14 Comma Operator\n\n\nfunction parseExpression() {\n  const expr = parseConditionalExpression();\n\n  if (match(',')) {\n    throw new Error(DISABLED); // no sequence expressions\n  }\n\n  return expr;\n}\n\nfunction parser (code) {\n  source = code;\n  index = 0;\n  length = source.length;\n  lookahead = null;\n  peek();\n  const expr = parseExpression();\n\n  if (lookahead.type !== TokenEOF) {\n    throw new Error('Unexpect token after expression.');\n  }\n\n  return expr;\n}\n\nvar Constants = {\n  NaN: 'NaN',\n  E: 'Math.E',\n  LN2: 'Math.LN2',\n  LN10: 'Math.LN10',\n  LOG2E: 'Math.LOG2E',\n  LOG10E: 'Math.LOG10E',\n  PI: 'Math.PI',\n  SQRT1_2: 'Math.SQRT1_2',\n  SQRT2: 'Math.SQRT2',\n  MIN_VALUE: 'Number.MIN_VALUE',\n  MAX_VALUE: 'Number.MAX_VALUE'\n};\n\nfunction Functions (codegen) {\n  function fncall(name, args, cast, type) {\n    let obj = codegen(args[0]);\n\n    if (cast) {\n      obj = cast + '(' + obj + ')';\n      if (cast.lastIndexOf('new ', 0) === 0) obj = '(' + obj + ')';\n    }\n\n    return obj + '.' + name + (type < 0 ? '' : type === 0 ? '()' : '(' + args.slice(1).map(codegen).join(',') + ')');\n  }\n\n  function fn(name, cast, type) {\n    return args => fncall(name, args, cast, type);\n  }\n\n  const DATE = 'new Date',\n        STRING = 'String',\n        REGEXP = 'RegExp';\n  return {\n    // MATH functions\n    isNaN: 'Number.isNaN',\n    isFinite: 'Number.isFinite',\n    abs: 'Math.abs',\n    acos: 'Math.acos',\n    asin: 'Math.asin',\n    atan: 'Math.atan',\n    atan2: 'Math.atan2',\n    ceil: 'Math.ceil',\n    cos: 'Math.cos',\n    exp: 'Math.exp',\n    floor: 'Math.floor',\n    log: 'Math.log',\n    max: 'Math.max',\n    min: 'Math.min',\n    pow: 'Math.pow',\n    random: 'Math.random',\n    round: 'Math.round',\n    sin: 'Math.sin',\n    sqrt: 'Math.sqrt',\n    tan: 'Math.tan',\n    clamp: function (args) {\n      if (args.length < 3) Object(vega_util__WEBPACK_IMPORTED_MODULE_0__[\"error\"])('Missing arguments to clamp function.');\n      if (args.length > 3) Object(vega_util__WEBPACK_IMPORTED_MODULE_0__[\"error\"])('Too many arguments to clamp function.');\n      const a = args.map(codegen);\n      return 'Math.max(' + a[1] + ', Math.min(' + a[2] + ',' + a[0] + '))';\n    },\n    // DATE functions\n    now: 'Date.now',\n    utc: 'Date.UTC',\n    datetime: DATE,\n    date: fn('getDate', DATE, 0),\n    day: fn('getDay', DATE, 0),\n    year: fn('getFullYear', DATE, 0),\n    month: fn('getMonth', DATE, 0),\n    hours: fn('getHours', DATE, 0),\n    minutes: fn('getMinutes', DATE, 0),\n    seconds: fn('getSeconds', DATE, 0),\n    milliseconds: fn('getMilliseconds', DATE, 0),\n    time: fn('getTime', DATE, 0),\n    timezoneoffset: fn('getTimezoneOffset', DATE, 0),\n    utcdate: fn('getUTCDate', DATE, 0),\n    utcday: fn('getUTCDay', DATE, 0),\n    utcyear: fn('getUTCFullYear', DATE, 0),\n    utcmonth: fn('getUTCMonth', DATE, 0),\n    utchours: fn('getUTCHours', DATE, 0),\n    utcminutes: fn('getUTCMinutes', DATE, 0),\n    utcseconds: fn('getUTCSeconds', DATE, 0),\n    utcmilliseconds: fn('getUTCMilliseconds', DATE, 0),\n    // sequence functions\n    length: fn('length', null, -1),\n    // STRING functions\n    parseFloat: 'parseFloat',\n    parseInt: 'parseInt',\n    upper: fn('toUpperCase', STRING, 0),\n    lower: fn('toLowerCase', STRING, 0),\n    substring: fn('substring', STRING),\n    split: fn('split', STRING),\n    trim: fn('trim', STRING, 0),\n    // REGEXP functions\n    regexp: REGEXP,\n    test: fn('test', REGEXP),\n    // Control Flow functions\n    if: function (args) {\n      if (args.length < 3) Object(vega_util__WEBPACK_IMPORTED_MODULE_0__[\"error\"])('Missing arguments to if function.');\n      if (args.length > 3) Object(vega_util__WEBPACK_IMPORTED_MODULE_0__[\"error\"])('Too many arguments to if function.');\n      const a = args.map(codegen);\n      return '(' + a[0] + '?' + a[1] + ':' + a[2] + ')';\n    }\n  };\n}\n\nfunction stripQuotes(s) {\n  const n = s && s.length - 1;\n  return n && (s[0] === '\"' && s[n] === '\"' || s[0] === '\\'' && s[n] === '\\'') ? s.slice(1, -1) : s;\n}\n\nfunction codegen (opt) {\n  opt = opt || {};\n  const allowed = opt.allowed ? Object(vega_util__WEBPACK_IMPORTED_MODULE_0__[\"toSet\"])(opt.allowed) : {},\n        forbidden = opt.forbidden ? Object(vega_util__WEBPACK_IMPORTED_MODULE_0__[\"toSet\"])(opt.forbidden) : {},\n        constants = opt.constants || Constants,\n        functions = (opt.functions || Functions)(visit),\n        globalvar = opt.globalvar,\n        fieldvar = opt.fieldvar,\n        outputGlobal = Object(vega_util__WEBPACK_IMPORTED_MODULE_0__[\"isFunction\"])(globalvar) ? globalvar : id => \"\".concat(globalvar, \"[\\\"\").concat(id, \"\\\"]\");\n  let globals = {},\n      fields = {},\n      memberDepth = 0;\n\n  function visit(ast) {\n    if (Object(vega_util__WEBPACK_IMPORTED_MODULE_0__[\"isString\"])(ast)) return ast;\n    const generator = Generators[ast.type];\n    if (generator == null) Object(vega_util__WEBPACK_IMPORTED_MODULE_0__[\"error\"])('Unsupported type: ' + ast.type);\n    return generator(ast);\n  }\n\n  const Generators = {\n    Literal: n => n.raw,\n    Identifier: n => {\n      const id = n.name;\n\n      if (memberDepth > 0) {\n        return id;\n      } else if (Object(vega_util__WEBPACK_IMPORTED_MODULE_0__[\"hasOwnProperty\"])(forbidden, id)) {\n        return Object(vega_util__WEBPACK_IMPORTED_MODULE_0__[\"error\"])('Illegal identifier: ' + id);\n      } else if (Object(vega_util__WEBPACK_IMPORTED_MODULE_0__[\"hasOwnProperty\"])(constants, id)) {\n        return constants[id];\n      } else if (Object(vega_util__WEBPACK_IMPORTED_MODULE_0__[\"hasOwnProperty\"])(allowed, id)) {\n        return id;\n      } else {\n        globals[id] = 1;\n        return outputGlobal(id);\n      }\n    },\n    MemberExpression: n => {\n      const d = !n.computed,\n            o = visit(n.object);\n      if (d) memberDepth += 1;\n      const p = visit(n.property);\n\n      if (o === fieldvar) {\n        // strip quotes to sanitize field name (#1653)\n        fields[stripQuotes(p)] = 1;\n      }\n\n      if (d) memberDepth -= 1;\n      return o + (d ? '.' + p : '[' + p + ']');\n    },\n    CallExpression: n => {\n      if (n.callee.type !== 'Identifier') {\n        Object(vega_util__WEBPACK_IMPORTED_MODULE_0__[\"error\"])('Illegal callee type: ' + n.callee.type);\n      }\n\n      const callee = n.callee.name,\n            args = n.arguments,\n            fn = Object(vega_util__WEBPACK_IMPORTED_MODULE_0__[\"hasOwnProperty\"])(functions, callee) && functions[callee];\n      if (!fn) Object(vega_util__WEBPACK_IMPORTED_MODULE_0__[\"error\"])('Unrecognized function: ' + callee);\n      return Object(vega_util__WEBPACK_IMPORTED_MODULE_0__[\"isFunction\"])(fn) ? fn(args) : fn + '(' + args.map(visit).join(',') + ')';\n    },\n    ArrayExpression: n => '[' + n.elements.map(visit).join(',') + ']',\n    BinaryExpression: n => '(' + visit(n.left) + ' ' + n.operator + ' ' + visit(n.right) + ')',\n    UnaryExpression: n => '(' + n.operator + visit(n.argument) + ')',\n    ConditionalExpression: n => '(' + visit(n.test) + '?' + visit(n.consequent) + ':' + visit(n.alternate) + ')',\n    LogicalExpression: n => '(' + visit(n.left) + n.operator + visit(n.right) + ')',\n    ObjectExpression: n => '{' + n.properties.map(visit).join(',') + '}',\n    Property: n => {\n      memberDepth += 1;\n      const k = visit(n.key);\n      memberDepth -= 1;\n      return k + ':' + visit(n.value);\n    }\n  };\n\n  function codegen(ast) {\n    const result = {\n      code: visit(ast),\n      globals: Object.keys(globals),\n      fields: Object.keys(fields)\n    };\n    globals = {};\n    fields = {};\n    return result;\n  }\n\n  codegen.functions = functions;\n  codegen.constants = constants;\n  return codegen;\n}\n\n\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,[encoded data, 90272 characters]\n//# sourceURL=webpack-internal:///./node_modules/vega-functions/node_modules/vega-expression/build/vega-expression.module.js\n");

/***/ }),

/***/ "./node_modules/vega-functions/node_modules/vega-loader/index.browser.js":
/*!*******************************************************************************!*\
  !*** ./node_modules/vega-functions/node_modules/vega-loader/index.browser.js ***!
  \*******************************************************************************/
/*! exports provided: loader, read, inferType, inferTypes, typeParsers, format, formats, responseType */
/***/ (function(module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"loader\", function() { return loader; });\n/* harmony import */ var _src_loader__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./src/loader */ \"./node_modules/vega-functions/node_modules/vega-loader/src/loader.js\");\n/* harmony import */ var _src_read__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./src/read */ \"./node_modules/vega-functions/node_modules/vega-loader/src/read.js\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"read\", function() { return _src_read__WEBPACK_IMPORTED_MODULE_1__[\"default\"]; });\n\n/* harmony import */ var _src_type__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./src/type */ \"./node_modules/vega-functions/node_modules/vega-loader/src/type.js\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"inferType\", function() { return _src_type__WEBPACK_IMPORTED_MODULE_2__[\"inferType\"]; });\n\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"inferTypes\", function() { return _src_type__WEBPACK_IMPORTED_MODULE_2__[\"inferTypes\"]; });\n\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"typeParsers\", function() { return _src_type__WEBPACK_IMPORTED_MODULE_2__[\"typeParsers\"]; });\n\n/* harmony import */ var _src_formats_index__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ./src/formats/index */ \"./node_modules/vega-functions/node_modules/vega-loader/src/formats/index.js\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"format\", function() { return _src_formats_index__WEBPACK_IMPORTED_MODULE_3__[\"format\"]; });\n\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"formats\", function() { return _src_formats_index__WEBPACK_IMPORTED_MODULE_3__[\"formats\"]; });\n\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"responseType\", function() { return _src_formats_index__WEBPACK_IMPORTED_MODULE_3__[\"responseType\"]; });\n\n\n\nconst loader = Object(_src_loader__WEBPACK_IMPORTED_MODULE_0__[\"default\"])(\n  typeof fetch !== 'undefined' && fetch, // use built-in fetch API\n  null // no file system access\n);\n\n\n\n\n\n\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvdmVnYS1mdW5jdGlvbnMvbm9kZV9tb2R1bGVzL3ZlZ2EtbG9hZGVyL2luZGV4LmJyb3dzZXIuanMuanMiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvdmVnYS1mdW5jdGlvbnMvbm9kZV9tb2R1bGVzL3ZlZ2EtbG9hZGVyL2luZGV4LmJyb3dzZXIuanM/ZjQ2NSJdLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgbG9hZGVyRmFjdG9yeSBmcm9tICcuL3NyYy9sb2FkZXInO1xuXG5leHBvcnQgY29uc3QgbG9hZGVyID0gbG9hZGVyRmFjdG9yeShcbiAgdHlwZW9mIGZldGNoICE9PSAndW5kZWZpbmVkJyAmJiBmZXRjaCwgLy8gdXNlIGJ1aWx0LWluIGZldGNoIEFQSVxuICBudWxsIC8vIG5vIGZpbGUgc3lzdGVtIGFjY2Vzc1xuKTtcblxuZXhwb3J0IHtcbiAgZGVmYXVsdCBhcyByZWFkXG59IGZyb20gJy4vc3JjL3JlYWQnO1xuXG5leHBvcnQge1xuICBpbmZlclR5cGUsXG4gIGluZmVyVHlwZXMsXG4gIHR5cGVQYXJzZXJzXG59IGZyb20gJy4vc3JjL3R5cGUnO1xuXG5leHBvcnQge1xuICBmb3JtYXQsXG4gIGZvcm1hdHMsXG4gIHJlc3BvbnNlVHlwZVxufSBmcm9tICcuL3NyYy9mb3JtYXRzL2luZGV4JztcbiJdLCJtYXBwaW5ncyI6IkFBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBR0E7QUFDQTtBQUtBO0FBQ0E7QUFLQTsiLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///./node_modules/vega-functions/node_modules/vega-loader/index.browser.js\n");

/***/ }),

/***/ "./node_modules/vega-functions/node_modules/vega-loader/src/formats/dsv.js":
/*!*********************************************************************************!*\
  !*** ./node_modules/vega-functions/node_modules/vega-loader/src/formats/dsv.js ***!
  \*********************************************************************************/
/*! exports provided: delimitedFormat, default */
/***/ (function(module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"delimitedFormat\", function() { return delimitedFormat; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"default\", function() { return dsv; });\n/* harmony import */ var d3_dsv__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! d3-dsv */ \"./node_modules/vega-functions/node_modules/d3-dsv/src/index.js\");\n/* harmony import */ var vega_util__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! vega-util */ \"./node_modules/vega-functions/node_modules/vega-util/build/vega-util.module.js\");\n\n\n\nfunction delimitedFormat(delimiter) {\n  const parse = function(data, format) {\n    const delim = {delimiter: delimiter};\n    return dsv(data, format ? Object(vega_util__WEBPACK_IMPORTED_MODULE_1__[\"extend\"])(format, delim) : delim);\n  };\n\n  parse.responseType = 'text';\n\n  return parse;\n}\n\nfunction dsv(data, format) {\n  if (format.header) {\n    data = format.header\n      .map(vega_util__WEBPACK_IMPORTED_MODULE_1__[\"stringValue\"])\n      .join(format.delimiter) + '\\n' + data;\n  }\n  return Object(d3_dsv__WEBPACK_IMPORTED_MODULE_0__[\"dsvFormat\"])(format.delimiter).parse(data + '');\n}\n\ndsv.responseType = 'text';\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvdmVnYS1mdW5jdGlvbnMvbm9kZV9tb2R1bGVzL3ZlZ2EtbG9hZGVyL3NyYy9mb3JtYXRzL2Rzdi5qcy5qcyIsInNvdXJjZXMiOlsid2VicGFjazovLy8uL25vZGVfbW9kdWxlcy92ZWdhLWZ1bmN0aW9ucy9ub2RlX21vZHVsZXMvdmVnYS1sb2FkZXIvc3JjL2Zvcm1hdHMvZHN2LmpzPzBkNDkiXSwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtkc3ZGb3JtYXR9IGZyb20gJ2QzLWRzdic7XG5pbXBvcnQge2V4dGVuZCwgc3RyaW5nVmFsdWV9IGZyb20gJ3ZlZ2EtdXRpbCc7XG5cbmV4cG9ydCBmdW5jdGlvbiBkZWxpbWl0ZWRGb3JtYXQoZGVsaW1pdGVyKSB7XG4gIGNvbnN0IHBhcnNlID0gZnVuY3Rpb24oZGF0YSwgZm9ybWF0KSB7XG4gICAgY29uc3QgZGVsaW0gPSB7ZGVsaW1pdGVyOiBkZWxpbWl0ZXJ9O1xuICAgIHJldHVybiBkc3YoZGF0YSwgZm9ybWF0ID8gZXh0ZW5kKGZvcm1hdCwgZGVsaW0pIDogZGVsaW0pO1xuICB9O1xuXG4gIHBhcnNlLnJlc3BvbnNlVHlwZSA9ICd0ZXh0JztcblxuICByZXR1cm4gcGFyc2U7XG59XG5cbmV4cG9ydCBkZWZhdWx0IGZ1bmN0aW9uIGRzdihkYXRhLCBmb3JtYXQpIHtcbiAgaWYgKGZvcm1hdC5oZWFkZXIpIHtcbiAgICBkYXRhID0gZm9ybWF0LmhlYWRlclxuICAgICAgLm1hcChzdHJpbmdWYWx1ZSlcbiAgICAgIC5qb2luKGZvcm1hdC5kZWxpbWl0ZXIpICsgJ1xcbicgKyBkYXRhO1xuICB9XG4gIHJldHVybiBkc3ZGb3JtYXQoZm9ybWF0LmRlbGltaXRlcikucGFyc2UoZGF0YSArICcnKTtcbn1cblxuZHN2LnJlc3BvbnNlVHlwZSA9ICd0ZXh0JztcbiJdLCJtYXBwaW5ncyI6IkFBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTsiLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///./node_modules/vega-functions/node_modules/vega-loader/src/formats/dsv.js\n");

/***/ }),

/***/ "./node_modules/vega-functions/node_modules/vega-loader/src/formats/index.js":
/*!***********************************************************************************!*\
  !*** ./node_modules/vega-functions/node_modules/vega-loader/src/formats/index.js ***!
  \***********************************************************************************/
/*! exports provided: format, formats, responseType */
/***/ (function(module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"format\", function() { return format; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"formats\", function() { return formats; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"responseType\", function() { return responseType; });\n/* harmony import */ var _dsv__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./dsv */ \"./node_modules/vega-functions/node_modules/vega-loader/src/formats/dsv.js\");\n/* harmony import */ var _json__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./json */ \"./node_modules/vega-functions/node_modules/vega-loader/src/formats/json.js\");\n/* harmony import */ var _topojson__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./topojson */ \"./node_modules/vega-functions/node_modules/vega-loader/src/formats/topojson.js\");\n/* harmony import */ var vega_util__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! vega-util */ \"./node_modules/vega-functions/node_modules/vega-util/build/vega-util.module.js\");\n\n\n\n\n\nconst format = {\n  dsv: _dsv__WEBPACK_IMPORTED_MODULE_0__[\"default\"],\n  csv: Object(_dsv__WEBPACK_IMPORTED_MODULE_0__[\"delimitedFormat\"])(','),\n  tsv: Object(_dsv__WEBPACK_IMPORTED_MODULE_0__[\"delimitedFormat\"])('\\t'),\n  json: _json__WEBPACK_IMPORTED_MODULE_1__[\"default\"],\n  topojson: _topojson__WEBPACK_IMPORTED_MODULE_2__[\"default\"]\n};\n\nfunction formats(name, reader) {\n  if (arguments.length > 1) {\n    format[name] = reader;\n    return this;\n  } else {\n    return Object(vega_util__WEBPACK_IMPORTED_MODULE_3__[\"hasOwnProperty\"])(format, name) ? format[name] : null;\n  }\n}\n\nfunction responseType(type) {\n  const f = formats(type);\n  return f && f.responseType || 'text';\n}\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvdmVnYS1mdW5jdGlvbnMvbm9kZV9tb2R1bGVzL3ZlZ2EtbG9hZGVyL3NyYy9mb3JtYXRzL2luZGV4LmpzLmpzIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL3ZlZ2EtZnVuY3Rpb25zL25vZGVfbW9kdWxlcy92ZWdhLWxvYWRlci9zcmMvZm9ybWF0cy9pbmRleC5qcz83NmY3Il0sInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7ZGVsaW1pdGVkRm9ybWF0LCBkZWZhdWx0IGFzIGRzdn0gZnJvbSAnLi9kc3YnO1xuaW1wb3J0IGpzb24gZnJvbSAnLi9qc29uJztcbmltcG9ydCB0b3BvanNvbiBmcm9tICcuL3RvcG9qc29uJztcbmltcG9ydCB7aGFzT3duUHJvcGVydHl9IGZyb20gJ3ZlZ2EtdXRpbCc7XG5cbmV4cG9ydCBjb25zdCBmb3JtYXQgPSB7XG4gIGRzdjogZHN2LFxuICBjc3Y6IGRlbGltaXRlZEZvcm1hdCgnLCcpLFxuICB0c3Y6IGRlbGltaXRlZEZvcm1hdCgnXFx0JyksXG4gIGpzb246IGpzb24sXG4gIHRvcG9qc29uOiB0b3BvanNvblxufTtcblxuZXhwb3J0IGZ1bmN0aW9uIGZvcm1hdHMobmFtZSwgcmVhZGVyKSB7XG4gIGlmIChhcmd1bWVudHMubGVuZ3RoID4gMSkge1xuICAgIGZvcm1hdFtuYW1lXSA9IHJlYWRlcjtcbiAgICByZXR1cm4gdGhpcztcbiAgfSBlbHNlIHtcbiAgICByZXR1cm4gaGFzT3duUHJvcGVydHkoZm9ybWF0LCBuYW1lKSA/IGZvcm1hdFtuYW1lXSA6IG51bGw7XG4gIH1cbn1cblxuZXhwb3J0IGZ1bmN0aW9uIHJlc3BvbnNlVHlwZSh0eXBlKSB7XG4gIGNvbnN0IGYgPSBmb3JtYXRzKHR5cGUpO1xuICByZXR1cm4gZiAmJiBmLnJlc3BvbnNlVHlwZSB8fCAndGV4dCc7XG59XG4iXSwibWFwcGluZ3MiOiJBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOyIsInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///./node_modules/vega-functions/node_modules/vega-loader/src/formats/index.js\n");

/***/ }),

/***/ "./node_modules/vega-functions/node_modules/vega-loader/src/formats/json.js":
/*!**********************************************************************************!*\
  !*** ./node_modules/vega-functions/node_modules/vega-loader/src/formats/json.js ***!
  \**********************************************************************************/
/*! exports provided: default */
/***/ (function(module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* WEBPACK VAR INJECTION */(function(Buffer) {/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"default\", function() { return json; });\n/* harmony import */ var vega_util__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! vega-util */ \"./node_modules/vega-functions/node_modules/vega-util/build/vega-util.module.js\");\n\n\nfunction isBuffer(_) {\n  return (typeof Buffer === 'function' && Object(vega_util__WEBPACK_IMPORTED_MODULE_0__[\"isFunction\"])(Buffer.isBuffer))\n    ? Buffer.isBuffer(_) : false;\n}\n\nfunction json(data, format) {\n  const prop = (format && format.property) ? Object(vega_util__WEBPACK_IMPORTED_MODULE_0__[\"field\"])(format.property) : vega_util__WEBPACK_IMPORTED_MODULE_0__[\"identity\"];\n  return Object(vega_util__WEBPACK_IMPORTED_MODULE_0__[\"isObject\"])(data) && !isBuffer(data)\n    ? parseJSON(prop(data), format)\n    : prop(JSON.parse(data));\n}\n\njson.responseType = 'json';\n\nfunction parseJSON(data, format) {\n  if (!Object(vega_util__WEBPACK_IMPORTED_MODULE_0__[\"isArray\"])(data) && Object(vega_util__WEBPACK_IMPORTED_MODULE_0__[\"isIterable\"])(data)) {\n    data = [...data];\n  }\n  return (format && format.copy)\n    ? JSON.parse(JSON.stringify(data))\n    : data;\n}\n\n/* WEBPACK VAR INJECTION */}.call(this, __webpack_require__(/*! ./../../../../../buffer/index.js */ \"./node_modules/buffer/index.js\").Buffer))//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvdmVnYS1mdW5jdGlvbnMvbm9kZV9tb2R1bGVzL3ZlZ2EtbG9hZGVyL3NyYy9mb3JtYXRzL2pzb24uanMuanMiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvdmVnYS1mdW5jdGlvbnMvbm9kZV9tb2R1bGVzL3ZlZ2EtbG9hZGVyL3NyYy9mb3JtYXRzL2pzb24uanM/MTQ0ZSJdLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge1xuICBmaWVsZCwgaWRlbnRpdHksIGlzQXJyYXksIGlzRnVuY3Rpb24sIGlzSXRlcmFibGUsIGlzT2JqZWN0XG59IGZyb20gJ3ZlZ2EtdXRpbCc7XG5cbmZ1bmN0aW9uIGlzQnVmZmVyKF8pIHtcbiAgcmV0dXJuICh0eXBlb2YgQnVmZmVyID09PSAnZnVuY3Rpb24nICYmIGlzRnVuY3Rpb24oQnVmZmVyLmlzQnVmZmVyKSlcbiAgICA/IEJ1ZmZlci5pc0J1ZmZlcihfKSA6IGZhbHNlO1xufVxuXG5leHBvcnQgZGVmYXVsdCBmdW5jdGlvbiBqc29uKGRhdGEsIGZvcm1hdCkge1xuICBjb25zdCBwcm9wID0gKGZvcm1hdCAmJiBmb3JtYXQucHJvcGVydHkpID8gZmllbGQoZm9ybWF0LnByb3BlcnR5KSA6IGlkZW50aXR5O1xuICByZXR1cm4gaXNPYmplY3QoZGF0YSkgJiYgIWlzQnVmZmVyKGRhdGEpXG4gICAgPyBwYXJzZUpTT04ocHJvcChkYXRhKSwgZm9ybWF0KVxuICAgIDogcHJvcChKU09OLnBhcnNlKGRhdGEpKTtcbn1cblxuanNvbi5yZXNwb25zZVR5cGUgPSAnanNvbic7XG5cbmZ1bmN0aW9uIHBhcnNlSlNPTihkYXRhLCBmb3JtYXQpIHtcbiAgaWYgKCFpc0FycmF5KGRhdGEpICYmIGlzSXRlcmFibGUoZGF0YSkpIHtcbiAgICBkYXRhID0gWy4uLmRhdGFdO1xuICB9XG4gIHJldHVybiAoZm9ybWF0ICYmIGZvcm1hdC5jb3B5KVxuICAgID8gSlNPTi5wYXJzZShKU09OLnN0cmluZ2lmeShkYXRhKSlcbiAgICA6IGRhdGE7XG59XG4iXSwibWFwcGluZ3MiOiJBQUFBO0FBQUE7QUFBQTtBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QSIsInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///./node_modules/vega-functions/node_modules/vega-loader/src/formats/json.js\n");

/***/ }),

/***/ "./node_modules/vega-functions/node_modules/vega-loader/src/formats/topojson.js":
/*!**************************************************************************************!*\
  !*** ./node_modules/vega-functions/node_modules/vega-loader/src/formats/topojson.js ***!
  \**************************************************************************************/
/*! exports provided: default */
/***/ (function(module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"default\", function() { return topojson; });\n/* harmony import */ var _json__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./json */ \"./node_modules/vega-functions/node_modules/vega-loader/src/formats/json.js\");\n/* harmony import */ var topojson_client__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! topojson-client */ \"./node_modules/topojson-client/src/index.js\");\n/* harmony import */ var vega_util__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! vega-util */ \"./node_modules/vega-functions/node_modules/vega-util/build/vega-util.module.js\");\n\n\n\n\nconst filters = {\n  interior: (a, b) => a !== b,\n  exterior: (a, b) => a === b\n};\n\nfunction topojson(data, format) {\n  let method, object, property, filter;\n  data = Object(_json__WEBPACK_IMPORTED_MODULE_0__[\"default\"])(data, format);\n\n  if (format && format.feature) {\n    method = topojson_client__WEBPACK_IMPORTED_MODULE_1__[\"feature\"];\n    property = format.feature;\n  } else if (format && format.mesh) {\n    method = topojson_client__WEBPACK_IMPORTED_MODULE_1__[\"mesh\"];\n    property = format.mesh;\n    filter = filters[format.filter];\n  } else {\n    Object(vega_util__WEBPACK_IMPORTED_MODULE_2__[\"error\"])('Missing TopoJSON feature or mesh parameter.');\n  }\n\n  object = (object = data.objects[property])\n    ? method(data, object, filter)\n    : Object(vega_util__WEBPACK_IMPORTED_MODULE_2__[\"error\"])('Invalid TopoJSON object: ' + property);\n\n  return object && object.features || [object];\n}\n\ntopojson.responseType = 'json';\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvdmVnYS1mdW5jdGlvbnMvbm9kZV9tb2R1bGVzL3ZlZ2EtbG9hZGVyL3NyYy9mb3JtYXRzL3RvcG9qc29uLmpzLmpzIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL3ZlZ2EtZnVuY3Rpb25zL25vZGVfbW9kdWxlcy92ZWdhLWxvYWRlci9zcmMvZm9ybWF0cy90b3BvanNvbi5qcz9lYWY4Il0sInNvdXJjZXNDb250ZW50IjpbImltcG9ydCBqc29uIGZyb20gJy4vanNvbic7XG5pbXBvcnQge2ZlYXR1cmUsIG1lc2h9IGZyb20gJ3RvcG9qc29uLWNsaWVudCc7XG5pbXBvcnQge2Vycm9yfSBmcm9tICd2ZWdhLXV0aWwnO1xuXG5jb25zdCBmaWx0ZXJzID0ge1xuICBpbnRlcmlvcjogKGEsIGIpID0+IGEgIT09IGIsXG4gIGV4dGVyaW9yOiAoYSwgYikgPT4gYSA9PT0gYlxufTtcblxuZXhwb3J0IGRlZmF1bHQgZnVuY3Rpb24gdG9wb2pzb24oZGF0YSwgZm9ybWF0KSB7XG4gIGxldCBtZXRob2QsIG9iamVjdCwgcHJvcGVydHksIGZpbHRlcjtcbiAgZGF0YSA9IGpzb24oZGF0YSwgZm9ybWF0KTtcblxuICBpZiAoZm9ybWF0ICYmIGZvcm1hdC5mZWF0dXJlKSB7XG4gICAgbWV0aG9kID0gZmVhdHVyZTtcbiAgICBwcm9wZXJ0eSA9IGZvcm1hdC5mZWF0dXJlO1xuICB9IGVsc2UgaWYgKGZvcm1hdCAmJiBmb3JtYXQubWVzaCkge1xuICAgIG1ldGhvZCA9IG1lc2g7XG4gICAgcHJvcGVydHkgPSBmb3JtYXQubWVzaDtcbiAgICBmaWx0ZXIgPSBmaWx0ZXJzW2Zvcm1hdC5maWx0ZXJdO1xuICB9IGVsc2Uge1xuICAgIGVycm9yKCdNaXNzaW5nIFRvcG9KU09OIGZlYXR1cmUgb3IgbWVzaCBwYXJhbWV0ZXIuJyk7XG4gIH1cblxuICBvYmplY3QgPSAob2JqZWN0ID0gZGF0YS5vYmplY3RzW3Byb3BlcnR5XSlcbiAgICA/IG1ldGhvZChkYXRhLCBvYmplY3QsIGZpbHRlcilcbiAgICA6IGVycm9yKCdJbnZhbGlkIFRvcG9KU09OIG9iamVjdDogJyArIHByb3BlcnR5KTtcblxuICByZXR1cm4gb2JqZWN0ICYmIG9iamVjdC5mZWF0dXJlcyB8fCBbb2JqZWN0XTtcbn1cblxudG9wb2pzb24ucmVzcG9uc2VUeXBlID0gJ2pzb24nO1xuIl0sIm1hcHBpbmdzIjoiQUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTsiLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///./node_modules/vega-functions/node_modules/vega-loader/src/formats/topojson.js\n");

/***/ }),

/***/ "./node_modules/vega-functions/node_modules/vega-loader/src/loader.js":
/*!****************************************************************************!*\
  !*** ./node_modules/vega-functions/node_modules/vega-loader/src/loader.js ***!
  \****************************************************************************/
/*! exports provided: default */
/***/ (function(module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var vega_util__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! vega-util */ \"./node_modules/vega-functions/node_modules/vega-util/build/vega-util.module.js\");\n\n\n// Matches absolute URLs with optional protocol\n//   https://...    file://...    //...\nconst protocol_re = /^([A-Za-z]+:)?\\/\\//;\n\n// Matches allowed URIs. From https://github.com/cure53/DOMPurify/blob/master/src/regexp.js with added file://\nconst allowed_re = /^(?:(?:(?:f|ht)tps?|mailto|tel|callto|cid|xmpp|file|data):|[^a-z]|[a-z+.\\-]+(?:[^a-z+.\\-:]|$))/i; // eslint-disable-line no-useless-escape\nconst whitespace_re = /[\\u0000-\\u0020\\u00A0\\u1680\\u180E\\u2000-\\u2029\\u205f\\u3000]/g; // eslint-disable-line no-control-regex\n\n\n// Special treatment in node.js for the file: protocol\nconst fileProtocol = 'file://';\n\n/**\n * Factory for a loader constructor that provides methods for requesting\n * files from either the network or disk, and for sanitizing request URIs.\n * @param {function} fetch - The Fetch API for HTTP network requests.\n *   If null or undefined, HTTP loading will be disabled.\n * @param {object} fs - The file system interface for file loading.\n *   If null or undefined, local file loading will be disabled.\n * @return {function} A loader constructor with the following signature:\n *   param {object} [options] - Optional default loading options to use.\n *   return {object} - A new loader instance.\n */\n/* harmony default export */ __webpack_exports__[\"default\"] = (function(fetch, fs) {\n  return options => ({\n    options: options || {},\n    sanitize: sanitize,\n    load: load,\n    fileAccess: !!fs,\n    file: fileLoader(fs),\n    http: httpLoader(fetch)\n  });\n});\n\n/**\n * Load an external resource, typically either from the web or from the local\n * filesystem. This function uses {@link sanitize} to first sanitize the uri,\n * then calls either {@link http} (for web requests) or {@link file} (for\n * filesystem loading).\n * @param {string} uri - The resource indicator (e.g., URL or filename).\n * @param {object} [options] - Optional loading options. These options will\n *   override any existing default options.\n * @return {Promise} - A promise that resolves to the loaded content.\n */\nasync function load(uri, options) {\n  const opt = await this.sanitize(uri, options),\n        url = opt.href;\n\n  return opt.localFile\n    ? this.file(url)\n    : this.http(url, options);\n}\n\n/**\n * URI sanitizer function.\n * @param {string} uri - The uri (url or filename) to sanity check.\n * @param {object} options - An options hash.\n * @return {Promise} - A promise that resolves to an object containing\n *  sanitized uri data, or rejects it the input uri is deemed invalid.\n *  The properties of the resolved object are assumed to be\n *  valid attributes for an HTML 'a' tag. The sanitized uri *must* be\n *  provided by the 'href' property of the returned object.\n */\nasync function sanitize(uri, options) {\n  options = Object(vega_util__WEBPACK_IMPORTED_MODULE_0__[\"extend\"])({}, this.options, options);\n\n  const fileAccess = this.fileAccess,\n        result = {href: null};\n\n  let isFile, loadFile, base;\n\n  const isAllowed = allowed_re.test(uri.replace(whitespace_re, ''));\n\n  if (uri == null || typeof uri !== 'string' || !isAllowed) {\n    Object(vega_util__WEBPACK_IMPORTED_MODULE_0__[\"error\"])('Sanitize failure, invalid URI: ' + Object(vega_util__WEBPACK_IMPORTED_MODULE_0__[\"stringValue\"])(uri));\n  }\n\n  const hasProtocol = protocol_re.test(uri);\n\n  // if relative url (no protocol/host), prepend baseURL\n  if ((base = options.baseURL) && !hasProtocol) {\n    // Ensure that there is a slash between the baseURL (e.g. hostname) and url\n    if (!uri.startsWith('/') && base[base.length-1] !== '/') {\n      uri = '/' + uri;\n    }\n    uri = base + uri;\n  }\n\n  // should we load from file system?\n  loadFile = (isFile = uri.startsWith(fileProtocol))\n    || options.mode === 'file'\n    || options.mode !== 'http' && !hasProtocol && fileAccess;\n\n  if (isFile) {\n    // strip file protocol\n    uri = uri.slice(fileProtocol.length);\n  } else if (uri.startsWith('//')) {\n    if (options.defaultProtocol === 'file') {\n      // if is file, strip protocol and set loadFile flag\n      uri = uri.slice(2);\n      loadFile = true;\n    } else {\n      // if relative protocol (starts with '//'), prepend default protocol\n      uri = (options.defaultProtocol || 'http') + ':' + uri;\n    }\n  }\n\n  // set non-enumerable mode flag to indicate local file load\n  Object.defineProperty(result, 'localFile', {value: !!loadFile});\n\n  // set uri\n  result.href = uri;\n\n  // set default result target, if specified\n  if (options.target) {\n    result.target = options.target + '';\n  }\n\n  // set default result rel, if specified (#1542)\n  if (options.rel) {\n    result.rel = options.rel + '';\n  }\n\n  // provide control over cross-origin image handling (#2238)\n  // https://developer.mozilla.org/en-US/docs/Web/HTML/CORS_enabled_image\n  if (options.context === 'image' && options.crossOrigin) {\n    result.crossOrigin = options.crossOrigin + '';\n  }\n\n  // return\n  return result;\n}\n\n/**\n * File system loader factory.\n * @param {object} fs - The file system interface.\n * @return {function} - A file loader with the following signature:\n *   param {string} filename - The file system path to load.\n *   param {string} filename - The file system path to load.\n *   return {Promise} A promise that resolves to the file contents.\n */\nfunction fileLoader(fs) {\n  return fs\n    ? filename => new Promise((accept, reject) => {\n        fs.readFile(filename, (error, data) => {\n          if (error) reject(error);\n          else accept(data);\n        });\n      })\n    : fileReject;\n}\n\n/**\n * Default file system loader that simply rejects.\n */\nasync function fileReject() {\n  Object(vega_util__WEBPACK_IMPORTED_MODULE_0__[\"error\"])('No file system access.');\n}\n\n/**\n * HTTP request handler factory.\n * @param {function} fetch - The Fetch API method.\n * @return {function} - An http loader with the following signature:\n *   param {string} url - The url to request.\n *   param {object} options - An options hash.\n *   return {Promise} - A promise that resolves to the file contents.\n */\nfunction httpLoader(fetch) {\n  return fetch\n    ? async function(url, options) {\n        const opt = Object(vega_util__WEBPACK_IMPORTED_MODULE_0__[\"extend\"])({}, this.options.http, options),\n              type = options && options.response,\n              response = await fetch(url, opt);\n\n        return !response.ok\n          ? Object(vega_util__WEBPACK_IMPORTED_MODULE_0__[\"error\"])(response.status + '' + response.statusText)\n          : Object(vega_util__WEBPACK_IMPORTED_MODULE_0__[\"isFunction\"])(response[type]) ? response[type]()\n          : response.text();\n      }\n    : httpReject;\n}\n\n/**\n * Default http request handler that simply rejects.\n */\nasync function httpReject() {\n  Object(vega_util__WEBPACK_IMPORTED_MODULE_0__[\"error\"])('No HTTP fetch method available.');\n}\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,[encoded data, 10364 characters]\n//# sourceURL=webpack-internal:///./node_modules/vega-functions/node_modules/vega-loader/src/loader.js\n");

/***/ }),

/***/ "./node_modules/vega-functions/node_modules/vega-loader/src/read.js":
/*!**************************************************************************!*\
  !*** ./node_modules/vega-functions/node_modules/vega-loader/src/read.js ***!
  \**************************************************************************/
/*! exports provided: default */
/***/ (function(module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _type__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./type */ \"./node_modules/vega-functions/node_modules/vega-loader/src/type.js\");\n/* harmony import */ var _formats_index__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./formats/index */ \"./node_modules/vega-functions/node_modules/vega-loader/src/formats/index.js\");\n/* harmony import */ var vega_format__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! vega-format */ \"./node_modules/vega-format/build/vega-format.module.js\");\n/* harmony import */ var vega_util__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! vega-util */ \"./node_modules/vega-functions/node_modules/vega-util/build/vega-util.module.js\");\n\n\n\n\n\n/* harmony default export */ __webpack_exports__[\"default\"] = (function(data, schema, timeParser, utcParser) {\n  schema = schema || {};\n\n  const reader = Object(_formats_index__WEBPACK_IMPORTED_MODULE_1__[\"formats\"])(schema.type || 'json');\n  if (!reader) Object(vega_util__WEBPACK_IMPORTED_MODULE_3__[\"error\"])('Unknown data format type: ' + schema.type);\n\n  data = reader(data, schema);\n  if (schema.parse) parse(data, schema.parse, timeParser, utcParser);\n\n  if (Object(vega_util__WEBPACK_IMPORTED_MODULE_3__[\"hasOwnProperty\"])(data, 'columns')) delete data.columns;\n  return data;\n});\n\nfunction parse(data, types, timeParser, utcParser) {\n  if (!data.length) return; // early exit for empty data\n\n  const locale = Object(vega_format__WEBPACK_IMPORTED_MODULE_2__[\"timeFormatDefaultLocale\"])();\n  timeParser = timeParser || locale.timeParse;\n  utcParser = utcParser || locale.utcParse;\n\n  let fields = data.columns || Object.keys(data[0]),\n      datum, field, i, j, n, m;\n\n  if (types === 'auto') types = Object(_type__WEBPACK_IMPORTED_MODULE_0__[\"inferTypes\"])(data, fields);\n\n  fields = Object.keys(types);\n  const parsers = fields.map(field => {\n    const type = types[field];\n    let parts, pattern;\n\n    if (type && (type.startsWith('date:') || type.startsWith('utc:'))) {\n      parts = type.split(/:(.+)?/, 2);  // split on first :\n      pattern = parts[1];\n\n      if ((pattern[0] === '\\'' && pattern[pattern.length-1] === '\\'') ||\n          (pattern[0] === '\"'  && pattern[pattern.length-1] === '\"')) {\n        pattern = pattern.slice(1, -1);\n      }\n\n      const parse = parts[0] === 'utc' ? utcParser : timeParser;\n      return parse(pattern);\n    }\n\n    if (!_type__WEBPACK_IMPORTED_MODULE_0__[\"typeParsers\"][type]) {\n      throw Error('Illegal format pattern: ' + field + ':' + type);\n    }\n\n    return _type__WEBPACK_IMPORTED_MODULE_0__[\"typeParsers\"][type];\n  });\n\n  for (i=0, n=data.length, m=fields.length; i<n; ++i) {\n    datum = data[i];\n    for (j=0; j<m; ++j) {\n      field = fields[j];\n      datum[field] = parsers[j](datum[field]);\n    }\n  }\n}\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvdmVnYS1mdW5jdGlvbnMvbm9kZV9tb2R1bGVzL3ZlZ2EtbG9hZGVyL3NyYy9yZWFkLmpzLmpzIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL3ZlZ2EtZnVuY3Rpb25zL25vZGVfbW9kdWxlcy92ZWdhLWxvYWRlci9zcmMvcmVhZC5qcz8zZDMzIl0sInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7aW5mZXJUeXBlcywgdHlwZVBhcnNlcnN9IGZyb20gJy4vdHlwZSc7XG5pbXBvcnQge2Zvcm1hdHN9IGZyb20gJy4vZm9ybWF0cy9pbmRleCc7XG5pbXBvcnQge3RpbWVGb3JtYXREZWZhdWx0TG9jYWxlfSBmcm9tICd2ZWdhLWZvcm1hdCc7XG5pbXBvcnQge2Vycm9yLCBoYXNPd25Qcm9wZXJ0eX0gZnJvbSAndmVnYS11dGlsJztcblxuZXhwb3J0IGRlZmF1bHQgZnVuY3Rpb24oZGF0YSwgc2NoZW1hLCB0aW1lUGFyc2VyLCB1dGNQYXJzZXIpIHtcbiAgc2NoZW1hID0gc2NoZW1hIHx8IHt9O1xuXG4gIGNvbnN0IHJlYWRlciA9IGZvcm1hdHMoc2NoZW1hLnR5cGUgfHwgJ2pzb24nKTtcbiAgaWYgKCFyZWFkZXIpIGVycm9yKCdVbmtub3duIGRhdGEgZm9ybWF0IHR5cGU6ICcgKyBzY2hlbWEudHlwZSk7XG5cbiAgZGF0YSA9IHJlYWRlcihkYXRhLCBzY2hlbWEpO1xuICBpZiAoc2NoZW1hLnBhcnNlKSBwYXJzZShkYXRhLCBzY2hlbWEucGFyc2UsIHRpbWVQYXJzZXIsIHV0Y1BhcnNlcik7XG5cbiAgaWYgKGhhc093blByb3BlcnR5KGRhdGEsICdjb2x1bW5zJykpIGRlbGV0ZSBkYXRhLmNvbHVtbnM7XG4gIHJldHVybiBkYXRhO1xufVxuXG5mdW5jdGlvbiBwYXJzZShkYXRhLCB0eXBlcywgdGltZVBhcnNlciwgdXRjUGFyc2VyKSB7XG4gIGlmICghZGF0YS5sZW5ndGgpIHJldHVybjsgLy8gZWFybHkgZXhpdCBmb3IgZW1wdHkgZGF0YVxuXG4gIGNvbnN0IGxvY2FsZSA9IHRpbWVGb3JtYXREZWZhdWx0TG9jYWxlKCk7XG4gIHRpbWVQYXJzZXIgPSB0aW1lUGFyc2VyIHx8IGxvY2FsZS50aW1lUGFyc2U7XG4gIHV0Y1BhcnNlciA9IHV0Y1BhcnNlciB8fCBsb2NhbGUudXRjUGFyc2U7XG5cbiAgbGV0IGZpZWxkcyA9IGRhdGEuY29sdW1ucyB8fCBPYmplY3Qua2V5cyhkYXRhWzBdKSxcbiAgICAgIGRhdHVtLCBmaWVsZCwgaSwgaiwgbiwgbTtcblxuICBpZiAodHlwZXMgPT09ICdhdXRvJykgdHlwZXMgPSBpbmZlclR5cGVzKGRhdGEsIGZpZWxkcyk7XG5cbiAgZmllbGRzID0gT2JqZWN0LmtleXModHlwZXMpO1xuICBjb25zdCBwYXJzZXJzID0gZmllbGRzLm1hcChmaWVsZCA9PiB7XG4gICAgY29uc3QgdHlwZSA9IHR5cGVzW2ZpZWxkXTtcbiAgICBsZXQgcGFydHMsIHBhdHRlcm47XG5cbiAgICBpZiAodHlwZSAmJiAodHlwZS5zdGFydHNXaXRoKCdkYXRlOicpIHx8IHR5cGUuc3RhcnRzV2l0aCgndXRjOicpKSkge1xuICAgICAgcGFydHMgPSB0eXBlLnNwbGl0KC86KC4rKT8vLCAyKTsgIC8vIHNwbGl0IG9uIGZpcnN0IDpcbiAgICAgIHBhdHRlcm4gPSBwYXJ0c1sxXTtcblxuICAgICAgaWYgKChwYXR0ZXJuWzBdID09PSAnXFwnJyAmJiBwYXR0ZXJuW3BhdHRlcm4ubGVuZ3RoLTFdID09PSAnXFwnJykgfHxcbiAgICAgICAgICAocGF0dGVyblswXSA9PT0gJ1wiJyAgJiYgcGF0dGVybltwYXR0ZXJuLmxlbmd0aC0xXSA9PT0gJ1wiJykpIHtcbiAgICAgICAgcGF0dGVybiA9IHBhdHRlcm4uc2xpY2UoMSwgLTEpO1xuICAgICAgfVxuXG4gICAgICBjb25zdCBwYXJzZSA9IHBhcnRzWzBdID09PSAndXRjJyA/IHV0Y1BhcnNlciA6IHRpbWVQYXJzZXI7XG4gICAgICByZXR1cm4gcGFyc2UocGF0dGVybik7XG4gICAgfVxuXG4gICAgaWYgKCF0eXBlUGFyc2Vyc1t0eXBlXSkge1xuICAgICAgdGhyb3cgRXJyb3IoJ0lsbGVnYWwgZm9ybWF0IHBhdHRlcm46ICcgKyBmaWVsZCArICc6JyArIHR5cGUpO1xuICAgIH1cblxuICAgIHJldHVybiB0eXBlUGFyc2Vyc1t0eXBlXTtcbiAgfSk7XG5cbiAgZm9yIChpPTAsIG49ZGF0YS5sZW5ndGgsIG09ZmllbGRzLmxlbmd0aDsgaTxuOyArK2kpIHtcbiAgICBkYXR1bSA9IGRhdGFbaV07XG4gICAgZm9yIChqPTA7IGo8bTsgKytqKSB7XG4gICAgICBmaWVsZCA9IGZpZWxkc1tqXTtcbiAgICAgIGRhdHVtW2ZpZWxkXSA9IHBhcnNlcnNbal0oZGF0dW1bZmllbGRdKTtcbiAgICB9XG4gIH1cbn1cbiJdLCJtYXBwaW5ncyI6IkFBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTsiLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///./node_modules/vega-functions/node_modules/vega-loader/src/read.js\n");

/***/ }),

/***/ "./node_modules/vega-functions/node_modules/vega-loader/src/type.js":
/*!**************************************************************************!*\
  !*** ./node_modules/vega-functions/node_modules/vega-loader/src/type.js ***!
  \**************************************************************************/
/*! exports provided: typeParsers, inferType, inferTypes */
/***/ (function(module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"typeParsers\", function() { return typeParsers; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"inferType\", function() { return inferType; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"inferTypes\", function() { return inferTypes; });\n/* harmony import */ var vega_util__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! vega-util */ \"./node_modules/vega-functions/node_modules/vega-util/build/vega-util.module.js\");\n\n\nconst isValid = _ => _ != null && _ === _;\n\nconst isBoolean = _ => _ === 'true'\n  || _ === 'false'\n  || _ === true\n  || _ === false;\n\nconst isDate = _ => !Number.isNaN(Date.parse(_));\n\nconst isNumber = _ => !Number.isNaN(+_) && !(_ instanceof Date);\n\nconst isInteger = _ => isNumber(_) && Number.isInteger(+_);\n\nconst typeParsers = {\n  boolean: vega_util__WEBPACK_IMPORTED_MODULE_0__[\"toBoolean\"],\n  integer: vega_util__WEBPACK_IMPORTED_MODULE_0__[\"toNumber\"],\n  number:  vega_util__WEBPACK_IMPORTED_MODULE_0__[\"toNumber\"],\n  date:    vega_util__WEBPACK_IMPORTED_MODULE_0__[\"toDate\"],\n  string:  vega_util__WEBPACK_IMPORTED_MODULE_0__[\"toString\"],\n  unknown: vega_util__WEBPACK_IMPORTED_MODULE_0__[\"identity\"]\n};\n\nconst typeTests = [\n  isBoolean,\n  isInteger,\n  isNumber,\n  isDate\n];\n\nconst typeList = [\n  'boolean',\n  'integer',\n  'number',\n  'date'\n];\n\nfunction inferType(values, field) {\n  if (!values || !values.length) return 'unknown';\n\n  const n = values.length,\n        m = typeTests.length,\n        a = typeTests.map((_, i) => i + 1);\n\n  for (let i = 0, t = 0, j, value; i < n; ++i) {\n    value = field ? values[i][field] : values[i];\n    for (j = 0; j < m; ++j) {\n      if (a[j] && isValid(value) && !typeTests[j](value)) {\n        a[j] = 0;\n        ++t;\n        if (t === typeTests.length) return 'string';\n      }\n    }\n  }\n\n  return typeList[\n    a.reduce((u, v) => u === 0 ? v : u, 0) - 1\n  ];\n}\n\nfunction inferTypes(data, fields) {\n  return fields.reduce((types, field) => {\n    types[field] = inferType(data, field);\n    return types;\n  }, {});\n}\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvdmVnYS1mdW5jdGlvbnMvbm9kZV9tb2R1bGVzL3ZlZ2EtbG9hZGVyL3NyYy90eXBlLmpzLmpzIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL3ZlZ2EtZnVuY3Rpb25zL25vZGVfbW9kdWxlcy92ZWdhLWxvYWRlci9zcmMvdHlwZS5qcz9hYTJhIl0sInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7aWRlbnRpdHksIHRvQm9vbGVhbiwgdG9EYXRlLCB0b051bWJlciwgdG9TdHJpbmd9IGZyb20gJ3ZlZ2EtdXRpbCc7XG5cbmNvbnN0IGlzVmFsaWQgPSBfID0+IF8gIT0gbnVsbCAmJiBfID09PSBfO1xuXG5jb25zdCBpc0Jvb2xlYW4gPSBfID0+IF8gPT09ICd0cnVlJ1xuICB8fCBfID09PSAnZmFsc2UnXG4gIHx8IF8gPT09IHRydWVcbiAgfHwgXyA9PT0gZmFsc2U7XG5cbmNvbnN0IGlzRGF0ZSA9IF8gPT4gIU51bWJlci5pc05hTihEYXRlLnBhcnNlKF8pKTtcblxuY29uc3QgaXNOdW1iZXIgPSBfID0+ICFOdW1iZXIuaXNOYU4oK18pICYmICEoXyBpbnN0YW5jZW9mIERhdGUpO1xuXG5jb25zdCBpc0ludGVnZXIgPSBfID0+IGlzTnVtYmVyKF8pICYmIE51bWJlci5pc0ludGVnZXIoK18pO1xuXG5leHBvcnQgY29uc3QgdHlwZVBhcnNlcnMgPSB7XG4gIGJvb2xlYW46IHRvQm9vbGVhbixcbiAgaW50ZWdlcjogdG9OdW1iZXIsXG4gIG51bWJlcjogIHRvTnVtYmVyLFxuICBkYXRlOiAgICB0b0RhdGUsXG4gIHN0cmluZzogIHRvU3RyaW5nLFxuICB1bmtub3duOiBpZGVudGl0eVxufTtcblxuY29uc3QgdHlwZVRlc3RzID0gW1xuICBpc0Jvb2xlYW4sXG4gIGlzSW50ZWdlcixcbiAgaXNOdW1iZXIsXG4gIGlzRGF0ZVxuXTtcblxuY29uc3QgdHlwZUxpc3QgPSBbXG4gICdib29sZWFuJyxcbiAgJ2ludGVnZXInLFxuICAnbnVtYmVyJyxcbiAgJ2RhdGUnXG5dO1xuXG5leHBvcnQgZnVuY3Rpb24gaW5mZXJUeXBlKHZhbHVlcywgZmllbGQpIHtcbiAgaWYgKCF2YWx1ZXMgfHwgIXZhbHVlcy5sZW5ndGgpIHJldHVybiAndW5rbm93bic7XG5cbiAgY29uc3QgbiA9IHZhbHVlcy5sZW5ndGgsXG4gICAgICAgIG0gPSB0eXBlVGVzdHMubGVuZ3RoLFxuICAgICAgICBhID0gdHlwZVRlc3RzLm1hcCgoXywgaSkgPT4gaSArIDEpO1xuXG4gIGZvciAobGV0IGkgPSAwLCB0ID0gMCwgaiwgdmFsdWU7IGkgPCBuOyArK2kpIHtcbiAgICB2YWx1ZSA9IGZpZWxkID8gdmFsdWVzW2ldW2ZpZWxkXSA6IHZhbHVlc1tpXTtcbiAgICBmb3IgKGogPSAwOyBqIDwgbTsgKytqKSB7XG4gICAgICBpZiAoYVtqXSAmJiBpc1ZhbGlkKHZhbHVlKSAmJiAhdHlwZVRlc3RzW2pdKHZhbHVlKSkge1xuICAgICAgICBhW2pdID0gMDtcbiAgICAgICAgKyt0O1xuICAgICAgICBpZiAodCA9PT0gdHlwZVRlc3RzLmxlbmd0aCkgcmV0dXJuICdzdHJpbmcnO1xuICAgICAgfVxuICAgIH1cbiAgfVxuXG4gIHJldHVybiB0eXBlTGlzdFtcbiAgICBhLnJlZHVjZSgodSwgdikgPT4gdSA9PT0gMCA/IHYgOiB1LCAwKSAtIDFcbiAgXTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGluZmVyVHlwZXMoZGF0YSwgZmllbGRzKSB7XG4gIHJldHVybiBmaWVsZHMucmVkdWNlKCh0eXBlcywgZmllbGQpID0+IHtcbiAgICB0eXBlc1tmaWVsZF0gPSBpbmZlclR5cGUoZGF0YSwgZmllbGQpO1xuICAgIHJldHVybiB0eXBlcztcbiAgfSwge30pO1xufVxuIl0sIm1hcHBpbmdzIjoiQUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7Iiwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///./node_modules/vega-functions/node_modules/vega-loader/src/type.js\n");

/***/ }),

/***/ "./node_modules/vega-functions/node_modules/vega-scale/build/vega-scale.module.js":
/*!****************************************************************************************!*\
  !*** ./node_modules/vega-functions/node_modules/vega-scale/build/vega-scale.module.js ***!
  \****************************************************************************************/
/*! exports provided: scaleImplicit, Band, BinOrdinal, DiscreteLegend, Diverging, GradientLegend, Identity, Linear, Log, Ordinal, Point, Pow, Quantile, Quantize, Sequential, Sqrt, SymbolLegend, Symlog, Threshold, Time, UTC, bandSpace, domainCaption, interpolate, interpolateColors, interpolateRange, isContinuous, isDiscrete, isDiscretizing, isInterpolating, isLogarithmic, isQuantile, isTemporal, isValidScaleType, labelFormat, labelFraction, labelValues, quantizeInterpolator, scale, scaleCopy, scaleFraction, scheme, tickCount, tickFormat, tickValues, validTicks */
/***/ (function(module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"Band\", function() { return Band; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"BinOrdinal\", function() { return BinOrdinal; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"DiscreteLegend\", function() { return DiscreteLegend; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"Diverging\", function() { return Diverging; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"GradientLegend\", function() { return GradientLegend; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"Identity\", function() { return Identity; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"Linear\", function() { return Linear; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"Log\", function() { return Log; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"Ordinal\", function() { return Ordinal; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"Point\", function() { return Point; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"Pow\", function() { return Pow; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"Quantile\", function() { return Quantile; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"Quantize\", function() { return Quantize; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"Sequential\", function() { return Sequential; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"Sqrt\", function() { return Sqrt; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"SymbolLegend\", function() { return SymbolLegend; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"Symlog\", function() { return Symlog; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"Threshold\", function() { return Threshold; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"Time\", function() { return Time; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"UTC\", function() { return UTC; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"bandSpace\", function() { return bandSpace; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"domainCaption\", function() { return domainCaption; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"interpolate\", function() { return interpolate; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"interpolateColors\", function() { return interpolateColors; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"interpolateRange\", function() { return interpolateRange; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"isContinuous\", function() { return isContinuous; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"isDiscrete\", function() { return isDiscrete; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"isDiscretizing\", function() { return isDiscretizing; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"isInterpolating\", function() { return isInterpolating; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"isLogarithmic\", function() { return isLogarithmic; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"isQuantile\", function() { return isQuantile; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"isTemporal\", function() { return isTemporal; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"isValidScaleType\", function() { return isValidScaleType; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"labelFormat\", function() { return labelFormat; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"labelFraction\", function() { return labelFraction; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"labelValues\", function() { return labelValues; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"quantizeInterpolator\", function() { return quantizeInterpolator; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"scale\", function() { return scale; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"scaleCopy\", function() { return scaleCopy; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"scaleFraction\", function() { return scaleFraction; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"scheme\", function() { return scheme; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"tickCount\", function() { return tickCount; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"tickFormat\", function() { return tickFormat; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"tickValues\", function() { return tickValues; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"validTicks\", function() { return validTicks; });\n/* harmony import */ var vega_util__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! vega-util */ \"./node_modules/vega-functions/node_modules/vega-util/build/vega-util.module.js\");\n/* harmony import */ var d3_array__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! d3-array */ \"./node_modules/d3-array/src/index.js\");\n/* harmony import */ var d3_scale__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! d3-scale */ \"./node_modules/vega-functions/node_modules/d3-scale/src/index.js\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"scaleImplicit\", function() { return d3_scale__WEBPACK_IMPORTED_MODULE_2__[\"scaleImplicit\"]; });\n\n/* harmony import */ var d3_interpolate__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! d3-interpolate */ \"./node_modules/vega-functions/node_modules/d3-interpolate/src/index.js\");\n/* harmony import */ var vega_time__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! vega-time */ \"./node_modules/vega-time/build/vega-time.module.js\");\n\n\n\n\n\n\n\n\nfunction bandSpace (count, paddingInner, paddingOuter) {\n  const space = count - paddingInner + paddingOuter * 2;\n  return count ? space > 0 ? space : 1 : 0;\n}\n\nconst Identity = 'identity';\nconst Linear = 'linear';\nconst Log = 'log';\nconst Pow = 'pow';\nconst Sqrt = 'sqrt';\nconst Symlog = 'symlog';\nconst Time = 'time';\nconst UTC = 'utc';\nconst Sequential = 'sequential';\nconst Diverging = 'diverging';\nconst Quantile = 'quantile';\nconst Quantize = 'quantize';\nconst Threshold = 'threshold';\nconst Ordinal = 'ordinal';\nconst Point = 'point';\nconst Band = 'band';\nconst BinOrdinal = 'bin-ordinal'; // categories\n\nconst Continuous = 'continuous';\nconst Discrete = 'discrete';\nconst Discretizing = 'discretizing';\nconst Interpolating = 'interpolating';\nconst Temporal = 'temporal';\n\nfunction invertRange (scale) {\n  return function (_) {\n    let lo = _[0],\n        hi = _[1],\n        t;\n\n    if (hi < lo) {\n      t = lo;\n      lo = hi;\n      hi = t;\n    }\n\n    return [scale.invert(lo), scale.invert(hi)];\n  };\n}\n\nfunction invertRangeExtent (scale) {\n  return function (_) {\n    const range = scale.range();\n    let lo = _[0],\n        hi = _[1],\n        min = -1,\n        max,\n        t,\n        i,\n        n;\n\n    if (hi < lo) {\n      t = lo;\n      lo = hi;\n      hi = t;\n    }\n\n    for (i = 0, n = range.length; i < n; ++i) {\n      if (range[i] >= lo && range[i] <= hi) {\n        if (min < 0) min = i;\n        max = i;\n      }\n    }\n\n    if (min < 0) return undefined;\n    lo = scale.invertExtent(range[min]);\n    hi = scale.invertExtent(range[max]);\n    return [lo[0] === undefined ? lo[1] : lo[0], hi[1] === undefined ? hi[0] : hi[1]];\n  };\n}\n\nfunction band() {\n  const scale = Object(d3_scale__WEBPACK_IMPORTED_MODULE_2__[\"scaleOrdinal\"])().unknown(undefined),\n        domain = scale.domain,\n        ordinalRange = scale.range;\n  let range$1 = [0, 1],\n      step,\n      bandwidth,\n      round = false,\n      paddingInner = 0,\n      paddingOuter = 0,\n      align = 0.5;\n  delete scale.unknown;\n\n  function rescale() {\n    const n = domain().length,\n          reverse = range$1[1] < range$1[0],\n          stop = range$1[1 - reverse],\n          space = bandSpace(n, paddingInner, paddingOuter);\n    let start = range$1[reverse - 0];\n    step = (stop - start) / (space || 1);\n\n    if (round) {\n      step = Math.floor(step);\n    }\n\n    start += (stop - start - step * (n - paddingInner)) * align;\n    bandwidth = step * (1 - paddingInner);\n\n    if (round) {\n      start = Math.round(start);\n      bandwidth = Math.round(bandwidth);\n    }\n\n    const values = Object(d3_array__WEBPACK_IMPORTED_MODULE_1__[\"range\"])(n).map(i => start + step * i);\n    return ordinalRange(reverse ? values.reverse() : values);\n  }\n\n  scale.domain = function (_) {\n    if (arguments.length) {\n      domain(_);\n      return rescale();\n    } else {\n      return domain();\n    }\n  };\n\n  scale.range = function (_) {\n    if (arguments.length) {\n      range$1 = [+_[0], +_[1]];\n      return rescale();\n    } else {\n      return range$1.slice();\n    }\n  };\n\n  scale.rangeRound = function (_) {\n    range$1 = [+_[0], +_[1]];\n    round = true;\n    return rescale();\n  };\n\n  scale.bandwidth = function () {\n    return bandwidth;\n  };\n\n  scale.step = function () {\n    return step;\n  };\n\n  scale.round = function (_) {\n    if (arguments.length) {\n      round = !!_;\n      return rescale();\n    } else {\n      return round;\n    }\n  };\n\n  scale.padding = function (_) {\n    if (arguments.length) {\n      paddingOuter = Math.max(0, Math.min(1, _));\n      paddingInner = paddingOuter;\n      return rescale();\n    } else {\n      return paddingInner;\n    }\n  };\n\n  scale.paddingInner = function (_) {\n    if (arguments.length) {\n      paddingInner = Math.max(0, Math.min(1, _));\n      return rescale();\n    } else {\n      return paddingInner;\n    }\n  };\n\n  scale.paddingOuter = function (_) {\n    if (arguments.length) {\n      paddingOuter = Math.max(0, Math.min(1, _));\n      return rescale();\n    } else {\n      return paddingOuter;\n    }\n  };\n\n  scale.align = function (_) {\n    if (arguments.length) {\n      align = Math.max(0, Math.min(1, _));\n      return rescale();\n    } else {\n      return align;\n    }\n  };\n\n  scale.invertRange = function (_) {\n    // bail if range has null or undefined values\n    if (_[0] == null || _[1] == null) return;\n    const reverse = range$1[1] < range$1[0],\n          values = reverse ? ordinalRange().reverse() : ordinalRange(),\n          n = values.length - 1;\n    let lo = +_[0],\n        hi = +_[1],\n        a,\n        b,\n        t; // bail if either range endpoint is invalid\n\n    if (lo !== lo || hi !== hi) return; // order range inputs, bail if outside of scale range\n\n    if (hi < lo) {\n      t = lo;\n      lo = hi;\n      hi = t;\n    }\n\n    if (hi < values[0] || lo > range$1[1 - reverse]) return; // binary search to index into scale range\n\n    a = Math.max(0, Object(d3_array__WEBPACK_IMPORTED_MODULE_1__[\"bisectRight\"])(values, lo) - 1);\n    b = lo === hi ? a : Object(d3_array__WEBPACK_IMPORTED_MODULE_1__[\"bisectRight\"])(values, hi) - 1; // increment index a if lo is within padding gap\n\n    if (lo - values[a] > bandwidth + 1e-10) ++a;\n\n    if (reverse) {\n      // map + swap\n      t = a;\n      a = n - b;\n      b = n - t;\n    }\n\n    return a > b ? undefined : domain().slice(a, b + 1);\n  };\n\n  scale.invert = function (_) {\n    const value = scale.invertRange([_, _]);\n    return value ? value[0] : value;\n  };\n\n  scale.copy = function () {\n    return band().domain(domain()).range(range$1).round(round).paddingInner(paddingInner).paddingOuter(paddingOuter).align(align);\n  };\n\n  return rescale();\n}\n\nfunction pointish(scale) {\n  const copy = scale.copy;\n  scale.padding = scale.paddingOuter;\n  delete scale.paddingInner;\n\n  scale.copy = function () {\n    return pointish(copy());\n  };\n\n  return scale;\n}\n\nfunction point() {\n  return pointish(band().paddingInner(1));\n}\n\nvar map = Array.prototype.map;\nfunction numbers(_) {\n  return map.call(_, vega_util__WEBPACK_IMPORTED_MODULE_0__[\"toNumber\"]);\n}\n\nconst slice = Array.prototype.slice;\n\nfunction scaleBinOrdinal() {\n  let domain = [],\n      range = [];\n\n  function scale(x) {\n    return x == null || x !== x ? undefined : range[(Object(d3_array__WEBPACK_IMPORTED_MODULE_1__[\"bisect\"])(domain, x) - 1) % range.length];\n  }\n\n  scale.domain = function (_) {\n    if (arguments.length) {\n      domain = numbers(_);\n      return scale;\n    } else {\n      return domain.slice();\n    }\n  };\n\n  scale.range = function (_) {\n    if (arguments.length) {\n      range = slice.call(_);\n      return scale;\n    } else {\n      return range.slice();\n    }\n  };\n\n  scale.tickFormat = function (count, specifier) {\n    return Object(d3_scale__WEBPACK_IMPORTED_MODULE_2__[\"tickFormat\"])(domain[0], Object(vega_util__WEBPACK_IMPORTED_MODULE_0__[\"peek\"])(domain), count == null ? 10 : count, specifier);\n  };\n\n  scale.copy = function () {\n    return scaleBinOrdinal().domain(scale.domain()).range(scale.range());\n  };\n\n  return scale;\n}\n\nconst scales = {};\n/**\n * Augment scales with their type and needed inverse methods.\n */\n\nfunction create(type, constructor, metadata) {\n  const ctr = function scale() {\n    const s = constructor();\n\n    if (!s.invertRange) {\n      s.invertRange = s.invert ? invertRange(s) : s.invertExtent ? invertRangeExtent(s) : undefined;\n    }\n\n    s.type = type;\n    return s;\n  };\n\n  ctr.metadata = Object(vega_util__WEBPACK_IMPORTED_MODULE_0__[\"toSet\"])(Object(vega_util__WEBPACK_IMPORTED_MODULE_0__[\"array\"])(metadata));\n  return ctr;\n}\n\nfunction scale(type, scale, metadata) {\n  if (arguments.length > 1) {\n    scales[type] = create(type, scale, metadata);\n    return this;\n  } else {\n    return isValidScaleType(type) ? scales[type] : undefined;\n  }\n} // identity scale\n\nscale(Identity, d3_scale__WEBPACK_IMPORTED_MODULE_2__[\"scaleIdentity\"]); // continuous scales\n\nscale(Linear, d3_scale__WEBPACK_IMPORTED_MODULE_2__[\"scaleLinear\"], Continuous);\nscale(Log, d3_scale__WEBPACK_IMPORTED_MODULE_2__[\"scaleLog\"], [Continuous, Log]);\nscale(Pow, d3_scale__WEBPACK_IMPORTED_MODULE_2__[\"scalePow\"], Continuous);\nscale(Sqrt, d3_scale__WEBPACK_IMPORTED_MODULE_2__[\"scaleSqrt\"], Continuous);\nscale(Symlog, d3_scale__WEBPACK_IMPORTED_MODULE_2__[\"scaleSymlog\"], Continuous);\nscale(Time, d3_scale__WEBPACK_IMPORTED_MODULE_2__[\"scaleTime\"], [Continuous, Temporal]);\nscale(UTC, d3_scale__WEBPACK_IMPORTED_MODULE_2__[\"scaleUtc\"], [Continuous, Temporal]); // sequential scales\n\nscale(Sequential, d3_scale__WEBPACK_IMPORTED_MODULE_2__[\"scaleSequential\"], [Continuous, Interpolating]); // backwards compat\n\nscale(\"\".concat(Sequential, \"-\").concat(Linear), d3_scale__WEBPACK_IMPORTED_MODULE_2__[\"scaleSequential\"], [Continuous, Interpolating]);\nscale(\"\".concat(Sequential, \"-\").concat(Log), d3_scale__WEBPACK_IMPORTED_MODULE_2__[\"scaleSequentialLog\"], [Continuous, Interpolating, Log]);\nscale(\"\".concat(Sequential, \"-\").concat(Pow), d3_scale__WEBPACK_IMPORTED_MODULE_2__[\"scaleSequentialPow\"], [Continuous, Interpolating]);\nscale(\"\".concat(Sequential, \"-\").concat(Sqrt), d3_scale__WEBPACK_IMPORTED_MODULE_2__[\"scaleSequentialSqrt\"], [Continuous, Interpolating]);\nscale(\"\".concat(Sequential, \"-\").concat(Symlog), d3_scale__WEBPACK_IMPORTED_MODULE_2__[\"scaleSequentialSymlog\"], [Continuous, Interpolating]); // diverging scales\n\nscale(\"\".concat(Diverging, \"-\").concat(Linear), d3_scale__WEBPACK_IMPORTED_MODULE_2__[\"scaleDiverging\"], [Continuous, Interpolating]);\nscale(\"\".concat(Diverging, \"-\").concat(Log), d3_scale__WEBPACK_IMPORTED_MODULE_2__[\"scaleDivergingLog\"], [Continuous, Interpolating, Log]);\nscale(\"\".concat(Diverging, \"-\").concat(Pow), d3_scale__WEBPACK_IMPORTED_MODULE_2__[\"scaleDivergingPow\"], [Continuous, Interpolating]);\nscale(\"\".concat(Diverging, \"-\").concat(Sqrt), d3_scale__WEBPACK_IMPORTED_MODULE_2__[\"scaleDivergingSqrt\"], [Continuous, Interpolating]);\nscale(\"\".concat(Diverging, \"-\").concat(Symlog), d3_scale__WEBPACK_IMPORTED_MODULE_2__[\"scaleDivergingSymlog\"], [Continuous, Interpolating]); // discretizing scales\n\nscale(Quantile, d3_scale__WEBPACK_IMPORTED_MODULE_2__[\"scaleQuantile\"], [Discretizing, Quantile]);\nscale(Quantize, d3_scale__WEBPACK_IMPORTED_MODULE_2__[\"scaleQuantize\"], Discretizing);\nscale(Threshold, d3_scale__WEBPACK_IMPORTED_MODULE_2__[\"scaleThreshold\"], Discretizing); // discrete scales\n\nscale(BinOrdinal, scaleBinOrdinal, [Discrete, Discretizing]);\nscale(Ordinal, d3_scale__WEBPACK_IMPORTED_MODULE_2__[\"scaleOrdinal\"], Discrete);\nscale(Band, band, Discrete);\nscale(Point, point, Discrete);\nfunction isValidScaleType(type) {\n  return Object(vega_util__WEBPACK_IMPORTED_MODULE_0__[\"hasOwnProperty\"])(scales, type);\n}\n\nfunction hasType(key, type) {\n  const s = scales[key];\n  return s && s.metadata[type];\n}\n\nfunction isContinuous(key) {\n  return hasType(key, Continuous);\n}\nfunction isDiscrete(key) {\n  return hasType(key, Discrete);\n}\nfunction isDiscretizing(key) {\n  return hasType(key, Discretizing);\n}\nfunction isLogarithmic(key) {\n  return hasType(key, Log);\n}\nfunction isTemporal(key) {\n  return hasType(key, Temporal);\n}\nfunction isInterpolating(key) {\n  return hasType(key, Interpolating);\n}\nfunction isQuantile(key) {\n  return hasType(key, Quantile);\n}\n\nconst scaleProps = ['clamp', 'base', 'constant', 'exponent'];\nfunction interpolateRange(interpolator, range) {\n  const start = range[0],\n        span = Object(vega_util__WEBPACK_IMPORTED_MODULE_0__[\"peek\"])(range) - start;\n  return function (i) {\n    return interpolator(start + i * span);\n  };\n}\nfunction interpolateColors(colors, type, gamma) {\n  return Object(d3_interpolate__WEBPACK_IMPORTED_MODULE_3__[\"piecewise\"])(interpolate(type || 'rgb', gamma), colors);\n}\nfunction quantizeInterpolator(interpolator, count) {\n  const samples = new Array(count),\n        n = count + 1;\n\n  for (let i = 0; i < count;) samples[i] = interpolator(++i / n);\n\n  return samples;\n}\nfunction scaleCopy(scale) {\n  const t = scale.type,\n        s = scale.copy();\n  s.type = t;\n  return s;\n}\nfunction scaleFraction(scale$1, min, max) {\n  const delta = max - min;\n  let i, t, s;\n\n  if (!delta || !Number.isFinite(delta)) {\n    return Object(vega_util__WEBPACK_IMPORTED_MODULE_0__[\"constant\"])(0.5);\n  } else {\n    i = (t = scale$1.type).indexOf('-');\n    t = i < 0 ? t : t.slice(i + 1);\n    s = scale(t)().domain([min, max]).range([0, 1]);\n    scaleProps.forEach(m => scale$1[m] ? s[m](scale$1[m]()) : 0);\n    return s;\n  }\n}\nfunction interpolate(type, gamma) {\n  const interp = d3_interpolate__WEBPACK_IMPORTED_MODULE_3__[method(type)];\n  return gamma != null && interp && interp.gamma ? interp.gamma(gamma) : interp;\n}\n\nfunction method(type) {\n  return 'interpolate' + type.toLowerCase().split('-').map(s => s[0].toUpperCase() + s.slice(1)).join('');\n}\n\nconst continuous = {\n  blues: 'cfe1f2bed8eca8cee58fc1de74b2d75ba3cf4592c63181bd206fb2125ca40a4a90',\n  greens: 'd3eecdc0e6baabdda594d3917bc77d60ba6c46ab5e329a512089430e7735036429',\n  greys: 'e2e2e2d4d4d4c4c4c4b1b1b19d9d9d8888887575756262624d4d4d3535351e1e1e',\n  oranges: 'fdd8b3fdc998fdb87bfda55efc9244f87f2cf06b18e4580bd14904b93d029f3303',\n  purples: 'e2e1efd4d4e8c4c5e0b4b3d6a3a0cc928ec3827cb97566ae684ea25c3696501f8c',\n  reds: 'fdc9b4fcb49afc9e80fc8767fa7051f6573fec3f2fdc2a25c81b1db21218970b13',\n  blueGreen: 'd5efedc1e8e0a7ddd18bd2be70c6a958ba9144ad77319c5d2089460e7736036429',\n  bluePurple: 'ccddecbad0e4a8c2dd9ab0d4919cc98d85be8b6db28a55a6873c99822287730f71',\n  greenBlue: 'd3eecec5e8c3b1e1bb9bd8bb82cec269c2ca51b2cd3c9fc7288abd1675b10b60a1',\n  orangeRed: 'fddcaffdcf9bfdc18afdad77fb9562f67d53ee6545e24932d32d1ebf130da70403',\n  purpleBlue: 'dbdaebc8cee4b1c3de97b7d87bacd15b9fc93a90c01e7fb70b70ab056199045281',\n  purpleBlueGreen: 'dbd8eac8cee4b0c3de93b7d872acd1549fc83892bb1c88a3097f8702736b016353',\n  purpleRed: 'dcc9e2d3b3d7ce9eccd186c0da6bb2e14da0e23189d91e6fc61159ab07498f023a',\n  redPurple: 'fccfccfcbec0faa9b8f98faff571a5ec539ddb3695c41b8aa908808d0179700174',\n  yellowGreen: 'e4f4acd1eca0b9e2949ed68880c97c62bb6e47aa5e3297502083440e723b036034',\n  yellowOrangeBrown: 'feeaa1fedd84fecc63feb746fca031f68921eb7215db5e0bc54c05ab3d038f3204',\n  yellowOrangeRed: 'fee087fed16ffebd59fea849fd903efc7335f9522bee3423de1b20ca0b22af0225',\n  blueOrange: '134b852f78b35da2cb9dcae1d2e5eff2f0ebfce0bafbbf74e8932fc5690d994a07',\n  brownBlueGreen: '704108a0651ac79548e3c78af3e6c6eef1eac9e9e48ed1c74da79e187a72025147',\n  purpleGreen: '5b1667834792a67fb6c9aed3e6d6e8eff0efd9efd5aedda971bb75368e490e5e29',\n  purpleOrange: '4114696647968f83b7b9b4d6dadbebf3eeeafce0bafbbf74e8932fc5690d994a07',\n  redBlue: '8c0d25bf363adf745ef4ae91fbdbc9f2efeed2e5ef9dcae15da2cb2f78b3134b85',\n  redGrey: '8c0d25bf363adf745ef4ae91fcdccbfaf4f1e2e2e2c0c0c0969696646464343434',\n  yellowGreenBlue: 'eff9bddbf1b4bde5b594d5b969c5be45b4c22c9ec02182b82163aa23479c1c3185',\n  redYellowBlue: 'a50026d4322cf16e43fcac64fedd90faf8c1dcf1ecabd6e875abd04a74b4313695',\n  redYellowGreen: 'a50026d4322cf16e43fcac63fedd8df9f7aed7ee8ea4d86e64bc6122964f006837',\n  pinkYellowGreen: '8e0152c0267edd72adf0b3d6faddedf5f3efe1f2cab6de8780bb474f9125276419',\n  spectral: '9e0142d13c4bf0704afcac63fedd8dfbf8b0e0f3a1a9dda269bda94288b55e4fa2',\n  viridis: '440154470e61481a6c482575472f7d443a834144873d4e8a39568c35608d31688e2d708e2a788e27818e23888e21918d1f988b1fa08822a8842ab07f35b77943bf7154c56866cc5d7ad1518fd744a5db36bcdf27d2e21be9e51afde725',\n  magma: '0000040404130b0924150e3720114b2c11603b0f704a107957157e651a80721f817f24828c29819a2e80a8327db6377ac43c75d1426fde4968e95462f1605df76f5cfa7f5efc8f65fe9f6dfeaf78febf84fece91fddea0fcedaffcfdbf',\n  inferno: '0000040403130c0826170c3b240c4f330a5f420a68500d6c5d126e6b176e781c6d86216b932667a12b62ae305cbb3755c73e4cd24644dd513ae65c30ed6925f3771af8850ffb9506fca50afcb519fac62df6d645f2e661f3f484fcffa4',\n  plasma: '0d088723069033059742039d5002a25d01a66a00a87801a88405a7900da49c179ea72198b12a90ba3488c33d80cb4779d35171da5a69e16462e76e5bed7953f2834cf68f44fa9a3dfca636fdb32ffec029fcce25f9dc24f5ea27f0f921',\n  cividis: '00205100235800265d002961012b65042e670831690d346b11366c16396d1c3c6e213f6e26426e2c456e31476e374a6e3c4d6e42506e47536d4c566d51586e555b6e5a5e6e5e616e62646f66676f6a6a706e6d717270717573727976737c79747f7c75827f758682768985778c8877908b78938e789691789a94789e9778a19b78a59e77a9a177aea575b2a874b6ab73bbaf71c0b26fc5b66dc9b96acebd68d3c065d8c462ddc85fe2cb5ce7cf58ebd355f0d652f3da4ff7de4cfae249fce647',\n  rainbow: '6e40aa883eb1a43db3bf3cafd83fa4ee4395fe4b83ff576eff6659ff7847ff8c38f3a130e2b72fcfcc36bee044aff05b8ff4576ff65b52f6673af27828ea8d1ddfa319d0b81cbecb23abd82f96e03d82e14c6edb5a5dd0664dbf6e40aa',\n  sinebow: 'ff4040fc582af47218e78d0bd5a703bfbf00a7d5038de70b72f41858fc2a40ff402afc5818f4720be78d03d5a700bfbf03a7d50b8de71872f42a58fc4040ff582afc7218f48d0be7a703d5bf00bfd503a7e70b8df41872fc2a58ff4040',\n  turbo: '23171b32204a3e2a71453493493eae4b49c54a53d7485ee44569ee4074f53c7ff8378af93295f72e9ff42ba9ef28b3e926bce125c5d925cdcf27d5c629dcbc2de3b232e9a738ee9d3ff39347f68950f9805afc7765fd6e70fe667cfd5e88fc5795fb51a1f84badf545b9f140c5ec3cd0e637dae034e4d931ecd12ef4c92bfac029ffb626ffad24ffa223ff9821ff8d1fff821dff771cfd6c1af76118f05616e84b14df4111d5380fcb2f0dc0260ab61f07ac1805a313029b0f00950c00910b00',\n  browns: 'eedbbdecca96e9b97ae4a865dc9856d18954c7784cc0673fb85536ad44339f3632',\n  tealBlues: 'bce4d89dd3d181c3cb65b3c245a2b9368fae347da0306a932c5985',\n  teals: 'bbdfdfa2d4d58ac9c975bcbb61b0af4da5a43799982b8b8c1e7f7f127273006667',\n  warmGreys: 'dcd4d0cec5c1c0b8b4b3aaa7a59c9998908c8b827f7e7673726866665c5a59504e',\n  goldGreen: 'f4d166d5ca60b6c35c98bb597cb25760a6564b9c533f8f4f33834a257740146c36',\n  goldOrange: 'f4d166f8be5cf8aa4cf5983bf3852aef701be2621fd65322c54923b142239e3a26',\n  goldRed: 'f4d166f6be59f9aa51fc964ef6834bee734ae56249db5247cf4244c43141b71d3e',\n  lightGreyRed: 'efe9e6e1dad7d5cbc8c8bdb9bbaea9cd967ddc7b43e15f19df4011dc000b',\n  lightGreyTeal: 'e4eaead6dcddc8ced2b7c2c7a6b4bc64b0bf22a6c32295c11f85be1876bc',\n  lightMulti: 'e0f1f2c4e9d0b0de9fd0e181f6e072f6c053f3993ef77440ef4a3c',\n  lightOrange: 'f2e7daf7d5baf9c499fab184fa9c73f68967ef7860e8645bde515bd43d5b',\n  lightTealBlue: 'e3e9e0c0dccf9aceca7abfc859afc0389fb9328dad2f7ca0276b95255988',\n  darkBlue: '3232322d46681a5c930074af008cbf05a7ce25c0dd38daed50f3faffffff',\n  darkGold: '3c3c3c584b37725e348c7631ae8b2bcfa424ecc31ef9de30fff184ffffff',\n  darkGreen: '3a3a3a215748006f4d048942489e4276b340a6c63dd2d836ffeb2cffffaa',\n  darkMulti: '3737371f5287197d8c29a86995ce3fffe800ffffff',\n  darkRed: '3434347036339e3c38cc4037e75d1eec8620eeab29f0ce32ffeb2c'\n};\nconst discrete = {\n  category10: '1f77b4ff7f0e2ca02cd627289467bd8c564be377c27f7f7fbcbd2217becf',\n  category20: '1f77b4aec7e8ff7f0effbb782ca02c98df8ad62728ff98969467bdc5b0d58c564bc49c94e377c2f7b6d27f7f7fc7c7c7bcbd22dbdb8d17becf9edae5',\n  category20b: '393b795254a36b6ecf9c9ede6379398ca252b5cf6bcedb9c8c6d31bd9e39e7ba52e7cb94843c39ad494ad6616be7969c7b4173a55194ce6dbdde9ed6',\n  category20c: '3182bd6baed69ecae1c6dbefe6550dfd8d3cfdae6bfdd0a231a35474c476a1d99bc7e9c0756bb19e9ac8bcbddcdadaeb636363969696bdbdbdd9d9d9',\n  tableau10: '4c78a8f58518e4575672b7b254a24beeca3bb279a2ff9da69d755dbab0ac',\n  tableau20: '4c78a89ecae9f58518ffbf7954a24b88d27ab79a20f2cf5b43989483bcb6e45756ff9d9879706ebab0acd67195fcbfd2b279a2d6a5c99e765fd8b5a5',\n  accent: '7fc97fbeaed4fdc086ffff99386cb0f0027fbf5b17666666',\n  dark2: '1b9e77d95f027570b3e7298a66a61ee6ab02a6761d666666',\n  paired: 'a6cee31f78b4b2df8a33a02cfb9a99e31a1cfdbf6fff7f00cab2d66a3d9affff99b15928',\n  pastel1: 'fbb4aeb3cde3ccebc5decbe4fed9a6ffffcce5d8bdfddaecf2f2f2',\n  pastel2: 'b3e2cdfdcdaccbd5e8f4cae4e6f5c9fff2aef1e2cccccccc',\n  set1: 'e41a1c377eb84daf4a984ea3ff7f00ffff33a65628f781bf999999',\n  set2: '66c2a5fc8d628da0cbe78ac3a6d854ffd92fe5c494b3b3b3',\n  set3: '8dd3c7ffffb3bebadafb807280b1d3fdb462b3de69fccde5d9d9d9bc80bdccebc5ffed6f'\n};\n\nfunction colors(palette) {\n  const n = palette.length / 6 | 0,\n        c = new Array(n);\n\n  for (let i = 0; i < n;) {\n    c[i] = '#' + palette.slice(i * 6, ++i * 6);\n  }\n\n  return c;\n}\n\nfunction apply(_, f) {\n  for (const k in _) scheme(k, f(_[k]));\n}\n\nconst schemes = {};\napply(discrete, colors);\napply(continuous, _ => interpolateColors(colors(_)));\nfunction scheme(name, scheme) {\n  name = name && name.toLowerCase();\n\n  if (arguments.length > 1) {\n    schemes[name] = scheme;\n    return this;\n  } else {\n    return schemes[name];\n  }\n}\n\nconst SymbolLegend = 'symbol';\nconst DiscreteLegend = 'discrete';\nconst GradientLegend = 'gradient';\n\nconst defaultFormatter = value => Object(vega_util__WEBPACK_IMPORTED_MODULE_0__[\"isArray\"])(value) ? value.map(v => String(v)) : String(value);\n\nconst ascending = (a, b) => a[1] - b[1];\n\nconst descending = (a, b) => b[1] - a[1];\n/**\n * Determine the tick count or interval function.\n * @param {Scale} scale - The scale for which to generate tick values.\n * @param {*} count - The desired tick count or interval specifier.\n * @param {number} minStep - The desired minimum step between tick values.\n * @return {*} - The tick count or interval function.\n */\n\n\nfunction tickCount(scale, count, minStep) {\n  let step;\n\n  if (Object(vega_util__WEBPACK_IMPORTED_MODULE_0__[\"isNumber\"])(count)) {\n    if (scale.bins) {\n      count = Math.max(count, scale.bins.length);\n    }\n\n    if (minStep != null) {\n      count = Math.min(count, Math.floor(Object(vega_util__WEBPACK_IMPORTED_MODULE_0__[\"span\"])(scale.domain()) / minStep || 1));\n    }\n  }\n\n  if (Object(vega_util__WEBPACK_IMPORTED_MODULE_0__[\"isObject\"])(count)) {\n    step = count.step;\n    count = count.interval;\n  }\n\n  if (Object(vega_util__WEBPACK_IMPORTED_MODULE_0__[\"isString\"])(count)) {\n    count = scale.type === Time ? Object(vega_time__WEBPACK_IMPORTED_MODULE_4__[\"timeInterval\"])(count) : scale.type == UTC ? Object(vega_time__WEBPACK_IMPORTED_MODULE_4__[\"utcInterval\"])(count) : Object(vega_util__WEBPACK_IMPORTED_MODULE_0__[\"error\"])('Only time and utc scales accept interval strings.');\n    if (step) count = count.every(step);\n  }\n\n  return count;\n}\n/**\n * Filter a set of candidate tick values, ensuring that only tick values\n * that lie within the scale range are included.\n * @param {Scale} scale - The scale for which to generate tick values.\n * @param {Array<*>} ticks - The candidate tick values.\n * @param {*} count - The tick count or interval function.\n * @return {Array<*>} - The filtered tick values.\n */\n\nfunction validTicks(scale, ticks, count) {\n  let range = scale.range(),\n      lo = range[0],\n      hi = Object(vega_util__WEBPACK_IMPORTED_MODULE_0__[\"peek\"])(range),\n      cmp = ascending;\n\n  if (lo > hi) {\n    range = hi;\n    hi = lo;\n    lo = range;\n    cmp = descending;\n  }\n\n  lo = Math.floor(lo);\n  hi = Math.ceil(hi); // filter ticks to valid values within the range\n  // additionally sort ticks in range order (#2579)\n\n  ticks = ticks.map(v => [v, scale(v)]).filter(_ => lo <= _[1] && _[1] <= hi).sort(cmp).map(_ => _[0]);\n\n  if (count > 0 && ticks.length > 1) {\n    const endpoints = [ticks[0], Object(vega_util__WEBPACK_IMPORTED_MODULE_0__[\"peek\"])(ticks)];\n\n    while (ticks.length > count && ticks.length >= 3) {\n      ticks = ticks.filter((_, i) => !(i % 2));\n    }\n\n    if (ticks.length < 3) {\n      ticks = endpoints;\n    }\n  }\n\n  return ticks;\n}\n/**\n * Generate tick values for the given scale and approximate tick count or\n * interval value. If the scale has a 'ticks' method, it will be used to\n * generate the ticks, with the count argument passed as a parameter. If the\n * scale lacks a 'ticks' method, the full scale domain will be returned.\n * @param {Scale} scale - The scale for which to generate tick values.\n * @param {*} [count] - The approximate number of desired ticks.\n * @return {Array<*>} - The generated tick values.\n */\n\nfunction tickValues(scale, count) {\n  return scale.bins ? validTicks(scale, scale.bins) : scale.ticks ? scale.ticks(count) : scale.domain();\n}\n/**\n * Generate a label format function for a scale. If the scale has a\n * 'tickFormat' method, it will be used to generate the formatter, with the\n * count and specifier arguments passed as parameters. If the scale lacks a\n * 'tickFormat' method, the returned formatter performs simple string coercion.\n * If the input scale is a logarithmic scale and the format specifier does not\n * indicate a desired decimal precision, a special variable precision formatter\n * that automatically trims trailing zeroes will be generated.\n * @param {Scale} scale - The scale for which to generate the label formatter.\n * @param {*} [count] - The approximate number of desired ticks.\n * @param {string} [specifier] - The format specifier. Must be a legal d3\n *   specifier string (see https://github.com/d3/d3-format#formatSpecifier) or\n *   time multi-format specifier object.\n * @return {function(*):string} - The generated label formatter.\n */\n\nfunction tickFormat(locale, scale, count, specifier, formatType, noSkip) {\n  const type = scale.type;\n  let format = defaultFormatter;\n\n  if (type === Time || formatType === Time) {\n    format = locale.timeFormat(specifier);\n  } else if (type === UTC || formatType === UTC) {\n    format = locale.utcFormat(specifier);\n  } else if (isLogarithmic(type)) {\n    const varfmt = locale.formatFloat(specifier);\n\n    if (noSkip || scale.bins) {\n      format = varfmt;\n    } else {\n      const test = tickLog(scale, count, false);\n\n      format = _ => test(_) ? varfmt(_) : '';\n    }\n  } else if (scale.tickFormat) {\n    // if d3 scale has tickFormat, it must be continuous\n    const d = scale.domain();\n    format = locale.formatSpan(d[0], d[d.length - 1], count, specifier);\n  } else if (specifier) {\n    format = locale.format(specifier);\n  }\n\n  return format;\n}\nfunction tickLog(scale, count, values) {\n  const ticks = tickValues(scale, count),\n        base = scale.base(),\n        logb = Math.log(base),\n        k = Math.max(1, base * count / ticks.length); // apply d3-scale's log format filter criteria\n\n  const test = d => {\n    let i = d / Math.pow(base, Math.round(Math.log(d) / logb));\n    if (i * base < base - 0.5) i *= base;\n    return i <= k;\n  };\n\n  return values ? ticks.filter(test) : test;\n}\n\nconst symbols = {\n  [Quantile]: 'quantiles',\n  [Quantize]: 'thresholds',\n  [Threshold]: 'domain'\n};\nconst formats = {\n  [Quantile]: 'quantiles',\n  [Quantize]: 'domain'\n};\nfunction labelValues(scale, count) {\n  return scale.bins ? binValues(scale.bins) : scale.type === Log ? tickLog(scale, count, true) : symbols[scale.type] ? thresholdValues(scale[symbols[scale.type]]()) : tickValues(scale, count);\n}\nfunction thresholdFormat(locale, scale, specifier) {\n  const _ = scale[formats[scale.type]](),\n        n = _.length;\n\n  let d = n > 1 ? _[1] - _[0] : _[0],\n      i;\n\n  for (i = 1; i < n; ++i) {\n    d = Math.min(d, _[i] - _[i - 1]);\n  } // tickCount = 3 ticks times 10 for increased resolution\n\n\n  return locale.formatSpan(0, d, 3 * 10, specifier);\n}\n\nfunction thresholdValues(thresholds) {\n  const values = [-Infinity].concat(thresholds);\n  values.max = +Infinity;\n  return values;\n}\n\nfunction binValues(bins) {\n  const values = bins.slice(0, -1);\n  values.max = Object(vega_util__WEBPACK_IMPORTED_MODULE_0__[\"peek\"])(bins);\n  return values;\n}\n\nconst isDiscreteRange = scale => symbols[scale.type] || scale.bins;\n\nfunction labelFormat(locale, scale, count, type, specifier, formatType, noSkip) {\n  const format = formats[scale.type] && formatType !== Time && formatType !== UTC ? thresholdFormat(locale, scale, specifier) : tickFormat(locale, scale, count, specifier, formatType, noSkip);\n  return type === SymbolLegend && isDiscreteRange(scale) ? formatRange(format) : type === DiscreteLegend ? formatDiscrete(format) : formatPoint(format);\n}\n\nconst formatRange = format => (value, index, array) => {\n  const limit = get(array[index + 1], get(array.max, +Infinity)),\n        lo = formatValue(value, format),\n        hi = formatValue(limit, format);\n  return lo && hi ? lo + ' \\u2013 ' + hi : hi ? '< ' + hi : '\\u2265 ' + lo;\n};\n\nconst get = (value, dflt) => value != null ? value : dflt;\n\nconst formatDiscrete = format => (value, index) => index ? format(value) : null;\n\nconst formatPoint = format => value => format(value);\n\nconst formatValue = (value, format) => Number.isFinite(value) ? format(value) : null;\n\nfunction labelFraction(scale) {\n  const domain = scale.domain(),\n        count = domain.length - 1;\n  let lo = +domain[0],\n      hi = +Object(vega_util__WEBPACK_IMPORTED_MODULE_0__[\"peek\"])(domain),\n      span = hi - lo;\n\n  if (scale.type === Threshold) {\n    const adjust = count ? span / count : 0.1;\n    lo -= adjust;\n    hi += adjust;\n    span = hi - lo;\n  }\n\n  return value => (value - lo) / span;\n}\n\nfunction format(locale, scale, specifier, formatType) {\n  const type = formatType || scale.type; // replace abbreviated time specifiers to improve screen reader experience\n\n  if (Object(vega_util__WEBPACK_IMPORTED_MODULE_0__[\"isString\"])(specifier) && isTemporal(type)) {\n    specifier = specifier.replace(/%a/g, '%A').replace(/%b/g, '%B');\n  }\n\n  return !specifier && type === Time ? locale.timeFormat('%A, %d %B %Y, %X') : !specifier && type === UTC ? locale.utcFormat('%A, %d %B %Y, %X UTC') : labelFormat(locale, scale, 5, null, specifier, formatType, true);\n}\n\nfunction domainCaption(locale, scale, opt) {\n  opt = opt || {};\n  const max = Math.max(3, opt.maxlen || 7),\n        fmt = format(locale, scale, opt.format, opt.formatType); // if scale breaks domain into bins, describe boundaries\n\n  if (isDiscretizing(scale.type)) {\n    const v = labelValues(scale).slice(1).map(fmt),\n          n = v.length;\n    return \"\".concat(n, \" boundar\").concat(n === 1 ? 'y' : 'ies', \": \").concat(v.join(', '));\n  } // if scale domain is discrete, list values\n  else if (isDiscrete(scale.type)) {\n      const d = scale.domain(),\n            n = d.length,\n            v = n > max ? d.slice(0, max - 2).map(fmt).join(', ') + ', ending with ' + d.slice(-1).map(fmt) : d.map(fmt).join(', ');\n      return \"\".concat(n, \" value\").concat(n === 1 ? '' : 's', \": \").concat(v);\n    } // if scale domain is continuous, describe value range\n    else {\n        const d = scale.domain();\n        return \"values from \".concat(fmt(d[0]), \" to \").concat(fmt(Object(vega_util__WEBPACK_IMPORTED_MODULE_0__[\"peek\"])(d)));\n      }\n}\n\n\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,[encoded data, 45996 characters]\n//# sourceURL=webpack-internal:///./node_modules/vega-functions/node_modules/vega-scale/build/vega-scale.module.js\n");

/***/ }),

/***/ "./node_modules/vega-functions/node_modules/vega-scenegraph/build/vega-scenegraph.module.js":
/*!**************************************************************************************************!*\
  !*** ./node_modules/vega-functions/node_modules/vega-scenegraph/build/vega-scenegraph.module.js ***!
  \**************************************************************************************************/
/*! exports provided: Bounds, CanvasHandler, CanvasRenderer, Gradient, GroupItem, Handler, Item, Marks, RenderType, Renderer, ResourceLoader, SVGHandler, SVGRenderer, SVGStringRenderer, Scenegraph, boundClip, boundContext, boundItem, boundMark, boundStroke, domChild, domClear, domCreate, domFind, font, fontFamily, fontSize, intersect, intersectBoxLine, intersectPath, intersectPoint, intersectRule, lineHeight, markup, multiLineOffset, pathCurves, pathEqual, pathParse, pathRectangle, pathRender, pathSymbols, pathTrail, point, renderModule, resetSVGClipId, resetSVGDefIds, sceneEqual, sceneFromJSON, scenePickVisit, sceneToJSON, sceneVisit, sceneZOrder, serializeXML, textMetrics */
/***/ (function(module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"Bounds\", function() { return Bounds; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"CanvasHandler\", function() { return CanvasHandler; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"CanvasRenderer\", function() { return CanvasRenderer; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"Gradient\", function() { return Gradient; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"GroupItem\", function() { return GroupItem; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"Handler\", function() { return Handler; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"Item\", function() { return Item; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"Marks\", function() { return Marks; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"RenderType\", function() { return RenderType; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"Renderer\", function() { return Renderer; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"ResourceLoader\", function() { return ResourceLoader; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"SVGHandler\", function() { return SVGHandler; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"SVGRenderer\", function() { return SVGRenderer; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"SVGStringRenderer\", function() { return SVGStringRenderer; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"Scenegraph\", function() { return Scenegraph; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"boundClip\", function() { return boundClip; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"boundContext\", function() { return boundContext; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"boundItem\", function() { return boundItem; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"boundMark\", function() { return boundMark; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"boundStroke\", function() { return boundStroke; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"domChild\", function() { return domChild; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"domClear\", function() { return domClear; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"domCreate\", function() { return domCreate; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"domFind\", function() { return domFind; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"font\", function() { return font; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"fontFamily\", function() { return fontFamily; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"fontSize\", function() { return fontSize; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"intersect\", function() { return intersect; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"intersectBoxLine\", function() { return intersectBoxLine; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"intersectPath\", function() { return intersectPath; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"intersectPoint\", function() { return intersectPoint; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"intersectRule\", function() { return intersectRule; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"lineHeight\", function() { return lineHeight; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"markup\", function() { return markup; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"multiLineOffset\", function() { return multiLineOffset; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"pathCurves\", function() { return curves; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"pathEqual\", function() { return pathEqual; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"pathParse\", function() { return pathParse; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"pathRectangle\", function() { return vg_rect; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"pathRender\", function() { return pathRender; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"pathSymbols\", function() { return symbols; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"pathTrail\", function() { return vg_trail; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"point\", function() { return point; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"renderModule\", function() { return renderModule; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"resetSVGClipId\", function() { return resetSVGClipId; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"resetSVGDefIds\", function() { return resetSVGDefIds; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"sceneEqual\", function() { return sceneEqual; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"sceneFromJSON\", function() { return sceneFromJSON; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"scenePickVisit\", function() { return pickVisit; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"sceneToJSON\", function() { return sceneToJSON; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"sceneVisit\", function() { return visit; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"sceneZOrder\", function() { return zorder; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"serializeXML\", function() { return serializeXML; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"textMetrics\", function() { return textMetrics; });\n/* harmony import */ var vega_util__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! vega-util */ \"./node_modules/vega-functions/node_modules/vega-util/build/vega-util.module.js\");\n/* harmony import */ var d3_shape__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! d3-shape */ \"./node_modules/vega-functions/node_modules/d3-shape/src/index.js\");\n/* harmony import */ var d3_path__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! d3-path */ \"./node_modules/vega-functions/node_modules/d3-path/src/index.js\");\n/* harmony import */ var vega_canvas__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! vega-canvas */ \"./node_modules/vega-canvas/index.browser.js\");\n/* harmony import */ var vega_loader__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! vega-loader */ \"./node_modules/vega-functions/node_modules/vega-loader/index.browser.js\");\n/* harmony import */ var vega_scale__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! vega-scale */ \"./node_modules/vega-functions/node_modules/vega-scale/build/vega-scale.module.js\");\n\n\n\n\n\n\n\nlet gradient_id = 0;\nfunction resetSVGGradientId() {\n  gradient_id = 0;\n}\nconst patternPrefix = 'p_';\nfunction isGradient(value) {\n  return value && value.gradient;\n}\nfunction gradientRef(g, defs, base) {\n  const type = g.gradient;\n  let id = g.id,\n      prefix = type === 'radial' ? patternPrefix : ''; // check id, assign default values as needed\n\n  if (!id) {\n    id = g.id = 'gradient_' + gradient_id++;\n\n    if (type === 'radial') {\n      g.x1 = get(g.x1, 0.5);\n      g.y1 = get(g.y1, 0.5);\n      g.r1 = get(g.r1, 0);\n      g.x2 = get(g.x2, 0.5);\n      g.y2 = get(g.y2, 0.5);\n      g.r2 = get(g.r2, 0.5);\n      prefix = patternPrefix;\n    } else {\n      g.x1 = get(g.x1, 0);\n      g.y1 = get(g.y1, 0);\n      g.x2 = get(g.x2, 1);\n      g.y2 = get(g.y2, 0);\n    }\n  } // register definition\n\n\n  defs[id] = g; // return url reference\n\n  return 'url(' + (base || '') + '#' + prefix + id + ')';\n}\n\nfunction get(val, def) {\n  return val != null ? val : def;\n}\n\nfunction Gradient (p0, p1) {\n  var stops = [],\n      gradient;\n  return gradient = {\n    gradient: 'linear',\n    x1: p0 ? p0[0] : 0,\n    y1: p0 ? p0[1] : 0,\n    x2: p1 ? p1[0] : 1,\n    y2: p1 ? p1[1] : 0,\n    stops: stops,\n    stop: function (offset, color) {\n      stops.push({\n        offset: offset,\n        color: color\n      });\n      return gradient;\n    }\n  };\n}\n\nconst lookup = {\n  'basis': {\n    curve: d3_shape__WEBPACK_IMPORTED_MODULE_1__[\"curveBasis\"]\n  },\n  'basis-closed': {\n    curve: d3_shape__WEBPACK_IMPORTED_MODULE_1__[\"curveBasisClosed\"]\n  },\n  'basis-open': {\n    curve: d3_shape__WEBPACK_IMPORTED_MODULE_1__[\"curveBasisOpen\"]\n  },\n  'bundle': {\n    curve: d3_shape__WEBPACK_IMPORTED_MODULE_1__[\"curveBundle\"],\n    tension: 'beta',\n    value: 0.85\n  },\n  'cardinal': {\n    curve: d3_shape__WEBPACK_IMPORTED_MODULE_1__[\"curveCardinal\"],\n    tension: 'tension',\n    value: 0\n  },\n  'cardinal-open': {\n    curve: d3_shape__WEBPACK_IMPORTED_MODULE_1__[\"curveCardinalOpen\"],\n    tension: 'tension',\n    value: 0\n  },\n  'cardinal-closed': {\n    curve: d3_shape__WEBPACK_IMPORTED_MODULE_1__[\"curveCardinalClosed\"],\n    tension: 'tension',\n    value: 0\n  },\n  'catmull-rom': {\n    curve: d3_shape__WEBPACK_IMPORTED_MODULE_1__[\"curveCatmullRom\"],\n    tension: 'alpha',\n    value: 0.5\n  },\n  'catmull-rom-closed': {\n    curve: d3_shape__WEBPACK_IMPORTED_MODULE_1__[\"curveCatmullRomClosed\"],\n    tension: 'alpha',\n    value: 0.5\n  },\n  'catmull-rom-open': {\n    curve: d3_shape__WEBPACK_IMPORTED_MODULE_1__[\"curveCatmullRomOpen\"],\n    tension: 'alpha',\n    value: 0.5\n  },\n  'linear': {\n    curve: d3_shape__WEBPACK_IMPORTED_MODULE_1__[\"curveLinear\"]\n  },\n  'linear-closed': {\n    curve: d3_shape__WEBPACK_IMPORTED_MODULE_1__[\"curveLinearClosed\"]\n  },\n  'monotone': {\n    horizontal: d3_shape__WEBPACK_IMPORTED_MODULE_1__[\"curveMonotoneY\"],\n    vertical: d3_shape__WEBPACK_IMPORTED_MODULE_1__[\"curveMonotoneX\"]\n  },\n  'natural': {\n    curve: d3_shape__WEBPACK_IMPORTED_MODULE_1__[\"curveNatural\"]\n  },\n  'step': {\n    curve: d3_shape__WEBPACK_IMPORTED_MODULE_1__[\"curveStep\"]\n  },\n  'step-after': {\n    curve: d3_shape__WEBPACK_IMPORTED_MODULE_1__[\"curveStepAfter\"]\n  },\n  'step-before': {\n    curve: d3_shape__WEBPACK_IMPORTED_MODULE_1__[\"curveStepBefore\"]\n  }\n};\nfunction curves(type, orientation, tension) {\n  var entry = Object(vega_util__WEBPACK_IMPORTED_MODULE_0__[\"hasOwnProperty\"])(lookup, type) && lookup[type],\n      curve = null;\n\n  if (entry) {\n    curve = entry.curve || entry[orientation || 'vertical'];\n\n    if (entry.tension && tension != null) {\n      curve = curve[entry.tension](tension);\n    }\n  }\n\n  return curve;\n}\n\n// Path parsing and rendering code adapted from fabric.js -- Thanks!\nconst cmdlen = {\n  m: 2,\n  l: 2,\n  h: 1,\n  v: 1,\n  c: 6,\n  s: 4,\n  q: 4,\n  t: 2,\n  a: 7\n},\n      regexp = [/([MLHVCSQTAZmlhvcsqtaz])/g, /###/, /(\\.\\d+)(\\.\\d)/g, /(\\d)([-+])/g, /\\s|,|###/];\nfunction pathParse (pathstr) {\n  const result = [];\n  let curr, chunks, parsed, param, cmd, len, i, j, n, m; // First, break path into command sequence\n\n  const path = pathstr.slice().replace(regexp[0], '###$1').split(regexp[1]).slice(1); // Next, parse each command in turn\n\n  for (i = 0, n = path.length; i < n; ++i) {\n    curr = path[i];\n    chunks = curr.slice(1).trim().replace(regexp[2], '$1###$2').replace(regexp[3], '$1###$2').split(regexp[4]);\n    cmd = curr.charAt(0);\n    parsed = [cmd];\n\n    for (j = 0, m = chunks.length; j < m; ++j) {\n      if ((param = +chunks[j]) === param) {\n        // not NaN\n        parsed.push(param);\n      }\n    }\n\n    len = cmdlen[cmd.toLowerCase()];\n\n    if (parsed.length - 1 > len) {\n      const m = parsed.length;\n      j = 1;\n      result.push([cmd].concat(parsed.slice(j, j += len))); // handle implicit lineTo (#2803)\n\n      cmd = cmd === 'M' ? 'L' : cmd === 'm' ? 'l' : cmd;\n\n      for (; j < m; j += len) {\n        result.push([cmd].concat(parsed.slice(j, j + len)));\n      }\n    } else {\n      result.push(parsed);\n    }\n  }\n\n  return result;\n}\n\nconst DegToRad = Math.PI / 180;\nconst Epsilon = 1e-14;\nconst HalfPi = Math.PI / 2;\nconst Tau = Math.PI * 2;\nconst HalfSqrt3 = Math.sqrt(3) / 2;\n\nvar segmentCache = {};\nvar bezierCache = {};\nvar join = [].join; // Copied from Inkscape svgtopdf, thanks!\n\nfunction segments(x, y, rx, ry, large, sweep, rotateX, ox, oy) {\n  const key = join.call(arguments);\n\n  if (segmentCache[key]) {\n    return segmentCache[key];\n  }\n\n  const th = rotateX * DegToRad;\n  const sin_th = Math.sin(th);\n  const cos_th = Math.cos(th);\n  rx = Math.abs(rx);\n  ry = Math.abs(ry);\n  const px = cos_th * (ox - x) * 0.5 + sin_th * (oy - y) * 0.5;\n  const py = cos_th * (oy - y) * 0.5 - sin_th * (ox - x) * 0.5;\n  let pl = px * px / (rx * rx) + py * py / (ry * ry);\n\n  if (pl > 1) {\n    pl = Math.sqrt(pl);\n    rx *= pl;\n    ry *= pl;\n  }\n\n  const a00 = cos_th / rx;\n  const a01 = sin_th / rx;\n  const a10 = -sin_th / ry;\n  const a11 = cos_th / ry;\n  const x0 = a00 * ox + a01 * oy;\n  const y0 = a10 * ox + a11 * oy;\n  const x1 = a00 * x + a01 * y;\n  const y1 = a10 * x + a11 * y;\n  const d = (x1 - x0) * (x1 - x0) + (y1 - y0) * (y1 - y0);\n  let sfactor_sq = 1 / d - 0.25;\n  if (sfactor_sq < 0) sfactor_sq = 0;\n  let sfactor = Math.sqrt(sfactor_sq);\n  if (sweep == large) sfactor = -sfactor;\n  const xc = 0.5 * (x0 + x1) - sfactor * (y1 - y0);\n  const yc = 0.5 * (y0 + y1) + sfactor * (x1 - x0);\n  const th0 = Math.atan2(y0 - yc, x0 - xc);\n  const th1 = Math.atan2(y1 - yc, x1 - xc);\n  let th_arc = th1 - th0;\n\n  if (th_arc < 0 && sweep === 1) {\n    th_arc += Tau;\n  } else if (th_arc > 0 && sweep === 0) {\n    th_arc -= Tau;\n  }\n\n  const segs = Math.ceil(Math.abs(th_arc / (HalfPi + 0.001)));\n  const result = [];\n\n  for (let i = 0; i < segs; ++i) {\n    const th2 = th0 + i * th_arc / segs;\n    const th3 = th0 + (i + 1) * th_arc / segs;\n    result[i] = [xc, yc, th2, th3, rx, ry, sin_th, cos_th];\n  }\n\n  return segmentCache[key] = result;\n}\nfunction bezier(params) {\n  const key = join.call(params);\n\n  if (bezierCache[key]) {\n    return bezierCache[key];\n  }\n\n  var cx = params[0],\n      cy = params[1],\n      th0 = params[2],\n      th1 = params[3],\n      rx = params[4],\n      ry = params[5],\n      sin_th = params[6],\n      cos_th = params[7];\n  const a00 = cos_th * rx;\n  const a01 = -sin_th * ry;\n  const a10 = sin_th * rx;\n  const a11 = cos_th * ry;\n  const cos_th0 = Math.cos(th0);\n  const sin_th0 = Math.sin(th0);\n  const cos_th1 = Math.cos(th1);\n  const sin_th1 = Math.sin(th1);\n  const th_half = 0.5 * (th1 - th0);\n  const sin_th_h2 = Math.sin(th_half * 0.5);\n  const t = 8 / 3 * sin_th_h2 * sin_th_h2 / Math.sin(th_half);\n  const x1 = cx + cos_th0 - t * sin_th0;\n  const y1 = cy + sin_th0 + t * cos_th0;\n  const x3 = cx + cos_th1;\n  const y3 = cy + sin_th1;\n  const x2 = x3 + t * sin_th1;\n  const y2 = y3 - t * cos_th1;\n  return bezierCache[key] = [a00 * x1 + a01 * y1, a10 * x1 + a11 * y1, a00 * x2 + a01 * y2, a10 * x2 + a11 * y2, a00 * x3 + a01 * y3, a10 * x3 + a11 * y3];\n}\n\nconst temp = ['l', 0, 0, 0, 0, 0, 0, 0];\n\nfunction scale$1(current, sX, sY) {\n  const c = temp[0] = current[0];\n\n  if (c === 'a' || c === 'A') {\n    temp[1] = sX * current[1];\n    temp[2] = sY * current[2];\n    temp[3] = current[3];\n    temp[4] = current[4];\n    temp[5] = current[5];\n    temp[6] = sX * current[6];\n    temp[7] = sY * current[7];\n  } else if (c === 'h' || c === 'H') {\n    temp[1] = sX * current[1];\n  } else if (c === 'v' || c === 'V') {\n    temp[1] = sY * current[1];\n  } else {\n    for (var i = 1, n = current.length; i < n; ++i) {\n      temp[i] = (i % 2 == 1 ? sX : sY) * current[i];\n    }\n  }\n\n  return temp;\n}\n\nfunction pathRender (context, path, l, t, sX, sY) {\n  var current,\n      // current instruction\n  previous = null,\n      x = 0,\n      // current x\n  y = 0,\n      // current y\n  controlX = 0,\n      // current control point x\n  controlY = 0,\n      // current control point y\n  tempX,\n      tempY,\n      tempControlX,\n      tempControlY;\n  if (l == null) l = 0;\n  if (t == null) t = 0;\n  if (sX == null) sX = 1;\n  if (sY == null) sY = sX;\n  if (context.beginPath) context.beginPath();\n\n  for (var i = 0, len = path.length; i < len; ++i) {\n    current = path[i];\n\n    if (sX !== 1 || sY !== 1) {\n      current = scale$1(current, sX, sY);\n    }\n\n    switch (current[0]) {\n      // first letter\n      case 'l':\n        // lineto, relative\n        x += current[1];\n        y += current[2];\n        context.lineTo(x + l, y + t);\n        break;\n\n      case 'L':\n        // lineto, absolute\n        x = current[1];\n        y = current[2];\n        context.lineTo(x + l, y + t);\n        break;\n\n      case 'h':\n        // horizontal lineto, relative\n        x += current[1];\n        context.lineTo(x + l, y + t);\n        break;\n\n      case 'H':\n        // horizontal lineto, absolute\n        x = current[1];\n        context.lineTo(x + l, y + t);\n        break;\n\n      case 'v':\n        // vertical lineto, relative\n        y += current[1];\n        context.lineTo(x + l, y + t);\n        break;\n\n      case 'V':\n        // verical lineto, absolute\n        y = current[1];\n        context.lineTo(x + l, y + t);\n        break;\n\n      case 'm':\n        // moveTo, relative\n        x += current[1];\n        y += current[2];\n        context.moveTo(x + l, y + t);\n        break;\n\n      case 'M':\n        // moveTo, absolute\n        x = current[1];\n        y = current[2];\n        context.moveTo(x + l, y + t);\n        break;\n\n      case 'c':\n        // bezierCurveTo, relative\n        tempX = x + current[5];\n        tempY = y + current[6];\n        controlX = x + current[3];\n        controlY = y + current[4];\n        context.bezierCurveTo(x + current[1] + l, // x1\n        y + current[2] + t, // y1\n        controlX + l, // x2\n        controlY + t, // y2\n        tempX + l, tempY + t);\n        x = tempX;\n        y = tempY;\n        break;\n\n      case 'C':\n        // bezierCurveTo, absolute\n        x = current[5];\n        y = current[6];\n        controlX = current[3];\n        controlY = current[4];\n        context.bezierCurveTo(current[1] + l, current[2] + t, controlX + l, controlY + t, x + l, y + t);\n        break;\n\n      case 's':\n        // shorthand cubic bezierCurveTo, relative\n        // transform to absolute x,y\n        tempX = x + current[3];\n        tempY = y + current[4]; // calculate reflection of previous control points\n\n        controlX = 2 * x - controlX;\n        controlY = 2 * y - controlY;\n        context.bezierCurveTo(controlX + l, controlY + t, x + current[1] + l, y + current[2] + t, tempX + l, tempY + t); // set control point to 2nd one of this command\n        // the first control point is assumed to be the reflection of\n        // the second control point on the previous command relative\n        // to the current point.\n\n        controlX = x + current[1];\n        controlY = y + current[2];\n        x = tempX;\n        y = tempY;\n        break;\n\n      case 'S':\n        // shorthand cubic bezierCurveTo, absolute\n        tempX = current[3];\n        tempY = current[4]; // calculate reflection of previous control points\n\n        controlX = 2 * x - controlX;\n        controlY = 2 * y - controlY;\n        context.bezierCurveTo(controlX + l, controlY + t, current[1] + l, current[2] + t, tempX + l, tempY + t);\n        x = tempX;\n        y = tempY; // set control point to 2nd one of this command\n        // the first control point is assumed to be the reflection of\n        // the second control point on the previous command relative\n        // to the current point.\n\n        controlX = current[1];\n        controlY = current[2];\n        break;\n\n      case 'q':\n        // quadraticCurveTo, relative\n        // transform to absolute x,y\n        tempX = x + current[3];\n        tempY = y + current[4];\n        controlX = x + current[1];\n        controlY = y + current[2];\n        context.quadraticCurveTo(controlX + l, controlY + t, tempX + l, tempY + t);\n        x = tempX;\n        y = tempY;\n        break;\n\n      case 'Q':\n        // quadraticCurveTo, absolute\n        tempX = current[3];\n        tempY = current[4];\n        context.quadraticCurveTo(current[1] + l, current[2] + t, tempX + l, tempY + t);\n        x = tempX;\n        y = tempY;\n        controlX = current[1];\n        controlY = current[2];\n        break;\n\n      case 't':\n        // shorthand quadraticCurveTo, relative\n        // transform to absolute x,y\n        tempX = x + current[1];\n        tempY = y + current[2];\n\n        if (previous[0].match(/[QqTt]/) === null) {\n          // If there is no previous command or if the previous command was not a Q, q, T or t,\n          // assume the control point is coincident with the current point\n          controlX = x;\n          controlY = y;\n        } else if (previous[0] === 't') {\n          // calculate reflection of previous control points for t\n          controlX = 2 * x - tempControlX;\n          controlY = 2 * y - tempControlY;\n        } else if (previous[0] === 'q') {\n          // calculate reflection of previous control points for q\n          controlX = 2 * x - controlX;\n          controlY = 2 * y - controlY;\n        }\n\n        tempControlX = controlX;\n        tempControlY = controlY;\n        context.quadraticCurveTo(controlX + l, controlY + t, tempX + l, tempY + t);\n        x = tempX;\n        y = tempY;\n        controlX = x + current[1];\n        controlY = y + current[2];\n        break;\n\n      case 'T':\n        tempX = current[1];\n        tempY = current[2]; // calculate reflection of previous control points\n\n        controlX = 2 * x - controlX;\n        controlY = 2 * y - controlY;\n        context.quadraticCurveTo(controlX + l, controlY + t, tempX + l, tempY + t);\n        x = tempX;\n        y = tempY;\n        break;\n\n      case 'a':\n        drawArc(context, x + l, y + t, [current[1], current[2], current[3], current[4], current[5], current[6] + x + l, current[7] + y + t]);\n        x += current[6];\n        y += current[7];\n        break;\n\n      case 'A':\n        drawArc(context, x + l, y + t, [current[1], current[2], current[3], current[4], current[5], current[6] + l, current[7] + t]);\n        x = current[6];\n        y = current[7];\n        break;\n\n      case 'z':\n      case 'Z':\n        context.closePath();\n        break;\n    }\n\n    previous = current;\n  }\n}\n\nfunction drawArc(context, x, y, coords) {\n  const seg = segments(coords[5], // end x\n  coords[6], // end y\n  coords[0], // radius x\n  coords[1], // radius y\n  coords[3], // large flag\n  coords[4], // sweep flag\n  coords[2], // rotation\n  x, y);\n\n  for (let i = 0; i < seg.length; ++i) {\n    const bez = bezier(seg[i]);\n    context.bezierCurveTo(bez[0], bez[1], bez[2], bez[3], bez[4], bez[5]);\n  }\n}\n\nconst Tan30 = 0.5773502691896257;\nconst builtins = {\n  'circle': {\n    draw: function (context, size) {\n      const r = Math.sqrt(size) / 2;\n      context.moveTo(r, 0);\n      context.arc(0, 0, r, 0, Tau);\n    }\n  },\n  'cross': {\n    draw: function (context, size) {\n      var r = Math.sqrt(size) / 2,\n          s = r / 2.5;\n      context.moveTo(-r, -s);\n      context.lineTo(-r, s);\n      context.lineTo(-s, s);\n      context.lineTo(-s, r);\n      context.lineTo(s, r);\n      context.lineTo(s, s);\n      context.lineTo(r, s);\n      context.lineTo(r, -s);\n      context.lineTo(s, -s);\n      context.lineTo(s, -r);\n      context.lineTo(-s, -r);\n      context.lineTo(-s, -s);\n      context.closePath();\n    }\n  },\n  'diamond': {\n    draw: function (context, size) {\n      const r = Math.sqrt(size) / 2;\n      context.moveTo(-r, 0);\n      context.lineTo(0, -r);\n      context.lineTo(r, 0);\n      context.lineTo(0, r);\n      context.closePath();\n    }\n  },\n  'square': {\n    draw: function (context, size) {\n      var w = Math.sqrt(size),\n          x = -w / 2;\n      context.rect(x, x, w, w);\n    }\n  },\n  'arrow': {\n    draw: function (context, size) {\n      var r = Math.sqrt(size) / 2,\n          s = r / 7,\n          t = r / 2.5,\n          v = r / 8;\n      context.moveTo(-s, r);\n      context.lineTo(s, r);\n      context.lineTo(s, -v);\n      context.lineTo(t, -v);\n      context.lineTo(0, -r);\n      context.lineTo(-t, -v);\n      context.lineTo(-s, -v);\n      context.closePath();\n    }\n  },\n  'wedge': {\n    draw: function (context, size) {\n      var r = Math.sqrt(size) / 2,\n          h = HalfSqrt3 * r,\n          o = h - r * Tan30,\n          b = r / 4;\n      context.moveTo(0, -h - o);\n      context.lineTo(-b, h - o);\n      context.lineTo(b, h - o);\n      context.closePath();\n    }\n  },\n  'triangle': {\n    draw: function (context, size) {\n      var r = Math.sqrt(size) / 2,\n          h = HalfSqrt3 * r,\n          o = h - r * Tan30;\n      context.moveTo(0, -h - o);\n      context.lineTo(-r, h - o);\n      context.lineTo(r, h - o);\n      context.closePath();\n    }\n  },\n  'triangle-up': {\n    draw: function (context, size) {\n      var r = Math.sqrt(size) / 2,\n          h = HalfSqrt3 * r;\n      context.moveTo(0, -h);\n      context.lineTo(-r, h);\n      context.lineTo(r, h);\n      context.closePath();\n    }\n  },\n  'triangle-down': {\n    draw: function (context, size) {\n      var r = Math.sqrt(size) / 2,\n          h = HalfSqrt3 * r;\n      context.moveTo(0, h);\n      context.lineTo(-r, -h);\n      context.lineTo(r, -h);\n      context.closePath();\n    }\n  },\n  'triangle-right': {\n    draw: function (context, size) {\n      var r = Math.sqrt(size) / 2,\n          h = HalfSqrt3 * r;\n      context.moveTo(h, 0);\n      context.lineTo(-h, -r);\n      context.lineTo(-h, r);\n      context.closePath();\n    }\n  },\n  'triangle-left': {\n    draw: function (context, size) {\n      var r = Math.sqrt(size) / 2,\n          h = HalfSqrt3 * r;\n      context.moveTo(-h, 0);\n      context.lineTo(h, -r);\n      context.lineTo(h, r);\n      context.closePath();\n    }\n  },\n  'stroke': {\n    draw: function (context, size) {\n      const r = Math.sqrt(size) / 2;\n      context.moveTo(-r, 0);\n      context.lineTo(r, 0);\n    }\n  }\n};\nfunction symbols(_) {\n  return Object(vega_util__WEBPACK_IMPORTED_MODULE_0__[\"hasOwnProperty\"])(builtins, _) ? builtins[_] : customSymbol(_);\n}\nvar custom = {};\n\nfunction customSymbol(path) {\n  if (!Object(vega_util__WEBPACK_IMPORTED_MODULE_0__[\"hasOwnProperty\"])(custom, path)) {\n    const parsed = pathParse(path);\n    custom[path] = {\n      draw: function (context, size) {\n        pathRender(context, parsed, 0, 0, Math.sqrt(size) / 2);\n      }\n    };\n  }\n\n  return custom[path];\n}\n\nconst C = 0.448084975506; // C = 1 - c\n\nfunction rectangleX(d) {\n  return d.x;\n}\n\nfunction rectangleY(d) {\n  return d.y;\n}\n\nfunction rectangleWidth(d) {\n  return d.width;\n}\n\nfunction rectangleHeight(d) {\n  return d.height;\n}\n\nfunction number(_) {\n  return typeof _ === 'function' ? _ : () => +_;\n}\n\nfunction clamp(value, min, max) {\n  return Math.max(min, Math.min(value, max));\n}\n\nfunction vg_rect () {\n  var x = rectangleX,\n      y = rectangleY,\n      width = rectangleWidth,\n      height = rectangleHeight,\n      crTL = number(0),\n      crTR = crTL,\n      crBL = crTL,\n      crBR = crTL,\n      context = null;\n\n  function rectangle(_, x0, y0) {\n    var buffer,\n        x1 = x0 != null ? x0 : +x.call(this, _),\n        y1 = y0 != null ? y0 : +y.call(this, _),\n        w = +width.call(this, _),\n        h = +height.call(this, _),\n        s = Math.min(w, h) / 2,\n        tl = clamp(+crTL.call(this, _), 0, s),\n        tr = clamp(+crTR.call(this, _), 0, s),\n        bl = clamp(+crBL.call(this, _), 0, s),\n        br = clamp(+crBR.call(this, _), 0, s);\n    if (!context) context = buffer = Object(d3_path__WEBPACK_IMPORTED_MODULE_2__[\"path\"])();\n\n    if (tl <= 0 && tr <= 0 && bl <= 0 && br <= 0) {\n      context.rect(x1, y1, w, h);\n    } else {\n      var x2 = x1 + w,\n          y2 = y1 + h;\n      context.moveTo(x1 + tl, y1);\n      context.lineTo(x2 - tr, y1);\n      context.bezierCurveTo(x2 - C * tr, y1, x2, y1 + C * tr, x2, y1 + tr);\n      context.lineTo(x2, y2 - br);\n      context.bezierCurveTo(x2, y2 - C * br, x2 - C * br, y2, x2 - br, y2);\n      context.lineTo(x1 + bl, y2);\n      context.bezierCurveTo(x1 + C * bl, y2, x1, y2 - C * bl, x1, y2 - bl);\n      context.lineTo(x1, y1 + tl);\n      context.bezierCurveTo(x1, y1 + C * tl, x1 + C * tl, y1, x1 + tl, y1);\n      context.closePath();\n    }\n\n    if (buffer) {\n      context = null;\n      return buffer + '' || null;\n    }\n  }\n\n  rectangle.x = function (_) {\n    if (arguments.length) {\n      x = number(_);\n      return rectangle;\n    } else {\n      return x;\n    }\n  };\n\n  rectangle.y = function (_) {\n    if (arguments.length) {\n      y = number(_);\n      return rectangle;\n    } else {\n      return y;\n    }\n  };\n\n  rectangle.width = function (_) {\n    if (arguments.length) {\n      width = number(_);\n      return rectangle;\n    } else {\n      return width;\n    }\n  };\n\n  rectangle.height = function (_) {\n    if (arguments.length) {\n      height = number(_);\n      return rectangle;\n    } else {\n      return height;\n    }\n  };\n\n  rectangle.cornerRadius = function (tl, tr, br, bl) {\n    if (arguments.length) {\n      crTL = number(tl);\n      crTR = tr != null ? number(tr) : crTL;\n      crBR = br != null ? number(br) : crTL;\n      crBL = bl != null ? number(bl) : crTR;\n      return rectangle;\n    } else {\n      return crTL;\n    }\n  };\n\n  rectangle.context = function (_) {\n    if (arguments.length) {\n      context = _ == null ? null : _;\n      return rectangle;\n    } else {\n      return context;\n    }\n  };\n\n  return rectangle;\n}\n\nfunction vg_trail () {\n  var x,\n      y,\n      size,\n      defined,\n      context = null,\n      ready,\n      x1,\n      y1,\n      r1;\n\n  function point(x2, y2, w2) {\n    const r2 = w2 / 2;\n\n    if (ready) {\n      var ux = y1 - y2,\n          uy = x2 - x1;\n\n      if (ux || uy) {\n        // get normal vector\n        var ud = Math.sqrt(ux * ux + uy * uy),\n            rx = (ux /= ud) * r1,\n            ry = (uy /= ud) * r1,\n            t = Math.atan2(uy, ux); // draw segment\n\n        context.moveTo(x1 - rx, y1 - ry);\n        context.lineTo(x2 - ux * r2, y2 - uy * r2);\n        context.arc(x2, y2, r2, t - Math.PI, t);\n        context.lineTo(x1 + rx, y1 + ry);\n        context.arc(x1, y1, r1, t, t + Math.PI);\n      } else {\n        context.arc(x2, y2, r2, 0, Tau);\n      }\n\n      context.closePath();\n    } else {\n      ready = 1;\n    }\n\n    x1 = x2;\n    y1 = y2;\n    r1 = r2;\n  }\n\n  function trail(data) {\n    var i,\n        n = data.length,\n        d,\n        defined0 = false,\n        buffer;\n    if (context == null) context = buffer = Object(d3_path__WEBPACK_IMPORTED_MODULE_2__[\"path\"])();\n\n    for (i = 0; i <= n; ++i) {\n      if (!(i < n && defined(d = data[i], i, data)) === defined0) {\n        if (defined0 = !defined0) ready = 0;\n      }\n\n      if (defined0) point(+x(d, i, data), +y(d, i, data), +size(d, i, data));\n    }\n\n    if (buffer) {\n      context = null;\n      return buffer + '' || null;\n    }\n  }\n\n  trail.x = function (_) {\n    if (arguments.length) {\n      x = _;\n      return trail;\n    } else {\n      return x;\n    }\n  };\n\n  trail.y = function (_) {\n    if (arguments.length) {\n      y = _;\n      return trail;\n    } else {\n      return y;\n    }\n  };\n\n  trail.size = function (_) {\n    if (arguments.length) {\n      size = _;\n      return trail;\n    } else {\n      return size;\n    }\n  };\n\n  trail.defined = function (_) {\n    if (arguments.length) {\n      defined = _;\n      return trail;\n    } else {\n      return defined;\n    }\n  };\n\n  trail.context = function (_) {\n    if (arguments.length) {\n      if (_ == null) {\n        context = null;\n      } else {\n        context = _;\n      }\n\n      return trail;\n    } else {\n      return context;\n    }\n  };\n\n  return trail;\n}\n\nfunction value$1(a, b) {\n  return a != null ? a : b;\n}\n\nconst x = item => item.x || 0,\n      y = item => item.y || 0,\n      w = item => item.width || 0,\n      h = item => item.height || 0,\n      xw = item => (item.x || 0) + (item.width || 0),\n      yh = item => (item.y || 0) + (item.height || 0),\n      sa = item => item.startAngle || 0,\n      ea = item => item.endAngle || 0,\n      pa = item => item.padAngle || 0,\n      ir = item => item.innerRadius || 0,\n      or = item => item.outerRadius || 0,\n      cr = item => item.cornerRadius || 0,\n      tl = item => value$1(item.cornerRadiusTopLeft, item.cornerRadius) || 0,\n      tr = item => value$1(item.cornerRadiusTopRight, item.cornerRadius) || 0,\n      br = item => value$1(item.cornerRadiusBottomRight, item.cornerRadius) || 0,\n      bl = item => value$1(item.cornerRadiusBottomLeft, item.cornerRadius) || 0,\n      sz = item => value$1(item.size, 64),\n      ts = item => item.size || 1,\n      def = item => !(item.defined === false),\n      type = item => symbols(item.shape || 'circle');\n\nconst arcShape = Object(d3_shape__WEBPACK_IMPORTED_MODULE_1__[\"arc\"])().startAngle(sa).endAngle(ea).padAngle(pa).innerRadius(ir).outerRadius(or).cornerRadius(cr),\n      areavShape = Object(d3_shape__WEBPACK_IMPORTED_MODULE_1__[\"area\"])().x(x).y1(y).y0(yh).defined(def),\n      areahShape = Object(d3_shape__WEBPACK_IMPORTED_MODULE_1__[\"area\"])().y(y).x1(x).x0(xw).defined(def),\n      lineShape = Object(d3_shape__WEBPACK_IMPORTED_MODULE_1__[\"line\"])().x(x).y(y).defined(def),\n      rectShape = vg_rect().x(x).y(y).width(w).height(h).cornerRadius(tl, tr, br, bl),\n      symbolShape = Object(d3_shape__WEBPACK_IMPORTED_MODULE_1__[\"symbol\"])().type(type).size(sz),\n      trailShape = vg_trail().x(x).y(y).defined(def).size(ts);\nfunction hasCornerRadius(item) {\n  return item.cornerRadius || item.cornerRadiusTopLeft || item.cornerRadiusTopRight || item.cornerRadiusBottomRight || item.cornerRadiusBottomLeft;\n}\nfunction arc$1(context, item) {\n  return arcShape.context(context)(item);\n}\nfunction area$1(context, items) {\n  const item = items[0],\n        interp = item.interpolate || 'linear';\n  return (item.orient === 'horizontal' ? areahShape : areavShape).curve(curves(interp, item.orient, item.tension)).context(context)(items);\n}\nfunction line$1(context, items) {\n  const item = items[0],\n        interp = item.interpolate || 'linear';\n  return lineShape.curve(curves(interp, item.orient, item.tension)).context(context)(items);\n}\nfunction rectangle(context, item, x, y) {\n  return rectShape.context(context)(item, x, y);\n}\nfunction shape$1(context, item) {\n  return (item.mark.shape || item.shape).context(context)(item);\n}\nfunction symbol$1(context, item) {\n  return symbolShape.context(context)(item);\n}\nfunction trail$1(context, items) {\n  return trailShape.context(context)(items);\n}\n\nvar clip_id = 1;\nfunction resetSVGClipId() {\n  clip_id = 1;\n}\nfunction clip$1 (renderer, item, size) {\n  var clip = item.clip,\n      defs = renderer._defs,\n      id = item.clip_id || (item.clip_id = 'clip' + clip_id++),\n      c = defs.clipping[id] || (defs.clipping[id] = {\n    id: id\n  });\n\n  if (Object(vega_util__WEBPACK_IMPORTED_MODULE_0__[\"isFunction\"])(clip)) {\n    c.path = clip(null);\n  } else if (hasCornerRadius(size)) {\n    c.path = rectangle(null, size, 0, 0);\n  } else {\n    c.width = size.width || 0;\n    c.height = size.height || 0;\n  }\n\n  return 'url(#' + id + ')';\n}\n\nfunction Bounds(b) {\n  this.clear();\n  if (b) this.union(b);\n}\nBounds.prototype = {\n  clone() {\n    return new Bounds(this);\n  },\n\n  clear() {\n    this.x1 = +Number.MAX_VALUE;\n    this.y1 = +Number.MAX_VALUE;\n    this.x2 = -Number.MAX_VALUE;\n    this.y2 = -Number.MAX_VALUE;\n    return this;\n  },\n\n  empty() {\n    return this.x1 === +Number.MAX_VALUE && this.y1 === +Number.MAX_VALUE && this.x2 === -Number.MAX_VALUE && this.y2 === -Number.MAX_VALUE;\n  },\n\n  equals(b) {\n    return this.x1 === b.x1 && this.y1 === b.y1 && this.x2 === b.x2 && this.y2 === b.y2;\n  },\n\n  set(x1, y1, x2, y2) {\n    if (x2 < x1) {\n      this.x2 = x1;\n      this.x1 = x2;\n    } else {\n      this.x1 = x1;\n      this.x2 = x2;\n    }\n\n    if (y2 < y1) {\n      this.y2 = y1;\n      this.y1 = y2;\n    } else {\n      this.y1 = y1;\n      this.y2 = y2;\n    }\n\n    return this;\n  },\n\n  add(x, y) {\n    if (x < this.x1) this.x1 = x;\n    if (y < this.y1) this.y1 = y;\n    if (x > this.x2) this.x2 = x;\n    if (y > this.y2) this.y2 = y;\n    return this;\n  },\n\n  expand(d) {\n    this.x1 -= d;\n    this.y1 -= d;\n    this.x2 += d;\n    this.y2 += d;\n    return this;\n  },\n\n  round() {\n    this.x1 = Math.floor(this.x1);\n    this.y1 = Math.floor(this.y1);\n    this.x2 = Math.ceil(this.x2);\n    this.y2 = Math.ceil(this.y2);\n    return this;\n  },\n\n  scale(s) {\n    this.x1 *= s;\n    this.y1 *= s;\n    this.x2 *= s;\n    this.y2 *= s;\n    return this;\n  },\n\n  translate(dx, dy) {\n    this.x1 += dx;\n    this.x2 += dx;\n    this.y1 += dy;\n    this.y2 += dy;\n    return this;\n  },\n\n  rotate(angle, x, y) {\n    const p = this.rotatedPoints(angle, x, y);\n    return this.clear().add(p[0], p[1]).add(p[2], p[3]).add(p[4], p[5]).add(p[6], p[7]);\n  },\n\n  rotatedPoints(angle, x, y) {\n    var {\n      x1,\n      y1,\n      x2,\n      y2\n    } = this,\n        cos = Math.cos(angle),\n        sin = Math.sin(angle),\n        cx = x - x * cos + y * sin,\n        cy = y - x * sin - y * cos;\n    return [cos * x1 - sin * y1 + cx, sin * x1 + cos * y1 + cy, cos * x1 - sin * y2 + cx, sin * x1 + cos * y2 + cy, cos * x2 - sin * y1 + cx, sin * x2 + cos * y1 + cy, cos * x2 - sin * y2 + cx, sin * x2 + cos * y2 + cy];\n  },\n\n  union(b) {\n    if (b.x1 < this.x1) this.x1 = b.x1;\n    if (b.y1 < this.y1) this.y1 = b.y1;\n    if (b.x2 > this.x2) this.x2 = b.x2;\n    if (b.y2 > this.y2) this.y2 = b.y2;\n    return this;\n  },\n\n  intersect(b) {\n    if (b.x1 > this.x1) this.x1 = b.x1;\n    if (b.y1 > this.y1) this.y1 = b.y1;\n    if (b.x2 < this.x2) this.x2 = b.x2;\n    if (b.y2 < this.y2) this.y2 = b.y2;\n    return this;\n  },\n\n  encloses(b) {\n    return b && this.x1 <= b.x1 && this.x2 >= b.x2 && this.y1 <= b.y1 && this.y2 >= b.y2;\n  },\n\n  alignsWith(b) {\n    return b && (this.x1 == b.x1 || this.x2 == b.x2 || this.y1 == b.y1 || this.y2 == b.y2);\n  },\n\n  intersects(b) {\n    return b && !(this.x2 < b.x1 || this.x1 > b.x2 || this.y2 < b.y1 || this.y1 > b.y2);\n  },\n\n  contains(x, y) {\n    return !(x < this.x1 || x > this.x2 || y < this.y1 || y > this.y2);\n  },\n\n  width() {\n    return this.x2 - this.x1;\n  },\n\n  height() {\n    return this.y2 - this.y1;\n  }\n\n};\n\nfunction Item(mark) {\n  this.mark = mark;\n  this.bounds = this.bounds || new Bounds();\n}\n\nfunction GroupItem(mark) {\n  Item.call(this, mark);\n  this.items = this.items || [];\n}\nObject(vega_util__WEBPACK_IMPORTED_MODULE_0__[\"inherits\"])(GroupItem, Item);\n\nfunction ResourceLoader(customLoader) {\n  this._pending = 0;\n  this._loader = customLoader || Object(vega_loader__WEBPACK_IMPORTED_MODULE_4__[\"loader\"])();\n}\n\nfunction increment(loader) {\n  loader._pending += 1;\n}\n\nfunction decrement(loader) {\n  loader._pending -= 1;\n}\n\nResourceLoader.prototype = {\n  pending() {\n    return this._pending;\n  },\n\n  sanitizeURL(uri) {\n    const loader = this;\n    increment(loader);\n    return loader._loader.sanitize(uri, {\n      context: 'href'\n    }).then(opt => {\n      decrement(loader);\n      return opt;\n    }).catch(() => {\n      decrement(loader);\n      return null;\n    });\n  },\n\n  loadImage(uri) {\n    const loader = this,\n          Image = Object(vega_canvas__WEBPACK_IMPORTED_MODULE_3__[\"image\"])();\n    increment(loader);\n    return loader._loader.sanitize(uri, {\n      context: 'image'\n    }).then(opt => {\n      const url = opt.href;\n      if (!url || !Image) throw {\n        url: url\n      };\n      const img = new Image(); // set crossOrigin only if cors is defined; empty string sets anonymous mode\n      // https://developer.mozilla.org/en-US/docs/Web/API/HTMLImageElement/crossOrigin\n\n      const cors = Object(vega_util__WEBPACK_IMPORTED_MODULE_0__[\"hasOwnProperty\"])(opt, 'crossOrigin') ? opt.crossOrigin : 'anonymous';\n      if (cors != null) img.crossOrigin = cors; // attempt to load image resource\n\n      img.onload = () => decrement(loader);\n\n      img.onerror = () => decrement(loader);\n\n      img.src = url;\n      return img;\n    }).catch(e => {\n      decrement(loader);\n      return {\n        complete: false,\n        width: 0,\n        height: 0,\n        src: e && e.url || ''\n      };\n    });\n  },\n\n  ready() {\n    const loader = this;\n    return new Promise(accept => {\n      function poll(value) {\n        if (!loader.pending()) accept(value);else setTimeout(() => {\n          poll(true);\n        }, 10);\n      }\n\n      poll(false);\n    });\n  }\n\n};\n\nfunction boundStroke (bounds, item, miter) {\n  if (item.stroke && item.opacity !== 0 && item.strokeOpacity !== 0) {\n    const sw = item.strokeWidth != null ? +item.strokeWidth : 1;\n    bounds.expand(sw + (miter ? miterAdjustment(item, sw) : 0));\n  }\n\n  return bounds;\n}\n\nfunction miterAdjustment(item, strokeWidth) {\n  // TODO: more sophisticated adjustment? Or miter support in boundContext?\n  return item.strokeJoin && item.strokeJoin !== 'miter' ? 0 : strokeWidth;\n}\n\nconst circleThreshold = Tau - 1e-8;\nlet bounds, lx, ly, rot, ma, mb, mc, md;\n\nconst add = (x, y) => bounds.add(x, y);\n\nconst addL = (x, y) => add(lx = x, ly = y);\n\nconst addX = x => add(x, bounds.y1);\n\nconst addY = y => add(bounds.x1, y);\n\nconst px = (x, y) => ma * x + mc * y;\n\nconst py = (x, y) => mb * x + md * y;\n\nconst addp = (x, y) => add(px(x, y), py(x, y));\n\nconst addpL = (x, y) => addL(px(x, y), py(x, y));\n\nfunction boundContext (_, deg) {\n  bounds = _;\n\n  if (deg) {\n    rot = deg * DegToRad;\n    ma = md = Math.cos(rot);\n    mb = Math.sin(rot);\n    mc = -mb;\n  } else {\n    ma = md = 1;\n    rot = mb = mc = 0;\n  }\n\n  return context$1;\n}\nconst context$1 = {\n  beginPath() {},\n\n  closePath() {},\n\n  moveTo: addpL,\n  lineTo: addpL,\n\n  rect(x, y, w, h) {\n    if (rot) {\n      addp(x + w, y);\n      addp(x + w, y + h);\n      addp(x, y + h);\n      addpL(x, y);\n    } else {\n      add(x + w, y + h);\n      addL(x, y);\n    }\n  },\n\n  quadraticCurveTo(x1, y1, x2, y2) {\n    const px1 = px(x1, y1),\n          py1 = py(x1, y1),\n          px2 = px(x2, y2),\n          py2 = py(x2, y2);\n    quadExtrema(lx, px1, px2, addX);\n    quadExtrema(ly, py1, py2, addY);\n    addL(px2, py2);\n  },\n\n  bezierCurveTo(x1, y1, x2, y2, x3, y3) {\n    const px1 = px(x1, y1),\n          py1 = py(x1, y1),\n          px2 = px(x2, y2),\n          py2 = py(x2, y2),\n          px3 = px(x3, y3),\n          py3 = py(x3, y3);\n    cubicExtrema(lx, px1, px2, px3, addX);\n    cubicExtrema(ly, py1, py2, py3, addY);\n    addL(px3, py3);\n  },\n\n  arc(cx, cy, r, sa, ea, ccw) {\n    sa += rot;\n    ea += rot; // store last point on path\n\n    lx = r * Math.cos(ea) + cx;\n    ly = r * Math.sin(ea) + cy;\n\n    if (Math.abs(ea - sa) > circleThreshold) {\n      // treat as full circle\n      add(cx - r, cy - r);\n      add(cx + r, cy + r);\n    } else {\n      const update = a => add(r * Math.cos(a) + cx, r * Math.sin(a) + cy);\n\n      let s, i; // sample end points\n\n      update(sa);\n      update(ea); // sample interior points aligned with 90 degrees\n\n      if (ea !== sa) {\n        sa = sa % Tau;\n        if (sa < 0) sa += Tau;\n        ea = ea % Tau;\n        if (ea < 0) ea += Tau;\n\n        if (ea < sa) {\n          ccw = !ccw; // flip direction\n\n          s = sa;\n          sa = ea;\n          ea = s; // swap end-points\n        }\n\n        if (ccw) {\n          ea -= Tau;\n          s = sa - sa % HalfPi;\n\n          for (i = 0; i < 4 && s > ea; ++i, s -= HalfPi) update(s);\n        } else {\n          s = sa - sa % HalfPi + HalfPi;\n\n          for (i = 0; i < 4 && s < ea; ++i, s = s + HalfPi) update(s);\n        }\n      }\n    }\n  }\n\n};\n\nfunction quadExtrema(x0, x1, x2, cb) {\n  const t = (x0 - x1) / (x0 + x2 - 2 * x1);\n  if (0 < t && t < 1) cb(x0 + (x1 - x0) * t);\n}\n\nfunction cubicExtrema(x0, x1, x2, x3, cb) {\n  const a = x3 - x0 + 3 * x1 - 3 * x2,\n        b = x0 + x2 - 2 * x1,\n        c = x0 - x1;\n  let t0 = 0,\n      t1 = 0,\n      r; // solve for parameter t\n\n  if (Math.abs(a) > Epsilon) {\n    // quadratic equation\n    r = b * b + c * a;\n\n    if (r >= 0) {\n      r = Math.sqrt(r);\n      t0 = (-b + r) / a;\n      t1 = (-b - r) / a;\n    }\n  } else {\n    // linear equation\n    t0 = 0.5 * c / b;\n  } // calculate position\n\n\n  if (0 < t0 && t0 < 1) cb(cubic(t0, x0, x1, x2, x3));\n  if (0 < t1 && t1 < 1) cb(cubic(t1, x0, x1, x2, x3));\n}\n\nfunction cubic(t, x0, x1, x2, x3) {\n  const s = 1 - t,\n        s2 = s * s,\n        t2 = t * t;\n  return s2 * s * x0 + 3 * s2 * t * x1 + 3 * s * t2 * x2 + t2 * t * x3;\n}\n\nvar context = (context = Object(vega_canvas__WEBPACK_IMPORTED_MODULE_3__[\"canvas\"])(1, 1)) ? context.getContext('2d') : null;\n\nconst b = new Bounds();\nfunction intersectPath(draw) {\n  return function (item, brush) {\n    // rely on (inaccurate) bounds intersection if no context\n    if (!context) return true; // add path to offscreen graphics context\n\n    draw(context, item); // get bounds intersection region\n\n    b.clear().union(item.bounds).intersect(brush).round();\n    const {\n      x1,\n      y1,\n      x2,\n      y2\n    } = b; // iterate over intersection region\n    // perform fine grained inclusion test\n\n    for (let y = y1; y <= y2; ++y) {\n      for (let x = x1; x <= x2; ++x) {\n        if (context.isPointInPath(x, y)) {\n          return true;\n        }\n      }\n    } // false if no hits in intersection region\n\n\n    return false;\n  };\n}\nfunction intersectPoint(item, box) {\n  return box.contains(item.x || 0, item.y || 0);\n}\nfunction intersectRect(item, box) {\n  const x = item.x || 0,\n        y = item.y || 0,\n        w = item.width || 0,\n        h = item.height || 0;\n  return box.intersects(b.set(x, y, x + w, y + h));\n}\nfunction intersectRule(item, box) {\n  const x = item.x || 0,\n        y = item.y || 0,\n        x2 = item.x2 != null ? item.x2 : x,\n        y2 = item.y2 != null ? item.y2 : y;\n  return intersectBoxLine(box, x, y, x2, y2);\n}\nfunction intersectBoxLine(box, x, y, u, v) {\n  const {\n    x1,\n    y1,\n    x2,\n    y2\n  } = box,\n        dx = u - x,\n        dy = v - y;\n  let t0 = 0,\n      t1 = 1,\n      p,\n      q,\n      r,\n      e;\n\n  for (e = 0; e < 4; ++e) {\n    if (e === 0) {\n      p = -dx;\n      q = -(x1 - x);\n    }\n\n    if (e === 1) {\n      p = dx;\n      q = x2 - x;\n    }\n\n    if (e === 2) {\n      p = -dy;\n      q = -(y1 - y);\n    }\n\n    if (e === 3) {\n      p = dy;\n      q = y2 - y;\n    }\n\n    if (Math.abs(p) < 1e-10 && q < 0) return false;\n    r = q / p;\n\n    if (p < 0) {\n      if (r > t1) return false;else if (r > t0) t0 = r;\n    } else if (p > 0) {\n      if (r < t0) return false;else if (r < t1) t1 = r;\n    }\n  }\n\n  return true;\n}\n\nfunction blend (context, item) {\n  context.globalCompositeOperation = item.blend || 'source-over';\n}\n\nfunction value (value, dflt) {\n  return value == null ? dflt : value;\n}\n\nfunction addStops(gradient, stops) {\n  const n = stops.length;\n\n  for (let i = 0; i < n; ++i) {\n    gradient.addColorStop(stops[i].offset, stops[i].color);\n  }\n\n  return gradient;\n}\n\nfunction gradient (context, spec, bounds) {\n  const w = bounds.width(),\n        h = bounds.height();\n  let gradient;\n\n  if (spec.gradient === 'radial') {\n    gradient = context.createRadialGradient(bounds.x1 + value(spec.x1, 0.5) * w, bounds.y1 + value(spec.y1, 0.5) * h, Math.max(w, h) * value(spec.r1, 0), bounds.x1 + value(spec.x2, 0.5) * w, bounds.y1 + value(spec.y2, 0.5) * h, Math.max(w, h) * value(spec.r2, 0.5));\n  } else {\n    // linear gradient\n    const x1 = value(spec.x1, 0),\n          y1 = value(spec.y1, 0),\n          x2 = value(spec.x2, 1),\n          y2 = value(spec.y2, 0);\n\n    if (x1 === x2 || y1 === y2 || w === h) {\n      // axis aligned: use normal gradient\n      gradient = context.createLinearGradient(bounds.x1 + x1 * w, bounds.y1 + y1 * h, bounds.x1 + x2 * w, bounds.y1 + y2 * h);\n    } else {\n      // not axis aligned: render gradient into a pattern (#2365)\n      // this allows us to use normalized bounding box coordinates\n      const image = Object(vega_canvas__WEBPACK_IMPORTED_MODULE_3__[\"canvas\"])(Math.ceil(w), Math.ceil(h)),\n            ictx = image.getContext('2d');\n      ictx.scale(w, h);\n      ictx.fillStyle = addStops(ictx.createLinearGradient(x1, y1, x2, y2), spec.stops);\n      ictx.fillRect(0, 0, w, h);\n      return context.createPattern(image, 'no-repeat');\n    }\n  }\n\n  return addStops(gradient, spec.stops);\n}\n\nfunction color (context, item, value) {\n  return isGradient(value) ? gradient(context, value, item.bounds) : value;\n}\n\nfunction fill (context, item, opacity) {\n  opacity *= item.fillOpacity == null ? 1 : item.fillOpacity;\n\n  if (opacity > 0) {\n    context.globalAlpha = opacity;\n    context.fillStyle = color(context, item, item.fill);\n    return true;\n  } else {\n    return false;\n  }\n}\n\nvar Empty = [];\nfunction stroke (context, item, opacity) {\n  var lw = (lw = item.strokeWidth) != null ? lw : 1;\n  if (lw <= 0) return false;\n  opacity *= item.strokeOpacity == null ? 1 : item.strokeOpacity;\n\n  if (opacity > 0) {\n    context.globalAlpha = opacity;\n    context.strokeStyle = color(context, item, item.stroke);\n    context.lineWidth = lw;\n    context.lineCap = item.strokeCap || 'butt';\n    context.lineJoin = item.strokeJoin || 'miter';\n    context.miterLimit = item.strokeMiterLimit || 10;\n\n    if (context.setLineDash) {\n      context.setLineDash(item.strokeDash || Empty);\n      context.lineDashOffset = item.strokeDashOffset || 0;\n    }\n\n    return true;\n  } else {\n    return false;\n  }\n}\n\nfunction compare(a, b) {\n  return a.zindex - b.zindex || a.index - b.index;\n}\n\nfunction zorder(scene) {\n  if (!scene.zdirty) return scene.zitems;\n  var items = scene.items,\n      output = [],\n      item,\n      i,\n      n;\n\n  for (i = 0, n = items.length; i < n; ++i) {\n    item = items[i];\n    item.index = i;\n    if (item.zindex) output.push(item);\n  }\n\n  scene.zdirty = false;\n  return scene.zitems = output.sort(compare);\n}\nfunction visit(scene, visitor) {\n  var items = scene.items,\n      i,\n      n;\n  if (!items || !items.length) return;\n  const zitems = zorder(scene);\n\n  if (zitems && zitems.length) {\n    for (i = 0, n = items.length; i < n; ++i) {\n      if (!items[i].zindex) visitor(items[i]);\n    }\n\n    items = zitems;\n  }\n\n  for (i = 0, n = items.length; i < n; ++i) {\n    visitor(items[i]);\n  }\n}\nfunction pickVisit(scene, visitor) {\n  var items = scene.items,\n      hit,\n      i;\n  if (!items || !items.length) return null;\n  const zitems = zorder(scene);\n  if (zitems && zitems.length) items = zitems;\n\n  for (i = items.length; --i >= 0;) {\n    if (hit = visitor(items[i])) return hit;\n  }\n\n  if (items === zitems) {\n    for (items = scene.items, i = items.length; --i >= 0;) {\n      if (!items[i].zindex) {\n        if (hit = visitor(items[i])) return hit;\n      }\n    }\n  }\n\n  return null;\n}\n\nfunction drawAll(path) {\n  return function (context, scene, bounds) {\n    visit(scene, item => {\n      if (!bounds || bounds.intersects(item.bounds)) {\n        drawPath(path, context, item, item);\n      }\n    });\n  };\n}\nfunction drawOne(path) {\n  return function (context, scene, bounds) {\n    if (scene.items.length && (!bounds || bounds.intersects(scene.bounds))) {\n      drawPath(path, context, scene.items[0], scene.items);\n    }\n  };\n}\n\nfunction drawPath(path, context, item, items) {\n  var opacity = item.opacity == null ? 1 : item.opacity;\n  if (opacity === 0) return;\n  if (path(context, items)) return;\n  blend(context, item);\n\n  if (item.fill && fill(context, item, opacity)) {\n    context.fill();\n  }\n\n  if (item.stroke && stroke(context, item, opacity)) {\n    context.stroke();\n  }\n}\n\nfunction pick$1(test) {\n  test = test || vega_util__WEBPACK_IMPORTED_MODULE_0__[\"truthy\"];\n  return function (context, scene, x, y, gx, gy) {\n    x *= context.pixelRatio;\n    y *= context.pixelRatio;\n    return pickVisit(scene, item => {\n      const b = item.bounds; // first hit test against bounding box\n\n      if (b && !b.contains(gx, gy) || !b) return; // if in bounding box, perform more careful test\n\n      if (test(context, item, x, y, gx, gy)) return item;\n    });\n  };\n}\nfunction hitPath(path, filled) {\n  return function (context, o, x, y) {\n    var item = Array.isArray(o) ? o[0] : o,\n        fill = filled == null ? item.fill : filled,\n        stroke = item.stroke && context.isPointInStroke,\n        lw,\n        lc;\n\n    if (stroke) {\n      lw = item.strokeWidth;\n      lc = item.strokeCap;\n      context.lineWidth = lw != null ? lw : 1;\n      context.lineCap = lc != null ? lc : 'butt';\n    }\n\n    return path(context, o) ? false : fill && context.isPointInPath(x, y) || stroke && context.isPointInStroke(x, y);\n  };\n}\nfunction pickPath(path) {\n  return pick$1(hitPath(path));\n}\n\nfunction translate(x, y) {\n  return 'translate(' + x + ',' + y + ')';\n}\nfunction rotate(a) {\n  return 'rotate(' + a + ')';\n}\nfunction scale(scaleX, scaleY) {\n  return 'scale(' + scaleX + ',' + scaleY + ')';\n}\nfunction translateItem(item) {\n  return translate(item.x || 0, item.y || 0);\n}\nfunction rotateItem(item) {\n  return translate(item.x || 0, item.y || 0) + (item.angle ? ' ' + rotate(item.angle) : '');\n}\nfunction transformItem(item) {\n  return translate(item.x || 0, item.y || 0) + (item.angle ? ' ' + rotate(item.angle) : '') + (item.scaleX || item.scaleY ? ' ' + scale(item.scaleX || 1, item.scaleY || 1) : '');\n}\n\nfunction markItemPath (type, shape, isect) {\n  function attr(emit, item) {\n    emit('transform', rotateItem(item));\n    emit('d', shape(null, item));\n  }\n\n  function bound(bounds, item) {\n    shape(boundContext(bounds, item.angle), item);\n    return boundStroke(bounds, item).translate(item.x || 0, item.y || 0);\n  }\n\n  function draw(context, item) {\n    var x = item.x || 0,\n        y = item.y || 0,\n        a = item.angle || 0;\n    context.translate(x, y);\n    if (a) context.rotate(a *= DegToRad);\n    context.beginPath();\n    shape(context, item);\n    if (a) context.rotate(-a);\n    context.translate(-x, -y);\n  }\n\n  return {\n    type: type,\n    tag: 'path',\n    nested: false,\n    attr: attr,\n    bound: bound,\n    draw: drawAll(draw),\n    pick: pickPath(draw),\n    isect: isect || intersectPath(draw)\n  };\n}\n\nvar arc = markItemPath('arc', arc$1);\n\nfunction pickArea(a, p) {\n  var v = a[0].orient === 'horizontal' ? p[1] : p[0],\n      z = a[0].orient === 'horizontal' ? 'y' : 'x',\n      i = a.length,\n      min = +Infinity,\n      hit,\n      d;\n\n  while (--i >= 0) {\n    if (a[i].defined === false) continue;\n    d = Math.abs(a[i][z] - v);\n\n    if (d < min) {\n      min = d;\n      hit = a[i];\n    }\n  }\n\n  return hit;\n}\nfunction pickLine(a, p) {\n  var t = Math.pow(a[0].strokeWidth || 1, 2),\n      i = a.length,\n      dx,\n      dy,\n      dd;\n\n  while (--i >= 0) {\n    if (a[i].defined === false) continue;\n    dx = a[i].x - p[0];\n    dy = a[i].y - p[1];\n    dd = dx * dx + dy * dy;\n    if (dd < t) return a[i];\n  }\n\n  return null;\n}\nfunction pickTrail(a, p) {\n  var i = a.length,\n      dx,\n      dy,\n      dd;\n\n  while (--i >= 0) {\n    if (a[i].defined === false) continue;\n    dx = a[i].x - p[0];\n    dy = a[i].y - p[1];\n    dd = dx * dx + dy * dy;\n    dx = a[i].size || 1;\n    if (dd < dx * dx) return a[i];\n  }\n\n  return null;\n}\n\nfunction markMultiItemPath (type, shape, tip) {\n  function attr(emit, item) {\n    var items = item.mark.items;\n    if (items.length) emit('d', shape(null, items));\n  }\n\n  function bound(bounds, mark) {\n    var items = mark.items;\n\n    if (items.length === 0) {\n      return bounds;\n    } else {\n      shape(boundContext(bounds), items);\n      return boundStroke(bounds, items[0]);\n    }\n  }\n\n  function draw(context, items) {\n    context.beginPath();\n    shape(context, items);\n  }\n\n  const hit = hitPath(draw);\n\n  function pick(context, scene, x, y, gx, gy) {\n    var items = scene.items,\n        b = scene.bounds;\n\n    if (!items || !items.length || b && !b.contains(gx, gy)) {\n      return null;\n    }\n\n    x *= context.pixelRatio;\n    y *= context.pixelRatio;\n    return hit(context, items, x, y) ? items[0] : null;\n  }\n\n  return {\n    type: type,\n    tag: 'path',\n    nested: true,\n    attr: attr,\n    bound: bound,\n    draw: drawOne(draw),\n    pick: pick,\n    isect: intersectPoint,\n    tip: tip\n  };\n}\n\nvar area = markMultiItemPath('area', area$1, pickArea);\n\nfunction clip (context, scene) {\n  var clip = scene.clip;\n  context.save();\n\n  if (Object(vega_util__WEBPACK_IMPORTED_MODULE_0__[\"isFunction\"])(clip)) {\n    context.beginPath();\n    clip(context);\n    context.clip();\n  } else {\n    clipGroup(context, scene.group);\n  }\n}\nfunction clipGroup(context, group) {\n  context.beginPath();\n  hasCornerRadius(group) ? rectangle(context, group, 0, 0) : context.rect(0, 0, group.width || 0, group.height || 0);\n  context.clip();\n}\n\nfunction offset$1(item) {\n  const sw = value(item.strokeWidth, 1);\n  return item.strokeOffset != null ? item.strokeOffset : item.stroke && sw > 0.5 && sw < 1.5 ? 0.5 - Math.abs(sw - 1) : 0;\n}\n\nfunction attr$5(emit, item) {\n  emit('transform', translateItem(item));\n}\n\nfunction emitRectangle(emit, item) {\n  const off = offset$1(item);\n  emit('d', rectangle(null, item, off, off));\n}\n\nfunction background(emit, item) {\n  emit('class', 'background');\n  emit('aria-hidden', true);\n  emitRectangle(emit, item);\n}\n\nfunction foreground(emit, item) {\n  emit('class', 'foreground');\n  emit('aria-hidden', true);\n\n  if (item.strokeForeground) {\n    emitRectangle(emit, item);\n  } else {\n    emit('d', '');\n  }\n}\n\nfunction content(emit, item, renderer) {\n  const url = item.clip ? clip$1(renderer, item, item) : null;\n  emit('clip-path', url);\n}\n\nfunction bound$5(bounds, group) {\n  if (!group.clip && group.items) {\n    const items = group.items,\n          m = items.length;\n\n    for (let j = 0; j < m; ++j) {\n      bounds.union(items[j].bounds);\n    }\n  }\n\n  if ((group.clip || group.width || group.height) && !group.noBound) {\n    bounds.add(0, 0).add(group.width || 0, group.height || 0);\n  }\n\n  boundStroke(bounds, group);\n  return bounds.translate(group.x || 0, group.y || 0);\n}\n\nfunction rectanglePath(context, group, x, y) {\n  const off = offset$1(group);\n  context.beginPath();\n  rectangle(context, group, (x || 0) + off, (y || 0) + off);\n}\n\nconst hitBackground = hitPath(rectanglePath);\nconst hitForeground = hitPath(rectanglePath, false);\nconst hitCorner = hitPath(rectanglePath, true);\n\nfunction draw$4(context, scene, bounds) {\n  visit(scene, group => {\n    const gx = group.x || 0,\n          gy = group.y || 0,\n          fore = group.strokeForeground,\n          opacity = group.opacity == null ? 1 : group.opacity; // draw group background\n\n    if ((group.stroke || group.fill) && opacity) {\n      rectanglePath(context, group, gx, gy);\n      blend(context, group);\n\n      if (group.fill && fill(context, group, opacity)) {\n        context.fill();\n      }\n\n      if (group.stroke && !fore && stroke(context, group, opacity)) {\n        context.stroke();\n      }\n    } // setup graphics context, set clip and bounds\n\n\n    context.save();\n    context.translate(gx, gy);\n    if (group.clip) clipGroup(context, group);\n    if (bounds) bounds.translate(-gx, -gy); // draw group contents\n\n    visit(group, item => {\n      this.draw(context, item, bounds);\n    }); // restore graphics context\n\n    if (bounds) bounds.translate(gx, gy);\n    context.restore(); // draw group foreground\n\n    if (fore && group.stroke && opacity) {\n      rectanglePath(context, group, gx, gy);\n      blend(context, group);\n\n      if (stroke(context, group, opacity)) {\n        context.stroke();\n      }\n    }\n  });\n}\n\nfunction pick(context, scene, x, y, gx, gy) {\n  if (scene.bounds && !scene.bounds.contains(gx, gy) || !scene.items) {\n    return null;\n  }\n\n  const cx = x * context.pixelRatio,\n        cy = y * context.pixelRatio;\n  return pickVisit(scene, group => {\n    let hit, dx, dy; // first hit test bounding box\n\n    const b = group.bounds;\n    if (b && !b.contains(gx, gy)) return; // passed bounds check, test rectangular clip\n\n    dx = group.x || 0;\n    dy = group.y || 0;\n    const dw = dx + (group.width || 0),\n          dh = dy + (group.height || 0),\n          c = group.clip;\n    if (c && (gx < dx || gx > dw || gy < dy || gy > dh)) return; // adjust coordinate system\n\n    context.save();\n    context.translate(dx, dy);\n    dx = gx - dx;\n    dy = gy - dy; // test background for rounded corner clip\n\n    if (c && hasCornerRadius(group) && !hitCorner(context, group, cx, cy)) {\n      context.restore();\n      return null;\n    }\n\n    const fore = group.strokeForeground,\n          ix = scene.interactive !== false; // hit test against group foreground\n\n    if (ix && fore && group.stroke && hitForeground(context, group, cx, cy)) {\n      context.restore();\n      return group;\n    } // hit test against contained marks\n\n\n    hit = pickVisit(group, mark => pickMark(mark, dx, dy) ? this.pick(mark, x, y, dx, dy) : null); // hit test against group background\n\n    if (!hit && ix && (group.fill || !fore && group.stroke) && hitBackground(context, group, cx, cy)) {\n      hit = group;\n    } // restore state and return\n\n\n    context.restore();\n    return hit || null;\n  });\n}\n\nfunction pickMark(mark, x, y) {\n  return (mark.interactive !== false || mark.marktype === 'group') && mark.bounds && mark.bounds.contains(x, y);\n}\n\nvar group = {\n  type: 'group',\n  tag: 'g',\n  nested: false,\n  attr: attr$5,\n  bound: bound$5,\n  draw: draw$4,\n  pick: pick,\n  isect: intersectRect,\n  content: content,\n  background: background,\n  foreground: foreground\n};\n\nvar metadata = {\n  'xmlns': 'http://www.w3.org/2000/svg',\n  'xmlns:xlink': 'http://www.w3.org/1999/xlink',\n  'version': '1.1'\n};\n\nfunction getImage(item, renderer) {\n  var image = item.image;\n\n  if (!image || item.url && item.url !== image.url) {\n    image = {\n      complete: false,\n      width: 0,\n      height: 0\n    };\n    renderer.loadImage(item.url).then(image => {\n      item.image = image;\n      item.image.url = item.url;\n    });\n  }\n\n  return image;\n}\n\nfunction imageWidth(item, image) {\n  return item.width != null ? item.width : !image || !image.width ? 0 : item.aspect !== false && item.height ? item.height * image.width / image.height : image.width;\n}\n\nfunction imageHeight(item, image) {\n  return item.height != null ? item.height : !image || !image.height ? 0 : item.aspect !== false && item.width ? item.width * image.height / image.width : image.height;\n}\n\nfunction imageXOffset(align, w) {\n  return align === 'center' ? w / 2 : align === 'right' ? w : 0;\n}\n\nfunction imageYOffset(baseline, h) {\n  return baseline === 'middle' ? h / 2 : baseline === 'bottom' ? h : 0;\n}\n\nfunction attr$4(emit, item, renderer) {\n  const img = getImage(item, renderer),\n        w = imageWidth(item, img),\n        h = imageHeight(item, img),\n        x = (item.x || 0) - imageXOffset(item.align, w),\n        y = (item.y || 0) - imageYOffset(item.baseline, h),\n        i = !img.src && img.toDataURL ? img.toDataURL() : img.src || '';\n  emit('href', i, metadata['xmlns:xlink'], 'xlink:href');\n  emit('transform', translate(x, y));\n  emit('width', w);\n  emit('height', h);\n  emit('preserveAspectRatio', item.aspect === false ? 'none' : 'xMidYMid');\n}\n\nfunction bound$4(bounds, item) {\n  const img = item.image,\n        w = imageWidth(item, img),\n        h = imageHeight(item, img),\n        x = (item.x || 0) - imageXOffset(item.align, w),\n        y = (item.y || 0) - imageYOffset(item.baseline, h);\n  return bounds.set(x, y, x + w, y + h);\n}\n\nfunction draw$3(context, scene, bounds) {\n  visit(scene, item => {\n    if (bounds && !bounds.intersects(item.bounds)) return; // bounds check\n\n    const img = getImage(item, this);\n    let w = imageWidth(item, img);\n    let h = imageHeight(item, img);\n    if (w === 0 || h === 0) return; // early exit\n\n    let x = (item.x || 0) - imageXOffset(item.align, w),\n        y = (item.y || 0) - imageYOffset(item.baseline, h),\n        opacity,\n        ar0,\n        ar1,\n        t;\n\n    if (item.aspect !== false) {\n      ar0 = img.width / img.height;\n      ar1 = item.width / item.height;\n\n      if (ar0 === ar0 && ar1 === ar1 && ar0 !== ar1) {\n        if (ar1 < ar0) {\n          t = w / ar0;\n          y += (h - t) / 2;\n          h = t;\n        } else {\n          t = h * ar0;\n          x += (w - t) / 2;\n          w = t;\n        }\n      }\n    }\n\n    if (img.complete || img.toDataURL) {\n      blend(context, item);\n      context.globalAlpha = (opacity = item.opacity) != null ? opacity : 1;\n      context.imageSmoothingEnabled = item.smooth !== false;\n      context.drawImage(img, x, y, w, h);\n    }\n  });\n}\n\nvar image = {\n  type: 'image',\n  tag: 'image',\n  nested: false,\n  attr: attr$4,\n  bound: bound$4,\n  draw: draw$3,\n  pick: pick$1(),\n  isect: vega_util__WEBPACK_IMPORTED_MODULE_0__[\"truthy\"],\n  // bounds check is sufficient\n  get: getImage,\n  xOffset: imageXOffset,\n  yOffset: imageYOffset\n};\n\nvar line = markMultiItemPath('line', line$1, pickLine);\n\nfunction attr$3(emit, item) {\n  var sx = item.scaleX || 1,\n      sy = item.scaleY || 1;\n\n  if (sx !== 1 || sy !== 1) {\n    emit('vector-effect', 'non-scaling-stroke');\n  }\n\n  emit('transform', transformItem(item));\n  emit('d', item.path);\n}\n\nfunction path$1(context, item) {\n  var path = item.path;\n  if (path == null) return true;\n  var x = item.x || 0,\n      y = item.y || 0,\n      sx = item.scaleX || 1,\n      sy = item.scaleY || 1,\n      a = (item.angle || 0) * DegToRad,\n      cache = item.pathCache;\n\n  if (!cache || cache.path !== path) {\n    (item.pathCache = cache = pathParse(path)).path = path;\n  }\n\n  if (a && context.rotate && context.translate) {\n    context.translate(x, y);\n    context.rotate(a);\n    pathRender(context, cache, 0, 0, sx, sy);\n    context.rotate(-a);\n    context.translate(-x, -y);\n  } else {\n    pathRender(context, cache, x, y, sx, sy);\n  }\n}\n\nfunction bound$3(bounds, item) {\n  return path$1(boundContext(bounds, item.angle), item) ? bounds.set(0, 0, 0, 0) : boundStroke(bounds, item, true);\n}\n\nvar path$2 = {\n  type: 'path',\n  tag: 'path',\n  nested: false,\n  attr: attr$3,\n  bound: bound$3,\n  draw: drawAll(path$1),\n  pick: pickPath(path$1),\n  isect: intersectPath(path$1)\n};\n\nfunction attr$2(emit, item) {\n  emit('d', rectangle(null, item));\n}\n\nfunction bound$2(bounds, item) {\n  var x, y;\n  return boundStroke(bounds.set(x = item.x || 0, y = item.y || 0, x + item.width || 0, y + item.height || 0), item);\n}\n\nfunction draw$2(context, item) {\n  context.beginPath();\n  rectangle(context, item);\n}\n\nvar rect = {\n  type: 'rect',\n  tag: 'path',\n  nested: false,\n  attr: attr$2,\n  bound: bound$2,\n  draw: drawAll(draw$2),\n  pick: pickPath(draw$2),\n  isect: intersectRect\n};\n\nfunction attr$1(emit, item) {\n  emit('transform', translateItem(item));\n  emit('x2', item.x2 != null ? item.x2 - (item.x || 0) : 0);\n  emit('y2', item.y2 != null ? item.y2 - (item.y || 0) : 0);\n}\n\nfunction bound$1(bounds, item) {\n  var x1, y1;\n  return boundStroke(bounds.set(x1 = item.x || 0, y1 = item.y || 0, item.x2 != null ? item.x2 : x1, item.y2 != null ? item.y2 : y1), item);\n}\n\nfunction path(context, item, opacity) {\n  var x1, y1, x2, y2;\n\n  if (item.stroke && stroke(context, item, opacity)) {\n    x1 = item.x || 0;\n    y1 = item.y || 0;\n    x2 = item.x2 != null ? item.x2 : x1;\n    y2 = item.y2 != null ? item.y2 : y1;\n    context.beginPath();\n    context.moveTo(x1, y1);\n    context.lineTo(x2, y2);\n    return true;\n  }\n\n  return false;\n}\n\nfunction draw$1(context, scene, bounds) {\n  visit(scene, item => {\n    if (bounds && !bounds.intersects(item.bounds)) return; // bounds check\n\n    var opacity = item.opacity == null ? 1 : item.opacity;\n\n    if (opacity && path(context, item, opacity)) {\n      blend(context, item);\n      context.stroke();\n    }\n  });\n}\n\nfunction hit$1(context, item, x, y) {\n  if (!context.isPointInStroke) return false;\n  return path(context, item, 1) && context.isPointInStroke(x, y);\n}\n\nvar rule = {\n  type: 'rule',\n  tag: 'line',\n  nested: false,\n  attr: attr$1,\n  bound: bound$1,\n  draw: draw$1,\n  pick: pick$1(hit$1),\n  isect: intersectRule\n};\n\nvar shape = markItemPath('shape', shape$1);\n\nvar symbol = markItemPath('symbol', symbol$1, intersectPoint);\n\nconst widthCache = Object(vega_util__WEBPACK_IMPORTED_MODULE_0__[\"lruCache\"])();\nvar textMetrics = {\n  height: fontSize,\n  measureWidth: measureWidth,\n  estimateWidth: estimateWidth,\n  width: estimateWidth,\n  canvas: useCanvas\n};\nuseCanvas(true);\n\nfunction useCanvas(use) {\n  textMetrics.width = use && context ? measureWidth : estimateWidth;\n} // make simple estimate if no canvas is available\n\n\nfunction estimateWidth(item, text) {\n  return _estimateWidth(textValue(item, text), fontSize(item));\n}\n\nfunction _estimateWidth(text, currentFontHeight) {\n  return ~~(0.8 * text.length * currentFontHeight);\n} // measure text width if canvas is available\n\n\nfunction measureWidth(item, text) {\n  return fontSize(item) <= 0 || !(text = textValue(item, text)) ? 0 : _measureWidth(text, font(item));\n}\n\nfunction _measureWidth(text, currentFont) {\n  const key = `(${currentFont}) ${text}`;\n  let width = widthCache.get(key);\n\n  if (width === undefined) {\n    context.font = currentFont;\n    width = context.measureText(text).width;\n    widthCache.set(key, width);\n  }\n\n  return width;\n}\n\nfunction fontSize(item) {\n  return item.fontSize != null ? +item.fontSize || 0 : 11;\n}\nfunction lineHeight(item) {\n  return item.lineHeight != null ? item.lineHeight : fontSize(item) + 2;\n}\n\nfunction lineArray(_) {\n  return Object(vega_util__WEBPACK_IMPORTED_MODULE_0__[\"isArray\"])(_) ? _.length > 1 ? _ : _[0] : _;\n}\n\nfunction textLines(item) {\n  return lineArray(item.lineBreak && item.text && !Object(vega_util__WEBPACK_IMPORTED_MODULE_0__[\"isArray\"])(item.text) ? item.text.split(item.lineBreak) : item.text);\n}\nfunction multiLineOffset(item) {\n  const tl = textLines(item);\n  return (Object(vega_util__WEBPACK_IMPORTED_MODULE_0__[\"isArray\"])(tl) ? tl.length - 1 : 0) * lineHeight(item);\n}\nfunction textValue(item, line) {\n  const text = line == null ? '' : (line + '').trim();\n  return item.limit > 0 && text.length ? truncate(item, text) : text;\n}\n\nfunction widthGetter(item) {\n  if (textMetrics.width === measureWidth) {\n    // we are using canvas\n    const currentFont = font(item);\n    return text => _measureWidth(text, currentFont);\n  } else {\n    // we are relying on estimates\n    const currentFontHeight = fontSize(item);\n    return text => _estimateWidth(text, currentFontHeight);\n  }\n}\n\nfunction truncate(item, text) {\n  var limit = +item.limit,\n      width = widthGetter(item);\n  if (width(text) < limit) return text;\n  var ellipsis = item.ellipsis || '\\u2026',\n      rtl = item.dir === 'rtl',\n      lo = 0,\n      hi = text.length,\n      mid;\n  limit -= width(ellipsis);\n\n  if (rtl) {\n    while (lo < hi) {\n      mid = lo + hi >>> 1;\n      if (width(text.slice(mid)) > limit) lo = mid + 1;else hi = mid;\n    }\n\n    return ellipsis + text.slice(lo);\n  } else {\n    while (lo < hi) {\n      mid = 1 + (lo + hi >>> 1);\n      if (width(text.slice(0, mid)) < limit) lo = mid;else hi = mid - 1;\n    }\n\n    return text.slice(0, lo) + ellipsis;\n  }\n}\n\nfunction fontFamily(item, quote) {\n  var font = item.font;\n  return (quote && font ? String(font).replace(/\"/g, '\\'') : font) || 'sans-serif';\n}\nfunction font(item, quote) {\n  return '' + (item.fontStyle ? item.fontStyle + ' ' : '') + (item.fontVariant ? item.fontVariant + ' ' : '') + (item.fontWeight ? item.fontWeight + ' ' : '') + fontSize(item) + 'px ' + fontFamily(item, quote);\n}\nfunction offset(item) {\n  // perform our own font baseline calculation\n  // why? not all browsers support SVG 1.1 'alignment-baseline' :(\n  // this also ensures consistent layout across renderers\n  var baseline = item.baseline,\n      h = fontSize(item);\n  return Math.round(baseline === 'top' ? 0.79 * h : baseline === 'middle' ? 0.30 * h : baseline === 'bottom' ? -0.21 * h : baseline === 'line-top' ? 0.29 * h + 0.5 * lineHeight(item) : baseline === 'line-bottom' ? 0.29 * h - 0.5 * lineHeight(item) : 0);\n}\n\nconst textAlign = {\n  'left': 'start',\n  'center': 'middle',\n  'right': 'end'\n};\nconst tempBounds = new Bounds();\n\nfunction anchorPoint(item) {\n  var x = item.x || 0,\n      y = item.y || 0,\n      r = item.radius || 0,\n      t;\n\n  if (r) {\n    t = (item.theta || 0) - HalfPi;\n    x += r * Math.cos(t);\n    y += r * Math.sin(t);\n  }\n\n  tempBounds.x1 = x;\n  tempBounds.y1 = y;\n  return tempBounds;\n}\n\nfunction attr(emit, item) {\n  var dx = item.dx || 0,\n      dy = (item.dy || 0) + offset(item),\n      p = anchorPoint(item),\n      x = p.x1,\n      y = p.y1,\n      a = item.angle || 0,\n      t;\n  emit('text-anchor', textAlign[item.align] || 'start');\n\n  if (a) {\n    t = translate(x, y) + ' ' + rotate(a);\n    if (dx || dy) t += ' ' + translate(dx, dy);\n  } else {\n    t = translate(x + dx, y + dy);\n  }\n\n  emit('transform', t);\n}\n\nfunction bound(bounds, item, mode) {\n  var h = textMetrics.height(item),\n      a = item.align,\n      p = anchorPoint(item),\n      x = p.x1,\n      y = p.y1,\n      dx = item.dx || 0,\n      dy = (item.dy || 0) + offset(item) - Math.round(0.8 * h),\n      // use 4/5 offset\n  tl = textLines(item),\n      w; // get dimensions\n\n  if (Object(vega_util__WEBPACK_IMPORTED_MODULE_0__[\"isArray\"])(tl)) {\n    // multi-line text\n    h += lineHeight(item) * (tl.length - 1);\n    w = tl.reduce((w, t) => Math.max(w, textMetrics.width(item, t)), 0);\n  } else {\n    // single-line text\n    w = textMetrics.width(item, tl);\n  } // horizontal alignment\n\n\n  if (a === 'center') {\n    dx -= w / 2;\n  } else if (a === 'right') {\n    dx -= w;\n  } else ;\n\n  bounds.set(dx += x, dy += y, dx + w, dy + h);\n\n  if (item.angle && !mode) {\n    bounds.rotate(item.angle * DegToRad, x, y);\n  } else if (mode === 2) {\n    return bounds.rotatedPoints(item.angle * DegToRad, x, y);\n  }\n\n  return bounds;\n}\n\nfunction draw(context, scene, bounds) {\n  visit(scene, item => {\n    var opacity = item.opacity == null ? 1 : item.opacity,\n        p,\n        x,\n        y,\n        i,\n        lh,\n        tl,\n        str;\n    if (bounds && !bounds.intersects(item.bounds) || // bounds check\n    opacity === 0 || item.fontSize <= 0 || item.text == null || item.text.length === 0) return;\n    context.font = font(item);\n    context.textAlign = item.align || 'left';\n    p = anchorPoint(item);\n    x = p.x1, y = p.y1;\n\n    if (item.angle) {\n      context.save();\n      context.translate(x, y);\n      context.rotate(item.angle * DegToRad);\n      x = y = 0; // reset x, y\n    }\n\n    x += item.dx || 0;\n    y += (item.dy || 0) + offset(item);\n    tl = textLines(item);\n    blend(context, item);\n\n    if (Object(vega_util__WEBPACK_IMPORTED_MODULE_0__[\"isArray\"])(tl)) {\n      lh = lineHeight(item);\n\n      for (i = 0; i < tl.length; ++i) {\n        str = textValue(item, tl[i]);\n\n        if (item.fill && fill(context, item, opacity)) {\n          context.fillText(str, x, y);\n        }\n\n        if (item.stroke && stroke(context, item, opacity)) {\n          context.strokeText(str, x, y);\n        }\n\n        y += lh;\n      }\n    } else {\n      str = textValue(item, tl);\n\n      if (item.fill && fill(context, item, opacity)) {\n        context.fillText(str, x, y);\n      }\n\n      if (item.stroke && stroke(context, item, opacity)) {\n        context.strokeText(str, x, y);\n      }\n    }\n\n    if (item.angle) context.restore();\n  });\n}\n\nfunction hit(context, item, x, y, gx, gy) {\n  if (item.fontSize <= 0) return false;\n  if (!item.angle) return true; // bounds sufficient if no rotation\n  // project point into space of unrotated bounds\n\n  var p = anchorPoint(item),\n      ax = p.x1,\n      ay = p.y1,\n      b = bound(tempBounds, item, 1),\n      a = -item.angle * DegToRad,\n      cos = Math.cos(a),\n      sin = Math.sin(a),\n      px = cos * gx - sin * gy + (ax - cos * ax + sin * ay),\n      py = sin * gx + cos * gy + (ay - sin * ax - cos * ay);\n  return b.contains(px, py);\n}\n\nfunction intersectText(item, box) {\n  const p = bound(tempBounds, item, 2);\n  return intersectBoxLine(box, p[0], p[1], p[2], p[3]) || intersectBoxLine(box, p[0], p[1], p[4], p[5]) || intersectBoxLine(box, p[4], p[5], p[6], p[7]) || intersectBoxLine(box, p[2], p[3], p[6], p[7]);\n}\n\nvar text = {\n  type: 'text',\n  tag: 'text',\n  nested: false,\n  attr: attr,\n  bound: bound,\n  draw: draw,\n  pick: pick$1(hit),\n  isect: intersectText\n};\n\nvar trail = markMultiItemPath('trail', trail$1, pickTrail);\n\nvar Marks = {\n  arc: arc,\n  area: area,\n  group: group,\n  image: image,\n  line: line,\n  path: path$2,\n  rect: rect,\n  rule: rule,\n  shape: shape,\n  symbol: symbol,\n  text: text,\n  trail: trail\n};\n\nfunction boundItem (item, func, opt) {\n  var type = Marks[item.mark.marktype],\n      bound = func || type.bound;\n  if (type.nested) item = item.mark;\n  return bound(item.bounds || (item.bounds = new Bounds()), item, opt);\n}\n\nvar DUMMY = {\n  mark: null\n};\nfunction boundMark (mark, bounds, opt) {\n  var type = Marks[mark.marktype],\n      bound = type.bound,\n      items = mark.items,\n      hasItems = items && items.length,\n      i,\n      n,\n      item,\n      b;\n\n  if (type.nested) {\n    if (hasItems) {\n      item = items[0];\n    } else {\n      // no items, fake it\n      DUMMY.mark = mark;\n      item = DUMMY;\n    }\n\n    b = boundItem(item, bound, opt);\n    bounds = bounds && bounds.union(b) || b;\n    return bounds;\n  }\n\n  bounds = bounds || mark.bounds && mark.bounds.clear() || new Bounds();\n\n  if (hasItems) {\n    for (i = 0, n = items.length; i < n; ++i) {\n      bounds.union(boundItem(items[i], bound, opt));\n    }\n  }\n\n  return mark.bounds = bounds;\n}\n\nconst keys = ['marktype', 'name', 'role', 'interactive', 'clip', 'items', 'zindex', 'x', 'y', 'width', 'height', 'align', 'baseline', // layout\n'fill', 'fillOpacity', 'opacity', 'blend', // fill\n'stroke', 'strokeOpacity', 'strokeWidth', 'strokeCap', // stroke\n'strokeDash', 'strokeDashOffset', // stroke dash\n'strokeForeground', 'strokeOffset', // group\n'startAngle', 'endAngle', 'innerRadius', 'outerRadius', // arc\n'cornerRadius', 'padAngle', // arc, rect\n'cornerRadiusTopLeft', 'cornerRadiusTopRight', // rect, group\n'cornerRadiusBottomLeft', 'cornerRadiusBottomRight', 'interpolate', 'tension', 'orient', 'defined', // area, line\n'url', 'aspect', 'smooth', // image\n'path', 'scaleX', 'scaleY', // path\n'x2', 'y2', // rule\n'size', 'shape', // symbol\n'text', 'angle', 'theta', 'radius', 'dir', 'dx', 'dy', // text\n'ellipsis', 'limit', 'lineBreak', 'lineHeight', 'font', 'fontSize', 'fontWeight', 'fontStyle', 'fontVariant', // font\n'description', 'aria', 'ariaRole', 'ariaRoleDescription' // aria\n];\nfunction sceneToJSON(scene, indent) {\n  return JSON.stringify(scene, keys, indent);\n}\nfunction sceneFromJSON(json) {\n  const scene = typeof json === 'string' ? JSON.parse(json) : json;\n  return initialize(scene);\n}\n\nfunction initialize(scene) {\n  var type = scene.marktype,\n      items = scene.items,\n      parent,\n      i,\n      n;\n\n  if (items) {\n    for (i = 0, n = items.length; i < n; ++i) {\n      parent = type ? 'mark' : 'group';\n      items[i][parent] = scene;\n      if (items[i].zindex) items[i][parent].zdirty = true;\n      if ('group' === (type || parent)) initialize(items[i]);\n    }\n  }\n\n  if (type) boundMark(scene);\n  return scene;\n}\n\nfunction Scenegraph(scene) {\n  if (arguments.length) {\n    this.root = sceneFromJSON(scene);\n  } else {\n    this.root = createMark({\n      marktype: 'group',\n      name: 'root',\n      role: 'frame'\n    });\n    this.root.items = [new GroupItem(this.root)];\n  }\n}\nScenegraph.prototype = {\n  toJSON(indent) {\n    return sceneToJSON(this.root, indent || 0);\n  },\n\n  mark(markdef, group, index) {\n    group = group || this.root.items[0];\n    const mark = createMark(markdef, group);\n    group.items[index] = mark;\n    if (mark.zindex) mark.group.zdirty = true;\n    return mark;\n  }\n\n};\n\nfunction createMark(def, group) {\n  const mark = {\n    bounds: new Bounds(),\n    clip: !!def.clip,\n    group: group,\n    interactive: def.interactive === false ? false : true,\n    items: [],\n    marktype: def.marktype,\n    name: def.name || undefined,\n    role: def.role || undefined,\n    zindex: def.zindex || 0\n  }; // add accessibility properties if defined\n\n  if (def.aria != null) {\n    mark.aria = def.aria;\n  }\n\n  if (def.description) {\n    mark.description = def.description;\n  }\n\n  return mark;\n}\n\n// create a new DOM element\nfunction domCreate(doc, tag, ns) {\n  if (!doc && typeof document !== 'undefined' && document.createElement) {\n    doc = document;\n  }\n\n  return doc ? ns ? doc.createElementNS(ns, tag) : doc.createElement(tag) : null;\n} // find first child element with matching tag\n\nfunction domFind(el, tag) {\n  tag = tag.toLowerCase();\n  var nodes = el.childNodes,\n      i = 0,\n      n = nodes.length;\n\n  for (; i < n; ++i) if (nodes[i].tagName.toLowerCase() === tag) {\n    return nodes[i];\n  }\n} // retrieve child element at given index\n// create & insert if doesn't exist or if tags do not match\n\nfunction domChild(el, index, tag, ns) {\n  var a = el.childNodes[index],\n      b;\n\n  if (!a || a.tagName.toLowerCase() !== tag.toLowerCase()) {\n    b = a || null;\n    a = domCreate(el.ownerDocument, tag, ns);\n    el.insertBefore(a, b);\n  }\n\n  return a;\n} // remove all child elements at or above the given index\n\nfunction domClear(el, index) {\n  var nodes = el.childNodes,\n      curr = nodes.length;\n\n  while (curr > index) el.removeChild(nodes[--curr]);\n\n  return el;\n} // generate css class name for mark\n\nfunction cssClass(mark) {\n  return 'mark-' + mark.marktype + (mark.role ? ' role-' + mark.role : '') + (mark.name ? ' ' + mark.name : '');\n}\n\nfunction point (event, el) {\n  const rect = el.getBoundingClientRect();\n  return [event.clientX - rect.left - (el.clientLeft || 0), event.clientY - rect.top - (el.clientTop || 0)];\n}\n\nfunction resolveItem (item, event, el, origin) {\n  var mark = item && item.mark,\n      mdef,\n      p;\n\n  if (mark && (mdef = Marks[mark.marktype]).tip) {\n    p = point(event, el);\n    p[0] -= origin[0];\n    p[1] -= origin[1];\n\n    while (item = item.mark.group) {\n      p[0] -= item.x || 0;\n      p[1] -= item.y || 0;\n    }\n\n    item = mdef.tip(mark.items, p);\n  }\n\n  return item;\n}\n\n/**\n * Create a new Handler instance.\n * @param {object} [customLoader] - Optional loader instance for\n *   href URL sanitization. If not specified, a standard loader\n *   instance will be generated.\n * @param {function} [customTooltip] - Optional tooltip handler\n *   function for custom tooltip display.\n * @constructor\n */\n\nfunction Handler(customLoader, customTooltip) {\n  this._active = null;\n  this._handlers = {};\n  this._loader = customLoader || Object(vega_loader__WEBPACK_IMPORTED_MODULE_4__[\"loader\"])();\n  this._tooltip = customTooltip || defaultTooltip;\n} // The default tooltip display handler.\n// Sets the HTML title attribute on the visualization container.\n\nfunction defaultTooltip(handler, event, item, value) {\n  handler.element().setAttribute('title', value || '');\n}\n\nHandler.prototype = {\n  /**\n   * Initialize a new Handler instance.\n   * @param {DOMElement} el - The containing DOM element for the display.\n   * @param {Array<number>} origin - The origin of the display, in pixels.\n   *   The coordinate system will be translated to this point.\n   * @param {object} [obj] - Optional context object that should serve as\n   *   the \"this\" context for event callbacks.\n   * @return {Handler} - This handler instance.\n   */\n  initialize(el, origin, obj) {\n    this._el = el;\n    this._obj = obj || null;\n    return this.origin(origin);\n  },\n\n  /**\n   * Returns the parent container element for a visualization.\n   * @return {DOMElement} - The containing DOM element.\n   */\n  element() {\n    return this._el;\n  },\n\n  /**\n   * Returns the scene element (e.g., canvas or SVG) of the visualization\n   * Subclasses must override if the first child is not the scene element.\n   * @return {DOMElement} - The scene (e.g., canvas or SVG) element.\n   */\n  canvas() {\n    return this._el && this._el.firstChild;\n  },\n\n  /**\n   * Get / set the origin coordinates of the visualization.\n   */\n  origin(origin) {\n    if (arguments.length) {\n      this._origin = origin || [0, 0];\n      return this;\n    } else {\n      return this._origin.slice();\n    }\n  },\n\n  /**\n   * Get / set the scenegraph root.\n   */\n  scene(scene) {\n    if (!arguments.length) return this._scene;\n    this._scene = scene;\n    return this;\n  },\n\n  /**\n   * Add an event handler. Subclasses should override this method.\n   */\n  on()\n  /*type, handler*/\n  {},\n\n  /**\n   * Remove an event handler. Subclasses should override this method.\n   */\n  off()\n  /*type, handler*/\n  {},\n\n  /**\n   * Utility method for finding the array index of an event handler.\n   * @param {Array} h - An array of registered event handlers.\n   * @param {string} type - The event type.\n   * @param {function} handler - The event handler instance to find.\n   * @return {number} - The handler's array index or -1 if not registered.\n   */\n  _handlerIndex(h, type, handler) {\n    for (let i = h ? h.length : 0; --i >= 0;) {\n      if (h[i].type === type && (!handler || h[i].handler === handler)) {\n        return i;\n      }\n    }\n\n    return -1;\n  },\n\n  /**\n   * Returns an array with registered event handlers.\n   * @param {string} [type] - The event type to query. Any annotations\n   *   are ignored; for example, for the argument \"click.foo\", \".foo\" will\n   *   be ignored and the method returns all \"click\" handlers. If type is\n   *   null or unspecified, this method returns handlers for all types.\n   * @return {Array} - A new array containing all registered event handlers.\n   */\n  handlers(type) {\n    const h = this._handlers,\n          a = [];\n\n    if (type) {\n      a.push(...h[this.eventName(type)]);\n    } else {\n      for (const k in h) {\n        a.push(...h[k]);\n      }\n    }\n\n    return a;\n  },\n\n  /**\n   * Parses an event name string to return the specific event type.\n   * For example, given \"click.foo\" returns \"click\"\n   * @param {string} name - The input event type string.\n   * @return {string} - A string with the event type only.\n   */\n  eventName(name) {\n    const i = name.indexOf('.');\n    return i < 0 ? name : name.slice(0, i);\n  },\n\n  /**\n   * Handle hyperlink navigation in response to an item.href value.\n   * @param {Event} event - The event triggering hyperlink navigation.\n   * @param {Item} item - The scenegraph item.\n   * @param {string} href - The URL to navigate to.\n   */\n  handleHref(event, item, href) {\n    this._loader.sanitize(href, {\n      context: 'href'\n    }).then(opt => {\n      const e = new MouseEvent(event.type, event),\n            a = domCreate(null, 'a');\n\n      for (const name in opt) a.setAttribute(name, opt[name]);\n\n      a.dispatchEvent(e);\n    }).catch(() => {\n      /* do nothing */\n    });\n  },\n\n  /**\n   * Handle tooltip display in response to an item.tooltip value.\n   * @param {Event} event - The event triggering tooltip display.\n   * @param {Item} item - The scenegraph item.\n   * @param {boolean} show - A boolean flag indicating whether\n   *   to show or hide a tooltip for the given item.\n   */\n  handleTooltip(event, item, show) {\n    if (item && item.tooltip != null) {\n      item = resolveItem(item, event, this.canvas(), this._origin);\n      const value = show && item && item.tooltip || null;\n\n      this._tooltip.call(this._obj, this, event, item, value);\n    }\n  },\n\n  /**\n   * Returns the size of a scenegraph item and its position relative\n   * to the viewport.\n   * @param {Item} item - The scenegraph item.\n   * @return {object} - A bounding box object (compatible with the\n   *   DOMRect type) consisting of x, y, width, heigh, top, left,\n   *   right, and bottom properties.\n   */\n  getItemBoundingClientRect(item) {\n    const el = this.canvas();\n    if (!el) return;\n    const rect = el.getBoundingClientRect(),\n          origin = this._origin,\n          bounds = item.bounds,\n          width = bounds.width(),\n          height = bounds.height();\n    let x = bounds.x1 + origin[0] + rect.left,\n        y = bounds.y1 + origin[1] + rect.top; // translate coordinate for each parent group\n\n    while (item.mark && (item = item.mark.group)) {\n      x += item.x || 0;\n      y += item.y || 0;\n    } // return DOMRect-compatible bounding box\n\n\n    return {\n      x,\n      y,\n      width,\n      height,\n      left: x,\n      top: y,\n      right: x + width,\n      bottom: y + height\n    };\n  }\n\n};\n\n/**\n * Create a new Renderer instance.\n * @param {object} [loader] - Optional loader instance for\n *   image and href URL sanitization. If not specified, a\n *   standard loader instance will be generated.\n * @constructor\n */\n\nfunction Renderer(loader) {\n  this._el = null;\n  this._bgcolor = null;\n  this._loader = new ResourceLoader(loader);\n}\nRenderer.prototype = {\n  /**\n   * Initialize a new Renderer instance.\n   * @param {DOMElement} el - The containing DOM element for the display.\n   * @param {number} width - The coordinate width of the display, in pixels.\n   * @param {number} height - The coordinate height of the display, in pixels.\n   * @param {Array<number>} origin - The origin of the display, in pixels.\n   *   The coordinate system will be translated to this point.\n   * @param {number} [scaleFactor=1] - Optional scaleFactor by which to multiply\n   *   the width and height to determine the final pixel size.\n   * @return {Renderer} - This renderer instance.\n   */\n  initialize(el, width, height, origin, scaleFactor) {\n    this._el = el;\n    return this.resize(width, height, origin, scaleFactor);\n  },\n\n  /**\n   * Returns the parent container element for a visualization.\n   * @return {DOMElement} - The containing DOM element.\n   */\n  element() {\n    return this._el;\n  },\n\n  /**\n   * Returns the scene element (e.g., canvas or SVG) of the visualization\n   * Subclasses must override if the first child is not the scene element.\n   * @return {DOMElement} - The scene (e.g., canvas or SVG) element.\n   */\n  canvas() {\n    return this._el && this._el.firstChild;\n  },\n\n  /**\n   * Get / set the background color.\n   */\n  background(bgcolor) {\n    if (arguments.length === 0) return this._bgcolor;\n    this._bgcolor = bgcolor;\n    return this;\n  },\n\n  /**\n   * Resize the display.\n   * @param {number} width - The new coordinate width of the display, in pixels.\n   * @param {number} height - The new coordinate height of the display, in pixels.\n   * @param {Array<number>} origin - The new origin of the display, in pixels.\n   *   The coordinate system will be translated to this point.\n   * @param {number} [scaleFactor=1] - Optional scaleFactor by which to multiply\n   *   the width and height to determine the final pixel size.\n   * @return {Renderer} - This renderer instance;\n   */\n  resize(width, height, origin, scaleFactor) {\n    this._width = width;\n    this._height = height;\n    this._origin = origin || [0, 0];\n    this._scale = scaleFactor || 1;\n    return this;\n  },\n\n  /**\n   * Report a dirty item whose bounds should be redrawn.\n   * This base class method does nothing. Subclasses that perform\n   * incremental should implement this method.\n   * @param {Item} item - The dirty item whose bounds should be redrawn.\n   */\n  dirty()\n  /*item*/\n  {},\n\n  /**\n   * Render an input scenegraph, potentially with a set of dirty items.\n   * This method will perform an immediate rendering with available resources.\n   * The renderer may also need to perform image loading to perform a complete\n   * render. This process can lead to asynchronous re-rendering of the scene\n   * after this method returns. To receive notification when rendering is\n   * complete, use the renderAsync method instead.\n   * @param {object} scene - The root mark of a scenegraph to render.\n   * @return {Renderer} - This renderer instance.\n   */\n  render(scene) {\n    const r = this; // bind arguments into a render call, and cache it\n    // this function may be subsequently called for async redraw\n\n    r._call = function () {\n      r._render(scene);\n    }; // invoke the renderer\n\n\n    r._call(); // clear the cached call for garbage collection\n    // async redraws will stash their own copy\n\n\n    r._call = null;\n    return r;\n  },\n\n  /**\n   * Internal rendering method. Renderer subclasses should override this\n   * method to actually perform rendering.\n   * @param {object} scene - The root mark of a scenegraph to render.\n   */\n  _render()\n  /*scene*/\n  {// subclasses to override\n  },\n\n  /**\n   * Asynchronous rendering method. Similar to render, but returns a Promise\n   * that resolves when all rendering is completed. Sometimes a renderer must\n   * perform image loading to get a complete rendering. The returned\n   * Promise will not resolve until this process completes.\n   * @param {object} scene - The root mark of a scenegraph to render.\n   * @return {Promise} - A Promise that resolves when rendering is complete.\n   */\n  renderAsync(scene) {\n    const r = this.render(scene);\n    return this._ready ? this._ready.then(() => r) : Promise.resolve(r);\n  },\n\n  /**\n   * Internal method for asynchronous resource loading.\n   * Proxies method calls to the ImageLoader, and tracks loading\n   * progress to invoke a re-render once complete.\n   * @param {string} method - The method name to invoke on the ImageLoader.\n   * @param {string} uri - The URI for the requested resource.\n   * @return {Promise} - A Promise that resolves to the requested resource.\n   */\n  _load(method, uri) {\n    var r = this,\n        p = r._loader[method](uri);\n\n    if (!r._ready) {\n      // re-render the scene when loading completes\n      const call = r._call;\n      r._ready = r._loader.ready().then(redraw => {\n        if (redraw) call();\n        r._ready = null;\n      });\n    }\n\n    return p;\n  },\n\n  /**\n   * Sanitize a URL to include as a hyperlink in the rendered scene.\n   * This method proxies a call to ImageLoader.sanitizeURL, but also tracks\n   * image loading progress and invokes a re-render once complete.\n   * @param {string} uri - The URI string to sanitize.\n   * @return {Promise} - A Promise that resolves to the sanitized URL.\n   */\n  sanitizeURL(uri) {\n    return this._load('sanitizeURL', uri);\n  },\n\n  /**\n   * Requests an image to include in the rendered scene.\n   * This method proxies a call to ImageLoader.loadImage, but also tracks\n   * image loading progress and invokes a re-render once complete.\n   * @param {string} uri - The URI string of the image.\n   * @return {Promise} - A Promise that resolves to the loaded Image.\n   */\n  loadImage(uri) {\n    return this._load('loadImage', uri);\n  }\n\n};\n\nconst KeyDownEvent = 'keydown';\nconst KeyPressEvent = 'keypress';\nconst KeyUpEvent = 'keyup';\nconst DragEnterEvent = 'dragenter';\nconst DragLeaveEvent = 'dragleave';\nconst DragOverEvent = 'dragover';\nconst MouseDownEvent = 'mousedown';\nconst MouseUpEvent = 'mouseup';\nconst MouseMoveEvent = 'mousemove';\nconst MouseOutEvent = 'mouseout';\nconst MouseOverEvent = 'mouseover';\nconst ClickEvent = 'click';\nconst DoubleClickEvent = 'dblclick';\nconst WheelEvent = 'wheel';\nconst MouseWheelEvent = 'mousewheel';\nconst TouchStartEvent = 'touchstart';\nconst TouchMoveEvent = 'touchmove';\nconst TouchEndEvent = 'touchend';\nconst Events = [KeyDownEvent, KeyPressEvent, KeyUpEvent, DragEnterEvent, DragLeaveEvent, DragOverEvent, MouseDownEvent, MouseUpEvent, MouseMoveEvent, MouseOutEvent, MouseOverEvent, ClickEvent, DoubleClickEvent, WheelEvent, MouseWheelEvent, TouchStartEvent, TouchMoveEvent, TouchEndEvent];\nconst TooltipShowEvent = MouseMoveEvent;\nconst TooltipHideEvent = MouseOutEvent;\nconst HrefEvent = ClickEvent;\n\nfunction CanvasHandler(loader, tooltip) {\n  Handler.call(this, loader, tooltip);\n  this._down = null;\n  this._touch = null;\n  this._first = true;\n  this._events = {};\n}\n\nconst eventBundle = type => type === TouchStartEvent || type === TouchMoveEvent || type === TouchEndEvent ? [TouchStartEvent, TouchMoveEvent, TouchEndEvent] : [type]; // lazily add listeners to the canvas as needed\n\n\nfunction eventListenerCheck(handler, type) {\n  eventBundle(type).forEach(_ => addEventListener(handler, _));\n}\n\nfunction addEventListener(handler, type) {\n  const canvas = handler.canvas();\n\n  if (canvas && !handler._events[type]) {\n    handler._events[type] = 1;\n    canvas.addEventListener(type, handler[type] ? evt => handler[type](evt) : evt => handler.fire(type, evt));\n  }\n}\n\nfunction move(moveEvent, overEvent, outEvent) {\n  return function (evt) {\n    const a = this._active,\n          p = this.pickEvent(evt);\n\n    if (p === a) {\n      // active item and picked item are the same\n      this.fire(moveEvent, evt); // fire move\n    } else {\n      // active item and picked item are different\n      if (!a || !a.exit) {\n        // fire out for prior active item\n        // suppress if active item was removed from scene\n        this.fire(outEvent, evt);\n      }\n\n      this._active = p; // set new active item\n\n      this.fire(overEvent, evt); // fire over for new active item\n\n      this.fire(moveEvent, evt); // fire move for new active item\n    }\n  };\n}\n\nfunction inactive(type) {\n  return function (evt) {\n    this.fire(type, evt);\n    this._active = null;\n  };\n}\n\nObject(vega_util__WEBPACK_IMPORTED_MODULE_0__[\"inherits\"])(CanvasHandler, Handler, {\n  initialize(el, origin, obj) {\n    this._canvas = el && domFind(el, 'canvas'); // add minimal events required for proper state management\n\n    [ClickEvent, MouseDownEvent, MouseMoveEvent, MouseOutEvent, DragLeaveEvent].forEach(type => eventListenerCheck(this, type));\n    return Handler.prototype.initialize.call(this, el, origin, obj);\n  },\n\n  // return the backing canvas instance\n  canvas() {\n    return this._canvas;\n  },\n\n  // retrieve the current canvas context\n  context() {\n    return this._canvas.getContext('2d');\n  },\n\n  // supported events\n  events: Events,\n\n  // to keep old versions of firefox happy\n  DOMMouseScroll(evt) {\n    this.fire(MouseWheelEvent, evt);\n  },\n\n  mousemove: move(MouseMoveEvent, MouseOverEvent, MouseOutEvent),\n  dragover: move(DragOverEvent, DragEnterEvent, DragLeaveEvent),\n  mouseout: inactive(MouseOutEvent),\n  dragleave: inactive(DragLeaveEvent),\n\n  mousedown(evt) {\n    this._down = this._active;\n    this.fire(MouseDownEvent, evt);\n  },\n\n  click(evt) {\n    if (this._down === this._active) {\n      this.fire(ClickEvent, evt);\n      this._down = null;\n    }\n  },\n\n  touchstart(evt) {\n    this._touch = this.pickEvent(evt.changedTouches[0]);\n\n    if (this._first) {\n      this._active = this._touch;\n      this._first = false;\n    }\n\n    this.fire(TouchStartEvent, evt, true);\n  },\n\n  touchmove(evt) {\n    this.fire(TouchMoveEvent, evt, true);\n  },\n\n  touchend(evt) {\n    this.fire(TouchEndEvent, evt, true);\n    this._touch = null;\n  },\n\n  // fire an event\n  fire(type, evt, touch) {\n    const a = touch ? this._touch : this._active,\n          h = this._handlers[type]; // set event type relative to scenegraph items\n\n    evt.vegaType = type; // handle hyperlinks and tooltips first\n\n    if (type === HrefEvent && a && a.href) {\n      this.handleHref(evt, a, a.href);\n    } else if (type === TooltipShowEvent || type === TooltipHideEvent) {\n      this.handleTooltip(evt, a, type !== TooltipHideEvent);\n    } // invoke all registered handlers\n\n\n    if (h) {\n      for (let i = 0, len = h.length; i < len; ++i) {\n        h[i].handler.call(this._obj, evt, a);\n      }\n    }\n  },\n\n  // add an event handler\n  on(type, handler) {\n    const name = this.eventName(type),\n          h = this._handlers,\n          i = this._handlerIndex(h[name], type, handler);\n\n    if (i < 0) {\n      eventListenerCheck(this, type);\n      (h[name] || (h[name] = [])).push({\n        type: type,\n        handler: handler\n      });\n    }\n\n    return this;\n  },\n\n  // remove an event handler\n  off(type, handler) {\n    const name = this.eventName(type),\n          h = this._handlers[name],\n          i = this._handlerIndex(h, type, handler);\n\n    if (i >= 0) {\n      h.splice(i, 1);\n    }\n\n    return this;\n  },\n\n  pickEvent(evt) {\n    const p = point(evt, this._canvas),\n          o = this._origin;\n    return this.pick(this._scene, p[0], p[1], p[0] - o[0], p[1] - o[1]);\n  },\n\n  // find the scenegraph item at the current mouse position\n  // x, y -- the absolute x, y mouse coordinates on the canvas element\n  // gx, gy -- the relative coordinates within the current group\n  pick(scene, x, y, gx, gy) {\n    const g = this.context(),\n          mark = Marks[scene.marktype];\n    return mark.pick.call(this, g, scene, x, y, gx, gy);\n  }\n\n});\n\nfunction devicePixelRatio() {\n  return typeof window !== 'undefined' ? window.devicePixelRatio || 1 : 1;\n}\n\nvar pixelRatio = devicePixelRatio();\nfunction resize (canvas, width, height, origin, scaleFactor, opt) {\n  const inDOM = typeof HTMLElement !== 'undefined' && canvas instanceof HTMLElement && canvas.parentNode != null,\n        context = canvas.getContext('2d'),\n        ratio = inDOM ? pixelRatio : scaleFactor;\n  canvas.width = width * ratio;\n  canvas.height = height * ratio;\n\n  for (const key in opt) {\n    context[key] = opt[key];\n  }\n\n  if (inDOM && ratio !== 1) {\n    canvas.style.width = width + 'px';\n    canvas.style.height = height + 'px';\n  }\n\n  context.pixelRatio = ratio;\n  context.setTransform(ratio, 0, 0, ratio, ratio * origin[0], ratio * origin[1]);\n  return canvas;\n}\n\nfunction CanvasRenderer(loader) {\n  Renderer.call(this, loader);\n  this._options = {};\n  this._redraw = false;\n  this._dirty = new Bounds();\n  this._tempb = new Bounds();\n}\nconst base$1 = Renderer.prototype;\n\nconst viewBounds = (origin, width, height) => new Bounds().set(0, 0, width, height).translate(-origin[0], -origin[1]);\n\nfunction clipToBounds(g, b, origin) {\n  // expand bounds by 1 pixel, then round to pixel boundaries\n  b.expand(1).round(); // align to base pixel grid in case of non-integer scaling (#2425)\n\n  if (g.pixelRatio % 1) {\n    b.scale(g.pixelRatio).round().scale(1 / g.pixelRatio);\n  } // to avoid artifacts translate if origin has fractional pixels\n\n\n  b.translate(-(origin[0] % 1), -(origin[1] % 1)); // set clip path\n\n  g.beginPath();\n  g.rect(b.x1, b.y1, b.width(), b.height());\n  g.clip();\n  return b;\n}\n\nObject(vega_util__WEBPACK_IMPORTED_MODULE_0__[\"inherits\"])(CanvasRenderer, Renderer, {\n  initialize(el, width, height, origin, scaleFactor, options) {\n    this._options = options || {};\n    this._canvas = this._options.externalContext ? null : Object(vega_canvas__WEBPACK_IMPORTED_MODULE_3__[\"canvas\"])(1, 1, this._options.type); // instantiate a small canvas\n\n    if (el && this._canvas) {\n      domClear(el, 0).appendChild(this._canvas);\n\n      this._canvas.setAttribute('class', 'marks');\n    } // this method will invoke resize to size the canvas appropriately\n\n\n    return base$1.initialize.call(this, el, width, height, origin, scaleFactor);\n  },\n\n  resize(width, height, origin, scaleFactor) {\n    base$1.resize.call(this, width, height, origin, scaleFactor);\n\n    if (this._canvas) {\n      // configure canvas size and transform\n      resize(this._canvas, this._width, this._height, this._origin, this._scale, this._options.context);\n    } else {\n      // external context needs to be scaled and positioned to origin\n      const ctx = this._options.externalContext;\n      if (!ctx) Object(vega_util__WEBPACK_IMPORTED_MODULE_0__[\"error\"])('CanvasRenderer is missing a valid canvas or context');\n      ctx.scale(this._scale, this._scale);\n      ctx.translate(this._origin[0], this._origin[1]);\n    }\n\n    this._redraw = true;\n    return this;\n  },\n\n  canvas() {\n    return this._canvas;\n  },\n\n  context() {\n    return this._options.externalContext || (this._canvas ? this._canvas.getContext('2d') : null);\n  },\n\n  dirty(item) {\n    const b = this._tempb.clear().union(item.bounds);\n\n    let g = item.mark.group;\n\n    while (g) {\n      b.translate(g.x || 0, g.y || 0);\n      g = g.mark.group;\n    }\n\n    this._dirty.union(b);\n  },\n\n  _render(scene) {\n    const g = this.context(),\n          o = this._origin,\n          w = this._width,\n          h = this._height,\n          db = this._dirty,\n          vb = viewBounds(o, w, h); // setup\n\n    g.save();\n    const b = this._redraw || db.empty() ? (this._redraw = false, vb.expand(1)) : clipToBounds(g, vb.intersect(db), o);\n    this.clear(-o[0], -o[1], w, h); // render\n\n    this.draw(g, scene, b); // takedown\n\n    g.restore();\n    db.clear();\n    return this;\n  },\n\n  draw(ctx, scene, bounds) {\n    const mark = Marks[scene.marktype];\n    if (scene.clip) clip(ctx, scene);\n    mark.draw.call(this, ctx, scene, bounds);\n    if (scene.clip) ctx.restore();\n  },\n\n  clear(x, y, w, h) {\n    const opt = this._options,\n          g = this.context();\n\n    if (opt.type !== 'pdf' && !opt.externalContext) {\n      // calling clear rect voids vector output in pdf mode\n      // and could remove external context content (#2615)\n      g.clearRect(x, y, w, h);\n    }\n\n    if (this._bgcolor != null) {\n      g.fillStyle = this._bgcolor;\n      g.fillRect(x, y, w, h);\n    }\n  }\n\n});\n\nfunction SVGHandler(loader, tooltip) {\n  Handler.call(this, loader, tooltip);\n  const h = this;\n  h._hrefHandler = listener(h, (evt, item) => {\n    if (item && item.href) h.handleHref(evt, item, item.href);\n  });\n  h._tooltipHandler = listener(h, (evt, item) => {\n    h.handleTooltip(evt, item, evt.type !== TooltipHideEvent);\n  });\n} // wrap an event listener for the SVG DOM\n\nconst listener = (context, handler) => evt => {\n  let item = evt.target.__data__;\n  item = Array.isArray(item) ? item[0] : item;\n  evt.vegaType = evt.type;\n  handler.call(context._obj, evt, item);\n};\n\nObject(vega_util__WEBPACK_IMPORTED_MODULE_0__[\"inherits\"])(SVGHandler, Handler, {\n  initialize(el, origin, obj) {\n    let svg = this._svg;\n\n    if (svg) {\n      svg.removeEventListener(HrefEvent, this._hrefHandler);\n      svg.removeEventListener(TooltipShowEvent, this._tooltipHandler);\n      svg.removeEventListener(TooltipHideEvent, this._tooltipHandler);\n    }\n\n    this._svg = svg = el && domFind(el, 'svg');\n\n    if (svg) {\n      svg.addEventListener(HrefEvent, this._hrefHandler);\n      svg.addEventListener(TooltipShowEvent, this._tooltipHandler);\n      svg.addEventListener(TooltipHideEvent, this._tooltipHandler);\n    }\n\n    return Handler.prototype.initialize.call(this, el, origin, obj);\n  },\n\n  canvas() {\n    return this._svg;\n  },\n\n  // add an event handler\n  on(type, handler) {\n    const name = this.eventName(type),\n          h = this._handlers,\n          i = this._handlerIndex(h[name], type, handler);\n\n    if (i < 0) {\n      const x = {\n        type,\n        handler,\n        listener: listener(this, handler)\n      };\n      (h[name] || (h[name] = [])).push(x);\n\n      if (this._svg) {\n        this._svg.addEventListener(name, x.listener);\n      }\n    }\n\n    return this;\n  },\n\n  // remove an event handler\n  off(type, handler) {\n    const name = this.eventName(type),\n          h = this._handlers[name],\n          i = this._handlerIndex(h, type, handler);\n\n    if (i >= 0) {\n      if (this._svg) {\n        this._svg.removeEventListener(name, h[i].listener);\n      }\n\n      h.splice(i, 1);\n    }\n\n    return this;\n  }\n\n});\n\nconst ARIA_HIDDEN = 'aria-hidden';\nconst ARIA_LABEL = 'aria-label';\nconst ARIA_ROLE = 'role';\nconst ARIA_ROLEDESCRIPTION = 'aria-roledescription';\nconst GRAPHICS_OBJECT = 'graphics-object';\nconst GRAPHICS_SYMBOL = 'graphics-symbol';\n\nconst bundle = (role, roledesc, label) => ({\n  [ARIA_ROLE]: role,\n  [ARIA_ROLEDESCRIPTION]: roledesc,\n  [ARIA_LABEL]: label || undefined\n}); // these roles are covered by related roles\n// we can ignore them, no need to generate attributes\n\n\nconst AriaIgnore = Object(vega_util__WEBPACK_IMPORTED_MODULE_0__[\"toSet\"])(['axis-domain', 'axis-grid', 'axis-label', 'axis-tick', 'axis-title', 'legend-band', 'legend-entry', 'legend-gradient', 'legend-label', 'legend-title', 'legend-symbol', 'title']); // aria attribute generators for guide roles\n\nconst AriaGuides = {\n  'axis': {\n    desc: 'axis',\n    caption: axisCaption\n  },\n  'legend': {\n    desc: 'legend',\n    caption: legendCaption\n  },\n  'title-text': {\n    desc: 'title',\n    caption: item => `Title text '${titleCaption(item)}'`\n  },\n  'title-subtitle': {\n    desc: 'subtitle',\n    caption: item => `Subtitle text '${titleCaption(item)}'`\n  }\n}; // aria properties generated for mark item encoding channels\n\nconst AriaEncode = {\n  ariaRole: ARIA_ROLE,\n  ariaRoleDescription: ARIA_ROLEDESCRIPTION,\n  description: ARIA_LABEL\n};\nfunction ariaItemAttributes(emit, item) {\n  const hide = item.aria === false;\n  emit(ARIA_HIDDEN, hide || undefined);\n\n  if (hide || item.description == null) {\n    for (const prop in AriaEncode) {\n      emit(AriaEncode[prop], undefined);\n    }\n  } else {\n    const type = item.mark.marktype;\n    emit(ARIA_LABEL, item.description);\n    emit(ARIA_ROLE, item.ariaRole || (type === 'group' ? GRAPHICS_OBJECT : GRAPHICS_SYMBOL));\n    emit(ARIA_ROLEDESCRIPTION, item.ariaRoleDescription || `${type} mark`);\n  }\n}\nfunction ariaMarkAttributes(mark) {\n  return mark.aria === false ? {\n    [ARIA_HIDDEN]: true\n  } : AriaIgnore[mark.role] ? null : AriaGuides[mark.role] ? ariaGuide(mark, AriaGuides[mark.role]) : ariaMark(mark);\n}\n\nfunction ariaMark(mark) {\n  const type = mark.marktype;\n  const recurse = type === 'group' || type === 'text' || mark.items.some(_ => _.description != null && _.aria !== false);\n  return bundle(recurse ? GRAPHICS_OBJECT : GRAPHICS_SYMBOL, `${type} mark container`, mark.description);\n}\n\nfunction ariaGuide(mark, opt) {\n  try {\n    const item = mark.items[0],\n          caption = opt.caption || (() => '');\n\n    return bundle(opt.role || GRAPHICS_SYMBOL, opt.desc, item.description || caption(item));\n  } catch (err) {\n    return null;\n  }\n}\n\nfunction titleCaption(item) {\n  return Object(vega_util__WEBPACK_IMPORTED_MODULE_0__[\"array\"])(item.text).join(' ');\n}\n\nfunction axisCaption(item) {\n  const datum = item.datum,\n        orient = item.orient,\n        title = datum.title ? extractTitle(item) : null,\n        ctx = item.context,\n        scale = ctx.scales[datum.scale].value,\n        locale = ctx.dataflow.locale(),\n        type = scale.type,\n        xy = orient === 'left' || orient === 'right' ? 'Y' : 'X';\n  return `${xy}-axis` + (title ? ` titled '${title}'` : '') + ` for a ${Object(vega_scale__WEBPACK_IMPORTED_MODULE_5__[\"isDiscrete\"])(type) ? 'discrete' : type} scale` + ` with ${Object(vega_scale__WEBPACK_IMPORTED_MODULE_5__[\"domainCaption\"])(locale, scale, item)}`;\n}\n\nfunction legendCaption(item) {\n  const datum = item.datum,\n        title = datum.title ? extractTitle(item) : null,\n        type = `${datum.type || ''} legend`.trim(),\n        scales = datum.scales,\n        props = Object.keys(scales),\n        ctx = item.context,\n        scale = ctx.scales[scales[props[0]]].value,\n        locale = ctx.dataflow.locale();\n  return capitalize(type) + (title ? ` titled '${title}'` : '') + ` for ${channelCaption(props)}` + ` with ${Object(vega_scale__WEBPACK_IMPORTED_MODULE_5__[\"domainCaption\"])(locale, scale, item)}`;\n}\n\nfunction extractTitle(item) {\n  try {\n    return Object(vega_util__WEBPACK_IMPORTED_MODULE_0__[\"array\"])(Object(vega_util__WEBPACK_IMPORTED_MODULE_0__[\"peek\"])(item.items).items[0].text).join(' ');\n  } catch (err) {\n    return null;\n  }\n}\n\nfunction channelCaption(props) {\n  props = props.map(p => p + (p === 'fill' || p === 'stroke' ? ' color' : ''));\n  return props.length < 2 ? props[0] : props.slice(0, -1).join(', ') + ' and ' + Object(vega_util__WEBPACK_IMPORTED_MODULE_0__[\"peek\"])(props);\n}\n\nfunction capitalize(s) {\n  return s.length ? s[0].toUpperCase() + s.slice(1) : s;\n}\n\nconst innerText = val => (val + '').replace(/&/g, '&amp;').replace(/</g, '&lt;').replace(/>/g, '&gt;');\n\nconst attrText = val => innerText(val).replace(/\"/g, '&quot;').replace(/\\t/g, '&#x9;').replace(/\\n/g, '&#xA;').replace(/\\r/g, '&#xD;');\n\nfunction markup() {\n  let buf = '',\n      outer = '',\n      inner = '';\n\n  const stack = [],\n        clear = () => outer = inner = '',\n        push = tag => {\n    if (outer) {\n      buf += `${outer}>${inner}`;\n      clear();\n    }\n\n    stack.push(tag);\n  },\n        attr = (name, value) => {\n    if (value != null) outer += ` ${name}=\"${attrText(value)}\"`;\n    return m;\n  },\n        m = {\n    open(tag, ...attrs) {\n      push(tag);\n      outer = '<' + tag;\n\n      for (const set of attrs) {\n        for (const key in set) attr(key, set[key]);\n      }\n\n      return m;\n    },\n\n    close() {\n      const tag = stack.pop();\n\n      if (outer) {\n        buf += outer + (inner ? `>${inner}</${tag}>` : '/>');\n      } else {\n        buf += `</${tag}>`;\n      }\n\n      clear();\n      return m;\n    },\n\n    attr,\n    text: t => (inner += innerText(t), m),\n    toString: () => buf\n  };\n\n  return m;\n}\nconst serializeXML = node => _serialize(markup(), node) + '';\n\nfunction _serialize(m, node) {\n  m.open(node.tagName);\n\n  if (node.hasAttributes()) {\n    const attrs = node.attributes,\n          n = attrs.length;\n\n    for (let i = 0; i < n; ++i) {\n      m.attr(attrs[i].name, attrs[i].value);\n    }\n  }\n\n  if (node.hasChildNodes()) {\n    const children = node.childNodes,\n          n = children.length;\n\n    for (let i = 0; i < n; i++) {\n      const child = children[i];\n      child.nodeType === 3 // text node\n      ? m.text(child.nodeValue) : _serialize(m, child);\n    }\n  }\n\n  return m.close();\n}\n\nconst styles = {\n  fill: 'fill',\n  fillOpacity: 'fill-opacity',\n  stroke: 'stroke',\n  strokeOpacity: 'stroke-opacity',\n  strokeWidth: 'stroke-width',\n  strokeCap: 'stroke-linecap',\n  strokeJoin: 'stroke-linejoin',\n  strokeDash: 'stroke-dasharray',\n  strokeDashOffset: 'stroke-dashoffset',\n  strokeMiterLimit: 'stroke-miterlimit',\n  opacity: 'opacity',\n  blend: 'mix-blend-mode'\n}; // ensure miter limit default is consistent with canvas (#2498)\n\nconst rootAttributes = {\n  'fill': 'none',\n  'stroke-miterlimit': 10\n};\n\nconst RootIndex = 0,\n      xmlns = 'http://www.w3.org/2000/xmlns/',\n      svgns = metadata.xmlns;\nfunction SVGRenderer(loader) {\n  Renderer.call(this, loader);\n  this._dirtyID = 0;\n  this._dirty = [];\n  this._svg = null;\n  this._root = null;\n  this._defs = null;\n}\nconst base = Renderer.prototype;\nObject(vega_util__WEBPACK_IMPORTED_MODULE_0__[\"inherits\"])(SVGRenderer, Renderer, {\n  /**\n   * Initialize a new SVGRenderer instance.\n   * @param {DOMElement} el - The containing DOM element for the display.\n   * @param {number} width - The coordinate width of the display, in pixels.\n   * @param {number} height - The coordinate height of the display, in pixels.\n   * @param {Array<number>} origin - The origin of the display, in pixels.\n   *   The coordinate system will be translated to this point.\n   * @param {number} [scaleFactor=1] - Optional scaleFactor by which to multiply\n   *   the width and height to determine the final pixel size.\n   * @return {SVGRenderer} - This renderer instance.\n   */\n  initialize(el, width, height, origin, scaleFactor) {\n    // create the svg definitions cache\n    this._defs = {};\n\n    this._clearDefs();\n\n    if (el) {\n      this._svg = domChild(el, 0, 'svg', svgns);\n\n      this._svg.setAttributeNS(xmlns, 'xmlns', svgns);\n\n      this._svg.setAttributeNS(xmlns, 'xmlns:xlink', metadata['xmlns:xlink']);\n\n      this._svg.setAttribute('version', metadata['version']);\n\n      this._svg.setAttribute('class', 'marks');\n\n      domClear(el, 1); // set the svg root group\n\n      this._root = domChild(this._svg, RootIndex, 'g', svgns);\n      setAttributes(this._root, rootAttributes); // ensure no additional child elements\n\n      domClear(this._svg, RootIndex + 1);\n    } // set background color if defined\n\n\n    this.background(this._bgcolor);\n    return base.initialize.call(this, el, width, height, origin, scaleFactor);\n  },\n\n  /**\n   * Get / set the background color.\n   */\n  background(bgcolor) {\n    if (arguments.length && this._svg) {\n      this._svg.style.setProperty('background-color', bgcolor);\n    }\n\n    return base.background.apply(this, arguments);\n  },\n\n  /**\n   * Resize the display.\n   * @param {number} width - The new coordinate width of the display, in pixels.\n   * @param {number} height - The new coordinate height of the display, in pixels.\n   * @param {Array<number>} origin - The new origin of the display, in pixels.\n   *   The coordinate system will be translated to this point.\n   * @param {number} [scaleFactor=1] - Optional scaleFactor by which to multiply\n   *   the width and height to determine the final pixel size.\n   * @return {SVGRenderer} - This renderer instance;\n   */\n  resize(width, height, origin, scaleFactor) {\n    base.resize.call(this, width, height, origin, scaleFactor);\n\n    if (this._svg) {\n      setAttributes(this._svg, {\n        width: this._width * this._scale,\n        height: this._height * this._scale,\n        viewBox: `0 0 ${this._width} ${this._height}`\n      });\n\n      this._root.setAttribute('transform', `translate(${this._origin})`);\n    }\n\n    this._dirty = [];\n    return this;\n  },\n\n  /**\n   * Returns the SVG element of the visualization.\n   * @return {DOMElement} - The SVG element.\n   */\n  canvas() {\n    return this._svg;\n  },\n\n  /**\n   * Returns an SVG text string for the rendered content,\n   * or null if this renderer is currently headless.\n   */\n  svg() {\n    const svg = this._svg,\n          bg = this._bgcolor;\n    if (!svg) return null;\n    let node;\n\n    if (bg) {\n      svg.removeAttribute('style');\n      node = domChild(svg, RootIndex, 'rect', svgns);\n      setAttributes(node, {\n        width: this._width,\n        height: this._height,\n        fill: bg\n      });\n    }\n\n    const text = serializeXML(svg);\n\n    if (bg) {\n      svg.removeChild(node);\n\n      this._svg.style.setProperty('background-color', bg);\n    }\n\n    return text;\n  },\n\n  /**\n   * Internal rendering method.\n   * @param {object} scene - The root mark of a scenegraph to render.\n   */\n  _render(scene) {\n    // perform spot updates and re-render markup\n    if (this._dirtyCheck()) {\n      if (this._dirtyAll) this._clearDefs();\n      this.mark(this._root, scene);\n      domClear(this._root, 1);\n    }\n\n    this.defs();\n    this._dirty = [];\n    ++this._dirtyID;\n    return this;\n  },\n\n  // -- Manage rendering of items marked as dirty --\n\n  /**\n   * Flag a mark item as dirty.\n   * @param {Item} item - The mark item.\n   */\n  dirty(item) {\n    if (item.dirty !== this._dirtyID) {\n      item.dirty = this._dirtyID;\n\n      this._dirty.push(item);\n    }\n  },\n\n  /**\n   * Check if a mark item is considered dirty.\n   * @param {Item} item - The mark item.\n   */\n  isDirty(item) {\n    return this._dirtyAll || !item._svg || item.dirty === this._dirtyID;\n  },\n\n  /**\n   * Internal method to check dirty status and, if possible,\n   * make targetted updates without a full rendering pass.\n   */\n  _dirtyCheck() {\n    this._dirtyAll = true;\n    const items = this._dirty;\n    if (!items.length || !this._dirtyID) return true;\n    const id = ++this._dirtyID;\n    let item, mark, type, mdef, i, n, o;\n\n    for (i = 0, n = items.length; i < n; ++i) {\n      item = items[i];\n      mark = item.mark;\n\n      if (mark.marktype !== type) {\n        // memoize mark instance lookup\n        type = mark.marktype;\n        mdef = Marks[type];\n      }\n\n      if (mark.zdirty && mark.dirty !== id) {\n        this._dirtyAll = false;\n        dirtyParents(item, id);\n        mark.items.forEach(i => {\n          i.dirty = id;\n        });\n      }\n\n      if (mark.zdirty) continue; // handle in standard drawing pass\n\n      if (item.exit) {\n        // EXIT\n        if (mdef.nested && mark.items.length) {\n          // if nested mark with remaining points, update instead\n          o = mark.items[0];\n          if (o._svg) this._update(mdef, o._svg, o);\n        } else if (item._svg) {\n          // otherwise remove from DOM\n          o = item._svg.parentNode;\n          if (o) o.removeChild(item._svg);\n        }\n\n        item._svg = null;\n        continue;\n      }\n\n      item = mdef.nested ? mark.items[0] : item;\n      if (item._update === id) continue; // already visited\n\n      if (!item._svg || !item._svg.ownerSVGElement) {\n        // ENTER\n        this._dirtyAll = false;\n        dirtyParents(item, id);\n      } else {\n        // IN-PLACE UPDATE\n        this._update(mdef, item._svg, item);\n      }\n\n      item._update = id;\n    }\n\n    return !this._dirtyAll;\n  },\n\n  // -- Construct & maintain scenegraph to SVG mapping ---\n\n  /**\n   * Render a set of mark items.\n   * @param {SVGElement} el - The parent element in the SVG tree.\n   * @param {object} scene - The mark parent to render.\n   * @param {SVGElement} prev - The previous sibling in the SVG tree.\n   */\n  mark(el, scene, prev) {\n    if (!this.isDirty(scene)) return scene._svg;\n    const svg = this._svg,\n          mdef = Marks[scene.marktype],\n          events = scene.interactive === false ? 'none' : null,\n          isGroup = mdef.tag === 'g';\n    let sibling = null,\n        i = 0;\n    const parent = bind(scene, el, prev, 'g', svg);\n    parent.setAttribute('class', cssClass(scene)); // apply aria attributes to parent container element\n\n    const aria = ariaMarkAttributes(scene);\n\n    for (const key in aria) setAttribute(parent, key, aria[key]);\n\n    if (!isGroup) {\n      setAttribute(parent, 'pointer-events', events);\n    }\n\n    setAttribute(parent, 'clip-path', scene.clip ? clip$1(this, scene, scene.group) : null);\n\n    const process = item => {\n      const dirty = this.isDirty(item),\n            node = bind(item, parent, sibling, mdef.tag, svg);\n\n      if (dirty) {\n        this._update(mdef, node, item);\n\n        if (isGroup) recurse(this, node, item);\n      }\n\n      sibling = node;\n      ++i;\n    };\n\n    if (mdef.nested) {\n      if (scene.items.length) process(scene.items[0]);\n    } else {\n      visit(scene, process);\n    }\n\n    domClear(parent, i);\n    return parent;\n  },\n\n  /**\n   * Update the attributes of an SVG element for a mark item.\n   * @param {object} mdef - The mark definition object\n   * @param {SVGElement} el - The SVG element.\n   * @param {Item} item - The mark item.\n   */\n  _update(mdef, el, item) {\n    // set dom element and values cache\n    // provides access to emit method\n    element = el;\n    values = el.__values__; // apply aria-specific properties\n\n    ariaItemAttributes(emit, item); // apply svg attributes\n\n    mdef.attr(emit, item, this); // some marks need special treatment\n\n    const extra = mark_extras[mdef.type];\n    if (extra) extra.call(this, mdef, el, item); // apply svg style attributes\n    // note: element state may have been modified by 'extra' method\n\n    if (element) this.style(element, item);\n  },\n\n  /**\n   * Update the presentation attributes of an SVG element for a mark item.\n   * @param {SVGElement} el - The SVG element.\n   * @param {Item} item - The mark item.\n   */\n  style(el, item) {\n    if (item == null) return;\n\n    for (const prop in styles) {\n      let value = prop === 'font' ? fontFamily(item) : item[prop];\n      if (value === values[prop]) continue;\n      const name = styles[prop];\n\n      if (value == null) {\n        el.removeAttribute(name);\n      } else {\n        if (isGradient(value)) {\n          value = gradientRef(value, this._defs.gradient, href());\n        }\n\n        el.setAttribute(name, value + '');\n      }\n\n      values[prop] = value;\n    }\n  },\n\n  /**\n   * Render SVG defs, as needed.\n   * Must be called *after* marks have been processed to ensure the\n   * collected state is current and accurate.\n   */\n  defs() {\n    const svg = this._svg,\n          defs = this._defs;\n    let el = defs.el,\n        index = 0;\n\n    for (const id in defs.gradient) {\n      if (!el) defs.el = el = domChild(svg, RootIndex + 1, 'defs', svgns);\n      index = updateGradient(el, defs.gradient[id], index);\n    }\n\n    for (const id in defs.clipping) {\n      if (!el) defs.el = el = domChild(svg, RootIndex + 1, 'defs', svgns);\n      index = updateClipping(el, defs.clipping[id], index);\n    } // clean-up\n\n\n    if (el) {\n      index === 0 ? (svg.removeChild(el), defs.el = null) : domClear(el, index);\n    }\n  },\n\n  /**\n   * Clear defs caches.\n   */\n  _clearDefs() {\n    const def = this._defs;\n    def.gradient = {};\n    def.clipping = {};\n  }\n\n}); // mark ancestor chain with a dirty id\n\nfunction dirtyParents(item, id) {\n  for (; item && item.dirty !== id; item = item.mark.group) {\n    item.dirty = id;\n\n    if (item.mark && item.mark.dirty !== id) {\n      item.mark.dirty = id;\n    } else return;\n  }\n} // update gradient definitions\n\n\nfunction updateGradient(el, grad, index) {\n  let i, n, stop;\n\n  if (grad.gradient === 'radial') {\n    // SVG radial gradients automatically transform to normalized bbox\n    // coordinates, in a way that is cumbersome to replicate in canvas.\n    // We wrap the radial gradient in a pattern element, allowing us to\n    // maintain a circular gradient that matches what canvas provides.\n    let pt = domChild(el, index++, 'pattern', svgns);\n    setAttributes(pt, {\n      id: patternPrefix + grad.id,\n      viewBox: '0,0,1,1',\n      width: '100%',\n      height: '100%',\n      preserveAspectRatio: 'xMidYMid slice'\n    });\n    pt = domChild(pt, 0, 'rect', svgns);\n    setAttributes(pt, {\n      width: 1,\n      height: 1,\n      fill: `url(${href()}#${grad.id})`\n    });\n    el = domChild(el, index++, 'radialGradient', svgns);\n    setAttributes(el, {\n      id: grad.id,\n      fx: grad.x1,\n      fy: grad.y1,\n      fr: grad.r1,\n      cx: grad.x2,\n      cy: grad.y2,\n      r: grad.r2\n    });\n  } else {\n    el = domChild(el, index++, 'linearGradient', svgns);\n    setAttributes(el, {\n      id: grad.id,\n      x1: grad.x1,\n      x2: grad.x2,\n      y1: grad.y1,\n      y2: grad.y2\n    });\n  }\n\n  for (i = 0, n = grad.stops.length; i < n; ++i) {\n    stop = domChild(el, i, 'stop', svgns);\n    stop.setAttribute('offset', grad.stops[i].offset);\n    stop.setAttribute('stop-color', grad.stops[i].color);\n  }\n\n  domClear(el, i);\n  return index;\n} // update clipping path definitions\n\n\nfunction updateClipping(el, clip, index) {\n  let mask;\n  el = domChild(el, index, 'clipPath', svgns);\n  el.setAttribute('id', clip.id);\n\n  if (clip.path) {\n    mask = domChild(el, 0, 'path', svgns);\n    mask.setAttribute('d', clip.path);\n  } else {\n    mask = domChild(el, 0, 'rect', svgns);\n    setAttributes(mask, {\n      x: 0,\n      y: 0,\n      width: clip.width,\n      height: clip.height\n    });\n  }\n\n  domClear(el, 1);\n  return index + 1;\n} // Recursively process group contents.\n\n\nfunction recurse(renderer, el, group) {\n  el = el.lastChild.previousSibling;\n  let prev,\n      idx = 0;\n  visit(group, item => {\n    prev = renderer.mark(el, item, prev);\n    ++idx;\n  }); // remove any extraneous DOM elements\n\n  domClear(el, 1 + idx);\n} // Bind a scenegraph item to an SVG DOM element.\n// Create new SVG elements as needed.\n\n\nfunction bind(item, el, sibling, tag, svg) {\n  let node = item._svg,\n      doc; // create a new dom node if needed\n\n  if (!node) {\n    doc = el.ownerDocument;\n    node = domCreate(doc, tag, svgns);\n    item._svg = node;\n\n    if (item.mark) {\n      node.__data__ = item;\n      node.__values__ = {\n        fill: 'default'\n      }; // if group, create background, content, and foreground elements\n\n      if (tag === 'g') {\n        const bg = domCreate(doc, 'path', svgns);\n        node.appendChild(bg);\n        bg.__data__ = item;\n        const cg = domCreate(doc, 'g', svgns);\n        node.appendChild(cg);\n        cg.__data__ = item;\n        const fg = domCreate(doc, 'path', svgns);\n        node.appendChild(fg);\n        fg.__data__ = item;\n        fg.__values__ = {\n          fill: 'default'\n        };\n      }\n    }\n  } // (re-)insert if (a) not contained in SVG or (b) sibling order has changed\n\n\n  if (node.ownerSVGElement !== svg || siblingCheck(node, sibling)) {\n    el.insertBefore(node, sibling ? sibling.nextSibling : el.firstChild);\n  }\n\n  return node;\n} // check if two nodes are ordered siblings\n\n\nfunction siblingCheck(node, sibling) {\n  return node.parentNode && node.parentNode.childNodes.length > 1 && node.previousSibling != sibling; // treat null/undefined the same\n} // -- Set attributes & styles on SVG elements ---\n\n\nlet element = null,\n    // temp var for current SVG element\nvalues = null; // temp var for current values hash\n// Extra configuration for certain mark types\n\nconst mark_extras = {\n  group(mdef, el, item) {\n    const fg = element = el.childNodes[2];\n    values = fg.__values__;\n    mdef.foreground(emit, item, this);\n    values = el.__values__; // use parent's values hash\n\n    element = el.childNodes[1];\n    mdef.content(emit, item, this);\n    const bg = element = el.childNodes[0];\n    mdef.background(emit, item, this);\n    const value = item.mark.interactive === false ? 'none' : null;\n\n    if (value !== values.events) {\n      setAttribute(fg, 'pointer-events', value);\n      setAttribute(bg, 'pointer-events', value);\n      values.events = value;\n    }\n\n    if (item.strokeForeground && item.stroke) {\n      const fill = item.fill;\n      setAttribute(fg, 'display', null); // set style of background\n\n      this.style(bg, item);\n      setAttribute(bg, 'stroke', null); // set style of foreground\n\n      if (fill) item.fill = null;\n      values = fg.__values__;\n      this.style(fg, item);\n      if (fill) item.fill = fill; // leave element null to prevent downstream styling\n\n      element = null;\n    } else {\n      // ensure foreground is ignored\n      setAttribute(fg, 'display', 'none');\n    }\n  },\n\n  image(mdef, el, item) {\n    if (item.smooth === false) {\n      setStyle(el, 'image-rendering', 'optimizeSpeed');\n      setStyle(el, 'image-rendering', 'pixelated');\n    } else {\n      setStyle(el, 'image-rendering', null);\n    }\n  },\n\n  text(mdef, el, item) {\n    const tl = textLines(item);\n    let key, value, doc, lh;\n\n    if (Object(vega_util__WEBPACK_IMPORTED_MODULE_0__[\"isArray\"])(tl)) {\n      // multi-line text\n      value = tl.map(_ => textValue(item, _));\n      key = value.join('\\n'); // content cache key\n\n      if (key !== values.text) {\n        domClear(el, 0);\n        doc = el.ownerDocument;\n        lh = lineHeight(item);\n        value.forEach((t, i) => {\n          const ts = domCreate(doc, 'tspan', svgns);\n          ts.__data__ = item; // data binding\n\n          ts.textContent = t;\n\n          if (i) {\n            ts.setAttribute('x', 0);\n            ts.setAttribute('dy', lh);\n          }\n\n          el.appendChild(ts);\n        });\n        values.text = key;\n      }\n    } else {\n      // single-line text\n      value = textValue(item, tl);\n\n      if (value !== values.text) {\n        el.textContent = value;\n        values.text = value;\n      }\n    }\n\n    setAttribute(el, 'font-family', fontFamily(item));\n    setAttribute(el, 'font-size', fontSize(item) + 'px');\n    setAttribute(el, 'font-style', item.fontStyle);\n    setAttribute(el, 'font-variant', item.fontVariant);\n    setAttribute(el, 'font-weight', item.fontWeight);\n  }\n\n};\n\nfunction emit(name, value, ns) {\n  // early exit if value is unchanged\n  if (value === values[name]) return; // use appropriate method given namespace (ns)\n\n  if (ns) {\n    setAttributeNS(element, name, value, ns);\n  } else {\n    setAttribute(element, name, value);\n  } // note current value for future comparison\n\n\n  values[name] = value;\n}\n\nfunction setStyle(el, name, value) {\n  if (value !== values[name]) {\n    if (value == null) {\n      el.style.removeProperty(name);\n    } else {\n      el.style.setProperty(name, value + '');\n    }\n\n    values[name] = value;\n  }\n}\n\nfunction setAttributes(el, attrs) {\n  for (const key in attrs) {\n    setAttribute(el, key, attrs[key]);\n  }\n}\n\nfunction setAttribute(el, name, value) {\n  if (value != null) {\n    // if value is provided, update DOM attribute\n    el.setAttribute(name, value);\n  } else {\n    // else remove DOM attribute\n    el.removeAttribute(name);\n  }\n}\n\nfunction setAttributeNS(el, name, value, ns) {\n  if (value != null) {\n    // if value is provided, update DOM attribute\n    el.setAttributeNS(ns, name, value);\n  } else {\n    // else remove DOM attribute\n    el.removeAttributeNS(ns, name);\n  }\n}\n\nfunction href() {\n  let loc;\n  return typeof window === 'undefined' ? '' : (loc = window.location).hash ? loc.href.slice(0, -loc.hash.length) : loc.href;\n}\n\nfunction SVGStringRenderer(loader) {\n  Renderer.call(this, loader);\n  this._text = null;\n  this._defs = {\n    gradient: {},\n    clipping: {}\n  };\n}\nObject(vega_util__WEBPACK_IMPORTED_MODULE_0__[\"inherits\"])(SVGStringRenderer, Renderer, {\n  /**\n   * Returns the rendered SVG text string,\n   * or null if rendering has not yet occurred.\n   */\n  svg() {\n    return this._text;\n  },\n\n  /**\n   * Internal rendering method.\n   * @param {object} scene - The root mark of a scenegraph to render.\n   */\n  _render(scene) {\n    const m = markup(); // svg tag\n\n    m.open('svg', Object(vega_util__WEBPACK_IMPORTED_MODULE_0__[\"extend\"])({}, metadata, {\n      class: 'marks',\n      width: this._width * this._scale,\n      height: this._height * this._scale,\n      viewBox: `0 0 ${this._width} ${this._height}`\n    })); // background, if defined\n\n    const bg = this._bgcolor;\n\n    if (bg && bg !== 'transparent' && bg !== 'none') {\n      m.open('rect', {\n        width: this._width,\n        height: this._height,\n        fill: bg\n      }).close();\n    } // root content group\n\n\n    m.open('g', rootAttributes, {\n      transform: 'translate(' + this._origin + ')'\n    });\n    this.mark(m, scene);\n    m.close(); // </g>\n    // defs\n\n    this.defs(m); // get SVG text string\n\n    this._text = m.close() + '';\n    return this;\n  },\n\n  /**\n   * Render a set of mark items.\n   * @param {object} m - The markup context.\n   * @param {object} scene - The mark parent to render.\n   */\n  mark(m, scene) {\n    const mdef = Marks[scene.marktype],\n          tag = mdef.tag,\n          attrList = [ariaItemAttributes, mdef.attr]; // render opening group tag\n\n    m.open('g', {\n      'class': cssClass(scene),\n      'clip-path': scene.clip ? clip$1(this, scene, scene.group) : null\n    }, ariaMarkAttributes(scene), {\n      'pointer-events': tag !== 'g' && scene.interactive === false ? 'none' : null\n    }); // render contained elements\n\n    const process = item => {\n      const href = this.href(item);\n      if (href) m.open('a', href);\n      m.open(tag, this.attr(scene, item, attrList, tag !== 'g' ? tag : null));\n\n      if (tag === 'text') {\n        const tl = textLines(item);\n\n        if (Object(vega_util__WEBPACK_IMPORTED_MODULE_0__[\"isArray\"])(tl)) {\n          // multi-line text\n          const attrs = {\n            x: 0,\n            dy: lineHeight(item)\n          };\n\n          for (let i = 0; i < tl.length; ++i) {\n            m.open('tspan', i ? attrs : null).text(textValue(item, tl[i])).close();\n          }\n        } else {\n          // single-line text\n          m.text(textValue(item, tl));\n        }\n      } else if (tag === 'g') {\n        const fore = item.strokeForeground,\n              fill = item.fill,\n              stroke = item.stroke;\n\n        if (fore && stroke) {\n          item.stroke = null;\n        }\n\n        m.open('path', this.attr(scene, item, mdef.background, 'bgrect')).close(); // recurse for group content\n\n        m.open('g', this.attr(scene, item, mdef.content));\n        visit(item, scene => this.mark(m, scene));\n        m.close();\n\n        if (fore && stroke) {\n          if (fill) item.fill = null;\n          item.stroke = stroke;\n          m.open('path', this.attr(scene, item, mdef.foreground, 'bgrect')).close();\n          if (fill) item.fill = fill;\n        } else {\n          m.open('path', this.attr(scene, item, mdef.foreground, 'bgfore')).close();\n        }\n      }\n\n      m.close(); // </tag>\n\n      if (href) m.close(); // </a>\n    };\n\n    if (mdef.nested) {\n      if (scene.items && scene.items.length) process(scene.items[0]);\n    } else {\n      visit(scene, process);\n    } // render closing group tag\n\n\n    return m.close(); // </g>\n  },\n\n  /**\n   * Get href attributes for a hyperlinked mark item.\n   * @param {Item} item - The mark item.\n   */\n  href(item) {\n    const href = item.href;\n    let attr;\n\n    if (href) {\n      if (attr = this._hrefs && this._hrefs[href]) {\n        return attr;\n      } else {\n        this.sanitizeURL(href).then(attr => {\n          // rewrite to use xlink namespace\n          attr['xlink:href'] = attr.href;\n          attr.href = null;\n          (this._hrefs || (this._hrefs = {}))[href] = attr;\n        });\n      }\n    }\n\n    return null;\n  },\n\n  /**\n   * Get an object of SVG attributes for a mark item.\n   * @param {object} scene - The mark parent.\n   * @param {Item} item - The mark item.\n   * @param {array|function} attrs - One or more attribute emitters.\n   * @param {string} tag - The tag being rendered.\n   */\n  attr(scene, item, attrs, tag) {\n    const object = {},\n          emit = (name, value, ns, prefixed) => {\n      object[prefixed || name] = value;\n    }; // apply mark specific attributes\n\n\n    if (Array.isArray(attrs)) {\n      attrs.forEach(fn => fn(emit, item, this));\n    } else {\n      attrs(emit, item, this);\n    } // apply style attributes\n\n\n    if (tag) {\n      style(object, item, scene, tag, this._defs);\n    }\n\n    return object;\n  },\n\n  /**\n   * Render SVG defs, as needed.\n   * Must be called *after* marks have been processed to ensure the\n   * collected state is current and accurate.\n   * @param {object} m - The markup context.\n   */\n  defs(m) {\n    const gradient = this._defs.gradient,\n          clipping = this._defs.clipping,\n          count = Object.keys(gradient).length + Object.keys(clipping).length;\n    if (count === 0) return; // nothing to do\n\n    m.open('defs');\n\n    for (const id in gradient) {\n      const def = gradient[id],\n            stops = def.stops;\n\n      if (def.gradient === 'radial') {\n        // SVG radial gradients automatically transform to normalized bbox\n        // coordinates, in a way that is cumbersome to replicate in canvas.\n        // We wrap the radial gradient in a pattern element, allowing us to\n        // maintain a circular gradient that matches what canvas provides.\n        m.open('pattern', {\n          id: patternPrefix + id,\n          viewBox: '0,0,1,1',\n          width: '100%',\n          height: '100%',\n          preserveAspectRatio: 'xMidYMid slice'\n        });\n        m.open('rect', {\n          width: '1',\n          height: '1',\n          fill: 'url(#' + id + ')'\n        }).close();\n        m.close(); // </pattern>\n\n        m.open('radialGradient', {\n          id: id,\n          fx: def.x1,\n          fy: def.y1,\n          fr: def.r1,\n          cx: def.x2,\n          cy: def.y2,\n          r: def.r2\n        });\n      } else {\n        m.open('linearGradient', {\n          id: id,\n          x1: def.x1,\n          x2: def.x2,\n          y1: def.y1,\n          y2: def.y2\n        });\n      }\n\n      for (let i = 0; i < stops.length; ++i) {\n        m.open('stop', {\n          offset: stops[i].offset,\n          'stop-color': stops[i].color\n        }).close();\n      }\n\n      m.close();\n    }\n\n    for (const id in clipping) {\n      const def = clipping[id];\n      m.open('clipPath', {\n        id: id\n      });\n\n      if (def.path) {\n        m.open('path', {\n          d: def.path\n        }).close();\n      } else {\n        m.open('rect', {\n          x: 0,\n          y: 0,\n          width: def.width,\n          height: def.height\n        }).close();\n      }\n\n      m.close();\n    }\n\n    m.close();\n  }\n\n}); // Helper function for attr for style presentation attributes\n\nfunction style(s, item, scene, tag, defs) {\n  if (item == null) return s;\n\n  if (tag === 'bgrect' && scene.interactive === false) {\n    s['pointer-events'] = 'none';\n  }\n\n  if (tag === 'bgfore') {\n    if (scene.interactive === false) {\n      s['pointer-events'] = 'none';\n    }\n\n    s.display = 'none';\n    if (item.fill !== null) return s;\n  }\n\n  if (tag === 'image' && item.smooth === false) {\n    s.style = 'image-rendering: optimizeSpeed; image-rendering: pixelated;';\n  }\n\n  if (tag === 'text') {\n    s['font-family'] = fontFamily(item);\n    s['font-size'] = fontSize(item) + 'px';\n    s['font-style'] = item.fontStyle;\n    s['font-variant'] = item.fontVariant;\n    s['font-weight'] = item.fontWeight;\n  }\n\n  for (const prop in styles) {\n    let value = item[prop];\n    const name = styles[prop];\n\n    if (value === 'transparent' && (name === 'fill' || name === 'stroke')) ; else if (value != null) {\n      if (isGradient(value)) {\n        value = gradientRef(value, defs.gradient, '');\n      }\n\n      s[name] = value;\n    }\n  }\n\n  return s;\n}\n\nconst Canvas = 'canvas';\nconst PNG = 'png';\nconst SVG = 'svg';\nconst None = 'none';\nconst RenderType = {\n  Canvas: Canvas,\n  PNG: PNG,\n  SVG: SVG,\n  None: None\n};\nconst modules = {};\nmodules[Canvas] = modules[PNG] = {\n  renderer: CanvasRenderer,\n  headless: CanvasRenderer,\n  handler: CanvasHandler\n};\nmodules[SVG] = {\n  renderer: SVGRenderer,\n  headless: SVGStringRenderer,\n  handler: SVGHandler\n};\nmodules[None] = {};\nfunction renderModule(name, _) {\n  name = String(name || '').toLowerCase();\n\n  if (arguments.length > 1) {\n    modules[name] = _;\n    return this;\n  } else {\n    return modules[name];\n  }\n}\n\nfunction intersect(scene, bounds, filter) {\n  const hits = [],\n        // intersection results\n  box = new Bounds().union(bounds),\n        // defensive copy\n  type = scene.marktype;\n  return type ? intersectMark(scene, box, filter, hits) : type === 'group' ? intersectGroup(scene, box, filter, hits) : Object(vega_util__WEBPACK_IMPORTED_MODULE_0__[\"error\"])('Intersect scene must be mark node or group item.');\n}\n\nfunction intersectMark(mark, box, filter, hits) {\n  if (visitMark(mark, box, filter)) {\n    const items = mark.items,\n          type = mark.marktype,\n          n = items.length;\n    let i = 0;\n\n    if (type === 'group') {\n      for (; i < n; ++i) {\n        intersectGroup(items[i], box, filter, hits);\n      }\n    } else {\n      for (const test = Marks[type].isect; i < n; ++i) {\n        const item = items[i];\n        if (intersectItem(item, box, test)) hits.push(item);\n      }\n    }\n  }\n\n  return hits;\n}\n\nfunction visitMark(mark, box, filter) {\n  // process if bounds intersect and if\n  // (1) mark is a group mark (so we must recurse), or\n  // (2) mark is interactive and passes filter\n  return mark.bounds && box.intersects(mark.bounds) && (mark.marktype === 'group' || mark.interactive !== false && (!filter || filter(mark)));\n}\n\nfunction intersectGroup(group, box, filter, hits) {\n  // test intersect against group\n  // skip groups by default unless filter says otherwise\n  if (filter && filter(group.mark) && intersectItem(group, box, Marks.group.isect)) {\n    hits.push(group);\n  } // recursively test children marks\n  // translate box to group coordinate space\n\n\n  const marks = group.items,\n        n = marks && marks.length;\n\n  if (n) {\n    const x = group.x || 0,\n          y = group.y || 0;\n    box.translate(-x, -y);\n\n    for (let i = 0; i < n; ++i) {\n      intersectMark(marks[i], box, filter, hits);\n    }\n\n    box.translate(x, y);\n  }\n\n  return hits;\n}\n\nfunction intersectItem(item, box, test) {\n  // test bounds enclosure, bounds intersection, then detailed test\n  const bounds = item.bounds;\n  return box.encloses(bounds) || box.intersects(bounds) && test(item, box);\n}\n\nconst clipBounds = new Bounds();\nfunction boundClip (mark) {\n  const clip = mark.clip;\n\n  if (Object(vega_util__WEBPACK_IMPORTED_MODULE_0__[\"isFunction\"])(clip)) {\n    clip(boundContext(clipBounds.clear()));\n  } else if (clip) {\n    clipBounds.set(0, 0, mark.group.width, mark.group.height);\n  } else return;\n\n  mark.bounds.intersect(clipBounds);\n}\n\nconst TOLERANCE = 1e-9;\nfunction sceneEqual(a, b, key) {\n  return a === b ? true : key === 'path' ? pathEqual(a, b) : a instanceof Date && b instanceof Date ? +a === +b : Object(vega_util__WEBPACK_IMPORTED_MODULE_0__[\"isNumber\"])(a) && Object(vega_util__WEBPACK_IMPORTED_MODULE_0__[\"isNumber\"])(b) ? Math.abs(a - b) <= TOLERANCE : !a || !b || !Object(vega_util__WEBPACK_IMPORTED_MODULE_0__[\"isObject\"])(a) && !Object(vega_util__WEBPACK_IMPORTED_MODULE_0__[\"isObject\"])(b) ? a == b : objectEqual(a, b);\n}\nfunction pathEqual(a, b) {\n  return sceneEqual(pathParse(a), pathParse(b));\n}\n\nfunction objectEqual(a, b) {\n  var ka = Object.keys(a),\n      kb = Object.keys(b),\n      key,\n      i;\n  if (ka.length !== kb.length) return false;\n  ka.sort();\n  kb.sort();\n\n  for (i = ka.length - 1; i >= 0; i--) {\n    if (ka[i] != kb[i]) return false;\n  }\n\n  for (i = ka.length - 1; i >= 0; i--) {\n    key = ka[i];\n    if (!sceneEqual(a[key], b[key], key)) return false;\n  }\n\n  return typeof a === typeof b;\n}\n\nfunction resetSVGDefIds() {\n  resetSVGClipId();\n  resetSVGGradientId();\n}\n\n\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,[encoded data, 222144 characters]\n//# sourceURL=webpack-internal:///./node_modules/vega-functions/node_modules/vega-scenegraph/build/vega-scenegraph.module.js\n");

/***/ }),

/***/ "./node_modules/vega-functions/node_modules/vega-util/build/vega-util.module.js":
/*!**************************************************************************************!*\
  !*** ./node_modules/vega-functions/node_modules/vega-util/build/vega-util.module.js ***!
  \**************************************************************************************/
/*! exports provided: Debug, Error, Info, None, Warn, accessor, accessorFields, accessorName, array, ascending, clampRange, compare, constant, debounce, error, extend, extent, extentIndex, falsy, fastmap, field, flush, hasOwnProperty, id, identity, inherits, inrange, isArray, isBoolean, isDate, isFunction, isIterable, isNumber, isObject, isRegExp, isString, key, lerp, logger, lruCache, merge, mergeConfig, one, pad, panLinear, panLog, panPow, panSymlog, peek, quarter, repeat, span, splitAccessPath, stringValue, toBoolean, toDate, toNumber, toSet, toString, truncate, truthy, utcquarter, visitArray, writeConfig, zero, zoomLinear, zoomLog, zoomPow, zoomSymlog */
/***/ (function(module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"Debug\", function() { return Debug; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"Error\", function() { return Error$1; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"Info\", function() { return Info; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"None\", function() { return None; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"Warn\", function() { return Warn; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"accessor\", function() { return accessor; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"accessorFields\", function() { return accessorFields; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"accessorName\", function() { return accessorName; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"array\", function() { return array; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"ascending\", function() { return ascending; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"clampRange\", function() { return clampRange; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"compare\", function() { return compare; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"constant\", function() { return constant; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"debounce\", function() { return debounce; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"error\", function() { return error; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"extend\", function() { return extend; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"extent\", function() { return extent; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"extentIndex\", function() { return extentIndex; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"falsy\", function() { return falsy; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"fastmap\", function() { return fastmap; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"field\", function() { return field; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"flush\", function() { return flush; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"hasOwnProperty\", function() { return has; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"id\", function() { return id; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"identity\", function() { return identity; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"inherits\", function() { return inherits; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"inrange\", function() { return inrange; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"isArray\", function() { return isArray; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"isBoolean\", function() { return isBoolean; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"isDate\", function() { return isDate; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"isFunction\", function() { return isFunction; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"isIterable\", function() { return isIterable; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"isNumber\", function() { return isNumber; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"isObject\", function() { return isObject; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"isRegExp\", function() { return isRegExp; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"isString\", function() { return isString; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"key\", function() { return key; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"lerp\", function() { return lerp; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"logger\", function() { return logger; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"lruCache\", function() { return lruCache; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"merge\", function() { return merge; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"mergeConfig\", function() { return mergeConfig; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"one\", function() { return one; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"pad\", function() { return pad; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"panLinear\", function() { return panLinear; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"panLog\", function() { return panLog; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"panPow\", function() { return panPow; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"panSymlog\", function() { return panSymlog; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"peek\", function() { return peek; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"quarter\", function() { return quarter; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"repeat\", function() { return repeat; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"span\", function() { return span; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"splitAccessPath\", function() { return splitAccessPath; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"stringValue\", function() { return $; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"toBoolean\", function() { return toBoolean; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"toDate\", function() { return toDate; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"toNumber\", function() { return toNumber; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"toSet\", function() { return toSet; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"toString\", function() { return toString; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"truncate\", function() { return truncate; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"truthy\", function() { return truthy; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"utcquarter\", function() { return utcquarter; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"visitArray\", function() { return visitArray; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"writeConfig\", function() { return writeConfig; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"zero\", function() { return zero; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"zoomLinear\", function() { return zoomLinear; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"zoomLog\", function() { return zoomLog; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"zoomPow\", function() { return zoomPow; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"zoomSymlog\", function() { return zoomSymlog; });\nfunction accessor (fn, fields, name) {\n  fn.fields = fields || [];\n  fn.fname = name;\n  return fn;\n}\nfunction accessorName(fn) {\n  return fn == null ? null : fn.fname;\n}\nfunction accessorFields(fn) {\n  return fn == null ? null : fn.fields;\n}\n\nfunction getter (path) {\n  return path.length === 1 ? get1(path[0]) : getN(path);\n}\n\nconst get1 = field => function (obj) {\n  return obj[field];\n};\n\nconst getN = path => {\n  const len = path.length;\n  return function (obj) {\n    for (let i = 0; i < len; ++i) {\n      obj = obj[path[i]];\n    }\n\n    return obj;\n  };\n};\n\nfunction error (message) {\n  throw Error(message);\n}\n\nfunction splitAccessPath (p) {\n  const path = [],\n        n = p.length;\n  let q = null,\n      b = 0,\n      s = '',\n      i,\n      j,\n      c;\n  p = p + '';\n\n  function push() {\n    path.push(s + p.substring(i, j));\n    s = '';\n    i = j + 1;\n  }\n\n  for (i = j = 0; j < n; ++j) {\n    c = p[j];\n\n    if (c === '\\\\') {\n      s += p.substring(i, j);\n      s += p.substring(++j, ++j);\n      i = j;\n    } else if (c === q) {\n      push();\n      q = null;\n      b = -1;\n    } else if (q) {\n      continue;\n    } else if (i === b && c === '\"') {\n      i = j + 1;\n      q = c;\n    } else if (i === b && c === \"'\") {\n      i = j + 1;\n      q = c;\n    } else if (c === '.' && !b) {\n      if (j > i) {\n        push();\n      } else {\n        i = j + 1;\n      }\n    } else if (c === '[') {\n      if (j > i) push();\n      b = i = j + 1;\n    } else if (c === ']') {\n      if (!b) error('Access path missing open bracket: ' + p);\n      if (b > 0) push();\n      b = 0;\n      i = j + 1;\n    }\n  }\n\n  if (b) error('Access path missing closing bracket: ' + p);\n  if (q) error('Access path missing closing quote: ' + p);\n\n  if (j > i) {\n    j++;\n    push();\n  }\n\n  return path;\n}\n\nfunction field (field, name, opt) {\n  const path = splitAccessPath(field);\n  field = path.length === 1 ? path[0] : field;\n  return accessor((opt && opt.get || getter)(path), [field], name || field);\n}\n\nconst id = field('id');\nconst identity = accessor(_ => _, [], 'identity');\nconst zero = accessor(() => 0, [], 'zero');\nconst one = accessor(() => 1, [], 'one');\nconst truthy = accessor(() => true, [], 'true');\nconst falsy = accessor(() => false, [], 'false');\n\nfunction log$1(method, level, input) {\n  const args = [level].concat([].slice.call(input));\n  console[method].apply(console, args); // eslint-disable-line no-console\n}\n\nconst None = 0;\nconst Error$1 = 1;\nconst Warn = 2;\nconst Info = 3;\nconst Debug = 4;\nfunction logger (_, method) {\n  let level = _ || None;\n  return {\n    level(_) {\n      if (arguments.length) {\n        level = +_;\n        return this;\n      } else {\n        return level;\n      }\n    },\n\n    error() {\n      if (level >= Error$1) log$1(method || 'error', 'ERROR', arguments);\n      return this;\n    },\n\n    warn() {\n      if (level >= Warn) log$1(method || 'warn', 'WARN', arguments);\n      return this;\n    },\n\n    info() {\n      if (level >= Info) log$1(method || 'log', 'INFO', arguments);\n      return this;\n    },\n\n    debug() {\n      if (level >= Debug) log$1(method || 'log', 'DEBUG', arguments);\n      return this;\n    }\n\n  };\n}\n\nvar isArray = Array.isArray;\n\nfunction isObject (_) {\n  return _ === Object(_);\n}\n\nconst isLegalKey = key => key !== '__proto__';\n\nfunction mergeConfig(...configs) {\n  return configs.reduce((out, source) => {\n    for (const key in source) {\n      if (key === 'signals') {\n        // for signals, we merge the signals arrays\n        // source signals take precedence over\n        // existing signals with the same name\n        out.signals = mergeNamed(out.signals, source.signals);\n      } else {\n        // otherwise, merge objects subject to recursion constraints\n        // for legend block, recurse for the layout entry only\n        // for style block, recurse for all properties\n        // otherwise, no recursion: objects overwrite, no merging\n        const r = key === 'legend' ? {\n          layout: 1\n        } : key === 'style' ? true : null;\n        writeConfig(out, key, source[key], r);\n      }\n    }\n\n    return out;\n  }, {});\n}\nfunction writeConfig(output, key, value, recurse) {\n  if (!isLegalKey(key)) return;\n  let k, o;\n\n  if (isObject(value) && !isArray(value)) {\n    o = isObject(output[key]) ? output[key] : output[key] = {};\n\n    for (k in value) {\n      if (recurse && (recurse === true || recurse[k])) {\n        writeConfig(o, k, value[k]);\n      } else if (isLegalKey(k)) {\n        o[k] = value[k];\n      }\n    }\n  } else {\n    output[key] = value;\n  }\n}\n\nfunction mergeNamed(a, b) {\n  if (a == null) return b;\n  const map = {},\n        out = [];\n\n  function add(_) {\n    if (!map[_.name]) {\n      map[_.name] = 1;\n      out.push(_);\n    }\n  }\n\n  b.forEach(add);\n  a.forEach(add);\n  return out;\n}\n\nfunction peek (array) {\n  return array[array.length - 1];\n}\n\nfunction toNumber (_) {\n  return _ == null || _ === '' ? null : +_;\n}\n\nconst exp = sign => x => sign * Math.exp(x);\n\nconst log = sign => x => Math.log(sign * x);\n\nconst symlog = c => x => Math.sign(x) * Math.log1p(Math.abs(x / c));\n\nconst symexp = c => x => Math.sign(x) * Math.expm1(Math.abs(x)) * c;\n\nconst pow = exponent => x => x < 0 ? -Math.pow(-x, exponent) : Math.pow(x, exponent);\n\nfunction pan(domain, delta, lift, ground) {\n  const d0 = lift(domain[0]),\n        d1 = lift(peek(domain)),\n        dd = (d1 - d0) * delta;\n  return [ground(d0 - dd), ground(d1 - dd)];\n}\n\nfunction panLinear(domain, delta) {\n  return pan(domain, delta, toNumber, identity);\n}\nfunction panLog(domain, delta) {\n  var sign = Math.sign(domain[0]);\n  return pan(domain, delta, log(sign), exp(sign));\n}\nfunction panPow(domain, delta, exponent) {\n  return pan(domain, delta, pow(exponent), pow(1 / exponent));\n}\nfunction panSymlog(domain, delta, constant) {\n  return pan(domain, delta, symlog(constant), symexp(constant));\n}\n\nfunction zoom(domain, anchor, scale, lift, ground) {\n  const d0 = lift(domain[0]),\n        d1 = lift(peek(domain)),\n        da = anchor != null ? lift(anchor) : (d0 + d1) / 2;\n  return [ground(da + (d0 - da) * scale), ground(da + (d1 - da) * scale)];\n}\n\nfunction zoomLinear(domain, anchor, scale) {\n  return zoom(domain, anchor, scale, toNumber, identity);\n}\nfunction zoomLog(domain, anchor, scale) {\n  const sign = Math.sign(domain[0]);\n  return zoom(domain, anchor, scale, log(sign), exp(sign));\n}\nfunction zoomPow(domain, anchor, scale, exponent) {\n  return zoom(domain, anchor, scale, pow(exponent), pow(1 / exponent));\n}\nfunction zoomSymlog(domain, anchor, scale, constant) {\n  return zoom(domain, anchor, scale, symlog(constant), symexp(constant));\n}\n\nfunction quarter(date) {\n  return 1 + ~~(new Date(date).getMonth() / 3);\n}\nfunction utcquarter(date) {\n  return 1 + ~~(new Date(date).getUTCMonth() / 3);\n}\n\nfunction array (_) {\n  return _ != null ? isArray(_) ? _ : [_] : [];\n}\n\n/**\n * Span-preserving range clamp. If the span of the input range is less\n * than (max - min) and an endpoint exceeds either the min or max value,\n * the range is translated such that the span is preserved and one\n * endpoint touches the boundary of the min/max range.\n * If the span exceeds (max - min), the range [min, max] is returned.\n */\nfunction clampRange (range, min, max) {\n  let lo = range[0],\n      hi = range[1],\n      span;\n\n  if (hi < lo) {\n    span = hi;\n    hi = lo;\n    lo = span;\n  }\n\n  span = hi - lo;\n  return span >= max - min ? [min, max] : [lo = Math.min(Math.max(lo, min), max - span), lo + span];\n}\n\nfunction isFunction (_) {\n  return typeof _ === 'function';\n}\n\nconst DESCENDING = 'descending';\nfunction compare (fields, orders, opt) {\n  opt = opt || {};\n  orders = array(orders) || [];\n  const ord = [],\n        get = [],\n        fmap = {},\n        gen = opt.comparator || comparator;\n  array(fields).forEach((f, i) => {\n    if (f == null) return;\n    ord.push(orders[i] === DESCENDING ? -1 : 1);\n    get.push(f = isFunction(f) ? f : field(f, null, opt));\n    (accessorFields(f) || []).forEach(_ => fmap[_] = 1);\n  });\n  return get.length === 0 ? null : accessor(gen(get, ord), Object.keys(fmap));\n}\nconst ascending = (u, v) => (u < v || u == null) && v != null ? -1 : (u > v || v == null) && u != null ? 1 : (v = v instanceof Date ? +v : v, u = u instanceof Date ? +u : u) !== u && v === v ? -1 : v !== v && u === u ? 1 : 0;\n\nconst comparator = (fields, orders) => fields.length === 1 ? compare1(fields[0], orders[0]) : compareN(fields, orders, fields.length);\n\nconst compare1 = (field, order) => function (a, b) {\n  return ascending(field(a), field(b)) * order;\n};\n\nconst compareN = (fields, orders, n) => {\n  orders.push(0); // pad zero for convenient lookup\n\n  return function (a, b) {\n    let f,\n        c = 0,\n        i = -1;\n\n    while (c === 0 && ++i < n) {\n      f = fields[i];\n      c = ascending(f(a), f(b));\n    }\n\n    return c * orders[i];\n  };\n};\n\nfunction constant (_) {\n  return isFunction(_) ? _ : () => _;\n}\n\nfunction debounce (delay, handler) {\n  let tid;\n  return e => {\n    if (tid) clearTimeout(tid);\n    tid = setTimeout(() => (handler(e), tid = null), delay);\n  };\n}\n\nfunction extend (_) {\n  for (let x, k, i = 1, len = arguments.length; i < len; ++i) {\n    x = arguments[i];\n\n    for (k in x) {\n      _[k] = x[k];\n    }\n  }\n\n  return _;\n}\n\n/**\n * Return an array with minimum and maximum values, in the\n * form [min, max]. Ignores null, undefined, and NaN values.\n */\nfunction extent (array, f) {\n  let i = 0,\n      n,\n      v,\n      min,\n      max;\n\n  if (array && (n = array.length)) {\n    if (f == null) {\n      // find first valid value\n      for (v = array[i]; i < n && (v == null || v !== v); v = array[++i]);\n\n      min = max = v; // visit all other values\n\n      for (; i < n; ++i) {\n        v = array[i]; // skip null/undefined; NaN will fail all comparisons\n\n        if (v != null) {\n          if (v < min) min = v;\n          if (v > max) max = v;\n        }\n      }\n    } else {\n      // find first valid value\n      for (v = f(array[i]); i < n && (v == null || v !== v); v = f(array[++i]));\n\n      min = max = v; // visit all other values\n\n      for (; i < n; ++i) {\n        v = f(array[i]); // skip null/undefined; NaN will fail all comparisons\n\n        if (v != null) {\n          if (v < min) min = v;\n          if (v > max) max = v;\n        }\n      }\n    }\n  }\n\n  return [min, max];\n}\n\nfunction extentIndex (array, f) {\n  const n = array.length;\n  let i = -1,\n      a,\n      b,\n      c,\n      u,\n      v;\n\n  if (f == null) {\n    while (++i < n) {\n      b = array[i];\n\n      if (b != null && b >= b) {\n        a = c = b;\n        break;\n      }\n    }\n\n    if (i === n) return [-1, -1];\n    u = v = i;\n\n    while (++i < n) {\n      b = array[i];\n\n      if (b != null) {\n        if (a > b) {\n          a = b;\n          u = i;\n        }\n\n        if (c < b) {\n          c = b;\n          v = i;\n        }\n      }\n    }\n  } else {\n    while (++i < n) {\n      b = f(array[i], i, array);\n\n      if (b != null && b >= b) {\n        a = c = b;\n        break;\n      }\n    }\n\n    if (i === n) return [-1, -1];\n    u = v = i;\n\n    while (++i < n) {\n      b = f(array[i], i, array);\n\n      if (b != null) {\n        if (a > b) {\n          a = b;\n          u = i;\n        }\n\n        if (c < b) {\n          c = b;\n          v = i;\n        }\n      }\n    }\n  }\n\n  return [u, v];\n}\n\nconst hop = Object.prototype.hasOwnProperty;\nfunction has (object, property) {\n  return hop.call(object, property);\n}\n\nconst NULL = {};\nfunction fastmap (input) {\n  let obj = {},\n      test;\n\n  function has$1(key) {\n    return has(obj, key) && obj[key] !== NULL;\n  }\n\n  const map = {\n    size: 0,\n    empty: 0,\n    object: obj,\n    has: has$1,\n\n    get(key) {\n      return has$1(key) ? obj[key] : undefined;\n    },\n\n    set(key, value) {\n      if (!has$1(key)) {\n        ++map.size;\n        if (obj[key] === NULL) --map.empty;\n      }\n\n      obj[key] = value;\n      return this;\n    },\n\n    delete(key) {\n      if (has$1(key)) {\n        --map.size;\n        ++map.empty;\n        obj[key] = NULL;\n      }\n\n      return this;\n    },\n\n    clear() {\n      map.size = map.empty = 0;\n      map.object = obj = {};\n    },\n\n    test(_) {\n      if (arguments.length) {\n        test = _;\n        return map;\n      } else {\n        return test;\n      }\n    },\n\n    clean() {\n      const next = {};\n      let size = 0;\n\n      for (const key in obj) {\n        const value = obj[key];\n\n        if (value !== NULL && (!test || !test(value))) {\n          next[key] = value;\n          ++size;\n        }\n      }\n\n      map.size = size;\n      map.empty = 0;\n      map.object = obj = next;\n    }\n\n  };\n  if (input) Object.keys(input).forEach(key => {\n    map.set(key, input[key]);\n  });\n  return map;\n}\n\nfunction flush (range, value, threshold, left, right, center) {\n  if (!threshold && threshold !== 0) return center;\n  const t = +threshold;\n  let a = range[0],\n      b = peek(range),\n      l; // swap endpoints if range is reversed\n\n  if (b < a) {\n    l = a;\n    a = b;\n    b = l;\n  } // compare value to endpoints\n\n\n  l = Math.abs(value - a);\n  const r = Math.abs(b - value); // adjust if value is within threshold distance of endpoint\n\n  return l < r && l <= t ? left : r <= t ? right : center;\n}\n\nfunction inherits (child, parent, members) {\n  const proto = child.prototype = Object.create(parent.prototype);\n  Object.defineProperty(proto, 'constructor', {\n    value: child,\n    writable: true,\n    enumerable: true,\n    configurable: true\n  });\n  return extend(proto, members);\n}\n\n/**\n * Predicate that returns true if the value lies within the span\n * of the given range. The left and right flags control the use\n * of inclusive (true) or exclusive (false) comparisons.\n */\nfunction inrange (value, range, left, right) {\n  let r0 = range[0],\n      r1 = range[range.length - 1],\n      t;\n\n  if (r0 > r1) {\n    t = r0;\n    r0 = r1;\n    r1 = t;\n  }\n\n  left = left === undefined || left;\n  right = right === undefined || right;\n  return (left ? r0 <= value : r0 < value) && (right ? value <= r1 : value < r1);\n}\n\nfunction isBoolean (_) {\n  return typeof _ === 'boolean';\n}\n\nfunction isDate (_) {\n  return Object.prototype.toString.call(_) === '[object Date]';\n}\n\nfunction isIterable (_) {\n  return _ && isFunction(_[Symbol.iterator]);\n}\n\nfunction isNumber (_) {\n  return typeof _ === 'number';\n}\n\nfunction isRegExp (_) {\n  return Object.prototype.toString.call(_) === '[object RegExp]';\n}\n\nfunction isString (_) {\n  return typeof _ === 'string';\n}\n\nfunction key (fields, flat, opt) {\n  if (fields) {\n    fields = flat ? array(fields).map(f => f.replace(/\\\\(.)/g, '$1')) : array(fields);\n  }\n\n  const len = fields && fields.length,\n        gen = opt && opt.get || getter,\n        map = f => gen(flat ? [f] : splitAccessPath(f));\n\n  let fn;\n\n  if (!len) {\n    fn = function () {\n      return '';\n    };\n  } else if (len === 1) {\n    const get = map(fields[0]);\n\n    fn = function (_) {\n      return '' + get(_);\n    };\n  } else {\n    const get = fields.map(map);\n\n    fn = function (_) {\n      let s = '' + get[0](_),\n          i = 0;\n\n      while (++i < len) s += '|' + get[i](_);\n\n      return s;\n    };\n  }\n\n  return accessor(fn, fields, 'key');\n}\n\nfunction lerp (array, frac) {\n  const lo = array[0],\n        hi = peek(array),\n        f = +frac;\n  return !f ? lo : f === 1 ? hi : lo + f * (hi - lo);\n}\n\nconst DEFAULT_MAX_SIZE = 10000; // adapted from https://github.com/dominictarr/hashlru/ (MIT License)\n\nfunction lruCache (maxsize) {\n  maxsize = +maxsize || DEFAULT_MAX_SIZE;\n  let curr, prev, size;\n\n  const clear = () => {\n    curr = {};\n    prev = {};\n    size = 0;\n  };\n\n  const update = (key, value) => {\n    if (++size > maxsize) {\n      prev = curr;\n      curr = {};\n      size = 1;\n    }\n\n    return curr[key] = value;\n  };\n\n  clear();\n  return {\n    clear,\n    has: key => has(curr, key) || has(prev, key),\n    get: key => has(curr, key) ? curr[key] : has(prev, key) ? update(key, prev[key]) : undefined,\n    set: (key, value) => has(curr, key) ? curr[key] = value : update(key, value)\n  };\n}\n\nfunction merge (compare, array0, array1, output) {\n  const n0 = array0.length,\n        n1 = array1.length;\n  if (!n1) return array0;\n  if (!n0) return array1;\n  const merged = output || new array0.constructor(n0 + n1);\n  let i0 = 0,\n      i1 = 0,\n      i = 0;\n\n  for (; i0 < n0 && i1 < n1; ++i) {\n    merged[i] = compare(array0[i0], array1[i1]) > 0 ? array1[i1++] : array0[i0++];\n  }\n\n  for (; i0 < n0; ++i0, ++i) {\n    merged[i] = array0[i0];\n  }\n\n  for (; i1 < n1; ++i1, ++i) {\n    merged[i] = array1[i1];\n  }\n\n  return merged;\n}\n\nfunction repeat (str, reps) {\n  let s = '';\n\n  while (--reps >= 0) s += str;\n\n  return s;\n}\n\nfunction pad (str, length, padchar, align) {\n  const c = padchar || ' ',\n        s = str + '',\n        n = length - s.length;\n  return n <= 0 ? s : align === 'left' ? repeat(c, n) + s : align === 'center' ? repeat(c, ~~(n / 2)) + s + repeat(c, Math.ceil(n / 2)) : s + repeat(c, n);\n}\n\n/**\n * Return the numerical span of an array: the difference between\n * the last and first values.\n */\n\nfunction span (array) {\n  return array && peek(array) - array[0] || 0;\n}\n\nfunction $(x) {\n  return isArray(x) ? '[' + x.map($) + ']' : isObject(x) || isString(x) ? // Output valid JSON and JS source strings.\n  // See http://timelessrepo.com/json-isnt-a-javascript-subset\n  JSON.stringify(x).replace('\\u2028', '\\\\u2028').replace('\\u2029', '\\\\u2029') : x;\n}\n\nfunction toBoolean (_) {\n  return _ == null || _ === '' ? null : !_ || _ === 'false' || _ === '0' ? false : !!_;\n}\n\nconst defaultParser = _ => isNumber(_) ? _ : isDate(_) ? _ : Date.parse(_);\n\nfunction toDate (_, parser) {\n  parser = parser || defaultParser;\n  return _ == null || _ === '' ? null : parser(_);\n}\n\nfunction toString (_) {\n  return _ == null || _ === '' ? null : _ + '';\n}\n\nfunction toSet (_) {\n  const s = {},\n        n = _.length;\n\n  for (let i = 0; i < n; ++i) s[_[i]] = true;\n\n  return s;\n}\n\nfunction truncate (str, length, align, ellipsis) {\n  const e = ellipsis != null ? ellipsis : '\\u2026',\n        s = str + '',\n        n = s.length,\n        l = Math.max(0, length - e.length);\n  return n <= length ? s : align === 'left' ? e + s.slice(n - l) : align === 'center' ? s.slice(0, Math.ceil(l / 2)) + e + s.slice(n - ~~(l / 2)) : s.slice(0, l) + e;\n}\n\nfunction visitArray (array, filter, visitor) {\n  if (array) {\n    if (filter) {\n      const n = array.length;\n\n      for (let i = 0; i < n; ++i) {\n        const t = filter(array[i]);\n        if (t) visitor(t, i, array);\n      }\n    } else {\n      array.forEach(visitor);\n    }\n  }\n}\n\n\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,[encoded data, 33076 characters]\n//# sourceURL=webpack-internal:///./node_modules/vega-functions/node_modules/vega-util/build/vega-util.module.js\n");

/***/ }),

/***/ "./node_modules/vega-label/build/vega-label.module.js":
/*!************************************************************!*\
  !*** ./node_modules/vega-label/build/vega-label.module.js ***!
  \************************************************************/
/*! exports provided: label */
/***/ (function(module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"label\", function() { return Label; });\n/* harmony import */ var vega_canvas__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! vega-canvas */ \"./node_modules/vega-canvas/index.browser.js\");\n/* harmony import */ var vega_dataflow__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! vega-dataflow */ \"./node_modules/vega-label/node_modules/vega-dataflow/build/vega-dataflow.module.js\");\n/* harmony import */ var vega_scenegraph__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! vega-scenegraph */ \"./node_modules/vega-label/node_modules/vega-scenegraph/build/vega-scenegraph.module.js\");\n/* harmony import */ var vega_util__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! vega-util */ \"./node_modules/vega-label/node_modules/vega-util/build/vega-util.module.js\");\n\n\n\n\n\nconst ALPHA_MASK = 0xff000000; // alpha value equivalent to opacity 0.0625\n\nconst INSIDE_OPACITY_IN_ALPHA = 0x10000000;\nconst INSIDE_OPACITY = 0.0625;\nfunction baseBitmaps($, data) {\n  const bitmap = $.bitmap(); // when there is no base mark but data points are to be avoided\n\n  (data || []).forEach(d => bitmap.set($(d.boundary[0]), $(d.boundary[3])));\n  return [bitmap, undefined];\n}\nfunction markBitmaps($, avoidMarks, labelInside, isGroupArea) {\n  // create canvas\n  const width = $.width,\n        height = $.height,\n        border = labelInside || isGroupArea,\n        context = Object(vega_canvas__WEBPACK_IMPORTED_MODULE_0__[\"canvas\"])(width, height).getContext('2d'); // render all marks to be avoided into canvas\n\n  avoidMarks.forEach(items => draw(context, items, border)); // get canvas buffer, create bitmaps\n\n  const buffer = new Uint32Array(context.getImageData(0, 0, width, height).data.buffer),\n        layer1 = $.bitmap(),\n        layer2 = border && $.bitmap(); // populate bitmap layers\n\n  let x, y, u, v, alpha;\n\n  for (y = 0; y < height; ++y) {\n    for (x = 0; x < width; ++x) {\n      alpha = buffer[y * width + x] & ALPHA_MASK;\n\n      if (alpha) {\n        u = $(x);\n        v = $(y);\n        if (!isGroupArea) layer1.set(u, v); // update interior bitmap\n\n        if (border && alpha ^ INSIDE_OPACITY_IN_ALPHA) layer2.set(u, v); // update border bitmap\n      }\n    }\n  }\n\n  return [layer1, layer2];\n}\n\nfunction draw(context, items, interior) {\n  if (!items.length) return;\n  const type = items[0].mark.marktype;\n\n  if (type === 'group') {\n    items.forEach(group => {\n      group.items.forEach(mark => draw(context, mark.items, interior));\n    });\n  } else {\n    vega_scenegraph__WEBPACK_IMPORTED_MODULE_2__[\"Marks\"][type].draw(context, {\n      items: interior ? items.map(prepare) : items\n    });\n  }\n}\n/**\n * Prepare item before drawing into canvas (setting stroke and opacity)\n * @param {object} source item to be prepared\n * @returns prepared item\n */\n\n\nfunction prepare(source) {\n  const item = Object(vega_dataflow__WEBPACK_IMPORTED_MODULE_1__[\"rederive\"])(source, {});\n\n  if (item.stroke) {\n    item.strokeOpacity = 1;\n  }\n\n  if (item.fill) {\n    item.fillOpacity = INSIDE_OPACITY;\n    item.stroke = '#000';\n    item.strokeOpacity = 1;\n    item.strokeWidth = 2;\n  }\n\n  return item;\n}\n\nconst DIV = 5,\n      // bit shift from x, y index to bit vector array index\nMOD = 31,\n      // bit mask for index lookup within a bit vector\nSIZE = 32,\n      // individual bit vector size\nRIGHT0 = new Uint32Array(SIZE + 1),\n      // left-anchored bit vectors, full -> 0\nRIGHT1 = new Uint32Array(SIZE + 1); // right-anchored bit vectors, 0 -> full\n\nRIGHT1[0] = 0;\nRIGHT0[0] = ~RIGHT1[0];\n\nfor (let i = 1; i <= SIZE; ++i) {\n  RIGHT1[i] = RIGHT1[i - 1] << 1 | 1;\n  RIGHT0[i] = ~RIGHT1[i];\n}\n\nfunction Bitmap (w, h) {\n  const array = new Uint32Array(~~((w * h + SIZE) / SIZE));\n\n  function _set(index, mask) {\n    array[index] |= mask;\n  }\n\n  function _clear(index, mask) {\n    array[index] &= mask;\n  }\n\n  return {\n    array: array,\n    get: (x, y) => {\n      const index = y * w + x;\n      return array[index >>> DIV] & 1 << (index & MOD);\n    },\n    set: (x, y) => {\n      const index = y * w + x;\n\n      _set(index >>> DIV, 1 << (index & MOD));\n    },\n    clear: (x, y) => {\n      const index = y * w + x;\n\n      _clear(index >>> DIV, ~(1 << (index & MOD)));\n    },\n    getRange: (x, y, x2, y2) => {\n      let r = y2,\n          start,\n          end,\n          indexStart,\n          indexEnd;\n\n      for (; r >= y; --r) {\n        start = r * w + x;\n        end = r * w + x2;\n        indexStart = start >>> DIV;\n        indexEnd = end >>> DIV;\n\n        if (indexStart === indexEnd) {\n          if (array[indexStart] & RIGHT0[start & MOD] & RIGHT1[(end & MOD) + 1]) {\n            return true;\n          }\n        } else {\n          if (array[indexStart] & RIGHT0[start & MOD]) return true;\n          if (array[indexEnd] & RIGHT1[(end & MOD) + 1]) return true;\n\n          for (let i = indexStart + 1; i < indexEnd; ++i) {\n            if (array[i]) return true;\n          }\n        }\n      }\n\n      return false;\n    },\n    setRange: (x, y, x2, y2) => {\n      let start, end, indexStart, indexEnd, i;\n\n      for (; y <= y2; ++y) {\n        start = y * w + x;\n        end = y * w + x2;\n        indexStart = start >>> DIV;\n        indexEnd = end >>> DIV;\n\n        if (indexStart === indexEnd) {\n          _set(indexStart, RIGHT0[start & MOD] & RIGHT1[(end & MOD) + 1]);\n        } else {\n          _set(indexStart, RIGHT0[start & MOD]);\n\n          _set(indexEnd, RIGHT1[(end & MOD) + 1]);\n\n          for (i = indexStart + 1; i < indexEnd; ++i) _set(i, 0xffffffff);\n        }\n      }\n    },\n    clearRange: (x, y, x2, y2) => {\n      let start, end, indexStart, indexEnd, i;\n\n      for (; y <= y2; ++y) {\n        start = y * w + x;\n        end = y * w + x2;\n        indexStart = start >>> DIV;\n        indexEnd = end >>> DIV;\n\n        if (indexStart === indexEnd) {\n          _clear(indexStart, RIGHT1[start & MOD] | RIGHT0[(end & MOD) + 1]);\n        } else {\n          _clear(indexStart, RIGHT1[start & MOD]);\n\n          _clear(indexEnd, RIGHT0[(end & MOD) + 1]);\n\n          for (i = indexStart + 1; i < indexEnd; ++i) _clear(i, 0);\n        }\n      }\n    },\n    outOfBounds: (x, y, x2, y2) => x < 0 || y < 0 || y2 >= h || x2 >= w\n  };\n}\n\nfunction scaler (width, height, padding) {\n  const ratio = Math.max(1, Math.sqrt(width * height / 1e6)),\n        w = ~~((width + 2 * padding + ratio) / ratio),\n        h = ~~((height + 2 * padding + ratio) / ratio),\n        scale = _ => ~~((_ + padding) / ratio);\n\n  scale.invert = _ => _ * ratio - padding;\n\n  scale.bitmap = () => Bitmap(w, h);\n\n  scale.ratio = ratio;\n  scale.padding = padding;\n  scale.width = width;\n  scale.height = height;\n  return scale;\n}\n\nfunction placeAreaLabelNaive ($, bitmaps, avoidBaseMark, markIndex) {\n  const width = $.width,\n        height = $.height; // try to place a label within an input area mark\n\n  return function (d) {\n    const items = d.datum.datum.items[markIndex].items,\n          // area points\n    n = items.length,\n          // number of points\n    textHeight = d.datum.fontSize,\n          // label width\n    textWidth = vega_scenegraph__WEBPACK_IMPORTED_MODULE_2__[\"textMetrics\"].width(d.datum, d.datum.text); // label height\n\n    let maxAreaWidth = 0,\n        x1,\n        x2,\n        y1,\n        y2,\n        x,\n        y,\n        areaWidth; // for each area sample point\n\n    for (let i = 0; i < n; ++i) {\n      x1 = items[i].x;\n      y1 = items[i].y;\n      x2 = items[i].x2 === undefined ? x1 : items[i].x2;\n      y2 = items[i].y2 === undefined ? y1 : items[i].y2;\n      x = (x1 + x2) / 2;\n      y = (y1 + y2) / 2;\n      areaWidth = Math.abs(x2 - x1 + y2 - y1);\n\n      if (areaWidth >= maxAreaWidth) {\n        maxAreaWidth = areaWidth;\n        d.x = x;\n        d.y = y;\n      }\n    }\n\n    x = textWidth / 2;\n    y = textHeight / 2;\n    x1 = d.x - x;\n    x2 = d.x + x;\n    y1 = d.y - y;\n    y2 = d.y + y;\n    d.align = 'center';\n\n    if (x1 < 0 && x2 <= width) {\n      d.align = 'left';\n    } else if (0 <= x1 && width < x2) {\n      d.align = 'right';\n    }\n\n    d.baseline = 'middle';\n\n    if (y1 < 0 && y2 <= height) {\n      d.baseline = 'top';\n    } else if (0 <= y1 && height < y2) {\n      d.baseline = 'bottom';\n    }\n\n    return true;\n  };\n}\n\nfunction outOfBounds(x, y, textWidth, textHeight, width, height) {\n  let r = textWidth / 2;\n  return x - r < 0 || x + r > width || y - (r = textHeight / 2) < 0 || y + r > height;\n}\nfunction collision($, x, y, textHeight, textWidth, h, bm0, bm1) {\n  const w = textWidth * h / (textHeight * 2),\n        x1 = $(x - w),\n        x2 = $(x + w),\n        y1 = $(y - (h = h / 2)),\n        y2 = $(y + h);\n  return bm0.outOfBounds(x1, y1, x2, y2) || bm0.getRange(x1, y1, x2, y2) || bm1 && bm1.getRange(x1, y1, x2, y2);\n}\n\nfunction placeAreaLabelReducedSearch ($, bitmaps, avoidBaseMark, markIndex) {\n  const width = $.width,\n        height = $.height,\n        bm0 = bitmaps[0],\n        // where labels have been placed\n  bm1 = bitmaps[1]; // area outlines\n\n  function tryLabel(_x, _y, maxSize, textWidth, textHeight) {\n    const x = $.invert(_x),\n          y = $.invert(_y);\n    let lo = maxSize,\n        hi = height,\n        mid;\n\n    if (!outOfBounds(x, y, textWidth, textHeight, width, height) && !collision($, x, y, textHeight, textWidth, lo, bm0, bm1) && !collision($, x, y, textHeight, textWidth, textHeight, bm0, null)) {\n      // if the label fits at the current sample point,\n      // perform binary search to find the largest font size that fits\n      while (hi - lo >= 1) {\n        mid = (lo + hi) / 2;\n\n        if (collision($, x, y, textHeight, textWidth, mid, bm0, bm1)) {\n          hi = mid;\n        } else {\n          lo = mid;\n        }\n      } // place label if current lower bound exceeds prior max font size\n\n\n      if (lo > maxSize) {\n        return [x, y, lo, true];\n      }\n    }\n  } // try to place a label within an input area mark\n\n\n  return function (d) {\n    const items = d.datum.datum.items[markIndex].items,\n          // area points\n    n = items.length,\n          // number of points\n    textHeight = d.datum.fontSize,\n          // label width\n    textWidth = vega_scenegraph__WEBPACK_IMPORTED_MODULE_2__[\"textMetrics\"].width(d.datum, d.datum.text); // label height\n\n    let maxSize = avoidBaseMark ? textHeight : 0,\n        labelPlaced = false,\n        labelPlaced2 = false,\n        maxAreaWidth = 0,\n        x1,\n        x2,\n        y1,\n        y2,\n        x,\n        y,\n        _x,\n        _y,\n        _x1,\n        _xMid,\n        _x2,\n        _y1,\n        _yMid,\n        _y2,\n        areaWidth,\n        result,\n        swapTmp; // for each area sample point\n\n\n    for (let i = 0; i < n; ++i) {\n      x1 = items[i].x;\n      y1 = items[i].y;\n      x2 = items[i].x2 === undefined ? x1 : items[i].x2;\n      y2 = items[i].y2 === undefined ? y1 : items[i].y2;\n\n      if (x1 > x2) {\n        swapTmp = x1;\n        x1 = x2;\n        x2 = swapTmp;\n      }\n\n      if (y1 > y2) {\n        swapTmp = y1;\n        y1 = y2;\n        y2 = swapTmp;\n      }\n\n      _x1 = $(x1);\n      _x2 = $(x2);\n      _xMid = ~~((_x1 + _x2) / 2);\n      _y1 = $(y1);\n      _y2 = $(y2);\n      _yMid = ~~((_y1 + _y2) / 2); // search along the line from mid point between the 2 border to lower border\n\n      for (_x = _xMid; _x >= _x1; --_x) {\n        for (_y = _yMid; _y >= _y1; --_y) {\n          result = tryLabel(_x, _y, maxSize, textWidth, textHeight);\n\n          if (result) {\n            [d.x, d.y, maxSize, labelPlaced] = result;\n          }\n        }\n      } // search along the line from mid point between the 2 border to upper border\n\n\n      for (_x = _xMid; _x <= _x2; ++_x) {\n        for (_y = _yMid; _y <= _y2; ++_y) {\n          result = tryLabel(_x, _y, maxSize, textWidth, textHeight);\n\n          if (result) {\n            [d.x, d.y, maxSize, labelPlaced] = result;\n          }\n        }\n      } // place label at slice center if not placed through other means\n      // and if we're not avoiding overlap with other areas\n\n\n      if (!labelPlaced && !avoidBaseMark) {\n        // one span is zero, hence we can add\n        areaWidth = Math.abs(x2 - x1 + y2 - y1);\n        x = (x1 + x2) / 2;\n        y = (y1 + y2) / 2; // place label if it fits and improves the max area width\n\n        if (areaWidth >= maxAreaWidth && !outOfBounds(x, y, textWidth, textHeight, width, height) && !collision($, x, y, textHeight, textWidth, textHeight, bm0, null)) {\n          maxAreaWidth = areaWidth;\n          d.x = x;\n          d.y = y;\n          labelPlaced2 = true;\n        }\n      }\n    } // record current label placement information, update label bitmap\n\n\n    if (labelPlaced || labelPlaced2) {\n      x = textWidth / 2;\n      y = textHeight / 2;\n      bm0.setRange($(d.x - x), $(d.y - y), $(d.x + x), $(d.y + y));\n      d.align = 'center';\n      d.baseline = 'middle';\n      return true;\n    } else {\n      return false;\n    }\n  };\n}\n\nconst X_DIR = [-1, -1, 1, 1];\nconst Y_DIR = [-1, 1, -1, 1];\nfunction placeAreaLabelFloodFill ($, bitmaps, avoidBaseMark, markIndex) {\n  const width = $.width,\n        height = $.height,\n        bm0 = bitmaps[0],\n        // where labels have been placed\n  bm1 = bitmaps[1],\n        // area outlines\n  bm2 = $.bitmap(); // flood-fill visitations\n  // try to place a label within an input area mark\n\n  return function (d) {\n    const items = d.datum.datum.items[markIndex].items,\n          // area points\n    n = items.length,\n          // number of points\n    textHeight = d.datum.fontSize,\n          // label width\n    textWidth = vega_scenegraph__WEBPACK_IMPORTED_MODULE_2__[\"textMetrics\"].width(d.datum, d.datum.text),\n          // label height\n    stack = []; // flood fill stack\n\n    let maxSize = avoidBaseMark ? textHeight : 0,\n        labelPlaced = false,\n        labelPlaced2 = false,\n        maxAreaWidth = 0,\n        x1,\n        x2,\n        y1,\n        y2,\n        x,\n        y,\n        _x,\n        _y,\n        lo,\n        hi,\n        mid,\n        areaWidth; // for each area sample point\n\n\n    for (let i = 0; i < n; ++i) {\n      x1 = items[i].x;\n      y1 = items[i].y;\n      x2 = items[i].x2 === undefined ? x1 : items[i].x2;\n      y2 = items[i].y2 === undefined ? y1 : items[i].y2; // add scaled center point to stack\n\n      stack.push([$((x1 + x2) / 2), $((y1 + y2) / 2)]); // perform flood fill, visit points\n\n      while (stack.length) {\n        [_x, _y] = stack.pop(); // exit if point already marked\n\n        if (bm0.get(_x, _y) || bm1.get(_x, _y) || bm2.get(_x, _y)) continue; // mark point in flood fill bitmap\n        // add search points for all (in bound) directions\n\n        bm2.set(_x, _y);\n\n        for (let j = 0; j < 4; ++j) {\n          x = _x + X_DIR[j];\n          y = _y + Y_DIR[j];\n          if (!bm2.outOfBounds(x, y, x, y)) stack.push([x, y]);\n        } // unscale point back to x, y space\n\n\n        x = $.invert(_x);\n        y = $.invert(_y);\n        lo = maxSize;\n        hi = height; // TODO: make this bound smaller\n\n        if (!outOfBounds(x, y, textWidth, textHeight, width, height) && !collision($, x, y, textHeight, textWidth, lo, bm0, bm1) && !collision($, x, y, textHeight, textWidth, textHeight, bm0, null)) {\n          // if the label fits at the current sample point,\n          // perform binary search to find the largest font size that fits\n          while (hi - lo >= 1) {\n            mid = (lo + hi) / 2;\n\n            if (collision($, x, y, textHeight, textWidth, mid, bm0, bm1)) {\n              hi = mid;\n            } else {\n              lo = mid;\n            }\n          } // place label if current lower bound exceeds prior max font size\n\n\n          if (lo > maxSize) {\n            d.x = x;\n            d.y = y;\n            maxSize = lo;\n            labelPlaced = true;\n          }\n        }\n      } // place label at slice center if not placed through other means\n      // and if we're not avoiding overlap with other areas\n\n\n      if (!labelPlaced && !avoidBaseMark) {\n        // one span is zero, hence we can add\n        areaWidth = Math.abs(x2 - x1 + y2 - y1);\n        x = (x1 + x2) / 2;\n        y = (y1 + y2) / 2; // place label if it fits and improves the max area width\n\n        if (areaWidth >= maxAreaWidth && !outOfBounds(x, y, textWidth, textHeight, width, height) && !collision($, x, y, textHeight, textWidth, textHeight, bm0, null)) {\n          maxAreaWidth = areaWidth;\n          d.x = x;\n          d.y = y;\n          labelPlaced2 = true;\n        }\n      }\n    } // record current label placement information, update label bitmap\n\n\n    if (labelPlaced || labelPlaced2) {\n      x = textWidth / 2;\n      y = textHeight / 2;\n      bm0.setRange($(d.x - x), $(d.y - y), $(d.x + x), $(d.y + y));\n      d.align = 'center';\n      d.baseline = 'middle';\n      return true;\n    } else {\n      return false;\n    }\n  };\n}\n\nconst Aligns = ['right', 'center', 'left'],\n      Baselines = ['bottom', 'middle', 'top'];\nfunction placeMarkLabel ($, bitmaps, anchors, offsets) {\n  const width = $.width,\n        height = $.height,\n        bm0 = bitmaps[0],\n        bm1 = bitmaps[1],\n        n = offsets.length;\n  return function (d) {\n    const boundary = d.boundary,\n          textHeight = d.datum.fontSize; // can not be placed if the mark is not visible in the graph bound\n\n    if (boundary[2] < 0 || boundary[5] < 0 || boundary[0] > width || boundary[3] > height) {\n      return false;\n    }\n\n    let textWidth = 0,\n        dx,\n        dy,\n        isInside,\n        sizeFactor,\n        insideFactor,\n        x1,\n        x2,\n        y1,\n        y2,\n        xc,\n        yc,\n        _x1,\n        _x2,\n        _y1,\n        _y2; // for each anchor and offset\n\n\n    for (let i = 0; i < n; ++i) {\n      dx = (anchors[i] & 0x3) - 1;\n      dy = (anchors[i] >>> 0x2 & 0x3) - 1;\n      isInside = dx === 0 && dy === 0 || offsets[i] < 0;\n      sizeFactor = dx && dy ? Math.SQRT1_2 : 1;\n      insideFactor = offsets[i] < 0 ? -1 : 1;\n      x1 = boundary[1 + dx] + offsets[i] * dx * sizeFactor;\n      yc = boundary[4 + dy] + insideFactor * textHeight * dy / 2 + offsets[i] * dy * sizeFactor;\n      y1 = yc - textHeight / 2;\n      y2 = yc + textHeight / 2;\n      _x1 = $(x1);\n      _y1 = $(y1);\n      _y2 = $(y2);\n\n      if (!textWidth) {\n        // to avoid finding width of text label,\n        if (!test(_x1, _x1, _y1, _y2, bm0, bm1, x1, x1, y1, y2, boundary, isInside)) {\n          // skip this anchor/offset option if we fail to place a label with 1px width\n          continue;\n        } else {\n          // Otherwise, find the label width\n          textWidth = vega_scenegraph__WEBPACK_IMPORTED_MODULE_2__[\"textMetrics\"].width(d.datum, d.datum.text);\n        }\n      }\n\n      xc = x1 + insideFactor * textWidth * dx / 2;\n      x1 = xc - textWidth / 2;\n      x2 = xc + textWidth / 2;\n      _x1 = $(x1);\n      _x2 = $(x2);\n\n      if (test(_x1, _x2, _y1, _y2, bm0, bm1, x1, x2, y1, y2, boundary, isInside)) {\n        // place label if the position is placeable\n        d.x = !dx ? xc : dx * insideFactor < 0 ? x2 : x1;\n        d.y = !dy ? yc : dy * insideFactor < 0 ? y2 : y1;\n        d.align = Aligns[dx * insideFactor + 1];\n        d.baseline = Baselines[dy * insideFactor + 1];\n        bm0.setRange(_x1, _y1, _x2, _y2);\n        return true;\n      }\n    }\n\n    return false;\n  };\n} // Test if a label with the given dimensions can be added without overlap\n\nfunction test(_x1, _x2, _y1, _y2, bm0, bm1, x1, x2, y1, y2, boundary, isInside) {\n  return !(bm0.outOfBounds(_x1, _y1, _x2, _y2) || (isInside && bm1 ? bm1.getRange(_x1, _y1, _x2, _y2) || !isInMarkBound(x1, y1, x2, y2, boundary) : bm0.getRange(_x1, _y1, _x2, _y2)));\n}\n\nfunction isInMarkBound(x1, y1, x2, y2, boundary) {\n  return boundary[0] <= x1 && x2 <= boundary[2] && boundary[3] <= y1 && y2 <= boundary[5];\n}\n\nconst TOP = 0x0,\n      MIDDLE = 0x4,\n      BOTTOM = 0x8,\n      LEFT = 0x0,\n      CENTER = 0x1,\n      RIGHT = 0x2; // Mapping from text anchor to number representation\n\nconst anchorCode = {\n  'top-left': TOP + LEFT,\n  'top': TOP + CENTER,\n  'top-right': TOP + RIGHT,\n  'left': MIDDLE + LEFT,\n  'middle': MIDDLE + CENTER,\n  'right': MIDDLE + RIGHT,\n  'bottom-left': BOTTOM + LEFT,\n  'bottom': BOTTOM + CENTER,\n  'bottom-right': BOTTOM + RIGHT\n};\nconst placeAreaLabel = {\n  'naive': placeAreaLabelNaive,\n  'reduced-search': placeAreaLabelReducedSearch,\n  'floodfill': placeAreaLabelFloodFill\n};\nfunction labelLayout (texts, size, compare, offset, anchor, avoidMarks, avoidBaseMark, lineAnchor, markIndex, padding, method) {\n  // early exit for empty data\n  if (!texts.length) return texts;\n  const positions = Math.max(offset.length, anchor.length),\n        offsets = getOffsets(offset, positions),\n        anchors = getAnchors(anchor, positions),\n        marktype = markType(texts[0].datum),\n        grouptype = marktype === 'group' && texts[0].datum.items[markIndex].marktype,\n        isGroupArea = grouptype === 'area',\n        boundary = markBoundary(marktype, grouptype, lineAnchor, markIndex),\n        $ = scaler(size[0], size[1], padding),\n        isNaiveGroupArea = isGroupArea && method === 'naive'; // prepare text mark data for placing\n\n  const data = texts.map(d => ({\n    datum: d,\n    opacity: 0,\n    x: undefined,\n    y: undefined,\n    align: undefined,\n    baseline: undefined,\n    boundary: boundary(d)\n  }));\n  let bitmaps;\n\n  if (!isNaiveGroupArea) {\n    // sort labels in priority order, if comparator is provided\n    if (compare) {\n      data.sort((a, b) => compare(a.datum, b.datum));\n    } // flag indicating if label can be placed inside its base mark\n\n\n    let labelInside = false;\n\n    for (let i = 0; i < anchors.length && !labelInside; ++i) {\n      // label inside if anchor is at center\n      // label inside if offset to be inside the mark bound\n      labelInside = anchors[i] === 0x5 || offsets[i] < 0;\n    } // extract data information from base mark when base mark is to be avoided\n    // base mark is implicitly avoided if it is a group area\n\n\n    if (marktype && (avoidBaseMark || isGroupArea)) {\n      avoidMarks = [texts.map(d => d.datum)].concat(avoidMarks);\n    } // generate bitmaps for layout calculation\n\n\n    bitmaps = avoidMarks.length ? markBitmaps($, avoidMarks, labelInside, isGroupArea) : baseBitmaps($, avoidBaseMark && data);\n  } // generate label placement function\n\n\n  const place = isGroupArea ? placeAreaLabel[method]($, bitmaps, avoidBaseMark, markIndex) : placeMarkLabel($, bitmaps, anchors, offsets); // place all labels\n\n  data.forEach(d => d.opacity = +place(d));\n  return data;\n}\n\nfunction getOffsets(_, count) {\n  const offsets = new Float64Array(count),\n        n = _.length;\n\n  for (let i = 0; i < n; ++i) offsets[i] = _[i] || 0;\n\n  for (let i = n; i < count; ++i) offsets[i] = offsets[n - 1];\n\n  return offsets;\n}\n\nfunction getAnchors(_, count) {\n  const anchors = new Int8Array(count),\n        n = _.length;\n\n  for (let i = 0; i < n; ++i) anchors[i] |= anchorCode[_[i]];\n\n  for (let i = n; i < count; ++i) anchors[i] = anchors[n - 1];\n\n  return anchors;\n}\n\nfunction markType(item) {\n  return item && item.mark && item.mark.marktype;\n}\n/**\n * Factory function for function for getting base mark boundary, depending\n * on mark and group type. When mark type is undefined, line or area: boundary\n * is the coordinate of each data point. When base mark is grouped line,\n * boundary is either at the beginning or end of the line depending on the\n * value of lineAnchor. Otherwise, use bounds of base mark.\n */\n\n\nfunction markBoundary(marktype, grouptype, lineAnchor, markIndex) {\n  const xy = d => [d.x, d.x, d.x, d.y, d.y, d.y];\n\n  if (!marktype) {\n    return xy; // no reactive geometry\n  } else if (marktype === 'line' || marktype === 'area') {\n    return d => xy(d.datum);\n  } else if (grouptype === 'line') {\n    return d => {\n      const items = d.datum.items[markIndex].items;\n      return xy(items.length ? items[lineAnchor === 'start' ? 0 : items.length - 1] : {\n        x: NaN,\n        y: NaN\n      });\n    };\n  } else {\n    return d => {\n      const b = d.datum.bounds;\n      return [b.x1, (b.x1 + b.x2) / 2, b.x2, b.y1, (b.y1 + b.y2) / 2, b.y2];\n    };\n  }\n}\n\nconst Output = ['x', 'y', 'opacity', 'align', 'baseline'];\nconst Anchors = ['top-left', 'left', 'bottom-left', 'top', 'bottom', 'top-right', 'right', 'bottom-right'];\n/**\n * Compute text label layout to annotate marks.\n * @constructor\n * @param {object} params - The parameters for this operator.\n * @param {Array<number>} params.size - The size of the layout, provided as a [width, height] array.\n * @param {function(*,*): number} [params.sort] - An optional\n *   comparator function for sorting label data in priority order.\n * @param {Array<string>} [params.anchor] - Label anchor points relative to the base mark bounding box.\n *   The available options are 'top-left', 'left', 'bottom-left', 'top',\n *   'bottom', 'top-right', 'right', 'bottom-right', 'middle'.\n * @param {Array<number>} [params.offset] - Label offsets (in pixels) from the base mark bounding box.\n *   This parameter  is parallel to the list of anchor points.\n * @param {number} [params.padding=0] - The amount (in pixels) that a label may exceed the layout size.\n * @param {string} [params.lineAnchor='end'] - For group line mark labels only, indicates the anchor\n *   position for labels. One of 'start' or 'end'.\n * @param {string} [params.markIndex=0] - For group mark labels only, an index indicating\n *   which mark within the group should be labeled.\n * @param {Array<number>} [params.avoidMarks] - A list of additional mark names for which the label\n *   layout should avoid overlap.\n * @param {boolean} [params.avoidBaseMark=true] - Boolean flag indicating if labels should avoid\n *   overlap with the underlying base mark being labeled.\n * @param {string} [params.method='naive'] - For area make labels only, a method for\n *   place labels. One of 'naive', 'reduced-search', or 'floodfill'.\n * @param {Array<string>} [params.as] - The output fields written by the transform.\n *   The default is ['x', 'y', 'opacity', 'align', 'baseline'].\n */\n\nfunction Label(params) {\n  vega_dataflow__WEBPACK_IMPORTED_MODULE_1__[\"Transform\"].call(this, null, params);\n}\nLabel.Definition = {\n  type: 'Label',\n  metadata: {\n    modifies: true\n  },\n  params: [{\n    name: 'size',\n    type: 'number',\n    array: true,\n    length: 2,\n    required: true\n  }, {\n    name: 'sort',\n    type: 'compare'\n  }, {\n    name: 'anchor',\n    type: 'string',\n    array: true,\n    default: Anchors\n  }, {\n    name: 'offset',\n    type: 'number',\n    array: true,\n    default: [1]\n  }, {\n    name: 'padding',\n    type: 'number',\n    default: 0\n  }, {\n    name: 'lineAnchor',\n    type: 'string',\n    values: ['start', 'end'],\n    default: 'end'\n  }, {\n    name: 'markIndex',\n    type: 'number',\n    default: 0\n  }, {\n    name: 'avoidBaseMark',\n    type: 'boolean',\n    default: true\n  }, {\n    name: 'avoidMarks',\n    type: 'data',\n    array: true\n  }, {\n    name: 'method',\n    type: 'string',\n    default: 'naive'\n  }, {\n    name: 'as',\n    type: 'string',\n    array: true,\n    length: Output.length,\n    default: Output\n  }]\n};\nObject(vega_util__WEBPACK_IMPORTED_MODULE_3__[\"inherits\"])(Label, vega_dataflow__WEBPACK_IMPORTED_MODULE_1__[\"Transform\"], {\n  transform(_, pulse) {\n    function modp(param) {\n      const p = _[param];\n      return Object(vega_util__WEBPACK_IMPORTED_MODULE_3__[\"isFunction\"])(p) && pulse.modified(p.fields);\n    }\n\n    const mod = _.modified();\n\n    if (!(mod || pulse.changed(pulse.ADD_REM) || modp('sort'))) return;\n\n    if (!_.size || _.size.length !== 2) {\n      Object(vega_util__WEBPACK_IMPORTED_MODULE_3__[\"error\"])('Size parameter should be specified as a [width, height] array.');\n    }\n\n    const as = _.as || Output; // run label layout\n\n    labelLayout(pulse.materialize(pulse.SOURCE).source, _.size, _.sort, Object(vega_util__WEBPACK_IMPORTED_MODULE_3__[\"array\"])(_.offset || 1), Object(vega_util__WEBPACK_IMPORTED_MODULE_3__[\"array\"])(_.anchor || Anchors), _.avoidMarks || [], _.avoidBaseMark === false ? false : true, _.lineAnchor || 'end', _.markIndex || 0, _.padding || 0, _.method || 'naive').forEach(l => {\n      // write layout results to data stream\n      const t = l.datum;\n      t[as[0]] = l.x;\n      t[as[1]] = l.y;\n      t[as[2]] = l.opacity;\n      t[as[3]] = l.align;\n      t[as[4]] = l.baseline;\n    });\n    return pulse.reflow(mod).modifies(as);\n  }\n\n});\n\n\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,[encoded data, 43476 characters]\n//# sourceURL=webpack-internal:///./node_modules/vega-label/build/vega-label.module.js\n");

/***/ }),

/***/ "./node_modules/vega-label/node_modules/d3-dsv/src/autoType.js":
/*!*********************************************************************!*\
  !*** ./node_modules/vega-label/node_modules/d3-dsv/src/autoType.js ***!
  \*********************************************************************/
/*! exports provided: default */
/***/ (function(module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"default\", function() { return autoType; });\nfunction autoType(object) {\n  for (var key in object) {\n    var value = object[key].trim(), number, m;\n    if (!value) value = null;\n    else if (value === \"true\") value = true;\n    else if (value === \"false\") value = false;\n    else if (value === \"NaN\") value = NaN;\n    else if (!isNaN(number = +value)) value = number;\n    else if (m = value.match(/^([-+]\\d{2})?\\d{4}(-\\d{2}(-\\d{2})?)?(T\\d{2}:\\d{2}(:\\d{2}(\\.\\d{3})?)?(Z|[-+]\\d{2}:\\d{2})?)?$/)) {\n      if (fixtz && !!m[4] && !m[7]) value = value.replace(/-/g, \"/\").replace(/T/, \" \");\n      value = new Date(value);\n    }\n    else continue;\n    object[key] = value;\n  }\n  return object;\n}\n\n// https://github.com/d3/d3-dsv/issues/45\nconst fixtz = new Date(\"2019-01-01T00:00\").getHours() || new Date(\"2019-07-01T00:00\").getHours();//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvdmVnYS1sYWJlbC9ub2RlX21vZHVsZXMvZDMtZHN2L3NyYy9hdXRvVHlwZS5qcy5qcyIsInNvdXJjZXMiOlsid2VicGFjazovLy8uL25vZGVfbW9kdWxlcy92ZWdhLWxhYmVsL25vZGVfbW9kdWxlcy9kMy1kc3Yvc3JjL2F1dG9UeXBlLmpzP2JhMDMiXSwic291cmNlc0NvbnRlbnQiOlsiZXhwb3J0IGRlZmF1bHQgZnVuY3Rpb24gYXV0b1R5cGUob2JqZWN0KSB7XG4gIGZvciAodmFyIGtleSBpbiBvYmplY3QpIHtcbiAgICB2YXIgdmFsdWUgPSBvYmplY3Rba2V5XS50cmltKCksIG51bWJlciwgbTtcbiAgICBpZiAoIXZhbHVlKSB2YWx1ZSA9IG51bGw7XG4gICAgZWxzZSBpZiAodmFsdWUgPT09IFwidHJ1ZVwiKSB2YWx1ZSA9IHRydWU7XG4gICAgZWxzZSBpZiAodmFsdWUgPT09IFwiZmFsc2VcIikgdmFsdWUgPSBmYWxzZTtcbiAgICBlbHNlIGlmICh2YWx1ZSA9PT0gXCJOYU5cIikgdmFsdWUgPSBOYU47XG4gICAgZWxzZSBpZiAoIWlzTmFOKG51bWJlciA9ICt2YWx1ZSkpIHZhbHVlID0gbnVtYmVyO1xuICAgIGVsc2UgaWYgKG0gPSB2YWx1ZS5tYXRjaCgvXihbLStdXFxkezJ9KT9cXGR7NH0oLVxcZHsyfSgtXFxkezJ9KT8pPyhUXFxkezJ9OlxcZHsyfSg6XFxkezJ9KFxcLlxcZHszfSk/KT8oWnxbLStdXFxkezJ9OlxcZHsyfSk/KT8kLykpIHtcbiAgICAgIGlmIChmaXh0eiAmJiAhIW1bNF0gJiYgIW1bN10pIHZhbHVlID0gdmFsdWUucmVwbGFjZSgvLS9nLCBcIi9cIikucmVwbGFjZSgvVC8sIFwiIFwiKTtcbiAgICAgIHZhbHVlID0gbmV3IERhdGUodmFsdWUpO1xuICAgIH1cbiAgICBlbHNlIGNvbnRpbnVlO1xuICAgIG9iamVjdFtrZXldID0gdmFsdWU7XG4gIH1cbiAgcmV0dXJuIG9iamVjdDtcbn1cblxuLy8gaHR0cHM6Ly9naXRodWIuY29tL2QzL2QzLWRzdi9pc3N1ZXMvNDVcbmNvbnN0IGZpeHR6ID0gbmV3IERhdGUoXCIyMDE5LTAxLTAxVDAwOjAwXCIpLmdldEhvdXJzKCkgfHwgbmV3IERhdGUoXCIyMDE5LTA3LTAxVDAwOjAwXCIpLmdldEhvdXJzKCk7Il0sIm1hcHBpbmdzIjoiQUFBQTtBQUFBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSIsInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///./node_modules/vega-label/node_modules/d3-dsv/src/autoType.js\n");

/***/ }),

/***/ "./node_modules/vega-label/node_modules/d3-dsv/src/csv.js":
/*!****************************************************************!*\
  !*** ./node_modules/vega-label/node_modules/d3-dsv/src/csv.js ***!
  \****************************************************************/
/*! exports provided: csvParse, csvParseRows, csvFormat, csvFormatBody, csvFormatRows, csvFormatRow, csvFormatValue */
/***/ (function(module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"csvParse\", function() { return csvParse; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"csvParseRows\", function() { return csvParseRows; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"csvFormat\", function() { return csvFormat; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"csvFormatBody\", function() { return csvFormatBody; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"csvFormatRows\", function() { return csvFormatRows; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"csvFormatRow\", function() { return csvFormatRow; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"csvFormatValue\", function() { return csvFormatValue; });\n/* harmony import */ var _dsv_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./dsv.js */ \"./node_modules/vega-label/node_modules/d3-dsv/src/dsv.js\");\n\n\nvar csv = Object(_dsv_js__WEBPACK_IMPORTED_MODULE_0__[\"default\"])(\",\");\n\nvar csvParse = csv.parse;\nvar csvParseRows = csv.parseRows;\nvar csvFormat = csv.format;\nvar csvFormatBody = csv.formatBody;\nvar csvFormatRows = csv.formatRows;\nvar csvFormatRow = csv.formatRow;\nvar csvFormatValue = csv.formatValue;\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvdmVnYS1sYWJlbC9ub2RlX21vZHVsZXMvZDMtZHN2L3NyYy9jc3YuanMuanMiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvdmVnYS1sYWJlbC9ub2RlX21vZHVsZXMvZDMtZHN2L3NyYy9jc3YuanM/NWQ4YSJdLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgZHN2IGZyb20gXCIuL2Rzdi5qc1wiO1xuXG52YXIgY3N2ID0gZHN2KFwiLFwiKTtcblxuZXhwb3J0IHZhciBjc3ZQYXJzZSA9IGNzdi5wYXJzZTtcbmV4cG9ydCB2YXIgY3N2UGFyc2VSb3dzID0gY3N2LnBhcnNlUm93cztcbmV4cG9ydCB2YXIgY3N2Rm9ybWF0ID0gY3N2LmZvcm1hdDtcbmV4cG9ydCB2YXIgY3N2Rm9ybWF0Qm9keSA9IGNzdi5mb3JtYXRCb2R5O1xuZXhwb3J0IHZhciBjc3ZGb3JtYXRSb3dzID0gY3N2LmZvcm1hdFJvd3M7XG5leHBvcnQgdmFyIGNzdkZvcm1hdFJvdyA9IGNzdi5mb3JtYXRSb3c7XG5leHBvcnQgdmFyIGNzdkZvcm1hdFZhbHVlID0gY3N2LmZvcm1hdFZhbHVlO1xuIl0sIm1hcHBpbmdzIjoiQUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOyIsInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///./node_modules/vega-label/node_modules/d3-dsv/src/csv.js\n");

/***/ }),

/***/ "./node_modules/vega-label/node_modules/d3-dsv/src/dsv.js":
/*!****************************************************************!*\
  !*** ./node_modules/vega-label/node_modules/d3-dsv/src/dsv.js ***!
  \****************************************************************/
/*! exports provided: default */
/***/ (function(module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\nvar EOL = {},\n    EOF = {},\n    QUOTE = 34,\n    NEWLINE = 10,\n    RETURN = 13;\n\nfunction objectConverter(columns) {\n  return new Function(\"d\", \"return {\" + columns.map(function(name, i) {\n    return JSON.stringify(name) + \": d[\" + i + \"] || \\\"\\\"\";\n  }).join(\",\") + \"}\");\n}\n\nfunction customConverter(columns, f) {\n  var object = objectConverter(columns);\n  return function(row, i) {\n    return f(object(row), i, columns);\n  };\n}\n\n// Compute unique columns in order of discovery.\nfunction inferColumns(rows) {\n  var columnSet = Object.create(null),\n      columns = [];\n\n  rows.forEach(function(row) {\n    for (var column in row) {\n      if (!(column in columnSet)) {\n        columns.push(columnSet[column] = column);\n      }\n    }\n  });\n\n  return columns;\n}\n\nfunction pad(value, width) {\n  var s = value + \"\", length = s.length;\n  return length < width ? new Array(width - length + 1).join(0) + s : s;\n}\n\nfunction formatYear(year) {\n  return year < 0 ? \"-\" + pad(-year, 6)\n    : year > 9999 ? \"+\" + pad(year, 6)\n    : pad(year, 4);\n}\n\nfunction formatDate(date) {\n  var hours = date.getUTCHours(),\n      minutes = date.getUTCMinutes(),\n      seconds = date.getUTCSeconds(),\n      milliseconds = date.getUTCMilliseconds();\n  return isNaN(date) ? \"Invalid Date\"\n      : formatYear(date.getUTCFullYear(), 4) + \"-\" + pad(date.getUTCMonth() + 1, 2) + \"-\" + pad(date.getUTCDate(), 2)\n      + (milliseconds ? \"T\" + pad(hours, 2) + \":\" + pad(minutes, 2) + \":\" + pad(seconds, 2) + \".\" + pad(milliseconds, 3) + \"Z\"\n      : seconds ? \"T\" + pad(hours, 2) + \":\" + pad(minutes, 2) + \":\" + pad(seconds, 2) + \"Z\"\n      : minutes || hours ? \"T\" + pad(hours, 2) + \":\" + pad(minutes, 2) + \"Z\"\n      : \"\");\n}\n\n/* harmony default export */ __webpack_exports__[\"default\"] = (function(delimiter) {\n  var reFormat = new RegExp(\"[\\\"\" + delimiter + \"\\n\\r]\"),\n      DELIMITER = delimiter.charCodeAt(0);\n\n  function parse(text, f) {\n    var convert, columns, rows = parseRows(text, function(row, i) {\n      if (convert) return convert(row, i - 1);\n      columns = row, convert = f ? customConverter(row, f) : objectConverter(row);\n    });\n    rows.columns = columns || [];\n    return rows;\n  }\n\n  function parseRows(text, f) {\n    var rows = [], // output rows\n        N = text.length,\n        I = 0, // current character index\n        n = 0, // current line number\n        t, // current token\n        eof = N <= 0, // current token followed by EOF?\n        eol = false; // current token followed by EOL?\n\n    // Strip the trailing newline.\n    if (text.charCodeAt(N - 1) === NEWLINE) --N;\n    if (text.charCodeAt(N - 1) === RETURN) --N;\n\n    function token() {\n      if (eof) return EOF;\n      if (eol) return eol = false, EOL;\n\n      // Unescape quotes.\n      var i, j = I, c;\n      if (text.charCodeAt(j) === QUOTE) {\n        while (I++ < N && text.charCodeAt(I) !== QUOTE || text.charCodeAt(++I) === QUOTE);\n        if ((i = I) >= N) eof = true;\n        else if ((c = text.charCodeAt(I++)) === NEWLINE) eol = true;\n        else if (c === RETURN) { eol = true; if (text.charCodeAt(I) === NEWLINE) ++I; }\n        return text.slice(j + 1, i - 1).replace(/\"\"/g, \"\\\"\");\n      }\n\n      // Find next delimiter or newline.\n      while (I < N) {\n        if ((c = text.charCodeAt(i = I++)) === NEWLINE) eol = true;\n        else if (c === RETURN) { eol = true; if (text.charCodeAt(I) === NEWLINE) ++I; }\n        else if (c !== DELIMITER) continue;\n        return text.slice(j, i);\n      }\n\n      // Return last token before EOF.\n      return eof = true, text.slice(j, N);\n    }\n\n    while ((t = token()) !== EOF) {\n      var row = [];\n      while (t !== EOL && t !== EOF) row.push(t), t = token();\n      if (f && (row = f(row, n++)) == null) continue;\n      rows.push(row);\n    }\n\n    return rows;\n  }\n\n  function preformatBody(rows, columns) {\n    return rows.map(function(row) {\n      return columns.map(function(column) {\n        return formatValue(row[column]);\n      }).join(delimiter);\n    });\n  }\n\n  function format(rows, columns) {\n    if (columns == null) columns = inferColumns(rows);\n    return [columns.map(formatValue).join(delimiter)].concat(preformatBody(rows, columns)).join(\"\\n\");\n  }\n\n  function formatBody(rows, columns) {\n    if (columns == null) columns = inferColumns(rows);\n    return preformatBody(rows, columns).join(\"\\n\");\n  }\n\n  function formatRows(rows) {\n    return rows.map(formatRow).join(\"\\n\");\n  }\n\n  function formatRow(row) {\n    return row.map(formatValue).join(delimiter);\n  }\n\n  function formatValue(value) {\n    return value == null ? \"\"\n        : value instanceof Date ? formatDate(value)\n        : reFormat.test(value += \"\") ? \"\\\"\" + value.replace(/\"/g, \"\\\"\\\"\") + \"\\\"\"\n        : value;\n  }\n\n  return {\n    parse: parse,\n    parseRows: parseRows,\n    format: format,\n    formatBody: formatBody,\n    formatRows: formatRows,\n    formatRow: formatRow,\n    formatValue: formatValue\n  };\n});\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,[encoded data, 8192 characters]\n//# sourceURL=webpack-internal:///./node_modules/vega-label/node_modules/d3-dsv/src/dsv.js\n");

/***/ }),

/***/ "./node_modules/vega-label/node_modules/d3-dsv/src/index.js":
/*!******************************************************************!*\
  !*** ./node_modules/vega-label/node_modules/d3-dsv/src/index.js ***!
  \******************************************************************/
/*! exports provided: dsvFormat, csvParse, csvParseRows, csvFormat, csvFormatBody, csvFormatRows, csvFormatRow, csvFormatValue, tsvParse, tsvParseRows, tsvFormat, tsvFormatBody, tsvFormatRows, tsvFormatRow, tsvFormatValue, autoType */
/***/ (function(module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _dsv_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./dsv.js */ \"./node_modules/vega-label/node_modules/d3-dsv/src/dsv.js\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"dsvFormat\", function() { return _dsv_js__WEBPACK_IMPORTED_MODULE_0__[\"default\"]; });\n\n/* harmony import */ var _csv_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./csv.js */ \"./node_modules/vega-label/node_modules/d3-dsv/src/csv.js\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"csvParse\", function() { return _csv_js__WEBPACK_IMPORTED_MODULE_1__[\"csvParse\"]; });\n\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"csvParseRows\", function() { return _csv_js__WEBPACK_IMPORTED_MODULE_1__[\"csvParseRows\"]; });\n\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"csvFormat\", function() { return _csv_js__WEBPACK_IMPORTED_MODULE_1__[\"csvFormat\"]; });\n\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"csvFormatBody\", function() { return _csv_js__WEBPACK_IMPORTED_MODULE_1__[\"csvFormatBody\"]; });\n\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"csvFormatRows\", function() { return _csv_js__WEBPACK_IMPORTED_MODULE_1__[\"csvFormatRows\"]; });\n\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"csvFormatRow\", function() { return _csv_js__WEBPACK_IMPORTED_MODULE_1__[\"csvFormatRow\"]; });\n\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"csvFormatValue\", function() { return _csv_js__WEBPACK_IMPORTED_MODULE_1__[\"csvFormatValue\"]; });\n\n/* harmony import */ var _tsv_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./tsv.js */ \"./node_modules/vega-label/node_modules/d3-dsv/src/tsv.js\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"tsvParse\", function() { return _tsv_js__WEBPACK_IMPORTED_MODULE_2__[\"tsvParse\"]; });\n\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"tsvParseRows\", function() { return _tsv_js__WEBPACK_IMPORTED_MODULE_2__[\"tsvParseRows\"]; });\n\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"tsvFormat\", function() { return _tsv_js__WEBPACK_IMPORTED_MODULE_2__[\"tsvFormat\"]; });\n\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"tsvFormatBody\", function() { return _tsv_js__WEBPACK_IMPORTED_MODULE_2__[\"tsvFormatBody\"]; });\n\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"tsvFormatRows\", function() { return _tsv_js__WEBPACK_IMPORTED_MODULE_2__[\"tsvFormatRows\"]; });\n\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"tsvFormatRow\", function() { return _tsv_js__WEBPACK_IMPORTED_MODULE_2__[\"tsvFormatRow\"]; });\n\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"tsvFormatValue\", function() { return _tsv_js__WEBPACK_IMPORTED_MODULE_2__[\"tsvFormatValue\"]; });\n\n/* harmony import */ var _autoType_js__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ./autoType.js */ \"./node_modules/vega-label/node_modules/d3-dsv/src/autoType.js\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"autoType\", function() { return _autoType_js__WEBPACK_IMPORTED_MODULE_3__[\"default\"]; });\n\n\n\n\n\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvdmVnYS1sYWJlbC9ub2RlX21vZHVsZXMvZDMtZHN2L3NyYy9pbmRleC5qcy5qcyIsInNvdXJjZXMiOlsid2VicGFjazovLy8uL25vZGVfbW9kdWxlcy92ZWdhLWxhYmVsL25vZGVfbW9kdWxlcy9kMy1kc3Yvc3JjL2luZGV4LmpzPzkxOTYiXSwic291cmNlc0NvbnRlbnQiOlsiZXhwb3J0IHtkZWZhdWx0IGFzIGRzdkZvcm1hdH0gZnJvbSBcIi4vZHN2LmpzXCI7XG5leHBvcnQge2NzdlBhcnNlLCBjc3ZQYXJzZVJvd3MsIGNzdkZvcm1hdCwgY3N2Rm9ybWF0Qm9keSwgY3N2Rm9ybWF0Um93cywgY3N2Rm9ybWF0Um93LCBjc3ZGb3JtYXRWYWx1ZX0gZnJvbSBcIi4vY3N2LmpzXCI7XG5leHBvcnQge3RzdlBhcnNlLCB0c3ZQYXJzZVJvd3MsIHRzdkZvcm1hdCwgdHN2Rm9ybWF0Qm9keSwgdHN2Rm9ybWF0Um93cywgdHN2Rm9ybWF0Um93LCB0c3ZGb3JtYXRWYWx1ZX0gZnJvbSBcIi4vdHN2LmpzXCI7XG5leHBvcnQge2RlZmF1bHQgYXMgYXV0b1R5cGV9IGZyb20gXCIuL2F1dG9UeXBlLmpzXCI7XG4iXSwibWFwcGluZ3MiOiJBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7Iiwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///./node_modules/vega-label/node_modules/d3-dsv/src/index.js\n");

/***/ }),

/***/ "./node_modules/vega-label/node_modules/d3-dsv/src/tsv.js":
/*!****************************************************************!*\
  !*** ./node_modules/vega-label/node_modules/d3-dsv/src/tsv.js ***!
  \****************************************************************/
/*! exports provided: tsvParse, tsvParseRows, tsvFormat, tsvFormatBody, tsvFormatRows, tsvFormatRow, tsvFormatValue */
/***/ (function(module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"tsvParse\", function() { return tsvParse; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"tsvParseRows\", function() { return tsvParseRows; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"tsvFormat\", function() { return tsvFormat; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"tsvFormatBody\", function() { return tsvFormatBody; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"tsvFormatRows\", function() { return tsvFormatRows; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"tsvFormatRow\", function() { return tsvFormatRow; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"tsvFormatValue\", function() { return tsvFormatValue; });\n/* harmony import */ var _dsv_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./dsv.js */ \"./node_modules/vega-label/node_modules/d3-dsv/src/dsv.js\");\n\n\nvar tsv = Object(_dsv_js__WEBPACK_IMPORTED_MODULE_0__[\"default\"])(\"\\t\");\n\nvar tsvParse = tsv.parse;\nvar tsvParseRows = tsv.parseRows;\nvar tsvFormat = tsv.format;\nvar tsvFormatBody = tsv.formatBody;\nvar tsvFormatRows = tsv.formatRows;\nvar tsvFormatRow = tsv.formatRow;\nvar tsvFormatValue = tsv.formatValue;\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvdmVnYS1sYWJlbC9ub2RlX21vZHVsZXMvZDMtZHN2L3NyYy90c3YuanMuanMiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvdmVnYS1sYWJlbC9ub2RlX21vZHVsZXMvZDMtZHN2L3NyYy90c3YuanM/YWYxNSJdLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgZHN2IGZyb20gXCIuL2Rzdi5qc1wiO1xuXG52YXIgdHN2ID0gZHN2KFwiXFx0XCIpO1xuXG5leHBvcnQgdmFyIHRzdlBhcnNlID0gdHN2LnBhcnNlO1xuZXhwb3J0IHZhciB0c3ZQYXJzZVJvd3MgPSB0c3YucGFyc2VSb3dzO1xuZXhwb3J0IHZhciB0c3ZGb3JtYXQgPSB0c3YuZm9ybWF0O1xuZXhwb3J0IHZhciB0c3ZGb3JtYXRCb2R5ID0gdHN2LmZvcm1hdEJvZHk7XG5leHBvcnQgdmFyIHRzdkZvcm1hdFJvd3MgPSB0c3YuZm9ybWF0Um93cztcbmV4cG9ydCB2YXIgdHN2Rm9ybWF0Um93ID0gdHN2LmZvcm1hdFJvdztcbmV4cG9ydCB2YXIgdHN2Rm9ybWF0VmFsdWUgPSB0c3YuZm9ybWF0VmFsdWU7XG4iXSwibWFwcGluZ3MiOiJBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7Iiwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///./node_modules/vega-label/node_modules/d3-dsv/src/tsv.js\n");

/***/ }),

/***/ "./node_modules/vega-label/node_modules/d3-format/src/defaultLocale.js":
/*!*****************************************************************************!*\
  !*** ./node_modules/vega-label/node_modules/d3-format/src/defaultLocale.js ***!
  \*****************************************************************************/
/*! exports provided: format, formatPrefix, default */
/***/ (function(module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"format\", function() { return format; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"formatPrefix\", function() { return formatPrefix; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"default\", function() { return defaultLocale; });\n/* harmony import */ var _locale_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./locale.js */ \"./node_modules/vega-label/node_modules/d3-format/src/locale.js\");\n\n\nvar locale;\nvar format;\nvar formatPrefix;\n\ndefaultLocale({\n  thousands: \",\",\n  grouping: [3],\n  currency: [\"$\", \"\"]\n});\n\nfunction defaultLocale(definition) {\n  locale = Object(_locale_js__WEBPACK_IMPORTED_MODULE_0__[\"default\"])(definition);\n  format = locale.format;\n  formatPrefix = locale.formatPrefix;\n  return locale;\n}\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvdmVnYS1sYWJlbC9ub2RlX21vZHVsZXMvZDMtZm9ybWF0L3NyYy9kZWZhdWx0TG9jYWxlLmpzLmpzIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL3ZlZ2EtbGFiZWwvbm9kZV9tb2R1bGVzL2QzLWZvcm1hdC9zcmMvZGVmYXVsdExvY2FsZS5qcz9jZDkxIl0sInNvdXJjZXNDb250ZW50IjpbImltcG9ydCBmb3JtYXRMb2NhbGUgZnJvbSBcIi4vbG9jYWxlLmpzXCI7XG5cbnZhciBsb2NhbGU7XG5leHBvcnQgdmFyIGZvcm1hdDtcbmV4cG9ydCB2YXIgZm9ybWF0UHJlZml4O1xuXG5kZWZhdWx0TG9jYWxlKHtcbiAgdGhvdXNhbmRzOiBcIixcIixcbiAgZ3JvdXBpbmc6IFszXSxcbiAgY3VycmVuY3k6IFtcIiRcIiwgXCJcIl1cbn0pO1xuXG5leHBvcnQgZGVmYXVsdCBmdW5jdGlvbiBkZWZhdWx0TG9jYWxlKGRlZmluaXRpb24pIHtcbiAgbG9jYWxlID0gZm9ybWF0TG9jYWxlKGRlZmluaXRpb24pO1xuICBmb3JtYXQgPSBsb2NhbGUuZm9ybWF0O1xuICBmb3JtYXRQcmVmaXggPSBsb2NhbGUuZm9ybWF0UHJlZml4O1xuICByZXR1cm4gbG9jYWxlO1xufVxuIl0sIm1hcHBpbmdzIjoiQUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOyIsInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///./node_modules/vega-label/node_modules/d3-format/src/defaultLocale.js\n");

/***/ }),

/***/ "./node_modules/vega-label/node_modules/d3-format/src/exponent.js":
/*!************************************************************************!*\
  !*** ./node_modules/vega-label/node_modules/d3-format/src/exponent.js ***!
  \************************************************************************/
/*! exports provided: default */
/***/ (function(module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _formatDecimal_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./formatDecimal.js */ \"./node_modules/vega-label/node_modules/d3-format/src/formatDecimal.js\");\n\n\n/* harmony default export */ __webpack_exports__[\"default\"] = (function(x) {\n  return x = Object(_formatDecimal_js__WEBPACK_IMPORTED_MODULE_0__[\"formatDecimalParts\"])(Math.abs(x)), x ? x[1] : NaN;\n});\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvdmVnYS1sYWJlbC9ub2RlX21vZHVsZXMvZDMtZm9ybWF0L3NyYy9leHBvbmVudC5qcy5qcyIsInNvdXJjZXMiOlsid2VicGFjazovLy8uL25vZGVfbW9kdWxlcy92ZWdhLWxhYmVsL25vZGVfbW9kdWxlcy9kMy1mb3JtYXQvc3JjL2V4cG9uZW50LmpzPzMzNDUiXSwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtmb3JtYXREZWNpbWFsUGFydHN9IGZyb20gXCIuL2Zvcm1hdERlY2ltYWwuanNcIjtcblxuZXhwb3J0IGRlZmF1bHQgZnVuY3Rpb24oeCkge1xuICByZXR1cm4geCA9IGZvcm1hdERlY2ltYWxQYXJ0cyhNYXRoLmFicyh4KSksIHggPyB4WzFdIDogTmFOO1xufVxuIl0sIm1hcHBpbmdzIjoiQUFBQTtBQUFBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTsiLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///./node_modules/vega-label/node_modules/d3-format/src/exponent.js\n");

/***/ }),

/***/ "./node_modules/vega-label/node_modules/d3-format/src/formatDecimal.js":
/*!*****************************************************************************!*\
  !*** ./node_modules/vega-label/node_modules/d3-format/src/formatDecimal.js ***!
  \*****************************************************************************/
/*! exports provided: default, formatDecimalParts */
/***/ (function(module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"formatDecimalParts\", function() { return formatDecimalParts; });\n/* harmony default export */ __webpack_exports__[\"default\"] = (function(x) {\n  return Math.abs(x = Math.round(x)) >= 1e21\n      ? x.toLocaleString(\"en\").replace(/,/g, \"\")\n      : x.toString(10);\n});\n\n// Computes the decimal coefficient and exponent of the specified number x with\n// significant digits p, where x is positive and p is in [1, 21] or undefined.\n// For example, formatDecimalParts(1.23) returns [\"123\", 0].\nfunction formatDecimalParts(x, p) {\n  if ((i = (x = p ? x.toExponential(p - 1) : x.toExponential()).indexOf(\"e\")) < 0) return null; // NaN, ±Infinity\n  var i, coefficient = x.slice(0, i);\n\n  // The string returned by toExponential either has the form \\d\\.\\d+e[-+]\\d+\n  // (e.g., 1.2e+3) or the form \\de[-+]\\d+ (e.g., 1e+3).\n  return [\n    coefficient.length > 1 ? coefficient[0] + coefficient.slice(2) : coefficient,\n    +x.slice(i + 1)\n  ];\n}\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvdmVnYS1sYWJlbC9ub2RlX21vZHVsZXMvZDMtZm9ybWF0L3NyYy9mb3JtYXREZWNpbWFsLmpzLmpzIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL3ZlZ2EtbGFiZWwvbm9kZV9tb2R1bGVzL2QzLWZvcm1hdC9zcmMvZm9ybWF0RGVjaW1hbC5qcz9kNDU4Il0sInNvdXJjZXNDb250ZW50IjpbImV4cG9ydCBkZWZhdWx0IGZ1bmN0aW9uKHgpIHtcbiAgcmV0dXJuIE1hdGguYWJzKHggPSBNYXRoLnJvdW5kKHgpKSA+PSAxZTIxXG4gICAgICA/IHgudG9Mb2NhbGVTdHJpbmcoXCJlblwiKS5yZXBsYWNlKC8sL2csIFwiXCIpXG4gICAgICA6IHgudG9TdHJpbmcoMTApO1xufVxuXG4vLyBDb21wdXRlcyB0aGUgZGVjaW1hbCBjb2VmZmljaWVudCBhbmQgZXhwb25lbnQgb2YgdGhlIHNwZWNpZmllZCBudW1iZXIgeCB3aXRoXG4vLyBzaWduaWZpY2FudCBkaWdpdHMgcCwgd2hlcmUgeCBpcyBwb3NpdGl2ZSBhbmQgcCBpcyBpbiBbMSwgMjFdIG9yIHVuZGVmaW5lZC5cbi8vIEZvciBleGFtcGxlLCBmb3JtYXREZWNpbWFsUGFydHMoMS4yMykgcmV0dXJucyBbXCIxMjNcIiwgMF0uXG5leHBvcnQgZnVuY3Rpb24gZm9ybWF0RGVjaW1hbFBhcnRzKHgsIHApIHtcbiAgaWYgKChpID0gKHggPSBwID8geC50b0V4cG9uZW50aWFsKHAgLSAxKSA6IHgudG9FeHBvbmVudGlhbCgpKS5pbmRleE9mKFwiZVwiKSkgPCAwKSByZXR1cm4gbnVsbDsgLy8gTmFOLCDCsUluZmluaXR5XG4gIHZhciBpLCBjb2VmZmljaWVudCA9IHguc2xpY2UoMCwgaSk7XG5cbiAgLy8gVGhlIHN0cmluZyByZXR1cm5lZCBieSB0b0V4cG9uZW50aWFsIGVpdGhlciBoYXMgdGhlIGZvcm0gXFxkXFwuXFxkK2VbLStdXFxkK1xuICAvLyAoZS5nLiwgMS4yZSszKSBvciB0aGUgZm9ybSBcXGRlWy0rXVxcZCsgKGUuZy4sIDFlKzMpLlxuICByZXR1cm4gW1xuICAgIGNvZWZmaWNpZW50Lmxlbmd0aCA+IDEgPyBjb2VmZmljaWVudFswXSArIGNvZWZmaWNpZW50LnNsaWNlKDIpIDogY29lZmZpY2llbnQsXG4gICAgK3guc2xpY2UoaSArIDEpXG4gIF07XG59XG4iXSwibWFwcGluZ3MiOiJBQUFBO0FBQUE7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOyIsInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///./node_modules/vega-label/node_modules/d3-format/src/formatDecimal.js\n");

/***/ }),

/***/ "./node_modules/vega-label/node_modules/d3-format/src/formatGroup.js":
/*!***************************************************************************!*\
  !*** ./node_modules/vega-label/node_modules/d3-format/src/formatGroup.js ***!
  \***************************************************************************/
/*! exports provided: default */
/***/ (function(module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony default export */ __webpack_exports__[\"default\"] = (function(grouping, thousands) {\n  return function(value, width) {\n    var i = value.length,\n        t = [],\n        j = 0,\n        g = grouping[0],\n        length = 0;\n\n    while (i > 0 && g > 0) {\n      if (length + g + 1 > width) g = Math.max(1, width - length);\n      t.push(value.substring(i -= g, i + g));\n      if ((length += g + 1) > width) break;\n      g = grouping[j = (j + 1) % grouping.length];\n    }\n\n    return t.reverse().join(thousands);\n  };\n});\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvdmVnYS1sYWJlbC9ub2RlX21vZHVsZXMvZDMtZm9ybWF0L3NyYy9mb3JtYXRHcm91cC5qcy5qcyIsInNvdXJjZXMiOlsid2VicGFjazovLy8uL25vZGVfbW9kdWxlcy92ZWdhLWxhYmVsL25vZGVfbW9kdWxlcy9kMy1mb3JtYXQvc3JjL2Zvcm1hdEdyb3VwLmpzPzkxM2QiXSwic291cmNlc0NvbnRlbnQiOlsiZXhwb3J0IGRlZmF1bHQgZnVuY3Rpb24oZ3JvdXBpbmcsIHRob3VzYW5kcykge1xuICByZXR1cm4gZnVuY3Rpb24odmFsdWUsIHdpZHRoKSB7XG4gICAgdmFyIGkgPSB2YWx1ZS5sZW5ndGgsXG4gICAgICAgIHQgPSBbXSxcbiAgICAgICAgaiA9IDAsXG4gICAgICAgIGcgPSBncm91cGluZ1swXSxcbiAgICAgICAgbGVuZ3RoID0gMDtcblxuICAgIHdoaWxlIChpID4gMCAmJiBnID4gMCkge1xuICAgICAgaWYgKGxlbmd0aCArIGcgKyAxID4gd2lkdGgpIGcgPSBNYXRoLm1heCgxLCB3aWR0aCAtIGxlbmd0aCk7XG4gICAgICB0LnB1c2godmFsdWUuc3Vic3RyaW5nKGkgLT0gZywgaSArIGcpKTtcbiAgICAgIGlmICgobGVuZ3RoICs9IGcgKyAxKSA+IHdpZHRoKSBicmVhaztcbiAgICAgIGcgPSBncm91cGluZ1tqID0gKGogKyAxKSAlIGdyb3VwaW5nLmxlbmd0aF07XG4gICAgfVxuXG4gICAgcmV0dXJuIHQucmV2ZXJzZSgpLmpvaW4odGhvdXNhbmRzKTtcbiAgfTtcbn1cbiJdLCJtYXBwaW5ncyI6IkFBQUE7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7Iiwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///./node_modules/vega-label/node_modules/d3-format/src/formatGroup.js\n");

/***/ }),

/***/ "./node_modules/vega-label/node_modules/d3-format/src/formatNumerals.js":
/*!******************************************************************************!*\
  !*** ./node_modules/vega-label/node_modules/d3-format/src/formatNumerals.js ***!
  \******************************************************************************/
/*! exports provided: default */
/***/ (function(module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony default export */ __webpack_exports__[\"default\"] = (function(numerals) {\n  return function(value) {\n    return value.replace(/[0-9]/g, function(i) {\n      return numerals[+i];\n    });\n  };\n});\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvdmVnYS1sYWJlbC9ub2RlX21vZHVsZXMvZDMtZm9ybWF0L3NyYy9mb3JtYXROdW1lcmFscy5qcy5qcyIsInNvdXJjZXMiOlsid2VicGFjazovLy8uL25vZGVfbW9kdWxlcy92ZWdhLWxhYmVsL25vZGVfbW9kdWxlcy9kMy1mb3JtYXQvc3JjL2Zvcm1hdE51bWVyYWxzLmpzPzNmYjUiXSwic291cmNlc0NvbnRlbnQiOlsiZXhwb3J0IGRlZmF1bHQgZnVuY3Rpb24obnVtZXJhbHMpIHtcbiAgcmV0dXJuIGZ1bmN0aW9uKHZhbHVlKSB7XG4gICAgcmV0dXJuIHZhbHVlLnJlcGxhY2UoL1swLTldL2csIGZ1bmN0aW9uKGkpIHtcbiAgICAgIHJldHVybiBudW1lcmFsc1sraV07XG4gICAgfSk7XG4gIH07XG59XG4iXSwibWFwcGluZ3MiOiJBQUFBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7Iiwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///./node_modules/vega-label/node_modules/d3-format/src/formatNumerals.js\n");

/***/ }),

/***/ "./node_modules/vega-label/node_modules/d3-format/src/formatPrefixAuto.js":
/*!********************************************************************************!*\
  !*** ./node_modules/vega-label/node_modules/d3-format/src/formatPrefixAuto.js ***!
  \********************************************************************************/
/*! exports provided: prefixExponent, default */
/***/ (function(module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"prefixExponent\", function() { return prefixExponent; });\n/* harmony import */ var _formatDecimal_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./formatDecimal.js */ \"./node_modules/vega-label/node_modules/d3-format/src/formatDecimal.js\");\n\n\nvar prefixExponent;\n\n/* harmony default export */ __webpack_exports__[\"default\"] = (function(x, p) {\n  var d = Object(_formatDecimal_js__WEBPACK_IMPORTED_MODULE_0__[\"formatDecimalParts\"])(x, p);\n  if (!d) return x + \"\";\n  var coefficient = d[0],\n      exponent = d[1],\n      i = exponent - (prefixExponent = Math.max(-8, Math.min(8, Math.floor(exponent / 3))) * 3) + 1,\n      n = coefficient.length;\n  return i === n ? coefficient\n      : i > n ? coefficient + new Array(i - n + 1).join(\"0\")\n      : i > 0 ? coefficient.slice(0, i) + \".\" + coefficient.slice(i)\n      : \"0.\" + new Array(1 - i).join(\"0\") + Object(_formatDecimal_js__WEBPACK_IMPORTED_MODULE_0__[\"formatDecimalParts\"])(x, Math.max(0, p + i - 1))[0]; // less than 1y!\n});\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvdmVnYS1sYWJlbC9ub2RlX21vZHVsZXMvZDMtZm9ybWF0L3NyYy9mb3JtYXRQcmVmaXhBdXRvLmpzLmpzIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL3ZlZ2EtbGFiZWwvbm9kZV9tb2R1bGVzL2QzLWZvcm1hdC9zcmMvZm9ybWF0UHJlZml4QXV0by5qcz9mZjU1Il0sInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7Zm9ybWF0RGVjaW1hbFBhcnRzfSBmcm9tIFwiLi9mb3JtYXREZWNpbWFsLmpzXCI7XG5cbmV4cG9ydCB2YXIgcHJlZml4RXhwb25lbnQ7XG5cbmV4cG9ydCBkZWZhdWx0IGZ1bmN0aW9uKHgsIHApIHtcbiAgdmFyIGQgPSBmb3JtYXREZWNpbWFsUGFydHMoeCwgcCk7XG4gIGlmICghZCkgcmV0dXJuIHggKyBcIlwiO1xuICB2YXIgY29lZmZpY2llbnQgPSBkWzBdLFxuICAgICAgZXhwb25lbnQgPSBkWzFdLFxuICAgICAgaSA9IGV4cG9uZW50IC0gKHByZWZpeEV4cG9uZW50ID0gTWF0aC5tYXgoLTgsIE1hdGgubWluKDgsIE1hdGguZmxvb3IoZXhwb25lbnQgLyAzKSkpICogMykgKyAxLFxuICAgICAgbiA9IGNvZWZmaWNpZW50Lmxlbmd0aDtcbiAgcmV0dXJuIGkgPT09IG4gPyBjb2VmZmljaWVudFxuICAgICAgOiBpID4gbiA/IGNvZWZmaWNpZW50ICsgbmV3IEFycmF5KGkgLSBuICsgMSkuam9pbihcIjBcIilcbiAgICAgIDogaSA+IDAgPyBjb2VmZmljaWVudC5zbGljZSgwLCBpKSArIFwiLlwiICsgY29lZmZpY2llbnQuc2xpY2UoaSlcbiAgICAgIDogXCIwLlwiICsgbmV3IEFycmF5KDEgLSBpKS5qb2luKFwiMFwiKSArIGZvcm1hdERlY2ltYWxQYXJ0cyh4LCBNYXRoLm1heCgwLCBwICsgaSAtIDEpKVswXTsgLy8gbGVzcyB0aGFuIDF5IVxufVxuIl0sIm1hcHBpbmdzIjoiQUFBQTtBQUFBO0FBQUE7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTsiLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///./node_modules/vega-label/node_modules/d3-format/src/formatPrefixAuto.js\n");

/***/ }),

/***/ "./node_modules/vega-label/node_modules/d3-format/src/formatRounded.js":
/*!*****************************************************************************!*\
  !*** ./node_modules/vega-label/node_modules/d3-format/src/formatRounded.js ***!
  \*****************************************************************************/
/*! exports provided: default */
/***/ (function(module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _formatDecimal_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./formatDecimal.js */ \"./node_modules/vega-label/node_modules/d3-format/src/formatDecimal.js\");\n\n\n/* harmony default export */ __webpack_exports__[\"default\"] = (function(x, p) {\n  var d = Object(_formatDecimal_js__WEBPACK_IMPORTED_MODULE_0__[\"formatDecimalParts\"])(x, p);\n  if (!d) return x + \"\";\n  var coefficient = d[0],\n      exponent = d[1];\n  return exponent < 0 ? \"0.\" + new Array(-exponent).join(\"0\") + coefficient\n      : coefficient.length > exponent + 1 ? coefficient.slice(0, exponent + 1) + \".\" + coefficient.slice(exponent + 1)\n      : coefficient + new Array(exponent - coefficient.length + 2).join(\"0\");\n});\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvdmVnYS1sYWJlbC9ub2RlX21vZHVsZXMvZDMtZm9ybWF0L3NyYy9mb3JtYXRSb3VuZGVkLmpzLmpzIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL3ZlZ2EtbGFiZWwvbm9kZV9tb2R1bGVzL2QzLWZvcm1hdC9zcmMvZm9ybWF0Um91bmRlZC5qcz84OTA1Il0sInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7Zm9ybWF0RGVjaW1hbFBhcnRzfSBmcm9tIFwiLi9mb3JtYXREZWNpbWFsLmpzXCI7XG5cbmV4cG9ydCBkZWZhdWx0IGZ1bmN0aW9uKHgsIHApIHtcbiAgdmFyIGQgPSBmb3JtYXREZWNpbWFsUGFydHMoeCwgcCk7XG4gIGlmICghZCkgcmV0dXJuIHggKyBcIlwiO1xuICB2YXIgY29lZmZpY2llbnQgPSBkWzBdLFxuICAgICAgZXhwb25lbnQgPSBkWzFdO1xuICByZXR1cm4gZXhwb25lbnQgPCAwID8gXCIwLlwiICsgbmV3IEFycmF5KC1leHBvbmVudCkuam9pbihcIjBcIikgKyBjb2VmZmljaWVudFxuICAgICAgOiBjb2VmZmljaWVudC5sZW5ndGggPiBleHBvbmVudCArIDEgPyBjb2VmZmljaWVudC5zbGljZSgwLCBleHBvbmVudCArIDEpICsgXCIuXCIgKyBjb2VmZmljaWVudC5zbGljZShleHBvbmVudCArIDEpXG4gICAgICA6IGNvZWZmaWNpZW50ICsgbmV3IEFycmF5KGV4cG9uZW50IC0gY29lZmZpY2llbnQubGVuZ3RoICsgMikuam9pbihcIjBcIik7XG59XG4iXSwibWFwcGluZ3MiOiJBQUFBO0FBQUE7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOyIsInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///./node_modules/vega-label/node_modules/d3-format/src/formatRounded.js\n");

/***/ }),

/***/ "./node_modules/vega-label/node_modules/d3-format/src/formatSpecifier.js":
/*!*******************************************************************************!*\
  !*** ./node_modules/vega-label/node_modules/d3-format/src/formatSpecifier.js ***!
  \*******************************************************************************/
/*! exports provided: default, FormatSpecifier */
/***/ (function(module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"default\", function() { return formatSpecifier; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"FormatSpecifier\", function() { return FormatSpecifier; });\n// [[fill]align][sign][symbol][0][width][,][.precision][~][type]\nvar re = /^(?:(.)?([<>=^]))?([+\\-( ])?([$#])?(0)?(\\d+)?(,)?(\\.\\d+)?(~)?([a-z%])?$/i;\n\nfunction formatSpecifier(specifier) {\n  if (!(match = re.exec(specifier))) throw new Error(\"invalid format: \" + specifier);\n  var match;\n  return new FormatSpecifier({\n    fill: match[1],\n    align: match[2],\n    sign: match[3],\n    symbol: match[4],\n    zero: match[5],\n    width: match[6],\n    comma: match[7],\n    precision: match[8] && match[8].slice(1),\n    trim: match[9],\n    type: match[10]\n  });\n}\n\nformatSpecifier.prototype = FormatSpecifier.prototype; // instanceof\n\nfunction FormatSpecifier(specifier) {\n  this.fill = specifier.fill === undefined ? \" \" : specifier.fill + \"\";\n  this.align = specifier.align === undefined ? \">\" : specifier.align + \"\";\n  this.sign = specifier.sign === undefined ? \"-\" : specifier.sign + \"\";\n  this.symbol = specifier.symbol === undefined ? \"\" : specifier.symbol + \"\";\n  this.zero = !!specifier.zero;\n  this.width = specifier.width === undefined ? undefined : +specifier.width;\n  this.comma = !!specifier.comma;\n  this.precision = specifier.precision === undefined ? undefined : +specifier.precision;\n  this.trim = !!specifier.trim;\n  this.type = specifier.type === undefined ? \"\" : specifier.type + \"\";\n}\n\nFormatSpecifier.prototype.toString = function() {\n  return this.fill\n      + this.align\n      + this.sign\n      + this.symbol\n      + (this.zero ? \"0\" : \"\")\n      + (this.width === undefined ? \"\" : Math.max(1, this.width | 0))\n      + (this.comma ? \",\" : \"\")\n      + (this.precision === undefined ? \"\" : \".\" + Math.max(0, this.precision | 0))\n      + (this.trim ? \"~\" : \"\")\n      + this.type;\n};\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvdmVnYS1sYWJlbC9ub2RlX21vZHVsZXMvZDMtZm9ybWF0L3NyYy9mb3JtYXRTcGVjaWZpZXIuanMuanMiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvdmVnYS1sYWJlbC9ub2RlX21vZHVsZXMvZDMtZm9ybWF0L3NyYy9mb3JtYXRTcGVjaWZpZXIuanM/ZmY1MiJdLCJzb3VyY2VzQ29udGVudCI6WyIvLyBbW2ZpbGxdYWxpZ25dW3NpZ25dW3N5bWJvbF1bMF1bd2lkdGhdWyxdWy5wcmVjaXNpb25dW35dW3R5cGVdXG52YXIgcmUgPSAvXig/OiguKT8oWzw+PV5dKSk/KFsrXFwtKCBdKT8oWyQjXSk/KDApPyhcXGQrKT8oLCk/KFxcLlxcZCspPyh+KT8oW2EteiVdKT8kL2k7XG5cbmV4cG9ydCBkZWZhdWx0IGZ1bmN0aW9uIGZvcm1hdFNwZWNpZmllcihzcGVjaWZpZXIpIHtcbiAgaWYgKCEobWF0Y2ggPSByZS5leGVjKHNwZWNpZmllcikpKSB0aHJvdyBuZXcgRXJyb3IoXCJpbnZhbGlkIGZvcm1hdDogXCIgKyBzcGVjaWZpZXIpO1xuICB2YXIgbWF0Y2g7XG4gIHJldHVybiBuZXcgRm9ybWF0U3BlY2lmaWVyKHtcbiAgICBmaWxsOiBtYXRjaFsxXSxcbiAgICBhbGlnbjogbWF0Y2hbMl0sXG4gICAgc2lnbjogbWF0Y2hbM10sXG4gICAgc3ltYm9sOiBtYXRjaFs0XSxcbiAgICB6ZXJvOiBtYXRjaFs1XSxcbiAgICB3aWR0aDogbWF0Y2hbNl0sXG4gICAgY29tbWE6IG1hdGNoWzddLFxuICAgIHByZWNpc2lvbjogbWF0Y2hbOF0gJiYgbWF0Y2hbOF0uc2xpY2UoMSksXG4gICAgdHJpbTogbWF0Y2hbOV0sXG4gICAgdHlwZTogbWF0Y2hbMTBdXG4gIH0pO1xufVxuXG5mb3JtYXRTcGVjaWZpZXIucHJvdG90eXBlID0gRm9ybWF0U3BlY2lmaWVyLnByb3RvdHlwZTsgLy8gaW5zdGFuY2VvZlxuXG5leHBvcnQgZnVuY3Rpb24gRm9ybWF0U3BlY2lmaWVyKHNwZWNpZmllcikge1xuICB0aGlzLmZpbGwgPSBzcGVjaWZpZXIuZmlsbCA9PT0gdW5kZWZpbmVkID8gXCIgXCIgOiBzcGVjaWZpZXIuZmlsbCArIFwiXCI7XG4gIHRoaXMuYWxpZ24gPSBzcGVjaWZpZXIuYWxpZ24gPT09IHVuZGVmaW5lZCA/IFwiPlwiIDogc3BlY2lmaWVyLmFsaWduICsgXCJcIjtcbiAgdGhpcy5zaWduID0gc3BlY2lmaWVyLnNpZ24gPT09IHVuZGVmaW5lZCA/IFwiLVwiIDogc3BlY2lmaWVyLnNpZ24gKyBcIlwiO1xuICB0aGlzLnN5bWJvbCA9IHNwZWNpZmllci5zeW1ib2wgPT09IHVuZGVmaW5lZCA/IFwiXCIgOiBzcGVjaWZpZXIuc3ltYm9sICsgXCJcIjtcbiAgdGhpcy56ZXJvID0gISFzcGVjaWZpZXIuemVybztcbiAgdGhpcy53aWR0aCA9IHNwZWNpZmllci53aWR0aCA9PT0gdW5kZWZpbmVkID8gdW5kZWZpbmVkIDogK3NwZWNpZmllci53aWR0aDtcbiAgdGhpcy5jb21tYSA9ICEhc3BlY2lmaWVyLmNvbW1hO1xuICB0aGlzLnByZWNpc2lvbiA9IHNwZWNpZmllci5wcmVjaXNpb24gPT09IHVuZGVmaW5lZCA/IHVuZGVmaW5lZCA6ICtzcGVjaWZpZXIucHJlY2lzaW9uO1xuICB0aGlzLnRyaW0gPSAhIXNwZWNpZmllci50cmltO1xuICB0aGlzLnR5cGUgPSBzcGVjaWZpZXIudHlwZSA9PT0gdW5kZWZpbmVkID8gXCJcIiA6IHNwZWNpZmllci50eXBlICsgXCJcIjtcbn1cblxuRm9ybWF0U3BlY2lmaWVyLnByb3RvdHlwZS50b1N0cmluZyA9IGZ1bmN0aW9uKCkge1xuICByZXR1cm4gdGhpcy5maWxsXG4gICAgICArIHRoaXMuYWxpZ25cbiAgICAgICsgdGhpcy5zaWduXG4gICAgICArIHRoaXMuc3ltYm9sXG4gICAgICArICh0aGlzLnplcm8gPyBcIjBcIiA6IFwiXCIpXG4gICAgICArICh0aGlzLndpZHRoID09PSB1bmRlZmluZWQgPyBcIlwiIDogTWF0aC5tYXgoMSwgdGhpcy53aWR0aCB8IDApKVxuICAgICAgKyAodGhpcy5jb21tYSA/IFwiLFwiIDogXCJcIilcbiAgICAgICsgKHRoaXMucHJlY2lzaW9uID09PSB1bmRlZmluZWQgPyBcIlwiIDogXCIuXCIgKyBNYXRoLm1heCgwLCB0aGlzLnByZWNpc2lvbiB8IDApKVxuICAgICAgKyAodGhpcy50cmltID8gXCJ+XCIgOiBcIlwiKVxuICAgICAgKyB0aGlzLnR5cGU7XG59O1xuIl0sIm1hcHBpbmdzIjoiQUFBQTtBQUFBO0FBQUE7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOyIsInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///./node_modules/vega-label/node_modules/d3-format/src/formatSpecifier.js\n");

/***/ }),

/***/ "./node_modules/vega-label/node_modules/d3-format/src/formatTrim.js":
/*!**************************************************************************!*\
  !*** ./node_modules/vega-label/node_modules/d3-format/src/formatTrim.js ***!
  \**************************************************************************/
/*! exports provided: default */
/***/ (function(module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n// Trims insignificant zeros, e.g., replaces 1.2000k with 1.2k.\n/* harmony default export */ __webpack_exports__[\"default\"] = (function(s) {\n  out: for (var n = s.length, i = 1, i0 = -1, i1; i < n; ++i) {\n    switch (s[i]) {\n      case \".\": i0 = i1 = i; break;\n      case \"0\": if (i0 === 0) i0 = i; i1 = i; break;\n      default: if (!+s[i]) break out; if (i0 > 0) i0 = 0; break;\n    }\n  }\n  return i0 > 0 ? s.slice(0, i0) + s.slice(i1 + 1) : s;\n});\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvdmVnYS1sYWJlbC9ub2RlX21vZHVsZXMvZDMtZm9ybWF0L3NyYy9mb3JtYXRUcmltLmpzLmpzIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL3ZlZ2EtbGFiZWwvbm9kZV9tb2R1bGVzL2QzLWZvcm1hdC9zcmMvZm9ybWF0VHJpbS5qcz82ODdiIl0sInNvdXJjZXNDb250ZW50IjpbIi8vIFRyaW1zIGluc2lnbmlmaWNhbnQgemVyb3MsIGUuZy4sIHJlcGxhY2VzIDEuMjAwMGsgd2l0aCAxLjJrLlxuZXhwb3J0IGRlZmF1bHQgZnVuY3Rpb24ocykge1xuICBvdXQ6IGZvciAodmFyIG4gPSBzLmxlbmd0aCwgaSA9IDEsIGkwID0gLTEsIGkxOyBpIDwgbjsgKytpKSB7XG4gICAgc3dpdGNoIChzW2ldKSB7XG4gICAgICBjYXNlIFwiLlwiOiBpMCA9IGkxID0gaTsgYnJlYWs7XG4gICAgICBjYXNlIFwiMFwiOiBpZiAoaTAgPT09IDApIGkwID0gaTsgaTEgPSBpOyBicmVhaztcbiAgICAgIGRlZmF1bHQ6IGlmICghK3NbaV0pIGJyZWFrIG91dDsgaWYgKGkwID4gMCkgaTAgPSAwOyBicmVhaztcbiAgICB9XG4gIH1cbiAgcmV0dXJuIGkwID4gMCA/IHMuc2xpY2UoMCwgaTApICsgcy5zbGljZShpMSArIDEpIDogcztcbn1cbiJdLCJtYXBwaW5ncyI6IkFBQUE7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOyIsInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///./node_modules/vega-label/node_modules/d3-format/src/formatTrim.js\n");

/***/ }),

/***/ "./node_modules/vega-label/node_modules/d3-format/src/formatTypes.js":
/*!***************************************************************************!*\
  !*** ./node_modules/vega-label/node_modules/d3-format/src/formatTypes.js ***!
  \***************************************************************************/
/*! exports provided: default */
/***/ (function(module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _formatDecimal_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./formatDecimal.js */ \"./node_modules/vega-label/node_modules/d3-format/src/formatDecimal.js\");\n/* harmony import */ var _formatPrefixAuto_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./formatPrefixAuto.js */ \"./node_modules/vega-label/node_modules/d3-format/src/formatPrefixAuto.js\");\n/* harmony import */ var _formatRounded_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./formatRounded.js */ \"./node_modules/vega-label/node_modules/d3-format/src/formatRounded.js\");\n\n\n\n\n/* harmony default export */ __webpack_exports__[\"default\"] = ({\n  \"%\": (x, p) => (x * 100).toFixed(p),\n  \"b\": (x) => Math.round(x).toString(2),\n  \"c\": (x) => x + \"\",\n  \"d\": _formatDecimal_js__WEBPACK_IMPORTED_MODULE_0__[\"default\"],\n  \"e\": (x, p) => x.toExponential(p),\n  \"f\": (x, p) => x.toFixed(p),\n  \"g\": (x, p) => x.toPrecision(p),\n  \"o\": (x) => Math.round(x).toString(8),\n  \"p\": (x, p) => Object(_formatRounded_js__WEBPACK_IMPORTED_MODULE_2__[\"default\"])(x * 100, p),\n  \"r\": _formatRounded_js__WEBPACK_IMPORTED_MODULE_2__[\"default\"],\n  \"s\": _formatPrefixAuto_js__WEBPACK_IMPORTED_MODULE_1__[\"default\"],\n  \"X\": (x) => Math.round(x).toString(16).toUpperCase(),\n  \"x\": (x) => Math.round(x).toString(16)\n});\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvdmVnYS1sYWJlbC9ub2RlX21vZHVsZXMvZDMtZm9ybWF0L3NyYy9mb3JtYXRUeXBlcy5qcy5qcyIsInNvdXJjZXMiOlsid2VicGFjazovLy8uL25vZGVfbW9kdWxlcy92ZWdhLWxhYmVsL25vZGVfbW9kdWxlcy9kMy1mb3JtYXQvc3JjL2Zvcm1hdFR5cGVzLmpzP2VmZGEiXSwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IGZvcm1hdERlY2ltYWwgZnJvbSBcIi4vZm9ybWF0RGVjaW1hbC5qc1wiO1xuaW1wb3J0IGZvcm1hdFByZWZpeEF1dG8gZnJvbSBcIi4vZm9ybWF0UHJlZml4QXV0by5qc1wiO1xuaW1wb3J0IGZvcm1hdFJvdW5kZWQgZnJvbSBcIi4vZm9ybWF0Um91bmRlZC5qc1wiO1xuXG5leHBvcnQgZGVmYXVsdCB7XG4gIFwiJVwiOiAoeCwgcCkgPT4gKHggKiAxMDApLnRvRml4ZWQocCksXG4gIFwiYlwiOiAoeCkgPT4gTWF0aC5yb3VuZCh4KS50b1N0cmluZygyKSxcbiAgXCJjXCI6ICh4KSA9PiB4ICsgXCJcIixcbiAgXCJkXCI6IGZvcm1hdERlY2ltYWwsXG4gIFwiZVwiOiAoeCwgcCkgPT4geC50b0V4cG9uZW50aWFsKHApLFxuICBcImZcIjogKHgsIHApID0+IHgudG9GaXhlZChwKSxcbiAgXCJnXCI6ICh4LCBwKSA9PiB4LnRvUHJlY2lzaW9uKHApLFxuICBcIm9cIjogKHgpID0+IE1hdGgucm91bmQoeCkudG9TdHJpbmcoOCksXG4gIFwicFwiOiAoeCwgcCkgPT4gZm9ybWF0Um91bmRlZCh4ICogMTAwLCBwKSxcbiAgXCJyXCI6IGZvcm1hdFJvdW5kZWQsXG4gIFwic1wiOiBmb3JtYXRQcmVmaXhBdXRvLFxuICBcIlhcIjogKHgpID0+IE1hdGgucm91bmQoeCkudG9TdHJpbmcoMTYpLnRvVXBwZXJDYXNlKCksXG4gIFwieFwiOiAoeCkgPT4gTWF0aC5yb3VuZCh4KS50b1N0cmluZygxNilcbn07XG4iXSwibWFwcGluZ3MiOiJBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7Iiwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///./node_modules/vega-label/node_modules/d3-format/src/formatTypes.js\n");

/***/ }),

/***/ "./node_modules/vega-label/node_modules/d3-format/src/identity.js":
/*!************************************************************************!*\
  !*** ./node_modules/vega-label/node_modules/d3-format/src/identity.js ***!
  \************************************************************************/
/*! exports provided: default */
/***/ (function(module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony default export */ __webpack_exports__[\"default\"] = (function(x) {\n  return x;\n});\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvdmVnYS1sYWJlbC9ub2RlX21vZHVsZXMvZDMtZm9ybWF0L3NyYy9pZGVudGl0eS5qcy5qcyIsInNvdXJjZXMiOlsid2VicGFjazovLy8uL25vZGVfbW9kdWxlcy92ZWdhLWxhYmVsL25vZGVfbW9kdWxlcy9kMy1mb3JtYXQvc3JjL2lkZW50aXR5LmpzPzIwODYiXSwic291cmNlc0NvbnRlbnQiOlsiZXhwb3J0IGRlZmF1bHQgZnVuY3Rpb24oeCkge1xuICByZXR1cm4geDtcbn1cbiJdLCJtYXBwaW5ncyI6IkFBQUE7QUFBQTtBQUNBO0FBQ0E7Iiwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///./node_modules/vega-label/node_modules/d3-format/src/identity.js\n");

/***/ }),

/***/ "./node_modules/vega-label/node_modules/d3-format/src/index.js":
/*!*********************************************************************!*\
  !*** ./node_modules/vega-label/node_modules/d3-format/src/index.js ***!
  \*********************************************************************/
/*! exports provided: formatDefaultLocale, format, formatPrefix, formatLocale, formatSpecifier, FormatSpecifier, precisionFixed, precisionPrefix, precisionRound */
/***/ (function(module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _defaultLocale_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./defaultLocale.js */ \"./node_modules/vega-label/node_modules/d3-format/src/defaultLocale.js\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"formatDefaultLocale\", function() { return _defaultLocale_js__WEBPACK_IMPORTED_MODULE_0__[\"default\"]; });\n\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"format\", function() { return _defaultLocale_js__WEBPACK_IMPORTED_MODULE_0__[\"format\"]; });\n\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"formatPrefix\", function() { return _defaultLocale_js__WEBPACK_IMPORTED_MODULE_0__[\"formatPrefix\"]; });\n\n/* harmony import */ var _locale_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./locale.js */ \"./node_modules/vega-label/node_modules/d3-format/src/locale.js\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"formatLocale\", function() { return _locale_js__WEBPACK_IMPORTED_MODULE_1__[\"default\"]; });\n\n/* harmony import */ var _formatSpecifier_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./formatSpecifier.js */ \"./node_modules/vega-label/node_modules/d3-format/src/formatSpecifier.js\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"formatSpecifier\", function() { return _formatSpecifier_js__WEBPACK_IMPORTED_MODULE_2__[\"default\"]; });\n\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"FormatSpecifier\", function() { return _formatSpecifier_js__WEBPACK_IMPORTED_MODULE_2__[\"FormatSpecifier\"]; });\n\n/* harmony import */ var _precisionFixed_js__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ./precisionFixed.js */ \"./node_modules/vega-label/node_modules/d3-format/src/precisionFixed.js\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"precisionFixed\", function() { return _precisionFixed_js__WEBPACK_IMPORTED_MODULE_3__[\"default\"]; });\n\n/* harmony import */ var _precisionPrefix_js__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ./precisionPrefix.js */ \"./node_modules/vega-label/node_modules/d3-format/src/precisionPrefix.js\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"precisionPrefix\", function() { return _precisionPrefix_js__WEBPACK_IMPORTED_MODULE_4__[\"default\"]; });\n\n/* harmony import */ var _precisionRound_js__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! ./precisionRound.js */ \"./node_modules/vega-label/node_modules/d3-format/src/precisionRound.js\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"precisionRound\", function() { return _precisionRound_js__WEBPACK_IMPORTED_MODULE_5__[\"default\"]; });\n\n\n\n\n\n\n\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvdmVnYS1sYWJlbC9ub2RlX21vZHVsZXMvZDMtZm9ybWF0L3NyYy9pbmRleC5qcy5qcyIsInNvdXJjZXMiOlsid2VicGFjazovLy8uL25vZGVfbW9kdWxlcy92ZWdhLWxhYmVsL25vZGVfbW9kdWxlcy9kMy1mb3JtYXQvc3JjL2luZGV4LmpzPzFkMzMiXSwic291cmNlc0NvbnRlbnQiOlsiZXhwb3J0IHtkZWZhdWx0IGFzIGZvcm1hdERlZmF1bHRMb2NhbGUsIGZvcm1hdCwgZm9ybWF0UHJlZml4fSBmcm9tIFwiLi9kZWZhdWx0TG9jYWxlLmpzXCI7XG5leHBvcnQge2RlZmF1bHQgYXMgZm9ybWF0TG9jYWxlfSBmcm9tIFwiLi9sb2NhbGUuanNcIjtcbmV4cG9ydCB7ZGVmYXVsdCBhcyBmb3JtYXRTcGVjaWZpZXIsIEZvcm1hdFNwZWNpZmllcn0gZnJvbSBcIi4vZm9ybWF0U3BlY2lmaWVyLmpzXCI7XG5leHBvcnQge2RlZmF1bHQgYXMgcHJlY2lzaW9uRml4ZWR9IGZyb20gXCIuL3ByZWNpc2lvbkZpeGVkLmpzXCI7XG5leHBvcnQge2RlZmF1bHQgYXMgcHJlY2lzaW9uUHJlZml4fSBmcm9tIFwiLi9wcmVjaXNpb25QcmVmaXguanNcIjtcbmV4cG9ydCB7ZGVmYXVsdCBhcyBwcmVjaXNpb25Sb3VuZH0gZnJvbSBcIi4vcHJlY2lzaW9uUm91bmQuanNcIjtcbiJdLCJtYXBwaW5ncyI6IkFBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7Iiwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///./node_modules/vega-label/node_modules/d3-format/src/index.js\n");

/***/ }),

/***/ "./node_modules/vega-label/node_modules/d3-format/src/locale.js":
/*!**********************************************************************!*\
  !*** ./node_modules/vega-label/node_modules/d3-format/src/locale.js ***!
  \**********************************************************************/
/*! exports provided: default */
/***/ (function(module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _exponent_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./exponent.js */ \"./node_modules/vega-label/node_modules/d3-format/src/exponent.js\");\n/* harmony import */ var _formatGroup_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./formatGroup.js */ \"./node_modules/vega-label/node_modules/d3-format/src/formatGroup.js\");\n/* harmony import */ var _formatNumerals_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./formatNumerals.js */ \"./node_modules/vega-label/node_modules/d3-format/src/formatNumerals.js\");\n/* harmony import */ var _formatSpecifier_js__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ./formatSpecifier.js */ \"./node_modules/vega-label/node_modules/d3-format/src/formatSpecifier.js\");\n/* harmony import */ var _formatTrim_js__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ./formatTrim.js */ \"./node_modules/vega-label/node_modules/d3-format/src/formatTrim.js\");\n/* harmony import */ var _formatTypes_js__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! ./formatTypes.js */ \"./node_modules/vega-label/node_modules/d3-format/src/formatTypes.js\");\n/* harmony import */ var _formatPrefixAuto_js__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! ./formatPrefixAuto.js */ \"./node_modules/vega-label/node_modules/d3-format/src/formatPrefixAuto.js\");\n/* harmony import */ var _identity_js__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! ./identity.js */ \"./node_modules/vega-label/node_modules/d3-format/src/identity.js\");\n\n\n\n\n\n\n\n\n\nvar map = Array.prototype.map,\n    prefixes = [\"y\",\"z\",\"a\",\"f\",\"p\",\"n\",\"µ\",\"m\",\"\",\"k\",\"M\",\"G\",\"T\",\"P\",\"E\",\"Z\",\"Y\"];\n\n/* harmony default export */ __webpack_exports__[\"default\"] = (function(locale) {\n  var group = locale.grouping === undefined || locale.thousands === undefined ? _identity_js__WEBPACK_IMPORTED_MODULE_7__[\"default\"] : Object(_formatGroup_js__WEBPACK_IMPORTED_MODULE_1__[\"default\"])(map.call(locale.grouping, Number), locale.thousands + \"\"),\n      currencyPrefix = locale.currency === undefined ? \"\" : locale.currency[0] + \"\",\n      currencySuffix = locale.currency === undefined ? \"\" : locale.currency[1] + \"\",\n      decimal = locale.decimal === undefined ? \".\" : locale.decimal + \"\",\n      numerals = locale.numerals === undefined ? _identity_js__WEBPACK_IMPORTED_MODULE_7__[\"default\"] : Object(_formatNumerals_js__WEBPACK_IMPORTED_MODULE_2__[\"default\"])(map.call(locale.numerals, String)),\n      percent = locale.percent === undefined ? \"%\" : locale.percent + \"\",\n      minus = locale.minus === undefined ? \"−\" : locale.minus + \"\",\n      nan = locale.nan === undefined ? \"NaN\" : locale.nan + \"\";\n\n  function newFormat(specifier) {\n    specifier = Object(_formatSpecifier_js__WEBPACK_IMPORTED_MODULE_3__[\"default\"])(specifier);\n\n    var fill = specifier.fill,\n        align = specifier.align,\n        sign = specifier.sign,\n        symbol = specifier.symbol,\n        zero = specifier.zero,\n        width = specifier.width,\n        comma = specifier.comma,\n        precision = specifier.precision,\n        trim = specifier.trim,\n        type = specifier.type;\n\n    // The \"n\" type is an alias for \",g\".\n    if (type === \"n\") comma = true, type = \"g\";\n\n    // The \"\" type, and any invalid type, is an alias for \".12~g\".\n    else if (!_formatTypes_js__WEBPACK_IMPORTED_MODULE_5__[\"default\"][type]) precision === undefined && (precision = 12), trim = true, type = \"g\";\n\n    // If zero fill is specified, padding goes after sign and before digits.\n    if (zero || (fill === \"0\" && align === \"=\")) zero = true, fill = \"0\", align = \"=\";\n\n    // Compute the prefix and suffix.\n    // For SI-prefix, the suffix is lazily computed.\n    var prefix = symbol === \"$\" ? currencyPrefix : symbol === \"#\" && /[boxX]/.test(type) ? \"0\" + type.toLowerCase() : \"\",\n        suffix = symbol === \"$\" ? currencySuffix : /[%p]/.test(type) ? percent : \"\";\n\n    // What format function should we use?\n    // Is this an integer type?\n    // Can this type generate exponential notation?\n    var formatType = _formatTypes_js__WEBPACK_IMPORTED_MODULE_5__[\"default\"][type],\n        maybeSuffix = /[defgprs%]/.test(type);\n\n    // Set the default precision if not specified,\n    // or clamp the specified precision to the supported range.\n    // For significant precision, it must be in [1, 21].\n    // For fixed precision, it must be in [0, 20].\n    precision = precision === undefined ? 6\n        : /[gprs]/.test(type) ? Math.max(1, Math.min(21, precision))\n        : Math.max(0, Math.min(20, precision));\n\n    function format(value) {\n      var valuePrefix = prefix,\n          valueSuffix = suffix,\n          i, n, c;\n\n      if (type === \"c\") {\n        valueSuffix = formatType(value) + valueSuffix;\n        value = \"\";\n      } else {\n        value = +value;\n\n        // Determine the sign. -0 is not less than 0, but 1 / -0 is!\n        var valueNegative = value < 0 || 1 / value < 0;\n\n        // Perform the initial formatting.\n        value = isNaN(value) ? nan : formatType(Math.abs(value), precision);\n\n        // Trim insignificant zeros.\n        if (trim) value = Object(_formatTrim_js__WEBPACK_IMPORTED_MODULE_4__[\"default\"])(value);\n\n        // If a negative value rounds to zero after formatting, and no explicit positive sign is requested, hide the sign.\n        if (valueNegative && +value === 0 && sign !== \"+\") valueNegative = false;\n\n        // Compute the prefix and suffix.\n        valuePrefix = (valueNegative ? (sign === \"(\" ? sign : minus) : sign === \"-\" || sign === \"(\" ? \"\" : sign) + valuePrefix;\n        valueSuffix = (type === \"s\" ? prefixes[8 + _formatPrefixAuto_js__WEBPACK_IMPORTED_MODULE_6__[\"prefixExponent\"] / 3] : \"\") + valueSuffix + (valueNegative && sign === \"(\" ? \")\" : \"\");\n\n        // Break the formatted value into the integer “value” part that can be\n        // grouped, and fractional or exponential “suffix” part that is not.\n        if (maybeSuffix) {\n          i = -1, n = value.length;\n          while (++i < n) {\n            if (c = value.charCodeAt(i), 48 > c || c > 57) {\n              valueSuffix = (c === 46 ? decimal + value.slice(i + 1) : value.slice(i)) + valueSuffix;\n              value = value.slice(0, i);\n              break;\n            }\n          }\n        }\n      }\n\n      // If the fill character is not \"0\", grouping is applied before padding.\n      if (comma && !zero) value = group(value, Infinity);\n\n      // Compute the padding.\n      var length = valuePrefix.length + value.length + valueSuffix.length,\n          padding = length < width ? new Array(width - length + 1).join(fill) : \"\";\n\n      // If the fill character is \"0\", grouping is applied after padding.\n      if (comma && zero) value = group(padding + value, padding.length ? width - valueSuffix.length : Infinity), padding = \"\";\n\n      // Reconstruct the final output based on the desired alignment.\n      switch (align) {\n        case \"<\": value = valuePrefix + value + valueSuffix + padding; break;\n        case \"=\": value = valuePrefix + padding + value + valueSuffix; break;\n        case \"^\": value = padding.slice(0, length = padding.length >> 1) + valuePrefix + value + valueSuffix + padding.slice(length); break;\n        default: value = padding + valuePrefix + value + valueSuffix; break;\n      }\n\n      return numerals(value);\n    }\n\n    format.toString = function() {\n      return specifier + \"\";\n    };\n\n    return format;\n  }\n\n  function formatPrefix(specifier, value) {\n    var f = newFormat((specifier = Object(_formatSpecifier_js__WEBPACK_IMPORTED_MODULE_3__[\"default\"])(specifier), specifier.type = \"f\", specifier)),\n        e = Math.max(-8, Math.min(8, Math.floor(Object(_exponent_js__WEBPACK_IMPORTED_MODULE_0__[\"default\"])(value) / 3))) * 3,\n        k = Math.pow(10, -e),\n        prefix = prefixes[8 + e / 3];\n    return function(value) {\n      return f(k * value) + prefix;\n    };\n  }\n\n  return {\n    format: newFormat,\n    formatPrefix: formatPrefix\n  };\n});\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,[encoded data, 9992 characters]\n//# sourceURL=webpack-internal:///./node_modules/vega-label/node_modules/d3-format/src/locale.js\n");

/***/ }),

/***/ "./node_modules/vega-label/node_modules/d3-format/src/precisionFixed.js":
/*!******************************************************************************!*\
  !*** ./node_modules/vega-label/node_modules/d3-format/src/precisionFixed.js ***!
  \******************************************************************************/
/*! exports provided: default */
/***/ (function(module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _exponent_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./exponent.js */ \"./node_modules/vega-label/node_modules/d3-format/src/exponent.js\");\n\n\n/* harmony default export */ __webpack_exports__[\"default\"] = (function(step) {\n  return Math.max(0, -Object(_exponent_js__WEBPACK_IMPORTED_MODULE_0__[\"default\"])(Math.abs(step)));\n});\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvdmVnYS1sYWJlbC9ub2RlX21vZHVsZXMvZDMtZm9ybWF0L3NyYy9wcmVjaXNpb25GaXhlZC5qcy5qcyIsInNvdXJjZXMiOlsid2VicGFjazovLy8uL25vZGVfbW9kdWxlcy92ZWdhLWxhYmVsL25vZGVfbW9kdWxlcy9kMy1mb3JtYXQvc3JjL3ByZWNpc2lvbkZpeGVkLmpzP2FjZTYiXSwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IGV4cG9uZW50IGZyb20gXCIuL2V4cG9uZW50LmpzXCI7XG5cbmV4cG9ydCBkZWZhdWx0IGZ1bmN0aW9uKHN0ZXApIHtcbiAgcmV0dXJuIE1hdGgubWF4KDAsIC1leHBvbmVudChNYXRoLmFicyhzdGVwKSkpO1xufVxuIl0sIm1hcHBpbmdzIjoiQUFBQTtBQUFBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTsiLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///./node_modules/vega-label/node_modules/d3-format/src/precisionFixed.js\n");

/***/ }),

/***/ "./node_modules/vega-label/node_modules/d3-format/src/precisionPrefix.js":
/*!*******************************************************************************!*\
  !*** ./node_modules/vega-label/node_modules/d3-format/src/precisionPrefix.js ***!
  \*******************************************************************************/
/*! exports provided: default */
/***/ (function(module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _exponent_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./exponent.js */ \"./node_modules/vega-label/node_modules/d3-format/src/exponent.js\");\n\n\n/* harmony default export */ __webpack_exports__[\"default\"] = (function(step, value) {\n  return Math.max(0, Math.max(-8, Math.min(8, Math.floor(Object(_exponent_js__WEBPACK_IMPORTED_MODULE_0__[\"default\"])(value) / 3))) * 3 - Object(_exponent_js__WEBPACK_IMPORTED_MODULE_0__[\"default\"])(Math.abs(step)));\n});\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvdmVnYS1sYWJlbC9ub2RlX21vZHVsZXMvZDMtZm9ybWF0L3NyYy9wcmVjaXNpb25QcmVmaXguanMuanMiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvdmVnYS1sYWJlbC9ub2RlX21vZHVsZXMvZDMtZm9ybWF0L3NyYy9wcmVjaXNpb25QcmVmaXguanM/OGYxNSJdLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgZXhwb25lbnQgZnJvbSBcIi4vZXhwb25lbnQuanNcIjtcblxuZXhwb3J0IGRlZmF1bHQgZnVuY3Rpb24oc3RlcCwgdmFsdWUpIHtcbiAgcmV0dXJuIE1hdGgubWF4KDAsIE1hdGgubWF4KC04LCBNYXRoLm1pbig4LCBNYXRoLmZsb29yKGV4cG9uZW50KHZhbHVlKSAvIDMpKSkgKiAzIC0gZXhwb25lbnQoTWF0aC5hYnMoc3RlcCkpKTtcbn1cbiJdLCJtYXBwaW5ncyI6IkFBQUE7QUFBQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7Iiwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///./node_modules/vega-label/node_modules/d3-format/src/precisionPrefix.js\n");

/***/ }),

/***/ "./node_modules/vega-label/node_modules/d3-format/src/precisionRound.js":
/*!******************************************************************************!*\
  !*** ./node_modules/vega-label/node_modules/d3-format/src/precisionRound.js ***!
  \******************************************************************************/
/*! exports provided: default */
/***/ (function(module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _exponent_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./exponent.js */ \"./node_modules/vega-label/node_modules/d3-format/src/exponent.js\");\n\n\n/* harmony default export */ __webpack_exports__[\"default\"] = (function(step, max) {\n  step = Math.abs(step), max = Math.abs(max) - step;\n  return Math.max(0, Object(_exponent_js__WEBPACK_IMPORTED_MODULE_0__[\"default\"])(max) - Object(_exponent_js__WEBPACK_IMPORTED_MODULE_0__[\"default\"])(step)) + 1;\n});\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvdmVnYS1sYWJlbC9ub2RlX21vZHVsZXMvZDMtZm9ybWF0L3NyYy9wcmVjaXNpb25Sb3VuZC5qcy5qcyIsInNvdXJjZXMiOlsid2VicGFjazovLy8uL25vZGVfbW9kdWxlcy92ZWdhLWxhYmVsL25vZGVfbW9kdWxlcy9kMy1mb3JtYXQvc3JjL3ByZWNpc2lvblJvdW5kLmpzPzU3YTEiXSwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IGV4cG9uZW50IGZyb20gXCIuL2V4cG9uZW50LmpzXCI7XG5cbmV4cG9ydCBkZWZhdWx0IGZ1bmN0aW9uKHN0ZXAsIG1heCkge1xuICBzdGVwID0gTWF0aC5hYnMoc3RlcCksIG1heCA9IE1hdGguYWJzKG1heCkgLSBzdGVwO1xuICByZXR1cm4gTWF0aC5tYXgoMCwgZXhwb25lbnQobWF4KSAtIGV4cG9uZW50KHN0ZXApKSArIDE7XG59XG4iXSwibWFwcGluZ3MiOiJBQUFBO0FBQUE7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7Iiwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///./node_modules/vega-label/node_modules/d3-format/src/precisionRound.js\n");

/***/ }),

/***/ "./node_modules/vega-label/node_modules/d3-interpolate/src/array.js":
/*!**************************************************************************!*\
  !*** ./node_modules/vega-label/node_modules/d3-interpolate/src/array.js ***!
  \**************************************************************************/
/*! exports provided: default, genericArray */
/***/ (function(module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"genericArray\", function() { return genericArray; });\n/* harmony import */ var _value_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./value.js */ \"./node_modules/vega-label/node_modules/d3-interpolate/src/value.js\");\n/* harmony import */ var _numberArray_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./numberArray.js */ \"./node_modules/vega-label/node_modules/d3-interpolate/src/numberArray.js\");\n\n\n\n/* harmony default export */ __webpack_exports__[\"default\"] = (function(a, b) {\n  return (Object(_numberArray_js__WEBPACK_IMPORTED_MODULE_1__[\"isNumberArray\"])(b) ? _numberArray_js__WEBPACK_IMPORTED_MODULE_1__[\"default\"] : genericArray)(a, b);\n});\n\nfunction genericArray(a, b) {\n  var nb = b ? b.length : 0,\n      na = a ? Math.min(nb, a.length) : 0,\n      x = new Array(na),\n      c = new Array(nb),\n      i;\n\n  for (i = 0; i < na; ++i) x[i] = Object(_value_js__WEBPACK_IMPORTED_MODULE_0__[\"default\"])(a[i], b[i]);\n  for (; i < nb; ++i) c[i] = b[i];\n\n  return function(t) {\n    for (i = 0; i < na; ++i) c[i] = x[i](t);\n    return c;\n  };\n}\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvdmVnYS1sYWJlbC9ub2RlX21vZHVsZXMvZDMtaW50ZXJwb2xhdGUvc3JjL2FycmF5LmpzLmpzIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL3ZlZ2EtbGFiZWwvbm9kZV9tb2R1bGVzL2QzLWludGVycG9sYXRlL3NyYy9hcnJheS5qcz9kOTcwIl0sInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB2YWx1ZSBmcm9tIFwiLi92YWx1ZS5qc1wiO1xuaW1wb3J0IG51bWJlckFycmF5LCB7aXNOdW1iZXJBcnJheX0gZnJvbSBcIi4vbnVtYmVyQXJyYXkuanNcIjtcblxuZXhwb3J0IGRlZmF1bHQgZnVuY3Rpb24oYSwgYikge1xuICByZXR1cm4gKGlzTnVtYmVyQXJyYXkoYikgPyBudW1iZXJBcnJheSA6IGdlbmVyaWNBcnJheSkoYSwgYik7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBnZW5lcmljQXJyYXkoYSwgYikge1xuICB2YXIgbmIgPSBiID8gYi5sZW5ndGggOiAwLFxuICAgICAgbmEgPSBhID8gTWF0aC5taW4obmIsIGEubGVuZ3RoKSA6IDAsXG4gICAgICB4ID0gbmV3IEFycmF5KG5hKSxcbiAgICAgIGMgPSBuZXcgQXJyYXkobmIpLFxuICAgICAgaTtcblxuICBmb3IgKGkgPSAwOyBpIDwgbmE7ICsraSkgeFtpXSA9IHZhbHVlKGFbaV0sIGJbaV0pO1xuICBmb3IgKDsgaSA8IG5iOyArK2kpIGNbaV0gPSBiW2ldO1xuXG4gIHJldHVybiBmdW5jdGlvbih0KSB7XG4gICAgZm9yIChpID0gMDsgaSA8IG5hOyArK2kpIGNbaV0gPSB4W2ldKHQpO1xuICAgIHJldHVybiBjO1xuICB9O1xufVxuIl0sIm1hcHBpbmdzIjoiQUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOyIsInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///./node_modules/vega-label/node_modules/d3-interpolate/src/array.js\n");

/***/ }),

/***/ "./node_modules/vega-label/node_modules/d3-interpolate/src/basis.js":
/*!**************************************************************************!*\
  !*** ./node_modules/vega-label/node_modules/d3-interpolate/src/basis.js ***!
  \**************************************************************************/
/*! exports provided: basis, default */
/***/ (function(module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"basis\", function() { return basis; });\nfunction basis(t1, v0, v1, v2, v3) {\n  var t2 = t1 * t1, t3 = t2 * t1;\n  return ((1 - 3 * t1 + 3 * t2 - t3) * v0\n      + (4 - 6 * t2 + 3 * t3) * v1\n      + (1 + 3 * t1 + 3 * t2 - 3 * t3) * v2\n      + t3 * v3) / 6;\n}\n\n/* harmony default export */ __webpack_exports__[\"default\"] = (function(values) {\n  var n = values.length - 1;\n  return function(t) {\n    var i = t <= 0 ? (t = 0) : t >= 1 ? (t = 1, n - 1) : Math.floor(t * n),\n        v1 = values[i],\n        v2 = values[i + 1],\n        v0 = i > 0 ? values[i - 1] : 2 * v1 - v2,\n        v3 = i < n - 1 ? values[i + 2] : 2 * v2 - v1;\n    return basis((t - i / n) * n, v0, v1, v2, v3);\n  };\n});\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvdmVnYS1sYWJlbC9ub2RlX21vZHVsZXMvZDMtaW50ZXJwb2xhdGUvc3JjL2Jhc2lzLmpzLmpzIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL3ZlZ2EtbGFiZWwvbm9kZV9tb2R1bGVzL2QzLWludGVycG9sYXRlL3NyYy9iYXNpcy5qcz81Y2MyIl0sInNvdXJjZXNDb250ZW50IjpbImV4cG9ydCBmdW5jdGlvbiBiYXNpcyh0MSwgdjAsIHYxLCB2MiwgdjMpIHtcbiAgdmFyIHQyID0gdDEgKiB0MSwgdDMgPSB0MiAqIHQxO1xuICByZXR1cm4gKCgxIC0gMyAqIHQxICsgMyAqIHQyIC0gdDMpICogdjBcbiAgICAgICsgKDQgLSA2ICogdDIgKyAzICogdDMpICogdjFcbiAgICAgICsgKDEgKyAzICogdDEgKyAzICogdDIgLSAzICogdDMpICogdjJcbiAgICAgICsgdDMgKiB2MykgLyA2O1xufVxuXG5leHBvcnQgZGVmYXVsdCBmdW5jdGlvbih2YWx1ZXMpIHtcbiAgdmFyIG4gPSB2YWx1ZXMubGVuZ3RoIC0gMTtcbiAgcmV0dXJuIGZ1bmN0aW9uKHQpIHtcbiAgICB2YXIgaSA9IHQgPD0gMCA/ICh0ID0gMCkgOiB0ID49IDEgPyAodCA9IDEsIG4gLSAxKSA6IE1hdGguZmxvb3IodCAqIG4pLFxuICAgICAgICB2MSA9IHZhbHVlc1tpXSxcbiAgICAgICAgdjIgPSB2YWx1ZXNbaSArIDFdLFxuICAgICAgICB2MCA9IGkgPiAwID8gdmFsdWVzW2kgLSAxXSA6IDIgKiB2MSAtIHYyLFxuICAgICAgICB2MyA9IGkgPCBuIC0gMSA/IHZhbHVlc1tpICsgMl0gOiAyICogdjIgLSB2MTtcbiAgICByZXR1cm4gYmFzaXMoKHQgLSBpIC8gbikgKiBuLCB2MCwgdjEsIHYyLCB2Myk7XG4gIH07XG59XG4iXSwibWFwcGluZ3MiOiJBQUFBO0FBQUE7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTsiLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///./node_modules/vega-label/node_modules/d3-interpolate/src/basis.js\n");

/***/ }),

/***/ "./node_modules/vega-label/node_modules/d3-interpolate/src/basisClosed.js":
/*!********************************************************************************!*\
  !*** ./node_modules/vega-label/node_modules/d3-interpolate/src/basisClosed.js ***!
  \********************************************************************************/
/*! exports provided: default */
/***/ (function(module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _basis_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./basis.js */ \"./node_modules/vega-label/node_modules/d3-interpolate/src/basis.js\");\n\n\n/* harmony default export */ __webpack_exports__[\"default\"] = (function(values) {\n  var n = values.length;\n  return function(t) {\n    var i = Math.floor(((t %= 1) < 0 ? ++t : t) * n),\n        v0 = values[(i + n - 1) % n],\n        v1 = values[i % n],\n        v2 = values[(i + 1) % n],\n        v3 = values[(i + 2) % n];\n    return Object(_basis_js__WEBPACK_IMPORTED_MODULE_0__[\"basis\"])((t - i / n) * n, v0, v1, v2, v3);\n  };\n});\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvdmVnYS1sYWJlbC9ub2RlX21vZHVsZXMvZDMtaW50ZXJwb2xhdGUvc3JjL2Jhc2lzQ2xvc2VkLmpzLmpzIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL3ZlZ2EtbGFiZWwvbm9kZV9tb2R1bGVzL2QzLWludGVycG9sYXRlL3NyYy9iYXNpc0Nsb3NlZC5qcz9jODI2Il0sInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7YmFzaXN9IGZyb20gXCIuL2Jhc2lzLmpzXCI7XG5cbmV4cG9ydCBkZWZhdWx0IGZ1bmN0aW9uKHZhbHVlcykge1xuICB2YXIgbiA9IHZhbHVlcy5sZW5ndGg7XG4gIHJldHVybiBmdW5jdGlvbih0KSB7XG4gICAgdmFyIGkgPSBNYXRoLmZsb29yKCgodCAlPSAxKSA8IDAgPyArK3QgOiB0KSAqIG4pLFxuICAgICAgICB2MCA9IHZhbHVlc1soaSArIG4gLSAxKSAlIG5dLFxuICAgICAgICB2MSA9IHZhbHVlc1tpICUgbl0sXG4gICAgICAgIHYyID0gdmFsdWVzWyhpICsgMSkgJSBuXSxcbiAgICAgICAgdjMgPSB2YWx1ZXNbKGkgKyAyKSAlIG5dO1xuICAgIHJldHVybiBiYXNpcygodCAtIGkgLyBuKSAqIG4sIHYwLCB2MSwgdjIsIHYzKTtcbiAgfTtcbn1cbiJdLCJtYXBwaW5ncyI6IkFBQUE7QUFBQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOyIsInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///./node_modules/vega-label/node_modules/d3-interpolate/src/basisClosed.js\n");

/***/ }),

/***/ "./node_modules/vega-label/node_modules/d3-interpolate/src/color.js":
/*!**************************************************************************!*\
  !*** ./node_modules/vega-label/node_modules/d3-interpolate/src/color.js ***!
  \**************************************************************************/
/*! exports provided: hue, gamma, default */
/***/ (function(module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"hue\", function() { return hue; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"gamma\", function() { return gamma; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"default\", function() { return nogamma; });\n/* harmony import */ var _constant_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./constant.js */ \"./node_modules/vega-label/node_modules/d3-interpolate/src/constant.js\");\n\n\nfunction linear(a, d) {\n  return function(t) {\n    return a + t * d;\n  };\n}\n\nfunction exponential(a, b, y) {\n  return a = Math.pow(a, y), b = Math.pow(b, y) - a, y = 1 / y, function(t) {\n    return Math.pow(a + t * b, y);\n  };\n}\n\nfunction hue(a, b) {\n  var d = b - a;\n  return d ? linear(a, d > 180 || d < -180 ? d - 360 * Math.round(d / 360) : d) : Object(_constant_js__WEBPACK_IMPORTED_MODULE_0__[\"default\"])(isNaN(a) ? b : a);\n}\n\nfunction gamma(y) {\n  return (y = +y) === 1 ? nogamma : function(a, b) {\n    return b - a ? exponential(a, b, y) : Object(_constant_js__WEBPACK_IMPORTED_MODULE_0__[\"default\"])(isNaN(a) ? b : a);\n  };\n}\n\nfunction nogamma(a, b) {\n  var d = b - a;\n  return d ? linear(a, d) : Object(_constant_js__WEBPACK_IMPORTED_MODULE_0__[\"default\"])(isNaN(a) ? b : a);\n}\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvdmVnYS1sYWJlbC9ub2RlX21vZHVsZXMvZDMtaW50ZXJwb2xhdGUvc3JjL2NvbG9yLmpzLmpzIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL3ZlZ2EtbGFiZWwvbm9kZV9tb2R1bGVzL2QzLWludGVycG9sYXRlL3NyYy9jb2xvci5qcz9hYTU0Il0sInNvdXJjZXNDb250ZW50IjpbImltcG9ydCBjb25zdGFudCBmcm9tIFwiLi9jb25zdGFudC5qc1wiO1xuXG5mdW5jdGlvbiBsaW5lYXIoYSwgZCkge1xuICByZXR1cm4gZnVuY3Rpb24odCkge1xuICAgIHJldHVybiBhICsgdCAqIGQ7XG4gIH07XG59XG5cbmZ1bmN0aW9uIGV4cG9uZW50aWFsKGEsIGIsIHkpIHtcbiAgcmV0dXJuIGEgPSBNYXRoLnBvdyhhLCB5KSwgYiA9IE1hdGgucG93KGIsIHkpIC0gYSwgeSA9IDEgLyB5LCBmdW5jdGlvbih0KSB7XG4gICAgcmV0dXJuIE1hdGgucG93KGEgKyB0ICogYiwgeSk7XG4gIH07XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBodWUoYSwgYikge1xuICB2YXIgZCA9IGIgLSBhO1xuICByZXR1cm4gZCA/IGxpbmVhcihhLCBkID4gMTgwIHx8IGQgPCAtMTgwID8gZCAtIDM2MCAqIE1hdGgucm91bmQoZCAvIDM2MCkgOiBkKSA6IGNvbnN0YW50KGlzTmFOKGEpID8gYiA6IGEpO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gZ2FtbWEoeSkge1xuICByZXR1cm4gKHkgPSAreSkgPT09IDEgPyBub2dhbW1hIDogZnVuY3Rpb24oYSwgYikge1xuICAgIHJldHVybiBiIC0gYSA/IGV4cG9uZW50aWFsKGEsIGIsIHkpIDogY29uc3RhbnQoaXNOYU4oYSkgPyBiIDogYSk7XG4gIH07XG59XG5cbmV4cG9ydCBkZWZhdWx0IGZ1bmN0aW9uIG5vZ2FtbWEoYSwgYikge1xuICB2YXIgZCA9IGIgLSBhO1xuICByZXR1cm4gZCA/IGxpbmVhcihhLCBkKSA6IGNvbnN0YW50KGlzTmFOKGEpID8gYiA6IGEpO1xufVxuIl0sIm1hcHBpbmdzIjoiQUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTsiLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///./node_modules/vega-label/node_modules/d3-interpolate/src/color.js\n");

/***/ }),

/***/ "./node_modules/vega-label/node_modules/d3-interpolate/src/constant.js":
/*!*****************************************************************************!*\
  !*** ./node_modules/vega-label/node_modules/d3-interpolate/src/constant.js ***!
  \*****************************************************************************/
/*! exports provided: default */
/***/ (function(module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony default export */ __webpack_exports__[\"default\"] = (x => () => x);\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvdmVnYS1sYWJlbC9ub2RlX21vZHVsZXMvZDMtaW50ZXJwb2xhdGUvc3JjL2NvbnN0YW50LmpzLmpzIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL3ZlZ2EtbGFiZWwvbm9kZV9tb2R1bGVzL2QzLWludGVycG9sYXRlL3NyYy9jb25zdGFudC5qcz8xOThjIl0sInNvdXJjZXNDb250ZW50IjpbImV4cG9ydCBkZWZhdWx0IHggPT4gKCkgPT4geDtcbiJdLCJtYXBwaW5ncyI6IkFBQUE7QUFBQTsiLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///./node_modules/vega-label/node_modules/d3-interpolate/src/constant.js\n");

/***/ }),

/***/ "./node_modules/vega-label/node_modules/d3-interpolate/src/cubehelix.js":
/*!******************************************************************************!*\
  !*** ./node_modules/vega-label/node_modules/d3-interpolate/src/cubehelix.js ***!
  \******************************************************************************/
/*! exports provided: default, cubehelixLong */
/***/ (function(module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"cubehelixLong\", function() { return cubehelixLong; });\n/* harmony import */ var d3_color__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! d3-color */ \"./node_modules/d3-color/src/index.js\");\n/* harmony import */ var _color_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./color.js */ \"./node_modules/vega-label/node_modules/d3-interpolate/src/color.js\");\n\n\n\nfunction cubehelix(hue) {\n  return (function cubehelixGamma(y) {\n    y = +y;\n\n    function cubehelix(start, end) {\n      var h = hue((start = Object(d3_color__WEBPACK_IMPORTED_MODULE_0__[\"cubehelix\"])(start)).h, (end = Object(d3_color__WEBPACK_IMPORTED_MODULE_0__[\"cubehelix\"])(end)).h),\n          s = Object(_color_js__WEBPACK_IMPORTED_MODULE_1__[\"default\"])(start.s, end.s),\n          l = Object(_color_js__WEBPACK_IMPORTED_MODULE_1__[\"default\"])(start.l, end.l),\n          opacity = Object(_color_js__WEBPACK_IMPORTED_MODULE_1__[\"default\"])(start.opacity, end.opacity);\n      return function(t) {\n        start.h = h(t);\n        start.s = s(t);\n        start.l = l(Math.pow(t, y));\n        start.opacity = opacity(t);\n        return start + \"\";\n      };\n    }\n\n    cubehelix.gamma = cubehelixGamma;\n\n    return cubehelix;\n  })(1);\n}\n\n/* harmony default export */ __webpack_exports__[\"default\"] = (cubehelix(_color_js__WEBPACK_IMPORTED_MODULE_1__[\"hue\"]));\nvar cubehelixLong = cubehelix(_color_js__WEBPACK_IMPORTED_MODULE_1__[\"default\"]);\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvdmVnYS1sYWJlbC9ub2RlX21vZHVsZXMvZDMtaW50ZXJwb2xhdGUvc3JjL2N1YmVoZWxpeC5qcy5qcyIsInNvdXJjZXMiOlsid2VicGFjazovLy8uL25vZGVfbW9kdWxlcy92ZWdhLWxhYmVsL25vZGVfbW9kdWxlcy9kMy1pbnRlcnBvbGF0ZS9zcmMvY3ViZWhlbGl4LmpzPzVmMjQiXSwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtjdWJlaGVsaXggYXMgY29sb3JDdWJlaGVsaXh9IGZyb20gXCJkMy1jb2xvclwiO1xuaW1wb3J0IGNvbG9yLCB7aHVlfSBmcm9tIFwiLi9jb2xvci5qc1wiO1xuXG5mdW5jdGlvbiBjdWJlaGVsaXgoaHVlKSB7XG4gIHJldHVybiAoZnVuY3Rpb24gY3ViZWhlbGl4R2FtbWEoeSkge1xuICAgIHkgPSAreTtcblxuICAgIGZ1bmN0aW9uIGN1YmVoZWxpeChzdGFydCwgZW5kKSB7XG4gICAgICB2YXIgaCA9IGh1ZSgoc3RhcnQgPSBjb2xvckN1YmVoZWxpeChzdGFydCkpLmgsIChlbmQgPSBjb2xvckN1YmVoZWxpeChlbmQpKS5oKSxcbiAgICAgICAgICBzID0gY29sb3Ioc3RhcnQucywgZW5kLnMpLFxuICAgICAgICAgIGwgPSBjb2xvcihzdGFydC5sLCBlbmQubCksXG4gICAgICAgICAgb3BhY2l0eSA9IGNvbG9yKHN0YXJ0Lm9wYWNpdHksIGVuZC5vcGFjaXR5KTtcbiAgICAgIHJldHVybiBmdW5jdGlvbih0KSB7XG4gICAgICAgIHN0YXJ0LmggPSBoKHQpO1xuICAgICAgICBzdGFydC5zID0gcyh0KTtcbiAgICAgICAgc3RhcnQubCA9IGwoTWF0aC5wb3codCwgeSkpO1xuICAgICAgICBzdGFydC5vcGFjaXR5ID0gb3BhY2l0eSh0KTtcbiAgICAgICAgcmV0dXJuIHN0YXJ0ICsgXCJcIjtcbiAgICAgIH07XG4gICAgfVxuXG4gICAgY3ViZWhlbGl4LmdhbW1hID0gY3ViZWhlbGl4R2FtbWE7XG5cbiAgICByZXR1cm4gY3ViZWhlbGl4O1xuICB9KSgxKTtcbn1cblxuZXhwb3J0IGRlZmF1bHQgY3ViZWhlbGl4KGh1ZSk7XG5leHBvcnQgdmFyIGN1YmVoZWxpeExvbmcgPSBjdWJlaGVsaXgoY29sb3IpO1xuIl0sIm1hcHBpbmdzIjoiQUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7Iiwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///./node_modules/vega-label/node_modules/d3-interpolate/src/cubehelix.js\n");

/***/ }),

/***/ "./node_modules/vega-label/node_modules/d3-interpolate/src/date.js":
/*!*************************************************************************!*\
  !*** ./node_modules/vega-label/node_modules/d3-interpolate/src/date.js ***!
  \*************************************************************************/
/*! exports provided: default */
/***/ (function(module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony default export */ __webpack_exports__[\"default\"] = (function(a, b) {\n  var d = new Date;\n  return a = +a, b = +b, function(t) {\n    return d.setTime(a * (1 - t) + b * t), d;\n  };\n});\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvdmVnYS1sYWJlbC9ub2RlX21vZHVsZXMvZDMtaW50ZXJwb2xhdGUvc3JjL2RhdGUuanMuanMiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvdmVnYS1sYWJlbC9ub2RlX21vZHVsZXMvZDMtaW50ZXJwb2xhdGUvc3JjL2RhdGUuanM/OWQzMyJdLCJzb3VyY2VzQ29udGVudCI6WyJleHBvcnQgZGVmYXVsdCBmdW5jdGlvbihhLCBiKSB7XG4gIHZhciBkID0gbmV3IERhdGU7XG4gIHJldHVybiBhID0gK2EsIGIgPSArYiwgZnVuY3Rpb24odCkge1xuICAgIHJldHVybiBkLnNldFRpbWUoYSAqICgxIC0gdCkgKyBiICogdCksIGQ7XG4gIH07XG59XG4iXSwibWFwcGluZ3MiOiJBQUFBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOyIsInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///./node_modules/vega-label/node_modules/d3-interpolate/src/date.js\n");

/***/ }),

/***/ "./node_modules/vega-label/node_modules/d3-interpolate/src/discrete.js":
/*!*****************************************************************************!*\
  !*** ./node_modules/vega-label/node_modules/d3-interpolate/src/discrete.js ***!
  \*****************************************************************************/
/*! exports provided: default */
/***/ (function(module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony default export */ __webpack_exports__[\"default\"] = (function(range) {\n  var n = range.length;\n  return function(t) {\n    return range[Math.max(0, Math.min(n - 1, Math.floor(t * n)))];\n  };\n});\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvdmVnYS1sYWJlbC9ub2RlX21vZHVsZXMvZDMtaW50ZXJwb2xhdGUvc3JjL2Rpc2NyZXRlLmpzLmpzIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL3ZlZ2EtbGFiZWwvbm9kZV9tb2R1bGVzL2QzLWludGVycG9sYXRlL3NyYy9kaXNjcmV0ZS5qcz80MzAxIl0sInNvdXJjZXNDb250ZW50IjpbImV4cG9ydCBkZWZhdWx0IGZ1bmN0aW9uKHJhbmdlKSB7XG4gIHZhciBuID0gcmFuZ2UubGVuZ3RoO1xuICByZXR1cm4gZnVuY3Rpb24odCkge1xuICAgIHJldHVybiByYW5nZVtNYXRoLm1heCgwLCBNYXRoLm1pbihuIC0gMSwgTWF0aC5mbG9vcih0ICogbikpKV07XG4gIH07XG59XG4iXSwibWFwcGluZ3MiOiJBQUFBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOyIsInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///./node_modules/vega-label/node_modules/d3-interpolate/src/discrete.js\n");

/***/ }),

/***/ "./node_modules/vega-label/node_modules/d3-interpolate/src/hcl.js":
/*!************************************************************************!*\
  !*** ./node_modules/vega-label/node_modules/d3-interpolate/src/hcl.js ***!
  \************************************************************************/
/*! exports provided: default, hclLong */
/***/ (function(module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"hclLong\", function() { return hclLong; });\n/* harmony import */ var d3_color__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! d3-color */ \"./node_modules/d3-color/src/index.js\");\n/* harmony import */ var _color_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./color.js */ \"./node_modules/vega-label/node_modules/d3-interpolate/src/color.js\");\n\n\n\nfunction hcl(hue) {\n  return function(start, end) {\n    var h = hue((start = Object(d3_color__WEBPACK_IMPORTED_MODULE_0__[\"hcl\"])(start)).h, (end = Object(d3_color__WEBPACK_IMPORTED_MODULE_0__[\"hcl\"])(end)).h),\n        c = Object(_color_js__WEBPACK_IMPORTED_MODULE_1__[\"default\"])(start.c, end.c),\n        l = Object(_color_js__WEBPACK_IMPORTED_MODULE_1__[\"default\"])(start.l, end.l),\n        opacity = Object(_color_js__WEBPACK_IMPORTED_MODULE_1__[\"default\"])(start.opacity, end.opacity);\n    return function(t) {\n      start.h = h(t);\n      start.c = c(t);\n      start.l = l(t);\n      start.opacity = opacity(t);\n      return start + \"\";\n    };\n  }\n}\n\n/* harmony default export */ __webpack_exports__[\"default\"] = (hcl(_color_js__WEBPACK_IMPORTED_MODULE_1__[\"hue\"]));\nvar hclLong = hcl(_color_js__WEBPACK_IMPORTED_MODULE_1__[\"default\"]);\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvdmVnYS1sYWJlbC9ub2RlX21vZHVsZXMvZDMtaW50ZXJwb2xhdGUvc3JjL2hjbC5qcy5qcyIsInNvdXJjZXMiOlsid2VicGFjazovLy8uL25vZGVfbW9kdWxlcy92ZWdhLWxhYmVsL25vZGVfbW9kdWxlcy9kMy1pbnRlcnBvbGF0ZS9zcmMvaGNsLmpzPzcyYTQiXSwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtoY2wgYXMgY29sb3JIY2x9IGZyb20gXCJkMy1jb2xvclwiO1xuaW1wb3J0IGNvbG9yLCB7aHVlfSBmcm9tIFwiLi9jb2xvci5qc1wiO1xuXG5mdW5jdGlvbiBoY2woaHVlKSB7XG4gIHJldHVybiBmdW5jdGlvbihzdGFydCwgZW5kKSB7XG4gICAgdmFyIGggPSBodWUoKHN0YXJ0ID0gY29sb3JIY2woc3RhcnQpKS5oLCAoZW5kID0gY29sb3JIY2woZW5kKSkuaCksXG4gICAgICAgIGMgPSBjb2xvcihzdGFydC5jLCBlbmQuYyksXG4gICAgICAgIGwgPSBjb2xvcihzdGFydC5sLCBlbmQubCksXG4gICAgICAgIG9wYWNpdHkgPSBjb2xvcihzdGFydC5vcGFjaXR5LCBlbmQub3BhY2l0eSk7XG4gICAgcmV0dXJuIGZ1bmN0aW9uKHQpIHtcbiAgICAgIHN0YXJ0LmggPSBoKHQpO1xuICAgICAgc3RhcnQuYyA9IGModCk7XG4gICAgICBzdGFydC5sID0gbCh0KTtcbiAgICAgIHN0YXJ0Lm9wYWNpdHkgPSBvcGFjaXR5KHQpO1xuICAgICAgcmV0dXJuIHN0YXJ0ICsgXCJcIjtcbiAgICB9O1xuICB9XG59XG5cbmV4cG9ydCBkZWZhdWx0IGhjbChodWUpO1xuZXhwb3J0IHZhciBoY2xMb25nID0gaGNsKGNvbG9yKTtcbiJdLCJtYXBwaW5ncyI6IkFBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7Iiwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///./node_modules/vega-label/node_modules/d3-interpolate/src/hcl.js\n");

/***/ }),

/***/ "./node_modules/vega-label/node_modules/d3-interpolate/src/hsl.js":
/*!************************************************************************!*\
  !*** ./node_modules/vega-label/node_modules/d3-interpolate/src/hsl.js ***!
  \************************************************************************/
/*! exports provided: default, hslLong */
/***/ (function(module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"hslLong\", function() { return hslLong; });\n/* harmony import */ var d3_color__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! d3-color */ \"./node_modules/d3-color/src/index.js\");\n/* harmony import */ var _color_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./color.js */ \"./node_modules/vega-label/node_modules/d3-interpolate/src/color.js\");\n\n\n\nfunction hsl(hue) {\n  return function(start, end) {\n    var h = hue((start = Object(d3_color__WEBPACK_IMPORTED_MODULE_0__[\"hsl\"])(start)).h, (end = Object(d3_color__WEBPACK_IMPORTED_MODULE_0__[\"hsl\"])(end)).h),\n        s = Object(_color_js__WEBPACK_IMPORTED_MODULE_1__[\"default\"])(start.s, end.s),\n        l = Object(_color_js__WEBPACK_IMPORTED_MODULE_1__[\"default\"])(start.l, end.l),\n        opacity = Object(_color_js__WEBPACK_IMPORTED_MODULE_1__[\"default\"])(start.opacity, end.opacity);\n    return function(t) {\n      start.h = h(t);\n      start.s = s(t);\n      start.l = l(t);\n      start.opacity = opacity(t);\n      return start + \"\";\n    };\n  }\n}\n\n/* harmony default export */ __webpack_exports__[\"default\"] = (hsl(_color_js__WEBPACK_IMPORTED_MODULE_1__[\"hue\"]));\nvar hslLong = hsl(_color_js__WEBPACK_IMPORTED_MODULE_1__[\"default\"]);\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvdmVnYS1sYWJlbC9ub2RlX21vZHVsZXMvZDMtaW50ZXJwb2xhdGUvc3JjL2hzbC5qcy5qcyIsInNvdXJjZXMiOlsid2VicGFjazovLy8uL25vZGVfbW9kdWxlcy92ZWdhLWxhYmVsL25vZGVfbW9kdWxlcy9kMy1pbnRlcnBvbGF0ZS9zcmMvaHNsLmpzP2Y2OGIiXSwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtoc2wgYXMgY29sb3JIc2x9IGZyb20gXCJkMy1jb2xvclwiO1xuaW1wb3J0IGNvbG9yLCB7aHVlfSBmcm9tIFwiLi9jb2xvci5qc1wiO1xuXG5mdW5jdGlvbiBoc2woaHVlKSB7XG4gIHJldHVybiBmdW5jdGlvbihzdGFydCwgZW5kKSB7XG4gICAgdmFyIGggPSBodWUoKHN0YXJ0ID0gY29sb3JIc2woc3RhcnQpKS5oLCAoZW5kID0gY29sb3JIc2woZW5kKSkuaCksXG4gICAgICAgIHMgPSBjb2xvcihzdGFydC5zLCBlbmQucyksXG4gICAgICAgIGwgPSBjb2xvcihzdGFydC5sLCBlbmQubCksXG4gICAgICAgIG9wYWNpdHkgPSBjb2xvcihzdGFydC5vcGFjaXR5LCBlbmQub3BhY2l0eSk7XG4gICAgcmV0dXJuIGZ1bmN0aW9uKHQpIHtcbiAgICAgIHN0YXJ0LmggPSBoKHQpO1xuICAgICAgc3RhcnQucyA9IHModCk7XG4gICAgICBzdGFydC5sID0gbCh0KTtcbiAgICAgIHN0YXJ0Lm9wYWNpdHkgPSBvcGFjaXR5KHQpO1xuICAgICAgcmV0dXJuIHN0YXJ0ICsgXCJcIjtcbiAgICB9O1xuICB9XG59XG5cbmV4cG9ydCBkZWZhdWx0IGhzbChodWUpO1xuZXhwb3J0IHZhciBoc2xMb25nID0gaHNsKGNvbG9yKTtcbiJdLCJtYXBwaW5ncyI6IkFBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7Iiwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///./node_modules/vega-label/node_modules/d3-interpolate/src/hsl.js\n");

/***/ }),

/***/ "./node_modules/vega-label/node_modules/d3-interpolate/src/hue.js":
/*!************************************************************************!*\
  !*** ./node_modules/vega-label/node_modules/d3-interpolate/src/hue.js ***!
  \************************************************************************/
/*! exports provided: default */
/***/ (function(module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _color_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./color.js */ \"./node_modules/vega-label/node_modules/d3-interpolate/src/color.js\");\n\n\n/* harmony default export */ __webpack_exports__[\"default\"] = (function(a, b) {\n  var i = Object(_color_js__WEBPACK_IMPORTED_MODULE_0__[\"hue\"])(+a, +b);\n  return function(t) {\n    var x = i(t);\n    return x - 360 * Math.floor(x / 360);\n  };\n});\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvdmVnYS1sYWJlbC9ub2RlX21vZHVsZXMvZDMtaW50ZXJwb2xhdGUvc3JjL2h1ZS5qcy5qcyIsInNvdXJjZXMiOlsid2VicGFjazovLy8uL25vZGVfbW9kdWxlcy92ZWdhLWxhYmVsL25vZGVfbW9kdWxlcy9kMy1pbnRlcnBvbGF0ZS9zcmMvaHVlLmpzPzM0ZTQiXSwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtodWV9IGZyb20gXCIuL2NvbG9yLmpzXCI7XG5cbmV4cG9ydCBkZWZhdWx0IGZ1bmN0aW9uKGEsIGIpIHtcbiAgdmFyIGkgPSBodWUoK2EsICtiKTtcbiAgcmV0dXJuIGZ1bmN0aW9uKHQpIHtcbiAgICB2YXIgeCA9IGkodCk7XG4gICAgcmV0dXJuIHggLSAzNjAgKiBNYXRoLmZsb29yKHggLyAzNjApO1xuICB9O1xufVxuIl0sIm1hcHBpbmdzIjoiQUFBQTtBQUFBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOyIsInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///./node_modules/vega-label/node_modules/d3-interpolate/src/hue.js\n");

/***/ }),

/***/ "./node_modules/vega-label/node_modules/d3-interpolate/src/index.js":
/*!**************************************************************************!*\
  !*** ./node_modules/vega-label/node_modules/d3-interpolate/src/index.js ***!
  \**************************************************************************/
/*! exports provided: interpolate, interpolateArray, interpolateBasis, interpolateBasisClosed, interpolateDate, interpolateDiscrete, interpolateHue, interpolateNumber, interpolateNumberArray, interpolateObject, interpolateRound, interpolateString, interpolateTransformCss, interpolateTransformSvg, interpolateZoom, interpolateRgb, interpolateRgbBasis, interpolateRgbBasisClosed, interpolateHsl, interpolateHslLong, interpolateLab, interpolateHcl, interpolateHclLong, interpolateCubehelix, interpolateCubehelixLong, piecewise, quantize */
/***/ (function(module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _value_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./value.js */ \"./node_modules/vega-label/node_modules/d3-interpolate/src/value.js\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"interpolate\", function() { return _value_js__WEBPACK_IMPORTED_MODULE_0__[\"default\"]; });\n\n/* harmony import */ var _array_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./array.js */ \"./node_modules/vega-label/node_modules/d3-interpolate/src/array.js\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"interpolateArray\", function() { return _array_js__WEBPACK_IMPORTED_MODULE_1__[\"default\"]; });\n\n/* harmony import */ var _basis_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./basis.js */ \"./node_modules/vega-label/node_modules/d3-interpolate/src/basis.js\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"interpolateBasis\", function() { return _basis_js__WEBPACK_IMPORTED_MODULE_2__[\"default\"]; });\n\n/* harmony import */ var _basisClosed_js__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ./basisClosed.js */ \"./node_modules/vega-label/node_modules/d3-interpolate/src/basisClosed.js\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"interpolateBasisClosed\", function() { return _basisClosed_js__WEBPACK_IMPORTED_MODULE_3__[\"default\"]; });\n\n/* harmony import */ var _date_js__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ./date.js */ \"./node_modules/vega-label/node_modules/d3-interpolate/src/date.js\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"interpolateDate\", function() { return _date_js__WEBPACK_IMPORTED_MODULE_4__[\"default\"]; });\n\n/* harmony import */ var _discrete_js__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! ./discrete.js */ \"./node_modules/vega-label/node_modules/d3-interpolate/src/discrete.js\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"interpolateDiscrete\", function() { return _discrete_js__WEBPACK_IMPORTED_MODULE_5__[\"default\"]; });\n\n/* harmony import */ var _hue_js__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! ./hue.js */ \"./node_modules/vega-label/node_modules/d3-interpolate/src/hue.js\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"interpolateHue\", function() { return _hue_js__WEBPACK_IMPORTED_MODULE_6__[\"default\"]; });\n\n/* harmony import */ var _number_js__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! ./number.js */ \"./node_modules/vega-label/node_modules/d3-interpolate/src/number.js\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"interpolateNumber\", function() { return _number_js__WEBPACK_IMPORTED_MODULE_7__[\"default\"]; });\n\n/* harmony import */ var _numberArray_js__WEBPACK_IMPORTED_MODULE_8__ = __webpack_require__(/*! ./numberArray.js */ \"./node_modules/vega-label/node_modules/d3-interpolate/src/numberArray.js\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"interpolateNumberArray\", function() { return _numberArray_js__WEBPACK_IMPORTED_MODULE_8__[\"default\"]; });\n\n/* harmony import */ var _object_js__WEBPACK_IMPORTED_MODULE_9__ = __webpack_require__(/*! ./object.js */ \"./node_modules/vega-label/node_modules/d3-interpolate/src/object.js\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"interpolateObject\", function() { return _object_js__WEBPACK_IMPORTED_MODULE_9__[\"default\"]; });\n\n/* harmony import */ var _round_js__WEBPACK_IMPORTED_MODULE_10__ = __webpack_require__(/*! ./round.js */ \"./node_modules/vega-label/node_modules/d3-interpolate/src/round.js\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"interpolateRound\", function() { return _round_js__WEBPACK_IMPORTED_MODULE_10__[\"default\"]; });\n\n/* harmony import */ var _string_js__WEBPACK_IMPORTED_MODULE_11__ = __webpack_require__(/*! ./string.js */ \"./node_modules/vega-label/node_modules/d3-interpolate/src/string.js\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"interpolateString\", function() { return _string_js__WEBPACK_IMPORTED_MODULE_11__[\"default\"]; });\n\n/* harmony import */ var _transform_index_js__WEBPACK_IMPORTED_MODULE_12__ = __webpack_require__(/*! ./transform/index.js */ \"./node_modules/vega-label/node_modules/d3-interpolate/src/transform/index.js\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"interpolateTransformCss\", function() { return _transform_index_js__WEBPACK_IMPORTED_MODULE_12__[\"interpolateTransformCss\"]; });\n\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"interpolateTransformSvg\", function() { return _transform_index_js__WEBPACK_IMPORTED_MODULE_12__[\"interpolateTransformSvg\"]; });\n\n/* harmony import */ var _zoom_js__WEBPACK_IMPORTED_MODULE_13__ = __webpack_require__(/*! ./zoom.js */ \"./node_modules/vega-label/node_modules/d3-interpolate/src/zoom.js\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"interpolateZoom\", function() { return _zoom_js__WEBPACK_IMPORTED_MODULE_13__[\"default\"]; });\n\n/* harmony import */ var _rgb_js__WEBPACK_IMPORTED_MODULE_14__ = __webpack_require__(/*! ./rgb.js */ \"./node_modules/vega-label/node_modules/d3-interpolate/src/rgb.js\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"interpolateRgb\", function() { return _rgb_js__WEBPACK_IMPORTED_MODULE_14__[\"default\"]; });\n\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"interpolateRgbBasis\", function() { return _rgb_js__WEBPACK_IMPORTED_MODULE_14__[\"rgbBasis\"]; });\n\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"interpolateRgbBasisClosed\", function() { return _rgb_js__WEBPACK_IMPORTED_MODULE_14__[\"rgbBasisClosed\"]; });\n\n/* harmony import */ var _hsl_js__WEBPACK_IMPORTED_MODULE_15__ = __webpack_require__(/*! ./hsl.js */ \"./node_modules/vega-label/node_modules/d3-interpolate/src/hsl.js\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"interpolateHsl\", function() { return _hsl_js__WEBPACK_IMPORTED_MODULE_15__[\"default\"]; });\n\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"interpolateHslLong\", function() { return _hsl_js__WEBPACK_IMPORTED_MODULE_15__[\"hslLong\"]; });\n\n/* harmony import */ var _lab_js__WEBPACK_IMPORTED_MODULE_16__ = __webpack_require__(/*! ./lab.js */ \"./node_modules/vega-label/node_modules/d3-interpolate/src/lab.js\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"interpolateLab\", function() { return _lab_js__WEBPACK_IMPORTED_MODULE_16__[\"default\"]; });\n\n/* harmony import */ var _hcl_js__WEBPACK_IMPORTED_MODULE_17__ = __webpack_require__(/*! ./hcl.js */ \"./node_modules/vega-label/node_modules/d3-interpolate/src/hcl.js\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"interpolateHcl\", function() { return _hcl_js__WEBPACK_IMPORTED_MODULE_17__[\"default\"]; });\n\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"interpolateHclLong\", function() { return _hcl_js__WEBPACK_IMPORTED_MODULE_17__[\"hclLong\"]; });\n\n/* harmony import */ var _cubehelix_js__WEBPACK_IMPORTED_MODULE_18__ = __webpack_require__(/*! ./cubehelix.js */ \"./node_modules/vega-label/node_modules/d3-interpolate/src/cubehelix.js\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"interpolateCubehelix\", function() { return _cubehelix_js__WEBPACK_IMPORTED_MODULE_18__[\"default\"]; });\n\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"interpolateCubehelixLong\", function() { return _cubehelix_js__WEBPACK_IMPORTED_MODULE_18__[\"cubehelixLong\"]; });\n\n/* harmony import */ var _piecewise_js__WEBPACK_IMPORTED_MODULE_19__ = __webpack_require__(/*! ./piecewise.js */ \"./node_modules/vega-label/node_modules/d3-interpolate/src/piecewise.js\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"piecewise\", function() { return _piecewise_js__WEBPACK_IMPORTED_MODULE_19__[\"default\"]; });\n\n/* harmony import */ var _quantize_js__WEBPACK_IMPORTED_MODULE_20__ = __webpack_require__(/*! ./quantize.js */ \"./node_modules/vega-label/node_modules/d3-interpolate/src/quantize.js\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"quantize\", function() { return _quantize_js__WEBPACK_IMPORTED_MODULE_20__[\"default\"]; });\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvdmVnYS1sYWJlbC9ub2RlX21vZHVsZXMvZDMtaW50ZXJwb2xhdGUvc3JjL2luZGV4LmpzLmpzIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL3ZlZ2EtbGFiZWwvbm9kZV9tb2R1bGVzL2QzLWludGVycG9sYXRlL3NyYy9pbmRleC5qcz9jNTYyIl0sInNvdXJjZXNDb250ZW50IjpbImV4cG9ydCB7ZGVmYXVsdCBhcyBpbnRlcnBvbGF0ZX0gZnJvbSBcIi4vdmFsdWUuanNcIjtcbmV4cG9ydCB7ZGVmYXVsdCBhcyBpbnRlcnBvbGF0ZUFycmF5fSBmcm9tIFwiLi9hcnJheS5qc1wiO1xuZXhwb3J0IHtkZWZhdWx0IGFzIGludGVycG9sYXRlQmFzaXN9IGZyb20gXCIuL2Jhc2lzLmpzXCI7XG5leHBvcnQge2RlZmF1bHQgYXMgaW50ZXJwb2xhdGVCYXNpc0Nsb3NlZH0gZnJvbSBcIi4vYmFzaXNDbG9zZWQuanNcIjtcbmV4cG9ydCB7ZGVmYXVsdCBhcyBpbnRlcnBvbGF0ZURhdGV9IGZyb20gXCIuL2RhdGUuanNcIjtcbmV4cG9ydCB7ZGVmYXVsdCBhcyBpbnRlcnBvbGF0ZURpc2NyZXRlfSBmcm9tIFwiLi9kaXNjcmV0ZS5qc1wiO1xuZXhwb3J0IHtkZWZhdWx0IGFzIGludGVycG9sYXRlSHVlfSBmcm9tIFwiLi9odWUuanNcIjtcbmV4cG9ydCB7ZGVmYXVsdCBhcyBpbnRlcnBvbGF0ZU51bWJlcn0gZnJvbSBcIi4vbnVtYmVyLmpzXCI7XG5leHBvcnQge2RlZmF1bHQgYXMgaW50ZXJwb2xhdGVOdW1iZXJBcnJheX0gZnJvbSBcIi4vbnVtYmVyQXJyYXkuanNcIjtcbmV4cG9ydCB7ZGVmYXVsdCBhcyBpbnRlcnBvbGF0ZU9iamVjdH0gZnJvbSBcIi4vb2JqZWN0LmpzXCI7XG5leHBvcnQge2RlZmF1bHQgYXMgaW50ZXJwb2xhdGVSb3VuZH0gZnJvbSBcIi4vcm91bmQuanNcIjtcbmV4cG9ydCB7ZGVmYXVsdCBhcyBpbnRlcnBvbGF0ZVN0cmluZ30gZnJvbSBcIi4vc3RyaW5nLmpzXCI7XG5leHBvcnQge2ludGVycG9sYXRlVHJhbnNmb3JtQ3NzLCBpbnRlcnBvbGF0ZVRyYW5zZm9ybVN2Z30gZnJvbSBcIi4vdHJhbnNmb3JtL2luZGV4LmpzXCI7XG5leHBvcnQge2RlZmF1bHQgYXMgaW50ZXJwb2xhdGVab29tfSBmcm9tIFwiLi96b29tLmpzXCI7XG5leHBvcnQge2RlZmF1bHQgYXMgaW50ZXJwb2xhdGVSZ2IsIHJnYkJhc2lzIGFzIGludGVycG9sYXRlUmdiQmFzaXMsIHJnYkJhc2lzQ2xvc2VkIGFzIGludGVycG9sYXRlUmdiQmFzaXNDbG9zZWR9IGZyb20gXCIuL3JnYi5qc1wiO1xuZXhwb3J0IHtkZWZhdWx0IGFzIGludGVycG9sYXRlSHNsLCBoc2xMb25nIGFzIGludGVycG9sYXRlSHNsTG9uZ30gZnJvbSBcIi4vaHNsLmpzXCI7XG5leHBvcnQge2RlZmF1bHQgYXMgaW50ZXJwb2xhdGVMYWJ9IGZyb20gXCIuL2xhYi5qc1wiO1xuZXhwb3J0IHtkZWZhdWx0IGFzIGludGVycG9sYXRlSGNsLCBoY2xMb25nIGFzIGludGVycG9sYXRlSGNsTG9uZ30gZnJvbSBcIi4vaGNsLmpzXCI7XG5leHBvcnQge2RlZmF1bHQgYXMgaW50ZXJwb2xhdGVDdWJlaGVsaXgsIGN1YmVoZWxpeExvbmcgYXMgaW50ZXJwb2xhdGVDdWJlaGVsaXhMb25nfSBmcm9tIFwiLi9jdWJlaGVsaXguanNcIjtcbmV4cG9ydCB7ZGVmYXVsdCBhcyBwaWVjZXdpc2V9IGZyb20gXCIuL3BpZWNld2lzZS5qc1wiO1xuZXhwb3J0IHtkZWZhdWx0IGFzIHF1YW50aXplfSBmcm9tIFwiLi9xdWFudGl6ZS5qc1wiO1xuIl0sIm1hcHBpbmdzIjoiQUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTsiLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///./node_modules/vega-label/node_modules/d3-interpolate/src/index.js\n");

/***/ }),

/***/ "./node_modules/vega-label/node_modules/d3-interpolate/src/lab.js":
/*!************************************************************************!*\
  !*** ./node_modules/vega-label/node_modules/d3-interpolate/src/lab.js ***!
  \************************************************************************/
/*! exports provided: default */
/***/ (function(module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"default\", function() { return lab; });\n/* harmony import */ var d3_color__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! d3-color */ \"./node_modules/d3-color/src/index.js\");\n/* harmony import */ var _color_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./color.js */ \"./node_modules/vega-label/node_modules/d3-interpolate/src/color.js\");\n\n\n\nfunction lab(start, end) {\n  var l = Object(_color_js__WEBPACK_IMPORTED_MODULE_1__[\"default\"])((start = Object(d3_color__WEBPACK_IMPORTED_MODULE_0__[\"lab\"])(start)).l, (end = Object(d3_color__WEBPACK_IMPORTED_MODULE_0__[\"lab\"])(end)).l),\n      a = Object(_color_js__WEBPACK_IMPORTED_MODULE_1__[\"default\"])(start.a, end.a),\n      b = Object(_color_js__WEBPACK_IMPORTED_MODULE_1__[\"default\"])(start.b, end.b),\n      opacity = Object(_color_js__WEBPACK_IMPORTED_MODULE_1__[\"default\"])(start.opacity, end.opacity);\n  return function(t) {\n    start.l = l(t);\n    start.a = a(t);\n    start.b = b(t);\n    start.opacity = opacity(t);\n    return start + \"\";\n  };\n}\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvdmVnYS1sYWJlbC9ub2RlX21vZHVsZXMvZDMtaW50ZXJwb2xhdGUvc3JjL2xhYi5qcy5qcyIsInNvdXJjZXMiOlsid2VicGFjazovLy8uL25vZGVfbW9kdWxlcy92ZWdhLWxhYmVsL25vZGVfbW9kdWxlcy9kMy1pbnRlcnBvbGF0ZS9zcmMvbGFiLmpzPzhlMGMiXSwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtsYWIgYXMgY29sb3JMYWJ9IGZyb20gXCJkMy1jb2xvclwiO1xuaW1wb3J0IGNvbG9yIGZyb20gXCIuL2NvbG9yLmpzXCI7XG5cbmV4cG9ydCBkZWZhdWx0IGZ1bmN0aW9uIGxhYihzdGFydCwgZW5kKSB7XG4gIHZhciBsID0gY29sb3IoKHN0YXJ0ID0gY29sb3JMYWIoc3RhcnQpKS5sLCAoZW5kID0gY29sb3JMYWIoZW5kKSkubCksXG4gICAgICBhID0gY29sb3Ioc3RhcnQuYSwgZW5kLmEpLFxuICAgICAgYiA9IGNvbG9yKHN0YXJ0LmIsIGVuZC5iKSxcbiAgICAgIG9wYWNpdHkgPSBjb2xvcihzdGFydC5vcGFjaXR5LCBlbmQub3BhY2l0eSk7XG4gIHJldHVybiBmdW5jdGlvbih0KSB7XG4gICAgc3RhcnQubCA9IGwodCk7XG4gICAgc3RhcnQuYSA9IGEodCk7XG4gICAgc3RhcnQuYiA9IGIodCk7XG4gICAgc3RhcnQub3BhY2l0eSA9IG9wYWNpdHkodCk7XG4gICAgcmV0dXJuIHN0YXJ0ICsgXCJcIjtcbiAgfTtcbn1cbiJdLCJtYXBwaW5ncyI6IkFBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTsiLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///./node_modules/vega-label/node_modules/d3-interpolate/src/lab.js\n");

/***/ }),

/***/ "./node_modules/vega-label/node_modules/d3-interpolate/src/number.js":
/*!***************************************************************************!*\
  !*** ./node_modules/vega-label/node_modules/d3-interpolate/src/number.js ***!
  \***************************************************************************/
/*! exports provided: default */
/***/ (function(module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony default export */ __webpack_exports__[\"default\"] = (function(a, b) {\n  return a = +a, b = +b, function(t) {\n    return a * (1 - t) + b * t;\n  };\n});\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvdmVnYS1sYWJlbC9ub2RlX21vZHVsZXMvZDMtaW50ZXJwb2xhdGUvc3JjL251bWJlci5qcy5qcyIsInNvdXJjZXMiOlsid2VicGFjazovLy8uL25vZGVfbW9kdWxlcy92ZWdhLWxhYmVsL25vZGVfbW9kdWxlcy9kMy1pbnRlcnBvbGF0ZS9zcmMvbnVtYmVyLmpzP2NhZjQiXSwic291cmNlc0NvbnRlbnQiOlsiZXhwb3J0IGRlZmF1bHQgZnVuY3Rpb24oYSwgYikge1xuICByZXR1cm4gYSA9ICthLCBiID0gK2IsIGZ1bmN0aW9uKHQpIHtcbiAgICByZXR1cm4gYSAqICgxIC0gdCkgKyBiICogdDtcbiAgfTtcbn1cbiJdLCJtYXBwaW5ncyI6IkFBQUE7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOyIsInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///./node_modules/vega-label/node_modules/d3-interpolate/src/number.js\n");

/***/ }),

/***/ "./node_modules/vega-label/node_modules/d3-interpolate/src/numberArray.js":
/*!********************************************************************************!*\
  !*** ./node_modules/vega-label/node_modules/d3-interpolate/src/numberArray.js ***!
  \********************************************************************************/
/*! exports provided: default, isNumberArray */
/***/ (function(module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"isNumberArray\", function() { return isNumberArray; });\n/* harmony default export */ __webpack_exports__[\"default\"] = (function(a, b) {\n  if (!b) b = [];\n  var n = a ? Math.min(b.length, a.length) : 0,\n      c = b.slice(),\n      i;\n  return function(t) {\n    for (i = 0; i < n; ++i) c[i] = a[i] * (1 - t) + b[i] * t;\n    return c;\n  };\n});\n\nfunction isNumberArray(x) {\n  return ArrayBuffer.isView(x) && !(x instanceof DataView);\n}\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvdmVnYS1sYWJlbC9ub2RlX21vZHVsZXMvZDMtaW50ZXJwb2xhdGUvc3JjL251bWJlckFycmF5LmpzLmpzIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL3ZlZ2EtbGFiZWwvbm9kZV9tb2R1bGVzL2QzLWludGVycG9sYXRlL3NyYy9udW1iZXJBcnJheS5qcz82MjE1Il0sInNvdXJjZXNDb250ZW50IjpbImV4cG9ydCBkZWZhdWx0IGZ1bmN0aW9uKGEsIGIpIHtcbiAgaWYgKCFiKSBiID0gW107XG4gIHZhciBuID0gYSA/IE1hdGgubWluKGIubGVuZ3RoLCBhLmxlbmd0aCkgOiAwLFxuICAgICAgYyA9IGIuc2xpY2UoKSxcbiAgICAgIGk7XG4gIHJldHVybiBmdW5jdGlvbih0KSB7XG4gICAgZm9yIChpID0gMDsgaSA8IG47ICsraSkgY1tpXSA9IGFbaV0gKiAoMSAtIHQpICsgYltpXSAqIHQ7XG4gICAgcmV0dXJuIGM7XG4gIH07XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBpc051bWJlckFycmF5KHgpIHtcbiAgcmV0dXJuIEFycmF5QnVmZmVyLmlzVmlldyh4KSAmJiAhKHggaW5zdGFuY2VvZiBEYXRhVmlldyk7XG59XG4iXSwibWFwcGluZ3MiOiJBQUFBO0FBQUE7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOyIsInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///./node_modules/vega-label/node_modules/d3-interpolate/src/numberArray.js\n");

/***/ }),

/***/ "./node_modules/vega-label/node_modules/d3-interpolate/src/object.js":
/*!***************************************************************************!*\
  !*** ./node_modules/vega-label/node_modules/d3-interpolate/src/object.js ***!
  \***************************************************************************/
/*! exports provided: default */
/***/ (function(module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _value_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./value.js */ \"./node_modules/vega-label/node_modules/d3-interpolate/src/value.js\");\n\n\n/* harmony default export */ __webpack_exports__[\"default\"] = (function(a, b) {\n  var i = {},\n      c = {},\n      k;\n\n  if (a === null || typeof a !== \"object\") a = {};\n  if (b === null || typeof b !== \"object\") b = {};\n\n  for (k in b) {\n    if (k in a) {\n      i[k] = Object(_value_js__WEBPACK_IMPORTED_MODULE_0__[\"default\"])(a[k], b[k]);\n    } else {\n      c[k] = b[k];\n    }\n  }\n\n  return function(t) {\n    for (k in i) c[k] = i[k](t);\n    return c;\n  };\n});\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvdmVnYS1sYWJlbC9ub2RlX21vZHVsZXMvZDMtaW50ZXJwb2xhdGUvc3JjL29iamVjdC5qcy5qcyIsInNvdXJjZXMiOlsid2VicGFjazovLy8uL25vZGVfbW9kdWxlcy92ZWdhLWxhYmVsL25vZGVfbW9kdWxlcy9kMy1pbnRlcnBvbGF0ZS9zcmMvb2JqZWN0LmpzP2QxZGUiXSwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHZhbHVlIGZyb20gXCIuL3ZhbHVlLmpzXCI7XG5cbmV4cG9ydCBkZWZhdWx0IGZ1bmN0aW9uKGEsIGIpIHtcbiAgdmFyIGkgPSB7fSxcbiAgICAgIGMgPSB7fSxcbiAgICAgIGs7XG5cbiAgaWYgKGEgPT09IG51bGwgfHwgdHlwZW9mIGEgIT09IFwib2JqZWN0XCIpIGEgPSB7fTtcbiAgaWYgKGIgPT09IG51bGwgfHwgdHlwZW9mIGIgIT09IFwib2JqZWN0XCIpIGIgPSB7fTtcblxuICBmb3IgKGsgaW4gYikge1xuICAgIGlmIChrIGluIGEpIHtcbiAgICAgIGlba10gPSB2YWx1ZShhW2tdLCBiW2tdKTtcbiAgICB9IGVsc2Uge1xuICAgICAgY1trXSA9IGJba107XG4gICAgfVxuICB9XG5cbiAgcmV0dXJuIGZ1bmN0aW9uKHQpIHtcbiAgICBmb3IgKGsgaW4gaSkgY1trXSA9IGlba10odCk7XG4gICAgcmV0dXJuIGM7XG4gIH07XG59XG4iXSwibWFwcGluZ3MiOiJBQUFBO0FBQUE7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOyIsInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///./node_modules/vega-label/node_modules/d3-interpolate/src/object.js\n");

/***/ }),

/***/ "./node_modules/vega-label/node_modules/d3-interpolate/src/piecewise.js":
/*!******************************************************************************!*\
  !*** ./node_modules/vega-label/node_modules/d3-interpolate/src/piecewise.js ***!
  \******************************************************************************/
/*! exports provided: default */
/***/ (function(module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"default\", function() { return piecewise; });\n/* harmony import */ var _value_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./value.js */ \"./node_modules/vega-label/node_modules/d3-interpolate/src/value.js\");\n\n\nfunction piecewise(interpolate, values) {\n  if (values === undefined) values = interpolate, interpolate = _value_js__WEBPACK_IMPORTED_MODULE_0__[\"default\"];\n  var i = 0, n = values.length - 1, v = values[0], I = new Array(n < 0 ? 0 : n);\n  while (i < n) I[i] = interpolate(v, v = values[++i]);\n  return function(t) {\n    var i = Math.max(0, Math.min(n - 1, Math.floor(t *= n)));\n    return I[i](t - i);\n  };\n}\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvdmVnYS1sYWJlbC9ub2RlX21vZHVsZXMvZDMtaW50ZXJwb2xhdGUvc3JjL3BpZWNld2lzZS5qcy5qcyIsInNvdXJjZXMiOlsid2VicGFjazovLy8uL25vZGVfbW9kdWxlcy92ZWdhLWxhYmVsL25vZGVfbW9kdWxlcy9kMy1pbnRlcnBvbGF0ZS9zcmMvcGllY2V3aXNlLmpzP2E5MTMiXSwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtkZWZhdWx0IGFzIHZhbHVlfSBmcm9tIFwiLi92YWx1ZS5qc1wiO1xuXG5leHBvcnQgZGVmYXVsdCBmdW5jdGlvbiBwaWVjZXdpc2UoaW50ZXJwb2xhdGUsIHZhbHVlcykge1xuICBpZiAodmFsdWVzID09PSB1bmRlZmluZWQpIHZhbHVlcyA9IGludGVycG9sYXRlLCBpbnRlcnBvbGF0ZSA9IHZhbHVlO1xuICB2YXIgaSA9IDAsIG4gPSB2YWx1ZXMubGVuZ3RoIC0gMSwgdiA9IHZhbHVlc1swXSwgSSA9IG5ldyBBcnJheShuIDwgMCA/IDAgOiBuKTtcbiAgd2hpbGUgKGkgPCBuKSBJW2ldID0gaW50ZXJwb2xhdGUodiwgdiA9IHZhbHVlc1srK2ldKTtcbiAgcmV0dXJuIGZ1bmN0aW9uKHQpIHtcbiAgICB2YXIgaSA9IE1hdGgubWF4KDAsIE1hdGgubWluKG4gLSAxLCBNYXRoLmZsb29yKHQgKj0gbikpKTtcbiAgICByZXR1cm4gSVtpXSh0IC0gaSk7XG4gIH07XG59XG4iXSwibWFwcGluZ3MiOiJBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7Iiwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///./node_modules/vega-label/node_modules/d3-interpolate/src/piecewise.js\n");

/***/ }),

/***/ "./node_modules/vega-label/node_modules/d3-interpolate/src/quantize.js":
/*!*****************************************************************************!*\
  !*** ./node_modules/vega-label/node_modules/d3-interpolate/src/quantize.js ***!
  \*****************************************************************************/
/*! exports provided: default */
/***/ (function(module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony default export */ __webpack_exports__[\"default\"] = (function(interpolator, n) {\n  var samples = new Array(n);\n  for (var i = 0; i < n; ++i) samples[i] = interpolator(i / (n - 1));\n  return samples;\n});\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvdmVnYS1sYWJlbC9ub2RlX21vZHVsZXMvZDMtaW50ZXJwb2xhdGUvc3JjL3F1YW50aXplLmpzLmpzIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL3ZlZ2EtbGFiZWwvbm9kZV9tb2R1bGVzL2QzLWludGVycG9sYXRlL3NyYy9xdWFudGl6ZS5qcz8wOTJjIl0sInNvdXJjZXNDb250ZW50IjpbImV4cG9ydCBkZWZhdWx0IGZ1bmN0aW9uKGludGVycG9sYXRvciwgbikge1xuICB2YXIgc2FtcGxlcyA9IG5ldyBBcnJheShuKTtcbiAgZm9yICh2YXIgaSA9IDA7IGkgPCBuOyArK2kpIHNhbXBsZXNbaV0gPSBpbnRlcnBvbGF0b3IoaSAvIChuIC0gMSkpO1xuICByZXR1cm4gc2FtcGxlcztcbn1cbiJdLCJtYXBwaW5ncyI6IkFBQUE7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOyIsInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///./node_modules/vega-label/node_modules/d3-interpolate/src/quantize.js\n");

/***/ }),

/***/ "./node_modules/vega-label/node_modules/d3-interpolate/src/rgb.js":
/*!************************************************************************!*\
  !*** ./node_modules/vega-label/node_modules/d3-interpolate/src/rgb.js ***!
  \************************************************************************/
/*! exports provided: default, rgbBasis, rgbBasisClosed */
/***/ (function(module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"rgbBasis\", function() { return rgbBasis; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"rgbBasisClosed\", function() { return rgbBasisClosed; });\n/* harmony import */ var d3_color__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! d3-color */ \"./node_modules/d3-color/src/index.js\");\n/* harmony import */ var _basis_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./basis.js */ \"./node_modules/vega-label/node_modules/d3-interpolate/src/basis.js\");\n/* harmony import */ var _basisClosed_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./basisClosed.js */ \"./node_modules/vega-label/node_modules/d3-interpolate/src/basisClosed.js\");\n/* harmony import */ var _color_js__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ./color.js */ \"./node_modules/vega-label/node_modules/d3-interpolate/src/color.js\");\n\n\n\n\n\n/* harmony default export */ __webpack_exports__[\"default\"] = ((function rgbGamma(y) {\n  var color = Object(_color_js__WEBPACK_IMPORTED_MODULE_3__[\"gamma\"])(y);\n\n  function rgb(start, end) {\n    var r = color((start = Object(d3_color__WEBPACK_IMPORTED_MODULE_0__[\"rgb\"])(start)).r, (end = Object(d3_color__WEBPACK_IMPORTED_MODULE_0__[\"rgb\"])(end)).r),\n        g = color(start.g, end.g),\n        b = color(start.b, end.b),\n        opacity = Object(_color_js__WEBPACK_IMPORTED_MODULE_3__[\"default\"])(start.opacity, end.opacity);\n    return function(t) {\n      start.r = r(t);\n      start.g = g(t);\n      start.b = b(t);\n      start.opacity = opacity(t);\n      return start + \"\";\n    };\n  }\n\n  rgb.gamma = rgbGamma;\n\n  return rgb;\n})(1));\n\nfunction rgbSpline(spline) {\n  return function(colors) {\n    var n = colors.length,\n        r = new Array(n),\n        g = new Array(n),\n        b = new Array(n),\n        i, color;\n    for (i = 0; i < n; ++i) {\n      color = Object(d3_color__WEBPACK_IMPORTED_MODULE_0__[\"rgb\"])(colors[i]);\n      r[i] = color.r || 0;\n      g[i] = color.g || 0;\n      b[i] = color.b || 0;\n    }\n    r = spline(r);\n    g = spline(g);\n    b = spline(b);\n    color.opacity = 1;\n    return function(t) {\n      color.r = r(t);\n      color.g = g(t);\n      color.b = b(t);\n      return color + \"\";\n    };\n  };\n}\n\nvar rgbBasis = rgbSpline(_basis_js__WEBPACK_IMPORTED_MODULE_1__[\"default\"]);\nvar rgbBasisClosed = rgbSpline(_basisClosed_js__WEBPACK_IMPORTED_MODULE_2__[\"default\"]);\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvdmVnYS1sYWJlbC9ub2RlX21vZHVsZXMvZDMtaW50ZXJwb2xhdGUvc3JjL3JnYi5qcy5qcyIsInNvdXJjZXMiOlsid2VicGFjazovLy8uL25vZGVfbW9kdWxlcy92ZWdhLWxhYmVsL25vZGVfbW9kdWxlcy9kMy1pbnRlcnBvbGF0ZS9zcmMvcmdiLmpzPzJjYTciXSwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtyZ2IgYXMgY29sb3JSZ2J9IGZyb20gXCJkMy1jb2xvclwiO1xuaW1wb3J0IGJhc2lzIGZyb20gXCIuL2Jhc2lzLmpzXCI7XG5pbXBvcnQgYmFzaXNDbG9zZWQgZnJvbSBcIi4vYmFzaXNDbG9zZWQuanNcIjtcbmltcG9ydCBub2dhbW1hLCB7Z2FtbWF9IGZyb20gXCIuL2NvbG9yLmpzXCI7XG5cbmV4cG9ydCBkZWZhdWx0IChmdW5jdGlvbiByZ2JHYW1tYSh5KSB7XG4gIHZhciBjb2xvciA9IGdhbW1hKHkpO1xuXG4gIGZ1bmN0aW9uIHJnYihzdGFydCwgZW5kKSB7XG4gICAgdmFyIHIgPSBjb2xvcigoc3RhcnQgPSBjb2xvclJnYihzdGFydCkpLnIsIChlbmQgPSBjb2xvclJnYihlbmQpKS5yKSxcbiAgICAgICAgZyA9IGNvbG9yKHN0YXJ0LmcsIGVuZC5nKSxcbiAgICAgICAgYiA9IGNvbG9yKHN0YXJ0LmIsIGVuZC5iKSxcbiAgICAgICAgb3BhY2l0eSA9IG5vZ2FtbWEoc3RhcnQub3BhY2l0eSwgZW5kLm9wYWNpdHkpO1xuICAgIHJldHVybiBmdW5jdGlvbih0KSB7XG4gICAgICBzdGFydC5yID0gcih0KTtcbiAgICAgIHN0YXJ0LmcgPSBnKHQpO1xuICAgICAgc3RhcnQuYiA9IGIodCk7XG4gICAgICBzdGFydC5vcGFjaXR5ID0gb3BhY2l0eSh0KTtcbiAgICAgIHJldHVybiBzdGFydCArIFwiXCI7XG4gICAgfTtcbiAgfVxuXG4gIHJnYi5nYW1tYSA9IHJnYkdhbW1hO1xuXG4gIHJldHVybiByZ2I7XG59KSgxKTtcblxuZnVuY3Rpb24gcmdiU3BsaW5lKHNwbGluZSkge1xuICByZXR1cm4gZnVuY3Rpb24oY29sb3JzKSB7XG4gICAgdmFyIG4gPSBjb2xvcnMubGVuZ3RoLFxuICAgICAgICByID0gbmV3IEFycmF5KG4pLFxuICAgICAgICBnID0gbmV3IEFycmF5KG4pLFxuICAgICAgICBiID0gbmV3IEFycmF5KG4pLFxuICAgICAgICBpLCBjb2xvcjtcbiAgICBmb3IgKGkgPSAwOyBpIDwgbjsgKytpKSB7XG4gICAgICBjb2xvciA9IGNvbG9yUmdiKGNvbG9yc1tpXSk7XG4gICAgICByW2ldID0gY29sb3IuciB8fCAwO1xuICAgICAgZ1tpXSA9IGNvbG9yLmcgfHwgMDtcbiAgICAgIGJbaV0gPSBjb2xvci5iIHx8IDA7XG4gICAgfVxuICAgIHIgPSBzcGxpbmUocik7XG4gICAgZyA9IHNwbGluZShnKTtcbiAgICBiID0gc3BsaW5lKGIpO1xuICAgIGNvbG9yLm9wYWNpdHkgPSAxO1xuICAgIHJldHVybiBmdW5jdGlvbih0KSB7XG4gICAgICBjb2xvci5yID0gcih0KTtcbiAgICAgIGNvbG9yLmcgPSBnKHQpO1xuICAgICAgY29sb3IuYiA9IGIodCk7XG4gICAgICByZXR1cm4gY29sb3IgKyBcIlwiO1xuICAgIH07XG4gIH07XG59XG5cbmV4cG9ydCB2YXIgcmdiQmFzaXMgPSByZ2JTcGxpbmUoYmFzaXMpO1xuZXhwb3J0IHZhciByZ2JCYXNpc0Nsb3NlZCA9IHJnYlNwbGluZShiYXNpc0Nsb3NlZCk7XG4iXSwibWFwcGluZ3MiOiJBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7Iiwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///./node_modules/vega-label/node_modules/d3-interpolate/src/rgb.js\n");

/***/ }),

/***/ "./node_modules/vega-label/node_modules/d3-interpolate/src/round.js":
/*!**************************************************************************!*\
  !*** ./node_modules/vega-label/node_modules/d3-interpolate/src/round.js ***!
  \**************************************************************************/
/*! exports provided: default */
/***/ (function(module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony default export */ __webpack_exports__[\"default\"] = (function(a, b) {\n  return a = +a, b = +b, function(t) {\n    return Math.round(a * (1 - t) + b * t);\n  };\n});\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvdmVnYS1sYWJlbC9ub2RlX21vZHVsZXMvZDMtaW50ZXJwb2xhdGUvc3JjL3JvdW5kLmpzLmpzIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL3ZlZ2EtbGFiZWwvbm9kZV9tb2R1bGVzL2QzLWludGVycG9sYXRlL3NyYy9yb3VuZC5qcz82ZGM5Il0sInNvdXJjZXNDb250ZW50IjpbImV4cG9ydCBkZWZhdWx0IGZ1bmN0aW9uKGEsIGIpIHtcbiAgcmV0dXJuIGEgPSArYSwgYiA9ICtiLCBmdW5jdGlvbih0KSB7XG4gICAgcmV0dXJuIE1hdGgucm91bmQoYSAqICgxIC0gdCkgKyBiICogdCk7XG4gIH07XG59XG4iXSwibWFwcGluZ3MiOiJBQUFBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTsiLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///./node_modules/vega-label/node_modules/d3-interpolate/src/round.js\n");

/***/ }),

/***/ "./node_modules/vega-label/node_modules/d3-interpolate/src/string.js":
/*!***************************************************************************!*\
  !*** ./node_modules/vega-label/node_modules/d3-interpolate/src/string.js ***!
  \***************************************************************************/
/*! exports provided: default */
/***/ (function(module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _number_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./number.js */ \"./node_modules/vega-label/node_modules/d3-interpolate/src/number.js\");\n\n\nvar reA = /[-+]?(?:\\d+\\.?\\d*|\\.?\\d+)(?:[eE][-+]?\\d+)?/g,\n    reB = new RegExp(reA.source, \"g\");\n\nfunction zero(b) {\n  return function() {\n    return b;\n  };\n}\n\nfunction one(b) {\n  return function(t) {\n    return b(t) + \"\";\n  };\n}\n\n/* harmony default export */ __webpack_exports__[\"default\"] = (function(a, b) {\n  var bi = reA.lastIndex = reB.lastIndex = 0, // scan index for next number in b\n      am, // current match in a\n      bm, // current match in b\n      bs, // string preceding current number in b, if any\n      i = -1, // index in s\n      s = [], // string constants and placeholders\n      q = []; // number interpolators\n\n  // Coerce inputs to strings.\n  a = a + \"\", b = b + \"\";\n\n  // Interpolate pairs of numbers in a & b.\n  while ((am = reA.exec(a))\n      && (bm = reB.exec(b))) {\n    if ((bs = bm.index) > bi) { // a string precedes the next number in b\n      bs = b.slice(bi, bs);\n      if (s[i]) s[i] += bs; // coalesce with previous string\n      else s[++i] = bs;\n    }\n    if ((am = am[0]) === (bm = bm[0])) { // numbers in a & b match\n      if (s[i]) s[i] += bm; // coalesce with previous string\n      else s[++i] = bm;\n    } else { // interpolate non-matching numbers\n      s[++i] = null;\n      q.push({i: i, x: Object(_number_js__WEBPACK_IMPORTED_MODULE_0__[\"default\"])(am, bm)});\n    }\n    bi = reB.lastIndex;\n  }\n\n  // Add remains of b.\n  if (bi < b.length) {\n    bs = b.slice(bi);\n    if (s[i]) s[i] += bs; // coalesce with previous string\n    else s[++i] = bs;\n  }\n\n  // Special optimization for only a single match.\n  // Otherwise, interpolate each of the numbers and rejoin the string.\n  return s.length < 2 ? (q[0]\n      ? one(q[0].x)\n      : zero(b))\n      : (b = q.length, function(t) {\n          for (var i = 0, o; i < b; ++i) s[(o = q[i]).i] = o.x(t);\n          return s.join(\"\");\n        });\n});\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvdmVnYS1sYWJlbC9ub2RlX21vZHVsZXMvZDMtaW50ZXJwb2xhdGUvc3JjL3N0cmluZy5qcy5qcyIsInNvdXJjZXMiOlsid2VicGFjazovLy8uL25vZGVfbW9kdWxlcy92ZWdhLWxhYmVsL25vZGVfbW9kdWxlcy9kMy1pbnRlcnBvbGF0ZS9zcmMvc3RyaW5nLmpzPzgzNjMiXSwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IG51bWJlciBmcm9tIFwiLi9udW1iZXIuanNcIjtcblxudmFyIHJlQSA9IC9bLStdPyg/OlxcZCtcXC4/XFxkKnxcXC4/XFxkKykoPzpbZUVdWy0rXT9cXGQrKT8vZyxcbiAgICByZUIgPSBuZXcgUmVnRXhwKHJlQS5zb3VyY2UsIFwiZ1wiKTtcblxuZnVuY3Rpb24gemVybyhiKSB7XG4gIHJldHVybiBmdW5jdGlvbigpIHtcbiAgICByZXR1cm4gYjtcbiAgfTtcbn1cblxuZnVuY3Rpb24gb25lKGIpIHtcbiAgcmV0dXJuIGZ1bmN0aW9uKHQpIHtcbiAgICByZXR1cm4gYih0KSArIFwiXCI7XG4gIH07XG59XG5cbmV4cG9ydCBkZWZhdWx0IGZ1bmN0aW9uKGEsIGIpIHtcbiAgdmFyIGJpID0gcmVBLmxhc3RJbmRleCA9IHJlQi5sYXN0SW5kZXggPSAwLCAvLyBzY2FuIGluZGV4IGZvciBuZXh0IG51bWJlciBpbiBiXG4gICAgICBhbSwgLy8gY3VycmVudCBtYXRjaCBpbiBhXG4gICAgICBibSwgLy8gY3VycmVudCBtYXRjaCBpbiBiXG4gICAgICBicywgLy8gc3RyaW5nIHByZWNlZGluZyBjdXJyZW50IG51bWJlciBpbiBiLCBpZiBhbnlcbiAgICAgIGkgPSAtMSwgLy8gaW5kZXggaW4gc1xuICAgICAgcyA9IFtdLCAvLyBzdHJpbmcgY29uc3RhbnRzIGFuZCBwbGFjZWhvbGRlcnNcbiAgICAgIHEgPSBbXTsgLy8gbnVtYmVyIGludGVycG9sYXRvcnNcblxuICAvLyBDb2VyY2UgaW5wdXRzIHRvIHN0cmluZ3MuXG4gIGEgPSBhICsgXCJcIiwgYiA9IGIgKyBcIlwiO1xuXG4gIC8vIEludGVycG9sYXRlIHBhaXJzIG9mIG51bWJlcnMgaW4gYSAmIGIuXG4gIHdoaWxlICgoYW0gPSByZUEuZXhlYyhhKSlcbiAgICAgICYmIChibSA9IHJlQi5leGVjKGIpKSkge1xuICAgIGlmICgoYnMgPSBibS5pbmRleCkgPiBiaSkgeyAvLyBhIHN0cmluZyBwcmVjZWRlcyB0aGUgbmV4dCBudW1iZXIgaW4gYlxuICAgICAgYnMgPSBiLnNsaWNlKGJpLCBicyk7XG4gICAgICBpZiAoc1tpXSkgc1tpXSArPSBiczsgLy8gY29hbGVzY2Ugd2l0aCBwcmV2aW91cyBzdHJpbmdcbiAgICAgIGVsc2Ugc1srK2ldID0gYnM7XG4gICAgfVxuICAgIGlmICgoYW0gPSBhbVswXSkgPT09IChibSA9IGJtWzBdKSkgeyAvLyBudW1iZXJzIGluIGEgJiBiIG1hdGNoXG4gICAgICBpZiAoc1tpXSkgc1tpXSArPSBibTsgLy8gY29hbGVzY2Ugd2l0aCBwcmV2aW91cyBzdHJpbmdcbiAgICAgIGVsc2Ugc1srK2ldID0gYm07XG4gICAgfSBlbHNlIHsgLy8gaW50ZXJwb2xhdGUgbm9uLW1hdGNoaW5nIG51bWJlcnNcbiAgICAgIHNbKytpXSA9IG51bGw7XG4gICAgICBxLnB1c2goe2k6IGksIHg6IG51bWJlcihhbSwgYm0pfSk7XG4gICAgfVxuICAgIGJpID0gcmVCLmxhc3RJbmRleDtcbiAgfVxuXG4gIC8vIEFkZCByZW1haW5zIG9mIGIuXG4gIGlmIChiaSA8IGIubGVuZ3RoKSB7XG4gICAgYnMgPSBiLnNsaWNlKGJpKTtcbiAgICBpZiAoc1tpXSkgc1tpXSArPSBiczsgLy8gY29hbGVzY2Ugd2l0aCBwcmV2aW91cyBzdHJpbmdcbiAgICBlbHNlIHNbKytpXSA9IGJzO1xuICB9XG5cbiAgLy8gU3BlY2lhbCBvcHRpbWl6YXRpb24gZm9yIG9ubHkgYSBzaW5nbGUgbWF0Y2guXG4gIC8vIE90aGVyd2lzZSwgaW50ZXJwb2xhdGUgZWFjaCBvZiB0aGUgbnVtYmVycyBhbmQgcmVqb2luIHRoZSBzdHJpbmcuXG4gIHJldHVybiBzLmxlbmd0aCA8IDIgPyAocVswXVxuICAgICAgPyBvbmUocVswXS54KVxuICAgICAgOiB6ZXJvKGIpKVxuICAgICAgOiAoYiA9IHEubGVuZ3RoLCBmdW5jdGlvbih0KSB7XG4gICAgICAgICAgZm9yICh2YXIgaSA9IDAsIG87IGkgPCBiOyArK2kpIHNbKG8gPSBxW2ldKS5pXSA9IG8ueCh0KTtcbiAgICAgICAgICByZXR1cm4gcy5qb2luKFwiXCIpO1xuICAgICAgICB9KTtcbn1cbiJdLCJtYXBwaW5ncyI6IkFBQUE7QUFBQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOyIsInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///./node_modules/vega-label/node_modules/d3-interpolate/src/string.js\n");

/***/ }),

/***/ "./node_modules/vega-label/node_modules/d3-interpolate/src/transform/decompose.js":
/*!****************************************************************************************!*\
  !*** ./node_modules/vega-label/node_modules/d3-interpolate/src/transform/decompose.js ***!
  \****************************************************************************************/
/*! exports provided: identity, default */
/***/ (function(module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"identity\", function() { return identity; });\nvar degrees = 180 / Math.PI;\n\nvar identity = {\n  translateX: 0,\n  translateY: 0,\n  rotate: 0,\n  skewX: 0,\n  scaleX: 1,\n  scaleY: 1\n};\n\n/* harmony default export */ __webpack_exports__[\"default\"] = (function(a, b, c, d, e, f) {\n  var scaleX, scaleY, skewX;\n  if (scaleX = Math.sqrt(a * a + b * b)) a /= scaleX, b /= scaleX;\n  if (skewX = a * c + b * d) c -= a * skewX, d -= b * skewX;\n  if (scaleY = Math.sqrt(c * c + d * d)) c /= scaleY, d /= scaleY, skewX /= scaleY;\n  if (a * d < b * c) a = -a, b = -b, skewX = -skewX, scaleX = -scaleX;\n  return {\n    translateX: e,\n    translateY: f,\n    rotate: Math.atan2(b, a) * degrees,\n    skewX: Math.atan(skewX) * degrees,\n    scaleX: scaleX,\n    scaleY: scaleY\n  };\n});\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvdmVnYS1sYWJlbC9ub2RlX21vZHVsZXMvZDMtaW50ZXJwb2xhdGUvc3JjL3RyYW5zZm9ybS9kZWNvbXBvc2UuanMuanMiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvdmVnYS1sYWJlbC9ub2RlX21vZHVsZXMvZDMtaW50ZXJwb2xhdGUvc3JjL3RyYW5zZm9ybS9kZWNvbXBvc2UuanM/ZTgyOSJdLCJzb3VyY2VzQ29udGVudCI6WyJ2YXIgZGVncmVlcyA9IDE4MCAvIE1hdGguUEk7XG5cbmV4cG9ydCB2YXIgaWRlbnRpdHkgPSB7XG4gIHRyYW5zbGF0ZVg6IDAsXG4gIHRyYW5zbGF0ZVk6IDAsXG4gIHJvdGF0ZTogMCxcbiAgc2tld1g6IDAsXG4gIHNjYWxlWDogMSxcbiAgc2NhbGVZOiAxXG59O1xuXG5leHBvcnQgZGVmYXVsdCBmdW5jdGlvbihhLCBiLCBjLCBkLCBlLCBmKSB7XG4gIHZhciBzY2FsZVgsIHNjYWxlWSwgc2tld1g7XG4gIGlmIChzY2FsZVggPSBNYXRoLnNxcnQoYSAqIGEgKyBiICogYikpIGEgLz0gc2NhbGVYLCBiIC89IHNjYWxlWDtcbiAgaWYgKHNrZXdYID0gYSAqIGMgKyBiICogZCkgYyAtPSBhICogc2tld1gsIGQgLT0gYiAqIHNrZXdYO1xuICBpZiAoc2NhbGVZID0gTWF0aC5zcXJ0KGMgKiBjICsgZCAqIGQpKSBjIC89IHNjYWxlWSwgZCAvPSBzY2FsZVksIHNrZXdYIC89IHNjYWxlWTtcbiAgaWYgKGEgKiBkIDwgYiAqIGMpIGEgPSAtYSwgYiA9IC1iLCBza2V3WCA9IC1za2V3WCwgc2NhbGVYID0gLXNjYWxlWDtcbiAgcmV0dXJuIHtcbiAgICB0cmFuc2xhdGVYOiBlLFxuICAgIHRyYW5zbGF0ZVk6IGYsXG4gICAgcm90YXRlOiBNYXRoLmF0YW4yKGIsIGEpICogZGVncmVlcyxcbiAgICBza2V3WDogTWF0aC5hdGFuKHNrZXdYKSAqIGRlZ3JlZXMsXG4gICAgc2NhbGVYOiBzY2FsZVgsXG4gICAgc2NhbGVZOiBzY2FsZVlcbiAgfTtcbn1cbiJdLCJtYXBwaW5ncyI6IkFBQUE7QUFBQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7Iiwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///./node_modules/vega-label/node_modules/d3-interpolate/src/transform/decompose.js\n");

/***/ }),

/***/ "./node_modules/vega-label/node_modules/d3-interpolate/src/transform/index.js":
/*!************************************************************************************!*\
  !*** ./node_modules/vega-label/node_modules/d3-interpolate/src/transform/index.js ***!
  \************************************************************************************/
/*! exports provided: interpolateTransformCss, interpolateTransformSvg */
/***/ (function(module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"interpolateTransformCss\", function() { return interpolateTransformCss; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"interpolateTransformSvg\", function() { return interpolateTransformSvg; });\n/* harmony import */ var _number_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../number.js */ \"./node_modules/vega-label/node_modules/d3-interpolate/src/number.js\");\n/* harmony import */ var _parse_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./parse.js */ \"./node_modules/vega-label/node_modules/d3-interpolate/src/transform/parse.js\");\n\n\n\nfunction interpolateTransform(parse, pxComma, pxParen, degParen) {\n\n  function pop(s) {\n    return s.length ? s.pop() + \" \" : \"\";\n  }\n\n  function translate(xa, ya, xb, yb, s, q) {\n    if (xa !== xb || ya !== yb) {\n      var i = s.push(\"translate(\", null, pxComma, null, pxParen);\n      q.push({i: i - 4, x: Object(_number_js__WEBPACK_IMPORTED_MODULE_0__[\"default\"])(xa, xb)}, {i: i - 2, x: Object(_number_js__WEBPACK_IMPORTED_MODULE_0__[\"default\"])(ya, yb)});\n    } else if (xb || yb) {\n      s.push(\"translate(\" + xb + pxComma + yb + pxParen);\n    }\n  }\n\n  function rotate(a, b, s, q) {\n    if (a !== b) {\n      if (a - b > 180) b += 360; else if (b - a > 180) a += 360; // shortest path\n      q.push({i: s.push(pop(s) + \"rotate(\", null, degParen) - 2, x: Object(_number_js__WEBPACK_IMPORTED_MODULE_0__[\"default\"])(a, b)});\n    } else if (b) {\n      s.push(pop(s) + \"rotate(\" + b + degParen);\n    }\n  }\n\n  function skewX(a, b, s, q) {\n    if (a !== b) {\n      q.push({i: s.push(pop(s) + \"skewX(\", null, degParen) - 2, x: Object(_number_js__WEBPACK_IMPORTED_MODULE_0__[\"default\"])(a, b)});\n    } else if (b) {\n      s.push(pop(s) + \"skewX(\" + b + degParen);\n    }\n  }\n\n  function scale(xa, ya, xb, yb, s, q) {\n    if (xa !== xb || ya !== yb) {\n      var i = s.push(pop(s) + \"scale(\", null, \",\", null, \")\");\n      q.push({i: i - 4, x: Object(_number_js__WEBPACK_IMPORTED_MODULE_0__[\"default\"])(xa, xb)}, {i: i - 2, x: Object(_number_js__WEBPACK_IMPORTED_MODULE_0__[\"default\"])(ya, yb)});\n    } else if (xb !== 1 || yb !== 1) {\n      s.push(pop(s) + \"scale(\" + xb + \",\" + yb + \")\");\n    }\n  }\n\n  return function(a, b) {\n    var s = [], // string constants and placeholders\n        q = []; // number interpolators\n    a = parse(a), b = parse(b);\n    translate(a.translateX, a.translateY, b.translateX, b.translateY, s, q);\n    rotate(a.rotate, b.rotate, s, q);\n    skewX(a.skewX, b.skewX, s, q);\n    scale(a.scaleX, a.scaleY, b.scaleX, b.scaleY, s, q);\n    a = b = null; // gc\n    return function(t) {\n      var i = -1, n = q.length, o;\n      while (++i < n) s[(o = q[i]).i] = o.x(t);\n      return s.join(\"\");\n    };\n  };\n}\n\nvar interpolateTransformCss = interpolateTransform(_parse_js__WEBPACK_IMPORTED_MODULE_1__[\"parseCss\"], \"px, \", \"px)\", \"deg)\");\nvar interpolateTransformSvg = interpolateTransform(_parse_js__WEBPACK_IMPORTED_MODULE_1__[\"parseSvg\"], \", \", \")\", \")\");\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvdmVnYS1sYWJlbC9ub2RlX21vZHVsZXMvZDMtaW50ZXJwb2xhdGUvc3JjL3RyYW5zZm9ybS9pbmRleC5qcy5qcyIsInNvdXJjZXMiOlsid2VicGFjazovLy8uL25vZGVfbW9kdWxlcy92ZWdhLWxhYmVsL25vZGVfbW9kdWxlcy9kMy1pbnRlcnBvbGF0ZS9zcmMvdHJhbnNmb3JtL2luZGV4LmpzPzBhMTciXSwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IG51bWJlciBmcm9tIFwiLi4vbnVtYmVyLmpzXCI7XG5pbXBvcnQge3BhcnNlQ3NzLCBwYXJzZVN2Z30gZnJvbSBcIi4vcGFyc2UuanNcIjtcblxuZnVuY3Rpb24gaW50ZXJwb2xhdGVUcmFuc2Zvcm0ocGFyc2UsIHB4Q29tbWEsIHB4UGFyZW4sIGRlZ1BhcmVuKSB7XG5cbiAgZnVuY3Rpb24gcG9wKHMpIHtcbiAgICByZXR1cm4gcy5sZW5ndGggPyBzLnBvcCgpICsgXCIgXCIgOiBcIlwiO1xuICB9XG5cbiAgZnVuY3Rpb24gdHJhbnNsYXRlKHhhLCB5YSwgeGIsIHliLCBzLCBxKSB7XG4gICAgaWYgKHhhICE9PSB4YiB8fCB5YSAhPT0geWIpIHtcbiAgICAgIHZhciBpID0gcy5wdXNoKFwidHJhbnNsYXRlKFwiLCBudWxsLCBweENvbW1hLCBudWxsLCBweFBhcmVuKTtcbiAgICAgIHEucHVzaCh7aTogaSAtIDQsIHg6IG51bWJlcih4YSwgeGIpfSwge2k6IGkgLSAyLCB4OiBudW1iZXIoeWEsIHliKX0pO1xuICAgIH0gZWxzZSBpZiAoeGIgfHwgeWIpIHtcbiAgICAgIHMucHVzaChcInRyYW5zbGF0ZShcIiArIHhiICsgcHhDb21tYSArIHliICsgcHhQYXJlbik7XG4gICAgfVxuICB9XG5cbiAgZnVuY3Rpb24gcm90YXRlKGEsIGIsIHMsIHEpIHtcbiAgICBpZiAoYSAhPT0gYikge1xuICAgICAgaWYgKGEgLSBiID4gMTgwKSBiICs9IDM2MDsgZWxzZSBpZiAoYiAtIGEgPiAxODApIGEgKz0gMzYwOyAvLyBzaG9ydGVzdCBwYXRoXG4gICAgICBxLnB1c2goe2k6IHMucHVzaChwb3AocykgKyBcInJvdGF0ZShcIiwgbnVsbCwgZGVnUGFyZW4pIC0gMiwgeDogbnVtYmVyKGEsIGIpfSk7XG4gICAgfSBlbHNlIGlmIChiKSB7XG4gICAgICBzLnB1c2gocG9wKHMpICsgXCJyb3RhdGUoXCIgKyBiICsgZGVnUGFyZW4pO1xuICAgIH1cbiAgfVxuXG4gIGZ1bmN0aW9uIHNrZXdYKGEsIGIsIHMsIHEpIHtcbiAgICBpZiAoYSAhPT0gYikge1xuICAgICAgcS5wdXNoKHtpOiBzLnB1c2gocG9wKHMpICsgXCJza2V3WChcIiwgbnVsbCwgZGVnUGFyZW4pIC0gMiwgeDogbnVtYmVyKGEsIGIpfSk7XG4gICAgfSBlbHNlIGlmIChiKSB7XG4gICAgICBzLnB1c2gocG9wKHMpICsgXCJza2V3WChcIiArIGIgKyBkZWdQYXJlbik7XG4gICAgfVxuICB9XG5cbiAgZnVuY3Rpb24gc2NhbGUoeGEsIHlhLCB4YiwgeWIsIHMsIHEpIHtcbiAgICBpZiAoeGEgIT09IHhiIHx8IHlhICE9PSB5Yikge1xuICAgICAgdmFyIGkgPSBzLnB1c2gocG9wKHMpICsgXCJzY2FsZShcIiwgbnVsbCwgXCIsXCIsIG51bGwsIFwiKVwiKTtcbiAgICAgIHEucHVzaCh7aTogaSAtIDQsIHg6IG51bWJlcih4YSwgeGIpfSwge2k6IGkgLSAyLCB4OiBudW1iZXIoeWEsIHliKX0pO1xuICAgIH0gZWxzZSBpZiAoeGIgIT09IDEgfHwgeWIgIT09IDEpIHtcbiAgICAgIHMucHVzaChwb3AocykgKyBcInNjYWxlKFwiICsgeGIgKyBcIixcIiArIHliICsgXCIpXCIpO1xuICAgIH1cbiAgfVxuXG4gIHJldHVybiBmdW5jdGlvbihhLCBiKSB7XG4gICAgdmFyIHMgPSBbXSwgLy8gc3RyaW5nIGNvbnN0YW50cyBhbmQgcGxhY2Vob2xkZXJzXG4gICAgICAgIHEgPSBbXTsgLy8gbnVtYmVyIGludGVycG9sYXRvcnNcbiAgICBhID0gcGFyc2UoYSksIGIgPSBwYXJzZShiKTtcbiAgICB0cmFuc2xhdGUoYS50cmFuc2xhdGVYLCBhLnRyYW5zbGF0ZVksIGIudHJhbnNsYXRlWCwgYi50cmFuc2xhdGVZLCBzLCBxKTtcbiAgICByb3RhdGUoYS5yb3RhdGUsIGIucm90YXRlLCBzLCBxKTtcbiAgICBza2V3WChhLnNrZXdYLCBiLnNrZXdYLCBzLCBxKTtcbiAgICBzY2FsZShhLnNjYWxlWCwgYS5zY2FsZVksIGIuc2NhbGVYLCBiLnNjYWxlWSwgcywgcSk7XG4gICAgYSA9IGIgPSBudWxsOyAvLyBnY1xuICAgIHJldHVybiBmdW5jdGlvbih0KSB7XG4gICAgICB2YXIgaSA9IC0xLCBuID0gcS5sZW5ndGgsIG87XG4gICAgICB3aGlsZSAoKytpIDwgbikgc1sobyA9IHFbaV0pLmldID0gby54KHQpO1xuICAgICAgcmV0dXJuIHMuam9pbihcIlwiKTtcbiAgICB9O1xuICB9O1xufVxuXG5leHBvcnQgdmFyIGludGVycG9sYXRlVHJhbnNmb3JtQ3NzID0gaW50ZXJwb2xhdGVUcmFuc2Zvcm0ocGFyc2VDc3MsIFwicHgsIFwiLCBcInB4KVwiLCBcImRlZylcIik7XG5leHBvcnQgdmFyIGludGVycG9sYXRlVHJhbnNmb3JtU3ZnID0gaW50ZXJwb2xhdGVUcmFuc2Zvcm0ocGFyc2VTdmcsIFwiLCBcIiwgXCIpXCIsIFwiKVwiKTtcbiJdLCJtYXBwaW5ncyI6IkFBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTsiLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///./node_modules/vega-label/node_modules/d3-interpolate/src/transform/index.js\n");

/***/ }),

/***/ "./node_modules/vega-label/node_modules/d3-interpolate/src/transform/parse.js":
/*!************************************************************************************!*\
  !*** ./node_modules/vega-label/node_modules/d3-interpolate/src/transform/parse.js ***!
  \************************************************************************************/
/*! exports provided: parseCss, parseSvg */
/***/ (function(module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"parseCss\", function() { return parseCss; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"parseSvg\", function() { return parseSvg; });\n/* harmony import */ var _decompose_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./decompose.js */ \"./node_modules/vega-label/node_modules/d3-interpolate/src/transform/decompose.js\");\n\n\nvar svgNode;\n\n/* eslint-disable no-undef */\nfunction parseCss(value) {\n  const m = new (typeof DOMMatrix === \"function\" ? DOMMatrix : WebKitCSSMatrix)(value + \"\");\n  return m.isIdentity ? _decompose_js__WEBPACK_IMPORTED_MODULE_0__[\"identity\"] : Object(_decompose_js__WEBPACK_IMPORTED_MODULE_0__[\"default\"])(m.a, m.b, m.c, m.d, m.e, m.f);\n}\n\nfunction parseSvg(value) {\n  if (value == null) return _decompose_js__WEBPACK_IMPORTED_MODULE_0__[\"identity\"];\n  if (!svgNode) svgNode = document.createElementNS(\"http://www.w3.org/2000/svg\", \"g\");\n  svgNode.setAttribute(\"transform\", value);\n  if (!(value = svgNode.transform.baseVal.consolidate())) return _decompose_js__WEBPACK_IMPORTED_MODULE_0__[\"identity\"];\n  value = value.matrix;\n  return Object(_decompose_js__WEBPACK_IMPORTED_MODULE_0__[\"default\"])(value.a, value.b, value.c, value.d, value.e, value.f);\n}\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvdmVnYS1sYWJlbC9ub2RlX21vZHVsZXMvZDMtaW50ZXJwb2xhdGUvc3JjL3RyYW5zZm9ybS9wYXJzZS5qcy5qcyIsInNvdXJjZXMiOlsid2VicGFjazovLy8uL25vZGVfbW9kdWxlcy92ZWdhLWxhYmVsL25vZGVfbW9kdWxlcy9kMy1pbnRlcnBvbGF0ZS9zcmMvdHJhbnNmb3JtL3BhcnNlLmpzP2VlY2YiXSwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IGRlY29tcG9zZSwge2lkZW50aXR5fSBmcm9tIFwiLi9kZWNvbXBvc2UuanNcIjtcblxudmFyIHN2Z05vZGU7XG5cbi8qIGVzbGludC1kaXNhYmxlIG5vLXVuZGVmICovXG5leHBvcnQgZnVuY3Rpb24gcGFyc2VDc3ModmFsdWUpIHtcbiAgY29uc3QgbSA9IG5ldyAodHlwZW9mIERPTU1hdHJpeCA9PT0gXCJmdW5jdGlvblwiID8gRE9NTWF0cml4IDogV2ViS2l0Q1NTTWF0cml4KSh2YWx1ZSArIFwiXCIpO1xuICByZXR1cm4gbS5pc0lkZW50aXR5ID8gaWRlbnRpdHkgOiBkZWNvbXBvc2UobS5hLCBtLmIsIG0uYywgbS5kLCBtLmUsIG0uZik7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBwYXJzZVN2Zyh2YWx1ZSkge1xuICBpZiAodmFsdWUgPT0gbnVsbCkgcmV0dXJuIGlkZW50aXR5O1xuICBpZiAoIXN2Z05vZGUpIHN2Z05vZGUgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50TlMoXCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Z1wiLCBcImdcIik7XG4gIHN2Z05vZGUuc2V0QXR0cmlidXRlKFwidHJhbnNmb3JtXCIsIHZhbHVlKTtcbiAgaWYgKCEodmFsdWUgPSBzdmdOb2RlLnRyYW5zZm9ybS5iYXNlVmFsLmNvbnNvbGlkYXRlKCkpKSByZXR1cm4gaWRlbnRpdHk7XG4gIHZhbHVlID0gdmFsdWUubWF0cml4O1xuICByZXR1cm4gZGVjb21wb3NlKHZhbHVlLmEsIHZhbHVlLmIsIHZhbHVlLmMsIHZhbHVlLmQsIHZhbHVlLmUsIHZhbHVlLmYpO1xufVxuIl0sIm1hcHBpbmdzIjoiQUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTsiLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///./node_modules/vega-label/node_modules/d3-interpolate/src/transform/parse.js\n");

/***/ }),

/***/ "./node_modules/vega-label/node_modules/d3-interpolate/src/value.js":
/*!**************************************************************************!*\
  !*** ./node_modules/vega-label/node_modules/d3-interpolate/src/value.js ***!
  \**************************************************************************/
/*! exports provided: default */
/***/ (function(module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var d3_color__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! d3-color */ \"./node_modules/d3-color/src/index.js\");\n/* harmony import */ var _rgb_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./rgb.js */ \"./node_modules/vega-label/node_modules/d3-interpolate/src/rgb.js\");\n/* harmony import */ var _array_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./array.js */ \"./node_modules/vega-label/node_modules/d3-interpolate/src/array.js\");\n/* harmony import */ var _date_js__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ./date.js */ \"./node_modules/vega-label/node_modules/d3-interpolate/src/date.js\");\n/* harmony import */ var _number_js__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ./number.js */ \"./node_modules/vega-label/node_modules/d3-interpolate/src/number.js\");\n/* harmony import */ var _object_js__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! ./object.js */ \"./node_modules/vega-label/node_modules/d3-interpolate/src/object.js\");\n/* harmony import */ var _string_js__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! ./string.js */ \"./node_modules/vega-label/node_modules/d3-interpolate/src/string.js\");\n/* harmony import */ var _constant_js__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! ./constant.js */ \"./node_modules/vega-label/node_modules/d3-interpolate/src/constant.js\");\n/* harmony import */ var _numberArray_js__WEBPACK_IMPORTED_MODULE_8__ = __webpack_require__(/*! ./numberArray.js */ \"./node_modules/vega-label/node_modules/d3-interpolate/src/numberArray.js\");\n\n\n\n\n\n\n\n\n\n\n/* harmony default export */ __webpack_exports__[\"default\"] = (function(a, b) {\n  var t = typeof b, c;\n  return b == null || t === \"boolean\" ? Object(_constant_js__WEBPACK_IMPORTED_MODULE_7__[\"default\"])(b)\n      : (t === \"number\" ? _number_js__WEBPACK_IMPORTED_MODULE_4__[\"default\"]\n      : t === \"string\" ? ((c = Object(d3_color__WEBPACK_IMPORTED_MODULE_0__[\"color\"])(b)) ? (b = c, _rgb_js__WEBPACK_IMPORTED_MODULE_1__[\"default\"]) : _string_js__WEBPACK_IMPORTED_MODULE_6__[\"default\"])\n      : b instanceof d3_color__WEBPACK_IMPORTED_MODULE_0__[\"color\"] ? _rgb_js__WEBPACK_IMPORTED_MODULE_1__[\"default\"]\n      : b instanceof Date ? _date_js__WEBPACK_IMPORTED_MODULE_3__[\"default\"]\n      : Object(_numberArray_js__WEBPACK_IMPORTED_MODULE_8__[\"isNumberArray\"])(b) ? _numberArray_js__WEBPACK_IMPORTED_MODULE_8__[\"default\"]\n      : Array.isArray(b) ? _array_js__WEBPACK_IMPORTED_MODULE_2__[\"genericArray\"]\n      : typeof b.valueOf !== \"function\" && typeof b.toString !== \"function\" || isNaN(b) ? _object_js__WEBPACK_IMPORTED_MODULE_5__[\"default\"]\n      : _number_js__WEBPACK_IMPORTED_MODULE_4__[\"default\"])(a, b);\n});\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvdmVnYS1sYWJlbC9ub2RlX21vZHVsZXMvZDMtaW50ZXJwb2xhdGUvc3JjL3ZhbHVlLmpzLmpzIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL3ZlZ2EtbGFiZWwvbm9kZV9tb2R1bGVzL2QzLWludGVycG9sYXRlL3NyYy92YWx1ZS5qcz8zY2RjIl0sInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7Y29sb3J9IGZyb20gXCJkMy1jb2xvclwiO1xuaW1wb3J0IHJnYiBmcm9tIFwiLi9yZ2IuanNcIjtcbmltcG9ydCB7Z2VuZXJpY0FycmF5fSBmcm9tIFwiLi9hcnJheS5qc1wiO1xuaW1wb3J0IGRhdGUgZnJvbSBcIi4vZGF0ZS5qc1wiO1xuaW1wb3J0IG51bWJlciBmcm9tIFwiLi9udW1iZXIuanNcIjtcbmltcG9ydCBvYmplY3QgZnJvbSBcIi4vb2JqZWN0LmpzXCI7XG5pbXBvcnQgc3RyaW5nIGZyb20gXCIuL3N0cmluZy5qc1wiO1xuaW1wb3J0IGNvbnN0YW50IGZyb20gXCIuL2NvbnN0YW50LmpzXCI7XG5pbXBvcnQgbnVtYmVyQXJyYXksIHtpc051bWJlckFycmF5fSBmcm9tIFwiLi9udW1iZXJBcnJheS5qc1wiO1xuXG5leHBvcnQgZGVmYXVsdCBmdW5jdGlvbihhLCBiKSB7XG4gIHZhciB0ID0gdHlwZW9mIGIsIGM7XG4gIHJldHVybiBiID09IG51bGwgfHwgdCA9PT0gXCJib29sZWFuXCIgPyBjb25zdGFudChiKVxuICAgICAgOiAodCA9PT0gXCJudW1iZXJcIiA/IG51bWJlclxuICAgICAgOiB0ID09PSBcInN0cmluZ1wiID8gKChjID0gY29sb3IoYikpID8gKGIgPSBjLCByZ2IpIDogc3RyaW5nKVxuICAgICAgOiBiIGluc3RhbmNlb2YgY29sb3IgPyByZ2JcbiAgICAgIDogYiBpbnN0YW5jZW9mIERhdGUgPyBkYXRlXG4gICAgICA6IGlzTnVtYmVyQXJyYXkoYikgPyBudW1iZXJBcnJheVxuICAgICAgOiBBcnJheS5pc0FycmF5KGIpID8gZ2VuZXJpY0FycmF5XG4gICAgICA6IHR5cGVvZiBiLnZhbHVlT2YgIT09IFwiZnVuY3Rpb25cIiAmJiB0eXBlb2YgYi50b1N0cmluZyAhPT0gXCJmdW5jdGlvblwiIHx8IGlzTmFOKGIpID8gb2JqZWN0XG4gICAgICA6IG51bWJlcikoYSwgYik7XG59XG4iXSwibWFwcGluZ3MiOiJBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7Iiwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///./node_modules/vega-label/node_modules/d3-interpolate/src/value.js\n");

/***/ }),

/***/ "./node_modules/vega-label/node_modules/d3-interpolate/src/zoom.js":
/*!*************************************************************************!*\
  !*** ./node_modules/vega-label/node_modules/d3-interpolate/src/zoom.js ***!
  \*************************************************************************/
/*! exports provided: default */
/***/ (function(module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\nvar epsilon2 = 1e-12;\n\nfunction cosh(x) {\n  return ((x = Math.exp(x)) + 1 / x) / 2;\n}\n\nfunction sinh(x) {\n  return ((x = Math.exp(x)) - 1 / x) / 2;\n}\n\nfunction tanh(x) {\n  return ((x = Math.exp(2 * x)) - 1) / (x + 1);\n}\n\n/* harmony default export */ __webpack_exports__[\"default\"] = ((function zoomRho(rho, rho2, rho4) {\n\n  // p0 = [ux0, uy0, w0]\n  // p1 = [ux1, uy1, w1]\n  function zoom(p0, p1) {\n    var ux0 = p0[0], uy0 = p0[1], w0 = p0[2],\n        ux1 = p1[0], uy1 = p1[1], w1 = p1[2],\n        dx = ux1 - ux0,\n        dy = uy1 - uy0,\n        d2 = dx * dx + dy * dy,\n        i,\n        S;\n\n    // Special case for u0 ≅ u1.\n    if (d2 < epsilon2) {\n      S = Math.log(w1 / w0) / rho;\n      i = function(t) {\n        return [\n          ux0 + t * dx,\n          uy0 + t * dy,\n          w0 * Math.exp(rho * t * S)\n        ];\n      }\n    }\n\n    // General case.\n    else {\n      var d1 = Math.sqrt(d2),\n          b0 = (w1 * w1 - w0 * w0 + rho4 * d2) / (2 * w0 * rho2 * d1),\n          b1 = (w1 * w1 - w0 * w0 - rho4 * d2) / (2 * w1 * rho2 * d1),\n          r0 = Math.log(Math.sqrt(b0 * b0 + 1) - b0),\n          r1 = Math.log(Math.sqrt(b1 * b1 + 1) - b1);\n      S = (r1 - r0) / rho;\n      i = function(t) {\n        var s = t * S,\n            coshr0 = cosh(r0),\n            u = w0 / (rho2 * d1) * (coshr0 * tanh(rho * s + r0) - sinh(r0));\n        return [\n          ux0 + u * dx,\n          uy0 + u * dy,\n          w0 * coshr0 / cosh(rho * s + r0)\n        ];\n      }\n    }\n\n    i.duration = S * 1000 * rho / Math.SQRT2;\n\n    return i;\n  }\n\n  zoom.rho = function(_) {\n    var _1 = Math.max(1e-3, +_), _2 = _1 * _1, _4 = _2 * _2;\n    return zoomRho(_1, _2, _4);\n  };\n\n  return zoom;\n})(Math.SQRT2, 2, 4));\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvdmVnYS1sYWJlbC9ub2RlX21vZHVsZXMvZDMtaW50ZXJwb2xhdGUvc3JjL3pvb20uanMuanMiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvdmVnYS1sYWJlbC9ub2RlX21vZHVsZXMvZDMtaW50ZXJwb2xhdGUvc3JjL3pvb20uanM/ZWVkMyJdLCJzb3VyY2VzQ29udGVudCI6WyJ2YXIgZXBzaWxvbjIgPSAxZS0xMjtcblxuZnVuY3Rpb24gY29zaCh4KSB7XG4gIHJldHVybiAoKHggPSBNYXRoLmV4cCh4KSkgKyAxIC8geCkgLyAyO1xufVxuXG5mdW5jdGlvbiBzaW5oKHgpIHtcbiAgcmV0dXJuICgoeCA9IE1hdGguZXhwKHgpKSAtIDEgLyB4KSAvIDI7XG59XG5cbmZ1bmN0aW9uIHRhbmgoeCkge1xuICByZXR1cm4gKCh4ID0gTWF0aC5leHAoMiAqIHgpKSAtIDEpIC8gKHggKyAxKTtcbn1cblxuZXhwb3J0IGRlZmF1bHQgKGZ1bmN0aW9uIHpvb21SaG8ocmhvLCByaG8yLCByaG80KSB7XG5cbiAgLy8gcDAgPSBbdXgwLCB1eTAsIHcwXVxuICAvLyBwMSA9IFt1eDEsIHV5MSwgdzFdXG4gIGZ1bmN0aW9uIHpvb20ocDAsIHAxKSB7XG4gICAgdmFyIHV4MCA9IHAwWzBdLCB1eTAgPSBwMFsxXSwgdzAgPSBwMFsyXSxcbiAgICAgICAgdXgxID0gcDFbMF0sIHV5MSA9IHAxWzFdLCB3MSA9IHAxWzJdLFxuICAgICAgICBkeCA9IHV4MSAtIHV4MCxcbiAgICAgICAgZHkgPSB1eTEgLSB1eTAsXG4gICAgICAgIGQyID0gZHggKiBkeCArIGR5ICogZHksXG4gICAgICAgIGksXG4gICAgICAgIFM7XG5cbiAgICAvLyBTcGVjaWFsIGNhc2UgZm9yIHUwIOKJhSB1MS5cbiAgICBpZiAoZDIgPCBlcHNpbG9uMikge1xuICAgICAgUyA9IE1hdGgubG9nKHcxIC8gdzApIC8gcmhvO1xuICAgICAgaSA9IGZ1bmN0aW9uKHQpIHtcbiAgICAgICAgcmV0dXJuIFtcbiAgICAgICAgICB1eDAgKyB0ICogZHgsXG4gICAgICAgICAgdXkwICsgdCAqIGR5LFxuICAgICAgICAgIHcwICogTWF0aC5leHAocmhvICogdCAqIFMpXG4gICAgICAgIF07XG4gICAgICB9XG4gICAgfVxuXG4gICAgLy8gR2VuZXJhbCBjYXNlLlxuICAgIGVsc2Uge1xuICAgICAgdmFyIGQxID0gTWF0aC5zcXJ0KGQyKSxcbiAgICAgICAgICBiMCA9ICh3MSAqIHcxIC0gdzAgKiB3MCArIHJobzQgKiBkMikgLyAoMiAqIHcwICogcmhvMiAqIGQxKSxcbiAgICAgICAgICBiMSA9ICh3MSAqIHcxIC0gdzAgKiB3MCAtIHJobzQgKiBkMikgLyAoMiAqIHcxICogcmhvMiAqIGQxKSxcbiAgICAgICAgICByMCA9IE1hdGgubG9nKE1hdGguc3FydChiMCAqIGIwICsgMSkgLSBiMCksXG4gICAgICAgICAgcjEgPSBNYXRoLmxvZyhNYXRoLnNxcnQoYjEgKiBiMSArIDEpIC0gYjEpO1xuICAgICAgUyA9IChyMSAtIHIwKSAvIHJobztcbiAgICAgIGkgPSBmdW5jdGlvbih0KSB7XG4gICAgICAgIHZhciBzID0gdCAqIFMsXG4gICAgICAgICAgICBjb3NocjAgPSBjb3NoKHIwKSxcbiAgICAgICAgICAgIHUgPSB3MCAvIChyaG8yICogZDEpICogKGNvc2hyMCAqIHRhbmgocmhvICogcyArIHIwKSAtIHNpbmgocjApKTtcbiAgICAgICAgcmV0dXJuIFtcbiAgICAgICAgICB1eDAgKyB1ICogZHgsXG4gICAgICAgICAgdXkwICsgdSAqIGR5LFxuICAgICAgICAgIHcwICogY29zaHIwIC8gY29zaChyaG8gKiBzICsgcjApXG4gICAgICAgIF07XG4gICAgICB9XG4gICAgfVxuXG4gICAgaS5kdXJhdGlvbiA9IFMgKiAxMDAwICogcmhvIC8gTWF0aC5TUVJUMjtcblxuICAgIHJldHVybiBpO1xuICB9XG5cbiAgem9vbS5yaG8gPSBmdW5jdGlvbihfKSB7XG4gICAgdmFyIF8xID0gTWF0aC5tYXgoMWUtMywgK18pLCBfMiA9IF8xICogXzEsIF80ID0gXzIgKiBfMjtcbiAgICByZXR1cm4gem9vbVJobyhfMSwgXzIsIF80KTtcbiAgfTtcblxuICByZXR1cm4gem9vbTtcbn0pKE1hdGguU1FSVDIsIDIsIDQpO1xuIl0sIm1hcHBpbmdzIjoiQUFBQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7Iiwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///./node_modules/vega-label/node_modules/d3-interpolate/src/zoom.js\n");

/***/ }),

/***/ "./node_modules/vega-label/node_modules/d3-path/src/index.js":
/*!*******************************************************************!*\
  !*** ./node_modules/vega-label/node_modules/d3-path/src/index.js ***!
  \*******************************************************************/
/*! exports provided: path */
/***/ (function(module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _path_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./path.js */ \"./node_modules/vega-label/node_modules/d3-path/src/path.js\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"path\", function() { return _path_js__WEBPACK_IMPORTED_MODULE_0__[\"default\"]; });\n\n\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvdmVnYS1sYWJlbC9ub2RlX21vZHVsZXMvZDMtcGF0aC9zcmMvaW5kZXguanMuanMiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvdmVnYS1sYWJlbC9ub2RlX21vZHVsZXMvZDMtcGF0aC9zcmMvaW5kZXguanM/N2QyNiJdLCJzb3VyY2VzQ29udGVudCI6WyJleHBvcnQge2RlZmF1bHQgYXMgcGF0aH0gZnJvbSBcIi4vcGF0aC5qc1wiO1xuIl0sIm1hcHBpbmdzIjoiQUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBOyIsInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///./node_modules/vega-label/node_modules/d3-path/src/index.js\n");

/***/ }),

/***/ "./node_modules/vega-label/node_modules/d3-path/src/path.js":
/*!******************************************************************!*\
  !*** ./node_modules/vega-label/node_modules/d3-path/src/path.js ***!
  \******************************************************************/
/*! exports provided: default */
/***/ (function(module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\nconst pi = Math.PI,\n    tau = 2 * pi,\n    epsilon = 1e-6,\n    tauEpsilon = tau - epsilon;\n\nfunction Path() {\n  this._x0 = this._y0 = // start of current subpath\n  this._x1 = this._y1 = null; // end of current subpath\n  this._ = \"\";\n}\n\nfunction path() {\n  return new Path;\n}\n\nPath.prototype = path.prototype = {\n  constructor: Path,\n  moveTo: function(x, y) {\n    this._ += \"M\" + (this._x0 = this._x1 = +x) + \",\" + (this._y0 = this._y1 = +y);\n  },\n  closePath: function() {\n    if (this._x1 !== null) {\n      this._x1 = this._x0, this._y1 = this._y0;\n      this._ += \"Z\";\n    }\n  },\n  lineTo: function(x, y) {\n    this._ += \"L\" + (this._x1 = +x) + \",\" + (this._y1 = +y);\n  },\n  quadraticCurveTo: function(x1, y1, x, y) {\n    this._ += \"Q\" + (+x1) + \",\" + (+y1) + \",\" + (this._x1 = +x) + \",\" + (this._y1 = +y);\n  },\n  bezierCurveTo: function(x1, y1, x2, y2, x, y) {\n    this._ += \"C\" + (+x1) + \",\" + (+y1) + \",\" + (+x2) + \",\" + (+y2) + \",\" + (this._x1 = +x) + \",\" + (this._y1 = +y);\n  },\n  arcTo: function(x1, y1, x2, y2, r) {\n    x1 = +x1, y1 = +y1, x2 = +x2, y2 = +y2, r = +r;\n    var x0 = this._x1,\n        y0 = this._y1,\n        x21 = x2 - x1,\n        y21 = y2 - y1,\n        x01 = x0 - x1,\n        y01 = y0 - y1,\n        l01_2 = x01 * x01 + y01 * y01;\n\n    // Is the radius negative? Error.\n    if (r < 0) throw new Error(\"negative radius: \" + r);\n\n    // Is this path empty? Move to (x1,y1).\n    if (this._x1 === null) {\n      this._ += \"M\" + (this._x1 = x1) + \",\" + (this._y1 = y1);\n    }\n\n    // Or, is (x1,y1) coincident with (x0,y0)? Do nothing.\n    else if (!(l01_2 > epsilon));\n\n    // Or, are (x0,y0), (x1,y1) and (x2,y2) collinear?\n    // Equivalently, is (x1,y1) coincident with (x2,y2)?\n    // Or, is the radius zero? Line to (x1,y1).\n    else if (!(Math.abs(y01 * x21 - y21 * x01) > epsilon) || !r) {\n      this._ += \"L\" + (this._x1 = x1) + \",\" + (this._y1 = y1);\n    }\n\n    // Otherwise, draw an arc!\n    else {\n      var x20 = x2 - x0,\n          y20 = y2 - y0,\n          l21_2 = x21 * x21 + y21 * y21,\n          l20_2 = x20 * x20 + y20 * y20,\n          l21 = Math.sqrt(l21_2),\n          l01 = Math.sqrt(l01_2),\n          l = r * Math.tan((pi - Math.acos((l21_2 + l01_2 - l20_2) / (2 * l21 * l01))) / 2),\n          t01 = l / l01,\n          t21 = l / l21;\n\n      // If the start tangent is not coincident with (x0,y0), line to.\n      if (Math.abs(t01 - 1) > epsilon) {\n        this._ += \"L\" + (x1 + t01 * x01) + \",\" + (y1 + t01 * y01);\n      }\n\n      this._ += \"A\" + r + \",\" + r + \",0,0,\" + (+(y01 * x20 > x01 * y20)) + \",\" + (this._x1 = x1 + t21 * x21) + \",\" + (this._y1 = y1 + t21 * y21);\n    }\n  },\n  arc: function(x, y, r, a0, a1, ccw) {\n    x = +x, y = +y, r = +r, ccw = !!ccw;\n    var dx = r * Math.cos(a0),\n        dy = r * Math.sin(a0),\n        x0 = x + dx,\n        y0 = y + dy,\n        cw = 1 ^ ccw,\n        da = ccw ? a0 - a1 : a1 - a0;\n\n    // Is the radius negative? Error.\n    if (r < 0) throw new Error(\"negative radius: \" + r);\n\n    // Is this path empty? Move to (x0,y0).\n    if (this._x1 === null) {\n      this._ += \"M\" + x0 + \",\" + y0;\n    }\n\n    // Or, is (x0,y0) not coincident with the previous point? Line to (x0,y0).\n    else if (Math.abs(this._x1 - x0) > epsilon || Math.abs(this._y1 - y0) > epsilon) {\n      this._ += \"L\" + x0 + \",\" + y0;\n    }\n\n    // Is this arc empty? We’re done.\n    if (!r) return;\n\n    // Does the angle go the wrong way? Flip the direction.\n    if (da < 0) da = da % tau + tau;\n\n    // Is this a complete circle? Draw two arcs to complete the circle.\n    if (da > tauEpsilon) {\n      this._ += \"A\" + r + \",\" + r + \",0,1,\" + cw + \",\" + (x - dx) + \",\" + (y - dy) + \"A\" + r + \",\" + r + \",0,1,\" + cw + \",\" + (this._x1 = x0) + \",\" + (this._y1 = y0);\n    }\n\n    // Is this arc non-empty? Draw an arc!\n    else if (da > epsilon) {\n      this._ += \"A\" + r + \",\" + r + \",0,\" + (+(da >= pi)) + \",\" + cw + \",\" + (this._x1 = x + r * Math.cos(a1)) + \",\" + (this._y1 = y + r * Math.sin(a1));\n    }\n  },\n  rect: function(x, y, w, h) {\n    this._ += \"M\" + (this._x0 = this._x1 = +x) + \",\" + (this._y0 = this._y1 = +y) + \"h\" + (+w) + \"v\" + (+h) + \"h\" + (-w) + \"Z\";\n  },\n  toString: function() {\n    return this._;\n  }\n};\n\n/* harmony default export */ __webpack_exports__[\"default\"] = (path);\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,[encoded data, 7084 characters]\n//# sourceURL=webpack-internal:///./node_modules/vega-label/node_modules/d3-path/src/path.js\n");

/***/ }),

/***/ "./node_modules/vega-label/node_modules/d3-scale/src/band.js":
/*!*******************************************************************!*\
  !*** ./node_modules/vega-label/node_modules/d3-scale/src/band.js ***!
  \*******************************************************************/
/*! exports provided: default, point */
/***/ (function(module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"default\", function() { return band; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"point\", function() { return point; });\n/* harmony import */ var d3_array__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! d3-array */ \"./node_modules/d3-array/src/index.js\");\n/* harmony import */ var _init_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./init.js */ \"./node_modules/vega-label/node_modules/d3-scale/src/init.js\");\n/* harmony import */ var _ordinal_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./ordinal.js */ \"./node_modules/vega-label/node_modules/d3-scale/src/ordinal.js\");\n\n\n\n\nfunction band() {\n  var scale = Object(_ordinal_js__WEBPACK_IMPORTED_MODULE_2__[\"default\"])().unknown(undefined),\n      domain = scale.domain,\n      ordinalRange = scale.range,\n      r0 = 0,\n      r1 = 1,\n      step,\n      bandwidth,\n      round = false,\n      paddingInner = 0,\n      paddingOuter = 0,\n      align = 0.5;\n\n  delete scale.unknown;\n\n  function rescale() {\n    var n = domain().length,\n        reverse = r1 < r0,\n        start = reverse ? r1 : r0,\n        stop = reverse ? r0 : r1;\n    step = (stop - start) / Math.max(1, n - paddingInner + paddingOuter * 2);\n    if (round) step = Math.floor(step);\n    start += (stop - start - step * (n - paddingInner)) * align;\n    bandwidth = step * (1 - paddingInner);\n    if (round) start = Math.round(start), bandwidth = Math.round(bandwidth);\n    var values = Object(d3_array__WEBPACK_IMPORTED_MODULE_0__[\"range\"])(n).map(function(i) { return start + step * i; });\n    return ordinalRange(reverse ? values.reverse() : values);\n  }\n\n  scale.domain = function(_) {\n    return arguments.length ? (domain(_), rescale()) : domain();\n  };\n\n  scale.range = function(_) {\n    return arguments.length ? ([r0, r1] = _, r0 = +r0, r1 = +r1, rescale()) : [r0, r1];\n  };\n\n  scale.rangeRound = function(_) {\n    return [r0, r1] = _, r0 = +r0, r1 = +r1, round = true, rescale();\n  };\n\n  scale.bandwidth = function() {\n    return bandwidth;\n  };\n\n  scale.step = function() {\n    return step;\n  };\n\n  scale.round = function(_) {\n    return arguments.length ? (round = !!_, rescale()) : round;\n  };\n\n  scale.padding = function(_) {\n    return arguments.length ? (paddingInner = Math.min(1, paddingOuter = +_), rescale()) : paddingInner;\n  };\n\n  scale.paddingInner = function(_) {\n    return arguments.length ? (paddingInner = Math.min(1, _), rescale()) : paddingInner;\n  };\n\n  scale.paddingOuter = function(_) {\n    return arguments.length ? (paddingOuter = +_, rescale()) : paddingOuter;\n  };\n\n  scale.align = function(_) {\n    return arguments.length ? (align = Math.max(0, Math.min(1, _)), rescale()) : align;\n  };\n\n  scale.copy = function() {\n    return band(domain(), [r0, r1])\n        .round(round)\n        .paddingInner(paddingInner)\n        .paddingOuter(paddingOuter)\n        .align(align);\n  };\n\n  return _init_js__WEBPACK_IMPORTED_MODULE_1__[\"initRange\"].apply(rescale(), arguments);\n}\n\nfunction pointish(scale) {\n  var copy = scale.copy;\n\n  scale.padding = scale.paddingOuter;\n  delete scale.paddingInner;\n  delete scale.paddingOuter;\n\n  scale.copy = function() {\n    return pointish(copy());\n  };\n\n  return scale;\n}\n\nfunction point() {\n  return pointish(band.apply(null, arguments).paddingInner(1));\n}\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,[encoded data, 4696 characters]\n//# sourceURL=webpack-internal:///./node_modules/vega-label/node_modules/d3-scale/src/band.js\n");

/***/ }),

/***/ "./node_modules/vega-label/node_modules/d3-scale/src/constant.js":
/*!***********************************************************************!*\
  !*** ./node_modules/vega-label/node_modules/d3-scale/src/constant.js ***!
  \***********************************************************************/
/*! exports provided: default */
/***/ (function(module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"default\", function() { return constants; });\nfunction constants(x) {\n  return function() {\n    return x;\n  };\n}\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvdmVnYS1sYWJlbC9ub2RlX21vZHVsZXMvZDMtc2NhbGUvc3JjL2NvbnN0YW50LmpzLmpzIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL3ZlZ2EtbGFiZWwvbm9kZV9tb2R1bGVzL2QzLXNjYWxlL3NyYy9jb25zdGFudC5qcz8yMmI2Il0sInNvdXJjZXNDb250ZW50IjpbImV4cG9ydCBkZWZhdWx0IGZ1bmN0aW9uIGNvbnN0YW50cyh4KSB7XG4gIHJldHVybiBmdW5jdGlvbigpIHtcbiAgICByZXR1cm4geDtcbiAgfTtcbn1cbiJdLCJtYXBwaW5ncyI6IkFBQUE7QUFBQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7Iiwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///./node_modules/vega-label/node_modules/d3-scale/src/constant.js\n");

/***/ }),

/***/ "./node_modules/vega-label/node_modules/d3-scale/src/continuous.js":
/*!*************************************************************************!*\
  !*** ./node_modules/vega-label/node_modules/d3-scale/src/continuous.js ***!
  \*************************************************************************/
/*! exports provided: identity, copy, transformer, default */
/***/ (function(module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"identity\", function() { return identity; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"copy\", function() { return copy; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"transformer\", function() { return transformer; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"default\", function() { return continuous; });\n/* harmony import */ var d3_array__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! d3-array */ \"./node_modules/d3-array/src/index.js\");\n/* harmony import */ var d3_interpolate__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! d3-interpolate */ \"./node_modules/vega-label/node_modules/d3-interpolate/src/index.js\");\n/* harmony import */ var _constant_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./constant.js */ \"./node_modules/vega-label/node_modules/d3-scale/src/constant.js\");\n/* harmony import */ var _number_js__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ./number.js */ \"./node_modules/vega-label/node_modules/d3-scale/src/number.js\");\n\n\n\n\n\nvar unit = [0, 1];\n\nfunction identity(x) {\n  return x;\n}\n\nfunction normalize(a, b) {\n  return (b -= (a = +a))\n      ? function(x) { return (x - a) / b; }\n      : Object(_constant_js__WEBPACK_IMPORTED_MODULE_2__[\"default\"])(isNaN(b) ? NaN : 0.5);\n}\n\nfunction clamper(a, b) {\n  var t;\n  if (a > b) t = a, a = b, b = t;\n  return function(x) { return Math.max(a, Math.min(b, x)); };\n}\n\n// normalize(a, b)(x) takes a domain value x in [a,b] and returns the corresponding parameter t in [0,1].\n// interpolate(a, b)(t) takes a parameter t in [0,1] and returns the corresponding range value x in [a,b].\nfunction bimap(domain, range, interpolate) {\n  var d0 = domain[0], d1 = domain[1], r0 = range[0], r1 = range[1];\n  if (d1 < d0) d0 = normalize(d1, d0), r0 = interpolate(r1, r0);\n  else d0 = normalize(d0, d1), r0 = interpolate(r0, r1);\n  return function(x) { return r0(d0(x)); };\n}\n\nfunction polymap(domain, range, interpolate) {\n  var j = Math.min(domain.length, range.length) - 1,\n      d = new Array(j),\n      r = new Array(j),\n      i = -1;\n\n  // Reverse descending domains.\n  if (domain[j] < domain[0]) {\n    domain = domain.slice().reverse();\n    range = range.slice().reverse();\n  }\n\n  while (++i < j) {\n    d[i] = normalize(domain[i], domain[i + 1]);\n    r[i] = interpolate(range[i], range[i + 1]);\n  }\n\n  return function(x) {\n    var i = Object(d3_array__WEBPACK_IMPORTED_MODULE_0__[\"bisect\"])(domain, x, 1, j) - 1;\n    return r[i](d[i](x));\n  };\n}\n\nfunction copy(source, target) {\n  return target\n      .domain(source.domain())\n      .range(source.range())\n      .interpolate(source.interpolate())\n      .clamp(source.clamp())\n      .unknown(source.unknown());\n}\n\nfunction transformer() {\n  var domain = unit,\n      range = unit,\n      interpolate = d3_interpolate__WEBPACK_IMPORTED_MODULE_1__[\"interpolate\"],\n      transform,\n      untransform,\n      unknown,\n      clamp = identity,\n      piecewise,\n      output,\n      input;\n\n  function rescale() {\n    var n = Math.min(domain.length, range.length);\n    if (clamp !== identity) clamp = clamper(domain[0], domain[n - 1]);\n    piecewise = n > 2 ? polymap : bimap;\n    output = input = null;\n    return scale;\n  }\n\n  function scale(x) {\n    return x == null || isNaN(x = +x) ? unknown : (output || (output = piecewise(domain.map(transform), range, interpolate)))(transform(clamp(x)));\n  }\n\n  scale.invert = function(y) {\n    return clamp(untransform((input || (input = piecewise(range, domain.map(transform), d3_interpolate__WEBPACK_IMPORTED_MODULE_1__[\"interpolateNumber\"])))(y)));\n  };\n\n  scale.domain = function(_) {\n    return arguments.length ? (domain = Array.from(_, _number_js__WEBPACK_IMPORTED_MODULE_3__[\"default\"]), rescale()) : domain.slice();\n  };\n\n  scale.range = function(_) {\n    return arguments.length ? (range = Array.from(_), rescale()) : range.slice();\n  };\n\n  scale.rangeRound = function(_) {\n    return range = Array.from(_), interpolate = d3_interpolate__WEBPACK_IMPORTED_MODULE_1__[\"interpolateRound\"], rescale();\n  };\n\n  scale.clamp = function(_) {\n    return arguments.length ? (clamp = _ ? true : identity, rescale()) : clamp !== identity;\n  };\n\n  scale.interpolate = function(_) {\n    return arguments.length ? (interpolate = _, rescale()) : interpolate;\n  };\n\n  scale.unknown = function(_) {\n    return arguments.length ? (unknown = _, scale) : unknown;\n  };\n\n  return function(t, u) {\n    transform = t, untransform = u;\n    return rescale();\n  };\n}\n\nfunction continuous() {\n  return transformer()(identity, identity);\n}\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,[encoded data, 6016 characters]\n//# sourceURL=webpack-internal:///./node_modules/vega-label/node_modules/d3-scale/src/continuous.js\n");

/***/ }),

/***/ "./node_modules/vega-label/node_modules/d3-scale/src/diverging.js":
/*!************************************************************************!*\
  !*** ./node_modules/vega-label/node_modules/d3-scale/src/diverging.js ***!
  \************************************************************************/
/*! exports provided: default, divergingLog, divergingSymlog, divergingPow, divergingSqrt */
/***/ (function(module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"default\", function() { return diverging; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"divergingLog\", function() { return divergingLog; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"divergingSymlog\", function() { return divergingSymlog; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"divergingPow\", function() { return divergingPow; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"divergingSqrt\", function() { return divergingSqrt; });\n/* harmony import */ var d3_interpolate__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! d3-interpolate */ \"./node_modules/vega-label/node_modules/d3-interpolate/src/index.js\");\n/* harmony import */ var _continuous_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./continuous.js */ \"./node_modules/vega-label/node_modules/d3-scale/src/continuous.js\");\n/* harmony import */ var _init_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./init.js */ \"./node_modules/vega-label/node_modules/d3-scale/src/init.js\");\n/* harmony import */ var _linear_js__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ./linear.js */ \"./node_modules/vega-label/node_modules/d3-scale/src/linear.js\");\n/* harmony import */ var _log_js__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ./log.js */ \"./node_modules/vega-label/node_modules/d3-scale/src/log.js\");\n/* harmony import */ var _sequential_js__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! ./sequential.js */ \"./node_modules/vega-label/node_modules/d3-scale/src/sequential.js\");\n/* harmony import */ var _symlog_js__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! ./symlog.js */ \"./node_modules/vega-label/node_modules/d3-scale/src/symlog.js\");\n/* harmony import */ var _pow_js__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! ./pow.js */ \"./node_modules/vega-label/node_modules/d3-scale/src/pow.js\");\n\n\n\n\n\n\n\n\n\nfunction transformer() {\n  var x0 = 0,\n      x1 = 0.5,\n      x2 = 1,\n      s = 1,\n      t0,\n      t1,\n      t2,\n      k10,\n      k21,\n      interpolator = _continuous_js__WEBPACK_IMPORTED_MODULE_1__[\"identity\"],\n      transform,\n      clamp = false,\n      unknown;\n\n  function scale(x) {\n    return isNaN(x = +x) ? unknown : (x = 0.5 + ((x = +transform(x)) - t1) * (s * x < s * t1 ? k10 : k21), interpolator(clamp ? Math.max(0, Math.min(1, x)) : x));\n  }\n\n  scale.domain = function(_) {\n    return arguments.length ? ([x0, x1, x2] = _, t0 = transform(x0 = +x0), t1 = transform(x1 = +x1), t2 = transform(x2 = +x2), k10 = t0 === t1 ? 0 : 0.5 / (t1 - t0), k21 = t1 === t2 ? 0 : 0.5 / (t2 - t1), s = t1 < t0 ? -1 : 1, scale) : [x0, x1, x2];\n  };\n\n  scale.clamp = function(_) {\n    return arguments.length ? (clamp = !!_, scale) : clamp;\n  };\n\n  scale.interpolator = function(_) {\n    return arguments.length ? (interpolator = _, scale) : interpolator;\n  };\n\n  function range(interpolate) {\n    return function(_) {\n      var r0, r1, r2;\n      return arguments.length ? ([r0, r1, r2] = _, interpolator = Object(d3_interpolate__WEBPACK_IMPORTED_MODULE_0__[\"piecewise\"])(interpolate, [r0, r1, r2]), scale) : [interpolator(0), interpolator(0.5), interpolator(1)];\n    };\n  }\n\n  scale.range = range(d3_interpolate__WEBPACK_IMPORTED_MODULE_0__[\"interpolate\"]);\n\n  scale.rangeRound = range(d3_interpolate__WEBPACK_IMPORTED_MODULE_0__[\"interpolateRound\"]);\n\n  scale.unknown = function(_) {\n    return arguments.length ? (unknown = _, scale) : unknown;\n  };\n\n  return function(t) {\n    transform = t, t0 = t(x0), t1 = t(x1), t2 = t(x2), k10 = t0 === t1 ? 0 : 0.5 / (t1 - t0), k21 = t1 === t2 ? 0 : 0.5 / (t2 - t1), s = t1 < t0 ? -1 : 1;\n    return scale;\n  };\n}\n\nfunction diverging() {\n  var scale = Object(_linear_js__WEBPACK_IMPORTED_MODULE_3__[\"linearish\"])(transformer()(_continuous_js__WEBPACK_IMPORTED_MODULE_1__[\"identity\"]));\n\n  scale.copy = function() {\n    return Object(_sequential_js__WEBPACK_IMPORTED_MODULE_5__[\"copy\"])(scale, diverging());\n  };\n\n  return _init_js__WEBPACK_IMPORTED_MODULE_2__[\"initInterpolator\"].apply(scale, arguments);\n}\n\nfunction divergingLog() {\n  var scale = Object(_log_js__WEBPACK_IMPORTED_MODULE_4__[\"loggish\"])(transformer()).domain([0.1, 1, 10]);\n\n  scale.copy = function() {\n    return Object(_sequential_js__WEBPACK_IMPORTED_MODULE_5__[\"copy\"])(scale, divergingLog()).base(scale.base());\n  };\n\n  return _init_js__WEBPACK_IMPORTED_MODULE_2__[\"initInterpolator\"].apply(scale, arguments);\n}\n\nfunction divergingSymlog() {\n  var scale = Object(_symlog_js__WEBPACK_IMPORTED_MODULE_6__[\"symlogish\"])(transformer());\n\n  scale.copy = function() {\n    return Object(_sequential_js__WEBPACK_IMPORTED_MODULE_5__[\"copy\"])(scale, divergingSymlog()).constant(scale.constant());\n  };\n\n  return _init_js__WEBPACK_IMPORTED_MODULE_2__[\"initInterpolator\"].apply(scale, arguments);\n}\n\nfunction divergingPow() {\n  var scale = Object(_pow_js__WEBPACK_IMPORTED_MODULE_7__[\"powish\"])(transformer());\n\n  scale.copy = function() {\n    return Object(_sequential_js__WEBPACK_IMPORTED_MODULE_5__[\"copy\"])(scale, divergingPow()).exponent(scale.exponent());\n  };\n\n  return _init_js__WEBPACK_IMPORTED_MODULE_2__[\"initInterpolator\"].apply(scale, arguments);\n}\n\nfunction divergingSqrt() {\n  return divergingPow.apply(null, arguments).exponent(0.5);\n}\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,[encoded data, 5140 characters]\n//# sourceURL=webpack-internal:///./node_modules/vega-label/node_modules/d3-scale/src/diverging.js\n");

/***/ }),

/***/ "./node_modules/vega-label/node_modules/d3-scale/src/identity.js":
/*!***********************************************************************!*\
  !*** ./node_modules/vega-label/node_modules/d3-scale/src/identity.js ***!
  \***********************************************************************/
/*! exports provided: default */
/***/ (function(module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"default\", function() { return identity; });\n/* harmony import */ var _linear_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./linear.js */ \"./node_modules/vega-label/node_modules/d3-scale/src/linear.js\");\n/* harmony import */ var _number_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./number.js */ \"./node_modules/vega-label/node_modules/d3-scale/src/number.js\");\n\n\n\nfunction identity(domain) {\n  var unknown;\n\n  function scale(x) {\n    return x == null || isNaN(x = +x) ? unknown : x;\n  }\n\n  scale.invert = scale;\n\n  scale.domain = scale.range = function(_) {\n    return arguments.length ? (domain = Array.from(_, _number_js__WEBPACK_IMPORTED_MODULE_1__[\"default\"]), scale) : domain.slice();\n  };\n\n  scale.unknown = function(_) {\n    return arguments.length ? (unknown = _, scale) : unknown;\n  };\n\n  scale.copy = function() {\n    return identity(domain).unknown(unknown);\n  };\n\n  domain = arguments.length ? Array.from(domain, _number_js__WEBPACK_IMPORTED_MODULE_1__[\"default\"]) : [0, 1];\n\n  return Object(_linear_js__WEBPACK_IMPORTED_MODULE_0__[\"linearish\"])(scale);\n}\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvdmVnYS1sYWJlbC9ub2RlX21vZHVsZXMvZDMtc2NhbGUvc3JjL2lkZW50aXR5LmpzLmpzIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL3ZlZ2EtbGFiZWwvbm9kZV9tb2R1bGVzL2QzLXNjYWxlL3NyYy9pZGVudGl0eS5qcz9lZDllIl0sInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7bGluZWFyaXNofSBmcm9tIFwiLi9saW5lYXIuanNcIjtcbmltcG9ydCBudW1iZXIgZnJvbSBcIi4vbnVtYmVyLmpzXCI7XG5cbmV4cG9ydCBkZWZhdWx0IGZ1bmN0aW9uIGlkZW50aXR5KGRvbWFpbikge1xuICB2YXIgdW5rbm93bjtcblxuICBmdW5jdGlvbiBzY2FsZSh4KSB7XG4gICAgcmV0dXJuIHggPT0gbnVsbCB8fCBpc05hTih4ID0gK3gpID8gdW5rbm93biA6IHg7XG4gIH1cblxuICBzY2FsZS5pbnZlcnQgPSBzY2FsZTtcblxuICBzY2FsZS5kb21haW4gPSBzY2FsZS5yYW5nZSA9IGZ1bmN0aW9uKF8pIHtcbiAgICByZXR1cm4gYXJndW1lbnRzLmxlbmd0aCA/IChkb21haW4gPSBBcnJheS5mcm9tKF8sIG51bWJlciksIHNjYWxlKSA6IGRvbWFpbi5zbGljZSgpO1xuICB9O1xuXG4gIHNjYWxlLnVua25vd24gPSBmdW5jdGlvbihfKSB7XG4gICAgcmV0dXJuIGFyZ3VtZW50cy5sZW5ndGggPyAodW5rbm93biA9IF8sIHNjYWxlKSA6IHVua25vd247XG4gIH07XG5cbiAgc2NhbGUuY29weSA9IGZ1bmN0aW9uKCkge1xuICAgIHJldHVybiBpZGVudGl0eShkb21haW4pLnVua25vd24odW5rbm93bik7XG4gIH07XG5cbiAgZG9tYWluID0gYXJndW1lbnRzLmxlbmd0aCA/IEFycmF5LmZyb20oZG9tYWluLCBudW1iZXIpIDogWzAsIDFdO1xuXG4gIHJldHVybiBsaW5lYXJpc2goc2NhbGUpO1xufVxuIl0sIm1hcHBpbmdzIjoiQUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOyIsInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///./node_modules/vega-label/node_modules/d3-scale/src/identity.js\n");

/***/ }),

/***/ "./node_modules/vega-label/node_modules/d3-scale/src/index.js":
/*!********************************************************************!*\
  !*** ./node_modules/vega-label/node_modules/d3-scale/src/index.js ***!
  \********************************************************************/
/*! exports provided: scaleBand, scalePoint, scaleIdentity, scaleLinear, scaleLog, scaleSymlog, scaleOrdinal, scaleImplicit, scalePow, scaleSqrt, scaleRadial, scaleQuantile, scaleQuantize, scaleThreshold, scaleTime, scaleUtc, scaleSequential, scaleSequentialLog, scaleSequentialPow, scaleSequentialSqrt, scaleSequentialSymlog, scaleSequentialQuantile, scaleDiverging, scaleDivergingLog, scaleDivergingPow, scaleDivergingSqrt, scaleDivergingSymlog, tickFormat */
/***/ (function(module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _band_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./band.js */ \"./node_modules/vega-label/node_modules/d3-scale/src/band.js\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"scaleBand\", function() { return _band_js__WEBPACK_IMPORTED_MODULE_0__[\"default\"]; });\n\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"scalePoint\", function() { return _band_js__WEBPACK_IMPORTED_MODULE_0__[\"point\"]; });\n\n/* harmony import */ var _identity_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./identity.js */ \"./node_modules/vega-label/node_modules/d3-scale/src/identity.js\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"scaleIdentity\", function() { return _identity_js__WEBPACK_IMPORTED_MODULE_1__[\"default\"]; });\n\n/* harmony import */ var _linear_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./linear.js */ \"./node_modules/vega-label/node_modules/d3-scale/src/linear.js\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"scaleLinear\", function() { return _linear_js__WEBPACK_IMPORTED_MODULE_2__[\"default\"]; });\n\n/* harmony import */ var _log_js__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ./log.js */ \"./node_modules/vega-label/node_modules/d3-scale/src/log.js\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"scaleLog\", function() { return _log_js__WEBPACK_IMPORTED_MODULE_3__[\"default\"]; });\n\n/* harmony import */ var _symlog_js__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ./symlog.js */ \"./node_modules/vega-label/node_modules/d3-scale/src/symlog.js\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"scaleSymlog\", function() { return _symlog_js__WEBPACK_IMPORTED_MODULE_4__[\"default\"]; });\n\n/* harmony import */ var _ordinal_js__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! ./ordinal.js */ \"./node_modules/vega-label/node_modules/d3-scale/src/ordinal.js\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"scaleOrdinal\", function() { return _ordinal_js__WEBPACK_IMPORTED_MODULE_5__[\"default\"]; });\n\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"scaleImplicit\", function() { return _ordinal_js__WEBPACK_IMPORTED_MODULE_5__[\"implicit\"]; });\n\n/* harmony import */ var _pow_js__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! ./pow.js */ \"./node_modules/vega-label/node_modules/d3-scale/src/pow.js\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"scalePow\", function() { return _pow_js__WEBPACK_IMPORTED_MODULE_6__[\"default\"]; });\n\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"scaleSqrt\", function() { return _pow_js__WEBPACK_IMPORTED_MODULE_6__[\"sqrt\"]; });\n\n/* harmony import */ var _radial_js__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! ./radial.js */ \"./node_modules/vega-label/node_modules/d3-scale/src/radial.js\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"scaleRadial\", function() { return _radial_js__WEBPACK_IMPORTED_MODULE_7__[\"default\"]; });\n\n/* harmony import */ var _quantile_js__WEBPACK_IMPORTED_MODULE_8__ = __webpack_require__(/*! ./quantile.js */ \"./node_modules/vega-label/node_modules/d3-scale/src/quantile.js\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"scaleQuantile\", function() { return _quantile_js__WEBPACK_IMPORTED_MODULE_8__[\"default\"]; });\n\n/* harmony import */ var _quantize_js__WEBPACK_IMPORTED_MODULE_9__ = __webpack_require__(/*! ./quantize.js */ \"./node_modules/vega-label/node_modules/d3-scale/src/quantize.js\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"scaleQuantize\", function() { return _quantize_js__WEBPACK_IMPORTED_MODULE_9__[\"default\"]; });\n\n/* harmony import */ var _threshold_js__WEBPACK_IMPORTED_MODULE_10__ = __webpack_require__(/*! ./threshold.js */ \"./node_modules/vega-label/node_modules/d3-scale/src/threshold.js\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"scaleThreshold\", function() { return _threshold_js__WEBPACK_IMPORTED_MODULE_10__[\"default\"]; });\n\n/* harmony import */ var _time_js__WEBPACK_IMPORTED_MODULE_11__ = __webpack_require__(/*! ./time.js */ \"./node_modules/vega-label/node_modules/d3-scale/src/time.js\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"scaleTime\", function() { return _time_js__WEBPACK_IMPORTED_MODULE_11__[\"default\"]; });\n\n/* harmony import */ var _utcTime_js__WEBPACK_IMPORTED_MODULE_12__ = __webpack_require__(/*! ./utcTime.js */ \"./node_modules/vega-label/node_modules/d3-scale/src/utcTime.js\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"scaleUtc\", function() { return _utcTime_js__WEBPACK_IMPORTED_MODULE_12__[\"default\"]; });\n\n/* harmony import */ var _sequential_js__WEBPACK_IMPORTED_MODULE_13__ = __webpack_require__(/*! ./sequential.js */ \"./node_modules/vega-label/node_modules/d3-scale/src/sequential.js\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"scaleSequential\", function() { return _sequential_js__WEBPACK_IMPORTED_MODULE_13__[\"default\"]; });\n\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"scaleSequentialLog\", function() { return _sequential_js__WEBPACK_IMPORTED_MODULE_13__[\"sequentialLog\"]; });\n\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"scaleSequentialPow\", function() { return _sequential_js__WEBPACK_IMPORTED_MODULE_13__[\"sequentialPow\"]; });\n\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"scaleSequentialSqrt\", function() { return _sequential_js__WEBPACK_IMPORTED_MODULE_13__[\"sequentialSqrt\"]; });\n\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"scaleSequentialSymlog\", function() { return _sequential_js__WEBPACK_IMPORTED_MODULE_13__[\"sequentialSymlog\"]; });\n\n/* harmony import */ var _sequentialQuantile_js__WEBPACK_IMPORTED_MODULE_14__ = __webpack_require__(/*! ./sequentialQuantile.js */ \"./node_modules/vega-label/node_modules/d3-scale/src/sequentialQuantile.js\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"scaleSequentialQuantile\", function() { return _sequentialQuantile_js__WEBPACK_IMPORTED_MODULE_14__[\"default\"]; });\n\n/* harmony import */ var _diverging_js__WEBPACK_IMPORTED_MODULE_15__ = __webpack_require__(/*! ./diverging.js */ \"./node_modules/vega-label/node_modules/d3-scale/src/diverging.js\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"scaleDiverging\", function() { return _diverging_js__WEBPACK_IMPORTED_MODULE_15__[\"default\"]; });\n\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"scaleDivergingLog\", function() { return _diverging_js__WEBPACK_IMPORTED_MODULE_15__[\"divergingLog\"]; });\n\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"scaleDivergingPow\", function() { return _diverging_js__WEBPACK_IMPORTED_MODULE_15__[\"divergingPow\"]; });\n\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"scaleDivergingSqrt\", function() { return _diverging_js__WEBPACK_IMPORTED_MODULE_15__[\"divergingSqrt\"]; });\n\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"scaleDivergingSymlog\", function() { return _diverging_js__WEBPACK_IMPORTED_MODULE_15__[\"divergingSymlog\"]; });\n\n/* harmony import */ var _tickFormat_js__WEBPACK_IMPORTED_MODULE_16__ = __webpack_require__(/*! ./tickFormat.js */ \"./node_modules/vega-label/node_modules/d3-scale/src/tickFormat.js\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"tickFormat\", function() { return _tickFormat_js__WEBPACK_IMPORTED_MODULE_16__[\"default\"]; });\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvdmVnYS1sYWJlbC9ub2RlX21vZHVsZXMvZDMtc2NhbGUvc3JjL2luZGV4LmpzLmpzIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL3ZlZ2EtbGFiZWwvbm9kZV9tb2R1bGVzL2QzLXNjYWxlL3NyYy9pbmRleC5qcz9iYjIyIl0sInNvdXJjZXNDb250ZW50IjpbImV4cG9ydCB7XG4gIGRlZmF1bHQgYXMgc2NhbGVCYW5kLFxuICBwb2ludCBhcyBzY2FsZVBvaW50XG59IGZyb20gXCIuL2JhbmQuanNcIjtcblxuZXhwb3J0IHtcbiAgZGVmYXVsdCBhcyBzY2FsZUlkZW50aXR5XG59IGZyb20gXCIuL2lkZW50aXR5LmpzXCI7XG5cbmV4cG9ydCB7XG4gIGRlZmF1bHQgYXMgc2NhbGVMaW5lYXJcbn0gZnJvbSBcIi4vbGluZWFyLmpzXCI7XG5cbmV4cG9ydCB7XG4gIGRlZmF1bHQgYXMgc2NhbGVMb2dcbn0gZnJvbSBcIi4vbG9nLmpzXCI7XG5cbmV4cG9ydCB7XG4gIGRlZmF1bHQgYXMgc2NhbGVTeW1sb2dcbn0gZnJvbSBcIi4vc3ltbG9nLmpzXCI7XG5cbmV4cG9ydCB7XG4gIGRlZmF1bHQgYXMgc2NhbGVPcmRpbmFsLFxuICBpbXBsaWNpdCBhcyBzY2FsZUltcGxpY2l0XG59IGZyb20gXCIuL29yZGluYWwuanNcIjtcblxuZXhwb3J0IHtcbiAgZGVmYXVsdCBhcyBzY2FsZVBvdyxcbiAgc3FydCBhcyBzY2FsZVNxcnRcbn0gZnJvbSBcIi4vcG93LmpzXCI7XG5cbmV4cG9ydCB7XG4gIGRlZmF1bHQgYXMgc2NhbGVSYWRpYWxcbn0gZnJvbSBcIi4vcmFkaWFsLmpzXCI7XG5cbmV4cG9ydCB7XG4gIGRlZmF1bHQgYXMgc2NhbGVRdWFudGlsZVxufSBmcm9tIFwiLi9xdWFudGlsZS5qc1wiO1xuXG5leHBvcnQge1xuICBkZWZhdWx0IGFzIHNjYWxlUXVhbnRpemVcbn0gZnJvbSBcIi4vcXVhbnRpemUuanNcIjtcblxuZXhwb3J0IHtcbiAgZGVmYXVsdCBhcyBzY2FsZVRocmVzaG9sZFxufSBmcm9tIFwiLi90aHJlc2hvbGQuanNcIjtcblxuZXhwb3J0IHtcbiAgZGVmYXVsdCBhcyBzY2FsZVRpbWVcbn0gZnJvbSBcIi4vdGltZS5qc1wiO1xuXG5leHBvcnQge1xuICBkZWZhdWx0IGFzIHNjYWxlVXRjXG59IGZyb20gXCIuL3V0Y1RpbWUuanNcIjtcblxuZXhwb3J0IHtcbiAgZGVmYXVsdCBhcyBzY2FsZVNlcXVlbnRpYWwsXG4gIHNlcXVlbnRpYWxMb2cgYXMgc2NhbGVTZXF1ZW50aWFsTG9nLFxuICBzZXF1ZW50aWFsUG93IGFzIHNjYWxlU2VxdWVudGlhbFBvdyxcbiAgc2VxdWVudGlhbFNxcnQgYXMgc2NhbGVTZXF1ZW50aWFsU3FydCxcbiAgc2VxdWVudGlhbFN5bWxvZyBhcyBzY2FsZVNlcXVlbnRpYWxTeW1sb2dcbn0gZnJvbSBcIi4vc2VxdWVudGlhbC5qc1wiO1xuXG5leHBvcnQge1xuICBkZWZhdWx0IGFzIHNjYWxlU2VxdWVudGlhbFF1YW50aWxlXG59IGZyb20gXCIuL3NlcXVlbnRpYWxRdWFudGlsZS5qc1wiO1xuXG5leHBvcnQge1xuICBkZWZhdWx0IGFzIHNjYWxlRGl2ZXJnaW5nLFxuICBkaXZlcmdpbmdMb2cgYXMgc2NhbGVEaXZlcmdpbmdMb2csXG4gIGRpdmVyZ2luZ1BvdyBhcyBzY2FsZURpdmVyZ2luZ1BvdyxcbiAgZGl2ZXJnaW5nU3FydCBhcyBzY2FsZURpdmVyZ2luZ1NxcnQsXG4gIGRpdmVyZ2luZ1N5bWxvZyBhcyBzY2FsZURpdmVyZ2luZ1N5bWxvZ1xufSBmcm9tIFwiLi9kaXZlcmdpbmcuanNcIjtcblxuZXhwb3J0IHtcbiAgZGVmYXVsdCBhcyB0aWNrRm9ybWF0XG59IGZyb20gXCIuL3RpY2tGb3JtYXQuanNcIjtcbiJdLCJtYXBwaW5ncyI6IkFBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUdBO0FBQ0E7QUFHQTtBQUNBO0FBR0E7QUFDQTtBQUdBO0FBQ0E7QUFHQTtBQUNBO0FBSUE7QUFDQTtBQUlBO0FBQ0E7QUFHQTtBQUNBO0FBR0E7QUFDQTtBQUdBO0FBQ0E7QUFHQTtBQUNBO0FBR0E7QUFDQTtBQUdBO0FBQ0E7QUFPQTtBQUNBO0FBR0E7QUFDQTtBQU9BO0FBQ0E7QUFHQTsiLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///./node_modules/vega-label/node_modules/d3-scale/src/index.js\n");

/***/ }),

/***/ "./node_modules/vega-label/node_modules/d3-scale/src/init.js":
/*!*******************************************************************!*\
  !*** ./node_modules/vega-label/node_modules/d3-scale/src/init.js ***!
  \*******************************************************************/
/*! exports provided: initRange, initInterpolator */
/***/ (function(module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"initRange\", function() { return initRange; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"initInterpolator\", function() { return initInterpolator; });\nfunction initRange(domain, range) {\n  switch (arguments.length) {\n    case 0: break;\n    case 1: this.range(domain); break;\n    default: this.range(range).domain(domain); break;\n  }\n  return this;\n}\n\nfunction initInterpolator(domain, interpolator) {\n  switch (arguments.length) {\n    case 0: break;\n    case 1: {\n      if (typeof domain === \"function\") this.interpolator(domain);\n      else this.range(domain);\n      break;\n    }\n    default: {\n      this.domain(domain);\n      if (typeof interpolator === \"function\") this.interpolator(interpolator);\n      else this.range(interpolator);\n      break;\n    }\n  }\n  return this;\n}\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvdmVnYS1sYWJlbC9ub2RlX21vZHVsZXMvZDMtc2NhbGUvc3JjL2luaXQuanMuanMiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvdmVnYS1sYWJlbC9ub2RlX21vZHVsZXMvZDMtc2NhbGUvc3JjL2luaXQuanM/NjZkZCJdLCJzb3VyY2VzQ29udGVudCI6WyJleHBvcnQgZnVuY3Rpb24gaW5pdFJhbmdlKGRvbWFpbiwgcmFuZ2UpIHtcbiAgc3dpdGNoIChhcmd1bWVudHMubGVuZ3RoKSB7XG4gICAgY2FzZSAwOiBicmVhaztcbiAgICBjYXNlIDE6IHRoaXMucmFuZ2UoZG9tYWluKTsgYnJlYWs7XG4gICAgZGVmYXVsdDogdGhpcy5yYW5nZShyYW5nZSkuZG9tYWluKGRvbWFpbik7IGJyZWFrO1xuICB9XG4gIHJldHVybiB0aGlzO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gaW5pdEludGVycG9sYXRvcihkb21haW4sIGludGVycG9sYXRvcikge1xuICBzd2l0Y2ggKGFyZ3VtZW50cy5sZW5ndGgpIHtcbiAgICBjYXNlIDA6IGJyZWFrO1xuICAgIGNhc2UgMToge1xuICAgICAgaWYgKHR5cGVvZiBkb21haW4gPT09IFwiZnVuY3Rpb25cIikgdGhpcy5pbnRlcnBvbGF0b3IoZG9tYWluKTtcbiAgICAgIGVsc2UgdGhpcy5yYW5nZShkb21haW4pO1xuICAgICAgYnJlYWs7XG4gICAgfVxuICAgIGRlZmF1bHQ6IHtcbiAgICAgIHRoaXMuZG9tYWluKGRvbWFpbik7XG4gICAgICBpZiAodHlwZW9mIGludGVycG9sYXRvciA9PT0gXCJmdW5jdGlvblwiKSB0aGlzLmludGVycG9sYXRvcihpbnRlcnBvbGF0b3IpO1xuICAgICAgZWxzZSB0aGlzLnJhbmdlKGludGVycG9sYXRvcik7XG4gICAgICBicmVhaztcbiAgICB9XG4gIH1cbiAgcmV0dXJuIHRoaXM7XG59XG4iXSwibWFwcGluZ3MiOiJBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7Iiwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///./node_modules/vega-label/node_modules/d3-scale/src/init.js\n");

/***/ }),

/***/ "./node_modules/vega-label/node_modules/d3-scale/src/linear.js":
/*!*********************************************************************!*\
  !*** ./node_modules/vega-label/node_modules/d3-scale/src/linear.js ***!
  \*********************************************************************/
/*! exports provided: linearish, default */
/***/ (function(module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"linearish\", function() { return linearish; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"default\", function() { return linear; });\n/* harmony import */ var d3_array__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! d3-array */ \"./node_modules/d3-array/src/index.js\");\n/* harmony import */ var _continuous_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./continuous.js */ \"./node_modules/vega-label/node_modules/d3-scale/src/continuous.js\");\n/* harmony import */ var _init_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./init.js */ \"./node_modules/vega-label/node_modules/d3-scale/src/init.js\");\n/* harmony import */ var _tickFormat_js__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ./tickFormat.js */ \"./node_modules/vega-label/node_modules/d3-scale/src/tickFormat.js\");\n\n\n\n\n\nfunction linearish(scale) {\n  var domain = scale.domain;\n\n  scale.ticks = function(count) {\n    var d = domain();\n    return Object(d3_array__WEBPACK_IMPORTED_MODULE_0__[\"ticks\"])(d[0], d[d.length - 1], count == null ? 10 : count);\n  };\n\n  scale.tickFormat = function(count, specifier) {\n    var d = domain();\n    return Object(_tickFormat_js__WEBPACK_IMPORTED_MODULE_3__[\"default\"])(d[0], d[d.length - 1], count == null ? 10 : count, specifier);\n  };\n\n  scale.nice = function(count) {\n    if (count == null) count = 10;\n\n    var d = domain();\n    var i0 = 0;\n    var i1 = d.length - 1;\n    var start = d[i0];\n    var stop = d[i1];\n    var prestep;\n    var step;\n    var maxIter = 10;\n\n    if (stop < start) {\n      step = start, start = stop, stop = step;\n      step = i0, i0 = i1, i1 = step;\n    }\n    \n    while (maxIter-- > 0) {\n      step = Object(d3_array__WEBPACK_IMPORTED_MODULE_0__[\"tickIncrement\"])(start, stop, count);\n      if (step === prestep) {\n        d[i0] = start\n        d[i1] = stop\n        return domain(d);\n      } else if (step > 0) {\n        start = Math.floor(start / step) * step;\n        stop = Math.ceil(stop / step) * step;\n      } else if (step < 0) {\n        start = Math.ceil(start * step) / step;\n        stop = Math.floor(stop * step) / step;\n      } else {\n        break;\n      }\n      prestep = step;\n    }\n\n    return scale;\n  };\n\n  return scale;\n}\n\nfunction linear() {\n  var scale = Object(_continuous_js__WEBPACK_IMPORTED_MODULE_1__[\"default\"])();\n\n  scale.copy = function() {\n    return Object(_continuous_js__WEBPACK_IMPORTED_MODULE_1__[\"copy\"])(scale, linear());\n  };\n\n  _init_js__WEBPACK_IMPORTED_MODULE_2__[\"initRange\"].apply(scale, arguments);\n\n  return linearish(scale);\n}\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvdmVnYS1sYWJlbC9ub2RlX21vZHVsZXMvZDMtc2NhbGUvc3JjL2xpbmVhci5qcy5qcyIsInNvdXJjZXMiOlsid2VicGFjazovLy8uL25vZGVfbW9kdWxlcy92ZWdhLWxhYmVsL25vZGVfbW9kdWxlcy9kMy1zY2FsZS9zcmMvbGluZWFyLmpzPzhkZTEiXSwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHt0aWNrcywgdGlja0luY3JlbWVudH0gZnJvbSBcImQzLWFycmF5XCI7XG5pbXBvcnQgY29udGludW91cywge2NvcHl9IGZyb20gXCIuL2NvbnRpbnVvdXMuanNcIjtcbmltcG9ydCB7aW5pdFJhbmdlfSBmcm9tIFwiLi9pbml0LmpzXCI7XG5pbXBvcnQgdGlja0Zvcm1hdCBmcm9tIFwiLi90aWNrRm9ybWF0LmpzXCI7XG5cbmV4cG9ydCBmdW5jdGlvbiBsaW5lYXJpc2goc2NhbGUpIHtcbiAgdmFyIGRvbWFpbiA9IHNjYWxlLmRvbWFpbjtcblxuICBzY2FsZS50aWNrcyA9IGZ1bmN0aW9uKGNvdW50KSB7XG4gICAgdmFyIGQgPSBkb21haW4oKTtcbiAgICByZXR1cm4gdGlja3MoZFswXSwgZFtkLmxlbmd0aCAtIDFdLCBjb3VudCA9PSBudWxsID8gMTAgOiBjb3VudCk7XG4gIH07XG5cbiAgc2NhbGUudGlja0Zvcm1hdCA9IGZ1bmN0aW9uKGNvdW50LCBzcGVjaWZpZXIpIHtcbiAgICB2YXIgZCA9IGRvbWFpbigpO1xuICAgIHJldHVybiB0aWNrRm9ybWF0KGRbMF0sIGRbZC5sZW5ndGggLSAxXSwgY291bnQgPT0gbnVsbCA/IDEwIDogY291bnQsIHNwZWNpZmllcik7XG4gIH07XG5cbiAgc2NhbGUubmljZSA9IGZ1bmN0aW9uKGNvdW50KSB7XG4gICAgaWYgKGNvdW50ID09IG51bGwpIGNvdW50ID0gMTA7XG5cbiAgICB2YXIgZCA9IGRvbWFpbigpO1xuICAgIHZhciBpMCA9IDA7XG4gICAgdmFyIGkxID0gZC5sZW5ndGggLSAxO1xuICAgIHZhciBzdGFydCA9IGRbaTBdO1xuICAgIHZhciBzdG9wID0gZFtpMV07XG4gICAgdmFyIHByZXN0ZXA7XG4gICAgdmFyIHN0ZXA7XG4gICAgdmFyIG1heEl0ZXIgPSAxMDtcblxuICAgIGlmIChzdG9wIDwgc3RhcnQpIHtcbiAgICAgIHN0ZXAgPSBzdGFydCwgc3RhcnQgPSBzdG9wLCBzdG9wID0gc3RlcDtcbiAgICAgIHN0ZXAgPSBpMCwgaTAgPSBpMSwgaTEgPSBzdGVwO1xuICAgIH1cbiAgICBcbiAgICB3aGlsZSAobWF4SXRlci0tID4gMCkge1xuICAgICAgc3RlcCA9IHRpY2tJbmNyZW1lbnQoc3RhcnQsIHN0b3AsIGNvdW50KTtcbiAgICAgIGlmIChzdGVwID09PSBwcmVzdGVwKSB7XG4gICAgICAgIGRbaTBdID0gc3RhcnRcbiAgICAgICAgZFtpMV0gPSBzdG9wXG4gICAgICAgIHJldHVybiBkb21haW4oZCk7XG4gICAgICB9IGVsc2UgaWYgKHN0ZXAgPiAwKSB7XG4gICAgICAgIHN0YXJ0ID0gTWF0aC5mbG9vcihzdGFydCAvIHN0ZXApICogc3RlcDtcbiAgICAgICAgc3RvcCA9IE1hdGguY2VpbChzdG9wIC8gc3RlcCkgKiBzdGVwO1xuICAgICAgfSBlbHNlIGlmIChzdGVwIDwgMCkge1xuICAgICAgICBzdGFydCA9IE1hdGguY2VpbChzdGFydCAqIHN0ZXApIC8gc3RlcDtcbiAgICAgICAgc3RvcCA9IE1hdGguZmxvb3Ioc3RvcCAqIHN0ZXApIC8gc3RlcDtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIGJyZWFrO1xuICAgICAgfVxuICAgICAgcHJlc3RlcCA9IHN0ZXA7XG4gICAgfVxuXG4gICAgcmV0dXJuIHNjYWxlO1xuICB9O1xuXG4gIHJldHVybiBzY2FsZTtcbn1cblxuZXhwb3J0IGRlZmF1bHQgZnVuY3Rpb24gbGluZWFyKCkge1xuICB2YXIgc2NhbGUgPSBjb250aW51b3VzKCk7XG5cbiAgc2NhbGUuY29weSA9IGZ1bmN0aW9uKCkge1xuICAgIHJldHVybiBjb3B5KHNjYWxlLCBsaW5lYXIoKSk7XG4gIH07XG5cbiAgaW5pdFJhbmdlLmFwcGx5KHNjYWxlLCBhcmd1bWVudHMpO1xuXG4gIHJldHVybiBsaW5lYXJpc2goc2NhbGUpO1xufVxuIl0sIm1hcHBpbmdzIjoiQUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOyIsInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///./node_modules/vega-label/node_modules/d3-scale/src/linear.js\n");

/***/ }),

/***/ "./node_modules/vega-label/node_modules/d3-scale/src/log.js":
/*!******************************************************************!*\
  !*** ./node_modules/vega-label/node_modules/d3-scale/src/log.js ***!
  \******************************************************************/
/*! exports provided: loggish, default */
/***/ (function(module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"loggish\", function() { return loggish; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"default\", function() { return log; });\n/* harmony import */ var d3_array__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! d3-array */ \"./node_modules/d3-array/src/index.js\");\n/* harmony import */ var d3_format__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! d3-format */ \"./node_modules/vega-label/node_modules/d3-format/src/index.js\");\n/* harmony import */ var _nice_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./nice.js */ \"./node_modules/vega-label/node_modules/d3-scale/src/nice.js\");\n/* harmony import */ var _continuous_js__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ./continuous.js */ \"./node_modules/vega-label/node_modules/d3-scale/src/continuous.js\");\n/* harmony import */ var _init_js__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ./init.js */ \"./node_modules/vega-label/node_modules/d3-scale/src/init.js\");\n\n\n\n\n\n\nfunction transformLog(x) {\n  return Math.log(x);\n}\n\nfunction transformExp(x) {\n  return Math.exp(x);\n}\n\nfunction transformLogn(x) {\n  return -Math.log(-x);\n}\n\nfunction transformExpn(x) {\n  return -Math.exp(-x);\n}\n\nfunction pow10(x) {\n  return isFinite(x) ? +(\"1e\" + x) : x < 0 ? 0 : x;\n}\n\nfunction powp(base) {\n  return base === 10 ? pow10\n      : base === Math.E ? Math.exp\n      : function(x) { return Math.pow(base, x); };\n}\n\nfunction logp(base) {\n  return base === Math.E ? Math.log\n      : base === 10 && Math.log10\n      || base === 2 && Math.log2\n      || (base = Math.log(base), function(x) { return Math.log(x) / base; });\n}\n\nfunction reflect(f) {\n  return function(x) {\n    return -f(-x);\n  };\n}\n\nfunction loggish(transform) {\n  var scale = transform(transformLog, transformExp),\n      domain = scale.domain,\n      base = 10,\n      logs,\n      pows;\n\n  function rescale() {\n    logs = logp(base), pows = powp(base);\n    if (domain()[0] < 0) {\n      logs = reflect(logs), pows = reflect(pows);\n      transform(transformLogn, transformExpn);\n    } else {\n      transform(transformLog, transformExp);\n    }\n    return scale;\n  }\n\n  scale.base = function(_) {\n    return arguments.length ? (base = +_, rescale()) : base;\n  };\n\n  scale.domain = function(_) {\n    return arguments.length ? (domain(_), rescale()) : domain();\n  };\n\n  scale.ticks = function(count) {\n    var d = domain(),\n        u = d[0],\n        v = d[d.length - 1],\n        r;\n\n    if (r = v < u) i = u, u = v, v = i;\n\n    var i = logs(u),\n        j = logs(v),\n        p,\n        k,\n        t,\n        n = count == null ? 10 : +count,\n        z = [];\n\n    if (!(base % 1) && j - i < n) {\n      i = Math.floor(i), j = Math.ceil(j);\n      if (u > 0) for (; i <= j; ++i) {\n        for (k = 1, p = pows(i); k < base; ++k) {\n          t = p * k;\n          if (t < u) continue;\n          if (t > v) break;\n          z.push(t);\n        }\n      } else for (; i <= j; ++i) {\n        for (k = base - 1, p = pows(i); k >= 1; --k) {\n          t = p * k;\n          if (t < u) continue;\n          if (t > v) break;\n          z.push(t);\n        }\n      }\n      if (z.length * 2 < n) z = Object(d3_array__WEBPACK_IMPORTED_MODULE_0__[\"ticks\"])(u, v, n);\n    } else {\n      z = Object(d3_array__WEBPACK_IMPORTED_MODULE_0__[\"ticks\"])(i, j, Math.min(j - i, n)).map(pows);\n    }\n\n    return r ? z.reverse() : z;\n  };\n\n  scale.tickFormat = function(count, specifier) {\n    if (specifier == null) specifier = base === 10 ? \".0e\" : \",\";\n    if (typeof specifier !== \"function\") specifier = Object(d3_format__WEBPACK_IMPORTED_MODULE_1__[\"format\"])(specifier);\n    if (count === Infinity) return specifier;\n    if (count == null) count = 10;\n    var k = Math.max(1, base * count / scale.ticks().length); // TODO fast estimate?\n    return function(d) {\n      var i = d / pows(Math.round(logs(d)));\n      if (i * base < base - 0.5) i *= base;\n      return i <= k ? specifier(d) : \"\";\n    };\n  };\n\n  scale.nice = function() {\n    return domain(Object(_nice_js__WEBPACK_IMPORTED_MODULE_2__[\"default\"])(domain(), {\n      floor: function(x) { return pows(Math.floor(logs(x))); },\n      ceil: function(x) { return pows(Math.ceil(logs(x))); }\n    }));\n  };\n\n  return scale;\n}\n\nfunction log() {\n  var scale = loggish(Object(_continuous_js__WEBPACK_IMPORTED_MODULE_3__[\"transformer\"])()).domain([1, 10]);\n\n  scale.copy = function() {\n    return Object(_continuous_js__WEBPACK_IMPORTED_MODULE_3__[\"copy\"])(scale, log()).base(scale.base());\n  };\n\n  _init_js__WEBPACK_IMPORTED_MODULE_4__[\"initRange\"].apply(scale, arguments);\n\n  return scale;\n}\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,[encoded data, 6128 characters]\n//# sourceURL=webpack-internal:///./node_modules/vega-label/node_modules/d3-scale/src/log.js\n");

/***/ }),

/***/ "./node_modules/vega-label/node_modules/d3-scale/src/nice.js":
/*!*******************************************************************!*\
  !*** ./node_modules/vega-label/node_modules/d3-scale/src/nice.js ***!
  \*******************************************************************/
/*! exports provided: default */
/***/ (function(module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"default\", function() { return nice; });\nfunction nice(domain, interval) {\n  domain = domain.slice();\n\n  var i0 = 0,\n      i1 = domain.length - 1,\n      x0 = domain[i0],\n      x1 = domain[i1],\n      t;\n\n  if (x1 < x0) {\n    t = i0, i0 = i1, i1 = t;\n    t = x0, x0 = x1, x1 = t;\n  }\n\n  domain[i0] = interval.floor(x0);\n  domain[i1] = interval.ceil(x1);\n  return domain;\n}\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvdmVnYS1sYWJlbC9ub2RlX21vZHVsZXMvZDMtc2NhbGUvc3JjL25pY2UuanMuanMiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvdmVnYS1sYWJlbC9ub2RlX21vZHVsZXMvZDMtc2NhbGUvc3JjL25pY2UuanM/ZGY5ZCJdLCJzb3VyY2VzQ29udGVudCI6WyJleHBvcnQgZGVmYXVsdCBmdW5jdGlvbiBuaWNlKGRvbWFpbiwgaW50ZXJ2YWwpIHtcbiAgZG9tYWluID0gZG9tYWluLnNsaWNlKCk7XG5cbiAgdmFyIGkwID0gMCxcbiAgICAgIGkxID0gZG9tYWluLmxlbmd0aCAtIDEsXG4gICAgICB4MCA9IGRvbWFpbltpMF0sXG4gICAgICB4MSA9IGRvbWFpbltpMV0sXG4gICAgICB0O1xuXG4gIGlmICh4MSA8IHgwKSB7XG4gICAgdCA9IGkwLCBpMCA9IGkxLCBpMSA9IHQ7XG4gICAgdCA9IHgwLCB4MCA9IHgxLCB4MSA9IHQ7XG4gIH1cblxuICBkb21haW5baTBdID0gaW50ZXJ2YWwuZmxvb3IoeDApO1xuICBkb21haW5baTFdID0gaW50ZXJ2YWwuY2VpbCh4MSk7XG4gIHJldHVybiBkb21haW47XG59XG4iXSwibWFwcGluZ3MiOiJBQUFBO0FBQUE7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7Iiwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///./node_modules/vega-label/node_modules/d3-scale/src/nice.js\n");

/***/ }),

/***/ "./node_modules/vega-label/node_modules/d3-scale/src/number.js":
/*!*********************************************************************!*\
  !*** ./node_modules/vega-label/node_modules/d3-scale/src/number.js ***!
  \*********************************************************************/
/*! exports provided: default */
/***/ (function(module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"default\", function() { return number; });\nfunction number(x) {\n  return +x;\n}\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvdmVnYS1sYWJlbC9ub2RlX21vZHVsZXMvZDMtc2NhbGUvc3JjL251bWJlci5qcy5qcyIsInNvdXJjZXMiOlsid2VicGFjazovLy8uL25vZGVfbW9kdWxlcy92ZWdhLWxhYmVsL25vZGVfbW9kdWxlcy9kMy1zY2FsZS9zcmMvbnVtYmVyLmpzPzdlOGUiXSwic291cmNlc0NvbnRlbnQiOlsiZXhwb3J0IGRlZmF1bHQgZnVuY3Rpb24gbnVtYmVyKHgpIHtcbiAgcmV0dXJuICt4O1xufVxuIl0sIm1hcHBpbmdzIjoiQUFBQTtBQUFBO0FBQUE7QUFDQTtBQUNBOyIsInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///./node_modules/vega-label/node_modules/d3-scale/src/number.js\n");

/***/ }),

/***/ "./node_modules/vega-label/node_modules/d3-scale/src/ordinal.js":
/*!**********************************************************************!*\
  !*** ./node_modules/vega-label/node_modules/d3-scale/src/ordinal.js ***!
  \**********************************************************************/
/*! exports provided: implicit, default */
/***/ (function(module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"implicit\", function() { return implicit; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"default\", function() { return ordinal; });\n/* harmony import */ var _init_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./init.js */ \"./node_modules/vega-label/node_modules/d3-scale/src/init.js\");\n\n\nconst implicit = Symbol(\"implicit\");\n\nfunction ordinal() {\n  var index = new Map(),\n      domain = [],\n      range = [],\n      unknown = implicit;\n\n  function scale(d) {\n    var key = d + \"\", i = index.get(key);\n    if (!i) {\n      if (unknown !== implicit) return unknown;\n      index.set(key, i = domain.push(d));\n    }\n    return range[(i - 1) % range.length];\n  }\n\n  scale.domain = function(_) {\n    if (!arguments.length) return domain.slice();\n    domain = [], index = new Map();\n    for (const value of _) {\n      const key = value + \"\";\n      if (index.has(key)) continue;\n      index.set(key, domain.push(value));\n    }\n    return scale;\n  };\n\n  scale.range = function(_) {\n    return arguments.length ? (range = Array.from(_), scale) : range.slice();\n  };\n\n  scale.unknown = function(_) {\n    return arguments.length ? (unknown = _, scale) : unknown;\n  };\n\n  scale.copy = function() {\n    return ordinal(domain, range).unknown(unknown);\n  };\n\n  _init_js__WEBPACK_IMPORTED_MODULE_0__[\"initRange\"].apply(scale, arguments);\n\n  return scale;\n}\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvdmVnYS1sYWJlbC9ub2RlX21vZHVsZXMvZDMtc2NhbGUvc3JjL29yZGluYWwuanMuanMiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvdmVnYS1sYWJlbC9ub2RlX21vZHVsZXMvZDMtc2NhbGUvc3JjL29yZGluYWwuanM/YjQ3YyJdLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge2luaXRSYW5nZX0gZnJvbSBcIi4vaW5pdC5qc1wiO1xuXG5leHBvcnQgY29uc3QgaW1wbGljaXQgPSBTeW1ib2woXCJpbXBsaWNpdFwiKTtcblxuZXhwb3J0IGRlZmF1bHQgZnVuY3Rpb24gb3JkaW5hbCgpIHtcbiAgdmFyIGluZGV4ID0gbmV3IE1hcCgpLFxuICAgICAgZG9tYWluID0gW10sXG4gICAgICByYW5nZSA9IFtdLFxuICAgICAgdW5rbm93biA9IGltcGxpY2l0O1xuXG4gIGZ1bmN0aW9uIHNjYWxlKGQpIHtcbiAgICB2YXIga2V5ID0gZCArIFwiXCIsIGkgPSBpbmRleC5nZXQoa2V5KTtcbiAgICBpZiAoIWkpIHtcbiAgICAgIGlmICh1bmtub3duICE9PSBpbXBsaWNpdCkgcmV0dXJuIHVua25vd247XG4gICAgICBpbmRleC5zZXQoa2V5LCBpID0gZG9tYWluLnB1c2goZCkpO1xuICAgIH1cbiAgICByZXR1cm4gcmFuZ2VbKGkgLSAxKSAlIHJhbmdlLmxlbmd0aF07XG4gIH1cblxuICBzY2FsZS5kb21haW4gPSBmdW5jdGlvbihfKSB7XG4gICAgaWYgKCFhcmd1bWVudHMubGVuZ3RoKSByZXR1cm4gZG9tYWluLnNsaWNlKCk7XG4gICAgZG9tYWluID0gW10sIGluZGV4ID0gbmV3IE1hcCgpO1xuICAgIGZvciAoY29uc3QgdmFsdWUgb2YgXykge1xuICAgICAgY29uc3Qga2V5ID0gdmFsdWUgKyBcIlwiO1xuICAgICAgaWYgKGluZGV4LmhhcyhrZXkpKSBjb250aW51ZTtcbiAgICAgIGluZGV4LnNldChrZXksIGRvbWFpbi5wdXNoKHZhbHVlKSk7XG4gICAgfVxuICAgIHJldHVybiBzY2FsZTtcbiAgfTtcblxuICBzY2FsZS5yYW5nZSA9IGZ1bmN0aW9uKF8pIHtcbiAgICByZXR1cm4gYXJndW1lbnRzLmxlbmd0aCA/IChyYW5nZSA9IEFycmF5LmZyb20oXyksIHNjYWxlKSA6IHJhbmdlLnNsaWNlKCk7XG4gIH07XG5cbiAgc2NhbGUudW5rbm93biA9IGZ1bmN0aW9uKF8pIHtcbiAgICByZXR1cm4gYXJndW1lbnRzLmxlbmd0aCA/ICh1bmtub3duID0gXywgc2NhbGUpIDogdW5rbm93bjtcbiAgfTtcblxuICBzY2FsZS5jb3B5ID0gZnVuY3Rpb24oKSB7XG4gICAgcmV0dXJuIG9yZGluYWwoZG9tYWluLCByYW5nZSkudW5rbm93bih1bmtub3duKTtcbiAgfTtcblxuICBpbml0UmFuZ2UuYXBwbHkoc2NhbGUsIGFyZ3VtZW50cyk7XG5cbiAgcmV0dXJuIHNjYWxlO1xufVxuIl0sIm1hcHBpbmdzIjoiQUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOyIsInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///./node_modules/vega-label/node_modules/d3-scale/src/ordinal.js\n");

/***/ }),

/***/ "./node_modules/vega-label/node_modules/d3-scale/src/pow.js":
/*!******************************************************************!*\
  !*** ./node_modules/vega-label/node_modules/d3-scale/src/pow.js ***!
  \******************************************************************/
/*! exports provided: powish, default, sqrt */
/***/ (function(module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"powish\", function() { return powish; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"default\", function() { return pow; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"sqrt\", function() { return sqrt; });\n/* harmony import */ var _linear_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./linear.js */ \"./node_modules/vega-label/node_modules/d3-scale/src/linear.js\");\n/* harmony import */ var _continuous_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./continuous.js */ \"./node_modules/vega-label/node_modules/d3-scale/src/continuous.js\");\n/* harmony import */ var _init_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./init.js */ \"./node_modules/vega-label/node_modules/d3-scale/src/init.js\");\n\n\n\n\nfunction transformPow(exponent) {\n  return function(x) {\n    return x < 0 ? -Math.pow(-x, exponent) : Math.pow(x, exponent);\n  };\n}\n\nfunction transformSqrt(x) {\n  return x < 0 ? -Math.sqrt(-x) : Math.sqrt(x);\n}\n\nfunction transformSquare(x) {\n  return x < 0 ? -x * x : x * x;\n}\n\nfunction powish(transform) {\n  var scale = transform(_continuous_js__WEBPACK_IMPORTED_MODULE_1__[\"identity\"], _continuous_js__WEBPACK_IMPORTED_MODULE_1__[\"identity\"]),\n      exponent = 1;\n\n  function rescale() {\n    return exponent === 1 ? transform(_continuous_js__WEBPACK_IMPORTED_MODULE_1__[\"identity\"], _continuous_js__WEBPACK_IMPORTED_MODULE_1__[\"identity\"])\n        : exponent === 0.5 ? transform(transformSqrt, transformSquare)\n        : transform(transformPow(exponent), transformPow(1 / exponent));\n  }\n\n  scale.exponent = function(_) {\n    return arguments.length ? (exponent = +_, rescale()) : exponent;\n  };\n\n  return Object(_linear_js__WEBPACK_IMPORTED_MODULE_0__[\"linearish\"])(scale);\n}\n\nfunction pow() {\n  var scale = powish(Object(_continuous_js__WEBPACK_IMPORTED_MODULE_1__[\"transformer\"])());\n\n  scale.copy = function() {\n    return Object(_continuous_js__WEBPACK_IMPORTED_MODULE_1__[\"copy\"])(scale, pow()).exponent(scale.exponent());\n  };\n\n  _init_js__WEBPACK_IMPORTED_MODULE_2__[\"initRange\"].apply(scale, arguments);\n\n  return scale;\n}\n\nfunction sqrt() {\n  return pow.apply(null, arguments).exponent(0.5);\n}\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvdmVnYS1sYWJlbC9ub2RlX21vZHVsZXMvZDMtc2NhbGUvc3JjL3Bvdy5qcy5qcyIsInNvdXJjZXMiOlsid2VicGFjazovLy8uL25vZGVfbW9kdWxlcy92ZWdhLWxhYmVsL25vZGVfbW9kdWxlcy9kMy1zY2FsZS9zcmMvcG93LmpzPzExZjciXSwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtsaW5lYXJpc2h9IGZyb20gXCIuL2xpbmVhci5qc1wiO1xuaW1wb3J0IHtjb3B5LCBpZGVudGl0eSwgdHJhbnNmb3JtZXJ9IGZyb20gXCIuL2NvbnRpbnVvdXMuanNcIjtcbmltcG9ydCB7aW5pdFJhbmdlfSBmcm9tIFwiLi9pbml0LmpzXCI7XG5cbmZ1bmN0aW9uIHRyYW5zZm9ybVBvdyhleHBvbmVudCkge1xuICByZXR1cm4gZnVuY3Rpb24oeCkge1xuICAgIHJldHVybiB4IDwgMCA/IC1NYXRoLnBvdygteCwgZXhwb25lbnQpIDogTWF0aC5wb3coeCwgZXhwb25lbnQpO1xuICB9O1xufVxuXG5mdW5jdGlvbiB0cmFuc2Zvcm1TcXJ0KHgpIHtcbiAgcmV0dXJuIHggPCAwID8gLU1hdGguc3FydCgteCkgOiBNYXRoLnNxcnQoeCk7XG59XG5cbmZ1bmN0aW9uIHRyYW5zZm9ybVNxdWFyZSh4KSB7XG4gIHJldHVybiB4IDwgMCA/IC14ICogeCA6IHggKiB4O1xufVxuXG5leHBvcnQgZnVuY3Rpb24gcG93aXNoKHRyYW5zZm9ybSkge1xuICB2YXIgc2NhbGUgPSB0cmFuc2Zvcm0oaWRlbnRpdHksIGlkZW50aXR5KSxcbiAgICAgIGV4cG9uZW50ID0gMTtcblxuICBmdW5jdGlvbiByZXNjYWxlKCkge1xuICAgIHJldHVybiBleHBvbmVudCA9PT0gMSA/IHRyYW5zZm9ybShpZGVudGl0eSwgaWRlbnRpdHkpXG4gICAgICAgIDogZXhwb25lbnQgPT09IDAuNSA/IHRyYW5zZm9ybSh0cmFuc2Zvcm1TcXJ0LCB0cmFuc2Zvcm1TcXVhcmUpXG4gICAgICAgIDogdHJhbnNmb3JtKHRyYW5zZm9ybVBvdyhleHBvbmVudCksIHRyYW5zZm9ybVBvdygxIC8gZXhwb25lbnQpKTtcbiAgfVxuXG4gIHNjYWxlLmV4cG9uZW50ID0gZnVuY3Rpb24oXykge1xuICAgIHJldHVybiBhcmd1bWVudHMubGVuZ3RoID8gKGV4cG9uZW50ID0gK18sIHJlc2NhbGUoKSkgOiBleHBvbmVudDtcbiAgfTtcblxuICByZXR1cm4gbGluZWFyaXNoKHNjYWxlKTtcbn1cblxuZXhwb3J0IGRlZmF1bHQgZnVuY3Rpb24gcG93KCkge1xuICB2YXIgc2NhbGUgPSBwb3dpc2godHJhbnNmb3JtZXIoKSk7XG5cbiAgc2NhbGUuY29weSA9IGZ1bmN0aW9uKCkge1xuICAgIHJldHVybiBjb3B5KHNjYWxlLCBwb3coKSkuZXhwb25lbnQoc2NhbGUuZXhwb25lbnQoKSk7XG4gIH07XG5cbiAgaW5pdFJhbmdlLmFwcGx5KHNjYWxlLCBhcmd1bWVudHMpO1xuXG4gIHJldHVybiBzY2FsZTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIHNxcnQoKSB7XG4gIHJldHVybiBwb3cuYXBwbHkobnVsbCwgYXJndW1lbnRzKS5leHBvbmVudCgwLjUpO1xufVxuIl0sIm1hcHBpbmdzIjoiQUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7Iiwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///./node_modules/vega-label/node_modules/d3-scale/src/pow.js\n");

/***/ }),

/***/ "./node_modules/vega-label/node_modules/d3-scale/src/quantile.js":
/*!***********************************************************************!*\
  !*** ./node_modules/vega-label/node_modules/d3-scale/src/quantile.js ***!
  \***********************************************************************/
/*! exports provided: default */
/***/ (function(module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"default\", function() { return quantile; });\n/* harmony import */ var d3_array__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! d3-array */ \"./node_modules/d3-array/src/index.js\");\n/* harmony import */ var _init_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./init.js */ \"./node_modules/vega-label/node_modules/d3-scale/src/init.js\");\n\n\n\nfunction quantile() {\n  var domain = [],\n      range = [],\n      thresholds = [],\n      unknown;\n\n  function rescale() {\n    var i = 0, n = Math.max(1, range.length);\n    thresholds = new Array(n - 1);\n    while (++i < n) thresholds[i - 1] = Object(d3_array__WEBPACK_IMPORTED_MODULE_0__[\"quantileSorted\"])(domain, i / n);\n    return scale;\n  }\n\n  function scale(x) {\n    return x == null || isNaN(x = +x) ? unknown : range[Object(d3_array__WEBPACK_IMPORTED_MODULE_0__[\"bisect\"])(thresholds, x)];\n  }\n\n  scale.invertExtent = function(y) {\n    var i = range.indexOf(y);\n    return i < 0 ? [NaN, NaN] : [\n      i > 0 ? thresholds[i - 1] : domain[0],\n      i < thresholds.length ? thresholds[i] : domain[domain.length - 1]\n    ];\n  };\n\n  scale.domain = function(_) {\n    if (!arguments.length) return domain.slice();\n    domain = [];\n    for (let d of _) if (d != null && !isNaN(d = +d)) domain.push(d);\n    domain.sort(d3_array__WEBPACK_IMPORTED_MODULE_0__[\"ascending\"]);\n    return rescale();\n  };\n\n  scale.range = function(_) {\n    return arguments.length ? (range = Array.from(_), rescale()) : range.slice();\n  };\n\n  scale.unknown = function(_) {\n    return arguments.length ? (unknown = _, scale) : unknown;\n  };\n\n  scale.quantiles = function() {\n    return thresholds.slice();\n  };\n\n  scale.copy = function() {\n    return quantile()\n        .domain(domain)\n        .range(range)\n        .unknown(unknown);\n  };\n\n  return _init_js__WEBPACK_IMPORTED_MODULE_1__[\"initRange\"].apply(scale, arguments);\n}\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvdmVnYS1sYWJlbC9ub2RlX21vZHVsZXMvZDMtc2NhbGUvc3JjL3F1YW50aWxlLmpzLmpzIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL3ZlZ2EtbGFiZWwvbm9kZV9tb2R1bGVzL2QzLXNjYWxlL3NyYy9xdWFudGlsZS5qcz9jZDFjIl0sInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7YXNjZW5kaW5nLCBiaXNlY3QsIHF1YW50aWxlU29ydGVkIGFzIHRocmVzaG9sZH0gZnJvbSBcImQzLWFycmF5XCI7XG5pbXBvcnQge2luaXRSYW5nZX0gZnJvbSBcIi4vaW5pdC5qc1wiO1xuXG5leHBvcnQgZGVmYXVsdCBmdW5jdGlvbiBxdWFudGlsZSgpIHtcbiAgdmFyIGRvbWFpbiA9IFtdLFxuICAgICAgcmFuZ2UgPSBbXSxcbiAgICAgIHRocmVzaG9sZHMgPSBbXSxcbiAgICAgIHVua25vd247XG5cbiAgZnVuY3Rpb24gcmVzY2FsZSgpIHtcbiAgICB2YXIgaSA9IDAsIG4gPSBNYXRoLm1heCgxLCByYW5nZS5sZW5ndGgpO1xuICAgIHRocmVzaG9sZHMgPSBuZXcgQXJyYXkobiAtIDEpO1xuICAgIHdoaWxlICgrK2kgPCBuKSB0aHJlc2hvbGRzW2kgLSAxXSA9IHRocmVzaG9sZChkb21haW4sIGkgLyBuKTtcbiAgICByZXR1cm4gc2NhbGU7XG4gIH1cblxuICBmdW5jdGlvbiBzY2FsZSh4KSB7XG4gICAgcmV0dXJuIHggPT0gbnVsbCB8fCBpc05hTih4ID0gK3gpID8gdW5rbm93biA6IHJhbmdlW2Jpc2VjdCh0aHJlc2hvbGRzLCB4KV07XG4gIH1cblxuICBzY2FsZS5pbnZlcnRFeHRlbnQgPSBmdW5jdGlvbih5KSB7XG4gICAgdmFyIGkgPSByYW5nZS5pbmRleE9mKHkpO1xuICAgIHJldHVybiBpIDwgMCA/IFtOYU4sIE5hTl0gOiBbXG4gICAgICBpID4gMCA/IHRocmVzaG9sZHNbaSAtIDFdIDogZG9tYWluWzBdLFxuICAgICAgaSA8IHRocmVzaG9sZHMubGVuZ3RoID8gdGhyZXNob2xkc1tpXSA6IGRvbWFpbltkb21haW4ubGVuZ3RoIC0gMV1cbiAgICBdO1xuICB9O1xuXG4gIHNjYWxlLmRvbWFpbiA9IGZ1bmN0aW9uKF8pIHtcbiAgICBpZiAoIWFyZ3VtZW50cy5sZW5ndGgpIHJldHVybiBkb21haW4uc2xpY2UoKTtcbiAgICBkb21haW4gPSBbXTtcbiAgICBmb3IgKGxldCBkIG9mIF8pIGlmIChkICE9IG51bGwgJiYgIWlzTmFOKGQgPSArZCkpIGRvbWFpbi5wdXNoKGQpO1xuICAgIGRvbWFpbi5zb3J0KGFzY2VuZGluZyk7XG4gICAgcmV0dXJuIHJlc2NhbGUoKTtcbiAgfTtcblxuICBzY2FsZS5yYW5nZSA9IGZ1bmN0aW9uKF8pIHtcbiAgICByZXR1cm4gYXJndW1lbnRzLmxlbmd0aCA/IChyYW5nZSA9IEFycmF5LmZyb20oXyksIHJlc2NhbGUoKSkgOiByYW5nZS5zbGljZSgpO1xuICB9O1xuXG4gIHNjYWxlLnVua25vd24gPSBmdW5jdGlvbihfKSB7XG4gICAgcmV0dXJuIGFyZ3VtZW50cy5sZW5ndGggPyAodW5rbm93biA9IF8sIHNjYWxlKSA6IHVua25vd247XG4gIH07XG5cbiAgc2NhbGUucXVhbnRpbGVzID0gZnVuY3Rpb24oKSB7XG4gICAgcmV0dXJuIHRocmVzaG9sZHMuc2xpY2UoKTtcbiAgfTtcblxuICBzY2FsZS5jb3B5ID0gZnVuY3Rpb24oKSB7XG4gICAgcmV0dXJuIHF1YW50aWxlKClcbiAgICAgICAgLmRvbWFpbihkb21haW4pXG4gICAgICAgIC5yYW5nZShyYW5nZSlcbiAgICAgICAgLnVua25vd24odW5rbm93bik7XG4gIH07XG5cbiAgcmV0dXJuIGluaXRSYW5nZS5hcHBseShzY2FsZSwgYXJndW1lbnRzKTtcbn1cbiJdLCJtYXBwaW5ncyI6IkFBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7Iiwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///./node_modules/vega-label/node_modules/d3-scale/src/quantile.js\n");

/***/ }),

/***/ "./node_modules/vega-label/node_modules/d3-scale/src/quantize.js":
/*!***********************************************************************!*\
  !*** ./node_modules/vega-label/node_modules/d3-scale/src/quantize.js ***!
  \***********************************************************************/
/*! exports provided: default */
/***/ (function(module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"default\", function() { return quantize; });\n/* harmony import */ var d3_array__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! d3-array */ \"./node_modules/d3-array/src/index.js\");\n/* harmony import */ var _linear_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./linear.js */ \"./node_modules/vega-label/node_modules/d3-scale/src/linear.js\");\n/* harmony import */ var _init_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./init.js */ \"./node_modules/vega-label/node_modules/d3-scale/src/init.js\");\n\n\n\n\nfunction quantize() {\n  var x0 = 0,\n      x1 = 1,\n      n = 1,\n      domain = [0.5],\n      range = [0, 1],\n      unknown;\n\n  function scale(x) {\n    return x != null && x <= x ? range[Object(d3_array__WEBPACK_IMPORTED_MODULE_0__[\"bisect\"])(domain, x, 0, n)] : unknown;\n  }\n\n  function rescale() {\n    var i = -1;\n    domain = new Array(n);\n    while (++i < n) domain[i] = ((i + 1) * x1 - (i - n) * x0) / (n + 1);\n    return scale;\n  }\n\n  scale.domain = function(_) {\n    return arguments.length ? ([x0, x1] = _, x0 = +x0, x1 = +x1, rescale()) : [x0, x1];\n  };\n\n  scale.range = function(_) {\n    return arguments.length ? (n = (range = Array.from(_)).length - 1, rescale()) : range.slice();\n  };\n\n  scale.invertExtent = function(y) {\n    var i = range.indexOf(y);\n    return i < 0 ? [NaN, NaN]\n        : i < 1 ? [x0, domain[0]]\n        : i >= n ? [domain[n - 1], x1]\n        : [domain[i - 1], domain[i]];\n  };\n\n  scale.unknown = function(_) {\n    return arguments.length ? (unknown = _, scale) : scale;\n  };\n\n  scale.thresholds = function() {\n    return domain.slice();\n  };\n\n  scale.copy = function() {\n    return quantize()\n        .domain([x0, x1])\n        .range(range)\n        .unknown(unknown);\n  };\n\n  return _init_js__WEBPACK_IMPORTED_MODULE_2__[\"initRange\"].apply(Object(_linear_js__WEBPACK_IMPORTED_MODULE_1__[\"linearish\"])(scale), arguments);\n}\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvdmVnYS1sYWJlbC9ub2RlX21vZHVsZXMvZDMtc2NhbGUvc3JjL3F1YW50aXplLmpzLmpzIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL3ZlZ2EtbGFiZWwvbm9kZV9tb2R1bGVzL2QzLXNjYWxlL3NyYy9xdWFudGl6ZS5qcz80YzYzIl0sInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7YmlzZWN0fSBmcm9tIFwiZDMtYXJyYXlcIjtcbmltcG9ydCB7bGluZWFyaXNofSBmcm9tIFwiLi9saW5lYXIuanNcIjtcbmltcG9ydCB7aW5pdFJhbmdlfSBmcm9tIFwiLi9pbml0LmpzXCI7XG5cbmV4cG9ydCBkZWZhdWx0IGZ1bmN0aW9uIHF1YW50aXplKCkge1xuICB2YXIgeDAgPSAwLFxuICAgICAgeDEgPSAxLFxuICAgICAgbiA9IDEsXG4gICAgICBkb21haW4gPSBbMC41XSxcbiAgICAgIHJhbmdlID0gWzAsIDFdLFxuICAgICAgdW5rbm93bjtcblxuICBmdW5jdGlvbiBzY2FsZSh4KSB7XG4gICAgcmV0dXJuIHggIT0gbnVsbCAmJiB4IDw9IHggPyByYW5nZVtiaXNlY3QoZG9tYWluLCB4LCAwLCBuKV0gOiB1bmtub3duO1xuICB9XG5cbiAgZnVuY3Rpb24gcmVzY2FsZSgpIHtcbiAgICB2YXIgaSA9IC0xO1xuICAgIGRvbWFpbiA9IG5ldyBBcnJheShuKTtcbiAgICB3aGlsZSAoKytpIDwgbikgZG9tYWluW2ldID0gKChpICsgMSkgKiB4MSAtIChpIC0gbikgKiB4MCkgLyAobiArIDEpO1xuICAgIHJldHVybiBzY2FsZTtcbiAgfVxuXG4gIHNjYWxlLmRvbWFpbiA9IGZ1bmN0aW9uKF8pIHtcbiAgICByZXR1cm4gYXJndW1lbnRzLmxlbmd0aCA/IChbeDAsIHgxXSA9IF8sIHgwID0gK3gwLCB4MSA9ICt4MSwgcmVzY2FsZSgpKSA6IFt4MCwgeDFdO1xuICB9O1xuXG4gIHNjYWxlLnJhbmdlID0gZnVuY3Rpb24oXykge1xuICAgIHJldHVybiBhcmd1bWVudHMubGVuZ3RoID8gKG4gPSAocmFuZ2UgPSBBcnJheS5mcm9tKF8pKS5sZW5ndGggLSAxLCByZXNjYWxlKCkpIDogcmFuZ2Uuc2xpY2UoKTtcbiAgfTtcblxuICBzY2FsZS5pbnZlcnRFeHRlbnQgPSBmdW5jdGlvbih5KSB7XG4gICAgdmFyIGkgPSByYW5nZS5pbmRleE9mKHkpO1xuICAgIHJldHVybiBpIDwgMCA/IFtOYU4sIE5hTl1cbiAgICAgICAgOiBpIDwgMSA/IFt4MCwgZG9tYWluWzBdXVxuICAgICAgICA6IGkgPj0gbiA/IFtkb21haW5bbiAtIDFdLCB4MV1cbiAgICAgICAgOiBbZG9tYWluW2kgLSAxXSwgZG9tYWluW2ldXTtcbiAgfTtcblxuICBzY2FsZS51bmtub3duID0gZnVuY3Rpb24oXykge1xuICAgIHJldHVybiBhcmd1bWVudHMubGVuZ3RoID8gKHVua25vd24gPSBfLCBzY2FsZSkgOiBzY2FsZTtcbiAgfTtcblxuICBzY2FsZS50aHJlc2hvbGRzID0gZnVuY3Rpb24oKSB7XG4gICAgcmV0dXJuIGRvbWFpbi5zbGljZSgpO1xuICB9O1xuXG4gIHNjYWxlLmNvcHkgPSBmdW5jdGlvbigpIHtcbiAgICByZXR1cm4gcXVhbnRpemUoKVxuICAgICAgICAuZG9tYWluKFt4MCwgeDFdKVxuICAgICAgICAucmFuZ2UocmFuZ2UpXG4gICAgICAgIC51bmtub3duKHVua25vd24pO1xuICB9O1xuXG4gIHJldHVybiBpbml0UmFuZ2UuYXBwbHkobGluZWFyaXNoKHNjYWxlKSwgYXJndW1lbnRzKTtcbn1cbiJdLCJtYXBwaW5ncyI6IkFBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7Iiwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///./node_modules/vega-label/node_modules/d3-scale/src/quantize.js\n");

/***/ }),

/***/ "./node_modules/vega-label/node_modules/d3-scale/src/radial.js":
/*!*********************************************************************!*\
  !*** ./node_modules/vega-label/node_modules/d3-scale/src/radial.js ***!
  \*********************************************************************/
/*! exports provided: default */
/***/ (function(module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"default\", function() { return radial; });\n/* harmony import */ var _continuous_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./continuous.js */ \"./node_modules/vega-label/node_modules/d3-scale/src/continuous.js\");\n/* harmony import */ var _init_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./init.js */ \"./node_modules/vega-label/node_modules/d3-scale/src/init.js\");\n/* harmony import */ var _linear_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./linear.js */ \"./node_modules/vega-label/node_modules/d3-scale/src/linear.js\");\n/* harmony import */ var _number_js__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ./number.js */ \"./node_modules/vega-label/node_modules/d3-scale/src/number.js\");\n\n\n\n\n\nfunction square(x) {\n  return Math.sign(x) * x * x;\n}\n\nfunction unsquare(x) {\n  return Math.sign(x) * Math.sqrt(Math.abs(x));\n}\n\nfunction radial() {\n  var squared = Object(_continuous_js__WEBPACK_IMPORTED_MODULE_0__[\"default\"])(),\n      range = [0, 1],\n      round = false,\n      unknown;\n\n  function scale(x) {\n    var y = unsquare(squared(x));\n    return isNaN(y) ? unknown : round ? Math.round(y) : y;\n  }\n\n  scale.invert = function(y) {\n    return squared.invert(square(y));\n  };\n\n  scale.domain = function(_) {\n    return arguments.length ? (squared.domain(_), scale) : squared.domain();\n  };\n\n  scale.range = function(_) {\n    return arguments.length ? (squared.range((range = Array.from(_, _number_js__WEBPACK_IMPORTED_MODULE_3__[\"default\"])).map(square)), scale) : range.slice();\n  };\n\n  scale.rangeRound = function(_) {\n    return scale.range(_).round(true);\n  };\n\n  scale.round = function(_) {\n    return arguments.length ? (round = !!_, scale) : round;\n  };\n\n  scale.clamp = function(_) {\n    return arguments.length ? (squared.clamp(_), scale) : squared.clamp();\n  };\n\n  scale.unknown = function(_) {\n    return arguments.length ? (unknown = _, scale) : unknown;\n  };\n\n  scale.copy = function() {\n    return radial(squared.domain(), range)\n        .round(round)\n        .clamp(squared.clamp())\n        .unknown(unknown);\n  };\n\n  _init_js__WEBPACK_IMPORTED_MODULE_1__[\"initRange\"].apply(scale, arguments);\n\n  return Object(_linear_js__WEBPACK_IMPORTED_MODULE_2__[\"linearish\"])(scale);\n}\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvdmVnYS1sYWJlbC9ub2RlX21vZHVsZXMvZDMtc2NhbGUvc3JjL3JhZGlhbC5qcy5qcyIsInNvdXJjZXMiOlsid2VicGFjazovLy8uL25vZGVfbW9kdWxlcy92ZWdhLWxhYmVsL25vZGVfbW9kdWxlcy9kMy1zY2FsZS9zcmMvcmFkaWFsLmpzPzQxMTQiXSwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IGNvbnRpbnVvdXMgZnJvbSBcIi4vY29udGludW91cy5qc1wiO1xuaW1wb3J0IHtpbml0UmFuZ2V9IGZyb20gXCIuL2luaXQuanNcIjtcbmltcG9ydCB7bGluZWFyaXNofSBmcm9tIFwiLi9saW5lYXIuanNcIjtcbmltcG9ydCBudW1iZXIgZnJvbSBcIi4vbnVtYmVyLmpzXCI7XG5cbmZ1bmN0aW9uIHNxdWFyZSh4KSB7XG4gIHJldHVybiBNYXRoLnNpZ24oeCkgKiB4ICogeDtcbn1cblxuZnVuY3Rpb24gdW5zcXVhcmUoeCkge1xuICByZXR1cm4gTWF0aC5zaWduKHgpICogTWF0aC5zcXJ0KE1hdGguYWJzKHgpKTtcbn1cblxuZXhwb3J0IGRlZmF1bHQgZnVuY3Rpb24gcmFkaWFsKCkge1xuICB2YXIgc3F1YXJlZCA9IGNvbnRpbnVvdXMoKSxcbiAgICAgIHJhbmdlID0gWzAsIDFdLFxuICAgICAgcm91bmQgPSBmYWxzZSxcbiAgICAgIHVua25vd247XG5cbiAgZnVuY3Rpb24gc2NhbGUoeCkge1xuICAgIHZhciB5ID0gdW5zcXVhcmUoc3F1YXJlZCh4KSk7XG4gICAgcmV0dXJuIGlzTmFOKHkpID8gdW5rbm93biA6IHJvdW5kID8gTWF0aC5yb3VuZCh5KSA6IHk7XG4gIH1cblxuICBzY2FsZS5pbnZlcnQgPSBmdW5jdGlvbih5KSB7XG4gICAgcmV0dXJuIHNxdWFyZWQuaW52ZXJ0KHNxdWFyZSh5KSk7XG4gIH07XG5cbiAgc2NhbGUuZG9tYWluID0gZnVuY3Rpb24oXykge1xuICAgIHJldHVybiBhcmd1bWVudHMubGVuZ3RoID8gKHNxdWFyZWQuZG9tYWluKF8pLCBzY2FsZSkgOiBzcXVhcmVkLmRvbWFpbigpO1xuICB9O1xuXG4gIHNjYWxlLnJhbmdlID0gZnVuY3Rpb24oXykge1xuICAgIHJldHVybiBhcmd1bWVudHMubGVuZ3RoID8gKHNxdWFyZWQucmFuZ2UoKHJhbmdlID0gQXJyYXkuZnJvbShfLCBudW1iZXIpKS5tYXAoc3F1YXJlKSksIHNjYWxlKSA6IHJhbmdlLnNsaWNlKCk7XG4gIH07XG5cbiAgc2NhbGUucmFuZ2VSb3VuZCA9IGZ1bmN0aW9uKF8pIHtcbiAgICByZXR1cm4gc2NhbGUucmFuZ2UoXykucm91bmQodHJ1ZSk7XG4gIH07XG5cbiAgc2NhbGUucm91bmQgPSBmdW5jdGlvbihfKSB7XG4gICAgcmV0dXJuIGFyZ3VtZW50cy5sZW5ndGggPyAocm91bmQgPSAhIV8sIHNjYWxlKSA6IHJvdW5kO1xuICB9O1xuXG4gIHNjYWxlLmNsYW1wID0gZnVuY3Rpb24oXykge1xuICAgIHJldHVybiBhcmd1bWVudHMubGVuZ3RoID8gKHNxdWFyZWQuY2xhbXAoXyksIHNjYWxlKSA6IHNxdWFyZWQuY2xhbXAoKTtcbiAgfTtcblxuICBzY2FsZS51bmtub3duID0gZnVuY3Rpb24oXykge1xuICAgIHJldHVybiBhcmd1bWVudHMubGVuZ3RoID8gKHVua25vd24gPSBfLCBzY2FsZSkgOiB1bmtub3duO1xuICB9O1xuXG4gIHNjYWxlLmNvcHkgPSBmdW5jdGlvbigpIHtcbiAgICByZXR1cm4gcmFkaWFsKHNxdWFyZWQuZG9tYWluKCksIHJhbmdlKVxuICAgICAgICAucm91bmQocm91bmQpXG4gICAgICAgIC5jbGFtcChzcXVhcmVkLmNsYW1wKCkpXG4gICAgICAgIC51bmtub3duKHVua25vd24pO1xuICB9O1xuXG4gIGluaXRSYW5nZS5hcHBseShzY2FsZSwgYXJndW1lbnRzKTtcblxuICByZXR1cm4gbGluZWFyaXNoKHNjYWxlKTtcbn1cbiJdLCJtYXBwaW5ncyI6IkFBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOyIsInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///./node_modules/vega-label/node_modules/d3-scale/src/radial.js\n");

/***/ }),

/***/ "./node_modules/vega-label/node_modules/d3-scale/src/sequential.js":
/*!*************************************************************************!*\
  !*** ./node_modules/vega-label/node_modules/d3-scale/src/sequential.js ***!
  \*************************************************************************/
/*! exports provided: copy, default, sequentialLog, sequentialSymlog, sequentialPow, sequentialSqrt */
/***/ (function(module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"copy\", function() { return copy; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"default\", function() { return sequential; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"sequentialLog\", function() { return sequentialLog; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"sequentialSymlog\", function() { return sequentialSymlog; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"sequentialPow\", function() { return sequentialPow; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"sequentialSqrt\", function() { return sequentialSqrt; });\n/* harmony import */ var d3_interpolate__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! d3-interpolate */ \"./node_modules/vega-label/node_modules/d3-interpolate/src/index.js\");\n/* harmony import */ var _continuous_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./continuous.js */ \"./node_modules/vega-label/node_modules/d3-scale/src/continuous.js\");\n/* harmony import */ var _init_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./init.js */ \"./node_modules/vega-label/node_modules/d3-scale/src/init.js\");\n/* harmony import */ var _linear_js__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ./linear.js */ \"./node_modules/vega-label/node_modules/d3-scale/src/linear.js\");\n/* harmony import */ var _log_js__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ./log.js */ \"./node_modules/vega-label/node_modules/d3-scale/src/log.js\");\n/* harmony import */ var _symlog_js__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! ./symlog.js */ \"./node_modules/vega-label/node_modules/d3-scale/src/symlog.js\");\n/* harmony import */ var _pow_js__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! ./pow.js */ \"./node_modules/vega-label/node_modules/d3-scale/src/pow.js\");\n\n\n\n\n\n\n\n\nfunction transformer() {\n  var x0 = 0,\n      x1 = 1,\n      t0,\n      t1,\n      k10,\n      transform,\n      interpolator = _continuous_js__WEBPACK_IMPORTED_MODULE_1__[\"identity\"],\n      clamp = false,\n      unknown;\n\n  function scale(x) {\n    return x == null || isNaN(x = +x) ? unknown : interpolator(k10 === 0 ? 0.5 : (x = (transform(x) - t0) * k10, clamp ? Math.max(0, Math.min(1, x)) : x));\n  }\n\n  scale.domain = function(_) {\n    return arguments.length ? ([x0, x1] = _, t0 = transform(x0 = +x0), t1 = transform(x1 = +x1), k10 = t0 === t1 ? 0 : 1 / (t1 - t0), scale) : [x0, x1];\n  };\n\n  scale.clamp = function(_) {\n    return arguments.length ? (clamp = !!_, scale) : clamp;\n  };\n\n  scale.interpolator = function(_) {\n    return arguments.length ? (interpolator = _, scale) : interpolator;\n  };\n\n  function range(interpolate) {\n    return function(_) {\n      var r0, r1;\n      return arguments.length ? ([r0, r1] = _, interpolator = interpolate(r0, r1), scale) : [interpolator(0), interpolator(1)];\n    };\n  }\n\n  scale.range = range(d3_interpolate__WEBPACK_IMPORTED_MODULE_0__[\"interpolate\"]);\n\n  scale.rangeRound = range(d3_interpolate__WEBPACK_IMPORTED_MODULE_0__[\"interpolateRound\"]);\n\n  scale.unknown = function(_) {\n    return arguments.length ? (unknown = _, scale) : unknown;\n  };\n\n  return function(t) {\n    transform = t, t0 = t(x0), t1 = t(x1), k10 = t0 === t1 ? 0 : 1 / (t1 - t0);\n    return scale;\n  };\n}\n\nfunction copy(source, target) {\n  return target\n      .domain(source.domain())\n      .interpolator(source.interpolator())\n      .clamp(source.clamp())\n      .unknown(source.unknown());\n}\n\nfunction sequential() {\n  var scale = Object(_linear_js__WEBPACK_IMPORTED_MODULE_3__[\"linearish\"])(transformer()(_continuous_js__WEBPACK_IMPORTED_MODULE_1__[\"identity\"]));\n\n  scale.copy = function() {\n    return copy(scale, sequential());\n  };\n\n  return _init_js__WEBPACK_IMPORTED_MODULE_2__[\"initInterpolator\"].apply(scale, arguments);\n}\n\nfunction sequentialLog() {\n  var scale = Object(_log_js__WEBPACK_IMPORTED_MODULE_4__[\"loggish\"])(transformer()).domain([1, 10]);\n\n  scale.copy = function() {\n    return copy(scale, sequentialLog()).base(scale.base());\n  };\n\n  return _init_js__WEBPACK_IMPORTED_MODULE_2__[\"initInterpolator\"].apply(scale, arguments);\n}\n\nfunction sequentialSymlog() {\n  var scale = Object(_symlog_js__WEBPACK_IMPORTED_MODULE_5__[\"symlogish\"])(transformer());\n\n  scale.copy = function() {\n    return copy(scale, sequentialSymlog()).constant(scale.constant());\n  };\n\n  return _init_js__WEBPACK_IMPORTED_MODULE_2__[\"initInterpolator\"].apply(scale, arguments);\n}\n\nfunction sequentialPow() {\n  var scale = Object(_pow_js__WEBPACK_IMPORTED_MODULE_6__[\"powish\"])(transformer());\n\n  scale.copy = function() {\n    return copy(scale, sequentialPow()).exponent(scale.exponent());\n  };\n\n  return _init_js__WEBPACK_IMPORTED_MODULE_2__[\"initInterpolator\"].apply(scale, arguments);\n}\n\nfunction sequentialSqrt() {\n  return sequentialPow.apply(null, arguments).exponent(0.5);\n}\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,[encoded data, 5004 characters]\n//# sourceURL=webpack-internal:///./node_modules/vega-label/node_modules/d3-scale/src/sequential.js\n");

/***/ }),

/***/ "./node_modules/vega-label/node_modules/d3-scale/src/sequentialQuantile.js":
/*!*********************************************************************************!*\
  !*** ./node_modules/vega-label/node_modules/d3-scale/src/sequentialQuantile.js ***!
  \*********************************************************************************/
/*! exports provided: default */
/***/ (function(module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"default\", function() { return sequentialQuantile; });\n/* harmony import */ var d3_array__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! d3-array */ \"./node_modules/d3-array/src/index.js\");\n/* harmony import */ var _continuous_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./continuous.js */ \"./node_modules/vega-label/node_modules/d3-scale/src/continuous.js\");\n/* harmony import */ var _init_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./init.js */ \"./node_modules/vega-label/node_modules/d3-scale/src/init.js\");\n\n\n\n\nfunction sequentialQuantile() {\n  var domain = [],\n      interpolator = _continuous_js__WEBPACK_IMPORTED_MODULE_1__[\"identity\"];\n\n  function scale(x) {\n    if (x != null && !isNaN(x = +x)) return interpolator((Object(d3_array__WEBPACK_IMPORTED_MODULE_0__[\"bisect\"])(domain, x, 1) - 1) / (domain.length - 1));\n  }\n\n  scale.domain = function(_) {\n    if (!arguments.length) return domain.slice();\n    domain = [];\n    for (let d of _) if (d != null && !isNaN(d = +d)) domain.push(d);\n    domain.sort(d3_array__WEBPACK_IMPORTED_MODULE_0__[\"ascending\"]);\n    return scale;\n  };\n\n  scale.interpolator = function(_) {\n    return arguments.length ? (interpolator = _, scale) : interpolator;\n  };\n\n  scale.range = function() {\n    return domain.map((d, i) => interpolator(i / (domain.length - 1)));\n  };\n\n  scale.quantiles = function(n) {\n    return Array.from({length: n + 1}, (_, i) => Object(d3_array__WEBPACK_IMPORTED_MODULE_0__[\"quantile\"])(domain, i / n));\n  };\n\n  scale.copy = function() {\n    return sequentialQuantile(interpolator).domain(domain);\n  };\n\n  return _init_js__WEBPACK_IMPORTED_MODULE_2__[\"initInterpolator\"].apply(scale, arguments);\n}\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvdmVnYS1sYWJlbC9ub2RlX21vZHVsZXMvZDMtc2NhbGUvc3JjL3NlcXVlbnRpYWxRdWFudGlsZS5qcy5qcyIsInNvdXJjZXMiOlsid2VicGFjazovLy8uL25vZGVfbW9kdWxlcy92ZWdhLWxhYmVsL25vZGVfbW9kdWxlcy9kMy1zY2FsZS9zcmMvc2VxdWVudGlhbFF1YW50aWxlLmpzPzc0N2MiXSwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHthc2NlbmRpbmcsIGJpc2VjdCwgcXVhbnRpbGV9IGZyb20gXCJkMy1hcnJheVwiO1xuaW1wb3J0IHtpZGVudGl0eX0gZnJvbSBcIi4vY29udGludW91cy5qc1wiO1xuaW1wb3J0IHtpbml0SW50ZXJwb2xhdG9yfSBmcm9tIFwiLi9pbml0LmpzXCI7XG5cbmV4cG9ydCBkZWZhdWx0IGZ1bmN0aW9uIHNlcXVlbnRpYWxRdWFudGlsZSgpIHtcbiAgdmFyIGRvbWFpbiA9IFtdLFxuICAgICAgaW50ZXJwb2xhdG9yID0gaWRlbnRpdHk7XG5cbiAgZnVuY3Rpb24gc2NhbGUoeCkge1xuICAgIGlmICh4ICE9IG51bGwgJiYgIWlzTmFOKHggPSAreCkpIHJldHVybiBpbnRlcnBvbGF0b3IoKGJpc2VjdChkb21haW4sIHgsIDEpIC0gMSkgLyAoZG9tYWluLmxlbmd0aCAtIDEpKTtcbiAgfVxuXG4gIHNjYWxlLmRvbWFpbiA9IGZ1bmN0aW9uKF8pIHtcbiAgICBpZiAoIWFyZ3VtZW50cy5sZW5ndGgpIHJldHVybiBkb21haW4uc2xpY2UoKTtcbiAgICBkb21haW4gPSBbXTtcbiAgICBmb3IgKGxldCBkIG9mIF8pIGlmIChkICE9IG51bGwgJiYgIWlzTmFOKGQgPSArZCkpIGRvbWFpbi5wdXNoKGQpO1xuICAgIGRvbWFpbi5zb3J0KGFzY2VuZGluZyk7XG4gICAgcmV0dXJuIHNjYWxlO1xuICB9O1xuXG4gIHNjYWxlLmludGVycG9sYXRvciA9IGZ1bmN0aW9uKF8pIHtcbiAgICByZXR1cm4gYXJndW1lbnRzLmxlbmd0aCA/IChpbnRlcnBvbGF0b3IgPSBfLCBzY2FsZSkgOiBpbnRlcnBvbGF0b3I7XG4gIH07XG5cbiAgc2NhbGUucmFuZ2UgPSBmdW5jdGlvbigpIHtcbiAgICByZXR1cm4gZG9tYWluLm1hcCgoZCwgaSkgPT4gaW50ZXJwb2xhdG9yKGkgLyAoZG9tYWluLmxlbmd0aCAtIDEpKSk7XG4gIH07XG5cbiAgc2NhbGUucXVhbnRpbGVzID0gZnVuY3Rpb24obikge1xuICAgIHJldHVybiBBcnJheS5mcm9tKHtsZW5ndGg6IG4gKyAxfSwgKF8sIGkpID0+IHF1YW50aWxlKGRvbWFpbiwgaSAvIG4pKTtcbiAgfTtcblxuICBzY2FsZS5jb3B5ID0gZnVuY3Rpb24oKSB7XG4gICAgcmV0dXJuIHNlcXVlbnRpYWxRdWFudGlsZShpbnRlcnBvbGF0b3IpLmRvbWFpbihkb21haW4pO1xuICB9O1xuXG4gIHJldHVybiBpbml0SW50ZXJwb2xhdG9yLmFwcGx5KHNjYWxlLCBhcmd1bWVudHMpO1xufVxuIl0sIm1hcHBpbmdzIjoiQUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTsiLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///./node_modules/vega-label/node_modules/d3-scale/src/sequentialQuantile.js\n");

/***/ }),

/***/ "./node_modules/vega-label/node_modules/d3-scale/src/symlog.js":
/*!*********************************************************************!*\
  !*** ./node_modules/vega-label/node_modules/d3-scale/src/symlog.js ***!
  \*********************************************************************/
/*! exports provided: symlogish, default */
/***/ (function(module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"symlogish\", function() { return symlogish; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"default\", function() { return symlog; });\n/* harmony import */ var _linear_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./linear.js */ \"./node_modules/vega-label/node_modules/d3-scale/src/linear.js\");\n/* harmony import */ var _continuous_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./continuous.js */ \"./node_modules/vega-label/node_modules/d3-scale/src/continuous.js\");\n/* harmony import */ var _init_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./init.js */ \"./node_modules/vega-label/node_modules/d3-scale/src/init.js\");\n\n\n\n\nfunction transformSymlog(c) {\n  return function(x) {\n    return Math.sign(x) * Math.log1p(Math.abs(x / c));\n  };\n}\n\nfunction transformSymexp(c) {\n  return function(x) {\n    return Math.sign(x) * Math.expm1(Math.abs(x)) * c;\n  };\n}\n\nfunction symlogish(transform) {\n  var c = 1, scale = transform(transformSymlog(c), transformSymexp(c));\n\n  scale.constant = function(_) {\n    return arguments.length ? transform(transformSymlog(c = +_), transformSymexp(c)) : c;\n  };\n\n  return Object(_linear_js__WEBPACK_IMPORTED_MODULE_0__[\"linearish\"])(scale);\n}\n\nfunction symlog() {\n  var scale = symlogish(Object(_continuous_js__WEBPACK_IMPORTED_MODULE_1__[\"transformer\"])());\n\n  scale.copy = function() {\n    return Object(_continuous_js__WEBPACK_IMPORTED_MODULE_1__[\"copy\"])(scale, symlog()).constant(scale.constant());\n  };\n\n  return _init_js__WEBPACK_IMPORTED_MODULE_2__[\"initRange\"].apply(scale, arguments);\n}\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvdmVnYS1sYWJlbC9ub2RlX21vZHVsZXMvZDMtc2NhbGUvc3JjL3N5bWxvZy5qcy5qcyIsInNvdXJjZXMiOlsid2VicGFjazovLy8uL25vZGVfbW9kdWxlcy92ZWdhLWxhYmVsL25vZGVfbW9kdWxlcy9kMy1zY2FsZS9zcmMvc3ltbG9nLmpzPzhlMmQiXSwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtsaW5lYXJpc2h9IGZyb20gXCIuL2xpbmVhci5qc1wiO1xuaW1wb3J0IHtjb3B5LCB0cmFuc2Zvcm1lcn0gZnJvbSBcIi4vY29udGludW91cy5qc1wiO1xuaW1wb3J0IHtpbml0UmFuZ2V9IGZyb20gXCIuL2luaXQuanNcIjtcblxuZnVuY3Rpb24gdHJhbnNmb3JtU3ltbG9nKGMpIHtcbiAgcmV0dXJuIGZ1bmN0aW9uKHgpIHtcbiAgICByZXR1cm4gTWF0aC5zaWduKHgpICogTWF0aC5sb2cxcChNYXRoLmFicyh4IC8gYykpO1xuICB9O1xufVxuXG5mdW5jdGlvbiB0cmFuc2Zvcm1TeW1leHAoYykge1xuICByZXR1cm4gZnVuY3Rpb24oeCkge1xuICAgIHJldHVybiBNYXRoLnNpZ24oeCkgKiBNYXRoLmV4cG0xKE1hdGguYWJzKHgpKSAqIGM7XG4gIH07XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBzeW1sb2dpc2godHJhbnNmb3JtKSB7XG4gIHZhciBjID0gMSwgc2NhbGUgPSB0cmFuc2Zvcm0odHJhbnNmb3JtU3ltbG9nKGMpLCB0cmFuc2Zvcm1TeW1leHAoYykpO1xuXG4gIHNjYWxlLmNvbnN0YW50ID0gZnVuY3Rpb24oXykge1xuICAgIHJldHVybiBhcmd1bWVudHMubGVuZ3RoID8gdHJhbnNmb3JtKHRyYW5zZm9ybVN5bWxvZyhjID0gK18pLCB0cmFuc2Zvcm1TeW1leHAoYykpIDogYztcbiAgfTtcblxuICByZXR1cm4gbGluZWFyaXNoKHNjYWxlKTtcbn1cblxuZXhwb3J0IGRlZmF1bHQgZnVuY3Rpb24gc3ltbG9nKCkge1xuICB2YXIgc2NhbGUgPSBzeW1sb2dpc2godHJhbnNmb3JtZXIoKSk7XG5cbiAgc2NhbGUuY29weSA9IGZ1bmN0aW9uKCkge1xuICAgIHJldHVybiBjb3B5KHNjYWxlLCBzeW1sb2coKSkuY29uc3RhbnQoc2NhbGUuY29uc3RhbnQoKSk7XG4gIH07XG5cbiAgcmV0dXJuIGluaXRSYW5nZS5hcHBseShzY2FsZSwgYXJndW1lbnRzKTtcbn1cbiJdLCJtYXBwaW5ncyI6IkFBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTsiLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///./node_modules/vega-label/node_modules/d3-scale/src/symlog.js\n");

/***/ }),

/***/ "./node_modules/vega-label/node_modules/d3-scale/src/threshold.js":
/*!************************************************************************!*\
  !*** ./node_modules/vega-label/node_modules/d3-scale/src/threshold.js ***!
  \************************************************************************/
/*! exports provided: default */
/***/ (function(module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"default\", function() { return threshold; });\n/* harmony import */ var d3_array__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! d3-array */ \"./node_modules/d3-array/src/index.js\");\n/* harmony import */ var _init_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./init.js */ \"./node_modules/vega-label/node_modules/d3-scale/src/init.js\");\n\n\n\nfunction threshold() {\n  var domain = [0.5],\n      range = [0, 1],\n      unknown,\n      n = 1;\n\n  function scale(x) {\n    return x != null && x <= x ? range[Object(d3_array__WEBPACK_IMPORTED_MODULE_0__[\"bisect\"])(domain, x, 0, n)] : unknown;\n  }\n\n  scale.domain = function(_) {\n    return arguments.length ? (domain = Array.from(_), n = Math.min(domain.length, range.length - 1), scale) : domain.slice();\n  };\n\n  scale.range = function(_) {\n    return arguments.length ? (range = Array.from(_), n = Math.min(domain.length, range.length - 1), scale) : range.slice();\n  };\n\n  scale.invertExtent = function(y) {\n    var i = range.indexOf(y);\n    return [domain[i - 1], domain[i]];\n  };\n\n  scale.unknown = function(_) {\n    return arguments.length ? (unknown = _, scale) : unknown;\n  };\n\n  scale.copy = function() {\n    return threshold()\n        .domain(domain)\n        .range(range)\n        .unknown(unknown);\n  };\n\n  return _init_js__WEBPACK_IMPORTED_MODULE_1__[\"initRange\"].apply(scale, arguments);\n}\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvdmVnYS1sYWJlbC9ub2RlX21vZHVsZXMvZDMtc2NhbGUvc3JjL3RocmVzaG9sZC5qcy5qcyIsInNvdXJjZXMiOlsid2VicGFjazovLy8uL25vZGVfbW9kdWxlcy92ZWdhLWxhYmVsL25vZGVfbW9kdWxlcy9kMy1zY2FsZS9zcmMvdGhyZXNob2xkLmpzPzBkZjYiXSwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtiaXNlY3R9IGZyb20gXCJkMy1hcnJheVwiO1xuaW1wb3J0IHtpbml0UmFuZ2V9IGZyb20gXCIuL2luaXQuanNcIjtcblxuZXhwb3J0IGRlZmF1bHQgZnVuY3Rpb24gdGhyZXNob2xkKCkge1xuICB2YXIgZG9tYWluID0gWzAuNV0sXG4gICAgICByYW5nZSA9IFswLCAxXSxcbiAgICAgIHVua25vd24sXG4gICAgICBuID0gMTtcblxuICBmdW5jdGlvbiBzY2FsZSh4KSB7XG4gICAgcmV0dXJuIHggIT0gbnVsbCAmJiB4IDw9IHggPyByYW5nZVtiaXNlY3QoZG9tYWluLCB4LCAwLCBuKV0gOiB1bmtub3duO1xuICB9XG5cbiAgc2NhbGUuZG9tYWluID0gZnVuY3Rpb24oXykge1xuICAgIHJldHVybiBhcmd1bWVudHMubGVuZ3RoID8gKGRvbWFpbiA9IEFycmF5LmZyb20oXyksIG4gPSBNYXRoLm1pbihkb21haW4ubGVuZ3RoLCByYW5nZS5sZW5ndGggLSAxKSwgc2NhbGUpIDogZG9tYWluLnNsaWNlKCk7XG4gIH07XG5cbiAgc2NhbGUucmFuZ2UgPSBmdW5jdGlvbihfKSB7XG4gICAgcmV0dXJuIGFyZ3VtZW50cy5sZW5ndGggPyAocmFuZ2UgPSBBcnJheS5mcm9tKF8pLCBuID0gTWF0aC5taW4oZG9tYWluLmxlbmd0aCwgcmFuZ2UubGVuZ3RoIC0gMSksIHNjYWxlKSA6IHJhbmdlLnNsaWNlKCk7XG4gIH07XG5cbiAgc2NhbGUuaW52ZXJ0RXh0ZW50ID0gZnVuY3Rpb24oeSkge1xuICAgIHZhciBpID0gcmFuZ2UuaW5kZXhPZih5KTtcbiAgICByZXR1cm4gW2RvbWFpbltpIC0gMV0sIGRvbWFpbltpXV07XG4gIH07XG5cbiAgc2NhbGUudW5rbm93biA9IGZ1bmN0aW9uKF8pIHtcbiAgICByZXR1cm4gYXJndW1lbnRzLmxlbmd0aCA/ICh1bmtub3duID0gXywgc2NhbGUpIDogdW5rbm93bjtcbiAgfTtcblxuICBzY2FsZS5jb3B5ID0gZnVuY3Rpb24oKSB7XG4gICAgcmV0dXJuIHRocmVzaG9sZCgpXG4gICAgICAgIC5kb21haW4oZG9tYWluKVxuICAgICAgICAucmFuZ2UocmFuZ2UpXG4gICAgICAgIC51bmtub3duKHVua25vd24pO1xuICB9O1xuXG4gIHJldHVybiBpbml0UmFuZ2UuYXBwbHkoc2NhbGUsIGFyZ3VtZW50cyk7XG59XG4iXSwibWFwcGluZ3MiOiJBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOyIsInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///./node_modules/vega-label/node_modules/d3-scale/src/threshold.js\n");

/***/ }),

/***/ "./node_modules/vega-label/node_modules/d3-scale/src/tickFormat.js":
/*!*************************************************************************!*\
  !*** ./node_modules/vega-label/node_modules/d3-scale/src/tickFormat.js ***!
  \*************************************************************************/
/*! exports provided: default */
/***/ (function(module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"default\", function() { return tickFormat; });\n/* harmony import */ var d3_array__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! d3-array */ \"./node_modules/d3-array/src/index.js\");\n/* harmony import */ var d3_format__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! d3-format */ \"./node_modules/vega-label/node_modules/d3-format/src/index.js\");\n\n\n\nfunction tickFormat(start, stop, count, specifier) {\n  var step = Object(d3_array__WEBPACK_IMPORTED_MODULE_0__[\"tickStep\"])(start, stop, count),\n      precision;\n  specifier = Object(d3_format__WEBPACK_IMPORTED_MODULE_1__[\"formatSpecifier\"])(specifier == null ? \",f\" : specifier);\n  switch (specifier.type) {\n    case \"s\": {\n      var value = Math.max(Math.abs(start), Math.abs(stop));\n      if (specifier.precision == null && !isNaN(precision = Object(d3_format__WEBPACK_IMPORTED_MODULE_1__[\"precisionPrefix\"])(step, value))) specifier.precision = precision;\n      return Object(d3_format__WEBPACK_IMPORTED_MODULE_1__[\"formatPrefix\"])(specifier, value);\n    }\n    case \"\":\n    case \"e\":\n    case \"g\":\n    case \"p\":\n    case \"r\": {\n      if (specifier.precision == null && !isNaN(precision = Object(d3_format__WEBPACK_IMPORTED_MODULE_1__[\"precisionRound\"])(step, Math.max(Math.abs(start), Math.abs(stop))))) specifier.precision = precision - (specifier.type === \"e\");\n      break;\n    }\n    case \"f\":\n    case \"%\": {\n      if (specifier.precision == null && !isNaN(precision = Object(d3_format__WEBPACK_IMPORTED_MODULE_1__[\"precisionFixed\"])(step))) specifier.precision = precision - (specifier.type === \"%\") * 2;\n      break;\n    }\n  }\n  return Object(d3_format__WEBPACK_IMPORTED_MODULE_1__[\"format\"])(specifier);\n}\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvdmVnYS1sYWJlbC9ub2RlX21vZHVsZXMvZDMtc2NhbGUvc3JjL3RpY2tGb3JtYXQuanMuanMiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvdmVnYS1sYWJlbC9ub2RlX21vZHVsZXMvZDMtc2NhbGUvc3JjL3RpY2tGb3JtYXQuanM/N2E0ZSJdLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge3RpY2tTdGVwfSBmcm9tIFwiZDMtYXJyYXlcIjtcbmltcG9ydCB7Zm9ybWF0LCBmb3JtYXRQcmVmaXgsIGZvcm1hdFNwZWNpZmllciwgcHJlY2lzaW9uRml4ZWQsIHByZWNpc2lvblByZWZpeCwgcHJlY2lzaW9uUm91bmR9IGZyb20gXCJkMy1mb3JtYXRcIjtcblxuZXhwb3J0IGRlZmF1bHQgZnVuY3Rpb24gdGlja0Zvcm1hdChzdGFydCwgc3RvcCwgY291bnQsIHNwZWNpZmllcikge1xuICB2YXIgc3RlcCA9IHRpY2tTdGVwKHN0YXJ0LCBzdG9wLCBjb3VudCksXG4gICAgICBwcmVjaXNpb247XG4gIHNwZWNpZmllciA9IGZvcm1hdFNwZWNpZmllcihzcGVjaWZpZXIgPT0gbnVsbCA/IFwiLGZcIiA6IHNwZWNpZmllcik7XG4gIHN3aXRjaCAoc3BlY2lmaWVyLnR5cGUpIHtcbiAgICBjYXNlIFwic1wiOiB7XG4gICAgICB2YXIgdmFsdWUgPSBNYXRoLm1heChNYXRoLmFicyhzdGFydCksIE1hdGguYWJzKHN0b3ApKTtcbiAgICAgIGlmIChzcGVjaWZpZXIucHJlY2lzaW9uID09IG51bGwgJiYgIWlzTmFOKHByZWNpc2lvbiA9IHByZWNpc2lvblByZWZpeChzdGVwLCB2YWx1ZSkpKSBzcGVjaWZpZXIucHJlY2lzaW9uID0gcHJlY2lzaW9uO1xuICAgICAgcmV0dXJuIGZvcm1hdFByZWZpeChzcGVjaWZpZXIsIHZhbHVlKTtcbiAgICB9XG4gICAgY2FzZSBcIlwiOlxuICAgIGNhc2UgXCJlXCI6XG4gICAgY2FzZSBcImdcIjpcbiAgICBjYXNlIFwicFwiOlxuICAgIGNhc2UgXCJyXCI6IHtcbiAgICAgIGlmIChzcGVjaWZpZXIucHJlY2lzaW9uID09IG51bGwgJiYgIWlzTmFOKHByZWNpc2lvbiA9IHByZWNpc2lvblJvdW5kKHN0ZXAsIE1hdGgubWF4KE1hdGguYWJzKHN0YXJ0KSwgTWF0aC5hYnMoc3RvcCkpKSkpIHNwZWNpZmllci5wcmVjaXNpb24gPSBwcmVjaXNpb24gLSAoc3BlY2lmaWVyLnR5cGUgPT09IFwiZVwiKTtcbiAgICAgIGJyZWFrO1xuICAgIH1cbiAgICBjYXNlIFwiZlwiOlxuICAgIGNhc2UgXCIlXCI6IHtcbiAgICAgIGlmIChzcGVjaWZpZXIucHJlY2lzaW9uID09IG51bGwgJiYgIWlzTmFOKHByZWNpc2lvbiA9IHByZWNpc2lvbkZpeGVkKHN0ZXApKSkgc3BlY2lmaWVyLnByZWNpc2lvbiA9IHByZWNpc2lvbiAtIChzcGVjaWZpZXIudHlwZSA9PT0gXCIlXCIpICogMjtcbiAgICAgIGJyZWFrO1xuICAgIH1cbiAgfVxuICByZXR1cm4gZm9ybWF0KHNwZWNpZmllcik7XG59XG4iXSwibWFwcGluZ3MiOiJBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTsiLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///./node_modules/vega-label/node_modules/d3-scale/src/tickFormat.js\n");

/***/ }),

/***/ "./node_modules/vega-label/node_modules/d3-scale/src/time.js":
/*!*******************************************************************!*\
  !*** ./node_modules/vega-label/node_modules/d3-scale/src/time.js ***!
  \*******************************************************************/
/*! exports provided: calendar, default */
/***/ (function(module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"calendar\", function() { return calendar; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"default\", function() { return time; });\n/* harmony import */ var d3_time__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! d3-time */ \"./node_modules/vega-label/node_modules/d3-time/src/index.js\");\n/* harmony import */ var d3_time_format__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! d3-time-format */ \"./node_modules/vega-label/node_modules/d3-time-format/src/index.js\");\n/* harmony import */ var _continuous_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./continuous.js */ \"./node_modules/vega-label/node_modules/d3-scale/src/continuous.js\");\n/* harmony import */ var _init_js__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ./init.js */ \"./node_modules/vega-label/node_modules/d3-scale/src/init.js\");\n/* harmony import */ var _nice_js__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ./nice.js */ \"./node_modules/vega-label/node_modules/d3-scale/src/nice.js\");\n\n\n\n\n\n\nfunction date(t) {\n  return new Date(t);\n}\n\nfunction number(t) {\n  return t instanceof Date ? +t : +new Date(+t);\n}\n\nfunction calendar(ticks, tickInterval, year, month, week, day, hour, minute, second, format) {\n  var scale = Object(_continuous_js__WEBPACK_IMPORTED_MODULE_2__[\"default\"])(),\n      invert = scale.invert,\n      domain = scale.domain;\n\n  var formatMillisecond = format(\".%L\"),\n      formatSecond = format(\":%S\"),\n      formatMinute = format(\"%I:%M\"),\n      formatHour = format(\"%I %p\"),\n      formatDay = format(\"%a %d\"),\n      formatWeek = format(\"%b %d\"),\n      formatMonth = format(\"%B\"),\n      formatYear = format(\"%Y\");\n\n  function tickFormat(date) {\n    return (second(date) < date ? formatMillisecond\n        : minute(date) < date ? formatSecond\n        : hour(date) < date ? formatMinute\n        : day(date) < date ? formatHour\n        : month(date) < date ? (week(date) < date ? formatDay : formatWeek)\n        : year(date) < date ? formatMonth\n        : formatYear)(date);\n  }\n\n  scale.invert = function(y) {\n    return new Date(invert(y));\n  };\n\n  scale.domain = function(_) {\n    return arguments.length ? domain(Array.from(_, number)) : domain().map(date);\n  };\n\n  scale.ticks = function(interval) {\n    var d = domain();\n    return ticks(d[0], d[d.length - 1], interval == null ? 10 : interval);\n  };\n\n  scale.tickFormat = function(count, specifier) {\n    return specifier == null ? tickFormat : format(specifier);\n  };\n\n  scale.nice = function(interval) {\n    var d = domain();\n    if (!interval || typeof interval.range !== \"function\") interval = tickInterval(d[0], d[d.length - 1], interval == null ? 10 : interval);\n    return interval ? domain(Object(_nice_js__WEBPACK_IMPORTED_MODULE_4__[\"default\"])(d, interval)) : scale;\n  };\n\n  scale.copy = function() {\n    return Object(_continuous_js__WEBPACK_IMPORTED_MODULE_2__[\"copy\"])(scale, calendar(ticks, tickInterval, year, month, week, day, hour, minute, second, format));\n  };\n\n  return scale;\n}\n\nfunction time() {\n  return _init_js__WEBPACK_IMPORTED_MODULE_3__[\"initRange\"].apply(calendar(d3_time__WEBPACK_IMPORTED_MODULE_0__[\"timeTicks\"], d3_time__WEBPACK_IMPORTED_MODULE_0__[\"timeTickInterval\"], d3_time__WEBPACK_IMPORTED_MODULE_0__[\"timeYear\"], d3_time__WEBPACK_IMPORTED_MODULE_0__[\"timeMonth\"], d3_time__WEBPACK_IMPORTED_MODULE_0__[\"timeWeek\"], d3_time__WEBPACK_IMPORTED_MODULE_0__[\"timeDay\"], d3_time__WEBPACK_IMPORTED_MODULE_0__[\"timeHour\"], d3_time__WEBPACK_IMPORTED_MODULE_0__[\"timeMinute\"], d3_time__WEBPACK_IMPORTED_MODULE_0__[\"timeSecond\"], d3_time_format__WEBPACK_IMPORTED_MODULE_1__[\"timeFormat\"]).domain([new Date(2000, 0, 1), new Date(2000, 0, 2)]), arguments);\n}\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,[encoded data, 4120 characters]\n//# sourceURL=webpack-internal:///./node_modules/vega-label/node_modules/d3-scale/src/time.js\n");

/***/ }),

/***/ "./node_modules/vega-label/node_modules/d3-scale/src/utcTime.js":
/*!**********************************************************************!*\
  !*** ./node_modules/vega-label/node_modules/d3-scale/src/utcTime.js ***!
  \**********************************************************************/
/*! exports provided: default */
/***/ (function(module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"default\", function() { return utcTime; });\n/* harmony import */ var d3_time__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! d3-time */ \"./node_modules/vega-label/node_modules/d3-time/src/index.js\");\n/* harmony import */ var d3_time_format__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! d3-time-format */ \"./node_modules/vega-label/node_modules/d3-time-format/src/index.js\");\n/* harmony import */ var _time_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./time.js */ \"./node_modules/vega-label/node_modules/d3-scale/src/time.js\");\n/* harmony import */ var _init_js__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ./init.js */ \"./node_modules/vega-label/node_modules/d3-scale/src/init.js\");\n\n\n\n\n\nfunction utcTime() {\n  return _init_js__WEBPACK_IMPORTED_MODULE_3__[\"initRange\"].apply(Object(_time_js__WEBPACK_IMPORTED_MODULE_2__[\"calendar\"])(d3_time__WEBPACK_IMPORTED_MODULE_0__[\"utcTicks\"], d3_time__WEBPACK_IMPORTED_MODULE_0__[\"utcTickInterval\"], d3_time__WEBPACK_IMPORTED_MODULE_0__[\"utcYear\"], d3_time__WEBPACK_IMPORTED_MODULE_0__[\"utcMonth\"], d3_time__WEBPACK_IMPORTED_MODULE_0__[\"utcWeek\"], d3_time__WEBPACK_IMPORTED_MODULE_0__[\"utcDay\"], d3_time__WEBPACK_IMPORTED_MODULE_0__[\"utcHour\"], d3_time__WEBPACK_IMPORTED_MODULE_0__[\"utcMinute\"], d3_time__WEBPACK_IMPORTED_MODULE_0__[\"utcSecond\"], d3_time_format__WEBPACK_IMPORTED_MODULE_1__[\"utcFormat\"]).domain([Date.UTC(2000, 0, 1), Date.UTC(2000, 0, 2)]), arguments);\n}\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvdmVnYS1sYWJlbC9ub2RlX21vZHVsZXMvZDMtc2NhbGUvc3JjL3V0Y1RpbWUuanMuanMiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvdmVnYS1sYWJlbC9ub2RlX21vZHVsZXMvZDMtc2NhbGUvc3JjL3V0Y1RpbWUuanM/YmYyYiJdLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge3V0Y1llYXIsIHV0Y01vbnRoLCB1dGNXZWVrLCB1dGNEYXksIHV0Y0hvdXIsIHV0Y01pbnV0ZSwgdXRjU2Vjb25kLCB1dGNUaWNrcywgdXRjVGlja0ludGVydmFsfSBmcm9tIFwiZDMtdGltZVwiO1xuaW1wb3J0IHt1dGNGb3JtYXR9IGZyb20gXCJkMy10aW1lLWZvcm1hdFwiO1xuaW1wb3J0IHtjYWxlbmRhcn0gZnJvbSBcIi4vdGltZS5qc1wiO1xuaW1wb3J0IHtpbml0UmFuZ2V9IGZyb20gXCIuL2luaXQuanNcIjtcblxuZXhwb3J0IGRlZmF1bHQgZnVuY3Rpb24gdXRjVGltZSgpIHtcbiAgcmV0dXJuIGluaXRSYW5nZS5hcHBseShjYWxlbmRhcih1dGNUaWNrcywgdXRjVGlja0ludGVydmFsLCB1dGNZZWFyLCB1dGNNb250aCwgdXRjV2VlaywgdXRjRGF5LCB1dGNIb3VyLCB1dGNNaW51dGUsIHV0Y1NlY29uZCwgdXRjRm9ybWF0KS5kb21haW4oW0RhdGUuVVRDKDIwMDAsIDAsIDEpLCBEYXRlLlVUQygyMDAwLCAwLCAyKV0pLCBhcmd1bWVudHMpO1xufVxuIl0sIm1hcHBpbmdzIjoiQUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOyIsInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///./node_modules/vega-label/node_modules/d3-scale/src/utcTime.js\n");

/***/ }),

/***/ "./node_modules/vega-label/node_modules/d3-shape/src/arc.js":
/*!******************************************************************!*\
  !*** ./node_modules/vega-label/node_modules/d3-shape/src/arc.js ***!
  \******************************************************************/
/*! exports provided: default */
/***/ (function(module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var d3_path__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! d3-path */ \"./node_modules/vega-label/node_modules/d3-path/src/index.js\");\n/* harmony import */ var _constant_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./constant.js */ \"./node_modules/vega-label/node_modules/d3-shape/src/constant.js\");\n/* harmony import */ var _math_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./math.js */ \"./node_modules/vega-label/node_modules/d3-shape/src/math.js\");\n\n\n\n\nfunction arcInnerRadius(d) {\n  return d.innerRadius;\n}\n\nfunction arcOuterRadius(d) {\n  return d.outerRadius;\n}\n\nfunction arcStartAngle(d) {\n  return d.startAngle;\n}\n\nfunction arcEndAngle(d) {\n  return d.endAngle;\n}\n\nfunction arcPadAngle(d) {\n  return d && d.padAngle; // Note: optional!\n}\n\nfunction intersect(x0, y0, x1, y1, x2, y2, x3, y3) {\n  var x10 = x1 - x0, y10 = y1 - y0,\n      x32 = x3 - x2, y32 = y3 - y2,\n      t = y32 * x10 - x32 * y10;\n  if (t * t < _math_js__WEBPACK_IMPORTED_MODULE_2__[\"epsilon\"]) return;\n  t = (x32 * (y0 - y2) - y32 * (x0 - x2)) / t;\n  return [x0 + t * x10, y0 + t * y10];\n}\n\n// Compute perpendicular offset line of length rc.\n// http://mathworld.wolfram.com/Circle-LineIntersection.html\nfunction cornerTangents(x0, y0, x1, y1, r1, rc, cw) {\n  var x01 = x0 - x1,\n      y01 = y0 - y1,\n      lo = (cw ? rc : -rc) / Object(_math_js__WEBPACK_IMPORTED_MODULE_2__[\"sqrt\"])(x01 * x01 + y01 * y01),\n      ox = lo * y01,\n      oy = -lo * x01,\n      x11 = x0 + ox,\n      y11 = y0 + oy,\n      x10 = x1 + ox,\n      y10 = y1 + oy,\n      x00 = (x11 + x10) / 2,\n      y00 = (y11 + y10) / 2,\n      dx = x10 - x11,\n      dy = y10 - y11,\n      d2 = dx * dx + dy * dy,\n      r = r1 - rc,\n      D = x11 * y10 - x10 * y11,\n      d = (dy < 0 ? -1 : 1) * Object(_math_js__WEBPACK_IMPORTED_MODULE_2__[\"sqrt\"])(Object(_math_js__WEBPACK_IMPORTED_MODULE_2__[\"max\"])(0, r * r * d2 - D * D)),\n      cx0 = (D * dy - dx * d) / d2,\n      cy0 = (-D * dx - dy * d) / d2,\n      cx1 = (D * dy + dx * d) / d2,\n      cy1 = (-D * dx + dy * d) / d2,\n      dx0 = cx0 - x00,\n      dy0 = cy0 - y00,\n      dx1 = cx1 - x00,\n      dy1 = cy1 - y00;\n\n  // Pick the closer of the two intersection points.\n  // TODO Is there a faster way to determine which intersection to use?\n  if (dx0 * dx0 + dy0 * dy0 > dx1 * dx1 + dy1 * dy1) cx0 = cx1, cy0 = cy1;\n\n  return {\n    cx: cx0,\n    cy: cy0,\n    x01: -ox,\n    y01: -oy,\n    x11: cx0 * (r1 / r - 1),\n    y11: cy0 * (r1 / r - 1)\n  };\n}\n\n/* harmony default export */ __webpack_exports__[\"default\"] = (function() {\n  var innerRadius = arcInnerRadius,\n      outerRadius = arcOuterRadius,\n      cornerRadius = Object(_constant_js__WEBPACK_IMPORTED_MODULE_1__[\"default\"])(0),\n      padRadius = null,\n      startAngle = arcStartAngle,\n      endAngle = arcEndAngle,\n      padAngle = arcPadAngle,\n      context = null;\n\n  function arc() {\n    var buffer,\n        r,\n        r0 = +innerRadius.apply(this, arguments),\n        r1 = +outerRadius.apply(this, arguments),\n        a0 = startAngle.apply(this, arguments) - _math_js__WEBPACK_IMPORTED_MODULE_2__[\"halfPi\"],\n        a1 = endAngle.apply(this, arguments) - _math_js__WEBPACK_IMPORTED_MODULE_2__[\"halfPi\"],\n        da = Object(_math_js__WEBPACK_IMPORTED_MODULE_2__[\"abs\"])(a1 - a0),\n        cw = a1 > a0;\n\n    if (!context) context = buffer = Object(d3_path__WEBPACK_IMPORTED_MODULE_0__[\"path\"])();\n\n    // Ensure that the outer radius is always larger than the inner radius.\n    if (r1 < r0) r = r1, r1 = r0, r0 = r;\n\n    // Is it a point?\n    if (!(r1 > _math_js__WEBPACK_IMPORTED_MODULE_2__[\"epsilon\"])) context.moveTo(0, 0);\n\n    // Or is it a circle or annulus?\n    else if (da > _math_js__WEBPACK_IMPORTED_MODULE_2__[\"tau\"] - _math_js__WEBPACK_IMPORTED_MODULE_2__[\"epsilon\"]) {\n      context.moveTo(r1 * Object(_math_js__WEBPACK_IMPORTED_MODULE_2__[\"cos\"])(a0), r1 * Object(_math_js__WEBPACK_IMPORTED_MODULE_2__[\"sin\"])(a0));\n      context.arc(0, 0, r1, a0, a1, !cw);\n      if (r0 > _math_js__WEBPACK_IMPORTED_MODULE_2__[\"epsilon\"]) {\n        context.moveTo(r0 * Object(_math_js__WEBPACK_IMPORTED_MODULE_2__[\"cos\"])(a1), r0 * Object(_math_js__WEBPACK_IMPORTED_MODULE_2__[\"sin\"])(a1));\n        context.arc(0, 0, r0, a1, a0, cw);\n      }\n    }\n\n    // Or is it a circular or annular sector?\n    else {\n      var a01 = a0,\n          a11 = a1,\n          a00 = a0,\n          a10 = a1,\n          da0 = da,\n          da1 = da,\n          ap = padAngle.apply(this, arguments) / 2,\n          rp = (ap > _math_js__WEBPACK_IMPORTED_MODULE_2__[\"epsilon\"]) && (padRadius ? +padRadius.apply(this, arguments) : Object(_math_js__WEBPACK_IMPORTED_MODULE_2__[\"sqrt\"])(r0 * r0 + r1 * r1)),\n          rc = Object(_math_js__WEBPACK_IMPORTED_MODULE_2__[\"min\"])(Object(_math_js__WEBPACK_IMPORTED_MODULE_2__[\"abs\"])(r1 - r0) / 2, +cornerRadius.apply(this, arguments)),\n          rc0 = rc,\n          rc1 = rc,\n          t0,\n          t1;\n\n      // Apply padding? Note that since r1 ≥ r0, da1 ≥ da0.\n      if (rp > _math_js__WEBPACK_IMPORTED_MODULE_2__[\"epsilon\"]) {\n        var p0 = Object(_math_js__WEBPACK_IMPORTED_MODULE_2__[\"asin\"])(rp / r0 * Object(_math_js__WEBPACK_IMPORTED_MODULE_2__[\"sin\"])(ap)),\n            p1 = Object(_math_js__WEBPACK_IMPORTED_MODULE_2__[\"asin\"])(rp / r1 * Object(_math_js__WEBPACK_IMPORTED_MODULE_2__[\"sin\"])(ap));\n        if ((da0 -= p0 * 2) > _math_js__WEBPACK_IMPORTED_MODULE_2__[\"epsilon\"]) p0 *= (cw ? 1 : -1), a00 += p0, a10 -= p0;\n        else da0 = 0, a00 = a10 = (a0 + a1) / 2;\n        if ((da1 -= p1 * 2) > _math_js__WEBPACK_IMPORTED_MODULE_2__[\"epsilon\"]) p1 *= (cw ? 1 : -1), a01 += p1, a11 -= p1;\n        else da1 = 0, a01 = a11 = (a0 + a1) / 2;\n      }\n\n      var x01 = r1 * Object(_math_js__WEBPACK_IMPORTED_MODULE_2__[\"cos\"])(a01),\n          y01 = r1 * Object(_math_js__WEBPACK_IMPORTED_MODULE_2__[\"sin\"])(a01),\n          x10 = r0 * Object(_math_js__WEBPACK_IMPORTED_MODULE_2__[\"cos\"])(a10),\n          y10 = r0 * Object(_math_js__WEBPACK_IMPORTED_MODULE_2__[\"sin\"])(a10);\n\n      // Apply rounded corners?\n      if (rc > _math_js__WEBPACK_IMPORTED_MODULE_2__[\"epsilon\"]) {\n        var x11 = r1 * Object(_math_js__WEBPACK_IMPORTED_MODULE_2__[\"cos\"])(a11),\n            y11 = r1 * Object(_math_js__WEBPACK_IMPORTED_MODULE_2__[\"sin\"])(a11),\n            x00 = r0 * Object(_math_js__WEBPACK_IMPORTED_MODULE_2__[\"cos\"])(a00),\n            y00 = r0 * Object(_math_js__WEBPACK_IMPORTED_MODULE_2__[\"sin\"])(a00),\n            oc;\n\n        // Restrict the corner radius according to the sector angle.\n        if (da < _math_js__WEBPACK_IMPORTED_MODULE_2__[\"pi\"] && (oc = intersect(x01, y01, x00, y00, x11, y11, x10, y10))) {\n          var ax = x01 - oc[0],\n              ay = y01 - oc[1],\n              bx = x11 - oc[0],\n              by = y11 - oc[1],\n              kc = 1 / Object(_math_js__WEBPACK_IMPORTED_MODULE_2__[\"sin\"])(Object(_math_js__WEBPACK_IMPORTED_MODULE_2__[\"acos\"])((ax * bx + ay * by) / (Object(_math_js__WEBPACK_IMPORTED_MODULE_2__[\"sqrt\"])(ax * ax + ay * ay) * Object(_math_js__WEBPACK_IMPORTED_MODULE_2__[\"sqrt\"])(bx * bx + by * by))) / 2),\n              lc = Object(_math_js__WEBPACK_IMPORTED_MODULE_2__[\"sqrt\"])(oc[0] * oc[0] + oc[1] * oc[1]);\n          rc0 = Object(_math_js__WEBPACK_IMPORTED_MODULE_2__[\"min\"])(rc, (r0 - lc) / (kc - 1));\n          rc1 = Object(_math_js__WEBPACK_IMPORTED_MODULE_2__[\"min\"])(rc, (r1 - lc) / (kc + 1));\n        }\n      }\n\n      // Is the sector collapsed to a line?\n      if (!(da1 > _math_js__WEBPACK_IMPORTED_MODULE_2__[\"epsilon\"])) context.moveTo(x01, y01);\n\n      // Does the sector’s outer ring have rounded corners?\n      else if (rc1 > _math_js__WEBPACK_IMPORTED_MODULE_2__[\"epsilon\"]) {\n        t0 = cornerTangents(x00, y00, x01, y01, r1, rc1, cw);\n        t1 = cornerTangents(x11, y11, x10, y10, r1, rc1, cw);\n\n        context.moveTo(t0.cx + t0.x01, t0.cy + t0.y01);\n\n        // Have the corners merged?\n        if (rc1 < rc) context.arc(t0.cx, t0.cy, rc1, Object(_math_js__WEBPACK_IMPORTED_MODULE_2__[\"atan2\"])(t0.y01, t0.x01), Object(_math_js__WEBPACK_IMPORTED_MODULE_2__[\"atan2\"])(t1.y01, t1.x01), !cw);\n\n        // Otherwise, draw the two corners and the ring.\n        else {\n          context.arc(t0.cx, t0.cy, rc1, Object(_math_js__WEBPACK_IMPORTED_MODULE_2__[\"atan2\"])(t0.y01, t0.x01), Object(_math_js__WEBPACK_IMPORTED_MODULE_2__[\"atan2\"])(t0.y11, t0.x11), !cw);\n          context.arc(0, 0, r1, Object(_math_js__WEBPACK_IMPORTED_MODULE_2__[\"atan2\"])(t0.cy + t0.y11, t0.cx + t0.x11), Object(_math_js__WEBPACK_IMPORTED_MODULE_2__[\"atan2\"])(t1.cy + t1.y11, t1.cx + t1.x11), !cw);\n          context.arc(t1.cx, t1.cy, rc1, Object(_math_js__WEBPACK_IMPORTED_MODULE_2__[\"atan2\"])(t1.y11, t1.x11), Object(_math_js__WEBPACK_IMPORTED_MODULE_2__[\"atan2\"])(t1.y01, t1.x01), !cw);\n        }\n      }\n\n      // Or is the outer ring just a circular arc?\n      else context.moveTo(x01, y01), context.arc(0, 0, r1, a01, a11, !cw);\n\n      // Is there no inner ring, and it’s a circular sector?\n      // Or perhaps it’s an annular sector collapsed due to padding?\n      if (!(r0 > _math_js__WEBPACK_IMPORTED_MODULE_2__[\"epsilon\"]) || !(da0 > _math_js__WEBPACK_IMPORTED_MODULE_2__[\"epsilon\"])) context.lineTo(x10, y10);\n\n      // Does the sector’s inner ring (or point) have rounded corners?\n      else if (rc0 > _math_js__WEBPACK_IMPORTED_MODULE_2__[\"epsilon\"]) {\n        t0 = cornerTangents(x10, y10, x11, y11, r0, -rc0, cw);\n        t1 = cornerTangents(x01, y01, x00, y00, r0, -rc0, cw);\n\n        context.lineTo(t0.cx + t0.x01, t0.cy + t0.y01);\n\n        // Have the corners merged?\n        if (rc0 < rc) context.arc(t0.cx, t0.cy, rc0, Object(_math_js__WEBPACK_IMPORTED_MODULE_2__[\"atan2\"])(t0.y01, t0.x01), Object(_math_js__WEBPACK_IMPORTED_MODULE_2__[\"atan2\"])(t1.y01, t1.x01), !cw);\n\n        // Otherwise, draw the two corners and the ring.\n        else {\n          context.arc(t0.cx, t0.cy, rc0, Object(_math_js__WEBPACK_IMPORTED_MODULE_2__[\"atan2\"])(t0.y01, t0.x01), Object(_math_js__WEBPACK_IMPORTED_MODULE_2__[\"atan2\"])(t0.y11, t0.x11), !cw);\n          context.arc(0, 0, r0, Object(_math_js__WEBPACK_IMPORTED_MODULE_2__[\"atan2\"])(t0.cy + t0.y11, t0.cx + t0.x11), Object(_math_js__WEBPACK_IMPORTED_MODULE_2__[\"atan2\"])(t1.cy + t1.y11, t1.cx + t1.x11), cw);\n          context.arc(t1.cx, t1.cy, rc0, Object(_math_js__WEBPACK_IMPORTED_MODULE_2__[\"atan2\"])(t1.y11, t1.x11), Object(_math_js__WEBPACK_IMPORTED_MODULE_2__[\"atan2\"])(t1.y01, t1.x01), !cw);\n        }\n      }\n\n      // Or is the inner ring just a circular arc?\n      else context.arc(0, 0, r0, a10, a00, cw);\n    }\n\n    context.closePath();\n\n    if (buffer) return context = null, buffer + \"\" || null;\n  }\n\n  arc.centroid = function() {\n    var r = (+innerRadius.apply(this, arguments) + +outerRadius.apply(this, arguments)) / 2,\n        a = (+startAngle.apply(this, arguments) + +endAngle.apply(this, arguments)) / 2 - _math_js__WEBPACK_IMPORTED_MODULE_2__[\"pi\"] / 2;\n    return [Object(_math_js__WEBPACK_IMPORTED_MODULE_2__[\"cos\"])(a) * r, Object(_math_js__WEBPACK_IMPORTED_MODULE_2__[\"sin\"])(a) * r];\n  };\n\n  arc.innerRadius = function(_) {\n    return arguments.length ? (innerRadius = typeof _ === \"function\" ? _ : Object(_constant_js__WEBPACK_IMPORTED_MODULE_1__[\"default\"])(+_), arc) : innerRadius;\n  };\n\n  arc.outerRadius = function(_) {\n    return arguments.length ? (outerRadius = typeof _ === \"function\" ? _ : Object(_constant_js__WEBPACK_IMPORTED_MODULE_1__[\"default\"])(+_), arc) : outerRadius;\n  };\n\n  arc.cornerRadius = function(_) {\n    return arguments.length ? (cornerRadius = typeof _ === \"function\" ? _ : Object(_constant_js__WEBPACK_IMPORTED_MODULE_1__[\"default\"])(+_), arc) : cornerRadius;\n  };\n\n  arc.padRadius = function(_) {\n    return arguments.length ? (padRadius = _ == null ? null : typeof _ === \"function\" ? _ : Object(_constant_js__WEBPACK_IMPORTED_MODULE_1__[\"default\"])(+_), arc) : padRadius;\n  };\n\n  arc.startAngle = function(_) {\n    return arguments.length ? (startAngle = typeof _ === \"function\" ? _ : Object(_constant_js__WEBPACK_IMPORTED_MODULE_1__[\"default\"])(+_), arc) : startAngle;\n  };\n\n  arc.endAngle = function(_) {\n    return arguments.length ? (endAngle = typeof _ === \"function\" ? _ : Object(_constant_js__WEBPACK_IMPORTED_MODULE_1__[\"default\"])(+_), arc) : endAngle;\n  };\n\n  arc.padAngle = function(_) {\n    return arguments.length ? (padAngle = typeof _ === \"function\" ? _ : Object(_constant_js__WEBPACK_IMPORTED_MODULE_1__[\"default\"])(+_), arc) : padAngle;\n  };\n\n  arc.context = function(_) {\n    return arguments.length ? ((context = _ == null ? null : _), arc) : context;\n  };\n\n  return arc;\n});\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,[encoded data, 13896 characters]\n//# sourceURL=webpack-internal:///./node_modules/vega-label/node_modules/d3-shape/src/arc.js\n");

/***/ }),

/***/ "./node_modules/vega-label/node_modules/d3-shape/src/area.js":
/*!*******************************************************************!*\
  !*** ./node_modules/vega-label/node_modules/d3-shape/src/area.js ***!
  \*******************************************************************/
/*! exports provided: default */
/***/ (function(module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var d3_path__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! d3-path */ \"./node_modules/vega-label/node_modules/d3-path/src/index.js\");\n/* harmony import */ var _array_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./array.js */ \"./node_modules/vega-label/node_modules/d3-shape/src/array.js\");\n/* harmony import */ var _constant_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./constant.js */ \"./node_modules/vega-label/node_modules/d3-shape/src/constant.js\");\n/* harmony import */ var _curve_linear_js__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ./curve/linear.js */ \"./node_modules/vega-label/node_modules/d3-shape/src/curve/linear.js\");\n/* harmony import */ var _line_js__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ./line.js */ \"./node_modules/vega-label/node_modules/d3-shape/src/line.js\");\n/* harmony import */ var _point_js__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! ./point.js */ \"./node_modules/vega-label/node_modules/d3-shape/src/point.js\");\n\n\n\n\n\n\n\n/* harmony default export */ __webpack_exports__[\"default\"] = (function(x0, y0, y1) {\n  var x1 = null,\n      defined = Object(_constant_js__WEBPACK_IMPORTED_MODULE_2__[\"default\"])(true),\n      context = null,\n      curve = _curve_linear_js__WEBPACK_IMPORTED_MODULE_3__[\"default\"],\n      output = null;\n\n  x0 = typeof x0 === \"function\" ? x0 : (x0 === undefined) ? _point_js__WEBPACK_IMPORTED_MODULE_5__[\"x\"] : Object(_constant_js__WEBPACK_IMPORTED_MODULE_2__[\"default\"])(+x0);\n  y0 = typeof y0 === \"function\" ? y0 : (y0 === undefined) ? Object(_constant_js__WEBPACK_IMPORTED_MODULE_2__[\"default\"])(0) : Object(_constant_js__WEBPACK_IMPORTED_MODULE_2__[\"default\"])(+y0);\n  y1 = typeof y1 === \"function\" ? y1 : (y1 === undefined) ? _point_js__WEBPACK_IMPORTED_MODULE_5__[\"y\"] : Object(_constant_js__WEBPACK_IMPORTED_MODULE_2__[\"default\"])(+y1);\n\n  function area(data) {\n    var i,\n        j,\n        k,\n        n = (data = Object(_array_js__WEBPACK_IMPORTED_MODULE_1__[\"default\"])(data)).length,\n        d,\n        defined0 = false,\n        buffer,\n        x0z = new Array(n),\n        y0z = new Array(n);\n\n    if (context == null) output = curve(buffer = Object(d3_path__WEBPACK_IMPORTED_MODULE_0__[\"path\"])());\n\n    for (i = 0; i <= n; ++i) {\n      if (!(i < n && defined(d = data[i], i, data)) === defined0) {\n        if (defined0 = !defined0) {\n          j = i;\n          output.areaStart();\n          output.lineStart();\n        } else {\n          output.lineEnd();\n          output.lineStart();\n          for (k = i - 1; k >= j; --k) {\n            output.point(x0z[k], y0z[k]);\n          }\n          output.lineEnd();\n          output.areaEnd();\n        }\n      }\n      if (defined0) {\n        x0z[i] = +x0(d, i, data), y0z[i] = +y0(d, i, data);\n        output.point(x1 ? +x1(d, i, data) : x0z[i], y1 ? +y1(d, i, data) : y0z[i]);\n      }\n    }\n\n    if (buffer) return output = null, buffer + \"\" || null;\n  }\n\n  function arealine() {\n    return Object(_line_js__WEBPACK_IMPORTED_MODULE_4__[\"default\"])().defined(defined).curve(curve).context(context);\n  }\n\n  area.x = function(_) {\n    return arguments.length ? (x0 = typeof _ === \"function\" ? _ : Object(_constant_js__WEBPACK_IMPORTED_MODULE_2__[\"default\"])(+_), x1 = null, area) : x0;\n  };\n\n  area.x0 = function(_) {\n    return arguments.length ? (x0 = typeof _ === \"function\" ? _ : Object(_constant_js__WEBPACK_IMPORTED_MODULE_2__[\"default\"])(+_), area) : x0;\n  };\n\n  area.x1 = function(_) {\n    return arguments.length ? (x1 = _ == null ? null : typeof _ === \"function\" ? _ : Object(_constant_js__WEBPACK_IMPORTED_MODULE_2__[\"default\"])(+_), area) : x1;\n  };\n\n  area.y = function(_) {\n    return arguments.length ? (y0 = typeof _ === \"function\" ? _ : Object(_constant_js__WEBPACK_IMPORTED_MODULE_2__[\"default\"])(+_), y1 = null, area) : y0;\n  };\n\n  area.y0 = function(_) {\n    return arguments.length ? (y0 = typeof _ === \"function\" ? _ : Object(_constant_js__WEBPACK_IMPORTED_MODULE_2__[\"default\"])(+_), area) : y0;\n  };\n\n  area.y1 = function(_) {\n    return arguments.length ? (y1 = _ == null ? null : typeof _ === \"function\" ? _ : Object(_constant_js__WEBPACK_IMPORTED_MODULE_2__[\"default\"])(+_), area) : y1;\n  };\n\n  area.lineX0 =\n  area.lineY0 = function() {\n    return arealine().x(x0).y(y0);\n  };\n\n  area.lineY1 = function() {\n    return arealine().x(x0).y(y1);\n  };\n\n  area.lineX1 = function() {\n    return arealine().x(x1).y(y0);\n  };\n\n  area.defined = function(_) {\n    return arguments.length ? (defined = typeof _ === \"function\" ? _ : Object(_constant_js__WEBPACK_IMPORTED_MODULE_2__[\"default\"])(!!_), area) : defined;\n  };\n\n  area.curve = function(_) {\n    return arguments.length ? (curve = _, context != null && (output = curve(context)), area) : curve;\n  };\n\n  area.context = function(_) {\n    return arguments.length ? (_ == null ? context = output = null : output = curve(context = _), area) : context;\n  };\n\n  return area;\n});\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,[encoded data, 5528 characters]\n//# sourceURL=webpack-internal:///./node_modules/vega-label/node_modules/d3-shape/src/area.js\n");

/***/ }),

/***/ "./node_modules/vega-label/node_modules/d3-shape/src/areaRadial.js":
/*!*************************************************************************!*\
  !*** ./node_modules/vega-label/node_modules/d3-shape/src/areaRadial.js ***!
  \*************************************************************************/
/*! exports provided: default */
/***/ (function(module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _curve_radial_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./curve/radial.js */ \"./node_modules/vega-label/node_modules/d3-shape/src/curve/radial.js\");\n/* harmony import */ var _area_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./area.js */ \"./node_modules/vega-label/node_modules/d3-shape/src/area.js\");\n/* harmony import */ var _lineRadial_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./lineRadial.js */ \"./node_modules/vega-label/node_modules/d3-shape/src/lineRadial.js\");\n\n\n\n\n/* harmony default export */ __webpack_exports__[\"default\"] = (function() {\n  var a = Object(_area_js__WEBPACK_IMPORTED_MODULE_1__[\"default\"])().curve(_curve_radial_js__WEBPACK_IMPORTED_MODULE_0__[\"curveRadialLinear\"]),\n      c = a.curve,\n      x0 = a.lineX0,\n      x1 = a.lineX1,\n      y0 = a.lineY0,\n      y1 = a.lineY1;\n\n  a.angle = a.x, delete a.x;\n  a.startAngle = a.x0, delete a.x0;\n  a.endAngle = a.x1, delete a.x1;\n  a.radius = a.y, delete a.y;\n  a.innerRadius = a.y0, delete a.y0;\n  a.outerRadius = a.y1, delete a.y1;\n  a.lineStartAngle = function() { return Object(_lineRadial_js__WEBPACK_IMPORTED_MODULE_2__[\"lineRadial\"])(x0()); }, delete a.lineX0;\n  a.lineEndAngle = function() { return Object(_lineRadial_js__WEBPACK_IMPORTED_MODULE_2__[\"lineRadial\"])(x1()); }, delete a.lineX1;\n  a.lineInnerRadius = function() { return Object(_lineRadial_js__WEBPACK_IMPORTED_MODULE_2__[\"lineRadial\"])(y0()); }, delete a.lineY0;\n  a.lineOuterRadius = function() { return Object(_lineRadial_js__WEBPACK_IMPORTED_MODULE_2__[\"lineRadial\"])(y1()); }, delete a.lineY1;\n\n  a.curve = function(_) {\n    return arguments.length ? c(Object(_curve_radial_js__WEBPACK_IMPORTED_MODULE_0__[\"default\"])(_)) : c()._curve;\n  };\n\n  return a;\n});\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvdmVnYS1sYWJlbC9ub2RlX21vZHVsZXMvZDMtc2hhcGUvc3JjL2FyZWFSYWRpYWwuanMuanMiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvdmVnYS1sYWJlbC9ub2RlX21vZHVsZXMvZDMtc2hhcGUvc3JjL2FyZWFSYWRpYWwuanM/OTAzZSJdLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgY3VydmVSYWRpYWwsIHtjdXJ2ZVJhZGlhbExpbmVhcn0gZnJvbSBcIi4vY3VydmUvcmFkaWFsLmpzXCI7XG5pbXBvcnQgYXJlYSBmcm9tIFwiLi9hcmVhLmpzXCI7XG5pbXBvcnQge2xpbmVSYWRpYWx9IGZyb20gXCIuL2xpbmVSYWRpYWwuanNcIjtcblxuZXhwb3J0IGRlZmF1bHQgZnVuY3Rpb24oKSB7XG4gIHZhciBhID0gYXJlYSgpLmN1cnZlKGN1cnZlUmFkaWFsTGluZWFyKSxcbiAgICAgIGMgPSBhLmN1cnZlLFxuICAgICAgeDAgPSBhLmxpbmVYMCxcbiAgICAgIHgxID0gYS5saW5lWDEsXG4gICAgICB5MCA9IGEubGluZVkwLFxuICAgICAgeTEgPSBhLmxpbmVZMTtcblxuICBhLmFuZ2xlID0gYS54LCBkZWxldGUgYS54O1xuICBhLnN0YXJ0QW5nbGUgPSBhLngwLCBkZWxldGUgYS54MDtcbiAgYS5lbmRBbmdsZSA9IGEueDEsIGRlbGV0ZSBhLngxO1xuICBhLnJhZGl1cyA9IGEueSwgZGVsZXRlIGEueTtcbiAgYS5pbm5lclJhZGl1cyA9IGEueTAsIGRlbGV0ZSBhLnkwO1xuICBhLm91dGVyUmFkaXVzID0gYS55MSwgZGVsZXRlIGEueTE7XG4gIGEubGluZVN0YXJ0QW5nbGUgPSBmdW5jdGlvbigpIHsgcmV0dXJuIGxpbmVSYWRpYWwoeDAoKSk7IH0sIGRlbGV0ZSBhLmxpbmVYMDtcbiAgYS5saW5lRW5kQW5nbGUgPSBmdW5jdGlvbigpIHsgcmV0dXJuIGxpbmVSYWRpYWwoeDEoKSk7IH0sIGRlbGV0ZSBhLmxpbmVYMTtcbiAgYS5saW5lSW5uZXJSYWRpdXMgPSBmdW5jdGlvbigpIHsgcmV0dXJuIGxpbmVSYWRpYWwoeTAoKSk7IH0sIGRlbGV0ZSBhLmxpbmVZMDtcbiAgYS5saW5lT3V0ZXJSYWRpdXMgPSBmdW5jdGlvbigpIHsgcmV0dXJuIGxpbmVSYWRpYWwoeTEoKSk7IH0sIGRlbGV0ZSBhLmxpbmVZMTtcblxuICBhLmN1cnZlID0gZnVuY3Rpb24oXykge1xuICAgIHJldHVybiBhcmd1bWVudHMubGVuZ3RoID8gYyhjdXJ2ZVJhZGlhbChfKSkgOiBjKCkuX2N1cnZlO1xuICB9O1xuXG4gIHJldHVybiBhO1xufVxuIl0sIm1hcHBpbmdzIjoiQUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7Iiwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///./node_modules/vega-label/node_modules/d3-shape/src/areaRadial.js\n");

/***/ }),

/***/ "./node_modules/vega-label/node_modules/d3-shape/src/array.js":
/*!********************************************************************!*\
  !*** ./node_modules/vega-label/node_modules/d3-shape/src/array.js ***!
  \********************************************************************/
/*! exports provided: slice, default */
/***/ (function(module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"slice\", function() { return slice; });\nvar slice = Array.prototype.slice;\n\n/* harmony default export */ __webpack_exports__[\"default\"] = (function(x) {\n  return typeof x === \"object\" && \"length\" in x\n    ? x // Array, TypedArray, NodeList, array-like\n    : Array.from(x); // Map, Set, iterable, string, or anything else\n});\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvdmVnYS1sYWJlbC9ub2RlX21vZHVsZXMvZDMtc2hhcGUvc3JjL2FycmF5LmpzLmpzIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL3ZlZ2EtbGFiZWwvbm9kZV9tb2R1bGVzL2QzLXNoYXBlL3NyYy9hcnJheS5qcz84NzBhIl0sInNvdXJjZXNDb250ZW50IjpbImV4cG9ydCB2YXIgc2xpY2UgPSBBcnJheS5wcm90b3R5cGUuc2xpY2U7XG5cbmV4cG9ydCBkZWZhdWx0IGZ1bmN0aW9uKHgpIHtcbiAgcmV0dXJuIHR5cGVvZiB4ID09PSBcIm9iamVjdFwiICYmIFwibGVuZ3RoXCIgaW4geFxuICAgID8geCAvLyBBcnJheSwgVHlwZWRBcnJheSwgTm9kZUxpc3QsIGFycmF5LWxpa2VcbiAgICA6IEFycmF5LmZyb20oeCk7IC8vIE1hcCwgU2V0LCBpdGVyYWJsZSwgc3RyaW5nLCBvciBhbnl0aGluZyBlbHNlXG59XG4iXSwibWFwcGluZ3MiOiJBQUFBO0FBQUE7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTsiLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///./node_modules/vega-label/node_modules/d3-shape/src/array.js\n");

/***/ }),

/***/ "./node_modules/vega-label/node_modules/d3-shape/src/constant.js":
/*!***********************************************************************!*\
  !*** ./node_modules/vega-label/node_modules/d3-shape/src/constant.js ***!
  \***********************************************************************/
/*! exports provided: default */
/***/ (function(module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony default export */ __webpack_exports__[\"default\"] = (function(x) {\n  return function constant() {\n    return x;\n  };\n});\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvdmVnYS1sYWJlbC9ub2RlX21vZHVsZXMvZDMtc2hhcGUvc3JjL2NvbnN0YW50LmpzLmpzIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL3ZlZ2EtbGFiZWwvbm9kZV9tb2R1bGVzL2QzLXNoYXBlL3NyYy9jb25zdGFudC5qcz81NTE1Il0sInNvdXJjZXNDb250ZW50IjpbImV4cG9ydCBkZWZhdWx0IGZ1bmN0aW9uKHgpIHtcbiAgcmV0dXJuIGZ1bmN0aW9uIGNvbnN0YW50KCkge1xuICAgIHJldHVybiB4O1xuICB9O1xufVxuIl0sIm1hcHBpbmdzIjoiQUFBQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7Iiwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///./node_modules/vega-label/node_modules/d3-shape/src/constant.js\n");

/***/ }),

/***/ "./node_modules/vega-label/node_modules/d3-shape/src/curve/basis.js":
/*!**************************************************************************!*\
  !*** ./node_modules/vega-label/node_modules/d3-shape/src/curve/basis.js ***!
  \**************************************************************************/
/*! exports provided: point, Basis, default */
/***/ (function(module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"point\", function() { return point; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"Basis\", function() { return Basis; });\nfunction point(that, x, y) {\n  that._context.bezierCurveTo(\n    (2 * that._x0 + that._x1) / 3,\n    (2 * that._y0 + that._y1) / 3,\n    (that._x0 + 2 * that._x1) / 3,\n    (that._y0 + 2 * that._y1) / 3,\n    (that._x0 + 4 * that._x1 + x) / 6,\n    (that._y0 + 4 * that._y1 + y) / 6\n  );\n}\n\nfunction Basis(context) {\n  this._context = context;\n}\n\nBasis.prototype = {\n  areaStart: function() {\n    this._line = 0;\n  },\n  areaEnd: function() {\n    this._line = NaN;\n  },\n  lineStart: function() {\n    this._x0 = this._x1 =\n    this._y0 = this._y1 = NaN;\n    this._point = 0;\n  },\n  lineEnd: function() {\n    switch (this._point) {\n      case 3: point(this, this._x1, this._y1); // proceed\n      case 2: this._context.lineTo(this._x1, this._y1); break;\n    }\n    if (this._line || (this._line !== 0 && this._point === 1)) this._context.closePath();\n    this._line = 1 - this._line;\n  },\n  point: function(x, y) {\n    x = +x, y = +y;\n    switch (this._point) {\n      case 0: this._point = 1; this._line ? this._context.lineTo(x, y) : this._context.moveTo(x, y); break;\n      case 1: this._point = 2; break;\n      case 2: this._point = 3; this._context.lineTo((5 * this._x0 + this._x1) / 6, (5 * this._y0 + this._y1) / 6); // proceed\n      default: point(this, x, y); break;\n    }\n    this._x0 = this._x1, this._x1 = x;\n    this._y0 = this._y1, this._y1 = y;\n  }\n};\n\n/* harmony default export */ __webpack_exports__[\"default\"] = (function(context) {\n  return new Basis(context);\n});\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvdmVnYS1sYWJlbC9ub2RlX21vZHVsZXMvZDMtc2hhcGUvc3JjL2N1cnZlL2Jhc2lzLmpzLmpzIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL3ZlZ2EtbGFiZWwvbm9kZV9tb2R1bGVzL2QzLXNoYXBlL3NyYy9jdXJ2ZS9iYXNpcy5qcz8xODljIl0sInNvdXJjZXNDb250ZW50IjpbImV4cG9ydCBmdW5jdGlvbiBwb2ludCh0aGF0LCB4LCB5KSB7XG4gIHRoYXQuX2NvbnRleHQuYmV6aWVyQ3VydmVUbyhcbiAgICAoMiAqIHRoYXQuX3gwICsgdGhhdC5feDEpIC8gMyxcbiAgICAoMiAqIHRoYXQuX3kwICsgdGhhdC5feTEpIC8gMyxcbiAgICAodGhhdC5feDAgKyAyICogdGhhdC5feDEpIC8gMyxcbiAgICAodGhhdC5feTAgKyAyICogdGhhdC5feTEpIC8gMyxcbiAgICAodGhhdC5feDAgKyA0ICogdGhhdC5feDEgKyB4KSAvIDYsXG4gICAgKHRoYXQuX3kwICsgNCAqIHRoYXQuX3kxICsgeSkgLyA2XG4gICk7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBCYXNpcyhjb250ZXh0KSB7XG4gIHRoaXMuX2NvbnRleHQgPSBjb250ZXh0O1xufVxuXG5CYXNpcy5wcm90b3R5cGUgPSB7XG4gIGFyZWFTdGFydDogZnVuY3Rpb24oKSB7XG4gICAgdGhpcy5fbGluZSA9IDA7XG4gIH0sXG4gIGFyZWFFbmQ6IGZ1bmN0aW9uKCkge1xuICAgIHRoaXMuX2xpbmUgPSBOYU47XG4gIH0sXG4gIGxpbmVTdGFydDogZnVuY3Rpb24oKSB7XG4gICAgdGhpcy5feDAgPSB0aGlzLl94MSA9XG4gICAgdGhpcy5feTAgPSB0aGlzLl95MSA9IE5hTjtcbiAgICB0aGlzLl9wb2ludCA9IDA7XG4gIH0sXG4gIGxpbmVFbmQ6IGZ1bmN0aW9uKCkge1xuICAgIHN3aXRjaCAodGhpcy5fcG9pbnQpIHtcbiAgICAgIGNhc2UgMzogcG9pbnQodGhpcywgdGhpcy5feDEsIHRoaXMuX3kxKTsgLy8gcHJvY2VlZFxuICAgICAgY2FzZSAyOiB0aGlzLl9jb250ZXh0LmxpbmVUbyh0aGlzLl94MSwgdGhpcy5feTEpOyBicmVhaztcbiAgICB9XG4gICAgaWYgKHRoaXMuX2xpbmUgfHwgKHRoaXMuX2xpbmUgIT09IDAgJiYgdGhpcy5fcG9pbnQgPT09IDEpKSB0aGlzLl9jb250ZXh0LmNsb3NlUGF0aCgpO1xuICAgIHRoaXMuX2xpbmUgPSAxIC0gdGhpcy5fbGluZTtcbiAgfSxcbiAgcG9pbnQ6IGZ1bmN0aW9uKHgsIHkpIHtcbiAgICB4ID0gK3gsIHkgPSAreTtcbiAgICBzd2l0Y2ggKHRoaXMuX3BvaW50KSB7XG4gICAgICBjYXNlIDA6IHRoaXMuX3BvaW50ID0gMTsgdGhpcy5fbGluZSA/IHRoaXMuX2NvbnRleHQubGluZVRvKHgsIHkpIDogdGhpcy5fY29udGV4dC5tb3ZlVG8oeCwgeSk7IGJyZWFrO1xuICAgICAgY2FzZSAxOiB0aGlzLl9wb2ludCA9IDI7IGJyZWFrO1xuICAgICAgY2FzZSAyOiB0aGlzLl9wb2ludCA9IDM7IHRoaXMuX2NvbnRleHQubGluZVRvKCg1ICogdGhpcy5feDAgKyB0aGlzLl94MSkgLyA2LCAoNSAqIHRoaXMuX3kwICsgdGhpcy5feTEpIC8gNik7IC8vIHByb2NlZWRcbiAgICAgIGRlZmF1bHQ6IHBvaW50KHRoaXMsIHgsIHkpOyBicmVhaztcbiAgICB9XG4gICAgdGhpcy5feDAgPSB0aGlzLl94MSwgdGhpcy5feDEgPSB4O1xuICAgIHRoaXMuX3kwID0gdGhpcy5feTEsIHRoaXMuX3kxID0geTtcbiAgfVxufTtcblxuZXhwb3J0IGRlZmF1bHQgZnVuY3Rpb24oY29udGV4dCkge1xuICByZXR1cm4gbmV3IEJhc2lzKGNvbnRleHQpO1xufVxuIl0sIm1hcHBpbmdzIjoiQUFBQTtBQUFBO0FBQUE7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7Iiwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///./node_modules/vega-label/node_modules/d3-shape/src/curve/basis.js\n");

/***/ }),

/***/ "./node_modules/vega-label/node_modules/d3-shape/src/curve/basisClosed.js":
/*!********************************************************************************!*\
  !*** ./node_modules/vega-label/node_modules/d3-shape/src/curve/basisClosed.js ***!
  \********************************************************************************/
/*! exports provided: default */
/***/ (function(module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _noop_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../noop.js */ \"./node_modules/vega-label/node_modules/d3-shape/src/noop.js\");\n/* harmony import */ var _basis_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./basis.js */ \"./node_modules/vega-label/node_modules/d3-shape/src/curve/basis.js\");\n\n\n\nfunction BasisClosed(context) {\n  this._context = context;\n}\n\nBasisClosed.prototype = {\n  areaStart: _noop_js__WEBPACK_IMPORTED_MODULE_0__[\"default\"],\n  areaEnd: _noop_js__WEBPACK_IMPORTED_MODULE_0__[\"default\"],\n  lineStart: function() {\n    this._x0 = this._x1 = this._x2 = this._x3 = this._x4 =\n    this._y0 = this._y1 = this._y2 = this._y3 = this._y4 = NaN;\n    this._point = 0;\n  },\n  lineEnd: function() {\n    switch (this._point) {\n      case 1: {\n        this._context.moveTo(this._x2, this._y2);\n        this._context.closePath();\n        break;\n      }\n      case 2: {\n        this._context.moveTo((this._x2 + 2 * this._x3) / 3, (this._y2 + 2 * this._y3) / 3);\n        this._context.lineTo((this._x3 + 2 * this._x2) / 3, (this._y3 + 2 * this._y2) / 3);\n        this._context.closePath();\n        break;\n      }\n      case 3: {\n        this.point(this._x2, this._y2);\n        this.point(this._x3, this._y3);\n        this.point(this._x4, this._y4);\n        break;\n      }\n    }\n  },\n  point: function(x, y) {\n    x = +x, y = +y;\n    switch (this._point) {\n      case 0: this._point = 1; this._x2 = x, this._y2 = y; break;\n      case 1: this._point = 2; this._x3 = x, this._y3 = y; break;\n      case 2: this._point = 3; this._x4 = x, this._y4 = y; this._context.moveTo((this._x0 + 4 * this._x1 + x) / 6, (this._y0 + 4 * this._y1 + y) / 6); break;\n      default: Object(_basis_js__WEBPACK_IMPORTED_MODULE_1__[\"point\"])(this, x, y); break;\n    }\n    this._x0 = this._x1, this._x1 = x;\n    this._y0 = this._y1, this._y1 = y;\n  }\n};\n\n/* harmony default export */ __webpack_exports__[\"default\"] = (function(context) {\n  return new BasisClosed(context);\n});\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvdmVnYS1sYWJlbC9ub2RlX21vZHVsZXMvZDMtc2hhcGUvc3JjL2N1cnZlL2Jhc2lzQ2xvc2VkLmpzLmpzIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL3ZlZ2EtbGFiZWwvbm9kZV9tb2R1bGVzL2QzLXNoYXBlL3NyYy9jdXJ2ZS9iYXNpc0Nsb3NlZC5qcz82NzAyIl0sInNvdXJjZXNDb250ZW50IjpbImltcG9ydCBub29wIGZyb20gXCIuLi9ub29wLmpzXCI7XG5pbXBvcnQge3BvaW50fSBmcm9tIFwiLi9iYXNpcy5qc1wiO1xuXG5mdW5jdGlvbiBCYXNpc0Nsb3NlZChjb250ZXh0KSB7XG4gIHRoaXMuX2NvbnRleHQgPSBjb250ZXh0O1xufVxuXG5CYXNpc0Nsb3NlZC5wcm90b3R5cGUgPSB7XG4gIGFyZWFTdGFydDogbm9vcCxcbiAgYXJlYUVuZDogbm9vcCxcbiAgbGluZVN0YXJ0OiBmdW5jdGlvbigpIHtcbiAgICB0aGlzLl94MCA9IHRoaXMuX3gxID0gdGhpcy5feDIgPSB0aGlzLl94MyA9IHRoaXMuX3g0ID1cbiAgICB0aGlzLl95MCA9IHRoaXMuX3kxID0gdGhpcy5feTIgPSB0aGlzLl95MyA9IHRoaXMuX3k0ID0gTmFOO1xuICAgIHRoaXMuX3BvaW50ID0gMDtcbiAgfSxcbiAgbGluZUVuZDogZnVuY3Rpb24oKSB7XG4gICAgc3dpdGNoICh0aGlzLl9wb2ludCkge1xuICAgICAgY2FzZSAxOiB7XG4gICAgICAgIHRoaXMuX2NvbnRleHQubW92ZVRvKHRoaXMuX3gyLCB0aGlzLl95Mik7XG4gICAgICAgIHRoaXMuX2NvbnRleHQuY2xvc2VQYXRoKCk7XG4gICAgICAgIGJyZWFrO1xuICAgICAgfVxuICAgICAgY2FzZSAyOiB7XG4gICAgICAgIHRoaXMuX2NvbnRleHQubW92ZVRvKCh0aGlzLl94MiArIDIgKiB0aGlzLl94MykgLyAzLCAodGhpcy5feTIgKyAyICogdGhpcy5feTMpIC8gMyk7XG4gICAgICAgIHRoaXMuX2NvbnRleHQubGluZVRvKCh0aGlzLl94MyArIDIgKiB0aGlzLl94MikgLyAzLCAodGhpcy5feTMgKyAyICogdGhpcy5feTIpIC8gMyk7XG4gICAgICAgIHRoaXMuX2NvbnRleHQuY2xvc2VQYXRoKCk7XG4gICAgICAgIGJyZWFrO1xuICAgICAgfVxuICAgICAgY2FzZSAzOiB7XG4gICAgICAgIHRoaXMucG9pbnQodGhpcy5feDIsIHRoaXMuX3kyKTtcbiAgICAgICAgdGhpcy5wb2ludCh0aGlzLl94MywgdGhpcy5feTMpO1xuICAgICAgICB0aGlzLnBvaW50KHRoaXMuX3g0LCB0aGlzLl95NCk7XG4gICAgICAgIGJyZWFrO1xuICAgICAgfVxuICAgIH1cbiAgfSxcbiAgcG9pbnQ6IGZ1bmN0aW9uKHgsIHkpIHtcbiAgICB4ID0gK3gsIHkgPSAreTtcbiAgICBzd2l0Y2ggKHRoaXMuX3BvaW50KSB7XG4gICAgICBjYXNlIDA6IHRoaXMuX3BvaW50ID0gMTsgdGhpcy5feDIgPSB4LCB0aGlzLl95MiA9IHk7IGJyZWFrO1xuICAgICAgY2FzZSAxOiB0aGlzLl9wb2ludCA9IDI7IHRoaXMuX3gzID0geCwgdGhpcy5feTMgPSB5OyBicmVhaztcbiAgICAgIGNhc2UgMjogdGhpcy5fcG9pbnQgPSAzOyB0aGlzLl94NCA9IHgsIHRoaXMuX3k0ID0geTsgdGhpcy5fY29udGV4dC5tb3ZlVG8oKHRoaXMuX3gwICsgNCAqIHRoaXMuX3gxICsgeCkgLyA2LCAodGhpcy5feTAgKyA0ICogdGhpcy5feTEgKyB5KSAvIDYpOyBicmVhaztcbiAgICAgIGRlZmF1bHQ6IHBvaW50KHRoaXMsIHgsIHkpOyBicmVhaztcbiAgICB9XG4gICAgdGhpcy5feDAgPSB0aGlzLl94MSwgdGhpcy5feDEgPSB4O1xuICAgIHRoaXMuX3kwID0gdGhpcy5feTEsIHRoaXMuX3kxID0geTtcbiAgfVxufTtcblxuZXhwb3J0IGRlZmF1bHQgZnVuY3Rpb24oY29udGV4dCkge1xuICByZXR1cm4gbmV3IEJhc2lzQ2xvc2VkKGNvbnRleHQpO1xufVxuIl0sIm1hcHBpbmdzIjoiQUFBQTtBQUFBO0FBQUE7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTsiLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///./node_modules/vega-label/node_modules/d3-shape/src/curve/basisClosed.js\n");

/***/ }),

/***/ "./node_modules/vega-label/node_modules/d3-shape/src/curve/basisOpen.js":
/*!******************************************************************************!*\
  !*** ./node_modules/vega-label/node_modules/d3-shape/src/curve/basisOpen.js ***!
  \******************************************************************************/
/*! exports provided: default */
/***/ (function(module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _basis_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./basis.js */ \"./node_modules/vega-label/node_modules/d3-shape/src/curve/basis.js\");\n\n\nfunction BasisOpen(context) {\n  this._context = context;\n}\n\nBasisOpen.prototype = {\n  areaStart: function() {\n    this._line = 0;\n  },\n  areaEnd: function() {\n    this._line = NaN;\n  },\n  lineStart: function() {\n    this._x0 = this._x1 =\n    this._y0 = this._y1 = NaN;\n    this._point = 0;\n  },\n  lineEnd: function() {\n    if (this._line || (this._line !== 0 && this._point === 3)) this._context.closePath();\n    this._line = 1 - this._line;\n  },\n  point: function(x, y) {\n    x = +x, y = +y;\n    switch (this._point) {\n      case 0: this._point = 1; break;\n      case 1: this._point = 2; break;\n      case 2: this._point = 3; var x0 = (this._x0 + 4 * this._x1 + x) / 6, y0 = (this._y0 + 4 * this._y1 + y) / 6; this._line ? this._context.lineTo(x0, y0) : this._context.moveTo(x0, y0); break;\n      case 3: this._point = 4; // proceed\n      default: Object(_basis_js__WEBPACK_IMPORTED_MODULE_0__[\"point\"])(this, x, y); break;\n    }\n    this._x0 = this._x1, this._x1 = x;\n    this._y0 = this._y1, this._y1 = y;\n  }\n};\n\n/* harmony default export */ __webpack_exports__[\"default\"] = (function(context) {\n  return new BasisOpen(context);\n});\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvdmVnYS1sYWJlbC9ub2RlX21vZHVsZXMvZDMtc2hhcGUvc3JjL2N1cnZlL2Jhc2lzT3Blbi5qcy5qcyIsInNvdXJjZXMiOlsid2VicGFjazovLy8uL25vZGVfbW9kdWxlcy92ZWdhLWxhYmVsL25vZGVfbW9kdWxlcy9kMy1zaGFwZS9zcmMvY3VydmUvYmFzaXNPcGVuLmpzPzE3MTkiXSwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtwb2ludH0gZnJvbSBcIi4vYmFzaXMuanNcIjtcblxuZnVuY3Rpb24gQmFzaXNPcGVuKGNvbnRleHQpIHtcbiAgdGhpcy5fY29udGV4dCA9IGNvbnRleHQ7XG59XG5cbkJhc2lzT3Blbi5wcm90b3R5cGUgPSB7XG4gIGFyZWFTdGFydDogZnVuY3Rpb24oKSB7XG4gICAgdGhpcy5fbGluZSA9IDA7XG4gIH0sXG4gIGFyZWFFbmQ6IGZ1bmN0aW9uKCkge1xuICAgIHRoaXMuX2xpbmUgPSBOYU47XG4gIH0sXG4gIGxpbmVTdGFydDogZnVuY3Rpb24oKSB7XG4gICAgdGhpcy5feDAgPSB0aGlzLl94MSA9XG4gICAgdGhpcy5feTAgPSB0aGlzLl95MSA9IE5hTjtcbiAgICB0aGlzLl9wb2ludCA9IDA7XG4gIH0sXG4gIGxpbmVFbmQ6IGZ1bmN0aW9uKCkge1xuICAgIGlmICh0aGlzLl9saW5lIHx8ICh0aGlzLl9saW5lICE9PSAwICYmIHRoaXMuX3BvaW50ID09PSAzKSkgdGhpcy5fY29udGV4dC5jbG9zZVBhdGgoKTtcbiAgICB0aGlzLl9saW5lID0gMSAtIHRoaXMuX2xpbmU7XG4gIH0sXG4gIHBvaW50OiBmdW5jdGlvbih4LCB5KSB7XG4gICAgeCA9ICt4LCB5ID0gK3k7XG4gICAgc3dpdGNoICh0aGlzLl9wb2ludCkge1xuICAgICAgY2FzZSAwOiB0aGlzLl9wb2ludCA9IDE7IGJyZWFrO1xuICAgICAgY2FzZSAxOiB0aGlzLl9wb2ludCA9IDI7IGJyZWFrO1xuICAgICAgY2FzZSAyOiB0aGlzLl9wb2ludCA9IDM7IHZhciB4MCA9ICh0aGlzLl94MCArIDQgKiB0aGlzLl94MSArIHgpIC8gNiwgeTAgPSAodGhpcy5feTAgKyA0ICogdGhpcy5feTEgKyB5KSAvIDY7IHRoaXMuX2xpbmUgPyB0aGlzLl9jb250ZXh0LmxpbmVUbyh4MCwgeTApIDogdGhpcy5fY29udGV4dC5tb3ZlVG8oeDAsIHkwKTsgYnJlYWs7XG4gICAgICBjYXNlIDM6IHRoaXMuX3BvaW50ID0gNDsgLy8gcHJvY2VlZFxuICAgICAgZGVmYXVsdDogcG9pbnQodGhpcywgeCwgeSk7IGJyZWFrO1xuICAgIH1cbiAgICB0aGlzLl94MCA9IHRoaXMuX3gxLCB0aGlzLl94MSA9IHg7XG4gICAgdGhpcy5feTAgPSB0aGlzLl95MSwgdGhpcy5feTEgPSB5O1xuICB9XG59O1xuXG5leHBvcnQgZGVmYXVsdCBmdW5jdGlvbihjb250ZXh0KSB7XG4gIHJldHVybiBuZXcgQmFzaXNPcGVuKGNvbnRleHQpO1xufVxuIl0sIm1hcHBpbmdzIjoiQUFBQTtBQUFBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOyIsInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///./node_modules/vega-label/node_modules/d3-shape/src/curve/basisOpen.js\n");

/***/ }),

/***/ "./node_modules/vega-label/node_modules/d3-shape/src/curve/bump.js":
/*!*************************************************************************!*\
  !*** ./node_modules/vega-label/node_modules/d3-shape/src/curve/bump.js ***!
  \*************************************************************************/
/*! exports provided: bumpX, bumpY */
/***/ (function(module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"bumpX\", function() { return bumpX; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"bumpY\", function() { return bumpY; });\nclass Bump {\n  constructor(context, x) {\n    this._context = context;\n    this._x = x;\n  }\n  areaStart() {\n    this._line = 0;\n  }\n  areaEnd() {\n    this._line = NaN;\n  }\n  lineStart() {\n    this._point = 0;\n  }\n  lineEnd() {\n    if (this._line || (this._line !== 0 && this._point === 1)) this._context.closePath();\n    this._line = 1 - this._line;\n  }\n  point(x, y) {\n    x = +x, y = +y;\n    switch (this._point) {\n      case 0: {\n        this._point = 1;\n        if (this._line) this._context.lineTo(x, y);\n        else this._context.moveTo(x, y);\n        break;\n      }\n      case 1: this._point = 2; // proceed\n      default: {\n        if (this._x) this._context.bezierCurveTo(this._x0 = (this._x0 + x) / 2, this._y0, this._x0, y, x, y);\n        else this._context.bezierCurveTo(this._x0, this._y0 = (this._y0 + y) / 2, x, this._y0, x, y);\n        break;\n      }\n    }\n    this._x0 = x, this._y0 = y;\n  }\n}\n\nfunction bumpX(context) {\n  return new Bump(context, true);\n}\n\nfunction bumpY(context) {\n  return new Bump(context, false);\n}\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvdmVnYS1sYWJlbC9ub2RlX21vZHVsZXMvZDMtc2hhcGUvc3JjL2N1cnZlL2J1bXAuanMuanMiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvdmVnYS1sYWJlbC9ub2RlX21vZHVsZXMvZDMtc2hhcGUvc3JjL2N1cnZlL2J1bXAuanM/MGZkNyJdLCJzb3VyY2VzQ29udGVudCI6WyJjbGFzcyBCdW1wIHtcbiAgY29uc3RydWN0b3IoY29udGV4dCwgeCkge1xuICAgIHRoaXMuX2NvbnRleHQgPSBjb250ZXh0O1xuICAgIHRoaXMuX3ggPSB4O1xuICB9XG4gIGFyZWFTdGFydCgpIHtcbiAgICB0aGlzLl9saW5lID0gMDtcbiAgfVxuICBhcmVhRW5kKCkge1xuICAgIHRoaXMuX2xpbmUgPSBOYU47XG4gIH1cbiAgbGluZVN0YXJ0KCkge1xuICAgIHRoaXMuX3BvaW50ID0gMDtcbiAgfVxuICBsaW5lRW5kKCkge1xuICAgIGlmICh0aGlzLl9saW5lIHx8ICh0aGlzLl9saW5lICE9PSAwICYmIHRoaXMuX3BvaW50ID09PSAxKSkgdGhpcy5fY29udGV4dC5jbG9zZVBhdGgoKTtcbiAgICB0aGlzLl9saW5lID0gMSAtIHRoaXMuX2xpbmU7XG4gIH1cbiAgcG9pbnQoeCwgeSkge1xuICAgIHggPSAreCwgeSA9ICt5O1xuICAgIHN3aXRjaCAodGhpcy5fcG9pbnQpIHtcbiAgICAgIGNhc2UgMDoge1xuICAgICAgICB0aGlzLl9wb2ludCA9IDE7XG4gICAgICAgIGlmICh0aGlzLl9saW5lKSB0aGlzLl9jb250ZXh0LmxpbmVUbyh4LCB5KTtcbiAgICAgICAgZWxzZSB0aGlzLl9jb250ZXh0Lm1vdmVUbyh4LCB5KTtcbiAgICAgICAgYnJlYWs7XG4gICAgICB9XG4gICAgICBjYXNlIDE6IHRoaXMuX3BvaW50ID0gMjsgLy8gcHJvY2VlZFxuICAgICAgZGVmYXVsdDoge1xuICAgICAgICBpZiAodGhpcy5feCkgdGhpcy5fY29udGV4dC5iZXppZXJDdXJ2ZVRvKHRoaXMuX3gwID0gKHRoaXMuX3gwICsgeCkgLyAyLCB0aGlzLl95MCwgdGhpcy5feDAsIHksIHgsIHkpO1xuICAgICAgICBlbHNlIHRoaXMuX2NvbnRleHQuYmV6aWVyQ3VydmVUbyh0aGlzLl94MCwgdGhpcy5feTAgPSAodGhpcy5feTAgKyB5KSAvIDIsIHgsIHRoaXMuX3kwLCB4LCB5KTtcbiAgICAgICAgYnJlYWs7XG4gICAgICB9XG4gICAgfVxuICAgIHRoaXMuX3gwID0geCwgdGhpcy5feTAgPSB5O1xuICB9XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBidW1wWChjb250ZXh0KSB7XG4gIHJldHVybiBuZXcgQnVtcChjb250ZXh0LCB0cnVlKTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGJ1bXBZKGNvbnRleHQpIHtcbiAgcmV0dXJuIG5ldyBCdW1wKGNvbnRleHQsIGZhbHNlKTtcbn1cbiJdLCJtYXBwaW5ncyI6IkFBQUE7QUFBQTtBQUFBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOyIsInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///./node_modules/vega-label/node_modules/d3-shape/src/curve/bump.js\n");

/***/ }),

/***/ "./node_modules/vega-label/node_modules/d3-shape/src/curve/bundle.js":
/*!***************************************************************************!*\
  !*** ./node_modules/vega-label/node_modules/d3-shape/src/curve/bundle.js ***!
  \***************************************************************************/
/*! exports provided: default */
/***/ (function(module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _basis_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./basis.js */ \"./node_modules/vega-label/node_modules/d3-shape/src/curve/basis.js\");\n\n\nfunction Bundle(context, beta) {\n  this._basis = new _basis_js__WEBPACK_IMPORTED_MODULE_0__[\"Basis\"](context);\n  this._beta = beta;\n}\n\nBundle.prototype = {\n  lineStart: function() {\n    this._x = [];\n    this._y = [];\n    this._basis.lineStart();\n  },\n  lineEnd: function() {\n    var x = this._x,\n        y = this._y,\n        j = x.length - 1;\n\n    if (j > 0) {\n      var x0 = x[0],\n          y0 = y[0],\n          dx = x[j] - x0,\n          dy = y[j] - y0,\n          i = -1,\n          t;\n\n      while (++i <= j) {\n        t = i / j;\n        this._basis.point(\n          this._beta * x[i] + (1 - this._beta) * (x0 + t * dx),\n          this._beta * y[i] + (1 - this._beta) * (y0 + t * dy)\n        );\n      }\n    }\n\n    this._x = this._y = null;\n    this._basis.lineEnd();\n  },\n  point: function(x, y) {\n    this._x.push(+x);\n    this._y.push(+y);\n  }\n};\n\n/* harmony default export */ __webpack_exports__[\"default\"] = ((function custom(beta) {\n\n  function bundle(context) {\n    return beta === 1 ? new _basis_js__WEBPACK_IMPORTED_MODULE_0__[\"Basis\"](context) : new Bundle(context, beta);\n  }\n\n  bundle.beta = function(beta) {\n    return custom(+beta);\n  };\n\n  return bundle;\n})(0.85));\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvdmVnYS1sYWJlbC9ub2RlX21vZHVsZXMvZDMtc2hhcGUvc3JjL2N1cnZlL2J1bmRsZS5qcy5qcyIsInNvdXJjZXMiOlsid2VicGFjazovLy8uL25vZGVfbW9kdWxlcy92ZWdhLWxhYmVsL25vZGVfbW9kdWxlcy9kMy1zaGFwZS9zcmMvY3VydmUvYnVuZGxlLmpzP2Q1YjkiXSwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtCYXNpc30gZnJvbSBcIi4vYmFzaXMuanNcIjtcblxuZnVuY3Rpb24gQnVuZGxlKGNvbnRleHQsIGJldGEpIHtcbiAgdGhpcy5fYmFzaXMgPSBuZXcgQmFzaXMoY29udGV4dCk7XG4gIHRoaXMuX2JldGEgPSBiZXRhO1xufVxuXG5CdW5kbGUucHJvdG90eXBlID0ge1xuICBsaW5lU3RhcnQ6IGZ1bmN0aW9uKCkge1xuICAgIHRoaXMuX3ggPSBbXTtcbiAgICB0aGlzLl95ID0gW107XG4gICAgdGhpcy5fYmFzaXMubGluZVN0YXJ0KCk7XG4gIH0sXG4gIGxpbmVFbmQ6IGZ1bmN0aW9uKCkge1xuICAgIHZhciB4ID0gdGhpcy5feCxcbiAgICAgICAgeSA9IHRoaXMuX3ksXG4gICAgICAgIGogPSB4Lmxlbmd0aCAtIDE7XG5cbiAgICBpZiAoaiA+IDApIHtcbiAgICAgIHZhciB4MCA9IHhbMF0sXG4gICAgICAgICAgeTAgPSB5WzBdLFxuICAgICAgICAgIGR4ID0geFtqXSAtIHgwLFxuICAgICAgICAgIGR5ID0geVtqXSAtIHkwLFxuICAgICAgICAgIGkgPSAtMSxcbiAgICAgICAgICB0O1xuXG4gICAgICB3aGlsZSAoKytpIDw9IGopIHtcbiAgICAgICAgdCA9IGkgLyBqO1xuICAgICAgICB0aGlzLl9iYXNpcy5wb2ludChcbiAgICAgICAgICB0aGlzLl9iZXRhICogeFtpXSArICgxIC0gdGhpcy5fYmV0YSkgKiAoeDAgKyB0ICogZHgpLFxuICAgICAgICAgIHRoaXMuX2JldGEgKiB5W2ldICsgKDEgLSB0aGlzLl9iZXRhKSAqICh5MCArIHQgKiBkeSlcbiAgICAgICAgKTtcbiAgICAgIH1cbiAgICB9XG5cbiAgICB0aGlzLl94ID0gdGhpcy5feSA9IG51bGw7XG4gICAgdGhpcy5fYmFzaXMubGluZUVuZCgpO1xuICB9LFxuICBwb2ludDogZnVuY3Rpb24oeCwgeSkge1xuICAgIHRoaXMuX3gucHVzaCgreCk7XG4gICAgdGhpcy5feS5wdXNoKCt5KTtcbiAgfVxufTtcblxuZXhwb3J0IGRlZmF1bHQgKGZ1bmN0aW9uIGN1c3RvbShiZXRhKSB7XG5cbiAgZnVuY3Rpb24gYnVuZGxlKGNvbnRleHQpIHtcbiAgICByZXR1cm4gYmV0YSA9PT0gMSA/IG5ldyBCYXNpcyhjb250ZXh0KSA6IG5ldyBCdW5kbGUoY29udGV4dCwgYmV0YSk7XG4gIH1cblxuICBidW5kbGUuYmV0YSA9IGZ1bmN0aW9uKGJldGEpIHtcbiAgICByZXR1cm4gY3VzdG9tKCtiZXRhKTtcbiAgfTtcblxuICByZXR1cm4gYnVuZGxlO1xufSkoMC44NSk7XG4iXSwibWFwcGluZ3MiOiJBQUFBO0FBQUE7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOyIsInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///./node_modules/vega-label/node_modules/d3-shape/src/curve/bundle.js\n");

/***/ }),

/***/ "./node_modules/vega-label/node_modules/d3-shape/src/curve/cardinal.js":
/*!*****************************************************************************!*\
  !*** ./node_modules/vega-label/node_modules/d3-shape/src/curve/cardinal.js ***!
  \*****************************************************************************/
/*! exports provided: point, Cardinal, default */
/***/ (function(module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"point\", function() { return point; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"Cardinal\", function() { return Cardinal; });\nfunction point(that, x, y) {\n  that._context.bezierCurveTo(\n    that._x1 + that._k * (that._x2 - that._x0),\n    that._y1 + that._k * (that._y2 - that._y0),\n    that._x2 + that._k * (that._x1 - x),\n    that._y2 + that._k * (that._y1 - y),\n    that._x2,\n    that._y2\n  );\n}\n\nfunction Cardinal(context, tension) {\n  this._context = context;\n  this._k = (1 - tension) / 6;\n}\n\nCardinal.prototype = {\n  areaStart: function() {\n    this._line = 0;\n  },\n  areaEnd: function() {\n    this._line = NaN;\n  },\n  lineStart: function() {\n    this._x0 = this._x1 = this._x2 =\n    this._y0 = this._y1 = this._y2 = NaN;\n    this._point = 0;\n  },\n  lineEnd: function() {\n    switch (this._point) {\n      case 2: this._context.lineTo(this._x2, this._y2); break;\n      case 3: point(this, this._x1, this._y1); break;\n    }\n    if (this._line || (this._line !== 0 && this._point === 1)) this._context.closePath();\n    this._line = 1 - this._line;\n  },\n  point: function(x, y) {\n    x = +x, y = +y;\n    switch (this._point) {\n      case 0: this._point = 1; this._line ? this._context.lineTo(x, y) : this._context.moveTo(x, y); break;\n      case 1: this._point = 2; this._x1 = x, this._y1 = y; break;\n      case 2: this._point = 3; // proceed\n      default: point(this, x, y); break;\n    }\n    this._x0 = this._x1, this._x1 = this._x2, this._x2 = x;\n    this._y0 = this._y1, this._y1 = this._y2, this._y2 = y;\n  }\n};\n\n/* harmony default export */ __webpack_exports__[\"default\"] = ((function custom(tension) {\n\n  function cardinal(context) {\n    return new Cardinal(context, tension);\n  }\n\n  cardinal.tension = function(tension) {\n    return custom(+tension);\n  };\n\n  return cardinal;\n})(0));\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvdmVnYS1sYWJlbC9ub2RlX21vZHVsZXMvZDMtc2hhcGUvc3JjL2N1cnZlL2NhcmRpbmFsLmpzLmpzIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL3ZlZ2EtbGFiZWwvbm9kZV9tb2R1bGVzL2QzLXNoYXBlL3NyYy9jdXJ2ZS9jYXJkaW5hbC5qcz82ZjU4Il0sInNvdXJjZXNDb250ZW50IjpbImV4cG9ydCBmdW5jdGlvbiBwb2ludCh0aGF0LCB4LCB5KSB7XG4gIHRoYXQuX2NvbnRleHQuYmV6aWVyQ3VydmVUbyhcbiAgICB0aGF0Ll94MSArIHRoYXQuX2sgKiAodGhhdC5feDIgLSB0aGF0Ll94MCksXG4gICAgdGhhdC5feTEgKyB0aGF0Ll9rICogKHRoYXQuX3kyIC0gdGhhdC5feTApLFxuICAgIHRoYXQuX3gyICsgdGhhdC5fayAqICh0aGF0Ll94MSAtIHgpLFxuICAgIHRoYXQuX3kyICsgdGhhdC5fayAqICh0aGF0Ll95MSAtIHkpLFxuICAgIHRoYXQuX3gyLFxuICAgIHRoYXQuX3kyXG4gICk7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBDYXJkaW5hbChjb250ZXh0LCB0ZW5zaW9uKSB7XG4gIHRoaXMuX2NvbnRleHQgPSBjb250ZXh0O1xuICB0aGlzLl9rID0gKDEgLSB0ZW5zaW9uKSAvIDY7XG59XG5cbkNhcmRpbmFsLnByb3RvdHlwZSA9IHtcbiAgYXJlYVN0YXJ0OiBmdW5jdGlvbigpIHtcbiAgICB0aGlzLl9saW5lID0gMDtcbiAgfSxcbiAgYXJlYUVuZDogZnVuY3Rpb24oKSB7XG4gICAgdGhpcy5fbGluZSA9IE5hTjtcbiAgfSxcbiAgbGluZVN0YXJ0OiBmdW5jdGlvbigpIHtcbiAgICB0aGlzLl94MCA9IHRoaXMuX3gxID0gdGhpcy5feDIgPVxuICAgIHRoaXMuX3kwID0gdGhpcy5feTEgPSB0aGlzLl95MiA9IE5hTjtcbiAgICB0aGlzLl9wb2ludCA9IDA7XG4gIH0sXG4gIGxpbmVFbmQ6IGZ1bmN0aW9uKCkge1xuICAgIHN3aXRjaCAodGhpcy5fcG9pbnQpIHtcbiAgICAgIGNhc2UgMjogdGhpcy5fY29udGV4dC5saW5lVG8odGhpcy5feDIsIHRoaXMuX3kyKTsgYnJlYWs7XG4gICAgICBjYXNlIDM6IHBvaW50KHRoaXMsIHRoaXMuX3gxLCB0aGlzLl95MSk7IGJyZWFrO1xuICAgIH1cbiAgICBpZiAodGhpcy5fbGluZSB8fCAodGhpcy5fbGluZSAhPT0gMCAmJiB0aGlzLl9wb2ludCA9PT0gMSkpIHRoaXMuX2NvbnRleHQuY2xvc2VQYXRoKCk7XG4gICAgdGhpcy5fbGluZSA9IDEgLSB0aGlzLl9saW5lO1xuICB9LFxuICBwb2ludDogZnVuY3Rpb24oeCwgeSkge1xuICAgIHggPSAreCwgeSA9ICt5O1xuICAgIHN3aXRjaCAodGhpcy5fcG9pbnQpIHtcbiAgICAgIGNhc2UgMDogdGhpcy5fcG9pbnQgPSAxOyB0aGlzLl9saW5lID8gdGhpcy5fY29udGV4dC5saW5lVG8oeCwgeSkgOiB0aGlzLl9jb250ZXh0Lm1vdmVUbyh4LCB5KTsgYnJlYWs7XG4gICAgICBjYXNlIDE6IHRoaXMuX3BvaW50ID0gMjsgdGhpcy5feDEgPSB4LCB0aGlzLl95MSA9IHk7IGJyZWFrO1xuICAgICAgY2FzZSAyOiB0aGlzLl9wb2ludCA9IDM7IC8vIHByb2NlZWRcbiAgICAgIGRlZmF1bHQ6IHBvaW50KHRoaXMsIHgsIHkpOyBicmVhaztcbiAgICB9XG4gICAgdGhpcy5feDAgPSB0aGlzLl94MSwgdGhpcy5feDEgPSB0aGlzLl94MiwgdGhpcy5feDIgPSB4O1xuICAgIHRoaXMuX3kwID0gdGhpcy5feTEsIHRoaXMuX3kxID0gdGhpcy5feTIsIHRoaXMuX3kyID0geTtcbiAgfVxufTtcblxuZXhwb3J0IGRlZmF1bHQgKGZ1bmN0aW9uIGN1c3RvbSh0ZW5zaW9uKSB7XG5cbiAgZnVuY3Rpb24gY2FyZGluYWwoY29udGV4dCkge1xuICAgIHJldHVybiBuZXcgQ2FyZGluYWwoY29udGV4dCwgdGVuc2lvbik7XG4gIH1cblxuICBjYXJkaW5hbC50ZW5zaW9uID0gZnVuY3Rpb24odGVuc2lvbikge1xuICAgIHJldHVybiBjdXN0b20oK3RlbnNpb24pO1xuICB9O1xuXG4gIHJldHVybiBjYXJkaW5hbDtcbn0pKDApO1xuIl0sIm1hcHBpbmdzIjoiQUFBQTtBQUFBO0FBQUE7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTsiLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///./node_modules/vega-label/node_modules/d3-shape/src/curve/cardinal.js\n");

/***/ }),

/***/ "./node_modules/vega-label/node_modules/d3-shape/src/curve/cardinalClosed.js":
/*!***********************************************************************************!*\
  !*** ./node_modules/vega-label/node_modules/d3-shape/src/curve/cardinalClosed.js ***!
  \***********************************************************************************/
/*! exports provided: CardinalClosed, default */
/***/ (function(module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"CardinalClosed\", function() { return CardinalClosed; });\n/* harmony import */ var _noop_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../noop.js */ \"./node_modules/vega-label/node_modules/d3-shape/src/noop.js\");\n/* harmony import */ var _cardinal_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./cardinal.js */ \"./node_modules/vega-label/node_modules/d3-shape/src/curve/cardinal.js\");\n\n\n\nfunction CardinalClosed(context, tension) {\n  this._context = context;\n  this._k = (1 - tension) / 6;\n}\n\nCardinalClosed.prototype = {\n  areaStart: _noop_js__WEBPACK_IMPORTED_MODULE_0__[\"default\"],\n  areaEnd: _noop_js__WEBPACK_IMPORTED_MODULE_0__[\"default\"],\n  lineStart: function() {\n    this._x0 = this._x1 = this._x2 = this._x3 = this._x4 = this._x5 =\n    this._y0 = this._y1 = this._y2 = this._y3 = this._y4 = this._y5 = NaN;\n    this._point = 0;\n  },\n  lineEnd: function() {\n    switch (this._point) {\n      case 1: {\n        this._context.moveTo(this._x3, this._y3);\n        this._context.closePath();\n        break;\n      }\n      case 2: {\n        this._context.lineTo(this._x3, this._y3);\n        this._context.closePath();\n        break;\n      }\n      case 3: {\n        this.point(this._x3, this._y3);\n        this.point(this._x4, this._y4);\n        this.point(this._x5, this._y5);\n        break;\n      }\n    }\n  },\n  point: function(x, y) {\n    x = +x, y = +y;\n    switch (this._point) {\n      case 0: this._point = 1; this._x3 = x, this._y3 = y; break;\n      case 1: this._point = 2; this._context.moveTo(this._x4 = x, this._y4 = y); break;\n      case 2: this._point = 3; this._x5 = x, this._y5 = y; break;\n      default: Object(_cardinal_js__WEBPACK_IMPORTED_MODULE_1__[\"point\"])(this, x, y); break;\n    }\n    this._x0 = this._x1, this._x1 = this._x2, this._x2 = x;\n    this._y0 = this._y1, this._y1 = this._y2, this._y2 = y;\n  }\n};\n\n/* harmony default export */ __webpack_exports__[\"default\"] = ((function custom(tension) {\n\n  function cardinal(context) {\n    return new CardinalClosed(context, tension);\n  }\n\n  cardinal.tension = function(tension) {\n    return custom(+tension);\n  };\n\n  return cardinal;\n})(0));\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvdmVnYS1sYWJlbC9ub2RlX21vZHVsZXMvZDMtc2hhcGUvc3JjL2N1cnZlL2NhcmRpbmFsQ2xvc2VkLmpzLmpzIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL3ZlZ2EtbGFiZWwvbm9kZV9tb2R1bGVzL2QzLXNoYXBlL3NyYy9jdXJ2ZS9jYXJkaW5hbENsb3NlZC5qcz80OTZlIl0sInNvdXJjZXNDb250ZW50IjpbImltcG9ydCBub29wIGZyb20gXCIuLi9ub29wLmpzXCI7XG5pbXBvcnQge3BvaW50fSBmcm9tIFwiLi9jYXJkaW5hbC5qc1wiO1xuXG5leHBvcnQgZnVuY3Rpb24gQ2FyZGluYWxDbG9zZWQoY29udGV4dCwgdGVuc2lvbikge1xuICB0aGlzLl9jb250ZXh0ID0gY29udGV4dDtcbiAgdGhpcy5fayA9ICgxIC0gdGVuc2lvbikgLyA2O1xufVxuXG5DYXJkaW5hbENsb3NlZC5wcm90b3R5cGUgPSB7XG4gIGFyZWFTdGFydDogbm9vcCxcbiAgYXJlYUVuZDogbm9vcCxcbiAgbGluZVN0YXJ0OiBmdW5jdGlvbigpIHtcbiAgICB0aGlzLl94MCA9IHRoaXMuX3gxID0gdGhpcy5feDIgPSB0aGlzLl94MyA9IHRoaXMuX3g0ID0gdGhpcy5feDUgPVxuICAgIHRoaXMuX3kwID0gdGhpcy5feTEgPSB0aGlzLl95MiA9IHRoaXMuX3kzID0gdGhpcy5feTQgPSB0aGlzLl95NSA9IE5hTjtcbiAgICB0aGlzLl9wb2ludCA9IDA7XG4gIH0sXG4gIGxpbmVFbmQ6IGZ1bmN0aW9uKCkge1xuICAgIHN3aXRjaCAodGhpcy5fcG9pbnQpIHtcbiAgICAgIGNhc2UgMToge1xuICAgICAgICB0aGlzLl9jb250ZXh0Lm1vdmVUbyh0aGlzLl94MywgdGhpcy5feTMpO1xuICAgICAgICB0aGlzLl9jb250ZXh0LmNsb3NlUGF0aCgpO1xuICAgICAgICBicmVhaztcbiAgICAgIH1cbiAgICAgIGNhc2UgMjoge1xuICAgICAgICB0aGlzLl9jb250ZXh0LmxpbmVUbyh0aGlzLl94MywgdGhpcy5feTMpO1xuICAgICAgICB0aGlzLl9jb250ZXh0LmNsb3NlUGF0aCgpO1xuICAgICAgICBicmVhaztcbiAgICAgIH1cbiAgICAgIGNhc2UgMzoge1xuICAgICAgICB0aGlzLnBvaW50KHRoaXMuX3gzLCB0aGlzLl95Myk7XG4gICAgICAgIHRoaXMucG9pbnQodGhpcy5feDQsIHRoaXMuX3k0KTtcbiAgICAgICAgdGhpcy5wb2ludCh0aGlzLl94NSwgdGhpcy5feTUpO1xuICAgICAgICBicmVhaztcbiAgICAgIH1cbiAgICB9XG4gIH0sXG4gIHBvaW50OiBmdW5jdGlvbih4LCB5KSB7XG4gICAgeCA9ICt4LCB5ID0gK3k7XG4gICAgc3dpdGNoICh0aGlzLl9wb2ludCkge1xuICAgICAgY2FzZSAwOiB0aGlzLl9wb2ludCA9IDE7IHRoaXMuX3gzID0geCwgdGhpcy5feTMgPSB5OyBicmVhaztcbiAgICAgIGNhc2UgMTogdGhpcy5fcG9pbnQgPSAyOyB0aGlzLl9jb250ZXh0Lm1vdmVUbyh0aGlzLl94NCA9IHgsIHRoaXMuX3k0ID0geSk7IGJyZWFrO1xuICAgICAgY2FzZSAyOiB0aGlzLl9wb2ludCA9IDM7IHRoaXMuX3g1ID0geCwgdGhpcy5feTUgPSB5OyBicmVhaztcbiAgICAgIGRlZmF1bHQ6IHBvaW50KHRoaXMsIHgsIHkpOyBicmVhaztcbiAgICB9XG4gICAgdGhpcy5feDAgPSB0aGlzLl94MSwgdGhpcy5feDEgPSB0aGlzLl94MiwgdGhpcy5feDIgPSB4O1xuICAgIHRoaXMuX3kwID0gdGhpcy5feTEsIHRoaXMuX3kxID0gdGhpcy5feTIsIHRoaXMuX3kyID0geTtcbiAgfVxufTtcblxuZXhwb3J0IGRlZmF1bHQgKGZ1bmN0aW9uIGN1c3RvbSh0ZW5zaW9uKSB7XG5cbiAgZnVuY3Rpb24gY2FyZGluYWwoY29udGV4dCkge1xuICAgIHJldHVybiBuZXcgQ2FyZGluYWxDbG9zZWQoY29udGV4dCwgdGVuc2lvbik7XG4gIH1cblxuICBjYXJkaW5hbC50ZW5zaW9uID0gZnVuY3Rpb24odGVuc2lvbikge1xuICAgIHJldHVybiBjdXN0b20oK3RlbnNpb24pO1xuICB9O1xuXG4gIHJldHVybiBjYXJkaW5hbDtcbn0pKDApO1xuIl0sIm1hcHBpbmdzIjoiQUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOyIsInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///./node_modules/vega-label/node_modules/d3-shape/src/curve/cardinalClosed.js\n");

/***/ }),

/***/ "./node_modules/vega-label/node_modules/d3-shape/src/curve/cardinalOpen.js":
/*!*********************************************************************************!*\
  !*** ./node_modules/vega-label/node_modules/d3-shape/src/curve/cardinalOpen.js ***!
  \*********************************************************************************/
/*! exports provided: CardinalOpen, default */
/***/ (function(module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"CardinalOpen\", function() { return CardinalOpen; });\n/* harmony import */ var _cardinal_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./cardinal.js */ \"./node_modules/vega-label/node_modules/d3-shape/src/curve/cardinal.js\");\n\n\nfunction CardinalOpen(context, tension) {\n  this._context = context;\n  this._k = (1 - tension) / 6;\n}\n\nCardinalOpen.prototype = {\n  areaStart: function() {\n    this._line = 0;\n  },\n  areaEnd: function() {\n    this._line = NaN;\n  },\n  lineStart: function() {\n    this._x0 = this._x1 = this._x2 =\n    this._y0 = this._y1 = this._y2 = NaN;\n    this._point = 0;\n  },\n  lineEnd: function() {\n    if (this._line || (this._line !== 0 && this._point === 3)) this._context.closePath();\n    this._line = 1 - this._line;\n  },\n  point: function(x, y) {\n    x = +x, y = +y;\n    switch (this._point) {\n      case 0: this._point = 1; break;\n      case 1: this._point = 2; break;\n      case 2: this._point = 3; this._line ? this._context.lineTo(this._x2, this._y2) : this._context.moveTo(this._x2, this._y2); break;\n      case 3: this._point = 4; // proceed\n      default: Object(_cardinal_js__WEBPACK_IMPORTED_MODULE_0__[\"point\"])(this, x, y); break;\n    }\n    this._x0 = this._x1, this._x1 = this._x2, this._x2 = x;\n    this._y0 = this._y1, this._y1 = this._y2, this._y2 = y;\n  }\n};\n\n/* harmony default export */ __webpack_exports__[\"default\"] = ((function custom(tension) {\n\n  function cardinal(context) {\n    return new CardinalOpen(context, tension);\n  }\n\n  cardinal.tension = function(tension) {\n    return custom(+tension);\n  };\n\n  return cardinal;\n})(0));\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvdmVnYS1sYWJlbC9ub2RlX21vZHVsZXMvZDMtc2hhcGUvc3JjL2N1cnZlL2NhcmRpbmFsT3Blbi5qcy5qcyIsInNvdXJjZXMiOlsid2VicGFjazovLy8uL25vZGVfbW9kdWxlcy92ZWdhLWxhYmVsL25vZGVfbW9kdWxlcy9kMy1zaGFwZS9zcmMvY3VydmUvY2FyZGluYWxPcGVuLmpzP2VjNTgiXSwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtwb2ludH0gZnJvbSBcIi4vY2FyZGluYWwuanNcIjtcblxuZXhwb3J0IGZ1bmN0aW9uIENhcmRpbmFsT3Blbihjb250ZXh0LCB0ZW5zaW9uKSB7XG4gIHRoaXMuX2NvbnRleHQgPSBjb250ZXh0O1xuICB0aGlzLl9rID0gKDEgLSB0ZW5zaW9uKSAvIDY7XG59XG5cbkNhcmRpbmFsT3Blbi5wcm90b3R5cGUgPSB7XG4gIGFyZWFTdGFydDogZnVuY3Rpb24oKSB7XG4gICAgdGhpcy5fbGluZSA9IDA7XG4gIH0sXG4gIGFyZWFFbmQ6IGZ1bmN0aW9uKCkge1xuICAgIHRoaXMuX2xpbmUgPSBOYU47XG4gIH0sXG4gIGxpbmVTdGFydDogZnVuY3Rpb24oKSB7XG4gICAgdGhpcy5feDAgPSB0aGlzLl94MSA9IHRoaXMuX3gyID1cbiAgICB0aGlzLl95MCA9IHRoaXMuX3kxID0gdGhpcy5feTIgPSBOYU47XG4gICAgdGhpcy5fcG9pbnQgPSAwO1xuICB9LFxuICBsaW5lRW5kOiBmdW5jdGlvbigpIHtcbiAgICBpZiAodGhpcy5fbGluZSB8fCAodGhpcy5fbGluZSAhPT0gMCAmJiB0aGlzLl9wb2ludCA9PT0gMykpIHRoaXMuX2NvbnRleHQuY2xvc2VQYXRoKCk7XG4gICAgdGhpcy5fbGluZSA9IDEgLSB0aGlzLl9saW5lO1xuICB9LFxuICBwb2ludDogZnVuY3Rpb24oeCwgeSkge1xuICAgIHggPSAreCwgeSA9ICt5O1xuICAgIHN3aXRjaCAodGhpcy5fcG9pbnQpIHtcbiAgICAgIGNhc2UgMDogdGhpcy5fcG9pbnQgPSAxOyBicmVhaztcbiAgICAgIGNhc2UgMTogdGhpcy5fcG9pbnQgPSAyOyBicmVhaztcbiAgICAgIGNhc2UgMjogdGhpcy5fcG9pbnQgPSAzOyB0aGlzLl9saW5lID8gdGhpcy5fY29udGV4dC5saW5lVG8odGhpcy5feDIsIHRoaXMuX3kyKSA6IHRoaXMuX2NvbnRleHQubW92ZVRvKHRoaXMuX3gyLCB0aGlzLl95Mik7IGJyZWFrO1xuICAgICAgY2FzZSAzOiB0aGlzLl9wb2ludCA9IDQ7IC8vIHByb2NlZWRcbiAgICAgIGRlZmF1bHQ6IHBvaW50KHRoaXMsIHgsIHkpOyBicmVhaztcbiAgICB9XG4gICAgdGhpcy5feDAgPSB0aGlzLl94MSwgdGhpcy5feDEgPSB0aGlzLl94MiwgdGhpcy5feDIgPSB4O1xuICAgIHRoaXMuX3kwID0gdGhpcy5feTEsIHRoaXMuX3kxID0gdGhpcy5feTIsIHRoaXMuX3kyID0geTtcbiAgfVxufTtcblxuZXhwb3J0IGRlZmF1bHQgKGZ1bmN0aW9uIGN1c3RvbSh0ZW5zaW9uKSB7XG5cbiAgZnVuY3Rpb24gY2FyZGluYWwoY29udGV4dCkge1xuICAgIHJldHVybiBuZXcgQ2FyZGluYWxPcGVuKGNvbnRleHQsIHRlbnNpb24pO1xuICB9XG5cbiAgY2FyZGluYWwudGVuc2lvbiA9IGZ1bmN0aW9uKHRlbnNpb24pIHtcbiAgICByZXR1cm4gY3VzdG9tKCt0ZW5zaW9uKTtcbiAgfTtcblxuICByZXR1cm4gY2FyZGluYWw7XG59KSgwKTtcbiJdLCJtYXBwaW5ncyI6IkFBQUE7QUFBQTtBQUFBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7Iiwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///./node_modules/vega-label/node_modules/d3-shape/src/curve/cardinalOpen.js\n");

/***/ }),

/***/ "./node_modules/vega-label/node_modules/d3-shape/src/curve/catmullRom.js":
/*!*******************************************************************************!*\
  !*** ./node_modules/vega-label/node_modules/d3-shape/src/curve/catmullRom.js ***!
  \*******************************************************************************/
/*! exports provided: point, default */
/***/ (function(module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"point\", function() { return point; });\n/* harmony import */ var _math_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../math.js */ \"./node_modules/vega-label/node_modules/d3-shape/src/math.js\");\n/* harmony import */ var _cardinal_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./cardinal.js */ \"./node_modules/vega-label/node_modules/d3-shape/src/curve/cardinal.js\");\n\n\n\nfunction point(that, x, y) {\n  var x1 = that._x1,\n      y1 = that._y1,\n      x2 = that._x2,\n      y2 = that._y2;\n\n  if (that._l01_a > _math_js__WEBPACK_IMPORTED_MODULE_0__[\"epsilon\"]) {\n    var a = 2 * that._l01_2a + 3 * that._l01_a * that._l12_a + that._l12_2a,\n        n = 3 * that._l01_a * (that._l01_a + that._l12_a);\n    x1 = (x1 * a - that._x0 * that._l12_2a + that._x2 * that._l01_2a) / n;\n    y1 = (y1 * a - that._y0 * that._l12_2a + that._y2 * that._l01_2a) / n;\n  }\n\n  if (that._l23_a > _math_js__WEBPACK_IMPORTED_MODULE_0__[\"epsilon\"]) {\n    var b = 2 * that._l23_2a + 3 * that._l23_a * that._l12_a + that._l12_2a,\n        m = 3 * that._l23_a * (that._l23_a + that._l12_a);\n    x2 = (x2 * b + that._x1 * that._l23_2a - x * that._l12_2a) / m;\n    y2 = (y2 * b + that._y1 * that._l23_2a - y * that._l12_2a) / m;\n  }\n\n  that._context.bezierCurveTo(x1, y1, x2, y2, that._x2, that._y2);\n}\n\nfunction CatmullRom(context, alpha) {\n  this._context = context;\n  this._alpha = alpha;\n}\n\nCatmullRom.prototype = {\n  areaStart: function() {\n    this._line = 0;\n  },\n  areaEnd: function() {\n    this._line = NaN;\n  },\n  lineStart: function() {\n    this._x0 = this._x1 = this._x2 =\n    this._y0 = this._y1 = this._y2 = NaN;\n    this._l01_a = this._l12_a = this._l23_a =\n    this._l01_2a = this._l12_2a = this._l23_2a =\n    this._point = 0;\n  },\n  lineEnd: function() {\n    switch (this._point) {\n      case 2: this._context.lineTo(this._x2, this._y2); break;\n      case 3: this.point(this._x2, this._y2); break;\n    }\n    if (this._line || (this._line !== 0 && this._point === 1)) this._context.closePath();\n    this._line = 1 - this._line;\n  },\n  point: function(x, y) {\n    x = +x, y = +y;\n\n    if (this._point) {\n      var x23 = this._x2 - x,\n          y23 = this._y2 - y;\n      this._l23_a = Math.sqrt(this._l23_2a = Math.pow(x23 * x23 + y23 * y23, this._alpha));\n    }\n\n    switch (this._point) {\n      case 0: this._point = 1; this._line ? this._context.lineTo(x, y) : this._context.moveTo(x, y); break;\n      case 1: this._point = 2; break;\n      case 2: this._point = 3; // proceed\n      default: point(this, x, y); break;\n    }\n\n    this._l01_a = this._l12_a, this._l12_a = this._l23_a;\n    this._l01_2a = this._l12_2a, this._l12_2a = this._l23_2a;\n    this._x0 = this._x1, this._x1 = this._x2, this._x2 = x;\n    this._y0 = this._y1, this._y1 = this._y2, this._y2 = y;\n  }\n};\n\n/* harmony default export */ __webpack_exports__[\"default\"] = ((function custom(alpha) {\n\n  function catmullRom(context) {\n    return alpha ? new CatmullRom(context, alpha) : new _cardinal_js__WEBPACK_IMPORTED_MODULE_1__[\"Cardinal\"](context, 0);\n  }\n\n  catmullRom.alpha = function(alpha) {\n    return custom(+alpha);\n  };\n\n  return catmullRom;\n})(0.5));\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,[encoded data, 4596 characters]\n//# sourceURL=webpack-internal:///./node_modules/vega-label/node_modules/d3-shape/src/curve/catmullRom.js\n");

/***/ }),

/***/ "./node_modules/vega-label/node_modules/d3-shape/src/curve/catmullRomClosed.js":
/*!*************************************************************************************!*\
  !*** ./node_modules/vega-label/node_modules/d3-shape/src/curve/catmullRomClosed.js ***!
  \*************************************************************************************/
/*! exports provided: default */
/***/ (function(module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _cardinalClosed_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./cardinalClosed.js */ \"./node_modules/vega-label/node_modules/d3-shape/src/curve/cardinalClosed.js\");\n/* harmony import */ var _noop_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../noop.js */ \"./node_modules/vega-label/node_modules/d3-shape/src/noop.js\");\n/* harmony import */ var _catmullRom_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./catmullRom.js */ \"./node_modules/vega-label/node_modules/d3-shape/src/curve/catmullRom.js\");\n\n\n\n\nfunction CatmullRomClosed(context, alpha) {\n  this._context = context;\n  this._alpha = alpha;\n}\n\nCatmullRomClosed.prototype = {\n  areaStart: _noop_js__WEBPACK_IMPORTED_MODULE_1__[\"default\"],\n  areaEnd: _noop_js__WEBPACK_IMPORTED_MODULE_1__[\"default\"],\n  lineStart: function() {\n    this._x0 = this._x1 = this._x2 = this._x3 = this._x4 = this._x5 =\n    this._y0 = this._y1 = this._y2 = this._y3 = this._y4 = this._y5 = NaN;\n    this._l01_a = this._l12_a = this._l23_a =\n    this._l01_2a = this._l12_2a = this._l23_2a =\n    this._point = 0;\n  },\n  lineEnd: function() {\n    switch (this._point) {\n      case 1: {\n        this._context.moveTo(this._x3, this._y3);\n        this._context.closePath();\n        break;\n      }\n      case 2: {\n        this._context.lineTo(this._x3, this._y3);\n        this._context.closePath();\n        break;\n      }\n      case 3: {\n        this.point(this._x3, this._y3);\n        this.point(this._x4, this._y4);\n        this.point(this._x5, this._y5);\n        break;\n      }\n    }\n  },\n  point: function(x, y) {\n    x = +x, y = +y;\n\n    if (this._point) {\n      var x23 = this._x2 - x,\n          y23 = this._y2 - y;\n      this._l23_a = Math.sqrt(this._l23_2a = Math.pow(x23 * x23 + y23 * y23, this._alpha));\n    }\n\n    switch (this._point) {\n      case 0: this._point = 1; this._x3 = x, this._y3 = y; break;\n      case 1: this._point = 2; this._context.moveTo(this._x4 = x, this._y4 = y); break;\n      case 2: this._point = 3; this._x5 = x, this._y5 = y; break;\n      default: Object(_catmullRom_js__WEBPACK_IMPORTED_MODULE_2__[\"point\"])(this, x, y); break;\n    }\n\n    this._l01_a = this._l12_a, this._l12_a = this._l23_a;\n    this._l01_2a = this._l12_2a, this._l12_2a = this._l23_2a;\n    this._x0 = this._x1, this._x1 = this._x2, this._x2 = x;\n    this._y0 = this._y1, this._y1 = this._y2, this._y2 = y;\n  }\n};\n\n/* harmony default export */ __webpack_exports__[\"default\"] = ((function custom(alpha) {\n\n  function catmullRom(context) {\n    return alpha ? new CatmullRomClosed(context, alpha) : new _cardinalClosed_js__WEBPACK_IMPORTED_MODULE_0__[\"CardinalClosed\"](context, 0);\n  }\n\n  catmullRom.alpha = function(alpha) {\n    return custom(+alpha);\n  };\n\n  return catmullRom;\n})(0.5));\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvdmVnYS1sYWJlbC9ub2RlX21vZHVsZXMvZDMtc2hhcGUvc3JjL2N1cnZlL2NhdG11bGxSb21DbG9zZWQuanMuanMiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvdmVnYS1sYWJlbC9ub2RlX21vZHVsZXMvZDMtc2hhcGUvc3JjL2N1cnZlL2NhdG11bGxSb21DbG9zZWQuanM/MjU2MCJdLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge0NhcmRpbmFsQ2xvc2VkfSBmcm9tIFwiLi9jYXJkaW5hbENsb3NlZC5qc1wiO1xuaW1wb3J0IG5vb3AgZnJvbSBcIi4uL25vb3AuanNcIjtcbmltcG9ydCB7cG9pbnR9IGZyb20gXCIuL2NhdG11bGxSb20uanNcIjtcblxuZnVuY3Rpb24gQ2F0bXVsbFJvbUNsb3NlZChjb250ZXh0LCBhbHBoYSkge1xuICB0aGlzLl9jb250ZXh0ID0gY29udGV4dDtcbiAgdGhpcy5fYWxwaGEgPSBhbHBoYTtcbn1cblxuQ2F0bXVsbFJvbUNsb3NlZC5wcm90b3R5cGUgPSB7XG4gIGFyZWFTdGFydDogbm9vcCxcbiAgYXJlYUVuZDogbm9vcCxcbiAgbGluZVN0YXJ0OiBmdW5jdGlvbigpIHtcbiAgICB0aGlzLl94MCA9IHRoaXMuX3gxID0gdGhpcy5feDIgPSB0aGlzLl94MyA9IHRoaXMuX3g0ID0gdGhpcy5feDUgPVxuICAgIHRoaXMuX3kwID0gdGhpcy5feTEgPSB0aGlzLl95MiA9IHRoaXMuX3kzID0gdGhpcy5feTQgPSB0aGlzLl95NSA9IE5hTjtcbiAgICB0aGlzLl9sMDFfYSA9IHRoaXMuX2wxMl9hID0gdGhpcy5fbDIzX2EgPVxuICAgIHRoaXMuX2wwMV8yYSA9IHRoaXMuX2wxMl8yYSA9IHRoaXMuX2wyM18yYSA9XG4gICAgdGhpcy5fcG9pbnQgPSAwO1xuICB9LFxuICBsaW5lRW5kOiBmdW5jdGlvbigpIHtcbiAgICBzd2l0Y2ggKHRoaXMuX3BvaW50KSB7XG4gICAgICBjYXNlIDE6IHtcbiAgICAgICAgdGhpcy5fY29udGV4dC5tb3ZlVG8odGhpcy5feDMsIHRoaXMuX3kzKTtcbiAgICAgICAgdGhpcy5fY29udGV4dC5jbG9zZVBhdGgoKTtcbiAgICAgICAgYnJlYWs7XG4gICAgICB9XG4gICAgICBjYXNlIDI6IHtcbiAgICAgICAgdGhpcy5fY29udGV4dC5saW5lVG8odGhpcy5feDMsIHRoaXMuX3kzKTtcbiAgICAgICAgdGhpcy5fY29udGV4dC5jbG9zZVBhdGgoKTtcbiAgICAgICAgYnJlYWs7XG4gICAgICB9XG4gICAgICBjYXNlIDM6IHtcbiAgICAgICAgdGhpcy5wb2ludCh0aGlzLl94MywgdGhpcy5feTMpO1xuICAgICAgICB0aGlzLnBvaW50KHRoaXMuX3g0LCB0aGlzLl95NCk7XG4gICAgICAgIHRoaXMucG9pbnQodGhpcy5feDUsIHRoaXMuX3k1KTtcbiAgICAgICAgYnJlYWs7XG4gICAgICB9XG4gICAgfVxuICB9LFxuICBwb2ludDogZnVuY3Rpb24oeCwgeSkge1xuICAgIHggPSAreCwgeSA9ICt5O1xuXG4gICAgaWYgKHRoaXMuX3BvaW50KSB7XG4gICAgICB2YXIgeDIzID0gdGhpcy5feDIgLSB4LFxuICAgICAgICAgIHkyMyA9IHRoaXMuX3kyIC0geTtcbiAgICAgIHRoaXMuX2wyM19hID0gTWF0aC5zcXJ0KHRoaXMuX2wyM18yYSA9IE1hdGgucG93KHgyMyAqIHgyMyArIHkyMyAqIHkyMywgdGhpcy5fYWxwaGEpKTtcbiAgICB9XG5cbiAgICBzd2l0Y2ggKHRoaXMuX3BvaW50KSB7XG4gICAgICBjYXNlIDA6IHRoaXMuX3BvaW50ID0gMTsgdGhpcy5feDMgPSB4LCB0aGlzLl95MyA9IHk7IGJyZWFrO1xuICAgICAgY2FzZSAxOiB0aGlzLl9wb2ludCA9IDI7IHRoaXMuX2NvbnRleHQubW92ZVRvKHRoaXMuX3g0ID0geCwgdGhpcy5feTQgPSB5KTsgYnJlYWs7XG4gICAgICBjYXNlIDI6IHRoaXMuX3BvaW50ID0gMzsgdGhpcy5feDUgPSB4LCB0aGlzLl95NSA9IHk7IGJyZWFrO1xuICAgICAgZGVmYXVsdDogcG9pbnQodGhpcywgeCwgeSk7IGJyZWFrO1xuICAgIH1cblxuICAgIHRoaXMuX2wwMV9hID0gdGhpcy5fbDEyX2EsIHRoaXMuX2wxMl9hID0gdGhpcy5fbDIzX2E7XG4gICAgdGhpcy5fbDAxXzJhID0gdGhpcy5fbDEyXzJhLCB0aGlzLl9sMTJfMmEgPSB0aGlzLl9sMjNfMmE7XG4gICAgdGhpcy5feDAgPSB0aGlzLl94MSwgdGhpcy5feDEgPSB0aGlzLl94MiwgdGhpcy5feDIgPSB4O1xuICAgIHRoaXMuX3kwID0gdGhpcy5feTEsIHRoaXMuX3kxID0gdGhpcy5feTIsIHRoaXMuX3kyID0geTtcbiAgfVxufTtcblxuZXhwb3J0IGRlZmF1bHQgKGZ1bmN0aW9uIGN1c3RvbShhbHBoYSkge1xuXG4gIGZ1bmN0aW9uIGNhdG11bGxSb20oY29udGV4dCkge1xuICAgIHJldHVybiBhbHBoYSA/IG5ldyBDYXRtdWxsUm9tQ2xvc2VkKGNvbnRleHQsIGFscGhhKSA6IG5ldyBDYXJkaW5hbENsb3NlZChjb250ZXh0LCAwKTtcbiAgfVxuXG4gIGNhdG11bGxSb20uYWxwaGEgPSBmdW5jdGlvbihhbHBoYSkge1xuICAgIHJldHVybiBjdXN0b20oK2FscGhhKTtcbiAgfTtcblxuICByZXR1cm4gY2F0bXVsbFJvbTtcbn0pKDAuNSk7XG4iXSwibWFwcGluZ3MiOiJBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTsiLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///./node_modules/vega-label/node_modules/d3-shape/src/curve/catmullRomClosed.js\n");

/***/ }),

/***/ "./node_modules/vega-label/node_modules/d3-shape/src/curve/catmullRomOpen.js":
/*!***********************************************************************************!*\
  !*** ./node_modules/vega-label/node_modules/d3-shape/src/curve/catmullRomOpen.js ***!
  \***********************************************************************************/
/*! exports provided: default */
/***/ (function(module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _cardinalOpen_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./cardinalOpen.js */ \"./node_modules/vega-label/node_modules/d3-shape/src/curve/cardinalOpen.js\");\n/* harmony import */ var _catmullRom_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./catmullRom.js */ \"./node_modules/vega-label/node_modules/d3-shape/src/curve/catmullRom.js\");\n\n\n\nfunction CatmullRomOpen(context, alpha) {\n  this._context = context;\n  this._alpha = alpha;\n}\n\nCatmullRomOpen.prototype = {\n  areaStart: function() {\n    this._line = 0;\n  },\n  areaEnd: function() {\n    this._line = NaN;\n  },\n  lineStart: function() {\n    this._x0 = this._x1 = this._x2 =\n    this._y0 = this._y1 = this._y2 = NaN;\n    this._l01_a = this._l12_a = this._l23_a =\n    this._l01_2a = this._l12_2a = this._l23_2a =\n    this._point = 0;\n  },\n  lineEnd: function() {\n    if (this._line || (this._line !== 0 && this._point === 3)) this._context.closePath();\n    this._line = 1 - this._line;\n  },\n  point: function(x, y) {\n    x = +x, y = +y;\n\n    if (this._point) {\n      var x23 = this._x2 - x,\n          y23 = this._y2 - y;\n      this._l23_a = Math.sqrt(this._l23_2a = Math.pow(x23 * x23 + y23 * y23, this._alpha));\n    }\n\n    switch (this._point) {\n      case 0: this._point = 1; break;\n      case 1: this._point = 2; break;\n      case 2: this._point = 3; this._line ? this._context.lineTo(this._x2, this._y2) : this._context.moveTo(this._x2, this._y2); break;\n      case 3: this._point = 4; // proceed\n      default: Object(_catmullRom_js__WEBPACK_IMPORTED_MODULE_1__[\"point\"])(this, x, y); break;\n    }\n\n    this._l01_a = this._l12_a, this._l12_a = this._l23_a;\n    this._l01_2a = this._l12_2a, this._l12_2a = this._l23_2a;\n    this._x0 = this._x1, this._x1 = this._x2, this._x2 = x;\n    this._y0 = this._y1, this._y1 = this._y2, this._y2 = y;\n  }\n};\n\n/* harmony default export */ __webpack_exports__[\"default\"] = ((function custom(alpha) {\n\n  function catmullRom(context) {\n    return alpha ? new CatmullRomOpen(context, alpha) : new _cardinalOpen_js__WEBPACK_IMPORTED_MODULE_0__[\"CardinalOpen\"](context, 0);\n  }\n\n  catmullRom.alpha = function(alpha) {\n    return custom(+alpha);\n  };\n\n  return catmullRom;\n})(0.5));\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvdmVnYS1sYWJlbC9ub2RlX21vZHVsZXMvZDMtc2hhcGUvc3JjL2N1cnZlL2NhdG11bGxSb21PcGVuLmpzLmpzIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL3ZlZ2EtbGFiZWwvbm9kZV9tb2R1bGVzL2QzLXNoYXBlL3NyYy9jdXJ2ZS9jYXRtdWxsUm9tT3Blbi5qcz9iNWI4Il0sInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7Q2FyZGluYWxPcGVufSBmcm9tIFwiLi9jYXJkaW5hbE9wZW4uanNcIjtcbmltcG9ydCB7cG9pbnR9IGZyb20gXCIuL2NhdG11bGxSb20uanNcIjtcblxuZnVuY3Rpb24gQ2F0bXVsbFJvbU9wZW4oY29udGV4dCwgYWxwaGEpIHtcbiAgdGhpcy5fY29udGV4dCA9IGNvbnRleHQ7XG4gIHRoaXMuX2FscGhhID0gYWxwaGE7XG59XG5cbkNhdG11bGxSb21PcGVuLnByb3RvdHlwZSA9IHtcbiAgYXJlYVN0YXJ0OiBmdW5jdGlvbigpIHtcbiAgICB0aGlzLl9saW5lID0gMDtcbiAgfSxcbiAgYXJlYUVuZDogZnVuY3Rpb24oKSB7XG4gICAgdGhpcy5fbGluZSA9IE5hTjtcbiAgfSxcbiAgbGluZVN0YXJ0OiBmdW5jdGlvbigpIHtcbiAgICB0aGlzLl94MCA9IHRoaXMuX3gxID0gdGhpcy5feDIgPVxuICAgIHRoaXMuX3kwID0gdGhpcy5feTEgPSB0aGlzLl95MiA9IE5hTjtcbiAgICB0aGlzLl9sMDFfYSA9IHRoaXMuX2wxMl9hID0gdGhpcy5fbDIzX2EgPVxuICAgIHRoaXMuX2wwMV8yYSA9IHRoaXMuX2wxMl8yYSA9IHRoaXMuX2wyM18yYSA9XG4gICAgdGhpcy5fcG9pbnQgPSAwO1xuICB9LFxuICBsaW5lRW5kOiBmdW5jdGlvbigpIHtcbiAgICBpZiAodGhpcy5fbGluZSB8fCAodGhpcy5fbGluZSAhPT0gMCAmJiB0aGlzLl9wb2ludCA9PT0gMykpIHRoaXMuX2NvbnRleHQuY2xvc2VQYXRoKCk7XG4gICAgdGhpcy5fbGluZSA9IDEgLSB0aGlzLl9saW5lO1xuICB9LFxuICBwb2ludDogZnVuY3Rpb24oeCwgeSkge1xuICAgIHggPSAreCwgeSA9ICt5O1xuXG4gICAgaWYgKHRoaXMuX3BvaW50KSB7XG4gICAgICB2YXIgeDIzID0gdGhpcy5feDIgLSB4LFxuICAgICAgICAgIHkyMyA9IHRoaXMuX3kyIC0geTtcbiAgICAgIHRoaXMuX2wyM19hID0gTWF0aC5zcXJ0KHRoaXMuX2wyM18yYSA9IE1hdGgucG93KHgyMyAqIHgyMyArIHkyMyAqIHkyMywgdGhpcy5fYWxwaGEpKTtcbiAgICB9XG5cbiAgICBzd2l0Y2ggKHRoaXMuX3BvaW50KSB7XG4gICAgICBjYXNlIDA6IHRoaXMuX3BvaW50ID0gMTsgYnJlYWs7XG4gICAgICBjYXNlIDE6IHRoaXMuX3BvaW50ID0gMjsgYnJlYWs7XG4gICAgICBjYXNlIDI6IHRoaXMuX3BvaW50ID0gMzsgdGhpcy5fbGluZSA/IHRoaXMuX2NvbnRleHQubGluZVRvKHRoaXMuX3gyLCB0aGlzLl95MikgOiB0aGlzLl9jb250ZXh0Lm1vdmVUbyh0aGlzLl94MiwgdGhpcy5feTIpOyBicmVhaztcbiAgICAgIGNhc2UgMzogdGhpcy5fcG9pbnQgPSA0OyAvLyBwcm9jZWVkXG4gICAgICBkZWZhdWx0OiBwb2ludCh0aGlzLCB4LCB5KTsgYnJlYWs7XG4gICAgfVxuXG4gICAgdGhpcy5fbDAxX2EgPSB0aGlzLl9sMTJfYSwgdGhpcy5fbDEyX2EgPSB0aGlzLl9sMjNfYTtcbiAgICB0aGlzLl9sMDFfMmEgPSB0aGlzLl9sMTJfMmEsIHRoaXMuX2wxMl8yYSA9IHRoaXMuX2wyM18yYTtcbiAgICB0aGlzLl94MCA9IHRoaXMuX3gxLCB0aGlzLl94MSA9IHRoaXMuX3gyLCB0aGlzLl94MiA9IHg7XG4gICAgdGhpcy5feTAgPSB0aGlzLl95MSwgdGhpcy5feTEgPSB0aGlzLl95MiwgdGhpcy5feTIgPSB5O1xuICB9XG59O1xuXG5leHBvcnQgZGVmYXVsdCAoZnVuY3Rpb24gY3VzdG9tKGFscGhhKSB7XG5cbiAgZnVuY3Rpb24gY2F0bXVsbFJvbShjb250ZXh0KSB7XG4gICAgcmV0dXJuIGFscGhhID8gbmV3IENhdG11bGxSb21PcGVuKGNvbnRleHQsIGFscGhhKSA6IG5ldyBDYXJkaW5hbE9wZW4oY29udGV4dCwgMCk7XG4gIH1cblxuICBjYXRtdWxsUm9tLmFscGhhID0gZnVuY3Rpb24oYWxwaGEpIHtcbiAgICByZXR1cm4gY3VzdG9tKCthbHBoYSk7XG4gIH07XG5cbiAgcmV0dXJuIGNhdG11bGxSb207XG59KSgwLjUpO1xuIl0sIm1hcHBpbmdzIjoiQUFBQTtBQUFBO0FBQUE7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOyIsInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///./node_modules/vega-label/node_modules/d3-shape/src/curve/catmullRomOpen.js\n");

/***/ }),

/***/ "./node_modules/vega-label/node_modules/d3-shape/src/curve/linear.js":
/*!***************************************************************************!*\
  !*** ./node_modules/vega-label/node_modules/d3-shape/src/curve/linear.js ***!
  \***************************************************************************/
/*! exports provided: default */
/***/ (function(module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\nfunction Linear(context) {\n  this._context = context;\n}\n\nLinear.prototype = {\n  areaStart: function() {\n    this._line = 0;\n  },\n  areaEnd: function() {\n    this._line = NaN;\n  },\n  lineStart: function() {\n    this._point = 0;\n  },\n  lineEnd: function() {\n    if (this._line || (this._line !== 0 && this._point === 1)) this._context.closePath();\n    this._line = 1 - this._line;\n  },\n  point: function(x, y) {\n    x = +x, y = +y;\n    switch (this._point) {\n      case 0: this._point = 1; this._line ? this._context.lineTo(x, y) : this._context.moveTo(x, y); break;\n      case 1: this._point = 2; // proceed\n      default: this._context.lineTo(x, y); break;\n    }\n  }\n};\n\n/* harmony default export */ __webpack_exports__[\"default\"] = (function(context) {\n  return new Linear(context);\n});\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvdmVnYS1sYWJlbC9ub2RlX21vZHVsZXMvZDMtc2hhcGUvc3JjL2N1cnZlL2xpbmVhci5qcy5qcyIsInNvdXJjZXMiOlsid2VicGFjazovLy8uL25vZGVfbW9kdWxlcy92ZWdhLWxhYmVsL25vZGVfbW9kdWxlcy9kMy1zaGFwZS9zcmMvY3VydmUvbGluZWFyLmpzPzlmNzgiXSwic291cmNlc0NvbnRlbnQiOlsiZnVuY3Rpb24gTGluZWFyKGNvbnRleHQpIHtcbiAgdGhpcy5fY29udGV4dCA9IGNvbnRleHQ7XG59XG5cbkxpbmVhci5wcm90b3R5cGUgPSB7XG4gIGFyZWFTdGFydDogZnVuY3Rpb24oKSB7XG4gICAgdGhpcy5fbGluZSA9IDA7XG4gIH0sXG4gIGFyZWFFbmQ6IGZ1bmN0aW9uKCkge1xuICAgIHRoaXMuX2xpbmUgPSBOYU47XG4gIH0sXG4gIGxpbmVTdGFydDogZnVuY3Rpb24oKSB7XG4gICAgdGhpcy5fcG9pbnQgPSAwO1xuICB9LFxuICBsaW5lRW5kOiBmdW5jdGlvbigpIHtcbiAgICBpZiAodGhpcy5fbGluZSB8fCAodGhpcy5fbGluZSAhPT0gMCAmJiB0aGlzLl9wb2ludCA9PT0gMSkpIHRoaXMuX2NvbnRleHQuY2xvc2VQYXRoKCk7XG4gICAgdGhpcy5fbGluZSA9IDEgLSB0aGlzLl9saW5lO1xuICB9LFxuICBwb2ludDogZnVuY3Rpb24oeCwgeSkge1xuICAgIHggPSAreCwgeSA9ICt5O1xuICAgIHN3aXRjaCAodGhpcy5fcG9pbnQpIHtcbiAgICAgIGNhc2UgMDogdGhpcy5fcG9pbnQgPSAxOyB0aGlzLl9saW5lID8gdGhpcy5fY29udGV4dC5saW5lVG8oeCwgeSkgOiB0aGlzLl9jb250ZXh0Lm1vdmVUbyh4LCB5KTsgYnJlYWs7XG4gICAgICBjYXNlIDE6IHRoaXMuX3BvaW50ID0gMjsgLy8gcHJvY2VlZFxuICAgICAgZGVmYXVsdDogdGhpcy5fY29udGV4dC5saW5lVG8oeCwgeSk7IGJyZWFrO1xuICAgIH1cbiAgfVxufTtcblxuZXhwb3J0IGRlZmF1bHQgZnVuY3Rpb24oY29udGV4dCkge1xuICByZXR1cm4gbmV3IExpbmVhcihjb250ZXh0KTtcbn1cbiJdLCJtYXBwaW5ncyI6IkFBQUE7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTsiLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///./node_modules/vega-label/node_modules/d3-shape/src/curve/linear.js\n");

/***/ }),

/***/ "./node_modules/vega-label/node_modules/d3-shape/src/curve/linearClosed.js":
/*!*********************************************************************************!*\
  !*** ./node_modules/vega-label/node_modules/d3-shape/src/curve/linearClosed.js ***!
  \*********************************************************************************/
/*! exports provided: default */
/***/ (function(module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _noop_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../noop.js */ \"./node_modules/vega-label/node_modules/d3-shape/src/noop.js\");\n\n\nfunction LinearClosed(context) {\n  this._context = context;\n}\n\nLinearClosed.prototype = {\n  areaStart: _noop_js__WEBPACK_IMPORTED_MODULE_0__[\"default\"],\n  areaEnd: _noop_js__WEBPACK_IMPORTED_MODULE_0__[\"default\"],\n  lineStart: function() {\n    this._point = 0;\n  },\n  lineEnd: function() {\n    if (this._point) this._context.closePath();\n  },\n  point: function(x, y) {\n    x = +x, y = +y;\n    if (this._point) this._context.lineTo(x, y);\n    else this._point = 1, this._context.moveTo(x, y);\n  }\n};\n\n/* harmony default export */ __webpack_exports__[\"default\"] = (function(context) {\n  return new LinearClosed(context);\n});\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvdmVnYS1sYWJlbC9ub2RlX21vZHVsZXMvZDMtc2hhcGUvc3JjL2N1cnZlL2xpbmVhckNsb3NlZC5qcy5qcyIsInNvdXJjZXMiOlsid2VicGFjazovLy8uL25vZGVfbW9kdWxlcy92ZWdhLWxhYmVsL25vZGVfbW9kdWxlcy9kMy1zaGFwZS9zcmMvY3VydmUvbGluZWFyQ2xvc2VkLmpzPzU4NmEiXSwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IG5vb3AgZnJvbSBcIi4uL25vb3AuanNcIjtcblxuZnVuY3Rpb24gTGluZWFyQ2xvc2VkKGNvbnRleHQpIHtcbiAgdGhpcy5fY29udGV4dCA9IGNvbnRleHQ7XG59XG5cbkxpbmVhckNsb3NlZC5wcm90b3R5cGUgPSB7XG4gIGFyZWFTdGFydDogbm9vcCxcbiAgYXJlYUVuZDogbm9vcCxcbiAgbGluZVN0YXJ0OiBmdW5jdGlvbigpIHtcbiAgICB0aGlzLl9wb2ludCA9IDA7XG4gIH0sXG4gIGxpbmVFbmQ6IGZ1bmN0aW9uKCkge1xuICAgIGlmICh0aGlzLl9wb2ludCkgdGhpcy5fY29udGV4dC5jbG9zZVBhdGgoKTtcbiAgfSxcbiAgcG9pbnQ6IGZ1bmN0aW9uKHgsIHkpIHtcbiAgICB4ID0gK3gsIHkgPSAreTtcbiAgICBpZiAodGhpcy5fcG9pbnQpIHRoaXMuX2NvbnRleHQubGluZVRvKHgsIHkpO1xuICAgIGVsc2UgdGhpcy5fcG9pbnQgPSAxLCB0aGlzLl9jb250ZXh0Lm1vdmVUbyh4LCB5KTtcbiAgfVxufTtcblxuZXhwb3J0IGRlZmF1bHQgZnVuY3Rpb24oY29udGV4dCkge1xuICByZXR1cm4gbmV3IExpbmVhckNsb3NlZChjb250ZXh0KTtcbn1cbiJdLCJtYXBwaW5ncyI6IkFBQUE7QUFBQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOyIsInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///./node_modules/vega-label/node_modules/d3-shape/src/curve/linearClosed.js\n");

/***/ }),

/***/ "./node_modules/vega-label/node_modules/d3-shape/src/curve/monotone.js":
/*!*****************************************************************************!*\
  !*** ./node_modules/vega-label/node_modules/d3-shape/src/curve/monotone.js ***!
  \*****************************************************************************/
/*! exports provided: monotoneX, monotoneY */
/***/ (function(module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"monotoneX\", function() { return monotoneX; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"monotoneY\", function() { return monotoneY; });\nfunction sign(x) {\n  return x < 0 ? -1 : 1;\n}\n\n// Calculate the slopes of the tangents (Hermite-type interpolation) based on\n// the following paper: Steffen, M. 1990. A Simple Method for Monotonic\n// Interpolation in One Dimension. Astronomy and Astrophysics, Vol. 239, NO.\n// NOV(II), P. 443, 1990.\nfunction slope3(that, x2, y2) {\n  var h0 = that._x1 - that._x0,\n      h1 = x2 - that._x1,\n      s0 = (that._y1 - that._y0) / (h0 || h1 < 0 && -0),\n      s1 = (y2 - that._y1) / (h1 || h0 < 0 && -0),\n      p = (s0 * h1 + s1 * h0) / (h0 + h1);\n  return (sign(s0) + sign(s1)) * Math.min(Math.abs(s0), Math.abs(s1), 0.5 * Math.abs(p)) || 0;\n}\n\n// Calculate a one-sided slope.\nfunction slope2(that, t) {\n  var h = that._x1 - that._x0;\n  return h ? (3 * (that._y1 - that._y0) / h - t) / 2 : t;\n}\n\n// According to https://en.wikipedia.org/wiki/Cubic_Hermite_spline#Representations\n// \"you can express cubic Hermite interpolation in terms of cubic Bézier curves\n// with respect to the four values p0, p0 + m0 / 3, p1 - m1 / 3, p1\".\nfunction point(that, t0, t1) {\n  var x0 = that._x0,\n      y0 = that._y0,\n      x1 = that._x1,\n      y1 = that._y1,\n      dx = (x1 - x0) / 3;\n  that._context.bezierCurveTo(x0 + dx, y0 + dx * t0, x1 - dx, y1 - dx * t1, x1, y1);\n}\n\nfunction MonotoneX(context) {\n  this._context = context;\n}\n\nMonotoneX.prototype = {\n  areaStart: function() {\n    this._line = 0;\n  },\n  areaEnd: function() {\n    this._line = NaN;\n  },\n  lineStart: function() {\n    this._x0 = this._x1 =\n    this._y0 = this._y1 =\n    this._t0 = NaN;\n    this._point = 0;\n  },\n  lineEnd: function() {\n    switch (this._point) {\n      case 2: this._context.lineTo(this._x1, this._y1); break;\n      case 3: point(this, this._t0, slope2(this, this._t0)); break;\n    }\n    if (this._line || (this._line !== 0 && this._point === 1)) this._context.closePath();\n    this._line = 1 - this._line;\n  },\n  point: function(x, y) {\n    var t1 = NaN;\n\n    x = +x, y = +y;\n    if (x === this._x1 && y === this._y1) return; // Ignore coincident points.\n    switch (this._point) {\n      case 0: this._point = 1; this._line ? this._context.lineTo(x, y) : this._context.moveTo(x, y); break;\n      case 1: this._point = 2; break;\n      case 2: this._point = 3; point(this, slope2(this, t1 = slope3(this, x, y)), t1); break;\n      default: point(this, this._t0, t1 = slope3(this, x, y)); break;\n    }\n\n    this._x0 = this._x1, this._x1 = x;\n    this._y0 = this._y1, this._y1 = y;\n    this._t0 = t1;\n  }\n}\n\nfunction MonotoneY(context) {\n  this._context = new ReflectContext(context);\n}\n\n(MonotoneY.prototype = Object.create(MonotoneX.prototype)).point = function(x, y) {\n  MonotoneX.prototype.point.call(this, y, x);\n};\n\nfunction ReflectContext(context) {\n  this._context = context;\n}\n\nReflectContext.prototype = {\n  moveTo: function(x, y) { this._context.moveTo(y, x); },\n  closePath: function() { this._context.closePath(); },\n  lineTo: function(x, y) { this._context.lineTo(y, x); },\n  bezierCurveTo: function(x1, y1, x2, y2, x, y) { this._context.bezierCurveTo(y1, x1, y2, x2, y, x); }\n};\n\nfunction monotoneX(context) {\n  return new MonotoneX(context);\n}\n\nfunction monotoneY(context) {\n  return new MonotoneY(context);\n}\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,[encoded data, 5456 characters]\n//# sourceURL=webpack-internal:///./node_modules/vega-label/node_modules/d3-shape/src/curve/monotone.js\n");

/***/ }),

/***/ "./node_modules/vega-label/node_modules/d3-shape/src/curve/natural.js":
/*!****************************************************************************!*\
  !*** ./node_modules/vega-label/node_modules/d3-shape/src/curve/natural.js ***!
  \****************************************************************************/
/*! exports provided: default */
/***/ (function(module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\nfunction Natural(context) {\n  this._context = context;\n}\n\nNatural.prototype = {\n  areaStart: function() {\n    this._line = 0;\n  },\n  areaEnd: function() {\n    this._line = NaN;\n  },\n  lineStart: function() {\n    this._x = [];\n    this._y = [];\n  },\n  lineEnd: function() {\n    var x = this._x,\n        y = this._y,\n        n = x.length;\n\n    if (n) {\n      this._line ? this._context.lineTo(x[0], y[0]) : this._context.moveTo(x[0], y[0]);\n      if (n === 2) {\n        this._context.lineTo(x[1], y[1]);\n      } else {\n        var px = controlPoints(x),\n            py = controlPoints(y);\n        for (var i0 = 0, i1 = 1; i1 < n; ++i0, ++i1) {\n          this._context.bezierCurveTo(px[0][i0], py[0][i0], px[1][i0], py[1][i0], x[i1], y[i1]);\n        }\n      }\n    }\n\n    if (this._line || (this._line !== 0 && n === 1)) this._context.closePath();\n    this._line = 1 - this._line;\n    this._x = this._y = null;\n  },\n  point: function(x, y) {\n    this._x.push(+x);\n    this._y.push(+y);\n  }\n};\n\n// See https://www.particleincell.com/2012/bezier-splines/ for derivation.\nfunction controlPoints(x) {\n  var i,\n      n = x.length - 1,\n      m,\n      a = new Array(n),\n      b = new Array(n),\n      r = new Array(n);\n  a[0] = 0, b[0] = 2, r[0] = x[0] + 2 * x[1];\n  for (i = 1; i < n - 1; ++i) a[i] = 1, b[i] = 4, r[i] = 4 * x[i] + 2 * x[i + 1];\n  a[n - 1] = 2, b[n - 1] = 7, r[n - 1] = 8 * x[n - 1] + x[n];\n  for (i = 1; i < n; ++i) m = a[i] / b[i - 1], b[i] -= m, r[i] -= m * r[i - 1];\n  a[n - 1] = r[n - 1] / b[n - 1];\n  for (i = n - 2; i >= 0; --i) a[i] = (r[i] - a[i + 1]) / b[i];\n  b[n - 1] = (x[n] + a[n - 1]) / 2;\n  for (i = 0; i < n - 1; ++i) b[i] = 2 * x[i + 1] - a[i + 1];\n  return [a, b];\n}\n\n/* harmony default export */ __webpack_exports__[\"default\"] = (function(context) {\n  return new Natural(context);\n});\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvdmVnYS1sYWJlbC9ub2RlX21vZHVsZXMvZDMtc2hhcGUvc3JjL2N1cnZlL25hdHVyYWwuanMuanMiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvdmVnYS1sYWJlbC9ub2RlX21vZHVsZXMvZDMtc2hhcGUvc3JjL2N1cnZlL25hdHVyYWwuanM/YWUzMyJdLCJzb3VyY2VzQ29udGVudCI6WyJmdW5jdGlvbiBOYXR1cmFsKGNvbnRleHQpIHtcbiAgdGhpcy5fY29udGV4dCA9IGNvbnRleHQ7XG59XG5cbk5hdHVyYWwucHJvdG90eXBlID0ge1xuICBhcmVhU3RhcnQ6IGZ1bmN0aW9uKCkge1xuICAgIHRoaXMuX2xpbmUgPSAwO1xuICB9LFxuICBhcmVhRW5kOiBmdW5jdGlvbigpIHtcbiAgICB0aGlzLl9saW5lID0gTmFOO1xuICB9LFxuICBsaW5lU3RhcnQ6IGZ1bmN0aW9uKCkge1xuICAgIHRoaXMuX3ggPSBbXTtcbiAgICB0aGlzLl95ID0gW107XG4gIH0sXG4gIGxpbmVFbmQ6IGZ1bmN0aW9uKCkge1xuICAgIHZhciB4ID0gdGhpcy5feCxcbiAgICAgICAgeSA9IHRoaXMuX3ksXG4gICAgICAgIG4gPSB4Lmxlbmd0aDtcblxuICAgIGlmIChuKSB7XG4gICAgICB0aGlzLl9saW5lID8gdGhpcy5fY29udGV4dC5saW5lVG8oeFswXSwgeVswXSkgOiB0aGlzLl9jb250ZXh0Lm1vdmVUbyh4WzBdLCB5WzBdKTtcbiAgICAgIGlmIChuID09PSAyKSB7XG4gICAgICAgIHRoaXMuX2NvbnRleHQubGluZVRvKHhbMV0sIHlbMV0pO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgdmFyIHB4ID0gY29udHJvbFBvaW50cyh4KSxcbiAgICAgICAgICAgIHB5ID0gY29udHJvbFBvaW50cyh5KTtcbiAgICAgICAgZm9yICh2YXIgaTAgPSAwLCBpMSA9IDE7IGkxIDwgbjsgKytpMCwgKytpMSkge1xuICAgICAgICAgIHRoaXMuX2NvbnRleHQuYmV6aWVyQ3VydmVUbyhweFswXVtpMF0sIHB5WzBdW2kwXSwgcHhbMV1baTBdLCBweVsxXVtpMF0sIHhbaTFdLCB5W2kxXSk7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9XG5cbiAgICBpZiAodGhpcy5fbGluZSB8fCAodGhpcy5fbGluZSAhPT0gMCAmJiBuID09PSAxKSkgdGhpcy5fY29udGV4dC5jbG9zZVBhdGgoKTtcbiAgICB0aGlzLl9saW5lID0gMSAtIHRoaXMuX2xpbmU7XG4gICAgdGhpcy5feCA9IHRoaXMuX3kgPSBudWxsO1xuICB9LFxuICBwb2ludDogZnVuY3Rpb24oeCwgeSkge1xuICAgIHRoaXMuX3gucHVzaCgreCk7XG4gICAgdGhpcy5feS5wdXNoKCt5KTtcbiAgfVxufTtcblxuLy8gU2VlIGh0dHBzOi8vd3d3LnBhcnRpY2xlaW5jZWxsLmNvbS8yMDEyL2Jlemllci1zcGxpbmVzLyBmb3IgZGVyaXZhdGlvbi5cbmZ1bmN0aW9uIGNvbnRyb2xQb2ludHMoeCkge1xuICB2YXIgaSxcbiAgICAgIG4gPSB4Lmxlbmd0aCAtIDEsXG4gICAgICBtLFxuICAgICAgYSA9IG5ldyBBcnJheShuKSxcbiAgICAgIGIgPSBuZXcgQXJyYXkobiksXG4gICAgICByID0gbmV3IEFycmF5KG4pO1xuICBhWzBdID0gMCwgYlswXSA9IDIsIHJbMF0gPSB4WzBdICsgMiAqIHhbMV07XG4gIGZvciAoaSA9IDE7IGkgPCBuIC0gMTsgKytpKSBhW2ldID0gMSwgYltpXSA9IDQsIHJbaV0gPSA0ICogeFtpXSArIDIgKiB4W2kgKyAxXTtcbiAgYVtuIC0gMV0gPSAyLCBiW24gLSAxXSA9IDcsIHJbbiAtIDFdID0gOCAqIHhbbiAtIDFdICsgeFtuXTtcbiAgZm9yIChpID0gMTsgaSA8IG47ICsraSkgbSA9IGFbaV0gLyBiW2kgLSAxXSwgYltpXSAtPSBtLCByW2ldIC09IG0gKiByW2kgLSAxXTtcbiAgYVtuIC0gMV0gPSByW24gLSAxXSAvIGJbbiAtIDFdO1xuICBmb3IgKGkgPSBuIC0gMjsgaSA+PSAwOyAtLWkpIGFbaV0gPSAocltpXSAtIGFbaSArIDFdKSAvIGJbaV07XG4gIGJbbiAtIDFdID0gKHhbbl0gKyBhW24gLSAxXSkgLyAyO1xuICBmb3IgKGkgPSAwOyBpIDwgbiAtIDE7ICsraSkgYltpXSA9IDIgKiB4W2kgKyAxXSAtIGFbaSArIDFdO1xuICByZXR1cm4gW2EsIGJdO1xufVxuXG5leHBvcnQgZGVmYXVsdCBmdW5jdGlvbihjb250ZXh0KSB7XG4gIHJldHVybiBuZXcgTmF0dXJhbChjb250ZXh0KTtcbn1cbiJdLCJtYXBwaW5ncyI6IkFBQUE7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOyIsInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///./node_modules/vega-label/node_modules/d3-shape/src/curve/natural.js\n");

/***/ }),

/***/ "./node_modules/vega-label/node_modules/d3-shape/src/curve/radial.js":
/*!***************************************************************************!*\
  !*** ./node_modules/vega-label/node_modules/d3-shape/src/curve/radial.js ***!
  \***************************************************************************/
/*! exports provided: curveRadialLinear, default */
/***/ (function(module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"curveRadialLinear\", function() { return curveRadialLinear; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"default\", function() { return curveRadial; });\n/* harmony import */ var _linear_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./linear.js */ \"./node_modules/vega-label/node_modules/d3-shape/src/curve/linear.js\");\n\n\nvar curveRadialLinear = curveRadial(_linear_js__WEBPACK_IMPORTED_MODULE_0__[\"default\"]);\n\nfunction Radial(curve) {\n  this._curve = curve;\n}\n\nRadial.prototype = {\n  areaStart: function() {\n    this._curve.areaStart();\n  },\n  areaEnd: function() {\n    this._curve.areaEnd();\n  },\n  lineStart: function() {\n    this._curve.lineStart();\n  },\n  lineEnd: function() {\n    this._curve.lineEnd();\n  },\n  point: function(a, r) {\n    this._curve.point(r * Math.sin(a), r * -Math.cos(a));\n  }\n};\n\nfunction curveRadial(curve) {\n\n  function radial(context) {\n    return new Radial(curve(context));\n  }\n\n  radial._curve = curve;\n\n  return radial;\n}\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvdmVnYS1sYWJlbC9ub2RlX21vZHVsZXMvZDMtc2hhcGUvc3JjL2N1cnZlL3JhZGlhbC5qcy5qcyIsInNvdXJjZXMiOlsid2VicGFjazovLy8uL25vZGVfbW9kdWxlcy92ZWdhLWxhYmVsL25vZGVfbW9kdWxlcy9kMy1zaGFwZS9zcmMvY3VydmUvcmFkaWFsLmpzP2QwN2MiXSwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IGN1cnZlTGluZWFyIGZyb20gXCIuL2xpbmVhci5qc1wiO1xuXG5leHBvcnQgdmFyIGN1cnZlUmFkaWFsTGluZWFyID0gY3VydmVSYWRpYWwoY3VydmVMaW5lYXIpO1xuXG5mdW5jdGlvbiBSYWRpYWwoY3VydmUpIHtcbiAgdGhpcy5fY3VydmUgPSBjdXJ2ZTtcbn1cblxuUmFkaWFsLnByb3RvdHlwZSA9IHtcbiAgYXJlYVN0YXJ0OiBmdW5jdGlvbigpIHtcbiAgICB0aGlzLl9jdXJ2ZS5hcmVhU3RhcnQoKTtcbiAgfSxcbiAgYXJlYUVuZDogZnVuY3Rpb24oKSB7XG4gICAgdGhpcy5fY3VydmUuYXJlYUVuZCgpO1xuICB9LFxuICBsaW5lU3RhcnQ6IGZ1bmN0aW9uKCkge1xuICAgIHRoaXMuX2N1cnZlLmxpbmVTdGFydCgpO1xuICB9LFxuICBsaW5lRW5kOiBmdW5jdGlvbigpIHtcbiAgICB0aGlzLl9jdXJ2ZS5saW5lRW5kKCk7XG4gIH0sXG4gIHBvaW50OiBmdW5jdGlvbihhLCByKSB7XG4gICAgdGhpcy5fY3VydmUucG9pbnQociAqIE1hdGguc2luKGEpLCByICogLU1hdGguY29zKGEpKTtcbiAgfVxufTtcblxuZXhwb3J0IGRlZmF1bHQgZnVuY3Rpb24gY3VydmVSYWRpYWwoY3VydmUpIHtcblxuICBmdW5jdGlvbiByYWRpYWwoY29udGV4dCkge1xuICAgIHJldHVybiBuZXcgUmFkaWFsKGN1cnZlKGNvbnRleHQpKTtcbiAgfVxuXG4gIHJhZGlhbC5fY3VydmUgPSBjdXJ2ZTtcblxuICByZXR1cm4gcmFkaWFsO1xufVxuIl0sIm1hcHBpbmdzIjoiQUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTsiLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///./node_modules/vega-label/node_modules/d3-shape/src/curve/radial.js\n");

/***/ }),

/***/ "./node_modules/vega-label/node_modules/d3-shape/src/curve/step.js":
/*!*************************************************************************!*\
  !*** ./node_modules/vega-label/node_modules/d3-shape/src/curve/step.js ***!
  \*************************************************************************/
/*! exports provided: default, stepBefore, stepAfter */
/***/ (function(module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"stepBefore\", function() { return stepBefore; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"stepAfter\", function() { return stepAfter; });\nfunction Step(context, t) {\n  this._context = context;\n  this._t = t;\n}\n\nStep.prototype = {\n  areaStart: function() {\n    this._line = 0;\n  },\n  areaEnd: function() {\n    this._line = NaN;\n  },\n  lineStart: function() {\n    this._x = this._y = NaN;\n    this._point = 0;\n  },\n  lineEnd: function() {\n    if (0 < this._t && this._t < 1 && this._point === 2) this._context.lineTo(this._x, this._y);\n    if (this._line || (this._line !== 0 && this._point === 1)) this._context.closePath();\n    if (this._line >= 0) this._t = 1 - this._t, this._line = 1 - this._line;\n  },\n  point: function(x, y) {\n    x = +x, y = +y;\n    switch (this._point) {\n      case 0: this._point = 1; this._line ? this._context.lineTo(x, y) : this._context.moveTo(x, y); break;\n      case 1: this._point = 2; // proceed\n      default: {\n        if (this._t <= 0) {\n          this._context.lineTo(this._x, y);\n          this._context.lineTo(x, y);\n        } else {\n          var x1 = this._x * (1 - this._t) + x * this._t;\n          this._context.lineTo(x1, this._y);\n          this._context.lineTo(x1, y);\n        }\n        break;\n      }\n    }\n    this._x = x, this._y = y;\n  }\n};\n\n/* harmony default export */ __webpack_exports__[\"default\"] = (function(context) {\n  return new Step(context, 0.5);\n});\n\nfunction stepBefore(context) {\n  return new Step(context, 0);\n}\n\nfunction stepAfter(context) {\n  return new Step(context, 1);\n}\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvdmVnYS1sYWJlbC9ub2RlX21vZHVsZXMvZDMtc2hhcGUvc3JjL2N1cnZlL3N0ZXAuanMuanMiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvdmVnYS1sYWJlbC9ub2RlX21vZHVsZXMvZDMtc2hhcGUvc3JjL2N1cnZlL3N0ZXAuanM/ZGI1YyJdLCJzb3VyY2VzQ29udGVudCI6WyJmdW5jdGlvbiBTdGVwKGNvbnRleHQsIHQpIHtcbiAgdGhpcy5fY29udGV4dCA9IGNvbnRleHQ7XG4gIHRoaXMuX3QgPSB0O1xufVxuXG5TdGVwLnByb3RvdHlwZSA9IHtcbiAgYXJlYVN0YXJ0OiBmdW5jdGlvbigpIHtcbiAgICB0aGlzLl9saW5lID0gMDtcbiAgfSxcbiAgYXJlYUVuZDogZnVuY3Rpb24oKSB7XG4gICAgdGhpcy5fbGluZSA9IE5hTjtcbiAgfSxcbiAgbGluZVN0YXJ0OiBmdW5jdGlvbigpIHtcbiAgICB0aGlzLl94ID0gdGhpcy5feSA9IE5hTjtcbiAgICB0aGlzLl9wb2ludCA9IDA7XG4gIH0sXG4gIGxpbmVFbmQ6IGZ1bmN0aW9uKCkge1xuICAgIGlmICgwIDwgdGhpcy5fdCAmJiB0aGlzLl90IDwgMSAmJiB0aGlzLl9wb2ludCA9PT0gMikgdGhpcy5fY29udGV4dC5saW5lVG8odGhpcy5feCwgdGhpcy5feSk7XG4gICAgaWYgKHRoaXMuX2xpbmUgfHwgKHRoaXMuX2xpbmUgIT09IDAgJiYgdGhpcy5fcG9pbnQgPT09IDEpKSB0aGlzLl9jb250ZXh0LmNsb3NlUGF0aCgpO1xuICAgIGlmICh0aGlzLl9saW5lID49IDApIHRoaXMuX3QgPSAxIC0gdGhpcy5fdCwgdGhpcy5fbGluZSA9IDEgLSB0aGlzLl9saW5lO1xuICB9LFxuICBwb2ludDogZnVuY3Rpb24oeCwgeSkge1xuICAgIHggPSAreCwgeSA9ICt5O1xuICAgIHN3aXRjaCAodGhpcy5fcG9pbnQpIHtcbiAgICAgIGNhc2UgMDogdGhpcy5fcG9pbnQgPSAxOyB0aGlzLl9saW5lID8gdGhpcy5fY29udGV4dC5saW5lVG8oeCwgeSkgOiB0aGlzLl9jb250ZXh0Lm1vdmVUbyh4LCB5KTsgYnJlYWs7XG4gICAgICBjYXNlIDE6IHRoaXMuX3BvaW50ID0gMjsgLy8gcHJvY2VlZFxuICAgICAgZGVmYXVsdDoge1xuICAgICAgICBpZiAodGhpcy5fdCA8PSAwKSB7XG4gICAgICAgICAgdGhpcy5fY29udGV4dC5saW5lVG8odGhpcy5feCwgeSk7XG4gICAgICAgICAgdGhpcy5fY29udGV4dC5saW5lVG8oeCwgeSk7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgdmFyIHgxID0gdGhpcy5feCAqICgxIC0gdGhpcy5fdCkgKyB4ICogdGhpcy5fdDtcbiAgICAgICAgICB0aGlzLl9jb250ZXh0LmxpbmVUbyh4MSwgdGhpcy5feSk7XG4gICAgICAgICAgdGhpcy5fY29udGV4dC5saW5lVG8oeDEsIHkpO1xuICAgICAgICB9XG4gICAgICAgIGJyZWFrO1xuICAgICAgfVxuICAgIH1cbiAgICB0aGlzLl94ID0geCwgdGhpcy5feSA9IHk7XG4gIH1cbn07XG5cbmV4cG9ydCBkZWZhdWx0IGZ1bmN0aW9uKGNvbnRleHQpIHtcbiAgcmV0dXJuIG5ldyBTdGVwKGNvbnRleHQsIDAuNSk7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBzdGVwQmVmb3JlKGNvbnRleHQpIHtcbiAgcmV0dXJuIG5ldyBTdGVwKGNvbnRleHQsIDApO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gc3RlcEFmdGVyKGNvbnRleHQpIHtcbiAgcmV0dXJuIG5ldyBTdGVwKGNvbnRleHQsIDEpO1xufVxuIl0sIm1hcHBpbmdzIjoiQUFBQTtBQUFBO0FBQUE7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOyIsInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///./node_modules/vega-label/node_modules/d3-shape/src/curve/step.js\n");

/***/ }),

/***/ "./node_modules/vega-label/node_modules/d3-shape/src/descending.js":
/*!*************************************************************************!*\
  !*** ./node_modules/vega-label/node_modules/d3-shape/src/descending.js ***!
  \*************************************************************************/
/*! exports provided: default */
/***/ (function(module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony default export */ __webpack_exports__[\"default\"] = (function(a, b) {\n  return b < a ? -1 : b > a ? 1 : b >= a ? 0 : NaN;\n});\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvdmVnYS1sYWJlbC9ub2RlX21vZHVsZXMvZDMtc2hhcGUvc3JjL2Rlc2NlbmRpbmcuanMuanMiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvdmVnYS1sYWJlbC9ub2RlX21vZHVsZXMvZDMtc2hhcGUvc3JjL2Rlc2NlbmRpbmcuanM/ZTBjOSJdLCJzb3VyY2VzQ29udGVudCI6WyJleHBvcnQgZGVmYXVsdCBmdW5jdGlvbihhLCBiKSB7XG4gIHJldHVybiBiIDwgYSA/IC0xIDogYiA+IGEgPyAxIDogYiA+PSBhID8gMCA6IE5hTjtcbn1cbiJdLCJtYXBwaW5ncyI6IkFBQUE7QUFBQTtBQUNBO0FBQ0E7Iiwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///./node_modules/vega-label/node_modules/d3-shape/src/descending.js\n");

/***/ }),

/***/ "./node_modules/vega-label/node_modules/d3-shape/src/identity.js":
/*!***********************************************************************!*\
  !*** ./node_modules/vega-label/node_modules/d3-shape/src/identity.js ***!
  \***********************************************************************/
/*! exports provided: default */
/***/ (function(module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony default export */ __webpack_exports__[\"default\"] = (function(d) {\n  return d;\n});\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvdmVnYS1sYWJlbC9ub2RlX21vZHVsZXMvZDMtc2hhcGUvc3JjL2lkZW50aXR5LmpzLmpzIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL3ZlZ2EtbGFiZWwvbm9kZV9tb2R1bGVzL2QzLXNoYXBlL3NyYy9pZGVudGl0eS5qcz9iMDY4Il0sInNvdXJjZXNDb250ZW50IjpbImV4cG9ydCBkZWZhdWx0IGZ1bmN0aW9uKGQpIHtcbiAgcmV0dXJuIGQ7XG59XG4iXSwibWFwcGluZ3MiOiJBQUFBO0FBQUE7QUFDQTtBQUNBOyIsInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///./node_modules/vega-label/node_modules/d3-shape/src/identity.js\n");

/***/ }),

/***/ "./node_modules/vega-label/node_modules/d3-shape/src/index.js":
/*!********************************************************************!*\
  !*** ./node_modules/vega-label/node_modules/d3-shape/src/index.js ***!
  \********************************************************************/
/*! exports provided: arc, area, line, pie, areaRadial, radialArea, lineRadial, radialLine, pointRadial, linkHorizontal, linkVertical, linkRadial, symbol, symbols, symbolCircle, symbolCross, symbolDiamond, symbolSquare, symbolStar, symbolTriangle, symbolWye, curveBasisClosed, curveBasisOpen, curveBasis, curveBumpX, curveBumpY, curveBundle, curveCardinalClosed, curveCardinalOpen, curveCardinal, curveCatmullRomClosed, curveCatmullRomOpen, curveCatmullRom, curveLinearClosed, curveLinear, curveMonotoneX, curveMonotoneY, curveNatural, curveStep, curveStepAfter, curveStepBefore, stack, stackOffsetExpand, stackOffsetDiverging, stackOffsetNone, stackOffsetSilhouette, stackOffsetWiggle, stackOrderAppearance, stackOrderAscending, stackOrderDescending, stackOrderInsideOut, stackOrderNone, stackOrderReverse */
/***/ (function(module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _arc_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./arc.js */ \"./node_modules/vega-label/node_modules/d3-shape/src/arc.js\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"arc\", function() { return _arc_js__WEBPACK_IMPORTED_MODULE_0__[\"default\"]; });\n\n/* harmony import */ var _area_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./area.js */ \"./node_modules/vega-label/node_modules/d3-shape/src/area.js\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"area\", function() { return _area_js__WEBPACK_IMPORTED_MODULE_1__[\"default\"]; });\n\n/* harmony import */ var _line_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./line.js */ \"./node_modules/vega-label/node_modules/d3-shape/src/line.js\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"line\", function() { return _line_js__WEBPACK_IMPORTED_MODULE_2__[\"default\"]; });\n\n/* harmony import */ var _pie_js__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ./pie.js */ \"./node_modules/vega-label/node_modules/d3-shape/src/pie.js\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"pie\", function() { return _pie_js__WEBPACK_IMPORTED_MODULE_3__[\"default\"]; });\n\n/* harmony import */ var _areaRadial_js__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ./areaRadial.js */ \"./node_modules/vega-label/node_modules/d3-shape/src/areaRadial.js\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"areaRadial\", function() { return _areaRadial_js__WEBPACK_IMPORTED_MODULE_4__[\"default\"]; });\n\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"radialArea\", function() { return _areaRadial_js__WEBPACK_IMPORTED_MODULE_4__[\"default\"]; });\n\n/* harmony import */ var _lineRadial_js__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! ./lineRadial.js */ \"./node_modules/vega-label/node_modules/d3-shape/src/lineRadial.js\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"lineRadial\", function() { return _lineRadial_js__WEBPACK_IMPORTED_MODULE_5__[\"default\"]; });\n\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"radialLine\", function() { return _lineRadial_js__WEBPACK_IMPORTED_MODULE_5__[\"default\"]; });\n\n/* harmony import */ var _pointRadial_js__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! ./pointRadial.js */ \"./node_modules/vega-label/node_modules/d3-shape/src/pointRadial.js\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"pointRadial\", function() { return _pointRadial_js__WEBPACK_IMPORTED_MODULE_6__[\"default\"]; });\n\n/* harmony import */ var _link_index_js__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! ./link/index.js */ \"./node_modules/vega-label/node_modules/d3-shape/src/link/index.js\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"linkHorizontal\", function() { return _link_index_js__WEBPACK_IMPORTED_MODULE_7__[\"linkHorizontal\"]; });\n\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"linkVertical\", function() { return _link_index_js__WEBPACK_IMPORTED_MODULE_7__[\"linkVertical\"]; });\n\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"linkRadial\", function() { return _link_index_js__WEBPACK_IMPORTED_MODULE_7__[\"linkRadial\"]; });\n\n/* harmony import */ var _symbol_js__WEBPACK_IMPORTED_MODULE_8__ = __webpack_require__(/*! ./symbol.js */ \"./node_modules/vega-label/node_modules/d3-shape/src/symbol.js\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"symbol\", function() { return _symbol_js__WEBPACK_IMPORTED_MODULE_8__[\"default\"]; });\n\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"symbols\", function() { return _symbol_js__WEBPACK_IMPORTED_MODULE_8__[\"symbols\"]; });\n\n/* harmony import */ var _symbol_circle_js__WEBPACK_IMPORTED_MODULE_9__ = __webpack_require__(/*! ./symbol/circle.js */ \"./node_modules/vega-label/node_modules/d3-shape/src/symbol/circle.js\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"symbolCircle\", function() { return _symbol_circle_js__WEBPACK_IMPORTED_MODULE_9__[\"default\"]; });\n\n/* harmony import */ var _symbol_cross_js__WEBPACK_IMPORTED_MODULE_10__ = __webpack_require__(/*! ./symbol/cross.js */ \"./node_modules/vega-label/node_modules/d3-shape/src/symbol/cross.js\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"symbolCross\", function() { return _symbol_cross_js__WEBPACK_IMPORTED_MODULE_10__[\"default\"]; });\n\n/* harmony import */ var _symbol_diamond_js__WEBPACK_IMPORTED_MODULE_11__ = __webpack_require__(/*! ./symbol/diamond.js */ \"./node_modules/vega-label/node_modules/d3-shape/src/symbol/diamond.js\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"symbolDiamond\", function() { return _symbol_diamond_js__WEBPACK_IMPORTED_MODULE_11__[\"default\"]; });\n\n/* harmony import */ var _symbol_square_js__WEBPACK_IMPORTED_MODULE_12__ = __webpack_require__(/*! ./symbol/square.js */ \"./node_modules/vega-label/node_modules/d3-shape/src/symbol/square.js\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"symbolSquare\", function() { return _symbol_square_js__WEBPACK_IMPORTED_MODULE_12__[\"default\"]; });\n\n/* harmony import */ var _symbol_star_js__WEBPACK_IMPORTED_MODULE_13__ = __webpack_require__(/*! ./symbol/star.js */ \"./node_modules/vega-label/node_modules/d3-shape/src/symbol/star.js\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"symbolStar\", function() { return _symbol_star_js__WEBPACK_IMPORTED_MODULE_13__[\"default\"]; });\n\n/* harmony import */ var _symbol_triangle_js__WEBPACK_IMPORTED_MODULE_14__ = __webpack_require__(/*! ./symbol/triangle.js */ \"./node_modules/vega-label/node_modules/d3-shape/src/symbol/triangle.js\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"symbolTriangle\", function() { return _symbol_triangle_js__WEBPACK_IMPORTED_MODULE_14__[\"default\"]; });\n\n/* harmony import */ var _symbol_wye_js__WEBPACK_IMPORTED_MODULE_15__ = __webpack_require__(/*! ./symbol/wye.js */ \"./node_modules/vega-label/node_modules/d3-shape/src/symbol/wye.js\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"symbolWye\", function() { return _symbol_wye_js__WEBPACK_IMPORTED_MODULE_15__[\"default\"]; });\n\n/* harmony import */ var _curve_basisClosed_js__WEBPACK_IMPORTED_MODULE_16__ = __webpack_require__(/*! ./curve/basisClosed.js */ \"./node_modules/vega-label/node_modules/d3-shape/src/curve/basisClosed.js\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"curveBasisClosed\", function() { return _curve_basisClosed_js__WEBPACK_IMPORTED_MODULE_16__[\"default\"]; });\n\n/* harmony import */ var _curve_basisOpen_js__WEBPACK_IMPORTED_MODULE_17__ = __webpack_require__(/*! ./curve/basisOpen.js */ \"./node_modules/vega-label/node_modules/d3-shape/src/curve/basisOpen.js\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"curveBasisOpen\", function() { return _curve_basisOpen_js__WEBPACK_IMPORTED_MODULE_17__[\"default\"]; });\n\n/* harmony import */ var _curve_basis_js__WEBPACK_IMPORTED_MODULE_18__ = __webpack_require__(/*! ./curve/basis.js */ \"./node_modules/vega-label/node_modules/d3-shape/src/curve/basis.js\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"curveBasis\", function() { return _curve_basis_js__WEBPACK_IMPORTED_MODULE_18__[\"default\"]; });\n\n/* harmony import */ var _curve_bump_js__WEBPACK_IMPORTED_MODULE_19__ = __webpack_require__(/*! ./curve/bump.js */ \"./node_modules/vega-label/node_modules/d3-shape/src/curve/bump.js\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"curveBumpX\", function() { return _curve_bump_js__WEBPACK_IMPORTED_MODULE_19__[\"bumpX\"]; });\n\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"curveBumpY\", function() { return _curve_bump_js__WEBPACK_IMPORTED_MODULE_19__[\"bumpY\"]; });\n\n/* harmony import */ var _curve_bundle_js__WEBPACK_IMPORTED_MODULE_20__ = __webpack_require__(/*! ./curve/bundle.js */ \"./node_modules/vega-label/node_modules/d3-shape/src/curve/bundle.js\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"curveBundle\", function() { return _curve_bundle_js__WEBPACK_IMPORTED_MODULE_20__[\"default\"]; });\n\n/* harmony import */ var _curve_cardinalClosed_js__WEBPACK_IMPORTED_MODULE_21__ = __webpack_require__(/*! ./curve/cardinalClosed.js */ \"./node_modules/vega-label/node_modules/d3-shape/src/curve/cardinalClosed.js\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"curveCardinalClosed\", function() { return _curve_cardinalClosed_js__WEBPACK_IMPORTED_MODULE_21__[\"default\"]; });\n\n/* harmony import */ var _curve_cardinalOpen_js__WEBPACK_IMPORTED_MODULE_22__ = __webpack_require__(/*! ./curve/cardinalOpen.js */ \"./node_modules/vega-label/node_modules/d3-shape/src/curve/cardinalOpen.js\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"curveCardinalOpen\", function() { return _curve_cardinalOpen_js__WEBPACK_IMPORTED_MODULE_22__[\"default\"]; });\n\n/* harmony import */ var _curve_cardinal_js__WEBPACK_IMPORTED_MODULE_23__ = __webpack_require__(/*! ./curve/cardinal.js */ \"./node_modules/vega-label/node_modules/d3-shape/src/curve/cardinal.js\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"curveCardinal\", function() { return _curve_cardinal_js__WEBPACK_IMPORTED_MODULE_23__[\"default\"]; });\n\n/* harmony import */ var _curve_catmullRomClosed_js__WEBPACK_IMPORTED_MODULE_24__ = __webpack_require__(/*! ./curve/catmullRomClosed.js */ \"./node_modules/vega-label/node_modules/d3-shape/src/curve/catmullRomClosed.js\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"curveCatmullRomClosed\", function() { return _curve_catmullRomClosed_js__WEBPACK_IMPORTED_MODULE_24__[\"default\"]; });\n\n/* harmony import */ var _curve_catmullRomOpen_js__WEBPACK_IMPORTED_MODULE_25__ = __webpack_require__(/*! ./curve/catmullRomOpen.js */ \"./node_modules/vega-label/node_modules/d3-shape/src/curve/catmullRomOpen.js\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"curveCatmullRomOpen\", function() { return _curve_catmullRomOpen_js__WEBPACK_IMPORTED_MODULE_25__[\"default\"]; });\n\n/* harmony import */ var _curve_catmullRom_js__WEBPACK_IMPORTED_MODULE_26__ = __webpack_require__(/*! ./curve/catmullRom.js */ \"./node_modules/vega-label/node_modules/d3-shape/src/curve/catmullRom.js\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"curveCatmullRom\", function() { return _curve_catmullRom_js__WEBPACK_IMPORTED_MODULE_26__[\"default\"]; });\n\n/* harmony import */ var _curve_linearClosed_js__WEBPACK_IMPORTED_MODULE_27__ = __webpack_require__(/*! ./curve/linearClosed.js */ \"./node_modules/vega-label/node_modules/d3-shape/src/curve/linearClosed.js\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"curveLinearClosed\", function() { return _curve_linearClosed_js__WEBPACK_IMPORTED_MODULE_27__[\"default\"]; });\n\n/* harmony import */ var _curve_linear_js__WEBPACK_IMPORTED_MODULE_28__ = __webpack_require__(/*! ./curve/linear.js */ \"./node_modules/vega-label/node_modules/d3-shape/src/curve/linear.js\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"curveLinear\", function() { return _curve_linear_js__WEBPACK_IMPORTED_MODULE_28__[\"default\"]; });\n\n/* harmony import */ var _curve_monotone_js__WEBPACK_IMPORTED_MODULE_29__ = __webpack_require__(/*! ./curve/monotone.js */ \"./node_modules/vega-label/node_modules/d3-shape/src/curve/monotone.js\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"curveMonotoneX\", function() { return _curve_monotone_js__WEBPACK_IMPORTED_MODULE_29__[\"monotoneX\"]; });\n\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"curveMonotoneY\", function() { return _curve_monotone_js__WEBPACK_IMPORTED_MODULE_29__[\"monotoneY\"]; });\n\n/* harmony import */ var _curve_natural_js__WEBPACK_IMPORTED_MODULE_30__ = __webpack_require__(/*! ./curve/natural.js */ \"./node_modules/vega-label/node_modules/d3-shape/src/curve/natural.js\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"curveNatural\", function() { return _curve_natural_js__WEBPACK_IMPORTED_MODULE_30__[\"default\"]; });\n\n/* harmony import */ var _curve_step_js__WEBPACK_IMPORTED_MODULE_31__ = __webpack_require__(/*! ./curve/step.js */ \"./node_modules/vega-label/node_modules/d3-shape/src/curve/step.js\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"curveStep\", function() { return _curve_step_js__WEBPACK_IMPORTED_MODULE_31__[\"default\"]; });\n\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"curveStepAfter\", function() { return _curve_step_js__WEBPACK_IMPORTED_MODULE_31__[\"stepAfter\"]; });\n\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"curveStepBefore\", function() { return _curve_step_js__WEBPACK_IMPORTED_MODULE_31__[\"stepBefore\"]; });\n\n/* harmony import */ var _stack_js__WEBPACK_IMPORTED_MODULE_32__ = __webpack_require__(/*! ./stack.js */ \"./node_modules/vega-label/node_modules/d3-shape/src/stack.js\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"stack\", function() { return _stack_js__WEBPACK_IMPORTED_MODULE_32__[\"default\"]; });\n\n/* harmony import */ var _offset_expand_js__WEBPACK_IMPORTED_MODULE_33__ = __webpack_require__(/*! ./offset/expand.js */ \"./node_modules/vega-label/node_modules/d3-shape/src/offset/expand.js\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"stackOffsetExpand\", function() { return _offset_expand_js__WEBPACK_IMPORTED_MODULE_33__[\"default\"]; });\n\n/* harmony import */ var _offset_diverging_js__WEBPACK_IMPORTED_MODULE_34__ = __webpack_require__(/*! ./offset/diverging.js */ \"./node_modules/vega-label/node_modules/d3-shape/src/offset/diverging.js\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"stackOffsetDiverging\", function() { return _offset_diverging_js__WEBPACK_IMPORTED_MODULE_34__[\"default\"]; });\n\n/* harmony import */ var _offset_none_js__WEBPACK_IMPORTED_MODULE_35__ = __webpack_require__(/*! ./offset/none.js */ \"./node_modules/vega-label/node_modules/d3-shape/src/offset/none.js\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"stackOffsetNone\", function() { return _offset_none_js__WEBPACK_IMPORTED_MODULE_35__[\"default\"]; });\n\n/* harmony import */ var _offset_silhouette_js__WEBPACK_IMPORTED_MODULE_36__ = __webpack_require__(/*! ./offset/silhouette.js */ \"./node_modules/vega-label/node_modules/d3-shape/src/offset/silhouette.js\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"stackOffsetSilhouette\", function() { return _offset_silhouette_js__WEBPACK_IMPORTED_MODULE_36__[\"default\"]; });\n\n/* harmony import */ var _offset_wiggle_js__WEBPACK_IMPORTED_MODULE_37__ = __webpack_require__(/*! ./offset/wiggle.js */ \"./node_modules/vega-label/node_modules/d3-shape/src/offset/wiggle.js\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"stackOffsetWiggle\", function() { return _offset_wiggle_js__WEBPACK_IMPORTED_MODULE_37__[\"default\"]; });\n\n/* harmony import */ var _order_appearance_js__WEBPACK_IMPORTED_MODULE_38__ = __webpack_require__(/*! ./order/appearance.js */ \"./node_modules/vega-label/node_modules/d3-shape/src/order/appearance.js\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"stackOrderAppearance\", function() { return _order_appearance_js__WEBPACK_IMPORTED_MODULE_38__[\"default\"]; });\n\n/* harmony import */ var _order_ascending_js__WEBPACK_IMPORTED_MODULE_39__ = __webpack_require__(/*! ./order/ascending.js */ \"./node_modules/vega-label/node_modules/d3-shape/src/order/ascending.js\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"stackOrderAscending\", function() { return _order_ascending_js__WEBPACK_IMPORTED_MODULE_39__[\"default\"]; });\n\n/* harmony import */ var _order_descending_js__WEBPACK_IMPORTED_MODULE_40__ = __webpack_require__(/*! ./order/descending.js */ \"./node_modules/vega-label/node_modules/d3-shape/src/order/descending.js\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"stackOrderDescending\", function() { return _order_descending_js__WEBPACK_IMPORTED_MODULE_40__[\"default\"]; });\n\n/* harmony import */ var _order_insideOut_js__WEBPACK_IMPORTED_MODULE_41__ = __webpack_require__(/*! ./order/insideOut.js */ \"./node_modules/vega-label/node_modules/d3-shape/src/order/insideOut.js\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"stackOrderInsideOut\", function() { return _order_insideOut_js__WEBPACK_IMPORTED_MODULE_41__[\"default\"]; });\n\n/* harmony import */ var _order_none_js__WEBPACK_IMPORTED_MODULE_42__ = __webpack_require__(/*! ./order/none.js */ \"./node_modules/vega-label/node_modules/d3-shape/src/order/none.js\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"stackOrderNone\", function() { return _order_none_js__WEBPACK_IMPORTED_MODULE_42__[\"default\"]; });\n\n/* harmony import */ var _order_reverse_js__WEBPACK_IMPORTED_MODULE_43__ = __webpack_require__(/*! ./order/reverse.js */ \"./node_modules/vega-label/node_modules/d3-shape/src/order/reverse.js\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"stackOrderReverse\", function() { return _order_reverse_js__WEBPACK_IMPORTED_MODULE_43__[\"default\"]; });\n\n\n\n\n\n // Note: radialArea is deprecated!\n // Note: radialLine is deprecated!\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,[encoded data, 5704 characters]\n//# sourceURL=webpack-internal:///./node_modules/vega-label/node_modules/d3-shape/src/index.js\n");

/***/ }),

/***/ "./node_modules/vega-label/node_modules/d3-shape/src/line.js":
/*!*******************************************************************!*\
  !*** ./node_modules/vega-label/node_modules/d3-shape/src/line.js ***!
  \*******************************************************************/
/*! exports provided: default */
/***/ (function(module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var d3_path__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! d3-path */ \"./node_modules/vega-label/node_modules/d3-path/src/index.js\");\n/* harmony import */ var _array_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./array.js */ \"./node_modules/vega-label/node_modules/d3-shape/src/array.js\");\n/* harmony import */ var _constant_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./constant.js */ \"./node_modules/vega-label/node_modules/d3-shape/src/constant.js\");\n/* harmony import */ var _curve_linear_js__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ./curve/linear.js */ \"./node_modules/vega-label/node_modules/d3-shape/src/curve/linear.js\");\n/* harmony import */ var _point_js__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ./point.js */ \"./node_modules/vega-label/node_modules/d3-shape/src/point.js\");\n\n\n\n\n\n\n/* harmony default export */ __webpack_exports__[\"default\"] = (function(x, y) {\n  var defined = Object(_constant_js__WEBPACK_IMPORTED_MODULE_2__[\"default\"])(true),\n      context = null,\n      curve = _curve_linear_js__WEBPACK_IMPORTED_MODULE_3__[\"default\"],\n      output = null;\n\n  x = typeof x === \"function\" ? x : (x === undefined) ? _point_js__WEBPACK_IMPORTED_MODULE_4__[\"x\"] : Object(_constant_js__WEBPACK_IMPORTED_MODULE_2__[\"default\"])(x);\n  y = typeof y === \"function\" ? y : (y === undefined) ? _point_js__WEBPACK_IMPORTED_MODULE_4__[\"y\"] : Object(_constant_js__WEBPACK_IMPORTED_MODULE_2__[\"default\"])(y);\n\n  function line(data) {\n    var i,\n        n = (data = Object(_array_js__WEBPACK_IMPORTED_MODULE_1__[\"default\"])(data)).length,\n        d,\n        defined0 = false,\n        buffer;\n\n    if (context == null) output = curve(buffer = Object(d3_path__WEBPACK_IMPORTED_MODULE_0__[\"path\"])());\n\n    for (i = 0; i <= n; ++i) {\n      if (!(i < n && defined(d = data[i], i, data)) === defined0) {\n        if (defined0 = !defined0) output.lineStart();\n        else output.lineEnd();\n      }\n      if (defined0) output.point(+x(d, i, data), +y(d, i, data));\n    }\n\n    if (buffer) return output = null, buffer + \"\" || null;\n  }\n\n  line.x = function(_) {\n    return arguments.length ? (x = typeof _ === \"function\" ? _ : Object(_constant_js__WEBPACK_IMPORTED_MODULE_2__[\"default\"])(+_), line) : x;\n  };\n\n  line.y = function(_) {\n    return arguments.length ? (y = typeof _ === \"function\" ? _ : Object(_constant_js__WEBPACK_IMPORTED_MODULE_2__[\"default\"])(+_), line) : y;\n  };\n\n  line.defined = function(_) {\n    return arguments.length ? (defined = typeof _ === \"function\" ? _ : Object(_constant_js__WEBPACK_IMPORTED_MODULE_2__[\"default\"])(!!_), line) : defined;\n  };\n\n  line.curve = function(_) {\n    return arguments.length ? (curve = _, context != null && (output = curve(context)), line) : curve;\n  };\n\n  line.context = function(_) {\n    return arguments.length ? (_ == null ? context = output = null : output = curve(context = _), line) : context;\n  };\n\n  return line;\n});\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvdmVnYS1sYWJlbC9ub2RlX21vZHVsZXMvZDMtc2hhcGUvc3JjL2xpbmUuanMuanMiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvdmVnYS1sYWJlbC9ub2RlX21vZHVsZXMvZDMtc2hhcGUvc3JjL2xpbmUuanM/MGQ1ZCJdLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge3BhdGh9IGZyb20gXCJkMy1wYXRoXCI7XG5pbXBvcnQgYXJyYXkgZnJvbSBcIi4vYXJyYXkuanNcIjtcbmltcG9ydCBjb25zdGFudCBmcm9tIFwiLi9jb25zdGFudC5qc1wiO1xuaW1wb3J0IGN1cnZlTGluZWFyIGZyb20gXCIuL2N1cnZlL2xpbmVhci5qc1wiO1xuaW1wb3J0IHt4IGFzIHBvaW50WCwgeSBhcyBwb2ludFl9IGZyb20gXCIuL3BvaW50LmpzXCI7XG5cbmV4cG9ydCBkZWZhdWx0IGZ1bmN0aW9uKHgsIHkpIHtcbiAgdmFyIGRlZmluZWQgPSBjb25zdGFudCh0cnVlKSxcbiAgICAgIGNvbnRleHQgPSBudWxsLFxuICAgICAgY3VydmUgPSBjdXJ2ZUxpbmVhcixcbiAgICAgIG91dHB1dCA9IG51bGw7XG5cbiAgeCA9IHR5cGVvZiB4ID09PSBcImZ1bmN0aW9uXCIgPyB4IDogKHggPT09IHVuZGVmaW5lZCkgPyBwb2ludFggOiBjb25zdGFudCh4KTtcbiAgeSA9IHR5cGVvZiB5ID09PSBcImZ1bmN0aW9uXCIgPyB5IDogKHkgPT09IHVuZGVmaW5lZCkgPyBwb2ludFkgOiBjb25zdGFudCh5KTtcblxuICBmdW5jdGlvbiBsaW5lKGRhdGEpIHtcbiAgICB2YXIgaSxcbiAgICAgICAgbiA9IChkYXRhID0gYXJyYXkoZGF0YSkpLmxlbmd0aCxcbiAgICAgICAgZCxcbiAgICAgICAgZGVmaW5lZDAgPSBmYWxzZSxcbiAgICAgICAgYnVmZmVyO1xuXG4gICAgaWYgKGNvbnRleHQgPT0gbnVsbCkgb3V0cHV0ID0gY3VydmUoYnVmZmVyID0gcGF0aCgpKTtcblxuICAgIGZvciAoaSA9IDA7IGkgPD0gbjsgKytpKSB7XG4gICAgICBpZiAoIShpIDwgbiAmJiBkZWZpbmVkKGQgPSBkYXRhW2ldLCBpLCBkYXRhKSkgPT09IGRlZmluZWQwKSB7XG4gICAgICAgIGlmIChkZWZpbmVkMCA9ICFkZWZpbmVkMCkgb3V0cHV0LmxpbmVTdGFydCgpO1xuICAgICAgICBlbHNlIG91dHB1dC5saW5lRW5kKCk7XG4gICAgICB9XG4gICAgICBpZiAoZGVmaW5lZDApIG91dHB1dC5wb2ludCgreChkLCBpLCBkYXRhKSwgK3koZCwgaSwgZGF0YSkpO1xuICAgIH1cblxuICAgIGlmIChidWZmZXIpIHJldHVybiBvdXRwdXQgPSBudWxsLCBidWZmZXIgKyBcIlwiIHx8IG51bGw7XG4gIH1cblxuICBsaW5lLnggPSBmdW5jdGlvbihfKSB7XG4gICAgcmV0dXJuIGFyZ3VtZW50cy5sZW5ndGggPyAoeCA9IHR5cGVvZiBfID09PSBcImZ1bmN0aW9uXCIgPyBfIDogY29uc3RhbnQoK18pLCBsaW5lKSA6IHg7XG4gIH07XG5cbiAgbGluZS55ID0gZnVuY3Rpb24oXykge1xuICAgIHJldHVybiBhcmd1bWVudHMubGVuZ3RoID8gKHkgPSB0eXBlb2YgXyA9PT0gXCJmdW5jdGlvblwiID8gXyA6IGNvbnN0YW50KCtfKSwgbGluZSkgOiB5O1xuICB9O1xuXG4gIGxpbmUuZGVmaW5lZCA9IGZ1bmN0aW9uKF8pIHtcbiAgICByZXR1cm4gYXJndW1lbnRzLmxlbmd0aCA/IChkZWZpbmVkID0gdHlwZW9mIF8gPT09IFwiZnVuY3Rpb25cIiA/IF8gOiBjb25zdGFudCghIV8pLCBsaW5lKSA6IGRlZmluZWQ7XG4gIH07XG5cbiAgbGluZS5jdXJ2ZSA9IGZ1bmN0aW9uKF8pIHtcbiAgICByZXR1cm4gYXJndW1lbnRzLmxlbmd0aCA/IChjdXJ2ZSA9IF8sIGNvbnRleHQgIT0gbnVsbCAmJiAob3V0cHV0ID0gY3VydmUoY29udGV4dCkpLCBsaW5lKSA6IGN1cnZlO1xuICB9O1xuXG4gIGxpbmUuY29udGV4dCA9IGZ1bmN0aW9uKF8pIHtcbiAgICByZXR1cm4gYXJndW1lbnRzLmxlbmd0aCA/IChfID09IG51bGwgPyBjb250ZXh0ID0gb3V0cHV0ID0gbnVsbCA6IG91dHB1dCA9IGN1cnZlKGNvbnRleHQgPSBfKSwgbGluZSkgOiBjb250ZXh0O1xuICB9O1xuXG4gIHJldHVybiBsaW5lO1xufVxuIl0sIm1hcHBpbmdzIjoiQUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7Iiwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///./node_modules/vega-label/node_modules/d3-shape/src/line.js\n");

/***/ }),

/***/ "./node_modules/vega-label/node_modules/d3-shape/src/lineRadial.js":
/*!*************************************************************************!*\
  !*** ./node_modules/vega-label/node_modules/d3-shape/src/lineRadial.js ***!
  \*************************************************************************/
/*! exports provided: lineRadial, default */
/***/ (function(module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"lineRadial\", function() { return lineRadial; });\n/* harmony import */ var _curve_radial_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./curve/radial.js */ \"./node_modules/vega-label/node_modules/d3-shape/src/curve/radial.js\");\n/* harmony import */ var _line_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./line.js */ \"./node_modules/vega-label/node_modules/d3-shape/src/line.js\");\n\n\n\nfunction lineRadial(l) {\n  var c = l.curve;\n\n  l.angle = l.x, delete l.x;\n  l.radius = l.y, delete l.y;\n\n  l.curve = function(_) {\n    return arguments.length ? c(Object(_curve_radial_js__WEBPACK_IMPORTED_MODULE_0__[\"default\"])(_)) : c()._curve;\n  };\n\n  return l;\n}\n\n/* harmony default export */ __webpack_exports__[\"default\"] = (function() {\n  return lineRadial(Object(_line_js__WEBPACK_IMPORTED_MODULE_1__[\"default\"])().curve(_curve_radial_js__WEBPACK_IMPORTED_MODULE_0__[\"curveRadialLinear\"]));\n});\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvdmVnYS1sYWJlbC9ub2RlX21vZHVsZXMvZDMtc2hhcGUvc3JjL2xpbmVSYWRpYWwuanMuanMiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvdmVnYS1sYWJlbC9ub2RlX21vZHVsZXMvZDMtc2hhcGUvc3JjL2xpbmVSYWRpYWwuanM/MjAxYSJdLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgY3VydmVSYWRpYWwsIHtjdXJ2ZVJhZGlhbExpbmVhcn0gZnJvbSBcIi4vY3VydmUvcmFkaWFsLmpzXCI7XG5pbXBvcnQgbGluZSBmcm9tIFwiLi9saW5lLmpzXCI7XG5cbmV4cG9ydCBmdW5jdGlvbiBsaW5lUmFkaWFsKGwpIHtcbiAgdmFyIGMgPSBsLmN1cnZlO1xuXG4gIGwuYW5nbGUgPSBsLngsIGRlbGV0ZSBsLng7XG4gIGwucmFkaXVzID0gbC55LCBkZWxldGUgbC55O1xuXG4gIGwuY3VydmUgPSBmdW5jdGlvbihfKSB7XG4gICAgcmV0dXJuIGFyZ3VtZW50cy5sZW5ndGggPyBjKGN1cnZlUmFkaWFsKF8pKSA6IGMoKS5fY3VydmU7XG4gIH07XG5cbiAgcmV0dXJuIGw7XG59XG5cbmV4cG9ydCBkZWZhdWx0IGZ1bmN0aW9uKCkge1xuICByZXR1cm4gbGluZVJhZGlhbChsaW5lKCkuY3VydmUoY3VydmVSYWRpYWxMaW5lYXIpKTtcbn1cbiJdLCJtYXBwaW5ncyI6IkFBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTsiLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///./node_modules/vega-label/node_modules/d3-shape/src/lineRadial.js\n");

/***/ }),

/***/ "./node_modules/vega-label/node_modules/d3-shape/src/link/index.js":
/*!*************************************************************************!*\
  !*** ./node_modules/vega-label/node_modules/d3-shape/src/link/index.js ***!
  \*************************************************************************/
/*! exports provided: linkHorizontal, linkVertical, linkRadial */
/***/ (function(module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"linkHorizontal\", function() { return linkHorizontal; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"linkVertical\", function() { return linkVertical; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"linkRadial\", function() { return linkRadial; });\n/* harmony import */ var d3_path__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! d3-path */ \"./node_modules/vega-label/node_modules/d3-path/src/index.js\");\n/* harmony import */ var _array_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../array.js */ \"./node_modules/vega-label/node_modules/d3-shape/src/array.js\");\n/* harmony import */ var _constant_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ../constant.js */ \"./node_modules/vega-label/node_modules/d3-shape/src/constant.js\");\n/* harmony import */ var _point_js__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ../point.js */ \"./node_modules/vega-label/node_modules/d3-shape/src/point.js\");\n/* harmony import */ var _pointRadial_js__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ../pointRadial.js */ \"./node_modules/vega-label/node_modules/d3-shape/src/pointRadial.js\");\n\n\n\n\n\n\nfunction linkSource(d) {\n  return d.source;\n}\n\nfunction linkTarget(d) {\n  return d.target;\n}\n\nfunction link(curve) {\n  var source = linkSource,\n      target = linkTarget,\n      x = _point_js__WEBPACK_IMPORTED_MODULE_3__[\"x\"],\n      y = _point_js__WEBPACK_IMPORTED_MODULE_3__[\"y\"],\n      context = null;\n\n  function link() {\n    var buffer, argv = _array_js__WEBPACK_IMPORTED_MODULE_1__[\"slice\"].call(arguments), s = source.apply(this, argv), t = target.apply(this, argv);\n    if (!context) context = buffer = Object(d3_path__WEBPACK_IMPORTED_MODULE_0__[\"path\"])();\n    curve(context, +x.apply(this, (argv[0] = s, argv)), +y.apply(this, argv), +x.apply(this, (argv[0] = t, argv)), +y.apply(this, argv));\n    if (buffer) return context = null, buffer + \"\" || null;\n  }\n\n  link.source = function(_) {\n    return arguments.length ? (source = _, link) : source;\n  };\n\n  link.target = function(_) {\n    return arguments.length ? (target = _, link) : target;\n  };\n\n  link.x = function(_) {\n    return arguments.length ? (x = typeof _ === \"function\" ? _ : Object(_constant_js__WEBPACK_IMPORTED_MODULE_2__[\"default\"])(+_), link) : x;\n  };\n\n  link.y = function(_) {\n    return arguments.length ? (y = typeof _ === \"function\" ? _ : Object(_constant_js__WEBPACK_IMPORTED_MODULE_2__[\"default\"])(+_), link) : y;\n  };\n\n  link.context = function(_) {\n    return arguments.length ? ((context = _ == null ? null : _), link) : context;\n  };\n\n  return link;\n}\n\nfunction curveHorizontal(context, x0, y0, x1, y1) {\n  context.moveTo(x0, y0);\n  context.bezierCurveTo(x0 = (x0 + x1) / 2, y0, x0, y1, x1, y1);\n}\n\nfunction curveVertical(context, x0, y0, x1, y1) {\n  context.moveTo(x0, y0);\n  context.bezierCurveTo(x0, y0 = (y0 + y1) / 2, x1, y0, x1, y1);\n}\n\nfunction curveRadial(context, x0, y0, x1, y1) {\n  var p0 = Object(_pointRadial_js__WEBPACK_IMPORTED_MODULE_4__[\"default\"])(x0, y0),\n      p1 = Object(_pointRadial_js__WEBPACK_IMPORTED_MODULE_4__[\"default\"])(x0, y0 = (y0 + y1) / 2),\n      p2 = Object(_pointRadial_js__WEBPACK_IMPORTED_MODULE_4__[\"default\"])(x1, y0),\n      p3 = Object(_pointRadial_js__WEBPACK_IMPORTED_MODULE_4__[\"default\"])(x1, y1);\n  context.moveTo(p0[0], p0[1]);\n  context.bezierCurveTo(p1[0], p1[1], p2[0], p2[1], p3[0], p3[1]);\n}\n\nfunction linkHorizontal() {\n  return link(curveHorizontal);\n}\n\nfunction linkVertical() {\n  return link(curveVertical);\n}\n\nfunction linkRadial() {\n  var l = link(curveRadial);\n  l.angle = l.x, delete l.x;\n  l.radius = l.y, delete l.y;\n  return l;\n}\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvdmVnYS1sYWJlbC9ub2RlX21vZHVsZXMvZDMtc2hhcGUvc3JjL2xpbmsvaW5kZXguanMuanMiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvdmVnYS1sYWJlbC9ub2RlX21vZHVsZXMvZDMtc2hhcGUvc3JjL2xpbmsvaW5kZXguanM/NDVlNSJdLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge3BhdGh9IGZyb20gXCJkMy1wYXRoXCI7XG5pbXBvcnQge3NsaWNlfSBmcm9tIFwiLi4vYXJyYXkuanNcIjtcbmltcG9ydCBjb25zdGFudCBmcm9tIFwiLi4vY29uc3RhbnQuanNcIjtcbmltcG9ydCB7eCBhcyBwb2ludFgsIHkgYXMgcG9pbnRZfSBmcm9tIFwiLi4vcG9pbnQuanNcIjtcbmltcG9ydCBwb2ludFJhZGlhbCBmcm9tIFwiLi4vcG9pbnRSYWRpYWwuanNcIjtcblxuZnVuY3Rpb24gbGlua1NvdXJjZShkKSB7XG4gIHJldHVybiBkLnNvdXJjZTtcbn1cblxuZnVuY3Rpb24gbGlua1RhcmdldChkKSB7XG4gIHJldHVybiBkLnRhcmdldDtcbn1cblxuZnVuY3Rpb24gbGluayhjdXJ2ZSkge1xuICB2YXIgc291cmNlID0gbGlua1NvdXJjZSxcbiAgICAgIHRhcmdldCA9IGxpbmtUYXJnZXQsXG4gICAgICB4ID0gcG9pbnRYLFxuICAgICAgeSA9IHBvaW50WSxcbiAgICAgIGNvbnRleHQgPSBudWxsO1xuXG4gIGZ1bmN0aW9uIGxpbmsoKSB7XG4gICAgdmFyIGJ1ZmZlciwgYXJndiA9IHNsaWNlLmNhbGwoYXJndW1lbnRzKSwgcyA9IHNvdXJjZS5hcHBseSh0aGlzLCBhcmd2KSwgdCA9IHRhcmdldC5hcHBseSh0aGlzLCBhcmd2KTtcbiAgICBpZiAoIWNvbnRleHQpIGNvbnRleHQgPSBidWZmZXIgPSBwYXRoKCk7XG4gICAgY3VydmUoY29udGV4dCwgK3guYXBwbHkodGhpcywgKGFyZ3ZbMF0gPSBzLCBhcmd2KSksICt5LmFwcGx5KHRoaXMsIGFyZ3YpLCAreC5hcHBseSh0aGlzLCAoYXJndlswXSA9IHQsIGFyZ3YpKSwgK3kuYXBwbHkodGhpcywgYXJndikpO1xuICAgIGlmIChidWZmZXIpIHJldHVybiBjb250ZXh0ID0gbnVsbCwgYnVmZmVyICsgXCJcIiB8fCBudWxsO1xuICB9XG5cbiAgbGluay5zb3VyY2UgPSBmdW5jdGlvbihfKSB7XG4gICAgcmV0dXJuIGFyZ3VtZW50cy5sZW5ndGggPyAoc291cmNlID0gXywgbGluaykgOiBzb3VyY2U7XG4gIH07XG5cbiAgbGluay50YXJnZXQgPSBmdW5jdGlvbihfKSB7XG4gICAgcmV0dXJuIGFyZ3VtZW50cy5sZW5ndGggPyAodGFyZ2V0ID0gXywgbGluaykgOiB0YXJnZXQ7XG4gIH07XG5cbiAgbGluay54ID0gZnVuY3Rpb24oXykge1xuICAgIHJldHVybiBhcmd1bWVudHMubGVuZ3RoID8gKHggPSB0eXBlb2YgXyA9PT0gXCJmdW5jdGlvblwiID8gXyA6IGNvbnN0YW50KCtfKSwgbGluaykgOiB4O1xuICB9O1xuXG4gIGxpbmsueSA9IGZ1bmN0aW9uKF8pIHtcbiAgICByZXR1cm4gYXJndW1lbnRzLmxlbmd0aCA/ICh5ID0gdHlwZW9mIF8gPT09IFwiZnVuY3Rpb25cIiA/IF8gOiBjb25zdGFudCgrXyksIGxpbmspIDogeTtcbiAgfTtcblxuICBsaW5rLmNvbnRleHQgPSBmdW5jdGlvbihfKSB7XG4gICAgcmV0dXJuIGFyZ3VtZW50cy5sZW5ndGggPyAoKGNvbnRleHQgPSBfID09IG51bGwgPyBudWxsIDogXyksIGxpbmspIDogY29udGV4dDtcbiAgfTtcblxuICByZXR1cm4gbGluaztcbn1cblxuZnVuY3Rpb24gY3VydmVIb3Jpem9udGFsKGNvbnRleHQsIHgwLCB5MCwgeDEsIHkxKSB7XG4gIGNvbnRleHQubW92ZVRvKHgwLCB5MCk7XG4gIGNvbnRleHQuYmV6aWVyQ3VydmVUbyh4MCA9ICh4MCArIHgxKSAvIDIsIHkwLCB4MCwgeTEsIHgxLCB5MSk7XG59XG5cbmZ1bmN0aW9uIGN1cnZlVmVydGljYWwoY29udGV4dCwgeDAsIHkwLCB4MSwgeTEpIHtcbiAgY29udGV4dC5tb3ZlVG8oeDAsIHkwKTtcbiAgY29udGV4dC5iZXppZXJDdXJ2ZVRvKHgwLCB5MCA9ICh5MCArIHkxKSAvIDIsIHgxLCB5MCwgeDEsIHkxKTtcbn1cblxuZnVuY3Rpb24gY3VydmVSYWRpYWwoY29udGV4dCwgeDAsIHkwLCB4MSwgeTEpIHtcbiAgdmFyIHAwID0gcG9pbnRSYWRpYWwoeDAsIHkwKSxcbiAgICAgIHAxID0gcG9pbnRSYWRpYWwoeDAsIHkwID0gKHkwICsgeTEpIC8gMiksXG4gICAgICBwMiA9IHBvaW50UmFkaWFsKHgxLCB5MCksXG4gICAgICBwMyA9IHBvaW50UmFkaWFsKHgxLCB5MSk7XG4gIGNvbnRleHQubW92ZVRvKHAwWzBdLCBwMFsxXSk7XG4gIGNvbnRleHQuYmV6aWVyQ3VydmVUbyhwMVswXSwgcDFbMV0sIHAyWzBdLCBwMlsxXSwgcDNbMF0sIHAzWzFdKTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGxpbmtIb3Jpem9udGFsKCkge1xuICByZXR1cm4gbGluayhjdXJ2ZUhvcml6b250YWwpO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gbGlua1ZlcnRpY2FsKCkge1xuICByZXR1cm4gbGluayhjdXJ2ZVZlcnRpY2FsKTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGxpbmtSYWRpYWwoKSB7XG4gIHZhciBsID0gbGluayhjdXJ2ZVJhZGlhbCk7XG4gIGwuYW5nbGUgPSBsLngsIGRlbGV0ZSBsLng7XG4gIGwucmFkaXVzID0gbC55LCBkZWxldGUgbC55O1xuICByZXR1cm4gbDtcbn1cbiJdLCJtYXBwaW5ncyI6IkFBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOyIsInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///./node_modules/vega-label/node_modules/d3-shape/src/link/index.js\n");

/***/ }),

/***/ "./node_modules/vega-label/node_modules/d3-shape/src/math.js":
/*!*******************************************************************!*\
  !*** ./node_modules/vega-label/node_modules/d3-shape/src/math.js ***!
  \*******************************************************************/
/*! exports provided: abs, atan2, cos, max, min, sin, sqrt, epsilon, pi, halfPi, tau, acos, asin */
/***/ (function(module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"abs\", function() { return abs; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"atan2\", function() { return atan2; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"cos\", function() { return cos; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"max\", function() { return max; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"min\", function() { return min; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"sin\", function() { return sin; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"sqrt\", function() { return sqrt; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"epsilon\", function() { return epsilon; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"pi\", function() { return pi; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"halfPi\", function() { return halfPi; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"tau\", function() { return tau; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"acos\", function() { return acos; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"asin\", function() { return asin; });\nvar abs = Math.abs;\nvar atan2 = Math.atan2;\nvar cos = Math.cos;\nvar max = Math.max;\nvar min = Math.min;\nvar sin = Math.sin;\nvar sqrt = Math.sqrt;\n\nvar epsilon = 1e-12;\nvar pi = Math.PI;\nvar halfPi = pi / 2;\nvar tau = 2 * pi;\n\nfunction acos(x) {\n  return x > 1 ? 0 : x < -1 ? pi : Math.acos(x);\n}\n\nfunction asin(x) {\n  return x >= 1 ? halfPi : x <= -1 ? -halfPi : Math.asin(x);\n}\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvdmVnYS1sYWJlbC9ub2RlX21vZHVsZXMvZDMtc2hhcGUvc3JjL21hdGguanMuanMiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvdmVnYS1sYWJlbC9ub2RlX21vZHVsZXMvZDMtc2hhcGUvc3JjL21hdGguanM/ODI0MyJdLCJzb3VyY2VzQ29udGVudCI6WyJleHBvcnQgdmFyIGFicyA9IE1hdGguYWJzO1xuZXhwb3J0IHZhciBhdGFuMiA9IE1hdGguYXRhbjI7XG5leHBvcnQgdmFyIGNvcyA9IE1hdGguY29zO1xuZXhwb3J0IHZhciBtYXggPSBNYXRoLm1heDtcbmV4cG9ydCB2YXIgbWluID0gTWF0aC5taW47XG5leHBvcnQgdmFyIHNpbiA9IE1hdGguc2luO1xuZXhwb3J0IHZhciBzcXJ0ID0gTWF0aC5zcXJ0O1xuXG5leHBvcnQgdmFyIGVwc2lsb24gPSAxZS0xMjtcbmV4cG9ydCB2YXIgcGkgPSBNYXRoLlBJO1xuZXhwb3J0IHZhciBoYWxmUGkgPSBwaSAvIDI7XG5leHBvcnQgdmFyIHRhdSA9IDIgKiBwaTtcblxuZXhwb3J0IGZ1bmN0aW9uIGFjb3MoeCkge1xuICByZXR1cm4geCA+IDEgPyAwIDogeCA8IC0xID8gcGkgOiBNYXRoLmFjb3MoeCk7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBhc2luKHgpIHtcbiAgcmV0dXJuIHggPj0gMSA/IGhhbGZQaSA6IHggPD0gLTEgPyAtaGFsZlBpIDogTWF0aC5hc2luKHgpO1xufVxuIl0sIm1hcHBpbmdzIjoiQUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTsiLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///./node_modules/vega-label/node_modules/d3-shape/src/math.js\n");

/***/ }),

/***/ "./node_modules/vega-label/node_modules/d3-shape/src/noop.js":
/*!*******************************************************************!*\
  !*** ./node_modules/vega-label/node_modules/d3-shape/src/noop.js ***!
  \*******************************************************************/
/*! exports provided: default */
/***/ (function(module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony default export */ __webpack_exports__[\"default\"] = (function() {});\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvdmVnYS1sYWJlbC9ub2RlX21vZHVsZXMvZDMtc2hhcGUvc3JjL25vb3AuanMuanMiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvdmVnYS1sYWJlbC9ub2RlX21vZHVsZXMvZDMtc2hhcGUvc3JjL25vb3AuanM/OWVmZSJdLCJzb3VyY2VzQ29udGVudCI6WyJleHBvcnQgZGVmYXVsdCBmdW5jdGlvbigpIHt9XG4iXSwibWFwcGluZ3MiOiJBQUFBO0FBQUE7Iiwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///./node_modules/vega-label/node_modules/d3-shape/src/noop.js\n");

/***/ }),

/***/ "./node_modules/vega-label/node_modules/d3-shape/src/offset/diverging.js":
/*!*******************************************************************************!*\
  !*** ./node_modules/vega-label/node_modules/d3-shape/src/offset/diverging.js ***!
  \*******************************************************************************/
/*! exports provided: default */
/***/ (function(module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony default export */ __webpack_exports__[\"default\"] = (function(series, order) {\n  if (!((n = series.length) > 0)) return;\n  for (var i, j = 0, d, dy, yp, yn, n, m = series[order[0]].length; j < m; ++j) {\n    for (yp = yn = 0, i = 0; i < n; ++i) {\n      if ((dy = (d = series[order[i]][j])[1] - d[0]) > 0) {\n        d[0] = yp, d[1] = yp += dy;\n      } else if (dy < 0) {\n        d[1] = yn, d[0] = yn += dy;\n      } else {\n        d[0] = 0, d[1] = dy;\n      }\n    }\n  }\n});\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvdmVnYS1sYWJlbC9ub2RlX21vZHVsZXMvZDMtc2hhcGUvc3JjL29mZnNldC9kaXZlcmdpbmcuanMuanMiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvdmVnYS1sYWJlbC9ub2RlX21vZHVsZXMvZDMtc2hhcGUvc3JjL29mZnNldC9kaXZlcmdpbmcuanM/NWY0NCJdLCJzb3VyY2VzQ29udGVudCI6WyJleHBvcnQgZGVmYXVsdCBmdW5jdGlvbihzZXJpZXMsIG9yZGVyKSB7XG4gIGlmICghKChuID0gc2VyaWVzLmxlbmd0aCkgPiAwKSkgcmV0dXJuO1xuICBmb3IgKHZhciBpLCBqID0gMCwgZCwgZHksIHlwLCB5biwgbiwgbSA9IHNlcmllc1tvcmRlclswXV0ubGVuZ3RoOyBqIDwgbTsgKytqKSB7XG4gICAgZm9yICh5cCA9IHluID0gMCwgaSA9IDA7IGkgPCBuOyArK2kpIHtcbiAgICAgIGlmICgoZHkgPSAoZCA9IHNlcmllc1tvcmRlcltpXV1bal0pWzFdIC0gZFswXSkgPiAwKSB7XG4gICAgICAgIGRbMF0gPSB5cCwgZFsxXSA9IHlwICs9IGR5O1xuICAgICAgfSBlbHNlIGlmIChkeSA8IDApIHtcbiAgICAgICAgZFsxXSA9IHluLCBkWzBdID0geW4gKz0gZHk7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICBkWzBdID0gMCwgZFsxXSA9IGR5O1xuICAgICAgfVxuICAgIH1cbiAgfVxufVxuIl0sIm1hcHBpbmdzIjoiQUFBQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7Iiwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///./node_modules/vega-label/node_modules/d3-shape/src/offset/diverging.js\n");

/***/ }),

/***/ "./node_modules/vega-label/node_modules/d3-shape/src/offset/expand.js":
/*!****************************************************************************!*\
  !*** ./node_modules/vega-label/node_modules/d3-shape/src/offset/expand.js ***!
  \****************************************************************************/
/*! exports provided: default */
/***/ (function(module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _none_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./none.js */ \"./node_modules/vega-label/node_modules/d3-shape/src/offset/none.js\");\n\n\n/* harmony default export */ __webpack_exports__[\"default\"] = (function(series, order) {\n  if (!((n = series.length) > 0)) return;\n  for (var i, n, j = 0, m = series[0].length, y; j < m; ++j) {\n    for (y = i = 0; i < n; ++i) y += series[i][j][1] || 0;\n    if (y) for (i = 0; i < n; ++i) series[i][j][1] /= y;\n  }\n  Object(_none_js__WEBPACK_IMPORTED_MODULE_0__[\"default\"])(series, order);\n});\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvdmVnYS1sYWJlbC9ub2RlX21vZHVsZXMvZDMtc2hhcGUvc3JjL29mZnNldC9leHBhbmQuanMuanMiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvdmVnYS1sYWJlbC9ub2RlX21vZHVsZXMvZDMtc2hhcGUvc3JjL29mZnNldC9leHBhbmQuanM/YWQ2NSJdLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgbm9uZSBmcm9tIFwiLi9ub25lLmpzXCI7XG5cbmV4cG9ydCBkZWZhdWx0IGZ1bmN0aW9uKHNlcmllcywgb3JkZXIpIHtcbiAgaWYgKCEoKG4gPSBzZXJpZXMubGVuZ3RoKSA+IDApKSByZXR1cm47XG4gIGZvciAodmFyIGksIG4sIGogPSAwLCBtID0gc2VyaWVzWzBdLmxlbmd0aCwgeTsgaiA8IG07ICsraikge1xuICAgIGZvciAoeSA9IGkgPSAwOyBpIDwgbjsgKytpKSB5ICs9IHNlcmllc1tpXVtqXVsxXSB8fCAwO1xuICAgIGlmICh5KSBmb3IgKGkgPSAwOyBpIDwgbjsgKytpKSBzZXJpZXNbaV1bal1bMV0gLz0geTtcbiAgfVxuICBub25lKHNlcmllcywgb3JkZXIpO1xufVxuIl0sIm1hcHBpbmdzIjoiQUFBQTtBQUFBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7Iiwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///./node_modules/vega-label/node_modules/d3-shape/src/offset/expand.js\n");

/***/ }),

/***/ "./node_modules/vega-label/node_modules/d3-shape/src/offset/none.js":
/*!**************************************************************************!*\
  !*** ./node_modules/vega-label/node_modules/d3-shape/src/offset/none.js ***!
  \**************************************************************************/
/*! exports provided: default */
/***/ (function(module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony default export */ __webpack_exports__[\"default\"] = (function(series, order) {\n  if (!((n = series.length) > 1)) return;\n  for (var i = 1, j, s0, s1 = series[order[0]], n, m = s1.length; i < n; ++i) {\n    s0 = s1, s1 = series[order[i]];\n    for (j = 0; j < m; ++j) {\n      s1[j][1] += s1[j][0] = isNaN(s0[j][1]) ? s0[j][0] : s0[j][1];\n    }\n  }\n});\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvdmVnYS1sYWJlbC9ub2RlX21vZHVsZXMvZDMtc2hhcGUvc3JjL29mZnNldC9ub25lLmpzLmpzIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL3ZlZ2EtbGFiZWwvbm9kZV9tb2R1bGVzL2QzLXNoYXBlL3NyYy9vZmZzZXQvbm9uZS5qcz9hNDU2Il0sInNvdXJjZXNDb250ZW50IjpbImV4cG9ydCBkZWZhdWx0IGZ1bmN0aW9uKHNlcmllcywgb3JkZXIpIHtcbiAgaWYgKCEoKG4gPSBzZXJpZXMubGVuZ3RoKSA+IDEpKSByZXR1cm47XG4gIGZvciAodmFyIGkgPSAxLCBqLCBzMCwgczEgPSBzZXJpZXNbb3JkZXJbMF1dLCBuLCBtID0gczEubGVuZ3RoOyBpIDwgbjsgKytpKSB7XG4gICAgczAgPSBzMSwgczEgPSBzZXJpZXNbb3JkZXJbaV1dO1xuICAgIGZvciAoaiA9IDA7IGogPCBtOyArK2opIHtcbiAgICAgIHMxW2pdWzFdICs9IHMxW2pdWzBdID0gaXNOYU4oczBbal1bMV0pID8gczBbal1bMF0gOiBzMFtqXVsxXTtcbiAgICB9XG4gIH1cbn1cbiJdLCJtYXBwaW5ncyI6IkFBQUE7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7Iiwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///./node_modules/vega-label/node_modules/d3-shape/src/offset/none.js\n");

/***/ }),

/***/ "./node_modules/vega-label/node_modules/d3-shape/src/offset/silhouette.js":
/*!********************************************************************************!*\
  !*** ./node_modules/vega-label/node_modules/d3-shape/src/offset/silhouette.js ***!
  \********************************************************************************/
/*! exports provided: default */
/***/ (function(module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _none_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./none.js */ \"./node_modules/vega-label/node_modules/d3-shape/src/offset/none.js\");\n\n\n/* harmony default export */ __webpack_exports__[\"default\"] = (function(series, order) {\n  if (!((n = series.length) > 0)) return;\n  for (var j = 0, s0 = series[order[0]], n, m = s0.length; j < m; ++j) {\n    for (var i = 0, y = 0; i < n; ++i) y += series[i][j][1] || 0;\n    s0[j][1] += s0[j][0] = -y / 2;\n  }\n  Object(_none_js__WEBPACK_IMPORTED_MODULE_0__[\"default\"])(series, order);\n});\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvdmVnYS1sYWJlbC9ub2RlX21vZHVsZXMvZDMtc2hhcGUvc3JjL29mZnNldC9zaWxob3VldHRlLmpzLmpzIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL3ZlZ2EtbGFiZWwvbm9kZV9tb2R1bGVzL2QzLXNoYXBlL3NyYy9vZmZzZXQvc2lsaG91ZXR0ZS5qcz81MjdmIl0sInNvdXJjZXNDb250ZW50IjpbImltcG9ydCBub25lIGZyb20gXCIuL25vbmUuanNcIjtcblxuZXhwb3J0IGRlZmF1bHQgZnVuY3Rpb24oc2VyaWVzLCBvcmRlcikge1xuICBpZiAoISgobiA9IHNlcmllcy5sZW5ndGgpID4gMCkpIHJldHVybjtcbiAgZm9yICh2YXIgaiA9IDAsIHMwID0gc2VyaWVzW29yZGVyWzBdXSwgbiwgbSA9IHMwLmxlbmd0aDsgaiA8IG07ICsraikge1xuICAgIGZvciAodmFyIGkgPSAwLCB5ID0gMDsgaSA8IG47ICsraSkgeSArPSBzZXJpZXNbaV1bal1bMV0gfHwgMDtcbiAgICBzMFtqXVsxXSArPSBzMFtqXVswXSA9IC15IC8gMjtcbiAgfVxuICBub25lKHNlcmllcywgb3JkZXIpO1xufVxuIl0sIm1hcHBpbmdzIjoiQUFBQTtBQUFBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7Iiwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///./node_modules/vega-label/node_modules/d3-shape/src/offset/silhouette.js\n");

/***/ }),

/***/ "./node_modules/vega-label/node_modules/d3-shape/src/offset/wiggle.js":
/*!****************************************************************************!*\
  !*** ./node_modules/vega-label/node_modules/d3-shape/src/offset/wiggle.js ***!
  \****************************************************************************/
/*! exports provided: default */
/***/ (function(module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _none_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./none.js */ \"./node_modules/vega-label/node_modules/d3-shape/src/offset/none.js\");\n\n\n/* harmony default export */ __webpack_exports__[\"default\"] = (function(series, order) {\n  if (!((n = series.length) > 0) || !((m = (s0 = series[order[0]]).length) > 0)) return;\n  for (var y = 0, j = 1, s0, m, n; j < m; ++j) {\n    for (var i = 0, s1 = 0, s2 = 0; i < n; ++i) {\n      var si = series[order[i]],\n          sij0 = si[j][1] || 0,\n          sij1 = si[j - 1][1] || 0,\n          s3 = (sij0 - sij1) / 2;\n      for (var k = 0; k < i; ++k) {\n        var sk = series[order[k]],\n            skj0 = sk[j][1] || 0,\n            skj1 = sk[j - 1][1] || 0;\n        s3 += skj0 - skj1;\n      }\n      s1 += sij0, s2 += s3 * sij0;\n    }\n    s0[j - 1][1] += s0[j - 1][0] = y;\n    if (s1) y -= s2 / s1;\n  }\n  s0[j - 1][1] += s0[j - 1][0] = y;\n  Object(_none_js__WEBPACK_IMPORTED_MODULE_0__[\"default\"])(series, order);\n});\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvdmVnYS1sYWJlbC9ub2RlX21vZHVsZXMvZDMtc2hhcGUvc3JjL29mZnNldC93aWdnbGUuanMuanMiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvdmVnYS1sYWJlbC9ub2RlX21vZHVsZXMvZDMtc2hhcGUvc3JjL29mZnNldC93aWdnbGUuanM/MWU2MCJdLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgbm9uZSBmcm9tIFwiLi9ub25lLmpzXCI7XG5cbmV4cG9ydCBkZWZhdWx0IGZ1bmN0aW9uKHNlcmllcywgb3JkZXIpIHtcbiAgaWYgKCEoKG4gPSBzZXJpZXMubGVuZ3RoKSA+IDApIHx8ICEoKG0gPSAoczAgPSBzZXJpZXNbb3JkZXJbMF1dKS5sZW5ndGgpID4gMCkpIHJldHVybjtcbiAgZm9yICh2YXIgeSA9IDAsIGogPSAxLCBzMCwgbSwgbjsgaiA8IG07ICsraikge1xuICAgIGZvciAodmFyIGkgPSAwLCBzMSA9IDAsIHMyID0gMDsgaSA8IG47ICsraSkge1xuICAgICAgdmFyIHNpID0gc2VyaWVzW29yZGVyW2ldXSxcbiAgICAgICAgICBzaWowID0gc2lbal1bMV0gfHwgMCxcbiAgICAgICAgICBzaWoxID0gc2lbaiAtIDFdWzFdIHx8IDAsXG4gICAgICAgICAgczMgPSAoc2lqMCAtIHNpajEpIC8gMjtcbiAgICAgIGZvciAodmFyIGsgPSAwOyBrIDwgaTsgKytrKSB7XG4gICAgICAgIHZhciBzayA9IHNlcmllc1tvcmRlcltrXV0sXG4gICAgICAgICAgICBza2owID0gc2tbal1bMV0gfHwgMCxcbiAgICAgICAgICAgIHNrajEgPSBza1tqIC0gMV1bMV0gfHwgMDtcbiAgICAgICAgczMgKz0gc2tqMCAtIHNrajE7XG4gICAgICB9XG4gICAgICBzMSArPSBzaWowLCBzMiArPSBzMyAqIHNpajA7XG4gICAgfVxuICAgIHMwW2ogLSAxXVsxXSArPSBzMFtqIC0gMV1bMF0gPSB5O1xuICAgIGlmIChzMSkgeSAtPSBzMiAvIHMxO1xuICB9XG4gIHMwW2ogLSAxXVsxXSArPSBzMFtqIC0gMV1bMF0gPSB5O1xuICBub25lKHNlcmllcywgb3JkZXIpO1xufVxuIl0sIm1hcHBpbmdzIjoiQUFBQTtBQUFBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOyIsInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///./node_modules/vega-label/node_modules/d3-shape/src/offset/wiggle.js\n");

/***/ }),

/***/ "./node_modules/vega-label/node_modules/d3-shape/src/order/appearance.js":
/*!*******************************************************************************!*\
  !*** ./node_modules/vega-label/node_modules/d3-shape/src/order/appearance.js ***!
  \*******************************************************************************/
/*! exports provided: default */
/***/ (function(module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _none_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./none.js */ \"./node_modules/vega-label/node_modules/d3-shape/src/order/none.js\");\n\n\n/* harmony default export */ __webpack_exports__[\"default\"] = (function(series) {\n  var peaks = series.map(peak);\n  return Object(_none_js__WEBPACK_IMPORTED_MODULE_0__[\"default\"])(series).sort(function(a, b) { return peaks[a] - peaks[b]; });\n});\n\nfunction peak(series) {\n  var i = -1, j = 0, n = series.length, vi, vj = -Infinity;\n  while (++i < n) if ((vi = +series[i][1]) > vj) vj = vi, j = i;\n  return j;\n}\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvdmVnYS1sYWJlbC9ub2RlX21vZHVsZXMvZDMtc2hhcGUvc3JjL29yZGVyL2FwcGVhcmFuY2UuanMuanMiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvdmVnYS1sYWJlbC9ub2RlX21vZHVsZXMvZDMtc2hhcGUvc3JjL29yZGVyL2FwcGVhcmFuY2UuanM/YzcyNyJdLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgbm9uZSBmcm9tIFwiLi9ub25lLmpzXCI7XG5cbmV4cG9ydCBkZWZhdWx0IGZ1bmN0aW9uKHNlcmllcykge1xuICB2YXIgcGVha3MgPSBzZXJpZXMubWFwKHBlYWspO1xuICByZXR1cm4gbm9uZShzZXJpZXMpLnNvcnQoZnVuY3Rpb24oYSwgYikgeyByZXR1cm4gcGVha3NbYV0gLSBwZWFrc1tiXTsgfSk7XG59XG5cbmZ1bmN0aW9uIHBlYWsoc2VyaWVzKSB7XG4gIHZhciBpID0gLTEsIGogPSAwLCBuID0gc2VyaWVzLmxlbmd0aCwgdmksIHZqID0gLUluZmluaXR5O1xuICB3aGlsZSAoKytpIDwgbikgaWYgKCh2aSA9ICtzZXJpZXNbaV1bMV0pID4gdmopIHZqID0gdmksIGogPSBpO1xuICByZXR1cm4gajtcbn1cbiJdLCJtYXBwaW5ncyI6IkFBQUE7QUFBQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTsiLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///./node_modules/vega-label/node_modules/d3-shape/src/order/appearance.js\n");

/***/ }),

/***/ "./node_modules/vega-label/node_modules/d3-shape/src/order/ascending.js":
/*!******************************************************************************!*\
  !*** ./node_modules/vega-label/node_modules/d3-shape/src/order/ascending.js ***!
  \******************************************************************************/
/*! exports provided: default, sum */
/***/ (function(module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"sum\", function() { return sum; });\n/* harmony import */ var _none_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./none.js */ \"./node_modules/vega-label/node_modules/d3-shape/src/order/none.js\");\n\n\n/* harmony default export */ __webpack_exports__[\"default\"] = (function(series) {\n  var sums = series.map(sum);\n  return Object(_none_js__WEBPACK_IMPORTED_MODULE_0__[\"default\"])(series).sort(function(a, b) { return sums[a] - sums[b]; });\n});\n\nfunction sum(series) {\n  var s = 0, i = -1, n = series.length, v;\n  while (++i < n) if (v = +series[i][1]) s += v;\n  return s;\n}\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvdmVnYS1sYWJlbC9ub2RlX21vZHVsZXMvZDMtc2hhcGUvc3JjL29yZGVyL2FzY2VuZGluZy5qcy5qcyIsInNvdXJjZXMiOlsid2VicGFjazovLy8uL25vZGVfbW9kdWxlcy92ZWdhLWxhYmVsL25vZGVfbW9kdWxlcy9kMy1zaGFwZS9zcmMvb3JkZXIvYXNjZW5kaW5nLmpzP2NiMDgiXSwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IG5vbmUgZnJvbSBcIi4vbm9uZS5qc1wiO1xuXG5leHBvcnQgZGVmYXVsdCBmdW5jdGlvbihzZXJpZXMpIHtcbiAgdmFyIHN1bXMgPSBzZXJpZXMubWFwKHN1bSk7XG4gIHJldHVybiBub25lKHNlcmllcykuc29ydChmdW5jdGlvbihhLCBiKSB7IHJldHVybiBzdW1zW2FdIC0gc3Vtc1tiXTsgfSk7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBzdW0oc2VyaWVzKSB7XG4gIHZhciBzID0gMCwgaSA9IC0xLCBuID0gc2VyaWVzLmxlbmd0aCwgdjtcbiAgd2hpbGUgKCsraSA8IG4pIGlmICh2ID0gK3Nlcmllc1tpXVsxXSkgcyArPSB2O1xuICByZXR1cm4gcztcbn1cbiJdLCJtYXBwaW5ncyI6IkFBQUE7QUFBQTtBQUFBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOyIsInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///./node_modules/vega-label/node_modules/d3-shape/src/order/ascending.js\n");

/***/ }),

/***/ "./node_modules/vega-label/node_modules/d3-shape/src/order/descending.js":
/*!*******************************************************************************!*\
  !*** ./node_modules/vega-label/node_modules/d3-shape/src/order/descending.js ***!
  \*******************************************************************************/
/*! exports provided: default */
/***/ (function(module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _ascending_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./ascending.js */ \"./node_modules/vega-label/node_modules/d3-shape/src/order/ascending.js\");\n\n\n/* harmony default export */ __webpack_exports__[\"default\"] = (function(series) {\n  return Object(_ascending_js__WEBPACK_IMPORTED_MODULE_0__[\"default\"])(series).reverse();\n});\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvdmVnYS1sYWJlbC9ub2RlX21vZHVsZXMvZDMtc2hhcGUvc3JjL29yZGVyL2Rlc2NlbmRpbmcuanMuanMiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvdmVnYS1sYWJlbC9ub2RlX21vZHVsZXMvZDMtc2hhcGUvc3JjL29yZGVyL2Rlc2NlbmRpbmcuanM/OTI4ZCJdLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgYXNjZW5kaW5nIGZyb20gXCIuL2FzY2VuZGluZy5qc1wiO1xuXG5leHBvcnQgZGVmYXVsdCBmdW5jdGlvbihzZXJpZXMpIHtcbiAgcmV0dXJuIGFzY2VuZGluZyhzZXJpZXMpLnJldmVyc2UoKTtcbn1cbiJdLCJtYXBwaW5ncyI6IkFBQUE7QUFBQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7Iiwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///./node_modules/vega-label/node_modules/d3-shape/src/order/descending.js\n");

/***/ }),

/***/ "./node_modules/vega-label/node_modules/d3-shape/src/order/insideOut.js":
/*!******************************************************************************!*\
  !*** ./node_modules/vega-label/node_modules/d3-shape/src/order/insideOut.js ***!
  \******************************************************************************/
/*! exports provided: default */
/***/ (function(module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _appearance_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./appearance.js */ \"./node_modules/vega-label/node_modules/d3-shape/src/order/appearance.js\");\n/* harmony import */ var _ascending_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./ascending.js */ \"./node_modules/vega-label/node_modules/d3-shape/src/order/ascending.js\");\n\n\n\n/* harmony default export */ __webpack_exports__[\"default\"] = (function(series) {\n  var n = series.length,\n      i,\n      j,\n      sums = series.map(_ascending_js__WEBPACK_IMPORTED_MODULE_1__[\"sum\"]),\n      order = Object(_appearance_js__WEBPACK_IMPORTED_MODULE_0__[\"default\"])(series),\n      top = 0,\n      bottom = 0,\n      tops = [],\n      bottoms = [];\n\n  for (i = 0; i < n; ++i) {\n    j = order[i];\n    if (top < bottom) {\n      top += sums[j];\n      tops.push(j);\n    } else {\n      bottom += sums[j];\n      bottoms.push(j);\n    }\n  }\n\n  return bottoms.reverse().concat(tops);\n});\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvdmVnYS1sYWJlbC9ub2RlX21vZHVsZXMvZDMtc2hhcGUvc3JjL29yZGVyL2luc2lkZU91dC5qcy5qcyIsInNvdXJjZXMiOlsid2VicGFjazovLy8uL25vZGVfbW9kdWxlcy92ZWdhLWxhYmVsL25vZGVfbW9kdWxlcy9kMy1zaGFwZS9zcmMvb3JkZXIvaW5zaWRlT3V0LmpzPzA0OTUiXSwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IGFwcGVhcmFuY2UgZnJvbSBcIi4vYXBwZWFyYW5jZS5qc1wiO1xuaW1wb3J0IHtzdW19IGZyb20gXCIuL2FzY2VuZGluZy5qc1wiO1xuXG5leHBvcnQgZGVmYXVsdCBmdW5jdGlvbihzZXJpZXMpIHtcbiAgdmFyIG4gPSBzZXJpZXMubGVuZ3RoLFxuICAgICAgaSxcbiAgICAgIGosXG4gICAgICBzdW1zID0gc2VyaWVzLm1hcChzdW0pLFxuICAgICAgb3JkZXIgPSBhcHBlYXJhbmNlKHNlcmllcyksXG4gICAgICB0b3AgPSAwLFxuICAgICAgYm90dG9tID0gMCxcbiAgICAgIHRvcHMgPSBbXSxcbiAgICAgIGJvdHRvbXMgPSBbXTtcblxuICBmb3IgKGkgPSAwOyBpIDwgbjsgKytpKSB7XG4gICAgaiA9IG9yZGVyW2ldO1xuICAgIGlmICh0b3AgPCBib3R0b20pIHtcbiAgICAgIHRvcCArPSBzdW1zW2pdO1xuICAgICAgdG9wcy5wdXNoKGopO1xuICAgIH0gZWxzZSB7XG4gICAgICBib3R0b20gKz0gc3Vtc1tqXTtcbiAgICAgIGJvdHRvbXMucHVzaChqKTtcbiAgICB9XG4gIH1cblxuICByZXR1cm4gYm90dG9tcy5yZXZlcnNlKCkuY29uY2F0KHRvcHMpO1xufVxuIl0sIm1hcHBpbmdzIjoiQUFBQTtBQUFBO0FBQUE7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7Iiwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///./node_modules/vega-label/node_modules/d3-shape/src/order/insideOut.js\n");

/***/ }),

/***/ "./node_modules/vega-label/node_modules/d3-shape/src/order/none.js":
/*!*************************************************************************!*\
  !*** ./node_modules/vega-label/node_modules/d3-shape/src/order/none.js ***!
  \*************************************************************************/
/*! exports provided: default */
/***/ (function(module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony default export */ __webpack_exports__[\"default\"] = (function(series) {\n  var n = series.length, o = new Array(n);\n  while (--n >= 0) o[n] = n;\n  return o;\n});\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvdmVnYS1sYWJlbC9ub2RlX21vZHVsZXMvZDMtc2hhcGUvc3JjL29yZGVyL25vbmUuanMuanMiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvdmVnYS1sYWJlbC9ub2RlX21vZHVsZXMvZDMtc2hhcGUvc3JjL29yZGVyL25vbmUuanM/MDUyOSJdLCJzb3VyY2VzQ29udGVudCI6WyJleHBvcnQgZGVmYXVsdCBmdW5jdGlvbihzZXJpZXMpIHtcbiAgdmFyIG4gPSBzZXJpZXMubGVuZ3RoLCBvID0gbmV3IEFycmF5KG4pO1xuICB3aGlsZSAoLS1uID49IDApIG9bbl0gPSBuO1xuICByZXR1cm4gbztcbn1cbiJdLCJtYXBwaW5ncyI6IkFBQUE7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOyIsInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///./node_modules/vega-label/node_modules/d3-shape/src/order/none.js\n");

/***/ }),

/***/ "./node_modules/vega-label/node_modules/d3-shape/src/order/reverse.js":
/*!****************************************************************************!*\
  !*** ./node_modules/vega-label/node_modules/d3-shape/src/order/reverse.js ***!
  \****************************************************************************/
/*! exports provided: default */
/***/ (function(module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _none_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./none.js */ \"./node_modules/vega-label/node_modules/d3-shape/src/order/none.js\");\n\n\n/* harmony default export */ __webpack_exports__[\"default\"] = (function(series) {\n  return Object(_none_js__WEBPACK_IMPORTED_MODULE_0__[\"default\"])(series).reverse();\n});\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvdmVnYS1sYWJlbC9ub2RlX21vZHVsZXMvZDMtc2hhcGUvc3JjL29yZGVyL3JldmVyc2UuanMuanMiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvdmVnYS1sYWJlbC9ub2RlX21vZHVsZXMvZDMtc2hhcGUvc3JjL29yZGVyL3JldmVyc2UuanM/M2UzOSJdLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgbm9uZSBmcm9tIFwiLi9ub25lLmpzXCI7XG5cbmV4cG9ydCBkZWZhdWx0IGZ1bmN0aW9uKHNlcmllcykge1xuICByZXR1cm4gbm9uZShzZXJpZXMpLnJldmVyc2UoKTtcbn1cbiJdLCJtYXBwaW5ncyI6IkFBQUE7QUFBQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7Iiwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///./node_modules/vega-label/node_modules/d3-shape/src/order/reverse.js\n");

/***/ }),

/***/ "./node_modules/vega-label/node_modules/d3-shape/src/pie.js":
/*!******************************************************************!*\
  !*** ./node_modules/vega-label/node_modules/d3-shape/src/pie.js ***!
  \******************************************************************/
/*! exports provided: default */
/***/ (function(module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _array_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./array.js */ \"./node_modules/vega-label/node_modules/d3-shape/src/array.js\");\n/* harmony import */ var _constant_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./constant.js */ \"./node_modules/vega-label/node_modules/d3-shape/src/constant.js\");\n/* harmony import */ var _descending_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./descending.js */ \"./node_modules/vega-label/node_modules/d3-shape/src/descending.js\");\n/* harmony import */ var _identity_js__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ./identity.js */ \"./node_modules/vega-label/node_modules/d3-shape/src/identity.js\");\n/* harmony import */ var _math_js__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ./math.js */ \"./node_modules/vega-label/node_modules/d3-shape/src/math.js\");\n\n\n\n\n\n\n/* harmony default export */ __webpack_exports__[\"default\"] = (function() {\n  var value = _identity_js__WEBPACK_IMPORTED_MODULE_3__[\"default\"],\n      sortValues = _descending_js__WEBPACK_IMPORTED_MODULE_2__[\"default\"],\n      sort = null,\n      startAngle = Object(_constant_js__WEBPACK_IMPORTED_MODULE_1__[\"default\"])(0),\n      endAngle = Object(_constant_js__WEBPACK_IMPORTED_MODULE_1__[\"default\"])(_math_js__WEBPACK_IMPORTED_MODULE_4__[\"tau\"]),\n      padAngle = Object(_constant_js__WEBPACK_IMPORTED_MODULE_1__[\"default\"])(0);\n\n  function pie(data) {\n    var i,\n        n = (data = Object(_array_js__WEBPACK_IMPORTED_MODULE_0__[\"default\"])(data)).length,\n        j,\n        k,\n        sum = 0,\n        index = new Array(n),\n        arcs = new Array(n),\n        a0 = +startAngle.apply(this, arguments),\n        da = Math.min(_math_js__WEBPACK_IMPORTED_MODULE_4__[\"tau\"], Math.max(-_math_js__WEBPACK_IMPORTED_MODULE_4__[\"tau\"], endAngle.apply(this, arguments) - a0)),\n        a1,\n        p = Math.min(Math.abs(da) / n, padAngle.apply(this, arguments)),\n        pa = p * (da < 0 ? -1 : 1),\n        v;\n\n    for (i = 0; i < n; ++i) {\n      if ((v = arcs[index[i] = i] = +value(data[i], i, data)) > 0) {\n        sum += v;\n      }\n    }\n\n    // Optionally sort the arcs by previously-computed values or by data.\n    if (sortValues != null) index.sort(function(i, j) { return sortValues(arcs[i], arcs[j]); });\n    else if (sort != null) index.sort(function(i, j) { return sort(data[i], data[j]); });\n\n    // Compute the arcs! They are stored in the original data's order.\n    for (i = 0, k = sum ? (da - n * pa) / sum : 0; i < n; ++i, a0 = a1) {\n      j = index[i], v = arcs[j], a1 = a0 + (v > 0 ? v * k : 0) + pa, arcs[j] = {\n        data: data[j],\n        index: i,\n        value: v,\n        startAngle: a0,\n        endAngle: a1,\n        padAngle: p\n      };\n    }\n\n    return arcs;\n  }\n\n  pie.value = function(_) {\n    return arguments.length ? (value = typeof _ === \"function\" ? _ : Object(_constant_js__WEBPACK_IMPORTED_MODULE_1__[\"default\"])(+_), pie) : value;\n  };\n\n  pie.sortValues = function(_) {\n    return arguments.length ? (sortValues = _, sort = null, pie) : sortValues;\n  };\n\n  pie.sort = function(_) {\n    return arguments.length ? (sort = _, sortValues = null, pie) : sort;\n  };\n\n  pie.startAngle = function(_) {\n    return arguments.length ? (startAngle = typeof _ === \"function\" ? _ : Object(_constant_js__WEBPACK_IMPORTED_MODULE_1__[\"default\"])(+_), pie) : startAngle;\n  };\n\n  pie.endAngle = function(_) {\n    return arguments.length ? (endAngle = typeof _ === \"function\" ? _ : Object(_constant_js__WEBPACK_IMPORTED_MODULE_1__[\"default\"])(+_), pie) : endAngle;\n  };\n\n  pie.padAngle = function(_) {\n    return arguments.length ? (padAngle = typeof _ === \"function\" ? _ : Object(_constant_js__WEBPACK_IMPORTED_MODULE_1__[\"default\"])(+_), pie) : padAngle;\n  };\n\n  return pie;\n});\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,[encoded data, 4200 characters]\n//# sourceURL=webpack-internal:///./node_modules/vega-label/node_modules/d3-shape/src/pie.js\n");

/***/ }),

/***/ "./node_modules/vega-label/node_modules/d3-shape/src/point.js":
/*!********************************************************************!*\
  !*** ./node_modules/vega-label/node_modules/d3-shape/src/point.js ***!
  \********************************************************************/
/*! exports provided: x, y */
/***/ (function(module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"x\", function() { return x; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"y\", function() { return y; });\nfunction x(p) {\n  return p[0];\n}\n\nfunction y(p) {\n  return p[1];\n}\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvdmVnYS1sYWJlbC9ub2RlX21vZHVsZXMvZDMtc2hhcGUvc3JjL3BvaW50LmpzLmpzIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL3ZlZ2EtbGFiZWwvbm9kZV9tb2R1bGVzL2QzLXNoYXBlL3NyYy9wb2ludC5qcz9kYTk2Il0sInNvdXJjZXNDb250ZW50IjpbImV4cG9ydCBmdW5jdGlvbiB4KHApIHtcbiAgcmV0dXJuIHBbMF07XG59XG5cbmV4cG9ydCBmdW5jdGlvbiB5KHApIHtcbiAgcmV0dXJuIHBbMV07XG59XG4iXSwibWFwcGluZ3MiOiJBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOyIsInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///./node_modules/vega-label/node_modules/d3-shape/src/point.js\n");

/***/ }),

/***/ "./node_modules/vega-label/node_modules/d3-shape/src/pointRadial.js":
/*!**************************************************************************!*\
  !*** ./node_modules/vega-label/node_modules/d3-shape/src/pointRadial.js ***!
  \**************************************************************************/
/*! exports provided: default */
/***/ (function(module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony default export */ __webpack_exports__[\"default\"] = (function(x, y) {\n  return [(y = +y) * Math.cos(x -= Math.PI / 2), y * Math.sin(x)];\n});\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvdmVnYS1sYWJlbC9ub2RlX21vZHVsZXMvZDMtc2hhcGUvc3JjL3BvaW50UmFkaWFsLmpzLmpzIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL3ZlZ2EtbGFiZWwvbm9kZV9tb2R1bGVzL2QzLXNoYXBlL3NyYy9wb2ludFJhZGlhbC5qcz9jYzgzIl0sInNvdXJjZXNDb250ZW50IjpbImV4cG9ydCBkZWZhdWx0IGZ1bmN0aW9uKHgsIHkpIHtcbiAgcmV0dXJuIFsoeSA9ICt5KSAqIE1hdGguY29zKHggLT0gTWF0aC5QSSAvIDIpLCB5ICogTWF0aC5zaW4oeCldO1xufVxuIl0sIm1hcHBpbmdzIjoiQUFBQTtBQUFBO0FBQ0E7QUFDQTsiLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///./node_modules/vega-label/node_modules/d3-shape/src/pointRadial.js\n");

/***/ }),

/***/ "./node_modules/vega-label/node_modules/d3-shape/src/stack.js":
/*!********************************************************************!*\
  !*** ./node_modules/vega-label/node_modules/d3-shape/src/stack.js ***!
  \********************************************************************/
/*! exports provided: default */
/***/ (function(module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _array_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./array.js */ \"./node_modules/vega-label/node_modules/d3-shape/src/array.js\");\n/* harmony import */ var _constant_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./constant.js */ \"./node_modules/vega-label/node_modules/d3-shape/src/constant.js\");\n/* harmony import */ var _offset_none_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./offset/none.js */ \"./node_modules/vega-label/node_modules/d3-shape/src/offset/none.js\");\n/* harmony import */ var _order_none_js__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ./order/none.js */ \"./node_modules/vega-label/node_modules/d3-shape/src/order/none.js\");\n\n\n\n\n\nfunction stackValue(d, key) {\n  return d[key];\n}\n\nfunction stackSeries(key) {\n  const series = [];\n  series.key = key;\n  return series;\n}\n\n/* harmony default export */ __webpack_exports__[\"default\"] = (function() {\n  var keys = Object(_constant_js__WEBPACK_IMPORTED_MODULE_1__[\"default\"])([]),\n      order = _order_none_js__WEBPACK_IMPORTED_MODULE_3__[\"default\"],\n      offset = _offset_none_js__WEBPACK_IMPORTED_MODULE_2__[\"default\"],\n      value = stackValue;\n\n  function stack(data) {\n    var sz = Array.from(keys.apply(this, arguments), stackSeries),\n        i, n = sz.length, j = -1,\n        oz;\n\n    for (const d of data) {\n      for (i = 0, ++j; i < n; ++i) {\n        (sz[i][j] = [0, +value(d, sz[i].key, j, data)]).data = d;\n      }\n    }\n\n    for (i = 0, oz = Object(_array_js__WEBPACK_IMPORTED_MODULE_0__[\"default\"])(order(sz)); i < n; ++i) {\n      sz[oz[i]].index = i;\n    }\n\n    offset(sz, oz);\n    return sz;\n  }\n\n  stack.keys = function(_) {\n    return arguments.length ? (keys = typeof _ === \"function\" ? _ : Object(_constant_js__WEBPACK_IMPORTED_MODULE_1__[\"default\"])(Array.from(_)), stack) : keys;\n  };\n\n  stack.value = function(_) {\n    return arguments.length ? (value = typeof _ === \"function\" ? _ : Object(_constant_js__WEBPACK_IMPORTED_MODULE_1__[\"default\"])(+_), stack) : value;\n  };\n\n  stack.order = function(_) {\n    return arguments.length ? (order = _ == null ? _order_none_js__WEBPACK_IMPORTED_MODULE_3__[\"default\"] : typeof _ === \"function\" ? _ : Object(_constant_js__WEBPACK_IMPORTED_MODULE_1__[\"default\"])(Array.from(_)), stack) : order;\n  };\n\n  stack.offset = function(_) {\n    return arguments.length ? (offset = _ == null ? _offset_none_js__WEBPACK_IMPORTED_MODULE_2__[\"default\"] : _, stack) : offset;\n  };\n\n  return stack;\n});\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvdmVnYS1sYWJlbC9ub2RlX21vZHVsZXMvZDMtc2hhcGUvc3JjL3N0YWNrLmpzLmpzIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL3ZlZ2EtbGFiZWwvbm9kZV9tb2R1bGVzL2QzLXNoYXBlL3NyYy9zdGFjay5qcz9lY2I0Il0sInNvdXJjZXNDb250ZW50IjpbImltcG9ydCBhcnJheSBmcm9tIFwiLi9hcnJheS5qc1wiO1xuaW1wb3J0IGNvbnN0YW50IGZyb20gXCIuL2NvbnN0YW50LmpzXCI7XG5pbXBvcnQgb2Zmc2V0Tm9uZSBmcm9tIFwiLi9vZmZzZXQvbm9uZS5qc1wiO1xuaW1wb3J0IG9yZGVyTm9uZSBmcm9tIFwiLi9vcmRlci9ub25lLmpzXCI7XG5cbmZ1bmN0aW9uIHN0YWNrVmFsdWUoZCwga2V5KSB7XG4gIHJldHVybiBkW2tleV07XG59XG5cbmZ1bmN0aW9uIHN0YWNrU2VyaWVzKGtleSkge1xuICBjb25zdCBzZXJpZXMgPSBbXTtcbiAgc2VyaWVzLmtleSA9IGtleTtcbiAgcmV0dXJuIHNlcmllcztcbn1cblxuZXhwb3J0IGRlZmF1bHQgZnVuY3Rpb24oKSB7XG4gIHZhciBrZXlzID0gY29uc3RhbnQoW10pLFxuICAgICAgb3JkZXIgPSBvcmRlck5vbmUsXG4gICAgICBvZmZzZXQgPSBvZmZzZXROb25lLFxuICAgICAgdmFsdWUgPSBzdGFja1ZhbHVlO1xuXG4gIGZ1bmN0aW9uIHN0YWNrKGRhdGEpIHtcbiAgICB2YXIgc3ogPSBBcnJheS5mcm9tKGtleXMuYXBwbHkodGhpcywgYXJndW1lbnRzKSwgc3RhY2tTZXJpZXMpLFxuICAgICAgICBpLCBuID0gc3oubGVuZ3RoLCBqID0gLTEsXG4gICAgICAgIG96O1xuXG4gICAgZm9yIChjb25zdCBkIG9mIGRhdGEpIHtcbiAgICAgIGZvciAoaSA9IDAsICsrajsgaSA8IG47ICsraSkge1xuICAgICAgICAoc3pbaV1bal0gPSBbMCwgK3ZhbHVlKGQsIHN6W2ldLmtleSwgaiwgZGF0YSldKS5kYXRhID0gZDtcbiAgICAgIH1cbiAgICB9XG5cbiAgICBmb3IgKGkgPSAwLCBveiA9IGFycmF5KG9yZGVyKHN6KSk7IGkgPCBuOyArK2kpIHtcbiAgICAgIHN6W296W2ldXS5pbmRleCA9IGk7XG4gICAgfVxuXG4gICAgb2Zmc2V0KHN6LCBveik7XG4gICAgcmV0dXJuIHN6O1xuICB9XG5cbiAgc3RhY2sua2V5cyA9IGZ1bmN0aW9uKF8pIHtcbiAgICByZXR1cm4gYXJndW1lbnRzLmxlbmd0aCA/IChrZXlzID0gdHlwZW9mIF8gPT09IFwiZnVuY3Rpb25cIiA/IF8gOiBjb25zdGFudChBcnJheS5mcm9tKF8pKSwgc3RhY2spIDoga2V5cztcbiAgfTtcblxuICBzdGFjay52YWx1ZSA9IGZ1bmN0aW9uKF8pIHtcbiAgICByZXR1cm4gYXJndW1lbnRzLmxlbmd0aCA/ICh2YWx1ZSA9IHR5cGVvZiBfID09PSBcImZ1bmN0aW9uXCIgPyBfIDogY29uc3RhbnQoK18pLCBzdGFjaykgOiB2YWx1ZTtcbiAgfTtcblxuICBzdGFjay5vcmRlciA9IGZ1bmN0aW9uKF8pIHtcbiAgICByZXR1cm4gYXJndW1lbnRzLmxlbmd0aCA/IChvcmRlciA9IF8gPT0gbnVsbCA/IG9yZGVyTm9uZSA6IHR5cGVvZiBfID09PSBcImZ1bmN0aW9uXCIgPyBfIDogY29uc3RhbnQoQXJyYXkuZnJvbShfKSksIHN0YWNrKSA6IG9yZGVyO1xuICB9O1xuXG4gIHN0YWNrLm9mZnNldCA9IGZ1bmN0aW9uKF8pIHtcbiAgICByZXR1cm4gYXJndW1lbnRzLmxlbmd0aCA/IChvZmZzZXQgPSBfID09IG51bGwgPyBvZmZzZXROb25lIDogXywgc3RhY2spIDogb2Zmc2V0O1xuICB9O1xuXG4gIHJldHVybiBzdGFjaztcbn1cbiJdLCJtYXBwaW5ncyI6IkFBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOyIsInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///./node_modules/vega-label/node_modules/d3-shape/src/stack.js\n");

/***/ }),

/***/ "./node_modules/vega-label/node_modules/d3-shape/src/symbol.js":
/*!*********************************************************************!*\
  !*** ./node_modules/vega-label/node_modules/d3-shape/src/symbol.js ***!
  \*********************************************************************/
/*! exports provided: symbols, default */
/***/ (function(module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"symbols\", function() { return symbols; });\n/* harmony import */ var d3_path__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! d3-path */ \"./node_modules/vega-label/node_modules/d3-path/src/index.js\");\n/* harmony import */ var _symbol_circle_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./symbol/circle.js */ \"./node_modules/vega-label/node_modules/d3-shape/src/symbol/circle.js\");\n/* harmony import */ var _symbol_cross_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./symbol/cross.js */ \"./node_modules/vega-label/node_modules/d3-shape/src/symbol/cross.js\");\n/* harmony import */ var _symbol_diamond_js__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ./symbol/diamond.js */ \"./node_modules/vega-label/node_modules/d3-shape/src/symbol/diamond.js\");\n/* harmony import */ var _symbol_star_js__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ./symbol/star.js */ \"./node_modules/vega-label/node_modules/d3-shape/src/symbol/star.js\");\n/* harmony import */ var _symbol_square_js__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! ./symbol/square.js */ \"./node_modules/vega-label/node_modules/d3-shape/src/symbol/square.js\");\n/* harmony import */ var _symbol_triangle_js__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! ./symbol/triangle.js */ \"./node_modules/vega-label/node_modules/d3-shape/src/symbol/triangle.js\");\n/* harmony import */ var _symbol_wye_js__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! ./symbol/wye.js */ \"./node_modules/vega-label/node_modules/d3-shape/src/symbol/wye.js\");\n/* harmony import */ var _constant_js__WEBPACK_IMPORTED_MODULE_8__ = __webpack_require__(/*! ./constant.js */ \"./node_modules/vega-label/node_modules/d3-shape/src/constant.js\");\n\n\n\n\n\n\n\n\n\n\nvar symbols = [\n  _symbol_circle_js__WEBPACK_IMPORTED_MODULE_1__[\"default\"],\n  _symbol_cross_js__WEBPACK_IMPORTED_MODULE_2__[\"default\"],\n  _symbol_diamond_js__WEBPACK_IMPORTED_MODULE_3__[\"default\"],\n  _symbol_square_js__WEBPACK_IMPORTED_MODULE_5__[\"default\"],\n  _symbol_star_js__WEBPACK_IMPORTED_MODULE_4__[\"default\"],\n  _symbol_triangle_js__WEBPACK_IMPORTED_MODULE_6__[\"default\"],\n  _symbol_wye_js__WEBPACK_IMPORTED_MODULE_7__[\"default\"]\n];\n\n/* harmony default export */ __webpack_exports__[\"default\"] = (function(type, size) {\n  var context = null;\n  type = typeof type === \"function\" ? type : Object(_constant_js__WEBPACK_IMPORTED_MODULE_8__[\"default\"])(type || _symbol_circle_js__WEBPACK_IMPORTED_MODULE_1__[\"default\"]);\n  size = typeof size === \"function\" ? size : Object(_constant_js__WEBPACK_IMPORTED_MODULE_8__[\"default\"])(size === undefined ? 64 : +size);\n\n  function symbol() {\n    var buffer;\n    if (!context) context = buffer = Object(d3_path__WEBPACK_IMPORTED_MODULE_0__[\"path\"])();\n    type.apply(this, arguments).draw(context, +size.apply(this, arguments));\n    if (buffer) return context = null, buffer + \"\" || null;\n  }\n\n  symbol.type = function(_) {\n    return arguments.length ? (type = typeof _ === \"function\" ? _ : Object(_constant_js__WEBPACK_IMPORTED_MODULE_8__[\"default\"])(_), symbol) : type;\n  };\n\n  symbol.size = function(_) {\n    return arguments.length ? (size = typeof _ === \"function\" ? _ : Object(_constant_js__WEBPACK_IMPORTED_MODULE_8__[\"default\"])(+_), symbol) : size;\n  };\n\n  symbol.context = function(_) {\n    return arguments.length ? (context = _ == null ? null : _, symbol) : context;\n  };\n\n  return symbol;\n});\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvdmVnYS1sYWJlbC9ub2RlX21vZHVsZXMvZDMtc2hhcGUvc3JjL3N5bWJvbC5qcy5qcyIsInNvdXJjZXMiOlsid2VicGFjazovLy8uL25vZGVfbW9kdWxlcy92ZWdhLWxhYmVsL25vZGVfbW9kdWxlcy9kMy1zaGFwZS9zcmMvc3ltYm9sLmpzPzY5YTgiXSwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtwYXRofSBmcm9tIFwiZDMtcGF0aFwiO1xuaW1wb3J0IGNpcmNsZSBmcm9tIFwiLi9zeW1ib2wvY2lyY2xlLmpzXCI7XG5pbXBvcnQgY3Jvc3MgZnJvbSBcIi4vc3ltYm9sL2Nyb3NzLmpzXCI7XG5pbXBvcnQgZGlhbW9uZCBmcm9tIFwiLi9zeW1ib2wvZGlhbW9uZC5qc1wiO1xuaW1wb3J0IHN0YXIgZnJvbSBcIi4vc3ltYm9sL3N0YXIuanNcIjtcbmltcG9ydCBzcXVhcmUgZnJvbSBcIi4vc3ltYm9sL3NxdWFyZS5qc1wiO1xuaW1wb3J0IHRyaWFuZ2xlIGZyb20gXCIuL3N5bWJvbC90cmlhbmdsZS5qc1wiO1xuaW1wb3J0IHd5ZSBmcm9tIFwiLi9zeW1ib2wvd3llLmpzXCI7XG5pbXBvcnQgY29uc3RhbnQgZnJvbSBcIi4vY29uc3RhbnQuanNcIjtcblxuZXhwb3J0IHZhciBzeW1ib2xzID0gW1xuICBjaXJjbGUsXG4gIGNyb3NzLFxuICBkaWFtb25kLFxuICBzcXVhcmUsXG4gIHN0YXIsXG4gIHRyaWFuZ2xlLFxuICB3eWVcbl07XG5cbmV4cG9ydCBkZWZhdWx0IGZ1bmN0aW9uKHR5cGUsIHNpemUpIHtcbiAgdmFyIGNvbnRleHQgPSBudWxsO1xuICB0eXBlID0gdHlwZW9mIHR5cGUgPT09IFwiZnVuY3Rpb25cIiA/IHR5cGUgOiBjb25zdGFudCh0eXBlIHx8IGNpcmNsZSk7XG4gIHNpemUgPSB0eXBlb2Ygc2l6ZSA9PT0gXCJmdW5jdGlvblwiID8gc2l6ZSA6IGNvbnN0YW50KHNpemUgPT09IHVuZGVmaW5lZCA/IDY0IDogK3NpemUpO1xuXG4gIGZ1bmN0aW9uIHN5bWJvbCgpIHtcbiAgICB2YXIgYnVmZmVyO1xuICAgIGlmICghY29udGV4dCkgY29udGV4dCA9IGJ1ZmZlciA9IHBhdGgoKTtcbiAgICB0eXBlLmFwcGx5KHRoaXMsIGFyZ3VtZW50cykuZHJhdyhjb250ZXh0LCArc2l6ZS5hcHBseSh0aGlzLCBhcmd1bWVudHMpKTtcbiAgICBpZiAoYnVmZmVyKSByZXR1cm4gY29udGV4dCA9IG51bGwsIGJ1ZmZlciArIFwiXCIgfHwgbnVsbDtcbiAgfVxuXG4gIHN5bWJvbC50eXBlID0gZnVuY3Rpb24oXykge1xuICAgIHJldHVybiBhcmd1bWVudHMubGVuZ3RoID8gKHR5cGUgPSB0eXBlb2YgXyA9PT0gXCJmdW5jdGlvblwiID8gXyA6IGNvbnN0YW50KF8pLCBzeW1ib2wpIDogdHlwZTtcbiAgfTtcblxuICBzeW1ib2wuc2l6ZSA9IGZ1bmN0aW9uKF8pIHtcbiAgICByZXR1cm4gYXJndW1lbnRzLmxlbmd0aCA/IChzaXplID0gdHlwZW9mIF8gPT09IFwiZnVuY3Rpb25cIiA/IF8gOiBjb25zdGFudCgrXyksIHN5bWJvbCkgOiBzaXplO1xuICB9O1xuXG4gIHN5bWJvbC5jb250ZXh0ID0gZnVuY3Rpb24oXykge1xuICAgIHJldHVybiBhcmd1bWVudHMubGVuZ3RoID8gKGNvbnRleHQgPSBfID09IG51bGwgPyBudWxsIDogXywgc3ltYm9sKSA6IGNvbnRleHQ7XG4gIH07XG5cbiAgcmV0dXJuIHN5bWJvbDtcbn1cbiJdLCJtYXBwaW5ncyI6IkFBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOyIsInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///./node_modules/vega-label/node_modules/d3-shape/src/symbol.js\n");

/***/ }),

/***/ "./node_modules/vega-label/node_modules/d3-shape/src/symbol/circle.js":
/*!****************************************************************************!*\
  !*** ./node_modules/vega-label/node_modules/d3-shape/src/symbol/circle.js ***!
  \****************************************************************************/
/*! exports provided: default */
/***/ (function(module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _math_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../math.js */ \"./node_modules/vega-label/node_modules/d3-shape/src/math.js\");\n\n\n/* harmony default export */ __webpack_exports__[\"default\"] = ({\n  draw: function(context, size) {\n    var r = Math.sqrt(size / _math_js__WEBPACK_IMPORTED_MODULE_0__[\"pi\"]);\n    context.moveTo(r, 0);\n    context.arc(0, 0, r, 0, _math_js__WEBPACK_IMPORTED_MODULE_0__[\"tau\"]);\n  }\n});\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvdmVnYS1sYWJlbC9ub2RlX21vZHVsZXMvZDMtc2hhcGUvc3JjL3N5bWJvbC9jaXJjbGUuanMuanMiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvdmVnYS1sYWJlbC9ub2RlX21vZHVsZXMvZDMtc2hhcGUvc3JjL3N5bWJvbC9jaXJjbGUuanM/YzA3NyJdLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge3BpLCB0YXV9IGZyb20gXCIuLi9tYXRoLmpzXCI7XG5cbmV4cG9ydCBkZWZhdWx0IHtcbiAgZHJhdzogZnVuY3Rpb24oY29udGV4dCwgc2l6ZSkge1xuICAgIHZhciByID0gTWF0aC5zcXJ0KHNpemUgLyBwaSk7XG4gICAgY29udGV4dC5tb3ZlVG8ociwgMCk7XG4gICAgY29udGV4dC5hcmMoMCwgMCwgciwgMCwgdGF1KTtcbiAgfVxufTtcbiJdLCJtYXBwaW5ncyI6IkFBQUE7QUFBQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTsiLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///./node_modules/vega-label/node_modules/d3-shape/src/symbol/circle.js\n");

/***/ }),

/***/ "./node_modules/vega-label/node_modules/d3-shape/src/symbol/cross.js":
/*!***************************************************************************!*\
  !*** ./node_modules/vega-label/node_modules/d3-shape/src/symbol/cross.js ***!
  \***************************************************************************/
/*! exports provided: default */
/***/ (function(module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony default export */ __webpack_exports__[\"default\"] = ({\n  draw: function(context, size) {\n    var r = Math.sqrt(size / 5) / 2;\n    context.moveTo(-3 * r, -r);\n    context.lineTo(-r, -r);\n    context.lineTo(-r, -3 * r);\n    context.lineTo(r, -3 * r);\n    context.lineTo(r, -r);\n    context.lineTo(3 * r, -r);\n    context.lineTo(3 * r, r);\n    context.lineTo(r, r);\n    context.lineTo(r, 3 * r);\n    context.lineTo(-r, 3 * r);\n    context.lineTo(-r, r);\n    context.lineTo(-3 * r, r);\n    context.closePath();\n  }\n});\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvdmVnYS1sYWJlbC9ub2RlX21vZHVsZXMvZDMtc2hhcGUvc3JjL3N5bWJvbC9jcm9zcy5qcy5qcyIsInNvdXJjZXMiOlsid2VicGFjazovLy8uL25vZGVfbW9kdWxlcy92ZWdhLWxhYmVsL25vZGVfbW9kdWxlcy9kMy1zaGFwZS9zcmMvc3ltYm9sL2Nyb3NzLmpzPzkxM2EiXSwic291cmNlc0NvbnRlbnQiOlsiZXhwb3J0IGRlZmF1bHQge1xuICBkcmF3OiBmdW5jdGlvbihjb250ZXh0LCBzaXplKSB7XG4gICAgdmFyIHIgPSBNYXRoLnNxcnQoc2l6ZSAvIDUpIC8gMjtcbiAgICBjb250ZXh0Lm1vdmVUbygtMyAqIHIsIC1yKTtcbiAgICBjb250ZXh0LmxpbmVUbygtciwgLXIpO1xuICAgIGNvbnRleHQubGluZVRvKC1yLCAtMyAqIHIpO1xuICAgIGNvbnRleHQubGluZVRvKHIsIC0zICogcik7XG4gICAgY29udGV4dC5saW5lVG8ociwgLXIpO1xuICAgIGNvbnRleHQubGluZVRvKDMgKiByLCAtcik7XG4gICAgY29udGV4dC5saW5lVG8oMyAqIHIsIHIpO1xuICAgIGNvbnRleHQubGluZVRvKHIsIHIpO1xuICAgIGNvbnRleHQubGluZVRvKHIsIDMgKiByKTtcbiAgICBjb250ZXh0LmxpbmVUbygtciwgMyAqIHIpO1xuICAgIGNvbnRleHQubGluZVRvKC1yLCByKTtcbiAgICBjb250ZXh0LmxpbmVUbygtMyAqIHIsIHIpO1xuICAgIGNvbnRleHQuY2xvc2VQYXRoKCk7XG4gIH1cbn07XG4iXSwibWFwcGluZ3MiOiJBQUFBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOyIsInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///./node_modules/vega-label/node_modules/d3-shape/src/symbol/cross.js\n");

/***/ }),

/***/ "./node_modules/vega-label/node_modules/d3-shape/src/symbol/diamond.js":
/*!*****************************************************************************!*\
  !*** ./node_modules/vega-label/node_modules/d3-shape/src/symbol/diamond.js ***!
  \*****************************************************************************/
/*! exports provided: default */
/***/ (function(module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\nvar tan30 = Math.sqrt(1 / 3),\n    tan30_2 = tan30 * 2;\n\n/* harmony default export */ __webpack_exports__[\"default\"] = ({\n  draw: function(context, size) {\n    var y = Math.sqrt(size / tan30_2),\n        x = y * tan30;\n    context.moveTo(0, -y);\n    context.lineTo(x, 0);\n    context.lineTo(0, y);\n    context.lineTo(-x, 0);\n    context.closePath();\n  }\n});\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvdmVnYS1sYWJlbC9ub2RlX21vZHVsZXMvZDMtc2hhcGUvc3JjL3N5bWJvbC9kaWFtb25kLmpzLmpzIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL3ZlZ2EtbGFiZWwvbm9kZV9tb2R1bGVzL2QzLXNoYXBlL3NyYy9zeW1ib2wvZGlhbW9uZC5qcz9kN2E3Il0sInNvdXJjZXNDb250ZW50IjpbInZhciB0YW4zMCA9IE1hdGguc3FydCgxIC8gMyksXG4gICAgdGFuMzBfMiA9IHRhbjMwICogMjtcblxuZXhwb3J0IGRlZmF1bHQge1xuICBkcmF3OiBmdW5jdGlvbihjb250ZXh0LCBzaXplKSB7XG4gICAgdmFyIHkgPSBNYXRoLnNxcnQoc2l6ZSAvIHRhbjMwXzIpLFxuICAgICAgICB4ID0geSAqIHRhbjMwO1xuICAgIGNvbnRleHQubW92ZVRvKDAsIC15KTtcbiAgICBjb250ZXh0LmxpbmVUbyh4LCAwKTtcbiAgICBjb250ZXh0LmxpbmVUbygwLCB5KTtcbiAgICBjb250ZXh0LmxpbmVUbygteCwgMCk7XG4gICAgY29udGV4dC5jbG9zZVBhdGgoKTtcbiAgfVxufTtcbiJdLCJtYXBwaW5ncyI6IkFBQUE7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOyIsInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///./node_modules/vega-label/node_modules/d3-shape/src/symbol/diamond.js\n");

/***/ }),

/***/ "./node_modules/vega-label/node_modules/d3-shape/src/symbol/square.js":
/*!****************************************************************************!*\
  !*** ./node_modules/vega-label/node_modules/d3-shape/src/symbol/square.js ***!
  \****************************************************************************/
/*! exports provided: default */
/***/ (function(module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony default export */ __webpack_exports__[\"default\"] = ({\n  draw: function(context, size) {\n    var w = Math.sqrt(size),\n        x = -w / 2;\n    context.rect(x, x, w, w);\n  }\n});\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvdmVnYS1sYWJlbC9ub2RlX21vZHVsZXMvZDMtc2hhcGUvc3JjL3N5bWJvbC9zcXVhcmUuanMuanMiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvdmVnYS1sYWJlbC9ub2RlX21vZHVsZXMvZDMtc2hhcGUvc3JjL3N5bWJvbC9zcXVhcmUuanM/NjEyOSJdLCJzb3VyY2VzQ29udGVudCI6WyJleHBvcnQgZGVmYXVsdCB7XG4gIGRyYXc6IGZ1bmN0aW9uKGNvbnRleHQsIHNpemUpIHtcbiAgICB2YXIgdyA9IE1hdGguc3FydChzaXplKSxcbiAgICAgICAgeCA9IC13IC8gMjtcbiAgICBjb250ZXh0LnJlY3QoeCwgeCwgdywgdyk7XG4gIH1cbn07XG4iXSwibWFwcGluZ3MiOiJBQUFBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7Iiwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///./node_modules/vega-label/node_modules/d3-shape/src/symbol/square.js\n");

/***/ }),

/***/ "./node_modules/vega-label/node_modules/d3-shape/src/symbol/star.js":
/*!**************************************************************************!*\
  !*** ./node_modules/vega-label/node_modules/d3-shape/src/symbol/star.js ***!
  \**************************************************************************/
/*! exports provided: default */
/***/ (function(module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _math_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../math.js */ \"./node_modules/vega-label/node_modules/d3-shape/src/math.js\");\n\n\nvar ka = 0.89081309152928522810,\n    kr = Math.sin(_math_js__WEBPACK_IMPORTED_MODULE_0__[\"pi\"] / 10) / Math.sin(7 * _math_js__WEBPACK_IMPORTED_MODULE_0__[\"pi\"] / 10),\n    kx = Math.sin(_math_js__WEBPACK_IMPORTED_MODULE_0__[\"tau\"] / 10) * kr,\n    ky = -Math.cos(_math_js__WEBPACK_IMPORTED_MODULE_0__[\"tau\"] / 10) * kr;\n\n/* harmony default export */ __webpack_exports__[\"default\"] = ({\n  draw: function(context, size) {\n    var r = Math.sqrt(size * ka),\n        x = kx * r,\n        y = ky * r;\n    context.moveTo(0, -r);\n    context.lineTo(x, y);\n    for (var i = 1; i < 5; ++i) {\n      var a = _math_js__WEBPACK_IMPORTED_MODULE_0__[\"tau\"] * i / 5,\n          c = Math.cos(a),\n          s = Math.sin(a);\n      context.lineTo(s * r, -c * r);\n      context.lineTo(c * x - s * y, s * x + c * y);\n    }\n    context.closePath();\n  }\n});\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvdmVnYS1sYWJlbC9ub2RlX21vZHVsZXMvZDMtc2hhcGUvc3JjL3N5bWJvbC9zdGFyLmpzLmpzIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL3ZlZ2EtbGFiZWwvbm9kZV9tb2R1bGVzL2QzLXNoYXBlL3NyYy9zeW1ib2wvc3Rhci5qcz83MDJlIl0sInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7cGksIHRhdX0gZnJvbSBcIi4uL21hdGguanNcIjtcblxudmFyIGthID0gMC44OTA4MTMwOTE1MjkyODUyMjgxMCxcbiAgICBrciA9IE1hdGguc2luKHBpIC8gMTApIC8gTWF0aC5zaW4oNyAqIHBpIC8gMTApLFxuICAgIGt4ID0gTWF0aC5zaW4odGF1IC8gMTApICoga3IsXG4gICAga3kgPSAtTWF0aC5jb3ModGF1IC8gMTApICoga3I7XG5cbmV4cG9ydCBkZWZhdWx0IHtcbiAgZHJhdzogZnVuY3Rpb24oY29udGV4dCwgc2l6ZSkge1xuICAgIHZhciByID0gTWF0aC5zcXJ0KHNpemUgKiBrYSksXG4gICAgICAgIHggPSBreCAqIHIsXG4gICAgICAgIHkgPSBreSAqIHI7XG4gICAgY29udGV4dC5tb3ZlVG8oMCwgLXIpO1xuICAgIGNvbnRleHQubGluZVRvKHgsIHkpO1xuICAgIGZvciAodmFyIGkgPSAxOyBpIDwgNTsgKytpKSB7XG4gICAgICB2YXIgYSA9IHRhdSAqIGkgLyA1LFxuICAgICAgICAgIGMgPSBNYXRoLmNvcyhhKSxcbiAgICAgICAgICBzID0gTWF0aC5zaW4oYSk7XG4gICAgICBjb250ZXh0LmxpbmVUbyhzICogciwgLWMgKiByKTtcbiAgICAgIGNvbnRleHQubGluZVRvKGMgKiB4IC0gcyAqIHksIHMgKiB4ICsgYyAqIHkpO1xuICAgIH1cbiAgICBjb250ZXh0LmNsb3NlUGF0aCgpO1xuICB9XG59O1xuIl0sIm1hcHBpbmdzIjoiQUFBQTtBQUFBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOyIsInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///./node_modules/vega-label/node_modules/d3-shape/src/symbol/star.js\n");

/***/ }),

/***/ "./node_modules/vega-label/node_modules/d3-shape/src/symbol/triangle.js":
/*!******************************************************************************!*\
  !*** ./node_modules/vega-label/node_modules/d3-shape/src/symbol/triangle.js ***!
  \******************************************************************************/
/*! exports provided: default */
/***/ (function(module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\nvar sqrt3 = Math.sqrt(3);\n\n/* harmony default export */ __webpack_exports__[\"default\"] = ({\n  draw: function(context, size) {\n    var y = -Math.sqrt(size / (sqrt3 * 3));\n    context.moveTo(0, y * 2);\n    context.lineTo(-sqrt3 * y, -y);\n    context.lineTo(sqrt3 * y, -y);\n    context.closePath();\n  }\n});\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvdmVnYS1sYWJlbC9ub2RlX21vZHVsZXMvZDMtc2hhcGUvc3JjL3N5bWJvbC90cmlhbmdsZS5qcy5qcyIsInNvdXJjZXMiOlsid2VicGFjazovLy8uL25vZGVfbW9kdWxlcy92ZWdhLWxhYmVsL25vZGVfbW9kdWxlcy9kMy1zaGFwZS9zcmMvc3ltYm9sL3RyaWFuZ2xlLmpzP2NhNjgiXSwic291cmNlc0NvbnRlbnQiOlsidmFyIHNxcnQzID0gTWF0aC5zcXJ0KDMpO1xuXG5leHBvcnQgZGVmYXVsdCB7XG4gIGRyYXc6IGZ1bmN0aW9uKGNvbnRleHQsIHNpemUpIHtcbiAgICB2YXIgeSA9IC1NYXRoLnNxcnQoc2l6ZSAvIChzcXJ0MyAqIDMpKTtcbiAgICBjb250ZXh0Lm1vdmVUbygwLCB5ICogMik7XG4gICAgY29udGV4dC5saW5lVG8oLXNxcnQzICogeSwgLXkpO1xuICAgIGNvbnRleHQubGluZVRvKHNxcnQzICogeSwgLXkpO1xuICAgIGNvbnRleHQuY2xvc2VQYXRoKCk7XG4gIH1cbn07XG4iXSwibWFwcGluZ3MiOiJBQUFBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTsiLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///./node_modules/vega-label/node_modules/d3-shape/src/symbol/triangle.js\n");

/***/ }),

/***/ "./node_modules/vega-label/node_modules/d3-shape/src/symbol/wye.js":
/*!*************************************************************************!*\
  !*** ./node_modules/vega-label/node_modules/d3-shape/src/symbol/wye.js ***!
  \*************************************************************************/
/*! exports provided: default */
/***/ (function(module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\nvar c = -0.5,\n    s = Math.sqrt(3) / 2,\n    k = 1 / Math.sqrt(12),\n    a = (k / 2 + 1) * 3;\n\n/* harmony default export */ __webpack_exports__[\"default\"] = ({\n  draw: function(context, size) {\n    var r = Math.sqrt(size / a),\n        x0 = r / 2,\n        y0 = r * k,\n        x1 = x0,\n        y1 = r * k + r,\n        x2 = -x1,\n        y2 = y1;\n    context.moveTo(x0, y0);\n    context.lineTo(x1, y1);\n    context.lineTo(x2, y2);\n    context.lineTo(c * x0 - s * y0, s * x0 + c * y0);\n    context.lineTo(c * x1 - s * y1, s * x1 + c * y1);\n    context.lineTo(c * x2 - s * y2, s * x2 + c * y2);\n    context.lineTo(c * x0 + s * y0, c * y0 - s * x0);\n    context.lineTo(c * x1 + s * y1, c * y1 - s * x1);\n    context.lineTo(c * x2 + s * y2, c * y2 - s * x2);\n    context.closePath();\n  }\n});\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvdmVnYS1sYWJlbC9ub2RlX21vZHVsZXMvZDMtc2hhcGUvc3JjL3N5bWJvbC93eWUuanMuanMiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvdmVnYS1sYWJlbC9ub2RlX21vZHVsZXMvZDMtc2hhcGUvc3JjL3N5bWJvbC93eWUuanM/NjhmYSJdLCJzb3VyY2VzQ29udGVudCI6WyJ2YXIgYyA9IC0wLjUsXG4gICAgcyA9IE1hdGguc3FydCgzKSAvIDIsXG4gICAgayA9IDEgLyBNYXRoLnNxcnQoMTIpLFxuICAgIGEgPSAoayAvIDIgKyAxKSAqIDM7XG5cbmV4cG9ydCBkZWZhdWx0IHtcbiAgZHJhdzogZnVuY3Rpb24oY29udGV4dCwgc2l6ZSkge1xuICAgIHZhciByID0gTWF0aC5zcXJ0KHNpemUgLyBhKSxcbiAgICAgICAgeDAgPSByIC8gMixcbiAgICAgICAgeTAgPSByICogayxcbiAgICAgICAgeDEgPSB4MCxcbiAgICAgICAgeTEgPSByICogayArIHIsXG4gICAgICAgIHgyID0gLXgxLFxuICAgICAgICB5MiA9IHkxO1xuICAgIGNvbnRleHQubW92ZVRvKHgwLCB5MCk7XG4gICAgY29udGV4dC5saW5lVG8oeDEsIHkxKTtcbiAgICBjb250ZXh0LmxpbmVUbyh4MiwgeTIpO1xuICAgIGNvbnRleHQubGluZVRvKGMgKiB4MCAtIHMgKiB5MCwgcyAqIHgwICsgYyAqIHkwKTtcbiAgICBjb250ZXh0LmxpbmVUbyhjICogeDEgLSBzICogeTEsIHMgKiB4MSArIGMgKiB5MSk7XG4gICAgY29udGV4dC5saW5lVG8oYyAqIHgyIC0gcyAqIHkyLCBzICogeDIgKyBjICogeTIpO1xuICAgIGNvbnRleHQubGluZVRvKGMgKiB4MCArIHMgKiB5MCwgYyAqIHkwIC0gcyAqIHgwKTtcbiAgICBjb250ZXh0LmxpbmVUbyhjICogeDEgKyBzICogeTEsIGMgKiB5MSAtIHMgKiB4MSk7XG4gICAgY29udGV4dC5saW5lVG8oYyAqIHgyICsgcyAqIHkyLCBjICogeTIgLSBzICogeDIpO1xuICAgIGNvbnRleHQuY2xvc2VQYXRoKCk7XG4gIH1cbn07XG4iXSwibWFwcGluZ3MiOiJBQUFBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTsiLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///./node_modules/vega-label/node_modules/d3-shape/src/symbol/wye.js\n");

/***/ }),

/***/ "./node_modules/vega-label/node_modules/d3-time-format/src/defaultLocale.js":
/*!**********************************************************************************!*\
  !*** ./node_modules/vega-label/node_modules/d3-time-format/src/defaultLocale.js ***!
  \**********************************************************************************/
/*! exports provided: timeFormat, timeParse, utcFormat, utcParse, default */
/***/ (function(module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"timeFormat\", function() { return timeFormat; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"timeParse\", function() { return timeParse; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"utcFormat\", function() { return utcFormat; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"utcParse\", function() { return utcParse; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"default\", function() { return defaultLocale; });\n/* harmony import */ var _locale_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./locale.js */ \"./node_modules/vega-label/node_modules/d3-time-format/src/locale.js\");\n\n\nvar locale;\nvar timeFormat;\nvar timeParse;\nvar utcFormat;\nvar utcParse;\n\ndefaultLocale({\n  dateTime: \"%x, %X\",\n  date: \"%-m/%-d/%Y\",\n  time: \"%-I:%M:%S %p\",\n  periods: [\"AM\", \"PM\"],\n  days: [\"Sunday\", \"Monday\", \"Tuesday\", \"Wednesday\", \"Thursday\", \"Friday\", \"Saturday\"],\n  shortDays: [\"Sun\", \"Mon\", \"Tue\", \"Wed\", \"Thu\", \"Fri\", \"Sat\"],\n  months: [\"January\", \"February\", \"March\", \"April\", \"May\", \"June\", \"July\", \"August\", \"September\", \"October\", \"November\", \"December\"],\n  shortMonths: [\"Jan\", \"Feb\", \"Mar\", \"Apr\", \"May\", \"Jun\", \"Jul\", \"Aug\", \"Sep\", \"Oct\", \"Nov\", \"Dec\"]\n});\n\nfunction defaultLocale(definition) {\n  locale = Object(_locale_js__WEBPACK_IMPORTED_MODULE_0__[\"default\"])(definition);\n  timeFormat = locale.format;\n  timeParse = locale.parse;\n  utcFormat = locale.utcFormat;\n  utcParse = locale.utcParse;\n  return locale;\n}\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvdmVnYS1sYWJlbC9ub2RlX21vZHVsZXMvZDMtdGltZS1mb3JtYXQvc3JjL2RlZmF1bHRMb2NhbGUuanMuanMiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvdmVnYS1sYWJlbC9ub2RlX21vZHVsZXMvZDMtdGltZS1mb3JtYXQvc3JjL2RlZmF1bHRMb2NhbGUuanM/ODhlZSJdLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgZm9ybWF0TG9jYWxlIGZyb20gXCIuL2xvY2FsZS5qc1wiO1xuXG52YXIgbG9jYWxlO1xuZXhwb3J0IHZhciB0aW1lRm9ybWF0O1xuZXhwb3J0IHZhciB0aW1lUGFyc2U7XG5leHBvcnQgdmFyIHV0Y0Zvcm1hdDtcbmV4cG9ydCB2YXIgdXRjUGFyc2U7XG5cbmRlZmF1bHRMb2NhbGUoe1xuICBkYXRlVGltZTogXCIleCwgJVhcIixcbiAgZGF0ZTogXCIlLW0vJS1kLyVZXCIsXG4gIHRpbWU6IFwiJS1JOiVNOiVTICVwXCIsXG4gIHBlcmlvZHM6IFtcIkFNXCIsIFwiUE1cIl0sXG4gIGRheXM6IFtcIlN1bmRheVwiLCBcIk1vbmRheVwiLCBcIlR1ZXNkYXlcIiwgXCJXZWRuZXNkYXlcIiwgXCJUaHVyc2RheVwiLCBcIkZyaWRheVwiLCBcIlNhdHVyZGF5XCJdLFxuICBzaG9ydERheXM6IFtcIlN1blwiLCBcIk1vblwiLCBcIlR1ZVwiLCBcIldlZFwiLCBcIlRodVwiLCBcIkZyaVwiLCBcIlNhdFwiXSxcbiAgbW9udGhzOiBbXCJKYW51YXJ5XCIsIFwiRmVicnVhcnlcIiwgXCJNYXJjaFwiLCBcIkFwcmlsXCIsIFwiTWF5XCIsIFwiSnVuZVwiLCBcIkp1bHlcIiwgXCJBdWd1c3RcIiwgXCJTZXB0ZW1iZXJcIiwgXCJPY3RvYmVyXCIsIFwiTm92ZW1iZXJcIiwgXCJEZWNlbWJlclwiXSxcbiAgc2hvcnRNb250aHM6IFtcIkphblwiLCBcIkZlYlwiLCBcIk1hclwiLCBcIkFwclwiLCBcIk1heVwiLCBcIkp1blwiLCBcIkp1bFwiLCBcIkF1Z1wiLCBcIlNlcFwiLCBcIk9jdFwiLCBcIk5vdlwiLCBcIkRlY1wiXVxufSk7XG5cbmV4cG9ydCBkZWZhdWx0IGZ1bmN0aW9uIGRlZmF1bHRMb2NhbGUoZGVmaW5pdGlvbikge1xuICBsb2NhbGUgPSBmb3JtYXRMb2NhbGUoZGVmaW5pdGlvbik7XG4gIHRpbWVGb3JtYXQgPSBsb2NhbGUuZm9ybWF0O1xuICB0aW1lUGFyc2UgPSBsb2NhbGUucGFyc2U7XG4gIHV0Y0Zvcm1hdCA9IGxvY2FsZS51dGNGb3JtYXQ7XG4gIHV0Y1BhcnNlID0gbG9jYWxlLnV0Y1BhcnNlO1xuICByZXR1cm4gbG9jYWxlO1xufVxuIl0sIm1hcHBpbmdzIjoiQUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTsiLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///./node_modules/vega-label/node_modules/d3-time-format/src/defaultLocale.js\n");

/***/ }),

/***/ "./node_modules/vega-label/node_modules/d3-time-format/src/index.js":
/*!**************************************************************************!*\
  !*** ./node_modules/vega-label/node_modules/d3-time-format/src/index.js ***!
  \**************************************************************************/
/*! exports provided: timeFormatDefaultLocale, timeFormat, timeParse, utcFormat, utcParse, timeFormatLocale, isoFormat, isoParse */
/***/ (function(module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _defaultLocale_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./defaultLocale.js */ \"./node_modules/vega-label/node_modules/d3-time-format/src/defaultLocale.js\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"timeFormatDefaultLocale\", function() { return _defaultLocale_js__WEBPACK_IMPORTED_MODULE_0__[\"default\"]; });\n\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"timeFormat\", function() { return _defaultLocale_js__WEBPACK_IMPORTED_MODULE_0__[\"timeFormat\"]; });\n\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"timeParse\", function() { return _defaultLocale_js__WEBPACK_IMPORTED_MODULE_0__[\"timeParse\"]; });\n\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"utcFormat\", function() { return _defaultLocale_js__WEBPACK_IMPORTED_MODULE_0__[\"utcFormat\"]; });\n\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"utcParse\", function() { return _defaultLocale_js__WEBPACK_IMPORTED_MODULE_0__[\"utcParse\"]; });\n\n/* harmony import */ var _locale_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./locale.js */ \"./node_modules/vega-label/node_modules/d3-time-format/src/locale.js\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"timeFormatLocale\", function() { return _locale_js__WEBPACK_IMPORTED_MODULE_1__[\"default\"]; });\n\n/* harmony import */ var _isoFormat_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./isoFormat.js */ \"./node_modules/vega-label/node_modules/d3-time-format/src/isoFormat.js\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"isoFormat\", function() { return _isoFormat_js__WEBPACK_IMPORTED_MODULE_2__[\"default\"]; });\n\n/* harmony import */ var _isoParse_js__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ./isoParse.js */ \"./node_modules/vega-label/node_modules/d3-time-format/src/isoParse.js\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"isoParse\", function() { return _isoParse_js__WEBPACK_IMPORTED_MODULE_3__[\"default\"]; });\n\n\n\n\n\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvdmVnYS1sYWJlbC9ub2RlX21vZHVsZXMvZDMtdGltZS1mb3JtYXQvc3JjL2luZGV4LmpzLmpzIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL3ZlZ2EtbGFiZWwvbm9kZV9tb2R1bGVzL2QzLXRpbWUtZm9ybWF0L3NyYy9pbmRleC5qcz9jOTkxIl0sInNvdXJjZXNDb250ZW50IjpbImV4cG9ydCB7ZGVmYXVsdCBhcyB0aW1lRm9ybWF0RGVmYXVsdExvY2FsZSwgdGltZUZvcm1hdCwgdGltZVBhcnNlLCB1dGNGb3JtYXQsIHV0Y1BhcnNlfSBmcm9tIFwiLi9kZWZhdWx0TG9jYWxlLmpzXCI7XG5leHBvcnQge2RlZmF1bHQgYXMgdGltZUZvcm1hdExvY2FsZX0gZnJvbSBcIi4vbG9jYWxlLmpzXCI7XG5leHBvcnQge2RlZmF1bHQgYXMgaXNvRm9ybWF0fSBmcm9tIFwiLi9pc29Gb3JtYXQuanNcIjtcbmV4cG9ydCB7ZGVmYXVsdCBhcyBpc29QYXJzZX0gZnJvbSBcIi4vaXNvUGFyc2UuanNcIjtcbiJdLCJtYXBwaW5ncyI6IkFBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7Iiwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///./node_modules/vega-label/node_modules/d3-time-format/src/index.js\n");

/***/ }),

/***/ "./node_modules/vega-label/node_modules/d3-time-format/src/isoFormat.js":
/*!******************************************************************************!*\
  !*** ./node_modules/vega-label/node_modules/d3-time-format/src/isoFormat.js ***!
  \******************************************************************************/
/*! exports provided: isoSpecifier, default */
/***/ (function(module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"isoSpecifier\", function() { return isoSpecifier; });\n/* harmony import */ var _defaultLocale_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./defaultLocale.js */ \"./node_modules/vega-label/node_modules/d3-time-format/src/defaultLocale.js\");\n\n\nvar isoSpecifier = \"%Y-%m-%dT%H:%M:%S.%LZ\";\n\nfunction formatIsoNative(date) {\n  return date.toISOString();\n}\n\nvar formatIso = Date.prototype.toISOString\n    ? formatIsoNative\n    : Object(_defaultLocale_js__WEBPACK_IMPORTED_MODULE_0__[\"utcFormat\"])(isoSpecifier);\n\n/* harmony default export */ __webpack_exports__[\"default\"] = (formatIso);\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvdmVnYS1sYWJlbC9ub2RlX21vZHVsZXMvZDMtdGltZS1mb3JtYXQvc3JjL2lzb0Zvcm1hdC5qcy5qcyIsInNvdXJjZXMiOlsid2VicGFjazovLy8uL25vZGVfbW9kdWxlcy92ZWdhLWxhYmVsL25vZGVfbW9kdWxlcy9kMy10aW1lLWZvcm1hdC9zcmMvaXNvRm9ybWF0LmpzPzEwMjciXSwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHt1dGNGb3JtYXR9IGZyb20gXCIuL2RlZmF1bHRMb2NhbGUuanNcIjtcblxuZXhwb3J0IHZhciBpc29TcGVjaWZpZXIgPSBcIiVZLSVtLSVkVCVIOiVNOiVTLiVMWlwiO1xuXG5mdW5jdGlvbiBmb3JtYXRJc29OYXRpdmUoZGF0ZSkge1xuICByZXR1cm4gZGF0ZS50b0lTT1N0cmluZygpO1xufVxuXG52YXIgZm9ybWF0SXNvID0gRGF0ZS5wcm90b3R5cGUudG9JU09TdHJpbmdcbiAgICA/IGZvcm1hdElzb05hdGl2ZVxuICAgIDogdXRjRm9ybWF0KGlzb1NwZWNpZmllcik7XG5cbmV4cG9ydCBkZWZhdWx0IGZvcm1hdElzbztcbiJdLCJtYXBwaW5ncyI6IkFBQUE7QUFBQTtBQUFBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7Iiwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///./node_modules/vega-label/node_modules/d3-time-format/src/isoFormat.js\n");

/***/ }),

/***/ "./node_modules/vega-label/node_modules/d3-time-format/src/isoParse.js":
/*!*****************************************************************************!*\
  !*** ./node_modules/vega-label/node_modules/d3-time-format/src/isoParse.js ***!
  \*****************************************************************************/
/*! exports provided: default */
/***/ (function(module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _isoFormat_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./isoFormat.js */ \"./node_modules/vega-label/node_modules/d3-time-format/src/isoFormat.js\");\n/* harmony import */ var _defaultLocale_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./defaultLocale.js */ \"./node_modules/vega-label/node_modules/d3-time-format/src/defaultLocale.js\");\n\n\n\nfunction parseIsoNative(string) {\n  var date = new Date(string);\n  return isNaN(date) ? null : date;\n}\n\nvar parseIso = +new Date(\"2000-01-01T00:00:00.000Z\")\n    ? parseIsoNative\n    : Object(_defaultLocale_js__WEBPACK_IMPORTED_MODULE_1__[\"utcParse\"])(_isoFormat_js__WEBPACK_IMPORTED_MODULE_0__[\"isoSpecifier\"]);\n\n/* harmony default export */ __webpack_exports__[\"default\"] = (parseIso);\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvdmVnYS1sYWJlbC9ub2RlX21vZHVsZXMvZDMtdGltZS1mb3JtYXQvc3JjL2lzb1BhcnNlLmpzLmpzIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL3ZlZ2EtbGFiZWwvbm9kZV9tb2R1bGVzL2QzLXRpbWUtZm9ybWF0L3NyYy9pc29QYXJzZS5qcz9mNTdhIl0sInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7aXNvU3BlY2lmaWVyfSBmcm9tIFwiLi9pc29Gb3JtYXQuanNcIjtcbmltcG9ydCB7dXRjUGFyc2V9IGZyb20gXCIuL2RlZmF1bHRMb2NhbGUuanNcIjtcblxuZnVuY3Rpb24gcGFyc2VJc29OYXRpdmUoc3RyaW5nKSB7XG4gIHZhciBkYXRlID0gbmV3IERhdGUoc3RyaW5nKTtcbiAgcmV0dXJuIGlzTmFOKGRhdGUpID8gbnVsbCA6IGRhdGU7XG59XG5cbnZhciBwYXJzZUlzbyA9ICtuZXcgRGF0ZShcIjIwMDAtMDEtMDFUMDA6MDA6MDAuMDAwWlwiKVxuICAgID8gcGFyc2VJc29OYXRpdmVcbiAgICA6IHV0Y1BhcnNlKGlzb1NwZWNpZmllcik7XG5cbmV4cG9ydCBkZWZhdWx0IHBhcnNlSXNvO1xuIl0sIm1hcHBpbmdzIjoiQUFBQTtBQUFBO0FBQUE7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTsiLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///./node_modules/vega-label/node_modules/d3-time-format/src/isoParse.js\n");

/***/ }),

/***/ "./node_modules/vega-label/node_modules/d3-time-format/src/locale.js":
/*!***************************************************************************!*\
  !*** ./node_modules/vega-label/node_modules/d3-time-format/src/locale.js ***!
  \***************************************************************************/
/*! exports provided: default */
/***/ (function(module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"default\", function() { return formatLocale; });\n/* harmony import */ var d3_time__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! d3-time */ \"./node_modules/vega-label/node_modules/d3-time/src/index.js\");\n\n\nfunction localDate(d) {\n  if (0 <= d.y && d.y < 100) {\n    var date = new Date(-1, d.m, d.d, d.H, d.M, d.S, d.L);\n    date.setFullYear(d.y);\n    return date;\n  }\n  return new Date(d.y, d.m, d.d, d.H, d.M, d.S, d.L);\n}\n\nfunction utcDate(d) {\n  if (0 <= d.y && d.y < 100) {\n    var date = new Date(Date.UTC(-1, d.m, d.d, d.H, d.M, d.S, d.L));\n    date.setUTCFullYear(d.y);\n    return date;\n  }\n  return new Date(Date.UTC(d.y, d.m, d.d, d.H, d.M, d.S, d.L));\n}\n\nfunction newDate(y, m, d) {\n  return {y: y, m: m, d: d, H: 0, M: 0, S: 0, L: 0};\n}\n\nfunction formatLocale(locale) {\n  var locale_dateTime = locale.dateTime,\n      locale_date = locale.date,\n      locale_time = locale.time,\n      locale_periods = locale.periods,\n      locale_weekdays = locale.days,\n      locale_shortWeekdays = locale.shortDays,\n      locale_months = locale.months,\n      locale_shortMonths = locale.shortMonths;\n\n  var periodRe = formatRe(locale_periods),\n      periodLookup = formatLookup(locale_periods),\n      weekdayRe = formatRe(locale_weekdays),\n      weekdayLookup = formatLookup(locale_weekdays),\n      shortWeekdayRe = formatRe(locale_shortWeekdays),\n      shortWeekdayLookup = formatLookup(locale_shortWeekdays),\n      monthRe = formatRe(locale_months),\n      monthLookup = formatLookup(locale_months),\n      shortMonthRe = formatRe(locale_shortMonths),\n      shortMonthLookup = formatLookup(locale_shortMonths);\n\n  var formats = {\n    \"a\": formatShortWeekday,\n    \"A\": formatWeekday,\n    \"b\": formatShortMonth,\n    \"B\": formatMonth,\n    \"c\": null,\n    \"d\": formatDayOfMonth,\n    \"e\": formatDayOfMonth,\n    \"f\": formatMicroseconds,\n    \"g\": formatYearISO,\n    \"G\": formatFullYearISO,\n    \"H\": formatHour24,\n    \"I\": formatHour12,\n    \"j\": formatDayOfYear,\n    \"L\": formatMilliseconds,\n    \"m\": formatMonthNumber,\n    \"M\": formatMinutes,\n    \"p\": formatPeriod,\n    \"q\": formatQuarter,\n    \"Q\": formatUnixTimestamp,\n    \"s\": formatUnixTimestampSeconds,\n    \"S\": formatSeconds,\n    \"u\": formatWeekdayNumberMonday,\n    \"U\": formatWeekNumberSunday,\n    \"V\": formatWeekNumberISO,\n    \"w\": formatWeekdayNumberSunday,\n    \"W\": formatWeekNumberMonday,\n    \"x\": null,\n    \"X\": null,\n    \"y\": formatYear,\n    \"Y\": formatFullYear,\n    \"Z\": formatZone,\n    \"%\": formatLiteralPercent\n  };\n\n  var utcFormats = {\n    \"a\": formatUTCShortWeekday,\n    \"A\": formatUTCWeekday,\n    \"b\": formatUTCShortMonth,\n    \"B\": formatUTCMonth,\n    \"c\": null,\n    \"d\": formatUTCDayOfMonth,\n    \"e\": formatUTCDayOfMonth,\n    \"f\": formatUTCMicroseconds,\n    \"g\": formatUTCYearISO,\n    \"G\": formatUTCFullYearISO,\n    \"H\": formatUTCHour24,\n    \"I\": formatUTCHour12,\n    \"j\": formatUTCDayOfYear,\n    \"L\": formatUTCMilliseconds,\n    \"m\": formatUTCMonthNumber,\n    \"M\": formatUTCMinutes,\n    \"p\": formatUTCPeriod,\n    \"q\": formatUTCQuarter,\n    \"Q\": formatUnixTimestamp,\n    \"s\": formatUnixTimestampSeconds,\n    \"S\": formatUTCSeconds,\n    \"u\": formatUTCWeekdayNumberMonday,\n    \"U\": formatUTCWeekNumberSunday,\n    \"V\": formatUTCWeekNumberISO,\n    \"w\": formatUTCWeekdayNumberSunday,\n    \"W\": formatUTCWeekNumberMonday,\n    \"x\": null,\n    \"X\": null,\n    \"y\": formatUTCYear,\n    \"Y\": formatUTCFullYear,\n    \"Z\": formatUTCZone,\n    \"%\": formatLiteralPercent\n  };\n\n  var parses = {\n    \"a\": parseShortWeekday,\n    \"A\": parseWeekday,\n    \"b\": parseShortMonth,\n    \"B\": parseMonth,\n    \"c\": parseLocaleDateTime,\n    \"d\": parseDayOfMonth,\n    \"e\": parseDayOfMonth,\n    \"f\": parseMicroseconds,\n    \"g\": parseYear,\n    \"G\": parseFullYear,\n    \"H\": parseHour24,\n    \"I\": parseHour24,\n    \"j\": parseDayOfYear,\n    \"L\": parseMilliseconds,\n    \"m\": parseMonthNumber,\n    \"M\": parseMinutes,\n    \"p\": parsePeriod,\n    \"q\": parseQuarter,\n    \"Q\": parseUnixTimestamp,\n    \"s\": parseUnixTimestampSeconds,\n    \"S\": parseSeconds,\n    \"u\": parseWeekdayNumberMonday,\n    \"U\": parseWeekNumberSunday,\n    \"V\": parseWeekNumberISO,\n    \"w\": parseWeekdayNumberSunday,\n    \"W\": parseWeekNumberMonday,\n    \"x\": parseLocaleDate,\n    \"X\": parseLocaleTime,\n    \"y\": parseYear,\n    \"Y\": parseFullYear,\n    \"Z\": parseZone,\n    \"%\": parseLiteralPercent\n  };\n\n  // These recursive directive definitions must be deferred.\n  formats.x = newFormat(locale_date, formats);\n  formats.X = newFormat(locale_time, formats);\n  formats.c = newFormat(locale_dateTime, formats);\n  utcFormats.x = newFormat(locale_date, utcFormats);\n  utcFormats.X = newFormat(locale_time, utcFormats);\n  utcFormats.c = newFormat(locale_dateTime, utcFormats);\n\n  function newFormat(specifier, formats) {\n    return function(date) {\n      var string = [],\n          i = -1,\n          j = 0,\n          n = specifier.length,\n          c,\n          pad,\n          format;\n\n      if (!(date instanceof Date)) date = new Date(+date);\n\n      while (++i < n) {\n        if (specifier.charCodeAt(i) === 37) {\n          string.push(specifier.slice(j, i));\n          if ((pad = pads[c = specifier.charAt(++i)]) != null) c = specifier.charAt(++i);\n          else pad = c === \"e\" ? \" \" : \"0\";\n          if (format = formats[c]) c = format(date, pad);\n          string.push(c);\n          j = i + 1;\n        }\n      }\n\n      string.push(specifier.slice(j, i));\n      return string.join(\"\");\n    };\n  }\n\n  function newParse(specifier, Z) {\n    return function(string) {\n      var d = newDate(1900, undefined, 1),\n          i = parseSpecifier(d, specifier, string += \"\", 0),\n          week, day;\n      if (i != string.length) return null;\n\n      // If a UNIX timestamp is specified, return it.\n      if (\"Q\" in d) return new Date(d.Q);\n      if (\"s\" in d) return new Date(d.s * 1000 + (\"L\" in d ? d.L : 0));\n\n      // If this is utcParse, never use the local timezone.\n      if (Z && !(\"Z\" in d)) d.Z = 0;\n\n      // The am-pm flag is 0 for AM, and 1 for PM.\n      if (\"p\" in d) d.H = d.H % 12 + d.p * 12;\n\n      // If the month was not specified, inherit from the quarter.\n      if (d.m === undefined) d.m = \"q\" in d ? d.q : 0;\n\n      // Convert day-of-week and week-of-year to day-of-year.\n      if (\"V\" in d) {\n        if (d.V < 1 || d.V > 53) return null;\n        if (!(\"w\" in d)) d.w = 1;\n        if (\"Z\" in d) {\n          week = utcDate(newDate(d.y, 0, 1)), day = week.getUTCDay();\n          week = day > 4 || day === 0 ? d3_time__WEBPACK_IMPORTED_MODULE_0__[\"utcMonday\"].ceil(week) : Object(d3_time__WEBPACK_IMPORTED_MODULE_0__[\"utcMonday\"])(week);\n          week = d3_time__WEBPACK_IMPORTED_MODULE_0__[\"utcDay\"].offset(week, (d.V - 1) * 7);\n          d.y = week.getUTCFullYear();\n          d.m = week.getUTCMonth();\n          d.d = week.getUTCDate() + (d.w + 6) % 7;\n        } else {\n          week = localDate(newDate(d.y, 0, 1)), day = week.getDay();\n          week = day > 4 || day === 0 ? d3_time__WEBPACK_IMPORTED_MODULE_0__[\"timeMonday\"].ceil(week) : Object(d3_time__WEBPACK_IMPORTED_MODULE_0__[\"timeMonday\"])(week);\n          week = d3_time__WEBPACK_IMPORTED_MODULE_0__[\"timeDay\"].offset(week, (d.V - 1) * 7);\n          d.y = week.getFullYear();\n          d.m = week.getMonth();\n          d.d = week.getDate() + (d.w + 6) % 7;\n        }\n      } else if (\"W\" in d || \"U\" in d) {\n        if (!(\"w\" in d)) d.w = \"u\" in d ? d.u % 7 : \"W\" in d ? 1 : 0;\n        day = \"Z\" in d ? utcDate(newDate(d.y, 0, 1)).getUTCDay() : localDate(newDate(d.y, 0, 1)).getDay();\n        d.m = 0;\n        d.d = \"W\" in d ? (d.w + 6) % 7 + d.W * 7 - (day + 5) % 7 : d.w + d.U * 7 - (day + 6) % 7;\n      }\n\n      // If a time zone is specified, all fields are interpreted as UTC and then\n      // offset according to the specified time zone.\n      if (\"Z\" in d) {\n        d.H += d.Z / 100 | 0;\n        d.M += d.Z % 100;\n        return utcDate(d);\n      }\n\n      // Otherwise, all fields are in local time.\n      return localDate(d);\n    };\n  }\n\n  function parseSpecifier(d, specifier, string, j) {\n    var i = 0,\n        n = specifier.length,\n        m = string.length,\n        c,\n        parse;\n\n    while (i < n) {\n      if (j >= m) return -1;\n      c = specifier.charCodeAt(i++);\n      if (c === 37) {\n        c = specifier.charAt(i++);\n        parse = parses[c in pads ? specifier.charAt(i++) : c];\n        if (!parse || ((j = parse(d, string, j)) < 0)) return -1;\n      } else if (c != string.charCodeAt(j++)) {\n        return -1;\n      }\n    }\n\n    return j;\n  }\n\n  function parsePeriod(d, string, i) {\n    var n = periodRe.exec(string.slice(i));\n    return n ? (d.p = periodLookup.get(n[0].toLowerCase()), i + n[0].length) : -1;\n  }\n\n  function parseShortWeekday(d, string, i) {\n    var n = shortWeekdayRe.exec(string.slice(i));\n    return n ? (d.w = shortWeekdayLookup.get(n[0].toLowerCase()), i + n[0].length) : -1;\n  }\n\n  function parseWeekday(d, string, i) {\n    var n = weekdayRe.exec(string.slice(i));\n    return n ? (d.w = weekdayLookup.get(n[0].toLowerCase()), i + n[0].length) : -1;\n  }\n\n  function parseShortMonth(d, string, i) {\n    var n = shortMonthRe.exec(string.slice(i));\n    return n ? (d.m = shortMonthLookup.get(n[0].toLowerCase()), i + n[0].length) : -1;\n  }\n\n  function parseMonth(d, string, i) {\n    var n = monthRe.exec(string.slice(i));\n    return n ? (d.m = monthLookup.get(n[0].toLowerCase()), i + n[0].length) : -1;\n  }\n\n  function parseLocaleDateTime(d, string, i) {\n    return parseSpecifier(d, locale_dateTime, string, i);\n  }\n\n  function parseLocaleDate(d, string, i) {\n    return parseSpecifier(d, locale_date, string, i);\n  }\n\n  function parseLocaleTime(d, string, i) {\n    return parseSpecifier(d, locale_time, string, i);\n  }\n\n  function formatShortWeekday(d) {\n    return locale_shortWeekdays[d.getDay()];\n  }\n\n  function formatWeekday(d) {\n    return locale_weekdays[d.getDay()];\n  }\n\n  function formatShortMonth(d) {\n    return locale_shortMonths[d.getMonth()];\n  }\n\n  function formatMonth(d) {\n    return locale_months[d.getMonth()];\n  }\n\n  function formatPeriod(d) {\n    return locale_periods[+(d.getHours() >= 12)];\n  }\n\n  function formatQuarter(d) {\n    return 1 + ~~(d.getMonth() / 3);\n  }\n\n  function formatUTCShortWeekday(d) {\n    return locale_shortWeekdays[d.getUTCDay()];\n  }\n\n  function formatUTCWeekday(d) {\n    return locale_weekdays[d.getUTCDay()];\n  }\n\n  function formatUTCShortMonth(d) {\n    return locale_shortMonths[d.getUTCMonth()];\n  }\n\n  function formatUTCMonth(d) {\n    return locale_months[d.getUTCMonth()];\n  }\n\n  function formatUTCPeriod(d) {\n    return locale_periods[+(d.getUTCHours() >= 12)];\n  }\n\n  function formatUTCQuarter(d) {\n    return 1 + ~~(d.getUTCMonth() / 3);\n  }\n\n  return {\n    format: function(specifier) {\n      var f = newFormat(specifier += \"\", formats);\n      f.toString = function() { return specifier; };\n      return f;\n    },\n    parse: function(specifier) {\n      var p = newParse(specifier += \"\", false);\n      p.toString = function() { return specifier; };\n      return p;\n    },\n    utcFormat: function(specifier) {\n      var f = newFormat(specifier += \"\", utcFormats);\n      f.toString = function() { return specifier; };\n      return f;\n    },\n    utcParse: function(specifier) {\n      var p = newParse(specifier += \"\", true);\n      p.toString = function() { return specifier; };\n      return p;\n    }\n  };\n}\n\nvar pads = {\"-\": \"\", \"_\": \" \", \"0\": \"0\"},\n    numberRe = /^\\s*\\d+/, // note: ignores next directive\n    percentRe = /^%/,\n    requoteRe = /[\\\\^$*+?|[\\]().{}]/g;\n\nfunction pad(value, fill, width) {\n  var sign = value < 0 ? \"-\" : \"\",\n      string = (sign ? -value : value) + \"\",\n      length = string.length;\n  return sign + (length < width ? new Array(width - length + 1).join(fill) + string : string);\n}\n\nfunction requote(s) {\n  return s.replace(requoteRe, \"\\\\$&\");\n}\n\nfunction formatRe(names) {\n  return new RegExp(\"^(?:\" + names.map(requote).join(\"|\") + \")\", \"i\");\n}\n\nfunction formatLookup(names) {\n  return new Map(names.map((name, i) => [name.toLowerCase(), i]));\n}\n\nfunction parseWeekdayNumberSunday(d, string, i) {\n  var n = numberRe.exec(string.slice(i, i + 1));\n  return n ? (d.w = +n[0], i + n[0].length) : -1;\n}\n\nfunction parseWeekdayNumberMonday(d, string, i) {\n  var n = numberRe.exec(string.slice(i, i + 1));\n  return n ? (d.u = +n[0], i + n[0].length) : -1;\n}\n\nfunction parseWeekNumberSunday(d, string, i) {\n  var n = numberRe.exec(string.slice(i, i + 2));\n  return n ? (d.U = +n[0], i + n[0].length) : -1;\n}\n\nfunction parseWeekNumberISO(d, string, i) {\n  var n = numberRe.exec(string.slice(i, i + 2));\n  return n ? (d.V = +n[0], i + n[0].length) : -1;\n}\n\nfunction parseWeekNumberMonday(d, string, i) {\n  var n = numberRe.exec(string.slice(i, i + 2));\n  return n ? (d.W = +n[0], i + n[0].length) : -1;\n}\n\nfunction parseFullYear(d, string, i) {\n  var n = numberRe.exec(string.slice(i, i + 4));\n  return n ? (d.y = +n[0], i + n[0].length) : -1;\n}\n\nfunction parseYear(d, string, i) {\n  var n = numberRe.exec(string.slice(i, i + 2));\n  return n ? (d.y = +n[0] + (+n[0] > 68 ? 1900 : 2000), i + n[0].length) : -1;\n}\n\nfunction parseZone(d, string, i) {\n  var n = /^(Z)|([+-]\\d\\d)(?::?(\\d\\d))?/.exec(string.slice(i, i + 6));\n  return n ? (d.Z = n[1] ? 0 : -(n[2] + (n[3] || \"00\")), i + n[0].length) : -1;\n}\n\nfunction parseQuarter(d, string, i) {\n  var n = numberRe.exec(string.slice(i, i + 1));\n  return n ? (d.q = n[0] * 3 - 3, i + n[0].length) : -1;\n}\n\nfunction parseMonthNumber(d, string, i) {\n  var n = numberRe.exec(string.slice(i, i + 2));\n  return n ? (d.m = n[0] - 1, i + n[0].length) : -1;\n}\n\nfunction parseDayOfMonth(d, string, i) {\n  var n = numberRe.exec(string.slice(i, i + 2));\n  return n ? (d.d = +n[0], i + n[0].length) : -1;\n}\n\nfunction parseDayOfYear(d, string, i) {\n  var n = numberRe.exec(string.slice(i, i + 3));\n  return n ? (d.m = 0, d.d = +n[0], i + n[0].length) : -1;\n}\n\nfunction parseHour24(d, string, i) {\n  var n = numberRe.exec(string.slice(i, i + 2));\n  return n ? (d.H = +n[0], i + n[0].length) : -1;\n}\n\nfunction parseMinutes(d, string, i) {\n  var n = numberRe.exec(string.slice(i, i + 2));\n  return n ? (d.M = +n[0], i + n[0].length) : -1;\n}\n\nfunction parseSeconds(d, string, i) {\n  var n = numberRe.exec(string.slice(i, i + 2));\n  return n ? (d.S = +n[0], i + n[0].length) : -1;\n}\n\nfunction parseMilliseconds(d, string, i) {\n  var n = numberRe.exec(string.slice(i, i + 3));\n  return n ? (d.L = +n[0], i + n[0].length) : -1;\n}\n\nfunction parseMicroseconds(d, string, i) {\n  var n = numberRe.exec(string.slice(i, i + 6));\n  return n ? (d.L = Math.floor(n[0] / 1000), i + n[0].length) : -1;\n}\n\nfunction parseLiteralPercent(d, string, i) {\n  var n = percentRe.exec(string.slice(i, i + 1));\n  return n ? i + n[0].length : -1;\n}\n\nfunction parseUnixTimestamp(d, string, i) {\n  var n = numberRe.exec(string.slice(i));\n  return n ? (d.Q = +n[0], i + n[0].length) : -1;\n}\n\nfunction parseUnixTimestampSeconds(d, string, i) {\n  var n = numberRe.exec(string.slice(i));\n  return n ? (d.s = +n[0], i + n[0].length) : -1;\n}\n\nfunction formatDayOfMonth(d, p) {\n  return pad(d.getDate(), p, 2);\n}\n\nfunction formatHour24(d, p) {\n  return pad(d.getHours(), p, 2);\n}\n\nfunction formatHour12(d, p) {\n  return pad(d.getHours() % 12 || 12, p, 2);\n}\n\nfunction formatDayOfYear(d, p) {\n  return pad(1 + d3_time__WEBPACK_IMPORTED_MODULE_0__[\"timeDay\"].count(Object(d3_time__WEBPACK_IMPORTED_MODULE_0__[\"timeYear\"])(d), d), p, 3);\n}\n\nfunction formatMilliseconds(d, p) {\n  return pad(d.getMilliseconds(), p, 3);\n}\n\nfunction formatMicroseconds(d, p) {\n  return formatMilliseconds(d, p) + \"000\";\n}\n\nfunction formatMonthNumber(d, p) {\n  return pad(d.getMonth() + 1, p, 2);\n}\n\nfunction formatMinutes(d, p) {\n  return pad(d.getMinutes(), p, 2);\n}\n\nfunction formatSeconds(d, p) {\n  return pad(d.getSeconds(), p, 2);\n}\n\nfunction formatWeekdayNumberMonday(d) {\n  var day = d.getDay();\n  return day === 0 ? 7 : day;\n}\n\nfunction formatWeekNumberSunday(d, p) {\n  return pad(d3_time__WEBPACK_IMPORTED_MODULE_0__[\"timeSunday\"].count(Object(d3_time__WEBPACK_IMPORTED_MODULE_0__[\"timeYear\"])(d) - 1, d), p, 2);\n}\n\nfunction dISO(d) {\n  var day = d.getDay();\n  return (day >= 4 || day === 0) ? Object(d3_time__WEBPACK_IMPORTED_MODULE_0__[\"timeThursday\"])(d) : d3_time__WEBPACK_IMPORTED_MODULE_0__[\"timeThursday\"].ceil(d);\n}\n\nfunction formatWeekNumberISO(d, p) {\n  d = dISO(d);\n  return pad(d3_time__WEBPACK_IMPORTED_MODULE_0__[\"timeThursday\"].count(Object(d3_time__WEBPACK_IMPORTED_MODULE_0__[\"timeYear\"])(d), d) + (Object(d3_time__WEBPACK_IMPORTED_MODULE_0__[\"timeYear\"])(d).getDay() === 4), p, 2);\n}\n\nfunction formatWeekdayNumberSunday(d) {\n  return d.getDay();\n}\n\nfunction formatWeekNumberMonday(d, p) {\n  return pad(d3_time__WEBPACK_IMPORTED_MODULE_0__[\"timeMonday\"].count(Object(d3_time__WEBPACK_IMPORTED_MODULE_0__[\"timeYear\"])(d) - 1, d), p, 2);\n}\n\nfunction formatYear(d, p) {\n  return pad(d.getFullYear() % 100, p, 2);\n}\n\nfunction formatYearISO(d, p) {\n  d = dISO(d);\n  return pad(d.getFullYear() % 100, p, 2);\n}\n\nfunction formatFullYear(d, p) {\n  return pad(d.getFullYear() % 10000, p, 4);\n}\n\nfunction formatFullYearISO(d, p) {\n  var day = d.getDay();\n  d = (day >= 4 || day === 0) ? Object(d3_time__WEBPACK_IMPORTED_MODULE_0__[\"timeThursday\"])(d) : d3_time__WEBPACK_IMPORTED_MODULE_0__[\"timeThursday\"].ceil(d);\n  return pad(d.getFullYear() % 10000, p, 4);\n}\n\nfunction formatZone(d) {\n  var z = d.getTimezoneOffset();\n  return (z > 0 ? \"-\" : (z *= -1, \"+\"))\n      + pad(z / 60 | 0, \"0\", 2)\n      + pad(z % 60, \"0\", 2);\n}\n\nfunction formatUTCDayOfMonth(d, p) {\n  return pad(d.getUTCDate(), p, 2);\n}\n\nfunction formatUTCHour24(d, p) {\n  return pad(d.getUTCHours(), p, 2);\n}\n\nfunction formatUTCHour12(d, p) {\n  return pad(d.getUTCHours() % 12 || 12, p, 2);\n}\n\nfunction formatUTCDayOfYear(d, p) {\n  return pad(1 + d3_time__WEBPACK_IMPORTED_MODULE_0__[\"utcDay\"].count(Object(d3_time__WEBPACK_IMPORTED_MODULE_0__[\"utcYear\"])(d), d), p, 3);\n}\n\nfunction formatUTCMilliseconds(d, p) {\n  return pad(d.getUTCMilliseconds(), p, 3);\n}\n\nfunction formatUTCMicroseconds(d, p) {\n  return formatUTCMilliseconds(d, p) + \"000\";\n}\n\nfunction formatUTCMonthNumber(d, p) {\n  return pad(d.getUTCMonth() + 1, p, 2);\n}\n\nfunction formatUTCMinutes(d, p) {\n  return pad(d.getUTCMinutes(), p, 2);\n}\n\nfunction formatUTCSeconds(d, p) {\n  return pad(d.getUTCSeconds(), p, 2);\n}\n\nfunction formatUTCWeekdayNumberMonday(d) {\n  var dow = d.getUTCDay();\n  return dow === 0 ? 7 : dow;\n}\n\nfunction formatUTCWeekNumberSunday(d, p) {\n  return pad(d3_time__WEBPACK_IMPORTED_MODULE_0__[\"utcSunday\"].count(Object(d3_time__WEBPACK_IMPORTED_MODULE_0__[\"utcYear\"])(d) - 1, d), p, 2);\n}\n\nfunction UTCdISO(d) {\n  var day = d.getUTCDay();\n  return (day >= 4 || day === 0) ? Object(d3_time__WEBPACK_IMPORTED_MODULE_0__[\"utcThursday\"])(d) : d3_time__WEBPACK_IMPORTED_MODULE_0__[\"utcThursday\"].ceil(d);\n}\n\nfunction formatUTCWeekNumberISO(d, p) {\n  d = UTCdISO(d);\n  return pad(d3_time__WEBPACK_IMPORTED_MODULE_0__[\"utcThursday\"].count(Object(d3_time__WEBPACK_IMPORTED_MODULE_0__[\"utcYear\"])(d), d) + (Object(d3_time__WEBPACK_IMPORTED_MODULE_0__[\"utcYear\"])(d).getUTCDay() === 4), p, 2);\n}\n\nfunction formatUTCWeekdayNumberSunday(d) {\n  return d.getUTCDay();\n}\n\nfunction formatUTCWeekNumberMonday(d, p) {\n  return pad(d3_time__WEBPACK_IMPORTED_MODULE_0__[\"utcMonday\"].count(Object(d3_time__WEBPACK_IMPORTED_MODULE_0__[\"utcYear\"])(d) - 1, d), p, 2);\n}\n\nfunction formatUTCYear(d, p) {\n  return pad(d.getUTCFullYear() % 100, p, 2);\n}\n\nfunction formatUTCYearISO(d, p) {\n  d = UTCdISO(d);\n  return pad(d.getUTCFullYear() % 100, p, 2);\n}\n\nfunction formatUTCFullYear(d, p) {\n  return pad(d.getUTCFullYear() % 10000, p, 4);\n}\n\nfunction formatUTCFullYearISO(d, p) {\n  var day = d.getUTCDay();\n  d = (day >= 4 || day === 0) ? Object(d3_time__WEBPACK_IMPORTED_MODULE_0__[\"utcThursday\"])(d) : d3_time__WEBPACK_IMPORTED_MODULE_0__[\"utcThursday\"].ceil(d);\n  return pad(d.getUTCFullYear() % 10000, p, 4);\n}\n\nfunction formatUTCZone() {\n  return \"+0000\";\n}\n\nfunction formatLiteralPercent() {\n  return \"%\";\n}\n\nfunction formatUnixTimestamp(d) {\n  return +d;\n}\n\nfunction formatUnixTimestampSeconds(d) {\n  return Math.floor(+d / 1000);\n}\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,[encoded data, 31020 characters]\n//# sourceURL=webpack-internal:///./node_modules/vega-label/node_modules/d3-time-format/src/locale.js\n");

/***/ }),

/***/ "./node_modules/vega-label/node_modules/d3-time/src/day.js":
/*!*****************************************************************!*\
  !*** ./node_modules/vega-label/node_modules/d3-time/src/day.js ***!
  \*****************************************************************/
/*! exports provided: default, days */
/***/ (function(module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"days\", function() { return days; });\n/* harmony import */ var _interval_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./interval.js */ \"./node_modules/vega-label/node_modules/d3-time/src/interval.js\");\n/* harmony import */ var _duration_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./duration.js */ \"./node_modules/vega-label/node_modules/d3-time/src/duration.js\");\n\n\n\nvar day = Object(_interval_js__WEBPACK_IMPORTED_MODULE_0__[\"default\"])(\n  date => date.setHours(0, 0, 0, 0),\n  (date, step) => date.setDate(date.getDate() + step),\n  (start, end) => (end - start - (end.getTimezoneOffset() - start.getTimezoneOffset()) * _duration_js__WEBPACK_IMPORTED_MODULE_1__[\"durationMinute\"]) / _duration_js__WEBPACK_IMPORTED_MODULE_1__[\"durationDay\"],\n  date => date.getDate() - 1\n);\n\n/* harmony default export */ __webpack_exports__[\"default\"] = (day);\nvar days = day.range;\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvdmVnYS1sYWJlbC9ub2RlX21vZHVsZXMvZDMtdGltZS9zcmMvZGF5LmpzLmpzIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL3ZlZ2EtbGFiZWwvbm9kZV9tb2R1bGVzL2QzLXRpbWUvc3JjL2RheS5qcz8xNTUxIl0sInNvdXJjZXNDb250ZW50IjpbImltcG9ydCBpbnRlcnZhbCBmcm9tIFwiLi9pbnRlcnZhbC5qc1wiO1xuaW1wb3J0IHtkdXJhdGlvbkRheSwgZHVyYXRpb25NaW51dGV9IGZyb20gXCIuL2R1cmF0aW9uLmpzXCI7XG5cbnZhciBkYXkgPSBpbnRlcnZhbChcbiAgZGF0ZSA9PiBkYXRlLnNldEhvdXJzKDAsIDAsIDAsIDApLFxuICAoZGF0ZSwgc3RlcCkgPT4gZGF0ZS5zZXREYXRlKGRhdGUuZ2V0RGF0ZSgpICsgc3RlcCksXG4gIChzdGFydCwgZW5kKSA9PiAoZW5kIC0gc3RhcnQgLSAoZW5kLmdldFRpbWV6b25lT2Zmc2V0KCkgLSBzdGFydC5nZXRUaW1lem9uZU9mZnNldCgpKSAqIGR1cmF0aW9uTWludXRlKSAvIGR1cmF0aW9uRGF5LFxuICBkYXRlID0+IGRhdGUuZ2V0RGF0ZSgpIC0gMVxuKTtcblxuZXhwb3J0IGRlZmF1bHQgZGF5O1xuZXhwb3J0IHZhciBkYXlzID0gZGF5LnJhbmdlO1xuIl0sIm1hcHBpbmdzIjoiQUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTsiLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///./node_modules/vega-label/node_modules/d3-time/src/day.js\n");

/***/ }),

/***/ "./node_modules/vega-label/node_modules/d3-time/src/duration.js":
/*!**********************************************************************!*\
  !*** ./node_modules/vega-label/node_modules/d3-time/src/duration.js ***!
  \**********************************************************************/
/*! exports provided: durationSecond, durationMinute, durationHour, durationDay, durationWeek, durationMonth, durationYear */
/***/ (function(module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"durationSecond\", function() { return durationSecond; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"durationMinute\", function() { return durationMinute; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"durationHour\", function() { return durationHour; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"durationDay\", function() { return durationDay; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"durationWeek\", function() { return durationWeek; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"durationMonth\", function() { return durationMonth; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"durationYear\", function() { return durationYear; });\nconst durationSecond = 1000;\nconst durationMinute = durationSecond * 60;\nconst durationHour = durationMinute * 60;\nconst durationDay = durationHour * 24;\nconst durationWeek = durationDay * 7;\nconst durationMonth = durationDay * 30;\nconst durationYear = durationDay * 365;\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvdmVnYS1sYWJlbC9ub2RlX21vZHVsZXMvZDMtdGltZS9zcmMvZHVyYXRpb24uanMuanMiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvdmVnYS1sYWJlbC9ub2RlX21vZHVsZXMvZDMtdGltZS9zcmMvZHVyYXRpb24uanM/Y2QzMyJdLCJzb3VyY2VzQ29udGVudCI6WyJleHBvcnQgY29uc3QgZHVyYXRpb25TZWNvbmQgPSAxMDAwO1xuZXhwb3J0IGNvbnN0IGR1cmF0aW9uTWludXRlID0gZHVyYXRpb25TZWNvbmQgKiA2MDtcbmV4cG9ydCBjb25zdCBkdXJhdGlvbkhvdXIgPSBkdXJhdGlvbk1pbnV0ZSAqIDYwO1xuZXhwb3J0IGNvbnN0IGR1cmF0aW9uRGF5ID0gZHVyYXRpb25Ib3VyICogMjQ7XG5leHBvcnQgY29uc3QgZHVyYXRpb25XZWVrID0gZHVyYXRpb25EYXkgKiA3O1xuZXhwb3J0IGNvbnN0IGR1cmF0aW9uTW9udGggPSBkdXJhdGlvbkRheSAqIDMwO1xuZXhwb3J0IGNvbnN0IGR1cmF0aW9uWWVhciA9IGR1cmF0aW9uRGF5ICogMzY1O1xuIl0sIm1hcHBpbmdzIjoiQUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7Iiwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///./node_modules/vega-label/node_modules/d3-time/src/duration.js\n");

/***/ }),

/***/ "./node_modules/vega-label/node_modules/d3-time/src/hour.js":
/*!******************************************************************!*\
  !*** ./node_modules/vega-label/node_modules/d3-time/src/hour.js ***!
  \******************************************************************/
/*! exports provided: default, hours */
/***/ (function(module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"hours\", function() { return hours; });\n/* harmony import */ var _interval_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./interval.js */ \"./node_modules/vega-label/node_modules/d3-time/src/interval.js\");\n/* harmony import */ var _duration_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./duration.js */ \"./node_modules/vega-label/node_modules/d3-time/src/duration.js\");\n\n\n\nvar hour = Object(_interval_js__WEBPACK_IMPORTED_MODULE_0__[\"default\"])(function(date) {\n  date.setTime(date - date.getMilliseconds() - date.getSeconds() * _duration_js__WEBPACK_IMPORTED_MODULE_1__[\"durationSecond\"] - date.getMinutes() * _duration_js__WEBPACK_IMPORTED_MODULE_1__[\"durationMinute\"]);\n}, function(date, step) {\n  date.setTime(+date + step * _duration_js__WEBPACK_IMPORTED_MODULE_1__[\"durationHour\"]);\n}, function(start, end) {\n  return (end - start) / _duration_js__WEBPACK_IMPORTED_MODULE_1__[\"durationHour\"];\n}, function(date) {\n  return date.getHours();\n});\n\n/* harmony default export */ __webpack_exports__[\"default\"] = (hour);\nvar hours = hour.range;\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvdmVnYS1sYWJlbC9ub2RlX21vZHVsZXMvZDMtdGltZS9zcmMvaG91ci5qcy5qcyIsInNvdXJjZXMiOlsid2VicGFjazovLy8uL25vZGVfbW9kdWxlcy92ZWdhLWxhYmVsL25vZGVfbW9kdWxlcy9kMy10aW1lL3NyYy9ob3VyLmpzPzM3NzciXSwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IGludGVydmFsIGZyb20gXCIuL2ludGVydmFsLmpzXCI7XG5pbXBvcnQge2R1cmF0aW9uSG91ciwgZHVyYXRpb25NaW51dGUsIGR1cmF0aW9uU2Vjb25kfSBmcm9tIFwiLi9kdXJhdGlvbi5qc1wiO1xuXG52YXIgaG91ciA9IGludGVydmFsKGZ1bmN0aW9uKGRhdGUpIHtcbiAgZGF0ZS5zZXRUaW1lKGRhdGUgLSBkYXRlLmdldE1pbGxpc2Vjb25kcygpIC0gZGF0ZS5nZXRTZWNvbmRzKCkgKiBkdXJhdGlvblNlY29uZCAtIGRhdGUuZ2V0TWludXRlcygpICogZHVyYXRpb25NaW51dGUpO1xufSwgZnVuY3Rpb24oZGF0ZSwgc3RlcCkge1xuICBkYXRlLnNldFRpbWUoK2RhdGUgKyBzdGVwICogZHVyYXRpb25Ib3VyKTtcbn0sIGZ1bmN0aW9uKHN0YXJ0LCBlbmQpIHtcbiAgcmV0dXJuIChlbmQgLSBzdGFydCkgLyBkdXJhdGlvbkhvdXI7XG59LCBmdW5jdGlvbihkYXRlKSB7XG4gIHJldHVybiBkYXRlLmdldEhvdXJzKCk7XG59KTtcblxuZXhwb3J0IGRlZmF1bHQgaG91cjtcbmV4cG9ydCB2YXIgaG91cnMgPSBob3VyLnJhbmdlO1xuIl0sIm1hcHBpbmdzIjoiQUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTsiLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///./node_modules/vega-label/node_modules/d3-time/src/hour.js\n");

/***/ }),

/***/ "./node_modules/vega-label/node_modules/d3-time/src/index.js":
/*!*******************************************************************!*\
  !*** ./node_modules/vega-label/node_modules/d3-time/src/index.js ***!
  \*******************************************************************/
/*! exports provided: timeInterval, timeMillisecond, timeMilliseconds, utcMillisecond, utcMilliseconds, timeSecond, timeSeconds, utcSecond, utcSeconds, timeMinute, timeMinutes, timeHour, timeHours, timeDay, timeDays, timeWeek, timeWeeks, timeSunday, timeSundays, timeMonday, timeMondays, timeTuesday, timeTuesdays, timeWednesday, timeWednesdays, timeThursday, timeThursdays, timeFriday, timeFridays, timeSaturday, timeSaturdays, timeMonth, timeMonths, timeYear, timeYears, utcMinute, utcMinutes, utcHour, utcHours, utcDay, utcDays, utcWeek, utcWeeks, utcSunday, utcSundays, utcMonday, utcMondays, utcTuesday, utcTuesdays, utcWednesday, utcWednesdays, utcThursday, utcThursdays, utcFriday, utcFridays, utcSaturday, utcSaturdays, utcMonth, utcMonths, utcYear, utcYears, utcTicks, utcTickInterval, timeTicks, timeTickInterval */
/***/ (function(module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _interval_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./interval.js */ \"./node_modules/vega-label/node_modules/d3-time/src/interval.js\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"timeInterval\", function() { return _interval_js__WEBPACK_IMPORTED_MODULE_0__[\"default\"]; });\n\n/* harmony import */ var _millisecond_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./millisecond.js */ \"./node_modules/vega-label/node_modules/d3-time/src/millisecond.js\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"timeMillisecond\", function() { return _millisecond_js__WEBPACK_IMPORTED_MODULE_1__[\"default\"]; });\n\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"timeMilliseconds\", function() { return _millisecond_js__WEBPACK_IMPORTED_MODULE_1__[\"milliseconds\"]; });\n\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"utcMillisecond\", function() { return _millisecond_js__WEBPACK_IMPORTED_MODULE_1__[\"default\"]; });\n\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"utcMilliseconds\", function() { return _millisecond_js__WEBPACK_IMPORTED_MODULE_1__[\"milliseconds\"]; });\n\n/* harmony import */ var _second_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./second.js */ \"./node_modules/vega-label/node_modules/d3-time/src/second.js\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"timeSecond\", function() { return _second_js__WEBPACK_IMPORTED_MODULE_2__[\"default\"]; });\n\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"timeSeconds\", function() { return _second_js__WEBPACK_IMPORTED_MODULE_2__[\"seconds\"]; });\n\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"utcSecond\", function() { return _second_js__WEBPACK_IMPORTED_MODULE_2__[\"default\"]; });\n\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"utcSeconds\", function() { return _second_js__WEBPACK_IMPORTED_MODULE_2__[\"seconds\"]; });\n\n/* harmony import */ var _minute_js__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ./minute.js */ \"./node_modules/vega-label/node_modules/d3-time/src/minute.js\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"timeMinute\", function() { return _minute_js__WEBPACK_IMPORTED_MODULE_3__[\"default\"]; });\n\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"timeMinutes\", function() { return _minute_js__WEBPACK_IMPORTED_MODULE_3__[\"minutes\"]; });\n\n/* harmony import */ var _hour_js__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ./hour.js */ \"./node_modules/vega-label/node_modules/d3-time/src/hour.js\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"timeHour\", function() { return _hour_js__WEBPACK_IMPORTED_MODULE_4__[\"default\"]; });\n\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"timeHours\", function() { return _hour_js__WEBPACK_IMPORTED_MODULE_4__[\"hours\"]; });\n\n/* harmony import */ var _day_js__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! ./day.js */ \"./node_modules/vega-label/node_modules/d3-time/src/day.js\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"timeDay\", function() { return _day_js__WEBPACK_IMPORTED_MODULE_5__[\"default\"]; });\n\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"timeDays\", function() { return _day_js__WEBPACK_IMPORTED_MODULE_5__[\"days\"]; });\n\n/* harmony import */ var _week_js__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! ./week.js */ \"./node_modules/vega-label/node_modules/d3-time/src/week.js\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"timeWeek\", function() { return _week_js__WEBPACK_IMPORTED_MODULE_6__[\"sunday\"]; });\n\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"timeWeeks\", function() { return _week_js__WEBPACK_IMPORTED_MODULE_6__[\"sundays\"]; });\n\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"timeSunday\", function() { return _week_js__WEBPACK_IMPORTED_MODULE_6__[\"sunday\"]; });\n\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"timeSundays\", function() { return _week_js__WEBPACK_IMPORTED_MODULE_6__[\"sundays\"]; });\n\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"timeMonday\", function() { return _week_js__WEBPACK_IMPORTED_MODULE_6__[\"monday\"]; });\n\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"timeMondays\", function() { return _week_js__WEBPACK_IMPORTED_MODULE_6__[\"mondays\"]; });\n\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"timeTuesday\", function() { return _week_js__WEBPACK_IMPORTED_MODULE_6__[\"tuesday\"]; });\n\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"timeTuesdays\", function() { return _week_js__WEBPACK_IMPORTED_MODULE_6__[\"tuesdays\"]; });\n\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"timeWednesday\", function() { return _week_js__WEBPACK_IMPORTED_MODULE_6__[\"wednesday\"]; });\n\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"timeWednesdays\", function() { return _week_js__WEBPACK_IMPORTED_MODULE_6__[\"wednesdays\"]; });\n\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"timeThursday\", function() { return _week_js__WEBPACK_IMPORTED_MODULE_6__[\"thursday\"]; });\n\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"timeThursdays\", function() { return _week_js__WEBPACK_IMPORTED_MODULE_6__[\"thursdays\"]; });\n\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"timeFriday\", function() { return _week_js__WEBPACK_IMPORTED_MODULE_6__[\"friday\"]; });\n\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"timeFridays\", function() { return _week_js__WEBPACK_IMPORTED_MODULE_6__[\"fridays\"]; });\n\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"timeSaturday\", function() { return _week_js__WEBPACK_IMPORTED_MODULE_6__[\"saturday\"]; });\n\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"timeSaturdays\", function() { return _week_js__WEBPACK_IMPORTED_MODULE_6__[\"saturdays\"]; });\n\n/* harmony import */ var _month_js__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! ./month.js */ \"./node_modules/vega-label/node_modules/d3-time/src/month.js\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"timeMonth\", function() { return _month_js__WEBPACK_IMPORTED_MODULE_7__[\"default\"]; });\n\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"timeMonths\", function() { return _month_js__WEBPACK_IMPORTED_MODULE_7__[\"months\"]; });\n\n/* harmony import */ var _year_js__WEBPACK_IMPORTED_MODULE_8__ = __webpack_require__(/*! ./year.js */ \"./node_modules/vega-label/node_modules/d3-time/src/year.js\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"timeYear\", function() { return _year_js__WEBPACK_IMPORTED_MODULE_8__[\"default\"]; });\n\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"timeYears\", function() { return _year_js__WEBPACK_IMPORTED_MODULE_8__[\"years\"]; });\n\n/* harmony import */ var _utcMinute_js__WEBPACK_IMPORTED_MODULE_9__ = __webpack_require__(/*! ./utcMinute.js */ \"./node_modules/vega-label/node_modules/d3-time/src/utcMinute.js\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"utcMinute\", function() { return _utcMinute_js__WEBPACK_IMPORTED_MODULE_9__[\"default\"]; });\n\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"utcMinutes\", function() { return _utcMinute_js__WEBPACK_IMPORTED_MODULE_9__[\"utcMinutes\"]; });\n\n/* harmony import */ var _utcHour_js__WEBPACK_IMPORTED_MODULE_10__ = __webpack_require__(/*! ./utcHour.js */ \"./node_modules/vega-label/node_modules/d3-time/src/utcHour.js\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"utcHour\", function() { return _utcHour_js__WEBPACK_IMPORTED_MODULE_10__[\"default\"]; });\n\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"utcHours\", function() { return _utcHour_js__WEBPACK_IMPORTED_MODULE_10__[\"utcHours\"]; });\n\n/* harmony import */ var _utcDay_js__WEBPACK_IMPORTED_MODULE_11__ = __webpack_require__(/*! ./utcDay.js */ \"./node_modules/vega-label/node_modules/d3-time/src/utcDay.js\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"utcDay\", function() { return _utcDay_js__WEBPACK_IMPORTED_MODULE_11__[\"default\"]; });\n\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"utcDays\", function() { return _utcDay_js__WEBPACK_IMPORTED_MODULE_11__[\"utcDays\"]; });\n\n/* harmony import */ var _utcWeek_js__WEBPACK_IMPORTED_MODULE_12__ = __webpack_require__(/*! ./utcWeek.js */ \"./node_modules/vega-label/node_modules/d3-time/src/utcWeek.js\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"utcWeek\", function() { return _utcWeek_js__WEBPACK_IMPORTED_MODULE_12__[\"utcSunday\"]; });\n\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"utcWeeks\", function() { return _utcWeek_js__WEBPACK_IMPORTED_MODULE_12__[\"utcSundays\"]; });\n\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"utcSunday\", function() { return _utcWeek_js__WEBPACK_IMPORTED_MODULE_12__[\"utcSunday\"]; });\n\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"utcSundays\", function() { return _utcWeek_js__WEBPACK_IMPORTED_MODULE_12__[\"utcSundays\"]; });\n\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"utcMonday\", function() { return _utcWeek_js__WEBPACK_IMPORTED_MODULE_12__[\"utcMonday\"]; });\n\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"utcMondays\", function() { return _utcWeek_js__WEBPACK_IMPORTED_MODULE_12__[\"utcMondays\"]; });\n\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"utcTuesday\", function() { return _utcWeek_js__WEBPACK_IMPORTED_MODULE_12__[\"utcTuesday\"]; });\n\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"utcTuesdays\", function() { return _utcWeek_js__WEBPACK_IMPORTED_MODULE_12__[\"utcTuesdays\"]; });\n\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"utcWednesday\", function() { return _utcWeek_js__WEBPACK_IMPORTED_MODULE_12__[\"utcWednesday\"]; });\n\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"utcWednesdays\", function() { return _utcWeek_js__WEBPACK_IMPORTED_MODULE_12__[\"utcWednesdays\"]; });\n\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"utcThursday\", function() { return _utcWeek_js__WEBPACK_IMPORTED_MODULE_12__[\"utcThursday\"]; });\n\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"utcThursdays\", function() { return _utcWeek_js__WEBPACK_IMPORTED_MODULE_12__[\"utcThursdays\"]; });\n\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"utcFriday\", function() { return _utcWeek_js__WEBPACK_IMPORTED_MODULE_12__[\"utcFriday\"]; });\n\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"utcFridays\", function() { return _utcWeek_js__WEBPACK_IMPORTED_MODULE_12__[\"utcFridays\"]; });\n\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"utcSaturday\", function() { return _utcWeek_js__WEBPACK_IMPORTED_MODULE_12__[\"utcSaturday\"]; });\n\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"utcSaturdays\", function() { return _utcWeek_js__WEBPACK_IMPORTED_MODULE_12__[\"utcSaturdays\"]; });\n\n/* harmony import */ var _utcMonth_js__WEBPACK_IMPORTED_MODULE_13__ = __webpack_require__(/*! ./utcMonth.js */ \"./node_modules/vega-label/node_modules/d3-time/src/utcMonth.js\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"utcMonth\", function() { return _utcMonth_js__WEBPACK_IMPORTED_MODULE_13__[\"default\"]; });\n\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"utcMonths\", function() { return _utcMonth_js__WEBPACK_IMPORTED_MODULE_13__[\"utcMonths\"]; });\n\n/* harmony import */ var _utcYear_js__WEBPACK_IMPORTED_MODULE_14__ = __webpack_require__(/*! ./utcYear.js */ \"./node_modules/vega-label/node_modules/d3-time/src/utcYear.js\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"utcYear\", function() { return _utcYear_js__WEBPACK_IMPORTED_MODULE_14__[\"default\"]; });\n\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"utcYears\", function() { return _utcYear_js__WEBPACK_IMPORTED_MODULE_14__[\"utcYears\"]; });\n\n/* harmony import */ var _ticks_js__WEBPACK_IMPORTED_MODULE_15__ = __webpack_require__(/*! ./ticks.js */ \"./node_modules/vega-label/node_modules/d3-time/src/ticks.js\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"utcTicks\", function() { return _ticks_js__WEBPACK_IMPORTED_MODULE_15__[\"utcTicks\"]; });\n\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"utcTickInterval\", function() { return _ticks_js__WEBPACK_IMPORTED_MODULE_15__[\"utcTickInterval\"]; });\n\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"timeTicks\", function() { return _ticks_js__WEBPACK_IMPORTED_MODULE_15__[\"timeTicks\"]; });\n\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"timeTickInterval\", function() { return _ticks_js__WEBPACK_IMPORTED_MODULE_15__[\"timeTickInterval\"]; });\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,[encoded data, 4584 characters]\n//# sourceURL=webpack-internal:///./node_modules/vega-label/node_modules/d3-time/src/index.js\n");

/***/ }),

/***/ "./node_modules/vega-label/node_modules/d3-time/src/interval.js":
/*!**********************************************************************!*\
  !*** ./node_modules/vega-label/node_modules/d3-time/src/interval.js ***!
  \**********************************************************************/
/*! exports provided: default */
/***/ (function(module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"default\", function() { return newInterval; });\nvar t0 = new Date,\n    t1 = new Date;\n\nfunction newInterval(floori, offseti, count, field) {\n\n  function interval(date) {\n    return floori(date = arguments.length === 0 ? new Date : new Date(+date)), date;\n  }\n\n  interval.floor = function(date) {\n    return floori(date = new Date(+date)), date;\n  };\n\n  interval.ceil = function(date) {\n    return floori(date = new Date(date - 1)), offseti(date, 1), floori(date), date;\n  };\n\n  interval.round = function(date) {\n    var d0 = interval(date),\n        d1 = interval.ceil(date);\n    return date - d0 < d1 - date ? d0 : d1;\n  };\n\n  interval.offset = function(date, step) {\n    return offseti(date = new Date(+date), step == null ? 1 : Math.floor(step)), date;\n  };\n\n  interval.range = function(start, stop, step) {\n    var range = [], previous;\n    start = interval.ceil(start);\n    step = step == null ? 1 : Math.floor(step);\n    if (!(start < stop) || !(step > 0)) return range; // also handles Invalid Date\n    do range.push(previous = new Date(+start)), offseti(start, step), floori(start);\n    while (previous < start && start < stop);\n    return range;\n  };\n\n  interval.filter = function(test) {\n    return newInterval(function(date) {\n      if (date >= date) while (floori(date), !test(date)) date.setTime(date - 1);\n    }, function(date, step) {\n      if (date >= date) {\n        if (step < 0) while (++step <= 0) {\n          while (offseti(date, -1), !test(date)) {} // eslint-disable-line no-empty\n        } else while (--step >= 0) {\n          while (offseti(date, +1), !test(date)) {} // eslint-disable-line no-empty\n        }\n      }\n    });\n  };\n\n  if (count) {\n    interval.count = function(start, end) {\n      t0.setTime(+start), t1.setTime(+end);\n      floori(t0), floori(t1);\n      return Math.floor(count(t0, t1));\n    };\n\n    interval.every = function(step) {\n      step = Math.floor(step);\n      return !isFinite(step) || !(step > 0) ? null\n          : !(step > 1) ? interval\n          : interval.filter(field\n              ? function(d) { return field(d) % step === 0; }\n              : function(d) { return interval.count(0, d) % step === 0; });\n    };\n  }\n\n  return interval;\n}\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvdmVnYS1sYWJlbC9ub2RlX21vZHVsZXMvZDMtdGltZS9zcmMvaW50ZXJ2YWwuanMuanMiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvdmVnYS1sYWJlbC9ub2RlX21vZHVsZXMvZDMtdGltZS9zcmMvaW50ZXJ2YWwuanM/ZTkxYSJdLCJzb3VyY2VzQ29udGVudCI6WyJ2YXIgdDAgPSBuZXcgRGF0ZSxcbiAgICB0MSA9IG5ldyBEYXRlO1xuXG5leHBvcnQgZGVmYXVsdCBmdW5jdGlvbiBuZXdJbnRlcnZhbChmbG9vcmksIG9mZnNldGksIGNvdW50LCBmaWVsZCkge1xuXG4gIGZ1bmN0aW9uIGludGVydmFsKGRhdGUpIHtcbiAgICByZXR1cm4gZmxvb3JpKGRhdGUgPSBhcmd1bWVudHMubGVuZ3RoID09PSAwID8gbmV3IERhdGUgOiBuZXcgRGF0ZSgrZGF0ZSkpLCBkYXRlO1xuICB9XG5cbiAgaW50ZXJ2YWwuZmxvb3IgPSBmdW5jdGlvbihkYXRlKSB7XG4gICAgcmV0dXJuIGZsb29yaShkYXRlID0gbmV3IERhdGUoK2RhdGUpKSwgZGF0ZTtcbiAgfTtcblxuICBpbnRlcnZhbC5jZWlsID0gZnVuY3Rpb24oZGF0ZSkge1xuICAgIHJldHVybiBmbG9vcmkoZGF0ZSA9IG5ldyBEYXRlKGRhdGUgLSAxKSksIG9mZnNldGkoZGF0ZSwgMSksIGZsb29yaShkYXRlKSwgZGF0ZTtcbiAgfTtcblxuICBpbnRlcnZhbC5yb3VuZCA9IGZ1bmN0aW9uKGRhdGUpIHtcbiAgICB2YXIgZDAgPSBpbnRlcnZhbChkYXRlKSxcbiAgICAgICAgZDEgPSBpbnRlcnZhbC5jZWlsKGRhdGUpO1xuICAgIHJldHVybiBkYXRlIC0gZDAgPCBkMSAtIGRhdGUgPyBkMCA6IGQxO1xuICB9O1xuXG4gIGludGVydmFsLm9mZnNldCA9IGZ1bmN0aW9uKGRhdGUsIHN0ZXApIHtcbiAgICByZXR1cm4gb2Zmc2V0aShkYXRlID0gbmV3IERhdGUoK2RhdGUpLCBzdGVwID09IG51bGwgPyAxIDogTWF0aC5mbG9vcihzdGVwKSksIGRhdGU7XG4gIH07XG5cbiAgaW50ZXJ2YWwucmFuZ2UgPSBmdW5jdGlvbihzdGFydCwgc3RvcCwgc3RlcCkge1xuICAgIHZhciByYW5nZSA9IFtdLCBwcmV2aW91cztcbiAgICBzdGFydCA9IGludGVydmFsLmNlaWwoc3RhcnQpO1xuICAgIHN0ZXAgPSBzdGVwID09IG51bGwgPyAxIDogTWF0aC5mbG9vcihzdGVwKTtcbiAgICBpZiAoIShzdGFydCA8IHN0b3ApIHx8ICEoc3RlcCA+IDApKSByZXR1cm4gcmFuZ2U7IC8vIGFsc28gaGFuZGxlcyBJbnZhbGlkIERhdGVcbiAgICBkbyByYW5nZS5wdXNoKHByZXZpb3VzID0gbmV3IERhdGUoK3N0YXJ0KSksIG9mZnNldGkoc3RhcnQsIHN0ZXApLCBmbG9vcmkoc3RhcnQpO1xuICAgIHdoaWxlIChwcmV2aW91cyA8IHN0YXJ0ICYmIHN0YXJ0IDwgc3RvcCk7XG4gICAgcmV0dXJuIHJhbmdlO1xuICB9O1xuXG4gIGludGVydmFsLmZpbHRlciA9IGZ1bmN0aW9uKHRlc3QpIHtcbiAgICByZXR1cm4gbmV3SW50ZXJ2YWwoZnVuY3Rpb24oZGF0ZSkge1xuICAgICAgaWYgKGRhdGUgPj0gZGF0ZSkgd2hpbGUgKGZsb29yaShkYXRlKSwgIXRlc3QoZGF0ZSkpIGRhdGUuc2V0VGltZShkYXRlIC0gMSk7XG4gICAgfSwgZnVuY3Rpb24oZGF0ZSwgc3RlcCkge1xuICAgICAgaWYgKGRhdGUgPj0gZGF0ZSkge1xuICAgICAgICBpZiAoc3RlcCA8IDApIHdoaWxlICgrK3N0ZXAgPD0gMCkge1xuICAgICAgICAgIHdoaWxlIChvZmZzZXRpKGRhdGUsIC0xKSwgIXRlc3QoZGF0ZSkpIHt9IC8vIGVzbGludC1kaXNhYmxlLWxpbmUgbm8tZW1wdHlcbiAgICAgICAgfSBlbHNlIHdoaWxlICgtLXN0ZXAgPj0gMCkge1xuICAgICAgICAgIHdoaWxlIChvZmZzZXRpKGRhdGUsICsxKSwgIXRlc3QoZGF0ZSkpIHt9IC8vIGVzbGludC1kaXNhYmxlLWxpbmUgbm8tZW1wdHlcbiAgICAgICAgfVxuICAgICAgfVxuICAgIH0pO1xuICB9O1xuXG4gIGlmIChjb3VudCkge1xuICAgIGludGVydmFsLmNvdW50ID0gZnVuY3Rpb24oc3RhcnQsIGVuZCkge1xuICAgICAgdDAuc2V0VGltZSgrc3RhcnQpLCB0MS5zZXRUaW1lKCtlbmQpO1xuICAgICAgZmxvb3JpKHQwKSwgZmxvb3JpKHQxKTtcbiAgICAgIHJldHVybiBNYXRoLmZsb29yKGNvdW50KHQwLCB0MSkpO1xuICAgIH07XG5cbiAgICBpbnRlcnZhbC5ldmVyeSA9IGZ1bmN0aW9uKHN0ZXApIHtcbiAgICAgIHN0ZXAgPSBNYXRoLmZsb29yKHN0ZXApO1xuICAgICAgcmV0dXJuICFpc0Zpbml0ZShzdGVwKSB8fCAhKHN0ZXAgPiAwKSA/IG51bGxcbiAgICAgICAgICA6ICEoc3RlcCA+IDEpID8gaW50ZXJ2YWxcbiAgICAgICAgICA6IGludGVydmFsLmZpbHRlcihmaWVsZFxuICAgICAgICAgICAgICA/IGZ1bmN0aW9uKGQpIHsgcmV0dXJuIGZpZWxkKGQpICUgc3RlcCA9PT0gMDsgfVxuICAgICAgICAgICAgICA6IGZ1bmN0aW9uKGQpIHsgcmV0dXJuIGludGVydmFsLmNvdW50KDAsIGQpICUgc3RlcCA9PT0gMDsgfSk7XG4gICAgfTtcbiAgfVxuXG4gIHJldHVybiBpbnRlcnZhbDtcbn1cbiJdLCJtYXBwaW5ncyI6IkFBQUE7QUFBQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOyIsInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///./node_modules/vega-label/node_modules/d3-time/src/interval.js\n");

/***/ }),

/***/ "./node_modules/vega-label/node_modules/d3-time/src/millisecond.js":
/*!*************************************************************************!*\
  !*** ./node_modules/vega-label/node_modules/d3-time/src/millisecond.js ***!
  \*************************************************************************/
/*! exports provided: default, milliseconds */
/***/ (function(module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"milliseconds\", function() { return milliseconds; });\n/* harmony import */ var _interval_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./interval.js */ \"./node_modules/vega-label/node_modules/d3-time/src/interval.js\");\n\n\nvar millisecond = Object(_interval_js__WEBPACK_IMPORTED_MODULE_0__[\"default\"])(function() {\n  // noop\n}, function(date, step) {\n  date.setTime(+date + step);\n}, function(start, end) {\n  return end - start;\n});\n\n// An optimized implementation for this simple case.\nmillisecond.every = function(k) {\n  k = Math.floor(k);\n  if (!isFinite(k) || !(k > 0)) return null;\n  if (!(k > 1)) return millisecond;\n  return Object(_interval_js__WEBPACK_IMPORTED_MODULE_0__[\"default\"])(function(date) {\n    date.setTime(Math.floor(date / k) * k);\n  }, function(date, step) {\n    date.setTime(+date + step * k);\n  }, function(start, end) {\n    return (end - start) / k;\n  });\n};\n\n/* harmony default export */ __webpack_exports__[\"default\"] = (millisecond);\nvar milliseconds = millisecond.range;\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvdmVnYS1sYWJlbC9ub2RlX21vZHVsZXMvZDMtdGltZS9zcmMvbWlsbGlzZWNvbmQuanMuanMiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvdmVnYS1sYWJlbC9ub2RlX21vZHVsZXMvZDMtdGltZS9zcmMvbWlsbGlzZWNvbmQuanM/Nzk2OSJdLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgaW50ZXJ2YWwgZnJvbSBcIi4vaW50ZXJ2YWwuanNcIjtcblxudmFyIG1pbGxpc2Vjb25kID0gaW50ZXJ2YWwoZnVuY3Rpb24oKSB7XG4gIC8vIG5vb3Bcbn0sIGZ1bmN0aW9uKGRhdGUsIHN0ZXApIHtcbiAgZGF0ZS5zZXRUaW1lKCtkYXRlICsgc3RlcCk7XG59LCBmdW5jdGlvbihzdGFydCwgZW5kKSB7XG4gIHJldHVybiBlbmQgLSBzdGFydDtcbn0pO1xuXG4vLyBBbiBvcHRpbWl6ZWQgaW1wbGVtZW50YXRpb24gZm9yIHRoaXMgc2ltcGxlIGNhc2UuXG5taWxsaXNlY29uZC5ldmVyeSA9IGZ1bmN0aW9uKGspIHtcbiAgayA9IE1hdGguZmxvb3Ioayk7XG4gIGlmICghaXNGaW5pdGUoaykgfHwgIShrID4gMCkpIHJldHVybiBudWxsO1xuICBpZiAoIShrID4gMSkpIHJldHVybiBtaWxsaXNlY29uZDtcbiAgcmV0dXJuIGludGVydmFsKGZ1bmN0aW9uKGRhdGUpIHtcbiAgICBkYXRlLnNldFRpbWUoTWF0aC5mbG9vcihkYXRlIC8gaykgKiBrKTtcbiAgfSwgZnVuY3Rpb24oZGF0ZSwgc3RlcCkge1xuICAgIGRhdGUuc2V0VGltZSgrZGF0ZSArIHN0ZXAgKiBrKTtcbiAgfSwgZnVuY3Rpb24oc3RhcnQsIGVuZCkge1xuICAgIHJldHVybiAoZW5kIC0gc3RhcnQpIC8gaztcbiAgfSk7XG59O1xuXG5leHBvcnQgZGVmYXVsdCBtaWxsaXNlY29uZDtcbmV4cG9ydCB2YXIgbWlsbGlzZWNvbmRzID0gbWlsbGlzZWNvbmQucmFuZ2U7XG4iXSwibWFwcGluZ3MiOiJBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7Iiwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///./node_modules/vega-label/node_modules/d3-time/src/millisecond.js\n");

/***/ }),

/***/ "./node_modules/vega-label/node_modules/d3-time/src/minute.js":
/*!********************************************************************!*\
  !*** ./node_modules/vega-label/node_modules/d3-time/src/minute.js ***!
  \********************************************************************/
/*! exports provided: default, minutes */
/***/ (function(module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"minutes\", function() { return minutes; });\n/* harmony import */ var _interval_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./interval.js */ \"./node_modules/vega-label/node_modules/d3-time/src/interval.js\");\n/* harmony import */ var _duration_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./duration.js */ \"./node_modules/vega-label/node_modules/d3-time/src/duration.js\");\n\n\n\nvar minute = Object(_interval_js__WEBPACK_IMPORTED_MODULE_0__[\"default\"])(function(date) {\n  date.setTime(date - date.getMilliseconds() - date.getSeconds() * _duration_js__WEBPACK_IMPORTED_MODULE_1__[\"durationSecond\"]);\n}, function(date, step) {\n  date.setTime(+date + step * _duration_js__WEBPACK_IMPORTED_MODULE_1__[\"durationMinute\"]);\n}, function(start, end) {\n  return (end - start) / _duration_js__WEBPACK_IMPORTED_MODULE_1__[\"durationMinute\"];\n}, function(date) {\n  return date.getMinutes();\n});\n\n/* harmony default export */ __webpack_exports__[\"default\"] = (minute);\nvar minutes = minute.range;\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvdmVnYS1sYWJlbC9ub2RlX21vZHVsZXMvZDMtdGltZS9zcmMvbWludXRlLmpzLmpzIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL3ZlZ2EtbGFiZWwvbm9kZV9tb2R1bGVzL2QzLXRpbWUvc3JjL21pbnV0ZS5qcz81M2EwIl0sInNvdXJjZXNDb250ZW50IjpbImltcG9ydCBpbnRlcnZhbCBmcm9tIFwiLi9pbnRlcnZhbC5qc1wiO1xuaW1wb3J0IHtkdXJhdGlvbk1pbnV0ZSwgZHVyYXRpb25TZWNvbmR9IGZyb20gXCIuL2R1cmF0aW9uLmpzXCI7XG5cbnZhciBtaW51dGUgPSBpbnRlcnZhbChmdW5jdGlvbihkYXRlKSB7XG4gIGRhdGUuc2V0VGltZShkYXRlIC0gZGF0ZS5nZXRNaWxsaXNlY29uZHMoKSAtIGRhdGUuZ2V0U2Vjb25kcygpICogZHVyYXRpb25TZWNvbmQpO1xufSwgZnVuY3Rpb24oZGF0ZSwgc3RlcCkge1xuICBkYXRlLnNldFRpbWUoK2RhdGUgKyBzdGVwICogZHVyYXRpb25NaW51dGUpO1xufSwgZnVuY3Rpb24oc3RhcnQsIGVuZCkge1xuICByZXR1cm4gKGVuZCAtIHN0YXJ0KSAvIGR1cmF0aW9uTWludXRlO1xufSwgZnVuY3Rpb24oZGF0ZSkge1xuICByZXR1cm4gZGF0ZS5nZXRNaW51dGVzKCk7XG59KTtcblxuZXhwb3J0IGRlZmF1bHQgbWludXRlO1xuZXhwb3J0IHZhciBtaW51dGVzID0gbWludXRlLnJhbmdlO1xuIl0sIm1hcHBpbmdzIjoiQUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTsiLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///./node_modules/vega-label/node_modules/d3-time/src/minute.js\n");

/***/ }),

/***/ "./node_modules/vega-label/node_modules/d3-time/src/month.js":
/*!*******************************************************************!*\
  !*** ./node_modules/vega-label/node_modules/d3-time/src/month.js ***!
  \*******************************************************************/
/*! exports provided: default, months */
/***/ (function(module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"months\", function() { return months; });\n/* harmony import */ var _interval_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./interval.js */ \"./node_modules/vega-label/node_modules/d3-time/src/interval.js\");\n\n\nvar month = Object(_interval_js__WEBPACK_IMPORTED_MODULE_0__[\"default\"])(function(date) {\n  date.setDate(1);\n  date.setHours(0, 0, 0, 0);\n}, function(date, step) {\n  date.setMonth(date.getMonth() + step);\n}, function(start, end) {\n  return end.getMonth() - start.getMonth() + (end.getFullYear() - start.getFullYear()) * 12;\n}, function(date) {\n  return date.getMonth();\n});\n\n/* harmony default export */ __webpack_exports__[\"default\"] = (month);\nvar months = month.range;\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvdmVnYS1sYWJlbC9ub2RlX21vZHVsZXMvZDMtdGltZS9zcmMvbW9udGguanMuanMiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvdmVnYS1sYWJlbC9ub2RlX21vZHVsZXMvZDMtdGltZS9zcmMvbW9udGguanM/YzdjYSJdLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgaW50ZXJ2YWwgZnJvbSBcIi4vaW50ZXJ2YWwuanNcIjtcblxudmFyIG1vbnRoID0gaW50ZXJ2YWwoZnVuY3Rpb24oZGF0ZSkge1xuICBkYXRlLnNldERhdGUoMSk7XG4gIGRhdGUuc2V0SG91cnMoMCwgMCwgMCwgMCk7XG59LCBmdW5jdGlvbihkYXRlLCBzdGVwKSB7XG4gIGRhdGUuc2V0TW9udGgoZGF0ZS5nZXRNb250aCgpICsgc3RlcCk7XG59LCBmdW5jdGlvbihzdGFydCwgZW5kKSB7XG4gIHJldHVybiBlbmQuZ2V0TW9udGgoKSAtIHN0YXJ0LmdldE1vbnRoKCkgKyAoZW5kLmdldEZ1bGxZZWFyKCkgLSBzdGFydC5nZXRGdWxsWWVhcigpKSAqIDEyO1xufSwgZnVuY3Rpb24oZGF0ZSkge1xuICByZXR1cm4gZGF0ZS5nZXRNb250aCgpO1xufSk7XG5cbmV4cG9ydCBkZWZhdWx0IG1vbnRoO1xuZXhwb3J0IHZhciBtb250aHMgPSBtb250aC5yYW5nZTtcbiJdLCJtYXBwaW5ncyI6IkFBQUE7QUFBQTtBQUFBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOyIsInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///./node_modules/vega-label/node_modules/d3-time/src/month.js\n");

/***/ }),

/***/ "./node_modules/vega-label/node_modules/d3-time/src/second.js":
/*!********************************************************************!*\
  !*** ./node_modules/vega-label/node_modules/d3-time/src/second.js ***!
  \********************************************************************/
/*! exports provided: default, seconds */
/***/ (function(module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"seconds\", function() { return seconds; });\n/* harmony import */ var _interval_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./interval.js */ \"./node_modules/vega-label/node_modules/d3-time/src/interval.js\");\n/* harmony import */ var _duration_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./duration.js */ \"./node_modules/vega-label/node_modules/d3-time/src/duration.js\");\n\n\n\nvar second = Object(_interval_js__WEBPACK_IMPORTED_MODULE_0__[\"default\"])(function(date) {\n  date.setTime(date - date.getMilliseconds());\n}, function(date, step) {\n  date.setTime(+date + step * _duration_js__WEBPACK_IMPORTED_MODULE_1__[\"durationSecond\"]);\n}, function(start, end) {\n  return (end - start) / _duration_js__WEBPACK_IMPORTED_MODULE_1__[\"durationSecond\"];\n}, function(date) {\n  return date.getUTCSeconds();\n});\n\n/* harmony default export */ __webpack_exports__[\"default\"] = (second);\nvar seconds = second.range;\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvdmVnYS1sYWJlbC9ub2RlX21vZHVsZXMvZDMtdGltZS9zcmMvc2Vjb25kLmpzLmpzIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL3ZlZ2EtbGFiZWwvbm9kZV9tb2R1bGVzL2QzLXRpbWUvc3JjL3NlY29uZC5qcz85ZDE2Il0sInNvdXJjZXNDb250ZW50IjpbImltcG9ydCBpbnRlcnZhbCBmcm9tIFwiLi9pbnRlcnZhbC5qc1wiO1xuaW1wb3J0IHtkdXJhdGlvblNlY29uZH0gZnJvbSBcIi4vZHVyYXRpb24uanNcIjtcblxudmFyIHNlY29uZCA9IGludGVydmFsKGZ1bmN0aW9uKGRhdGUpIHtcbiAgZGF0ZS5zZXRUaW1lKGRhdGUgLSBkYXRlLmdldE1pbGxpc2Vjb25kcygpKTtcbn0sIGZ1bmN0aW9uKGRhdGUsIHN0ZXApIHtcbiAgZGF0ZS5zZXRUaW1lKCtkYXRlICsgc3RlcCAqIGR1cmF0aW9uU2Vjb25kKTtcbn0sIGZ1bmN0aW9uKHN0YXJ0LCBlbmQpIHtcbiAgcmV0dXJuIChlbmQgLSBzdGFydCkgLyBkdXJhdGlvblNlY29uZDtcbn0sIGZ1bmN0aW9uKGRhdGUpIHtcbiAgcmV0dXJuIGRhdGUuZ2V0VVRDU2Vjb25kcygpO1xufSk7XG5cbmV4cG9ydCBkZWZhdWx0IHNlY29uZDtcbmV4cG9ydCB2YXIgc2Vjb25kcyA9IHNlY29uZC5yYW5nZTtcbiJdLCJtYXBwaW5ncyI6IkFBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7Iiwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///./node_modules/vega-label/node_modules/d3-time/src/second.js\n");

/***/ }),

/***/ "./node_modules/vega-label/node_modules/d3-time/src/ticks.js":
/*!*******************************************************************!*\
  !*** ./node_modules/vega-label/node_modules/d3-time/src/ticks.js ***!
  \*******************************************************************/
/*! exports provided: utcTicks, utcTickInterval, timeTicks, timeTickInterval */
/***/ (function(module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"utcTicks\", function() { return utcTicks; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"utcTickInterval\", function() { return utcTickInterval; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"timeTicks\", function() { return timeTicks; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"timeTickInterval\", function() { return timeTickInterval; });\n/* harmony import */ var d3_array__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! d3-array */ \"./node_modules/d3-array/src/index.js\");\n/* harmony import */ var _duration_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./duration.js */ \"./node_modules/vega-label/node_modules/d3-time/src/duration.js\");\n/* harmony import */ var _millisecond_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./millisecond.js */ \"./node_modules/vega-label/node_modules/d3-time/src/millisecond.js\");\n/* harmony import */ var _second_js__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ./second.js */ \"./node_modules/vega-label/node_modules/d3-time/src/second.js\");\n/* harmony import */ var _minute_js__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ./minute.js */ \"./node_modules/vega-label/node_modules/d3-time/src/minute.js\");\n/* harmony import */ var _hour_js__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! ./hour.js */ \"./node_modules/vega-label/node_modules/d3-time/src/hour.js\");\n/* harmony import */ var _day_js__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! ./day.js */ \"./node_modules/vega-label/node_modules/d3-time/src/day.js\");\n/* harmony import */ var _week_js__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! ./week.js */ \"./node_modules/vega-label/node_modules/d3-time/src/week.js\");\n/* harmony import */ var _month_js__WEBPACK_IMPORTED_MODULE_8__ = __webpack_require__(/*! ./month.js */ \"./node_modules/vega-label/node_modules/d3-time/src/month.js\");\n/* harmony import */ var _year_js__WEBPACK_IMPORTED_MODULE_9__ = __webpack_require__(/*! ./year.js */ \"./node_modules/vega-label/node_modules/d3-time/src/year.js\");\n/* harmony import */ var _utcMinute_js__WEBPACK_IMPORTED_MODULE_10__ = __webpack_require__(/*! ./utcMinute.js */ \"./node_modules/vega-label/node_modules/d3-time/src/utcMinute.js\");\n/* harmony import */ var _utcHour_js__WEBPACK_IMPORTED_MODULE_11__ = __webpack_require__(/*! ./utcHour.js */ \"./node_modules/vega-label/node_modules/d3-time/src/utcHour.js\");\n/* harmony import */ var _utcDay_js__WEBPACK_IMPORTED_MODULE_12__ = __webpack_require__(/*! ./utcDay.js */ \"./node_modules/vega-label/node_modules/d3-time/src/utcDay.js\");\n/* harmony import */ var _utcWeek_js__WEBPACK_IMPORTED_MODULE_13__ = __webpack_require__(/*! ./utcWeek.js */ \"./node_modules/vega-label/node_modules/d3-time/src/utcWeek.js\");\n/* harmony import */ var _utcMonth_js__WEBPACK_IMPORTED_MODULE_14__ = __webpack_require__(/*! ./utcMonth.js */ \"./node_modules/vega-label/node_modules/d3-time/src/utcMonth.js\");\n/* harmony import */ var _utcYear_js__WEBPACK_IMPORTED_MODULE_15__ = __webpack_require__(/*! ./utcYear.js */ \"./node_modules/vega-label/node_modules/d3-time/src/utcYear.js\");\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\nfunction ticker(year, month, week, day, hour, minute) {\n\n  const tickIntervals = [\n    [_second_js__WEBPACK_IMPORTED_MODULE_3__[\"default\"],  1,      _duration_js__WEBPACK_IMPORTED_MODULE_1__[\"durationSecond\"]],\n    [_second_js__WEBPACK_IMPORTED_MODULE_3__[\"default\"],  5,  5 * _duration_js__WEBPACK_IMPORTED_MODULE_1__[\"durationSecond\"]],\n    [_second_js__WEBPACK_IMPORTED_MODULE_3__[\"default\"], 15, 15 * _duration_js__WEBPACK_IMPORTED_MODULE_1__[\"durationSecond\"]],\n    [_second_js__WEBPACK_IMPORTED_MODULE_3__[\"default\"], 30, 30 * _duration_js__WEBPACK_IMPORTED_MODULE_1__[\"durationSecond\"]],\n    [minute,  1,      _duration_js__WEBPACK_IMPORTED_MODULE_1__[\"durationMinute\"]],\n    [minute,  5,  5 * _duration_js__WEBPACK_IMPORTED_MODULE_1__[\"durationMinute\"]],\n    [minute, 15, 15 * _duration_js__WEBPACK_IMPORTED_MODULE_1__[\"durationMinute\"]],\n    [minute, 30, 30 * _duration_js__WEBPACK_IMPORTED_MODULE_1__[\"durationMinute\"]],\n    [  hour,  1,      _duration_js__WEBPACK_IMPORTED_MODULE_1__[\"durationHour\"]  ],\n    [  hour,  3,  3 * _duration_js__WEBPACK_IMPORTED_MODULE_1__[\"durationHour\"]  ],\n    [  hour,  6,  6 * _duration_js__WEBPACK_IMPORTED_MODULE_1__[\"durationHour\"]  ],\n    [  hour, 12, 12 * _duration_js__WEBPACK_IMPORTED_MODULE_1__[\"durationHour\"]  ],\n    [   day,  1,      _duration_js__WEBPACK_IMPORTED_MODULE_1__[\"durationDay\"]   ],\n    [   day,  2,  2 * _duration_js__WEBPACK_IMPORTED_MODULE_1__[\"durationDay\"]   ],\n    [  week,  1,      _duration_js__WEBPACK_IMPORTED_MODULE_1__[\"durationWeek\"]  ],\n    [ month,  1,      _duration_js__WEBPACK_IMPORTED_MODULE_1__[\"durationMonth\"] ],\n    [ month,  3,  3 * _duration_js__WEBPACK_IMPORTED_MODULE_1__[\"durationMonth\"] ],\n    [  year,  1,      _duration_js__WEBPACK_IMPORTED_MODULE_1__[\"durationYear\"]  ]\n  ];\n\n  function ticks(start, stop, count) {\n    const reverse = stop < start;\n    if (reverse) [start, stop] = [stop, start];\n    const interval = count && typeof count.range === \"function\" ? count : tickInterval(start, stop, count);\n    const ticks = interval ? interval.range(start, +stop + 1) : []; // inclusive stop\n    return reverse ? ticks.reverse() : ticks;\n  }\n\n  function tickInterval(start, stop, count) {\n    const target = Math.abs(stop - start) / count;\n    const i = Object(d3_array__WEBPACK_IMPORTED_MODULE_0__[\"bisector\"])(([,, step]) => step).right(tickIntervals, target);\n    if (i === tickIntervals.length) return year.every(Object(d3_array__WEBPACK_IMPORTED_MODULE_0__[\"tickStep\"])(start / _duration_js__WEBPACK_IMPORTED_MODULE_1__[\"durationYear\"], stop / _duration_js__WEBPACK_IMPORTED_MODULE_1__[\"durationYear\"], count));\n    if (i === 0) return _millisecond_js__WEBPACK_IMPORTED_MODULE_2__[\"default\"].every(Math.max(Object(d3_array__WEBPACK_IMPORTED_MODULE_0__[\"tickStep\"])(start, stop, count), 1));\n    const [t, step] = tickIntervals[target / tickIntervals[i - 1][2] < tickIntervals[i][2] / target ? i - 1 : i];\n    return t.every(step);\n  }\n\n  return [ticks, tickInterval];\n}\n\nconst [utcTicks, utcTickInterval] = ticker(_utcYear_js__WEBPACK_IMPORTED_MODULE_15__[\"default\"], _utcMonth_js__WEBPACK_IMPORTED_MODULE_14__[\"default\"], _utcWeek_js__WEBPACK_IMPORTED_MODULE_13__[\"utcSunday\"], _utcDay_js__WEBPACK_IMPORTED_MODULE_12__[\"default\"], _utcHour_js__WEBPACK_IMPORTED_MODULE_11__[\"default\"], _utcMinute_js__WEBPACK_IMPORTED_MODULE_10__[\"default\"]);\nconst [timeTicks, timeTickInterval] = ticker(_year_js__WEBPACK_IMPORTED_MODULE_9__[\"default\"], _month_js__WEBPACK_IMPORTED_MODULE_8__[\"default\"], _week_js__WEBPACK_IMPORTED_MODULE_7__[\"sunday\"], _day_js__WEBPACK_IMPORTED_MODULE_6__[\"default\"], _hour_js__WEBPACK_IMPORTED_MODULE_5__[\"default\"], _minute_js__WEBPACK_IMPORTED_MODULE_4__[\"default\"]);\n\n\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,[encoded data, 4528 characters]\n//# sourceURL=webpack-internal:///./node_modules/vega-label/node_modules/d3-time/src/ticks.js\n");

/***/ }),

/***/ "./node_modules/vega-label/node_modules/d3-time/src/utcDay.js":
/*!********************************************************************!*\
  !*** ./node_modules/vega-label/node_modules/d3-time/src/utcDay.js ***!
  \********************************************************************/
/*! exports provided: default, utcDays */
/***/ (function(module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"utcDays\", function() { return utcDays; });\n/* harmony import */ var _interval_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./interval.js */ \"./node_modules/vega-label/node_modules/d3-time/src/interval.js\");\n/* harmony import */ var _duration_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./duration.js */ \"./node_modules/vega-label/node_modules/d3-time/src/duration.js\");\n\n\n\nvar utcDay = Object(_interval_js__WEBPACK_IMPORTED_MODULE_0__[\"default\"])(function(date) {\n  date.setUTCHours(0, 0, 0, 0);\n}, function(date, step) {\n  date.setUTCDate(date.getUTCDate() + step);\n}, function(start, end) {\n  return (end - start) / _duration_js__WEBPACK_IMPORTED_MODULE_1__[\"durationDay\"];\n}, function(date) {\n  return date.getUTCDate() - 1;\n});\n\n/* harmony default export */ __webpack_exports__[\"default\"] = (utcDay);\nvar utcDays = utcDay.range;\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvdmVnYS1sYWJlbC9ub2RlX21vZHVsZXMvZDMtdGltZS9zcmMvdXRjRGF5LmpzLmpzIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL3ZlZ2EtbGFiZWwvbm9kZV9tb2R1bGVzL2QzLXRpbWUvc3JjL3V0Y0RheS5qcz80OTIxIl0sInNvdXJjZXNDb250ZW50IjpbImltcG9ydCBpbnRlcnZhbCBmcm9tIFwiLi9pbnRlcnZhbC5qc1wiO1xuaW1wb3J0IHtkdXJhdGlvbkRheX0gZnJvbSBcIi4vZHVyYXRpb24uanNcIjtcblxudmFyIHV0Y0RheSA9IGludGVydmFsKGZ1bmN0aW9uKGRhdGUpIHtcbiAgZGF0ZS5zZXRVVENIb3VycygwLCAwLCAwLCAwKTtcbn0sIGZ1bmN0aW9uKGRhdGUsIHN0ZXApIHtcbiAgZGF0ZS5zZXRVVENEYXRlKGRhdGUuZ2V0VVRDRGF0ZSgpICsgc3RlcCk7XG59LCBmdW5jdGlvbihzdGFydCwgZW5kKSB7XG4gIHJldHVybiAoZW5kIC0gc3RhcnQpIC8gZHVyYXRpb25EYXk7XG59LCBmdW5jdGlvbihkYXRlKSB7XG4gIHJldHVybiBkYXRlLmdldFVUQ0RhdGUoKSAtIDE7XG59KTtcblxuZXhwb3J0IGRlZmF1bHQgdXRjRGF5O1xuZXhwb3J0IHZhciB1dGNEYXlzID0gdXRjRGF5LnJhbmdlO1xuIl0sIm1hcHBpbmdzIjoiQUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTsiLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///./node_modules/vega-label/node_modules/d3-time/src/utcDay.js\n");

/***/ }),

/***/ "./node_modules/vega-label/node_modules/d3-time/src/utcHour.js":
/*!*********************************************************************!*\
  !*** ./node_modules/vega-label/node_modules/d3-time/src/utcHour.js ***!
  \*********************************************************************/
/*! exports provided: default, utcHours */
/***/ (function(module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"utcHours\", function() { return utcHours; });\n/* harmony import */ var _interval_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./interval.js */ \"./node_modules/vega-label/node_modules/d3-time/src/interval.js\");\n/* harmony import */ var _duration_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./duration.js */ \"./node_modules/vega-label/node_modules/d3-time/src/duration.js\");\n\n\n\nvar utcHour = Object(_interval_js__WEBPACK_IMPORTED_MODULE_0__[\"default\"])(function(date) {\n  date.setUTCMinutes(0, 0, 0);\n}, function(date, step) {\n  date.setTime(+date + step * _duration_js__WEBPACK_IMPORTED_MODULE_1__[\"durationHour\"]);\n}, function(start, end) {\n  return (end - start) / _duration_js__WEBPACK_IMPORTED_MODULE_1__[\"durationHour\"];\n}, function(date) {\n  return date.getUTCHours();\n});\n\n/* harmony default export */ __webpack_exports__[\"default\"] = (utcHour);\nvar utcHours = utcHour.range;\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvdmVnYS1sYWJlbC9ub2RlX21vZHVsZXMvZDMtdGltZS9zcmMvdXRjSG91ci5qcy5qcyIsInNvdXJjZXMiOlsid2VicGFjazovLy8uL25vZGVfbW9kdWxlcy92ZWdhLWxhYmVsL25vZGVfbW9kdWxlcy9kMy10aW1lL3NyYy91dGNIb3VyLmpzP2EzOTMiXSwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IGludGVydmFsIGZyb20gXCIuL2ludGVydmFsLmpzXCI7XG5pbXBvcnQge2R1cmF0aW9uSG91cn0gZnJvbSBcIi4vZHVyYXRpb24uanNcIjtcblxudmFyIHV0Y0hvdXIgPSBpbnRlcnZhbChmdW5jdGlvbihkYXRlKSB7XG4gIGRhdGUuc2V0VVRDTWludXRlcygwLCAwLCAwKTtcbn0sIGZ1bmN0aW9uKGRhdGUsIHN0ZXApIHtcbiAgZGF0ZS5zZXRUaW1lKCtkYXRlICsgc3RlcCAqIGR1cmF0aW9uSG91cik7XG59LCBmdW5jdGlvbihzdGFydCwgZW5kKSB7XG4gIHJldHVybiAoZW5kIC0gc3RhcnQpIC8gZHVyYXRpb25Ib3VyO1xufSwgZnVuY3Rpb24oZGF0ZSkge1xuICByZXR1cm4gZGF0ZS5nZXRVVENIb3VycygpO1xufSk7XG5cbmV4cG9ydCBkZWZhdWx0IHV0Y0hvdXI7XG5leHBvcnQgdmFyIHV0Y0hvdXJzID0gdXRjSG91ci5yYW5nZTtcbiJdLCJtYXBwaW5ncyI6IkFBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7Iiwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///./node_modules/vega-label/node_modules/d3-time/src/utcHour.js\n");

/***/ }),

/***/ "./node_modules/vega-label/node_modules/d3-time/src/utcMinute.js":
/*!***********************************************************************!*\
  !*** ./node_modules/vega-label/node_modules/d3-time/src/utcMinute.js ***!
  \***********************************************************************/
/*! exports provided: default, utcMinutes */
/***/ (function(module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"utcMinutes\", function() { return utcMinutes; });\n/* harmony import */ var _interval_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./interval.js */ \"./node_modules/vega-label/node_modules/d3-time/src/interval.js\");\n/* harmony import */ var _duration_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./duration.js */ \"./node_modules/vega-label/node_modules/d3-time/src/duration.js\");\n\n\n\nvar utcMinute = Object(_interval_js__WEBPACK_IMPORTED_MODULE_0__[\"default\"])(function(date) {\n  date.setUTCSeconds(0, 0);\n}, function(date, step) {\n  date.setTime(+date + step * _duration_js__WEBPACK_IMPORTED_MODULE_1__[\"durationMinute\"]);\n}, function(start, end) {\n  return (end - start) / _duration_js__WEBPACK_IMPORTED_MODULE_1__[\"durationMinute\"];\n}, function(date) {\n  return date.getUTCMinutes();\n});\n\n/* harmony default export */ __webpack_exports__[\"default\"] = (utcMinute);\nvar utcMinutes = utcMinute.range;\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvdmVnYS1sYWJlbC9ub2RlX21vZHVsZXMvZDMtdGltZS9zcmMvdXRjTWludXRlLmpzLmpzIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL3ZlZ2EtbGFiZWwvbm9kZV9tb2R1bGVzL2QzLXRpbWUvc3JjL3V0Y01pbnV0ZS5qcz8wMzM3Il0sInNvdXJjZXNDb250ZW50IjpbImltcG9ydCBpbnRlcnZhbCBmcm9tIFwiLi9pbnRlcnZhbC5qc1wiO1xuaW1wb3J0IHtkdXJhdGlvbk1pbnV0ZX0gZnJvbSBcIi4vZHVyYXRpb24uanNcIjtcblxudmFyIHV0Y01pbnV0ZSA9IGludGVydmFsKGZ1bmN0aW9uKGRhdGUpIHtcbiAgZGF0ZS5zZXRVVENTZWNvbmRzKDAsIDApO1xufSwgZnVuY3Rpb24oZGF0ZSwgc3RlcCkge1xuICBkYXRlLnNldFRpbWUoK2RhdGUgKyBzdGVwICogZHVyYXRpb25NaW51dGUpO1xufSwgZnVuY3Rpb24oc3RhcnQsIGVuZCkge1xuICByZXR1cm4gKGVuZCAtIHN0YXJ0KSAvIGR1cmF0aW9uTWludXRlO1xufSwgZnVuY3Rpb24oZGF0ZSkge1xuICByZXR1cm4gZGF0ZS5nZXRVVENNaW51dGVzKCk7XG59KTtcblxuZXhwb3J0IGRlZmF1bHQgdXRjTWludXRlO1xuZXhwb3J0IHZhciB1dGNNaW51dGVzID0gdXRjTWludXRlLnJhbmdlO1xuIl0sIm1hcHBpbmdzIjoiQUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTsiLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///./node_modules/vega-label/node_modules/d3-time/src/utcMinute.js\n");

/***/ }),

/***/ "./node_modules/vega-label/node_modules/d3-time/src/utcMonth.js":
/*!**********************************************************************!*\
  !*** ./node_modules/vega-label/node_modules/d3-time/src/utcMonth.js ***!
  \**********************************************************************/
/*! exports provided: default, utcMonths */
/***/ (function(module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"utcMonths\", function() { return utcMonths; });\n/* harmony import */ var _interval_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./interval.js */ \"./node_modules/vega-label/node_modules/d3-time/src/interval.js\");\n\n\nvar utcMonth = Object(_interval_js__WEBPACK_IMPORTED_MODULE_0__[\"default\"])(function(date) {\n  date.setUTCDate(1);\n  date.setUTCHours(0, 0, 0, 0);\n}, function(date, step) {\n  date.setUTCMonth(date.getUTCMonth() + step);\n}, function(start, end) {\n  return end.getUTCMonth() - start.getUTCMonth() + (end.getUTCFullYear() - start.getUTCFullYear()) * 12;\n}, function(date) {\n  return date.getUTCMonth();\n});\n\n/* harmony default export */ __webpack_exports__[\"default\"] = (utcMonth);\nvar utcMonths = utcMonth.range;\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvdmVnYS1sYWJlbC9ub2RlX21vZHVsZXMvZDMtdGltZS9zcmMvdXRjTW9udGguanMuanMiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvdmVnYS1sYWJlbC9ub2RlX21vZHVsZXMvZDMtdGltZS9zcmMvdXRjTW9udGguanM/YWE3NiJdLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgaW50ZXJ2YWwgZnJvbSBcIi4vaW50ZXJ2YWwuanNcIjtcblxudmFyIHV0Y01vbnRoID0gaW50ZXJ2YWwoZnVuY3Rpb24oZGF0ZSkge1xuICBkYXRlLnNldFVUQ0RhdGUoMSk7XG4gIGRhdGUuc2V0VVRDSG91cnMoMCwgMCwgMCwgMCk7XG59LCBmdW5jdGlvbihkYXRlLCBzdGVwKSB7XG4gIGRhdGUuc2V0VVRDTW9udGgoZGF0ZS5nZXRVVENNb250aCgpICsgc3RlcCk7XG59LCBmdW5jdGlvbihzdGFydCwgZW5kKSB7XG4gIHJldHVybiBlbmQuZ2V0VVRDTW9udGgoKSAtIHN0YXJ0LmdldFVUQ01vbnRoKCkgKyAoZW5kLmdldFVUQ0Z1bGxZZWFyKCkgLSBzdGFydC5nZXRVVENGdWxsWWVhcigpKSAqIDEyO1xufSwgZnVuY3Rpb24oZGF0ZSkge1xuICByZXR1cm4gZGF0ZS5nZXRVVENNb250aCgpO1xufSk7XG5cbmV4cG9ydCBkZWZhdWx0IHV0Y01vbnRoO1xuZXhwb3J0IHZhciB1dGNNb250aHMgPSB1dGNNb250aC5yYW5nZTtcbiJdLCJtYXBwaW5ncyI6IkFBQUE7QUFBQTtBQUFBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOyIsInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///./node_modules/vega-label/node_modules/d3-time/src/utcMonth.js\n");

/***/ }),

/***/ "./node_modules/vega-label/node_modules/d3-time/src/utcWeek.js":
/*!*********************************************************************!*\
  !*** ./node_modules/vega-label/node_modules/d3-time/src/utcWeek.js ***!
  \*********************************************************************/
/*! exports provided: utcSunday, utcMonday, utcTuesday, utcWednesday, utcThursday, utcFriday, utcSaturday, utcSundays, utcMondays, utcTuesdays, utcWednesdays, utcThursdays, utcFridays, utcSaturdays */
/***/ (function(module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"utcSunday\", function() { return utcSunday; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"utcMonday\", function() { return utcMonday; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"utcTuesday\", function() { return utcTuesday; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"utcWednesday\", function() { return utcWednesday; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"utcThursday\", function() { return utcThursday; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"utcFriday\", function() { return utcFriday; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"utcSaturday\", function() { return utcSaturday; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"utcSundays\", function() { return utcSundays; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"utcMondays\", function() { return utcMondays; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"utcTuesdays\", function() { return utcTuesdays; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"utcWednesdays\", function() { return utcWednesdays; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"utcThursdays\", function() { return utcThursdays; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"utcFridays\", function() { return utcFridays; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"utcSaturdays\", function() { return utcSaturdays; });\n/* harmony import */ var _interval_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./interval.js */ \"./node_modules/vega-label/node_modules/d3-time/src/interval.js\");\n/* harmony import */ var _duration_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./duration.js */ \"./node_modules/vega-label/node_modules/d3-time/src/duration.js\");\n\n\n\nfunction utcWeekday(i) {\n  return Object(_interval_js__WEBPACK_IMPORTED_MODULE_0__[\"default\"])(function(date) {\n    date.setUTCDate(date.getUTCDate() - (date.getUTCDay() + 7 - i) % 7);\n    date.setUTCHours(0, 0, 0, 0);\n  }, function(date, step) {\n    date.setUTCDate(date.getUTCDate() + step * 7);\n  }, function(start, end) {\n    return (end - start) / _duration_js__WEBPACK_IMPORTED_MODULE_1__[\"durationWeek\"];\n  });\n}\n\nvar utcSunday = utcWeekday(0);\nvar utcMonday = utcWeekday(1);\nvar utcTuesday = utcWeekday(2);\nvar utcWednesday = utcWeekday(3);\nvar utcThursday = utcWeekday(4);\nvar utcFriday = utcWeekday(5);\nvar utcSaturday = utcWeekday(6);\n\nvar utcSundays = utcSunday.range;\nvar utcMondays = utcMonday.range;\nvar utcTuesdays = utcTuesday.range;\nvar utcWednesdays = utcWednesday.range;\nvar utcThursdays = utcThursday.range;\nvar utcFridays = utcFriday.range;\nvar utcSaturdays = utcSaturday.range;\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvdmVnYS1sYWJlbC9ub2RlX21vZHVsZXMvZDMtdGltZS9zcmMvdXRjV2Vlay5qcy5qcyIsInNvdXJjZXMiOlsid2VicGFjazovLy8uL25vZGVfbW9kdWxlcy92ZWdhLWxhYmVsL25vZGVfbW9kdWxlcy9kMy10aW1lL3NyYy91dGNXZWVrLmpzPzQwY2UiXSwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IGludGVydmFsIGZyb20gXCIuL2ludGVydmFsLmpzXCI7XG5pbXBvcnQge2R1cmF0aW9uV2Vla30gZnJvbSBcIi4vZHVyYXRpb24uanNcIjtcblxuZnVuY3Rpb24gdXRjV2Vla2RheShpKSB7XG4gIHJldHVybiBpbnRlcnZhbChmdW5jdGlvbihkYXRlKSB7XG4gICAgZGF0ZS5zZXRVVENEYXRlKGRhdGUuZ2V0VVRDRGF0ZSgpIC0gKGRhdGUuZ2V0VVRDRGF5KCkgKyA3IC0gaSkgJSA3KTtcbiAgICBkYXRlLnNldFVUQ0hvdXJzKDAsIDAsIDAsIDApO1xuICB9LCBmdW5jdGlvbihkYXRlLCBzdGVwKSB7XG4gICAgZGF0ZS5zZXRVVENEYXRlKGRhdGUuZ2V0VVRDRGF0ZSgpICsgc3RlcCAqIDcpO1xuICB9LCBmdW5jdGlvbihzdGFydCwgZW5kKSB7XG4gICAgcmV0dXJuIChlbmQgLSBzdGFydCkgLyBkdXJhdGlvbldlZWs7XG4gIH0pO1xufVxuXG5leHBvcnQgdmFyIHV0Y1N1bmRheSA9IHV0Y1dlZWtkYXkoMCk7XG5leHBvcnQgdmFyIHV0Y01vbmRheSA9IHV0Y1dlZWtkYXkoMSk7XG5leHBvcnQgdmFyIHV0Y1R1ZXNkYXkgPSB1dGNXZWVrZGF5KDIpO1xuZXhwb3J0IHZhciB1dGNXZWRuZXNkYXkgPSB1dGNXZWVrZGF5KDMpO1xuZXhwb3J0IHZhciB1dGNUaHVyc2RheSA9IHV0Y1dlZWtkYXkoNCk7XG5leHBvcnQgdmFyIHV0Y0ZyaWRheSA9IHV0Y1dlZWtkYXkoNSk7XG5leHBvcnQgdmFyIHV0Y1NhdHVyZGF5ID0gdXRjV2Vla2RheSg2KTtcblxuZXhwb3J0IHZhciB1dGNTdW5kYXlzID0gdXRjU3VuZGF5LnJhbmdlO1xuZXhwb3J0IHZhciB1dGNNb25kYXlzID0gdXRjTW9uZGF5LnJhbmdlO1xuZXhwb3J0IHZhciB1dGNUdWVzZGF5cyA9IHV0Y1R1ZXNkYXkucmFuZ2U7XG5leHBvcnQgdmFyIHV0Y1dlZG5lc2RheXMgPSB1dGNXZWRuZXNkYXkucmFuZ2U7XG5leHBvcnQgdmFyIHV0Y1RodXJzZGF5cyA9IHV0Y1RodXJzZGF5LnJhbmdlO1xuZXhwb3J0IHZhciB1dGNGcmlkYXlzID0gdXRjRnJpZGF5LnJhbmdlO1xuZXhwb3J0IHZhciB1dGNTYXR1cmRheXMgPSB1dGNTYXR1cmRheS5yYW5nZTtcbiJdLCJtYXBwaW5ncyI6IkFBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7Iiwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///./node_modules/vega-label/node_modules/d3-time/src/utcWeek.js\n");

/***/ }),

/***/ "./node_modules/vega-label/node_modules/d3-time/src/utcYear.js":
/*!*********************************************************************!*\
  !*** ./node_modules/vega-label/node_modules/d3-time/src/utcYear.js ***!
  \*********************************************************************/
/*! exports provided: default, utcYears */
/***/ (function(module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"utcYears\", function() { return utcYears; });\n/* harmony import */ var _interval_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./interval.js */ \"./node_modules/vega-label/node_modules/d3-time/src/interval.js\");\n\n\nvar utcYear = Object(_interval_js__WEBPACK_IMPORTED_MODULE_0__[\"default\"])(function(date) {\n  date.setUTCMonth(0, 1);\n  date.setUTCHours(0, 0, 0, 0);\n}, function(date, step) {\n  date.setUTCFullYear(date.getUTCFullYear() + step);\n}, function(start, end) {\n  return end.getUTCFullYear() - start.getUTCFullYear();\n}, function(date) {\n  return date.getUTCFullYear();\n});\n\n// An optimized implementation for this simple case.\nutcYear.every = function(k) {\n  return !isFinite(k = Math.floor(k)) || !(k > 0) ? null : Object(_interval_js__WEBPACK_IMPORTED_MODULE_0__[\"default\"])(function(date) {\n    date.setUTCFullYear(Math.floor(date.getUTCFullYear() / k) * k);\n    date.setUTCMonth(0, 1);\n    date.setUTCHours(0, 0, 0, 0);\n  }, function(date, step) {\n    date.setUTCFullYear(date.getUTCFullYear() + step * k);\n  });\n};\n\n/* harmony default export */ __webpack_exports__[\"default\"] = (utcYear);\nvar utcYears = utcYear.range;\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvdmVnYS1sYWJlbC9ub2RlX21vZHVsZXMvZDMtdGltZS9zcmMvdXRjWWVhci5qcy5qcyIsInNvdXJjZXMiOlsid2VicGFjazovLy8uL25vZGVfbW9kdWxlcy92ZWdhLWxhYmVsL25vZGVfbW9kdWxlcy9kMy10aW1lL3NyYy91dGNZZWFyLmpzPzE3ZjIiXSwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IGludGVydmFsIGZyb20gXCIuL2ludGVydmFsLmpzXCI7XG5cbnZhciB1dGNZZWFyID0gaW50ZXJ2YWwoZnVuY3Rpb24oZGF0ZSkge1xuICBkYXRlLnNldFVUQ01vbnRoKDAsIDEpO1xuICBkYXRlLnNldFVUQ0hvdXJzKDAsIDAsIDAsIDApO1xufSwgZnVuY3Rpb24oZGF0ZSwgc3RlcCkge1xuICBkYXRlLnNldFVUQ0Z1bGxZZWFyKGRhdGUuZ2V0VVRDRnVsbFllYXIoKSArIHN0ZXApO1xufSwgZnVuY3Rpb24oc3RhcnQsIGVuZCkge1xuICByZXR1cm4gZW5kLmdldFVUQ0Z1bGxZZWFyKCkgLSBzdGFydC5nZXRVVENGdWxsWWVhcigpO1xufSwgZnVuY3Rpb24oZGF0ZSkge1xuICByZXR1cm4gZGF0ZS5nZXRVVENGdWxsWWVhcigpO1xufSk7XG5cbi8vIEFuIG9wdGltaXplZCBpbXBsZW1lbnRhdGlvbiBmb3IgdGhpcyBzaW1wbGUgY2FzZS5cbnV0Y1llYXIuZXZlcnkgPSBmdW5jdGlvbihrKSB7XG4gIHJldHVybiAhaXNGaW5pdGUoayA9IE1hdGguZmxvb3IoaykpIHx8ICEoayA+IDApID8gbnVsbCA6IGludGVydmFsKGZ1bmN0aW9uKGRhdGUpIHtcbiAgICBkYXRlLnNldFVUQ0Z1bGxZZWFyKE1hdGguZmxvb3IoZGF0ZS5nZXRVVENGdWxsWWVhcigpIC8gaykgKiBrKTtcbiAgICBkYXRlLnNldFVUQ01vbnRoKDAsIDEpO1xuICAgIGRhdGUuc2V0VVRDSG91cnMoMCwgMCwgMCwgMCk7XG4gIH0sIGZ1bmN0aW9uKGRhdGUsIHN0ZXApIHtcbiAgICBkYXRlLnNldFVUQ0Z1bGxZZWFyKGRhdGUuZ2V0VVRDRnVsbFllYXIoKSArIHN0ZXAgKiBrKTtcbiAgfSk7XG59O1xuXG5leHBvcnQgZGVmYXVsdCB1dGNZZWFyO1xuZXhwb3J0IHZhciB1dGNZZWFycyA9IHV0Y1llYXIucmFuZ2U7XG4iXSwibWFwcGluZ3MiOiJBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7Iiwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///./node_modules/vega-label/node_modules/d3-time/src/utcYear.js\n");

/***/ }),

/***/ "./node_modules/vega-label/node_modules/d3-time/src/week.js":
/*!******************************************************************!*\
  !*** ./node_modules/vega-label/node_modules/d3-time/src/week.js ***!
  \******************************************************************/
/*! exports provided: sunday, monday, tuesday, wednesday, thursday, friday, saturday, sundays, mondays, tuesdays, wednesdays, thursdays, fridays, saturdays */
/***/ (function(module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"sunday\", function() { return sunday; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"monday\", function() { return monday; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"tuesday\", function() { return tuesday; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"wednesday\", function() { return wednesday; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"thursday\", function() { return thursday; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"friday\", function() { return friday; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"saturday\", function() { return saturday; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"sundays\", function() { return sundays; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"mondays\", function() { return mondays; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"tuesdays\", function() { return tuesdays; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"wednesdays\", function() { return wednesdays; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"thursdays\", function() { return thursdays; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"fridays\", function() { return fridays; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"saturdays\", function() { return saturdays; });\n/* harmony import */ var _interval_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./interval.js */ \"./node_modules/vega-label/node_modules/d3-time/src/interval.js\");\n/* harmony import */ var _duration_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./duration.js */ \"./node_modules/vega-label/node_modules/d3-time/src/duration.js\");\n\n\n\nfunction weekday(i) {\n  return Object(_interval_js__WEBPACK_IMPORTED_MODULE_0__[\"default\"])(function(date) {\n    date.setDate(date.getDate() - (date.getDay() + 7 - i) % 7);\n    date.setHours(0, 0, 0, 0);\n  }, function(date, step) {\n    date.setDate(date.getDate() + step * 7);\n  }, function(start, end) {\n    return (end - start - (end.getTimezoneOffset() - start.getTimezoneOffset()) * _duration_js__WEBPACK_IMPORTED_MODULE_1__[\"durationMinute\"]) / _duration_js__WEBPACK_IMPORTED_MODULE_1__[\"durationWeek\"];\n  });\n}\n\nvar sunday = weekday(0);\nvar monday = weekday(1);\nvar tuesday = weekday(2);\nvar wednesday = weekday(3);\nvar thursday = weekday(4);\nvar friday = weekday(5);\nvar saturday = weekday(6);\n\nvar sundays = sunday.range;\nvar mondays = monday.range;\nvar tuesdays = tuesday.range;\nvar wednesdays = wednesday.range;\nvar thursdays = thursday.range;\nvar fridays = friday.range;\nvar saturdays = saturday.range;\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvdmVnYS1sYWJlbC9ub2RlX21vZHVsZXMvZDMtdGltZS9zcmMvd2Vlay5qcy5qcyIsInNvdXJjZXMiOlsid2VicGFjazovLy8uL25vZGVfbW9kdWxlcy92ZWdhLWxhYmVsL25vZGVfbW9kdWxlcy9kMy10aW1lL3NyYy93ZWVrLmpzPzEzZWIiXSwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IGludGVydmFsIGZyb20gXCIuL2ludGVydmFsLmpzXCI7XG5pbXBvcnQge2R1cmF0aW9uTWludXRlLCBkdXJhdGlvbldlZWt9IGZyb20gXCIuL2R1cmF0aW9uLmpzXCI7XG5cbmZ1bmN0aW9uIHdlZWtkYXkoaSkge1xuICByZXR1cm4gaW50ZXJ2YWwoZnVuY3Rpb24oZGF0ZSkge1xuICAgIGRhdGUuc2V0RGF0ZShkYXRlLmdldERhdGUoKSAtIChkYXRlLmdldERheSgpICsgNyAtIGkpICUgNyk7XG4gICAgZGF0ZS5zZXRIb3VycygwLCAwLCAwLCAwKTtcbiAgfSwgZnVuY3Rpb24oZGF0ZSwgc3RlcCkge1xuICAgIGRhdGUuc2V0RGF0ZShkYXRlLmdldERhdGUoKSArIHN0ZXAgKiA3KTtcbiAgfSwgZnVuY3Rpb24oc3RhcnQsIGVuZCkge1xuICAgIHJldHVybiAoZW5kIC0gc3RhcnQgLSAoZW5kLmdldFRpbWV6b25lT2Zmc2V0KCkgLSBzdGFydC5nZXRUaW1lem9uZU9mZnNldCgpKSAqIGR1cmF0aW9uTWludXRlKSAvIGR1cmF0aW9uV2VlaztcbiAgfSk7XG59XG5cbmV4cG9ydCB2YXIgc3VuZGF5ID0gd2Vla2RheSgwKTtcbmV4cG9ydCB2YXIgbW9uZGF5ID0gd2Vla2RheSgxKTtcbmV4cG9ydCB2YXIgdHVlc2RheSA9IHdlZWtkYXkoMik7XG5leHBvcnQgdmFyIHdlZG5lc2RheSA9IHdlZWtkYXkoMyk7XG5leHBvcnQgdmFyIHRodXJzZGF5ID0gd2Vla2RheSg0KTtcbmV4cG9ydCB2YXIgZnJpZGF5ID0gd2Vla2RheSg1KTtcbmV4cG9ydCB2YXIgc2F0dXJkYXkgPSB3ZWVrZGF5KDYpO1xuXG5leHBvcnQgdmFyIHN1bmRheXMgPSBzdW5kYXkucmFuZ2U7XG5leHBvcnQgdmFyIG1vbmRheXMgPSBtb25kYXkucmFuZ2U7XG5leHBvcnQgdmFyIHR1ZXNkYXlzID0gdHVlc2RheS5yYW5nZTtcbmV4cG9ydCB2YXIgd2VkbmVzZGF5cyA9IHdlZG5lc2RheS5yYW5nZTtcbmV4cG9ydCB2YXIgdGh1cnNkYXlzID0gdGh1cnNkYXkucmFuZ2U7XG5leHBvcnQgdmFyIGZyaWRheXMgPSBmcmlkYXkucmFuZ2U7XG5leHBvcnQgdmFyIHNhdHVyZGF5cyA9IHNhdHVyZGF5LnJhbmdlO1xuIl0sIm1hcHBpbmdzIjoiQUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTsiLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///./node_modules/vega-label/node_modules/d3-time/src/week.js\n");

/***/ }),

/***/ "./node_modules/vega-label/node_modules/d3-time/src/year.js":
/*!******************************************************************!*\
  !*** ./node_modules/vega-label/node_modules/d3-time/src/year.js ***!
  \******************************************************************/
/*! exports provided: default, years */
/***/ (function(module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"years\", function() { return years; });\n/* harmony import */ var _interval_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./interval.js */ \"./node_modules/vega-label/node_modules/d3-time/src/interval.js\");\n\n\nvar year = Object(_interval_js__WEBPACK_IMPORTED_MODULE_0__[\"default\"])(function(date) {\n  date.setMonth(0, 1);\n  date.setHours(0, 0, 0, 0);\n}, function(date, step) {\n  date.setFullYear(date.getFullYear() + step);\n}, function(start, end) {\n  return end.getFullYear() - start.getFullYear();\n}, function(date) {\n  return date.getFullYear();\n});\n\n// An optimized implementation for this simple case.\nyear.every = function(k) {\n  return !isFinite(k = Math.floor(k)) || !(k > 0) ? null : Object(_interval_js__WEBPACK_IMPORTED_MODULE_0__[\"default\"])(function(date) {\n    date.setFullYear(Math.floor(date.getFullYear() / k) * k);\n    date.setMonth(0, 1);\n    date.setHours(0, 0, 0, 0);\n  }, function(date, step) {\n    date.setFullYear(date.getFullYear() + step * k);\n  });\n};\n\n/* harmony default export */ __webpack_exports__[\"default\"] = (year);\nvar years = year.range;\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvdmVnYS1sYWJlbC9ub2RlX21vZHVsZXMvZDMtdGltZS9zcmMveWVhci5qcy5qcyIsInNvdXJjZXMiOlsid2VicGFjazovLy8uL25vZGVfbW9kdWxlcy92ZWdhLWxhYmVsL25vZGVfbW9kdWxlcy9kMy10aW1lL3NyYy95ZWFyLmpzPzFiMGUiXSwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IGludGVydmFsIGZyb20gXCIuL2ludGVydmFsLmpzXCI7XG5cbnZhciB5ZWFyID0gaW50ZXJ2YWwoZnVuY3Rpb24oZGF0ZSkge1xuICBkYXRlLnNldE1vbnRoKDAsIDEpO1xuICBkYXRlLnNldEhvdXJzKDAsIDAsIDAsIDApO1xufSwgZnVuY3Rpb24oZGF0ZSwgc3RlcCkge1xuICBkYXRlLnNldEZ1bGxZZWFyKGRhdGUuZ2V0RnVsbFllYXIoKSArIHN0ZXApO1xufSwgZnVuY3Rpb24oc3RhcnQsIGVuZCkge1xuICByZXR1cm4gZW5kLmdldEZ1bGxZZWFyKCkgLSBzdGFydC5nZXRGdWxsWWVhcigpO1xufSwgZnVuY3Rpb24oZGF0ZSkge1xuICByZXR1cm4gZGF0ZS5nZXRGdWxsWWVhcigpO1xufSk7XG5cbi8vIEFuIG9wdGltaXplZCBpbXBsZW1lbnRhdGlvbiBmb3IgdGhpcyBzaW1wbGUgY2FzZS5cbnllYXIuZXZlcnkgPSBmdW5jdGlvbihrKSB7XG4gIHJldHVybiAhaXNGaW5pdGUoayA9IE1hdGguZmxvb3IoaykpIHx8ICEoayA+IDApID8gbnVsbCA6IGludGVydmFsKGZ1bmN0aW9uKGRhdGUpIHtcbiAgICBkYXRlLnNldEZ1bGxZZWFyKE1hdGguZmxvb3IoZGF0ZS5nZXRGdWxsWWVhcigpIC8gaykgKiBrKTtcbiAgICBkYXRlLnNldE1vbnRoKDAsIDEpO1xuICAgIGRhdGUuc2V0SG91cnMoMCwgMCwgMCwgMCk7XG4gIH0sIGZ1bmN0aW9uKGRhdGUsIHN0ZXApIHtcbiAgICBkYXRlLnNldEZ1bGxZZWFyKGRhdGUuZ2V0RnVsbFllYXIoKSArIHN0ZXAgKiBrKTtcbiAgfSk7XG59O1xuXG5leHBvcnQgZGVmYXVsdCB5ZWFyO1xuZXhwb3J0IHZhciB5ZWFycyA9IHllYXIucmFuZ2U7XG4iXSwibWFwcGluZ3MiOiJBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7Iiwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///./node_modules/vega-label/node_modules/d3-time/src/year.js\n");

/***/ }),

/***/ "./node_modules/vega-label/node_modules/vega-dataflow/build/vega-dataflow.module.js":
/*!******************************************************************************************!*\
  !*** ./node_modules/vega-label/node_modules/vega-dataflow/build/vega-dataflow.module.js ***!
  \******************************************************************************************/
/*! exports provided: Dataflow, EventStream, MultiPulse, Operator, Parameters, Pulse, Transform, UniqueList, asyncCallback, changeset, definition, derive, ingest, isChangeSet, isTuple, rederive, replace, stableCompare, transform, transforms, tupleid */
/***/ (function(module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"Dataflow\", function() { return Dataflow; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"EventStream\", function() { return EventStream; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"MultiPulse\", function() { return MultiPulse; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"Operator\", function() { return Operator; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"Parameters\", function() { return Parameters; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"Pulse\", function() { return Pulse; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"Transform\", function() { return Transform; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"UniqueList\", function() { return UniqueList; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"asyncCallback\", function() { return asyncCallback; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"changeset\", function() { return changeset; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"definition\", function() { return definition; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"derive\", function() { return derive; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"ingest\", function() { return ingest$1; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"isChangeSet\", function() { return isChangeSet; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"isTuple\", function() { return isTuple; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"rederive\", function() { return rederive; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"replace\", function() { return replace; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"stableCompare\", function() { return stableCompare; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"transform\", function() { return transform; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"transforms\", function() { return transforms; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"tupleid\", function() { return tupleid; });\n/* harmony import */ var vega_util__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! vega-util */ \"./node_modules/vega-label/node_modules/vega-util/build/vega-util.module.js\");\n/* harmony import */ var vega_loader__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! vega-loader */ \"./node_modules/vega-label/node_modules/vega-loader/index.browser.js\");\n/* harmony import */ var vega_format__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! vega-format */ \"./node_modules/vega-format/build/vega-format.module.js\");\n\n\n\n\nfunction UniqueList(idFunc) {\n  const $ = idFunc || vega_util__WEBPACK_IMPORTED_MODULE_0__[\"identity\"],\n        list = [],\n        ids = {};\n\n  list.add = _ => {\n    const id = $(_);\n\n    if (!ids[id]) {\n      ids[id] = 1;\n      list.push(_);\n    }\n\n    return list;\n  };\n\n  list.remove = _ => {\n    const id = $(_);\n\n    if (ids[id]) {\n      ids[id] = 0;\n      const idx = list.indexOf(_);\n      if (idx >= 0) list.splice(idx, 1);\n    }\n\n    return list;\n  };\n\n  return list;\n}\n\n/**\n * Invoke and await a potentially async callback function. If\n * an error occurs, trap it and route to Dataflow.error.\n * @param {Dataflow} df - The dataflow instance\n * @param {function} callback - A callback function to invoke\n *   and then await. The dataflow will be passed as the single\n *   argument to the function.\n */\nasync function asyncCallback (df, callback) {\n  try {\n    await callback(df);\n  } catch (err) {\n    df.error(err);\n  }\n}\n\nconst TUPLE_ID_KEY = Symbol('vega_id');\nlet TUPLE_ID = 1;\n/**\n * Checks if an input value is a registered tuple.\n * @param {*} t - The value to check.\n * @return {boolean} True if the input is a tuple, false otherwise.\n */\n\nfunction isTuple(t) {\n  return !!(t && tupleid(t));\n}\n/**\n * Returns the id of a tuple.\n * @param {object} t - The input tuple.\n * @return {*} the tuple id.\n */\n\nfunction tupleid(t) {\n  return t[TUPLE_ID_KEY];\n}\n/**\n * Sets the id of a tuple.\n * @param {object} t - The input tuple.\n * @param {*} id - The id value to set.\n * @return {object} the input tuple.\n */\n\nfunction setid(t, id) {\n  t[TUPLE_ID_KEY] = id;\n  return t;\n}\n/**\n * Ingest an object or value as a data tuple.\n * If the input value is an object, an id field will be added to it. For\n * efficiency, the input object is modified directly. A copy is not made.\n * If the input value is a literal, it will be wrapped in a new object\n * instance, with the value accessible as the 'data' property.\n * @param datum - The value to ingest.\n * @return {object} The ingested data tuple.\n */\n\n\nfunction ingest$1(datum) {\n  const t = datum === Object(datum) ? datum : {\n    data: datum\n  };\n  return tupleid(t) ? t : setid(t, TUPLE_ID++);\n}\n/**\n * Given a source tuple, return a derived copy.\n * @param {object} t - The source tuple.\n * @return {object} The derived tuple.\n */\n\nfunction derive(t) {\n  return rederive(t, ingest$1({}));\n}\n/**\n * Rederive a derived tuple by copying values from the source tuple.\n * @param {object} t - The source tuple.\n * @param {object} d - The derived tuple.\n * @return {object} The derived tuple.\n */\n\nfunction rederive(t, d) {\n  for (const k in t) d[k] = t[k];\n\n  return d;\n}\n/**\n * Replace an existing tuple with a new tuple.\n * @param {object} t - The existing data tuple.\n * @param {object} d - The new tuple that replaces the old.\n * @return {object} The new tuple.\n */\n\nfunction replace(t, d) {\n  return setid(d, tupleid(t));\n}\n/**\n * Generate an augmented comparator function that provides stable\n * sorting by tuple id when the given comparator produces ties.\n * @param {function} cmp - The comparator to augment.\n * @param {function} [f] - Optional tuple accessor function.\n * @return {function} An augmented comparator function.\n */\n\nfunction stableCompare(cmp, f) {\n  return !cmp ? null : f ? (a, b) => cmp(a, b) || tupleid(f(a)) - tupleid(f(b)) : (a, b) => cmp(a, b) || tupleid(a) - tupleid(b);\n}\n\nfunction isChangeSet(v) {\n  return v && v.constructor === changeset;\n}\nfunction changeset() {\n  const add = [],\n        // insert tuples\n  rem = [],\n        // remove tuples\n  mod = [],\n        // modify tuples\n  remp = [],\n        // remove by predicate\n  modp = []; // modify by predicate\n\n  let clean = null,\n      reflow = false;\n  return {\n    constructor: changeset,\n\n    insert(t) {\n      const d = Object(vega_util__WEBPACK_IMPORTED_MODULE_0__[\"array\"])(t),\n            n = d.length;\n\n      for (let i = 0; i < n; ++i) add.push(d[i]);\n\n      return this;\n    },\n\n    remove(t) {\n      const a = Object(vega_util__WEBPACK_IMPORTED_MODULE_0__[\"isFunction\"])(t) ? remp : rem,\n            d = Object(vega_util__WEBPACK_IMPORTED_MODULE_0__[\"array\"])(t),\n            n = d.length;\n\n      for (let i = 0; i < n; ++i) a.push(d[i]);\n\n      return this;\n    },\n\n    modify(t, field, value) {\n      const m = {\n        field: field,\n        value: Object(vega_util__WEBPACK_IMPORTED_MODULE_0__[\"constant\"])(value)\n      };\n\n      if (Object(vega_util__WEBPACK_IMPORTED_MODULE_0__[\"isFunction\"])(t)) {\n        m.filter = t;\n        modp.push(m);\n      } else {\n        m.tuple = t;\n        mod.push(m);\n      }\n\n      return this;\n    },\n\n    encode(t, set) {\n      if (Object(vega_util__WEBPACK_IMPORTED_MODULE_0__[\"isFunction\"])(t)) modp.push({\n        filter: t,\n        field: set\n      });else mod.push({\n        tuple: t,\n        field: set\n      });\n      return this;\n    },\n\n    clean(value) {\n      clean = value;\n      return this;\n    },\n\n    reflow() {\n      reflow = true;\n      return this;\n    },\n\n    pulse(pulse, tuples) {\n      const cur = {},\n            out = {};\n      let i, n, m, f, t, id; // build lookup table of current tuples\n\n      for (i = 0, n = tuples.length; i < n; ++i) {\n        cur[tupleid(tuples[i])] = 1;\n      } // process individual tuples to remove\n\n\n      for (i = 0, n = rem.length; i < n; ++i) {\n        t = rem[i];\n        cur[tupleid(t)] = -1;\n      } // process predicate-based removals\n\n\n      for (i = 0, n = remp.length; i < n; ++i) {\n        f = remp[i];\n        tuples.forEach(t => {\n          if (f(t)) cur[tupleid(t)] = -1;\n        });\n      } // process all add tuples\n\n\n      for (i = 0, n = add.length; i < n; ++i) {\n        t = add[i];\n        id = tupleid(t);\n\n        if (cur[id]) {\n          // tuple already resides in dataset\n          // if flagged for both add and remove, cancel\n          cur[id] = 1;\n        } else {\n          // tuple does not reside in dataset, add\n          pulse.add.push(ingest$1(add[i]));\n        }\n      } // populate pulse rem list\n\n\n      for (i = 0, n = tuples.length; i < n; ++i) {\n        t = tuples[i];\n        if (cur[tupleid(t)] < 0) pulse.rem.push(t);\n      } // modify helper method\n\n\n      function modify(t, f, v) {\n        if (v) {\n          t[f] = v(t);\n        } else {\n          pulse.encode = f;\n        }\n\n        if (!reflow) out[tupleid(t)] = t;\n      } // process individual tuples to modify\n\n\n      for (i = 0, n = mod.length; i < n; ++i) {\n        m = mod[i];\n        t = m.tuple;\n        f = m.field;\n        id = cur[tupleid(t)];\n\n        if (id > 0) {\n          modify(t, f, m.value);\n          pulse.modifies(f);\n        }\n      } // process predicate-based modifications\n\n\n      for (i = 0, n = modp.length; i < n; ++i) {\n        m = modp[i];\n        f = m.filter;\n        tuples.forEach(t => {\n          if (f(t) && cur[tupleid(t)] > 0) {\n            modify(t, m.field, m.value);\n          }\n        });\n        pulse.modifies(m.field);\n      } // upon reflow request, populate mod with all non-removed tuples\n      // otherwise, populate mod with modified tuples only\n\n\n      if (reflow) {\n        pulse.mod = rem.length || remp.length ? tuples.filter(t => cur[tupleid(t)] > 0) : tuples.slice();\n      } else {\n        for (id in out) pulse.mod.push(out[id]);\n      } // set pulse garbage collection request\n\n\n      if (clean || clean == null && (rem.length || remp.length)) {\n        pulse.clean(true);\n      }\n\n      return pulse;\n    }\n\n  };\n}\n\nconst CACHE = '_:mod:_';\n/**\n * Hash that tracks modifications to assigned values.\n * Callers *must* use the set method to update values.\n */\n\nfunction Parameters() {\n  Object.defineProperty(this, CACHE, {\n    writable: true,\n    value: {}\n  });\n}\nParameters.prototype = {\n  /**\n   * Set a parameter value. If the parameter value changes, the parameter\n   * will be recorded as modified.\n   * @param {string} name - The parameter name.\n   * @param {number} index - The index into an array-value parameter. Ignored if\n   *   the argument is undefined, null or less than zero.\n   * @param {*} value - The parameter value to set.\n   * @param {boolean} [force=false] - If true, records the parameter as modified\n   *   even if the value is unchanged.\n   * @return {Parameters} - This parameter object.\n   */\n  set(name, index, value, force) {\n    const o = this,\n          v = o[name],\n          mod = o[CACHE];\n\n    if (index != null && index >= 0) {\n      if (v[index] !== value || force) {\n        v[index] = value;\n        mod[index + ':' + name] = -1;\n        mod[name] = -1;\n      }\n    } else if (v !== value || force) {\n      o[name] = value;\n      mod[name] = Object(vega_util__WEBPACK_IMPORTED_MODULE_0__[\"isArray\"])(value) ? 1 + value.length : -1;\n    }\n\n    return o;\n  },\n\n  /**\n   * Tests if one or more parameters has been modified. If invoked with no\n   * arguments, returns true if any parameter value has changed. If the first\n   * argument is array, returns trues if any parameter name in the array has\n   * changed. Otherwise, tests if the given name and optional array index has\n   * changed.\n   * @param {string} name - The parameter name to test.\n   * @param {number} [index=undefined] - The parameter array index to test.\n   * @return {boolean} - Returns true if a queried parameter was modified.\n   */\n  modified(name, index) {\n    const mod = this[CACHE];\n\n    if (!arguments.length) {\n      for (const k in mod) {\n        if (mod[k]) return true;\n      }\n\n      return false;\n    } else if (Object(vega_util__WEBPACK_IMPORTED_MODULE_0__[\"isArray\"])(name)) {\n      for (let k = 0; k < name.length; ++k) {\n        if (mod[name[k]]) return true;\n      }\n\n      return false;\n    }\n\n    return index != null && index >= 0 ? index + 1 < mod[name] || !!mod[index + ':' + name] : !!mod[name];\n  },\n\n  /**\n   * Clears the modification records. After calling this method,\n   * all parameters are considered unmodified.\n   */\n  clear() {\n    this[CACHE] = {};\n    return this;\n  }\n\n};\n\nlet OP_ID = 0;\nconst PULSE = 'pulse',\n      NO_PARAMS = new Parameters(); // Boolean Flags\n\nconst SKIP$1 = 1,\n      MODIFIED = 2;\n/**\n * An Operator is a processing node in a dataflow graph.\n * Each operator stores a value and an optional value update function.\n * Operators can accept a hash of named parameters. Parameter values can\n * either be direct (JavaScript literals, arrays, objects) or indirect\n * (other operators whose values will be pulled dynamically). Operators\n * included as parameters will have this operator added as a dependency.\n * @constructor\n * @param {*} [init] - The initial value for this operator.\n * @param {function(object, Pulse)} [update] - An update function. Upon\n *   evaluation of this operator, the update function will be invoked and the\n *   return value will be used as the new value of this operator.\n * @param {object} [params] - The parameters for this operator.\n * @param {boolean} [react=true] - Flag indicating if this operator should\n *   listen for changes to upstream operators included as parameters.\n * @see parameters\n */\n\nfunction Operator(init, update, params, react) {\n  this.id = ++OP_ID;\n  this.value = init;\n  this.stamp = -1;\n  this.rank = -1;\n  this.qrank = -1;\n  this.flags = 0;\n\n  if (update) {\n    this._update = update;\n  }\n\n  if (params) this.parameters(params, react);\n}\n\nfunction flag(bit) {\n  return function (state) {\n    const f = this.flags;\n    if (arguments.length === 0) return !!(f & bit);\n    this.flags = state ? f | bit : f & ~bit;\n    return this;\n  };\n}\n\nOperator.prototype = {\n  /**\n   * Returns a list of target operators dependent on this operator.\n   * If this list does not exist, it is created and then returned.\n   * @return {UniqueList}\n   */\n  targets() {\n    return this._targets || (this._targets = UniqueList(vega_util__WEBPACK_IMPORTED_MODULE_0__[\"id\"]));\n  },\n\n  /**\n   * Sets the value of this operator.\n   * @param {*} value - the value to set.\n   * @return {Number} Returns 1 if the operator value has changed\n   *   according to strict equality, returns 0 otherwise.\n   */\n  set(value) {\n    if (this.value !== value) {\n      this.value = value;\n      return 1;\n    } else {\n      return 0;\n    }\n  },\n\n  /**\n   * Indicates that operator evaluation should be skipped on the next pulse.\n   * This operator will still propagate incoming pulses, but its update function\n   * will not be invoked. The skip flag is reset after every pulse, so calling\n   * this method will affect processing of the next pulse only.\n   */\n  skip: flag(SKIP$1),\n\n  /**\n   * Indicates that this operator's value has been modified on its most recent\n   * pulse. Normally modification is checked via strict equality; however, in\n   * some cases it is more efficient to update the internal state of an object.\n   * In those cases, the modified flag can be used to trigger propagation. Once\n   * set, the modification flag persists across pulses until unset. The flag can\n   * be used with the last timestamp to test if a modification is recent.\n   */\n  modified: flag(MODIFIED),\n\n  /**\n   * Sets the parameters for this operator. The parameter values are analyzed for\n   * operator instances. If found, this operator will be added as a dependency\n   * of the parameterizing operator. Operator values are dynamically marshalled\n   * from each operator parameter prior to evaluation. If a parameter value is\n   * an array, the array will also be searched for Operator instances. However,\n   * the search does not recurse into sub-arrays or object properties.\n   * @param {object} params - A hash of operator parameters.\n   * @param {boolean} [react=true] - A flag indicating if this operator should\n   *   automatically update (react) when parameter values change. In other words,\n   *   this flag determines if the operator registers itself as a listener on\n   *   any upstream operators included in the parameters.\n   * @param {boolean} [initonly=false] - A flag indicating if this operator\n   *   should calculate an update only upon its initiatal evaluation, then\n   *   deregister dependencies and suppress all future update invocations.\n   * @return {Operator[]} - An array of upstream dependencies.\n   */\n  parameters(params, react, initonly) {\n    react = react !== false;\n    const argval = this._argval = this._argval || new Parameters(),\n          argops = this._argops = this._argops || [],\n          deps = [];\n    let name, value, n, i;\n\n    const add = (name, index, value) => {\n      if (value instanceof Operator) {\n        if (value !== this) {\n          if (react) value.targets().add(this);\n          deps.push(value);\n        }\n\n        argops.push({\n          op: value,\n          name: name,\n          index: index\n        });\n      } else {\n        argval.set(name, index, value);\n      }\n    };\n\n    for (name in params) {\n      value = params[name];\n\n      if (name === PULSE) {\n        Object(vega_util__WEBPACK_IMPORTED_MODULE_0__[\"array\"])(value).forEach(op => {\n          if (!(op instanceof Operator)) {\n            Object(vega_util__WEBPACK_IMPORTED_MODULE_0__[\"error\"])('Pulse parameters must be operator instances.');\n          } else if (op !== this) {\n            op.targets().add(this);\n            deps.push(op);\n          }\n        });\n        this.source = value;\n      } else if (Object(vega_util__WEBPACK_IMPORTED_MODULE_0__[\"isArray\"])(value)) {\n        argval.set(name, -1, Array(n = value.length));\n\n        for (i = 0; i < n; ++i) add(name, i, value[i]);\n      } else {\n        add(name, -1, value);\n      }\n    }\n\n    this.marshall().clear(); // initialize values\n\n    if (initonly) argops.initonly = true;\n    return deps;\n  },\n\n  /**\n   * Internal method for marshalling parameter values.\n   * Visits each operator dependency to pull the latest value.\n   * @return {Parameters} A Parameters object to pass to the update function.\n   */\n  marshall(stamp) {\n    const argval = this._argval || NO_PARAMS,\n          argops = this._argops;\n    let item, i, op, mod;\n\n    if (argops) {\n      const n = argops.length;\n\n      for (i = 0; i < n; ++i) {\n        item = argops[i];\n        op = item.op;\n        mod = op.modified() && op.stamp === stamp;\n        argval.set(item.name, item.index, op.value, mod);\n      }\n\n      if (argops.initonly) {\n        for (i = 0; i < n; ++i) {\n          item = argops[i];\n          item.op.targets().remove(this);\n        }\n\n        this._argops = null;\n        this._update = null;\n      }\n    }\n\n    return argval;\n  },\n\n  /**\n   * Detach this operator from the dataflow.\n   * Unregisters listeners on upstream dependencies.\n   */\n  detach() {\n    const argops = this._argops;\n    let i, n, item, op;\n\n    if (argops) {\n      for (i = 0, n = argops.length; i < n; ++i) {\n        item = argops[i];\n        op = item.op;\n\n        if (op._targets) {\n          op._targets.remove(this);\n        }\n      }\n    } // remove references to the source and pulse object,\n    // if present, to prevent memory leaks of old data.\n\n\n    this.pulse = null;\n    this.source = null;\n  },\n\n  /**\n   * Delegate method to perform operator processing.\n   * Subclasses can override this method to perform custom processing.\n   * By default, it marshalls parameters and calls the update function\n   * if that function is defined. If the update function does not\n   * change the operator value then StopPropagation is returned.\n   * If no update function is defined, this method does nothing.\n   * @param {Pulse} pulse - the current dataflow pulse.\n   * @return The output pulse or StopPropagation. A falsy return value\n   *   (including undefined) will let the input pulse pass through.\n   */\n  evaluate(pulse) {\n    const update = this._update;\n\n    if (update) {\n      const params = this.marshall(pulse.stamp),\n            v = update.call(this, params, pulse);\n      params.clear();\n\n      if (v !== this.value) {\n        this.value = v;\n      } else if (!this.modified()) {\n        return pulse.StopPropagation;\n      }\n    }\n  },\n\n  /**\n   * Run this operator for the current pulse. If this operator has already\n   * been run at (or after) the pulse timestamp, returns StopPropagation.\n   * Internally, this method calls {@link evaluate} to perform processing.\n   * If {@link evaluate} returns a falsy value, the input pulse is returned.\n   * This method should NOT be overridden, instead overrride {@link evaluate}.\n   * @param {Pulse} pulse - the current dataflow pulse.\n   * @return the output pulse for this operator (or StopPropagation)\n   */\n  run(pulse) {\n    if (pulse.stamp < this.stamp) return pulse.StopPropagation;\n    let rv;\n\n    if (this.skip()) {\n      this.skip(false);\n      rv = 0;\n    } else {\n      rv = this.evaluate(pulse);\n    }\n\n    return this.pulse = rv || pulse;\n  }\n\n};\n\n/**\n * Add an operator to the dataflow graph. This function accepts a\n * variety of input argument types. The basic signature supports an\n * initial value, update function and parameters. If the first parameter\n * is an Operator instance, it will be added directly. If it is a\n * constructor for an Operator subclass, a new instance will be instantiated.\n * Otherwise, if the first parameter is a function instance, it will be used\n * as the update function and a null initial value is assumed.\n * @param {*} init - One of: the operator to add, the initial value of\n *   the operator, an operator class to instantiate, or an update function.\n * @param {function} [update] - The operator update function.\n * @param {object} [params] - The operator parameters.\n * @param {boolean} [react=true] - Flag indicating if this operator should\n *   listen for changes to upstream operators included as parameters.\n * @return {Operator} - The added operator.\n */\n\nfunction add (init, update, params, react) {\n  let shift = 1,\n      op;\n\n  if (init instanceof Operator) {\n    op = init;\n  } else if (init && init.prototype instanceof Operator) {\n    op = new init();\n  } else if (Object(vega_util__WEBPACK_IMPORTED_MODULE_0__[\"isFunction\"])(init)) {\n    op = new Operator(null, init);\n  } else {\n    shift = 0;\n    op = new Operator(init, update);\n  }\n\n  this.rank(op);\n\n  if (shift) {\n    react = params;\n    params = update;\n  }\n\n  if (params) this.connect(op, op.parameters(params, react));\n  this.touch(op);\n  return op;\n}\n\n/**\n * Connect a target operator as a dependent of source operators.\n * If necessary, this method will rerank the target operator and its\n * dependents to ensure propagation proceeds in a topologically sorted order.\n * @param {Operator} target - The target operator.\n * @param {Array<Operator>} - The source operators that should propagate\n *   to the target operator.\n */\nfunction connect (target, sources) {\n  const targetRank = target.rank,\n        n = sources.length;\n\n  for (let i = 0; i < n; ++i) {\n    if (targetRank < sources[i].rank) {\n      this.rerank(target);\n      return;\n    }\n  }\n}\n\nlet STREAM_ID = 0;\n/**\n * Models an event stream.\n * @constructor\n * @param {function(Object, number): boolean} [filter] - Filter predicate.\n *   Events pass through when truthy, events are suppressed when falsy.\n * @param {function(Object): *} [apply] - Applied to input events to produce\n *   new event values.\n * @param {function(Object)} [receive] - Event callback function to invoke\n *   upon receipt of a new event. Use to override standard event processing.\n */\n\nfunction EventStream(filter, apply, receive) {\n  this.id = ++STREAM_ID;\n  this.value = null;\n  if (receive) this.receive = receive;\n  if (filter) this._filter = filter;\n  if (apply) this._apply = apply;\n}\n/**\n * Creates a new event stream instance with the provided\n * (optional) filter, apply and receive functions.\n * @param {function(Object, number): boolean} [filter] - Filter predicate.\n *   Events pass through when truthy, events are suppressed when falsy.\n * @param {function(Object): *} [apply] - Applied to input events to produce\n *   new event values.\n * @see EventStream\n */\n\nfunction stream(filter, apply, receive) {\n  return new EventStream(filter, apply, receive);\n}\nEventStream.prototype = {\n  _filter: vega_util__WEBPACK_IMPORTED_MODULE_0__[\"truthy\"],\n  _apply: vega_util__WEBPACK_IMPORTED_MODULE_0__[\"identity\"],\n\n  targets() {\n    return this._targets || (this._targets = UniqueList(vega_util__WEBPACK_IMPORTED_MODULE_0__[\"id\"]));\n  },\n\n  consume(_) {\n    if (!arguments.length) return !!this._consume;\n    this._consume = !!_;\n    return this;\n  },\n\n  receive(evt) {\n    if (this._filter(evt)) {\n      const val = this.value = this._apply(evt),\n            trg = this._targets,\n            n = trg ? trg.length : 0;\n\n      for (let i = 0; i < n; ++i) trg[i].receive(val);\n\n      if (this._consume) {\n        evt.preventDefault();\n        evt.stopPropagation();\n      }\n    }\n  },\n\n  filter(filter) {\n    const s = stream(filter);\n    this.targets().add(s);\n    return s;\n  },\n\n  apply(apply) {\n    const s = stream(null, apply);\n    this.targets().add(s);\n    return s;\n  },\n\n  merge() {\n    const s = stream();\n    this.targets().add(s);\n\n    for (let i = 0, n = arguments.length; i < n; ++i) {\n      arguments[i].targets().add(s);\n    }\n\n    return s;\n  },\n\n  throttle(pause) {\n    let t = -1;\n    return this.filter(() => {\n      const now = Date.now();\n\n      if (now - t > pause) {\n        t = now;\n        return 1;\n      } else {\n        return 0;\n      }\n    });\n  },\n\n  debounce(delay) {\n    const s = stream();\n    this.targets().add(stream(null, null, Object(vega_util__WEBPACK_IMPORTED_MODULE_0__[\"debounce\"])(delay, e => {\n      const df = e.dataflow;\n      s.receive(e);\n      if (df && df.run) df.run();\n    })));\n    return s;\n  },\n\n  between(a, b) {\n    let active = false;\n    a.targets().add(stream(null, null, () => active = true));\n    b.targets().add(stream(null, null, () => active = false));\n    return this.filter(() => active);\n  },\n\n  detach() {\n    // ensures compatibility with operators (#2753)\n    // remove references to other streams and filter functions that may\n    // be bound to subcontexts that need to be garbage collected.\n    this._filter = vega_util__WEBPACK_IMPORTED_MODULE_0__[\"truthy\"];\n    this._targets = null;\n  }\n\n};\n\n/**\n * Create a new event stream from an event source.\n * @param {object} source - The event source to monitor. The input must\n *  support the addEventListener method.\n * @param {string} type - The event type.\n * @param {function(object): boolean} [filter] - Event filter function.\n * @param {function(object): *} [apply] - Event application function.\n *   If provided, this function will be invoked and the result will be\n *   used as the downstream event value.\n * @return {EventStream}\n */\n\nfunction events (source, type, filter, apply) {\n  const df = this,\n        s = stream(filter, apply),\n        send = function (e) {\n    e.dataflow = df;\n\n    try {\n      s.receive(e);\n    } catch (error) {\n      df.error(error);\n    } finally {\n      df.run();\n    }\n  };\n\n  let sources;\n\n  if (typeof source === 'string' && typeof document !== 'undefined') {\n    sources = document.querySelectorAll(source);\n  } else {\n    sources = Object(vega_util__WEBPACK_IMPORTED_MODULE_0__[\"array\"])(source);\n  }\n\n  const n = sources.length;\n\n  for (let i = 0; i < n; ++i) {\n    sources[i].addEventListener(type, send);\n  }\n\n  return s;\n}\n\nfunction parse(data, format) {\n  const locale = this.locale();\n  return Object(vega_loader__WEBPACK_IMPORTED_MODULE_1__[\"read\"])(data, format, locale.timeParse, locale.utcParse);\n}\n/**\n * Ingests new data into the dataflow. First parses the data using the\n * vega-loader read method, then pulses a changeset to the target operator.\n * @param {Operator} target - The Operator to target with ingested data,\n *   typically a Collect transform instance.\n * @param {*} data - The input data, prior to parsing. For JSON this may\n *   be a string or an object. For CSV, TSV, etc should be a string.\n * @param {object} format - The data format description for parsing\n *   loaded data. This object is passed to the vega-loader read method.\n * @returns {Dataflow}\n */\n\nfunction ingest(target, data, format) {\n  data = this.parse(data, format);\n  return this.pulse(target, this.changeset().insert(data));\n}\n/**\n * Request data from an external source, parse it, and return a Promise.\n * @param {string} url - The URL from which to load the data. This string\n *   is passed to the vega-loader load method.\n * @param {object} [format] - The data format description for parsing\n *   loaded data. This object is passed to the vega-loader read method.\n * @return {Promise} A Promise that resolves upon completion of the request.\n *   The resolved object contains the following properties:\n *   - data: an array of parsed data (or null upon error)\n *   - status: a code for success (0), load fail (-1), or parse fail (-2)\n */\n\nasync function request(url, format) {\n  const df = this;\n  let status = 0,\n      data;\n\n  try {\n    data = await df.loader().load(url, {\n      context: 'dataflow',\n      response: Object(vega_loader__WEBPACK_IMPORTED_MODULE_1__[\"responseType\"])(format && format.type)\n    });\n\n    try {\n      data = df.parse(data, format);\n    } catch (err) {\n      status = -2;\n      df.warn('Data ingestion failed', url, err);\n    }\n  } catch (err) {\n    status = -1;\n    df.warn('Loading failed', url, err);\n  }\n\n  return {\n    data,\n    status\n  };\n}\nasync function preload(target, url, format) {\n  const df = this,\n        pending = df._pending || loadPending(df);\n  pending.requests += 1;\n  const res = await df.request(url, format);\n  df.pulse(target, df.changeset().remove(vega_util__WEBPACK_IMPORTED_MODULE_0__[\"truthy\"]).insert(res.data || []));\n  pending.done();\n  return res;\n}\n\nfunction loadPending(df) {\n  let accept;\n  const pending = new Promise(a => accept = a);\n  pending.requests = 0;\n\n  pending.done = () => {\n    if (--pending.requests === 0) {\n      df._pending = null;\n      accept(df);\n    }\n  };\n\n  return df._pending = pending;\n}\n\nconst SKIP = {\n  skip: true\n};\n/**\n * Perform operator updates in response to events. Applies an\n * update function to compute a new operator value. If the update function\n * returns a {@link ChangeSet}, the operator will be pulsed with those tuple\n * changes. Otherwise, the operator value will be updated to the return value.\n * @param {EventStream|Operator} source - The event source to react to.\n *   This argument can be either an EventStream or an Operator.\n * @param {Operator|function(object):Operator} target - The operator to update.\n *   This argument can either be an Operator instance or (if the source\n *   argument is an EventStream), a function that accepts an event object as\n *   input and returns an Operator to target.\n * @param {function(Parameters,Event): *} [update] - Optional update function\n *   to compute the new operator value, or a literal value to set. Update\n *   functions expect to receive a parameter object and event as arguments.\n *   This function can either return a new operator value or (if the source\n *   argument is an EventStream) a {@link ChangeSet} instance to pulse\n *   the target operator with tuple changes.\n * @param {object} [params] - The update function parameters.\n * @param {object} [options] - Additional options hash. If not overridden,\n *   updated operators will be skipped by default.\n * @param {boolean} [options.skip] - If true, the operator will\n *  be skipped: it will not be evaluated, but its dependents will be.\n * @param {boolean} [options.force] - If true, the operator will\n *   be re-evaluated even if its value has not changed.\n * @return {Dataflow}\n */\n\nfunction on (source, target, update, params, options) {\n  const fn = source instanceof Operator ? onOperator : onStream;\n  fn(this, source, target, update, params, options);\n  return this;\n}\n\nfunction onStream(df, stream, target, update, params, options) {\n  const opt = Object(vega_util__WEBPACK_IMPORTED_MODULE_0__[\"extend\"])({}, options, SKIP);\n  let func, op;\n  if (!Object(vega_util__WEBPACK_IMPORTED_MODULE_0__[\"isFunction\"])(target)) target = Object(vega_util__WEBPACK_IMPORTED_MODULE_0__[\"constant\"])(target);\n\n  if (update === undefined) {\n    func = e => df.touch(target(e));\n  } else if (Object(vega_util__WEBPACK_IMPORTED_MODULE_0__[\"isFunction\"])(update)) {\n    op = new Operator(null, update, params, false);\n\n    func = e => {\n      op.evaluate(e);\n      const t = target(e),\n            v = op.value;\n      isChangeSet(v) ? df.pulse(t, v, options) : df.update(t, v, opt);\n    };\n  } else {\n    func = e => df.update(target(e), update, opt);\n  }\n\n  stream.apply(func);\n}\n\nfunction onOperator(df, source, target, update, params, options) {\n  if (update === undefined) {\n    source.targets().add(target);\n  } else {\n    const opt = options || {},\n          op = new Operator(null, updater(target, update), params, false);\n    op.modified(opt.force);\n    op.rank = source.rank; // immediately follow source\n\n    source.targets().add(op); // add dependency\n\n    if (target) {\n      op.skip(true); // skip first invocation\n\n      op.value = target.value; // initialize value\n\n      op.targets().add(target); // chain dependencies\n\n      df.connect(target, [op]); // rerank as needed, #1672\n    }\n  }\n}\n\nfunction updater(target, update) {\n  update = Object(vega_util__WEBPACK_IMPORTED_MODULE_0__[\"isFunction\"])(update) ? update : Object(vega_util__WEBPACK_IMPORTED_MODULE_0__[\"constant\"])(update);\n  return target ? function (_, pulse) {\n    const value = update(_, pulse);\n\n    if (!target.skip()) {\n      target.skip(value !== this.value).value = value;\n    }\n\n    return value;\n  } : update;\n}\n\n/**\n * Assigns a rank to an operator. Ranks are assigned in increasing order\n * by incrementing an internal rank counter.\n * @param {Operator} op - The operator to assign a rank.\n */\n\nfunction rank(op) {\n  op.rank = ++this._rank;\n}\n/**\n * Re-ranks an operator and all downstream target dependencies. This\n * is necessary when upstream dependencies of higher rank are added to\n * a target operator.\n * @param {Operator} op - The operator to re-rank.\n */\n\nfunction rerank(op) {\n  const queue = [op];\n  let cur, list, i;\n\n  while (queue.length) {\n    this.rank(cur = queue.pop());\n\n    if (list = cur._targets) {\n      for (i = list.length; --i >= 0;) {\n        queue.push(cur = list[i]);\n        if (cur === op) Object(vega_util__WEBPACK_IMPORTED_MODULE_0__[\"error\"])('Cycle detected in dataflow graph.');\n      }\n    }\n  }\n}\n\n/**\n * Sentinel value indicating pulse propagation should stop.\n */\n\nconst StopPropagation = {}; // Pulse visit type flags\n\nconst ADD = 1 << 0,\n      REM = 1 << 1,\n      MOD = 1 << 2,\n      ADD_REM = ADD | REM,\n      ADD_MOD = ADD | MOD,\n      ALL = ADD | REM | MOD,\n      REFLOW = 1 << 3,\n      SOURCE = 1 << 4,\n      NO_SOURCE = 1 << 5,\n      NO_FIELDS = 1 << 6;\n/**\n * A Pulse enables inter-operator communication during a run of the\n * dataflow graph. In addition to the current timestamp, a pulse may also\n * contain a change-set of added, removed or modified data tuples, as well as\n * a pointer to a full backing data source. Tuple change sets may not\n * be fully materialized; for example, to prevent needless array creation\n * a change set may include larger arrays and corresponding filter functions.\n * The pulse provides a {@link visit} method to enable proper and efficient\n * iteration over requested data tuples.\n *\n * In addition, each pulse can track modification flags for data tuple fields.\n * Responsible transform operators should call the {@link modifies} method to\n * indicate changes to data fields. The {@link modified} method enables\n * querying of this modification state.\n *\n * @constructor\n * @param {Dataflow} dataflow - The backing dataflow instance.\n * @param {number} stamp - The current propagation timestamp.\n * @param {string} [encode] - An optional encoding set name, which is then\n *   accessible as Pulse.encode. Operators can respond to (or ignore) this\n *   setting as appropriate. This parameter can be used in conjunction with\n *   the Encode transform in the vega-encode module.\n */\n\nfunction Pulse(dataflow, stamp, encode) {\n  this.dataflow = dataflow;\n  this.stamp = stamp == null ? -1 : stamp;\n  this.add = [];\n  this.rem = [];\n  this.mod = [];\n  this.fields = null;\n  this.encode = encode || null;\n}\n\nfunction materialize(data, filter) {\n  const out = [];\n  Object(vega_util__WEBPACK_IMPORTED_MODULE_0__[\"visitArray\"])(data, filter, _ => out.push(_));\n  return out;\n}\n\nfunction filter(pulse, flags) {\n  const map = {};\n  pulse.visit(flags, t => {\n    map[tupleid(t)] = 1;\n  });\n  return t => map[tupleid(t)] ? null : t;\n}\n\nfunction addFilter(a, b) {\n  return a ? (t, i) => a(t, i) && b(t, i) : b;\n}\n\nPulse.prototype = {\n  /**\n   * Sentinel value indicating pulse propagation should stop.\n   */\n  StopPropagation,\n\n  /**\n   * Boolean flag indicating ADD (added) tuples.\n   */\n  ADD,\n\n  /**\n   * Boolean flag indicating REM (removed) tuples.\n   */\n  REM,\n\n  /**\n   * Boolean flag indicating MOD (modified) tuples.\n   */\n  MOD,\n\n  /**\n   * Boolean flag indicating ADD (added) and REM (removed) tuples.\n   */\n  ADD_REM,\n\n  /**\n   * Boolean flag indicating ADD (added) and MOD (modified) tuples.\n   */\n  ADD_MOD,\n\n  /**\n   * Boolean flag indicating ADD, REM and MOD tuples.\n   */\n  ALL,\n\n  /**\n   * Boolean flag indicating all tuples in a data source\n   * except for the ADD, REM and MOD tuples.\n   */\n  REFLOW,\n\n  /**\n   * Boolean flag indicating a 'pass-through' to a\n   * backing data source, ignoring ADD, REM and MOD tuples.\n   */\n  SOURCE,\n\n  /**\n   * Boolean flag indicating that source data should be\n   * suppressed when creating a forked pulse.\n   */\n  NO_SOURCE,\n\n  /**\n   * Boolean flag indicating that field modifications should be\n   * suppressed when creating a forked pulse.\n   */\n  NO_FIELDS,\n\n  /**\n   * Creates a new pulse based on the values of this pulse.\n   * The dataflow, time stamp and field modification values are copied over.\n   * By default, new empty ADD, REM and MOD arrays are created.\n   * @param {number} flags - Integer of boolean flags indicating which (if any)\n   *   tuple arrays should be copied to the new pulse. The supported flag values\n   *   are ADD, REM and MOD. Array references are copied directly: new array\n   *   instances are not created.\n   * @return {Pulse} - The forked pulse instance.\n   * @see init\n   */\n  fork(flags) {\n    return new Pulse(this.dataflow).init(this, flags);\n  },\n\n  /**\n   * Creates a copy of this pulse with new materialized array\n   * instances for the ADD, REM, MOD, and SOURCE arrays.\n   * The dataflow, time stamp and field modification values are copied over.\n   * @return {Pulse} - The cloned pulse instance.\n   * @see init\n   */\n  clone() {\n    const p = this.fork(ALL);\n    p.add = p.add.slice();\n    p.rem = p.rem.slice();\n    p.mod = p.mod.slice();\n    if (p.source) p.source = p.source.slice();\n    return p.materialize(ALL | SOURCE);\n  },\n\n  /**\n   * Returns a pulse that adds all tuples from a backing source. This is\n   * useful for cases where operators are added to a dataflow after an\n   * upstream data pipeline has already been processed, ensuring that\n   * new operators can observe all tuples within a stream.\n   * @return {Pulse} - A pulse instance with all source tuples included\n   *   in the add array. If the current pulse already has all source\n   *   tuples in its add array, it is returned directly. If the current\n   *   pulse does not have a backing source, it is returned directly.\n   */\n  addAll() {\n    let p = this;\n    const reuse = !p.source || p.add === p.rem // special case for indexed set (e.g., crossfilter)\n    || !p.rem.length && p.source.length === p.add.length;\n\n    if (reuse) {\n      return p;\n    } else {\n      p = new Pulse(this.dataflow).init(this);\n      p.add = p.source;\n      p.rem = []; // new operators can ignore rem #2769\n\n      return p;\n    }\n  },\n\n  /**\n   * Initialize this pulse based on the values of another pulse. This method\n   * is used internally by {@link fork} to initialize a new forked tuple.\n   * The dataflow, time stamp and field modification values are copied over.\n   * By default, new empty ADD, REM and MOD arrays are created.\n   * @param {Pulse} src - The source pulse to copy from.\n   * @param {number} flags - Integer of boolean flags indicating which (if any)\n   *   tuple arrays should be copied to the new pulse. The supported flag values\n   *   are ADD, REM and MOD. Array references are copied directly: new array\n   *   instances are not created. By default, source data arrays are copied\n   *   to the new pulse. Use the NO_SOURCE flag to enforce a null source.\n   * @return {Pulse} - Returns this Pulse instance.\n   */\n  init(src, flags) {\n    const p = this;\n    p.stamp = src.stamp;\n    p.encode = src.encode;\n\n    if (src.fields && !(flags & NO_FIELDS)) {\n      p.fields = src.fields;\n    }\n\n    if (flags & ADD) {\n      p.addF = src.addF;\n      p.add = src.add;\n    } else {\n      p.addF = null;\n      p.add = [];\n    }\n\n    if (flags & REM) {\n      p.remF = src.remF;\n      p.rem = src.rem;\n    } else {\n      p.remF = null;\n      p.rem = [];\n    }\n\n    if (flags & MOD) {\n      p.modF = src.modF;\n      p.mod = src.mod;\n    } else {\n      p.modF = null;\n      p.mod = [];\n    }\n\n    if (flags & NO_SOURCE) {\n      p.srcF = null;\n      p.source = null;\n    } else {\n      p.srcF = src.srcF;\n      p.source = src.source;\n      if (src.cleans) p.cleans = src.cleans;\n    }\n\n    return p;\n  },\n\n  /**\n   * Schedules a function to run after pulse propagation completes.\n   * @param {function} func - The function to run.\n   */\n  runAfter(func) {\n    this.dataflow.runAfter(func);\n  },\n\n  /**\n   * Indicates if tuples have been added, removed or modified.\n   * @param {number} [flags] - The tuple types (ADD, REM or MOD) to query.\n   *   Defaults to ALL, returning true if any tuple type has changed.\n   * @return {boolean} - Returns true if one or more queried tuple types have\n   *   changed, false otherwise.\n   */\n  changed(flags) {\n    const f = flags || ALL;\n    return f & ADD && this.add.length || f & REM && this.rem.length || f & MOD && this.mod.length;\n  },\n\n  /**\n   * Forces a \"reflow\" of tuple values, such that all tuples in the backing\n   * source are added to the MOD set, unless already present in the ADD set.\n   * @param {boolean} [fork=false] - If true, returns a forked copy of this\n   *   pulse, and invokes reflow on that derived pulse.\n   * @return {Pulse} - The reflowed pulse instance.\n   */\n  reflow(fork) {\n    if (fork) return this.fork(ALL).reflow();\n    const len = this.add.length,\n          src = this.source && this.source.length;\n\n    if (src && src !== len) {\n      this.mod = this.source;\n      if (len) this.filter(MOD, filter(this, ADD));\n    }\n\n    return this;\n  },\n\n  /**\n   * Get/set metadata to pulse requesting garbage collection\n   * to reclaim currently unused resources.\n   */\n  clean(value) {\n    if (arguments.length) {\n      this.cleans = !!value;\n      return this;\n    } else {\n      return this.cleans;\n    }\n  },\n\n  /**\n   * Marks one or more data field names as modified to assist dependency\n   * tracking and incremental processing by transform operators.\n   * @param {string|Array<string>} _ - The field(s) to mark as modified.\n   * @return {Pulse} - This pulse instance.\n   */\n  modifies(_) {\n    const hash = this.fields || (this.fields = {});\n\n    if (Object(vega_util__WEBPACK_IMPORTED_MODULE_0__[\"isArray\"])(_)) {\n      _.forEach(f => hash[f] = true);\n    } else {\n      hash[_] = true;\n    }\n\n    return this;\n  },\n\n  /**\n   * Checks if one or more data fields have been modified during this pulse\n   * propagation timestamp.\n   * @param {string|Array<string>} _ - The field(s) to check for modified.\n   * @param {boolean} nomod - If true, will check the modified flag even if\n   *   no mod tuples exist. If false (default), mod tuples must be present.\n   * @return {boolean} - Returns true if any of the provided fields has been\n   *   marked as modified, false otherwise.\n   */\n  modified(_, nomod) {\n    const fields = this.fields;\n    return !((nomod || this.mod.length) && fields) ? false : !arguments.length ? !!fields : Object(vega_util__WEBPACK_IMPORTED_MODULE_0__[\"isArray\"])(_) ? _.some(f => fields[f]) : fields[_];\n  },\n\n  /**\n   * Adds a filter function to one more tuple sets. Filters are applied to\n   * backing tuple arrays, to determine the actual set of tuples considered\n   * added, removed or modified. They can be used to delay materialization of\n   * a tuple set in order to avoid expensive array copies. In addition, the\n   * filter functions can serve as value transformers: unlike standard predicate\n   * function (which return boolean values), Pulse filters should return the\n   * actual tuple value to process. If a tuple set is already filtered, the\n   * new filter function will be appended into a conjuntive ('and') query.\n   * @param {number} flags - Flags indicating the tuple set(s) to filter.\n   * @param {function(*):object} filter - Filter function that will be applied\n   *   to the tuple set array, and should return a data tuple if the value\n   *   should be included in the tuple set, and falsy (or null) otherwise.\n   * @return {Pulse} - Returns this pulse instance.\n   */\n  filter(flags, filter) {\n    const p = this;\n    if (flags & ADD) p.addF = addFilter(p.addF, filter);\n    if (flags & REM) p.remF = addFilter(p.remF, filter);\n    if (flags & MOD) p.modF = addFilter(p.modF, filter);\n    if (flags & SOURCE) p.srcF = addFilter(p.srcF, filter);\n    return p;\n  },\n\n  /**\n   * Materialize one or more tuple sets in this pulse. If the tuple set(s) have\n   * a registered filter function, it will be applied and the tuple set(s) will\n   * be replaced with materialized tuple arrays.\n   * @param {number} flags - Flags indicating the tuple set(s) to materialize.\n   * @return {Pulse} - Returns this pulse instance.\n   */\n  materialize(flags) {\n    flags = flags || ALL;\n    const p = this;\n\n    if (flags & ADD && p.addF) {\n      p.add = materialize(p.add, p.addF);\n      p.addF = null;\n    }\n\n    if (flags & REM && p.remF) {\n      p.rem = materialize(p.rem, p.remF);\n      p.remF = null;\n    }\n\n    if (flags & MOD && p.modF) {\n      p.mod = materialize(p.mod, p.modF);\n      p.modF = null;\n    }\n\n    if (flags & SOURCE && p.srcF) {\n      p.source = p.source.filter(p.srcF);\n      p.srcF = null;\n    }\n\n    return p;\n  },\n\n  /**\n   * Visit one or more tuple sets in this pulse.\n   * @param {number} flags - Flags indicating the tuple set(s) to visit.\n   *   Legal values are ADD, REM, MOD and SOURCE (if a backing data source\n   *   has been set).\n   * @param {function(object):*} - Visitor function invoked per-tuple.\n   * @return {Pulse} - Returns this pulse instance.\n   */\n  visit(flags, visitor) {\n    const p = this,\n          v = visitor;\n\n    if (flags & SOURCE) {\n      Object(vega_util__WEBPACK_IMPORTED_MODULE_0__[\"visitArray\"])(p.source, p.srcF, v);\n      return p;\n    }\n\n    if (flags & ADD) Object(vega_util__WEBPACK_IMPORTED_MODULE_0__[\"visitArray\"])(p.add, p.addF, v);\n    if (flags & REM) Object(vega_util__WEBPACK_IMPORTED_MODULE_0__[\"visitArray\"])(p.rem, p.remF, v);\n    if (flags & MOD) Object(vega_util__WEBPACK_IMPORTED_MODULE_0__[\"visitArray\"])(p.mod, p.modF, v);\n    const src = p.source;\n\n    if (flags & REFLOW && src) {\n      const sum = p.add.length + p.mod.length;\n\n      if (sum === src.length) ; else if (sum) {\n        Object(vega_util__WEBPACK_IMPORTED_MODULE_0__[\"visitArray\"])(src, filter(p, ADD_MOD), v);\n      } else {\n        // if no add/rem/mod tuples, visit source\n        Object(vega_util__WEBPACK_IMPORTED_MODULE_0__[\"visitArray\"])(src, p.srcF, v);\n      }\n    }\n\n    return p;\n  }\n\n};\n\n/**\n * Represents a set of multiple pulses. Used as input for operators\n * that accept multiple pulses at a time. Contained pulses are\n * accessible via the public \"pulses\" array property. This pulse doe\n * not carry added, removed or modified tuples directly. However,\n * the visit method can be used to traverse all such tuples contained\n * in sub-pulses with a timestamp matching this parent multi-pulse.\n * @constructor\n * @param {Dataflow} dataflow - The backing dataflow instance.\n * @param {number} stamp - The timestamp.\n * @param {Array<Pulse>} pulses - The sub-pulses for this multi-pulse.\n */\n\nfunction MultiPulse(dataflow, stamp, pulses, encode) {\n  const p = this,\n        n = pulses.length;\n  let c = 0;\n  this.dataflow = dataflow;\n  this.stamp = stamp;\n  this.fields = null;\n  this.encode = encode || null;\n  this.pulses = pulses;\n\n  for (let i = 0; i < n; ++i) {\n    const pulse = pulses[i];\n    if (pulse.stamp !== stamp) continue;\n\n    if (pulse.fields) {\n      const hash = p.fields || (p.fields = {});\n\n      for (const f in pulse.fields) {\n        hash[f] = 1;\n      }\n    }\n\n    if (pulse.changed(p.ADD)) c |= p.ADD;\n    if (pulse.changed(p.REM)) c |= p.REM;\n    if (pulse.changed(p.MOD)) c |= p.MOD;\n  }\n\n  this.changes = c;\n}\nObject(vega_util__WEBPACK_IMPORTED_MODULE_0__[\"inherits\"])(MultiPulse, Pulse, {\n  /**\n   * Creates a new pulse based on the values of this pulse.\n   * The dataflow, time stamp and field modification values are copied over.\n   * @return {Pulse}\n   */\n  fork(flags) {\n    const p = new Pulse(this.dataflow).init(this, flags & this.NO_FIELDS);\n\n    if (flags !== undefined) {\n      if (flags & p.ADD) this.visit(p.ADD, t => p.add.push(t));\n      if (flags & p.REM) this.visit(p.REM, t => p.rem.push(t));\n      if (flags & p.MOD) this.visit(p.MOD, t => p.mod.push(t));\n    }\n\n    return p;\n  },\n\n  changed(flags) {\n    return this.changes & flags;\n  },\n\n  modified(_) {\n    const p = this,\n          fields = p.fields;\n    return !(fields && p.changes & p.MOD) ? 0 : Object(vega_util__WEBPACK_IMPORTED_MODULE_0__[\"isArray\"])(_) ? _.some(f => fields[f]) : fields[_];\n  },\n\n  filter() {\n    Object(vega_util__WEBPACK_IMPORTED_MODULE_0__[\"error\"])('MultiPulse does not support filtering.');\n  },\n\n  materialize() {\n    Object(vega_util__WEBPACK_IMPORTED_MODULE_0__[\"error\"])('MultiPulse does not support materialization.');\n  },\n\n  visit(flags, visitor) {\n    const p = this,\n          pulses = p.pulses,\n          n = pulses.length;\n    let i = 0;\n\n    if (flags & p.SOURCE) {\n      for (; i < n; ++i) {\n        pulses[i].visit(flags, visitor);\n      }\n    } else {\n      for (; i < n; ++i) {\n        if (pulses[i].stamp === p.stamp) {\n          pulses[i].visit(flags, visitor);\n        }\n      }\n    }\n\n    return p;\n  }\n\n});\n\n/* eslint-disable require-atomic-updates */\n/**\n * Evaluates the dataflow and returns a Promise that resolves when pulse\n * propagation completes. This method will increment the current timestamp\n * and process all updated, pulsed and touched operators. When invoked for\n * the first time, all registered operators will be processed. This method\n * should not be invoked by third-party clients, use {@link runAsync} or\n * {@link run} instead.\n * @param {string} [encode] - The name of an encoding set to invoke during\n *   propagation. This value is added to generated Pulse instances;\n *   operators can then respond to (or ignore) this setting as appropriate.\n *   This parameter can be used in conjunction with the Encode transform in\n *   the vega-encode package.\n * @param {function} [prerun] - An optional callback function to invoke\n *   immediately before dataflow evaluation commences.\n * @param {function} [postrun] - An optional callback function to invoke\n *   after dataflow evaluation completes. The callback will be invoked\n *   after those registered via {@link runAfter}.\n * @return {Promise} - A promise that resolves to this dataflow after\n *   evaluation completes.\n */\n\nasync function evaluate(encode, prerun, postrun) {\n  const df = this,\n        async = []; // if the pulse value is set, this is a re-entrant call\n\n  if (df._pulse) return reentrant(df); // wait for pending datasets to load\n\n  if (df._pending) await df._pending; // invoke prerun function, if provided\n\n  if (prerun) await asyncCallback(df, prerun); // exit early if there are no updates\n\n  if (!df._touched.length) {\n    df.debug('Dataflow invoked, but nothing to do.');\n    return df;\n  } // increment timestamp clock\n\n\n  const stamp = ++df._clock; // set the current pulse\n\n  df._pulse = new Pulse(df, stamp, encode); // initialize priority queue, reset touched operators\n\n  df._touched.forEach(op => df._enqueue(op, true));\n\n  df._touched = UniqueList(vega_util__WEBPACK_IMPORTED_MODULE_0__[\"id\"]);\n  let count = 0,\n      op,\n      next,\n      error;\n\n  try {\n    while (df._heap.size() > 0) {\n      // dequeue operator with highest priority\n      op = df._heap.pop(); // re-queue if rank changed\n\n      if (op.rank !== op.qrank) {\n        df._enqueue(op, true);\n\n        continue;\n      } // otherwise, evaluate the operator\n\n\n      next = op.run(df._getPulse(op, encode));\n\n      if (next.then) {\n        // await if operator returns a promise directly\n        next = await next;\n      } else if (next.async) {\n        // queue parallel asynchronous execution\n        async.push(next.async);\n        next = StopPropagation;\n      } // propagate evaluation, enqueue dependent operators\n\n\n      if (next !== StopPropagation) {\n        if (op._targets) op._targets.forEach(op => df._enqueue(op));\n      } // increment visit counter\n\n\n      ++count;\n    }\n  } catch (err) {\n    df._heap.clear();\n\n    error = err;\n  } // reset pulse map\n\n\n  df._input = {};\n  df._pulse = null;\n  df.debug(`Pulse ${stamp}: ${count} operators`);\n\n  if (error) {\n    df._postrun = [];\n    df.error(error);\n  } // invoke callbacks queued via runAfter\n\n\n  if (df._postrun.length) {\n    const pr = df._postrun.sort((a, b) => b.priority - a.priority);\n\n    df._postrun = [];\n\n    for (let i = 0; i < pr.length; ++i) {\n      await asyncCallback(df, pr[i].callback);\n    }\n  } // invoke postrun function, if provided\n\n\n  if (postrun) await asyncCallback(df, postrun); // handle non-blocking asynchronous callbacks\n\n  if (async.length) {\n    Promise.all(async).then(cb => df.runAsync(null, () => {\n      cb.forEach(f => {\n        try {\n          f(df);\n        } catch (err) {\n          df.error(err);\n        }\n      });\n    }));\n  }\n\n  return df;\n}\n/**\n * Queues dataflow evaluation to run once any other queued evaluations have\n * completed and returns a Promise that resolves when the queued pulse\n * propagation completes. If provided, a callback function will be invoked\n * immediately before evaluation commences. This method will ensure a\n * separate evaluation is invoked for each time it is called.\n * @param {string} [encode] - The name of an encoding set to invoke during\n *   propagation. This value is added to generated Pulse instances;\n *   operators can then respond to (or ignore) this setting as appropriate.\n *   This parameter can be used in conjunction with the Encode transform in\n *   the vega-encode package.\n * @param {function} [prerun] - An optional callback function to invoke\n *   immediately before dataflow evaluation commences.\n * @param {function} [postrun] - An optional callback function to invoke\n *   after dataflow evaluation completes. The callback will be invoked\n *   after those registered via {@link runAfter}.\n * @return {Promise} - A promise that resolves to this dataflow after\n *   evaluation completes.\n */\n\nasync function runAsync(encode, prerun, postrun) {\n  // await previously queued functions\n  while (this._running) await this._running; // run dataflow, manage running promise\n\n\n  const clear = () => this._running = null;\n\n  (this._running = this.evaluate(encode, prerun, postrun)).then(clear, clear);\n  return this._running;\n}\n/**\n * Requests dataflow evaluation and the immediately returns this dataflow\n * instance. If there are pending data loading or other asynchronous\n * operations, the dataflow will evaluate asynchronously after this method\n * has been invoked. To track when dataflow evaluation completes, use the\n * {@link runAsync} method instead. This method will raise an error if\n * invoked while the dataflow is already in the midst of evaluation.\n * @param {string} [encode] - The name of an encoding set to invoke during\n *   propagation. This value is added to generated Pulse instances;\n *   operators can then respond to (or ignore) this setting as appropriate.\n *   This parameter can be used in conjunction with the Encode transform in\n *   the vega-encode module.\n * @param {function} [prerun] - An optional callback function to invoke\n *   immediately before dataflow evaluation commences.\n * @param {function} [postrun] - An optional callback function to invoke\n *   after dataflow evaluation completes. The callback will be invoked\n *   after those registered via {@link runAfter}.\n * @return {Dataflow} - This dataflow instance.\n */\n\nfunction run(encode, prerun, postrun) {\n  return this._pulse ? reentrant(this) : (this.evaluate(encode, prerun, postrun), this);\n}\n/**\n * Schedules a callback function to be invoked after the current pulse\n * propagation completes. If no propagation is currently occurring,\n * the function is invoked immediately. Callbacks scheduled via runAfter\n * are invoked immediately upon completion of the current cycle, before\n * any request queued via runAsync. This method is primarily intended for\n * internal use. Third-party callers using runAfter to schedule a callback\n * that invokes {@link run} or {@link runAsync} should not use this method,\n * but instead use {@link runAsync} with prerun or postrun arguments.\n * @param {function(Dataflow)} callback - The callback function to run.\n *   The callback will be invoked with this Dataflow instance as its\n *   sole argument.\n * @param {boolean} enqueue - A boolean flag indicating that the\n *   callback should be queued up to run after the next propagation\n *   cycle, suppressing immediate invocation when propagation is not\n *   currently occurring.\n * @param {number} [priority] - A priority value used to sort registered\n *   callbacks to determine execution order. This argument is intended\n *   for internal Vega use only.\n */\n\nfunction runAfter(callback, enqueue, priority) {\n  if (this._pulse || enqueue) {\n    // pulse propagation is currently running, queue to run after\n    this._postrun.push({\n      priority: priority || 0,\n      callback: callback\n    });\n  } else {\n    // pulse propagation already complete, invoke immediately\n    try {\n      callback(this);\n    } catch (err) {\n      this.error(err);\n    }\n  }\n}\n/**\n * Raise an error for re-entrant dataflow evaluation.\n */\n\nfunction reentrant(df) {\n  df.error('Dataflow already running. Use runAsync() to chain invocations.');\n  return df;\n}\n/**\n * Enqueue an operator into the priority queue for evaluation. The operator\n * will be enqueued if it has no registered pulse for the current cycle, or if\n * the force argument is true. Upon enqueue, this method also sets the\n * operator's qrank to the current rank value.\n * @param {Operator} op - The operator to enqueue.\n * @param {boolean} [force] - A flag indicating if the operator should be\n *   forceably added to the queue, even if it has already been previously\n *   enqueued during the current pulse propagation. This is useful when the\n *   dataflow graph is dynamically modified and the operator rank changes.\n */\n\n\nfunction enqueue(op, force) {\n  const q = op.stamp < this._clock;\n  if (q) op.stamp = this._clock;\n\n  if (q || force) {\n    op.qrank = op.rank;\n\n    this._heap.push(op);\n  }\n}\n/**\n * Provide a correct pulse for evaluating an operator. If the operator has an\n * explicit source operator, we will try to pull the pulse(s) from it.\n * If there is an array of source operators, we build a multi-pulse.\n * Otherwise, we return a current pulse with correct source data.\n * If the pulse is the pulse map has an explicit target set, we use that.\n * Else if the pulse on the upstream source operator is current, we use that.\n * Else we use the pulse from the pulse map, but copy the source tuple array.\n * @param {Operator} op - The operator for which to get an input pulse.\n * @param {string} [encode] - An (optional) encoding set name with which to\n *   annotate the returned pulse. See {@link run} for more information.\n */\n\nfunction getPulse(op, encode) {\n  const s = op.source,\n        stamp = this._clock;\n  return s && Object(vega_util__WEBPACK_IMPORTED_MODULE_0__[\"isArray\"])(s) ? new MultiPulse(this, stamp, s.map(_ => _.pulse), encode) : this._input[op.id] || singlePulse(this._pulse, s && s.pulse);\n}\n\nfunction singlePulse(p, s) {\n  if (s && s.stamp === p.stamp) {\n    return s;\n  }\n\n  p = p.fork();\n\n  if (s && s !== StopPropagation) {\n    p.source = s.source;\n  }\n\n  return p;\n}\n\nconst NO_OPT = {\n  skip: false,\n  force: false\n};\n/**\n * Touches an operator, scheduling it to be evaluated. If invoked outside of\n * a pulse propagation, the operator will be evaluated the next time this\n * dataflow is run. If invoked in the midst of pulse propagation, the operator\n * will be queued for evaluation if and only if the operator has not yet been\n * evaluated on the current propagation timestamp.\n * @param {Operator} op - The operator to touch.\n * @param {object} [options] - Additional options hash.\n * @param {boolean} [options.skip] - If true, the operator will\n *   be skipped: it will not be evaluated, but its dependents will be.\n * @return {Dataflow}\n */\n\nfunction touch(op, options) {\n  const opt = options || NO_OPT;\n\n  if (this._pulse) {\n    // if in midst of propagation, add to priority queue\n    this._enqueue(op);\n  } else {\n    // otherwise, queue for next propagation\n    this._touched.add(op);\n  }\n\n  if (opt.skip) op.skip(true);\n  return this;\n}\n/**\n * Updates the value of the given operator.\n * @param {Operator} op - The operator to update.\n * @param {*} value - The value to set.\n * @param {object} [options] - Additional options hash.\n * @param {boolean} [options.force] - If true, the operator will\n *   be re-evaluated even if its value has not changed.\n * @param {boolean} [options.skip] - If true, the operator will\n *   be skipped: it will not be evaluated, but its dependents will be.\n * @return {Dataflow}\n */\n\nfunction update(op, value, options) {\n  const opt = options || NO_OPT;\n\n  if (op.set(value) || opt.force) {\n    this.touch(op, opt);\n  }\n\n  return this;\n}\n/**\n * Pulses an operator with a changeset of tuples. If invoked outside of\n * a pulse propagation, the pulse will be applied the next time this\n * dataflow is run. If invoked in the midst of pulse propagation, the pulse\n * will be added to the set of active pulses and will be applied if and\n * only if the target operator has not yet been evaluated on the current\n * propagation timestamp.\n * @param {Operator} op - The operator to pulse.\n * @param {ChangeSet} value - The tuple changeset to apply.\n * @param {object} [options] - Additional options hash.\n * @param {boolean} [options.skip] - If true, the operator will\n *   be skipped: it will not be evaluated, but its dependents will be.\n * @return {Dataflow}\n */\n\nfunction pulse(op, changeset, options) {\n  this.touch(op, options || NO_OPT);\n  const p = new Pulse(this, this._clock + (this._pulse ? 0 : 1)),\n        t = op.pulse && op.pulse.source || [];\n  p.target = op;\n  this._input[op.id] = changeset.pulse(p, t);\n  return this;\n}\n\nfunction Heap(cmp) {\n  let nodes = [];\n  return {\n    clear: () => nodes = [],\n    size: () => nodes.length,\n    peek: () => nodes[0],\n    push: x => {\n      nodes.push(x);\n      return siftdown(nodes, 0, nodes.length - 1, cmp);\n    },\n    pop: () => {\n      const last = nodes.pop();\n      let item;\n\n      if (nodes.length) {\n        item = nodes[0];\n        nodes[0] = last;\n        siftup(nodes, 0, cmp);\n      } else {\n        item = last;\n      }\n\n      return item;\n    }\n  };\n}\n\nfunction siftdown(array, start, idx, cmp) {\n  let parent, pidx;\n  const item = array[idx];\n\n  while (idx > start) {\n    pidx = idx - 1 >> 1;\n    parent = array[pidx];\n\n    if (cmp(item, parent) < 0) {\n      array[idx] = parent;\n      idx = pidx;\n      continue;\n    }\n\n    break;\n  }\n\n  return array[idx] = item;\n}\n\nfunction siftup(array, idx, cmp) {\n  const start = idx,\n        end = array.length,\n        item = array[idx];\n  let cidx = (idx << 1) + 1,\n      ridx;\n\n  while (cidx < end) {\n    ridx = cidx + 1;\n\n    if (ridx < end && cmp(array[cidx], array[ridx]) >= 0) {\n      cidx = ridx;\n    }\n\n    array[idx] = array[cidx];\n    idx = cidx;\n    cidx = (idx << 1) + 1;\n  }\n\n  array[idx] = item;\n  return siftdown(array, start, idx, cmp);\n}\n\n/**\n * A dataflow graph for reactive processing of data streams.\n * @constructor\n */\n\nfunction Dataflow() {\n  this.logger(Object(vega_util__WEBPACK_IMPORTED_MODULE_0__[\"logger\"])());\n  this.logLevel(vega_util__WEBPACK_IMPORTED_MODULE_0__[\"Error\"]);\n  this._clock = 0;\n  this._rank = 0;\n  this._locale = Object(vega_format__WEBPACK_IMPORTED_MODULE_2__[\"defaultLocale\"])();\n\n  try {\n    this._loader = Object(vega_loader__WEBPACK_IMPORTED_MODULE_1__[\"loader\"])();\n  } catch (e) {// do nothing if loader module is unavailable\n  }\n\n  this._touched = UniqueList(vega_util__WEBPACK_IMPORTED_MODULE_0__[\"id\"]);\n  this._input = {};\n  this._pulse = null;\n  this._heap = Heap((a, b) => a.qrank - b.qrank);\n  this._postrun = [];\n}\n\nfunction logMethod(method) {\n  return function () {\n    return this._log[method].apply(this, arguments);\n  };\n}\n\nDataflow.prototype = {\n  /**\n   * The current timestamp of this dataflow. This value reflects the\n   * timestamp of the previous dataflow run. The dataflow is initialized\n   * with a stamp value of 0. The initial run of the dataflow will have\n   * a timestap of 1, and so on. This value will match the\n   * {@link Pulse.stamp} property.\n   * @return {number} - The current timestamp value.\n   */\n  stamp() {\n    return this._clock;\n  },\n\n  /**\n   * Gets or sets the loader instance to use for data file loading. A\n   * loader object must provide a \"load\" method for loading files and a\n   * \"sanitize\" method for checking URL/filename validity. Both methods\n   * should accept a URI and options hash as arguments, and return a Promise\n   * that resolves to the loaded file contents (load) or a hash containing\n   * sanitized URI data with the sanitized url assigned to the \"href\" property\n   * (sanitize).\n   * @param {object} _ - The loader instance to use.\n   * @return {object|Dataflow} - If no arguments are provided, returns\n   *   the current loader instance. Otherwise returns this Dataflow instance.\n   */\n  loader(_) {\n    if (arguments.length) {\n      this._loader = _;\n      return this;\n    } else {\n      return this._loader;\n    }\n  },\n\n  /**\n   * Gets or sets the locale instance to use for formatting and parsing\n   * string values. The locale object should be provided by the\n   * vega-format library, and include methods such as format, timeFormat,\n   * utcFormat, timeParse, and utcParse.\n   * @param {object} _ - The locale instance to use.\n   * @return {object|Dataflow} - If no arguments are provided, returns\n   *   the current locale instance. Otherwise returns this Dataflow instance.\n   */\n  locale(_) {\n    if (arguments.length) {\n      this._locale = _;\n      return this;\n    } else {\n      return this._locale;\n    }\n  },\n\n  /**\n   * Get or set the logger instance used to log messages. If no arguments are\n   * provided, returns the current logger instance. Otherwise, sets the logger\n   * and return this Dataflow instance. Provided loggers must support the full\n   * API of logger objects generated by the vega-util logger method. Note that\n   * by default the log level of the new logger will be used; use the logLevel\n   * method to adjust the log level as needed.\n   */\n  logger(logger) {\n    if (arguments.length) {\n      this._log = logger;\n      return this;\n    } else {\n      return this._log;\n    }\n  },\n\n  /**\n   * Logs an error message. By default, logged messages are written to console\n   * output. The message will only be logged if the current log level is high\n   * enough to permit error messages.\n   */\n  error: logMethod('error'),\n\n  /**\n   * Logs a warning message. By default, logged messages are written to console\n   * output. The message will only be logged if the current log level is high\n   * enough to permit warning messages.\n   */\n  warn: logMethod('warn'),\n\n  /**\n   * Logs a information message. By default, logged messages are written to\n   * console output. The message will only be logged if the current log level is\n   * high enough to permit information messages.\n   */\n  info: logMethod('info'),\n\n  /**\n   * Logs a debug message. By default, logged messages are written to console\n   * output. The message will only be logged if the current log level is high\n   * enough to permit debug messages.\n   */\n  debug: logMethod('debug'),\n\n  /**\n   * Get or set the current log level. If an argument is provided, it\n   * will be used as the new log level.\n   * @param {number} [level] - Should be one of None, Warn, Info\n   * @return {number} - The current log level.\n   */\n  logLevel: logMethod('level'),\n\n  /**\n   * Empty entry threshold for garbage cleaning. Map data structures will\n   * perform cleaning once the number of empty entries exceeds this value.\n   */\n  cleanThreshold: 1e4,\n  // OPERATOR REGISTRATION\n  add,\n  connect,\n  rank,\n  rerank,\n  // OPERATOR UPDATES\n  pulse,\n  touch,\n  update,\n  changeset,\n  // DATA LOADING\n  ingest,\n  parse,\n  preload,\n  request,\n  // EVENT HANDLING\n  events,\n  on,\n  // PULSE PROPAGATION\n  evaluate,\n  run,\n  runAsync,\n  runAfter,\n  _enqueue: enqueue,\n  _getPulse: getPulse\n};\n\n/**\n * Abstract class for operators that process data tuples.\n * Subclasses must provide a {@link transform} method for operator processing.\n * @constructor\n * @param {*} [init] - The initial value for this operator.\n * @param {object} [params] - The parameters for this operator.\n * @param {Operator} [source] - The operator from which to receive pulses.\n */\n\nfunction Transform(init, params) {\n  Operator.call(this, init, null, params);\n}\nObject(vega_util__WEBPACK_IMPORTED_MODULE_0__[\"inherits\"])(Transform, Operator, {\n  /**\n   * Overrides {@link Operator.evaluate} for transform operators.\n   * Internally, this method calls {@link evaluate} to perform processing.\n   * If {@link evaluate} returns a falsy value, the input pulse is returned.\n   * This method should NOT be overridden, instead overrride {@link evaluate}.\n   * @param {Pulse} pulse - the current dataflow pulse.\n   * @return the output pulse for this operator (or StopPropagation)\n   */\n  run(pulse) {\n    if (pulse.stamp < this.stamp) return pulse.StopPropagation;\n    let rv;\n\n    if (this.skip()) {\n      this.skip(false);\n    } else {\n      rv = this.evaluate(pulse);\n    }\n\n    rv = rv || pulse;\n\n    if (rv.then) {\n      rv = rv.then(_ => this.pulse = _);\n    } else if (rv !== pulse.StopPropagation) {\n      this.pulse = rv;\n    }\n\n    return rv;\n  },\n\n  /**\n   * Overrides {@link Operator.evaluate} for transform operators.\n   * Marshalls parameter values and then invokes {@link transform}.\n   * @param {Pulse} pulse - the current dataflow pulse.\n   * @return {Pulse} The output pulse (or StopPropagation). A falsy return\n       value (including undefined) will let the input pulse pass through.\n  */\n  evaluate(pulse) {\n    const params = this.marshall(pulse.stamp),\n          out = this.transform(params, pulse);\n    params.clear();\n    return out;\n  },\n\n  /**\n   * Process incoming pulses.\n   * Subclasses should override this method to implement transforms.\n   * @param {Parameters} _ - The operator parameter values.\n   * @param {Pulse} pulse - The current dataflow pulse.\n   * @return {Pulse} The output pulse (or StopPropagation). A falsy return\n   *   value (including undefined) will let the input pulse pass through.\n   */\n  transform() {}\n\n});\n\nconst transforms = {};\nfunction definition(type) {\n  const t = transform(type);\n  return t && t.Definition || null;\n}\nfunction transform(type) {\n  type = type && type.toLowerCase();\n  return Object(vega_util__WEBPACK_IMPORTED_MODULE_0__[\"hasOwnProperty\"])(transforms, type) ? transforms[type] : null;\n}\n\n\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,[encoded data, 109492 characters]\n//# sourceURL=webpack-internal:///./node_modules/vega-label/node_modules/vega-dataflow/build/vega-dataflow.module.js\n");

/***/ }),

/***/ "./node_modules/vega-label/node_modules/vega-loader/index.browser.js":
/*!***************************************************************************!*\
  !*** ./node_modules/vega-label/node_modules/vega-loader/index.browser.js ***!
  \***************************************************************************/
/*! exports provided: loader, read, inferType, inferTypes, typeParsers, format, formats, responseType */
/***/ (function(module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"loader\", function() { return loader; });\n/* harmony import */ var _src_loader__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./src/loader */ \"./node_modules/vega-label/node_modules/vega-loader/src/loader.js\");\n/* harmony import */ var _src_read__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./src/read */ \"./node_modules/vega-label/node_modules/vega-loader/src/read.js\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"read\", function() { return _src_read__WEBPACK_IMPORTED_MODULE_1__[\"default\"]; });\n\n/* harmony import */ var _src_type__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./src/type */ \"./node_modules/vega-label/node_modules/vega-loader/src/type.js\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"inferType\", function() { return _src_type__WEBPACK_IMPORTED_MODULE_2__[\"inferType\"]; });\n\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"inferTypes\", function() { return _src_type__WEBPACK_IMPORTED_MODULE_2__[\"inferTypes\"]; });\n\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"typeParsers\", function() { return _src_type__WEBPACK_IMPORTED_MODULE_2__[\"typeParsers\"]; });\n\n/* harmony import */ var _src_formats_index__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ./src/formats/index */ \"./node_modules/vega-label/node_modules/vega-loader/src/formats/index.js\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"format\", function() { return _src_formats_index__WEBPACK_IMPORTED_MODULE_3__[\"format\"]; });\n\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"formats\", function() { return _src_formats_index__WEBPACK_IMPORTED_MODULE_3__[\"formats\"]; });\n\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"responseType\", function() { return _src_formats_index__WEBPACK_IMPORTED_MODULE_3__[\"responseType\"]; });\n\n\n\nconst loader = Object(_src_loader__WEBPACK_IMPORTED_MODULE_0__[\"default\"])(\n  typeof fetch !== 'undefined' && fetch, // use built-in fetch API\n  null // no file system access\n);\n\n\n\n\n\n\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvdmVnYS1sYWJlbC9ub2RlX21vZHVsZXMvdmVnYS1sb2FkZXIvaW5kZXguYnJvd3Nlci5qcy5qcyIsInNvdXJjZXMiOlsid2VicGFjazovLy8uL25vZGVfbW9kdWxlcy92ZWdhLWxhYmVsL25vZGVfbW9kdWxlcy92ZWdhLWxvYWRlci9pbmRleC5icm93c2VyLmpzP2QwNmMiXSwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IGxvYWRlckZhY3RvcnkgZnJvbSAnLi9zcmMvbG9hZGVyJztcblxuZXhwb3J0IGNvbnN0IGxvYWRlciA9IGxvYWRlckZhY3RvcnkoXG4gIHR5cGVvZiBmZXRjaCAhPT0gJ3VuZGVmaW5lZCcgJiYgZmV0Y2gsIC8vIHVzZSBidWlsdC1pbiBmZXRjaCBBUElcbiAgbnVsbCAvLyBubyBmaWxlIHN5c3RlbSBhY2Nlc3Ncbik7XG5cbmV4cG9ydCB7XG4gIGRlZmF1bHQgYXMgcmVhZFxufSBmcm9tICcuL3NyYy9yZWFkJztcblxuZXhwb3J0IHtcbiAgaW5mZXJUeXBlLFxuICBpbmZlclR5cGVzLFxuICB0eXBlUGFyc2Vyc1xufSBmcm9tICcuL3NyYy90eXBlJztcblxuZXhwb3J0IHtcbiAgZm9ybWF0LFxuICBmb3JtYXRzLFxuICByZXNwb25zZVR5cGVcbn0gZnJvbSAnLi9zcmMvZm9ybWF0cy9pbmRleCc7XG4iXSwibWFwcGluZ3MiOiJBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUdBO0FBQ0E7QUFLQTtBQUNBO0FBS0E7Iiwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///./node_modules/vega-label/node_modules/vega-loader/index.browser.js\n");

/***/ }),

/***/ "./node_modules/vega-label/node_modules/vega-loader/src/formats/dsv.js":
/*!*****************************************************************************!*\
  !*** ./node_modules/vega-label/node_modules/vega-loader/src/formats/dsv.js ***!
  \*****************************************************************************/
/*! exports provided: delimitedFormat, default */
/***/ (function(module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"delimitedFormat\", function() { return delimitedFormat; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"default\", function() { return dsv; });\n/* harmony import */ var d3_dsv__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! d3-dsv */ \"./node_modules/vega-label/node_modules/d3-dsv/src/index.js\");\n/* harmony import */ var vega_util__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! vega-util */ \"./node_modules/vega-label/node_modules/vega-util/build/vega-util.module.js\");\n\n\n\nfunction delimitedFormat(delimiter) {\n  const parse = function(data, format) {\n    const delim = {delimiter: delimiter};\n    return dsv(data, format ? Object(vega_util__WEBPACK_IMPORTED_MODULE_1__[\"extend\"])(format, delim) : delim);\n  };\n\n  parse.responseType = 'text';\n\n  return parse;\n}\n\nfunction dsv(data, format) {\n  if (format.header) {\n    data = format.header\n      .map(vega_util__WEBPACK_IMPORTED_MODULE_1__[\"stringValue\"])\n      .join(format.delimiter) + '\\n' + data;\n  }\n  return Object(d3_dsv__WEBPACK_IMPORTED_MODULE_0__[\"dsvFormat\"])(format.delimiter).parse(data + '');\n}\n\ndsv.responseType = 'text';\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvdmVnYS1sYWJlbC9ub2RlX21vZHVsZXMvdmVnYS1sb2FkZXIvc3JjL2Zvcm1hdHMvZHN2LmpzLmpzIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL3ZlZ2EtbGFiZWwvbm9kZV9tb2R1bGVzL3ZlZ2EtbG9hZGVyL3NyYy9mb3JtYXRzL2Rzdi5qcz80ODZiIl0sInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7ZHN2Rm9ybWF0fSBmcm9tICdkMy1kc3YnO1xuaW1wb3J0IHtleHRlbmQsIHN0cmluZ1ZhbHVlfSBmcm9tICd2ZWdhLXV0aWwnO1xuXG5leHBvcnQgZnVuY3Rpb24gZGVsaW1pdGVkRm9ybWF0KGRlbGltaXRlcikge1xuICBjb25zdCBwYXJzZSA9IGZ1bmN0aW9uKGRhdGEsIGZvcm1hdCkge1xuICAgIGNvbnN0IGRlbGltID0ge2RlbGltaXRlcjogZGVsaW1pdGVyfTtcbiAgICByZXR1cm4gZHN2KGRhdGEsIGZvcm1hdCA/IGV4dGVuZChmb3JtYXQsIGRlbGltKSA6IGRlbGltKTtcbiAgfTtcblxuICBwYXJzZS5yZXNwb25zZVR5cGUgPSAndGV4dCc7XG5cbiAgcmV0dXJuIHBhcnNlO1xufVxuXG5leHBvcnQgZGVmYXVsdCBmdW5jdGlvbiBkc3YoZGF0YSwgZm9ybWF0KSB7XG4gIGlmIChmb3JtYXQuaGVhZGVyKSB7XG4gICAgZGF0YSA9IGZvcm1hdC5oZWFkZXJcbiAgICAgIC5tYXAoc3RyaW5nVmFsdWUpXG4gICAgICAuam9pbihmb3JtYXQuZGVsaW1pdGVyKSArICdcXG4nICsgZGF0YTtcbiAgfVxuICByZXR1cm4gZHN2Rm9ybWF0KGZvcm1hdC5kZWxpbWl0ZXIpLnBhcnNlKGRhdGEgKyAnJyk7XG59XG5cbmRzdi5yZXNwb25zZVR5cGUgPSAndGV4dCc7XG4iXSwibWFwcGluZ3MiOiJBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7Iiwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///./node_modules/vega-label/node_modules/vega-loader/src/formats/dsv.js\n");

/***/ }),

/***/ "./node_modules/vega-label/node_modules/vega-loader/src/formats/index.js":
/*!*******************************************************************************!*\
  !*** ./node_modules/vega-label/node_modules/vega-loader/src/formats/index.js ***!
  \*******************************************************************************/
/*! exports provided: format, formats, responseType */
/***/ (function(module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"format\", function() { return format; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"formats\", function() { return formats; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"responseType\", function() { return responseType; });\n/* harmony import */ var _dsv__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./dsv */ \"./node_modules/vega-label/node_modules/vega-loader/src/formats/dsv.js\");\n/* harmony import */ var _json__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./json */ \"./node_modules/vega-label/node_modules/vega-loader/src/formats/json.js\");\n/* harmony import */ var _topojson__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./topojson */ \"./node_modules/vega-label/node_modules/vega-loader/src/formats/topojson.js\");\n/* harmony import */ var vega_util__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! vega-util */ \"./node_modules/vega-label/node_modules/vega-util/build/vega-util.module.js\");\n\n\n\n\n\nconst format = {\n  dsv: _dsv__WEBPACK_IMPORTED_MODULE_0__[\"default\"],\n  csv: Object(_dsv__WEBPACK_IMPORTED_MODULE_0__[\"delimitedFormat\"])(','),\n  tsv: Object(_dsv__WEBPACK_IMPORTED_MODULE_0__[\"delimitedFormat\"])('\\t'),\n  json: _json__WEBPACK_IMPORTED_MODULE_1__[\"default\"],\n  topojson: _topojson__WEBPACK_IMPORTED_MODULE_2__[\"default\"]\n};\n\nfunction formats(name, reader) {\n  if (arguments.length > 1) {\n    format[name] = reader;\n    return this;\n  } else {\n    return Object(vega_util__WEBPACK_IMPORTED_MODULE_3__[\"hasOwnProperty\"])(format, name) ? format[name] : null;\n  }\n}\n\nfunction responseType(type) {\n  const f = formats(type);\n  return f && f.responseType || 'text';\n}\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvdmVnYS1sYWJlbC9ub2RlX21vZHVsZXMvdmVnYS1sb2FkZXIvc3JjL2Zvcm1hdHMvaW5kZXguanMuanMiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvdmVnYS1sYWJlbC9ub2RlX21vZHVsZXMvdmVnYS1sb2FkZXIvc3JjL2Zvcm1hdHMvaW5kZXguanM/ZDYyNCJdLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge2RlbGltaXRlZEZvcm1hdCwgZGVmYXVsdCBhcyBkc3Z9IGZyb20gJy4vZHN2JztcbmltcG9ydCBqc29uIGZyb20gJy4vanNvbic7XG5pbXBvcnQgdG9wb2pzb24gZnJvbSAnLi90b3BvanNvbic7XG5pbXBvcnQge2hhc093blByb3BlcnR5fSBmcm9tICd2ZWdhLXV0aWwnO1xuXG5leHBvcnQgY29uc3QgZm9ybWF0ID0ge1xuICBkc3Y6IGRzdixcbiAgY3N2OiBkZWxpbWl0ZWRGb3JtYXQoJywnKSxcbiAgdHN2OiBkZWxpbWl0ZWRGb3JtYXQoJ1xcdCcpLFxuICBqc29uOiBqc29uLFxuICB0b3BvanNvbjogdG9wb2pzb25cbn07XG5cbmV4cG9ydCBmdW5jdGlvbiBmb3JtYXRzKG5hbWUsIHJlYWRlcikge1xuICBpZiAoYXJndW1lbnRzLmxlbmd0aCA+IDEpIHtcbiAgICBmb3JtYXRbbmFtZV0gPSByZWFkZXI7XG4gICAgcmV0dXJuIHRoaXM7XG4gIH0gZWxzZSB7XG4gICAgcmV0dXJuIGhhc093blByb3BlcnR5KGZvcm1hdCwgbmFtZSkgPyBmb3JtYXRbbmFtZV0gOiBudWxsO1xuICB9XG59XG5cbmV4cG9ydCBmdW5jdGlvbiByZXNwb25zZVR5cGUodHlwZSkge1xuICBjb25zdCBmID0gZm9ybWF0cyh0eXBlKTtcbiAgcmV0dXJuIGYgJiYgZi5yZXNwb25zZVR5cGUgfHwgJ3RleHQnO1xufVxuIl0sIm1hcHBpbmdzIjoiQUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTsiLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///./node_modules/vega-label/node_modules/vega-loader/src/formats/index.js\n");

/***/ }),

/***/ "./node_modules/vega-label/node_modules/vega-loader/src/formats/json.js":
/*!******************************************************************************!*\
  !*** ./node_modules/vega-label/node_modules/vega-loader/src/formats/json.js ***!
  \******************************************************************************/
/*! exports provided: default */
/***/ (function(module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* WEBPACK VAR INJECTION */(function(Buffer) {/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"default\", function() { return json; });\n/* harmony import */ var vega_util__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! vega-util */ \"./node_modules/vega-label/node_modules/vega-util/build/vega-util.module.js\");\n\n\nfunction isBuffer(_) {\n  return (typeof Buffer === 'function' && Object(vega_util__WEBPACK_IMPORTED_MODULE_0__[\"isFunction\"])(Buffer.isBuffer))\n    ? Buffer.isBuffer(_) : false;\n}\n\nfunction json(data, format) {\n  const prop = (format && format.property) ? Object(vega_util__WEBPACK_IMPORTED_MODULE_0__[\"field\"])(format.property) : vega_util__WEBPACK_IMPORTED_MODULE_0__[\"identity\"];\n  return Object(vega_util__WEBPACK_IMPORTED_MODULE_0__[\"isObject\"])(data) && !isBuffer(data)\n    ? parseJSON(prop(data), format)\n    : prop(JSON.parse(data));\n}\n\njson.responseType = 'json';\n\nfunction parseJSON(data, format) {\n  if (!Object(vega_util__WEBPACK_IMPORTED_MODULE_0__[\"isArray\"])(data) && Object(vega_util__WEBPACK_IMPORTED_MODULE_0__[\"isIterable\"])(data)) {\n    data = [...data];\n  }\n  return (format && format.copy)\n    ? JSON.parse(JSON.stringify(data))\n    : data;\n}\n\n/* WEBPACK VAR INJECTION */}.call(this, __webpack_require__(/*! ./../../../../../buffer/index.js */ \"./node_modules/buffer/index.js\").Buffer))//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvdmVnYS1sYWJlbC9ub2RlX21vZHVsZXMvdmVnYS1sb2FkZXIvc3JjL2Zvcm1hdHMvanNvbi5qcy5qcyIsInNvdXJjZXMiOlsid2VicGFjazovLy8uL25vZGVfbW9kdWxlcy92ZWdhLWxhYmVsL25vZGVfbW9kdWxlcy92ZWdhLWxvYWRlci9zcmMvZm9ybWF0cy9qc29uLmpzPzgyMjYiXSwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtcbiAgZmllbGQsIGlkZW50aXR5LCBpc0FycmF5LCBpc0Z1bmN0aW9uLCBpc0l0ZXJhYmxlLCBpc09iamVjdFxufSBmcm9tICd2ZWdhLXV0aWwnO1xuXG5mdW5jdGlvbiBpc0J1ZmZlcihfKSB7XG4gIHJldHVybiAodHlwZW9mIEJ1ZmZlciA9PT0gJ2Z1bmN0aW9uJyAmJiBpc0Z1bmN0aW9uKEJ1ZmZlci5pc0J1ZmZlcikpXG4gICAgPyBCdWZmZXIuaXNCdWZmZXIoXykgOiBmYWxzZTtcbn1cblxuZXhwb3J0IGRlZmF1bHQgZnVuY3Rpb24ganNvbihkYXRhLCBmb3JtYXQpIHtcbiAgY29uc3QgcHJvcCA9IChmb3JtYXQgJiYgZm9ybWF0LnByb3BlcnR5KSA/IGZpZWxkKGZvcm1hdC5wcm9wZXJ0eSkgOiBpZGVudGl0eTtcbiAgcmV0dXJuIGlzT2JqZWN0KGRhdGEpICYmICFpc0J1ZmZlcihkYXRhKVxuICAgID8gcGFyc2VKU09OKHByb3AoZGF0YSksIGZvcm1hdClcbiAgICA6IHByb3AoSlNPTi5wYXJzZShkYXRhKSk7XG59XG5cbmpzb24ucmVzcG9uc2VUeXBlID0gJ2pzb24nO1xuXG5mdW5jdGlvbiBwYXJzZUpTT04oZGF0YSwgZm9ybWF0KSB7XG4gIGlmICghaXNBcnJheShkYXRhKSAmJiBpc0l0ZXJhYmxlKGRhdGEpKSB7XG4gICAgZGF0YSA9IFsuLi5kYXRhXTtcbiAgfVxuICByZXR1cm4gKGZvcm1hdCAmJiBmb3JtYXQuY29weSlcbiAgICA/IEpTT04ucGFyc2UoSlNPTi5zdHJpbmdpZnkoZGF0YSkpXG4gICAgOiBkYXRhO1xufVxuIl0sIm1hcHBpbmdzIjoiQUFBQTtBQUFBO0FBQUE7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0EiLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///./node_modules/vega-label/node_modules/vega-loader/src/formats/json.js\n");

/***/ }),

/***/ "./node_modules/vega-label/node_modules/vega-loader/src/formats/topojson.js":
/*!**********************************************************************************!*\
  !*** ./node_modules/vega-label/node_modules/vega-loader/src/formats/topojson.js ***!
  \**********************************************************************************/
/*! exports provided: default */
/***/ (function(module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"default\", function() { return topojson; });\n/* harmony import */ var _json__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./json */ \"./node_modules/vega-label/node_modules/vega-loader/src/formats/json.js\");\n/* harmony import */ var topojson_client__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! topojson-client */ \"./node_modules/topojson-client/src/index.js\");\n/* harmony import */ var vega_util__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! vega-util */ \"./node_modules/vega-label/node_modules/vega-util/build/vega-util.module.js\");\n\n\n\n\nconst filters = {\n  interior: (a, b) => a !== b,\n  exterior: (a, b) => a === b\n};\n\nfunction topojson(data, format) {\n  let method, object, property, filter;\n  data = Object(_json__WEBPACK_IMPORTED_MODULE_0__[\"default\"])(data, format);\n\n  if (format && format.feature) {\n    method = topojson_client__WEBPACK_IMPORTED_MODULE_1__[\"feature\"];\n    property = format.feature;\n  } else if (format && format.mesh) {\n    method = topojson_client__WEBPACK_IMPORTED_MODULE_1__[\"mesh\"];\n    property = format.mesh;\n    filter = filters[format.filter];\n  } else {\n    Object(vega_util__WEBPACK_IMPORTED_MODULE_2__[\"error\"])('Missing TopoJSON feature or mesh parameter.');\n  }\n\n  object = (object = data.objects[property])\n    ? method(data, object, filter)\n    : Object(vega_util__WEBPACK_IMPORTED_MODULE_2__[\"error\"])('Invalid TopoJSON object: ' + property);\n\n  return object && object.features || [object];\n}\n\ntopojson.responseType = 'json';\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvdmVnYS1sYWJlbC9ub2RlX21vZHVsZXMvdmVnYS1sb2FkZXIvc3JjL2Zvcm1hdHMvdG9wb2pzb24uanMuanMiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvdmVnYS1sYWJlbC9ub2RlX21vZHVsZXMvdmVnYS1sb2FkZXIvc3JjL2Zvcm1hdHMvdG9wb2pzb24uanM/ODc3NCJdLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQganNvbiBmcm9tICcuL2pzb24nO1xuaW1wb3J0IHtmZWF0dXJlLCBtZXNofSBmcm9tICd0b3BvanNvbi1jbGllbnQnO1xuaW1wb3J0IHtlcnJvcn0gZnJvbSAndmVnYS11dGlsJztcblxuY29uc3QgZmlsdGVycyA9IHtcbiAgaW50ZXJpb3I6IChhLCBiKSA9PiBhICE9PSBiLFxuICBleHRlcmlvcjogKGEsIGIpID0+IGEgPT09IGJcbn07XG5cbmV4cG9ydCBkZWZhdWx0IGZ1bmN0aW9uIHRvcG9qc29uKGRhdGEsIGZvcm1hdCkge1xuICBsZXQgbWV0aG9kLCBvYmplY3QsIHByb3BlcnR5LCBmaWx0ZXI7XG4gIGRhdGEgPSBqc29uKGRhdGEsIGZvcm1hdCk7XG5cbiAgaWYgKGZvcm1hdCAmJiBmb3JtYXQuZmVhdHVyZSkge1xuICAgIG1ldGhvZCA9IGZlYXR1cmU7XG4gICAgcHJvcGVydHkgPSBmb3JtYXQuZmVhdHVyZTtcbiAgfSBlbHNlIGlmIChmb3JtYXQgJiYgZm9ybWF0Lm1lc2gpIHtcbiAgICBtZXRob2QgPSBtZXNoO1xuICAgIHByb3BlcnR5ID0gZm9ybWF0Lm1lc2g7XG4gICAgZmlsdGVyID0gZmlsdGVyc1tmb3JtYXQuZmlsdGVyXTtcbiAgfSBlbHNlIHtcbiAgICBlcnJvcignTWlzc2luZyBUb3BvSlNPTiBmZWF0dXJlIG9yIG1lc2ggcGFyYW1ldGVyLicpO1xuICB9XG5cbiAgb2JqZWN0ID0gKG9iamVjdCA9IGRhdGEub2JqZWN0c1twcm9wZXJ0eV0pXG4gICAgPyBtZXRob2QoZGF0YSwgb2JqZWN0LCBmaWx0ZXIpXG4gICAgOiBlcnJvcignSW52YWxpZCBUb3BvSlNPTiBvYmplY3Q6ICcgKyBwcm9wZXJ0eSk7XG5cbiAgcmV0dXJuIG9iamVjdCAmJiBvYmplY3QuZmVhdHVyZXMgfHwgW29iamVjdF07XG59XG5cbnRvcG9qc29uLnJlc3BvbnNlVHlwZSA9ICdqc29uJztcbiJdLCJtYXBwaW5ncyI6IkFBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7Iiwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///./node_modules/vega-label/node_modules/vega-loader/src/formats/topojson.js\n");

/***/ }),

/***/ "./node_modules/vega-label/node_modules/vega-loader/src/loader.js":
/*!************************************************************************!*\
  !*** ./node_modules/vega-label/node_modules/vega-loader/src/loader.js ***!
  \************************************************************************/
/*! exports provided: default */
/***/ (function(module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var vega_util__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! vega-util */ \"./node_modules/vega-label/node_modules/vega-util/build/vega-util.module.js\");\n\n\n// Matches absolute URLs with optional protocol\n//   https://...    file://...    //...\nconst protocol_re = /^([A-Za-z]+:)?\\/\\//;\n\n// Matches allowed URIs. From https://github.com/cure53/DOMPurify/blob/master/src/regexp.js with added file://\nconst allowed_re = /^(?:(?:(?:f|ht)tps?|mailto|tel|callto|cid|xmpp|file|data):|[^a-z]|[a-z+.\\-]+(?:[^a-z+.\\-:]|$))/i; // eslint-disable-line no-useless-escape\nconst whitespace_re = /[\\u0000-\\u0020\\u00A0\\u1680\\u180E\\u2000-\\u2029\\u205f\\u3000]/g; // eslint-disable-line no-control-regex\n\n\n// Special treatment in node.js for the file: protocol\nconst fileProtocol = 'file://';\n\n/**\n * Factory for a loader constructor that provides methods for requesting\n * files from either the network or disk, and for sanitizing request URIs.\n * @param {function} fetch - The Fetch API for HTTP network requests.\n *   If null or undefined, HTTP loading will be disabled.\n * @param {object} fs - The file system interface for file loading.\n *   If null or undefined, local file loading will be disabled.\n * @return {function} A loader constructor with the following signature:\n *   param {object} [options] - Optional default loading options to use.\n *   return {object} - A new loader instance.\n */\n/* harmony default export */ __webpack_exports__[\"default\"] = (function(fetch, fs) {\n  return options => ({\n    options: options || {},\n    sanitize: sanitize,\n    load: load,\n    fileAccess: !!fs,\n    file: fileLoader(fs),\n    http: httpLoader(fetch)\n  });\n});\n\n/**\n * Load an external resource, typically either from the web or from the local\n * filesystem. This function uses {@link sanitize} to first sanitize the uri,\n * then calls either {@link http} (for web requests) or {@link file} (for\n * filesystem loading).\n * @param {string} uri - The resource indicator (e.g., URL or filename).\n * @param {object} [options] - Optional loading options. These options will\n *   override any existing default options.\n * @return {Promise} - A promise that resolves to the loaded content.\n */\nasync function load(uri, options) {\n  const opt = await this.sanitize(uri, options),\n        url = opt.href;\n\n  return opt.localFile\n    ? this.file(url)\n    : this.http(url, options);\n}\n\n/**\n * URI sanitizer function.\n * @param {string} uri - The uri (url or filename) to sanity check.\n * @param {object} options - An options hash.\n * @return {Promise} - A promise that resolves to an object containing\n *  sanitized uri data, or rejects it the input uri is deemed invalid.\n *  The properties of the resolved object are assumed to be\n *  valid attributes for an HTML 'a' tag. The sanitized uri *must* be\n *  provided by the 'href' property of the returned object.\n */\nasync function sanitize(uri, options) {\n  options = Object(vega_util__WEBPACK_IMPORTED_MODULE_0__[\"extend\"])({}, this.options, options);\n\n  const fileAccess = this.fileAccess,\n        result = {href: null};\n\n  let isFile, loadFile, base;\n\n  const isAllowed = allowed_re.test(uri.replace(whitespace_re, ''));\n\n  if (uri == null || typeof uri !== 'string' || !isAllowed) {\n    Object(vega_util__WEBPACK_IMPORTED_MODULE_0__[\"error\"])('Sanitize failure, invalid URI: ' + Object(vega_util__WEBPACK_IMPORTED_MODULE_0__[\"stringValue\"])(uri));\n  }\n\n  const hasProtocol = protocol_re.test(uri);\n\n  // if relative url (no protocol/host), prepend baseURL\n  if ((base = options.baseURL) && !hasProtocol) {\n    // Ensure that there is a slash between the baseURL (e.g. hostname) and url\n    if (!uri.startsWith('/') && base[base.length-1] !== '/') {\n      uri = '/' + uri;\n    }\n    uri = base + uri;\n  }\n\n  // should we load from file system?\n  loadFile = (isFile = uri.startsWith(fileProtocol))\n    || options.mode === 'file'\n    || options.mode !== 'http' && !hasProtocol && fileAccess;\n\n  if (isFile) {\n    // strip file protocol\n    uri = uri.slice(fileProtocol.length);\n  } else if (uri.startsWith('//')) {\n    if (options.defaultProtocol === 'file') {\n      // if is file, strip protocol and set loadFile flag\n      uri = uri.slice(2);\n      loadFile = true;\n    } else {\n      // if relative protocol (starts with '//'), prepend default protocol\n      uri = (options.defaultProtocol || 'http') + ':' + uri;\n    }\n  }\n\n  // set non-enumerable mode flag to indicate local file load\n  Object.defineProperty(result, 'localFile', {value: !!loadFile});\n\n  // set uri\n  result.href = uri;\n\n  // set default result target, if specified\n  if (options.target) {\n    result.target = options.target + '';\n  }\n\n  // set default result rel, if specified (#1542)\n  if (options.rel) {\n    result.rel = options.rel + '';\n  }\n\n  // provide control over cross-origin image handling (#2238)\n  // https://developer.mozilla.org/en-US/docs/Web/HTML/CORS_enabled_image\n  if (options.context === 'image' && options.crossOrigin) {\n    result.crossOrigin = options.crossOrigin + '';\n  }\n\n  // return\n  return result;\n}\n\n/**\n * File system loader factory.\n * @param {object} fs - The file system interface.\n * @return {function} - A file loader with the following signature:\n *   param {string} filename - The file system path to load.\n *   param {string} filename - The file system path to load.\n *   return {Promise} A promise that resolves to the file contents.\n */\nfunction fileLoader(fs) {\n  return fs\n    ? filename => new Promise((accept, reject) => {\n        fs.readFile(filename, (error, data) => {\n          if (error) reject(error);\n          else accept(data);\n        });\n      })\n    : fileReject;\n}\n\n/**\n * Default file system loader that simply rejects.\n */\nasync function fileReject() {\n  Object(vega_util__WEBPACK_IMPORTED_MODULE_0__[\"error\"])('No file system access.');\n}\n\n/**\n * HTTP request handler factory.\n * @param {function} fetch - The Fetch API method.\n * @return {function} - An http loader with the following signature:\n *   param {string} url - The url to request.\n *   param {object} options - An options hash.\n *   return {Promise} - A promise that resolves to the file contents.\n */\nfunction httpLoader(fetch) {\n  return fetch\n    ? async function(url, options) {\n        const opt = Object(vega_util__WEBPACK_IMPORTED_MODULE_0__[\"extend\"])({}, this.options.http, options),\n              type = options && options.response,\n              response = await fetch(url, opt);\n\n        return !response.ok\n          ? Object(vega_util__WEBPACK_IMPORTED_MODULE_0__[\"error\"])(response.status + '' + response.statusText)\n          : Object(vega_util__WEBPACK_IMPORTED_MODULE_0__[\"isFunction\"])(response[type]) ? response[type]()\n          : response.text();\n      }\n    : httpReject;\n}\n\n/**\n * Default http request handler that simply rejects.\n */\nasync function httpReject() {\n  Object(vega_util__WEBPACK_IMPORTED_MODULE_0__[\"error\"])('No HTTP fetch method available.');\n}\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,[encoded data, 10352 characters]\n//# sourceURL=webpack-internal:///./node_modules/vega-label/node_modules/vega-loader/src/loader.js\n");

/***/ }),

/***/ "./node_modules/vega-label/node_modules/vega-loader/src/read.js":
/*!**********************************************************************!*\
  !*** ./node_modules/vega-label/node_modules/vega-loader/src/read.js ***!
  \**********************************************************************/
/*! exports provided: default */
/***/ (function(module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _type__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./type */ \"./node_modules/vega-label/node_modules/vega-loader/src/type.js\");\n/* harmony import */ var _formats_index__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./formats/index */ \"./node_modules/vega-label/node_modules/vega-loader/src/formats/index.js\");\n/* harmony import */ var vega_format__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! vega-format */ \"./node_modules/vega-format/build/vega-format.module.js\");\n/* harmony import */ var vega_util__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! vega-util */ \"./node_modules/vega-label/node_modules/vega-util/build/vega-util.module.js\");\n\n\n\n\n\n/* harmony default export */ __webpack_exports__[\"default\"] = (function(data, schema, timeParser, utcParser) {\n  schema = schema || {};\n\n  const reader = Object(_formats_index__WEBPACK_IMPORTED_MODULE_1__[\"formats\"])(schema.type || 'json');\n  if (!reader) Object(vega_util__WEBPACK_IMPORTED_MODULE_3__[\"error\"])('Unknown data format type: ' + schema.type);\n\n  data = reader(data, schema);\n  if (schema.parse) parse(data, schema.parse, timeParser, utcParser);\n\n  if (Object(vega_util__WEBPACK_IMPORTED_MODULE_3__[\"hasOwnProperty\"])(data, 'columns')) delete data.columns;\n  return data;\n});\n\nfunction parse(data, types, timeParser, utcParser) {\n  if (!data.length) return; // early exit for empty data\n\n  const locale = Object(vega_format__WEBPACK_IMPORTED_MODULE_2__[\"timeFormatDefaultLocale\"])();\n  timeParser = timeParser || locale.timeParse;\n  utcParser = utcParser || locale.utcParse;\n\n  let fields = data.columns || Object.keys(data[0]),\n      datum, field, i, j, n, m;\n\n  if (types === 'auto') types = Object(_type__WEBPACK_IMPORTED_MODULE_0__[\"inferTypes\"])(data, fields);\n\n  fields = Object.keys(types);\n  const parsers = fields.map(field => {\n    const type = types[field];\n    let parts, pattern;\n\n    if (type && (type.startsWith('date:') || type.startsWith('utc:'))) {\n      parts = type.split(/:(.+)?/, 2);  // split on first :\n      pattern = parts[1];\n\n      if ((pattern[0] === '\\'' && pattern[pattern.length-1] === '\\'') ||\n          (pattern[0] === '\"'  && pattern[pattern.length-1] === '\"')) {\n        pattern = pattern.slice(1, -1);\n      }\n\n      const parse = parts[0] === 'utc' ? utcParser : timeParser;\n      return parse(pattern);\n    }\n\n    if (!_type__WEBPACK_IMPORTED_MODULE_0__[\"typeParsers\"][type]) {\n      throw Error('Illegal format pattern: ' + field + ':' + type);\n    }\n\n    return _type__WEBPACK_IMPORTED_MODULE_0__[\"typeParsers\"][type];\n  });\n\n  for (i=0, n=data.length, m=fields.length; i<n; ++i) {\n    datum = data[i];\n    for (j=0; j<m; ++j) {\n      field = fields[j];\n      datum[field] = parsers[j](datum[field]);\n    }\n  }\n}\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvdmVnYS1sYWJlbC9ub2RlX21vZHVsZXMvdmVnYS1sb2FkZXIvc3JjL3JlYWQuanMuanMiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvdmVnYS1sYWJlbC9ub2RlX21vZHVsZXMvdmVnYS1sb2FkZXIvc3JjL3JlYWQuanM/ZDJjYSJdLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge2luZmVyVHlwZXMsIHR5cGVQYXJzZXJzfSBmcm9tICcuL3R5cGUnO1xuaW1wb3J0IHtmb3JtYXRzfSBmcm9tICcuL2Zvcm1hdHMvaW5kZXgnO1xuaW1wb3J0IHt0aW1lRm9ybWF0RGVmYXVsdExvY2FsZX0gZnJvbSAndmVnYS1mb3JtYXQnO1xuaW1wb3J0IHtlcnJvciwgaGFzT3duUHJvcGVydHl9IGZyb20gJ3ZlZ2EtdXRpbCc7XG5cbmV4cG9ydCBkZWZhdWx0IGZ1bmN0aW9uKGRhdGEsIHNjaGVtYSwgdGltZVBhcnNlciwgdXRjUGFyc2VyKSB7XG4gIHNjaGVtYSA9IHNjaGVtYSB8fCB7fTtcblxuICBjb25zdCByZWFkZXIgPSBmb3JtYXRzKHNjaGVtYS50eXBlIHx8ICdqc29uJyk7XG4gIGlmICghcmVhZGVyKSBlcnJvcignVW5rbm93biBkYXRhIGZvcm1hdCB0eXBlOiAnICsgc2NoZW1hLnR5cGUpO1xuXG4gIGRhdGEgPSByZWFkZXIoZGF0YSwgc2NoZW1hKTtcbiAgaWYgKHNjaGVtYS5wYXJzZSkgcGFyc2UoZGF0YSwgc2NoZW1hLnBhcnNlLCB0aW1lUGFyc2VyLCB1dGNQYXJzZXIpO1xuXG4gIGlmIChoYXNPd25Qcm9wZXJ0eShkYXRhLCAnY29sdW1ucycpKSBkZWxldGUgZGF0YS5jb2x1bW5zO1xuICByZXR1cm4gZGF0YTtcbn1cblxuZnVuY3Rpb24gcGFyc2UoZGF0YSwgdHlwZXMsIHRpbWVQYXJzZXIsIHV0Y1BhcnNlcikge1xuICBpZiAoIWRhdGEubGVuZ3RoKSByZXR1cm47IC8vIGVhcmx5IGV4aXQgZm9yIGVtcHR5IGRhdGFcblxuICBjb25zdCBsb2NhbGUgPSB0aW1lRm9ybWF0RGVmYXVsdExvY2FsZSgpO1xuICB0aW1lUGFyc2VyID0gdGltZVBhcnNlciB8fCBsb2NhbGUudGltZVBhcnNlO1xuICB1dGNQYXJzZXIgPSB1dGNQYXJzZXIgfHwgbG9jYWxlLnV0Y1BhcnNlO1xuXG4gIGxldCBmaWVsZHMgPSBkYXRhLmNvbHVtbnMgfHwgT2JqZWN0LmtleXMoZGF0YVswXSksXG4gICAgICBkYXR1bSwgZmllbGQsIGksIGosIG4sIG07XG5cbiAgaWYgKHR5cGVzID09PSAnYXV0bycpIHR5cGVzID0gaW5mZXJUeXBlcyhkYXRhLCBmaWVsZHMpO1xuXG4gIGZpZWxkcyA9IE9iamVjdC5rZXlzKHR5cGVzKTtcbiAgY29uc3QgcGFyc2VycyA9IGZpZWxkcy5tYXAoZmllbGQgPT4ge1xuICAgIGNvbnN0IHR5cGUgPSB0eXBlc1tmaWVsZF07XG4gICAgbGV0IHBhcnRzLCBwYXR0ZXJuO1xuXG4gICAgaWYgKHR5cGUgJiYgKHR5cGUuc3RhcnRzV2l0aCgnZGF0ZTonKSB8fCB0eXBlLnN0YXJ0c1dpdGgoJ3V0YzonKSkpIHtcbiAgICAgIHBhcnRzID0gdHlwZS5zcGxpdCgvOiguKyk/LywgMik7ICAvLyBzcGxpdCBvbiBmaXJzdCA6XG4gICAgICBwYXR0ZXJuID0gcGFydHNbMV07XG5cbiAgICAgIGlmICgocGF0dGVyblswXSA9PT0gJ1xcJycgJiYgcGF0dGVybltwYXR0ZXJuLmxlbmd0aC0xXSA9PT0gJ1xcJycpIHx8XG4gICAgICAgICAgKHBhdHRlcm5bMF0gPT09ICdcIicgICYmIHBhdHRlcm5bcGF0dGVybi5sZW5ndGgtMV0gPT09ICdcIicpKSB7XG4gICAgICAgIHBhdHRlcm4gPSBwYXR0ZXJuLnNsaWNlKDEsIC0xKTtcbiAgICAgIH1cblxuICAgICAgY29uc3QgcGFyc2UgPSBwYXJ0c1swXSA9PT0gJ3V0YycgPyB1dGNQYXJzZXIgOiB0aW1lUGFyc2VyO1xuICAgICAgcmV0dXJuIHBhcnNlKHBhdHRlcm4pO1xuICAgIH1cblxuICAgIGlmICghdHlwZVBhcnNlcnNbdHlwZV0pIHtcbiAgICAgIHRocm93IEVycm9yKCdJbGxlZ2FsIGZvcm1hdCBwYXR0ZXJuOiAnICsgZmllbGQgKyAnOicgKyB0eXBlKTtcbiAgICB9XG5cbiAgICByZXR1cm4gdHlwZVBhcnNlcnNbdHlwZV07XG4gIH0pO1xuXG4gIGZvciAoaT0wLCBuPWRhdGEubGVuZ3RoLCBtPWZpZWxkcy5sZW5ndGg7IGk8bjsgKytpKSB7XG4gICAgZGF0dW0gPSBkYXRhW2ldO1xuICAgIGZvciAoaj0wOyBqPG07ICsraikge1xuICAgICAgZmllbGQgPSBmaWVsZHNbal07XG4gICAgICBkYXR1bVtmaWVsZF0gPSBwYXJzZXJzW2pdKGRhdHVtW2ZpZWxkXSk7XG4gICAgfVxuICB9XG59XG4iXSwibWFwcGluZ3MiOiJBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7Iiwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///./node_modules/vega-label/node_modules/vega-loader/src/read.js\n");

/***/ }),

/***/ "./node_modules/vega-label/node_modules/vega-loader/src/type.js":
/*!**********************************************************************!*\
  !*** ./node_modules/vega-label/node_modules/vega-loader/src/type.js ***!
  \**********************************************************************/
/*! exports provided: typeParsers, inferType, inferTypes */
/***/ (function(module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"typeParsers\", function() { return typeParsers; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"inferType\", function() { return inferType; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"inferTypes\", function() { return inferTypes; });\n/* harmony import */ var vega_util__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! vega-util */ \"./node_modules/vega-label/node_modules/vega-util/build/vega-util.module.js\");\n\n\nconst isValid = _ => _ != null && _ === _;\n\nconst isBoolean = _ => _ === 'true'\n  || _ === 'false'\n  || _ === true\n  || _ === false;\n\nconst isDate = _ => !Number.isNaN(Date.parse(_));\n\nconst isNumber = _ => !Number.isNaN(+_) && !(_ instanceof Date);\n\nconst isInteger = _ => isNumber(_) && Number.isInteger(+_);\n\nconst typeParsers = {\n  boolean: vega_util__WEBPACK_IMPORTED_MODULE_0__[\"toBoolean\"],\n  integer: vega_util__WEBPACK_IMPORTED_MODULE_0__[\"toNumber\"],\n  number:  vega_util__WEBPACK_IMPORTED_MODULE_0__[\"toNumber\"],\n  date:    vega_util__WEBPACK_IMPORTED_MODULE_0__[\"toDate\"],\n  string:  vega_util__WEBPACK_IMPORTED_MODULE_0__[\"toString\"],\n  unknown: vega_util__WEBPACK_IMPORTED_MODULE_0__[\"identity\"]\n};\n\nconst typeTests = [\n  isBoolean,\n  isInteger,\n  isNumber,\n  isDate\n];\n\nconst typeList = [\n  'boolean',\n  'integer',\n  'number',\n  'date'\n];\n\nfunction inferType(values, field) {\n  if (!values || !values.length) return 'unknown';\n\n  const n = values.length,\n        m = typeTests.length,\n        a = typeTests.map((_, i) => i + 1);\n\n  for (let i = 0, t = 0, j, value; i < n; ++i) {\n    value = field ? values[i][field] : values[i];\n    for (j = 0; j < m; ++j) {\n      if (a[j] && isValid(value) && !typeTests[j](value)) {\n        a[j] = 0;\n        ++t;\n        if (t === typeTests.length) return 'string';\n      }\n    }\n  }\n\n  return typeList[\n    a.reduce((u, v) => u === 0 ? v : u, 0) - 1\n  ];\n}\n\nfunction inferTypes(data, fields) {\n  return fields.reduce((types, field) => {\n    types[field] = inferType(data, field);\n    return types;\n  }, {});\n}\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvdmVnYS1sYWJlbC9ub2RlX21vZHVsZXMvdmVnYS1sb2FkZXIvc3JjL3R5cGUuanMuanMiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvdmVnYS1sYWJlbC9ub2RlX21vZHVsZXMvdmVnYS1sb2FkZXIvc3JjL3R5cGUuanM/ZmZlNSJdLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge2lkZW50aXR5LCB0b0Jvb2xlYW4sIHRvRGF0ZSwgdG9OdW1iZXIsIHRvU3RyaW5nfSBmcm9tICd2ZWdhLXV0aWwnO1xuXG5jb25zdCBpc1ZhbGlkID0gXyA9PiBfICE9IG51bGwgJiYgXyA9PT0gXztcblxuY29uc3QgaXNCb29sZWFuID0gXyA9PiBfID09PSAndHJ1ZSdcbiAgfHwgXyA9PT0gJ2ZhbHNlJ1xuICB8fCBfID09PSB0cnVlXG4gIHx8IF8gPT09IGZhbHNlO1xuXG5jb25zdCBpc0RhdGUgPSBfID0+ICFOdW1iZXIuaXNOYU4oRGF0ZS5wYXJzZShfKSk7XG5cbmNvbnN0IGlzTnVtYmVyID0gXyA9PiAhTnVtYmVyLmlzTmFOKCtfKSAmJiAhKF8gaW5zdGFuY2VvZiBEYXRlKTtcblxuY29uc3QgaXNJbnRlZ2VyID0gXyA9PiBpc051bWJlcihfKSAmJiBOdW1iZXIuaXNJbnRlZ2VyKCtfKTtcblxuZXhwb3J0IGNvbnN0IHR5cGVQYXJzZXJzID0ge1xuICBib29sZWFuOiB0b0Jvb2xlYW4sXG4gIGludGVnZXI6IHRvTnVtYmVyLFxuICBudW1iZXI6ICB0b051bWJlcixcbiAgZGF0ZTogICAgdG9EYXRlLFxuICBzdHJpbmc6ICB0b1N0cmluZyxcbiAgdW5rbm93bjogaWRlbnRpdHlcbn07XG5cbmNvbnN0IHR5cGVUZXN0cyA9IFtcbiAgaXNCb29sZWFuLFxuICBpc0ludGVnZXIsXG4gIGlzTnVtYmVyLFxuICBpc0RhdGVcbl07XG5cbmNvbnN0IHR5cGVMaXN0ID0gW1xuICAnYm9vbGVhbicsXG4gICdpbnRlZ2VyJyxcbiAgJ251bWJlcicsXG4gICdkYXRlJ1xuXTtcblxuZXhwb3J0IGZ1bmN0aW9uIGluZmVyVHlwZSh2YWx1ZXMsIGZpZWxkKSB7XG4gIGlmICghdmFsdWVzIHx8ICF2YWx1ZXMubGVuZ3RoKSByZXR1cm4gJ3Vua25vd24nO1xuXG4gIGNvbnN0IG4gPSB2YWx1ZXMubGVuZ3RoLFxuICAgICAgICBtID0gdHlwZVRlc3RzLmxlbmd0aCxcbiAgICAgICAgYSA9IHR5cGVUZXN0cy5tYXAoKF8sIGkpID0+IGkgKyAxKTtcblxuICBmb3IgKGxldCBpID0gMCwgdCA9IDAsIGosIHZhbHVlOyBpIDwgbjsgKytpKSB7XG4gICAgdmFsdWUgPSBmaWVsZCA/IHZhbHVlc1tpXVtmaWVsZF0gOiB2YWx1ZXNbaV07XG4gICAgZm9yIChqID0gMDsgaiA8IG07ICsraikge1xuICAgICAgaWYgKGFbal0gJiYgaXNWYWxpZCh2YWx1ZSkgJiYgIXR5cGVUZXN0c1tqXSh2YWx1ZSkpIHtcbiAgICAgICAgYVtqXSA9IDA7XG4gICAgICAgICsrdDtcbiAgICAgICAgaWYgKHQgPT09IHR5cGVUZXN0cy5sZW5ndGgpIHJldHVybiAnc3RyaW5nJztcbiAgICAgIH1cbiAgICB9XG4gIH1cblxuICByZXR1cm4gdHlwZUxpc3RbXG4gICAgYS5yZWR1Y2UoKHUsIHYpID0+IHUgPT09IDAgPyB2IDogdSwgMCkgLSAxXG4gIF07XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBpbmZlclR5cGVzKGRhdGEsIGZpZWxkcykge1xuICByZXR1cm4gZmllbGRzLnJlZHVjZSgodHlwZXMsIGZpZWxkKSA9PiB7XG4gICAgdHlwZXNbZmllbGRdID0gaW5mZXJUeXBlKGRhdGEsIGZpZWxkKTtcbiAgICByZXR1cm4gdHlwZXM7XG4gIH0sIHt9KTtcbn1cbiJdLCJtYXBwaW5ncyI6IkFBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOyIsInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///./node_modules/vega-label/node_modules/vega-loader/src/type.js\n");

/***/ }),

/***/ "./node_modules/vega-label/node_modules/vega-scale/build/vega-scale.module.js":
/*!************************************************************************************!*\
  !*** ./node_modules/vega-label/node_modules/vega-scale/build/vega-scale.module.js ***!
  \************************************************************************************/
/*! exports provided: scaleImplicit, Band, BinOrdinal, DiscreteLegend, Diverging, GradientLegend, Identity, Linear, Log, Ordinal, Point, Pow, Quantile, Quantize, Sequential, Sqrt, SymbolLegend, Symlog, Threshold, Time, UTC, bandSpace, domainCaption, interpolate, interpolateColors, interpolateRange, isContinuous, isDiscrete, isDiscretizing, isInterpolating, isLogarithmic, isQuantile, isTemporal, isValidScaleType, labelFormat, labelFraction, labelValues, quantizeInterpolator, scale, scaleCopy, scaleFraction, scheme, tickCount, tickFormat, tickValues, validTicks */
/***/ (function(module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"Band\", function() { return Band; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"BinOrdinal\", function() { return BinOrdinal; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"DiscreteLegend\", function() { return DiscreteLegend; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"Diverging\", function() { return Diverging; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"GradientLegend\", function() { return GradientLegend; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"Identity\", function() { return Identity; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"Linear\", function() { return Linear; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"Log\", function() { return Log; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"Ordinal\", function() { return Ordinal; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"Point\", function() { return Point; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"Pow\", function() { return Pow; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"Quantile\", function() { return Quantile; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"Quantize\", function() { return Quantize; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"Sequential\", function() { return Sequential; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"Sqrt\", function() { return Sqrt; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"SymbolLegend\", function() { return SymbolLegend; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"Symlog\", function() { return Symlog; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"Threshold\", function() { return Threshold; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"Time\", function() { return Time; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"UTC\", function() { return UTC; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"bandSpace\", function() { return bandSpace; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"domainCaption\", function() { return domainCaption; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"interpolate\", function() { return interpolate; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"interpolateColors\", function() { return interpolateColors; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"interpolateRange\", function() { return interpolateRange; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"isContinuous\", function() { return isContinuous; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"isDiscrete\", function() { return isDiscrete; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"isDiscretizing\", function() { return isDiscretizing; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"isInterpolating\", function() { return isInterpolating; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"isLogarithmic\", function() { return isLogarithmic; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"isQuantile\", function() { return isQuantile; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"isTemporal\", function() { return isTemporal; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"isValidScaleType\", function() { return isValidScaleType; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"labelFormat\", function() { return labelFormat; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"labelFraction\", function() { return labelFraction; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"labelValues\", function() { return labelValues; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"quantizeInterpolator\", function() { return quantizeInterpolator; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"scale\", function() { return scale; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"scaleCopy\", function() { return scaleCopy; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"scaleFraction\", function() { return scaleFraction; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"scheme\", function() { return scheme; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"tickCount\", function() { return tickCount; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"tickFormat\", function() { return tickFormat; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"tickValues\", function() { return tickValues; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"validTicks\", function() { return validTicks; });\n/* harmony import */ var vega_util__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! vega-util */ \"./node_modules/vega-label/node_modules/vega-util/build/vega-util.module.js\");\n/* harmony import */ var d3_array__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! d3-array */ \"./node_modules/d3-array/src/index.js\");\n/* harmony import */ var d3_scale__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! d3-scale */ \"./node_modules/vega-label/node_modules/d3-scale/src/index.js\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"scaleImplicit\", function() { return d3_scale__WEBPACK_IMPORTED_MODULE_2__[\"scaleImplicit\"]; });\n\n/* harmony import */ var d3_interpolate__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! d3-interpolate */ \"./node_modules/vega-label/node_modules/d3-interpolate/src/index.js\");\n/* harmony import */ var vega_time__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! vega-time */ \"./node_modules/vega-time/build/vega-time.module.js\");\n\n\n\n\n\n\n\n\nfunction bandSpace (count, paddingInner, paddingOuter) {\n  const space = count - paddingInner + paddingOuter * 2;\n  return count ? space > 0 ? space : 1 : 0;\n}\n\nconst Identity = 'identity';\nconst Linear = 'linear';\nconst Log = 'log';\nconst Pow = 'pow';\nconst Sqrt = 'sqrt';\nconst Symlog = 'symlog';\nconst Time = 'time';\nconst UTC = 'utc';\nconst Sequential = 'sequential';\nconst Diverging = 'diverging';\nconst Quantile = 'quantile';\nconst Quantize = 'quantize';\nconst Threshold = 'threshold';\nconst Ordinal = 'ordinal';\nconst Point = 'point';\nconst Band = 'band';\nconst BinOrdinal = 'bin-ordinal'; // categories\n\nconst Continuous = 'continuous';\nconst Discrete = 'discrete';\nconst Discretizing = 'discretizing';\nconst Interpolating = 'interpolating';\nconst Temporal = 'temporal';\n\nfunction invertRange (scale) {\n  return function (_) {\n    let lo = _[0],\n        hi = _[1],\n        t;\n\n    if (hi < lo) {\n      t = lo;\n      lo = hi;\n      hi = t;\n    }\n\n    return [scale.invert(lo), scale.invert(hi)];\n  };\n}\n\nfunction invertRangeExtent (scale) {\n  return function (_) {\n    const range = scale.range();\n    let lo = _[0],\n        hi = _[1],\n        min = -1,\n        max,\n        t,\n        i,\n        n;\n\n    if (hi < lo) {\n      t = lo;\n      lo = hi;\n      hi = t;\n    }\n\n    for (i = 0, n = range.length; i < n; ++i) {\n      if (range[i] >= lo && range[i] <= hi) {\n        if (min < 0) min = i;\n        max = i;\n      }\n    }\n\n    if (min < 0) return undefined;\n    lo = scale.invertExtent(range[min]);\n    hi = scale.invertExtent(range[max]);\n    return [lo[0] === undefined ? lo[1] : lo[0], hi[1] === undefined ? hi[0] : hi[1]];\n  };\n}\n\nfunction band() {\n  const scale = Object(d3_scale__WEBPACK_IMPORTED_MODULE_2__[\"scaleOrdinal\"])().unknown(undefined),\n        domain = scale.domain,\n        ordinalRange = scale.range;\n  let range$1 = [0, 1],\n      step,\n      bandwidth,\n      round = false,\n      paddingInner = 0,\n      paddingOuter = 0,\n      align = 0.5;\n  delete scale.unknown;\n\n  function rescale() {\n    const n = domain().length,\n          reverse = range$1[1] < range$1[0],\n          stop = range$1[1 - reverse],\n          space = bandSpace(n, paddingInner, paddingOuter);\n    let start = range$1[reverse - 0];\n    step = (stop - start) / (space || 1);\n\n    if (round) {\n      step = Math.floor(step);\n    }\n\n    start += (stop - start - step * (n - paddingInner)) * align;\n    bandwidth = step * (1 - paddingInner);\n\n    if (round) {\n      start = Math.round(start);\n      bandwidth = Math.round(bandwidth);\n    }\n\n    const values = Object(d3_array__WEBPACK_IMPORTED_MODULE_1__[\"range\"])(n).map(i => start + step * i);\n    return ordinalRange(reverse ? values.reverse() : values);\n  }\n\n  scale.domain = function (_) {\n    if (arguments.length) {\n      domain(_);\n      return rescale();\n    } else {\n      return domain();\n    }\n  };\n\n  scale.range = function (_) {\n    if (arguments.length) {\n      range$1 = [+_[0], +_[1]];\n      return rescale();\n    } else {\n      return range$1.slice();\n    }\n  };\n\n  scale.rangeRound = function (_) {\n    range$1 = [+_[0], +_[1]];\n    round = true;\n    return rescale();\n  };\n\n  scale.bandwidth = function () {\n    return bandwidth;\n  };\n\n  scale.step = function () {\n    return step;\n  };\n\n  scale.round = function (_) {\n    if (arguments.length) {\n      round = !!_;\n      return rescale();\n    } else {\n      return round;\n    }\n  };\n\n  scale.padding = function (_) {\n    if (arguments.length) {\n      paddingOuter = Math.max(0, Math.min(1, _));\n      paddingInner = paddingOuter;\n      return rescale();\n    } else {\n      return paddingInner;\n    }\n  };\n\n  scale.paddingInner = function (_) {\n    if (arguments.length) {\n      paddingInner = Math.max(0, Math.min(1, _));\n      return rescale();\n    } else {\n      return paddingInner;\n    }\n  };\n\n  scale.paddingOuter = function (_) {\n    if (arguments.length) {\n      paddingOuter = Math.max(0, Math.min(1, _));\n      return rescale();\n    } else {\n      return paddingOuter;\n    }\n  };\n\n  scale.align = function (_) {\n    if (arguments.length) {\n      align = Math.max(0, Math.min(1, _));\n      return rescale();\n    } else {\n      return align;\n    }\n  };\n\n  scale.invertRange = function (_) {\n    // bail if range has null or undefined values\n    if (_[0] == null || _[1] == null) return;\n    const reverse = range$1[1] < range$1[0],\n          values = reverse ? ordinalRange().reverse() : ordinalRange(),\n          n = values.length - 1;\n    let lo = +_[0],\n        hi = +_[1],\n        a,\n        b,\n        t; // bail if either range endpoint is invalid\n\n    if (lo !== lo || hi !== hi) return; // order range inputs, bail if outside of scale range\n\n    if (hi < lo) {\n      t = lo;\n      lo = hi;\n      hi = t;\n    }\n\n    if (hi < values[0] || lo > range$1[1 - reverse]) return; // binary search to index into scale range\n\n    a = Math.max(0, Object(d3_array__WEBPACK_IMPORTED_MODULE_1__[\"bisectRight\"])(values, lo) - 1);\n    b = lo === hi ? a : Object(d3_array__WEBPACK_IMPORTED_MODULE_1__[\"bisectRight\"])(values, hi) - 1; // increment index a if lo is within padding gap\n\n    if (lo - values[a] > bandwidth + 1e-10) ++a;\n\n    if (reverse) {\n      // map + swap\n      t = a;\n      a = n - b;\n      b = n - t;\n    }\n\n    return a > b ? undefined : domain().slice(a, b + 1);\n  };\n\n  scale.invert = function (_) {\n    const value = scale.invertRange([_, _]);\n    return value ? value[0] : value;\n  };\n\n  scale.copy = function () {\n    return band().domain(domain()).range(range$1).round(round).paddingInner(paddingInner).paddingOuter(paddingOuter).align(align);\n  };\n\n  return rescale();\n}\n\nfunction pointish(scale) {\n  const copy = scale.copy;\n  scale.padding = scale.paddingOuter;\n  delete scale.paddingInner;\n\n  scale.copy = function () {\n    return pointish(copy());\n  };\n\n  return scale;\n}\n\nfunction point() {\n  return pointish(band().paddingInner(1));\n}\n\nvar map = Array.prototype.map;\nfunction numbers(_) {\n  return map.call(_, vega_util__WEBPACK_IMPORTED_MODULE_0__[\"toNumber\"]);\n}\n\nconst slice = Array.prototype.slice;\n\nfunction scaleBinOrdinal() {\n  let domain = [],\n      range = [];\n\n  function scale(x) {\n    return x == null || x !== x ? undefined : range[(Object(d3_array__WEBPACK_IMPORTED_MODULE_1__[\"bisect\"])(domain, x) - 1) % range.length];\n  }\n\n  scale.domain = function (_) {\n    if (arguments.length) {\n      domain = numbers(_);\n      return scale;\n    } else {\n      return domain.slice();\n    }\n  };\n\n  scale.range = function (_) {\n    if (arguments.length) {\n      range = slice.call(_);\n      return scale;\n    } else {\n      return range.slice();\n    }\n  };\n\n  scale.tickFormat = function (count, specifier) {\n    return Object(d3_scale__WEBPACK_IMPORTED_MODULE_2__[\"tickFormat\"])(domain[0], Object(vega_util__WEBPACK_IMPORTED_MODULE_0__[\"peek\"])(domain), count == null ? 10 : count, specifier);\n  };\n\n  scale.copy = function () {\n    return scaleBinOrdinal().domain(scale.domain()).range(scale.range());\n  };\n\n  return scale;\n}\n\nconst scales = {};\n/**\n * Augment scales with their type and needed inverse methods.\n */\n\nfunction create(type, constructor, metadata) {\n  const ctr = function scale() {\n    const s = constructor();\n\n    if (!s.invertRange) {\n      s.invertRange = s.invert ? invertRange(s) : s.invertExtent ? invertRangeExtent(s) : undefined;\n    }\n\n    s.type = type;\n    return s;\n  };\n\n  ctr.metadata = Object(vega_util__WEBPACK_IMPORTED_MODULE_0__[\"toSet\"])(Object(vega_util__WEBPACK_IMPORTED_MODULE_0__[\"array\"])(metadata));\n  return ctr;\n}\n\nfunction scale(type, scale, metadata) {\n  if (arguments.length > 1) {\n    scales[type] = create(type, scale, metadata);\n    return this;\n  } else {\n    return isValidScaleType(type) ? scales[type] : undefined;\n  }\n} // identity scale\n\nscale(Identity, d3_scale__WEBPACK_IMPORTED_MODULE_2__[\"scaleIdentity\"]); // continuous scales\n\nscale(Linear, d3_scale__WEBPACK_IMPORTED_MODULE_2__[\"scaleLinear\"], Continuous);\nscale(Log, d3_scale__WEBPACK_IMPORTED_MODULE_2__[\"scaleLog\"], [Continuous, Log]);\nscale(Pow, d3_scale__WEBPACK_IMPORTED_MODULE_2__[\"scalePow\"], Continuous);\nscale(Sqrt, d3_scale__WEBPACK_IMPORTED_MODULE_2__[\"scaleSqrt\"], Continuous);\nscale(Symlog, d3_scale__WEBPACK_IMPORTED_MODULE_2__[\"scaleSymlog\"], Continuous);\nscale(Time, d3_scale__WEBPACK_IMPORTED_MODULE_2__[\"scaleTime\"], [Continuous, Temporal]);\nscale(UTC, d3_scale__WEBPACK_IMPORTED_MODULE_2__[\"scaleUtc\"], [Continuous, Temporal]); // sequential scales\n\nscale(Sequential, d3_scale__WEBPACK_IMPORTED_MODULE_2__[\"scaleSequential\"], [Continuous, Interpolating]); // backwards compat\n\nscale(\"\".concat(Sequential, \"-\").concat(Linear), d3_scale__WEBPACK_IMPORTED_MODULE_2__[\"scaleSequential\"], [Continuous, Interpolating]);\nscale(\"\".concat(Sequential, \"-\").concat(Log), d3_scale__WEBPACK_IMPORTED_MODULE_2__[\"scaleSequentialLog\"], [Continuous, Interpolating, Log]);\nscale(\"\".concat(Sequential, \"-\").concat(Pow), d3_scale__WEBPACK_IMPORTED_MODULE_2__[\"scaleSequentialPow\"], [Continuous, Interpolating]);\nscale(\"\".concat(Sequential, \"-\").concat(Sqrt), d3_scale__WEBPACK_IMPORTED_MODULE_2__[\"scaleSequentialSqrt\"], [Continuous, Interpolating]);\nscale(\"\".concat(Sequential, \"-\").concat(Symlog), d3_scale__WEBPACK_IMPORTED_MODULE_2__[\"scaleSequentialSymlog\"], [Continuous, Interpolating]); // diverging scales\n\nscale(\"\".concat(Diverging, \"-\").concat(Linear), d3_scale__WEBPACK_IMPORTED_MODULE_2__[\"scaleDiverging\"], [Continuous, Interpolating]);\nscale(\"\".concat(Diverging, \"-\").concat(Log), d3_scale__WEBPACK_IMPORTED_MODULE_2__[\"scaleDivergingLog\"], [Continuous, Interpolating, Log]);\nscale(\"\".concat(Diverging, \"-\").concat(Pow), d3_scale__WEBPACK_IMPORTED_MODULE_2__[\"scaleDivergingPow\"], [Continuous, Interpolating]);\nscale(\"\".concat(Diverging, \"-\").concat(Sqrt), d3_scale__WEBPACK_IMPORTED_MODULE_2__[\"scaleDivergingSqrt\"], [Continuous, Interpolating]);\nscale(\"\".concat(Diverging, \"-\").concat(Symlog), d3_scale__WEBPACK_IMPORTED_MODULE_2__[\"scaleDivergingSymlog\"], [Continuous, Interpolating]); // discretizing scales\n\nscale(Quantile, d3_scale__WEBPACK_IMPORTED_MODULE_2__[\"scaleQuantile\"], [Discretizing, Quantile]);\nscale(Quantize, d3_scale__WEBPACK_IMPORTED_MODULE_2__[\"scaleQuantize\"], Discretizing);\nscale(Threshold, d3_scale__WEBPACK_IMPORTED_MODULE_2__[\"scaleThreshold\"], Discretizing); // discrete scales\n\nscale(BinOrdinal, scaleBinOrdinal, [Discrete, Discretizing]);\nscale(Ordinal, d3_scale__WEBPACK_IMPORTED_MODULE_2__[\"scaleOrdinal\"], Discrete);\nscale(Band, band, Discrete);\nscale(Point, point, Discrete);\nfunction isValidScaleType(type) {\n  return Object(vega_util__WEBPACK_IMPORTED_MODULE_0__[\"hasOwnProperty\"])(scales, type);\n}\n\nfunction hasType(key, type) {\n  const s = scales[key];\n  return s && s.metadata[type];\n}\n\nfunction isContinuous(key) {\n  return hasType(key, Continuous);\n}\nfunction isDiscrete(key) {\n  return hasType(key, Discrete);\n}\nfunction isDiscretizing(key) {\n  return hasType(key, Discretizing);\n}\nfunction isLogarithmic(key) {\n  return hasType(key, Log);\n}\nfunction isTemporal(key) {\n  return hasType(key, Temporal);\n}\nfunction isInterpolating(key) {\n  return hasType(key, Interpolating);\n}\nfunction isQuantile(key) {\n  return hasType(key, Quantile);\n}\n\nconst scaleProps = ['clamp', 'base', 'constant', 'exponent'];\nfunction interpolateRange(interpolator, range) {\n  const start = range[0],\n        span = Object(vega_util__WEBPACK_IMPORTED_MODULE_0__[\"peek\"])(range) - start;\n  return function (i) {\n    return interpolator(start + i * span);\n  };\n}\nfunction interpolateColors(colors, type, gamma) {\n  return Object(d3_interpolate__WEBPACK_IMPORTED_MODULE_3__[\"piecewise\"])(interpolate(type || 'rgb', gamma), colors);\n}\nfunction quantizeInterpolator(interpolator, count) {\n  const samples = new Array(count),\n        n = count + 1;\n\n  for (let i = 0; i < count;) samples[i] = interpolator(++i / n);\n\n  return samples;\n}\nfunction scaleCopy(scale) {\n  const t = scale.type,\n        s = scale.copy();\n  s.type = t;\n  return s;\n}\nfunction scaleFraction(scale$1, min, max) {\n  const delta = max - min;\n  let i, t, s;\n\n  if (!delta || !Number.isFinite(delta)) {\n    return Object(vega_util__WEBPACK_IMPORTED_MODULE_0__[\"constant\"])(0.5);\n  } else {\n    i = (t = scale$1.type).indexOf('-');\n    t = i < 0 ? t : t.slice(i + 1);\n    s = scale(t)().domain([min, max]).range([0, 1]);\n    scaleProps.forEach(m => scale$1[m] ? s[m](scale$1[m]()) : 0);\n    return s;\n  }\n}\nfunction interpolate(type, gamma) {\n  const interp = d3_interpolate__WEBPACK_IMPORTED_MODULE_3__[method(type)];\n  return gamma != null && interp && interp.gamma ? interp.gamma(gamma) : interp;\n}\n\nfunction method(type) {\n  return 'interpolate' + type.toLowerCase().split('-').map(s => s[0].toUpperCase() + s.slice(1)).join('');\n}\n\nconst continuous = {\n  blues: 'cfe1f2bed8eca8cee58fc1de74b2d75ba3cf4592c63181bd206fb2125ca40a4a90',\n  greens: 'd3eecdc0e6baabdda594d3917bc77d60ba6c46ab5e329a512089430e7735036429',\n  greys: 'e2e2e2d4d4d4c4c4c4b1b1b19d9d9d8888887575756262624d4d4d3535351e1e1e',\n  oranges: 'fdd8b3fdc998fdb87bfda55efc9244f87f2cf06b18e4580bd14904b93d029f3303',\n  purples: 'e2e1efd4d4e8c4c5e0b4b3d6a3a0cc928ec3827cb97566ae684ea25c3696501f8c',\n  reds: 'fdc9b4fcb49afc9e80fc8767fa7051f6573fec3f2fdc2a25c81b1db21218970b13',\n  blueGreen: 'd5efedc1e8e0a7ddd18bd2be70c6a958ba9144ad77319c5d2089460e7736036429',\n  bluePurple: 'ccddecbad0e4a8c2dd9ab0d4919cc98d85be8b6db28a55a6873c99822287730f71',\n  greenBlue: 'd3eecec5e8c3b1e1bb9bd8bb82cec269c2ca51b2cd3c9fc7288abd1675b10b60a1',\n  orangeRed: 'fddcaffdcf9bfdc18afdad77fb9562f67d53ee6545e24932d32d1ebf130da70403',\n  purpleBlue: 'dbdaebc8cee4b1c3de97b7d87bacd15b9fc93a90c01e7fb70b70ab056199045281',\n  purpleBlueGreen: 'dbd8eac8cee4b0c3de93b7d872acd1549fc83892bb1c88a3097f8702736b016353',\n  purpleRed: 'dcc9e2d3b3d7ce9eccd186c0da6bb2e14da0e23189d91e6fc61159ab07498f023a',\n  redPurple: 'fccfccfcbec0faa9b8f98faff571a5ec539ddb3695c41b8aa908808d0179700174',\n  yellowGreen: 'e4f4acd1eca0b9e2949ed68880c97c62bb6e47aa5e3297502083440e723b036034',\n  yellowOrangeBrown: 'feeaa1fedd84fecc63feb746fca031f68921eb7215db5e0bc54c05ab3d038f3204',\n  yellowOrangeRed: 'fee087fed16ffebd59fea849fd903efc7335f9522bee3423de1b20ca0b22af0225',\n  blueOrange: '134b852f78b35da2cb9dcae1d2e5eff2f0ebfce0bafbbf74e8932fc5690d994a07',\n  brownBlueGreen: '704108a0651ac79548e3c78af3e6c6eef1eac9e9e48ed1c74da79e187a72025147',\n  purpleGreen: '5b1667834792a67fb6c9aed3e6d6e8eff0efd9efd5aedda971bb75368e490e5e29',\n  purpleOrange: '4114696647968f83b7b9b4d6dadbebf3eeeafce0bafbbf74e8932fc5690d994a07',\n  redBlue: '8c0d25bf363adf745ef4ae91fbdbc9f2efeed2e5ef9dcae15da2cb2f78b3134b85',\n  redGrey: '8c0d25bf363adf745ef4ae91fcdccbfaf4f1e2e2e2c0c0c0969696646464343434',\n  yellowGreenBlue: 'eff9bddbf1b4bde5b594d5b969c5be45b4c22c9ec02182b82163aa23479c1c3185',\n  redYellowBlue: 'a50026d4322cf16e43fcac64fedd90faf8c1dcf1ecabd6e875abd04a74b4313695',\n  redYellowGreen: 'a50026d4322cf16e43fcac63fedd8df9f7aed7ee8ea4d86e64bc6122964f006837',\n  pinkYellowGreen: '8e0152c0267edd72adf0b3d6faddedf5f3efe1f2cab6de8780bb474f9125276419',\n  spectral: '9e0142d13c4bf0704afcac63fedd8dfbf8b0e0f3a1a9dda269bda94288b55e4fa2',\n  viridis: '440154470e61481a6c482575472f7d443a834144873d4e8a39568c35608d31688e2d708e2a788e27818e23888e21918d1f988b1fa08822a8842ab07f35b77943bf7154c56866cc5d7ad1518fd744a5db36bcdf27d2e21be9e51afde725',\n  magma: '0000040404130b0924150e3720114b2c11603b0f704a107957157e651a80721f817f24828c29819a2e80a8327db6377ac43c75d1426fde4968e95462f1605df76f5cfa7f5efc8f65fe9f6dfeaf78febf84fece91fddea0fcedaffcfdbf',\n  inferno: '0000040403130c0826170c3b240c4f330a5f420a68500d6c5d126e6b176e781c6d86216b932667a12b62ae305cbb3755c73e4cd24644dd513ae65c30ed6925f3771af8850ffb9506fca50afcb519fac62df6d645f2e661f3f484fcffa4',\n  plasma: '0d088723069033059742039d5002a25d01a66a00a87801a88405a7900da49c179ea72198b12a90ba3488c33d80cb4779d35171da5a69e16462e76e5bed7953f2834cf68f44fa9a3dfca636fdb32ffec029fcce25f9dc24f5ea27f0f921',\n  cividis: '00205100235800265d002961012b65042e670831690d346b11366c16396d1c3c6e213f6e26426e2c456e31476e374a6e3c4d6e42506e47536d4c566d51586e555b6e5a5e6e5e616e62646f66676f6a6a706e6d717270717573727976737c79747f7c75827f758682768985778c8877908b78938e789691789a94789e9778a19b78a59e77a9a177aea575b2a874b6ab73bbaf71c0b26fc5b66dc9b96acebd68d3c065d8c462ddc85fe2cb5ce7cf58ebd355f0d652f3da4ff7de4cfae249fce647',\n  rainbow: '6e40aa883eb1a43db3bf3cafd83fa4ee4395fe4b83ff576eff6659ff7847ff8c38f3a130e2b72fcfcc36bee044aff05b8ff4576ff65b52f6673af27828ea8d1ddfa319d0b81cbecb23abd82f96e03d82e14c6edb5a5dd0664dbf6e40aa',\n  sinebow: 'ff4040fc582af47218e78d0bd5a703bfbf00a7d5038de70b72f41858fc2a40ff402afc5818f4720be78d03d5a700bfbf03a7d50b8de71872f42a58fc4040ff582afc7218f48d0be7a703d5bf00bfd503a7e70b8df41872fc2a58ff4040',\n  turbo: '23171b32204a3e2a71453493493eae4b49c54a53d7485ee44569ee4074f53c7ff8378af93295f72e9ff42ba9ef28b3e926bce125c5d925cdcf27d5c629dcbc2de3b232e9a738ee9d3ff39347f68950f9805afc7765fd6e70fe667cfd5e88fc5795fb51a1f84badf545b9f140c5ec3cd0e637dae034e4d931ecd12ef4c92bfac029ffb626ffad24ffa223ff9821ff8d1fff821dff771cfd6c1af76118f05616e84b14df4111d5380fcb2f0dc0260ab61f07ac1805a313029b0f00950c00910b00',\n  browns: 'eedbbdecca96e9b97ae4a865dc9856d18954c7784cc0673fb85536ad44339f3632',\n  tealBlues: 'bce4d89dd3d181c3cb65b3c245a2b9368fae347da0306a932c5985',\n  teals: 'bbdfdfa2d4d58ac9c975bcbb61b0af4da5a43799982b8b8c1e7f7f127273006667',\n  warmGreys: 'dcd4d0cec5c1c0b8b4b3aaa7a59c9998908c8b827f7e7673726866665c5a59504e',\n  goldGreen: 'f4d166d5ca60b6c35c98bb597cb25760a6564b9c533f8f4f33834a257740146c36',\n  goldOrange: 'f4d166f8be5cf8aa4cf5983bf3852aef701be2621fd65322c54923b142239e3a26',\n  goldRed: 'f4d166f6be59f9aa51fc964ef6834bee734ae56249db5247cf4244c43141b71d3e',\n  lightGreyRed: 'efe9e6e1dad7d5cbc8c8bdb9bbaea9cd967ddc7b43e15f19df4011dc000b',\n  lightGreyTeal: 'e4eaead6dcddc8ced2b7c2c7a6b4bc64b0bf22a6c32295c11f85be1876bc',\n  lightMulti: 'e0f1f2c4e9d0b0de9fd0e181f6e072f6c053f3993ef77440ef4a3c',\n  lightOrange: 'f2e7daf7d5baf9c499fab184fa9c73f68967ef7860e8645bde515bd43d5b',\n  lightTealBlue: 'e3e9e0c0dccf9aceca7abfc859afc0389fb9328dad2f7ca0276b95255988',\n  darkBlue: '3232322d46681a5c930074af008cbf05a7ce25c0dd38daed50f3faffffff',\n  darkGold: '3c3c3c584b37725e348c7631ae8b2bcfa424ecc31ef9de30fff184ffffff',\n  darkGreen: '3a3a3a215748006f4d048942489e4276b340a6c63dd2d836ffeb2cffffaa',\n  darkMulti: '3737371f5287197d8c29a86995ce3fffe800ffffff',\n  darkRed: '3434347036339e3c38cc4037e75d1eec8620eeab29f0ce32ffeb2c'\n};\nconst discrete = {\n  category10: '1f77b4ff7f0e2ca02cd627289467bd8c564be377c27f7f7fbcbd2217becf',\n  category20: '1f77b4aec7e8ff7f0effbb782ca02c98df8ad62728ff98969467bdc5b0d58c564bc49c94e377c2f7b6d27f7f7fc7c7c7bcbd22dbdb8d17becf9edae5',\n  category20b: '393b795254a36b6ecf9c9ede6379398ca252b5cf6bcedb9c8c6d31bd9e39e7ba52e7cb94843c39ad494ad6616be7969c7b4173a55194ce6dbdde9ed6',\n  category20c: '3182bd6baed69ecae1c6dbefe6550dfd8d3cfdae6bfdd0a231a35474c476a1d99bc7e9c0756bb19e9ac8bcbddcdadaeb636363969696bdbdbdd9d9d9',\n  tableau10: '4c78a8f58518e4575672b7b254a24beeca3bb279a2ff9da69d755dbab0ac',\n  tableau20: '4c78a89ecae9f58518ffbf7954a24b88d27ab79a20f2cf5b43989483bcb6e45756ff9d9879706ebab0acd67195fcbfd2b279a2d6a5c99e765fd8b5a5',\n  accent: '7fc97fbeaed4fdc086ffff99386cb0f0027fbf5b17666666',\n  dark2: '1b9e77d95f027570b3e7298a66a61ee6ab02a6761d666666',\n  paired: 'a6cee31f78b4b2df8a33a02cfb9a99e31a1cfdbf6fff7f00cab2d66a3d9affff99b15928',\n  pastel1: 'fbb4aeb3cde3ccebc5decbe4fed9a6ffffcce5d8bdfddaecf2f2f2',\n  pastel2: 'b3e2cdfdcdaccbd5e8f4cae4e6f5c9fff2aef1e2cccccccc',\n  set1: 'e41a1c377eb84daf4a984ea3ff7f00ffff33a65628f781bf999999',\n  set2: '66c2a5fc8d628da0cbe78ac3a6d854ffd92fe5c494b3b3b3',\n  set3: '8dd3c7ffffb3bebadafb807280b1d3fdb462b3de69fccde5d9d9d9bc80bdccebc5ffed6f'\n};\n\nfunction colors(palette) {\n  const n = palette.length / 6 | 0,\n        c = new Array(n);\n\n  for (let i = 0; i < n;) {\n    c[i] = '#' + palette.slice(i * 6, ++i * 6);\n  }\n\n  return c;\n}\n\nfunction apply(_, f) {\n  for (const k in _) scheme(k, f(_[k]));\n}\n\nconst schemes = {};\napply(discrete, colors);\napply(continuous, _ => interpolateColors(colors(_)));\nfunction scheme(name, scheme) {\n  name = name && name.toLowerCase();\n\n  if (arguments.length > 1) {\n    schemes[name] = scheme;\n    return this;\n  } else {\n    return schemes[name];\n  }\n}\n\nconst SymbolLegend = 'symbol';\nconst DiscreteLegend = 'discrete';\nconst GradientLegend = 'gradient';\n\nconst defaultFormatter = value => Object(vega_util__WEBPACK_IMPORTED_MODULE_0__[\"isArray\"])(value) ? value.map(v => String(v)) : String(value);\n\nconst ascending = (a, b) => a[1] - b[1];\n\nconst descending = (a, b) => b[1] - a[1];\n/**\n * Determine the tick count or interval function.\n * @param {Scale} scale - The scale for which to generate tick values.\n * @param {*} count - The desired tick count or interval specifier.\n * @param {number} minStep - The desired minimum step between tick values.\n * @return {*} - The tick count or interval function.\n */\n\n\nfunction tickCount(scale, count, minStep) {\n  let step;\n\n  if (Object(vega_util__WEBPACK_IMPORTED_MODULE_0__[\"isNumber\"])(count)) {\n    if (scale.bins) {\n      count = Math.max(count, scale.bins.length);\n    }\n\n    if (minStep != null) {\n      count = Math.min(count, Math.floor(Object(vega_util__WEBPACK_IMPORTED_MODULE_0__[\"span\"])(scale.domain()) / minStep || 1));\n    }\n  }\n\n  if (Object(vega_util__WEBPACK_IMPORTED_MODULE_0__[\"isObject\"])(count)) {\n    step = count.step;\n    count = count.interval;\n  }\n\n  if (Object(vega_util__WEBPACK_IMPORTED_MODULE_0__[\"isString\"])(count)) {\n    count = scale.type === Time ? Object(vega_time__WEBPACK_IMPORTED_MODULE_4__[\"timeInterval\"])(count) : scale.type == UTC ? Object(vega_time__WEBPACK_IMPORTED_MODULE_4__[\"utcInterval\"])(count) : Object(vega_util__WEBPACK_IMPORTED_MODULE_0__[\"error\"])('Only time and utc scales accept interval strings.');\n    if (step) count = count.every(step);\n  }\n\n  return count;\n}\n/**\n * Filter a set of candidate tick values, ensuring that only tick values\n * that lie within the scale range are included.\n * @param {Scale} scale - The scale for which to generate tick values.\n * @param {Array<*>} ticks - The candidate tick values.\n * @param {*} count - The tick count or interval function.\n * @return {Array<*>} - The filtered tick values.\n */\n\nfunction validTicks(scale, ticks, count) {\n  let range = scale.range(),\n      lo = range[0],\n      hi = Object(vega_util__WEBPACK_IMPORTED_MODULE_0__[\"peek\"])(range),\n      cmp = ascending;\n\n  if (lo > hi) {\n    range = hi;\n    hi = lo;\n    lo = range;\n    cmp = descending;\n  }\n\n  lo = Math.floor(lo);\n  hi = Math.ceil(hi); // filter ticks to valid values within the range\n  // additionally sort ticks in range order (#2579)\n\n  ticks = ticks.map(v => [v, scale(v)]).filter(_ => lo <= _[1] && _[1] <= hi).sort(cmp).map(_ => _[0]);\n\n  if (count > 0 && ticks.length > 1) {\n    const endpoints = [ticks[0], Object(vega_util__WEBPACK_IMPORTED_MODULE_0__[\"peek\"])(ticks)];\n\n    while (ticks.length > count && ticks.length >= 3) {\n      ticks = ticks.filter((_, i) => !(i % 2));\n    }\n\n    if (ticks.length < 3) {\n      ticks = endpoints;\n    }\n  }\n\n  return ticks;\n}\n/**\n * Generate tick values for the given scale and approximate tick count or\n * interval value. If the scale has a 'ticks' method, it will be used to\n * generate the ticks, with the count argument passed as a parameter. If the\n * scale lacks a 'ticks' method, the full scale domain will be returned.\n * @param {Scale} scale - The scale for which to generate tick values.\n * @param {*} [count] - The approximate number of desired ticks.\n * @return {Array<*>} - The generated tick values.\n */\n\nfunction tickValues(scale, count) {\n  return scale.bins ? validTicks(scale, scale.bins) : scale.ticks ? scale.ticks(count) : scale.domain();\n}\n/**\n * Generate a label format function for a scale. If the scale has a\n * 'tickFormat' method, it will be used to generate the formatter, with the\n * count and specifier arguments passed as parameters. If the scale lacks a\n * 'tickFormat' method, the returned formatter performs simple string coercion.\n * If the input scale is a logarithmic scale and the format specifier does not\n * indicate a desired decimal precision, a special variable precision formatter\n * that automatically trims trailing zeroes will be generated.\n * @param {Scale} scale - The scale for which to generate the label formatter.\n * @param {*} [count] - The approximate number of desired ticks.\n * @param {string} [specifier] - The format specifier. Must be a legal d3\n *   specifier string (see https://github.com/d3/d3-format#formatSpecifier) or\n *   time multi-format specifier object.\n * @return {function(*):string} - The generated label formatter.\n */\n\nfunction tickFormat(locale, scale, count, specifier, formatType, noSkip) {\n  const type = scale.type;\n  let format = defaultFormatter;\n\n  if (type === Time || formatType === Time) {\n    format = locale.timeFormat(specifier);\n  } else if (type === UTC || formatType === UTC) {\n    format = locale.utcFormat(specifier);\n  } else if (isLogarithmic(type)) {\n    const varfmt = locale.formatFloat(specifier);\n\n    if (noSkip || scale.bins) {\n      format = varfmt;\n    } else {\n      const test = tickLog(scale, count, false);\n\n      format = _ => test(_) ? varfmt(_) : '';\n    }\n  } else if (scale.tickFormat) {\n    // if d3 scale has tickFormat, it must be continuous\n    const d = scale.domain();\n    format = locale.formatSpan(d[0], d[d.length - 1], count, specifier);\n  } else if (specifier) {\n    format = locale.format(specifier);\n  }\n\n  return format;\n}\nfunction tickLog(scale, count, values) {\n  const ticks = tickValues(scale, count),\n        base = scale.base(),\n        logb = Math.log(base),\n        k = Math.max(1, base * count / ticks.length); // apply d3-scale's log format filter criteria\n\n  const test = d => {\n    let i = d / Math.pow(base, Math.round(Math.log(d) / logb));\n    if (i * base < base - 0.5) i *= base;\n    return i <= k;\n  };\n\n  return values ? ticks.filter(test) : test;\n}\n\nconst symbols = {\n  [Quantile]: 'quantiles',\n  [Quantize]: 'thresholds',\n  [Threshold]: 'domain'\n};\nconst formats = {\n  [Quantile]: 'quantiles',\n  [Quantize]: 'domain'\n};\nfunction labelValues(scale, count) {\n  return scale.bins ? binValues(scale.bins) : scale.type === Log ? tickLog(scale, count, true) : symbols[scale.type] ? thresholdValues(scale[symbols[scale.type]]()) : tickValues(scale, count);\n}\nfunction thresholdFormat(locale, scale, specifier) {\n  const _ = scale[formats[scale.type]](),\n        n = _.length;\n\n  let d = n > 1 ? _[1] - _[0] : _[0],\n      i;\n\n  for (i = 1; i < n; ++i) {\n    d = Math.min(d, _[i] - _[i - 1]);\n  } // tickCount = 3 ticks times 10 for increased resolution\n\n\n  return locale.formatSpan(0, d, 3 * 10, specifier);\n}\n\nfunction thresholdValues(thresholds) {\n  const values = [-Infinity].concat(thresholds);\n  values.max = +Infinity;\n  return values;\n}\n\nfunction binValues(bins) {\n  const values = bins.slice(0, -1);\n  values.max = Object(vega_util__WEBPACK_IMPORTED_MODULE_0__[\"peek\"])(bins);\n  return values;\n}\n\nconst isDiscreteRange = scale => symbols[scale.type] || scale.bins;\n\nfunction labelFormat(locale, scale, count, type, specifier, formatType, noSkip) {\n  const format = formats[scale.type] && formatType !== Time && formatType !== UTC ? thresholdFormat(locale, scale, specifier) : tickFormat(locale, scale, count, specifier, formatType, noSkip);\n  return type === SymbolLegend && isDiscreteRange(scale) ? formatRange(format) : type === DiscreteLegend ? formatDiscrete(format) : formatPoint(format);\n}\n\nconst formatRange = format => (value, index, array) => {\n  const limit = get(array[index + 1], get(array.max, +Infinity)),\n        lo = formatValue(value, format),\n        hi = formatValue(limit, format);\n  return lo && hi ? lo + ' \\u2013 ' + hi : hi ? '< ' + hi : '\\u2265 ' + lo;\n};\n\nconst get = (value, dflt) => value != null ? value : dflt;\n\nconst formatDiscrete = format => (value, index) => index ? format(value) : null;\n\nconst formatPoint = format => value => format(value);\n\nconst formatValue = (value, format) => Number.isFinite(value) ? format(value) : null;\n\nfunction labelFraction(scale) {\n  const domain = scale.domain(),\n        count = domain.length - 1;\n  let lo = +domain[0],\n      hi = +Object(vega_util__WEBPACK_IMPORTED_MODULE_0__[\"peek\"])(domain),\n      span = hi - lo;\n\n  if (scale.type === Threshold) {\n    const adjust = count ? span / count : 0.1;\n    lo -= adjust;\n    hi += adjust;\n    span = hi - lo;\n  }\n\n  return value => (value - lo) / span;\n}\n\nfunction format(locale, scale, specifier, formatType) {\n  const type = formatType || scale.type; // replace abbreviated time specifiers to improve screen reader experience\n\n  if (Object(vega_util__WEBPACK_IMPORTED_MODULE_0__[\"isString\"])(specifier) && isTemporal(type)) {\n    specifier = specifier.replace(/%a/g, '%A').replace(/%b/g, '%B');\n  }\n\n  return !specifier && type === Time ? locale.timeFormat('%A, %d %B %Y, %X') : !specifier && type === UTC ? locale.utcFormat('%A, %d %B %Y, %X UTC') : labelFormat(locale, scale, 5, null, specifier, formatType, true);\n}\n\nfunction domainCaption(locale, scale, opt) {\n  opt = opt || {};\n  const max = Math.max(3, opt.maxlen || 7),\n        fmt = format(locale, scale, opt.format, opt.formatType); // if scale breaks domain into bins, describe boundaries\n\n  if (isDiscretizing(scale.type)) {\n    const v = labelValues(scale).slice(1).map(fmt),\n          n = v.length;\n    return \"\".concat(n, \" boundar\").concat(n === 1 ? 'y' : 'ies', \": \").concat(v.join(', '));\n  } // if scale domain is discrete, list values\n  else if (isDiscrete(scale.type)) {\n      const d = scale.domain(),\n            n = d.length,\n            v = n > max ? d.slice(0, max - 2).map(fmt).join(', ') + ', ending with ' + d.slice(-1).map(fmt) : d.map(fmt).join(', ');\n      return \"\".concat(n, \" value\").concat(n === 1 ? '' : 's', \": \").concat(v);\n    } // if scale domain is continuous, describe value range\n    else {\n        const d = scale.domain();\n        return \"values from \".concat(fmt(d[0]), \" to \").concat(fmt(Object(vega_util__WEBPACK_IMPORTED_MODULE_0__[\"peek\"])(d)));\n      }\n}\n\n\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,[encoded data, 45984 characters]\n//# sourceURL=webpack-internal:///./node_modules/vega-label/node_modules/vega-scale/build/vega-scale.module.js\n");

/***/ }),

/***/ "./node_modules/vega-label/node_modules/vega-scenegraph/build/vega-scenegraph.module.js":
/*!**********************************************************************************************!*\
  !*** ./node_modules/vega-label/node_modules/vega-scenegraph/build/vega-scenegraph.module.js ***!
  \**********************************************************************************************/
/*! exports provided: Bounds, CanvasHandler, CanvasRenderer, Gradient, GroupItem, Handler, Item, Marks, RenderType, Renderer, ResourceLoader, SVGHandler, SVGRenderer, SVGStringRenderer, Scenegraph, boundClip, boundContext, boundItem, boundMark, boundStroke, domChild, domClear, domCreate, domFind, font, fontFamily, fontSize, intersect, intersectBoxLine, intersectPath, intersectPoint, intersectRule, lineHeight, markup, multiLineOffset, pathCurves, pathEqual, pathParse, pathRectangle, pathRender, pathSymbols, pathTrail, point, renderModule, resetSVGClipId, resetSVGDefIds, sceneEqual, sceneFromJSON, scenePickVisit, sceneToJSON, sceneVisit, sceneZOrder, serializeXML, textMetrics */
/***/ (function(module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"Bounds\", function() { return Bounds; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"CanvasHandler\", function() { return CanvasHandler; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"CanvasRenderer\", function() { return CanvasRenderer; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"Gradient\", function() { return Gradient; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"GroupItem\", function() { return GroupItem; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"Handler\", function() { return Handler; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"Item\", function() { return Item; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"Marks\", function() { return Marks; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"RenderType\", function() { return RenderType; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"Renderer\", function() { return Renderer; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"ResourceLoader\", function() { return ResourceLoader; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"SVGHandler\", function() { return SVGHandler; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"SVGRenderer\", function() { return SVGRenderer; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"SVGStringRenderer\", function() { return SVGStringRenderer; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"Scenegraph\", function() { return Scenegraph; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"boundClip\", function() { return boundClip; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"boundContext\", function() { return boundContext; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"boundItem\", function() { return boundItem; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"boundMark\", function() { return boundMark; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"boundStroke\", function() { return boundStroke; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"domChild\", function() { return domChild; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"domClear\", function() { return domClear; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"domCreate\", function() { return domCreate; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"domFind\", function() { return domFind; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"font\", function() { return font; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"fontFamily\", function() { return fontFamily; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"fontSize\", function() { return fontSize; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"intersect\", function() { return intersect; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"intersectBoxLine\", function() { return intersectBoxLine; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"intersectPath\", function() { return intersectPath; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"intersectPoint\", function() { return intersectPoint; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"intersectRule\", function() { return intersectRule; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"lineHeight\", function() { return lineHeight; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"markup\", function() { return markup; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"multiLineOffset\", function() { return multiLineOffset; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"pathCurves\", function() { return curves; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"pathEqual\", function() { return pathEqual; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"pathParse\", function() { return pathParse; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"pathRectangle\", function() { return vg_rect; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"pathRender\", function() { return pathRender; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"pathSymbols\", function() { return symbols; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"pathTrail\", function() { return vg_trail; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"point\", function() { return point; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"renderModule\", function() { return renderModule; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"resetSVGClipId\", function() { return resetSVGClipId; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"resetSVGDefIds\", function() { return resetSVGDefIds; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"sceneEqual\", function() { return sceneEqual; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"sceneFromJSON\", function() { return sceneFromJSON; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"scenePickVisit\", function() { return pickVisit; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"sceneToJSON\", function() { return sceneToJSON; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"sceneVisit\", function() { return visit; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"sceneZOrder\", function() { return zorder; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"serializeXML\", function() { return serializeXML; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"textMetrics\", function() { return textMetrics; });\n/* harmony import */ var vega_util__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! vega-util */ \"./node_modules/vega-label/node_modules/vega-util/build/vega-util.module.js\");\n/* harmony import */ var d3_shape__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! d3-shape */ \"./node_modules/vega-label/node_modules/d3-shape/src/index.js\");\n/* harmony import */ var d3_path__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! d3-path */ \"./node_modules/vega-label/node_modules/d3-path/src/index.js\");\n/* harmony import */ var vega_canvas__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! vega-canvas */ \"./node_modules/vega-canvas/index.browser.js\");\n/* harmony import */ var vega_loader__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! vega-loader */ \"./node_modules/vega-label/node_modules/vega-loader/index.browser.js\");\n/* harmony import */ var vega_scale__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! vega-scale */ \"./node_modules/vega-label/node_modules/vega-scale/build/vega-scale.module.js\");\n\n\n\n\n\n\n\nlet gradient_id = 0;\nfunction resetSVGGradientId() {\n  gradient_id = 0;\n}\nconst patternPrefix = 'p_';\nfunction isGradient(value) {\n  return value && value.gradient;\n}\nfunction gradientRef(g, defs, base) {\n  const type = g.gradient;\n  let id = g.id,\n      prefix = type === 'radial' ? patternPrefix : ''; // check id, assign default values as needed\n\n  if (!id) {\n    id = g.id = 'gradient_' + gradient_id++;\n\n    if (type === 'radial') {\n      g.x1 = get(g.x1, 0.5);\n      g.y1 = get(g.y1, 0.5);\n      g.r1 = get(g.r1, 0);\n      g.x2 = get(g.x2, 0.5);\n      g.y2 = get(g.y2, 0.5);\n      g.r2 = get(g.r2, 0.5);\n      prefix = patternPrefix;\n    } else {\n      g.x1 = get(g.x1, 0);\n      g.y1 = get(g.y1, 0);\n      g.x2 = get(g.x2, 1);\n      g.y2 = get(g.y2, 0);\n    }\n  } // register definition\n\n\n  defs[id] = g; // return url reference\n\n  return 'url(' + (base || '') + '#' + prefix + id + ')';\n}\n\nfunction get(val, def) {\n  return val != null ? val : def;\n}\n\nfunction Gradient (p0, p1) {\n  var stops = [],\n      gradient;\n  return gradient = {\n    gradient: 'linear',\n    x1: p0 ? p0[0] : 0,\n    y1: p0 ? p0[1] : 0,\n    x2: p1 ? p1[0] : 1,\n    y2: p1 ? p1[1] : 0,\n    stops: stops,\n    stop: function (offset, color) {\n      stops.push({\n        offset: offset,\n        color: color\n      });\n      return gradient;\n    }\n  };\n}\n\nconst lookup = {\n  'basis': {\n    curve: d3_shape__WEBPACK_IMPORTED_MODULE_1__[\"curveBasis\"]\n  },\n  'basis-closed': {\n    curve: d3_shape__WEBPACK_IMPORTED_MODULE_1__[\"curveBasisClosed\"]\n  },\n  'basis-open': {\n    curve: d3_shape__WEBPACK_IMPORTED_MODULE_1__[\"curveBasisOpen\"]\n  },\n  'bundle': {\n    curve: d3_shape__WEBPACK_IMPORTED_MODULE_1__[\"curveBundle\"],\n    tension: 'beta',\n    value: 0.85\n  },\n  'cardinal': {\n    curve: d3_shape__WEBPACK_IMPORTED_MODULE_1__[\"curveCardinal\"],\n    tension: 'tension',\n    value: 0\n  },\n  'cardinal-open': {\n    curve: d3_shape__WEBPACK_IMPORTED_MODULE_1__[\"curveCardinalOpen\"],\n    tension: 'tension',\n    value: 0\n  },\n  'cardinal-closed': {\n    curve: d3_shape__WEBPACK_IMPORTED_MODULE_1__[\"curveCardinalClosed\"],\n    tension: 'tension',\n    value: 0\n  },\n  'catmull-rom': {\n    curve: d3_shape__WEBPACK_IMPORTED_MODULE_1__[\"curveCatmullRom\"],\n    tension: 'alpha',\n    value: 0.5\n  },\n  'catmull-rom-closed': {\n    curve: d3_shape__WEBPACK_IMPORTED_MODULE_1__[\"curveCatmullRomClosed\"],\n    tension: 'alpha',\n    value: 0.5\n  },\n  'catmull-rom-open': {\n    curve: d3_shape__WEBPACK_IMPORTED_MODULE_1__[\"curveCatmullRomOpen\"],\n    tension: 'alpha',\n    value: 0.5\n  },\n  'linear': {\n    curve: d3_shape__WEBPACK_IMPORTED_MODULE_1__[\"curveLinear\"]\n  },\n  'linear-closed': {\n    curve: d3_shape__WEBPACK_IMPORTED_MODULE_1__[\"curveLinearClosed\"]\n  },\n  'monotone': {\n    horizontal: d3_shape__WEBPACK_IMPORTED_MODULE_1__[\"curveMonotoneY\"],\n    vertical: d3_shape__WEBPACK_IMPORTED_MODULE_1__[\"curveMonotoneX\"]\n  },\n  'natural': {\n    curve: d3_shape__WEBPACK_IMPORTED_MODULE_1__[\"curveNatural\"]\n  },\n  'step': {\n    curve: d3_shape__WEBPACK_IMPORTED_MODULE_1__[\"curveStep\"]\n  },\n  'step-after': {\n    curve: d3_shape__WEBPACK_IMPORTED_MODULE_1__[\"curveStepAfter\"]\n  },\n  'step-before': {\n    curve: d3_shape__WEBPACK_IMPORTED_MODULE_1__[\"curveStepBefore\"]\n  }\n};\nfunction curves(type, orientation, tension) {\n  var entry = Object(vega_util__WEBPACK_IMPORTED_MODULE_0__[\"hasOwnProperty\"])(lookup, type) && lookup[type],\n      curve = null;\n\n  if (entry) {\n    curve = entry.curve || entry[orientation || 'vertical'];\n\n    if (entry.tension && tension != null) {\n      curve = curve[entry.tension](tension);\n    }\n  }\n\n  return curve;\n}\n\n// Path parsing and rendering code adapted from fabric.js -- Thanks!\nconst cmdlen = {\n  m: 2,\n  l: 2,\n  h: 1,\n  v: 1,\n  c: 6,\n  s: 4,\n  q: 4,\n  t: 2,\n  a: 7\n},\n      regexp = [/([MLHVCSQTAZmlhvcsqtaz])/g, /###/, /(\\.\\d+)(\\.\\d)/g, /(\\d)([-+])/g, /\\s|,|###/];\nfunction pathParse (pathstr) {\n  const result = [];\n  let curr, chunks, parsed, param, cmd, len, i, j, n, m; // First, break path into command sequence\n\n  const path = pathstr.slice().replace(regexp[0], '###$1').split(regexp[1]).slice(1); // Next, parse each command in turn\n\n  for (i = 0, n = path.length; i < n; ++i) {\n    curr = path[i];\n    chunks = curr.slice(1).trim().replace(regexp[2], '$1###$2').replace(regexp[3], '$1###$2').split(regexp[4]);\n    cmd = curr.charAt(0);\n    parsed = [cmd];\n\n    for (j = 0, m = chunks.length; j < m; ++j) {\n      if ((param = +chunks[j]) === param) {\n        // not NaN\n        parsed.push(param);\n      }\n    }\n\n    len = cmdlen[cmd.toLowerCase()];\n\n    if (parsed.length - 1 > len) {\n      const m = parsed.length;\n      j = 1;\n      result.push([cmd].concat(parsed.slice(j, j += len))); // handle implicit lineTo (#2803)\n\n      cmd = cmd === 'M' ? 'L' : cmd === 'm' ? 'l' : cmd;\n\n      for (; j < m; j += len) {\n        result.push([cmd].concat(parsed.slice(j, j + len)));\n      }\n    } else {\n      result.push(parsed);\n    }\n  }\n\n  return result;\n}\n\nconst DegToRad = Math.PI / 180;\nconst Epsilon = 1e-14;\nconst HalfPi = Math.PI / 2;\nconst Tau = Math.PI * 2;\nconst HalfSqrt3 = Math.sqrt(3) / 2;\n\nvar segmentCache = {};\nvar bezierCache = {};\nvar join = [].join; // Copied from Inkscape svgtopdf, thanks!\n\nfunction segments(x, y, rx, ry, large, sweep, rotateX, ox, oy) {\n  const key = join.call(arguments);\n\n  if (segmentCache[key]) {\n    return segmentCache[key];\n  }\n\n  const th = rotateX * DegToRad;\n  const sin_th = Math.sin(th);\n  const cos_th = Math.cos(th);\n  rx = Math.abs(rx);\n  ry = Math.abs(ry);\n  const px = cos_th * (ox - x) * 0.5 + sin_th * (oy - y) * 0.5;\n  const py = cos_th * (oy - y) * 0.5 - sin_th * (ox - x) * 0.5;\n  let pl = px * px / (rx * rx) + py * py / (ry * ry);\n\n  if (pl > 1) {\n    pl = Math.sqrt(pl);\n    rx *= pl;\n    ry *= pl;\n  }\n\n  const a00 = cos_th / rx;\n  const a01 = sin_th / rx;\n  const a10 = -sin_th / ry;\n  const a11 = cos_th / ry;\n  const x0 = a00 * ox + a01 * oy;\n  const y0 = a10 * ox + a11 * oy;\n  const x1 = a00 * x + a01 * y;\n  const y1 = a10 * x + a11 * y;\n  const d = (x1 - x0) * (x1 - x0) + (y1 - y0) * (y1 - y0);\n  let sfactor_sq = 1 / d - 0.25;\n  if (sfactor_sq < 0) sfactor_sq = 0;\n  let sfactor = Math.sqrt(sfactor_sq);\n  if (sweep == large) sfactor = -sfactor;\n  const xc = 0.5 * (x0 + x1) - sfactor * (y1 - y0);\n  const yc = 0.5 * (y0 + y1) + sfactor * (x1 - x0);\n  const th0 = Math.atan2(y0 - yc, x0 - xc);\n  const th1 = Math.atan2(y1 - yc, x1 - xc);\n  let th_arc = th1 - th0;\n\n  if (th_arc < 0 && sweep === 1) {\n    th_arc += Tau;\n  } else if (th_arc > 0 && sweep === 0) {\n    th_arc -= Tau;\n  }\n\n  const segs = Math.ceil(Math.abs(th_arc / (HalfPi + 0.001)));\n  const result = [];\n\n  for (let i = 0; i < segs; ++i) {\n    const th2 = th0 + i * th_arc / segs;\n    const th3 = th0 + (i + 1) * th_arc / segs;\n    result[i] = [xc, yc, th2, th3, rx, ry, sin_th, cos_th];\n  }\n\n  return segmentCache[key] = result;\n}\nfunction bezier(params) {\n  const key = join.call(params);\n\n  if (bezierCache[key]) {\n    return bezierCache[key];\n  }\n\n  var cx = params[0],\n      cy = params[1],\n      th0 = params[2],\n      th1 = params[3],\n      rx = params[4],\n      ry = params[5],\n      sin_th = params[6],\n      cos_th = params[7];\n  const a00 = cos_th * rx;\n  const a01 = -sin_th * ry;\n  const a10 = sin_th * rx;\n  const a11 = cos_th * ry;\n  const cos_th0 = Math.cos(th0);\n  const sin_th0 = Math.sin(th0);\n  const cos_th1 = Math.cos(th1);\n  const sin_th1 = Math.sin(th1);\n  const th_half = 0.5 * (th1 - th0);\n  const sin_th_h2 = Math.sin(th_half * 0.5);\n  const t = 8 / 3 * sin_th_h2 * sin_th_h2 / Math.sin(th_half);\n  const x1 = cx + cos_th0 - t * sin_th0;\n  const y1 = cy + sin_th0 + t * cos_th0;\n  const x3 = cx + cos_th1;\n  const y3 = cy + sin_th1;\n  const x2 = x3 + t * sin_th1;\n  const y2 = y3 - t * cos_th1;\n  return bezierCache[key] = [a00 * x1 + a01 * y1, a10 * x1 + a11 * y1, a00 * x2 + a01 * y2, a10 * x2 + a11 * y2, a00 * x3 + a01 * y3, a10 * x3 + a11 * y3];\n}\n\nconst temp = ['l', 0, 0, 0, 0, 0, 0, 0];\n\nfunction scale$1(current, sX, sY) {\n  const c = temp[0] = current[0];\n\n  if (c === 'a' || c === 'A') {\n    temp[1] = sX * current[1];\n    temp[2] = sY * current[2];\n    temp[3] = current[3];\n    temp[4] = current[4];\n    temp[5] = current[5];\n    temp[6] = sX * current[6];\n    temp[7] = sY * current[7];\n  } else if (c === 'h' || c === 'H') {\n    temp[1] = sX * current[1];\n  } else if (c === 'v' || c === 'V') {\n    temp[1] = sY * current[1];\n  } else {\n    for (var i = 1, n = current.length; i < n; ++i) {\n      temp[i] = (i % 2 == 1 ? sX : sY) * current[i];\n    }\n  }\n\n  return temp;\n}\n\nfunction pathRender (context, path, l, t, sX, sY) {\n  var current,\n      // current instruction\n  previous = null,\n      x = 0,\n      // current x\n  y = 0,\n      // current y\n  controlX = 0,\n      // current control point x\n  controlY = 0,\n      // current control point y\n  tempX,\n      tempY,\n      tempControlX,\n      tempControlY;\n  if (l == null) l = 0;\n  if (t == null) t = 0;\n  if (sX == null) sX = 1;\n  if (sY == null) sY = sX;\n  if (context.beginPath) context.beginPath();\n\n  for (var i = 0, len = path.length; i < len; ++i) {\n    current = path[i];\n\n    if (sX !== 1 || sY !== 1) {\n      current = scale$1(current, sX, sY);\n    }\n\n    switch (current[0]) {\n      // first letter\n      case 'l':\n        // lineto, relative\n        x += current[1];\n        y += current[2];\n        context.lineTo(x + l, y + t);\n        break;\n\n      case 'L':\n        // lineto, absolute\n        x = current[1];\n        y = current[2];\n        context.lineTo(x + l, y + t);\n        break;\n\n      case 'h':\n        // horizontal lineto, relative\n        x += current[1];\n        context.lineTo(x + l, y + t);\n        break;\n\n      case 'H':\n        // horizontal lineto, absolute\n        x = current[1];\n        context.lineTo(x + l, y + t);\n        break;\n\n      case 'v':\n        // vertical lineto, relative\n        y += current[1];\n        context.lineTo(x + l, y + t);\n        break;\n\n      case 'V':\n        // verical lineto, absolute\n        y = current[1];\n        context.lineTo(x + l, y + t);\n        break;\n\n      case 'm':\n        // moveTo, relative\n        x += current[1];\n        y += current[2];\n        context.moveTo(x + l, y + t);\n        break;\n\n      case 'M':\n        // moveTo, absolute\n        x = current[1];\n        y = current[2];\n        context.moveTo(x + l, y + t);\n        break;\n\n      case 'c':\n        // bezierCurveTo, relative\n        tempX = x + current[5];\n        tempY = y + current[6];\n        controlX = x + current[3];\n        controlY = y + current[4];\n        context.bezierCurveTo(x + current[1] + l, // x1\n        y + current[2] + t, // y1\n        controlX + l, // x2\n        controlY + t, // y2\n        tempX + l, tempY + t);\n        x = tempX;\n        y = tempY;\n        break;\n\n      case 'C':\n        // bezierCurveTo, absolute\n        x = current[5];\n        y = current[6];\n        controlX = current[3];\n        controlY = current[4];\n        context.bezierCurveTo(current[1] + l, current[2] + t, controlX + l, controlY + t, x + l, y + t);\n        break;\n\n      case 's':\n        // shorthand cubic bezierCurveTo, relative\n        // transform to absolute x,y\n        tempX = x + current[3];\n        tempY = y + current[4]; // calculate reflection of previous control points\n\n        controlX = 2 * x - controlX;\n        controlY = 2 * y - controlY;\n        context.bezierCurveTo(controlX + l, controlY + t, x + current[1] + l, y + current[2] + t, tempX + l, tempY + t); // set control point to 2nd one of this command\n        // the first control point is assumed to be the reflection of\n        // the second control point on the previous command relative\n        // to the current point.\n\n        controlX = x + current[1];\n        controlY = y + current[2];\n        x = tempX;\n        y = tempY;\n        break;\n\n      case 'S':\n        // shorthand cubic bezierCurveTo, absolute\n        tempX = current[3];\n        tempY = current[4]; // calculate reflection of previous control points\n\n        controlX = 2 * x - controlX;\n        controlY = 2 * y - controlY;\n        context.bezierCurveTo(controlX + l, controlY + t, current[1] + l, current[2] + t, tempX + l, tempY + t);\n        x = tempX;\n        y = tempY; // set control point to 2nd one of this command\n        // the first control point is assumed to be the reflection of\n        // the second control point on the previous command relative\n        // to the current point.\n\n        controlX = current[1];\n        controlY = current[2];\n        break;\n\n      case 'q':\n        // quadraticCurveTo, relative\n        // transform to absolute x,y\n        tempX = x + current[3];\n        tempY = y + current[4];\n        controlX = x + current[1];\n        controlY = y + current[2];\n        context.quadraticCurveTo(controlX + l, controlY + t, tempX + l, tempY + t);\n        x = tempX;\n        y = tempY;\n        break;\n\n      case 'Q':\n        // quadraticCurveTo, absolute\n        tempX = current[3];\n        tempY = current[4];\n        context.quadraticCurveTo(current[1] + l, current[2] + t, tempX + l, tempY + t);\n        x = tempX;\n        y = tempY;\n        controlX = current[1];\n        controlY = current[2];\n        break;\n\n      case 't':\n        // shorthand quadraticCurveTo, relative\n        // transform to absolute x,y\n        tempX = x + current[1];\n        tempY = y + current[2];\n\n        if (previous[0].match(/[QqTt]/) === null) {\n          // If there is no previous command or if the previous command was not a Q, q, T or t,\n          // assume the control point is coincident with the current point\n          controlX = x;\n          controlY = y;\n        } else if (previous[0] === 't') {\n          // calculate reflection of previous control points for t\n          controlX = 2 * x - tempControlX;\n          controlY = 2 * y - tempControlY;\n        } else if (previous[0] === 'q') {\n          // calculate reflection of previous control points for q\n          controlX = 2 * x - controlX;\n          controlY = 2 * y - controlY;\n        }\n\n        tempControlX = controlX;\n        tempControlY = controlY;\n        context.quadraticCurveTo(controlX + l, controlY + t, tempX + l, tempY + t);\n        x = tempX;\n        y = tempY;\n        controlX = x + current[1];\n        controlY = y + current[2];\n        break;\n\n      case 'T':\n        tempX = current[1];\n        tempY = current[2]; // calculate reflection of previous control points\n\n        controlX = 2 * x - controlX;\n        controlY = 2 * y - controlY;\n        context.quadraticCurveTo(controlX + l, controlY + t, tempX + l, tempY + t);\n        x = tempX;\n        y = tempY;\n        break;\n\n      case 'a':\n        drawArc(context, x + l, y + t, [current[1], current[2], current[3], current[4], current[5], current[6] + x + l, current[7] + y + t]);\n        x += current[6];\n        y += current[7];\n        break;\n\n      case 'A':\n        drawArc(context, x + l, y + t, [current[1], current[2], current[3], current[4], current[5], current[6] + l, current[7] + t]);\n        x = current[6];\n        y = current[7];\n        break;\n\n      case 'z':\n      case 'Z':\n        context.closePath();\n        break;\n    }\n\n    previous = current;\n  }\n}\n\nfunction drawArc(context, x, y, coords) {\n  const seg = segments(coords[5], // end x\n  coords[6], // end y\n  coords[0], // radius x\n  coords[1], // radius y\n  coords[3], // large flag\n  coords[4], // sweep flag\n  coords[2], // rotation\n  x, y);\n\n  for (let i = 0; i < seg.length; ++i) {\n    const bez = bezier(seg[i]);\n    context.bezierCurveTo(bez[0], bez[1], bez[2], bez[3], bez[4], bez[5]);\n  }\n}\n\nconst Tan30 = 0.5773502691896257;\nconst builtins = {\n  'circle': {\n    draw: function (context, size) {\n      const r = Math.sqrt(size) / 2;\n      context.moveTo(r, 0);\n      context.arc(0, 0, r, 0, Tau);\n    }\n  },\n  'cross': {\n    draw: function (context, size) {\n      var r = Math.sqrt(size) / 2,\n          s = r / 2.5;\n      context.moveTo(-r, -s);\n      context.lineTo(-r, s);\n      context.lineTo(-s, s);\n      context.lineTo(-s, r);\n      context.lineTo(s, r);\n      context.lineTo(s, s);\n      context.lineTo(r, s);\n      context.lineTo(r, -s);\n      context.lineTo(s, -s);\n      context.lineTo(s, -r);\n      context.lineTo(-s, -r);\n      context.lineTo(-s, -s);\n      context.closePath();\n    }\n  },\n  'diamond': {\n    draw: function (context, size) {\n      const r = Math.sqrt(size) / 2;\n      context.moveTo(-r, 0);\n      context.lineTo(0, -r);\n      context.lineTo(r, 0);\n      context.lineTo(0, r);\n      context.closePath();\n    }\n  },\n  'square': {\n    draw: function (context, size) {\n      var w = Math.sqrt(size),\n          x = -w / 2;\n      context.rect(x, x, w, w);\n    }\n  },\n  'arrow': {\n    draw: function (context, size) {\n      var r = Math.sqrt(size) / 2,\n          s = r / 7,\n          t = r / 2.5,\n          v = r / 8;\n      context.moveTo(-s, r);\n      context.lineTo(s, r);\n      context.lineTo(s, -v);\n      context.lineTo(t, -v);\n      context.lineTo(0, -r);\n      context.lineTo(-t, -v);\n      context.lineTo(-s, -v);\n      context.closePath();\n    }\n  },\n  'wedge': {\n    draw: function (context, size) {\n      var r = Math.sqrt(size) / 2,\n          h = HalfSqrt3 * r,\n          o = h - r * Tan30,\n          b = r / 4;\n      context.moveTo(0, -h - o);\n      context.lineTo(-b, h - o);\n      context.lineTo(b, h - o);\n      context.closePath();\n    }\n  },\n  'triangle': {\n    draw: function (context, size) {\n      var r = Math.sqrt(size) / 2,\n          h = HalfSqrt3 * r,\n          o = h - r * Tan30;\n      context.moveTo(0, -h - o);\n      context.lineTo(-r, h - o);\n      context.lineTo(r, h - o);\n      context.closePath();\n    }\n  },\n  'triangle-up': {\n    draw: function (context, size) {\n      var r = Math.sqrt(size) / 2,\n          h = HalfSqrt3 * r;\n      context.moveTo(0, -h);\n      context.lineTo(-r, h);\n      context.lineTo(r, h);\n      context.closePath();\n    }\n  },\n  'triangle-down': {\n    draw: function (context, size) {\n      var r = Math.sqrt(size) / 2,\n          h = HalfSqrt3 * r;\n      context.moveTo(0, h);\n      context.lineTo(-r, -h);\n      context.lineTo(r, -h);\n      context.closePath();\n    }\n  },\n  'triangle-right': {\n    draw: function (context, size) {\n      var r = Math.sqrt(size) / 2,\n          h = HalfSqrt3 * r;\n      context.moveTo(h, 0);\n      context.lineTo(-h, -r);\n      context.lineTo(-h, r);\n      context.closePath();\n    }\n  },\n  'triangle-left': {\n    draw: function (context, size) {\n      var r = Math.sqrt(size) / 2,\n          h = HalfSqrt3 * r;\n      context.moveTo(-h, 0);\n      context.lineTo(h, -r);\n      context.lineTo(h, r);\n      context.closePath();\n    }\n  },\n  'stroke': {\n    draw: function (context, size) {\n      const r = Math.sqrt(size) / 2;\n      context.moveTo(-r, 0);\n      context.lineTo(r, 0);\n    }\n  }\n};\nfunction symbols(_) {\n  return Object(vega_util__WEBPACK_IMPORTED_MODULE_0__[\"hasOwnProperty\"])(builtins, _) ? builtins[_] : customSymbol(_);\n}\nvar custom = {};\n\nfunction customSymbol(path) {\n  if (!Object(vega_util__WEBPACK_IMPORTED_MODULE_0__[\"hasOwnProperty\"])(custom, path)) {\n    const parsed = pathParse(path);\n    custom[path] = {\n      draw: function (context, size) {\n        pathRender(context, parsed, 0, 0, Math.sqrt(size) / 2);\n      }\n    };\n  }\n\n  return custom[path];\n}\n\nconst C = 0.448084975506; // C = 1 - c\n\nfunction rectangleX(d) {\n  return d.x;\n}\n\nfunction rectangleY(d) {\n  return d.y;\n}\n\nfunction rectangleWidth(d) {\n  return d.width;\n}\n\nfunction rectangleHeight(d) {\n  return d.height;\n}\n\nfunction number(_) {\n  return typeof _ === 'function' ? _ : () => +_;\n}\n\nfunction clamp(value, min, max) {\n  return Math.max(min, Math.min(value, max));\n}\n\nfunction vg_rect () {\n  var x = rectangleX,\n      y = rectangleY,\n      width = rectangleWidth,\n      height = rectangleHeight,\n      crTL = number(0),\n      crTR = crTL,\n      crBL = crTL,\n      crBR = crTL,\n      context = null;\n\n  function rectangle(_, x0, y0) {\n    var buffer,\n        x1 = x0 != null ? x0 : +x.call(this, _),\n        y1 = y0 != null ? y0 : +y.call(this, _),\n        w = +width.call(this, _),\n        h = +height.call(this, _),\n        s = Math.min(w, h) / 2,\n        tl = clamp(+crTL.call(this, _), 0, s),\n        tr = clamp(+crTR.call(this, _), 0, s),\n        bl = clamp(+crBL.call(this, _), 0, s),\n        br = clamp(+crBR.call(this, _), 0, s);\n    if (!context) context = buffer = Object(d3_path__WEBPACK_IMPORTED_MODULE_2__[\"path\"])();\n\n    if (tl <= 0 && tr <= 0 && bl <= 0 && br <= 0) {\n      context.rect(x1, y1, w, h);\n    } else {\n      var x2 = x1 + w,\n          y2 = y1 + h;\n      context.moveTo(x1 + tl, y1);\n      context.lineTo(x2 - tr, y1);\n      context.bezierCurveTo(x2 - C * tr, y1, x2, y1 + C * tr, x2, y1 + tr);\n      context.lineTo(x2, y2 - br);\n      context.bezierCurveTo(x2, y2 - C * br, x2 - C * br, y2, x2 - br, y2);\n      context.lineTo(x1 + bl, y2);\n      context.bezierCurveTo(x1 + C * bl, y2, x1, y2 - C * bl, x1, y2 - bl);\n      context.lineTo(x1, y1 + tl);\n      context.bezierCurveTo(x1, y1 + C * tl, x1 + C * tl, y1, x1 + tl, y1);\n      context.closePath();\n    }\n\n    if (buffer) {\n      context = null;\n      return buffer + '' || null;\n    }\n  }\n\n  rectangle.x = function (_) {\n    if (arguments.length) {\n      x = number(_);\n      return rectangle;\n    } else {\n      return x;\n    }\n  };\n\n  rectangle.y = function (_) {\n    if (arguments.length) {\n      y = number(_);\n      return rectangle;\n    } else {\n      return y;\n    }\n  };\n\n  rectangle.width = function (_) {\n    if (arguments.length) {\n      width = number(_);\n      return rectangle;\n    } else {\n      return width;\n    }\n  };\n\n  rectangle.height = function (_) {\n    if (arguments.length) {\n      height = number(_);\n      return rectangle;\n    } else {\n      return height;\n    }\n  };\n\n  rectangle.cornerRadius = function (tl, tr, br, bl) {\n    if (arguments.length) {\n      crTL = number(tl);\n      crTR = tr != null ? number(tr) : crTL;\n      crBR = br != null ? number(br) : crTL;\n      crBL = bl != null ? number(bl) : crTR;\n      return rectangle;\n    } else {\n      return crTL;\n    }\n  };\n\n  rectangle.context = function (_) {\n    if (arguments.length) {\n      context = _ == null ? null : _;\n      return rectangle;\n    } else {\n      return context;\n    }\n  };\n\n  return rectangle;\n}\n\nfunction vg_trail () {\n  var x,\n      y,\n      size,\n      defined,\n      context = null,\n      ready,\n      x1,\n      y1,\n      r1;\n\n  function point(x2, y2, w2) {\n    const r2 = w2 / 2;\n\n    if (ready) {\n      var ux = y1 - y2,\n          uy = x2 - x1;\n\n      if (ux || uy) {\n        // get normal vector\n        var ud = Math.sqrt(ux * ux + uy * uy),\n            rx = (ux /= ud) * r1,\n            ry = (uy /= ud) * r1,\n            t = Math.atan2(uy, ux); // draw segment\n\n        context.moveTo(x1 - rx, y1 - ry);\n        context.lineTo(x2 - ux * r2, y2 - uy * r2);\n        context.arc(x2, y2, r2, t - Math.PI, t);\n        context.lineTo(x1 + rx, y1 + ry);\n        context.arc(x1, y1, r1, t, t + Math.PI);\n      } else {\n        context.arc(x2, y2, r2, 0, Tau);\n      }\n\n      context.closePath();\n    } else {\n      ready = 1;\n    }\n\n    x1 = x2;\n    y1 = y2;\n    r1 = r2;\n  }\n\n  function trail(data) {\n    var i,\n        n = data.length,\n        d,\n        defined0 = false,\n        buffer;\n    if (context == null) context = buffer = Object(d3_path__WEBPACK_IMPORTED_MODULE_2__[\"path\"])();\n\n    for (i = 0; i <= n; ++i) {\n      if (!(i < n && defined(d = data[i], i, data)) === defined0) {\n        if (defined0 = !defined0) ready = 0;\n      }\n\n      if (defined0) point(+x(d, i, data), +y(d, i, data), +size(d, i, data));\n    }\n\n    if (buffer) {\n      context = null;\n      return buffer + '' || null;\n    }\n  }\n\n  trail.x = function (_) {\n    if (arguments.length) {\n      x = _;\n      return trail;\n    } else {\n      return x;\n    }\n  };\n\n  trail.y = function (_) {\n    if (arguments.length) {\n      y = _;\n      return trail;\n    } else {\n      return y;\n    }\n  };\n\n  trail.size = function (_) {\n    if (arguments.length) {\n      size = _;\n      return trail;\n    } else {\n      return size;\n    }\n  };\n\n  trail.defined = function (_) {\n    if (arguments.length) {\n      defined = _;\n      return trail;\n    } else {\n      return defined;\n    }\n  };\n\n  trail.context = function (_) {\n    if (arguments.length) {\n      if (_ == null) {\n        context = null;\n      } else {\n        context = _;\n      }\n\n      return trail;\n    } else {\n      return context;\n    }\n  };\n\n  return trail;\n}\n\nfunction value$1(a, b) {\n  return a != null ? a : b;\n}\n\nconst x = item => item.x || 0,\n      y = item => item.y || 0,\n      w = item => item.width || 0,\n      h = item => item.height || 0,\n      xw = item => (item.x || 0) + (item.width || 0),\n      yh = item => (item.y || 0) + (item.height || 0),\n      sa = item => item.startAngle || 0,\n      ea = item => item.endAngle || 0,\n      pa = item => item.padAngle || 0,\n      ir = item => item.innerRadius || 0,\n      or = item => item.outerRadius || 0,\n      cr = item => item.cornerRadius || 0,\n      tl = item => value$1(item.cornerRadiusTopLeft, item.cornerRadius) || 0,\n      tr = item => value$1(item.cornerRadiusTopRight, item.cornerRadius) || 0,\n      br = item => value$1(item.cornerRadiusBottomRight, item.cornerRadius) || 0,\n      bl = item => value$1(item.cornerRadiusBottomLeft, item.cornerRadius) || 0,\n      sz = item => value$1(item.size, 64),\n      ts = item => item.size || 1,\n      def = item => !(item.defined === false),\n      type = item => symbols(item.shape || 'circle');\n\nconst arcShape = Object(d3_shape__WEBPACK_IMPORTED_MODULE_1__[\"arc\"])().startAngle(sa).endAngle(ea).padAngle(pa).innerRadius(ir).outerRadius(or).cornerRadius(cr),\n      areavShape = Object(d3_shape__WEBPACK_IMPORTED_MODULE_1__[\"area\"])().x(x).y1(y).y0(yh).defined(def),\n      areahShape = Object(d3_shape__WEBPACK_IMPORTED_MODULE_1__[\"area\"])().y(y).x1(x).x0(xw).defined(def),\n      lineShape = Object(d3_shape__WEBPACK_IMPORTED_MODULE_1__[\"line\"])().x(x).y(y).defined(def),\n      rectShape = vg_rect().x(x).y(y).width(w).height(h).cornerRadius(tl, tr, br, bl),\n      symbolShape = Object(d3_shape__WEBPACK_IMPORTED_MODULE_1__[\"symbol\"])().type(type).size(sz),\n      trailShape = vg_trail().x(x).y(y).defined(def).size(ts);\nfunction hasCornerRadius(item) {\n  return item.cornerRadius || item.cornerRadiusTopLeft || item.cornerRadiusTopRight || item.cornerRadiusBottomRight || item.cornerRadiusBottomLeft;\n}\nfunction arc$1(context, item) {\n  return arcShape.context(context)(item);\n}\nfunction area$1(context, items) {\n  const item = items[0],\n        interp = item.interpolate || 'linear';\n  return (item.orient === 'horizontal' ? areahShape : areavShape).curve(curves(interp, item.orient, item.tension)).context(context)(items);\n}\nfunction line$1(context, items) {\n  const item = items[0],\n        interp = item.interpolate || 'linear';\n  return lineShape.curve(curves(interp, item.orient, item.tension)).context(context)(items);\n}\nfunction rectangle(context, item, x, y) {\n  return rectShape.context(context)(item, x, y);\n}\nfunction shape$1(context, item) {\n  return (item.mark.shape || item.shape).context(context)(item);\n}\nfunction symbol$1(context, item) {\n  return symbolShape.context(context)(item);\n}\nfunction trail$1(context, items) {\n  return trailShape.context(context)(items);\n}\n\nvar clip_id = 1;\nfunction resetSVGClipId() {\n  clip_id = 1;\n}\nfunction clip$1 (renderer, item, size) {\n  var clip = item.clip,\n      defs = renderer._defs,\n      id = item.clip_id || (item.clip_id = 'clip' + clip_id++),\n      c = defs.clipping[id] || (defs.clipping[id] = {\n    id: id\n  });\n\n  if (Object(vega_util__WEBPACK_IMPORTED_MODULE_0__[\"isFunction\"])(clip)) {\n    c.path = clip(null);\n  } else if (hasCornerRadius(size)) {\n    c.path = rectangle(null, size, 0, 0);\n  } else {\n    c.width = size.width || 0;\n    c.height = size.height || 0;\n  }\n\n  return 'url(#' + id + ')';\n}\n\nfunction Bounds(b) {\n  this.clear();\n  if (b) this.union(b);\n}\nBounds.prototype = {\n  clone() {\n    return new Bounds(this);\n  },\n\n  clear() {\n    this.x1 = +Number.MAX_VALUE;\n    this.y1 = +Number.MAX_VALUE;\n    this.x2 = -Number.MAX_VALUE;\n    this.y2 = -Number.MAX_VALUE;\n    return this;\n  },\n\n  empty() {\n    return this.x1 === +Number.MAX_VALUE && this.y1 === +Number.MAX_VALUE && this.x2 === -Number.MAX_VALUE && this.y2 === -Number.MAX_VALUE;\n  },\n\n  equals(b) {\n    return this.x1 === b.x1 && this.y1 === b.y1 && this.x2 === b.x2 && this.y2 === b.y2;\n  },\n\n  set(x1, y1, x2, y2) {\n    if (x2 < x1) {\n      this.x2 = x1;\n      this.x1 = x2;\n    } else {\n      this.x1 = x1;\n      this.x2 = x2;\n    }\n\n    if (y2 < y1) {\n      this.y2 = y1;\n      this.y1 = y2;\n    } else {\n      this.y1 = y1;\n      this.y2 = y2;\n    }\n\n    return this;\n  },\n\n  add(x, y) {\n    if (x < this.x1) this.x1 = x;\n    if (y < this.y1) this.y1 = y;\n    if (x > this.x2) this.x2 = x;\n    if (y > this.y2) this.y2 = y;\n    return this;\n  },\n\n  expand(d) {\n    this.x1 -= d;\n    this.y1 -= d;\n    this.x2 += d;\n    this.y2 += d;\n    return this;\n  },\n\n  round() {\n    this.x1 = Math.floor(this.x1);\n    this.y1 = Math.floor(this.y1);\n    this.x2 = Math.ceil(this.x2);\n    this.y2 = Math.ceil(this.y2);\n    return this;\n  },\n\n  scale(s) {\n    this.x1 *= s;\n    this.y1 *= s;\n    this.x2 *= s;\n    this.y2 *= s;\n    return this;\n  },\n\n  translate(dx, dy) {\n    this.x1 += dx;\n    this.x2 += dx;\n    this.y1 += dy;\n    this.y2 += dy;\n    return this;\n  },\n\n  rotate(angle, x, y) {\n    const p = this.rotatedPoints(angle, x, y);\n    return this.clear().add(p[0], p[1]).add(p[2], p[3]).add(p[4], p[5]).add(p[6], p[7]);\n  },\n\n  rotatedPoints(angle, x, y) {\n    var {\n      x1,\n      y1,\n      x2,\n      y2\n    } = this,\n        cos = Math.cos(angle),\n        sin = Math.sin(angle),\n        cx = x - x * cos + y * sin,\n        cy = y - x * sin - y * cos;\n    return [cos * x1 - sin * y1 + cx, sin * x1 + cos * y1 + cy, cos * x1 - sin * y2 + cx, sin * x1 + cos * y2 + cy, cos * x2 - sin * y1 + cx, sin * x2 + cos * y1 + cy, cos * x2 - sin * y2 + cx, sin * x2 + cos * y2 + cy];\n  },\n\n  union(b) {\n    if (b.x1 < this.x1) this.x1 = b.x1;\n    if (b.y1 < this.y1) this.y1 = b.y1;\n    if (b.x2 > this.x2) this.x2 = b.x2;\n    if (b.y2 > this.y2) this.y2 = b.y2;\n    return this;\n  },\n\n  intersect(b) {\n    if (b.x1 > this.x1) this.x1 = b.x1;\n    if (b.y1 > this.y1) this.y1 = b.y1;\n    if (b.x2 < this.x2) this.x2 = b.x2;\n    if (b.y2 < this.y2) this.y2 = b.y2;\n    return this;\n  },\n\n  encloses(b) {\n    return b && this.x1 <= b.x1 && this.x2 >= b.x2 && this.y1 <= b.y1 && this.y2 >= b.y2;\n  },\n\n  alignsWith(b) {\n    return b && (this.x1 == b.x1 || this.x2 == b.x2 || this.y1 == b.y1 || this.y2 == b.y2);\n  },\n\n  intersects(b) {\n    return b && !(this.x2 < b.x1 || this.x1 > b.x2 || this.y2 < b.y1 || this.y1 > b.y2);\n  },\n\n  contains(x, y) {\n    return !(x < this.x1 || x > this.x2 || y < this.y1 || y > this.y2);\n  },\n\n  width() {\n    return this.x2 - this.x1;\n  },\n\n  height() {\n    return this.y2 - this.y1;\n  }\n\n};\n\nfunction Item(mark) {\n  this.mark = mark;\n  this.bounds = this.bounds || new Bounds();\n}\n\nfunction GroupItem(mark) {\n  Item.call(this, mark);\n  this.items = this.items || [];\n}\nObject(vega_util__WEBPACK_IMPORTED_MODULE_0__[\"inherits\"])(GroupItem, Item);\n\nfunction ResourceLoader(customLoader) {\n  this._pending = 0;\n  this._loader = customLoader || Object(vega_loader__WEBPACK_IMPORTED_MODULE_4__[\"loader\"])();\n}\n\nfunction increment(loader) {\n  loader._pending += 1;\n}\n\nfunction decrement(loader) {\n  loader._pending -= 1;\n}\n\nResourceLoader.prototype = {\n  pending() {\n    return this._pending;\n  },\n\n  sanitizeURL(uri) {\n    const loader = this;\n    increment(loader);\n    return loader._loader.sanitize(uri, {\n      context: 'href'\n    }).then(opt => {\n      decrement(loader);\n      return opt;\n    }).catch(() => {\n      decrement(loader);\n      return null;\n    });\n  },\n\n  loadImage(uri) {\n    const loader = this,\n          Image = Object(vega_canvas__WEBPACK_IMPORTED_MODULE_3__[\"image\"])();\n    increment(loader);\n    return loader._loader.sanitize(uri, {\n      context: 'image'\n    }).then(opt => {\n      const url = opt.href;\n      if (!url || !Image) throw {\n        url: url\n      };\n      const img = new Image(); // set crossOrigin only if cors is defined; empty string sets anonymous mode\n      // https://developer.mozilla.org/en-US/docs/Web/API/HTMLImageElement/crossOrigin\n\n      const cors = Object(vega_util__WEBPACK_IMPORTED_MODULE_0__[\"hasOwnProperty\"])(opt, 'crossOrigin') ? opt.crossOrigin : 'anonymous';\n      if (cors != null) img.crossOrigin = cors; // attempt to load image resource\n\n      img.onload = () => decrement(loader);\n\n      img.onerror = () => decrement(loader);\n\n      img.src = url;\n      return img;\n    }).catch(e => {\n      decrement(loader);\n      return {\n        complete: false,\n        width: 0,\n        height: 0,\n        src: e && e.url || ''\n      };\n    });\n  },\n\n  ready() {\n    const loader = this;\n    return new Promise(accept => {\n      function poll(value) {\n        if (!loader.pending()) accept(value);else setTimeout(() => {\n          poll(true);\n        }, 10);\n      }\n\n      poll(false);\n    });\n  }\n\n};\n\nfunction boundStroke (bounds, item, miter) {\n  if (item.stroke && item.opacity !== 0 && item.strokeOpacity !== 0) {\n    const sw = item.strokeWidth != null ? +item.strokeWidth : 1;\n    bounds.expand(sw + (miter ? miterAdjustment(item, sw) : 0));\n  }\n\n  return bounds;\n}\n\nfunction miterAdjustment(item, strokeWidth) {\n  // TODO: more sophisticated adjustment? Or miter support in boundContext?\n  return item.strokeJoin && item.strokeJoin !== 'miter' ? 0 : strokeWidth;\n}\n\nconst circleThreshold = Tau - 1e-8;\nlet bounds, lx, ly, rot, ma, mb, mc, md;\n\nconst add = (x, y) => bounds.add(x, y);\n\nconst addL = (x, y) => add(lx = x, ly = y);\n\nconst addX = x => add(x, bounds.y1);\n\nconst addY = y => add(bounds.x1, y);\n\nconst px = (x, y) => ma * x + mc * y;\n\nconst py = (x, y) => mb * x + md * y;\n\nconst addp = (x, y) => add(px(x, y), py(x, y));\n\nconst addpL = (x, y) => addL(px(x, y), py(x, y));\n\nfunction boundContext (_, deg) {\n  bounds = _;\n\n  if (deg) {\n    rot = deg * DegToRad;\n    ma = md = Math.cos(rot);\n    mb = Math.sin(rot);\n    mc = -mb;\n  } else {\n    ma = md = 1;\n    rot = mb = mc = 0;\n  }\n\n  return context$1;\n}\nconst context$1 = {\n  beginPath() {},\n\n  closePath() {},\n\n  moveTo: addpL,\n  lineTo: addpL,\n\n  rect(x, y, w, h) {\n    if (rot) {\n      addp(x + w, y);\n      addp(x + w, y + h);\n      addp(x, y + h);\n      addpL(x, y);\n    } else {\n      add(x + w, y + h);\n      addL(x, y);\n    }\n  },\n\n  quadraticCurveTo(x1, y1, x2, y2) {\n    const px1 = px(x1, y1),\n          py1 = py(x1, y1),\n          px2 = px(x2, y2),\n          py2 = py(x2, y2);\n    quadExtrema(lx, px1, px2, addX);\n    quadExtrema(ly, py1, py2, addY);\n    addL(px2, py2);\n  },\n\n  bezierCurveTo(x1, y1, x2, y2, x3, y3) {\n    const px1 = px(x1, y1),\n          py1 = py(x1, y1),\n          px2 = px(x2, y2),\n          py2 = py(x2, y2),\n          px3 = px(x3, y3),\n          py3 = py(x3, y3);\n    cubicExtrema(lx, px1, px2, px3, addX);\n    cubicExtrema(ly, py1, py2, py3, addY);\n    addL(px3, py3);\n  },\n\n  arc(cx, cy, r, sa, ea, ccw) {\n    sa += rot;\n    ea += rot; // store last point on path\n\n    lx = r * Math.cos(ea) + cx;\n    ly = r * Math.sin(ea) + cy;\n\n    if (Math.abs(ea - sa) > circleThreshold) {\n      // treat as full circle\n      add(cx - r, cy - r);\n      add(cx + r, cy + r);\n    } else {\n      const update = a => add(r * Math.cos(a) + cx, r * Math.sin(a) + cy);\n\n      let s, i; // sample end points\n\n      update(sa);\n      update(ea); // sample interior points aligned with 90 degrees\n\n      if (ea !== sa) {\n        sa = sa % Tau;\n        if (sa < 0) sa += Tau;\n        ea = ea % Tau;\n        if (ea < 0) ea += Tau;\n\n        if (ea < sa) {\n          ccw = !ccw; // flip direction\n\n          s = sa;\n          sa = ea;\n          ea = s; // swap end-points\n        }\n\n        if (ccw) {\n          ea -= Tau;\n          s = sa - sa % HalfPi;\n\n          for (i = 0; i < 4 && s > ea; ++i, s -= HalfPi) update(s);\n        } else {\n          s = sa - sa % HalfPi + HalfPi;\n\n          for (i = 0; i < 4 && s < ea; ++i, s = s + HalfPi) update(s);\n        }\n      }\n    }\n  }\n\n};\n\nfunction quadExtrema(x0, x1, x2, cb) {\n  const t = (x0 - x1) / (x0 + x2 - 2 * x1);\n  if (0 < t && t < 1) cb(x0 + (x1 - x0) * t);\n}\n\nfunction cubicExtrema(x0, x1, x2, x3, cb) {\n  const a = x3 - x0 + 3 * x1 - 3 * x2,\n        b = x0 + x2 - 2 * x1,\n        c = x0 - x1;\n  let t0 = 0,\n      t1 = 0,\n      r; // solve for parameter t\n\n  if (Math.abs(a) > Epsilon) {\n    // quadratic equation\n    r = b * b + c * a;\n\n    if (r >= 0) {\n      r = Math.sqrt(r);\n      t0 = (-b + r) / a;\n      t1 = (-b - r) / a;\n    }\n  } else {\n    // linear equation\n    t0 = 0.5 * c / b;\n  } // calculate position\n\n\n  if (0 < t0 && t0 < 1) cb(cubic(t0, x0, x1, x2, x3));\n  if (0 < t1 && t1 < 1) cb(cubic(t1, x0, x1, x2, x3));\n}\n\nfunction cubic(t, x0, x1, x2, x3) {\n  const s = 1 - t,\n        s2 = s * s,\n        t2 = t * t;\n  return s2 * s * x0 + 3 * s2 * t * x1 + 3 * s * t2 * x2 + t2 * t * x3;\n}\n\nvar context = (context = Object(vega_canvas__WEBPACK_IMPORTED_MODULE_3__[\"canvas\"])(1, 1)) ? context.getContext('2d') : null;\n\nconst b = new Bounds();\nfunction intersectPath(draw) {\n  return function (item, brush) {\n    // rely on (inaccurate) bounds intersection if no context\n    if (!context) return true; // add path to offscreen graphics context\n\n    draw(context, item); // get bounds intersection region\n\n    b.clear().union(item.bounds).intersect(brush).round();\n    const {\n      x1,\n      y1,\n      x2,\n      y2\n    } = b; // iterate over intersection region\n    // perform fine grained inclusion test\n\n    for (let y = y1; y <= y2; ++y) {\n      for (let x = x1; x <= x2; ++x) {\n        if (context.isPointInPath(x, y)) {\n          return true;\n        }\n      }\n    } // false if no hits in intersection region\n\n\n    return false;\n  };\n}\nfunction intersectPoint(item, box) {\n  return box.contains(item.x || 0, item.y || 0);\n}\nfunction intersectRect(item, box) {\n  const x = item.x || 0,\n        y = item.y || 0,\n        w = item.width || 0,\n        h = item.height || 0;\n  return box.intersects(b.set(x, y, x + w, y + h));\n}\nfunction intersectRule(item, box) {\n  const x = item.x || 0,\n        y = item.y || 0,\n        x2 = item.x2 != null ? item.x2 : x,\n        y2 = item.y2 != null ? item.y2 : y;\n  return intersectBoxLine(box, x, y, x2, y2);\n}\nfunction intersectBoxLine(box, x, y, u, v) {\n  const {\n    x1,\n    y1,\n    x2,\n    y2\n  } = box,\n        dx = u - x,\n        dy = v - y;\n  let t0 = 0,\n      t1 = 1,\n      p,\n      q,\n      r,\n      e;\n\n  for (e = 0; e < 4; ++e) {\n    if (e === 0) {\n      p = -dx;\n      q = -(x1 - x);\n    }\n\n    if (e === 1) {\n      p = dx;\n      q = x2 - x;\n    }\n\n    if (e === 2) {\n      p = -dy;\n      q = -(y1 - y);\n    }\n\n    if (e === 3) {\n      p = dy;\n      q = y2 - y;\n    }\n\n    if (Math.abs(p) < 1e-10 && q < 0) return false;\n    r = q / p;\n\n    if (p < 0) {\n      if (r > t1) return false;else if (r > t0) t0 = r;\n    } else if (p > 0) {\n      if (r < t0) return false;else if (r < t1) t1 = r;\n    }\n  }\n\n  return true;\n}\n\nfunction blend (context, item) {\n  context.globalCompositeOperation = item.blend || 'source-over';\n}\n\nfunction value (value, dflt) {\n  return value == null ? dflt : value;\n}\n\nfunction addStops(gradient, stops) {\n  const n = stops.length;\n\n  for (let i = 0; i < n; ++i) {\n    gradient.addColorStop(stops[i].offset, stops[i].color);\n  }\n\n  return gradient;\n}\n\nfunction gradient (context, spec, bounds) {\n  const w = bounds.width(),\n        h = bounds.height();\n  let gradient;\n\n  if (spec.gradient === 'radial') {\n    gradient = context.createRadialGradient(bounds.x1 + value(spec.x1, 0.5) * w, bounds.y1 + value(spec.y1, 0.5) * h, Math.max(w, h) * value(spec.r1, 0), bounds.x1 + value(spec.x2, 0.5) * w, bounds.y1 + value(spec.y2, 0.5) * h, Math.max(w, h) * value(spec.r2, 0.5));\n  } else {\n    // linear gradient\n    const x1 = value(spec.x1, 0),\n          y1 = value(spec.y1, 0),\n          x2 = value(spec.x2, 1),\n          y2 = value(spec.y2, 0);\n\n    if (x1 === x2 || y1 === y2 || w === h) {\n      // axis aligned: use normal gradient\n      gradient = context.createLinearGradient(bounds.x1 + x1 * w, bounds.y1 + y1 * h, bounds.x1 + x2 * w, bounds.y1 + y2 * h);\n    } else {\n      // not axis aligned: render gradient into a pattern (#2365)\n      // this allows us to use normalized bounding box coordinates\n      const image = Object(vega_canvas__WEBPACK_IMPORTED_MODULE_3__[\"canvas\"])(Math.ceil(w), Math.ceil(h)),\n            ictx = image.getContext('2d');\n      ictx.scale(w, h);\n      ictx.fillStyle = addStops(ictx.createLinearGradient(x1, y1, x2, y2), spec.stops);\n      ictx.fillRect(0, 0, w, h);\n      return context.createPattern(image, 'no-repeat');\n    }\n  }\n\n  return addStops(gradient, spec.stops);\n}\n\nfunction color (context, item, value) {\n  return isGradient(value) ? gradient(context, value, item.bounds) : value;\n}\n\nfunction fill (context, item, opacity) {\n  opacity *= item.fillOpacity == null ? 1 : item.fillOpacity;\n\n  if (opacity > 0) {\n    context.globalAlpha = opacity;\n    context.fillStyle = color(context, item, item.fill);\n    return true;\n  } else {\n    return false;\n  }\n}\n\nvar Empty = [];\nfunction stroke (context, item, opacity) {\n  var lw = (lw = item.strokeWidth) != null ? lw : 1;\n  if (lw <= 0) return false;\n  opacity *= item.strokeOpacity == null ? 1 : item.strokeOpacity;\n\n  if (opacity > 0) {\n    context.globalAlpha = opacity;\n    context.strokeStyle = color(context, item, item.stroke);\n    context.lineWidth = lw;\n    context.lineCap = item.strokeCap || 'butt';\n    context.lineJoin = item.strokeJoin || 'miter';\n    context.miterLimit = item.strokeMiterLimit || 10;\n\n    if (context.setLineDash) {\n      context.setLineDash(item.strokeDash || Empty);\n      context.lineDashOffset = item.strokeDashOffset || 0;\n    }\n\n    return true;\n  } else {\n    return false;\n  }\n}\n\nfunction compare(a, b) {\n  return a.zindex - b.zindex || a.index - b.index;\n}\n\nfunction zorder(scene) {\n  if (!scene.zdirty) return scene.zitems;\n  var items = scene.items,\n      output = [],\n      item,\n      i,\n      n;\n\n  for (i = 0, n = items.length; i < n; ++i) {\n    item = items[i];\n    item.index = i;\n    if (item.zindex) output.push(item);\n  }\n\n  scene.zdirty = false;\n  return scene.zitems = output.sort(compare);\n}\nfunction visit(scene, visitor) {\n  var items = scene.items,\n      i,\n      n;\n  if (!items || !items.length) return;\n  const zitems = zorder(scene);\n\n  if (zitems && zitems.length) {\n    for (i = 0, n = items.length; i < n; ++i) {\n      if (!items[i].zindex) visitor(items[i]);\n    }\n\n    items = zitems;\n  }\n\n  for (i = 0, n = items.length; i < n; ++i) {\n    visitor(items[i]);\n  }\n}\nfunction pickVisit(scene, visitor) {\n  var items = scene.items,\n      hit,\n      i;\n  if (!items || !items.length) return null;\n  const zitems = zorder(scene);\n  if (zitems && zitems.length) items = zitems;\n\n  for (i = items.length; --i >= 0;) {\n    if (hit = visitor(items[i])) return hit;\n  }\n\n  if (items === zitems) {\n    for (items = scene.items, i = items.length; --i >= 0;) {\n      if (!items[i].zindex) {\n        if (hit = visitor(items[i])) return hit;\n      }\n    }\n  }\n\n  return null;\n}\n\nfunction drawAll(path) {\n  return function (context, scene, bounds) {\n    visit(scene, item => {\n      if (!bounds || bounds.intersects(item.bounds)) {\n        drawPath(path, context, item, item);\n      }\n    });\n  };\n}\nfunction drawOne(path) {\n  return function (context, scene, bounds) {\n    if (scene.items.length && (!bounds || bounds.intersects(scene.bounds))) {\n      drawPath(path, context, scene.items[0], scene.items);\n    }\n  };\n}\n\nfunction drawPath(path, context, item, items) {\n  var opacity = item.opacity == null ? 1 : item.opacity;\n  if (opacity === 0) return;\n  if (path(context, items)) return;\n  blend(context, item);\n\n  if (item.fill && fill(context, item, opacity)) {\n    context.fill();\n  }\n\n  if (item.stroke && stroke(context, item, opacity)) {\n    context.stroke();\n  }\n}\n\nfunction pick$1(test) {\n  test = test || vega_util__WEBPACK_IMPORTED_MODULE_0__[\"truthy\"];\n  return function (context, scene, x, y, gx, gy) {\n    x *= context.pixelRatio;\n    y *= context.pixelRatio;\n    return pickVisit(scene, item => {\n      const b = item.bounds; // first hit test against bounding box\n\n      if (b && !b.contains(gx, gy) || !b) return; // if in bounding box, perform more careful test\n\n      if (test(context, item, x, y, gx, gy)) return item;\n    });\n  };\n}\nfunction hitPath(path, filled) {\n  return function (context, o, x, y) {\n    var item = Array.isArray(o) ? o[0] : o,\n        fill = filled == null ? item.fill : filled,\n        stroke = item.stroke && context.isPointInStroke,\n        lw,\n        lc;\n\n    if (stroke) {\n      lw = item.strokeWidth;\n      lc = item.strokeCap;\n      context.lineWidth = lw != null ? lw : 1;\n      context.lineCap = lc != null ? lc : 'butt';\n    }\n\n    return path(context, o) ? false : fill && context.isPointInPath(x, y) || stroke && context.isPointInStroke(x, y);\n  };\n}\nfunction pickPath(path) {\n  return pick$1(hitPath(path));\n}\n\nfunction translate(x, y) {\n  return 'translate(' + x + ',' + y + ')';\n}\nfunction rotate(a) {\n  return 'rotate(' + a + ')';\n}\nfunction scale(scaleX, scaleY) {\n  return 'scale(' + scaleX + ',' + scaleY + ')';\n}\nfunction translateItem(item) {\n  return translate(item.x || 0, item.y || 0);\n}\nfunction rotateItem(item) {\n  return translate(item.x || 0, item.y || 0) + (item.angle ? ' ' + rotate(item.angle) : '');\n}\nfunction transformItem(item) {\n  return translate(item.x || 0, item.y || 0) + (item.angle ? ' ' + rotate(item.angle) : '') + (item.scaleX || item.scaleY ? ' ' + scale(item.scaleX || 1, item.scaleY || 1) : '');\n}\n\nfunction markItemPath (type, shape, isect) {\n  function attr(emit, item) {\n    emit('transform', rotateItem(item));\n    emit('d', shape(null, item));\n  }\n\n  function bound(bounds, item) {\n    shape(boundContext(bounds, item.angle), item);\n    return boundStroke(bounds, item).translate(item.x || 0, item.y || 0);\n  }\n\n  function draw(context, item) {\n    var x = item.x || 0,\n        y = item.y || 0,\n        a = item.angle || 0;\n    context.translate(x, y);\n    if (a) context.rotate(a *= DegToRad);\n    context.beginPath();\n    shape(context, item);\n    if (a) context.rotate(-a);\n    context.translate(-x, -y);\n  }\n\n  return {\n    type: type,\n    tag: 'path',\n    nested: false,\n    attr: attr,\n    bound: bound,\n    draw: drawAll(draw),\n    pick: pickPath(draw),\n    isect: isect || intersectPath(draw)\n  };\n}\n\nvar arc = markItemPath('arc', arc$1);\n\nfunction pickArea(a, p) {\n  var v = a[0].orient === 'horizontal' ? p[1] : p[0],\n      z = a[0].orient === 'horizontal' ? 'y' : 'x',\n      i = a.length,\n      min = +Infinity,\n      hit,\n      d;\n\n  while (--i >= 0) {\n    if (a[i].defined === false) continue;\n    d = Math.abs(a[i][z] - v);\n\n    if (d < min) {\n      min = d;\n      hit = a[i];\n    }\n  }\n\n  return hit;\n}\nfunction pickLine(a, p) {\n  var t = Math.pow(a[0].strokeWidth || 1, 2),\n      i = a.length,\n      dx,\n      dy,\n      dd;\n\n  while (--i >= 0) {\n    if (a[i].defined === false) continue;\n    dx = a[i].x - p[0];\n    dy = a[i].y - p[1];\n    dd = dx * dx + dy * dy;\n    if (dd < t) return a[i];\n  }\n\n  return null;\n}\nfunction pickTrail(a, p) {\n  var i = a.length,\n      dx,\n      dy,\n      dd;\n\n  while (--i >= 0) {\n    if (a[i].defined === false) continue;\n    dx = a[i].x - p[0];\n    dy = a[i].y - p[1];\n    dd = dx * dx + dy * dy;\n    dx = a[i].size || 1;\n    if (dd < dx * dx) return a[i];\n  }\n\n  return null;\n}\n\nfunction markMultiItemPath (type, shape, tip) {\n  function attr(emit, item) {\n    var items = item.mark.items;\n    if (items.length) emit('d', shape(null, items));\n  }\n\n  function bound(bounds, mark) {\n    var items = mark.items;\n\n    if (items.length === 0) {\n      return bounds;\n    } else {\n      shape(boundContext(bounds), items);\n      return boundStroke(bounds, items[0]);\n    }\n  }\n\n  function draw(context, items) {\n    context.beginPath();\n    shape(context, items);\n  }\n\n  const hit = hitPath(draw);\n\n  function pick(context, scene, x, y, gx, gy) {\n    var items = scene.items,\n        b = scene.bounds;\n\n    if (!items || !items.length || b && !b.contains(gx, gy)) {\n      return null;\n    }\n\n    x *= context.pixelRatio;\n    y *= context.pixelRatio;\n    return hit(context, items, x, y) ? items[0] : null;\n  }\n\n  return {\n    type: type,\n    tag: 'path',\n    nested: true,\n    attr: attr,\n    bound: bound,\n    draw: drawOne(draw),\n    pick: pick,\n    isect: intersectPoint,\n    tip: tip\n  };\n}\n\nvar area = markMultiItemPath('area', area$1, pickArea);\n\nfunction clip (context, scene) {\n  var clip = scene.clip;\n  context.save();\n\n  if (Object(vega_util__WEBPACK_IMPORTED_MODULE_0__[\"isFunction\"])(clip)) {\n    context.beginPath();\n    clip(context);\n    context.clip();\n  } else {\n    clipGroup(context, scene.group);\n  }\n}\nfunction clipGroup(context, group) {\n  context.beginPath();\n  hasCornerRadius(group) ? rectangle(context, group, 0, 0) : context.rect(0, 0, group.width || 0, group.height || 0);\n  context.clip();\n}\n\nfunction offset$1(item) {\n  const sw = value(item.strokeWidth, 1);\n  return item.strokeOffset != null ? item.strokeOffset : item.stroke && sw > 0.5 && sw < 1.5 ? 0.5 - Math.abs(sw - 1) : 0;\n}\n\nfunction attr$5(emit, item) {\n  emit('transform', translateItem(item));\n}\n\nfunction emitRectangle(emit, item) {\n  const off = offset$1(item);\n  emit('d', rectangle(null, item, off, off));\n}\n\nfunction background(emit, item) {\n  emit('class', 'background');\n  emit('aria-hidden', true);\n  emitRectangle(emit, item);\n}\n\nfunction foreground(emit, item) {\n  emit('class', 'foreground');\n  emit('aria-hidden', true);\n\n  if (item.strokeForeground) {\n    emitRectangle(emit, item);\n  } else {\n    emit('d', '');\n  }\n}\n\nfunction content(emit, item, renderer) {\n  const url = item.clip ? clip$1(renderer, item, item) : null;\n  emit('clip-path', url);\n}\n\nfunction bound$5(bounds, group) {\n  if (!group.clip && group.items) {\n    const items = group.items,\n          m = items.length;\n\n    for (let j = 0; j < m; ++j) {\n      bounds.union(items[j].bounds);\n    }\n  }\n\n  if ((group.clip || group.width || group.height) && !group.noBound) {\n    bounds.add(0, 0).add(group.width || 0, group.height || 0);\n  }\n\n  boundStroke(bounds, group);\n  return bounds.translate(group.x || 0, group.y || 0);\n}\n\nfunction rectanglePath(context, group, x, y) {\n  const off = offset$1(group);\n  context.beginPath();\n  rectangle(context, group, (x || 0) + off, (y || 0) + off);\n}\n\nconst hitBackground = hitPath(rectanglePath);\nconst hitForeground = hitPath(rectanglePath, false);\nconst hitCorner = hitPath(rectanglePath, true);\n\nfunction draw$4(context, scene, bounds) {\n  visit(scene, group => {\n    const gx = group.x || 0,\n          gy = group.y || 0,\n          fore = group.strokeForeground,\n          opacity = group.opacity == null ? 1 : group.opacity; // draw group background\n\n    if ((group.stroke || group.fill) && opacity) {\n      rectanglePath(context, group, gx, gy);\n      blend(context, group);\n\n      if (group.fill && fill(context, group, opacity)) {\n        context.fill();\n      }\n\n      if (group.stroke && !fore && stroke(context, group, opacity)) {\n        context.stroke();\n      }\n    } // setup graphics context, set clip and bounds\n\n\n    context.save();\n    context.translate(gx, gy);\n    if (group.clip) clipGroup(context, group);\n    if (bounds) bounds.translate(-gx, -gy); // draw group contents\n\n    visit(group, item => {\n      this.draw(context, item, bounds);\n    }); // restore graphics context\n\n    if (bounds) bounds.translate(gx, gy);\n    context.restore(); // draw group foreground\n\n    if (fore && group.stroke && opacity) {\n      rectanglePath(context, group, gx, gy);\n      blend(context, group);\n\n      if (stroke(context, group, opacity)) {\n        context.stroke();\n      }\n    }\n  });\n}\n\nfunction pick(context, scene, x, y, gx, gy) {\n  if (scene.bounds && !scene.bounds.contains(gx, gy) || !scene.items) {\n    return null;\n  }\n\n  const cx = x * context.pixelRatio,\n        cy = y * context.pixelRatio;\n  return pickVisit(scene, group => {\n    let hit, dx, dy; // first hit test bounding box\n\n    const b = group.bounds;\n    if (b && !b.contains(gx, gy)) return; // passed bounds check, test rectangular clip\n\n    dx = group.x || 0;\n    dy = group.y || 0;\n    const dw = dx + (group.width || 0),\n          dh = dy + (group.height || 0),\n          c = group.clip;\n    if (c && (gx < dx || gx > dw || gy < dy || gy > dh)) return; // adjust coordinate system\n\n    context.save();\n    context.translate(dx, dy);\n    dx = gx - dx;\n    dy = gy - dy; // test background for rounded corner clip\n\n    if (c && hasCornerRadius(group) && !hitCorner(context, group, cx, cy)) {\n      context.restore();\n      return null;\n    }\n\n    const fore = group.strokeForeground,\n          ix = scene.interactive !== false; // hit test against group foreground\n\n    if (ix && fore && group.stroke && hitForeground(context, group, cx, cy)) {\n      context.restore();\n      return group;\n    } // hit test against contained marks\n\n\n    hit = pickVisit(group, mark => pickMark(mark, dx, dy) ? this.pick(mark, x, y, dx, dy) : null); // hit test against group background\n\n    if (!hit && ix && (group.fill || !fore && group.stroke) && hitBackground(context, group, cx, cy)) {\n      hit = group;\n    } // restore state and return\n\n\n    context.restore();\n    return hit || null;\n  });\n}\n\nfunction pickMark(mark, x, y) {\n  return (mark.interactive !== false || mark.marktype === 'group') && mark.bounds && mark.bounds.contains(x, y);\n}\n\nvar group = {\n  type: 'group',\n  tag: 'g',\n  nested: false,\n  attr: attr$5,\n  bound: bound$5,\n  draw: draw$4,\n  pick: pick,\n  isect: intersectRect,\n  content: content,\n  background: background,\n  foreground: foreground\n};\n\nvar metadata = {\n  'xmlns': 'http://www.w3.org/2000/svg',\n  'xmlns:xlink': 'http://www.w3.org/1999/xlink',\n  'version': '1.1'\n};\n\nfunction getImage(item, renderer) {\n  var image = item.image;\n\n  if (!image || item.url && item.url !== image.url) {\n    image = {\n      complete: false,\n      width: 0,\n      height: 0\n    };\n    renderer.loadImage(item.url).then(image => {\n      item.image = image;\n      item.image.url = item.url;\n    });\n  }\n\n  return image;\n}\n\nfunction imageWidth(item, image) {\n  return item.width != null ? item.width : !image || !image.width ? 0 : item.aspect !== false && item.height ? item.height * image.width / image.height : image.width;\n}\n\nfunction imageHeight(item, image) {\n  return item.height != null ? item.height : !image || !image.height ? 0 : item.aspect !== false && item.width ? item.width * image.height / image.width : image.height;\n}\n\nfunction imageXOffset(align, w) {\n  return align === 'center' ? w / 2 : align === 'right' ? w : 0;\n}\n\nfunction imageYOffset(baseline, h) {\n  return baseline === 'middle' ? h / 2 : baseline === 'bottom' ? h : 0;\n}\n\nfunction attr$4(emit, item, renderer) {\n  const img = getImage(item, renderer),\n        w = imageWidth(item, img),\n        h = imageHeight(item, img),\n        x = (item.x || 0) - imageXOffset(item.align, w),\n        y = (item.y || 0) - imageYOffset(item.baseline, h),\n        i = !img.src && img.toDataURL ? img.toDataURL() : img.src || '';\n  emit('href', i, metadata['xmlns:xlink'], 'xlink:href');\n  emit('transform', translate(x, y));\n  emit('width', w);\n  emit('height', h);\n  emit('preserveAspectRatio', item.aspect === false ? 'none' : 'xMidYMid');\n}\n\nfunction bound$4(bounds, item) {\n  const img = item.image,\n        w = imageWidth(item, img),\n        h = imageHeight(item, img),\n        x = (item.x || 0) - imageXOffset(item.align, w),\n        y = (item.y || 0) - imageYOffset(item.baseline, h);\n  return bounds.set(x, y, x + w, y + h);\n}\n\nfunction draw$3(context, scene, bounds) {\n  visit(scene, item => {\n    if (bounds && !bounds.intersects(item.bounds)) return; // bounds check\n\n    const img = getImage(item, this);\n    let w = imageWidth(item, img);\n    let h = imageHeight(item, img);\n    if (w === 0 || h === 0) return; // early exit\n\n    let x = (item.x || 0) - imageXOffset(item.align, w),\n        y = (item.y || 0) - imageYOffset(item.baseline, h),\n        opacity,\n        ar0,\n        ar1,\n        t;\n\n    if (item.aspect !== false) {\n      ar0 = img.width / img.height;\n      ar1 = item.width / item.height;\n\n      if (ar0 === ar0 && ar1 === ar1 && ar0 !== ar1) {\n        if (ar1 < ar0) {\n          t = w / ar0;\n          y += (h - t) / 2;\n          h = t;\n        } else {\n          t = h * ar0;\n          x += (w - t) / 2;\n          w = t;\n        }\n      }\n    }\n\n    if (img.complete || img.toDataURL) {\n      blend(context, item);\n      context.globalAlpha = (opacity = item.opacity) != null ? opacity : 1;\n      context.imageSmoothingEnabled = item.smooth !== false;\n      context.drawImage(img, x, y, w, h);\n    }\n  });\n}\n\nvar image = {\n  type: 'image',\n  tag: 'image',\n  nested: false,\n  attr: attr$4,\n  bound: bound$4,\n  draw: draw$3,\n  pick: pick$1(),\n  isect: vega_util__WEBPACK_IMPORTED_MODULE_0__[\"truthy\"],\n  // bounds check is sufficient\n  get: getImage,\n  xOffset: imageXOffset,\n  yOffset: imageYOffset\n};\n\nvar line = markMultiItemPath('line', line$1, pickLine);\n\nfunction attr$3(emit, item) {\n  var sx = item.scaleX || 1,\n      sy = item.scaleY || 1;\n\n  if (sx !== 1 || sy !== 1) {\n    emit('vector-effect', 'non-scaling-stroke');\n  }\n\n  emit('transform', transformItem(item));\n  emit('d', item.path);\n}\n\nfunction path$1(context, item) {\n  var path = item.path;\n  if (path == null) return true;\n  var x = item.x || 0,\n      y = item.y || 0,\n      sx = item.scaleX || 1,\n      sy = item.scaleY || 1,\n      a = (item.angle || 0) * DegToRad,\n      cache = item.pathCache;\n\n  if (!cache || cache.path !== path) {\n    (item.pathCache = cache = pathParse(path)).path = path;\n  }\n\n  if (a && context.rotate && context.translate) {\n    context.translate(x, y);\n    context.rotate(a);\n    pathRender(context, cache, 0, 0, sx, sy);\n    context.rotate(-a);\n    context.translate(-x, -y);\n  } else {\n    pathRender(context, cache, x, y, sx, sy);\n  }\n}\n\nfunction bound$3(bounds, item) {\n  return path$1(boundContext(bounds, item.angle), item) ? bounds.set(0, 0, 0, 0) : boundStroke(bounds, item, true);\n}\n\nvar path$2 = {\n  type: 'path',\n  tag: 'path',\n  nested: false,\n  attr: attr$3,\n  bound: bound$3,\n  draw: drawAll(path$1),\n  pick: pickPath(path$1),\n  isect: intersectPath(path$1)\n};\n\nfunction attr$2(emit, item) {\n  emit('d', rectangle(null, item));\n}\n\nfunction bound$2(bounds, item) {\n  var x, y;\n  return boundStroke(bounds.set(x = item.x || 0, y = item.y || 0, x + item.width || 0, y + item.height || 0), item);\n}\n\nfunction draw$2(context, item) {\n  context.beginPath();\n  rectangle(context, item);\n}\n\nvar rect = {\n  type: 'rect',\n  tag: 'path',\n  nested: false,\n  attr: attr$2,\n  bound: bound$2,\n  draw: drawAll(draw$2),\n  pick: pickPath(draw$2),\n  isect: intersectRect\n};\n\nfunction attr$1(emit, item) {\n  emit('transform', translateItem(item));\n  emit('x2', item.x2 != null ? item.x2 - (item.x || 0) : 0);\n  emit('y2', item.y2 != null ? item.y2 - (item.y || 0) : 0);\n}\n\nfunction bound$1(bounds, item) {\n  var x1, y1;\n  return boundStroke(bounds.set(x1 = item.x || 0, y1 = item.y || 0, item.x2 != null ? item.x2 : x1, item.y2 != null ? item.y2 : y1), item);\n}\n\nfunction path(context, item, opacity) {\n  var x1, y1, x2, y2;\n\n  if (item.stroke && stroke(context, item, opacity)) {\n    x1 = item.x || 0;\n    y1 = item.y || 0;\n    x2 = item.x2 != null ? item.x2 : x1;\n    y2 = item.y2 != null ? item.y2 : y1;\n    context.beginPath();\n    context.moveTo(x1, y1);\n    context.lineTo(x2, y2);\n    return true;\n  }\n\n  return false;\n}\n\nfunction draw$1(context, scene, bounds) {\n  visit(scene, item => {\n    if (bounds && !bounds.intersects(item.bounds)) return; // bounds check\n\n    var opacity = item.opacity == null ? 1 : item.opacity;\n\n    if (opacity && path(context, item, opacity)) {\n      blend(context, item);\n      context.stroke();\n    }\n  });\n}\n\nfunction hit$1(context, item, x, y) {\n  if (!context.isPointInStroke) return false;\n  return path(context, item, 1) && context.isPointInStroke(x, y);\n}\n\nvar rule = {\n  type: 'rule',\n  tag: 'line',\n  nested: false,\n  attr: attr$1,\n  bound: bound$1,\n  draw: draw$1,\n  pick: pick$1(hit$1),\n  isect: intersectRule\n};\n\nvar shape = markItemPath('shape', shape$1);\n\nvar symbol = markItemPath('symbol', symbol$1, intersectPoint);\n\nconst widthCache = Object(vega_util__WEBPACK_IMPORTED_MODULE_0__[\"lruCache\"])();\nvar textMetrics = {\n  height: fontSize,\n  measureWidth: measureWidth,\n  estimateWidth: estimateWidth,\n  width: estimateWidth,\n  canvas: useCanvas\n};\nuseCanvas(true);\n\nfunction useCanvas(use) {\n  textMetrics.width = use && context ? measureWidth : estimateWidth;\n} // make simple estimate if no canvas is available\n\n\nfunction estimateWidth(item, text) {\n  return _estimateWidth(textValue(item, text), fontSize(item));\n}\n\nfunction _estimateWidth(text, currentFontHeight) {\n  return ~~(0.8 * text.length * currentFontHeight);\n} // measure text width if canvas is available\n\n\nfunction measureWidth(item, text) {\n  return fontSize(item) <= 0 || !(text = textValue(item, text)) ? 0 : _measureWidth(text, font(item));\n}\n\nfunction _measureWidth(text, currentFont) {\n  const key = `(${currentFont}) ${text}`;\n  let width = widthCache.get(key);\n\n  if (width === undefined) {\n    context.font = currentFont;\n    width = context.measureText(text).width;\n    widthCache.set(key, width);\n  }\n\n  return width;\n}\n\nfunction fontSize(item) {\n  return item.fontSize != null ? +item.fontSize || 0 : 11;\n}\nfunction lineHeight(item) {\n  return item.lineHeight != null ? item.lineHeight : fontSize(item) + 2;\n}\n\nfunction lineArray(_) {\n  return Object(vega_util__WEBPACK_IMPORTED_MODULE_0__[\"isArray\"])(_) ? _.length > 1 ? _ : _[0] : _;\n}\n\nfunction textLines(item) {\n  return lineArray(item.lineBreak && item.text && !Object(vega_util__WEBPACK_IMPORTED_MODULE_0__[\"isArray\"])(item.text) ? item.text.split(item.lineBreak) : item.text);\n}\nfunction multiLineOffset(item) {\n  const tl = textLines(item);\n  return (Object(vega_util__WEBPACK_IMPORTED_MODULE_0__[\"isArray\"])(tl) ? tl.length - 1 : 0) * lineHeight(item);\n}\nfunction textValue(item, line) {\n  const text = line == null ? '' : (line + '').trim();\n  return item.limit > 0 && text.length ? truncate(item, text) : text;\n}\n\nfunction widthGetter(item) {\n  if (textMetrics.width === measureWidth) {\n    // we are using canvas\n    const currentFont = font(item);\n    return text => _measureWidth(text, currentFont);\n  } else {\n    // we are relying on estimates\n    const currentFontHeight = fontSize(item);\n    return text => _estimateWidth(text, currentFontHeight);\n  }\n}\n\nfunction truncate(item, text) {\n  var limit = +item.limit,\n      width = widthGetter(item);\n  if (width(text) < limit) return text;\n  var ellipsis = item.ellipsis || '\\u2026',\n      rtl = item.dir === 'rtl',\n      lo = 0,\n      hi = text.length,\n      mid;\n  limit -= width(ellipsis);\n\n  if (rtl) {\n    while (lo < hi) {\n      mid = lo + hi >>> 1;\n      if (width(text.slice(mid)) > limit) lo = mid + 1;else hi = mid;\n    }\n\n    return ellipsis + text.slice(lo);\n  } else {\n    while (lo < hi) {\n      mid = 1 + (lo + hi >>> 1);\n      if (width(text.slice(0, mid)) < limit) lo = mid;else hi = mid - 1;\n    }\n\n    return text.slice(0, lo) + ellipsis;\n  }\n}\n\nfunction fontFamily(item, quote) {\n  var font = item.font;\n  return (quote && font ? String(font).replace(/\"/g, '\\'') : font) || 'sans-serif';\n}\nfunction font(item, quote) {\n  return '' + (item.fontStyle ? item.fontStyle + ' ' : '') + (item.fontVariant ? item.fontVariant + ' ' : '') + (item.fontWeight ? item.fontWeight + ' ' : '') + fontSize(item) + 'px ' + fontFamily(item, quote);\n}\nfunction offset(item) {\n  // perform our own font baseline calculation\n  // why? not all browsers support SVG 1.1 'alignment-baseline' :(\n  // this also ensures consistent layout across renderers\n  var baseline = item.baseline,\n      h = fontSize(item);\n  return Math.round(baseline === 'top' ? 0.79 * h : baseline === 'middle' ? 0.30 * h : baseline === 'bottom' ? -0.21 * h : baseline === 'line-top' ? 0.29 * h + 0.5 * lineHeight(item) : baseline === 'line-bottom' ? 0.29 * h - 0.5 * lineHeight(item) : 0);\n}\n\nconst textAlign = {\n  'left': 'start',\n  'center': 'middle',\n  'right': 'end'\n};\nconst tempBounds = new Bounds();\n\nfunction anchorPoint(item) {\n  var x = item.x || 0,\n      y = item.y || 0,\n      r = item.radius || 0,\n      t;\n\n  if (r) {\n    t = (item.theta || 0) - HalfPi;\n    x += r * Math.cos(t);\n    y += r * Math.sin(t);\n  }\n\n  tempBounds.x1 = x;\n  tempBounds.y1 = y;\n  return tempBounds;\n}\n\nfunction attr(emit, item) {\n  var dx = item.dx || 0,\n      dy = (item.dy || 0) + offset(item),\n      p = anchorPoint(item),\n      x = p.x1,\n      y = p.y1,\n      a = item.angle || 0,\n      t;\n  emit('text-anchor', textAlign[item.align] || 'start');\n\n  if (a) {\n    t = translate(x, y) + ' ' + rotate(a);\n    if (dx || dy) t += ' ' + translate(dx, dy);\n  } else {\n    t = translate(x + dx, y + dy);\n  }\n\n  emit('transform', t);\n}\n\nfunction bound(bounds, item, mode) {\n  var h = textMetrics.height(item),\n      a = item.align,\n      p = anchorPoint(item),\n      x = p.x1,\n      y = p.y1,\n      dx = item.dx || 0,\n      dy = (item.dy || 0) + offset(item) - Math.round(0.8 * h),\n      // use 4/5 offset\n  tl = textLines(item),\n      w; // get dimensions\n\n  if (Object(vega_util__WEBPACK_IMPORTED_MODULE_0__[\"isArray\"])(tl)) {\n    // multi-line text\n    h += lineHeight(item) * (tl.length - 1);\n    w = tl.reduce((w, t) => Math.max(w, textMetrics.width(item, t)), 0);\n  } else {\n    // single-line text\n    w = textMetrics.width(item, tl);\n  } // horizontal alignment\n\n\n  if (a === 'center') {\n    dx -= w / 2;\n  } else if (a === 'right') {\n    dx -= w;\n  } else ;\n\n  bounds.set(dx += x, dy += y, dx + w, dy + h);\n\n  if (item.angle && !mode) {\n    bounds.rotate(item.angle * DegToRad, x, y);\n  } else if (mode === 2) {\n    return bounds.rotatedPoints(item.angle * DegToRad, x, y);\n  }\n\n  return bounds;\n}\n\nfunction draw(context, scene, bounds) {\n  visit(scene, item => {\n    var opacity = item.opacity == null ? 1 : item.opacity,\n        p,\n        x,\n        y,\n        i,\n        lh,\n        tl,\n        str;\n    if (bounds && !bounds.intersects(item.bounds) || // bounds check\n    opacity === 0 || item.fontSize <= 0 || item.text == null || item.text.length === 0) return;\n    context.font = font(item);\n    context.textAlign = item.align || 'left';\n    p = anchorPoint(item);\n    x = p.x1, y = p.y1;\n\n    if (item.angle) {\n      context.save();\n      context.translate(x, y);\n      context.rotate(item.angle * DegToRad);\n      x = y = 0; // reset x, y\n    }\n\n    x += item.dx || 0;\n    y += (item.dy || 0) + offset(item);\n    tl = textLines(item);\n    blend(context, item);\n\n    if (Object(vega_util__WEBPACK_IMPORTED_MODULE_0__[\"isArray\"])(tl)) {\n      lh = lineHeight(item);\n\n      for (i = 0; i < tl.length; ++i) {\n        str = textValue(item, tl[i]);\n\n        if (item.fill && fill(context, item, opacity)) {\n          context.fillText(str, x, y);\n        }\n\n        if (item.stroke && stroke(context, item, opacity)) {\n          context.strokeText(str, x, y);\n        }\n\n        y += lh;\n      }\n    } else {\n      str = textValue(item, tl);\n\n      if (item.fill && fill(context, item, opacity)) {\n        context.fillText(str, x, y);\n      }\n\n      if (item.stroke && stroke(context, item, opacity)) {\n        context.strokeText(str, x, y);\n      }\n    }\n\n    if (item.angle) context.restore();\n  });\n}\n\nfunction hit(context, item, x, y, gx, gy) {\n  if (item.fontSize <= 0) return false;\n  if (!item.angle) return true; // bounds sufficient if no rotation\n  // project point into space of unrotated bounds\n\n  var p = anchorPoint(item),\n      ax = p.x1,\n      ay = p.y1,\n      b = bound(tempBounds, item, 1),\n      a = -item.angle * DegToRad,\n      cos = Math.cos(a),\n      sin = Math.sin(a),\n      px = cos * gx - sin * gy + (ax - cos * ax + sin * ay),\n      py = sin * gx + cos * gy + (ay - sin * ax - cos * ay);\n  return b.contains(px, py);\n}\n\nfunction intersectText(item, box) {\n  const p = bound(tempBounds, item, 2);\n  return intersectBoxLine(box, p[0], p[1], p[2], p[3]) || intersectBoxLine(box, p[0], p[1], p[4], p[5]) || intersectBoxLine(box, p[4], p[5], p[6], p[7]) || intersectBoxLine(box, p[2], p[3], p[6], p[7]);\n}\n\nvar text = {\n  type: 'text',\n  tag: 'text',\n  nested: false,\n  attr: attr,\n  bound: bound,\n  draw: draw,\n  pick: pick$1(hit),\n  isect: intersectText\n};\n\nvar trail = markMultiItemPath('trail', trail$1, pickTrail);\n\nvar Marks = {\n  arc: arc,\n  area: area,\n  group: group,\n  image: image,\n  line: line,\n  path: path$2,\n  rect: rect,\n  rule: rule,\n  shape: shape,\n  symbol: symbol,\n  text: text,\n  trail: trail\n};\n\nfunction boundItem (item, func, opt) {\n  var type = Marks[item.mark.marktype],\n      bound = func || type.bound;\n  if (type.nested) item = item.mark;\n  return bound(item.bounds || (item.bounds = new Bounds()), item, opt);\n}\n\nvar DUMMY = {\n  mark: null\n};\nfunction boundMark (mark, bounds, opt) {\n  var type = Marks[mark.marktype],\n      bound = type.bound,\n      items = mark.items,\n      hasItems = items && items.length,\n      i,\n      n,\n      item,\n      b;\n\n  if (type.nested) {\n    if (hasItems) {\n      item = items[0];\n    } else {\n      // no items, fake it\n      DUMMY.mark = mark;\n      item = DUMMY;\n    }\n\n    b = boundItem(item, bound, opt);\n    bounds = bounds && bounds.union(b) || b;\n    return bounds;\n  }\n\n  bounds = bounds || mark.bounds && mark.bounds.clear() || new Bounds();\n\n  if (hasItems) {\n    for (i = 0, n = items.length; i < n; ++i) {\n      bounds.union(boundItem(items[i], bound, opt));\n    }\n  }\n\n  return mark.bounds = bounds;\n}\n\nconst keys = ['marktype', 'name', 'role', 'interactive', 'clip', 'items', 'zindex', 'x', 'y', 'width', 'height', 'align', 'baseline', // layout\n'fill', 'fillOpacity', 'opacity', 'blend', // fill\n'stroke', 'strokeOpacity', 'strokeWidth', 'strokeCap', // stroke\n'strokeDash', 'strokeDashOffset', // stroke dash\n'strokeForeground', 'strokeOffset', // group\n'startAngle', 'endAngle', 'innerRadius', 'outerRadius', // arc\n'cornerRadius', 'padAngle', // arc, rect\n'cornerRadiusTopLeft', 'cornerRadiusTopRight', // rect, group\n'cornerRadiusBottomLeft', 'cornerRadiusBottomRight', 'interpolate', 'tension', 'orient', 'defined', // area, line\n'url', 'aspect', 'smooth', // image\n'path', 'scaleX', 'scaleY', // path\n'x2', 'y2', // rule\n'size', 'shape', // symbol\n'text', 'angle', 'theta', 'radius', 'dir', 'dx', 'dy', // text\n'ellipsis', 'limit', 'lineBreak', 'lineHeight', 'font', 'fontSize', 'fontWeight', 'fontStyle', 'fontVariant', // font\n'description', 'aria', 'ariaRole', 'ariaRoleDescription' // aria\n];\nfunction sceneToJSON(scene, indent) {\n  return JSON.stringify(scene, keys, indent);\n}\nfunction sceneFromJSON(json) {\n  const scene = typeof json === 'string' ? JSON.parse(json) : json;\n  return initialize(scene);\n}\n\nfunction initialize(scene) {\n  var type = scene.marktype,\n      items = scene.items,\n      parent,\n      i,\n      n;\n\n  if (items) {\n    for (i = 0, n = items.length; i < n; ++i) {\n      parent = type ? 'mark' : 'group';\n      items[i][parent] = scene;\n      if (items[i].zindex) items[i][parent].zdirty = true;\n      if ('group' === (type || parent)) initialize(items[i]);\n    }\n  }\n\n  if (type) boundMark(scene);\n  return scene;\n}\n\nfunction Scenegraph(scene) {\n  if (arguments.length) {\n    this.root = sceneFromJSON(scene);\n  } else {\n    this.root = createMark({\n      marktype: 'group',\n      name: 'root',\n      role: 'frame'\n    });\n    this.root.items = [new GroupItem(this.root)];\n  }\n}\nScenegraph.prototype = {\n  toJSON(indent) {\n    return sceneToJSON(this.root, indent || 0);\n  },\n\n  mark(markdef, group, index) {\n    group = group || this.root.items[0];\n    const mark = createMark(markdef, group);\n    group.items[index] = mark;\n    if (mark.zindex) mark.group.zdirty = true;\n    return mark;\n  }\n\n};\n\nfunction createMark(def, group) {\n  const mark = {\n    bounds: new Bounds(),\n    clip: !!def.clip,\n    group: group,\n    interactive: def.interactive === false ? false : true,\n    items: [],\n    marktype: def.marktype,\n    name: def.name || undefined,\n    role: def.role || undefined,\n    zindex: def.zindex || 0\n  }; // add accessibility properties if defined\n\n  if (def.aria != null) {\n    mark.aria = def.aria;\n  }\n\n  if (def.description) {\n    mark.description = def.description;\n  }\n\n  return mark;\n}\n\n// create a new DOM element\nfunction domCreate(doc, tag, ns) {\n  if (!doc && typeof document !== 'undefined' && document.createElement) {\n    doc = document;\n  }\n\n  return doc ? ns ? doc.createElementNS(ns, tag) : doc.createElement(tag) : null;\n} // find first child element with matching tag\n\nfunction domFind(el, tag) {\n  tag = tag.toLowerCase();\n  var nodes = el.childNodes,\n      i = 0,\n      n = nodes.length;\n\n  for (; i < n; ++i) if (nodes[i].tagName.toLowerCase() === tag) {\n    return nodes[i];\n  }\n} // retrieve child element at given index\n// create & insert if doesn't exist or if tags do not match\n\nfunction domChild(el, index, tag, ns) {\n  var a = el.childNodes[index],\n      b;\n\n  if (!a || a.tagName.toLowerCase() !== tag.toLowerCase()) {\n    b = a || null;\n    a = domCreate(el.ownerDocument, tag, ns);\n    el.insertBefore(a, b);\n  }\n\n  return a;\n} // remove all child elements at or above the given index\n\nfunction domClear(el, index) {\n  var nodes = el.childNodes,\n      curr = nodes.length;\n\n  while (curr > index) el.removeChild(nodes[--curr]);\n\n  return el;\n} // generate css class name for mark\n\nfunction cssClass(mark) {\n  return 'mark-' + mark.marktype + (mark.role ? ' role-' + mark.role : '') + (mark.name ? ' ' + mark.name : '');\n}\n\nfunction point (event, el) {\n  const rect = el.getBoundingClientRect();\n  return [event.clientX - rect.left - (el.clientLeft || 0), event.clientY - rect.top - (el.clientTop || 0)];\n}\n\nfunction resolveItem (item, event, el, origin) {\n  var mark = item && item.mark,\n      mdef,\n      p;\n\n  if (mark && (mdef = Marks[mark.marktype]).tip) {\n    p = point(event, el);\n    p[0] -= origin[0];\n    p[1] -= origin[1];\n\n    while (item = item.mark.group) {\n      p[0] -= item.x || 0;\n      p[1] -= item.y || 0;\n    }\n\n    item = mdef.tip(mark.items, p);\n  }\n\n  return item;\n}\n\n/**\n * Create a new Handler instance.\n * @param {object} [customLoader] - Optional loader instance for\n *   href URL sanitization. If not specified, a standard loader\n *   instance will be generated.\n * @param {function} [customTooltip] - Optional tooltip handler\n *   function for custom tooltip display.\n * @constructor\n */\n\nfunction Handler(customLoader, customTooltip) {\n  this._active = null;\n  this._handlers = {};\n  this._loader = customLoader || Object(vega_loader__WEBPACK_IMPORTED_MODULE_4__[\"loader\"])();\n  this._tooltip = customTooltip || defaultTooltip;\n} // The default tooltip display handler.\n// Sets the HTML title attribute on the visualization container.\n\nfunction defaultTooltip(handler, event, item, value) {\n  handler.element().setAttribute('title', value || '');\n}\n\nHandler.prototype = {\n  /**\n   * Initialize a new Handler instance.\n   * @param {DOMElement} el - The containing DOM element for the display.\n   * @param {Array<number>} origin - The origin of the display, in pixels.\n   *   The coordinate system will be translated to this point.\n   * @param {object} [obj] - Optional context object that should serve as\n   *   the \"this\" context for event callbacks.\n   * @return {Handler} - This handler instance.\n   */\n  initialize(el, origin, obj) {\n    this._el = el;\n    this._obj = obj || null;\n    return this.origin(origin);\n  },\n\n  /**\n   * Returns the parent container element for a visualization.\n   * @return {DOMElement} - The containing DOM element.\n   */\n  element() {\n    return this._el;\n  },\n\n  /**\n   * Returns the scene element (e.g., canvas or SVG) of the visualization\n   * Subclasses must override if the first child is not the scene element.\n   * @return {DOMElement} - The scene (e.g., canvas or SVG) element.\n   */\n  canvas() {\n    return this._el && this._el.firstChild;\n  },\n\n  /**\n   * Get / set the origin coordinates of the visualization.\n   */\n  origin(origin) {\n    if (arguments.length) {\n      this._origin = origin || [0, 0];\n      return this;\n    } else {\n      return this._origin.slice();\n    }\n  },\n\n  /**\n   * Get / set the scenegraph root.\n   */\n  scene(scene) {\n    if (!arguments.length) return this._scene;\n    this._scene = scene;\n    return this;\n  },\n\n  /**\n   * Add an event handler. Subclasses should override this method.\n   */\n  on()\n  /*type, handler*/\n  {},\n\n  /**\n   * Remove an event handler. Subclasses should override this method.\n   */\n  off()\n  /*type, handler*/\n  {},\n\n  /**\n   * Utility method for finding the array index of an event handler.\n   * @param {Array} h - An array of registered event handlers.\n   * @param {string} type - The event type.\n   * @param {function} handler - The event handler instance to find.\n   * @return {number} - The handler's array index or -1 if not registered.\n   */\n  _handlerIndex(h, type, handler) {\n    for (let i = h ? h.length : 0; --i >= 0;) {\n      if (h[i].type === type && (!handler || h[i].handler === handler)) {\n        return i;\n      }\n    }\n\n    return -1;\n  },\n\n  /**\n   * Returns an array with registered event handlers.\n   * @param {string} [type] - The event type to query. Any annotations\n   *   are ignored; for example, for the argument \"click.foo\", \".foo\" will\n   *   be ignored and the method returns all \"click\" handlers. If type is\n   *   null or unspecified, this method returns handlers for all types.\n   * @return {Array} - A new array containing all registered event handlers.\n   */\n  handlers(type) {\n    const h = this._handlers,\n          a = [];\n\n    if (type) {\n      a.push(...h[this.eventName(type)]);\n    } else {\n      for (const k in h) {\n        a.push(...h[k]);\n      }\n    }\n\n    return a;\n  },\n\n  /**\n   * Parses an event name string to return the specific event type.\n   * For example, given \"click.foo\" returns \"click\"\n   * @param {string} name - The input event type string.\n   * @return {string} - A string with the event type only.\n   */\n  eventName(name) {\n    const i = name.indexOf('.');\n    return i < 0 ? name : name.slice(0, i);\n  },\n\n  /**\n   * Handle hyperlink navigation in response to an item.href value.\n   * @param {Event} event - The event triggering hyperlink navigation.\n   * @param {Item} item - The scenegraph item.\n   * @param {string} href - The URL to navigate to.\n   */\n  handleHref(event, item, href) {\n    this._loader.sanitize(href, {\n      context: 'href'\n    }).then(opt => {\n      const e = new MouseEvent(event.type, event),\n            a = domCreate(null, 'a');\n\n      for (const name in opt) a.setAttribute(name, opt[name]);\n\n      a.dispatchEvent(e);\n    }).catch(() => {\n      /* do nothing */\n    });\n  },\n\n  /**\n   * Handle tooltip display in response to an item.tooltip value.\n   * @param {Event} event - The event triggering tooltip display.\n   * @param {Item} item - The scenegraph item.\n   * @param {boolean} show - A boolean flag indicating whether\n   *   to show or hide a tooltip for the given item.\n   */\n  handleTooltip(event, item, show) {\n    if (item && item.tooltip != null) {\n      item = resolveItem(item, event, this.canvas(), this._origin);\n      const value = show && item && item.tooltip || null;\n\n      this._tooltip.call(this._obj, this, event, item, value);\n    }\n  },\n\n  /**\n   * Returns the size of a scenegraph item and its position relative\n   * to the viewport.\n   * @param {Item} item - The scenegraph item.\n   * @return {object} - A bounding box object (compatible with the\n   *   DOMRect type) consisting of x, y, width, heigh, top, left,\n   *   right, and bottom properties.\n   */\n  getItemBoundingClientRect(item) {\n    const el = this.canvas();\n    if (!el) return;\n    const rect = el.getBoundingClientRect(),\n          origin = this._origin,\n          bounds = item.bounds,\n          width = bounds.width(),\n          height = bounds.height();\n    let x = bounds.x1 + origin[0] + rect.left,\n        y = bounds.y1 + origin[1] + rect.top; // translate coordinate for each parent group\n\n    while (item.mark && (item = item.mark.group)) {\n      x += item.x || 0;\n      y += item.y || 0;\n    } // return DOMRect-compatible bounding box\n\n\n    return {\n      x,\n      y,\n      width,\n      height,\n      left: x,\n      top: y,\n      right: x + width,\n      bottom: y + height\n    };\n  }\n\n};\n\n/**\n * Create a new Renderer instance.\n * @param {object} [loader] - Optional loader instance for\n *   image and href URL sanitization. If not specified, a\n *   standard loader instance will be generated.\n * @constructor\n */\n\nfunction Renderer(loader) {\n  this._el = null;\n  this._bgcolor = null;\n  this._loader = new ResourceLoader(loader);\n}\nRenderer.prototype = {\n  /**\n   * Initialize a new Renderer instance.\n   * @param {DOMElement} el - The containing DOM element for the display.\n   * @param {number} width - The coordinate width of the display, in pixels.\n   * @param {number} height - The coordinate height of the display, in pixels.\n   * @param {Array<number>} origin - The origin of the display, in pixels.\n   *   The coordinate system will be translated to this point.\n   * @param {number} [scaleFactor=1] - Optional scaleFactor by which to multiply\n   *   the width and height to determine the final pixel size.\n   * @return {Renderer} - This renderer instance.\n   */\n  initialize(el, width, height, origin, scaleFactor) {\n    this._el = el;\n    return this.resize(width, height, origin, scaleFactor);\n  },\n\n  /**\n   * Returns the parent container element for a visualization.\n   * @return {DOMElement} - The containing DOM element.\n   */\n  element() {\n    return this._el;\n  },\n\n  /**\n   * Returns the scene element (e.g., canvas or SVG) of the visualization\n   * Subclasses must override if the first child is not the scene element.\n   * @return {DOMElement} - The scene (e.g., canvas or SVG) element.\n   */\n  canvas() {\n    return this._el && this._el.firstChild;\n  },\n\n  /**\n   * Get / set the background color.\n   */\n  background(bgcolor) {\n    if (arguments.length === 0) return this._bgcolor;\n    this._bgcolor = bgcolor;\n    return this;\n  },\n\n  /**\n   * Resize the display.\n   * @param {number} width - The new coordinate width of the display, in pixels.\n   * @param {number} height - The new coordinate height of the display, in pixels.\n   * @param {Array<number>} origin - The new origin of the display, in pixels.\n   *   The coordinate system will be translated to this point.\n   * @param {number} [scaleFactor=1] - Optional scaleFactor by which to multiply\n   *   the width and height to determine the final pixel size.\n   * @return {Renderer} - This renderer instance;\n   */\n  resize(width, height, origin, scaleFactor) {\n    this._width = width;\n    this._height = height;\n    this._origin = origin || [0, 0];\n    this._scale = scaleFactor || 1;\n    return this;\n  },\n\n  /**\n   * Report a dirty item whose bounds should be redrawn.\n   * This base class method does nothing. Subclasses that perform\n   * incremental should implement this method.\n   * @param {Item} item - The dirty item whose bounds should be redrawn.\n   */\n  dirty()\n  /*item*/\n  {},\n\n  /**\n   * Render an input scenegraph, potentially with a set of dirty items.\n   * This method will perform an immediate rendering with available resources.\n   * The renderer may also need to perform image loading to perform a complete\n   * render. This process can lead to asynchronous re-rendering of the scene\n   * after this method returns. To receive notification when rendering is\n   * complete, use the renderAsync method instead.\n   * @param {object} scene - The root mark of a scenegraph to render.\n   * @return {Renderer} - This renderer instance.\n   */\n  render(scene) {\n    const r = this; // bind arguments into a render call, and cache it\n    // this function may be subsequently called for async redraw\n\n    r._call = function () {\n      r._render(scene);\n    }; // invoke the renderer\n\n\n    r._call(); // clear the cached call for garbage collection\n    // async redraws will stash their own copy\n\n\n    r._call = null;\n    return r;\n  },\n\n  /**\n   * Internal rendering method. Renderer subclasses should override this\n   * method to actually perform rendering.\n   * @param {object} scene - The root mark of a scenegraph to render.\n   */\n  _render()\n  /*scene*/\n  {// subclasses to override\n  },\n\n  /**\n   * Asynchronous rendering method. Similar to render, but returns a Promise\n   * that resolves when all rendering is completed. Sometimes a renderer must\n   * perform image loading to get a complete rendering. The returned\n   * Promise will not resolve until this process completes.\n   * @param {object} scene - The root mark of a scenegraph to render.\n   * @return {Promise} - A Promise that resolves when rendering is complete.\n   */\n  renderAsync(scene) {\n    const r = this.render(scene);\n    return this._ready ? this._ready.then(() => r) : Promise.resolve(r);\n  },\n\n  /**\n   * Internal method for asynchronous resource loading.\n   * Proxies method calls to the ImageLoader, and tracks loading\n   * progress to invoke a re-render once complete.\n   * @param {string} method - The method name to invoke on the ImageLoader.\n   * @param {string} uri - The URI for the requested resource.\n   * @return {Promise} - A Promise that resolves to the requested resource.\n   */\n  _load(method, uri) {\n    var r = this,\n        p = r._loader[method](uri);\n\n    if (!r._ready) {\n      // re-render the scene when loading completes\n      const call = r._call;\n      r._ready = r._loader.ready().then(redraw => {\n        if (redraw) call();\n        r._ready = null;\n      });\n    }\n\n    return p;\n  },\n\n  /**\n   * Sanitize a URL to include as a hyperlink in the rendered scene.\n   * This method proxies a call to ImageLoader.sanitizeURL, but also tracks\n   * image loading progress and invokes a re-render once complete.\n   * @param {string} uri - The URI string to sanitize.\n   * @return {Promise} - A Promise that resolves to the sanitized URL.\n   */\n  sanitizeURL(uri) {\n    return this._load('sanitizeURL', uri);\n  },\n\n  /**\n   * Requests an image to include in the rendered scene.\n   * This method proxies a call to ImageLoader.loadImage, but also tracks\n   * image loading progress and invokes a re-render once complete.\n   * @param {string} uri - The URI string of the image.\n   * @return {Promise} - A Promise that resolves to the loaded Image.\n   */\n  loadImage(uri) {\n    return this._load('loadImage', uri);\n  }\n\n};\n\nconst KeyDownEvent = 'keydown';\nconst KeyPressEvent = 'keypress';\nconst KeyUpEvent = 'keyup';\nconst DragEnterEvent = 'dragenter';\nconst DragLeaveEvent = 'dragleave';\nconst DragOverEvent = 'dragover';\nconst MouseDownEvent = 'mousedown';\nconst MouseUpEvent = 'mouseup';\nconst MouseMoveEvent = 'mousemove';\nconst MouseOutEvent = 'mouseout';\nconst MouseOverEvent = 'mouseover';\nconst ClickEvent = 'click';\nconst DoubleClickEvent = 'dblclick';\nconst WheelEvent = 'wheel';\nconst MouseWheelEvent = 'mousewheel';\nconst TouchStartEvent = 'touchstart';\nconst TouchMoveEvent = 'touchmove';\nconst TouchEndEvent = 'touchend';\nconst Events = [KeyDownEvent, KeyPressEvent, KeyUpEvent, DragEnterEvent, DragLeaveEvent, DragOverEvent, MouseDownEvent, MouseUpEvent, MouseMoveEvent, MouseOutEvent, MouseOverEvent, ClickEvent, DoubleClickEvent, WheelEvent, MouseWheelEvent, TouchStartEvent, TouchMoveEvent, TouchEndEvent];\nconst TooltipShowEvent = MouseMoveEvent;\nconst TooltipHideEvent = MouseOutEvent;\nconst HrefEvent = ClickEvent;\n\nfunction CanvasHandler(loader, tooltip) {\n  Handler.call(this, loader, tooltip);\n  this._down = null;\n  this._touch = null;\n  this._first = true;\n  this._events = {};\n}\n\nconst eventBundle = type => type === TouchStartEvent || type === TouchMoveEvent || type === TouchEndEvent ? [TouchStartEvent, TouchMoveEvent, TouchEndEvent] : [type]; // lazily add listeners to the canvas as needed\n\n\nfunction eventListenerCheck(handler, type) {\n  eventBundle(type).forEach(_ => addEventListener(handler, _));\n}\n\nfunction addEventListener(handler, type) {\n  const canvas = handler.canvas();\n\n  if (canvas && !handler._events[type]) {\n    handler._events[type] = 1;\n    canvas.addEventListener(type, handler[type] ? evt => handler[type](evt) : evt => handler.fire(type, evt));\n  }\n}\n\nfunction move(moveEvent, overEvent, outEvent) {\n  return function (evt) {\n    const a = this._active,\n          p = this.pickEvent(evt);\n\n    if (p === a) {\n      // active item and picked item are the same\n      this.fire(moveEvent, evt); // fire move\n    } else {\n      // active item and picked item are different\n      if (!a || !a.exit) {\n        // fire out for prior active item\n        // suppress if active item was removed from scene\n        this.fire(outEvent, evt);\n      }\n\n      this._active = p; // set new active item\n\n      this.fire(overEvent, evt); // fire over for new active item\n\n      this.fire(moveEvent, evt); // fire move for new active item\n    }\n  };\n}\n\nfunction inactive(type) {\n  return function (evt) {\n    this.fire(type, evt);\n    this._active = null;\n  };\n}\n\nObject(vega_util__WEBPACK_IMPORTED_MODULE_0__[\"inherits\"])(CanvasHandler, Handler, {\n  initialize(el, origin, obj) {\n    this._canvas = el && domFind(el, 'canvas'); // add minimal events required for proper state management\n\n    [ClickEvent, MouseDownEvent, MouseMoveEvent, MouseOutEvent, DragLeaveEvent].forEach(type => eventListenerCheck(this, type));\n    return Handler.prototype.initialize.call(this, el, origin, obj);\n  },\n\n  // return the backing canvas instance\n  canvas() {\n    return this._canvas;\n  },\n\n  // retrieve the current canvas context\n  context() {\n    return this._canvas.getContext('2d');\n  },\n\n  // supported events\n  events: Events,\n\n  // to keep old versions of firefox happy\n  DOMMouseScroll(evt) {\n    this.fire(MouseWheelEvent, evt);\n  },\n\n  mousemove: move(MouseMoveEvent, MouseOverEvent, MouseOutEvent),\n  dragover: move(DragOverEvent, DragEnterEvent, DragLeaveEvent),\n  mouseout: inactive(MouseOutEvent),\n  dragleave: inactive(DragLeaveEvent),\n\n  mousedown(evt) {\n    this._down = this._active;\n    this.fire(MouseDownEvent, evt);\n  },\n\n  click(evt) {\n    if (this._down === this._active) {\n      this.fire(ClickEvent, evt);\n      this._down = null;\n    }\n  },\n\n  touchstart(evt) {\n    this._touch = this.pickEvent(evt.changedTouches[0]);\n\n    if (this._first) {\n      this._active = this._touch;\n      this._first = false;\n    }\n\n    this.fire(TouchStartEvent, evt, true);\n  },\n\n  touchmove(evt) {\n    this.fire(TouchMoveEvent, evt, true);\n  },\n\n  touchend(evt) {\n    this.fire(TouchEndEvent, evt, true);\n    this._touch = null;\n  },\n\n  // fire an event\n  fire(type, evt, touch) {\n    const a = touch ? this._touch : this._active,\n          h = this._handlers[type]; // set event type relative to scenegraph items\n\n    evt.vegaType = type; // handle hyperlinks and tooltips first\n\n    if (type === HrefEvent && a && a.href) {\n      this.handleHref(evt, a, a.href);\n    } else if (type === TooltipShowEvent || type === TooltipHideEvent) {\n      this.handleTooltip(evt, a, type !== TooltipHideEvent);\n    } // invoke all registered handlers\n\n\n    if (h) {\n      for (let i = 0, len = h.length; i < len; ++i) {\n        h[i].handler.call(this._obj, evt, a);\n      }\n    }\n  },\n\n  // add an event handler\n  on(type, handler) {\n    const name = this.eventName(type),\n          h = this._handlers,\n          i = this._handlerIndex(h[name], type, handler);\n\n    if (i < 0) {\n      eventListenerCheck(this, type);\n      (h[name] || (h[name] = [])).push({\n        type: type,\n        handler: handler\n      });\n    }\n\n    return this;\n  },\n\n  // remove an event handler\n  off(type, handler) {\n    const name = this.eventName(type),\n          h = this._handlers[name],\n          i = this._handlerIndex(h, type, handler);\n\n    if (i >= 0) {\n      h.splice(i, 1);\n    }\n\n    return this;\n  },\n\n  pickEvent(evt) {\n    const p = point(evt, this._canvas),\n          o = this._origin;\n    return this.pick(this._scene, p[0], p[1], p[0] - o[0], p[1] - o[1]);\n  },\n\n  // find the scenegraph item at the current mouse position\n  // x, y -- the absolute x, y mouse coordinates on the canvas element\n  // gx, gy -- the relative coordinates within the current group\n  pick(scene, x, y, gx, gy) {\n    const g = this.context(),\n          mark = Marks[scene.marktype];\n    return mark.pick.call(this, g, scene, x, y, gx, gy);\n  }\n\n});\n\nfunction devicePixelRatio() {\n  return typeof window !== 'undefined' ? window.devicePixelRatio || 1 : 1;\n}\n\nvar pixelRatio = devicePixelRatio();\nfunction resize (canvas, width, height, origin, scaleFactor, opt) {\n  const inDOM = typeof HTMLElement !== 'undefined' && canvas instanceof HTMLElement && canvas.parentNode != null,\n        context = canvas.getContext('2d'),\n        ratio = inDOM ? pixelRatio : scaleFactor;\n  canvas.width = width * ratio;\n  canvas.height = height * ratio;\n\n  for (const key in opt) {\n    context[key] = opt[key];\n  }\n\n  if (inDOM && ratio !== 1) {\n    canvas.style.width = width + 'px';\n    canvas.style.height = height + 'px';\n  }\n\n  context.pixelRatio = ratio;\n  context.setTransform(ratio, 0, 0, ratio, ratio * origin[0], ratio * origin[1]);\n  return canvas;\n}\n\nfunction CanvasRenderer(loader) {\n  Renderer.call(this, loader);\n  this._options = {};\n  this._redraw = false;\n  this._dirty = new Bounds();\n  this._tempb = new Bounds();\n}\nconst base$1 = Renderer.prototype;\n\nconst viewBounds = (origin, width, height) => new Bounds().set(0, 0, width, height).translate(-origin[0], -origin[1]);\n\nfunction clipToBounds(g, b, origin) {\n  // expand bounds by 1 pixel, then round to pixel boundaries\n  b.expand(1).round(); // align to base pixel grid in case of non-integer scaling (#2425)\n\n  if (g.pixelRatio % 1) {\n    b.scale(g.pixelRatio).round().scale(1 / g.pixelRatio);\n  } // to avoid artifacts translate if origin has fractional pixels\n\n\n  b.translate(-(origin[0] % 1), -(origin[1] % 1)); // set clip path\n\n  g.beginPath();\n  g.rect(b.x1, b.y1, b.width(), b.height());\n  g.clip();\n  return b;\n}\n\nObject(vega_util__WEBPACK_IMPORTED_MODULE_0__[\"inherits\"])(CanvasRenderer, Renderer, {\n  initialize(el, width, height, origin, scaleFactor, options) {\n    this._options = options || {};\n    this._canvas = this._options.externalContext ? null : Object(vega_canvas__WEBPACK_IMPORTED_MODULE_3__[\"canvas\"])(1, 1, this._options.type); // instantiate a small canvas\n\n    if (el && this._canvas) {\n      domClear(el, 0).appendChild(this._canvas);\n\n      this._canvas.setAttribute('class', 'marks');\n    } // this method will invoke resize to size the canvas appropriately\n\n\n    return base$1.initialize.call(this, el, width, height, origin, scaleFactor);\n  },\n\n  resize(width, height, origin, scaleFactor) {\n    base$1.resize.call(this, width, height, origin, scaleFactor);\n\n    if (this._canvas) {\n      // configure canvas size and transform\n      resize(this._canvas, this._width, this._height, this._origin, this._scale, this._options.context);\n    } else {\n      // external context needs to be scaled and positioned to origin\n      const ctx = this._options.externalContext;\n      if (!ctx) Object(vega_util__WEBPACK_IMPORTED_MODULE_0__[\"error\"])('CanvasRenderer is missing a valid canvas or context');\n      ctx.scale(this._scale, this._scale);\n      ctx.translate(this._origin[0], this._origin[1]);\n    }\n\n    this._redraw = true;\n    return this;\n  },\n\n  canvas() {\n    return this._canvas;\n  },\n\n  context() {\n    return this._options.externalContext || (this._canvas ? this._canvas.getContext('2d') : null);\n  },\n\n  dirty(item) {\n    const b = this._tempb.clear().union(item.bounds);\n\n    let g = item.mark.group;\n\n    while (g) {\n      b.translate(g.x || 0, g.y || 0);\n      g = g.mark.group;\n    }\n\n    this._dirty.union(b);\n  },\n\n  _render(scene) {\n    const g = this.context(),\n          o = this._origin,\n          w = this._width,\n          h = this._height,\n          db = this._dirty,\n          vb = viewBounds(o, w, h); // setup\n\n    g.save();\n    const b = this._redraw || db.empty() ? (this._redraw = false, vb.expand(1)) : clipToBounds(g, vb.intersect(db), o);\n    this.clear(-o[0], -o[1], w, h); // render\n\n    this.draw(g, scene, b); // takedown\n\n    g.restore();\n    db.clear();\n    return this;\n  },\n\n  draw(ctx, scene, bounds) {\n    const mark = Marks[scene.marktype];\n    if (scene.clip) clip(ctx, scene);\n    mark.draw.call(this, ctx, scene, bounds);\n    if (scene.clip) ctx.restore();\n  },\n\n  clear(x, y, w, h) {\n    const opt = this._options,\n          g = this.context();\n\n    if (opt.type !== 'pdf' && !opt.externalContext) {\n      // calling clear rect voids vector output in pdf mode\n      // and could remove external context content (#2615)\n      g.clearRect(x, y, w, h);\n    }\n\n    if (this._bgcolor != null) {\n      g.fillStyle = this._bgcolor;\n      g.fillRect(x, y, w, h);\n    }\n  }\n\n});\n\nfunction SVGHandler(loader, tooltip) {\n  Handler.call(this, loader, tooltip);\n  const h = this;\n  h._hrefHandler = listener(h, (evt, item) => {\n    if (item && item.href) h.handleHref(evt, item, item.href);\n  });\n  h._tooltipHandler = listener(h, (evt, item) => {\n    h.handleTooltip(evt, item, evt.type !== TooltipHideEvent);\n  });\n} // wrap an event listener for the SVG DOM\n\nconst listener = (context, handler) => evt => {\n  let item = evt.target.__data__;\n  item = Array.isArray(item) ? item[0] : item;\n  evt.vegaType = evt.type;\n  handler.call(context._obj, evt, item);\n};\n\nObject(vega_util__WEBPACK_IMPORTED_MODULE_0__[\"inherits\"])(SVGHandler, Handler, {\n  initialize(el, origin, obj) {\n    let svg = this._svg;\n\n    if (svg) {\n      svg.removeEventListener(HrefEvent, this._hrefHandler);\n      svg.removeEventListener(TooltipShowEvent, this._tooltipHandler);\n      svg.removeEventListener(TooltipHideEvent, this._tooltipHandler);\n    }\n\n    this._svg = svg = el && domFind(el, 'svg');\n\n    if (svg) {\n      svg.addEventListener(HrefEvent, this._hrefHandler);\n      svg.addEventListener(TooltipShowEvent, this._tooltipHandler);\n      svg.addEventListener(TooltipHideEvent, this._tooltipHandler);\n    }\n\n    return Handler.prototype.initialize.call(this, el, origin, obj);\n  },\n\n  canvas() {\n    return this._svg;\n  },\n\n  // add an event handler\n  on(type, handler) {\n    const name = this.eventName(type),\n          h = this._handlers,\n          i = this._handlerIndex(h[name], type, handler);\n\n    if (i < 0) {\n      const x = {\n        type,\n        handler,\n        listener: listener(this, handler)\n      };\n      (h[name] || (h[name] = [])).push(x);\n\n      if (this._svg) {\n        this._svg.addEventListener(name, x.listener);\n      }\n    }\n\n    return this;\n  },\n\n  // remove an event handler\n  off(type, handler) {\n    const name = this.eventName(type),\n          h = this._handlers[name],\n          i = this._handlerIndex(h, type, handler);\n\n    if (i >= 0) {\n      if (this._svg) {\n        this._svg.removeEventListener(name, h[i].listener);\n      }\n\n      h.splice(i, 1);\n    }\n\n    return this;\n  }\n\n});\n\nconst ARIA_HIDDEN = 'aria-hidden';\nconst ARIA_LABEL = 'aria-label';\nconst ARIA_ROLE = 'role';\nconst ARIA_ROLEDESCRIPTION = 'aria-roledescription';\nconst GRAPHICS_OBJECT = 'graphics-object';\nconst GRAPHICS_SYMBOL = 'graphics-symbol';\n\nconst bundle = (role, roledesc, label) => ({\n  [ARIA_ROLE]: role,\n  [ARIA_ROLEDESCRIPTION]: roledesc,\n  [ARIA_LABEL]: label || undefined\n}); // these roles are covered by related roles\n// we can ignore them, no need to generate attributes\n\n\nconst AriaIgnore = Object(vega_util__WEBPACK_IMPORTED_MODULE_0__[\"toSet\"])(['axis-domain', 'axis-grid', 'axis-label', 'axis-tick', 'axis-title', 'legend-band', 'legend-entry', 'legend-gradient', 'legend-label', 'legend-title', 'legend-symbol', 'title']); // aria attribute generators for guide roles\n\nconst AriaGuides = {\n  'axis': {\n    desc: 'axis',\n    caption: axisCaption\n  },\n  'legend': {\n    desc: 'legend',\n    caption: legendCaption\n  },\n  'title-text': {\n    desc: 'title',\n    caption: item => `Title text '${titleCaption(item)}'`\n  },\n  'title-subtitle': {\n    desc: 'subtitle',\n    caption: item => `Subtitle text '${titleCaption(item)}'`\n  }\n}; // aria properties generated for mark item encoding channels\n\nconst AriaEncode = {\n  ariaRole: ARIA_ROLE,\n  ariaRoleDescription: ARIA_ROLEDESCRIPTION,\n  description: ARIA_LABEL\n};\nfunction ariaItemAttributes(emit, item) {\n  const hide = item.aria === false;\n  emit(ARIA_HIDDEN, hide || undefined);\n\n  if (hide || item.description == null) {\n    for (const prop in AriaEncode) {\n      emit(AriaEncode[prop], undefined);\n    }\n  } else {\n    const type = item.mark.marktype;\n    emit(ARIA_LABEL, item.description);\n    emit(ARIA_ROLE, item.ariaRole || (type === 'group' ? GRAPHICS_OBJECT : GRAPHICS_SYMBOL));\n    emit(ARIA_ROLEDESCRIPTION, item.ariaRoleDescription || `${type} mark`);\n  }\n}\nfunction ariaMarkAttributes(mark) {\n  return mark.aria === false ? {\n    [ARIA_HIDDEN]: true\n  } : AriaIgnore[mark.role] ? null : AriaGuides[mark.role] ? ariaGuide(mark, AriaGuides[mark.role]) : ariaMark(mark);\n}\n\nfunction ariaMark(mark) {\n  const type = mark.marktype;\n  const recurse = type === 'group' || type === 'text' || mark.items.some(_ => _.description != null && _.aria !== false);\n  return bundle(recurse ? GRAPHICS_OBJECT : GRAPHICS_SYMBOL, `${type} mark container`, mark.description);\n}\n\nfunction ariaGuide(mark, opt) {\n  try {\n    const item = mark.items[0],\n          caption = opt.caption || (() => '');\n\n    return bundle(opt.role || GRAPHICS_SYMBOL, opt.desc, item.description || caption(item));\n  } catch (err) {\n    return null;\n  }\n}\n\nfunction titleCaption(item) {\n  return Object(vega_util__WEBPACK_IMPORTED_MODULE_0__[\"array\"])(item.text).join(' ');\n}\n\nfunction axisCaption(item) {\n  const datum = item.datum,\n        orient = item.orient,\n        title = datum.title ? extractTitle(item) : null,\n        ctx = item.context,\n        scale = ctx.scales[datum.scale].value,\n        locale = ctx.dataflow.locale(),\n        type = scale.type,\n        xy = orient === 'left' || orient === 'right' ? 'Y' : 'X';\n  return `${xy}-axis` + (title ? ` titled '${title}'` : '') + ` for a ${Object(vega_scale__WEBPACK_IMPORTED_MODULE_5__[\"isDiscrete\"])(type) ? 'discrete' : type} scale` + ` with ${Object(vega_scale__WEBPACK_IMPORTED_MODULE_5__[\"domainCaption\"])(locale, scale, item)}`;\n}\n\nfunction legendCaption(item) {\n  const datum = item.datum,\n        title = datum.title ? extractTitle(item) : null,\n        type = `${datum.type || ''} legend`.trim(),\n        scales = datum.scales,\n        props = Object.keys(scales),\n        ctx = item.context,\n        scale = ctx.scales[scales[props[0]]].value,\n        locale = ctx.dataflow.locale();\n  return capitalize(type) + (title ? ` titled '${title}'` : '') + ` for ${channelCaption(props)}` + ` with ${Object(vega_scale__WEBPACK_IMPORTED_MODULE_5__[\"domainCaption\"])(locale, scale, item)}`;\n}\n\nfunction extractTitle(item) {\n  try {\n    return Object(vega_util__WEBPACK_IMPORTED_MODULE_0__[\"array\"])(Object(vega_util__WEBPACK_IMPORTED_MODULE_0__[\"peek\"])(item.items).items[0].text).join(' ');\n  } catch (err) {\n    return null;\n  }\n}\n\nfunction channelCaption(props) {\n  props = props.map(p => p + (p === 'fill' || p === 'stroke' ? ' color' : ''));\n  return props.length < 2 ? props[0] : props.slice(0, -1).join(', ') + ' and ' + Object(vega_util__WEBPACK_IMPORTED_MODULE_0__[\"peek\"])(props);\n}\n\nfunction capitalize(s) {\n  return s.length ? s[0].toUpperCase() + s.slice(1) : s;\n}\n\nconst innerText = val => (val + '').replace(/&/g, '&amp;').replace(/</g, '&lt;').replace(/>/g, '&gt;');\n\nconst attrText = val => innerText(val).replace(/\"/g, '&quot;').replace(/\\t/g, '&#x9;').replace(/\\n/g, '&#xA;').replace(/\\r/g, '&#xD;');\n\nfunction markup() {\n  let buf = '',\n      outer = '',\n      inner = '';\n\n  const stack = [],\n        clear = () => outer = inner = '',\n        push = tag => {\n    if (outer) {\n      buf += `${outer}>${inner}`;\n      clear();\n    }\n\n    stack.push(tag);\n  },\n        attr = (name, value) => {\n    if (value != null) outer += ` ${name}=\"${attrText(value)}\"`;\n    return m;\n  },\n        m = {\n    open(tag, ...attrs) {\n      push(tag);\n      outer = '<' + tag;\n\n      for (const set of attrs) {\n        for (const key in set) attr(key, set[key]);\n      }\n\n      return m;\n    },\n\n    close() {\n      const tag = stack.pop();\n\n      if (outer) {\n        buf += outer + (inner ? `>${inner}</${tag}>` : '/>');\n      } else {\n        buf += `</${tag}>`;\n      }\n\n      clear();\n      return m;\n    },\n\n    attr,\n    text: t => (inner += innerText(t), m),\n    toString: () => buf\n  };\n\n  return m;\n}\nconst serializeXML = node => _serialize(markup(), node) + '';\n\nfunction _serialize(m, node) {\n  m.open(node.tagName);\n\n  if (node.hasAttributes()) {\n    const attrs = node.attributes,\n          n = attrs.length;\n\n    for (let i = 0; i < n; ++i) {\n      m.attr(attrs[i].name, attrs[i].value);\n    }\n  }\n\n  if (node.hasChildNodes()) {\n    const children = node.childNodes,\n          n = children.length;\n\n    for (let i = 0; i < n; i++) {\n      const child = children[i];\n      child.nodeType === 3 // text node\n      ? m.text(child.nodeValue) : _serialize(m, child);\n    }\n  }\n\n  return m.close();\n}\n\nconst styles = {\n  fill: 'fill',\n  fillOpacity: 'fill-opacity',\n  stroke: 'stroke',\n  strokeOpacity: 'stroke-opacity',\n  strokeWidth: 'stroke-width',\n  strokeCap: 'stroke-linecap',\n  strokeJoin: 'stroke-linejoin',\n  strokeDash: 'stroke-dasharray',\n  strokeDashOffset: 'stroke-dashoffset',\n  strokeMiterLimit: 'stroke-miterlimit',\n  opacity: 'opacity',\n  blend: 'mix-blend-mode'\n}; // ensure miter limit default is consistent with canvas (#2498)\n\nconst rootAttributes = {\n  'fill': 'none',\n  'stroke-miterlimit': 10\n};\n\nconst RootIndex = 0,\n      xmlns = 'http://www.w3.org/2000/xmlns/',\n      svgns = metadata.xmlns;\nfunction SVGRenderer(loader) {\n  Renderer.call(this, loader);\n  this._dirtyID = 0;\n  this._dirty = [];\n  this._svg = null;\n  this._root = null;\n  this._defs = null;\n}\nconst base = Renderer.prototype;\nObject(vega_util__WEBPACK_IMPORTED_MODULE_0__[\"inherits\"])(SVGRenderer, Renderer, {\n  /**\n   * Initialize a new SVGRenderer instance.\n   * @param {DOMElement} el - The containing DOM element for the display.\n   * @param {number} width - The coordinate width of the display, in pixels.\n   * @param {number} height - The coordinate height of the display, in pixels.\n   * @param {Array<number>} origin - The origin of the display, in pixels.\n   *   The coordinate system will be translated to this point.\n   * @param {number} [scaleFactor=1] - Optional scaleFactor by which to multiply\n   *   the width and height to determine the final pixel size.\n   * @return {SVGRenderer} - This renderer instance.\n   */\n  initialize(el, width, height, origin, scaleFactor) {\n    // create the svg definitions cache\n    this._defs = {};\n\n    this._clearDefs();\n\n    if (el) {\n      this._svg = domChild(el, 0, 'svg', svgns);\n\n      this._svg.setAttributeNS(xmlns, 'xmlns', svgns);\n\n      this._svg.setAttributeNS(xmlns, 'xmlns:xlink', metadata['xmlns:xlink']);\n\n      this._svg.setAttribute('version', metadata['version']);\n\n      this._svg.setAttribute('class', 'marks');\n\n      domClear(el, 1); // set the svg root group\n\n      this._root = domChild(this._svg, RootIndex, 'g', svgns);\n      setAttributes(this._root, rootAttributes); // ensure no additional child elements\n\n      domClear(this._svg, RootIndex + 1);\n    } // set background color if defined\n\n\n    this.background(this._bgcolor);\n    return base.initialize.call(this, el, width, height, origin, scaleFactor);\n  },\n\n  /**\n   * Get / set the background color.\n   */\n  background(bgcolor) {\n    if (arguments.length && this._svg) {\n      this._svg.style.setProperty('background-color', bgcolor);\n    }\n\n    return base.background.apply(this, arguments);\n  },\n\n  /**\n   * Resize the display.\n   * @param {number} width - The new coordinate width of the display, in pixels.\n   * @param {number} height - The new coordinate height of the display, in pixels.\n   * @param {Array<number>} origin - The new origin of the display, in pixels.\n   *   The coordinate system will be translated to this point.\n   * @param {number} [scaleFactor=1] - Optional scaleFactor by which to multiply\n   *   the width and height to determine the final pixel size.\n   * @return {SVGRenderer} - This renderer instance;\n   */\n  resize(width, height, origin, scaleFactor) {\n    base.resize.call(this, width, height, origin, scaleFactor);\n\n    if (this._svg) {\n      setAttributes(this._svg, {\n        width: this._width * this._scale,\n        height: this._height * this._scale,\n        viewBox: `0 0 ${this._width} ${this._height}`\n      });\n\n      this._root.setAttribute('transform', `translate(${this._origin})`);\n    }\n\n    this._dirty = [];\n    return this;\n  },\n\n  /**\n   * Returns the SVG element of the visualization.\n   * @return {DOMElement} - The SVG element.\n   */\n  canvas() {\n    return this._svg;\n  },\n\n  /**\n   * Returns an SVG text string for the rendered content,\n   * or null if this renderer is currently headless.\n   */\n  svg() {\n    const svg = this._svg,\n          bg = this._bgcolor;\n    if (!svg) return null;\n    let node;\n\n    if (bg) {\n      svg.removeAttribute('style');\n      node = domChild(svg, RootIndex, 'rect', svgns);\n      setAttributes(node, {\n        width: this._width,\n        height: this._height,\n        fill: bg\n      });\n    }\n\n    const text = serializeXML(svg);\n\n    if (bg) {\n      svg.removeChild(node);\n\n      this._svg.style.setProperty('background-color', bg);\n    }\n\n    return text;\n  },\n\n  /**\n   * Internal rendering method.\n   * @param {object} scene - The root mark of a scenegraph to render.\n   */\n  _render(scene) {\n    // perform spot updates and re-render markup\n    if (this._dirtyCheck()) {\n      if (this._dirtyAll) this._clearDefs();\n      this.mark(this._root, scene);\n      domClear(this._root, 1);\n    }\n\n    this.defs();\n    this._dirty = [];\n    ++this._dirtyID;\n    return this;\n  },\n\n  // -- Manage rendering of items marked as dirty --\n\n  /**\n   * Flag a mark item as dirty.\n   * @param {Item} item - The mark item.\n   */\n  dirty(item) {\n    if (item.dirty !== this._dirtyID) {\n      item.dirty = this._dirtyID;\n\n      this._dirty.push(item);\n    }\n  },\n\n  /**\n   * Check if a mark item is considered dirty.\n   * @param {Item} item - The mark item.\n   */\n  isDirty(item) {\n    return this._dirtyAll || !item._svg || item.dirty === this._dirtyID;\n  },\n\n  /**\n   * Internal method to check dirty status and, if possible,\n   * make targetted updates without a full rendering pass.\n   */\n  _dirtyCheck() {\n    this._dirtyAll = true;\n    const items = this._dirty;\n    if (!items.length || !this._dirtyID) return true;\n    const id = ++this._dirtyID;\n    let item, mark, type, mdef, i, n, o;\n\n    for (i = 0, n = items.length; i < n; ++i) {\n      item = items[i];\n      mark = item.mark;\n\n      if (mark.marktype !== type) {\n        // memoize mark instance lookup\n        type = mark.marktype;\n        mdef = Marks[type];\n      }\n\n      if (mark.zdirty && mark.dirty !== id) {\n        this._dirtyAll = false;\n        dirtyParents(item, id);\n        mark.items.forEach(i => {\n          i.dirty = id;\n        });\n      }\n\n      if (mark.zdirty) continue; // handle in standard drawing pass\n\n      if (item.exit) {\n        // EXIT\n        if (mdef.nested && mark.items.length) {\n          // if nested mark with remaining points, update instead\n          o = mark.items[0];\n          if (o._svg) this._update(mdef, o._svg, o);\n        } else if (item._svg) {\n          // otherwise remove from DOM\n          o = item._svg.parentNode;\n          if (o) o.removeChild(item._svg);\n        }\n\n        item._svg = null;\n        continue;\n      }\n\n      item = mdef.nested ? mark.items[0] : item;\n      if (item._update === id) continue; // already visited\n\n      if (!item._svg || !item._svg.ownerSVGElement) {\n        // ENTER\n        this._dirtyAll = false;\n        dirtyParents(item, id);\n      } else {\n        // IN-PLACE UPDATE\n        this._update(mdef, item._svg, item);\n      }\n\n      item._update = id;\n    }\n\n    return !this._dirtyAll;\n  },\n\n  // -- Construct & maintain scenegraph to SVG mapping ---\n\n  /**\n   * Render a set of mark items.\n   * @param {SVGElement} el - The parent element in the SVG tree.\n   * @param {object} scene - The mark parent to render.\n   * @param {SVGElement} prev - The previous sibling in the SVG tree.\n   */\n  mark(el, scene, prev) {\n    if (!this.isDirty(scene)) return scene._svg;\n    const svg = this._svg,\n          mdef = Marks[scene.marktype],\n          events = scene.interactive === false ? 'none' : null,\n          isGroup = mdef.tag === 'g';\n    let sibling = null,\n        i = 0;\n    const parent = bind(scene, el, prev, 'g', svg);\n    parent.setAttribute('class', cssClass(scene)); // apply aria attributes to parent container element\n\n    const aria = ariaMarkAttributes(scene);\n\n    for (const key in aria) setAttribute(parent, key, aria[key]);\n\n    if (!isGroup) {\n      setAttribute(parent, 'pointer-events', events);\n    }\n\n    setAttribute(parent, 'clip-path', scene.clip ? clip$1(this, scene, scene.group) : null);\n\n    const process = item => {\n      const dirty = this.isDirty(item),\n            node = bind(item, parent, sibling, mdef.tag, svg);\n\n      if (dirty) {\n        this._update(mdef, node, item);\n\n        if (isGroup) recurse(this, node, item);\n      }\n\n      sibling = node;\n      ++i;\n    };\n\n    if (mdef.nested) {\n      if (scene.items.length) process(scene.items[0]);\n    } else {\n      visit(scene, process);\n    }\n\n    domClear(parent, i);\n    return parent;\n  },\n\n  /**\n   * Update the attributes of an SVG element for a mark item.\n   * @param {object} mdef - The mark definition object\n   * @param {SVGElement} el - The SVG element.\n   * @param {Item} item - The mark item.\n   */\n  _update(mdef, el, item) {\n    // set dom element and values cache\n    // provides access to emit method\n    element = el;\n    values = el.__values__; // apply aria-specific properties\n\n    ariaItemAttributes(emit, item); // apply svg attributes\n\n    mdef.attr(emit, item, this); // some marks need special treatment\n\n    const extra = mark_extras[mdef.type];\n    if (extra) extra.call(this, mdef, el, item); // apply svg style attributes\n    // note: element state may have been modified by 'extra' method\n\n    if (element) this.style(element, item);\n  },\n\n  /**\n   * Update the presentation attributes of an SVG element for a mark item.\n   * @param {SVGElement} el - The SVG element.\n   * @param {Item} item - The mark item.\n   */\n  style(el, item) {\n    if (item == null) return;\n\n    for (const prop in styles) {\n      let value = prop === 'font' ? fontFamily(item) : item[prop];\n      if (value === values[prop]) continue;\n      const name = styles[prop];\n\n      if (value == null) {\n        el.removeAttribute(name);\n      } else {\n        if (isGradient(value)) {\n          value = gradientRef(value, this._defs.gradient, href());\n        }\n\n        el.setAttribute(name, value + '');\n      }\n\n      values[prop] = value;\n    }\n  },\n\n  /**\n   * Render SVG defs, as needed.\n   * Must be called *after* marks have been processed to ensure the\n   * collected state is current and accurate.\n   */\n  defs() {\n    const svg = this._svg,\n          defs = this._defs;\n    let el = defs.el,\n        index = 0;\n\n    for (const id in defs.gradient) {\n      if (!el) defs.el = el = domChild(svg, RootIndex + 1, 'defs', svgns);\n      index = updateGradient(el, defs.gradient[id], index);\n    }\n\n    for (const id in defs.clipping) {\n      if (!el) defs.el = el = domChild(svg, RootIndex + 1, 'defs', svgns);\n      index = updateClipping(el, defs.clipping[id], index);\n    } // clean-up\n\n\n    if (el) {\n      index === 0 ? (svg.removeChild(el), defs.el = null) : domClear(el, index);\n    }\n  },\n\n  /**\n   * Clear defs caches.\n   */\n  _clearDefs() {\n    const def = this._defs;\n    def.gradient = {};\n    def.clipping = {};\n  }\n\n}); // mark ancestor chain with a dirty id\n\nfunction dirtyParents(item, id) {\n  for (; item && item.dirty !== id; item = item.mark.group) {\n    item.dirty = id;\n\n    if (item.mark && item.mark.dirty !== id) {\n      item.mark.dirty = id;\n    } else return;\n  }\n} // update gradient definitions\n\n\nfunction updateGradient(el, grad, index) {\n  let i, n, stop;\n\n  if (grad.gradient === 'radial') {\n    // SVG radial gradients automatically transform to normalized bbox\n    // coordinates, in a way that is cumbersome to replicate in canvas.\n    // We wrap the radial gradient in a pattern element, allowing us to\n    // maintain a circular gradient that matches what canvas provides.\n    let pt = domChild(el, index++, 'pattern', svgns);\n    setAttributes(pt, {\n      id: patternPrefix + grad.id,\n      viewBox: '0,0,1,1',\n      width: '100%',\n      height: '100%',\n      preserveAspectRatio: 'xMidYMid slice'\n    });\n    pt = domChild(pt, 0, 'rect', svgns);\n    setAttributes(pt, {\n      width: 1,\n      height: 1,\n      fill: `url(${href()}#${grad.id})`\n    });\n    el = domChild(el, index++, 'radialGradient', svgns);\n    setAttributes(el, {\n      id: grad.id,\n      fx: grad.x1,\n      fy: grad.y1,\n      fr: grad.r1,\n      cx: grad.x2,\n      cy: grad.y2,\n      r: grad.r2\n    });\n  } else {\n    el = domChild(el, index++, 'linearGradient', svgns);\n    setAttributes(el, {\n      id: grad.id,\n      x1: grad.x1,\n      x2: grad.x2,\n      y1: grad.y1,\n      y2: grad.y2\n    });\n  }\n\n  for (i = 0, n = grad.stops.length; i < n; ++i) {\n    stop = domChild(el, i, 'stop', svgns);\n    stop.setAttribute('offset', grad.stops[i].offset);\n    stop.setAttribute('stop-color', grad.stops[i].color);\n  }\n\n  domClear(el, i);\n  return index;\n} // update clipping path definitions\n\n\nfunction updateClipping(el, clip, index) {\n  let mask;\n  el = domChild(el, index, 'clipPath', svgns);\n  el.setAttribute('id', clip.id);\n\n  if (clip.path) {\n    mask = domChild(el, 0, 'path', svgns);\n    mask.setAttribute('d', clip.path);\n  } else {\n    mask = domChild(el, 0, 'rect', svgns);\n    setAttributes(mask, {\n      x: 0,\n      y: 0,\n      width: clip.width,\n      height: clip.height\n    });\n  }\n\n  domClear(el, 1);\n  return index + 1;\n} // Recursively process group contents.\n\n\nfunction recurse(renderer, el, group) {\n  el = el.lastChild.previousSibling;\n  let prev,\n      idx = 0;\n  visit(group, item => {\n    prev = renderer.mark(el, item, prev);\n    ++idx;\n  }); // remove any extraneous DOM elements\n\n  domClear(el, 1 + idx);\n} // Bind a scenegraph item to an SVG DOM element.\n// Create new SVG elements as needed.\n\n\nfunction bind(item, el, sibling, tag, svg) {\n  let node = item._svg,\n      doc; // create a new dom node if needed\n\n  if (!node) {\n    doc = el.ownerDocument;\n    node = domCreate(doc, tag, svgns);\n    item._svg = node;\n\n    if (item.mark) {\n      node.__data__ = item;\n      node.__values__ = {\n        fill: 'default'\n      }; // if group, create background, content, and foreground elements\n\n      if (tag === 'g') {\n        const bg = domCreate(doc, 'path', svgns);\n        node.appendChild(bg);\n        bg.__data__ = item;\n        const cg = domCreate(doc, 'g', svgns);\n        node.appendChild(cg);\n        cg.__data__ = item;\n        const fg = domCreate(doc, 'path', svgns);\n        node.appendChild(fg);\n        fg.__data__ = item;\n        fg.__values__ = {\n          fill: 'default'\n        };\n      }\n    }\n  } // (re-)insert if (a) not contained in SVG or (b) sibling order has changed\n\n\n  if (node.ownerSVGElement !== svg || siblingCheck(node, sibling)) {\n    el.insertBefore(node, sibling ? sibling.nextSibling : el.firstChild);\n  }\n\n  return node;\n} // check if two nodes are ordered siblings\n\n\nfunction siblingCheck(node, sibling) {\n  return node.parentNode && node.parentNode.childNodes.length > 1 && node.previousSibling != sibling; // treat null/undefined the same\n} // -- Set attributes & styles on SVG elements ---\n\n\nlet element = null,\n    // temp var for current SVG element\nvalues = null; // temp var for current values hash\n// Extra configuration for certain mark types\n\nconst mark_extras = {\n  group(mdef, el, item) {\n    const fg = element = el.childNodes[2];\n    values = fg.__values__;\n    mdef.foreground(emit, item, this);\n    values = el.__values__; // use parent's values hash\n\n    element = el.childNodes[1];\n    mdef.content(emit, item, this);\n    const bg = element = el.childNodes[0];\n    mdef.background(emit, item, this);\n    const value = item.mark.interactive === false ? 'none' : null;\n\n    if (value !== values.events) {\n      setAttribute(fg, 'pointer-events', value);\n      setAttribute(bg, 'pointer-events', value);\n      values.events = value;\n    }\n\n    if (item.strokeForeground && item.stroke) {\n      const fill = item.fill;\n      setAttribute(fg, 'display', null); // set style of background\n\n      this.style(bg, item);\n      setAttribute(bg, 'stroke', null); // set style of foreground\n\n      if (fill) item.fill = null;\n      values = fg.__values__;\n      this.style(fg, item);\n      if (fill) item.fill = fill; // leave element null to prevent downstream styling\n\n      element = null;\n    } else {\n      // ensure foreground is ignored\n      setAttribute(fg, 'display', 'none');\n    }\n  },\n\n  image(mdef, el, item) {\n    if (item.smooth === false) {\n      setStyle(el, 'image-rendering', 'optimizeSpeed');\n      setStyle(el, 'image-rendering', 'pixelated');\n    } else {\n      setStyle(el, 'image-rendering', null);\n    }\n  },\n\n  text(mdef, el, item) {\n    const tl = textLines(item);\n    let key, value, doc, lh;\n\n    if (Object(vega_util__WEBPACK_IMPORTED_MODULE_0__[\"isArray\"])(tl)) {\n      // multi-line text\n      value = tl.map(_ => textValue(item, _));\n      key = value.join('\\n'); // content cache key\n\n      if (key !== values.text) {\n        domClear(el, 0);\n        doc = el.ownerDocument;\n        lh = lineHeight(item);\n        value.forEach((t, i) => {\n          const ts = domCreate(doc, 'tspan', svgns);\n          ts.__data__ = item; // data binding\n\n          ts.textContent = t;\n\n          if (i) {\n            ts.setAttribute('x', 0);\n            ts.setAttribute('dy', lh);\n          }\n\n          el.appendChild(ts);\n        });\n        values.text = key;\n      }\n    } else {\n      // single-line text\n      value = textValue(item, tl);\n\n      if (value !== values.text) {\n        el.textContent = value;\n        values.text = value;\n      }\n    }\n\n    setAttribute(el, 'font-family', fontFamily(item));\n    setAttribute(el, 'font-size', fontSize(item) + 'px');\n    setAttribute(el, 'font-style', item.fontStyle);\n    setAttribute(el, 'font-variant', item.fontVariant);\n    setAttribute(el, 'font-weight', item.fontWeight);\n  }\n\n};\n\nfunction emit(name, value, ns) {\n  // early exit if value is unchanged\n  if (value === values[name]) return; // use appropriate method given namespace (ns)\n\n  if (ns) {\n    setAttributeNS(element, name, value, ns);\n  } else {\n    setAttribute(element, name, value);\n  } // note current value for future comparison\n\n\n  values[name] = value;\n}\n\nfunction setStyle(el, name, value) {\n  if (value !== values[name]) {\n    if (value == null) {\n      el.style.removeProperty(name);\n    } else {\n      el.style.setProperty(name, value + '');\n    }\n\n    values[name] = value;\n  }\n}\n\nfunction setAttributes(el, attrs) {\n  for (const key in attrs) {\n    setAttribute(el, key, attrs[key]);\n  }\n}\n\nfunction setAttribute(el, name, value) {\n  if (value != null) {\n    // if value is provided, update DOM attribute\n    el.setAttribute(name, value);\n  } else {\n    // else remove DOM attribute\n    el.removeAttribute(name);\n  }\n}\n\nfunction setAttributeNS(el, name, value, ns) {\n  if (value != null) {\n    // if value is provided, update DOM attribute\n    el.setAttributeNS(ns, name, value);\n  } else {\n    // else remove DOM attribute\n    el.removeAttributeNS(ns, name);\n  }\n}\n\nfunction href() {\n  let loc;\n  return typeof window === 'undefined' ? '' : (loc = window.location).hash ? loc.href.slice(0, -loc.hash.length) : loc.href;\n}\n\nfunction SVGStringRenderer(loader) {\n  Renderer.call(this, loader);\n  this._text = null;\n  this._defs = {\n    gradient: {},\n    clipping: {}\n  };\n}\nObject(vega_util__WEBPACK_IMPORTED_MODULE_0__[\"inherits\"])(SVGStringRenderer, Renderer, {\n  /**\n   * Returns the rendered SVG text string,\n   * or null if rendering has not yet occurred.\n   */\n  svg() {\n    return this._text;\n  },\n\n  /**\n   * Internal rendering method.\n   * @param {object} scene - The root mark of a scenegraph to render.\n   */\n  _render(scene) {\n    const m = markup(); // svg tag\n\n    m.open('svg', Object(vega_util__WEBPACK_IMPORTED_MODULE_0__[\"extend\"])({}, metadata, {\n      class: 'marks',\n      width: this._width * this._scale,\n      height: this._height * this._scale,\n      viewBox: `0 0 ${this._width} ${this._height}`\n    })); // background, if defined\n\n    const bg = this._bgcolor;\n\n    if (bg && bg !== 'transparent' && bg !== 'none') {\n      m.open('rect', {\n        width: this._width,\n        height: this._height,\n        fill: bg\n      }).close();\n    } // root content group\n\n\n    m.open('g', rootAttributes, {\n      transform: 'translate(' + this._origin + ')'\n    });\n    this.mark(m, scene);\n    m.close(); // </g>\n    // defs\n\n    this.defs(m); // get SVG text string\n\n    this._text = m.close() + '';\n    return this;\n  },\n\n  /**\n   * Render a set of mark items.\n   * @param {object} m - The markup context.\n   * @param {object} scene - The mark parent to render.\n   */\n  mark(m, scene) {\n    const mdef = Marks[scene.marktype],\n          tag = mdef.tag,\n          attrList = [ariaItemAttributes, mdef.attr]; // render opening group tag\n\n    m.open('g', {\n      'class': cssClass(scene),\n      'clip-path': scene.clip ? clip$1(this, scene, scene.group) : null\n    }, ariaMarkAttributes(scene), {\n      'pointer-events': tag !== 'g' && scene.interactive === false ? 'none' : null\n    }); // render contained elements\n\n    const process = item => {\n      const href = this.href(item);\n      if (href) m.open('a', href);\n      m.open(tag, this.attr(scene, item, attrList, tag !== 'g' ? tag : null));\n\n      if (tag === 'text') {\n        const tl = textLines(item);\n\n        if (Object(vega_util__WEBPACK_IMPORTED_MODULE_0__[\"isArray\"])(tl)) {\n          // multi-line text\n          const attrs = {\n            x: 0,\n            dy: lineHeight(item)\n          };\n\n          for (let i = 0; i < tl.length; ++i) {\n            m.open('tspan', i ? attrs : null).text(textValue(item, tl[i])).close();\n          }\n        } else {\n          // single-line text\n          m.text(textValue(item, tl));\n        }\n      } else if (tag === 'g') {\n        const fore = item.strokeForeground,\n              fill = item.fill,\n              stroke = item.stroke;\n\n        if (fore && stroke) {\n          item.stroke = null;\n        }\n\n        m.open('path', this.attr(scene, item, mdef.background, 'bgrect')).close(); // recurse for group content\n\n        m.open('g', this.attr(scene, item, mdef.content));\n        visit(item, scene => this.mark(m, scene));\n        m.close();\n\n        if (fore && stroke) {\n          if (fill) item.fill = null;\n          item.stroke = stroke;\n          m.open('path', this.attr(scene, item, mdef.foreground, 'bgrect')).close();\n          if (fill) item.fill = fill;\n        } else {\n          m.open('path', this.attr(scene, item, mdef.foreground, 'bgfore')).close();\n        }\n      }\n\n      m.close(); // </tag>\n\n      if (href) m.close(); // </a>\n    };\n\n    if (mdef.nested) {\n      if (scene.items && scene.items.length) process(scene.items[0]);\n    } else {\n      visit(scene, process);\n    } // render closing group tag\n\n\n    return m.close(); // </g>\n  },\n\n  /**\n   * Get href attributes for a hyperlinked mark item.\n   * @param {Item} item - The mark item.\n   */\n  href(item) {\n    const href = item.href;\n    let attr;\n\n    if (href) {\n      if (attr = this._hrefs && this._hrefs[href]) {\n        return attr;\n      } else {\n        this.sanitizeURL(href).then(attr => {\n          // rewrite to use xlink namespace\n          attr['xlink:href'] = attr.href;\n          attr.href = null;\n          (this._hrefs || (this._hrefs = {}))[href] = attr;\n        });\n      }\n    }\n\n    return null;\n  },\n\n  /**\n   * Get an object of SVG attributes for a mark item.\n   * @param {object} scene - The mark parent.\n   * @param {Item} item - The mark item.\n   * @param {array|function} attrs - One or more attribute emitters.\n   * @param {string} tag - The tag being rendered.\n   */\n  attr(scene, item, attrs, tag) {\n    const object = {},\n          emit = (name, value, ns, prefixed) => {\n      object[prefixed || name] = value;\n    }; // apply mark specific attributes\n\n\n    if (Array.isArray(attrs)) {\n      attrs.forEach(fn => fn(emit, item, this));\n    } else {\n      attrs(emit, item, this);\n    } // apply style attributes\n\n\n    if (tag) {\n      style(object, item, scene, tag, this._defs);\n    }\n\n    return object;\n  },\n\n  /**\n   * Render SVG defs, as needed.\n   * Must be called *after* marks have been processed to ensure the\n   * collected state is current and accurate.\n   * @param {object} m - The markup context.\n   */\n  defs(m) {\n    const gradient = this._defs.gradient,\n          clipping = this._defs.clipping,\n          count = Object.keys(gradient).length + Object.keys(clipping).length;\n    if (count === 0) return; // nothing to do\n\n    m.open('defs');\n\n    for (const id in gradient) {\n      const def = gradient[id],\n            stops = def.stops;\n\n      if (def.gradient === 'radial') {\n        // SVG radial gradients automatically transform to normalized bbox\n        // coordinates, in a way that is cumbersome to replicate in canvas.\n        // We wrap the radial gradient in a pattern element, allowing us to\n        // maintain a circular gradient that matches what canvas provides.\n        m.open('pattern', {\n          id: patternPrefix + id,\n          viewBox: '0,0,1,1',\n          width: '100%',\n          height: '100%',\n          preserveAspectRatio: 'xMidYMid slice'\n        });\n        m.open('rect', {\n          width: '1',\n          height: '1',\n          fill: 'url(#' + id + ')'\n        }).close();\n        m.close(); // </pattern>\n\n        m.open('radialGradient', {\n          id: id,\n          fx: def.x1,\n          fy: def.y1,\n          fr: def.r1,\n          cx: def.x2,\n          cy: def.y2,\n          r: def.r2\n        });\n      } else {\n        m.open('linearGradient', {\n          id: id,\n          x1: def.x1,\n          x2: def.x2,\n          y1: def.y1,\n          y2: def.y2\n        });\n      }\n\n      for (let i = 0; i < stops.length; ++i) {\n        m.open('stop', {\n          offset: stops[i].offset,\n          'stop-color': stops[i].color\n        }).close();\n      }\n\n      m.close();\n    }\n\n    for (const id in clipping) {\n      const def = clipping[id];\n      m.open('clipPath', {\n        id: id\n      });\n\n      if (def.path) {\n        m.open('path', {\n          d: def.path\n        }).close();\n      } else {\n        m.open('rect', {\n          x: 0,\n          y: 0,\n          width: def.width,\n          height: def.height\n        }).close();\n      }\n\n      m.close();\n    }\n\n    m.close();\n  }\n\n}); // Helper function for attr for style presentation attributes\n\nfunction style(s, item, scene, tag, defs) {\n  if (item == null) return s;\n\n  if (tag === 'bgrect' && scene.interactive === false) {\n    s['pointer-events'] = 'none';\n  }\n\n  if (tag === 'bgfore') {\n    if (scene.interactive === false) {\n      s['pointer-events'] = 'none';\n    }\n\n    s.display = 'none';\n    if (item.fill !== null) return s;\n  }\n\n  if (tag === 'image' && item.smooth === false) {\n    s.style = 'image-rendering: optimizeSpeed; image-rendering: pixelated;';\n  }\n\n  if (tag === 'text') {\n    s['font-family'] = fontFamily(item);\n    s['font-size'] = fontSize(item) + 'px';\n    s['font-style'] = item.fontStyle;\n    s['font-variant'] = item.fontVariant;\n    s['font-weight'] = item.fontWeight;\n  }\n\n  for (const prop in styles) {\n    let value = item[prop];\n    const name = styles[prop];\n\n    if (value === 'transparent' && (name === 'fill' || name === 'stroke')) ; else if (value != null) {\n      if (isGradient(value)) {\n        value = gradientRef(value, defs.gradient, '');\n      }\n\n      s[name] = value;\n    }\n  }\n\n  return s;\n}\n\nconst Canvas = 'canvas';\nconst PNG = 'png';\nconst SVG = 'svg';\nconst None = 'none';\nconst RenderType = {\n  Canvas: Canvas,\n  PNG: PNG,\n  SVG: SVG,\n  None: None\n};\nconst modules = {};\nmodules[Canvas] = modules[PNG] = {\n  renderer: CanvasRenderer,\n  headless: CanvasRenderer,\n  handler: CanvasHandler\n};\nmodules[SVG] = {\n  renderer: SVGRenderer,\n  headless: SVGStringRenderer,\n  handler: SVGHandler\n};\nmodules[None] = {};\nfunction renderModule(name, _) {\n  name = String(name || '').toLowerCase();\n\n  if (arguments.length > 1) {\n    modules[name] = _;\n    return this;\n  } else {\n    return modules[name];\n  }\n}\n\nfunction intersect(scene, bounds, filter) {\n  const hits = [],\n        // intersection results\n  box = new Bounds().union(bounds),\n        // defensive copy\n  type = scene.marktype;\n  return type ? intersectMark(scene, box, filter, hits) : type === 'group' ? intersectGroup(scene, box, filter, hits) : Object(vega_util__WEBPACK_IMPORTED_MODULE_0__[\"error\"])('Intersect scene must be mark node or group item.');\n}\n\nfunction intersectMark(mark, box, filter, hits) {\n  if (visitMark(mark, box, filter)) {\n    const items = mark.items,\n          type = mark.marktype,\n          n = items.length;\n    let i = 0;\n\n    if (type === 'group') {\n      for (; i < n; ++i) {\n        intersectGroup(items[i], box, filter, hits);\n      }\n    } else {\n      for (const test = Marks[type].isect; i < n; ++i) {\n        const item = items[i];\n        if (intersectItem(item, box, test)) hits.push(item);\n      }\n    }\n  }\n\n  return hits;\n}\n\nfunction visitMark(mark, box, filter) {\n  // process if bounds intersect and if\n  // (1) mark is a group mark (so we must recurse), or\n  // (2) mark is interactive and passes filter\n  return mark.bounds && box.intersects(mark.bounds) && (mark.marktype === 'group' || mark.interactive !== false && (!filter || filter(mark)));\n}\n\nfunction intersectGroup(group, box, filter, hits) {\n  // test intersect against group\n  // skip groups by default unless filter says otherwise\n  if (filter && filter(group.mark) && intersectItem(group, box, Marks.group.isect)) {\n    hits.push(group);\n  } // recursively test children marks\n  // translate box to group coordinate space\n\n\n  const marks = group.items,\n        n = marks && marks.length;\n\n  if (n) {\n    const x = group.x || 0,\n          y = group.y || 0;\n    box.translate(-x, -y);\n\n    for (let i = 0; i < n; ++i) {\n      intersectMark(marks[i], box, filter, hits);\n    }\n\n    box.translate(x, y);\n  }\n\n  return hits;\n}\n\nfunction intersectItem(item, box, test) {\n  // test bounds enclosure, bounds intersection, then detailed test\n  const bounds = item.bounds;\n  return box.encloses(bounds) || box.intersects(bounds) && test(item, box);\n}\n\nconst clipBounds = new Bounds();\nfunction boundClip (mark) {\n  const clip = mark.clip;\n\n  if (Object(vega_util__WEBPACK_IMPORTED_MODULE_0__[\"isFunction\"])(clip)) {\n    clip(boundContext(clipBounds.clear()));\n  } else if (clip) {\n    clipBounds.set(0, 0, mark.group.width, mark.group.height);\n  } else return;\n\n  mark.bounds.intersect(clipBounds);\n}\n\nconst TOLERANCE = 1e-9;\nfunction sceneEqual(a, b, key) {\n  return a === b ? true : key === 'path' ? pathEqual(a, b) : a instanceof Date && b instanceof Date ? +a === +b : Object(vega_util__WEBPACK_IMPORTED_MODULE_0__[\"isNumber\"])(a) && Object(vega_util__WEBPACK_IMPORTED_MODULE_0__[\"isNumber\"])(b) ? Math.abs(a - b) <= TOLERANCE : !a || !b || !Object(vega_util__WEBPACK_IMPORTED_MODULE_0__[\"isObject\"])(a) && !Object(vega_util__WEBPACK_IMPORTED_MODULE_0__[\"isObject\"])(b) ? a == b : objectEqual(a, b);\n}\nfunction pathEqual(a, b) {\n  return sceneEqual(pathParse(a), pathParse(b));\n}\n\nfunction objectEqual(a, b) {\n  var ka = Object.keys(a),\n      kb = Object.keys(b),\n      key,\n      i;\n  if (ka.length !== kb.length) return false;\n  ka.sort();\n  kb.sort();\n\n  for (i = ka.length - 1; i >= 0; i--) {\n    if (ka[i] != kb[i]) return false;\n  }\n\n  for (i = ka.length - 1; i >= 0; i--) {\n    key = ka[i];\n    if (!sceneEqual(a[key], b[key], key)) return false;\n  }\n\n  return typeof a === typeof b;\n}\n\nfunction resetSVGDefIds() {\n  resetSVGClipId();\n  resetSVGGradientId();\n}\n\n\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,[encoded data, 222132 characters]\n//# sourceURL=webpack-internal:///./node_modules/vega-label/node_modules/vega-scenegraph/build/vega-scenegraph.module.js\n");

/***/ }),

/***/ "./node_modules/vega-label/node_modules/vega-util/build/vega-util.module.js":
/*!**********************************************************************************!*\
  !*** ./node_modules/vega-label/node_modules/vega-util/build/vega-util.module.js ***!
  \**********************************************************************************/
/*! exports provided: Debug, Error, Info, None, Warn, accessor, accessorFields, accessorName, array, ascending, clampRange, compare, constant, debounce, error, extend, extent, extentIndex, falsy, fastmap, field, flush, hasOwnProperty, id, identity, inherits, inrange, isArray, isBoolean, isDate, isFunction, isIterable, isNumber, isObject, isRegExp, isString, key, lerp, logger, lruCache, merge, mergeConfig, one, pad, panLinear, panLog, panPow, panSymlog, peek, quarter, repeat, span, splitAccessPath, stringValue, toBoolean, toDate, toNumber, toSet, toString, truncate, truthy, utcquarter, visitArray, writeConfig, zero, zoomLinear, zoomLog, zoomPow, zoomSymlog */
/***/ (function(module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"Debug\", function() { return Debug; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"Error\", function() { return Error$1; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"Info\", function() { return Info; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"None\", function() { return None; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"Warn\", function() { return Warn; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"accessor\", function() { return accessor; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"accessorFields\", function() { return accessorFields; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"accessorName\", function() { return accessorName; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"array\", function() { return array; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"ascending\", function() { return ascending; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"clampRange\", function() { return clampRange; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"compare\", function() { return compare; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"constant\", function() { return constant; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"debounce\", function() { return debounce; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"error\", function() { return error; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"extend\", function() { return extend; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"extent\", function() { return extent; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"extentIndex\", function() { return extentIndex; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"falsy\", function() { return falsy; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"fastmap\", function() { return fastmap; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"field\", function() { return field; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"flush\", function() { return flush; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"hasOwnProperty\", function() { return has; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"id\", function() { return id; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"identity\", function() { return identity; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"inherits\", function() { return inherits; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"inrange\", function() { return inrange; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"isArray\", function() { return isArray; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"isBoolean\", function() { return isBoolean; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"isDate\", function() { return isDate; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"isFunction\", function() { return isFunction; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"isIterable\", function() { return isIterable; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"isNumber\", function() { return isNumber; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"isObject\", function() { return isObject; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"isRegExp\", function() { return isRegExp; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"isString\", function() { return isString; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"key\", function() { return key; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"lerp\", function() { return lerp; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"logger\", function() { return logger; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"lruCache\", function() { return lruCache; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"merge\", function() { return merge; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"mergeConfig\", function() { return mergeConfig; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"one\", function() { return one; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"pad\", function() { return pad; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"panLinear\", function() { return panLinear; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"panLog\", function() { return panLog; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"panPow\", function() { return panPow; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"panSymlog\", function() { return panSymlog; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"peek\", function() { return peek; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"quarter\", function() { return quarter; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"repeat\", function() { return repeat; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"span\", function() { return span; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"splitAccessPath\", function() { return splitAccessPath; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"stringValue\", function() { return $; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"toBoolean\", function() { return toBoolean; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"toDate\", function() { return toDate; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"toNumber\", function() { return toNumber; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"toSet\", function() { return toSet; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"toString\", function() { return toString; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"truncate\", function() { return truncate; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"truthy\", function() { return truthy; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"utcquarter\", function() { return utcquarter; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"visitArray\", function() { return visitArray; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"writeConfig\", function() { return writeConfig; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"zero\", function() { return zero; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"zoomLinear\", function() { return zoomLinear; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"zoomLog\", function() { return zoomLog; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"zoomPow\", function() { return zoomPow; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"zoomSymlog\", function() { return zoomSymlog; });\nfunction accessor (fn, fields, name) {\n  fn.fields = fields || [];\n  fn.fname = name;\n  return fn;\n}\nfunction accessorName(fn) {\n  return fn == null ? null : fn.fname;\n}\nfunction accessorFields(fn) {\n  return fn == null ? null : fn.fields;\n}\n\nfunction getter (path) {\n  return path.length === 1 ? get1(path[0]) : getN(path);\n}\n\nconst get1 = field => function (obj) {\n  return obj[field];\n};\n\nconst getN = path => {\n  const len = path.length;\n  return function (obj) {\n    for (let i = 0; i < len; ++i) {\n      obj = obj[path[i]];\n    }\n\n    return obj;\n  };\n};\n\nfunction error (message) {\n  throw Error(message);\n}\n\nfunction splitAccessPath (p) {\n  const path = [],\n        n = p.length;\n  let q = null,\n      b = 0,\n      s = '',\n      i,\n      j,\n      c;\n  p = p + '';\n\n  function push() {\n    path.push(s + p.substring(i, j));\n    s = '';\n    i = j + 1;\n  }\n\n  for (i = j = 0; j < n; ++j) {\n    c = p[j];\n\n    if (c === '\\\\') {\n      s += p.substring(i, j);\n      s += p.substring(++j, ++j);\n      i = j;\n    } else if (c === q) {\n      push();\n      q = null;\n      b = -1;\n    } else if (q) {\n      continue;\n    } else if (i === b && c === '\"') {\n      i = j + 1;\n      q = c;\n    } else if (i === b && c === \"'\") {\n      i = j + 1;\n      q = c;\n    } else if (c === '.' && !b) {\n      if (j > i) {\n        push();\n      } else {\n        i = j + 1;\n      }\n    } else if (c === '[') {\n      if (j > i) push();\n      b = i = j + 1;\n    } else if (c === ']') {\n      if (!b) error('Access path missing open bracket: ' + p);\n      if (b > 0) push();\n      b = 0;\n      i = j + 1;\n    }\n  }\n\n  if (b) error('Access path missing closing bracket: ' + p);\n  if (q) error('Access path missing closing quote: ' + p);\n\n  if (j > i) {\n    j++;\n    push();\n  }\n\n  return path;\n}\n\nfunction field (field, name, opt) {\n  const path = splitAccessPath(field);\n  field = path.length === 1 ? path[0] : field;\n  return accessor((opt && opt.get || getter)(path), [field], name || field);\n}\n\nconst id = field('id');\nconst identity = accessor(_ => _, [], 'identity');\nconst zero = accessor(() => 0, [], 'zero');\nconst one = accessor(() => 1, [], 'one');\nconst truthy = accessor(() => true, [], 'true');\nconst falsy = accessor(() => false, [], 'false');\n\nfunction log$1(method, level, input) {\n  const args = [level].concat([].slice.call(input));\n  console[method].apply(console, args); // eslint-disable-line no-console\n}\n\nconst None = 0;\nconst Error$1 = 1;\nconst Warn = 2;\nconst Info = 3;\nconst Debug = 4;\nfunction logger (_, method) {\n  let level = _ || None;\n  return {\n    level(_) {\n      if (arguments.length) {\n        level = +_;\n        return this;\n      } else {\n        return level;\n      }\n    },\n\n    error() {\n      if (level >= Error$1) log$1(method || 'error', 'ERROR', arguments);\n      return this;\n    },\n\n    warn() {\n      if (level >= Warn) log$1(method || 'warn', 'WARN', arguments);\n      return this;\n    },\n\n    info() {\n      if (level >= Info) log$1(method || 'log', 'INFO', arguments);\n      return this;\n    },\n\n    debug() {\n      if (level >= Debug) log$1(method || 'log', 'DEBUG', arguments);\n      return this;\n    }\n\n  };\n}\n\nvar isArray = Array.isArray;\n\nfunction isObject (_) {\n  return _ === Object(_);\n}\n\nconst isLegalKey = key => key !== '__proto__';\n\nfunction mergeConfig(...configs) {\n  return configs.reduce((out, source) => {\n    for (const key in source) {\n      if (key === 'signals') {\n        // for signals, we merge the signals arrays\n        // source signals take precedence over\n        // existing signals with the same name\n        out.signals = mergeNamed(out.signals, source.signals);\n      } else {\n        // otherwise, merge objects subject to recursion constraints\n        // for legend block, recurse for the layout entry only\n        // for style block, recurse for all properties\n        // otherwise, no recursion: objects overwrite, no merging\n        const r = key === 'legend' ? {\n          layout: 1\n        } : key === 'style' ? true : null;\n        writeConfig(out, key, source[key], r);\n      }\n    }\n\n    return out;\n  }, {});\n}\nfunction writeConfig(output, key, value, recurse) {\n  if (!isLegalKey(key)) return;\n  let k, o;\n\n  if (isObject(value) && !isArray(value)) {\n    o = isObject(output[key]) ? output[key] : output[key] = {};\n\n    for (k in value) {\n      if (recurse && (recurse === true || recurse[k])) {\n        writeConfig(o, k, value[k]);\n      } else if (isLegalKey(k)) {\n        o[k] = value[k];\n      }\n    }\n  } else {\n    output[key] = value;\n  }\n}\n\nfunction mergeNamed(a, b) {\n  if (a == null) return b;\n  const map = {},\n        out = [];\n\n  function add(_) {\n    if (!map[_.name]) {\n      map[_.name] = 1;\n      out.push(_);\n    }\n  }\n\n  b.forEach(add);\n  a.forEach(add);\n  return out;\n}\n\nfunction peek (array) {\n  return array[array.length - 1];\n}\n\nfunction toNumber (_) {\n  return _ == null || _ === '' ? null : +_;\n}\n\nconst exp = sign => x => sign * Math.exp(x);\n\nconst log = sign => x => Math.log(sign * x);\n\nconst symlog = c => x => Math.sign(x) * Math.log1p(Math.abs(x / c));\n\nconst symexp = c => x => Math.sign(x) * Math.expm1(Math.abs(x)) * c;\n\nconst pow = exponent => x => x < 0 ? -Math.pow(-x, exponent) : Math.pow(x, exponent);\n\nfunction pan(domain, delta, lift, ground) {\n  const d0 = lift(domain[0]),\n        d1 = lift(peek(domain)),\n        dd = (d1 - d0) * delta;\n  return [ground(d0 - dd), ground(d1 - dd)];\n}\n\nfunction panLinear(domain, delta) {\n  return pan(domain, delta, toNumber, identity);\n}\nfunction panLog(domain, delta) {\n  var sign = Math.sign(domain[0]);\n  return pan(domain, delta, log(sign), exp(sign));\n}\nfunction panPow(domain, delta, exponent) {\n  return pan(domain, delta, pow(exponent), pow(1 / exponent));\n}\nfunction panSymlog(domain, delta, constant) {\n  return pan(domain, delta, symlog(constant), symexp(constant));\n}\n\nfunction zoom(domain, anchor, scale, lift, ground) {\n  const d0 = lift(domain[0]),\n        d1 = lift(peek(domain)),\n        da = anchor != null ? lift(anchor) : (d0 + d1) / 2;\n  return [ground(da + (d0 - da) * scale), ground(da + (d1 - da) * scale)];\n}\n\nfunction zoomLinear(domain, anchor, scale) {\n  return zoom(domain, anchor, scale, toNumber, identity);\n}\nfunction zoomLog(domain, anchor, scale) {\n  const sign = Math.sign(domain[0]);\n  return zoom(domain, anchor, scale, log(sign), exp(sign));\n}\nfunction zoomPow(domain, anchor, scale, exponent) {\n  return zoom(domain, anchor, scale, pow(exponent), pow(1 / exponent));\n}\nfunction zoomSymlog(domain, anchor, scale, constant) {\n  return zoom(domain, anchor, scale, symlog(constant), symexp(constant));\n}\n\nfunction quarter(date) {\n  return 1 + ~~(new Date(date).getMonth() / 3);\n}\nfunction utcquarter(date) {\n  return 1 + ~~(new Date(date).getUTCMonth() / 3);\n}\n\nfunction array (_) {\n  return _ != null ? isArray(_) ? _ : [_] : [];\n}\n\n/**\n * Span-preserving range clamp. If the span of the input range is less\n * than (max - min) and an endpoint exceeds either the min or max value,\n * the range is translated such that the span is preserved and one\n * endpoint touches the boundary of the min/max range.\n * If the span exceeds (max - min), the range [min, max] is returned.\n */\nfunction clampRange (range, min, max) {\n  let lo = range[0],\n      hi = range[1],\n      span;\n\n  if (hi < lo) {\n    span = hi;\n    hi = lo;\n    lo = span;\n  }\n\n  span = hi - lo;\n  return span >= max - min ? [min, max] : [lo = Math.min(Math.max(lo, min), max - span), lo + span];\n}\n\nfunction isFunction (_) {\n  return typeof _ === 'function';\n}\n\nconst DESCENDING = 'descending';\nfunction compare (fields, orders, opt) {\n  opt = opt || {};\n  orders = array(orders) || [];\n  const ord = [],\n        get = [],\n        fmap = {},\n        gen = opt.comparator || comparator;\n  array(fields).forEach((f, i) => {\n    if (f == null) return;\n    ord.push(orders[i] === DESCENDING ? -1 : 1);\n    get.push(f = isFunction(f) ? f : field(f, null, opt));\n    (accessorFields(f) || []).forEach(_ => fmap[_] = 1);\n  });\n  return get.length === 0 ? null : accessor(gen(get, ord), Object.keys(fmap));\n}\nconst ascending = (u, v) => (u < v || u == null) && v != null ? -1 : (u > v || v == null) && u != null ? 1 : (v = v instanceof Date ? +v : v, u = u instanceof Date ? +u : u) !== u && v === v ? -1 : v !== v && u === u ? 1 : 0;\n\nconst comparator = (fields, orders) => fields.length === 1 ? compare1(fields[0], orders[0]) : compareN(fields, orders, fields.length);\n\nconst compare1 = (field, order) => function (a, b) {\n  return ascending(field(a), field(b)) * order;\n};\n\nconst compareN = (fields, orders, n) => {\n  orders.push(0); // pad zero for convenient lookup\n\n  return function (a, b) {\n    let f,\n        c = 0,\n        i = -1;\n\n    while (c === 0 && ++i < n) {\n      f = fields[i];\n      c = ascending(f(a), f(b));\n    }\n\n    return c * orders[i];\n  };\n};\n\nfunction constant (_) {\n  return isFunction(_) ? _ : () => _;\n}\n\nfunction debounce (delay, handler) {\n  let tid;\n  return e => {\n    if (tid) clearTimeout(tid);\n    tid = setTimeout(() => (handler(e), tid = null), delay);\n  };\n}\n\nfunction extend (_) {\n  for (let x, k, i = 1, len = arguments.length; i < len; ++i) {\n    x = arguments[i];\n\n    for (k in x) {\n      _[k] = x[k];\n    }\n  }\n\n  return _;\n}\n\n/**\n * Return an array with minimum and maximum values, in the\n * form [min, max]. Ignores null, undefined, and NaN values.\n */\nfunction extent (array, f) {\n  let i = 0,\n      n,\n      v,\n      min,\n      max;\n\n  if (array && (n = array.length)) {\n    if (f == null) {\n      // find first valid value\n      for (v = array[i]; i < n && (v == null || v !== v); v = array[++i]);\n\n      min = max = v; // visit all other values\n\n      for (; i < n; ++i) {\n        v = array[i]; // skip null/undefined; NaN will fail all comparisons\n\n        if (v != null) {\n          if (v < min) min = v;\n          if (v > max) max = v;\n        }\n      }\n    } else {\n      // find first valid value\n      for (v = f(array[i]); i < n && (v == null || v !== v); v = f(array[++i]));\n\n      min = max = v; // visit all other values\n\n      for (; i < n; ++i) {\n        v = f(array[i]); // skip null/undefined; NaN will fail all comparisons\n\n        if (v != null) {\n          if (v < min) min = v;\n          if (v > max) max = v;\n        }\n      }\n    }\n  }\n\n  return [min, max];\n}\n\nfunction extentIndex (array, f) {\n  const n = array.length;\n  let i = -1,\n      a,\n      b,\n      c,\n      u,\n      v;\n\n  if (f == null) {\n    while (++i < n) {\n      b = array[i];\n\n      if (b != null && b >= b) {\n        a = c = b;\n        break;\n      }\n    }\n\n    if (i === n) return [-1, -1];\n    u = v = i;\n\n    while (++i < n) {\n      b = array[i];\n\n      if (b != null) {\n        if (a > b) {\n          a = b;\n          u = i;\n        }\n\n        if (c < b) {\n          c = b;\n          v = i;\n        }\n      }\n    }\n  } else {\n    while (++i < n) {\n      b = f(array[i], i, array);\n\n      if (b != null && b >= b) {\n        a = c = b;\n        break;\n      }\n    }\n\n    if (i === n) return [-1, -1];\n    u = v = i;\n\n    while (++i < n) {\n      b = f(array[i], i, array);\n\n      if (b != null) {\n        if (a > b) {\n          a = b;\n          u = i;\n        }\n\n        if (c < b) {\n          c = b;\n          v = i;\n        }\n      }\n    }\n  }\n\n  return [u, v];\n}\n\nconst hop = Object.prototype.hasOwnProperty;\nfunction has (object, property) {\n  return hop.call(object, property);\n}\n\nconst NULL = {};\nfunction fastmap (input) {\n  let obj = {},\n      test;\n\n  function has$1(key) {\n    return has(obj, key) && obj[key] !== NULL;\n  }\n\n  const map = {\n    size: 0,\n    empty: 0,\n    object: obj,\n    has: has$1,\n\n    get(key) {\n      return has$1(key) ? obj[key] : undefined;\n    },\n\n    set(key, value) {\n      if (!has$1(key)) {\n        ++map.size;\n        if (obj[key] === NULL) --map.empty;\n      }\n\n      obj[key] = value;\n      return this;\n    },\n\n    delete(key) {\n      if (has$1(key)) {\n        --map.size;\n        ++map.empty;\n        obj[key] = NULL;\n      }\n\n      return this;\n    },\n\n    clear() {\n      map.size = map.empty = 0;\n      map.object = obj = {};\n    },\n\n    test(_) {\n      if (arguments.length) {\n        test = _;\n        return map;\n      } else {\n        return test;\n      }\n    },\n\n    clean() {\n      const next = {};\n      let size = 0;\n\n      for (const key in obj) {\n        const value = obj[key];\n\n        if (value !== NULL && (!test || !test(value))) {\n          next[key] = value;\n          ++size;\n        }\n      }\n\n      map.size = size;\n      map.empty = 0;\n      map.object = obj = next;\n    }\n\n  };\n  if (input) Object.keys(input).forEach(key => {\n    map.set(key, input[key]);\n  });\n  return map;\n}\n\nfunction flush (range, value, threshold, left, right, center) {\n  if (!threshold && threshold !== 0) return center;\n  const t = +threshold;\n  let a = range[0],\n      b = peek(range),\n      l; // swap endpoints if range is reversed\n\n  if (b < a) {\n    l = a;\n    a = b;\n    b = l;\n  } // compare value to endpoints\n\n\n  l = Math.abs(value - a);\n  const r = Math.abs(b - value); // adjust if value is within threshold distance of endpoint\n\n  return l < r && l <= t ? left : r <= t ? right : center;\n}\n\nfunction inherits (child, parent, members) {\n  const proto = child.prototype = Object.create(parent.prototype);\n  Object.defineProperty(proto, 'constructor', {\n    value: child,\n    writable: true,\n    enumerable: true,\n    configurable: true\n  });\n  return extend(proto, members);\n}\n\n/**\n * Predicate that returns true if the value lies within the span\n * of the given range. The left and right flags control the use\n * of inclusive (true) or exclusive (false) comparisons.\n */\nfunction inrange (value, range, left, right) {\n  let r0 = range[0],\n      r1 = range[range.length - 1],\n      t;\n\n  if (r0 > r1) {\n    t = r0;\n    r0 = r1;\n    r1 = t;\n  }\n\n  left = left === undefined || left;\n  right = right === undefined || right;\n  return (left ? r0 <= value : r0 < value) && (right ? value <= r1 : value < r1);\n}\n\nfunction isBoolean (_) {\n  return typeof _ === 'boolean';\n}\n\nfunction isDate (_) {\n  return Object.prototype.toString.call(_) === '[object Date]';\n}\n\nfunction isIterable (_) {\n  return _ && isFunction(_[Symbol.iterator]);\n}\n\nfunction isNumber (_) {\n  return typeof _ === 'number';\n}\n\nfunction isRegExp (_) {\n  return Object.prototype.toString.call(_) === '[object RegExp]';\n}\n\nfunction isString (_) {\n  return typeof _ === 'string';\n}\n\nfunction key (fields, flat, opt) {\n  if (fields) {\n    fields = flat ? array(fields).map(f => f.replace(/\\\\(.)/g, '$1')) : array(fields);\n  }\n\n  const len = fields && fields.length,\n        gen = opt && opt.get || getter,\n        map = f => gen(flat ? [f] : splitAccessPath(f));\n\n  let fn;\n\n  if (!len) {\n    fn = function () {\n      return '';\n    };\n  } else if (len === 1) {\n    const get = map(fields[0]);\n\n    fn = function (_) {\n      return '' + get(_);\n    };\n  } else {\n    const get = fields.map(map);\n\n    fn = function (_) {\n      let s = '' + get[0](_),\n          i = 0;\n\n      while (++i < len) s += '|' + get[i](_);\n\n      return s;\n    };\n  }\n\n  return accessor(fn, fields, 'key');\n}\n\nfunction lerp (array, frac) {\n  const lo = array[0],\n        hi = peek(array),\n        f = +frac;\n  return !f ? lo : f === 1 ? hi : lo + f * (hi - lo);\n}\n\nconst DEFAULT_MAX_SIZE = 10000; // adapted from https://github.com/dominictarr/hashlru/ (MIT License)\n\nfunction lruCache (maxsize) {\n  maxsize = +maxsize || DEFAULT_MAX_SIZE;\n  let curr, prev, size;\n\n  const clear = () => {\n    curr = {};\n    prev = {};\n    size = 0;\n  };\n\n  const update = (key, value) => {\n    if (++size > maxsize) {\n      prev = curr;\n      curr = {};\n      size = 1;\n    }\n\n    return curr[key] = value;\n  };\n\n  clear();\n  return {\n    clear,\n    has: key => has(curr, key) || has(prev, key),\n    get: key => has(curr, key) ? curr[key] : has(prev, key) ? update(key, prev[key]) : undefined,\n    set: (key, value) => has(curr, key) ? curr[key] = value : update(key, value)\n  };\n}\n\nfunction merge (compare, array0, array1, output) {\n  const n0 = array0.length,\n        n1 = array1.length;\n  if (!n1) return array0;\n  if (!n0) return array1;\n  const merged = output || new array0.constructor(n0 + n1);\n  let i0 = 0,\n      i1 = 0,\n      i = 0;\n\n  for (; i0 < n0 && i1 < n1; ++i) {\n    merged[i] = compare(array0[i0], array1[i1]) > 0 ? array1[i1++] : array0[i0++];\n  }\n\n  for (; i0 < n0; ++i0, ++i) {\n    merged[i] = array0[i0];\n  }\n\n  for (; i1 < n1; ++i1, ++i) {\n    merged[i] = array1[i1];\n  }\n\n  return merged;\n}\n\nfunction repeat (str, reps) {\n  let s = '';\n\n  while (--reps >= 0) s += str;\n\n  return s;\n}\n\nfunction pad (str, length, padchar, align) {\n  const c = padchar || ' ',\n        s = str + '',\n        n = length - s.length;\n  return n <= 0 ? s : align === 'left' ? repeat(c, n) + s : align === 'center' ? repeat(c, ~~(n / 2)) + s + repeat(c, Math.ceil(n / 2)) : s + repeat(c, n);\n}\n\n/**\n * Return the numerical span of an array: the difference between\n * the last and first values.\n */\n\nfunction span (array) {\n  return array && peek(array) - array[0] || 0;\n}\n\nfunction $(x) {\n  return isArray(x) ? '[' + x.map($) + ']' : isObject(x) || isString(x) ? // Output valid JSON and JS source strings.\n  // See http://timelessrepo.com/json-isnt-a-javascript-subset\n  JSON.stringify(x).replace('\\u2028', '\\\\u2028').replace('\\u2029', '\\\\u2029') : x;\n}\n\nfunction toBoolean (_) {\n  return _ == null || _ === '' ? null : !_ || _ === 'false' || _ === '0' ? false : !!_;\n}\n\nconst defaultParser = _ => isNumber(_) ? _ : isDate(_) ? _ : Date.parse(_);\n\nfunction toDate (_, parser) {\n  parser = parser || defaultParser;\n  return _ == null || _ === '' ? null : parser(_);\n}\n\nfunction toString (_) {\n  return _ == null || _ === '' ? null : _ + '';\n}\n\nfunction toSet (_) {\n  const s = {},\n        n = _.length;\n\n  for (let i = 0; i < n; ++i) s[_[i]] = true;\n\n  return s;\n}\n\nfunction truncate (str, length, align, ellipsis) {\n  const e = ellipsis != null ? ellipsis : '\\u2026',\n        s = str + '',\n        n = s.length,\n        l = Math.max(0, length - e.length);\n  return n <= length ? s : align === 'left' ? e + s.slice(n - l) : align === 'center' ? s.slice(0, Math.ceil(l / 2)) + e + s.slice(n - ~~(l / 2)) : s.slice(0, l) + e;\n}\n\nfunction visitArray (array, filter, visitor) {\n  if (array) {\n    if (filter) {\n      const n = array.length;\n\n      for (let i = 0; i < n; ++i) {\n        const t = filter(array[i]);\n        if (t) visitor(t, i, array);\n      }\n    } else {\n      array.forEach(visitor);\n    }\n  }\n}\n\n\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,[encoded data, 33064 characters]\n//# sourceURL=webpack-internal:///./node_modules/vega-label/node_modules/vega-util/build/vega-util.module.js\n");

/***/ }),

/***/ "./node_modules/vega-lite/build/package.json":
/*!***************************************************!*\
  !*** ./node_modules/vega-lite/build/package.json ***!
  \***************************************************/
/*! exports provided: name, author, version, collaborators, homepage, description, main, unpkg, jsdelivr, module, types, bin, directories, files, scripts, repository, license, bugs, devDependencies, dependencies, peerDependencies, jest, default */
/***/ (function(module) {

eval("module.exports = JSON.parse(\"{\\\"name\\\":\\\"vega-lite\\\",\\\"author\\\":\\\"Dominik Moritz, Kanit \\\\\\\"Ham\\\\\\\" Wongsuphasawat, Arvind Satyanarayan, Jeffrey Heer\\\",\\\"version\\\":\\\"4.17.0\\\",\\\"collaborators\\\":[\\\"Kanit Wongsuphasawat (http://kanitw.yellowpigz.com)\\\",\\\"Dominik Moritz (https://www.domoritz.de)\\\",\\\"Arvind Satyanarayan (https://arvindsatya.com)\\\",\\\"Jeffrey Heer (https://jheer.org)\\\"],\\\"homepage\\\":\\\"https://vega.github.io/vega-lite/\\\",\\\"description\\\":\\\"Vega-Lite is a concise high-level language for interactive visualization.\\\",\\\"main\\\":\\\"build/vega-lite.js\\\",\\\"unpkg\\\":\\\"build/vega-lite.min.js\\\",\\\"jsdelivr\\\":\\\"build/vega-lite.min.js\\\",\\\"module\\\":\\\"build/src/index\\\",\\\"types\\\":\\\"build/src/index.d.ts\\\",\\\"bin\\\":{\\\"vl2png\\\":\\\"./bin/vl2png\\\",\\\"vl2svg\\\":\\\"./bin/vl2svg\\\",\\\"vl2pdf\\\":\\\"./bin/vl2pdf\\\",\\\"vl2vg\\\":\\\"./bin/vl2vg\\\"},\\\"directories\\\":{\\\"test\\\":\\\"test\\\"},\\\"files\\\":[\\\"bin\\\",\\\"build\\\",\\\"build-es5\\\",\\\"src\\\",\\\"vega-lite*\\\"],\\\"scripts\\\":{\\\"changelog\\\":\\\"conventional-changelog -p angular -r 2\\\",\\\"prebuild\\\":\\\"yarn clean:build\\\",\\\"build\\\":\\\"yarn build:only\\\",\\\"build:only\\\":\\\"tsc -p tsconfig.build.json && rollup -c\\\",\\\"prebuild:examples\\\":\\\"yarn build:only\\\",\\\"build:examples\\\":\\\"yarn data && TZ=America/Los_Angeles scripts/build-examples.sh\\\",\\\"prebuild:examples-full\\\":\\\"yarn build:only\\\",\\\"build:examples-full\\\":\\\"TZ=America/Los_Angeles scripts/build-examples.sh 1\\\",\\\"build:example\\\":\\\"TZ=America/Los_Angeles scripts/build-example.sh\\\",\\\"build:toc\\\":\\\"yarn build:jekyll && scripts/generate-toc\\\",\\\"build:site\\\":\\\"rollup -c site/rollup.config.js\\\",\\\"build:jekyll\\\":\\\"pushd site && bundle exec jekyll build -q && popd\\\",\\\"build:versions\\\":\\\"scripts/update-version.sh\\\",\\\"clean\\\":\\\"yarn clean:build && rimraf site/data/* && rimraf examples/compiled/*.png && find site/examples ! -name 'index.md' ! -name 'data' -type f -delete\\\",\\\"clean:build\\\":\\\"find build ! -name 'vega-lite-schema.json' -type f -delete && rimraf build/src && rimraf build-es5\\\",\\\"predeploy:site\\\":\\\"yarn presite\\\",\\\"deploy:site\\\":\\\"gh-pages -d site\\\",\\\"data\\\":\\\"rsync -r node_modules/vega-datasets/data/* site/data\\\",\\\"schema\\\":\\\"mkdir -p build && ts-json-schema-generator -f tsconfig.json -p src/index.ts -t TopLevelSpec --no-type-check --no-ref-encode > build/vega-lite-schema.json && yarn renameschema && cp build/vega-lite-schema.json site/_data/\\\",\\\"renameschema\\\":\\\"scripts/rename-schema.sh\\\",\\\"presite\\\":\\\"yarn data && yarn schema && yarn build:site && yarn build:versions && scripts/create-example-pages.sh\\\",\\\"site\\\":\\\"yarn site:only\\\",\\\"site:only\\\":\\\"pushd site && bundle exec jekyll serve -I -l && popd\\\",\\\"prettierbase\\\":\\\"prettier '**/*.{md,css,yml}'\\\",\\\"eslintbase\\\":\\\"eslint .\\\",\\\"format\\\":\\\"yarn eslintbase --fix && yarn prettierbase --write\\\",\\\"lint\\\":\\\"yarn eslintbase && yarn prettierbase --check\\\",\\\"test\\\":\\\"jest test/ && yarn lint && yarn schema && jest examples/ && yarn test:runtime\\\",\\\"test:inspect\\\":\\\"node --inspect-brk ./node_modules/.bin/jest --runInBand test\\\",\\\"test:runtime\\\":\\\"TZ=America/Los_Angeles jest test-runtime/\\\",\\\"test:runtime:generate\\\":\\\"yarn build:only && rimraf test-runtime/resources && VL_GENERATE_TESTS=true yarn test:runtime\\\",\\\"watch\\\":\\\"tsc -p tsconfig.build.json -w\\\",\\\"watch:site\\\":\\\"yarn build:site -w\\\",\\\"watch:test\\\":\\\"jest --watch\\\"},\\\"repository\\\":{\\\"type\\\":\\\"git\\\",\\\"url\\\":\\\"https://github.com/vega/vega-lite.git\\\"},\\\"license\\\":\\\"BSD-3-Clause\\\",\\\"bugs\\\":{\\\"url\\\":\\\"https://github.com/vega/vega-lite/issues\\\"},\\\"devDependencies\\\":{\\\"@babel/core\\\":\\\"^7.11.6\\\",\\\"@babel/preset-env\\\":\\\"^7.11.5\\\",\\\"@babel/preset-typescript\\\":\\\"^7.10.4\\\",\\\"@rollup/plugin-babel\\\":\\\"^5.2.1\\\",\\\"@rollup/plugin-commonjs\\\":\\\"^15.1.0\\\",\\\"@rollup/plugin-json\\\":\\\"^4.1.0\\\",\\\"@rollup/plugin-node-resolve\\\":\\\"^9.0.0\\\",\\\"@types/chai\\\":\\\"^4.2.13\\\",\\\"@types/d3\\\":\\\"^5.16.3\\\",\\\"@types/jest\\\":\\\"^26.0.14\\\",\\\"@types/mkdirp\\\":\\\"^1.0.1\\\",\\\"@types/pako\\\":\\\"^1.0.1\\\",\\\"@types/puppeteer\\\":\\\"^3.0.2\\\",\\\"@typescript-eslint/eslint-plugin\\\":\\\"^4.4.0\\\",\\\"@typescript-eslint/parser\\\":\\\"^4.4.0\\\",\\\"ajv\\\":\\\"^6.12.6\\\",\\\"chai\\\":\\\"^4.2.0\\\",\\\"cheerio\\\":\\\"^1.0.0-rc.3\\\",\\\"conventional-changelog-cli\\\":\\\"^2.1.0\\\",\\\"d3\\\":\\\"^6.2.0\\\",\\\"eslint\\\":\\\"^7.11.0\\\",\\\"eslint-config-prettier\\\":\\\"^6.12.0\\\",\\\"eslint-plugin-jest\\\":\\\"^24.1.0\\\",\\\"eslint-plugin-prettier\\\":\\\"^3.1.4\\\",\\\"gh-pages\\\":\\\"^3.1.0\\\",\\\"highlight.js\\\":\\\"^10.2.1\\\",\\\"jest\\\":\\\"^26.5.3\\\",\\\"jest-puppeteer\\\":\\\"^4.4.0\\\",\\\"mkdirp\\\":\\\"^1.0.4\\\",\\\"pako\\\":\\\"^1.0.11\\\",\\\"prettier\\\":\\\"^2.1.2\\\",\\\"puppeteer\\\":\\\"^5.3.1\\\",\\\"rollup\\\":\\\"^2.29.0\\\",\\\"rollup-plugin-bundle-size\\\":\\\"^1.0.3\\\",\\\"rollup-plugin-sourcemaps\\\":\\\"^0.6.3\\\",\\\"rollup-plugin-terser\\\":\\\"^7.0.2\\\",\\\"serve\\\":\\\"^11.3.2\\\",\\\"terser\\\":\\\"^5.3.5\\\",\\\"ts-json-schema-generator\\\":\\\"^0.76.1\\\",\\\"typescript\\\":\\\"~4.0.3\\\",\\\"vega-cli\\\":\\\"^5.17.0\\\",\\\"vega-datasets\\\":\\\"~2.2.0\\\",\\\"vega-embed\\\":\\\"^6.12.2\\\",\\\"vega-tooltip\\\":\\\"^0.24.2\\\",\\\"yaml-front-matter\\\":\\\"^4.1.0\\\"},\\\"dependencies\\\":{\\\"@types/clone\\\":\\\"~2.1.0\\\",\\\"@types/fast-json-stable-stringify\\\":\\\"^2.0.0\\\",\\\"array-flat-polyfill\\\":\\\"^1.0.1\\\",\\\"clone\\\":\\\"~2.1.2\\\",\\\"fast-deep-equal\\\":\\\"~3.1.3\\\",\\\"fast-json-stable-stringify\\\":\\\"~2.1.0\\\",\\\"json-stringify-pretty-compact\\\":\\\"~2.0.0\\\",\\\"tslib\\\":\\\"~2.0.3\\\",\\\"vega-event-selector\\\":\\\"~2.0.6\\\",\\\"vega-expression\\\":\\\"~3.0.0\\\",\\\"vega-util\\\":\\\"~1.16.0\\\",\\\"yargs\\\":\\\"~16.0.3\\\"},\\\"peerDependencies\\\":{\\\"vega\\\":\\\"^5.17.0\\\"},\\\"jest\\\":{\\\"preset\\\":\\\"jest-puppeteer\\\",\\\"testPathIgnorePatterns\\\":[\\\"<rootDir>/node_modules\\\",\\\"<rootDir>/build\\\",\\\"<rootDir>/_site\\\",\\\"<rootDir>/src\\\"],\\\"coverageDirectory\\\":\\\"./coverage/\\\",\\\"collectCoverage\\\":false,\\\"setupFiles\\\":[\\\"./test/jest.overrides.ts\\\"]}}\");//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvdmVnYS1saXRlL2J1aWxkL3BhY2thZ2UuanNvbi5qcyIsInNvdXJjZXMiOltdLCJtYXBwaW5ncyI6IiIsInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///./node_modules/vega-lite/build/package.json\n");

/***/ }),

/***/ "./node_modules/vega-lite/build/src/aggregate.js":
/*!*******************************************************!*\
  !*** ./node_modules/vega-lite/build/src/aggregate.js ***!
  \*******************************************************/
/*! exports provided: MULTIDOMAIN_SORT_OP_INDEX, isArgminDef, isArgmaxDef, AGGREGATE_OPS, isAggregateOp, COUNTING_OPS, isCountingAggregateOp, isMinMaxOp, SUM_OPS, SHARED_DOMAIN_OPS, SHARED_DOMAIN_OP_INDEX */
/***/ (function(module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"MULTIDOMAIN_SORT_OP_INDEX\", function() { return MULTIDOMAIN_SORT_OP_INDEX; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"isArgminDef\", function() { return isArgminDef; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"isArgmaxDef\", function() { return isArgmaxDef; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"AGGREGATE_OPS\", function() { return AGGREGATE_OPS; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"isAggregateOp\", function() { return isAggregateOp; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"COUNTING_OPS\", function() { return COUNTING_OPS; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"isCountingAggregateOp\", function() { return isCountingAggregateOp; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"isMinMaxOp\", function() { return isMinMaxOp; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"SUM_OPS\", function() { return SUM_OPS; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"SHARED_DOMAIN_OPS\", function() { return SHARED_DOMAIN_OPS; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"SHARED_DOMAIN_OP_INDEX\", function() { return SHARED_DOMAIN_OP_INDEX; });\n/* harmony import */ var vega_util__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! vega-util */ \"./node_modules/vega-lite/node_modules/vega-util/build/vega-util.module.js\");\n/* harmony import */ var _util__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./util */ \"./node_modules/vega-lite/build/src/util.js\");\n\n\nconst AGGREGATE_OP_INDEX = {\n    argmax: 1,\n    argmin: 1,\n    average: 1,\n    count: 1,\n    distinct: 1,\n    product: 1,\n    max: 1,\n    mean: 1,\n    median: 1,\n    min: 1,\n    missing: 1,\n    q1: 1,\n    q3: 1,\n    ci0: 1,\n    ci1: 1,\n    stderr: 1,\n    stdev: 1,\n    stdevp: 1,\n    sum: 1,\n    valid: 1,\n    values: 1,\n    variance: 1,\n    variancep: 1\n};\nconst MULTIDOMAIN_SORT_OP_INDEX = {\n    count: 1,\n    min: 1,\n    max: 1\n};\nfunction isArgminDef(a) {\n    return !!a && !!a['argmin'];\n}\nfunction isArgmaxDef(a) {\n    return !!a && !!a['argmax'];\n}\nconst AGGREGATE_OPS = Object(_util__WEBPACK_IMPORTED_MODULE_1__[\"keys\"])(AGGREGATE_OP_INDEX);\nfunction isAggregateOp(a) {\n    return Object(vega_util__WEBPACK_IMPORTED_MODULE_0__[\"isString\"])(a) && !!AGGREGATE_OP_INDEX[a];\n}\nconst COUNTING_OPS = ['count', 'valid', 'missing', 'distinct'];\nfunction isCountingAggregateOp(aggregate) {\n    return Object(vega_util__WEBPACK_IMPORTED_MODULE_0__[\"isString\"])(aggregate) && Object(_util__WEBPACK_IMPORTED_MODULE_1__[\"contains\"])(COUNTING_OPS, aggregate);\n}\nfunction isMinMaxOp(aggregate) {\n    return Object(vega_util__WEBPACK_IMPORTED_MODULE_0__[\"isString\"])(aggregate) && Object(_util__WEBPACK_IMPORTED_MODULE_1__[\"contains\"])(['min', 'max'], aggregate);\n}\n/** Additive-based aggregation operations. These can be applied to stack. */\nconst SUM_OPS = ['count', 'sum', 'distinct', 'valid', 'missing'];\n/**\n * Aggregation operators that always produce values within the range [domainMin, domainMax].\n */\nconst SHARED_DOMAIN_OPS = ['mean', 'average', 'median', 'q1', 'q3', 'min', 'max'];\nconst SHARED_DOMAIN_OP_INDEX = Object(vega_util__WEBPACK_IMPORTED_MODULE_0__[\"toSet\"])(SHARED_DOMAIN_OPS);\n//# sourceMappingURL=aggregate.js.map//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvdmVnYS1saXRlL2J1aWxkL3NyYy9hZ2dyZWdhdGUuanMuanMiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvdmVnYS1saXRlL2J1aWxkL3NyYy9hZ2dyZWdhdGUuanM/MzgyYSJdLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBpc1N0cmluZywgdG9TZXQgfSBmcm9tICd2ZWdhLXV0aWwnO1xuaW1wb3J0IHsgY29udGFpbnMsIGtleXMgfSBmcm9tICcuL3V0aWwnO1xuY29uc3QgQUdHUkVHQVRFX09QX0lOREVYID0ge1xuICAgIGFyZ21heDogMSxcbiAgICBhcmdtaW46IDEsXG4gICAgYXZlcmFnZTogMSxcbiAgICBjb3VudDogMSxcbiAgICBkaXN0aW5jdDogMSxcbiAgICBwcm9kdWN0OiAxLFxuICAgIG1heDogMSxcbiAgICBtZWFuOiAxLFxuICAgIG1lZGlhbjogMSxcbiAgICBtaW46IDEsXG4gICAgbWlzc2luZzogMSxcbiAgICBxMTogMSxcbiAgICBxMzogMSxcbiAgICBjaTA6IDEsXG4gICAgY2kxOiAxLFxuICAgIHN0ZGVycjogMSxcbiAgICBzdGRldjogMSxcbiAgICBzdGRldnA6IDEsXG4gICAgc3VtOiAxLFxuICAgIHZhbGlkOiAxLFxuICAgIHZhbHVlczogMSxcbiAgICB2YXJpYW5jZTogMSxcbiAgICB2YXJpYW5jZXA6IDFcbn07XG5leHBvcnQgY29uc3QgTVVMVElET01BSU5fU09SVF9PUF9JTkRFWCA9IHtcbiAgICBjb3VudDogMSxcbiAgICBtaW46IDEsXG4gICAgbWF4OiAxXG59O1xuZXhwb3J0IGZ1bmN0aW9uIGlzQXJnbWluRGVmKGEpIHtcbiAgICByZXR1cm4gISFhICYmICEhYVsnYXJnbWluJ107XG59XG5leHBvcnQgZnVuY3Rpb24gaXNBcmdtYXhEZWYoYSkge1xuICAgIHJldHVybiAhIWEgJiYgISFhWydhcmdtYXgnXTtcbn1cbmV4cG9ydCBjb25zdCBBR0dSRUdBVEVfT1BTID0ga2V5cyhBR0dSRUdBVEVfT1BfSU5ERVgpO1xuZXhwb3J0IGZ1bmN0aW9uIGlzQWdncmVnYXRlT3AoYSkge1xuICAgIHJldHVybiBpc1N0cmluZyhhKSAmJiAhIUFHR1JFR0FURV9PUF9JTkRFWFthXTtcbn1cbmV4cG9ydCBjb25zdCBDT1VOVElOR19PUFMgPSBbJ2NvdW50JywgJ3ZhbGlkJywgJ21pc3NpbmcnLCAnZGlzdGluY3QnXTtcbmV4cG9ydCBmdW5jdGlvbiBpc0NvdW50aW5nQWdncmVnYXRlT3AoYWdncmVnYXRlKSB7XG4gICAgcmV0dXJuIGlzU3RyaW5nKGFnZ3JlZ2F0ZSkgJiYgY29udGFpbnMoQ09VTlRJTkdfT1BTLCBhZ2dyZWdhdGUpO1xufVxuZXhwb3J0IGZ1bmN0aW9uIGlzTWluTWF4T3AoYWdncmVnYXRlKSB7XG4gICAgcmV0dXJuIGlzU3RyaW5nKGFnZ3JlZ2F0ZSkgJiYgY29udGFpbnMoWydtaW4nLCAnbWF4J10sIGFnZ3JlZ2F0ZSk7XG59XG4vKiogQWRkaXRpdmUtYmFzZWQgYWdncmVnYXRpb24gb3BlcmF0aW9ucy4gVGhlc2UgY2FuIGJlIGFwcGxpZWQgdG8gc3RhY2suICovXG5leHBvcnQgY29uc3QgU1VNX09QUyA9IFsnY291bnQnLCAnc3VtJywgJ2Rpc3RpbmN0JywgJ3ZhbGlkJywgJ21pc3NpbmcnXTtcbi8qKlxuICogQWdncmVnYXRpb24gb3BlcmF0b3JzIHRoYXQgYWx3YXlzIHByb2R1Y2UgdmFsdWVzIHdpdGhpbiB0aGUgcmFuZ2UgW2RvbWFpbk1pbiwgZG9tYWluTWF4XS5cbiAqL1xuZXhwb3J0IGNvbnN0IFNIQVJFRF9ET01BSU5fT1BTID0gWydtZWFuJywgJ2F2ZXJhZ2UnLCAnbWVkaWFuJywgJ3ExJywgJ3EzJywgJ21pbicsICdtYXgnXTtcbmV4cG9ydCBjb25zdCBTSEFSRURfRE9NQUlOX09QX0lOREVYID0gdG9TZXQoU0hBUkVEX0RPTUFJTl9PUFMpO1xuLy8jIHNvdXJjZU1hcHBpbmdVUkw9YWdncmVnYXRlLmpzLm1hcCJdLCJtYXBwaW5ncyI6IkFBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSIsInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///./node_modules/vega-lite/build/src/aggregate.js\n");

/***/ }),

/***/ "./node_modules/vega-lite/build/src/axis.js":
/*!**************************************************!*\
  !*** ./node_modules/vega-lite/build/src/axis.js ***!
  \**************************************************/
/*! exports provided: CONDITIONAL_AXIS_PROP_INDEX, isConditionalAxisValue, AXIS_PARTS, AXIS_PROPERTY_TYPE, COMMON_AXIS_PROPERTIES_INDEX, isAxisProperty, AXIS_PROPERTIES, AXIS_CONFIGS */
/***/ (function(module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"CONDITIONAL_AXIS_PROP_INDEX\", function() { return CONDITIONAL_AXIS_PROP_INDEX; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"isConditionalAxisValue\", function() { return isConditionalAxisValue; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"AXIS_PARTS\", function() { return AXIS_PARTS; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"AXIS_PROPERTY_TYPE\", function() { return AXIS_PROPERTY_TYPE; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"COMMON_AXIS_PROPERTIES_INDEX\", function() { return COMMON_AXIS_PROPERTIES_INDEX; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"isAxisProperty\", function() { return isAxisProperty; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"AXIS_PROPERTIES\", function() { return AXIS_PROPERTIES; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"AXIS_CONFIGS\", function() { return AXIS_CONFIGS; });\n/* harmony import */ var _util__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./util */ \"./node_modules/vega-lite/build/src/util.js\");\n\nconst CONDITIONAL_AXIS_PROP_INDEX = {\n    labelAlign: {\n        part: 'labels',\n        vgProp: 'align'\n    },\n    labelBaseline: {\n        part: 'labels',\n        vgProp: 'baseline'\n    },\n    labelColor: {\n        part: 'labels',\n        vgProp: 'fill'\n    },\n    labelFont: {\n        part: 'labels',\n        vgProp: 'font'\n    },\n    labelFontSize: {\n        part: 'labels',\n        vgProp: 'fontSize'\n    },\n    labelFontStyle: {\n        part: 'labels',\n        vgProp: 'fontStyle'\n    },\n    labelFontWeight: {\n        part: 'labels',\n        vgProp: 'fontWeight'\n    },\n    labelOpacity: {\n        part: 'labels',\n        vgProp: 'opacity'\n    },\n    labelOffset: null,\n    labelPadding: null,\n    gridColor: {\n        part: 'grid',\n        vgProp: 'stroke'\n    },\n    gridDash: {\n        part: 'grid',\n        vgProp: 'strokeDash'\n    },\n    gridDashOffset: {\n        part: 'grid',\n        vgProp: 'strokeDashOffset'\n    },\n    gridOpacity: {\n        part: 'grid',\n        vgProp: 'opacity'\n    },\n    gridWidth: {\n        part: 'grid',\n        vgProp: 'strokeWidth'\n    },\n    tickColor: {\n        part: 'ticks',\n        vgProp: 'stroke'\n    },\n    tickDash: {\n        part: 'ticks',\n        vgProp: 'strokeDash'\n    },\n    tickDashOffset: {\n        part: 'ticks',\n        vgProp: 'strokeDashOffset'\n    },\n    tickOpacity: {\n        part: 'ticks',\n        vgProp: 'opacity'\n    },\n    tickSize: null,\n    tickWidth: {\n        part: 'ticks',\n        vgProp: 'strokeWidth'\n    }\n};\nfunction isConditionalAxisValue(v) {\n    return v && v['condition'];\n}\nconst AXIS_PARTS = ['domain', 'grid', 'labels', 'ticks', 'title'];\n/**\n * A dictionary listing whether a certain axis property is applicable for only main axes or only grid axes.\n */\nconst AXIS_PROPERTY_TYPE = {\n    grid: 'grid',\n    gridCap: 'grid',\n    gridColor: 'grid',\n    gridDash: 'grid',\n    gridDashOffset: 'grid',\n    gridOpacity: 'grid',\n    gridScale: 'grid',\n    gridWidth: 'grid',\n    orient: 'main',\n    bandPosition: 'both',\n    aria: 'main',\n    description: 'main',\n    domain: 'main',\n    domainCap: 'main',\n    domainColor: 'main',\n    domainDash: 'main',\n    domainDashOffset: 'main',\n    domainOpacity: 'main',\n    domainWidth: 'main',\n    format: 'main',\n    formatType: 'main',\n    labelAlign: 'main',\n    labelAngle: 'main',\n    labelBaseline: 'main',\n    labelBound: 'main',\n    labelColor: 'main',\n    labelFlush: 'main',\n    labelFlushOffset: 'main',\n    labelFont: 'main',\n    labelFontSize: 'main',\n    labelFontStyle: 'main',\n    labelFontWeight: 'main',\n    labelLimit: 'main',\n    labelLineHeight: 'main',\n    labelOffset: 'main',\n    labelOpacity: 'main',\n    labelOverlap: 'main',\n    labelPadding: 'main',\n    labels: 'main',\n    labelSeparation: 'main',\n    maxExtent: 'main',\n    minExtent: 'main',\n    offset: 'both',\n    position: 'main',\n    tickCap: 'main',\n    tickColor: 'main',\n    tickDash: 'main',\n    tickDashOffset: 'main',\n    tickMinStep: 'main',\n    tickOffset: 'both',\n    tickOpacity: 'main',\n    tickRound: 'both',\n    ticks: 'main',\n    tickSize: 'main',\n    tickWidth: 'both',\n    title: 'main',\n    titleAlign: 'main',\n    titleAnchor: 'main',\n    titleAngle: 'main',\n    titleBaseline: 'main',\n    titleColor: 'main',\n    titleFont: 'main',\n    titleFontSize: 'main',\n    titleFontStyle: 'main',\n    titleFontWeight: 'main',\n    titleLimit: 'main',\n    titleLineHeight: 'main',\n    titleOpacity: 'main',\n    titlePadding: 'main',\n    titleX: 'main',\n    titleY: 'main',\n    encode: 'both',\n    scale: 'both',\n    tickBand: 'both',\n    tickCount: 'both',\n    tickExtra: 'both',\n    translate: 'both',\n    values: 'both',\n    zindex: 'both' // this is actually set afterward, so it doesn't matter\n};\nconst COMMON_AXIS_PROPERTIES_INDEX = {\n    orient: 1,\n    aria: 1,\n    bandPosition: 1,\n    description: 1,\n    domain: 1,\n    domainCap: 1,\n    domainColor: 1,\n    domainDash: 1,\n    domainDashOffset: 1,\n    domainOpacity: 1,\n    domainWidth: 1,\n    format: 1,\n    formatType: 1,\n    grid: 1,\n    gridCap: 1,\n    gridColor: 1,\n    gridDash: 1,\n    gridDashOffset: 1,\n    gridOpacity: 1,\n    gridWidth: 1,\n    labelAlign: 1,\n    labelAngle: 1,\n    labelBaseline: 1,\n    labelBound: 1,\n    labelColor: 1,\n    labelFlush: 1,\n    labelFlushOffset: 1,\n    labelFont: 1,\n    labelFontSize: 1,\n    labelFontStyle: 1,\n    labelFontWeight: 1,\n    labelLimit: 1,\n    labelLineHeight: 1,\n    labelOffset: 1,\n    labelOpacity: 1,\n    labelOverlap: 1,\n    labelPadding: 1,\n    labels: 1,\n    labelSeparation: 1,\n    maxExtent: 1,\n    minExtent: 1,\n    offset: 1,\n    position: 1,\n    tickBand: 1,\n    tickCap: 1,\n    tickColor: 1,\n    tickCount: 1,\n    tickDash: 1,\n    tickDashOffset: 1,\n    tickExtra: 1,\n    tickMinStep: 1,\n    tickOffset: 1,\n    tickOpacity: 1,\n    tickRound: 1,\n    ticks: 1,\n    tickSize: 1,\n    tickWidth: 1,\n    title: 1,\n    titleAlign: 1,\n    titleAnchor: 1,\n    titleAngle: 1,\n    titleBaseline: 1,\n    titleColor: 1,\n    titleFont: 1,\n    titleFontSize: 1,\n    titleFontStyle: 1,\n    titleFontWeight: 1,\n    titleLimit: 1,\n    titleLineHeight: 1,\n    titleOpacity: 1,\n    titlePadding: 1,\n    titleX: 1,\n    titleY: 1,\n    translate: 1,\n    values: 1,\n    zindex: 1\n};\nconst AXIS_PROPERTIES_INDEX = Object.assign(Object.assign({}, COMMON_AXIS_PROPERTIES_INDEX), { style: 1, labelExpr: 1, encoding: 1 });\nfunction isAxisProperty(prop) {\n    return !!AXIS_PROPERTIES_INDEX[prop];\n}\n// Export for dependent projects\nconst AXIS_PROPERTIES = Object(_util__WEBPACK_IMPORTED_MODULE_0__[\"keys\"])(AXIS_PROPERTIES_INDEX);\nconst AXIS_CONFIGS_INDEX = {\n    axis: 1,\n    axisBand: 1,\n    axisBottom: 1,\n    axisDiscrete: 1,\n    axisLeft: 1,\n    axisPoint: 1,\n    axisQuantitative: 1,\n    axisRight: 1,\n    axisTemporal: 1,\n    axisTop: 1,\n    axisX: 1,\n    axisXBand: 1,\n    axisXDiscrete: 1,\n    axisXPoint: 1,\n    axisXQuantitative: 1,\n    axisXTemporal: 1,\n    axisY: 1,\n    axisYBand: 1,\n    axisYDiscrete: 1,\n    axisYPoint: 1,\n    axisYQuantitative: 1,\n    axisYTemporal: 1\n};\nconst AXIS_CONFIGS = Object(_util__WEBPACK_IMPORTED_MODULE_0__[\"keys\"])(AXIS_CONFIGS_INDEX);\n//# sourceMappingURL=axis.js.map//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,[encoded data, 10696 characters]\n//# sourceURL=webpack-internal:///./node_modules/vega-lite/build/src/axis.js\n");

/***/ }),

/***/ "./node_modules/vega-lite/build/src/bin.js":
/*!*************************************************!*\
  !*** ./node_modules/vega-lite/build/src/bin.js ***!
  \*************************************************/
/*! exports provided: binToString, isBinning, isBinned, isBinParams, isSelectionExtent, autoMaxBins */
/***/ (function(module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"binToString\", function() { return binToString; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"isBinning\", function() { return isBinning; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"isBinned\", function() { return isBinned; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"isBinParams\", function() { return isBinParams; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"isSelectionExtent\", function() { return isSelectionExtent; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"autoMaxBins\", function() { return autoMaxBins; });\n/* harmony import */ var vega_util__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! vega-util */ \"./node_modules/vega-lite/node_modules/vega-util/build/vega-util.module.js\");\n/* harmony import */ var _channel__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./channel */ \"./node_modules/vega-lite/build/src/channel.js\");\n/* harmony import */ var _channeldef__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./channeldef */ \"./node_modules/vega-lite/build/src/channeldef.js\");\n/* harmony import */ var _util__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ./util */ \"./node_modules/vega-lite/build/src/util.js\");\n\n\n\n\n/**\n * Create a key for the bin configuration. Not for prebinned bin.\n */\nfunction binToString(bin) {\n    if (Object(vega_util__WEBPACK_IMPORTED_MODULE_0__[\"isBoolean\"])(bin)) {\n        bin = Object(_channeldef__WEBPACK_IMPORTED_MODULE_2__[\"normalizeBin\"])(bin, undefined);\n    }\n    return ('bin' +\n        Object(_util__WEBPACK_IMPORTED_MODULE_3__[\"keys\"])(bin)\n            .map(p => (isSelectionExtent(bin[p]) ? Object(_util__WEBPACK_IMPORTED_MODULE_3__[\"varName\"])(`_${p}_${Object(_util__WEBPACK_IMPORTED_MODULE_3__[\"entries\"])(bin[p])}`) : Object(_util__WEBPACK_IMPORTED_MODULE_3__[\"varName\"])(`_${p}_${bin[p]}`)))\n            .join(''));\n}\n/**\n * Vega-Lite should bin the data.\n */\nfunction isBinning(bin) {\n    return bin === true || (isBinParams(bin) && !bin.binned);\n}\n/**\n * The data is already binned and so Vega-Lite should not bin it again.\n */\nfunction isBinned(bin) {\n    return bin === 'binned' || (isBinParams(bin) && bin.binned === true);\n}\nfunction isBinParams(bin) {\n    return Object(vega_util__WEBPACK_IMPORTED_MODULE_0__[\"isObject\"])(bin);\n}\nfunction isSelectionExtent(extent) {\n    return extent === null || extent === void 0 ? void 0 : extent['selection'];\n}\nfunction autoMaxBins(channel) {\n    switch (channel) {\n        case _channel__WEBPACK_IMPORTED_MODULE_1__[\"ROW\"]:\n        case _channel__WEBPACK_IMPORTED_MODULE_1__[\"COLUMN\"]:\n        case _channel__WEBPACK_IMPORTED_MODULE_1__[\"SIZE\"]:\n        case _channel__WEBPACK_IMPORTED_MODULE_1__[\"COLOR\"]:\n        case _channel__WEBPACK_IMPORTED_MODULE_1__[\"FILL\"]:\n        case _channel__WEBPACK_IMPORTED_MODULE_1__[\"STROKE\"]:\n        case _channel__WEBPACK_IMPORTED_MODULE_1__[\"STROKEWIDTH\"]:\n        case _channel__WEBPACK_IMPORTED_MODULE_1__[\"OPACITY\"]:\n        case _channel__WEBPACK_IMPORTED_MODULE_1__[\"FILLOPACITY\"]:\n        case _channel__WEBPACK_IMPORTED_MODULE_1__[\"STROKEOPACITY\"]:\n        // Facets and Size shouldn't have too many bins\n        // We choose 6 like shape to simplify the rule [falls through]\n        case _channel__WEBPACK_IMPORTED_MODULE_1__[\"SHAPE\"]:\n            return 6; // Vega's \"shape\" has 6 distinct values\n        case _channel__WEBPACK_IMPORTED_MODULE_1__[\"STROKEDASH\"]:\n            return 4; // We only provide 5 different stroke dash values (but 4 is more effective)\n        default:\n            return 10;\n    }\n}\n//# sourceMappingURL=bin.js.map//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvdmVnYS1saXRlL2J1aWxkL3NyYy9iaW4uanMuanMiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvdmVnYS1saXRlL2J1aWxkL3NyYy9iaW4uanM/ZTJhYiJdLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBpc0Jvb2xlYW4sIGlzT2JqZWN0IH0gZnJvbSAndmVnYS11dGlsJztcbmltcG9ydCB7IENPTE9SLCBDT0xVTU4sIEZJTEwsIEZJTExPUEFDSVRZLCBPUEFDSVRZLCBST1csIFNIQVBFLCBTSVpFLCBTVFJPS0UsIFNUUk9LRURBU0gsIFNUUk9LRU9QQUNJVFksIFNUUk9LRVdJRFRIIH0gZnJvbSAnLi9jaGFubmVsJztcbmltcG9ydCB7IG5vcm1hbGl6ZUJpbiB9IGZyb20gJy4vY2hhbm5lbGRlZic7XG5pbXBvcnQgeyBlbnRyaWVzLCBrZXlzLCB2YXJOYW1lIH0gZnJvbSAnLi91dGlsJztcbi8qKlxuICogQ3JlYXRlIGEga2V5IGZvciB0aGUgYmluIGNvbmZpZ3VyYXRpb24uIE5vdCBmb3IgcHJlYmlubmVkIGJpbi5cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGJpblRvU3RyaW5nKGJpbikge1xuICAgIGlmIChpc0Jvb2xlYW4oYmluKSkge1xuICAgICAgICBiaW4gPSBub3JtYWxpemVCaW4oYmluLCB1bmRlZmluZWQpO1xuICAgIH1cbiAgICByZXR1cm4gKCdiaW4nICtcbiAgICAgICAga2V5cyhiaW4pXG4gICAgICAgICAgICAubWFwKHAgPT4gKGlzU2VsZWN0aW9uRXh0ZW50KGJpbltwXSkgPyB2YXJOYW1lKGBfJHtwfV8ke2VudHJpZXMoYmluW3BdKX1gKSA6IHZhck5hbWUoYF8ke3B9XyR7YmluW3BdfWApKSlcbiAgICAgICAgICAgIC5qb2luKCcnKSk7XG59XG4vKipcbiAqIFZlZ2EtTGl0ZSBzaG91bGQgYmluIHRoZSBkYXRhLlxuICovXG5leHBvcnQgZnVuY3Rpb24gaXNCaW5uaW5nKGJpbikge1xuICAgIHJldHVybiBiaW4gPT09IHRydWUgfHwgKGlzQmluUGFyYW1zKGJpbikgJiYgIWJpbi5iaW5uZWQpO1xufVxuLyoqXG4gKiBUaGUgZGF0YSBpcyBhbHJlYWR5IGJpbm5lZCBhbmQgc28gVmVnYS1MaXRlIHNob3VsZCBub3QgYmluIGl0IGFnYWluLlxuICovXG5leHBvcnQgZnVuY3Rpb24gaXNCaW5uZWQoYmluKSB7XG4gICAgcmV0dXJuIGJpbiA9PT0gJ2Jpbm5lZCcgfHwgKGlzQmluUGFyYW1zKGJpbikgJiYgYmluLmJpbm5lZCA9PT0gdHJ1ZSk7XG59XG5leHBvcnQgZnVuY3Rpb24gaXNCaW5QYXJhbXMoYmluKSB7XG4gICAgcmV0dXJuIGlzT2JqZWN0KGJpbik7XG59XG5leHBvcnQgZnVuY3Rpb24gaXNTZWxlY3Rpb25FeHRlbnQoZXh0ZW50KSB7XG4gICAgcmV0dXJuIGV4dGVudCA9PT0gbnVsbCB8fCBleHRlbnQgPT09IHZvaWQgMCA/IHZvaWQgMCA6IGV4dGVudFsnc2VsZWN0aW9uJ107XG59XG5leHBvcnQgZnVuY3Rpb24gYXV0b01heEJpbnMoY2hhbm5lbCkge1xuICAgIHN3aXRjaCAoY2hhbm5lbCkge1xuICAgICAgICBjYXNlIFJPVzpcbiAgICAgICAgY2FzZSBDT0xVTU46XG4gICAgICAgIGNhc2UgU0laRTpcbiAgICAgICAgY2FzZSBDT0xPUjpcbiAgICAgICAgY2FzZSBGSUxMOlxuICAgICAgICBjYXNlIFNUUk9LRTpcbiAgICAgICAgY2FzZSBTVFJPS0VXSURUSDpcbiAgICAgICAgY2FzZSBPUEFDSVRZOlxuICAgICAgICBjYXNlIEZJTExPUEFDSVRZOlxuICAgICAgICBjYXNlIFNUUk9LRU9QQUNJVFk6XG4gICAgICAgIC8vIEZhY2V0cyBhbmQgU2l6ZSBzaG91bGRuJ3QgaGF2ZSB0b28gbWFueSBiaW5zXG4gICAgICAgIC8vIFdlIGNob29zZSA2IGxpa2Ugc2hhcGUgdG8gc2ltcGxpZnkgdGhlIHJ1bGUgW2ZhbGxzIHRocm91Z2hdXG4gICAgICAgIGNhc2UgU0hBUEU6XG4gICAgICAgICAgICByZXR1cm4gNjsgLy8gVmVnYSdzIFwic2hhcGVcIiBoYXMgNiBkaXN0aW5jdCB2YWx1ZXNcbiAgICAgICAgY2FzZSBTVFJPS0VEQVNIOlxuICAgICAgICAgICAgcmV0dXJuIDQ7IC8vIFdlIG9ubHkgcHJvdmlkZSA1IGRpZmZlcmVudCBzdHJva2UgZGFzaCB2YWx1ZXMgKGJ1dCA0IGlzIG1vcmUgZWZmZWN0aXZlKVxuICAgICAgICBkZWZhdWx0OlxuICAgICAgICAgICAgcmV0dXJuIDEwO1xuICAgIH1cbn1cbi8vIyBzb3VyY2VNYXBwaW5nVVJMPWJpbi5qcy5tYXAiXSwibWFwcGluZ3MiOiJBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EiLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///./node_modules/vega-lite/build/src/bin.js\n");

/***/ }),

/***/ "./node_modules/vega-lite/build/src/channel.js":
/*!*****************************************************!*\
  !*** ./node_modules/vega-lite/build/src/channel.js ***!
  \*****************************************************/
/*! exports provided: ROW, COLUMN, FACET, X, Y, X2, Y2, RADIUS, RADIUS2, THETA, THETA2, LATITUDE, LONGITUDE, LATITUDE2, LONGITUDE2, COLOR, FILL, STROKE, SHAPE, SIZE, ANGLE, OPACITY, FILLOPACITY, STROKEOPACITY, STROKEWIDTH, STROKEDASH, TEXT, ORDER, DETAIL, KEY, TOOLTIP, HREF, URL, DESCRIPTION, isPolarPositionChannel, getPositionChannelFromLatLong, isGeoPositionChannel, GEOPOSITION_CHANNELS, isColorChannel, FACET_CHANNELS, CHANNELS, SINGLE_DEF_CHANNELS, SINGLE_DEF_UNIT_CHANNELS, isSingleDefUnitChannel, isChannel, SECONDARY_RANGE_CHANNEL, isSecondaryRangeChannel, getMainRangeChannel, getVgPositionChannel, getSecondaryRangeChannel, getSizeChannel, getOffsetChannel, UNIT_CHANNELS, NONPOSITION_CHANNELS, POSITION_SCALE_CHANNEL_INDEX, POSITION_SCALE_CHANNELS, isXorY, POLAR_POSITION_SCALE_CHANNEL_INDEX, POLAR_POSITION_SCALE_CHANNELS, getPositionScaleChannel, NONPOSITION_SCALE_CHANNELS, isNonPositionScaleChannel, supportLegend, SCALE_CHANNELS, isScaleChannel, supportMark, rangeType */
/***/ (function(module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"ROW\", function() { return ROW; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"COLUMN\", function() { return COLUMN; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"FACET\", function() { return FACET; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"X\", function() { return X; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"Y\", function() { return Y; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"X2\", function() { return X2; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"Y2\", function() { return Y2; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"RADIUS\", function() { return RADIUS; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"RADIUS2\", function() { return RADIUS2; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"THETA\", function() { return THETA; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"THETA2\", function() { return THETA2; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"LATITUDE\", function() { return LATITUDE; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"LONGITUDE\", function() { return LONGITUDE; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"LATITUDE2\", function() { return LATITUDE2; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"LONGITUDE2\", function() { return LONGITUDE2; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"COLOR\", function() { return COLOR; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"FILL\", function() { return FILL; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"STROKE\", function() { return STROKE; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"SHAPE\", function() { return SHAPE; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"SIZE\", function() { return SIZE; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"ANGLE\", function() { return ANGLE; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"OPACITY\", function() { return OPACITY; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"FILLOPACITY\", function() { return FILLOPACITY; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"STROKEOPACITY\", function() { return STROKEOPACITY; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"STROKEWIDTH\", function() { return STROKEWIDTH; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"STROKEDASH\", function() { return STROKEDASH; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"TEXT\", function() { return TEXT; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"ORDER\", function() { return ORDER; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"DETAIL\", function() { return DETAIL; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"KEY\", function() { return KEY; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"TOOLTIP\", function() { return TOOLTIP; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"HREF\", function() { return HREF; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"URL\", function() { return URL; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"DESCRIPTION\", function() { return DESCRIPTION; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"isPolarPositionChannel\", function() { return isPolarPositionChannel; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"getPositionChannelFromLatLong\", function() { return getPositionChannelFromLatLong; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"isGeoPositionChannel\", function() { return isGeoPositionChannel; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"GEOPOSITION_CHANNELS\", function() { return GEOPOSITION_CHANNELS; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"isColorChannel\", function() { return isColorChannel; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"FACET_CHANNELS\", function() { return FACET_CHANNELS; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"CHANNELS\", function() { return CHANNELS; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"SINGLE_DEF_CHANNELS\", function() { return SINGLE_DEF_CHANNELS; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"SINGLE_DEF_UNIT_CHANNELS\", function() { return SINGLE_DEF_UNIT_CHANNELS; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"isSingleDefUnitChannel\", function() { return isSingleDefUnitChannel; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"isChannel\", function() { return isChannel; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"SECONDARY_RANGE_CHANNEL\", function() { return SECONDARY_RANGE_CHANNEL; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"isSecondaryRangeChannel\", function() { return isSecondaryRangeChannel; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"getMainRangeChannel\", function() { return getMainRangeChannel; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"getVgPositionChannel\", function() { return getVgPositionChannel; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"getSecondaryRangeChannel\", function() { return getSecondaryRangeChannel; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"getSizeChannel\", function() { return getSizeChannel; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"getOffsetChannel\", function() { return getOffsetChannel; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"UNIT_CHANNELS\", function() { return UNIT_CHANNELS; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"NONPOSITION_CHANNELS\", function() { return NONPOSITION_CHANNELS; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"POSITION_SCALE_CHANNEL_INDEX\", function() { return POSITION_SCALE_CHANNEL_INDEX; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"POSITION_SCALE_CHANNELS\", function() { return POSITION_SCALE_CHANNELS; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"isXorY\", function() { return isXorY; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"POLAR_POSITION_SCALE_CHANNEL_INDEX\", function() { return POLAR_POSITION_SCALE_CHANNEL_INDEX; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"POLAR_POSITION_SCALE_CHANNELS\", function() { return POLAR_POSITION_SCALE_CHANNELS; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"getPositionScaleChannel\", function() { return getPositionScaleChannel; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"NONPOSITION_SCALE_CHANNELS\", function() { return NONPOSITION_SCALE_CHANNELS; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"isNonPositionScaleChannel\", function() { return isNonPositionScaleChannel; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"supportLegend\", function() { return supportLegend; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"SCALE_CHANNELS\", function() { return SCALE_CHANNELS; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"isScaleChannel\", function() { return isScaleChannel; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"supportMark\", function() { return supportMark; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"rangeType\", function() { return rangeType; });\n/* harmony import */ var _util__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./util */ \"./node_modules/vega-lite/build/src/util.js\");\n/*\n * Constants and utilities for encoding channels (Visual variables)\n * such as 'x', 'y', 'color'.\n */\nvar __rest = (undefined && undefined.__rest) || function (s, e) {\n    var t = {};\n    for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0)\n        t[p] = s[p];\n    if (s != null && typeof Object.getOwnPropertySymbols === \"function\")\n        for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) {\n            if (e.indexOf(p[i]) < 0 && Object.prototype.propertyIsEnumerable.call(s, p[i]))\n                t[p[i]] = s[p[i]];\n        }\n    return t;\n};\n\n// Facet\nconst ROW = 'row';\nconst COLUMN = 'column';\nconst FACET = 'facet';\n// Position\nconst X = 'x';\nconst Y = 'y';\nconst X2 = 'x2';\nconst Y2 = 'y2';\n// Arc-Position\nconst RADIUS = 'radius';\nconst RADIUS2 = 'radius2';\nconst THETA = 'theta';\nconst THETA2 = 'theta2';\n// Geo Position\nconst LATITUDE = 'latitude';\nconst LONGITUDE = 'longitude';\nconst LATITUDE2 = 'latitude2';\nconst LONGITUDE2 = 'longitude2';\n// Mark property with scale\nconst COLOR = 'color';\nconst FILL = 'fill';\nconst STROKE = 'stroke';\nconst SHAPE = 'shape';\nconst SIZE = 'size';\nconst ANGLE = 'angle';\nconst OPACITY = 'opacity';\nconst FILLOPACITY = 'fillOpacity';\nconst STROKEOPACITY = 'strokeOpacity';\nconst STROKEWIDTH = 'strokeWidth';\nconst STROKEDASH = 'strokeDash';\n// Non-scale channel\nconst TEXT = 'text';\nconst ORDER = 'order';\nconst DETAIL = 'detail';\nconst KEY = 'key';\nconst TOOLTIP = 'tooltip';\nconst HREF = 'href';\nconst URL = 'url';\nconst DESCRIPTION = 'description';\nconst POSITION_CHANNEL_INDEX = {\n    x: 1,\n    y: 1,\n    x2: 1,\n    y2: 1\n};\nconst POLAR_POSITION_CHANNEL_INDEX = {\n    theta: 1,\n    theta2: 1,\n    radius: 1,\n    radius2: 1\n};\nfunction isPolarPositionChannel(c) {\n    return c in POLAR_POSITION_CHANNEL_INDEX;\n}\nconst GEO_POSIITON_CHANNEL_INDEX = {\n    longitude: 1,\n    longitude2: 1,\n    latitude: 1,\n    latitude2: 1\n};\nfunction getPositionChannelFromLatLong(channel) {\n    switch (channel) {\n        case LATITUDE:\n            return 'y';\n        case LATITUDE2:\n            return 'y2';\n        case LONGITUDE:\n            return 'x';\n        case LONGITUDE2:\n            return 'x2';\n    }\n}\nfunction isGeoPositionChannel(c) {\n    return c in GEO_POSIITON_CHANNEL_INDEX;\n}\nconst GEOPOSITION_CHANNELS = Object(_util__WEBPACK_IMPORTED_MODULE_0__[\"keys\"])(GEO_POSIITON_CHANNEL_INDEX);\nconst UNIT_CHANNEL_INDEX = Object.assign(Object.assign(Object.assign(Object.assign({}, POSITION_CHANNEL_INDEX), POLAR_POSITION_CHANNEL_INDEX), GEO_POSIITON_CHANNEL_INDEX), { \n    // color\n    color: 1, fill: 1, stroke: 1, \n    // other non-position with scale\n    opacity: 1, fillOpacity: 1, strokeOpacity: 1, strokeWidth: 1, strokeDash: 1, size: 1, angle: 1, shape: 1, \n    // channels without scales\n    order: 1, text: 1, detail: 1, key: 1, tooltip: 1, href: 1, url: 1, description: 1 });\nfunction isColorChannel(channel) {\n    return channel === COLOR || channel === FILL || channel === STROKE;\n}\nconst FACET_CHANNEL_INDEX = {\n    row: 1,\n    column: 1,\n    facet: 1\n};\nconst FACET_CHANNELS = Object(_util__WEBPACK_IMPORTED_MODULE_0__[\"keys\"])(FACET_CHANNEL_INDEX);\nconst CHANNEL_INDEX = Object.assign(Object.assign({}, UNIT_CHANNEL_INDEX), FACET_CHANNEL_INDEX);\nconst CHANNELS = Object(_util__WEBPACK_IMPORTED_MODULE_0__[\"keys\"])(CHANNEL_INDEX);\nconst { order: _o, detail: _d, tooltip: _tt1 } = CHANNEL_INDEX, SINGLE_DEF_CHANNEL_INDEX = __rest(CHANNEL_INDEX, [\"order\", \"detail\", \"tooltip\"]);\nconst { row: _r, column: _c, facet: _f } = SINGLE_DEF_CHANNEL_INDEX, SINGLE_DEF_UNIT_CHANNEL_INDEX = __rest(SINGLE_DEF_CHANNEL_INDEX, [\"row\", \"column\", \"facet\"]);\n/**\n * Channels that cannot have an array of channelDef.\n * model.fieldDef, getFieldDef only work for these channels.\n *\n * (The only two channels that can have an array of channelDefs are \"detail\" and \"order\".\n * Since there can be multiple fieldDefs for detail and order, getFieldDef/model.fieldDef\n * are not applicable for them. Similarly, selection projection won't work with \"detail\" and \"order\".)\n */\nconst SINGLE_DEF_CHANNELS = Object(_util__WEBPACK_IMPORTED_MODULE_0__[\"keys\"])(SINGLE_DEF_CHANNEL_INDEX);\nconst SINGLE_DEF_UNIT_CHANNELS = Object(_util__WEBPACK_IMPORTED_MODULE_0__[\"keys\"])(SINGLE_DEF_UNIT_CHANNEL_INDEX);\nfunction isSingleDefUnitChannel(str) {\n    return !!SINGLE_DEF_UNIT_CHANNEL_INDEX[str];\n}\nfunction isChannel(str) {\n    return !!CHANNEL_INDEX[str];\n}\nconst SECONDARY_RANGE_CHANNEL = [X2, Y2, LATITUDE2, LONGITUDE2, THETA2, RADIUS2];\nfunction isSecondaryRangeChannel(c) {\n    const main = getMainRangeChannel(c);\n    return main !== c;\n}\n/**\n * Get the main channel for a range channel. E.g. `x` for `x2`.\n */\nfunction getMainRangeChannel(channel) {\n    switch (channel) {\n        case X2:\n            return X;\n        case Y2:\n            return Y;\n        case LATITUDE2:\n            return LATITUDE;\n        case LONGITUDE2:\n            return LONGITUDE;\n        case THETA2:\n            return THETA;\n        case RADIUS2:\n            return RADIUS;\n    }\n    return channel;\n}\nfunction getVgPositionChannel(channel) {\n    if (isPolarPositionChannel(channel)) {\n        switch (channel) {\n            case THETA:\n                return 'startAngle';\n            case THETA2:\n                return 'endAngle';\n            case RADIUS:\n                return 'outerRadius';\n            case RADIUS2:\n                return 'innerRadius';\n        }\n    }\n    return channel;\n}\n/**\n * Get the main channel for a range channel. E.g. `x` for `x2`.\n */\nfunction getSecondaryRangeChannel(channel) {\n    switch (channel) {\n        case X:\n            return X2;\n        case Y:\n            return Y2;\n        case LATITUDE:\n            return LATITUDE2;\n        case LONGITUDE:\n            return LONGITUDE2;\n        case THETA:\n            return THETA2;\n        case RADIUS:\n            return RADIUS2;\n    }\n    return undefined;\n}\nfunction getSizeChannel(channel) {\n    switch (channel) {\n        case X:\n        case X2:\n            return 'width';\n        case Y:\n        case Y2:\n            return 'height';\n    }\n    return undefined;\n}\n/**\n * Get the main channel for a range channel. E.g. `x` for `x2`.\n */\nfunction getOffsetChannel(channel) {\n    switch (channel) {\n        case X:\n            return 'xOffset';\n        case Y:\n            return 'yOffset';\n        case X2:\n            return 'x2Offset';\n        case Y2:\n            return 'y2Offset';\n        case THETA:\n            return 'thetaOffset';\n        case RADIUS:\n            return 'radiusOffset';\n        case THETA2:\n            return 'theta2Offset';\n        case RADIUS2:\n            return 'radius2Offset';\n    }\n    return undefined;\n}\n// CHANNELS without COLUMN, ROW\nconst UNIT_CHANNELS = Object(_util__WEBPACK_IMPORTED_MODULE_0__[\"keys\"])(UNIT_CHANNEL_INDEX);\n// NONPOSITION_CHANNELS = UNIT_CHANNELS without X, Y, X2, Y2;\nconst { x: _x, y: _y, \n// x2 and y2 share the same scale as x and y\nx2: _x2, y2: _y2, latitude: _latitude, longitude: _longitude, latitude2: _latitude2, longitude2: _longitude2, theta: _theta, theta2: _theta2, radius: _radius, radius2: _radius2 } = UNIT_CHANNEL_INDEX, \n// The rest of unit channels then have scale\nNONPOSITION_CHANNEL_INDEX = __rest(UNIT_CHANNEL_INDEX, [\"x\", \"y\", \"x2\", \"y2\", \"latitude\", \"longitude\", \"latitude2\", \"longitude2\", \"theta\", \"theta2\", \"radius\", \"radius2\"]);\nconst NONPOSITION_CHANNELS = Object(_util__WEBPACK_IMPORTED_MODULE_0__[\"keys\"])(NONPOSITION_CHANNEL_INDEX);\nconst POSITION_SCALE_CHANNEL_INDEX = {\n    x: 1,\n    y: 1\n};\nconst POSITION_SCALE_CHANNELS = Object(_util__WEBPACK_IMPORTED_MODULE_0__[\"keys\"])(POSITION_SCALE_CHANNEL_INDEX);\nfunction isXorY(channel) {\n    return channel in POSITION_SCALE_CHANNEL_INDEX;\n}\nconst POLAR_POSITION_SCALE_CHANNEL_INDEX = {\n    theta: 1,\n    radius: 1\n};\nconst POLAR_POSITION_SCALE_CHANNELS = Object(_util__WEBPACK_IMPORTED_MODULE_0__[\"keys\"])(POLAR_POSITION_SCALE_CHANNEL_INDEX);\nfunction getPositionScaleChannel(sizeType) {\n    return sizeType === 'width' ? X : Y;\n}\n// NON_POSITION_SCALE_CHANNEL = SCALE_CHANNELS without X, Y\nconst { \n// x2 and y2 share the same scale as x and y\n// text and tooltip have format instead of scale,\n// href has neither format, nor scale\ntext: _t, tooltip: _tt, href: _hr, url: _u, description: _al, \n// detail and order have no scale\ndetail: _dd, key: _k, order: _oo } = NONPOSITION_CHANNEL_INDEX, NONPOSITION_SCALE_CHANNEL_INDEX = __rest(NONPOSITION_CHANNEL_INDEX, [\"text\", \"tooltip\", \"href\", \"url\", \"description\", \"detail\", \"key\", \"order\"]);\nconst NONPOSITION_SCALE_CHANNELS = Object(_util__WEBPACK_IMPORTED_MODULE_0__[\"keys\"])(NONPOSITION_SCALE_CHANNEL_INDEX);\nfunction isNonPositionScaleChannel(channel) {\n    return !!NONPOSITION_CHANNEL_INDEX[channel];\n}\n/**\n * @returns whether Vega supports legends for a particular channel\n */\nfunction supportLegend(channel) {\n    switch (channel) {\n        case COLOR:\n        case FILL:\n        case STROKE:\n        case SIZE:\n        case SHAPE:\n        case OPACITY:\n        case STROKEWIDTH:\n        case STROKEDASH:\n            return true;\n        case FILLOPACITY:\n        case STROKEOPACITY:\n        case ANGLE:\n            return false;\n    }\n}\n// Declare SCALE_CHANNEL_INDEX\nconst SCALE_CHANNEL_INDEX = Object.assign(Object.assign(Object.assign({}, POSITION_SCALE_CHANNEL_INDEX), POLAR_POSITION_SCALE_CHANNEL_INDEX), NONPOSITION_SCALE_CHANNEL_INDEX);\n/** List of channels with scales */\nconst SCALE_CHANNELS = Object(_util__WEBPACK_IMPORTED_MODULE_0__[\"keys\"])(SCALE_CHANNEL_INDEX);\nfunction isScaleChannel(channel) {\n    return !!SCALE_CHANNEL_INDEX[channel];\n}\n/**\n * Return whether a channel supports a particular mark type.\n * @param channel  channel name\n * @param mark the mark type\n * @return whether the mark supports the channel\n */\nfunction supportMark(channel, mark) {\n    return getSupportedMark(channel)[mark];\n}\nconst ALL_MARKS = {\n    // all marks\n    arc: 'always',\n    area: 'always',\n    bar: 'always',\n    circle: 'always',\n    geoshape: 'always',\n    image: 'always',\n    line: 'always',\n    rule: 'always',\n    point: 'always',\n    rect: 'always',\n    square: 'always',\n    trail: 'always',\n    text: 'always',\n    tick: 'always'\n};\nconst { geoshape: _g } = ALL_MARKS, ALL_MARKS_EXCEPT_GEOSHAPE = __rest(ALL_MARKS, [\"geoshape\"]);\n/**\n * Return a dictionary showing whether a channel supports mark type.\n * @param channel\n * @return A dictionary mapping mark types to 'always', 'binned', or undefined\n */\nfunction getSupportedMark(channel) {\n    switch (channel) {\n        case COLOR:\n        case FILL:\n        case STROKE:\n        // falls through\n        case DESCRIPTION:\n        case DETAIL:\n        case KEY:\n        case TOOLTIP:\n        case HREF:\n        case ORDER: // TODO: revise (order might not support rect, which is not stackable?)\n        case OPACITY:\n        case FILLOPACITY:\n        case STROKEOPACITY:\n        case STROKEWIDTH:\n        // falls through\n        case FACET:\n        case ROW: // falls through\n        case COLUMN:\n            return ALL_MARKS;\n        case X:\n        case Y:\n        case LATITUDE:\n        case LONGITUDE:\n            // all marks except geoshape. geoshape does not use X, Y -- it uses a projection\n            return ALL_MARKS_EXCEPT_GEOSHAPE;\n        case X2:\n        case Y2:\n        case LATITUDE2:\n        case LONGITUDE2:\n            return {\n                area: 'always',\n                bar: 'always',\n                image: 'always',\n                rect: 'always',\n                rule: 'always',\n                circle: 'binned',\n                point: 'binned',\n                square: 'binned',\n                tick: 'binned',\n                line: 'binned',\n                trail: 'binned'\n            };\n        case SIZE:\n            return {\n                point: 'always',\n                tick: 'always',\n                rule: 'always',\n                circle: 'always',\n                square: 'always',\n                bar: 'always',\n                text: 'always',\n                line: 'always',\n                trail: 'always'\n            };\n        case STROKEDASH:\n            return {\n                line: 'always',\n                point: 'always',\n                tick: 'always',\n                rule: 'always',\n                circle: 'always',\n                square: 'always',\n                bar: 'always',\n                geoshape: 'always'\n            };\n        case SHAPE:\n            return { point: 'always', geoshape: 'always' };\n        case TEXT:\n            return { text: 'always' };\n        case ANGLE:\n            return { point: 'always', square: 'always', text: 'always' };\n        case URL:\n            return { image: 'always' };\n        case THETA:\n            return { text: 'always', arc: 'always' };\n        case RADIUS:\n            return { text: 'always', arc: 'always' };\n        case THETA2:\n        case RADIUS2:\n            return { arc: 'always' };\n    }\n}\nfunction rangeType(channel) {\n    switch (channel) {\n        case X:\n        case Y:\n        case THETA:\n        case RADIUS:\n        case SIZE:\n        case ANGLE:\n        case STROKEWIDTH:\n        case OPACITY:\n        case FILLOPACITY:\n        case STROKEOPACITY:\n        // X2 and Y2 use X and Y scales, so they similarly have continuous range. [falls through]\n        case X2:\n        case Y2:\n        case THETA2:\n        case RADIUS2:\n            return undefined;\n        case FACET:\n        case ROW:\n        case COLUMN:\n        case SHAPE:\n        case STROKEDASH:\n        // TEXT, TOOLTIP, URL, and HREF have no scale but have discrete output [falls through]\n        case TEXT:\n        case TOOLTIP:\n        case HREF:\n        case URL:\n        case DESCRIPTION:\n            return 'discrete';\n        // Color can be either continuous or discrete, depending on scale type.\n        case COLOR:\n        case FILL:\n        case STROKE:\n            return 'flexible';\n        // No scale, no range type.\n        case LATITUDE:\n        case LONGITUDE:\n        case LATITUDE2:\n        case LONGITUDE2:\n        case DETAIL:\n        case KEY:\n        case ORDER:\n            return undefined;\n    }\n}\n//# sourceMappingURL=channel.js.map//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,[encoded data, 23312 characters]\n//# sourceURL=webpack-internal:///./node_modules/vega-lite/build/src/channel.js\n");

/***/ }),

/***/ "./node_modules/vega-lite/build/src/channeldef.js":
/*!********************************************************!*\
  !*** ./node_modules/vega-lite/build/src/channeldef.js ***!
  \********************************************************/
/*! exports provided: isConditionalSelection, isRepeatRef, toFieldDefBase, isSortableFieldDef, getBand, hasBand, isConditionalDef, hasConditionalFieldDef, hasConditionalFieldOrDatumDef, hasConditionalValueDef, isFieldDef, channelDefType, isDatumDef, isContinuousFieldOrDatumDef, isQuantitativeFieldOrDatumDef, isNumericDataDef, isFieldOrDatumDef, isTypedFieldDef, isValueDef, isScaleFieldDef, isPositionFieldOrDatumDef, isMarkPropFieldOrDatumDef, isStringFieldOrDatumDef, toStringFieldDef, vgField, isDiscrete, isContinuous, isCount, verbalTitleFormatter, functionalTitleFormatter, defaultTitleFormatter, setTitleFormatter, resetTitleFormatter, title, getGuide, defaultTitle, getFormatMixins, defaultType, getFieldDef, getFieldOrDatumDef, initChannelDef, initFieldOrDatumDef, initFieldDef, normalizeBin, channelCompatibility, isFieldOrDatumDefForTimeFormat, isTimeFieldDef, valueExpr, valueArray, binRequiresRange */
/***/ (function(module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"isConditionalSelection\", function() { return isConditionalSelection; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"isRepeatRef\", function() { return isRepeatRef; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"toFieldDefBase\", function() { return toFieldDefBase; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"isSortableFieldDef\", function() { return isSortableFieldDef; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"getBand\", function() { return getBand; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"hasBand\", function() { return hasBand; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"isConditionalDef\", function() { return isConditionalDef; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"hasConditionalFieldDef\", function() { return hasConditionalFieldDef; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"hasConditionalFieldOrDatumDef\", function() { return hasConditionalFieldOrDatumDef; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"hasConditionalValueDef\", function() { return hasConditionalValueDef; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"isFieldDef\", function() { return isFieldDef; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"channelDefType\", function() { return channelDefType; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"isDatumDef\", function() { return isDatumDef; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"isContinuousFieldOrDatumDef\", function() { return isContinuousFieldOrDatumDef; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"isQuantitativeFieldOrDatumDef\", function() { return isQuantitativeFieldOrDatumDef; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"isNumericDataDef\", function() { return isNumericDataDef; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"isFieldOrDatumDef\", function() { return isFieldOrDatumDef; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"isTypedFieldDef\", function() { return isTypedFieldDef; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"isValueDef\", function() { return isValueDef; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"isScaleFieldDef\", function() { return isScaleFieldDef; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"isPositionFieldOrDatumDef\", function() { return isPositionFieldOrDatumDef; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"isMarkPropFieldOrDatumDef\", function() { return isMarkPropFieldOrDatumDef; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"isStringFieldOrDatumDef\", function() { return isStringFieldOrDatumDef; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"toStringFieldDef\", function() { return toStringFieldDef; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"vgField\", function() { return vgField; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"isDiscrete\", function() { return isDiscrete; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"isContinuous\", function() { return isContinuous; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"isCount\", function() { return isCount; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"verbalTitleFormatter\", function() { return verbalTitleFormatter; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"functionalTitleFormatter\", function() { return functionalTitleFormatter; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"defaultTitleFormatter\", function() { return defaultTitleFormatter; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"setTitleFormatter\", function() { return setTitleFormatter; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"resetTitleFormatter\", function() { return resetTitleFormatter; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"title\", function() { return title; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"getGuide\", function() { return getGuide; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"defaultTitle\", function() { return defaultTitle; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"getFormatMixins\", function() { return getFormatMixins; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"defaultType\", function() { return defaultType; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"getFieldDef\", function() { return getFieldDef; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"getFieldOrDatumDef\", function() { return getFieldOrDatumDef; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"initChannelDef\", function() { return initChannelDef; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"initFieldOrDatumDef\", function() { return initFieldOrDatumDef; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"initFieldDef\", function() { return initFieldDef; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"normalizeBin\", function() { return normalizeBin; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"channelCompatibility\", function() { return channelCompatibility; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"isFieldOrDatumDefForTimeFormat\", function() { return isFieldOrDatumDefForTimeFormat; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"isTimeFieldDef\", function() { return isTimeFieldDef; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"valueExpr\", function() { return valueExpr; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"valueArray\", function() { return valueArray; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"binRequiresRange\", function() { return binRequiresRange; });\n/* harmony import */ var vega_util__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! vega-util */ \"./node_modules/vega-lite/node_modules/vega-util/build/vega-util.module.js\");\n/* harmony import */ var _aggregate__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./aggregate */ \"./node_modules/vega-lite/build/src/aggregate.js\");\n/* harmony import */ var _bin__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./bin */ \"./node_modules/vega-lite/build/src/bin.js\");\n/* harmony import */ var _channel__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ./channel */ \"./node_modules/vega-lite/build/src/channel.js\");\n/* harmony import */ var _compile_common__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ./compile/common */ \"./node_modules/vega-lite/build/src/compile/common.js\");\n/* harmony import */ var _compile_format__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! ./compile/format */ \"./node_modules/vega-lite/build/src/compile/format.js\");\n/* harmony import */ var _datetime__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! ./datetime */ \"./node_modules/vega-lite/build/src/datetime.js\");\n/* harmony import */ var _expr__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! ./expr */ \"./node_modules/vega-lite/build/src/expr.js\");\n/* harmony import */ var _log__WEBPACK_IMPORTED_MODULE_8__ = __webpack_require__(/*! ./log */ \"./node_modules/vega-lite/build/src/log/index.js\");\n/* harmony import */ var _mark__WEBPACK_IMPORTED_MODULE_9__ = __webpack_require__(/*! ./mark */ \"./node_modules/vega-lite/build/src/mark.js\");\n/* harmony import */ var _scale__WEBPACK_IMPORTED_MODULE_10__ = __webpack_require__(/*! ./scale */ \"./node_modules/vega-lite/build/src/scale.js\");\n/* harmony import */ var _sort__WEBPACK_IMPORTED_MODULE_11__ = __webpack_require__(/*! ./sort */ \"./node_modules/vega-lite/build/src/sort.js\");\n/* harmony import */ var _spec_facet__WEBPACK_IMPORTED_MODULE_12__ = __webpack_require__(/*! ./spec/facet */ \"./node_modules/vega-lite/build/src/spec/facet.js\");\n/* harmony import */ var _timeunit__WEBPACK_IMPORTED_MODULE_13__ = __webpack_require__(/*! ./timeunit */ \"./node_modules/vega-lite/build/src/timeunit.js\");\n/* harmony import */ var _type__WEBPACK_IMPORTED_MODULE_14__ = __webpack_require__(/*! ./type */ \"./node_modules/vega-lite/build/src/type.js\");\n/* harmony import */ var _util__WEBPACK_IMPORTED_MODULE_15__ = __webpack_require__(/*! ./util */ \"./node_modules/vega-lite/build/src/util.js\");\n/* harmony import */ var _vega_schema__WEBPACK_IMPORTED_MODULE_16__ = __webpack_require__(/*! ./vega.schema */ \"./node_modules/vega-lite/build/src/vega.schema.js\");\nvar __rest = (undefined && undefined.__rest) || function (s, e) {\n    var t = {};\n    for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0)\n        t[p] = s[p];\n    if (s != null && typeof Object.getOwnPropertySymbols === \"function\")\n        for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) {\n            if (e.indexOf(p[i]) < 0 && Object.prototype.propertyIsEnumerable.call(s, p[i]))\n                t[p[i]] = s[p[i]];\n        }\n    return t;\n};\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\nfunction isConditionalSelection(c) {\n    return c['selection'];\n}\nfunction isRepeatRef(field) {\n    return field && !Object(vega_util__WEBPACK_IMPORTED_MODULE_0__[\"isString\"])(field) && 'repeat' in field;\n}\nfunction toFieldDefBase(fieldDef) {\n    const { field, timeUnit, bin, aggregate } = fieldDef;\n    return Object.assign(Object.assign(Object.assign(Object.assign({}, (timeUnit ? { timeUnit } : {})), (bin ? { bin } : {})), (aggregate ? { aggregate } : {})), { field });\n}\nfunction isSortableFieldDef(fieldDef) {\n    return 'sort' in fieldDef;\n}\nfunction getBand({ channel, fieldDef, fieldDef2, markDef: mark, stack, config, isMidPoint }) {\n    if (isFieldOrDatumDef(fieldDef) && fieldDef.band !== undefined) {\n        return fieldDef.band;\n    }\n    if (isFieldDef(fieldDef)) {\n        const { timeUnit, bin } = fieldDef;\n        if (timeUnit && !fieldDef2) {\n            if (isMidPoint) {\n                return Object(_compile_common__WEBPACK_IMPORTED_MODULE_4__[\"getMarkConfig\"])('timeUnitBandPosition', mark, config);\n            }\n            else {\n                return Object(_mark__WEBPACK_IMPORTED_MODULE_9__[\"isRectBasedMark\"])(mark.type) ? Object(_compile_common__WEBPACK_IMPORTED_MODULE_4__[\"getMarkConfig\"])('timeUnitBand', mark, config) : 0;\n            }\n        }\n        else if (Object(_bin__WEBPACK_IMPORTED_MODULE_2__[\"isBinning\"])(bin)) {\n            return Object(_mark__WEBPACK_IMPORTED_MODULE_9__[\"isRectBasedMark\"])(mark.type) && !isMidPoint ? 1 : 0.5;\n        }\n    }\n    if ((stack === null || stack === void 0 ? void 0 : stack.fieldChannel) === channel && isMidPoint) {\n        return 0.5;\n    }\n    return undefined;\n}\nfunction hasBand(channel, fieldDef, fieldDef2, stack, markDef, config) {\n    if (Object(_bin__WEBPACK_IMPORTED_MODULE_2__[\"isBinning\"])(fieldDef.bin) || (fieldDef.timeUnit && isTypedFieldDef(fieldDef) && fieldDef.type === 'temporal')) {\n        return !!getBand({ channel, fieldDef, fieldDef2, stack, markDef, config });\n    }\n    return false;\n}\nfunction isConditionalDef(channelDef) {\n    return !!channelDef && 'condition' in channelDef;\n}\n/**\n * Return if a channelDef is a ConditionalValueDef with ConditionFieldDef\n */\nfunction hasConditionalFieldDef(channelDef) {\n    const condition = channelDef && channelDef['condition'];\n    return !!condition && !Object(vega_util__WEBPACK_IMPORTED_MODULE_0__[\"isArray\"])(condition) && isFieldDef(condition);\n}\nfunction hasConditionalFieldOrDatumDef(channelDef) {\n    const condition = channelDef && channelDef['condition'];\n    return !!condition && !Object(vega_util__WEBPACK_IMPORTED_MODULE_0__[\"isArray\"])(condition) && isFieldOrDatumDef(condition);\n}\nfunction hasConditionalValueDef(channelDef) {\n    const condition = channelDef && channelDef['condition'];\n    return !!condition && (Object(vega_util__WEBPACK_IMPORTED_MODULE_0__[\"isArray\"])(condition) || isValueDef(condition));\n}\nfunction isFieldDef(channelDef) {\n    // TODO: we can't use field in channelDef here as it's somehow failing runtime test\n    return !!channelDef && (!!channelDef['field'] || channelDef['aggregate'] === 'count');\n}\nfunction channelDefType(channelDef) {\n    return channelDef && channelDef['type'];\n}\nfunction isDatumDef(channelDef) {\n    return !!channelDef && 'datum' in channelDef;\n}\nfunction isContinuousFieldOrDatumDef(cd) {\n    // TODO: make datum support DateTime object\n    return (isTypedFieldDef(cd) && isContinuous(cd)) || isNumericDataDef(cd);\n}\nfunction isQuantitativeFieldOrDatumDef(cd) {\n    // TODO: make datum support DateTime object\n    return channelDefType(cd) === 'quantitative' || isNumericDataDef(cd);\n}\nfunction isNumericDataDef(cd) {\n    return isDatumDef(cd) && Object(vega_util__WEBPACK_IMPORTED_MODULE_0__[\"isNumber\"])(cd.datum);\n}\nfunction isFieldOrDatumDef(channelDef) {\n    return isFieldDef(channelDef) || isDatumDef(channelDef);\n}\nfunction isTypedFieldDef(channelDef) {\n    return !!channelDef && ('field' in channelDef || channelDef['aggregate'] === 'count') && 'type' in channelDef;\n}\nfunction isValueDef(channelDef) {\n    return channelDef && 'value' in channelDef && 'value' in channelDef;\n}\nfunction isScaleFieldDef(channelDef) {\n    return !!channelDef && ('scale' in channelDef || 'sort' in channelDef);\n}\nfunction isPositionFieldOrDatumDef(channelDef) {\n    return channelDef && ('axis' in channelDef || 'stack' in channelDef || 'impute' in channelDef);\n}\nfunction isMarkPropFieldOrDatumDef(channelDef) {\n    return !!channelDef && 'legend' in channelDef;\n}\nfunction isStringFieldOrDatumDef(channelDef) {\n    return !!channelDef && ('format' in channelDef || 'formatType' in channelDef);\n}\nfunction toStringFieldDef(fieldDef) {\n    // omit properties that don't exist in string field defs\n    return Object(_util__WEBPACK_IMPORTED_MODULE_15__[\"omit\"])(fieldDef, ['legend', 'axis', 'header', 'scale']);\n}\nfunction isOpFieldDef(fieldDef) {\n    return 'op' in fieldDef;\n}\n/**\n * Get a Vega field reference from a Vega-Lite field def.\n */\nfunction vgField(fieldDef, opt = {}) {\n    var _a, _b, _c;\n    let field = fieldDef.field;\n    const prefix = opt.prefix;\n    let suffix = opt.suffix;\n    let argAccessor = ''; // for accessing argmin/argmax field at the end without getting escaped\n    if (isCount(fieldDef)) {\n        field = Object(_util__WEBPACK_IMPORTED_MODULE_15__[\"internalField\"])('count');\n    }\n    else {\n        let fn;\n        if (!opt.nofn) {\n            if (isOpFieldDef(fieldDef)) {\n                fn = fieldDef.op;\n            }\n            else {\n                const { bin, aggregate, timeUnit } = fieldDef;\n                if (Object(_bin__WEBPACK_IMPORTED_MODULE_2__[\"isBinning\"])(bin)) {\n                    fn = Object(_bin__WEBPACK_IMPORTED_MODULE_2__[\"binToString\"])(bin);\n                    suffix = ((_a = opt.binSuffix) !== null && _a !== void 0 ? _a : '') + ((_b = opt.suffix) !== null && _b !== void 0 ? _b : '');\n                }\n                else if (aggregate) {\n                    if (Object(_aggregate__WEBPACK_IMPORTED_MODULE_1__[\"isArgmaxDef\"])(aggregate)) {\n                        argAccessor = `[\"${field}\"]`;\n                        field = `argmax_${aggregate.argmax}`;\n                    }\n                    else if (Object(_aggregate__WEBPACK_IMPORTED_MODULE_1__[\"isArgminDef\"])(aggregate)) {\n                        argAccessor = `[\"${field}\"]`;\n                        field = `argmin_${aggregate.argmin}`;\n                    }\n                    else {\n                        fn = String(aggregate);\n                    }\n                }\n                else if (timeUnit) {\n                    fn = Object(_timeunit__WEBPACK_IMPORTED_MODULE_13__[\"timeUnitToString\"])(timeUnit);\n                    suffix = ((!Object(_util__WEBPACK_IMPORTED_MODULE_15__[\"contains\"])(['range', 'mid'], opt.binSuffix) && opt.binSuffix) || '') + ((_c = opt.suffix) !== null && _c !== void 0 ? _c : '');\n                }\n            }\n        }\n        if (fn) {\n            field = field ? `${fn}_${field}` : fn;\n        }\n    }\n    if (suffix) {\n        field = `${field}_${suffix}`;\n    }\n    if (prefix) {\n        field = `${prefix}_${field}`;\n    }\n    if (opt.forAs) {\n        return Object(_util__WEBPACK_IMPORTED_MODULE_15__[\"removePathFromField\"])(field);\n    }\n    else if (opt.expr) {\n        // Expression to access flattened field. No need to escape dots.\n        return Object(_util__WEBPACK_IMPORTED_MODULE_15__[\"flatAccessWithDatum\"])(field, opt.expr) + argAccessor;\n    }\n    else {\n        // We flattened all fields so paths should have become dot.\n        return Object(_util__WEBPACK_IMPORTED_MODULE_15__[\"replacePathInField\"])(field) + argAccessor;\n    }\n}\nfunction isDiscrete(def) {\n    switch (def.type) {\n        case 'nominal':\n        case 'ordinal':\n        case 'geojson':\n            return true;\n        case 'quantitative':\n            return isFieldDef(def) && !!def.bin;\n        case 'temporal':\n            return false;\n    }\n    throw new Error(_log__WEBPACK_IMPORTED_MODULE_8__[\"message\"].invalidFieldType(def.type));\n}\nfunction isContinuous(fieldDef) {\n    return !isDiscrete(fieldDef);\n}\nfunction isCount(fieldDef) {\n    return fieldDef.aggregate === 'count';\n}\nfunction verbalTitleFormatter(fieldDef, config) {\n    var _a;\n    const { field, bin, timeUnit, aggregate } = fieldDef;\n    if (aggregate === 'count') {\n        return config.countTitle;\n    }\n    else if (Object(_bin__WEBPACK_IMPORTED_MODULE_2__[\"isBinning\"])(bin)) {\n        return `${field} (binned)`;\n    }\n    else if (timeUnit) {\n        const unit = (_a = Object(_timeunit__WEBPACK_IMPORTED_MODULE_13__[\"normalizeTimeUnit\"])(timeUnit)) === null || _a === void 0 ? void 0 : _a.unit;\n        if (unit) {\n            return `${field} (${Object(_timeunit__WEBPACK_IMPORTED_MODULE_13__[\"getTimeUnitParts\"])(unit).join('-')})`;\n        }\n    }\n    else if (aggregate) {\n        if (Object(_aggregate__WEBPACK_IMPORTED_MODULE_1__[\"isArgmaxDef\"])(aggregate)) {\n            return `${field} for max ${aggregate.argmax}`;\n        }\n        else if (Object(_aggregate__WEBPACK_IMPORTED_MODULE_1__[\"isArgminDef\"])(aggregate)) {\n            return `${field} for min ${aggregate.argmin}`;\n        }\n        else {\n            return `${Object(_util__WEBPACK_IMPORTED_MODULE_15__[\"titleCase\"])(aggregate)} of ${field}`;\n        }\n    }\n    return field;\n}\nfunction functionalTitleFormatter(fieldDef) {\n    const { aggregate, bin, timeUnit, field } = fieldDef;\n    if (Object(_aggregate__WEBPACK_IMPORTED_MODULE_1__[\"isArgmaxDef\"])(aggregate)) {\n        return `${field} for argmax(${aggregate.argmax})`;\n    }\n    else if (Object(_aggregate__WEBPACK_IMPORTED_MODULE_1__[\"isArgminDef\"])(aggregate)) {\n        return `${field} for argmin(${aggregate.argmin})`;\n    }\n    const timeUnitParams = Object(_timeunit__WEBPACK_IMPORTED_MODULE_13__[\"normalizeTimeUnit\"])(timeUnit);\n    const fn = aggregate || (timeUnitParams === null || timeUnitParams === void 0 ? void 0 : timeUnitParams.unit) || ((timeUnitParams === null || timeUnitParams === void 0 ? void 0 : timeUnitParams.maxbins) && 'timeunit') || (Object(_bin__WEBPACK_IMPORTED_MODULE_2__[\"isBinning\"])(bin) && 'bin');\n    if (fn) {\n        return fn.toUpperCase() + '(' + field + ')';\n    }\n    else {\n        return field;\n    }\n}\nconst defaultTitleFormatter = (fieldDef, config) => {\n    switch (config.fieldTitle) {\n        case 'plain':\n            return fieldDef.field;\n        case 'functional':\n            return functionalTitleFormatter(fieldDef);\n        default:\n            return verbalTitleFormatter(fieldDef, config);\n    }\n};\nlet titleFormatter = defaultTitleFormatter;\nfunction setTitleFormatter(formatter) {\n    titleFormatter = formatter;\n}\nfunction resetTitleFormatter() {\n    setTitleFormatter(defaultTitleFormatter);\n}\nfunction title(fieldOrDatumDef, config, { allowDisabling, includeDefault = true }) {\n    var _a, _b;\n    const guideTitle = (_a = getGuide(fieldOrDatumDef)) === null || _a === void 0 ? void 0 : _a.title;\n    if (!isFieldDef(fieldOrDatumDef)) {\n        return guideTitle;\n    }\n    const fieldDef = fieldOrDatumDef;\n    const def = includeDefault ? defaultTitle(fieldDef, config) : undefined;\n    if (allowDisabling) {\n        return Object(_util__WEBPACK_IMPORTED_MODULE_15__[\"getFirstDefined\"])(guideTitle, fieldDef.title, def);\n    }\n    else {\n        return (_b = guideTitle !== null && guideTitle !== void 0 ? guideTitle : fieldDef.title) !== null && _b !== void 0 ? _b : def;\n    }\n}\nfunction getGuide(fieldDef) {\n    if (isPositionFieldOrDatumDef(fieldDef) && fieldDef.axis) {\n        return fieldDef.axis;\n    }\n    else if (isMarkPropFieldOrDatumDef(fieldDef) && fieldDef.legend) {\n        return fieldDef.legend;\n    }\n    else if (Object(_spec_facet__WEBPACK_IMPORTED_MODULE_12__[\"isFacetFieldDef\"])(fieldDef) && fieldDef.header) {\n        return fieldDef.header;\n    }\n    return undefined;\n}\nfunction defaultTitle(fieldDef, config) {\n    return titleFormatter(fieldDef, config);\n}\nfunction getFormatMixins(fieldDef) {\n    var _a;\n    if (isStringFieldOrDatumDef(fieldDef)) {\n        const { format, formatType } = fieldDef;\n        return { format, formatType };\n    }\n    else {\n        const guide = (_a = getGuide(fieldDef)) !== null && _a !== void 0 ? _a : {};\n        const { format, formatType } = guide;\n        return { format, formatType };\n    }\n}\nfunction defaultType(fieldDef, channel) {\n    var _a;\n    switch (channel) {\n        case 'latitude':\n        case 'longitude':\n            return 'quantitative';\n        case 'row':\n        case 'column':\n        case 'facet':\n        case 'shape':\n        case 'strokeDash':\n            return 'nominal';\n        case 'order':\n            return 'ordinal';\n    }\n    if (isSortableFieldDef(fieldDef) && Object(vega_util__WEBPACK_IMPORTED_MODULE_0__[\"isArray\"])(fieldDef.sort)) {\n        return 'ordinal';\n    }\n    const { aggregate, bin, timeUnit } = fieldDef;\n    if (timeUnit) {\n        return 'temporal';\n    }\n    if (bin || (aggregate && !Object(_aggregate__WEBPACK_IMPORTED_MODULE_1__[\"isArgmaxDef\"])(aggregate) && !Object(_aggregate__WEBPACK_IMPORTED_MODULE_1__[\"isArgminDef\"])(aggregate))) {\n        return 'quantitative';\n    }\n    if (isScaleFieldDef(fieldDef) && ((_a = fieldDef.scale) === null || _a === void 0 ? void 0 : _a.type)) {\n        switch (_scale__WEBPACK_IMPORTED_MODULE_10__[\"SCALE_CATEGORY_INDEX\"][fieldDef.scale.type]) {\n            case 'numeric':\n            case 'discretizing':\n                return 'quantitative';\n            case 'time':\n                return 'temporal';\n        }\n    }\n    return 'nominal';\n}\n/**\n * Returns the fieldDef -- either from the outer channelDef or from the condition of channelDef.\n * @param channelDef\n */\nfunction getFieldDef(channelDef) {\n    if (isFieldDef(channelDef)) {\n        return channelDef;\n    }\n    else if (hasConditionalFieldDef(channelDef)) {\n        return channelDef.condition;\n    }\n    return undefined;\n}\nfunction getFieldOrDatumDef(channelDef) {\n    if (isFieldOrDatumDef(channelDef)) {\n        return channelDef;\n    }\n    else if (hasConditionalFieldOrDatumDef(channelDef)) {\n        return channelDef.condition;\n    }\n    return undefined;\n}\n/**\n * Convert type to full, lowercase type, or augment the fieldDef with a default type if missing.\n */\nfunction initChannelDef(channelDef, channel, config, opt = {}) {\n    if (Object(vega_util__WEBPACK_IMPORTED_MODULE_0__[\"isString\"])(channelDef) || Object(vega_util__WEBPACK_IMPORTED_MODULE_0__[\"isNumber\"])(channelDef) || Object(vega_util__WEBPACK_IMPORTED_MODULE_0__[\"isBoolean\"])(channelDef)) {\n        const primitiveType = Object(vega_util__WEBPACK_IMPORTED_MODULE_0__[\"isString\"])(channelDef) ? 'string' : Object(vega_util__WEBPACK_IMPORTED_MODULE_0__[\"isNumber\"])(channelDef) ? 'number' : 'boolean';\n        _log__WEBPACK_IMPORTED_MODULE_8__[\"warn\"](_log__WEBPACK_IMPORTED_MODULE_8__[\"message\"].primitiveChannelDef(channel, primitiveType, channelDef));\n        return { value: channelDef };\n    }\n    // If a fieldDef contains a field, we need type.\n    if (isFieldOrDatumDef(channelDef)) {\n        return initFieldOrDatumDef(channelDef, channel, config, opt);\n    }\n    else if (hasConditionalFieldOrDatumDef(channelDef)) {\n        return Object.assign(Object.assign({}, channelDef), { \n            // Need to cast as normalizeFieldDef normally return FieldDef, but here we know that it is definitely Condition<FieldDef>\n            condition: initFieldOrDatumDef(channelDef.condition, channel, config, opt) });\n    }\n    return channelDef;\n}\nfunction initFieldOrDatumDef(fd, channel, config, opt) {\n    if (isStringFieldOrDatumDef(fd)) {\n        const { format, formatType } = fd, rest = __rest(fd, [\"format\", \"formatType\"]);\n        if (Object(_compile_format__WEBPACK_IMPORTED_MODULE_5__[\"isCustomFormatType\"])(formatType) && !config.customFormatTypes) {\n            _log__WEBPACK_IMPORTED_MODULE_8__[\"warn\"](_log__WEBPACK_IMPORTED_MODULE_8__[\"message\"].customFormatTypeNotAllowed(channel));\n            return initFieldOrDatumDef(rest, channel, config, opt);\n        }\n    }\n    else {\n        const guideType = isPositionFieldOrDatumDef(fd)\n            ? 'axis'\n            : isMarkPropFieldOrDatumDef(fd)\n                ? 'legend'\n                : Object(_spec_facet__WEBPACK_IMPORTED_MODULE_12__[\"isFacetFieldDef\"])(fd)\n                    ? 'header'\n                    : null;\n        if (guideType && fd[guideType]) {\n            const _a = fd[guideType], { format, formatType } = _a, newGuide = __rest(_a, [\"format\", \"formatType\"]);\n            if (Object(_compile_format__WEBPACK_IMPORTED_MODULE_5__[\"isCustomFormatType\"])(formatType) && !config.customFormatTypes) {\n                _log__WEBPACK_IMPORTED_MODULE_8__[\"warn\"](_log__WEBPACK_IMPORTED_MODULE_8__[\"message\"].customFormatTypeNotAllowed(channel));\n                return initFieldOrDatumDef(Object.assign(Object.assign({}, fd), { [guideType]: newGuide }), channel, config, opt);\n            }\n        }\n    }\n    if (isFieldDef(fd)) {\n        return initFieldDef(fd, channel, opt);\n    }\n    return initDatumDef(fd);\n}\nfunction initDatumDef(datumDef) {\n    let type = datumDef['type'];\n    if (type) {\n        return datumDef;\n    }\n    const { datum } = datumDef;\n    type = Object(vega_util__WEBPACK_IMPORTED_MODULE_0__[\"isNumber\"])(datum) ? 'quantitative' : Object(vega_util__WEBPACK_IMPORTED_MODULE_0__[\"isString\"])(datum) ? 'nominal' : Object(_datetime__WEBPACK_IMPORTED_MODULE_6__[\"isDateTime\"])(datum) ? 'temporal' : undefined;\n    return Object.assign(Object.assign({}, datumDef), { type });\n}\nfunction initFieldDef(fd, channel, { compositeMark = false } = {}) {\n    const { aggregate, timeUnit, bin, field } = fd;\n    const fieldDef = Object.assign({}, fd);\n    // Drop invalid aggregate\n    if (!compositeMark && aggregate && !Object(_aggregate__WEBPACK_IMPORTED_MODULE_1__[\"isAggregateOp\"])(aggregate) && !Object(_aggregate__WEBPACK_IMPORTED_MODULE_1__[\"isArgmaxDef\"])(aggregate) && !Object(_aggregate__WEBPACK_IMPORTED_MODULE_1__[\"isArgminDef\"])(aggregate)) {\n        _log__WEBPACK_IMPORTED_MODULE_8__[\"warn\"](_log__WEBPACK_IMPORTED_MODULE_8__[\"message\"].invalidAggregate(aggregate));\n        delete fieldDef.aggregate;\n    }\n    // Normalize Time Unit\n    if (timeUnit) {\n        fieldDef.timeUnit = Object(_timeunit__WEBPACK_IMPORTED_MODULE_13__[\"normalizeTimeUnit\"])(timeUnit);\n    }\n    if (field) {\n        fieldDef.field = `${field}`;\n    }\n    // Normalize bin\n    if (Object(_bin__WEBPACK_IMPORTED_MODULE_2__[\"isBinning\"])(bin)) {\n        fieldDef.bin = normalizeBin(bin, channel);\n    }\n    if (Object(_bin__WEBPACK_IMPORTED_MODULE_2__[\"isBinned\"])(bin) && !Object(_channel__WEBPACK_IMPORTED_MODULE_3__[\"isXorY\"])(channel)) {\n        _log__WEBPACK_IMPORTED_MODULE_8__[\"warn\"](_log__WEBPACK_IMPORTED_MODULE_8__[\"message\"].channelShouldNotBeUsedForBinned(channel));\n    }\n    // Normalize Type\n    if (isTypedFieldDef(fieldDef)) {\n        const { type } = fieldDef;\n        const fullType = Object(_type__WEBPACK_IMPORTED_MODULE_14__[\"getFullName\"])(type);\n        if (type !== fullType) {\n            // convert short type to full type\n            fieldDef.type = fullType;\n        }\n        if (type !== 'quantitative') {\n            if (Object(_aggregate__WEBPACK_IMPORTED_MODULE_1__[\"isCountingAggregateOp\"])(aggregate)) {\n                _log__WEBPACK_IMPORTED_MODULE_8__[\"warn\"](_log__WEBPACK_IMPORTED_MODULE_8__[\"message\"].invalidFieldTypeForCountAggregate(type, aggregate));\n                fieldDef.type = 'quantitative';\n            }\n        }\n    }\n    else if (!Object(_channel__WEBPACK_IMPORTED_MODULE_3__[\"isSecondaryRangeChannel\"])(channel)) {\n        // If type is empty / invalid, then augment with default type\n        const newType = defaultType(fieldDef, channel);\n        fieldDef['type'] = newType;\n    }\n    if (isTypedFieldDef(fieldDef)) {\n        const { compatible, warning } = channelCompatibility(fieldDef, channel) || {};\n        if (compatible === false) {\n            _log__WEBPACK_IMPORTED_MODULE_8__[\"warn\"](warning);\n        }\n    }\n    if (isSortableFieldDef(fieldDef) && Object(vega_util__WEBPACK_IMPORTED_MODULE_0__[\"isString\"])(fieldDef.sort)) {\n        const { sort } = fieldDef;\n        if (Object(_sort__WEBPACK_IMPORTED_MODULE_11__[\"isSortByChannel\"])(sort)) {\n            return Object.assign(Object.assign({}, fieldDef), { sort: { encoding: sort } });\n        }\n        const sub = sort.substr(1);\n        if (sort.charAt(0) === '-' && Object(_sort__WEBPACK_IMPORTED_MODULE_11__[\"isSortByChannel\"])(sub)) {\n            return Object.assign(Object.assign({}, fieldDef), { sort: { encoding: sub, order: 'descending' } });\n        }\n    }\n    if (Object(_spec_facet__WEBPACK_IMPORTED_MODULE_12__[\"isFacetFieldDef\"])(fieldDef)) {\n        const { header } = fieldDef;\n        const { orient } = header, rest = __rest(header, [\"orient\"]);\n        if (orient) {\n            return Object.assign(Object.assign({}, fieldDef), { header: Object.assign(Object.assign({}, rest), { labelOrient: header.labelOrient || orient, titleOrient: header.titleOrient || orient }) });\n        }\n    }\n    return fieldDef;\n}\nfunction normalizeBin(bin, channel) {\n    if (Object(vega_util__WEBPACK_IMPORTED_MODULE_0__[\"isBoolean\"])(bin)) {\n        return { maxbins: Object(_bin__WEBPACK_IMPORTED_MODULE_2__[\"autoMaxBins\"])(channel) };\n    }\n    else if (bin === 'binned') {\n        return {\n            binned: true\n        };\n    }\n    else if (!bin.maxbins && !bin.step) {\n        return Object.assign(Object.assign({}, bin), { maxbins: Object(_bin__WEBPACK_IMPORTED_MODULE_2__[\"autoMaxBins\"])(channel) });\n    }\n    else {\n        return bin;\n    }\n}\nconst COMPATIBLE = { compatible: true };\nfunction channelCompatibility(fieldDef, channel) {\n    const type = fieldDef.type;\n    if (type === 'geojson' && channel !== 'shape') {\n        return {\n            compatible: false,\n            warning: `Channel ${channel} should not be used with a geojson data.`\n        };\n    }\n    switch (channel) {\n        case _channel__WEBPACK_IMPORTED_MODULE_3__[\"ROW\"]:\n        case _channel__WEBPACK_IMPORTED_MODULE_3__[\"COLUMN\"]:\n        case _channel__WEBPACK_IMPORTED_MODULE_3__[\"FACET\"]:\n            if (isContinuous(fieldDef)) {\n                return {\n                    compatible: false,\n                    warning: _log__WEBPACK_IMPORTED_MODULE_8__[\"message\"].facetChannelShouldBeDiscrete(channel)\n                };\n            }\n            return COMPATIBLE;\n        case _channel__WEBPACK_IMPORTED_MODULE_3__[\"X\"]:\n        case _channel__WEBPACK_IMPORTED_MODULE_3__[\"Y\"]:\n        case _channel__WEBPACK_IMPORTED_MODULE_3__[\"COLOR\"]:\n        case _channel__WEBPACK_IMPORTED_MODULE_3__[\"FILL\"]:\n        case _channel__WEBPACK_IMPORTED_MODULE_3__[\"STROKE\"]:\n        case _channel__WEBPACK_IMPORTED_MODULE_3__[\"TEXT\"]:\n        case _channel__WEBPACK_IMPORTED_MODULE_3__[\"DETAIL\"]:\n        case _channel__WEBPACK_IMPORTED_MODULE_3__[\"KEY\"]:\n        case _channel__WEBPACK_IMPORTED_MODULE_3__[\"TOOLTIP\"]:\n        case _channel__WEBPACK_IMPORTED_MODULE_3__[\"HREF\"]:\n        case _channel__WEBPACK_IMPORTED_MODULE_3__[\"URL\"]:\n        case _channel__WEBPACK_IMPORTED_MODULE_3__[\"ANGLE\"]:\n        case _channel__WEBPACK_IMPORTED_MODULE_3__[\"THETA\"]:\n        case _channel__WEBPACK_IMPORTED_MODULE_3__[\"RADIUS\"]:\n        case _channel__WEBPACK_IMPORTED_MODULE_3__[\"DESCRIPTION\"]:\n            return COMPATIBLE;\n        case _channel__WEBPACK_IMPORTED_MODULE_3__[\"LONGITUDE\"]:\n        case _channel__WEBPACK_IMPORTED_MODULE_3__[\"LONGITUDE2\"]:\n        case _channel__WEBPACK_IMPORTED_MODULE_3__[\"LATITUDE\"]:\n        case _channel__WEBPACK_IMPORTED_MODULE_3__[\"LATITUDE2\"]:\n            if (type !== _type__WEBPACK_IMPORTED_MODULE_14__[\"QUANTITATIVE\"]) {\n                return {\n                    compatible: false,\n                    warning: `Channel ${channel} should be used with a quantitative field only, not ${fieldDef.type} field.`\n                };\n            }\n            return COMPATIBLE;\n        case _channel__WEBPACK_IMPORTED_MODULE_3__[\"OPACITY\"]:\n        case _channel__WEBPACK_IMPORTED_MODULE_3__[\"FILLOPACITY\"]:\n        case _channel__WEBPACK_IMPORTED_MODULE_3__[\"STROKEOPACITY\"]:\n        case _channel__WEBPACK_IMPORTED_MODULE_3__[\"STROKEWIDTH\"]:\n        case _channel__WEBPACK_IMPORTED_MODULE_3__[\"SIZE\"]:\n        case _channel__WEBPACK_IMPORTED_MODULE_3__[\"THETA2\"]:\n        case _channel__WEBPACK_IMPORTED_MODULE_3__[\"RADIUS2\"]:\n        case _channel__WEBPACK_IMPORTED_MODULE_3__[\"X2\"]:\n        case _channel__WEBPACK_IMPORTED_MODULE_3__[\"Y2\"]:\n            if (type === 'nominal' && !fieldDef['sort']) {\n                return {\n                    compatible: false,\n                    warning: `Channel ${channel} should not be used with an unsorted discrete field.`\n                };\n            }\n            return COMPATIBLE;\n        case _channel__WEBPACK_IMPORTED_MODULE_3__[\"STROKEDASH\"]:\n            if (!Object(_util__WEBPACK_IMPORTED_MODULE_15__[\"contains\"])(['ordinal', 'nominal'], fieldDef.type)) {\n                return {\n                    compatible: false,\n                    warning: 'StrokeDash channel should be used with only discrete data.'\n                };\n            }\n            return COMPATIBLE;\n        case _channel__WEBPACK_IMPORTED_MODULE_3__[\"SHAPE\"]:\n            if (!Object(_util__WEBPACK_IMPORTED_MODULE_15__[\"contains\"])(['ordinal', 'nominal', 'geojson'], fieldDef.type)) {\n                return {\n                    compatible: false,\n                    warning: 'Shape channel should be used with only either discrete or geojson data.'\n                };\n            }\n            return COMPATIBLE;\n        case _channel__WEBPACK_IMPORTED_MODULE_3__[\"ORDER\"]:\n            if (fieldDef.type === 'nominal' && !('sort' in fieldDef)) {\n                return {\n                    compatible: false,\n                    warning: `Channel order is inappropriate for nominal field, which has no inherent order.`\n                };\n            }\n            return COMPATIBLE;\n    }\n}\n/**\n * Check if the field def uses a time format or does not use any format but is temporal\n * (this does not cover field defs that are temporal but use a number format).\n */\nfunction isFieldOrDatumDefForTimeFormat(fieldOrDatumDef) {\n    const { formatType } = getFormatMixins(fieldOrDatumDef);\n    return formatType === 'time' || (!formatType && isTimeFieldDef(fieldOrDatumDef));\n}\n/**\n * Check if field def has type `temporal`. If you want to also cover field defs that use a time format, use `isTimeFormatFieldDef`.\n */\nfunction isTimeFieldDef(def) {\n    return def && (def['type'] === 'temporal' || (isFieldDef(def) && !!def.timeUnit));\n}\n/**\n * Getting a value associated with a fielddef.\n * Convert the value to Vega expression if applicable (for datetime object, or string if the field def is temporal or has timeUnit)\n */\nfunction valueExpr(v, { timeUnit, type, wrapTime, undefinedIfExprNotRequired }) {\n    var _a;\n    const unit = timeUnit && ((_a = Object(_timeunit__WEBPACK_IMPORTED_MODULE_13__[\"normalizeTimeUnit\"])(timeUnit)) === null || _a === void 0 ? void 0 : _a.unit);\n    let isTime = unit || type === 'temporal';\n    let expr;\n    if (Object(_expr__WEBPACK_IMPORTED_MODULE_7__[\"isExprRef\"])(v)) {\n        expr = v.expr;\n    }\n    else if (Object(_vega_schema__WEBPACK_IMPORTED_MODULE_16__[\"isSignalRef\"])(v)) {\n        expr = v.signal;\n    }\n    else if (Object(_datetime__WEBPACK_IMPORTED_MODULE_6__[\"isDateTime\"])(v)) {\n        isTime = true;\n        expr = Object(_datetime__WEBPACK_IMPORTED_MODULE_6__[\"dateTimeToExpr\"])(v);\n    }\n    else if (Object(vega_util__WEBPACK_IMPORTED_MODULE_0__[\"isString\"])(v) || Object(vega_util__WEBPACK_IMPORTED_MODULE_0__[\"isNumber\"])(v)) {\n        if (isTime) {\n            expr = `datetime(${JSON.stringify(v)})`;\n            if (Object(_timeunit__WEBPACK_IMPORTED_MODULE_13__[\"isLocalSingleTimeUnit\"])(unit)) {\n                // for single timeUnit, we will use dateTimeToExpr to convert number/string to match the timeUnit\n                if ((Object(vega_util__WEBPACK_IMPORTED_MODULE_0__[\"isNumber\"])(v) && v < 10000) || (Object(vega_util__WEBPACK_IMPORTED_MODULE_0__[\"isString\"])(v) && isNaN(Date.parse(v)))) {\n                    expr = Object(_datetime__WEBPACK_IMPORTED_MODULE_6__[\"dateTimeToExpr\"])({ [unit]: v });\n                }\n            }\n        }\n    }\n    if (expr) {\n        return wrapTime && isTime ? `time(${expr})` : expr;\n    }\n    // number or boolean or normal string\n    return undefinedIfExprNotRequired ? undefined : JSON.stringify(v);\n}\n/**\n * Standardize value array -- convert each value to Vega expression if applicable\n */\nfunction valueArray(fieldOrDatumDef, values) {\n    const { type } = fieldOrDatumDef;\n    return values.map(v => {\n        const expr = valueExpr(v, {\n            timeUnit: isFieldDef(fieldOrDatumDef) ? fieldOrDatumDef.timeUnit : undefined,\n            type,\n            undefinedIfExprNotRequired: true\n        });\n        // return signal for the expression if we need an expression\n        if (expr !== undefined) {\n            return { signal: expr };\n        }\n        // otherwise just return the original value\n        return v;\n    });\n}\n/**\n * Checks whether a fieldDef for a particular channel requires a computed bin range.\n */\nfunction binRequiresRange(fieldDef, channel) {\n    if (!Object(_bin__WEBPACK_IMPORTED_MODULE_2__[\"isBinning\"])(fieldDef.bin)) {\n        console.warn('Only call this method for binned field defs.');\n        return false;\n    }\n    // We need the range only when the user explicitly forces a binned field to be use discrete scale. In this case, bin range is used in axis and legend labels.\n    // We could check whether the axis or legend exists (not disabled) but that seems overkill.\n    return Object(_channel__WEBPACK_IMPORTED_MODULE_3__[\"isScaleChannel\"])(channel) && Object(_util__WEBPACK_IMPORTED_MODULE_15__[\"contains\"])(['ordinal', 'nominal'], fieldDef.type);\n}\n//# sourceMappingURL=channeldef.js.map//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,[encoded data, 41272 characters]\n//# sourceURL=webpack-internal:///./node_modules/vega-lite/build/src/channeldef.js\n");

/***/ }),

/***/ "./node_modules/vega-lite/build/src/compile/axis/assemble.js":
/*!*******************************************************************!*\
  !*** ./node_modules/vega-lite/build/src/compile/axis/assemble.js ***!
  \*******************************************************************/
/*! exports provided: assembleAxis, assembleAxisSignals, assembleAxes */
/***/ (function(module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"assembleAxis\", function() { return assembleAxis; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"assembleAxisSignals\", function() { return assembleAxisSignals; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"assembleAxes\", function() { return assembleAxes; });\n/* harmony import */ var vega_util__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! vega-util */ \"./node_modules/vega-lite/node_modules/vega-util/build/vega-util.module.js\");\n/* harmony import */ var _axis__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../../axis */ \"./node_modules/vega-lite/build/src/axis.js\");\n/* harmony import */ var _channel__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ../../channel */ \"./node_modules/vega-lite/build/src/channel.js\");\n/* harmony import */ var _channeldef__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ../../channeldef */ \"./node_modules/vega-lite/build/src/channeldef.js\");\n/* harmony import */ var _title__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ../../title */ \"./node_modules/vega-lite/build/src/title.js\");\n/* harmony import */ var _util__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! ../../util */ \"./node_modules/vega-lite/build/src/util.js\");\n/* harmony import */ var _vega_schema__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! ../../vega.schema */ \"./node_modules/vega-lite/build/src/vega.schema.js\");\n/* harmony import */ var _common__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! ../common */ \"./node_modules/vega-lite/build/src/compile/common.js\");\n/* harmony import */ var _predicate__WEBPACK_IMPORTED_MODULE_8__ = __webpack_require__(/*! ../predicate */ \"./node_modules/vega-lite/build/src/compile/predicate.js\");\nvar __rest = (undefined && undefined.__rest) || function (s, e) {\n    var t = {};\n    for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0)\n        t[p] = s[p];\n    if (s != null && typeof Object.getOwnPropertySymbols === \"function\")\n        for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) {\n            if (e.indexOf(p[i]) < 0 && Object.prototype.propertyIsEnumerable.call(s, p[i]))\n                t[p[i]] = s[p[i]];\n        }\n    return t;\n};\n\n\n\n\n\n\n\n\n\nfunction assembleTitle(title, config) {\n    if (!title) {\n        return undefined;\n    }\n    if (Object(vega_util__WEBPACK_IMPORTED_MODULE_0__[\"isArray\"])(title) && !Object(_title__WEBPACK_IMPORTED_MODULE_4__[\"isText\"])(title)) {\n        return title.map(fieldDef => Object(_channeldef__WEBPACK_IMPORTED_MODULE_3__[\"defaultTitle\"])(fieldDef, config)).join(', ');\n    }\n    return title;\n}\nfunction setAxisEncode(axis, part, vgProp, vgRef) {\n    var _a, _b, _c;\n    axis.encode = (_a = axis.encode) !== null && _a !== void 0 ? _a : {};\n    axis.encode[part] = (_b = axis.encode[part]) !== null && _b !== void 0 ? _b : {};\n    axis.encode[part].update = (_c = axis.encode[part].update) !== null && _c !== void 0 ? _c : {};\n    // TODO: remove as any after https://github.com/prisma/nexus-prisma/issues/291\n    axis.encode[part].update[vgProp] = vgRef;\n}\nfunction assembleAxis(axisCmpt, kind, config, opt = { header: false }) {\n    var _a, _b;\n    const _c = axisCmpt.combine(), { disable, orient, scale, labelExpr, title, zindex } = _c, axis = __rest(_c, [\"disable\", \"orient\", \"scale\", \"labelExpr\", \"title\", \"zindex\"]);\n    if (disable) {\n        return undefined;\n    }\n    for (const prop in axis) {\n        const propType = _axis__WEBPACK_IMPORTED_MODULE_1__[\"AXIS_PROPERTY_TYPE\"][prop];\n        const propValue = axis[prop];\n        if (propType && propType !== kind && propType !== 'both') {\n            // Remove properties that are not valid for this kind of axis\n            delete axis[prop];\n        }\n        else if (Object(_axis__WEBPACK_IMPORTED_MODULE_1__[\"isConditionalAxisValue\"])(propValue)) {\n            // deal with conditional axis value\n            const { condition } = propValue, valueOrSignalRef = __rest(propValue, [\"condition\"]);\n            const conditions = Object(vega_util__WEBPACK_IMPORTED_MODULE_0__[\"array\"])(condition);\n            const propIndex = _axis__WEBPACK_IMPORTED_MODULE_1__[\"CONDITIONAL_AXIS_PROP_INDEX\"][prop];\n            if (propIndex) {\n                const { vgProp, part } = propIndex;\n                // If there is a corresponding Vega property for the channel,\n                // use Vega's custom axis encoding and delete the original axis property to avoid conflicts\n                const vgRef = [\n                    ...conditions.map(c => {\n                        const { test } = c, valueOrSignalCRef = __rest(c, [\"test\"]);\n                        return Object.assign({ test: Object(_predicate__WEBPACK_IMPORTED_MODULE_8__[\"expression\"])(null, test) }, valueOrSignalCRef);\n                    }),\n                    valueOrSignalRef\n                ];\n                setAxisEncode(axis, part, vgProp, vgRef);\n                delete axis[prop];\n            }\n            else if (propIndex === null) {\n                // If propIndex is null, this means we support conditional axis property by converting the condition to signal instead.\n                const signalRef = {\n                    signal: conditions\n                        .map(c => {\n                        const { test } = c, valueOrSignalCRef = __rest(c, [\"test\"]);\n                        return `${Object(_predicate__WEBPACK_IMPORTED_MODULE_8__[\"expression\"])(null, test)} ? ${Object(_common__WEBPACK_IMPORTED_MODULE_7__[\"exprFromValueOrSignalRef\"])(valueOrSignalCRef)} : `;\n                    })\n                        .join('') + Object(_common__WEBPACK_IMPORTED_MODULE_7__[\"exprFromValueOrSignalRef\"])(valueOrSignalRef)\n                };\n                axis[prop] = signalRef;\n            }\n        }\n        else if (Object(_vega_schema__WEBPACK_IMPORTED_MODULE_6__[\"isSignalRef\"])(propValue)) {\n            const propIndex = _axis__WEBPACK_IMPORTED_MODULE_1__[\"CONDITIONAL_AXIS_PROP_INDEX\"][prop];\n            if (propIndex) {\n                const { vgProp, part } = propIndex;\n                setAxisEncode(axis, part, vgProp, propValue);\n                delete axis[prop];\n            } // else do nothing since the property already supports signal\n        }\n    }\n    if (kind === 'grid') {\n        if (!axis.grid) {\n            return undefined;\n        }\n        // Remove unnecessary encode block\n        if (axis.encode) {\n            // Only need to keep encode block for grid\n            const { grid } = axis.encode;\n            axis.encode = Object.assign({}, (grid ? { grid } : {}));\n            if (Object(_util__WEBPACK_IMPORTED_MODULE_5__[\"isEmpty\"])(axis.encode)) {\n                delete axis.encode;\n            }\n        }\n        return Object.assign(Object.assign({ scale,\n            orient }, axis), { domain: false, labels: false, aria: false, \n            // Always set min/maxExtent to 0 to ensure that `config.axis*.minExtent` and `config.axis*.maxExtent`\n            // would not affect gridAxis\n            maxExtent: 0, minExtent: 0, ticks: false, zindex: Object(_util__WEBPACK_IMPORTED_MODULE_5__[\"getFirstDefined\"])(zindex, 0) // put grid behind marks by default\n         });\n    }\n    else {\n        // kind === 'main'\n        if (!opt.header && axisCmpt.mainExtracted) {\n            // if mainExtracted has been extracted to a separate facet\n            return undefined;\n        }\n        if (labelExpr !== undefined) {\n            let expr = labelExpr;\n            if (((_b = (_a = axis.encode) === null || _a === void 0 ? void 0 : _a.labels) === null || _b === void 0 ? void 0 : _b.update) && Object(_vega_schema__WEBPACK_IMPORTED_MODULE_6__[\"isSignalRef\"])(axis.encode.labels.update.text)) {\n                expr = Object(_util__WEBPACK_IMPORTED_MODULE_5__[\"replaceAll\"])(labelExpr, 'datum.label', axis.encode.labels.update.text.signal);\n            }\n            setAxisEncode(axis, 'labels', 'text', { signal: expr });\n        }\n        if (axis.labelAlign === null) {\n            delete axis.labelAlign;\n        }\n        // Remove unnecessary encode block\n        if (axis.encode) {\n            for (const part of _axis__WEBPACK_IMPORTED_MODULE_1__[\"AXIS_PARTS\"]) {\n                if (!axisCmpt.hasAxisPart(part)) {\n                    delete axis.encode[part];\n                }\n            }\n            if (Object(_util__WEBPACK_IMPORTED_MODULE_5__[\"isEmpty\"])(axis.encode)) {\n                delete axis.encode;\n            }\n        }\n        const titleString = assembleTitle(title, config);\n        return Object.assign(Object.assign(Object.assign(Object.assign({ scale,\n            orient, grid: false }, (titleString ? { title: titleString } : {})), axis), (config.aria === false ? { aria: false } : {})), { zindex: Object(_util__WEBPACK_IMPORTED_MODULE_5__[\"getFirstDefined\"])(zindex, 0) // put axis line above marks by default\n         });\n    }\n}\n/**\n * Add axis signals so grid line works correctly\n * (Fix https://github.com/vega/vega-lite/issues/4226)\n */\nfunction assembleAxisSignals(model) {\n    const { axes } = model.component;\n    const signals = [];\n    for (const channel of _channel__WEBPACK_IMPORTED_MODULE_2__[\"POSITION_SCALE_CHANNELS\"]) {\n        if (axes[channel]) {\n            for (const axis of axes[channel]) {\n                if (!axis.get('disable') && !axis.get('gridScale')) {\n                    // If there is x-axis but no y-scale for gridScale, need to set height/width so x-axis can draw the grid with the right height. Same for y-axis and width.\n                    const sizeType = channel === 'x' ? 'height' : 'width';\n                    const update = model.getSizeSignalRef(sizeType).signal;\n                    if (sizeType !== update) {\n                        signals.push({\n                            name: sizeType,\n                            update: update\n                        });\n                    }\n                }\n            }\n        }\n    }\n    return signals;\n}\nfunction assembleAxes(axisComponents, config) {\n    const { x = [], y = [] } = axisComponents;\n    return [\n        ...x.map(a => assembleAxis(a, 'grid', config)),\n        ...y.map(a => assembleAxis(a, 'grid', config)),\n        ...x.map(a => assembleAxis(a, 'main', config)),\n        ...y.map(a => assembleAxis(a, 'main', config))\n    ].filter(a => a); // filter undefined\n}\n//# sourceMappingURL=assemble.js.map//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,[encoded data, 12768 characters]\n//# sourceURL=webpack-internal:///./node_modules/vega-lite/build/src/compile/axis/assemble.js\n");

/***/ }),

/***/ "./node_modules/vega-lite/build/src/compile/axis/component.js":
/*!********************************************************************!*\
  !*** ./node_modules/vega-lite/build/src/compile/axis/component.js ***!
  \********************************************************************/
/*! exports provided: AXIS_COMPONENT_PROPERTIES, AxisComponent */
/***/ (function(module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"AXIS_COMPONENT_PROPERTIES\", function() { return AXIS_COMPONENT_PROPERTIES; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"AxisComponent\", function() { return AxisComponent; });\n/* harmony import */ var _axis__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../../axis */ \"./node_modules/vega-lite/build/src/axis.js\");\n/* harmony import */ var _util__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../../util */ \"./node_modules/vega-lite/build/src/util.js\");\n/* harmony import */ var _vega_schema__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ../../vega.schema */ \"./node_modules/vega-lite/build/src/vega.schema.js\");\n/* harmony import */ var _split__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ../split */ \"./node_modules/vega-lite/build/src/compile/split.js\");\n\n\n\n\nfunction isFalseOrNull(v) {\n    return v === false || v === null;\n}\nconst AXIS_COMPONENT_PROPERTIES_INDEX = Object.assign(Object.assign({ disable: 1, gridScale: 1, scale: 1 }, _axis__WEBPACK_IMPORTED_MODULE_0__[\"COMMON_AXIS_PROPERTIES_INDEX\"]), { labelExpr: 1, encode: 1 });\nconst AXIS_COMPONENT_PROPERTIES = Object(_util__WEBPACK_IMPORTED_MODULE_1__[\"keys\"])(AXIS_COMPONENT_PROPERTIES_INDEX);\nclass AxisComponent extends _split__WEBPACK_IMPORTED_MODULE_3__[\"Split\"] {\n    constructor(explicit = {}, implicit = {}, mainExtracted = false) {\n        super();\n        this.explicit = explicit;\n        this.implicit = implicit;\n        this.mainExtracted = mainExtracted;\n    }\n    clone() {\n        return new AxisComponent(Object(_util__WEBPACK_IMPORTED_MODULE_1__[\"duplicate\"])(this.explicit), Object(_util__WEBPACK_IMPORTED_MODULE_1__[\"duplicate\"])(this.implicit), this.mainExtracted);\n    }\n    hasAxisPart(part) {\n        // FIXME(https://github.com/vega/vega-lite/issues/2552) this method can be wrong if users use a Vega theme.\n        if (part === 'axis') {\n            // always has the axis container part\n            return true;\n        }\n        if (part === 'grid' || part === 'title') {\n            return !!this.get(part);\n        }\n        // Other parts are enabled by default, so they should not be false or null.\n        return !isFalseOrNull(this.get(part));\n    }\n    hasOrientSignalRef() {\n        return Object(_vega_schema__WEBPACK_IMPORTED_MODULE_2__[\"isSignalRef\"])(this.explicit.orient);\n    }\n}\n//# sourceMappingURL=component.js.map//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvdmVnYS1saXRlL2J1aWxkL3NyYy9jb21waWxlL2F4aXMvY29tcG9uZW50LmpzLmpzIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL3ZlZ2EtbGl0ZS9idWlsZC9zcmMvY29tcGlsZS9heGlzL2NvbXBvbmVudC5qcz83NTZlIl0sInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENPTU1PTl9BWElTX1BST1BFUlRJRVNfSU5ERVggfSBmcm9tICcuLi8uLi9heGlzJztcbmltcG9ydCB7IGR1cGxpY2F0ZSwga2V5cyB9IGZyb20gJy4uLy4uL3V0aWwnO1xuaW1wb3J0IHsgaXNTaWduYWxSZWYgfSBmcm9tICcuLi8uLi92ZWdhLnNjaGVtYSc7XG5pbXBvcnQgeyBTcGxpdCB9IGZyb20gJy4uL3NwbGl0JztcbmZ1bmN0aW9uIGlzRmFsc2VPck51bGwodikge1xuICAgIHJldHVybiB2ID09PSBmYWxzZSB8fCB2ID09PSBudWxsO1xufVxuY29uc3QgQVhJU19DT01QT05FTlRfUFJPUEVSVElFU19JTkRFWCA9IE9iamVjdC5hc3NpZ24oT2JqZWN0LmFzc2lnbih7IGRpc2FibGU6IDEsIGdyaWRTY2FsZTogMSwgc2NhbGU6IDEgfSwgQ09NTU9OX0FYSVNfUFJPUEVSVElFU19JTkRFWCksIHsgbGFiZWxFeHByOiAxLCBlbmNvZGU6IDEgfSk7XG5leHBvcnQgY29uc3QgQVhJU19DT01QT05FTlRfUFJPUEVSVElFUyA9IGtleXMoQVhJU19DT01QT05FTlRfUFJPUEVSVElFU19JTkRFWCk7XG5leHBvcnQgY2xhc3MgQXhpc0NvbXBvbmVudCBleHRlbmRzIFNwbGl0IHtcbiAgICBjb25zdHJ1Y3RvcihleHBsaWNpdCA9IHt9LCBpbXBsaWNpdCA9IHt9LCBtYWluRXh0cmFjdGVkID0gZmFsc2UpIHtcbiAgICAgICAgc3VwZXIoKTtcbiAgICAgICAgdGhpcy5leHBsaWNpdCA9IGV4cGxpY2l0O1xuICAgICAgICB0aGlzLmltcGxpY2l0ID0gaW1wbGljaXQ7XG4gICAgICAgIHRoaXMubWFpbkV4dHJhY3RlZCA9IG1haW5FeHRyYWN0ZWQ7XG4gICAgfVxuICAgIGNsb25lKCkge1xuICAgICAgICByZXR1cm4gbmV3IEF4aXNDb21wb25lbnQoZHVwbGljYXRlKHRoaXMuZXhwbGljaXQpLCBkdXBsaWNhdGUodGhpcy5pbXBsaWNpdCksIHRoaXMubWFpbkV4dHJhY3RlZCk7XG4gICAgfVxuICAgIGhhc0F4aXNQYXJ0KHBhcnQpIHtcbiAgICAgICAgLy8gRklYTUUoaHR0cHM6Ly9naXRodWIuY29tL3ZlZ2EvdmVnYS1saXRlL2lzc3Vlcy8yNTUyKSB0aGlzIG1ldGhvZCBjYW4gYmUgd3JvbmcgaWYgdXNlcnMgdXNlIGEgVmVnYSB0aGVtZS5cbiAgICAgICAgaWYgKHBhcnQgPT09ICdheGlzJykge1xuICAgICAgICAgICAgLy8gYWx3YXlzIGhhcyB0aGUgYXhpcyBjb250YWluZXIgcGFydFxuICAgICAgICAgICAgcmV0dXJuIHRydWU7XG4gICAgICAgIH1cbiAgICAgICAgaWYgKHBhcnQgPT09ICdncmlkJyB8fCBwYXJ0ID09PSAndGl0bGUnKSB7XG4gICAgICAgICAgICByZXR1cm4gISF0aGlzLmdldChwYXJ0KTtcbiAgICAgICAgfVxuICAgICAgICAvLyBPdGhlciBwYXJ0cyBhcmUgZW5hYmxlZCBieSBkZWZhdWx0LCBzbyB0aGV5IHNob3VsZCBub3QgYmUgZmFsc2Ugb3IgbnVsbC5cbiAgICAgICAgcmV0dXJuICFpc0ZhbHNlT3JOdWxsKHRoaXMuZ2V0KHBhcnQpKTtcbiAgICB9XG4gICAgaGFzT3JpZW50U2lnbmFsUmVmKCkge1xuICAgICAgICByZXR1cm4gaXNTaWduYWxSZWYodGhpcy5leHBsaWNpdC5vcmllbnQpO1xuICAgIH1cbn1cbi8vIyBzb3VyY2VNYXBwaW5nVVJMPWNvbXBvbmVudC5qcy5tYXAiXSwibWFwcGluZ3MiOiJBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBIiwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///./node_modules/vega-lite/build/src/compile/axis/component.js\n");

/***/ }),

/***/ "./node_modules/vega-lite/build/src/compile/axis/config.js":
/*!*****************************************************************!*\
  !*** ./node_modules/vega-lite/build/src/compile/axis/config.js ***!
  \*****************************************************************/
/*! exports provided: getAxisConfigs, getAxisConfigStyle, getAxisConfig */
/***/ (function(module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"getAxisConfigs\", function() { return getAxisConfigs; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"getAxisConfigStyle\", function() { return getAxisConfigStyle; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"getAxisConfig\", function() { return getAxisConfig; });\n/* harmony import */ var vega_util__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! vega-util */ \"./node_modules/vega-lite/node_modules/vega-util/build/vega-util.module.js\");\n/* harmony import */ var _scale__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../../scale */ \"./node_modules/vega-lite/build/src/scale.js\");\n/* harmony import */ var _util__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ../../util */ \"./node_modules/vega-lite/build/src/util.js\");\n/* harmony import */ var _vega_schema__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ../../vega.schema */ \"./node_modules/vega-lite/build/src/vega.schema.js\");\n/* harmony import */ var _common__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ../common */ \"./node_modules/vega-lite/build/src/compile/common.js\");\n\n\n\n\n\nfunction getAxisConfigFromConfigTypes(configTypes, config, channel, orient) {\n    // TODO: add special casing to add conditional value based on orient signal\n    return Object.assign.apply(null, [\n        {},\n        ...configTypes.map(configType => {\n            if (configType === 'axisOrient') {\n                const orient1 = channel === 'x' ? 'bottom' : 'left';\n                const orientConfig1 = config[channel === 'x' ? 'axisBottom' : 'axisLeft'] || {};\n                const orientConfig2 = config[channel === 'x' ? 'axisTop' : 'axisRight'] || {};\n                const props = new Set([...Object(_util__WEBPACK_IMPORTED_MODULE_2__[\"keys\"])(orientConfig1), ...Object(_util__WEBPACK_IMPORTED_MODULE_2__[\"keys\"])(orientConfig2)]);\n                const conditionalOrientAxisConfig = {};\n                for (const prop of props.values()) {\n                    conditionalOrientAxisConfig[prop] = {\n                        // orient is surely signal in this case\n                        signal: `${orient['signal']} === \"${orient1}\" ? ${Object(_common__WEBPACK_IMPORTED_MODULE_4__[\"signalOrStringValue\"])(orientConfig1[prop])} : ${Object(_common__WEBPACK_IMPORTED_MODULE_4__[\"signalOrStringValue\"])(orientConfig2[prop])}`\n                    };\n                }\n                return conditionalOrientAxisConfig;\n            }\n            return config[configType];\n        })\n    ]);\n}\nfunction getAxisConfigs(channel, scaleType, orient, config) {\n    const typeBasedConfigTypes = scaleType === 'band'\n        ? ['axisDiscrete', 'axisBand']\n        : scaleType === 'point'\n            ? ['axisDiscrete', 'axisPoint']\n            : Object(_scale__WEBPACK_IMPORTED_MODULE_1__[\"isQuantitative\"])(scaleType)\n                ? ['axisQuantitative']\n                : scaleType === 'time' || scaleType === 'utc'\n                    ? ['axisTemporal']\n                    : [];\n    const axisChannel = channel === 'x' ? 'axisX' : 'axisY';\n    const axisOrient = Object(_vega_schema__WEBPACK_IMPORTED_MODULE_3__[\"isSignalRef\"])(orient) ? 'axisOrient' : 'axis' + Object(_util__WEBPACK_IMPORTED_MODULE_2__[\"titleCase\"])(orient); // axisTop, axisBottom, ...\n    const vlOnlyConfigTypes = [\n        // technically Vega does have axisBand, but if we make another separation here,\n        // it will further introduce complexity in the code\n        ...typeBasedConfigTypes,\n        ...typeBasedConfigTypes.map(c => axisChannel + c.substr(4))\n    ];\n    const vgConfigTypes = ['axis', axisOrient, axisChannel];\n    return {\n        vlOnlyAxisConfig: getAxisConfigFromConfigTypes(vlOnlyConfigTypes, config, channel, orient),\n        vgAxisConfig: getAxisConfigFromConfigTypes(vgConfigTypes, config, channel, orient),\n        axisConfigStyle: getAxisConfigStyle([...vgConfigTypes, ...vlOnlyConfigTypes], config)\n    };\n}\nfunction getAxisConfigStyle(axisConfigTypes, config) {\n    var _a;\n    const toMerge = [{}];\n    for (const configType of axisConfigTypes) {\n        // TODO: add special casing to add conditional value based on orient signal\n        let style = (_a = config[configType]) === null || _a === void 0 ? void 0 : _a.style;\n        if (style) {\n            style = Object(vega_util__WEBPACK_IMPORTED_MODULE_0__[\"array\"])(style);\n            for (const s of style) {\n                toMerge.push(config.style[s]);\n            }\n        }\n    }\n    return Object.assign.apply(null, toMerge);\n}\nfunction getAxisConfig(property, styleConfigIndex, style, axisConfigs = {}) {\n    var _a;\n    const styleConfig = Object(_common__WEBPACK_IMPORTED_MODULE_4__[\"getStyleConfig\"])(property, style, styleConfigIndex);\n    if (styleConfig !== undefined) {\n        return {\n            configFrom: 'style',\n            configValue: styleConfig\n        };\n    }\n    for (const configFrom of ['vlOnlyAxisConfig', 'vgAxisConfig', 'axisConfigStyle']) {\n        if (((_a = axisConfigs[configFrom]) === null || _a === void 0 ? void 0 : _a[property]) !== undefined) {\n            return { configFrom, configValue: axisConfigs[configFrom][property] };\n        }\n    }\n    return {};\n}\n//# sourceMappingURL=config.js.map//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,[encoded data, 6284 characters]\n//# sourceURL=webpack-internal:///./node_modules/vega-lite/build/src/compile/axis/config.js\n");

/***/ }),

/***/ "./node_modules/vega-lite/build/src/compile/axis/encode.js":
/*!*****************************************************************!*\
  !*** ./node_modules/vega-lite/build/src/compile/axis/encode.js ***!
  \*****************************************************************/
/*! exports provided: labels */
/***/ (function(module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"labels\", function() { return labels; });\n/* harmony import */ var _channel__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../../channel */ \"./node_modules/vega-lite/build/src/channel.js\");\n/* harmony import */ var _channeldef__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../../channeldef */ \"./node_modules/vega-lite/build/src/channeldef.js\");\n/* harmony import */ var _format__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ../format */ \"./node_modules/vega-lite/build/src/compile/format.js\");\n\n\n\nfunction labels(model, channel, specifiedLabelsSpec) {\n    var _a;\n    const { encoding, config } = model;\n    const fieldOrDatumDef = (_a = Object(_channeldef__WEBPACK_IMPORTED_MODULE_1__[\"getFieldOrDatumDef\"])(encoding[channel])) !== null && _a !== void 0 ? _a : Object(_channeldef__WEBPACK_IMPORTED_MODULE_1__[\"getFieldOrDatumDef\"])(encoding[Object(_channel__WEBPACK_IMPORTED_MODULE_0__[\"getSecondaryRangeChannel\"])(channel)]);\n    const axis = model.axis(channel) || {};\n    const { format, formatType } = axis;\n    if (Object(_format__WEBPACK_IMPORTED_MODULE_2__[\"isCustomFormatType\"])(formatType)) {\n        return Object.assign({ text: Object(_format__WEBPACK_IMPORTED_MODULE_2__[\"formatCustomType\"])({\n                fieldOrDatumDef,\n                field: 'datum.value',\n                format,\n                formatType,\n                config\n            }) }, specifiedLabelsSpec);\n    }\n    return specifiedLabelsSpec;\n}\n//# sourceMappingURL=encode.js.map//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvdmVnYS1saXRlL2J1aWxkL3NyYy9jb21waWxlL2F4aXMvZW5jb2RlLmpzLmpzIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL3ZlZ2EtbGl0ZS9idWlsZC9zcmMvY29tcGlsZS9heGlzL2VuY29kZS5qcz8yY2E1Il0sInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IGdldFNlY29uZGFyeVJhbmdlQ2hhbm5lbCB9IGZyb20gJy4uLy4uL2NoYW5uZWwnO1xuaW1wb3J0IHsgZ2V0RmllbGRPckRhdHVtRGVmIH0gZnJvbSAnLi4vLi4vY2hhbm5lbGRlZic7XG5pbXBvcnQgeyBmb3JtYXRDdXN0b21UeXBlLCBpc0N1c3RvbUZvcm1hdFR5cGUgfSBmcm9tICcuLi9mb3JtYXQnO1xuZXhwb3J0IGZ1bmN0aW9uIGxhYmVscyhtb2RlbCwgY2hhbm5lbCwgc3BlY2lmaWVkTGFiZWxzU3BlYykge1xuICAgIHZhciBfYTtcbiAgICBjb25zdCB7IGVuY29kaW5nLCBjb25maWcgfSA9IG1vZGVsO1xuICAgIGNvbnN0IGZpZWxkT3JEYXR1bURlZiA9IChfYSA9IGdldEZpZWxkT3JEYXR1bURlZihlbmNvZGluZ1tjaGFubmVsXSkpICE9PSBudWxsICYmIF9hICE9PSB2b2lkIDAgPyBfYSA6IGdldEZpZWxkT3JEYXR1bURlZihlbmNvZGluZ1tnZXRTZWNvbmRhcnlSYW5nZUNoYW5uZWwoY2hhbm5lbCldKTtcbiAgICBjb25zdCBheGlzID0gbW9kZWwuYXhpcyhjaGFubmVsKSB8fCB7fTtcbiAgICBjb25zdCB7IGZvcm1hdCwgZm9ybWF0VHlwZSB9ID0gYXhpcztcbiAgICBpZiAoaXNDdXN0b21Gb3JtYXRUeXBlKGZvcm1hdFR5cGUpKSB7XG4gICAgICAgIHJldHVybiBPYmplY3QuYXNzaWduKHsgdGV4dDogZm9ybWF0Q3VzdG9tVHlwZSh7XG4gICAgICAgICAgICAgICAgZmllbGRPckRhdHVtRGVmLFxuICAgICAgICAgICAgICAgIGZpZWxkOiAnZGF0dW0udmFsdWUnLFxuICAgICAgICAgICAgICAgIGZvcm1hdCxcbiAgICAgICAgICAgICAgICBmb3JtYXRUeXBlLFxuICAgICAgICAgICAgICAgIGNvbmZpZ1xuICAgICAgICAgICAgfSkgfSwgc3BlY2lmaWVkTGFiZWxzU3BlYyk7XG4gICAgfVxuICAgIHJldHVybiBzcGVjaWZpZWRMYWJlbHNTcGVjO1xufVxuLy8jIHNvdXJjZU1hcHBpbmdVUkw9ZW5jb2RlLmpzLm1hcCJdLCJtYXBwaW5ncyI6IkFBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSIsInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///./node_modules/vega-lite/build/src/compile/axis/encode.js\n");

/***/ }),

/***/ "./node_modules/vega-lite/build/src/compile/axis/parse.js":
/*!****************************************************************!*\
  !*** ./node_modules/vega-lite/build/src/compile/axis/parse.js ***!
  \****************************************************************/
/*! exports provided: parseUnitAxes, parseLayerAxes */
/***/ (function(module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"parseUnitAxes\", function() { return parseUnitAxes; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"parseLayerAxes\", function() { return parseLayerAxes; });\n/* harmony import */ var _axis__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../../axis */ \"./node_modules/vega-lite/build/src/axis.js\");\n/* harmony import */ var _channel__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../../channel */ \"./node_modules/vega-lite/build/src/channel.js\");\n/* harmony import */ var _channeldef__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ../../channeldef */ \"./node_modules/vega-lite/build/src/channeldef.js\");\n/* harmony import */ var _util__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ../../util */ \"./node_modules/vega-lite/build/src/util.js\");\n/* harmony import */ var _vega_schema__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ../../vega.schema */ \"./node_modules/vega-lite/build/src/vega.schema.js\");\n/* harmony import */ var _common__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! ../common */ \"./node_modules/vega-lite/build/src/compile/common.js\");\n/* harmony import */ var _guide__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! ../guide */ \"./node_modules/vega-lite/build/src/compile/guide.js\");\n/* harmony import */ var _resolve__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! ../resolve */ \"./node_modules/vega-lite/build/src/compile/resolve.js\");\n/* harmony import */ var _split__WEBPACK_IMPORTED_MODULE_8__ = __webpack_require__(/*! ../split */ \"./node_modules/vega-lite/build/src/compile/split.js\");\n/* harmony import */ var _component__WEBPACK_IMPORTED_MODULE_9__ = __webpack_require__(/*! ./component */ \"./node_modules/vega-lite/build/src/compile/axis/component.js\");\n/* harmony import */ var _config__WEBPACK_IMPORTED_MODULE_10__ = __webpack_require__(/*! ./config */ \"./node_modules/vega-lite/build/src/compile/axis/config.js\");\n/* harmony import */ var _encode__WEBPACK_IMPORTED_MODULE_11__ = __webpack_require__(/*! ./encode */ \"./node_modules/vega-lite/build/src/compile/axis/encode.js\");\n/* harmony import */ var _properties__WEBPACK_IMPORTED_MODULE_12__ = __webpack_require__(/*! ./properties */ \"./node_modules/vega-lite/build/src/compile/axis/properties.js\");\n\n\n\n\n\n\n\n\n\n\n\n\n\nfunction parseUnitAxes(model) {\n    return _channel__WEBPACK_IMPORTED_MODULE_1__[\"POSITION_SCALE_CHANNELS\"].reduce((axis, channel) => {\n        if (model.component.scales[channel]) {\n            axis[channel] = [parseAxis(channel, model)];\n        }\n        return axis;\n    }, {});\n}\nconst OPPOSITE_ORIENT = {\n    bottom: 'top',\n    top: 'bottom',\n    left: 'right',\n    right: 'left'\n};\nfunction parseLayerAxes(model) {\n    var _a;\n    const { axes, resolve } = model.component;\n    const axisCount = { top: 0, bottom: 0, right: 0, left: 0 };\n    for (const child of model.children) {\n        child.parseAxesAndHeaders();\n        for (const channel of Object(_util__WEBPACK_IMPORTED_MODULE_3__[\"keys\"])(child.component.axes)) {\n            resolve.axis[channel] = Object(_resolve__WEBPACK_IMPORTED_MODULE_7__[\"parseGuideResolve\"])(model.component.resolve, channel);\n            if (resolve.axis[channel] === 'shared') {\n                // If the resolve says shared (and has not been overridden)\n                // We will try to merge and see if there is a conflict\n                axes[channel] = mergeAxisComponents(axes[channel], child.component.axes[channel]);\n                if (!axes[channel]) {\n                    // If merge returns nothing, there is a conflict so we cannot make the axis shared.\n                    // Thus, mark axis as independent and remove the axis component.\n                    resolve.axis[channel] = 'independent';\n                    delete axes[channel];\n                }\n            }\n        }\n    }\n    // Move axes to layer's axis component and merge shared axes\n    for (const channel of _channel__WEBPACK_IMPORTED_MODULE_1__[\"POSITION_SCALE_CHANNELS\"]) {\n        for (const child of model.children) {\n            if (!child.component.axes[channel]) {\n                // skip if the child does not have a particular axis\n                continue;\n            }\n            if (resolve.axis[channel] === 'independent') {\n                // If axes are independent, concat the axisComponent array.\n                axes[channel] = ((_a = axes[channel]) !== null && _a !== void 0 ? _a : []).concat(child.component.axes[channel]);\n                // Automatically adjust orient\n                for (const axisComponent of child.component.axes[channel]) {\n                    const { value: orient, explicit } = axisComponent.getWithExplicit('orient');\n                    if (Object(_vega_schema__WEBPACK_IMPORTED_MODULE_4__[\"isSignalRef\"])(orient)) {\n                        continue;\n                    }\n                    if (axisCount[orient] > 0 && !explicit) {\n                        // Change axis orient if the number do not match\n                        const oppositeOrient = OPPOSITE_ORIENT[orient];\n                        if (axisCount[orient] > axisCount[oppositeOrient]) {\n                            axisComponent.set('orient', oppositeOrient, false);\n                        }\n                    }\n                    axisCount[orient]++;\n                    // TODO(https://github.com/vega/vega-lite/issues/2634): automatically add extra offset?\n                }\n            }\n            // After merging, make sure to remove axes from child\n            delete child.component.axes[channel];\n        }\n        // Suppress grid lines for dual axis charts (https://github.com/vega/vega-lite/issues/4676)\n        if (resolve.axis[channel] === 'independent' && axes[channel] && axes[channel].length > 1) {\n            for (const axisCmpt of axes[channel]) {\n                if (!!axisCmpt.get('grid') && !axisCmpt.explicit.grid) {\n                    axisCmpt.implicit.grid = false;\n                }\n            }\n        }\n    }\n}\nfunction mergeAxisComponents(mergedAxisCmpts, childAxisCmpts) {\n    if (mergedAxisCmpts) {\n        // FIXME: this is a bit wrong once we support multiple axes\n        if (mergedAxisCmpts.length !== childAxisCmpts.length) {\n            return undefined; // Cannot merge axis component with different number of axes.\n        }\n        const length = mergedAxisCmpts.length;\n        for (let i = 0; i < length; i++) {\n            const merged = mergedAxisCmpts[i];\n            const child = childAxisCmpts[i];\n            if (!!merged !== !!child) {\n                return undefined;\n            }\n            else if (merged && child) {\n                const mergedOrient = merged.getWithExplicit('orient');\n                const childOrient = child.getWithExplicit('orient');\n                if (mergedOrient.explicit && childOrient.explicit && mergedOrient.value !== childOrient.value) {\n                    // TODO: throw warning if resolve is explicit (We don't have info about explicit/implicit resolve yet.)\n                    // Cannot merge due to inconsistent orient\n                    return undefined;\n                }\n                else {\n                    mergedAxisCmpts[i] = mergeAxisComponent(merged, child);\n                }\n            }\n        }\n    }\n    else {\n        // For first one, return a copy of the child\n        return childAxisCmpts.map(axisComponent => axisComponent.clone());\n    }\n    return mergedAxisCmpts;\n}\nfunction mergeAxisComponent(merged, child) {\n    for (const prop of _component__WEBPACK_IMPORTED_MODULE_9__[\"AXIS_COMPONENT_PROPERTIES\"]) {\n        const mergedValueWithExplicit = Object(_split__WEBPACK_IMPORTED_MODULE_8__[\"mergeValuesWithExplicit\"])(merged.getWithExplicit(prop), child.getWithExplicit(prop), prop, 'axis', \n        // Tie breaker function\n        (v1, v2) => {\n            switch (prop) {\n                case 'title':\n                    return Object(_common__WEBPACK_IMPORTED_MODULE_5__[\"mergeTitleComponent\"])(v1, v2);\n                case 'gridScale':\n                    return {\n                        explicit: v1.explicit,\n                        value: Object(_util__WEBPACK_IMPORTED_MODULE_3__[\"getFirstDefined\"])(v1.value, v2.value)\n                    };\n            }\n            return Object(_split__WEBPACK_IMPORTED_MODULE_8__[\"defaultTieBreaker\"])(v1, v2, prop, 'axis');\n        });\n        merged.setWithExplicit(prop, mergedValueWithExplicit);\n    }\n    return merged;\n}\n// eslint-disable-next-line @typescript-eslint/ban-types\nfunction isExplicit(value, property, axis, model, channel) {\n    if (property === 'disable') {\n        return axis !== undefined; // if axis is specified or null/false, then it's enable/disable state is explicit\n    }\n    axis = axis || {};\n    switch (property) {\n        case 'titleAngle':\n        case 'labelAngle':\n            return value === (Object(_vega_schema__WEBPACK_IMPORTED_MODULE_4__[\"isSignalRef\"])(axis.labelAngle) ? axis.labelAngle : Object(_util__WEBPACK_IMPORTED_MODULE_3__[\"normalizeAngle\"])(axis.labelAngle));\n        case 'values':\n            return !!axis.values;\n        // specified axis.values is already respected, but may get transformed.\n        case 'encode':\n            // both VL axis.encoding and axis.labelAngle affect VG axis.encode\n            return !!axis.encoding || !!axis.labelAngle;\n        case 'title':\n            // title can be explicit if fieldDef.title is set\n            if (value === Object(_properties__WEBPACK_IMPORTED_MODULE_12__[\"getFieldDefTitle\"])(model, channel)) {\n                return true;\n            }\n    }\n    // Otherwise, things are explicit if the returned value matches the specified property\n    return value === axis[property];\n}\n/**\n * Properties to always include values from config\n */\nconst propsToAlwaysIncludeConfig = new Set([\n    'grid',\n    'translate',\n    // the rest are not axis configs in Vega, but are in VL, so we need to set too.\n    'format',\n    'formatType',\n    'orient',\n    'labelExpr',\n    'tickCount',\n    'position',\n    'tickMinStep'\n]);\nfunction parseAxis(channel, model) {\n    var _a, _b, _c;\n    let axis = model.axis(channel);\n    const axisComponent = new _component__WEBPACK_IMPORTED_MODULE_9__[\"AxisComponent\"]();\n    const fieldOrDatumDef = Object(_channeldef__WEBPACK_IMPORTED_MODULE_2__[\"getFieldOrDatumDef\"])(model.encoding[channel]);\n    const { mark, config } = model;\n    const orient = (axis === null || axis === void 0 ? void 0 : axis.orient) || ((_a = config[channel === 'x' ? 'axisX' : 'axisY']) === null || _a === void 0 ? void 0 : _a.orient) || ((_b = config.axis) === null || _b === void 0 ? void 0 : _b.orient) ||\n        Object(_properties__WEBPACK_IMPORTED_MODULE_12__[\"defaultOrient\"])(channel);\n    const scaleType = model.getScaleComponent(channel).get('type');\n    const axisConfigs = Object(_config__WEBPACK_IMPORTED_MODULE_10__[\"getAxisConfigs\"])(channel, scaleType, orient, model.config);\n    const disable = axis !== undefined ? !axis : Object(_config__WEBPACK_IMPORTED_MODULE_10__[\"getAxisConfig\"])('disable', config.style, axis === null || axis === void 0 ? void 0 : axis.style, axisConfigs).configValue;\n    axisComponent.set('disable', disable, axis !== undefined);\n    if (disable) {\n        return axisComponent;\n    }\n    axis = axis || {};\n    const labelAngle = Object(_properties__WEBPACK_IMPORTED_MODULE_12__[\"getLabelAngle\"])(fieldOrDatumDef, axis, channel, config.style, axisConfigs);\n    const ruleParams = {\n        fieldOrDatumDef,\n        axis,\n        channel,\n        model,\n        scaleType,\n        orient,\n        labelAngle,\n        mark,\n        config\n    };\n    // 1.2. Add properties\n    for (const property of _component__WEBPACK_IMPORTED_MODULE_9__[\"AXIS_COMPONENT_PROPERTIES\"]) {\n        const value = property in _properties__WEBPACK_IMPORTED_MODULE_12__[\"axisRules\"] ? _properties__WEBPACK_IMPORTED_MODULE_12__[\"axisRules\"][property](ruleParams) : Object(_axis__WEBPACK_IMPORTED_MODULE_0__[\"isAxisProperty\"])(property) ? axis[property] : undefined;\n        const hasValue = value !== undefined;\n        const explicit = isExplicit(value, property, axis, model, channel);\n        if (hasValue && explicit) {\n            axisComponent.set(property, value, explicit);\n        }\n        else {\n            const { configValue = undefined, configFrom = undefined } = Object(_axis__WEBPACK_IMPORTED_MODULE_0__[\"isAxisProperty\"])(property) && property !== 'values'\n                ? Object(_config__WEBPACK_IMPORTED_MODULE_10__[\"getAxisConfig\"])(property, config.style, axis.style, axisConfigs)\n                : {};\n            const hasConfigValue = configValue !== undefined;\n            if (hasValue && !hasConfigValue) {\n                // only set property if it is explicitly set or has no config value (otherwise we will accidentally override config)\n                axisComponent.set(property, value, explicit);\n            }\n            else if (\n            // Cases need implicit values\n            // 1. Axis config that aren't available in Vega\n            !(configFrom === 'vgAxisConfig') ||\n                // 2. Certain properties are always included (see `propsToAlwaysIncludeConfig`'s declaration for more details)\n                (propsToAlwaysIncludeConfig.has(property) && hasConfigValue) ||\n                // 3. Conditional axis values and signals\n                Object(_axis__WEBPACK_IMPORTED_MODULE_0__[\"isConditionalAxisValue\"])(configValue) ||\n                Object(_vega_schema__WEBPACK_IMPORTED_MODULE_4__[\"isSignalRef\"])(configValue)) {\n                // If a config is specified and is conditional, copy conditional value from axis config\n                axisComponent.set(property, configValue, false);\n            }\n        }\n    }\n    // 2) Add guide encode definition groups\n    const axisEncoding = (_c = axis.encoding) !== null && _c !== void 0 ? _c : {};\n    const axisEncode = _axis__WEBPACK_IMPORTED_MODULE_0__[\"AXIS_PARTS\"].reduce((e, part) => {\n        var _a;\n        if (!axisComponent.hasAxisPart(part)) {\n            // No need to create encode for a disabled part.\n            return e;\n        }\n        const axisEncodingPart = Object(_guide__WEBPACK_IMPORTED_MODULE_6__[\"guideEncodeEntry\"])((_a = axisEncoding[part]) !== null && _a !== void 0 ? _a : {}, model);\n        const value = part === 'labels' ? _encode__WEBPACK_IMPORTED_MODULE_11__[\"labels\"](model, channel, axisEncodingPart) : axisEncodingPart;\n        if (value !== undefined && !Object(_util__WEBPACK_IMPORTED_MODULE_3__[\"isEmpty\"])(value)) {\n            e[part] = { update: value };\n        }\n        return e;\n    }, {});\n    // FIXME: By having encode as one property, we won't have fine grained encode merging.\n    if (!Object(_util__WEBPACK_IMPORTED_MODULE_3__[\"isEmpty\"])(axisEncode)) {\n        axisComponent.set('encode', axisEncode, !!axis.encoding || axis.labelAngle !== undefined);\n    }\n    return axisComponent;\n}\n//# sourceMappingURL=parse.js.map//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,[encoded data, 18440 characters]\n//# sourceURL=webpack-internal:///./node_modules/vega-lite/build/src/compile/axis/parse.js\n");

/***/ }),

/***/ "./node_modules/vega-lite/build/src/compile/axis/properties.js":
/*!*********************************************************************!*\
  !*** ./node_modules/vega-lite/build/src/compile/axis/properties.js ***!
  \*********************************************************************/
/*! exports provided: axisRules, defaultGrid, gridScale, getLabelAngle, normalizeAngleExpr, defaultLabelBaseline, defaultLabelAlign, defaultLabelFlush, defaultLabelOverlap, defaultOrient, defaultTickCount, getFieldDefTitle, values, defaultZindex */
/***/ (function(module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"axisRules\", function() { return axisRules; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"defaultGrid\", function() { return defaultGrid; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"gridScale\", function() { return gridScale; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"getLabelAngle\", function() { return getLabelAngle; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"normalizeAngleExpr\", function() { return normalizeAngleExpr; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"defaultLabelBaseline\", function() { return defaultLabelBaseline; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"defaultLabelAlign\", function() { return defaultLabelAlign; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"defaultLabelFlush\", function() { return defaultLabelFlush; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"defaultLabelOverlap\", function() { return defaultLabelOverlap; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"defaultOrient\", function() { return defaultOrient; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"defaultTickCount\", function() { return defaultTickCount; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"getFieldDefTitle\", function() { return getFieldDefTitle; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"values\", function() { return values; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"defaultZindex\", function() { return defaultZindex; });\n/* harmony import */ var vega_util__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! vega-util */ \"./node_modules/vega-lite/node_modules/vega-util/build/vega-util.module.js\");\n/* harmony import */ var _bin__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../../bin */ \"./node_modules/vega-lite/build/src/bin.js\");\n/* harmony import */ var _channel__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ../../channel */ \"./node_modules/vega-lite/build/src/channel.js\");\n/* harmony import */ var _channeldef__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ../../channeldef */ \"./node_modules/vega-lite/build/src/channeldef.js\");\n/* harmony import */ var _scale__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ../../scale */ \"./node_modules/vega-lite/build/src/scale.js\");\n/* harmony import */ var _timeunit__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! ../../timeunit */ \"./node_modules/vega-lite/build/src/timeunit.js\");\n/* harmony import */ var _type__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! ../../type */ \"./node_modules/vega-lite/build/src/type.js\");\n/* harmony import */ var _util__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! ../../util */ \"./node_modules/vega-lite/build/src/util.js\");\n/* harmony import */ var _vega_schema__WEBPACK_IMPORTED_MODULE_8__ = __webpack_require__(/*! ../../vega.schema */ \"./node_modules/vega-lite/build/src/vega.schema.js\");\n/* harmony import */ var _common__WEBPACK_IMPORTED_MODULE_9__ = __webpack_require__(/*! ../common */ \"./node_modules/vega-lite/build/src/compile/common.js\");\n/* harmony import */ var _format__WEBPACK_IMPORTED_MODULE_10__ = __webpack_require__(/*! ../format */ \"./node_modules/vega-lite/build/src/compile/format.js\");\n/* harmony import */ var _config__WEBPACK_IMPORTED_MODULE_11__ = __webpack_require__(/*! ./config */ \"./node_modules/vega-lite/build/src/compile/axis/config.js\");\n\n\n\n\n\n\n\n\n\n\n\n\nconst axisRules = {\n    scale: ({ model, channel }) => model.scaleName(channel),\n    format: ({ fieldOrDatumDef, config, axis }) => {\n        const { format, formatType } = axis;\n        return Object(_format__WEBPACK_IMPORTED_MODULE_10__[\"guideFormat\"])(fieldOrDatumDef, fieldOrDatumDef.type, format, formatType, config, true);\n    },\n    formatType: ({ axis, fieldOrDatumDef, scaleType }) => {\n        const { formatType } = axis;\n        return Object(_format__WEBPACK_IMPORTED_MODULE_10__[\"guideFormatType\"])(formatType, fieldOrDatumDef, scaleType);\n    },\n    grid: ({ fieldOrDatumDef, axis, scaleType }) => {\n        var _a;\n        if (Object(_channeldef__WEBPACK_IMPORTED_MODULE_3__[\"isFieldDef\"])(fieldOrDatumDef) && Object(_bin__WEBPACK_IMPORTED_MODULE_1__[\"isBinned\"])(fieldOrDatumDef.bin)) {\n            return false;\n        }\n        else {\n            return (_a = axis.grid) !== null && _a !== void 0 ? _a : defaultGrid(scaleType, fieldOrDatumDef);\n        }\n    },\n    gridScale: ({ model, channel }) => gridScale(model, channel),\n    labelAlign: ({ axis, labelAngle, orient, channel }) => axis.labelAlign || defaultLabelAlign(labelAngle, orient, channel),\n    labelAngle: ({ labelAngle }) => labelAngle,\n    labelBaseline: ({ axis, labelAngle, orient, channel }) => axis.labelBaseline || defaultLabelBaseline(labelAngle, orient, channel),\n    labelFlush: ({ axis, fieldOrDatumDef, channel }) => { var _a; return (_a = axis.labelFlush) !== null && _a !== void 0 ? _a : defaultLabelFlush(fieldOrDatumDef.type, channel); },\n    labelOverlap: ({ axis, fieldOrDatumDef, scaleType }) => { var _a; return (_a = axis.labelOverlap) !== null && _a !== void 0 ? _a : defaultLabelOverlap(fieldOrDatumDef.type, scaleType, Object(_channeldef__WEBPACK_IMPORTED_MODULE_3__[\"isFieldDef\"])(fieldOrDatumDef) && !!fieldOrDatumDef.timeUnit, Object(_channeldef__WEBPACK_IMPORTED_MODULE_3__[\"isFieldDef\"])(fieldOrDatumDef) ? fieldOrDatumDef.sort : undefined); },\n    // we already calculate orient in parse\n    orient: ({ orient }) => orient,\n    tickCount: ({ channel, model, axis, fieldOrDatumDef, scaleType }) => {\n        var _a;\n        const sizeType = channel === 'x' ? 'width' : channel === 'y' ? 'height' : undefined;\n        const size = sizeType ? model.getSizeSignalRef(sizeType) : undefined;\n        return (_a = axis.tickCount) !== null && _a !== void 0 ? _a : defaultTickCount({ fieldOrDatumDef, scaleType, size, values: axis.values });\n    },\n    title: ({ axis, model, channel }) => {\n        if (axis.title !== undefined) {\n            return axis.title;\n        }\n        const fieldDefTitle = getFieldDefTitle(model, channel);\n        if (fieldDefTitle !== undefined) {\n            return fieldDefTitle;\n        }\n        const fieldDef = model.typedFieldDef(channel);\n        const channel2 = channel === 'x' ? 'x2' : 'y2';\n        const fieldDef2 = model.fieldDef(channel2);\n        // If title not specified, store base parts of fieldDef (and fieldDef2 if exists)\n        return Object(_common__WEBPACK_IMPORTED_MODULE_9__[\"mergeTitleFieldDefs\"])(fieldDef ? [Object(_channeldef__WEBPACK_IMPORTED_MODULE_3__[\"toFieldDefBase\"])(fieldDef)] : [], Object(_channeldef__WEBPACK_IMPORTED_MODULE_3__[\"isFieldDef\"])(fieldDef2) ? [Object(_channeldef__WEBPACK_IMPORTED_MODULE_3__[\"toFieldDefBase\"])(fieldDef2)] : []);\n    },\n    values: ({ axis, fieldOrDatumDef }) => values(axis, fieldOrDatumDef),\n    zindex: ({ axis, fieldOrDatumDef, mark }) => { var _a; return (_a = axis.zindex) !== null && _a !== void 0 ? _a : defaultZindex(mark, fieldOrDatumDef); }\n};\n// TODO: we need to refactor this method after we take care of config refactoring\n/**\n * Default rules for whether to show a grid should be shown for a channel.\n * If `grid` is unspecified, the default value is `true` for ordinal scales that are not binned\n */\nfunction defaultGrid(scaleType, fieldDef) {\n    return !Object(_scale__WEBPACK_IMPORTED_MODULE_4__[\"hasDiscreteDomain\"])(scaleType) && Object(_channeldef__WEBPACK_IMPORTED_MODULE_3__[\"isFieldDef\"])(fieldDef) && !Object(_bin__WEBPACK_IMPORTED_MODULE_1__[\"isBinning\"])(fieldDef === null || fieldDef === void 0 ? void 0 : fieldDef.bin);\n}\nfunction gridScale(model, channel) {\n    const gridChannel = channel === 'x' ? 'y' : 'x';\n    if (model.getScaleComponent(gridChannel)) {\n        return model.scaleName(gridChannel);\n    }\n    return undefined;\n}\nfunction getLabelAngle(fieldOrDatumDef, axis, channel, styleConfig, axisConfigs) {\n    const labelAngle = axis === null || axis === void 0 ? void 0 : axis.labelAngle;\n    // try axis value\n    if (labelAngle !== undefined) {\n        return Object(_vega_schema__WEBPACK_IMPORTED_MODULE_8__[\"isSignalRef\"])(labelAngle) ? labelAngle : Object(_util__WEBPACK_IMPORTED_MODULE_7__[\"normalizeAngle\"])(labelAngle);\n    }\n    else {\n        // try axis config value\n        const { configValue: angle } = Object(_config__WEBPACK_IMPORTED_MODULE_11__[\"getAxisConfig\"])('labelAngle', styleConfig, axis === null || axis === void 0 ? void 0 : axis.style, axisConfigs);\n        if (angle !== undefined) {\n            return Object(_util__WEBPACK_IMPORTED_MODULE_7__[\"normalizeAngle\"])(angle);\n        }\n        else {\n            // get default value\n            if (channel === _channel__WEBPACK_IMPORTED_MODULE_2__[\"X\"] &&\n                Object(_util__WEBPACK_IMPORTED_MODULE_7__[\"contains\"])([_type__WEBPACK_IMPORTED_MODULE_6__[\"NOMINAL\"], _type__WEBPACK_IMPORTED_MODULE_6__[\"ORDINAL\"]], fieldOrDatumDef.type) &&\n                !(Object(_channeldef__WEBPACK_IMPORTED_MODULE_3__[\"isFieldDef\"])(fieldOrDatumDef) && fieldOrDatumDef.timeUnit)) {\n                return 270;\n            }\n            // no default\n            return undefined;\n        }\n    }\n}\nfunction normalizeAngleExpr(angle) {\n    return `(((${angle.signal} % 360) + 360) % 360)`;\n}\nfunction defaultLabelBaseline(angle, orient, channel, alwaysIncludeMiddle) {\n    if (angle !== undefined) {\n        if (channel === 'x') {\n            if (Object(_vega_schema__WEBPACK_IMPORTED_MODULE_8__[\"isSignalRef\"])(angle)) {\n                const a = normalizeAngleExpr(angle);\n                const orientIsTop = Object(_vega_schema__WEBPACK_IMPORTED_MODULE_8__[\"isSignalRef\"])(orient) ? `(${orient.signal} === \"top\")` : orient === 'top';\n                return {\n                    signal: `(45 < ${a} && ${a} < 135) || (225 < ${a} && ${a} < 315) ? \"middle\" :` +\n                        `(${a} <= 45 || 315 <= ${a}) === ${orientIsTop} ? \"bottom\" : \"top\"`\n                };\n            }\n            if ((45 < angle && angle < 135) || (225 < angle && angle < 315)) {\n                return 'middle';\n            }\n            if (Object(_vega_schema__WEBPACK_IMPORTED_MODULE_8__[\"isSignalRef\"])(orient)) {\n                const op = angle <= 45 || 315 <= angle ? '===' : '!==';\n                return { signal: `${orient.signal} ${op} \"top\" ? \"bottom\" : \"top\"` };\n            }\n            return (angle <= 45 || 315 <= angle) === (orient === 'top') ? 'bottom' : 'top';\n        }\n        else {\n            if (Object(_vega_schema__WEBPACK_IMPORTED_MODULE_8__[\"isSignalRef\"])(angle)) {\n                const a = normalizeAngleExpr(angle);\n                const orientIsLeft = Object(_vega_schema__WEBPACK_IMPORTED_MODULE_8__[\"isSignalRef\"])(orient) ? `(${orient.signal} === \"left\")` : orient === 'left';\n                const middle = alwaysIncludeMiddle ? '\"middle\"' : 'null';\n                return {\n                    signal: `${a} <= 45 || 315 <= ${a} || (135 <= ${a} && ${a} <= 225) ? ${middle} : (45 <= ${a} && ${a} <= 135) === ${orientIsLeft} ? \"top\" : \"bottom\"`\n                };\n            }\n            if (angle <= 45 || 315 <= angle || (135 <= angle && angle <= 225)) {\n                return alwaysIncludeMiddle ? 'middle' : null;\n            }\n            if (Object(_vega_schema__WEBPACK_IMPORTED_MODULE_8__[\"isSignalRef\"])(orient)) {\n                const op = 45 <= angle && angle <= 135 ? '===' : '!==';\n                return { signal: `${orient.signal} ${op} \"left\" ? \"top\" : \"bottom\"` };\n            }\n            return (45 <= angle && angle <= 135) === (orient === 'left') ? 'top' : 'bottom';\n        }\n    }\n    return undefined;\n}\nfunction defaultLabelAlign(angle, orient, channel) {\n    if (angle === undefined) {\n        return undefined;\n    }\n    const isX = channel === 'x';\n    const startAngle = isX ? 0 : 90;\n    const mainOrient = isX ? 'bottom' : 'left';\n    if (Object(_vega_schema__WEBPACK_IMPORTED_MODULE_8__[\"isSignalRef\"])(angle)) {\n        const a = normalizeAngleExpr(angle);\n        const orientIsMain = Object(_vega_schema__WEBPACK_IMPORTED_MODULE_8__[\"isSignalRef\"])(orient) ? `(${orient.signal} === \"${mainOrient}\")` : orient === mainOrient;\n        return {\n            signal: `(${startAngle ? '(' + a + ' + 90)' : a} % 180 === 0) ? ${isX ? null : '\"center\"'} :` +\n                `(${startAngle} < ${a} && ${a} < ${180 + startAngle}) === ${orientIsMain} ? \"left\" : \"right\"`\n        };\n    }\n    if ((angle + startAngle) % 180 === 0) {\n        // For bottom, use default label align so label flush still works\n        return isX ? null : 'center';\n    }\n    if (Object(_vega_schema__WEBPACK_IMPORTED_MODULE_8__[\"isSignalRef\"])(orient)) {\n        const op = startAngle < angle && angle < 180 + startAngle ? '===' : '!==';\n        const orientIsMain = `${orient.signal} ${op} \"${mainOrient}\"`;\n        return {\n            signal: `${orientIsMain} ? \"left\" : \"right\"`\n        };\n    }\n    if ((startAngle < angle && angle < 180 + startAngle) === (orient === mainOrient)) {\n        return 'left';\n    }\n    return 'right';\n}\nfunction defaultLabelFlush(type, channel) {\n    if (channel === 'x' && Object(_util__WEBPACK_IMPORTED_MODULE_7__[\"contains\"])(['quantitative', 'temporal'], type)) {\n        return true;\n    }\n    return undefined;\n}\nfunction defaultLabelOverlap(type, scaleType, hasTimeUnit, sort) {\n    // do not prevent overlap for nominal data because there is no way to infer what the missing labels are\n    if ((hasTimeUnit && !Object(vega_util__WEBPACK_IMPORTED_MODULE_0__[\"isObject\"])(sort)) || (type !== 'nominal' && type !== 'ordinal')) {\n        if (scaleType === 'log' || scaleType === 'symlog') {\n            return 'greedy';\n        }\n        return true;\n    }\n    return undefined;\n}\nfunction defaultOrient(channel) {\n    return channel === 'x' ? 'bottom' : 'left';\n}\nfunction defaultTickCount({ fieldOrDatumDef, scaleType, size, values: vals }) {\n    var _a;\n    if (!vals && !Object(_scale__WEBPACK_IMPORTED_MODULE_4__[\"hasDiscreteDomain\"])(scaleType) && scaleType !== 'log') {\n        if (Object(_channeldef__WEBPACK_IMPORTED_MODULE_3__[\"isFieldDef\"])(fieldOrDatumDef)) {\n            if (Object(_bin__WEBPACK_IMPORTED_MODULE_1__[\"isBinning\"])(fieldOrDatumDef.bin)) {\n                // for binned data, we don't want more ticks than maxbins\n                return { signal: `ceil(${size.signal}/10)` };\n            }\n            if (fieldOrDatumDef.timeUnit &&\n                Object(_util__WEBPACK_IMPORTED_MODULE_7__[\"contains\"])(['month', 'hours', 'day', 'quarter'], (_a = Object(_timeunit__WEBPACK_IMPORTED_MODULE_5__[\"normalizeTimeUnit\"])(fieldOrDatumDef.timeUnit)) === null || _a === void 0 ? void 0 : _a.unit)) {\n                return undefined;\n            }\n        }\n        return { signal: `ceil(${size.signal}/40)` };\n    }\n    return undefined;\n}\nfunction getFieldDefTitle(model, channel) {\n    const channel2 = channel === 'x' ? 'x2' : 'y2';\n    const fieldDef = model.fieldDef(channel);\n    const fieldDef2 = model.fieldDef(channel2);\n    const title1 = fieldDef ? fieldDef.title : undefined;\n    const title2 = fieldDef2 ? fieldDef2.title : undefined;\n    if (title1 && title2) {\n        return Object(_common__WEBPACK_IMPORTED_MODULE_9__[\"mergeTitle\"])(title1, title2);\n    }\n    else if (title1) {\n        return title1;\n    }\n    else if (title2) {\n        return title2;\n    }\n    else if (title1 !== undefined) {\n        // falsy value to disable config\n        return title1;\n    }\n    else if (title2 !== undefined) {\n        // falsy value to disable config\n        return title2;\n    }\n    return undefined;\n}\nfunction values(axis, fieldOrDatumDef) {\n    const vals = axis.values;\n    if (Object(vega_util__WEBPACK_IMPORTED_MODULE_0__[\"isArray\"])(vals)) {\n        return Object(_channeldef__WEBPACK_IMPORTED_MODULE_3__[\"valueArray\"])(fieldOrDatumDef, vals);\n    }\n    else if (Object(_vega_schema__WEBPACK_IMPORTED_MODULE_8__[\"isSignalRef\"])(vals)) {\n        return vals;\n    }\n    return undefined;\n}\nfunction defaultZindex(mark, fieldDef) {\n    if (mark === 'rect' && Object(_channeldef__WEBPACK_IMPORTED_MODULE_3__[\"isDiscrete\"])(fieldDef)) {\n        return 1;\n    }\n    return 0;\n}\n//# sourceMappingURL=properties.js.map//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,[encoded data, 17716 characters]\n//# sourceURL=webpack-internal:///./node_modules/vega-lite/build/src/compile/axis/properties.js\n");

/***/ }),

/***/ "./node_modules/vega-lite/build/src/compile/buildmodel.js":
/*!****************************************************************!*\
  !*** ./node_modules/vega-lite/build/src/compile/buildmodel.js ***!
  \****************************************************************/
/*! exports provided: buildModel */
/***/ (function(module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"buildModel\", function() { return buildModel; });\n/* harmony import */ var _log__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../log */ \"./node_modules/vega-lite/build/src/log/index.js\");\n/* harmony import */ var _spec__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../spec */ \"./node_modules/vega-lite/build/src/spec/index.js\");\n/* harmony import */ var _concat__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./concat */ \"./node_modules/vega-lite/build/src/compile/concat.js\");\n/* harmony import */ var _facet__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ./facet */ \"./node_modules/vega-lite/build/src/compile/facet.js\");\n/* harmony import */ var _layer__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ./layer */ \"./node_modules/vega-lite/build/src/compile/layer.js\");\n/* harmony import */ var _unit__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! ./unit */ \"./node_modules/vega-lite/build/src/compile/unit.js\");\n\n\n\n\n\n\nfunction buildModel(spec, parent, parentGivenName, unitSize, config) {\n    if (Object(_spec__WEBPACK_IMPORTED_MODULE_1__[\"isFacetSpec\"])(spec)) {\n        return new _facet__WEBPACK_IMPORTED_MODULE_3__[\"FacetModel\"](spec, parent, parentGivenName, config);\n    }\n    else if (Object(_spec__WEBPACK_IMPORTED_MODULE_1__[\"isLayerSpec\"])(spec)) {\n        return new _layer__WEBPACK_IMPORTED_MODULE_4__[\"LayerModel\"](spec, parent, parentGivenName, unitSize, config);\n    }\n    else if (Object(_spec__WEBPACK_IMPORTED_MODULE_1__[\"isUnitSpec\"])(spec)) {\n        return new _unit__WEBPACK_IMPORTED_MODULE_5__[\"UnitModel\"](spec, parent, parentGivenName, unitSize, config);\n    }\n    else if (Object(_spec__WEBPACK_IMPORTED_MODULE_1__[\"isAnyConcatSpec\"])(spec)) {\n        return new _concat__WEBPACK_IMPORTED_MODULE_2__[\"ConcatModel\"](spec, parent, parentGivenName, config);\n    }\n    throw new Error(_log__WEBPACK_IMPORTED_MODULE_0__[\"message\"].invalidSpec(spec));\n}\n//# sourceMappingURL=buildmodel.js.map//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvdmVnYS1saXRlL2J1aWxkL3NyYy9jb21waWxlL2J1aWxkbW9kZWwuanMuanMiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvdmVnYS1saXRlL2J1aWxkL3NyYy9jb21waWxlL2J1aWxkbW9kZWwuanM/Y2YzMSJdLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgKiBhcyBsb2cgZnJvbSAnLi4vbG9nJztcbmltcG9ydCB7IGlzQW55Q29uY2F0U3BlYywgaXNGYWNldFNwZWMsIGlzTGF5ZXJTcGVjLCBpc1VuaXRTcGVjIH0gZnJvbSAnLi4vc3BlYyc7XG5pbXBvcnQgeyBDb25jYXRNb2RlbCB9IGZyb20gJy4vY29uY2F0JztcbmltcG9ydCB7IEZhY2V0TW9kZWwgfSBmcm9tICcuL2ZhY2V0JztcbmltcG9ydCB7IExheWVyTW9kZWwgfSBmcm9tICcuL2xheWVyJztcbmltcG9ydCB7IFVuaXRNb2RlbCB9IGZyb20gJy4vdW5pdCc7XG5leHBvcnQgZnVuY3Rpb24gYnVpbGRNb2RlbChzcGVjLCBwYXJlbnQsIHBhcmVudEdpdmVuTmFtZSwgdW5pdFNpemUsIGNvbmZpZykge1xuICAgIGlmIChpc0ZhY2V0U3BlYyhzcGVjKSkge1xuICAgICAgICByZXR1cm4gbmV3IEZhY2V0TW9kZWwoc3BlYywgcGFyZW50LCBwYXJlbnRHaXZlbk5hbWUsIGNvbmZpZyk7XG4gICAgfVxuICAgIGVsc2UgaWYgKGlzTGF5ZXJTcGVjKHNwZWMpKSB7XG4gICAgICAgIHJldHVybiBuZXcgTGF5ZXJNb2RlbChzcGVjLCBwYXJlbnQsIHBhcmVudEdpdmVuTmFtZSwgdW5pdFNpemUsIGNvbmZpZyk7XG4gICAgfVxuICAgIGVsc2UgaWYgKGlzVW5pdFNwZWMoc3BlYykpIHtcbiAgICAgICAgcmV0dXJuIG5ldyBVbml0TW9kZWwoc3BlYywgcGFyZW50LCBwYXJlbnRHaXZlbk5hbWUsIHVuaXRTaXplLCBjb25maWcpO1xuICAgIH1cbiAgICBlbHNlIGlmIChpc0FueUNvbmNhdFNwZWMoc3BlYykpIHtcbiAgICAgICAgcmV0dXJuIG5ldyBDb25jYXRNb2RlbChzcGVjLCBwYXJlbnQsIHBhcmVudEdpdmVuTmFtZSwgY29uZmlnKTtcbiAgICB9XG4gICAgdGhyb3cgbmV3IEVycm9yKGxvZy5tZXNzYWdlLmludmFsaWRTcGVjKHNwZWMpKTtcbn1cbi8vIyBzb3VyY2VNYXBwaW5nVVJMPWJ1aWxkbW9kZWwuanMubWFwIl0sIm1hcHBpbmdzIjoiQUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EiLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///./node_modules/vega-lite/build/src/compile/buildmodel.js\n");

/***/ }),

/***/ "./node_modules/vega-lite/build/src/compile/common.js":
/*!************************************************************!*\
  !*** ./node_modules/vega-lite/build/src/compile/common.js ***!
  \************************************************************/
/*! exports provided: BIN_RANGE_DELIMITER, signalOrValueRefWithCondition, signalRefOrValue, conditionalSignalRefOrValue, signalOrValueRef, exprFromValueOrSignalRef, signalOrStringValue, applyMarkConfig, getStyles, getMarkPropOrConfig, getMarkConfig, getMarkStyleConfig, getStyleConfig, sortParams, mergeTitleFieldDefs, mergeTitle, mergeTitleComponent */
/***/ (function(module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"BIN_RANGE_DELIMITER\", function() { return BIN_RANGE_DELIMITER; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"signalOrValueRefWithCondition\", function() { return signalOrValueRefWithCondition; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"signalRefOrValue\", function() { return signalRefOrValue; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"conditionalSignalRefOrValue\", function() { return conditionalSignalRefOrValue; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"signalOrValueRef\", function() { return signalOrValueRef; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"exprFromValueOrSignalRef\", function() { return exprFromValueOrSignalRef; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"signalOrStringValue\", function() { return signalOrStringValue; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"applyMarkConfig\", function() { return applyMarkConfig; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"getStyles\", function() { return getStyles; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"getMarkPropOrConfig\", function() { return getMarkPropOrConfig; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"getMarkConfig\", function() { return getMarkConfig; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"getMarkStyleConfig\", function() { return getMarkStyleConfig; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"getStyleConfig\", function() { return getStyleConfig; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"sortParams\", function() { return sortParams; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"mergeTitleFieldDefs\", function() { return mergeTitleFieldDefs; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"mergeTitle\", function() { return mergeTitle; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"mergeTitleComponent\", function() { return mergeTitleComponent; });\n/* harmony import */ var vega_util__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! vega-util */ \"./node_modules/vega-lite/node_modules/vega-util/build/vega-util.module.js\");\n/* harmony import */ var _channeldef__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../channeldef */ \"./node_modules/vega-lite/build/src/channeldef.js\");\n/* harmony import */ var _expr__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ../expr */ \"./node_modules/vega-lite/build/src/expr.js\");\n/* harmony import */ var _title__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ../title */ \"./node_modules/vega-lite/build/src/title.js\");\n/* harmony import */ var _util__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ../util */ \"./node_modules/vega-lite/build/src/util.js\");\n/* harmony import */ var _vega_schema__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! ../vega.schema */ \"./node_modules/vega-lite/build/src/vega.schema.js\");\nvar __rest = (undefined && undefined.__rest) || function (s, e) {\n    var t = {};\n    for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0)\n        t[p] = s[p];\n    if (s != null && typeof Object.getOwnPropertySymbols === \"function\")\n        for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) {\n            if (e.indexOf(p[i]) < 0 && Object.prototype.propertyIsEnumerable.call(s, p[i]))\n                t[p[i]] = s[p[i]];\n        }\n    return t;\n};\n\n\n\n\n\n\nconst BIN_RANGE_DELIMITER = ' \\u2013 ';\nfunction signalOrValueRefWithCondition(val) {\n    const condition = Object(vega_util__WEBPACK_IMPORTED_MODULE_0__[\"isArray\"])(val.condition)\n        ? val.condition.map(conditionalSignalRefOrValue)\n        : conditionalSignalRefOrValue(val.condition);\n    return Object.assign(Object.assign({}, signalRefOrValue(val)), { condition });\n}\nfunction signalRefOrValue(value) {\n    if (Object(_expr__WEBPACK_IMPORTED_MODULE_2__[\"isExprRef\"])(value)) {\n        const { expr } = value, rest = __rest(value, [\"expr\"]);\n        return Object.assign({ signal: expr }, rest);\n    }\n    return value;\n}\nfunction conditionalSignalRefOrValue(value) {\n    if (Object(_expr__WEBPACK_IMPORTED_MODULE_2__[\"isExprRef\"])(value)) {\n        const { expr } = value, rest = __rest(value, [\"expr\"]);\n        return Object.assign({ signal: expr }, rest);\n    }\n    return value;\n}\nfunction signalOrValueRef(value) {\n    if (Object(_expr__WEBPACK_IMPORTED_MODULE_2__[\"isExprRef\"])(value)) {\n        const { expr } = value, rest = __rest(value, [\"expr\"]);\n        return Object.assign({ signal: expr }, rest);\n    }\n    if (Object(_vega_schema__WEBPACK_IMPORTED_MODULE_5__[\"isSignalRef\"])(value)) {\n        return value;\n    }\n    return value !== undefined ? { value } : undefined;\n}\nfunction exprFromValueOrSignalRef(ref) {\n    if (Object(_vega_schema__WEBPACK_IMPORTED_MODULE_5__[\"isSignalRef\"])(ref)) {\n        return ref.signal;\n    }\n    return Object(vega_util__WEBPACK_IMPORTED_MODULE_0__[\"stringValue\"])(ref.value);\n}\nfunction signalOrStringValue(v) {\n    if (Object(_vega_schema__WEBPACK_IMPORTED_MODULE_5__[\"isSignalRef\"])(v)) {\n        return v.signal;\n    }\n    return v == null ? null : Object(vega_util__WEBPACK_IMPORTED_MODULE_0__[\"stringValue\"])(v);\n}\nfunction applyMarkConfig(e, model, propsList) {\n    for (const property of propsList) {\n        const value = getMarkConfig(property, model.markDef, model.config);\n        if (value !== undefined) {\n            e[property] = signalOrValueRef(value);\n        }\n    }\n    return e;\n}\nfunction getStyles(mark) {\n    var _a;\n    return [].concat(mark.type, (_a = mark.style) !== null && _a !== void 0 ? _a : []);\n}\nfunction getMarkPropOrConfig(channel, mark, config, opt = {}) {\n    const { vgChannel, ignoreVgConfig } = opt;\n    if (vgChannel && mark[vgChannel] !== undefined) {\n        return mark[vgChannel];\n    }\n    else if (mark[channel] !== undefined) {\n        return mark[channel];\n    }\n    else if (ignoreVgConfig && (!vgChannel || vgChannel === channel)) {\n        return undefined;\n    }\n    return getMarkConfig(channel, mark, config, opt);\n}\n/**\n * Return property value from style or mark specific config property if exists.\n * Otherwise, return general mark specific config.\n */\nfunction getMarkConfig(channel, mark, config, { vgChannel } = {}) {\n    return Object(_util__WEBPACK_IMPORTED_MODULE_4__[\"getFirstDefined\"])(\n    // style config has highest precedence\n    vgChannel ? getMarkStyleConfig(channel, mark, config.style) : undefined, getMarkStyleConfig(channel, mark, config.style), \n    // then mark-specific config\n    vgChannel ? config[mark.type][vgChannel] : undefined, config[mark.type][channel], // Need to cast because MarkDef doesn't perfectly match with AnyMarkConfig, but if the type isn't available, we'll get nothing here, which is fine\n    // If there is vgChannel, skip vl channel.\n    // For example, vl size for text is vg fontSize, but config.mark.size is only for point size.\n    vgChannel ? config.mark[vgChannel] : config.mark[channel] // Need to cast for the same reason as above\n    );\n}\nfunction getMarkStyleConfig(prop, mark, styleConfigIndex) {\n    return getStyleConfig(prop, getStyles(mark), styleConfigIndex);\n}\nfunction getStyleConfig(p, styles, styleConfigIndex) {\n    styles = Object(vega_util__WEBPACK_IMPORTED_MODULE_0__[\"array\"])(styles);\n    let value;\n    for (const style of styles) {\n        const styleConfig = styleConfigIndex[style];\n        if (styleConfig && styleConfig[p] !== undefined) {\n            value = styleConfig[p];\n        }\n    }\n    return value;\n}\n/**\n * Return Vega sort parameters (tuple of field and order).\n */\nfunction sortParams(orderDef, fieldRefOption) {\n    return Object(vega_util__WEBPACK_IMPORTED_MODULE_0__[\"array\"])(orderDef).reduce((s, orderChannelDef) => {\n        var _a;\n        s.field.push(Object(_channeldef__WEBPACK_IMPORTED_MODULE_1__[\"vgField\"])(orderChannelDef, fieldRefOption));\n        s.order.push((_a = orderChannelDef.sort) !== null && _a !== void 0 ? _a : 'ascending');\n        return s;\n    }, { field: [], order: [] });\n}\nfunction mergeTitleFieldDefs(f1, f2) {\n    const merged = [...f1];\n    f2.forEach(fdToMerge => {\n        for (const fieldDef1 of merged) {\n            // If already exists, no need to append to merged array\n            if (Object(_util__WEBPACK_IMPORTED_MODULE_4__[\"deepEqual\"])(fieldDef1, fdToMerge)) {\n                return;\n            }\n        }\n        merged.push(fdToMerge);\n    });\n    return merged;\n}\nfunction mergeTitle(title1, title2) {\n    if (Object(_util__WEBPACK_IMPORTED_MODULE_4__[\"deepEqual\"])(title1, title2) || !title2) {\n        // if titles are the same or title2 is falsy\n        return title1;\n    }\n    else if (!title1) {\n        // if title1 is falsy\n        return title2;\n    }\n    else {\n        return [...Object(vega_util__WEBPACK_IMPORTED_MODULE_0__[\"array\"])(title1), ...Object(vega_util__WEBPACK_IMPORTED_MODULE_0__[\"array\"])(title2)].join(', ');\n    }\n}\nfunction mergeTitleComponent(v1, v2) {\n    const v1Val = v1.value;\n    const v2Val = v2.value;\n    if (v1Val == null || v2Val === null) {\n        return {\n            explicit: v1.explicit,\n            value: null\n        };\n    }\n    else if ((Object(_title__WEBPACK_IMPORTED_MODULE_3__[\"isText\"])(v1Val) || Object(_vega_schema__WEBPACK_IMPORTED_MODULE_5__[\"isSignalRef\"])(v1Val)) && (Object(_title__WEBPACK_IMPORTED_MODULE_3__[\"isText\"])(v2Val) || Object(_vega_schema__WEBPACK_IMPORTED_MODULE_5__[\"isSignalRef\"])(v2Val))) {\n        return {\n            explicit: v1.explicit,\n            value: mergeTitle(v1Val, v2Val)\n        };\n    }\n    else if (Object(_title__WEBPACK_IMPORTED_MODULE_3__[\"isText\"])(v1Val) || Object(_vega_schema__WEBPACK_IMPORTED_MODULE_5__[\"isSignalRef\"])(v1Val)) {\n        return {\n            explicit: v1.explicit,\n            value: v1Val\n        };\n    }\n    else if (Object(_title__WEBPACK_IMPORTED_MODULE_3__[\"isText\"])(v2Val) || Object(_vega_schema__WEBPACK_IMPORTED_MODULE_5__[\"isSignalRef\"])(v2Val)) {\n        return {\n            explicit: v1.explicit,\n            value: v2Val\n        };\n    }\n    else if (!Object(_title__WEBPACK_IMPORTED_MODULE_3__[\"isText\"])(v1Val) && !Object(_vega_schema__WEBPACK_IMPORTED_MODULE_5__[\"isSignalRef\"])(v1Val) && !Object(_title__WEBPACK_IMPORTED_MODULE_3__[\"isText\"])(v2Val) && !Object(_vega_schema__WEBPACK_IMPORTED_MODULE_5__[\"isSignalRef\"])(v2Val)) {\n        return {\n            explicit: v1.explicit,\n            value: mergeTitleFieldDefs(v1Val, v2Val)\n        };\n    }\n    /* istanbul ignore next: Condition should not happen -- only for warning in development. */\n    throw new Error('It should never reach here');\n}\n//# sourceMappingURL=common.js.map//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,[encoded data, 10876 characters]\n//# sourceURL=webpack-internal:///./node_modules/vega-lite/build/src/compile/common.js\n");

/***/ }),

/***/ "./node_modules/vega-lite/build/src/compile/compile.js":
/*!*************************************************************!*\
  !*** ./node_modules/vega-lite/build/src/compile/compile.js ***!
  \*************************************************************/
/*! exports provided: compile */
/***/ (function(module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"compile\", function() { return compile; });\n/* harmony import */ var vega_util__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! vega-util */ \"./node_modules/vega-lite/node_modules/vega-util/build/vega-util.module.js\");\n/* harmony import */ var _channel__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../channel */ \"./node_modules/vega-lite/build/src/channel.js\");\n/* harmony import */ var _channeldef__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ../channeldef */ \"./node_modules/vega-lite/build/src/channeldef.js\");\n/* harmony import */ var _config__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ../config */ \"./node_modules/vega-lite/build/src/config.js\");\n/* harmony import */ var _log__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ../log */ \"./node_modules/vega-lite/build/src/log/index.js\");\n/* harmony import */ var _normalize__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! ../normalize */ \"./node_modules/vega-lite/build/src/normalize/index.js\");\n/* harmony import */ var _parameter__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! ../parameter */ \"./node_modules/vega-lite/build/src/parameter.js\");\n/* harmony import */ var _spec_toplevel__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! ../spec/toplevel */ \"./node_modules/vega-lite/build/src/spec/toplevel.js\");\n/* harmony import */ var _util__WEBPACK_IMPORTED_MODULE_8__ = __webpack_require__(/*! ../util */ \"./node_modules/vega-lite/build/src/util.js\");\n/* harmony import */ var _buildmodel__WEBPACK_IMPORTED_MODULE_9__ = __webpack_require__(/*! ./buildmodel */ \"./node_modules/vega-lite/build/src/compile/buildmodel.js\");\n/* harmony import */ var _data_assemble__WEBPACK_IMPORTED_MODULE_10__ = __webpack_require__(/*! ./data/assemble */ \"./node_modules/vega-lite/build/src/compile/data/assemble.js\");\n/* harmony import */ var _data_optimize__WEBPACK_IMPORTED_MODULE_11__ = __webpack_require__(/*! ./data/optimize */ \"./node_modules/vega-lite/build/src/compile/data/optimize.js\");\nvar __rest = (undefined && undefined.__rest) || function (s, e) {\n    var t = {};\n    for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0)\n        t[p] = s[p];\n    if (s != null && typeof Object.getOwnPropertySymbols === \"function\")\n        for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) {\n            if (e.indexOf(p[i]) < 0 && Object.prototype.propertyIsEnumerable.call(s, p[i]))\n                t[p[i]] = s[p[i]];\n        }\n    return t;\n};\n\n\n\n\n\n\n\n\n\n\n\n\n/**\n * Vega-Lite's main function, for compiling Vega-Lite spec into Vega spec.\n *\n * At a high-level, we make the following transformations in different phases:\n *\n * Input spec\n *     |\n *     |  (Normalization)\n *     v\n * Normalized Spec (Row/Column channels in single-view specs becomes faceted specs, composite marks becomes layered specs.)\n *     |\n *     |  (Build Model)\n *     v\n * A model tree of the spec\n *     |\n *     |  (Parse)\n *     v\n * A model tree with parsed components (intermediate structure of visualization primitives in a format that can be easily merged)\n *     |\n *     | (Optimize)\n *     v\n * A model tree with parsed components with the data component optimized\n *     |\n *     | (Assemble)\n *     v\n * Vega spec\n *\n * @param inputSpec The Vega-Lite specification.\n * @param opt       Optional arguments passed to the Vega-Lite compiler.\n * @returns         An object containing the compiled Vega spec and normalized Vega-Lite spec.\n */\nfunction compile(inputSpec, opt = {}) {\n    // 0. Augment opt with default opts\n    if (opt.logger) {\n        // set the singleton logger to the provided logger\n        _log__WEBPACK_IMPORTED_MODULE_4__[\"set\"](opt.logger);\n    }\n    if (opt.fieldTitle) {\n        // set the singleton field title formatter\n        _channeldef__WEBPACK_IMPORTED_MODULE_2__[\"setTitleFormatter\"](opt.fieldTitle);\n    }\n    try {\n        // 1. Initialize config by deep merging default config with the config provided via option and the input spec.\n        const config = Object(_config__WEBPACK_IMPORTED_MODULE_3__[\"initConfig\"])(Object(vega_util__WEBPACK_IMPORTED_MODULE_0__[\"mergeConfig\"])(opt.config, inputSpec.config));\n        // 2. Normalize: Convert input spec -> normalized spec\n        // - Decompose all extended unit specs into composition of unit spec. For example, a box plot get expanded into multiple layers of bars, ticks, and rules. The shorthand row/column channel is also expanded to a facet spec.\n        // - Normalize autosize and width or height spec\n        const spec = Object(_normalize__WEBPACK_IMPORTED_MODULE_5__[\"normalize\"])(inputSpec, config);\n        // 3. Build Model: normalized spec -> Model (a tree structure)\n        // This phases instantiates the models with default config by doing a top-down traversal. This allows us to pass properties that child models derive from their parents via their constructors.\n        // See the abstract `Model` class and its children (UnitModel, LayerModel, FacetModel, ConcatModel) for different types of models.\n        const model = Object(_buildmodel__WEBPACK_IMPORTED_MODULE_9__[\"buildModel\"])(spec, null, '', undefined, config);\n        // 4 Parse: Model --> Model with components\n        // Note that components = intermediate representations that are equivalent to Vega specs.\n        // We need these intermediate representation because we need to merge many visualization \"components\" like projections, scales, axes, and legends.\n        // We will later convert these components into actual Vega specs in the assemble phase.\n        // In this phase, we do a bottom-up traversal over the whole tree to\n        // parse for each type of components once (e.g., data, layout, mark, scale).\n        // By doing bottom-up traversal, we start parsing components of unit specs and\n        // then merge child components of parent composite specs.\n        //\n        // Please see inside model.parse() for order of different components parsed.\n        model.parse();\n        // drawDataflow(model.component.data.sources);\n        // 5. Optimize the dataflow. This will modify the data component of the model.\n        Object(_data_optimize__WEBPACK_IMPORTED_MODULE_11__[\"optimizeDataflow\"])(model.component.data, model);\n        // drawDataflow(model.component.data.sources);\n        // 6. Assemble: convert model components --> Vega Spec.\n        const vgSpec = assembleTopLevelModel(model, getTopLevelProperties(inputSpec, spec.autosize, config, model), inputSpec.datasets, inputSpec.usermeta);\n        return {\n            spec: vgSpec,\n            normalized: spec\n        };\n    }\n    finally {\n        // Reset the singleton logger if a logger is provided\n        if (opt.logger) {\n            _log__WEBPACK_IMPORTED_MODULE_4__[\"reset\"]();\n        }\n        // Reset the singleton field title formatter if provided\n        if (opt.fieldTitle) {\n            _channeldef__WEBPACK_IMPORTED_MODULE_2__[\"resetTitleFormatter\"]();\n        }\n    }\n}\nfunction getTopLevelProperties(inputSpec, autosize, config, model) {\n    const width = model.component.layoutSize.get('width');\n    const height = model.component.layoutSize.get('height');\n    if (autosize === undefined) {\n        autosize = { type: 'pad' };\n        if (model.hasAxisOrientSignalRef()) {\n            autosize.resize = true;\n        }\n    }\n    else if (Object(vega_util__WEBPACK_IMPORTED_MODULE_0__[\"isString\"])(autosize)) {\n        autosize = { type: autosize };\n    }\n    if (width && height && Object(_spec_toplevel__WEBPACK_IMPORTED_MODULE_7__[\"isFitType\"])(autosize.type)) {\n        if (width === 'step' && height === 'step') {\n            _log__WEBPACK_IMPORTED_MODULE_4__[\"warn\"](_log__WEBPACK_IMPORTED_MODULE_4__[\"message\"].droppingFit());\n            autosize.type = 'pad';\n        }\n        else if (width === 'step' || height === 'step') {\n            // effectively XOR, because else if\n            // get step dimension\n            const sizeType = width === 'step' ? 'width' : 'height';\n            // log that we're dropping fit for respective channel\n            _log__WEBPACK_IMPORTED_MODULE_4__[\"warn\"](_log__WEBPACK_IMPORTED_MODULE_4__[\"message\"].droppingFit(Object(_channel__WEBPACK_IMPORTED_MODULE_1__[\"getPositionScaleChannel\"])(sizeType)));\n            // setting type to inverse fit (so if we dropped fit-x, type is now fit-y)\n            const inverseSizeType = sizeType === 'width' ? 'height' : 'width';\n            autosize.type = Object(_spec_toplevel__WEBPACK_IMPORTED_MODULE_7__[\"getFitType\"])(inverseSizeType);\n        }\n    }\n    return Object.assign(Object.assign(Object.assign({}, (Object(_util__WEBPACK_IMPORTED_MODULE_8__[\"keys\"])(autosize).length === 1 && autosize.type\n        ? autosize.type === 'pad'\n            ? {}\n            : { autosize: autosize.type }\n        : { autosize })), Object(_spec_toplevel__WEBPACK_IMPORTED_MODULE_7__[\"extractTopLevelProperties\"])(config, false)), Object(_spec_toplevel__WEBPACK_IMPORTED_MODULE_7__[\"extractTopLevelProperties\"])(inputSpec, true));\n}\n/*\n * Assemble the top-level model to a Vega spec.\n *\n * Note: this couldn't be `model.assemble()` since the top-level model\n * needs some special treatment to generate top-level properties.\n */\nfunction assembleTopLevelModel(model, topLevelProperties, datasets = {}, usermeta) {\n    // Config with Vega-Lite only config removed.\n    const vgConfig = model.config ? Object(_config__WEBPACK_IMPORTED_MODULE_3__[\"stripAndRedirectConfig\"])(model.config) : undefined;\n    const data = [].concat(model.assembleSelectionData([]), \n    // only assemble data in the root\n    Object(_data_assemble__WEBPACK_IMPORTED_MODULE_10__[\"assembleRootData\"])(model.component.data, datasets));\n    const projections = model.assembleProjections();\n    const title = model.assembleTitle();\n    const style = model.assembleGroupStyle();\n    const encodeEntry = model.assembleGroupEncodeEntry(true);\n    let layoutSignals = model.assembleLayoutSignals();\n    // move width and height signals with values to top level\n    layoutSignals = layoutSignals.filter(signal => {\n        if ((signal.name === 'width' || signal.name === 'height') && signal.value !== undefined) {\n            topLevelProperties[signal.name] = +signal.value;\n            return false;\n        }\n        return true;\n    });\n    const { params } = topLevelProperties, otherTopLevelProps = __rest(topLevelProperties, [\"params\"]);\n    return Object.assign(Object.assign(Object.assign(Object.assign(Object.assign(Object.assign(Object.assign(Object.assign(Object.assign(Object.assign({ $schema: 'https://vega.github.io/schema/vega/v5.json' }, (model.description ? { description: model.description } : {})), otherTopLevelProps), (title ? { title } : {})), (style ? { style } : {})), (encodeEntry ? { encode: { update: encodeEntry } } : {})), { data }), (projections.length > 0 ? { projections: projections } : {})), model.assembleGroup([\n        ...layoutSignals,\n        ...model.assembleSelectionTopLevelSignals([]),\n        ...Object(_parameter__WEBPACK_IMPORTED_MODULE_6__[\"assembleParameterSignals\"])(params)\n    ])), (vgConfig ? { config: vgConfig } : {})), (usermeta ? { usermeta } : {}));\n}\n//# sourceMappingURL=compile.js.map//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,[encoded data, 13456 characters]\n//# sourceURL=webpack-internal:///./node_modules/vega-lite/build/src/compile/compile.js\n");

/***/ }),

/***/ "./node_modules/vega-lite/build/src/compile/concat.js":
/*!************************************************************!*\
  !*** ./node_modules/vega-lite/build/src/compile/concat.js ***!
  \************************************************************/
/*! exports provided: ConcatModel */
/***/ (function(module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"ConcatModel\", function() { return ConcatModel; });\n/* harmony import */ var _log__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../log */ \"./node_modules/vega-lite/build/src/log/index.js\");\n/* harmony import */ var _spec__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../spec */ \"./node_modules/vega-lite/build/src/spec/index.js\");\n/* harmony import */ var _util__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ../util */ \"./node_modules/vega-lite/build/src/util.js\");\n/* harmony import */ var _buildmodel__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ./buildmodel */ \"./node_modules/vega-lite/build/src/compile/buildmodel.js\");\n/* harmony import */ var _data_parse__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ./data/parse */ \"./node_modules/vega-lite/build/src/compile/data/parse.js\");\n/* harmony import */ var _layoutsize_assemble__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! ./layoutsize/assemble */ \"./node_modules/vega-lite/build/src/compile/layoutsize/assemble.js\");\n/* harmony import */ var _layoutsize_parse__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! ./layoutsize/parse */ \"./node_modules/vega-lite/build/src/compile/layoutsize/parse.js\");\n/* harmony import */ var _model__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! ./model */ \"./node_modules/vega-lite/build/src/compile/model.js\");\n\n\n\n\n\n\n\n\nclass ConcatModel extends _model__WEBPACK_IMPORTED_MODULE_7__[\"Model\"] {\n    constructor(spec, parent, parentGivenName, config) {\n        var _a, _b, _c, _d;\n        super(spec, 'concat', parent, parentGivenName, config, spec.resolve);\n        if (((_b = (_a = spec.resolve) === null || _a === void 0 ? void 0 : _a.axis) === null || _b === void 0 ? void 0 : _b.x) === 'shared' || ((_d = (_c = spec.resolve) === null || _c === void 0 ? void 0 : _c.axis) === null || _d === void 0 ? void 0 : _d.y) === 'shared') {\n            _log__WEBPACK_IMPORTED_MODULE_0__[\"warn\"](_log__WEBPACK_IMPORTED_MODULE_0__[\"message\"].CONCAT_CANNOT_SHARE_AXIS);\n        }\n        this.children = this.getChildren(spec).map((child, i) => {\n            return Object(_buildmodel__WEBPACK_IMPORTED_MODULE_3__[\"buildModel\"])(child, this, this.getName('concat_' + i), undefined, config);\n        });\n    }\n    parseData() {\n        this.component.data = Object(_data_parse__WEBPACK_IMPORTED_MODULE_4__[\"parseData\"])(this);\n        for (const child of this.children) {\n            child.parseData();\n        }\n    }\n    parseSelections() {\n        // Merge selections up the hierarchy so that they may be referenced\n        // across unit specs. Persist their definitions within each child\n        // to assemble signals which remain within output Vega unit groups.\n        this.component.selection = {};\n        for (const child of this.children) {\n            child.parseSelections();\n            for (const key of Object(_util__WEBPACK_IMPORTED_MODULE_2__[\"keys\"])(child.component.selection)) {\n                this.component.selection[key] = child.component.selection[key];\n            }\n        }\n    }\n    parseMarkGroup() {\n        for (const child of this.children) {\n            child.parseMarkGroup();\n        }\n    }\n    parseAxesAndHeaders() {\n        for (const child of this.children) {\n            child.parseAxesAndHeaders();\n        }\n        // TODO(#2415): support shared axes\n    }\n    getChildren(spec) {\n        if (Object(_spec__WEBPACK_IMPORTED_MODULE_1__[\"isVConcatSpec\"])(spec)) {\n            return spec.vconcat;\n        }\n        else if (Object(_spec__WEBPACK_IMPORTED_MODULE_1__[\"isHConcatSpec\"])(spec)) {\n            return spec.hconcat;\n        }\n        return spec.concat;\n    }\n    parseLayoutSize() {\n        Object(_layoutsize_parse__WEBPACK_IMPORTED_MODULE_6__[\"parseConcatLayoutSize\"])(this);\n    }\n    parseAxisGroup() {\n        return null;\n    }\n    assembleSelectionTopLevelSignals(signals) {\n        return this.children.reduce((sg, child) => child.assembleSelectionTopLevelSignals(sg), signals);\n    }\n    assembleSignals() {\n        this.children.forEach(child => child.assembleSignals());\n        return [];\n    }\n    assembleLayoutSignals() {\n        const layoutSignals = Object(_layoutsize_assemble__WEBPACK_IMPORTED_MODULE_5__[\"assembleLayoutSignals\"])(this);\n        for (const child of this.children) {\n            layoutSignals.push(...child.assembleLayoutSignals());\n        }\n        return layoutSignals;\n    }\n    assembleSelectionData(data) {\n        return this.children.reduce((db, child) => child.assembleSelectionData(db), data);\n    }\n    assembleMarks() {\n        // only children have marks\n        return this.children.map(child => {\n            const title = child.assembleTitle();\n            const style = child.assembleGroupStyle();\n            const encodeEntry = child.assembleGroupEncodeEntry(false);\n            return Object.assign(Object.assign(Object.assign(Object.assign({ type: 'group', name: child.getName('group') }, (title ? { title } : {})), (style ? { style } : {})), (encodeEntry ? { encode: { update: encodeEntry } } : {})), child.assembleGroup());\n        });\n    }\n    assembleDefaultLayout() {\n        const columns = this.layout.columns;\n        return Object.assign(Object.assign({}, (columns != null ? { columns: columns } : {})), { bounds: 'full', \n            // Use align each so it can work with multiple plots with different size\n            align: 'each' });\n    }\n}\n//# sourceMappingURL=concat.js.map//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,[encoded data, 6420 characters]\n//# sourceURL=webpack-internal:///./node_modules/vega-lite/build/src/compile/concat.js\n");

/***/ }),

/***/ "./node_modules/vega-lite/build/src/compile/data/aggregate.js":
/*!********************************************************************!*\
  !*** ./node_modules/vega-lite/build/src/compile/data/aggregate.js ***!
  \********************************************************************/
/*! exports provided: AggregateNode */
/***/ (function(module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"AggregateNode\", function() { return AggregateNode; });\n/* harmony import */ var _aggregate__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../../aggregate */ \"./node_modules/vega-lite/build/src/aggregate.js\");\n/* harmony import */ var _channel__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../../channel */ \"./node_modules/vega-lite/build/src/channel.js\");\n/* harmony import */ var _channeldef__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ../../channeldef */ \"./node_modules/vega-lite/build/src/channeldef.js\");\n/* harmony import */ var _log__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ../../log */ \"./node_modules/vega-lite/build/src/log/index.js\");\n/* harmony import */ var _util__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ../../util */ \"./node_modules/vega-lite/build/src/util.js\");\n/* harmony import */ var _model__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! ../model */ \"./node_modules/vega-lite/build/src/compile/model.js\");\n/* harmony import */ var _dataflow__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! ./dataflow */ \"./node_modules/vega-lite/build/src/compile/data/dataflow.js\");\n\n\n\n\n\n\n\nfunction addDimension(dims, channel, fieldDef, model) {\n    const channelDef2 = Object(_model__WEBPACK_IMPORTED_MODULE_5__[\"isUnitModel\"])(model) ? model.encoding[Object(_channel__WEBPACK_IMPORTED_MODULE_1__[\"getSecondaryRangeChannel\"])(channel)] : undefined;\n    if (Object(_channeldef__WEBPACK_IMPORTED_MODULE_2__[\"isTypedFieldDef\"])(fieldDef) &&\n        Object(_model__WEBPACK_IMPORTED_MODULE_5__[\"isUnitModel\"])(model) &&\n        Object(_channeldef__WEBPACK_IMPORTED_MODULE_2__[\"hasBand\"])(channel, fieldDef, channelDef2, model.stack, model.markDef, model.config)) {\n        dims.add(Object(_channeldef__WEBPACK_IMPORTED_MODULE_2__[\"vgField\"])(fieldDef, {}));\n        dims.add(Object(_channeldef__WEBPACK_IMPORTED_MODULE_2__[\"vgField\"])(fieldDef, { suffix: 'end' }));\n        if (fieldDef.bin && Object(_channeldef__WEBPACK_IMPORTED_MODULE_2__[\"binRequiresRange\"])(fieldDef, channel)) {\n            dims.add(Object(_channeldef__WEBPACK_IMPORTED_MODULE_2__[\"vgField\"])(fieldDef, { binSuffix: 'range' }));\n        }\n    }\n    else if (Object(_channel__WEBPACK_IMPORTED_MODULE_1__[\"isGeoPositionChannel\"])(channel)) {\n        const posChannel = Object(_channel__WEBPACK_IMPORTED_MODULE_1__[\"getPositionChannelFromLatLong\"])(channel);\n        dims.add(model.getName(posChannel));\n    }\n    else {\n        dims.add(Object(_channeldef__WEBPACK_IMPORTED_MODULE_2__[\"vgField\"])(fieldDef));\n    }\n    return dims;\n}\nfunction mergeMeasures(parentMeasures, childMeasures) {\n    var _a;\n    for (const field of Object(_util__WEBPACK_IMPORTED_MODULE_4__[\"keys\"])(childMeasures)) {\n        // when we merge a measure, we either have to add an aggregation operator or even a new field\n        const ops = childMeasures[field];\n        for (const op of Object(_util__WEBPACK_IMPORTED_MODULE_4__[\"keys\"])(ops)) {\n            if (field in parentMeasures) {\n                // add operator to existing measure field\n                parentMeasures[field][op] = new Set([...((_a = parentMeasures[field][op]) !== null && _a !== void 0 ? _a : []), ...ops[op]]);\n            }\n            else {\n                parentMeasures[field] = { [op]: ops[op] };\n            }\n        }\n    }\n}\nclass AggregateNode extends _dataflow__WEBPACK_IMPORTED_MODULE_6__[\"DataFlowNode\"] {\n    /**\n     * @param dimensions string set for dimensions\n     * @param measures dictionary mapping field name => dict of aggregation functions and names to use\n     */\n    constructor(parent, dimensions, measures) {\n        super(parent);\n        this.dimensions = dimensions;\n        this.measures = measures;\n    }\n    clone() {\n        return new AggregateNode(null, new Set(this.dimensions), Object(_util__WEBPACK_IMPORTED_MODULE_4__[\"duplicate\"])(this.measures));\n    }\n    get groupBy() {\n        return this.dimensions;\n    }\n    static makeFromEncoding(parent, model) {\n        let isAggregate = false;\n        model.forEachFieldDef(fd => {\n            if (fd.aggregate) {\n                isAggregate = true;\n            }\n        });\n        const meas = {};\n        const dims = new Set();\n        if (!isAggregate) {\n            // no need to create this node if the model has no aggregation\n            return null;\n        }\n        model.forEachFieldDef((fieldDef, channel) => {\n            var _a, _b, _c, _d;\n            const { aggregate, field } = fieldDef;\n            if (aggregate) {\n                if (aggregate === 'count') {\n                    meas['*'] = (_a = meas['*']) !== null && _a !== void 0 ? _a : {};\n                    meas['*']['count'] = new Set([Object(_channeldef__WEBPACK_IMPORTED_MODULE_2__[\"vgField\"])(fieldDef, { forAs: true })]);\n                }\n                else {\n                    if (Object(_aggregate__WEBPACK_IMPORTED_MODULE_0__[\"isArgminDef\"])(aggregate) || Object(_aggregate__WEBPACK_IMPORTED_MODULE_0__[\"isArgmaxDef\"])(aggregate)) {\n                        const op = Object(_aggregate__WEBPACK_IMPORTED_MODULE_0__[\"isArgminDef\"])(aggregate) ? 'argmin' : 'argmax';\n                        const argField = aggregate[op];\n                        meas[argField] = (_b = meas[argField]) !== null && _b !== void 0 ? _b : {};\n                        meas[argField][op] = new Set([Object(_channeldef__WEBPACK_IMPORTED_MODULE_2__[\"vgField\"])({ op, field: argField }, { forAs: true })]);\n                    }\n                    else {\n                        meas[field] = (_c = meas[field]) !== null && _c !== void 0 ? _c : {};\n                        meas[field][aggregate] = new Set([Object(_channeldef__WEBPACK_IMPORTED_MODULE_2__[\"vgField\"])(fieldDef, { forAs: true })]);\n                    }\n                    // For scale channel with domain === 'unaggregated', add min/max so we can use their union as unaggregated domain\n                    if (Object(_channel__WEBPACK_IMPORTED_MODULE_1__[\"isScaleChannel\"])(channel) && model.scaleDomain(channel) === 'unaggregated') {\n                        meas[field] = (_d = meas[field]) !== null && _d !== void 0 ? _d : {};\n                        meas[field]['min'] = new Set([Object(_channeldef__WEBPACK_IMPORTED_MODULE_2__[\"vgField\"])({ field, aggregate: 'min' }, { forAs: true })]);\n                        meas[field]['max'] = new Set([Object(_channeldef__WEBPACK_IMPORTED_MODULE_2__[\"vgField\"])({ field, aggregate: 'max' }, { forAs: true })]);\n                    }\n                }\n            }\n            else {\n                addDimension(dims, channel, fieldDef, model);\n            }\n        });\n        if (dims.size + Object(_util__WEBPACK_IMPORTED_MODULE_4__[\"keys\"])(meas).length === 0) {\n            return null;\n        }\n        return new AggregateNode(parent, dims, meas);\n    }\n    static makeFromTransform(parent, t) {\n        var _a, _b, _c;\n        const dims = new Set();\n        const meas = {};\n        for (const s of t.aggregate) {\n            const { op, field, as } = s;\n            if (op) {\n                if (op === 'count') {\n                    meas['*'] = (_a = meas['*']) !== null && _a !== void 0 ? _a : {};\n                    meas['*']['count'] = new Set([as ? as : Object(_channeldef__WEBPACK_IMPORTED_MODULE_2__[\"vgField\"])(s, { forAs: true })]);\n                }\n                else {\n                    meas[field] = (_b = meas[field]) !== null && _b !== void 0 ? _b : {};\n                    meas[field][op] = new Set([as ? as : Object(_channeldef__WEBPACK_IMPORTED_MODULE_2__[\"vgField\"])(s, { forAs: true })]);\n                }\n            }\n        }\n        for (const s of (_c = t.groupby) !== null && _c !== void 0 ? _c : []) {\n            dims.add(s);\n        }\n        if (dims.size + Object(_util__WEBPACK_IMPORTED_MODULE_4__[\"keys\"])(meas).length === 0) {\n            return null;\n        }\n        return new AggregateNode(parent, dims, meas);\n    }\n    merge(other) {\n        if (Object(_util__WEBPACK_IMPORTED_MODULE_4__[\"setEqual\"])(this.dimensions, other.dimensions)) {\n            mergeMeasures(this.measures, other.measures);\n            return true;\n        }\n        else {\n            _log__WEBPACK_IMPORTED_MODULE_3__[\"debug\"]('different dimensions, cannot merge');\n            return false;\n        }\n    }\n    addDimensions(fields) {\n        fields.forEach(this.dimensions.add, this.dimensions);\n    }\n    dependentFields() {\n        return new Set([...this.dimensions, ...Object(_util__WEBPACK_IMPORTED_MODULE_4__[\"keys\"])(this.measures)]);\n    }\n    producedFields() {\n        const out = new Set();\n        for (const field of Object(_util__WEBPACK_IMPORTED_MODULE_4__[\"keys\"])(this.measures)) {\n            for (const op of Object(_util__WEBPACK_IMPORTED_MODULE_4__[\"keys\"])(this.measures[field])) {\n                const m = this.measures[field][op];\n                if (m.size === 0) {\n                    out.add(`${op}_${field}`);\n                }\n                else {\n                    m.forEach(out.add, out);\n                }\n            }\n        }\n        return out;\n    }\n    hash() {\n        return `Aggregate ${Object(_util__WEBPACK_IMPORTED_MODULE_4__[\"hash\"])({ dimensions: this.dimensions, measures: this.measures })}`;\n    }\n    assemble() {\n        const ops = [];\n        const fields = [];\n        const as = [];\n        for (const field of Object(_util__WEBPACK_IMPORTED_MODULE_4__[\"keys\"])(this.measures)) {\n            for (const op of Object(_util__WEBPACK_IMPORTED_MODULE_4__[\"keys\"])(this.measures[field])) {\n                for (const alias of this.measures[field][op]) {\n                    as.push(alias);\n                    ops.push(op);\n                    fields.push(field === '*' ? null : Object(_util__WEBPACK_IMPORTED_MODULE_4__[\"replacePathInField\"])(field));\n                }\n            }\n        }\n        const result = {\n            type: 'aggregate',\n            groupby: [...this.dimensions].map(_util__WEBPACK_IMPORTED_MODULE_4__[\"replacePathInField\"]),\n            ops,\n            fields,\n            as\n        };\n        return result;\n    }\n}\n//# sourceMappingURL=aggregate.js.map//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,[encoded data, 12000 characters]\n//# sourceURL=webpack-internal:///./node_modules/vega-lite/build/src/compile/data/aggregate.js\n");

/***/ }),

/***/ "./node_modules/vega-lite/build/src/compile/data/assemble.js":
/*!*******************************************************************!*\
  !*** ./node_modules/vega-lite/build/src/compile/data/assemble.js ***!
  \*******************************************************************/
/*! exports provided: assembleFacetData, assembleRootData */
/***/ (function(module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"assembleFacetData\", function() { return assembleFacetData; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"assembleRootData\", function() { return assembleRootData; });\n/* harmony import */ var _data__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../../data */ \"./node_modules/vega-lite/build/src/data.js\");\n/* harmony import */ var _aggregate__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./aggregate */ \"./node_modules/vega-lite/build/src/compile/data/aggregate.js\");\n/* harmony import */ var _bin__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./bin */ \"./node_modules/vega-lite/build/src/compile/data/bin.js\");\n/* harmony import */ var _calculate__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ./calculate */ \"./node_modules/vega-lite/build/src/compile/data/calculate.js\");\n/* harmony import */ var _dataflow__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ./dataflow */ \"./node_modules/vega-lite/build/src/compile/data/dataflow.js\");\n/* harmony import */ var _density__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! ./density */ \"./node_modules/vega-lite/build/src/compile/data/density.js\");\n/* harmony import */ var _facet__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! ./facet */ \"./node_modules/vega-lite/build/src/compile/data/facet.js\");\n/* harmony import */ var _filter__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! ./filter */ \"./node_modules/vega-lite/build/src/compile/data/filter.js\");\n/* harmony import */ var _filterinvalid__WEBPACK_IMPORTED_MODULE_8__ = __webpack_require__(/*! ./filterinvalid */ \"./node_modules/vega-lite/build/src/compile/data/filterinvalid.js\");\n/* harmony import */ var _flatten__WEBPACK_IMPORTED_MODULE_9__ = __webpack_require__(/*! ./flatten */ \"./node_modules/vega-lite/build/src/compile/data/flatten.js\");\n/* harmony import */ var _fold__WEBPACK_IMPORTED_MODULE_10__ = __webpack_require__(/*! ./fold */ \"./node_modules/vega-lite/build/src/compile/data/fold.js\");\n/* harmony import */ var _formatparse__WEBPACK_IMPORTED_MODULE_11__ = __webpack_require__(/*! ./formatparse */ \"./node_modules/vega-lite/build/src/compile/data/formatparse.js\");\n/* harmony import */ var _geojson__WEBPACK_IMPORTED_MODULE_12__ = __webpack_require__(/*! ./geojson */ \"./node_modules/vega-lite/build/src/compile/data/geojson.js\");\n/* harmony import */ var _geopoint__WEBPACK_IMPORTED_MODULE_13__ = __webpack_require__(/*! ./geopoint */ \"./node_modules/vega-lite/build/src/compile/data/geopoint.js\");\n/* harmony import */ var _graticule__WEBPACK_IMPORTED_MODULE_14__ = __webpack_require__(/*! ./graticule */ \"./node_modules/vega-lite/build/src/compile/data/graticule.js\");\n/* harmony import */ var _identifier__WEBPACK_IMPORTED_MODULE_15__ = __webpack_require__(/*! ./identifier */ \"./node_modules/vega-lite/build/src/compile/data/identifier.js\");\n/* harmony import */ var _impute__WEBPACK_IMPORTED_MODULE_16__ = __webpack_require__(/*! ./impute */ \"./node_modules/vega-lite/build/src/compile/data/impute.js\");\n/* harmony import */ var _joinaggregate__WEBPACK_IMPORTED_MODULE_17__ = __webpack_require__(/*! ./joinaggregate */ \"./node_modules/vega-lite/build/src/compile/data/joinaggregate.js\");\n/* harmony import */ var _loess__WEBPACK_IMPORTED_MODULE_18__ = __webpack_require__(/*! ./loess */ \"./node_modules/vega-lite/build/src/compile/data/loess.js\");\n/* harmony import */ var _lookup__WEBPACK_IMPORTED_MODULE_19__ = __webpack_require__(/*! ./lookup */ \"./node_modules/vega-lite/build/src/compile/data/lookup.js\");\n/* harmony import */ var _quantile__WEBPACK_IMPORTED_MODULE_20__ = __webpack_require__(/*! ./quantile */ \"./node_modules/vega-lite/build/src/compile/data/quantile.js\");\n/* harmony import */ var _regression__WEBPACK_IMPORTED_MODULE_21__ = __webpack_require__(/*! ./regression */ \"./node_modules/vega-lite/build/src/compile/data/regression.js\");\n/* harmony import */ var _pivot__WEBPACK_IMPORTED_MODULE_22__ = __webpack_require__(/*! ./pivot */ \"./node_modules/vega-lite/build/src/compile/data/pivot.js\");\n/* harmony import */ var _sample__WEBPACK_IMPORTED_MODULE_23__ = __webpack_require__(/*! ./sample */ \"./node_modules/vega-lite/build/src/compile/data/sample.js\");\n/* harmony import */ var _sequence__WEBPACK_IMPORTED_MODULE_24__ = __webpack_require__(/*! ./sequence */ \"./node_modules/vega-lite/build/src/compile/data/sequence.js\");\n/* harmony import */ var _source__WEBPACK_IMPORTED_MODULE_25__ = __webpack_require__(/*! ./source */ \"./node_modules/vega-lite/build/src/compile/data/source.js\");\n/* harmony import */ var _stack__WEBPACK_IMPORTED_MODULE_26__ = __webpack_require__(/*! ./stack */ \"./node_modules/vega-lite/build/src/compile/data/stack.js\");\n/* harmony import */ var _timeunit__WEBPACK_IMPORTED_MODULE_27__ = __webpack_require__(/*! ./timeunit */ \"./node_modules/vega-lite/build/src/compile/data/timeunit.js\");\n/* harmony import */ var _window__WEBPACK_IMPORTED_MODULE_28__ = __webpack_require__(/*! ./window */ \"./node_modules/vega-lite/build/src/compile/data/window.js\");\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\nfunction makeWalkTree(data) {\n    // to name datasources\n    let datasetIndex = 0;\n    /**\n     * Recursively walk down the tree.\n     */\n    function walkTree(node, dataSource) {\n        var _a;\n        if (node instanceof _source__WEBPACK_IMPORTED_MODULE_25__[\"SourceNode\"]) {\n            // If the source is a named data source or a data source with values, we need\n            // to put it in a different data source. Otherwise, Vega may override the data.\n            if (!node.isGenerator && !Object(_data__WEBPACK_IMPORTED_MODULE_0__[\"isUrlData\"])(node.data)) {\n                data.push(dataSource);\n                const newData = {\n                    name: null,\n                    source: dataSource.name,\n                    transform: []\n                };\n                dataSource = newData;\n            }\n        }\n        if (node instanceof _formatparse__WEBPACK_IMPORTED_MODULE_11__[\"ParseNode\"]) {\n            if (node.parent instanceof _source__WEBPACK_IMPORTED_MODULE_25__[\"SourceNode\"] && !dataSource.source) {\n                // If node's parent is a root source and the data source does not refer to another data source, use normal format parse\n                dataSource.format = Object.assign(Object.assign({}, ((_a = dataSource.format) !== null && _a !== void 0 ? _a : {})), { parse: node.assembleFormatParse() });\n                // add calculates for all nested fields\n                dataSource.transform.push(...node.assembleTransforms(true));\n            }\n            else {\n                // Otherwise use Vega expression to parse\n                dataSource.transform.push(...node.assembleTransforms());\n            }\n        }\n        if (node instanceof _facet__WEBPACK_IMPORTED_MODULE_6__[\"FacetNode\"]) {\n            if (!dataSource.name) {\n                dataSource.name = `data_${datasetIndex++}`;\n            }\n            if (!dataSource.source || dataSource.transform.length > 0) {\n                data.push(dataSource);\n                node.data = dataSource.name;\n            }\n            else {\n                node.data = dataSource.source;\n            }\n            for (const d of node.assemble()) {\n                data.push(d);\n            }\n            // break here because the rest of the tree has to be taken care of by the facet.\n            return;\n        }\n        if (node instanceof _graticule__WEBPACK_IMPORTED_MODULE_14__[\"GraticuleNode\"] ||\n            node instanceof _sequence__WEBPACK_IMPORTED_MODULE_24__[\"SequenceNode\"] ||\n            node instanceof _filterinvalid__WEBPACK_IMPORTED_MODULE_8__[\"FilterInvalidNode\"] ||\n            node instanceof _filter__WEBPACK_IMPORTED_MODULE_7__[\"FilterNode\"] ||\n            node instanceof _calculate__WEBPACK_IMPORTED_MODULE_3__[\"CalculateNode\"] ||\n            node instanceof _geopoint__WEBPACK_IMPORTED_MODULE_13__[\"GeoPointNode\"] ||\n            node instanceof _geojson__WEBPACK_IMPORTED_MODULE_12__[\"GeoJSONNode\"] ||\n            node instanceof _aggregate__WEBPACK_IMPORTED_MODULE_1__[\"AggregateNode\"] ||\n            node instanceof _lookup__WEBPACK_IMPORTED_MODULE_19__[\"LookupNode\"] ||\n            node instanceof _window__WEBPACK_IMPORTED_MODULE_28__[\"WindowTransformNode\"] ||\n            node instanceof _joinaggregate__WEBPACK_IMPORTED_MODULE_17__[\"JoinAggregateTransformNode\"] ||\n            node instanceof _fold__WEBPACK_IMPORTED_MODULE_10__[\"FoldTransformNode\"] ||\n            node instanceof _flatten__WEBPACK_IMPORTED_MODULE_9__[\"FlattenTransformNode\"] ||\n            node instanceof _density__WEBPACK_IMPORTED_MODULE_5__[\"DensityTransformNode\"] ||\n            node instanceof _loess__WEBPACK_IMPORTED_MODULE_18__[\"LoessTransformNode\"] ||\n            node instanceof _quantile__WEBPACK_IMPORTED_MODULE_20__[\"QuantileTransformNode\"] ||\n            node instanceof _regression__WEBPACK_IMPORTED_MODULE_21__[\"RegressionTransformNode\"] ||\n            node instanceof _identifier__WEBPACK_IMPORTED_MODULE_15__[\"IdentifierNode\"] ||\n            node instanceof _sample__WEBPACK_IMPORTED_MODULE_23__[\"SampleTransformNode\"] ||\n            node instanceof _pivot__WEBPACK_IMPORTED_MODULE_22__[\"PivotTransformNode\"]) {\n            dataSource.transform.push(node.assemble());\n        }\n        if (node instanceof _bin__WEBPACK_IMPORTED_MODULE_2__[\"BinNode\"] ||\n            node instanceof _timeunit__WEBPACK_IMPORTED_MODULE_27__[\"TimeUnitNode\"] ||\n            node instanceof _impute__WEBPACK_IMPORTED_MODULE_16__[\"ImputeNode\"] ||\n            node instanceof _stack__WEBPACK_IMPORTED_MODULE_26__[\"StackNode\"]) {\n            dataSource.transform.push(...node.assemble());\n        }\n        if (node instanceof _dataflow__WEBPACK_IMPORTED_MODULE_4__[\"OutputNode\"]) {\n            if (dataSource.source && dataSource.transform.length === 0) {\n                node.setSource(dataSource.source);\n            }\n            else if (node.parent instanceof _dataflow__WEBPACK_IMPORTED_MODULE_4__[\"OutputNode\"]) {\n                // Note that an output node may be required but we still do not assemble a\n                // separate data source for it.\n                node.setSource(dataSource.name);\n            }\n            else {\n                if (!dataSource.name) {\n                    dataSource.name = `data_${datasetIndex++}`;\n                }\n                // Here we set the name of the datasource we generated. From now on\n                // other assemblers can use it.\n                node.setSource(dataSource.name);\n                // if this node has more than one child, we will add a datasource automatically\n                if (node.numChildren() === 1) {\n                    data.push(dataSource);\n                    const newData = {\n                        name: null,\n                        source: dataSource.name,\n                        transform: []\n                    };\n                    dataSource = newData;\n                }\n            }\n        }\n        switch (node.numChildren()) {\n            case 0:\n                // done\n                if (node instanceof _dataflow__WEBPACK_IMPORTED_MODULE_4__[\"OutputNode\"] && (!dataSource.source || dataSource.transform.length > 0)) {\n                    // do not push empty datasources that are simply references\n                    data.push(dataSource);\n                }\n                break;\n            case 1:\n                walkTree(node.children[0], dataSource);\n                break;\n            default: {\n                if (!dataSource.name) {\n                    dataSource.name = `data_${datasetIndex++}`;\n                }\n                let source = dataSource.name;\n                if (!dataSource.source || dataSource.transform.length > 0) {\n                    data.push(dataSource);\n                }\n                else {\n                    source = dataSource.source;\n                }\n                for (const child of node.children) {\n                    const newData = {\n                        name: null,\n                        source: source,\n                        transform: []\n                    };\n                    walkTree(child, newData);\n                }\n                break;\n            }\n        }\n    }\n    return walkTree;\n}\n/**\n * Assemble data sources that are derived from faceted data.\n */\nfunction assembleFacetData(root) {\n    const data = [];\n    const walkTree = makeWalkTree(data);\n    for (const child of root.children) {\n        walkTree(child, {\n            source: root.name,\n            name: null,\n            transform: []\n        });\n    }\n    return data;\n}\n/**\n * Create Vega data array from a given compiled model and append all of them to the given array\n *\n * @param  model\n * @param  data array\n * @return modified data array\n */\nfunction assembleRootData(dataComponent, datasets) {\n    var _a, _b;\n    const data = [];\n    // dataComponent.sources.forEach(debug);\n    // draw(dataComponent.sources);\n    const walkTree = makeWalkTree(data);\n    let sourceIndex = 0;\n    for (const root of dataComponent.sources) {\n        // assign a name if the source does not have a name yet\n        if (!root.hasName()) {\n            root.dataName = `source_${sourceIndex++}`;\n        }\n        const newData = root.assemble();\n        walkTree(root, newData);\n    }\n    // remove empty transform arrays for cleaner output\n    for (const d of data) {\n        if (d.transform.length === 0) {\n            delete d.transform;\n        }\n    }\n    // move sources without transforms (the ones that are potentially used in lookups) to the beginning\n    let whereTo = 0;\n    for (const [i, d] of data.entries()) {\n        if (((_a = d.transform) !== null && _a !== void 0 ? _a : []).length === 0 && !d.source) {\n            data.splice(whereTo++, 0, data.splice(i, 1)[0]);\n        }\n    }\n    // now fix the from references in lookup transforms\n    for (const d of data) {\n        for (const t of (_b = d.transform) !== null && _b !== void 0 ? _b : []) {\n            if (t.type === 'lookup') {\n                t.from = dataComponent.outputNodes[t.from].getSource();\n            }\n        }\n    }\n    // inline values for datasets that are in the datastore\n    for (const d of data) {\n        if (d.name in datasets) {\n            d.values = datasets[d.name];\n        }\n    }\n    return data;\n}\n//# sourceMappingURL=assemble.js.map//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,[encoded data, 14752 characters]\n//# sourceURL=webpack-internal:///./node_modules/vega-lite/build/src/compile/data/assemble.js\n");

/***/ }),

/***/ "./node_modules/vega-lite/build/src/compile/data/bin.js":
/*!**************************************************************!*\
  !*** ./node_modules/vega-lite/build/src/compile/data/bin.js ***!
  \**************************************************************/
/*! exports provided: getBinSignalName, BinNode */
/***/ (function(module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"getBinSignalName\", function() { return getBinSignalName; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"BinNode\", function() { return BinNode; });\n/* harmony import */ var vega_util__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! vega-util */ \"./node_modules/vega-lite/node_modules/vega-util/build/vega-util.module.js\");\n/* harmony import */ var _bin__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../../bin */ \"./node_modules/vega-lite/build/src/bin.js\");\n/* harmony import */ var _channeldef__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ../../channeldef */ \"./node_modules/vega-lite/build/src/channeldef.js\");\n/* harmony import */ var _util__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ../../util */ \"./node_modules/vega-lite/build/src/util.js\");\n/* harmony import */ var _format__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ../format */ \"./node_modules/vega-lite/build/src/compile/format.js\");\n/* harmony import */ var _model__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! ../model */ \"./node_modules/vega-lite/build/src/compile/model.js\");\n/* harmony import */ var _selection_parse__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! ../selection/parse */ \"./node_modules/vega-lite/build/src/compile/selection/parse.js\");\n/* harmony import */ var _dataflow__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! ./dataflow */ \"./node_modules/vega-lite/build/src/compile/data/dataflow.js\");\nvar __rest = (undefined && undefined.__rest) || function (s, e) {\n    var t = {};\n    for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0)\n        t[p] = s[p];\n    if (s != null && typeof Object.getOwnPropertySymbols === \"function\")\n        for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) {\n            if (e.indexOf(p[i]) < 0 && Object.prototype.propertyIsEnumerable.call(s, p[i]))\n                t[p[i]] = s[p[i]];\n        }\n    return t;\n};\n\n\n\n\n\n\n\n\nfunction rangeFormula(model, fieldDef, channel, config) {\n    var _a, _b;\n    if (Object(_channeldef__WEBPACK_IMPORTED_MODULE_2__[\"binRequiresRange\"])(fieldDef, channel)) {\n        // read format from axis or legend, if there is no format then use config.numberFormat\n        const guide = Object(_model__WEBPACK_IMPORTED_MODULE_5__[\"isUnitModel\"])(model)\n            ? (_b = (_a = model.axis(channel)) !== null && _a !== void 0 ? _a : model.legend(channel)) !== null && _b !== void 0 ? _b : {} : {};\n        const startField = Object(_channeldef__WEBPACK_IMPORTED_MODULE_2__[\"vgField\"])(fieldDef, { expr: 'datum' });\n        const endField = Object(_channeldef__WEBPACK_IMPORTED_MODULE_2__[\"vgField\"])(fieldDef, { expr: 'datum', binSuffix: 'end' });\n        return {\n            formulaAs: Object(_channeldef__WEBPACK_IMPORTED_MODULE_2__[\"vgField\"])(fieldDef, { binSuffix: 'range', forAs: true }),\n            formula: Object(_format__WEBPACK_IMPORTED_MODULE_4__[\"binFormatExpression\"])(startField, endField, guide.format, guide.formatType, config)\n        };\n    }\n    return {};\n}\nfunction binKey(bin, field) {\n    return `${Object(_bin__WEBPACK_IMPORTED_MODULE_1__[\"binToString\"])(bin)}_${field}`;\n}\nfunction getSignalsFromModel(model, key) {\n    return {\n        signal: model.getName(`${key}_bins`),\n        extentSignal: model.getName(`${key}_extent`)\n    };\n}\nfunction getBinSignalName(model, field, bin) {\n    var _a;\n    const normalizedBin = (_a = Object(_channeldef__WEBPACK_IMPORTED_MODULE_2__[\"normalizeBin\"])(bin, undefined)) !== null && _a !== void 0 ? _a : {};\n    const key = binKey(normalizedBin, field);\n    return model.getName(`${key}_bins`);\n}\nfunction isBinTransform(t) {\n    return 'as' in t;\n}\nfunction createBinComponent(t, bin, model) {\n    let as;\n    let span;\n    if (isBinTransform(t)) {\n        as = Object(vega_util__WEBPACK_IMPORTED_MODULE_0__[\"isString\"])(t.as) ? [t.as, `${t.as}_end`] : [t.as[0], t.as[1]];\n    }\n    else {\n        as = [Object(_channeldef__WEBPACK_IMPORTED_MODULE_2__[\"vgField\"])(t, { forAs: true }), Object(_channeldef__WEBPACK_IMPORTED_MODULE_2__[\"vgField\"])(t, { binSuffix: 'end', forAs: true })];\n    }\n    const normalizedBin = Object.assign({}, Object(_channeldef__WEBPACK_IMPORTED_MODULE_2__[\"normalizeBin\"])(bin, undefined));\n    const key = binKey(normalizedBin, t.field);\n    const { signal, extentSignal } = getSignalsFromModel(model, key);\n    if (Object(_bin__WEBPACK_IMPORTED_MODULE_1__[\"isSelectionExtent\"])(normalizedBin.extent)) {\n        const ext = normalizedBin.extent;\n        const selName = ext.selection;\n        span = Object(_selection_parse__WEBPACK_IMPORTED_MODULE_6__[\"parseSelectionBinExtent\"])(model.getSelectionComponent(Object(_util__WEBPACK_IMPORTED_MODULE_3__[\"varName\"])(selName), selName), ext);\n        delete normalizedBin.extent; // Vega-Lite selection extent map to Vega's span property.\n    }\n    const binComponent = Object.assign(Object.assign(Object.assign({ bin: normalizedBin, field: t.field, as: [as] }, (signal ? { signal } : {})), (extentSignal ? { extentSignal } : {})), (span ? { span } : {}));\n    return { key, binComponent };\n}\nclass BinNode extends _dataflow__WEBPACK_IMPORTED_MODULE_7__[\"DataFlowNode\"] {\n    constructor(parent, bins) {\n        super(parent);\n        this.bins = bins;\n    }\n    clone() {\n        return new BinNode(null, Object(_util__WEBPACK_IMPORTED_MODULE_3__[\"duplicate\"])(this.bins));\n    }\n    static makeFromEncoding(parent, model) {\n        const bins = model.reduceFieldDef((binComponentIndex, fieldDef, channel) => {\n            if (Object(_channeldef__WEBPACK_IMPORTED_MODULE_2__[\"isTypedFieldDef\"])(fieldDef) && Object(_bin__WEBPACK_IMPORTED_MODULE_1__[\"isBinning\"])(fieldDef.bin)) {\n                const { key, binComponent } = createBinComponent(fieldDef, fieldDef.bin, model);\n                binComponentIndex[key] = Object.assign(Object.assign(Object.assign({}, binComponent), binComponentIndex[key]), rangeFormula(model, fieldDef, channel, model.config));\n            }\n            return binComponentIndex;\n        }, {});\n        if (Object(_util__WEBPACK_IMPORTED_MODULE_3__[\"isEmpty\"])(bins)) {\n            return null;\n        }\n        return new BinNode(parent, bins);\n    }\n    /**\n     * Creates a bin node from BinTransform.\n     * The optional parameter should provide\n     */\n    static makeFromTransform(parent, t, model) {\n        const { key, binComponent } = createBinComponent(t, t.bin, model);\n        return new BinNode(parent, {\n            [key]: binComponent\n        });\n    }\n    /**\n     * Merge bin nodes. This method either integrates the bin config from the other node\n     * or if this node already has a bin config, renames the corresponding signal in the model.\n     */\n    merge(other, renameSignal) {\n        for (const key of Object(_util__WEBPACK_IMPORTED_MODULE_3__[\"keys\"])(other.bins)) {\n            if (key in this.bins) {\n                renameSignal(other.bins[key].signal, this.bins[key].signal);\n                // Ensure that we don't have duplicate names for signal pairs\n                this.bins[key].as = Object(_util__WEBPACK_IMPORTED_MODULE_3__[\"unique\"])([...this.bins[key].as, ...other.bins[key].as], _util__WEBPACK_IMPORTED_MODULE_3__[\"hash\"]);\n            }\n            else {\n                this.bins[key] = other.bins[key];\n            }\n        }\n        for (const child of other.children) {\n            other.removeChild(child);\n            child.parent = this;\n        }\n        other.remove();\n    }\n    producedFields() {\n        return new Set(Object(_util__WEBPACK_IMPORTED_MODULE_3__[\"vals\"])(this.bins)\n            .map(c => c.as)\n            .flat(2));\n    }\n    dependentFields() {\n        return new Set(Object(_util__WEBPACK_IMPORTED_MODULE_3__[\"vals\"])(this.bins).map(c => c.field));\n    }\n    hash() {\n        return `Bin ${Object(_util__WEBPACK_IMPORTED_MODULE_3__[\"hash\"])(this.bins)}`;\n    }\n    assemble() {\n        return Object(_util__WEBPACK_IMPORTED_MODULE_3__[\"vals\"])(this.bins).flatMap(bin => {\n            const transform = [];\n            const [binAs, ...remainingAs] = bin.as;\n            const _a = bin.bin, { extent } = _a, params = __rest(_a, [\"extent\"]);\n            const binTrans = Object.assign(Object.assign(Object.assign({ type: 'bin', field: Object(_util__WEBPACK_IMPORTED_MODULE_3__[\"replacePathInField\"])(bin.field), as: binAs, signal: bin.signal }, (!Object(_bin__WEBPACK_IMPORTED_MODULE_1__[\"isSelectionExtent\"])(extent) ? { extent } : { extent: null })), (bin.span ? { span: { signal: `span(${bin.span})` } } : {})), params);\n            if (!extent && bin.extentSignal) {\n                transform.push({\n                    type: 'extent',\n                    field: Object(_util__WEBPACK_IMPORTED_MODULE_3__[\"replacePathInField\"])(bin.field),\n                    signal: bin.extentSignal\n                });\n                binTrans.extent = { signal: bin.extentSignal };\n            }\n            transform.push(binTrans);\n            for (const as of remainingAs) {\n                for (let i = 0; i < 2; i++) {\n                    transform.push({\n                        type: 'formula',\n                        expr: Object(_channeldef__WEBPACK_IMPORTED_MODULE_2__[\"vgField\"])({ field: binAs[i] }, { expr: 'datum' }),\n                        as: as[i]\n                    });\n                }\n            }\n            if (bin.formula) {\n                transform.push({\n                    type: 'formula',\n                    expr: bin.formula,\n                    as: bin.formulaAs\n                });\n            }\n            return transform;\n        });\n    }\n}\n//# sourceMappingURL=bin.js.map//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,[encoded data, 11312 characters]\n//# sourceURL=webpack-internal:///./node_modules/vega-lite/build/src/compile/data/bin.js\n");

/***/ }),

/***/ "./node_modules/vega-lite/build/src/compile/data/calculate.js":
/*!********************************************************************!*\
  !*** ./node_modules/vega-lite/build/src/compile/data/calculate.js ***!
  \********************************************************************/
/*! exports provided: CalculateNode, sortArrayIndexField */
/***/ (function(module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"CalculateNode\", function() { return CalculateNode; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"sortArrayIndexField\", function() { return sortArrayIndexField; });\n/* harmony import */ var _channeldef__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../../channeldef */ \"./node_modules/vega-lite/build/src/channeldef.js\");\n/* harmony import */ var _predicate__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../../predicate */ \"./node_modules/vega-lite/build/src/predicate.js\");\n/* harmony import */ var _sort__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ../../sort */ \"./node_modules/vega-lite/build/src/sort.js\");\n/* harmony import */ var _util__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ../../util */ \"./node_modules/vega-lite/build/src/util.js\");\n/* harmony import */ var _dataflow__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ./dataflow */ \"./node_modules/vega-lite/build/src/compile/data/dataflow.js\");\n/* harmony import */ var _expressions__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! ./expressions */ \"./node_modules/vega-lite/build/src/compile/data/expressions.js\");\n\n\n\n\n\n\nclass CalculateNode extends _dataflow__WEBPACK_IMPORTED_MODULE_4__[\"DataFlowNode\"] {\n    constructor(parent, transform) {\n        super(parent);\n        this.transform = transform;\n        this._dependentFields = Object(_expressions__WEBPACK_IMPORTED_MODULE_5__[\"getDependentFields\"])(this.transform.calculate);\n    }\n    clone() {\n        return new CalculateNode(null, Object(_util__WEBPACK_IMPORTED_MODULE_3__[\"duplicate\"])(this.transform));\n    }\n    static parseAllForSortIndex(parent, model) {\n        // get all the encoding with sort fields from model\n        model.forEachFieldDef((fieldDef, channel) => {\n            if (!Object(_channeldef__WEBPACK_IMPORTED_MODULE_0__[\"isScaleFieldDef\"])(fieldDef)) {\n                return;\n            }\n            if (Object(_sort__WEBPACK_IMPORTED_MODULE_2__[\"isSortArray\"])(fieldDef.sort)) {\n                const { field, timeUnit } = fieldDef;\n                const sort = fieldDef.sort;\n                // generate `datum[\"a\"] === val0 ? 0 : datum[\"a\"] === val1 ? 1 : ... : n` via FieldEqualPredicate\n                const calculate = sort\n                    .map((sortValue, i) => {\n                    return `${Object(_predicate__WEBPACK_IMPORTED_MODULE_1__[\"fieldFilterExpression\"])({ field, timeUnit, equal: sortValue })} ? ${i} : `;\n                })\n                    .join('') + sort.length;\n                parent = new CalculateNode(parent, {\n                    calculate,\n                    as: sortArrayIndexField(fieldDef, channel, { forAs: true })\n                });\n            }\n        });\n        return parent;\n    }\n    producedFields() {\n        return new Set([this.transform.as]);\n    }\n    dependentFields() {\n        return this._dependentFields;\n    }\n    assemble() {\n        return {\n            type: 'formula',\n            expr: this.transform.calculate,\n            as: this.transform.as\n        };\n    }\n    hash() {\n        return `Calculate ${Object(_util__WEBPACK_IMPORTED_MODULE_3__[\"hash\"])(this.transform)}`;\n    }\n}\nfunction sortArrayIndexField(fieldDef, channel, opt) {\n    return Object(_channeldef__WEBPACK_IMPORTED_MODULE_0__[\"vgField\"])(fieldDef, Object.assign({ prefix: channel, suffix: 'sort_index' }, (opt !== null && opt !== void 0 ? opt : {})));\n}\n//# sourceMappingURL=calculate.js.map//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvdmVnYS1saXRlL2J1aWxkL3NyYy9jb21waWxlL2RhdGEvY2FsY3VsYXRlLmpzLmpzIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL3ZlZ2EtbGl0ZS9idWlsZC9zcmMvY29tcGlsZS9kYXRhL2NhbGN1bGF0ZS5qcz82YjhkIl0sInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IGlzU2NhbGVGaWVsZERlZiwgdmdGaWVsZCB9IGZyb20gJy4uLy4uL2NoYW5uZWxkZWYnO1xuaW1wb3J0IHsgZmllbGRGaWx0ZXJFeHByZXNzaW9uIH0gZnJvbSAnLi4vLi4vcHJlZGljYXRlJztcbmltcG9ydCB7IGlzU29ydEFycmF5IH0gZnJvbSAnLi4vLi4vc29ydCc7XG5pbXBvcnQgeyBkdXBsaWNhdGUsIGhhc2ggfSBmcm9tICcuLi8uLi91dGlsJztcbmltcG9ydCB7IERhdGFGbG93Tm9kZSB9IGZyb20gJy4vZGF0YWZsb3cnO1xuaW1wb3J0IHsgZ2V0RGVwZW5kZW50RmllbGRzIH0gZnJvbSAnLi9leHByZXNzaW9ucyc7XG5leHBvcnQgY2xhc3MgQ2FsY3VsYXRlTm9kZSBleHRlbmRzIERhdGFGbG93Tm9kZSB7XG4gICAgY29uc3RydWN0b3IocGFyZW50LCB0cmFuc2Zvcm0pIHtcbiAgICAgICAgc3VwZXIocGFyZW50KTtcbiAgICAgICAgdGhpcy50cmFuc2Zvcm0gPSB0cmFuc2Zvcm07XG4gICAgICAgIHRoaXMuX2RlcGVuZGVudEZpZWxkcyA9IGdldERlcGVuZGVudEZpZWxkcyh0aGlzLnRyYW5zZm9ybS5jYWxjdWxhdGUpO1xuICAgIH1cbiAgICBjbG9uZSgpIHtcbiAgICAgICAgcmV0dXJuIG5ldyBDYWxjdWxhdGVOb2RlKG51bGwsIGR1cGxpY2F0ZSh0aGlzLnRyYW5zZm9ybSkpO1xuICAgIH1cbiAgICBzdGF0aWMgcGFyc2VBbGxGb3JTb3J0SW5kZXgocGFyZW50LCBtb2RlbCkge1xuICAgICAgICAvLyBnZXQgYWxsIHRoZSBlbmNvZGluZyB3aXRoIHNvcnQgZmllbGRzIGZyb20gbW9kZWxcbiAgICAgICAgbW9kZWwuZm9yRWFjaEZpZWxkRGVmKChmaWVsZERlZiwgY2hhbm5lbCkgPT4ge1xuICAgICAgICAgICAgaWYgKCFpc1NjYWxlRmllbGREZWYoZmllbGREZWYpKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgaWYgKGlzU29ydEFycmF5KGZpZWxkRGVmLnNvcnQpKSB7XG4gICAgICAgICAgICAgICAgY29uc3QgeyBmaWVsZCwgdGltZVVuaXQgfSA9IGZpZWxkRGVmO1xuICAgICAgICAgICAgICAgIGNvbnN0IHNvcnQgPSBmaWVsZERlZi5zb3J0O1xuICAgICAgICAgICAgICAgIC8vIGdlbmVyYXRlIGBkYXR1bVtcImFcIl0gPT09IHZhbDAgPyAwIDogZGF0dW1bXCJhXCJdID09PSB2YWwxID8gMSA6IC4uLiA6IG5gIHZpYSBGaWVsZEVxdWFsUHJlZGljYXRlXG4gICAgICAgICAgICAgICAgY29uc3QgY2FsY3VsYXRlID0gc29ydFxuICAgICAgICAgICAgICAgICAgICAubWFwKChzb3J0VmFsdWUsIGkpID0+IHtcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGAke2ZpZWxkRmlsdGVyRXhwcmVzc2lvbih7IGZpZWxkLCB0aW1lVW5pdCwgZXF1YWw6IHNvcnRWYWx1ZSB9KX0gPyAke2l9IDogYDtcbiAgICAgICAgICAgICAgICB9KVxuICAgICAgICAgICAgICAgICAgICAuam9pbignJykgKyBzb3J0Lmxlbmd0aDtcbiAgICAgICAgICAgICAgICBwYXJlbnQgPSBuZXcgQ2FsY3VsYXRlTm9kZShwYXJlbnQsIHtcbiAgICAgICAgICAgICAgICAgICAgY2FsY3VsYXRlLFxuICAgICAgICAgICAgICAgICAgICBhczogc29ydEFycmF5SW5kZXhGaWVsZChmaWVsZERlZiwgY2hhbm5lbCwgeyBmb3JBczogdHJ1ZSB9KVxuICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgfVxuICAgICAgICB9KTtcbiAgICAgICAgcmV0dXJuIHBhcmVudDtcbiAgICB9XG4gICAgcHJvZHVjZWRGaWVsZHMoKSB7XG4gICAgICAgIHJldHVybiBuZXcgU2V0KFt0aGlzLnRyYW5zZm9ybS5hc10pO1xuICAgIH1cbiAgICBkZXBlbmRlbnRGaWVsZHMoKSB7XG4gICAgICAgIHJldHVybiB0aGlzLl9kZXBlbmRlbnRGaWVsZHM7XG4gICAgfVxuICAgIGFzc2VtYmxlKCkge1xuICAgICAgICByZXR1cm4ge1xuICAgICAgICAgICAgdHlwZTogJ2Zvcm11bGEnLFxuICAgICAgICAgICAgZXhwcjogdGhpcy50cmFuc2Zvcm0uY2FsY3VsYXRlLFxuICAgICAgICAgICAgYXM6IHRoaXMudHJhbnNmb3JtLmFzXG4gICAgICAgIH07XG4gICAgfVxuICAgIGhhc2goKSB7XG4gICAgICAgIHJldHVybiBgQ2FsY3VsYXRlICR7aGFzaCh0aGlzLnRyYW5zZm9ybSl9YDtcbiAgICB9XG59XG5leHBvcnQgZnVuY3Rpb24gc29ydEFycmF5SW5kZXhGaWVsZChmaWVsZERlZiwgY2hhbm5lbCwgb3B0KSB7XG4gICAgcmV0dXJuIHZnRmllbGQoZmllbGREZWYsIE9iamVjdC5hc3NpZ24oeyBwcmVmaXg6IGNoYW5uZWwsIHN1ZmZpeDogJ3NvcnRfaW5kZXgnIH0sIChvcHQgIT09IG51bGwgJiYgb3B0ICE9PSB2b2lkIDAgPyBvcHQgOiB7fSkpKTtcbn1cbi8vIyBzb3VyY2VNYXBwaW5nVVJMPWNhbGN1bGF0ZS5qcy5tYXAiXSwibWFwcGluZ3MiOiJBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EiLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///./node_modules/vega-lite/build/src/compile/data/calculate.js\n");

/***/ }),

/***/ "./node_modules/vega-lite/build/src/compile/data/dataflow.js":
/*!*******************************************************************!*\
  !*** ./node_modules/vega-lite/build/src/compile/data/dataflow.js ***!
  \*******************************************************************/
/*! exports provided: DataFlowNode, OutputNode */
/***/ (function(module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"DataFlowNode\", function() { return DataFlowNode; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"OutputNode\", function() { return OutputNode; });\n/* harmony import */ var _log__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../../log */ \"./node_modules/vega-lite/build/src/log/index.js\");\n/* harmony import */ var _util__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../../util */ \"./node_modules/vega-lite/build/src/util.js\");\n\n\n/**\n * A node in the dataflow tree.\n */\nclass DataFlowNode {\n    constructor(parent, debugName) {\n        this.debugName = debugName;\n        this._children = [];\n        this._parent = null;\n        if (parent) {\n            this.parent = parent;\n        }\n    }\n    /**\n     * Clone this node with a deep copy but don't clone links to children or parents.\n     */\n    clone() {\n        throw new Error('Cannot clone node');\n    }\n    get parent() {\n        return this._parent;\n    }\n    /**\n     * Set the parent of the node and also add this node to the parent's children.\n     */\n    set parent(parent) {\n        this._parent = parent;\n        if (parent) {\n            parent.addChild(this);\n        }\n    }\n    get children() {\n        return this._children;\n    }\n    numChildren() {\n        return this._children.length;\n    }\n    addChild(child, loc) {\n        // do not add the same child twice\n        if (this._children.indexOf(child) > -1) {\n            _log__WEBPACK_IMPORTED_MODULE_0__[\"warn\"](_log__WEBPACK_IMPORTED_MODULE_0__[\"message\"].ADD_SAME_CHILD_TWICE);\n            return;\n        }\n        if (loc !== undefined) {\n            this._children.splice(loc, 0, child);\n        }\n        else {\n            this._children.push(child);\n        }\n    }\n    removeChild(oldChild) {\n        const loc = this._children.indexOf(oldChild);\n        this._children.splice(loc, 1);\n        return loc;\n    }\n    /**\n     * Remove node from the dataflow.\n     */\n    remove() {\n        let loc = this._parent.removeChild(this);\n        for (const child of this._children) {\n            // do not use the set method because we want to insert at a particular location\n            child._parent = this._parent;\n            this._parent.addChild(child, loc++);\n        }\n    }\n    /**\n     * Insert another node as a parent of this node.\n     */\n    insertAsParentOf(other) {\n        const parent = other.parent;\n        parent.removeChild(this);\n        this.parent = parent;\n        other.parent = this;\n    }\n    swapWithParent() {\n        const parent = this._parent;\n        const newParent = parent.parent;\n        // reconnect the children\n        for (const child of this._children) {\n            child.parent = parent;\n        }\n        // remove old links\n        this._children = []; // equivalent to removing every child link one by one\n        parent.removeChild(this);\n        parent.parent.removeChild(parent);\n        // swap two nodes\n        this.parent = newParent;\n        parent.parent = this;\n    }\n}\nclass OutputNode extends DataFlowNode {\n    /**\n     * @param source The name of the source. Will change in assemble.\n     * @param type The type of the output node.\n     * @param refCounts A global ref counter map.\n     */\n    constructor(parent, source, type, refCounts) {\n        super(parent, source);\n        this.type = type;\n        this.refCounts = refCounts;\n        this._source = this._name = source;\n        if (this.refCounts && !(this._name in this.refCounts)) {\n            this.refCounts[this._name] = 0;\n        }\n    }\n    clone() {\n        const cloneObj = new this.constructor();\n        cloneObj.debugName = 'clone_' + this.debugName;\n        cloneObj._source = this._source;\n        cloneObj._name = 'clone_' + this._name;\n        cloneObj.type = this.type;\n        cloneObj.refCounts = this.refCounts;\n        cloneObj.refCounts[cloneObj._name] = 0;\n        return cloneObj;\n    }\n    dependentFields() {\n        return new Set();\n    }\n    producedFields() {\n        return new Set();\n    }\n    hash() {\n        if (this._hash === undefined) {\n            this._hash = `Output ${Object(_util__WEBPACK_IMPORTED_MODULE_1__[\"uniqueId\"])()}`;\n        }\n        return this._hash;\n    }\n    /**\n     * Request the datasource name and increase the ref counter.\n     *\n     * During the parsing phase, this will return the simple name such as 'main' or 'raw'.\n     * It is crucial to request the name from an output node to mark it as a required node.\n     * If nobody ever requests the name, this datasource will not be instantiated in the assemble phase.\n     *\n     * In the assemble phase, this will return the correct name.\n     */\n    getSource() {\n        this.refCounts[this._name]++;\n        return this._source;\n    }\n    isRequired() {\n        return !!this.refCounts[this._name];\n    }\n    setSource(source) {\n        this._source = source;\n    }\n}\n//# sourceMappingURL=dataflow.js.map//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,[encoded data, 7424 characters]\n//# sourceURL=webpack-internal:///./node_modules/vega-lite/build/src/compile/data/dataflow.js\n");

/***/ }),

/***/ "./node_modules/vega-lite/build/src/compile/data/density.js":
/*!******************************************************************!*\
  !*** ./node_modules/vega-lite/build/src/compile/data/density.js ***!
  \******************************************************************/
/*! exports provided: DensityTransformNode */
/***/ (function(module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"DensityTransformNode\", function() { return DensityTransformNode; });\n/* harmony import */ var _util__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../../util */ \"./node_modules/vega-lite/build/src/util.js\");\n/* harmony import */ var _dataflow__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./dataflow */ \"./node_modules/vega-lite/build/src/compile/data/dataflow.js\");\nvar __rest = (undefined && undefined.__rest) || function (s, e) {\n    var t = {};\n    for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0)\n        t[p] = s[p];\n    if (s != null && typeof Object.getOwnPropertySymbols === \"function\")\n        for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) {\n            if (e.indexOf(p[i]) < 0 && Object.prototype.propertyIsEnumerable.call(s, p[i]))\n                t[p[i]] = s[p[i]];\n        }\n    return t;\n};\n\n\n/**\n * A class for density transform nodes\n */\nclass DensityTransformNode extends _dataflow__WEBPACK_IMPORTED_MODULE_1__[\"DataFlowNode\"] {\n    constructor(parent, transform) {\n        var _a, _b, _c;\n        super(parent);\n        this.transform = transform;\n        this.transform = Object(_util__WEBPACK_IMPORTED_MODULE_0__[\"duplicate\"])(transform); // duplicate to prevent side effects\n        const specifiedAs = (_a = this.transform.as) !== null && _a !== void 0 ? _a : [undefined, undefined];\n        this.transform.as = [(_b = specifiedAs[0]) !== null && _b !== void 0 ? _b : 'value', (_c = specifiedAs[1]) !== null && _c !== void 0 ? _c : 'density'];\n    }\n    clone() {\n        return new DensityTransformNode(null, Object(_util__WEBPACK_IMPORTED_MODULE_0__[\"duplicate\"])(this.transform));\n    }\n    dependentFields() {\n        var _a;\n        return new Set([this.transform.density, ...((_a = this.transform.groupby) !== null && _a !== void 0 ? _a : [])]);\n    }\n    producedFields() {\n        return new Set(this.transform.as);\n    }\n    hash() {\n        return `DensityTransform ${Object(_util__WEBPACK_IMPORTED_MODULE_0__[\"hash\"])(this.transform)}`;\n    }\n    assemble() {\n        const _a = this.transform, { density } = _a, rest = __rest(_a, [\"density\"]);\n        const result = Object.assign({ type: 'kde', field: density }, rest);\n        return result;\n    }\n}\n//# sourceMappingURL=density.js.map//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvdmVnYS1saXRlL2J1aWxkL3NyYy9jb21waWxlL2RhdGEvZGVuc2l0eS5qcy5qcyIsInNvdXJjZXMiOlsid2VicGFjazovLy8uL25vZGVfbW9kdWxlcy92ZWdhLWxpdGUvYnVpbGQvc3JjL2NvbXBpbGUvZGF0YS9kZW5zaXR5LmpzPzg3YzgiXSwic291cmNlc0NvbnRlbnQiOlsidmFyIF9fcmVzdCA9ICh0aGlzICYmIHRoaXMuX19yZXN0KSB8fCBmdW5jdGlvbiAocywgZSkge1xuICAgIHZhciB0ID0ge307XG4gICAgZm9yICh2YXIgcCBpbiBzKSBpZiAoT2JqZWN0LnByb3RvdHlwZS5oYXNPd25Qcm9wZXJ0eS5jYWxsKHMsIHApICYmIGUuaW5kZXhPZihwKSA8IDApXG4gICAgICAgIHRbcF0gPSBzW3BdO1xuICAgIGlmIChzICE9IG51bGwgJiYgdHlwZW9mIE9iamVjdC5nZXRPd25Qcm9wZXJ0eVN5bWJvbHMgPT09IFwiZnVuY3Rpb25cIilcbiAgICAgICAgZm9yICh2YXIgaSA9IDAsIHAgPSBPYmplY3QuZ2V0T3duUHJvcGVydHlTeW1ib2xzKHMpOyBpIDwgcC5sZW5ndGg7IGkrKykge1xuICAgICAgICAgICAgaWYgKGUuaW5kZXhPZihwW2ldKSA8IDAgJiYgT2JqZWN0LnByb3RvdHlwZS5wcm9wZXJ0eUlzRW51bWVyYWJsZS5jYWxsKHMsIHBbaV0pKVxuICAgICAgICAgICAgICAgIHRbcFtpXV0gPSBzW3BbaV1dO1xuICAgICAgICB9XG4gICAgcmV0dXJuIHQ7XG59O1xuaW1wb3J0IHsgZHVwbGljYXRlLCBoYXNoIH0gZnJvbSAnLi4vLi4vdXRpbCc7XG5pbXBvcnQgeyBEYXRhRmxvd05vZGUgfSBmcm9tICcuL2RhdGFmbG93Jztcbi8qKlxuICogQSBjbGFzcyBmb3IgZGVuc2l0eSB0cmFuc2Zvcm0gbm9kZXNcbiAqL1xuZXhwb3J0IGNsYXNzIERlbnNpdHlUcmFuc2Zvcm1Ob2RlIGV4dGVuZHMgRGF0YUZsb3dOb2RlIHtcbiAgICBjb25zdHJ1Y3RvcihwYXJlbnQsIHRyYW5zZm9ybSkge1xuICAgICAgICB2YXIgX2EsIF9iLCBfYztcbiAgICAgICAgc3VwZXIocGFyZW50KTtcbiAgICAgICAgdGhpcy50cmFuc2Zvcm0gPSB0cmFuc2Zvcm07XG4gICAgICAgIHRoaXMudHJhbnNmb3JtID0gZHVwbGljYXRlKHRyYW5zZm9ybSk7IC8vIGR1cGxpY2F0ZSB0byBwcmV2ZW50IHNpZGUgZWZmZWN0c1xuICAgICAgICBjb25zdCBzcGVjaWZpZWRBcyA9IChfYSA9IHRoaXMudHJhbnNmb3JtLmFzKSAhPT0gbnVsbCAmJiBfYSAhPT0gdm9pZCAwID8gX2EgOiBbdW5kZWZpbmVkLCB1bmRlZmluZWRdO1xuICAgICAgICB0aGlzLnRyYW5zZm9ybS5hcyA9IFsoX2IgPSBzcGVjaWZpZWRBc1swXSkgIT09IG51bGwgJiYgX2IgIT09IHZvaWQgMCA/IF9iIDogJ3ZhbHVlJywgKF9jID0gc3BlY2lmaWVkQXNbMV0pICE9PSBudWxsICYmIF9jICE9PSB2b2lkIDAgPyBfYyA6ICdkZW5zaXR5J107XG4gICAgfVxuICAgIGNsb25lKCkge1xuICAgICAgICByZXR1cm4gbmV3IERlbnNpdHlUcmFuc2Zvcm1Ob2RlKG51bGwsIGR1cGxpY2F0ZSh0aGlzLnRyYW5zZm9ybSkpO1xuICAgIH1cbiAgICBkZXBlbmRlbnRGaWVsZHMoKSB7XG4gICAgICAgIHZhciBfYTtcbiAgICAgICAgcmV0dXJuIG5ldyBTZXQoW3RoaXMudHJhbnNmb3JtLmRlbnNpdHksIC4uLigoX2EgPSB0aGlzLnRyYW5zZm9ybS5ncm91cGJ5KSAhPT0gbnVsbCAmJiBfYSAhPT0gdm9pZCAwID8gX2EgOiBbXSldKTtcbiAgICB9XG4gICAgcHJvZHVjZWRGaWVsZHMoKSB7XG4gICAgICAgIHJldHVybiBuZXcgU2V0KHRoaXMudHJhbnNmb3JtLmFzKTtcbiAgICB9XG4gICAgaGFzaCgpIHtcbiAgICAgICAgcmV0dXJuIGBEZW5zaXR5VHJhbnNmb3JtICR7aGFzaCh0aGlzLnRyYW5zZm9ybSl9YDtcbiAgICB9XG4gICAgYXNzZW1ibGUoKSB7XG4gICAgICAgIGNvbnN0IF9hID0gdGhpcy50cmFuc2Zvcm0sIHsgZGVuc2l0eSB9ID0gX2EsIHJlc3QgPSBfX3Jlc3QoX2EsIFtcImRlbnNpdHlcIl0pO1xuICAgICAgICBjb25zdCByZXN1bHQgPSBPYmplY3QuYXNzaWduKHsgdHlwZTogJ2tkZScsIGZpZWxkOiBkZW5zaXR5IH0sIHJlc3QpO1xuICAgICAgICByZXR1cm4gcmVzdWx0O1xuICAgIH1cbn1cbi8vIyBzb3VyY2VNYXBwaW5nVVJMPWRlbnNpdHkuanMubWFwIl0sIm1hcHBpbmdzIjoiQUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSIsInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///./node_modules/vega-lite/build/src/compile/data/density.js\n");

/***/ }),

/***/ "./node_modules/vega-lite/build/src/compile/data/expressions.js":
/*!**********************************************************************!*\
  !*** ./node_modules/vega-lite/build/src/compile/data/expressions.js ***!
  \**********************************************************************/
/*! exports provided: getDependentFields */
/***/ (function(module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"getDependentFields\", function() { return getDependentFields; });\n/* harmony import */ var vega_expression__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! vega-expression */ \"./node_modules/vega-lite/node_modules/vega-expression/build/vega-expression.module.js\");\n\nfunction getName(node) {\n    const name = [];\n    if (node.type === 'Identifier') {\n        return [node.name];\n    }\n    if (node.type === 'Literal') {\n        return [node.value];\n    }\n    if (node.type === 'MemberExpression') {\n        name.push(...getName(node.object));\n        name.push(...getName(node.property));\n    }\n    return name;\n}\nfunction startsWithDatum(node) {\n    if (node.object.type === 'MemberExpression') {\n        return startsWithDatum(node.object);\n    }\n    return node.object.name === 'datum';\n}\nfunction getDependentFields(expression) {\n    const ast = Object(vega_expression__WEBPACK_IMPORTED_MODULE_0__[\"parse\"])(expression);\n    const dependents = new Set();\n    ast.visit((node) => {\n        if (node.type === 'MemberExpression' && startsWithDatum(node)) {\n            dependents.add(getName(node).slice(1).join('.'));\n        }\n    });\n    return dependents;\n}\n//# sourceMappingURL=expressions.js.map//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvdmVnYS1saXRlL2J1aWxkL3NyYy9jb21waWxlL2RhdGEvZXhwcmVzc2lvbnMuanMuanMiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvdmVnYS1saXRlL2J1aWxkL3NyYy9jb21waWxlL2RhdGEvZXhwcmVzc2lvbnMuanM/ZmM0YiJdLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBwYXJzZSB9IGZyb20gJ3ZlZ2EtZXhwcmVzc2lvbic7XG5mdW5jdGlvbiBnZXROYW1lKG5vZGUpIHtcbiAgICBjb25zdCBuYW1lID0gW107XG4gICAgaWYgKG5vZGUudHlwZSA9PT0gJ0lkZW50aWZpZXInKSB7XG4gICAgICAgIHJldHVybiBbbm9kZS5uYW1lXTtcbiAgICB9XG4gICAgaWYgKG5vZGUudHlwZSA9PT0gJ0xpdGVyYWwnKSB7XG4gICAgICAgIHJldHVybiBbbm9kZS52YWx1ZV07XG4gICAgfVxuICAgIGlmIChub2RlLnR5cGUgPT09ICdNZW1iZXJFeHByZXNzaW9uJykge1xuICAgICAgICBuYW1lLnB1c2goLi4uZ2V0TmFtZShub2RlLm9iamVjdCkpO1xuICAgICAgICBuYW1lLnB1c2goLi4uZ2V0TmFtZShub2RlLnByb3BlcnR5KSk7XG4gICAgfVxuICAgIHJldHVybiBuYW1lO1xufVxuZnVuY3Rpb24gc3RhcnRzV2l0aERhdHVtKG5vZGUpIHtcbiAgICBpZiAobm9kZS5vYmplY3QudHlwZSA9PT0gJ01lbWJlckV4cHJlc3Npb24nKSB7XG4gICAgICAgIHJldHVybiBzdGFydHNXaXRoRGF0dW0obm9kZS5vYmplY3QpO1xuICAgIH1cbiAgICByZXR1cm4gbm9kZS5vYmplY3QubmFtZSA9PT0gJ2RhdHVtJztcbn1cbmV4cG9ydCBmdW5jdGlvbiBnZXREZXBlbmRlbnRGaWVsZHMoZXhwcmVzc2lvbikge1xuICAgIGNvbnN0IGFzdCA9IHBhcnNlKGV4cHJlc3Npb24pO1xuICAgIGNvbnN0IGRlcGVuZGVudHMgPSBuZXcgU2V0KCk7XG4gICAgYXN0LnZpc2l0KChub2RlKSA9PiB7XG4gICAgICAgIGlmIChub2RlLnR5cGUgPT09ICdNZW1iZXJFeHByZXNzaW9uJyAmJiBzdGFydHNXaXRoRGF0dW0obm9kZSkpIHtcbiAgICAgICAgICAgIGRlcGVuZGVudHMuYWRkKGdldE5hbWUobm9kZSkuc2xpY2UoMSkuam9pbignLicpKTtcbiAgICAgICAgfVxuICAgIH0pO1xuICAgIHJldHVybiBkZXBlbmRlbnRzO1xufVxuLy8jIHNvdXJjZU1hcHBpbmdVUkw9ZXhwcmVzc2lvbnMuanMubWFwIl0sIm1hcHBpbmdzIjoiQUFBQTtBQUFBO0FBQUE7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBIiwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///./node_modules/vega-lite/build/src/compile/data/expressions.js\n");

/***/ }),

/***/ "./node_modules/vega-lite/build/src/compile/data/facet.js":
/*!****************************************************************!*\
  !*** ./node_modules/vega-lite/build/src/compile/data/facet.js ***!
  \****************************************************************/
/*! exports provided: FacetNode */
/***/ (function(module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"FacetNode\", function() { return FacetNode; });\n/* harmony import */ var vega_util__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! vega-util */ \"./node_modules/vega-lite/node_modules/vega-util/build/vega-util.module.js\");\n/* harmony import */ var _bin__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../../bin */ \"./node_modules/vega-lite/build/src/bin.js\");\n/* harmony import */ var _channel__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ../../channel */ \"./node_modules/vega-lite/build/src/channel.js\");\n/* harmony import */ var _channeldef__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ../../channeldef */ \"./node_modules/vega-lite/build/src/channeldef.js\");\n/* harmony import */ var _log__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ../../log */ \"./node_modules/vega-lite/build/src/log/index.js\");\n/* harmony import */ var _scale__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! ../../scale */ \"./node_modules/vega-lite/build/src/scale.js\");\n/* harmony import */ var _sort__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! ../../sort */ \"./node_modules/vega-lite/build/src/sort.js\");\n/* harmony import */ var _util__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! ../../util */ \"./node_modules/vega-lite/build/src/util.js\");\n/* harmony import */ var _vega_schema__WEBPACK_IMPORTED_MODULE_8__ = __webpack_require__(/*! ../../vega.schema */ \"./node_modules/vega-lite/build/src/vega.schema.js\");\n/* harmony import */ var _header_component__WEBPACK_IMPORTED_MODULE_9__ = __webpack_require__(/*! ../header/component */ \"./node_modules/vega-lite/build/src/compile/header/component.js\");\n/* harmony import */ var _scale_domain__WEBPACK_IMPORTED_MODULE_10__ = __webpack_require__(/*! ../scale/domain */ \"./node_modules/vega-lite/build/src/compile/scale/domain.js\");\n/* harmony import */ var _calculate__WEBPACK_IMPORTED_MODULE_11__ = __webpack_require__(/*! ./calculate */ \"./node_modules/vega-lite/build/src/compile/data/calculate.js\");\n/* harmony import */ var _dataflow__WEBPACK_IMPORTED_MODULE_12__ = __webpack_require__(/*! ./dataflow */ \"./node_modules/vega-lite/build/src/compile/data/dataflow.js\");\n\n\n\n\n\n\n\n\n\n\n\n\n\n/**\n * A node that helps us track what fields we are faceting by.\n */\nclass FacetNode extends _dataflow__WEBPACK_IMPORTED_MODULE_12__[\"DataFlowNode\"] {\n    /**\n     * @param model The facet model.\n     * @param name The name that this facet source will have.\n     * @param data The source data for this facet data.\n     */\n    constructor(parent, model, name, data) {\n        super(parent);\n        this.model = model;\n        this.name = name;\n        this.data = data;\n        for (const channel of _channel__WEBPACK_IMPORTED_MODULE_2__[\"FACET_CHANNELS\"]) {\n            const fieldDef = model.facet[channel];\n            if (fieldDef) {\n                const { bin, sort } = fieldDef;\n                this[channel] = Object.assign({ name: model.getName(`${channel}_domain`), fields: [Object(_channeldef__WEBPACK_IMPORTED_MODULE_3__[\"vgField\"])(fieldDef), ...(Object(_bin__WEBPACK_IMPORTED_MODULE_1__[\"isBinning\"])(bin) ? [Object(_channeldef__WEBPACK_IMPORTED_MODULE_3__[\"vgField\"])(fieldDef, { binSuffix: 'end' })] : [])] }, (Object(_sort__WEBPACK_IMPORTED_MODULE_6__[\"isSortField\"])(sort)\n                    ? { sortField: sort }\n                    : Object(vega_util__WEBPACK_IMPORTED_MODULE_0__[\"isArray\"])(sort)\n                        ? { sortIndexField: Object(_calculate__WEBPACK_IMPORTED_MODULE_11__[\"sortArrayIndexField\"])(fieldDef, channel) }\n                        : {}));\n            }\n        }\n        this.childModel = model.child;\n    }\n    hash() {\n        let out = `Facet`;\n        for (const channel of _channel__WEBPACK_IMPORTED_MODULE_2__[\"FACET_CHANNELS\"]) {\n            if (this[channel]) {\n                out += ` ${channel.charAt(0)}:${Object(_util__WEBPACK_IMPORTED_MODULE_7__[\"hash\"])(this[channel])}`;\n            }\n        }\n        return out;\n    }\n    get fields() {\n        var _a;\n        const f = [];\n        for (const channel of _channel__WEBPACK_IMPORTED_MODULE_2__[\"FACET_CHANNELS\"]) {\n            if ((_a = this[channel]) === null || _a === void 0 ? void 0 : _a.fields) {\n                f.push(...this[channel].fields);\n            }\n        }\n        return f;\n    }\n    dependentFields() {\n        const depFields = new Set(this.fields);\n        for (const channel of _channel__WEBPACK_IMPORTED_MODULE_2__[\"FACET_CHANNELS\"]) {\n            if (this[channel]) {\n                if (this[channel].sortField) {\n                    depFields.add(this[channel].sortField.field);\n                }\n                if (this[channel].sortIndexField) {\n                    depFields.add(this[channel].sortIndexField);\n                }\n            }\n        }\n        return depFields;\n    }\n    producedFields() {\n        return new Set(); // facet does not produce any new fields\n    }\n    /**\n     * The name to reference this source is its name.\n     */\n    getSource() {\n        return this.name;\n    }\n    getChildIndependentFieldsWithStep() {\n        const childIndependentFieldsWithStep = {};\n        for (const channel of _channel__WEBPACK_IMPORTED_MODULE_2__[\"POSITION_SCALE_CHANNELS\"]) {\n            const childScaleComponent = this.childModel.component.scales[channel];\n            if (childScaleComponent && !childScaleComponent.merged) {\n                // independent scale\n                const type = childScaleComponent.get('type');\n                const range = childScaleComponent.get('range');\n                if (Object(_scale__WEBPACK_IMPORTED_MODULE_5__[\"hasDiscreteDomain\"])(type) && Object(_vega_schema__WEBPACK_IMPORTED_MODULE_8__[\"isVgRangeStep\"])(range)) {\n                    const domain = Object(_scale_domain__WEBPACK_IMPORTED_MODULE_10__[\"assembleDomain\"])(this.childModel, channel);\n                    const field = Object(_scale_domain__WEBPACK_IMPORTED_MODULE_10__[\"getFieldFromDomain\"])(domain);\n                    if (field) {\n                        childIndependentFieldsWithStep[channel] = field;\n                    }\n                    else {\n                        _log__WEBPACK_IMPORTED_MODULE_4__[\"warn\"](_log__WEBPACK_IMPORTED_MODULE_4__[\"message\"].unknownField(channel));\n                    }\n                }\n            }\n        }\n        return childIndependentFieldsWithStep;\n    }\n    assembleRowColumnHeaderData(channel, crossedDataName, childIndependentFieldsWithStep) {\n        const childChannel = { row: 'y', column: 'x' }[channel];\n        const fields = [];\n        const ops = [];\n        const as = [];\n        if (childIndependentFieldsWithStep && childIndependentFieldsWithStep[childChannel]) {\n            if (crossedDataName) {\n                // If there is a crossed data, calculate max\n                fields.push(`distinct_${childIndependentFieldsWithStep[childChannel]}`);\n                ops.push('max');\n            }\n            else {\n                // If there is no crossed data, just calculate distinct\n                fields.push(childIndependentFieldsWithStep[childChannel]);\n                ops.push('distinct');\n            }\n            // Although it is technically a max, just name it distinct so it's easier to refer to it\n            as.push(`distinct_${childIndependentFieldsWithStep[childChannel]}`);\n        }\n        const { sortField, sortIndexField } = this[channel];\n        if (sortField) {\n            const { op = _sort__WEBPACK_IMPORTED_MODULE_6__[\"DEFAULT_SORT_OP\"], field } = sortField;\n            fields.push(field);\n            ops.push(op);\n            as.push(Object(_channeldef__WEBPACK_IMPORTED_MODULE_3__[\"vgField\"])(sortField, { forAs: true }));\n        }\n        else if (sortIndexField) {\n            fields.push(sortIndexField);\n            ops.push('max');\n            as.push(sortIndexField);\n        }\n        return {\n            name: this[channel].name,\n            // Use data from the crossed one if it exist\n            source: crossedDataName !== null && crossedDataName !== void 0 ? crossedDataName : this.data,\n            transform: [\n                Object.assign({ type: 'aggregate', groupby: this[channel].fields }, (fields.length\n                    ? {\n                        fields,\n                        ops,\n                        as\n                    }\n                    : {}))\n            ]\n        };\n    }\n    assembleFacetHeaderData(childIndependentFieldsWithStep) {\n        var _a, _b;\n        const { columns } = this.model.layout;\n        const { layoutHeaders } = this.model.component;\n        const data = [];\n        const hasSharedAxis = {};\n        for (const headerChannel of _header_component__WEBPACK_IMPORTED_MODULE_9__[\"HEADER_CHANNELS\"]) {\n            for (const headerType of _header_component__WEBPACK_IMPORTED_MODULE_9__[\"HEADER_TYPES\"]) {\n                const headers = (_a = (layoutHeaders[headerChannel] && layoutHeaders[headerChannel][headerType])) !== null && _a !== void 0 ? _a : [];\n                for (const header of headers) {\n                    if (((_b = header.axes) === null || _b === void 0 ? void 0 : _b.length) > 0) {\n                        hasSharedAxis[headerChannel] = true;\n                        break;\n                    }\n                }\n            }\n            if (hasSharedAxis[headerChannel]) {\n                const cardinality = `length(data(\"${this.facet.name}\"))`;\n                const stop = headerChannel === 'row'\n                    ? columns\n                        ? { signal: `ceil(${cardinality} / ${columns})` }\n                        : 1\n                    : columns\n                        ? { signal: `min(${cardinality}, ${columns})` }\n                        : { signal: cardinality };\n                data.push({\n                    name: `${this.facet.name}_${headerChannel}`,\n                    transform: [\n                        {\n                            type: 'sequence',\n                            start: 0,\n                            stop\n                        }\n                    ]\n                });\n            }\n        }\n        const { row, column } = hasSharedAxis;\n        if (row || column) {\n            data.unshift(this.assembleRowColumnHeaderData('facet', null, childIndependentFieldsWithStep));\n        }\n        return data;\n    }\n    assemble() {\n        var _a, _b;\n        const data = [];\n        let crossedDataName = null;\n        const childIndependentFieldsWithStep = this.getChildIndependentFieldsWithStep();\n        const { column, row, facet } = this;\n        if (column && row && (childIndependentFieldsWithStep.x || childIndependentFieldsWithStep.y)) {\n            // Need to create a cross dataset to correctly calculate cardinality\n            crossedDataName = `cross_${this.column.name}_${this.row.name}`;\n            const fields = [].concat((_a = childIndependentFieldsWithStep.x) !== null && _a !== void 0 ? _a : [], (_b = childIndependentFieldsWithStep.y) !== null && _b !== void 0 ? _b : []);\n            const ops = fields.map(() => 'distinct');\n            data.push({\n                name: crossedDataName,\n                source: this.data,\n                transform: [\n                    {\n                        type: 'aggregate',\n                        groupby: this.fields,\n                        fields,\n                        ops\n                    }\n                ]\n            });\n        }\n        for (const channel of [_channel__WEBPACK_IMPORTED_MODULE_2__[\"COLUMN\"], _channel__WEBPACK_IMPORTED_MODULE_2__[\"ROW\"]]) {\n            if (this[channel]) {\n                data.push(this.assembleRowColumnHeaderData(channel, crossedDataName, childIndependentFieldsWithStep));\n            }\n        }\n        if (facet) {\n            const facetData = this.assembleFacetHeaderData(childIndependentFieldsWithStep);\n            if (facetData) {\n                data.push(...facetData);\n            }\n        }\n        return data;\n    }\n}\n//# sourceMappingURL=facet.js.map//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,[encoded data, 14716 characters]\n//# sourceURL=webpack-internal:///./node_modules/vega-lite/build/src/compile/data/facet.js\n");

/***/ }),

/***/ "./node_modules/vega-lite/build/src/compile/data/filter.js":
/*!*****************************************************************!*\
  !*** ./node_modules/vega-lite/build/src/compile/data/filter.js ***!
  \*****************************************************************/
/*! exports provided: FilterNode */
/***/ (function(module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"FilterNode\", function() { return FilterNode; });\n/* harmony import */ var _util__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../../util */ \"./node_modules/vega-lite/build/src/util.js\");\n/* harmony import */ var _predicate__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../predicate */ \"./node_modules/vega-lite/build/src/compile/predicate.js\");\n/* harmony import */ var _dataflow__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./dataflow */ \"./node_modules/vega-lite/build/src/compile/data/dataflow.js\");\n/* harmony import */ var _expressions__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ./expressions */ \"./node_modules/vega-lite/build/src/compile/data/expressions.js\");\n\n\n\n\nclass FilterNode extends _dataflow__WEBPACK_IMPORTED_MODULE_2__[\"DataFlowNode\"] {\n    constructor(parent, model, filter) {\n        super(parent);\n        this.model = model;\n        this.filter = filter;\n        // TODO: refactor this to not take a node and\n        // then add a static function makeFromOperand and make the constructor take only an expression\n        this.expr = Object(_predicate__WEBPACK_IMPORTED_MODULE_1__[\"expression\"])(this.model, this.filter, this);\n        this._dependentFields = Object(_expressions__WEBPACK_IMPORTED_MODULE_3__[\"getDependentFields\"])(this.expr);\n    }\n    clone() {\n        return new FilterNode(null, this.model, Object(_util__WEBPACK_IMPORTED_MODULE_0__[\"duplicate\"])(this.filter));\n    }\n    dependentFields() {\n        return this._dependentFields;\n    }\n    producedFields() {\n        return new Set(); // filter does not produce any new fields\n    }\n    assemble() {\n        return {\n            type: 'filter',\n            expr: this.expr\n        };\n    }\n    hash() {\n        return `Filter ${this.expr}`;\n    }\n}\n//# sourceMappingURL=filter.js.map//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvdmVnYS1saXRlL2J1aWxkL3NyYy9jb21waWxlL2RhdGEvZmlsdGVyLmpzLmpzIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL3ZlZ2EtbGl0ZS9idWlsZC9zcmMvY29tcGlsZS9kYXRhL2ZpbHRlci5qcz9iMDZhIl0sInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IGR1cGxpY2F0ZSB9IGZyb20gJy4uLy4uL3V0aWwnO1xuaW1wb3J0IHsgZXhwcmVzc2lvbiB9IGZyb20gJy4uL3ByZWRpY2F0ZSc7XG5pbXBvcnQgeyBEYXRhRmxvd05vZGUgfSBmcm9tICcuL2RhdGFmbG93JztcbmltcG9ydCB7IGdldERlcGVuZGVudEZpZWxkcyB9IGZyb20gJy4vZXhwcmVzc2lvbnMnO1xuZXhwb3J0IGNsYXNzIEZpbHRlck5vZGUgZXh0ZW5kcyBEYXRhRmxvd05vZGUge1xuICAgIGNvbnN0cnVjdG9yKHBhcmVudCwgbW9kZWwsIGZpbHRlcikge1xuICAgICAgICBzdXBlcihwYXJlbnQpO1xuICAgICAgICB0aGlzLm1vZGVsID0gbW9kZWw7XG4gICAgICAgIHRoaXMuZmlsdGVyID0gZmlsdGVyO1xuICAgICAgICAvLyBUT0RPOiByZWZhY3RvciB0aGlzIHRvIG5vdCB0YWtlIGEgbm9kZSBhbmRcbiAgICAgICAgLy8gdGhlbiBhZGQgYSBzdGF0aWMgZnVuY3Rpb24gbWFrZUZyb21PcGVyYW5kIGFuZCBtYWtlIHRoZSBjb25zdHJ1Y3RvciB0YWtlIG9ubHkgYW4gZXhwcmVzc2lvblxuICAgICAgICB0aGlzLmV4cHIgPSBleHByZXNzaW9uKHRoaXMubW9kZWwsIHRoaXMuZmlsdGVyLCB0aGlzKTtcbiAgICAgICAgdGhpcy5fZGVwZW5kZW50RmllbGRzID0gZ2V0RGVwZW5kZW50RmllbGRzKHRoaXMuZXhwcik7XG4gICAgfVxuICAgIGNsb25lKCkge1xuICAgICAgICByZXR1cm4gbmV3IEZpbHRlck5vZGUobnVsbCwgdGhpcy5tb2RlbCwgZHVwbGljYXRlKHRoaXMuZmlsdGVyKSk7XG4gICAgfVxuICAgIGRlcGVuZGVudEZpZWxkcygpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuX2RlcGVuZGVudEZpZWxkcztcbiAgICB9XG4gICAgcHJvZHVjZWRGaWVsZHMoKSB7XG4gICAgICAgIHJldHVybiBuZXcgU2V0KCk7IC8vIGZpbHRlciBkb2VzIG5vdCBwcm9kdWNlIGFueSBuZXcgZmllbGRzXG4gICAgfVxuICAgIGFzc2VtYmxlKCkge1xuICAgICAgICByZXR1cm4ge1xuICAgICAgICAgICAgdHlwZTogJ2ZpbHRlcicsXG4gICAgICAgICAgICBleHByOiB0aGlzLmV4cHJcbiAgICAgICAgfTtcbiAgICB9XG4gICAgaGFzaCgpIHtcbiAgICAgICAgcmV0dXJuIGBGaWx0ZXIgJHt0aGlzLmV4cHJ9YDtcbiAgICB9XG59XG4vLyMgc291cmNlTWFwcGluZ1VSTD1maWx0ZXIuanMubWFwIl0sIm1hcHBpbmdzIjoiQUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSIsInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///./node_modules/vega-lite/build/src/compile/data/filter.js\n");

/***/ }),

/***/ "./node_modules/vega-lite/build/src/compile/data/filterinvalid.js":
/*!************************************************************************!*\
  !*** ./node_modules/vega-lite/build/src/compile/data/filterinvalid.js ***!
  \************************************************************************/
/*! exports provided: FilterInvalidNode */
/***/ (function(module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"FilterInvalidNode\", function() { return FilterInvalidNode; });\n/* harmony import */ var _channel__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../../channel */ \"./node_modules/vega-lite/build/src/channel.js\");\n/* harmony import */ var _channeldef__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../../channeldef */ \"./node_modules/vega-lite/build/src/channeldef.js\");\n/* harmony import */ var _mark__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ../../mark */ \"./node_modules/vega-lite/build/src/mark.js\");\n/* harmony import */ var _scale__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ../../scale */ \"./node_modules/vega-lite/build/src/scale.js\");\n/* harmony import */ var _util__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ../../util */ \"./node_modules/vega-lite/build/src/util.js\");\n/* harmony import */ var _common__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! ../common */ \"./node_modules/vega-lite/build/src/compile/common.js\");\n/* harmony import */ var _dataflow__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! ./dataflow */ \"./node_modules/vega-lite/build/src/compile/data/dataflow.js\");\n\n\n\n\n\n\n\nclass FilterInvalidNode extends _dataflow__WEBPACK_IMPORTED_MODULE_6__[\"DataFlowNode\"] {\n    constructor(parent, filter) {\n        super(parent);\n        this.filter = filter;\n    }\n    clone() {\n        return new FilterInvalidNode(null, Object.assign({}, this.filter));\n    }\n    static make(parent, model) {\n        const { config, mark, markDef } = model;\n        const invalid = Object(_common__WEBPACK_IMPORTED_MODULE_5__[\"getMarkPropOrConfig\"])('invalid', markDef, config);\n        if (invalid !== 'filter') {\n            return null;\n        }\n        const filter = model.reduceFieldDef((aggregator, fieldDef, channel) => {\n            const scaleComponent = Object(_channel__WEBPACK_IMPORTED_MODULE_0__[\"isScaleChannel\"])(channel) && model.getScaleComponent(channel);\n            if (scaleComponent) {\n                const scaleType = scaleComponent.get('type');\n                // While discrete domain scales can handle invalid values, continuous scales can't.\n                // Thus, for non-path marks, we have to filter null for scales with continuous domains.\n                // (For path marks, we will use \"defined\" property and skip these values instead.)\n                if (Object(_scale__WEBPACK_IMPORTED_MODULE_3__[\"hasContinuousDomain\"])(scaleType) && fieldDef.aggregate !== 'count' && !Object(_mark__WEBPACK_IMPORTED_MODULE_2__[\"isPathMark\"])(mark)) {\n                    aggregator[fieldDef.field] = fieldDef; // we know that the fieldDef is a typed field def\n                }\n            }\n            return aggregator;\n        }, {});\n        if (!Object(_util__WEBPACK_IMPORTED_MODULE_4__[\"keys\"])(filter).length) {\n            return null;\n        }\n        return new FilterInvalidNode(parent, filter);\n    }\n    dependentFields() {\n        return new Set(Object(_util__WEBPACK_IMPORTED_MODULE_4__[\"keys\"])(this.filter));\n    }\n    producedFields() {\n        return new Set(); // filter does not produce any new fields\n    }\n    hash() {\n        return `FilterInvalid ${Object(_util__WEBPACK_IMPORTED_MODULE_4__[\"hash\"])(this.filter)}`;\n    }\n    /**\n     * Create the VgTransforms for each of the filtered fields.\n     */\n    assemble() {\n        const filters = Object(_util__WEBPACK_IMPORTED_MODULE_4__[\"keys\"])(this.filter).reduce((vegaFilters, field) => {\n            const fieldDef = this.filter[field];\n            const ref = Object(_channeldef__WEBPACK_IMPORTED_MODULE_1__[\"vgField\"])(fieldDef, { expr: 'datum' });\n            if (fieldDef !== null) {\n                if (fieldDef.type === 'temporal') {\n                    vegaFilters.push(`(isDate(${ref}) || (isValid(${ref}) && isFinite(+${ref})))`);\n                }\n                else if (fieldDef.type === 'quantitative') {\n                    vegaFilters.push(`isValid(${ref})`);\n                    vegaFilters.push(`isFinite(+${ref})`);\n                }\n                else {\n                    // should never get here\n                }\n            }\n            return vegaFilters;\n        }, []);\n        return filters.length > 0\n            ? {\n                type: 'filter',\n                expr: filters.join(' && ')\n            }\n            : null;\n    }\n}\n//# sourceMappingURL=filterinvalid.js.map//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,[encoded data, 5116 characters]\n//# sourceURL=webpack-internal:///./node_modules/vega-lite/build/src/compile/data/filterinvalid.js\n");

/***/ }),

/***/ "./node_modules/vega-lite/build/src/compile/data/flatten.js":
/*!******************************************************************!*\
  !*** ./node_modules/vega-lite/build/src/compile/data/flatten.js ***!
  \******************************************************************/
/*! exports provided: FlattenTransformNode */
/***/ (function(module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"FlattenTransformNode\", function() { return FlattenTransformNode; });\n/* harmony import */ var _util__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../../util */ \"./node_modules/vega-lite/build/src/util.js\");\n/* harmony import */ var _dataflow__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./dataflow */ \"./node_modules/vega-lite/build/src/compile/data/dataflow.js\");\n\n\n/**\n * A class for flatten transform nodes\n */\nclass FlattenTransformNode extends _dataflow__WEBPACK_IMPORTED_MODULE_1__[\"DataFlowNode\"] {\n    constructor(parent, transform) {\n        super(parent);\n        this.transform = transform;\n        this.transform = Object(_util__WEBPACK_IMPORTED_MODULE_0__[\"duplicate\"])(transform); // duplicate to prevent side effects\n        const { flatten, as = [] } = this.transform;\n        this.transform.as = flatten.map((f, i) => { var _a; return (_a = as[i]) !== null && _a !== void 0 ? _a : f; });\n    }\n    clone() {\n        return new FlattenTransformNode(this.parent, Object(_util__WEBPACK_IMPORTED_MODULE_0__[\"duplicate\"])(this.transform));\n    }\n    dependentFields() {\n        return new Set(this.transform.flatten);\n    }\n    producedFields() {\n        return new Set(this.transform.as);\n    }\n    hash() {\n        return `FlattenTransform ${Object(_util__WEBPACK_IMPORTED_MODULE_0__[\"hash\"])(this.transform)}`;\n    }\n    assemble() {\n        const { flatten: fields, as } = this.transform;\n        const result = {\n            type: 'flatten',\n            fields,\n            as\n        };\n        return result;\n    }\n}\n//# sourceMappingURL=flatten.js.map//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvdmVnYS1saXRlL2J1aWxkL3NyYy9jb21waWxlL2RhdGEvZmxhdHRlbi5qcy5qcyIsInNvdXJjZXMiOlsid2VicGFjazovLy8uL25vZGVfbW9kdWxlcy92ZWdhLWxpdGUvYnVpbGQvc3JjL2NvbXBpbGUvZGF0YS9mbGF0dGVuLmpzPzdhZGIiXSwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgZHVwbGljYXRlLCBoYXNoIH0gZnJvbSAnLi4vLi4vdXRpbCc7XG5pbXBvcnQgeyBEYXRhRmxvd05vZGUgfSBmcm9tICcuL2RhdGFmbG93Jztcbi8qKlxuICogQSBjbGFzcyBmb3IgZmxhdHRlbiB0cmFuc2Zvcm0gbm9kZXNcbiAqL1xuZXhwb3J0IGNsYXNzIEZsYXR0ZW5UcmFuc2Zvcm1Ob2RlIGV4dGVuZHMgRGF0YUZsb3dOb2RlIHtcbiAgICBjb25zdHJ1Y3RvcihwYXJlbnQsIHRyYW5zZm9ybSkge1xuICAgICAgICBzdXBlcihwYXJlbnQpO1xuICAgICAgICB0aGlzLnRyYW5zZm9ybSA9IHRyYW5zZm9ybTtcbiAgICAgICAgdGhpcy50cmFuc2Zvcm0gPSBkdXBsaWNhdGUodHJhbnNmb3JtKTsgLy8gZHVwbGljYXRlIHRvIHByZXZlbnQgc2lkZSBlZmZlY3RzXG4gICAgICAgIGNvbnN0IHsgZmxhdHRlbiwgYXMgPSBbXSB9ID0gdGhpcy50cmFuc2Zvcm07XG4gICAgICAgIHRoaXMudHJhbnNmb3JtLmFzID0gZmxhdHRlbi5tYXAoKGYsIGkpID0+IHsgdmFyIF9hOyByZXR1cm4gKF9hID0gYXNbaV0pICE9PSBudWxsICYmIF9hICE9PSB2b2lkIDAgPyBfYSA6IGY7IH0pO1xuICAgIH1cbiAgICBjbG9uZSgpIHtcbiAgICAgICAgcmV0dXJuIG5ldyBGbGF0dGVuVHJhbnNmb3JtTm9kZSh0aGlzLnBhcmVudCwgZHVwbGljYXRlKHRoaXMudHJhbnNmb3JtKSk7XG4gICAgfVxuICAgIGRlcGVuZGVudEZpZWxkcygpIHtcbiAgICAgICAgcmV0dXJuIG5ldyBTZXQodGhpcy50cmFuc2Zvcm0uZmxhdHRlbik7XG4gICAgfVxuICAgIHByb2R1Y2VkRmllbGRzKCkge1xuICAgICAgICByZXR1cm4gbmV3IFNldCh0aGlzLnRyYW5zZm9ybS5hcyk7XG4gICAgfVxuICAgIGhhc2goKSB7XG4gICAgICAgIHJldHVybiBgRmxhdHRlblRyYW5zZm9ybSAke2hhc2godGhpcy50cmFuc2Zvcm0pfWA7XG4gICAgfVxuICAgIGFzc2VtYmxlKCkge1xuICAgICAgICBjb25zdCB7IGZsYXR0ZW46IGZpZWxkcywgYXMgfSA9IHRoaXMudHJhbnNmb3JtO1xuICAgICAgICBjb25zdCByZXN1bHQgPSB7XG4gICAgICAgICAgICB0eXBlOiAnZmxhdHRlbicsXG4gICAgICAgICAgICBmaWVsZHMsXG4gICAgICAgICAgICBhc1xuICAgICAgICB9O1xuICAgICAgICByZXR1cm4gcmVzdWx0O1xuICAgIH1cbn1cbi8vIyBzb3VyY2VNYXBwaW5nVVJMPWZsYXR0ZW4uanMubWFwIl0sIm1hcHBpbmdzIjoiQUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSIsInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///./node_modules/vega-lite/build/src/compile/data/flatten.js\n");

/***/ }),

/***/ "./node_modules/vega-lite/build/src/compile/data/fold.js":
/*!***************************************************************!*\
  !*** ./node_modules/vega-lite/build/src/compile/data/fold.js ***!
  \***************************************************************/
/*! exports provided: FoldTransformNode */
/***/ (function(module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"FoldTransformNode\", function() { return FoldTransformNode; });\n/* harmony import */ var _util__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../../util */ \"./node_modules/vega-lite/build/src/util.js\");\n/* harmony import */ var _dataflow__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./dataflow */ \"./node_modules/vega-lite/build/src/compile/data/dataflow.js\");\n\n\n/**\n * A class for flatten transform nodes\n */\nclass FoldTransformNode extends _dataflow__WEBPACK_IMPORTED_MODULE_1__[\"DataFlowNode\"] {\n    constructor(parent, transform) {\n        var _a, _b, _c;\n        super(parent);\n        this.transform = transform;\n        this.transform = Object(_util__WEBPACK_IMPORTED_MODULE_0__[\"duplicate\"])(transform); // duplicate to prevent side effects\n        const specifiedAs = (_a = this.transform.as) !== null && _a !== void 0 ? _a : [undefined, undefined];\n        this.transform.as = [(_b = specifiedAs[0]) !== null && _b !== void 0 ? _b : 'key', (_c = specifiedAs[1]) !== null && _c !== void 0 ? _c : 'value'];\n    }\n    clone() {\n        return new FoldTransformNode(null, Object(_util__WEBPACK_IMPORTED_MODULE_0__[\"duplicate\"])(this.transform));\n    }\n    dependentFields() {\n        return new Set(this.transform.fold);\n    }\n    producedFields() {\n        return new Set(this.transform.as);\n    }\n    hash() {\n        return `FoldTransform ${Object(_util__WEBPACK_IMPORTED_MODULE_0__[\"hash\"])(this.transform)}`;\n    }\n    assemble() {\n        const { fold, as } = this.transform;\n        const result = {\n            type: 'fold',\n            fields: fold,\n            as\n        };\n        return result;\n    }\n}\n//# sourceMappingURL=fold.js.map//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvdmVnYS1saXRlL2J1aWxkL3NyYy9jb21waWxlL2RhdGEvZm9sZC5qcy5qcyIsInNvdXJjZXMiOlsid2VicGFjazovLy8uL25vZGVfbW9kdWxlcy92ZWdhLWxpdGUvYnVpbGQvc3JjL2NvbXBpbGUvZGF0YS9mb2xkLmpzPzY3MDkiXSwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgZHVwbGljYXRlLCBoYXNoIH0gZnJvbSAnLi4vLi4vdXRpbCc7XG5pbXBvcnQgeyBEYXRhRmxvd05vZGUgfSBmcm9tICcuL2RhdGFmbG93Jztcbi8qKlxuICogQSBjbGFzcyBmb3IgZmxhdHRlbiB0cmFuc2Zvcm0gbm9kZXNcbiAqL1xuZXhwb3J0IGNsYXNzIEZvbGRUcmFuc2Zvcm1Ob2RlIGV4dGVuZHMgRGF0YUZsb3dOb2RlIHtcbiAgICBjb25zdHJ1Y3RvcihwYXJlbnQsIHRyYW5zZm9ybSkge1xuICAgICAgICB2YXIgX2EsIF9iLCBfYztcbiAgICAgICAgc3VwZXIocGFyZW50KTtcbiAgICAgICAgdGhpcy50cmFuc2Zvcm0gPSB0cmFuc2Zvcm07XG4gICAgICAgIHRoaXMudHJhbnNmb3JtID0gZHVwbGljYXRlKHRyYW5zZm9ybSk7IC8vIGR1cGxpY2F0ZSB0byBwcmV2ZW50IHNpZGUgZWZmZWN0c1xuICAgICAgICBjb25zdCBzcGVjaWZpZWRBcyA9IChfYSA9IHRoaXMudHJhbnNmb3JtLmFzKSAhPT0gbnVsbCAmJiBfYSAhPT0gdm9pZCAwID8gX2EgOiBbdW5kZWZpbmVkLCB1bmRlZmluZWRdO1xuICAgICAgICB0aGlzLnRyYW5zZm9ybS5hcyA9IFsoX2IgPSBzcGVjaWZpZWRBc1swXSkgIT09IG51bGwgJiYgX2IgIT09IHZvaWQgMCA/IF9iIDogJ2tleScsIChfYyA9IHNwZWNpZmllZEFzWzFdKSAhPT0gbnVsbCAmJiBfYyAhPT0gdm9pZCAwID8gX2MgOiAndmFsdWUnXTtcbiAgICB9XG4gICAgY2xvbmUoKSB7XG4gICAgICAgIHJldHVybiBuZXcgRm9sZFRyYW5zZm9ybU5vZGUobnVsbCwgZHVwbGljYXRlKHRoaXMudHJhbnNmb3JtKSk7XG4gICAgfVxuICAgIGRlcGVuZGVudEZpZWxkcygpIHtcbiAgICAgICAgcmV0dXJuIG5ldyBTZXQodGhpcy50cmFuc2Zvcm0uZm9sZCk7XG4gICAgfVxuICAgIHByb2R1Y2VkRmllbGRzKCkge1xuICAgICAgICByZXR1cm4gbmV3IFNldCh0aGlzLnRyYW5zZm9ybS5hcyk7XG4gICAgfVxuICAgIGhhc2goKSB7XG4gICAgICAgIHJldHVybiBgRm9sZFRyYW5zZm9ybSAke2hhc2godGhpcy50cmFuc2Zvcm0pfWA7XG4gICAgfVxuICAgIGFzc2VtYmxlKCkge1xuICAgICAgICBjb25zdCB7IGZvbGQsIGFzIH0gPSB0aGlzLnRyYW5zZm9ybTtcbiAgICAgICAgY29uc3QgcmVzdWx0ID0ge1xuICAgICAgICAgICAgdHlwZTogJ2ZvbGQnLFxuICAgICAgICAgICAgZmllbGRzOiBmb2xkLFxuICAgICAgICAgICAgYXNcbiAgICAgICAgfTtcbiAgICAgICAgcmV0dXJuIHJlc3VsdDtcbiAgICB9XG59XG4vLyMgc291cmNlTWFwcGluZ1VSTD1mb2xkLmpzLm1hcCJdLCJtYXBwaW5ncyI6IkFBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSIsInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///./node_modules/vega-lite/build/src/compile/data/fold.js\n");

/***/ }),

/***/ "./node_modules/vega-lite/build/src/compile/data/formatparse.js":
/*!**********************************************************************!*\
  !*** ./node_modules/vega-lite/build/src/compile/data/formatparse.js ***!
  \**********************************************************************/
/*! exports provided: getImplicitFromFilterTransform, getImplicitFromEncoding, getImplicitFromSelection, ParseNode */
/***/ (function(module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"getImplicitFromFilterTransform\", function() { return getImplicitFromFilterTransform; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"getImplicitFromEncoding\", function() { return getImplicitFromEncoding; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"getImplicitFromSelection\", function() { return getImplicitFromSelection; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"ParseNode\", function() { return ParseNode; });\n/* harmony import */ var vega_util__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! vega-util */ \"./node_modules/vega-lite/node_modules/vega-util/build/vega-util.module.js\");\n/* harmony import */ var _aggregate__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../../aggregate */ \"./node_modules/vega-lite/build/src/aggregate.js\");\n/* harmony import */ var _channel__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ../../channel */ \"./node_modules/vega-lite/build/src/channel.js\");\n/* harmony import */ var _channeldef__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ../../channeldef */ \"./node_modules/vega-lite/build/src/channeldef.js\");\n/* harmony import */ var _data__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ../../data */ \"./node_modules/vega-lite/build/src/data.js\");\n/* harmony import */ var _datetime__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! ../../datetime */ \"./node_modules/vega-lite/build/src/datetime.js\");\n/* harmony import */ var _log__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! ../../log */ \"./node_modules/vega-lite/build/src/log/index.js\");\n/* harmony import */ var _logical__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! ../../logical */ \"./node_modules/vega-lite/build/src/logical.js\");\n/* harmony import */ var _mark__WEBPACK_IMPORTED_MODULE_8__ = __webpack_require__(/*! ../../mark */ \"./node_modules/vega-lite/build/src/mark.js\");\n/* harmony import */ var _predicate__WEBPACK_IMPORTED_MODULE_9__ = __webpack_require__(/*! ../../predicate */ \"./node_modules/vega-lite/build/src/predicate.js\");\n/* harmony import */ var _sort__WEBPACK_IMPORTED_MODULE_10__ = __webpack_require__(/*! ../../sort */ \"./node_modules/vega-lite/build/src/sort.js\");\n/* harmony import */ var _util__WEBPACK_IMPORTED_MODULE_11__ = __webpack_require__(/*! ../../util */ \"./node_modules/vega-lite/build/src/util.js\");\n/* harmony import */ var _common__WEBPACK_IMPORTED_MODULE_12__ = __webpack_require__(/*! ../common */ \"./node_modules/vega-lite/build/src/compile/common.js\");\n/* harmony import */ var _model__WEBPACK_IMPORTED_MODULE_13__ = __webpack_require__(/*! ../model */ \"./node_modules/vega-lite/build/src/compile/model.js\");\n/* harmony import */ var _split__WEBPACK_IMPORTED_MODULE_14__ = __webpack_require__(/*! ../split */ \"./node_modules/vega-lite/build/src/compile/split.js\");\n/* harmony import */ var _dataflow__WEBPACK_IMPORTED_MODULE_15__ = __webpack_require__(/*! ./dataflow */ \"./node_modules/vega-lite/build/src/compile/data/dataflow.js\");\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n/**\n * Remove quotes from a string.\n */\nfunction unquote(pattern) {\n    if ((pattern[0] === \"'\" && pattern[pattern.length - 1] === \"'\") ||\n        (pattern[0] === '\"' && pattern[pattern.length - 1] === '\"')) {\n        return pattern.slice(1, -1);\n    }\n    return pattern;\n}\n/**\n * @param field The field.\n * @param parse What to parse the field as.\n */\nfunction parseExpression(field, parse) {\n    const f = Object(_util__WEBPACK_IMPORTED_MODULE_11__[\"accessPathWithDatum\"])(field);\n    if (parse === 'number') {\n        return `toNumber(${f})`;\n    }\n    else if (parse === 'boolean') {\n        return `toBoolean(${f})`;\n    }\n    else if (parse === 'string') {\n        return `toString(${f})`;\n    }\n    else if (parse === 'date') {\n        return `toDate(${f})`;\n    }\n    else if (parse === 'flatten') {\n        return f;\n    }\n    else if (parse.indexOf('date:') === 0) {\n        const specifier = unquote(parse.slice(5, parse.length));\n        return `timeParse(${f},'${specifier}')`;\n    }\n    else if (parse.indexOf('utc:') === 0) {\n        const specifier = unquote(parse.slice(4, parse.length));\n        return `utcParse(${f},'${specifier}')`;\n    }\n    else {\n        _log__WEBPACK_IMPORTED_MODULE_6__[\"warn\"](_log__WEBPACK_IMPORTED_MODULE_6__[\"message\"].unrecognizedParse(parse));\n        return null;\n    }\n}\nfunction getImplicitFromFilterTransform(transform) {\n    const implicit = {};\n    Object(_logical__WEBPACK_IMPORTED_MODULE_7__[\"forEachLeaf\"])(transform.filter, filter => {\n        var _a;\n        if (Object(_predicate__WEBPACK_IMPORTED_MODULE_9__[\"isFieldPredicate\"])(filter)) {\n            // Automatically add a parse node for filters with filter objects\n            let val = null;\n            // For EqualFilter, just use the equal property.\n            // For RangeFilter and OneOfFilter, all array members should have\n            // the same type, so we only use the first one.\n            if (Object(_predicate__WEBPACK_IMPORTED_MODULE_9__[\"isFieldEqualPredicate\"])(filter)) {\n                val = Object(_common__WEBPACK_IMPORTED_MODULE_12__[\"signalRefOrValue\"])(filter.equal);\n            }\n            else if (Object(_predicate__WEBPACK_IMPORTED_MODULE_9__[\"isFieldLTEPredicate\"])(filter)) {\n                val = Object(_common__WEBPACK_IMPORTED_MODULE_12__[\"signalRefOrValue\"])(filter.lte);\n            }\n            else if (Object(_predicate__WEBPACK_IMPORTED_MODULE_9__[\"isFieldLTPredicate\"])(filter)) {\n                val = Object(_common__WEBPACK_IMPORTED_MODULE_12__[\"signalRefOrValue\"])(filter.lt);\n            }\n            else if (Object(_predicate__WEBPACK_IMPORTED_MODULE_9__[\"isFieldGTPredicate\"])(filter)) {\n                val = Object(_common__WEBPACK_IMPORTED_MODULE_12__[\"signalRefOrValue\"])(filter.gt);\n            }\n            else if (Object(_predicate__WEBPACK_IMPORTED_MODULE_9__[\"isFieldGTEPredicate\"])(filter)) {\n                val = Object(_common__WEBPACK_IMPORTED_MODULE_12__[\"signalRefOrValue\"])(filter.gte);\n            }\n            else if (Object(_predicate__WEBPACK_IMPORTED_MODULE_9__[\"isFieldRangePredicate\"])(filter)) {\n                val = filter.range[0];\n            }\n            else if (Object(_predicate__WEBPACK_IMPORTED_MODULE_9__[\"isFieldOneOfPredicate\"])(filter)) {\n                val = ((_a = filter.oneOf) !== null && _a !== void 0 ? _a : filter['in'])[0];\n            } // else -- for filter expression, we can't infer anything\n            if (val) {\n                if (Object(_datetime__WEBPACK_IMPORTED_MODULE_5__[\"isDateTime\"])(val)) {\n                    implicit[filter.field] = 'date';\n                }\n                else if (Object(vega_util__WEBPACK_IMPORTED_MODULE_0__[\"isNumber\"])(val)) {\n                    implicit[filter.field] = 'number';\n                }\n                else if (Object(vega_util__WEBPACK_IMPORTED_MODULE_0__[\"isString\"])(val)) {\n                    implicit[filter.field] = 'string';\n                }\n            }\n            if (filter.timeUnit) {\n                implicit[filter.field] = 'date';\n            }\n        }\n    });\n    return implicit;\n}\n/**\n * Creates a parse node for implicit parsing from a model and updates ancestorParse.\n */\nfunction getImplicitFromEncoding(model) {\n    const implicit = {};\n    function add(fieldDef) {\n        if (Object(_channeldef__WEBPACK_IMPORTED_MODULE_3__[\"isFieldOrDatumDefForTimeFormat\"])(fieldDef)) {\n            implicit[fieldDef.field] = 'date';\n        }\n        else if (fieldDef.type === 'quantitative' &&\n            Object(_aggregate__WEBPACK_IMPORTED_MODULE_1__[\"isMinMaxOp\"])(fieldDef.aggregate) // we need to parse numbers to support correct min and max\n        ) {\n            implicit[fieldDef.field] = 'number';\n        }\n        else if (Object(_util__WEBPACK_IMPORTED_MODULE_11__[\"accessPathDepth\"])(fieldDef.field) > 1) {\n            // For non-date/non-number (strings and booleans), derive a flattened field for a referenced nested field.\n            // (Parsing numbers / dates already flattens numeric and temporal fields.)\n            if (!(fieldDef.field in implicit)) {\n                implicit[fieldDef.field] = 'flatten';\n            }\n        }\n        else if (Object(_channeldef__WEBPACK_IMPORTED_MODULE_3__[\"isScaleFieldDef\"])(fieldDef) && Object(_sort__WEBPACK_IMPORTED_MODULE_10__[\"isSortField\"])(fieldDef.sort) && Object(_util__WEBPACK_IMPORTED_MODULE_11__[\"accessPathDepth\"])(fieldDef.sort.field) > 1) {\n            // Flatten fields that we sort by but that are not otherwise flattened.\n            if (!(fieldDef.sort.field in implicit)) {\n                implicit[fieldDef.sort.field] = 'flatten';\n            }\n        }\n    }\n    if (Object(_model__WEBPACK_IMPORTED_MODULE_13__[\"isUnitModel\"])(model) || Object(_model__WEBPACK_IMPORTED_MODULE_13__[\"isFacetModel\"])(model)) {\n        // Parse encoded fields\n        model.forEachFieldDef((fieldDef, channel) => {\n            if (Object(_channeldef__WEBPACK_IMPORTED_MODULE_3__[\"isTypedFieldDef\"])(fieldDef)) {\n                add(fieldDef);\n            }\n            else {\n                const mainChannel = Object(_channel__WEBPACK_IMPORTED_MODULE_2__[\"getMainRangeChannel\"])(channel);\n                const mainFieldDef = model.fieldDef(mainChannel);\n                add(Object.assign(Object.assign({}, fieldDef), { type: mainFieldDef.type }));\n            }\n        });\n    }\n    // Parse quantitative dimension fields of path marks as numbers so that we sort them correctly.\n    if (Object(_model__WEBPACK_IMPORTED_MODULE_13__[\"isUnitModel\"])(model)) {\n        const { mark, markDef, encoding } = model;\n        if (Object(_mark__WEBPACK_IMPORTED_MODULE_8__[\"isPathMark\"])(mark) &&\n            // No need to sort by dimension if we have a connected scatterplot (order channel is present)\n            !model.encoding.order) {\n            const dimensionChannel = markDef.orient === 'horizontal' ? 'y' : 'x';\n            const dimensionChannelDef = encoding[dimensionChannel];\n            if (Object(_channeldef__WEBPACK_IMPORTED_MODULE_3__[\"isFieldDef\"])(dimensionChannelDef) &&\n                dimensionChannelDef.type === 'quantitative' &&\n                !(dimensionChannelDef.field in implicit)) {\n                implicit[dimensionChannelDef.field] = 'number';\n            }\n        }\n    }\n    return implicit;\n}\n/**\n * Creates a parse node for implicit parsing from a model and updates ancestorParse.\n */\nfunction getImplicitFromSelection(model) {\n    const implicit = {};\n    if (Object(_model__WEBPACK_IMPORTED_MODULE_13__[\"isUnitModel\"])(model) && model.component.selection) {\n        for (const name of Object(_util__WEBPACK_IMPORTED_MODULE_11__[\"keys\"])(model.component.selection)) {\n            const selCmpt = model.component.selection[name];\n            for (const proj of selCmpt.project.items) {\n                if (!proj.channel && Object(_util__WEBPACK_IMPORTED_MODULE_11__[\"accessPathDepth\"])(proj.field) > 1) {\n                    implicit[proj.field] = 'flatten';\n                }\n            }\n        }\n    }\n    return implicit;\n}\nclass ParseNode extends _dataflow__WEBPACK_IMPORTED_MODULE_15__[\"DataFlowNode\"] {\n    constructor(parent, parse) {\n        super(parent);\n        this._parse = parse;\n    }\n    clone() {\n        return new ParseNode(null, Object(_util__WEBPACK_IMPORTED_MODULE_11__[\"duplicate\"])(this._parse));\n    }\n    hash() {\n        return `Parse ${Object(_util__WEBPACK_IMPORTED_MODULE_11__[\"hash\"])(this._parse)}`;\n    }\n    /**\n     * Creates a parse node from a data.format.parse and updates ancestorParse.\n     */\n    static makeExplicit(parent, model, ancestorParse) {\n        // Custom parse\n        let explicit = {};\n        const data = model.data;\n        if (!Object(_data__WEBPACK_IMPORTED_MODULE_4__[\"isGenerator\"])(data) && data && data.format && data.format.parse) {\n            explicit = data.format.parse;\n        }\n        return this.makeWithAncestors(parent, explicit, {}, ancestorParse);\n    }\n    /**\n     * Creates a parse node from \"explicit\" parse and \"implicit\" parse and updates ancestorParse.\n     */\n    static makeWithAncestors(parent, explicit, implicit, ancestorParse) {\n        // We should not parse what has already been parsed in a parent (explicitly or implicitly) or what has been derived (maked as \"derived\"). We also don't need to flatten a field that has already been parsed.\n        for (const field of Object(_util__WEBPACK_IMPORTED_MODULE_11__[\"keys\"])(implicit)) {\n            const parsedAs = ancestorParse.getWithExplicit(field);\n            if (parsedAs.value !== undefined) {\n                // We always ignore derived fields even if they are implicitly defined because we expect users to create the right types.\n                if (parsedAs.explicit ||\n                    parsedAs.value === implicit[field] ||\n                    parsedAs.value === 'derived' ||\n                    implicit[field] === 'flatten') {\n                    delete implicit[field];\n                }\n                else {\n                    _log__WEBPACK_IMPORTED_MODULE_6__[\"warn\"](_log__WEBPACK_IMPORTED_MODULE_6__[\"message\"].differentParse(field, implicit[field], parsedAs.value));\n                }\n            }\n        }\n        for (const field of Object(_util__WEBPACK_IMPORTED_MODULE_11__[\"keys\"])(explicit)) {\n            const parsedAs = ancestorParse.get(field);\n            if (parsedAs !== undefined) {\n                // Don't parse a field again if it has been parsed with the same type already.\n                if (parsedAs === explicit[field]) {\n                    delete explicit[field];\n                }\n                else {\n                    _log__WEBPACK_IMPORTED_MODULE_6__[\"warn\"](_log__WEBPACK_IMPORTED_MODULE_6__[\"message\"].differentParse(field, explicit[field], parsedAs));\n                }\n            }\n        }\n        const parse = new _split__WEBPACK_IMPORTED_MODULE_14__[\"Split\"](explicit, implicit);\n        // add the format parse from this model so that children don't parse the same field again\n        ancestorParse.copyAll(parse);\n        // copy only non-null parses\n        const p = {};\n        for (const key of Object(_util__WEBPACK_IMPORTED_MODULE_11__[\"keys\"])(parse.combine())) {\n            const val = parse.get(key);\n            if (val !== null) {\n                p[key] = val;\n            }\n        }\n        if (Object(_util__WEBPACK_IMPORTED_MODULE_11__[\"keys\"])(p).length === 0 || ancestorParse.parseNothing) {\n            return null;\n        }\n        return new ParseNode(parent, p);\n    }\n    get parse() {\n        return this._parse;\n    }\n    merge(other) {\n        this._parse = Object.assign(Object.assign({}, this._parse), other.parse);\n        other.remove();\n    }\n    /**\n     * Assemble an object for Vega's format.parse property.\n     */\n    assembleFormatParse() {\n        const formatParse = {};\n        for (const field of Object(_util__WEBPACK_IMPORTED_MODULE_11__[\"keys\"])(this._parse)) {\n            const p = this._parse[field];\n            if (Object(_util__WEBPACK_IMPORTED_MODULE_11__[\"accessPathDepth\"])(field) === 1) {\n                formatParse[field] = p;\n            }\n        }\n        return formatParse;\n    }\n    // format parse depends and produces all fields in its parse\n    producedFields() {\n        return new Set(Object(_util__WEBPACK_IMPORTED_MODULE_11__[\"keys\"])(this._parse));\n    }\n    dependentFields() {\n        return new Set(Object(_util__WEBPACK_IMPORTED_MODULE_11__[\"keys\"])(this._parse));\n    }\n    assembleTransforms(onlyNested = false) {\n        return Object(_util__WEBPACK_IMPORTED_MODULE_11__[\"keys\"])(this._parse)\n            .filter(field => (onlyNested ? Object(_util__WEBPACK_IMPORTED_MODULE_11__[\"accessPathDepth\"])(field) > 1 : true))\n            .map(field => {\n            const expr = parseExpression(field, this._parse[field]);\n            if (!expr) {\n                return null;\n            }\n            const formula = {\n                type: 'formula',\n                expr,\n                as: Object(_util__WEBPACK_IMPORTED_MODULE_11__[\"removePathFromField\"])(field) // Vega output is always flattened\n            };\n            return formula;\n        })\n            .filter(t => t !== null);\n    }\n}\n//# sourceMappingURL=formatparse.js.map//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,[encoded data, 18396 characters]\n//# sourceURL=webpack-internal:///./node_modules/vega-lite/build/src/compile/data/formatparse.js\n");

/***/ }),

/***/ "./node_modules/vega-lite/build/src/compile/data/geojson.js":
/*!******************************************************************!*\
  !*** ./node_modules/vega-lite/build/src/compile/data/geojson.js ***!
  \******************************************************************/
/*! exports provided: GeoJSONNode */
/***/ (function(module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"GeoJSONNode\", function() { return GeoJSONNode; });\n/* harmony import */ var vega_util__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! vega-util */ \"./node_modules/vega-lite/node_modules/vega-util/build/vega-util.module.js\");\n/* harmony import */ var _channel__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../../channel */ \"./node_modules/vega-lite/build/src/channel.js\");\n/* harmony import */ var _channeldef__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ../../channeldef */ \"./node_modules/vega-lite/build/src/channeldef.js\");\n/* harmony import */ var _type__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ../../type */ \"./node_modules/vega-lite/build/src/type.js\");\n/* harmony import */ var _util__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ../../util */ \"./node_modules/vega-lite/build/src/util.js\");\n/* harmony import */ var _dataflow__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! ./dataflow */ \"./node_modules/vega-lite/build/src/compile/data/dataflow.js\");\n\n\n\n\n\n\nclass GeoJSONNode extends _dataflow__WEBPACK_IMPORTED_MODULE_5__[\"DataFlowNode\"] {\n    constructor(parent, fields, geojson, signal) {\n        super(parent);\n        this.fields = fields;\n        this.geojson = geojson;\n        this.signal = signal;\n    }\n    clone() {\n        return new GeoJSONNode(null, Object(_util__WEBPACK_IMPORTED_MODULE_4__[\"duplicate\"])(this.fields), this.geojson, this.signal);\n    }\n    static parseAll(parent, model) {\n        if (model.component.projection && !model.component.projection.isFit) {\n            return parent;\n        }\n        let geoJsonCounter = 0;\n        for (const coordinates of [\n            [_channel__WEBPACK_IMPORTED_MODULE_1__[\"LONGITUDE\"], _channel__WEBPACK_IMPORTED_MODULE_1__[\"LATITUDE\"]],\n            [_channel__WEBPACK_IMPORTED_MODULE_1__[\"LONGITUDE2\"], _channel__WEBPACK_IMPORTED_MODULE_1__[\"LATITUDE2\"]]\n        ]) {\n            const pair = coordinates.map(channel => {\n                const def = Object(_channeldef__WEBPACK_IMPORTED_MODULE_2__[\"getFieldOrDatumDef\"])(model.encoding[channel]);\n                return Object(_channeldef__WEBPACK_IMPORTED_MODULE_2__[\"isFieldDef\"])(def)\n                    ? def.field\n                    : Object(_channeldef__WEBPACK_IMPORTED_MODULE_2__[\"isDatumDef\"])(def)\n                        ? { expr: `${def.datum}` }\n                        : Object(_channeldef__WEBPACK_IMPORTED_MODULE_2__[\"isValueDef\"])(def)\n                            ? { expr: `${def['value']}` }\n                            : undefined;\n            });\n            if (pair[0] || pair[1]) {\n                parent = new GeoJSONNode(parent, pair, null, model.getName(`geojson_${geoJsonCounter++}`));\n            }\n        }\n        if (model.channelHasField(_channel__WEBPACK_IMPORTED_MODULE_1__[\"SHAPE\"])) {\n            const fieldDef = model.typedFieldDef(_channel__WEBPACK_IMPORTED_MODULE_1__[\"SHAPE\"]);\n            if (fieldDef.type === _type__WEBPACK_IMPORTED_MODULE_3__[\"GEOJSON\"]) {\n                parent = new GeoJSONNode(parent, null, fieldDef.field, model.getName(`geojson_${geoJsonCounter++}`));\n            }\n        }\n        return parent;\n    }\n    dependentFields() {\n        var _a;\n        const fields = ((_a = this.fields) !== null && _a !== void 0 ? _a : []).filter(vega_util__WEBPACK_IMPORTED_MODULE_0__[\"isString\"]);\n        return new Set([...(this.geojson ? [this.geojson] : []), ...fields]);\n    }\n    producedFields() {\n        return new Set();\n    }\n    hash() {\n        return `GeoJSON ${this.geojson} ${this.signal} ${Object(_util__WEBPACK_IMPORTED_MODULE_4__[\"hash\"])(this.fields)}`;\n    }\n    assemble() {\n        return Object.assign(Object.assign(Object.assign({ type: 'geojson' }, (this.fields ? { fields: this.fields } : {})), (this.geojson ? { geojson: this.geojson } : {})), { signal: this.signal });\n    }\n}\n//# sourceMappingURL=geojson.js.map//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,[encoded data, 4240 characters]\n//# sourceURL=webpack-internal:///./node_modules/vega-lite/build/src/compile/data/geojson.js\n");

/***/ }),

/***/ "./node_modules/vega-lite/build/src/compile/data/geopoint.js":
/*!*******************************************************************!*\
  !*** ./node_modules/vega-lite/build/src/compile/data/geopoint.js ***!
  \*******************************************************************/
/*! exports provided: GeoPointNode */
/***/ (function(module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"GeoPointNode\", function() { return GeoPointNode; });\n/* harmony import */ var vega_util__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! vega-util */ \"./node_modules/vega-lite/node_modules/vega-util/build/vega-util.module.js\");\n/* harmony import */ var _channel__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../../channel */ \"./node_modules/vega-lite/build/src/channel.js\");\n/* harmony import */ var _channeldef__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ../../channeldef */ \"./node_modules/vega-lite/build/src/channeldef.js\");\n/* harmony import */ var _util__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ../../util */ \"./node_modules/vega-lite/build/src/util.js\");\n/* harmony import */ var _dataflow__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ./dataflow */ \"./node_modules/vega-lite/build/src/compile/data/dataflow.js\");\n\n\n\n\n\nclass GeoPointNode extends _dataflow__WEBPACK_IMPORTED_MODULE_4__[\"DataFlowNode\"] {\n    constructor(parent, projection, fields, as) {\n        super(parent);\n        this.projection = projection;\n        this.fields = fields;\n        this.as = as;\n    }\n    clone() {\n        return new GeoPointNode(null, this.projection, Object(_util__WEBPACK_IMPORTED_MODULE_3__[\"duplicate\"])(this.fields), Object(_util__WEBPACK_IMPORTED_MODULE_3__[\"duplicate\"])(this.as));\n    }\n    static parseAll(parent, model) {\n        if (!model.projectionName()) {\n            return parent;\n        }\n        for (const coordinates of [\n            [_channel__WEBPACK_IMPORTED_MODULE_1__[\"LONGITUDE\"], _channel__WEBPACK_IMPORTED_MODULE_1__[\"LATITUDE\"]],\n            [_channel__WEBPACK_IMPORTED_MODULE_1__[\"LONGITUDE2\"], _channel__WEBPACK_IMPORTED_MODULE_1__[\"LATITUDE2\"]]\n        ]) {\n            const pair = coordinates.map(channel => {\n                const def = Object(_channeldef__WEBPACK_IMPORTED_MODULE_2__[\"getFieldOrDatumDef\"])(model.encoding[channel]);\n                return Object(_channeldef__WEBPACK_IMPORTED_MODULE_2__[\"isFieldDef\"])(def)\n                    ? def.field\n                    : Object(_channeldef__WEBPACK_IMPORTED_MODULE_2__[\"isDatumDef\"])(def)\n                        ? { expr: `${def.datum}` }\n                        : Object(_channeldef__WEBPACK_IMPORTED_MODULE_2__[\"isValueDef\"])(def)\n                            ? { expr: `${def['value']}` }\n                            : undefined;\n            });\n            const suffix = coordinates[0] === _channel__WEBPACK_IMPORTED_MODULE_1__[\"LONGITUDE2\"] ? '2' : '';\n            if (pair[0] || pair[1]) {\n                parent = new GeoPointNode(parent, model.projectionName(), pair, [\n                    model.getName('x' + suffix),\n                    model.getName('y' + suffix)\n                ]);\n            }\n        }\n        return parent;\n    }\n    dependentFields() {\n        return new Set(this.fields.filter(vega_util__WEBPACK_IMPORTED_MODULE_0__[\"isString\"]));\n    }\n    producedFields() {\n        return new Set(this.as);\n    }\n    hash() {\n        return `Geopoint ${this.projection} ${Object(_util__WEBPACK_IMPORTED_MODULE_3__[\"hash\"])(this.fields)} ${Object(_util__WEBPACK_IMPORTED_MODULE_3__[\"hash\"])(this.as)}`;\n    }\n    assemble() {\n        return {\n            type: 'geopoint',\n            projection: this.projection,\n            fields: this.fields,\n            as: this.as\n        };\n    }\n}\n//# sourceMappingURL=geopoint.js.map//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvdmVnYS1saXRlL2J1aWxkL3NyYy9jb21waWxlL2RhdGEvZ2VvcG9pbnQuanMuanMiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvdmVnYS1saXRlL2J1aWxkL3NyYy9jb21waWxlL2RhdGEvZ2VvcG9pbnQuanM/YmQ1NCJdLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBpc1N0cmluZyB9IGZyb20gJ3ZlZ2EtdXRpbCc7XG5pbXBvcnQgeyBMQVRJVFVERSwgTEFUSVRVREUyLCBMT05HSVRVREUsIExPTkdJVFVERTIgfSBmcm9tICcuLi8uLi9jaGFubmVsJztcbmltcG9ydCB7IGdldEZpZWxkT3JEYXR1bURlZiwgaXNEYXR1bURlZiwgaXNGaWVsZERlZiwgaXNWYWx1ZURlZiB9IGZyb20gJy4uLy4uL2NoYW5uZWxkZWYnO1xuaW1wb3J0IHsgZHVwbGljYXRlLCBoYXNoIH0gZnJvbSAnLi4vLi4vdXRpbCc7XG5pbXBvcnQgeyBEYXRhRmxvd05vZGUgfSBmcm9tICcuL2RhdGFmbG93JztcbmV4cG9ydCBjbGFzcyBHZW9Qb2ludE5vZGUgZXh0ZW5kcyBEYXRhRmxvd05vZGUge1xuICAgIGNvbnN0cnVjdG9yKHBhcmVudCwgcHJvamVjdGlvbiwgZmllbGRzLCBhcykge1xuICAgICAgICBzdXBlcihwYXJlbnQpO1xuICAgICAgICB0aGlzLnByb2plY3Rpb24gPSBwcm9qZWN0aW9uO1xuICAgICAgICB0aGlzLmZpZWxkcyA9IGZpZWxkcztcbiAgICAgICAgdGhpcy5hcyA9IGFzO1xuICAgIH1cbiAgICBjbG9uZSgpIHtcbiAgICAgICAgcmV0dXJuIG5ldyBHZW9Qb2ludE5vZGUobnVsbCwgdGhpcy5wcm9qZWN0aW9uLCBkdXBsaWNhdGUodGhpcy5maWVsZHMpLCBkdXBsaWNhdGUodGhpcy5hcykpO1xuICAgIH1cbiAgICBzdGF0aWMgcGFyc2VBbGwocGFyZW50LCBtb2RlbCkge1xuICAgICAgICBpZiAoIW1vZGVsLnByb2plY3Rpb25OYW1lKCkpIHtcbiAgICAgICAgICAgIHJldHVybiBwYXJlbnQ7XG4gICAgICAgIH1cbiAgICAgICAgZm9yIChjb25zdCBjb29yZGluYXRlcyBvZiBbXG4gICAgICAgICAgICBbTE9OR0lUVURFLCBMQVRJVFVERV0sXG4gICAgICAgICAgICBbTE9OR0lUVURFMiwgTEFUSVRVREUyXVxuICAgICAgICBdKSB7XG4gICAgICAgICAgICBjb25zdCBwYWlyID0gY29vcmRpbmF0ZXMubWFwKGNoYW5uZWwgPT4ge1xuICAgICAgICAgICAgICAgIGNvbnN0IGRlZiA9IGdldEZpZWxkT3JEYXR1bURlZihtb2RlbC5lbmNvZGluZ1tjaGFubmVsXSk7XG4gICAgICAgICAgICAgICAgcmV0dXJuIGlzRmllbGREZWYoZGVmKVxuICAgICAgICAgICAgICAgICAgICA/IGRlZi5maWVsZFxuICAgICAgICAgICAgICAgICAgICA6IGlzRGF0dW1EZWYoZGVmKVxuICAgICAgICAgICAgICAgICAgICAgICAgPyB7IGV4cHI6IGAke2RlZi5kYXR1bX1gIH1cbiAgICAgICAgICAgICAgICAgICAgICAgIDogaXNWYWx1ZURlZihkZWYpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPyB7IGV4cHI6IGAke2RlZlsndmFsdWUnXX1gIH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA6IHVuZGVmaW5lZDtcbiAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgY29uc3Qgc3VmZml4ID0gY29vcmRpbmF0ZXNbMF0gPT09IExPTkdJVFVERTIgPyAnMicgOiAnJztcbiAgICAgICAgICAgIGlmIChwYWlyWzBdIHx8IHBhaXJbMV0pIHtcbiAgICAgICAgICAgICAgICBwYXJlbnQgPSBuZXcgR2VvUG9pbnROb2RlKHBhcmVudCwgbW9kZWwucHJvamVjdGlvbk5hbWUoKSwgcGFpciwgW1xuICAgICAgICAgICAgICAgICAgICBtb2RlbC5nZXROYW1lKCd4JyArIHN1ZmZpeCksXG4gICAgICAgICAgICAgICAgICAgIG1vZGVsLmdldE5hbWUoJ3knICsgc3VmZml4KVxuICAgICAgICAgICAgICAgIF0pO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICAgIHJldHVybiBwYXJlbnQ7XG4gICAgfVxuICAgIGRlcGVuZGVudEZpZWxkcygpIHtcbiAgICAgICAgcmV0dXJuIG5ldyBTZXQodGhpcy5maWVsZHMuZmlsdGVyKGlzU3RyaW5nKSk7XG4gICAgfVxuICAgIHByb2R1Y2VkRmllbGRzKCkge1xuICAgICAgICByZXR1cm4gbmV3IFNldCh0aGlzLmFzKTtcbiAgICB9XG4gICAgaGFzaCgpIHtcbiAgICAgICAgcmV0dXJuIGBHZW9wb2ludCAke3RoaXMucHJvamVjdGlvbn0gJHtoYXNoKHRoaXMuZmllbGRzKX0gJHtoYXNoKHRoaXMuYXMpfWA7XG4gICAgfVxuICAgIGFzc2VtYmxlKCkge1xuICAgICAgICByZXR1cm4ge1xuICAgICAgICAgICAgdHlwZTogJ2dlb3BvaW50JyxcbiAgICAgICAgICAgIHByb2plY3Rpb246IHRoaXMucHJvamVjdGlvbixcbiAgICAgICAgICAgIGZpZWxkczogdGhpcy5maWVsZHMsXG4gICAgICAgICAgICBhczogdGhpcy5hc1xuICAgICAgICB9O1xuICAgIH1cbn1cbi8vIyBzb3VyY2VNYXBwaW5nVVJMPWdlb3BvaW50LmpzLm1hcCJdLCJtYXBwaW5ncyI6IkFBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBIiwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///./node_modules/vega-lite/build/src/compile/data/geopoint.js\n");

/***/ }),

/***/ "./node_modules/vega-lite/build/src/compile/data/graticule.js":
/*!********************************************************************!*\
  !*** ./node_modules/vega-lite/build/src/compile/data/graticule.js ***!
  \********************************************************************/
/*! exports provided: GraticuleNode */
/***/ (function(module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"GraticuleNode\", function() { return GraticuleNode; });\n/* harmony import */ var _util__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../../util */ \"./node_modules/vega-lite/build/src/util.js\");\n/* harmony import */ var _dataflow__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./dataflow */ \"./node_modules/vega-lite/build/src/compile/data/dataflow.js\");\n\n\nclass GraticuleNode extends _dataflow__WEBPACK_IMPORTED_MODULE_1__[\"DataFlowNode\"] {\n    constructor(parent, params) {\n        super(parent);\n        this.params = params;\n    }\n    clone() {\n        return new GraticuleNode(null, this.params);\n    }\n    dependentFields() {\n        return new Set();\n    }\n    producedFields() {\n        return undefined; // there should never be a node before graticule\n    }\n    hash() {\n        return `Graticule ${Object(_util__WEBPACK_IMPORTED_MODULE_0__[\"hash\"])(this.params)}`;\n    }\n    assemble() {\n        return Object.assign({ type: 'graticule' }, (this.params === true ? {} : this.params));\n    }\n}\n//# sourceMappingURL=graticule.js.map//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvdmVnYS1saXRlL2J1aWxkL3NyYy9jb21waWxlL2RhdGEvZ3JhdGljdWxlLmpzLmpzIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL3ZlZ2EtbGl0ZS9idWlsZC9zcmMvY29tcGlsZS9kYXRhL2dyYXRpY3VsZS5qcz9jZTEzIl0sInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IGhhc2ggfSBmcm9tICcuLi8uLi91dGlsJztcbmltcG9ydCB7IERhdGFGbG93Tm9kZSB9IGZyb20gJy4vZGF0YWZsb3cnO1xuZXhwb3J0IGNsYXNzIEdyYXRpY3VsZU5vZGUgZXh0ZW5kcyBEYXRhRmxvd05vZGUge1xuICAgIGNvbnN0cnVjdG9yKHBhcmVudCwgcGFyYW1zKSB7XG4gICAgICAgIHN1cGVyKHBhcmVudCk7XG4gICAgICAgIHRoaXMucGFyYW1zID0gcGFyYW1zO1xuICAgIH1cbiAgICBjbG9uZSgpIHtcbiAgICAgICAgcmV0dXJuIG5ldyBHcmF0aWN1bGVOb2RlKG51bGwsIHRoaXMucGFyYW1zKTtcbiAgICB9XG4gICAgZGVwZW5kZW50RmllbGRzKCkge1xuICAgICAgICByZXR1cm4gbmV3IFNldCgpO1xuICAgIH1cbiAgICBwcm9kdWNlZEZpZWxkcygpIHtcbiAgICAgICAgcmV0dXJuIHVuZGVmaW5lZDsgLy8gdGhlcmUgc2hvdWxkIG5ldmVyIGJlIGEgbm9kZSBiZWZvcmUgZ3JhdGljdWxlXG4gICAgfVxuICAgIGhhc2goKSB7XG4gICAgICAgIHJldHVybiBgR3JhdGljdWxlICR7aGFzaCh0aGlzLnBhcmFtcyl9YDtcbiAgICB9XG4gICAgYXNzZW1ibGUoKSB7XG4gICAgICAgIHJldHVybiBPYmplY3QuYXNzaWduKHsgdHlwZTogJ2dyYXRpY3VsZScgfSwgKHRoaXMucGFyYW1zID09PSB0cnVlID8ge30gOiB0aGlzLnBhcmFtcykpO1xuICAgIH1cbn1cbi8vIyBzb3VyY2VNYXBwaW5nVVJMPWdyYXRpY3VsZS5qcy5tYXAiXSwibWFwcGluZ3MiOiJBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBIiwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///./node_modules/vega-lite/build/src/compile/data/graticule.js\n");

/***/ }),

/***/ "./node_modules/vega-lite/build/src/compile/data/identifier.js":
/*!*********************************************************************!*\
  !*** ./node_modules/vega-lite/build/src/compile/data/identifier.js ***!
  \*********************************************************************/
/*! exports provided: IdentifierNode */
/***/ (function(module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"IdentifierNode\", function() { return IdentifierNode; });\n/* harmony import */ var _selection__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../../selection */ \"./node_modules/vega-lite/build/src/selection.js\");\n/* harmony import */ var _dataflow__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./dataflow */ \"./node_modules/vega-lite/build/src/compile/data/dataflow.js\");\n\n\nclass IdentifierNode extends _dataflow__WEBPACK_IMPORTED_MODULE_1__[\"DataFlowNode\"] {\n    clone() {\n        return new IdentifierNode(null);\n    }\n    constructor(parent) {\n        super(parent);\n    }\n    dependentFields() {\n        return new Set();\n    }\n    producedFields() {\n        return new Set([_selection__WEBPACK_IMPORTED_MODULE_0__[\"SELECTION_ID\"]]);\n    }\n    hash() {\n        return 'Identifier';\n    }\n    assemble() {\n        return { type: 'identifier', as: _selection__WEBPACK_IMPORTED_MODULE_0__[\"SELECTION_ID\"] };\n    }\n}\n//# sourceMappingURL=identifier.js.map//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvdmVnYS1saXRlL2J1aWxkL3NyYy9jb21waWxlL2RhdGEvaWRlbnRpZmllci5qcy5qcyIsInNvdXJjZXMiOlsid2VicGFjazovLy8uL25vZGVfbW9kdWxlcy92ZWdhLWxpdGUvYnVpbGQvc3JjL2NvbXBpbGUvZGF0YS9pZGVudGlmaWVyLmpzP2Q0MjMiXSwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgU0VMRUNUSU9OX0lEIH0gZnJvbSAnLi4vLi4vc2VsZWN0aW9uJztcbmltcG9ydCB7IERhdGFGbG93Tm9kZSB9IGZyb20gJy4vZGF0YWZsb3cnO1xuZXhwb3J0IGNsYXNzIElkZW50aWZpZXJOb2RlIGV4dGVuZHMgRGF0YUZsb3dOb2RlIHtcbiAgICBjbG9uZSgpIHtcbiAgICAgICAgcmV0dXJuIG5ldyBJZGVudGlmaWVyTm9kZShudWxsKTtcbiAgICB9XG4gICAgY29uc3RydWN0b3IocGFyZW50KSB7XG4gICAgICAgIHN1cGVyKHBhcmVudCk7XG4gICAgfVxuICAgIGRlcGVuZGVudEZpZWxkcygpIHtcbiAgICAgICAgcmV0dXJuIG5ldyBTZXQoKTtcbiAgICB9XG4gICAgcHJvZHVjZWRGaWVsZHMoKSB7XG4gICAgICAgIHJldHVybiBuZXcgU2V0KFtTRUxFQ1RJT05fSURdKTtcbiAgICB9XG4gICAgaGFzaCgpIHtcbiAgICAgICAgcmV0dXJuICdJZGVudGlmaWVyJztcbiAgICB9XG4gICAgYXNzZW1ibGUoKSB7XG4gICAgICAgIHJldHVybiB7IHR5cGU6ICdpZGVudGlmaWVyJywgYXM6IFNFTEVDVElPTl9JRCB9O1xuICAgIH1cbn1cbi8vIyBzb3VyY2VNYXBwaW5nVVJMPWlkZW50aWZpZXIuanMubWFwIl0sIm1hcHBpbmdzIjoiQUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EiLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///./node_modules/vega-lite/build/src/compile/data/identifier.js\n");

/***/ }),

/***/ "./node_modules/vega-lite/build/src/compile/data/impute.js":
/*!*****************************************************************!*\
  !*** ./node_modules/vega-lite/build/src/compile/data/impute.js ***!
  \*****************************************************************/
/*! exports provided: ImputeNode */
/***/ (function(module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"ImputeNode\", function() { return ImputeNode; });\n/* harmony import */ var _channeldef__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../../channeldef */ \"./node_modules/vega-lite/build/src/channeldef.js\");\n/* harmony import */ var _encoding__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../../encoding */ \"./node_modules/vega-lite/build/src/encoding.js\");\n/* harmony import */ var _transform__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ../../transform */ \"./node_modules/vega-lite/build/src/transform.js\");\n/* harmony import */ var _util__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ../../util */ \"./node_modules/vega-lite/build/src/util.js\");\n/* harmony import */ var _dataflow__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ./dataflow */ \"./node_modules/vega-lite/build/src/compile/data/dataflow.js\");\n\n\n\n\n\nclass ImputeNode extends _dataflow__WEBPACK_IMPORTED_MODULE_4__[\"DataFlowNode\"] {\n    constructor(parent, transform) {\n        super(parent);\n        this.transform = transform;\n    }\n    clone() {\n        return new ImputeNode(null, Object(_util__WEBPACK_IMPORTED_MODULE_3__[\"duplicate\"])(this.transform));\n    }\n    dependentFields() {\n        var _a;\n        return new Set([this.transform.impute, this.transform.key, ...((_a = this.transform.groupby) !== null && _a !== void 0 ? _a : [])]);\n    }\n    producedFields() {\n        return new Set([this.transform.impute]);\n    }\n    processSequence(keyvals) {\n        const { start = 0, stop, step } = keyvals;\n        const result = [start, stop, ...(step ? [step] : [])].join(',');\n        return { signal: `sequence(${result})` };\n    }\n    static makeFromTransform(parent, imputeTransform) {\n        return new ImputeNode(parent, imputeTransform);\n    }\n    static makeFromEncoding(parent, model) {\n        const encoding = model.encoding;\n        const xDef = encoding.x;\n        const yDef = encoding.y;\n        if (Object(_channeldef__WEBPACK_IMPORTED_MODULE_0__[\"isFieldDef\"])(xDef) && Object(_channeldef__WEBPACK_IMPORTED_MODULE_0__[\"isFieldDef\"])(yDef)) {\n            const imputedChannel = xDef.impute ? xDef : yDef.impute ? yDef : undefined;\n            if (imputedChannel === undefined) {\n                return undefined;\n            }\n            const keyChannel = xDef.impute ? yDef : yDef.impute ? xDef : undefined;\n            const { method, value, frame, keyvals } = imputedChannel.impute;\n            const groupbyFields = Object(_encoding__WEBPACK_IMPORTED_MODULE_1__[\"pathGroupingFields\"])(model.mark, encoding);\n            return new ImputeNode(parent, Object.assign(Object.assign(Object.assign(Object.assign(Object.assign({ impute: imputedChannel.field, key: keyChannel.field }, (method ? { method } : {})), (value !== undefined ? { value } : {})), (frame ? { frame } : {})), (keyvals !== undefined ? { keyvals } : {})), (groupbyFields.length ? { groupby: groupbyFields } : {})));\n        }\n        return null;\n    }\n    hash() {\n        return `Impute ${Object(_util__WEBPACK_IMPORTED_MODULE_3__[\"hash\"])(this.transform)}`;\n    }\n    assemble() {\n        const { impute, key, keyvals, method, groupby, value, frame = [null, null] } = this.transform;\n        const imputeTransform = Object.assign(Object.assign(Object.assign(Object.assign({ type: 'impute', field: impute, key }, (keyvals ? { keyvals: Object(_transform__WEBPACK_IMPORTED_MODULE_2__[\"isImputeSequence\"])(keyvals) ? this.processSequence(keyvals) : keyvals } : {})), { method: 'value' }), (groupby ? { groupby } : {})), { value: !method || method === 'value' ? value : null });\n        if (method && method !== 'value') {\n            const deriveNewField = Object.assign({ type: 'window', as: [`imputed_${impute}_value`], ops: [method], fields: [impute], frame, ignorePeers: false }, (groupby ? { groupby } : {}));\n            const replaceOriginal = {\n                type: 'formula',\n                expr: `datum.${impute} === null ? datum.imputed_${impute}_value : datum.${impute}`,\n                as: impute\n            };\n            return [imputeTransform, deriveNewField, replaceOriginal];\n        }\n        else {\n            return [imputeTransform];\n        }\n    }\n}\n//# sourceMappingURL=impute.js.map//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,[encoded data, 5216 characters]\n//# sourceURL=webpack-internal:///./node_modules/vega-lite/build/src/compile/data/impute.js\n");

/***/ }),

/***/ "./node_modules/vega-lite/build/src/compile/data/index.js":
/*!****************************************************************!*\
  !*** ./node_modules/vega-lite/build/src/compile/data/index.js ***!
  \****************************************************************/
/*! exports provided: AncestorParse */
/***/ (function(module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"AncestorParse\", function() { return AncestorParse; });\n/* harmony import */ var _split__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../split */ \"./node_modules/vega-lite/build/src/compile/split.js\");\n\n/**\n * Class to track interesting properties (see https://15721.courses.cs.cmu.edu/spring2016/papers/graefe-ieee1995.pdf)\n * about how fields have been parsed or whether they have been derived in a transform. We use this to not parse the\n * same field again (or differently).\n */\nclass AncestorParse extends _split__WEBPACK_IMPORTED_MODULE_0__[\"Split\"] {\n    constructor(explicit = {}, implicit = {}, parseNothing = false) {\n        super(explicit, implicit);\n        this.explicit = explicit;\n        this.implicit = implicit;\n        this.parseNothing = parseNothing;\n    }\n    clone() {\n        const clone = super.clone();\n        clone.parseNothing = this.parseNothing;\n        return clone;\n    }\n}\n//# sourceMappingURL=index.js.map//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvdmVnYS1saXRlL2J1aWxkL3NyYy9jb21waWxlL2RhdGEvaW5kZXguanMuanMiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvdmVnYS1saXRlL2J1aWxkL3NyYy9jb21waWxlL2RhdGEvaW5kZXguanM/MWVlOSJdLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBTcGxpdCB9IGZyb20gJy4uL3NwbGl0Jztcbi8qKlxuICogQ2xhc3MgdG8gdHJhY2sgaW50ZXJlc3RpbmcgcHJvcGVydGllcyAoc2VlIGh0dHBzOi8vMTU3MjEuY291cnNlcy5jcy5jbXUuZWR1L3NwcmluZzIwMTYvcGFwZXJzL2dyYWVmZS1pZWVlMTk5NS5wZGYpXG4gKiBhYm91dCBob3cgZmllbGRzIGhhdmUgYmVlbiBwYXJzZWQgb3Igd2hldGhlciB0aGV5IGhhdmUgYmVlbiBkZXJpdmVkIGluIGEgdHJhbnNmb3JtLiBXZSB1c2UgdGhpcyB0byBub3QgcGFyc2UgdGhlXG4gKiBzYW1lIGZpZWxkIGFnYWluIChvciBkaWZmZXJlbnRseSkuXG4gKi9cbmV4cG9ydCBjbGFzcyBBbmNlc3RvclBhcnNlIGV4dGVuZHMgU3BsaXQge1xuICAgIGNvbnN0cnVjdG9yKGV4cGxpY2l0ID0ge30sIGltcGxpY2l0ID0ge30sIHBhcnNlTm90aGluZyA9IGZhbHNlKSB7XG4gICAgICAgIHN1cGVyKGV4cGxpY2l0LCBpbXBsaWNpdCk7XG4gICAgICAgIHRoaXMuZXhwbGljaXQgPSBleHBsaWNpdDtcbiAgICAgICAgdGhpcy5pbXBsaWNpdCA9IGltcGxpY2l0O1xuICAgICAgICB0aGlzLnBhcnNlTm90aGluZyA9IHBhcnNlTm90aGluZztcbiAgICB9XG4gICAgY2xvbmUoKSB7XG4gICAgICAgIGNvbnN0IGNsb25lID0gc3VwZXIuY2xvbmUoKTtcbiAgICAgICAgY2xvbmUucGFyc2VOb3RoaW5nID0gdGhpcy5wYXJzZU5vdGhpbmc7XG4gICAgICAgIHJldHVybiBjbG9uZTtcbiAgICB9XG59XG4vLyMgc291cmNlTWFwcGluZ1VSTD1pbmRleC5qcy5tYXAiXSwibWFwcGluZ3MiOiJBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EiLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///./node_modules/vega-lite/build/src/compile/data/index.js\n");

/***/ }),

/***/ "./node_modules/vega-lite/build/src/compile/data/joinaggregate.js":
/*!************************************************************************!*\
  !*** ./node_modules/vega-lite/build/src/compile/data/joinaggregate.js ***!
  \************************************************************************/
/*! exports provided: JoinAggregateTransformNode */
/***/ (function(module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"JoinAggregateTransformNode\", function() { return JoinAggregateTransformNode; });\n/* harmony import */ var _channeldef__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../../channeldef */ \"./node_modules/vega-lite/build/src/channeldef.js\");\n/* harmony import */ var _util__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../../util */ \"./node_modules/vega-lite/build/src/util.js\");\n/* harmony import */ var _dataflow__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./dataflow */ \"./node_modules/vega-lite/build/src/compile/data/dataflow.js\");\n\n\n\n\n/**\n * A class for the join aggregate transform nodes.\n */\nclass JoinAggregateTransformNode extends _dataflow__WEBPACK_IMPORTED_MODULE_2__[\"DataFlowNode\"] {\n    constructor(parent, transform) {\n        super(parent);\n        this.transform = transform;\n    }\n    clone() {\n        return new JoinAggregateTransformNode(null, Object(_util__WEBPACK_IMPORTED_MODULE_1__[\"duplicate\"])(this.transform));\n    }\n    addDimensions(fields) {\n        this.transform.groupby = Object(_util__WEBPACK_IMPORTED_MODULE_1__[\"unique\"])(this.transform.groupby.concat(fields), d => d);\n    }\n    dependentFields() {\n        const out = new Set();\n        if (this.transform.groupby) {\n            this.transform.groupby.forEach(out.add, out);\n        }\n        this.transform.joinaggregate\n            .map(w => w.field)\n            .filter(f => f !== undefined)\n            .forEach(out.add, out);\n        return out;\n    }\n    producedFields() {\n        return new Set(this.transform.joinaggregate.map(this.getDefaultName));\n    }\n    getDefaultName(joinAggregateFieldDef) {\n        var _a;\n        return (_a = joinAggregateFieldDef.as) !== null && _a !== void 0 ? _a : Object(_channeldef__WEBPACK_IMPORTED_MODULE_0__[\"vgField\"])(joinAggregateFieldDef);\n    }\n    hash() {\n        return `JoinAggregateTransform ${Object(_util__WEBPACK_IMPORTED_MODULE_1__[\"hash\"])(this.transform)}`;\n    }\n    assemble() {\n        const fields = [];\n        const ops = [];\n        const as = [];\n        for (const joinaggregate of this.transform.joinaggregate) {\n            ops.push(joinaggregate.op);\n            as.push(this.getDefaultName(joinaggregate));\n            fields.push(joinaggregate.field === undefined ? null : joinaggregate.field);\n        }\n        const groupby = this.transform.groupby;\n        return Object.assign({ type: 'joinaggregate', as,\n            ops,\n            fields }, (groupby !== undefined ? { groupby } : {}));\n    }\n}\n//# sourceMappingURL=joinaggregate.js.map//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvdmVnYS1saXRlL2J1aWxkL3NyYy9jb21waWxlL2RhdGEvam9pbmFnZ3JlZ2F0ZS5qcy5qcyIsInNvdXJjZXMiOlsid2VicGFjazovLy8uL25vZGVfbW9kdWxlcy92ZWdhLWxpdGUvYnVpbGQvc3JjL2NvbXBpbGUvZGF0YS9qb2luYWdncmVnYXRlLmpzPzcxOTEiXSwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgdmdGaWVsZCB9IGZyb20gJy4uLy4uL2NoYW5uZWxkZWYnO1xuaW1wb3J0IHsgZHVwbGljYXRlLCBoYXNoIH0gZnJvbSAnLi4vLi4vdXRpbCc7XG5pbXBvcnQgeyB1bmlxdWUgfSBmcm9tICcuLi8uLi91dGlsJztcbmltcG9ydCB7IERhdGFGbG93Tm9kZSB9IGZyb20gJy4vZGF0YWZsb3cnO1xuLyoqXG4gKiBBIGNsYXNzIGZvciB0aGUgam9pbiBhZ2dyZWdhdGUgdHJhbnNmb3JtIG5vZGVzLlxuICovXG5leHBvcnQgY2xhc3MgSm9pbkFnZ3JlZ2F0ZVRyYW5zZm9ybU5vZGUgZXh0ZW5kcyBEYXRhRmxvd05vZGUge1xuICAgIGNvbnN0cnVjdG9yKHBhcmVudCwgdHJhbnNmb3JtKSB7XG4gICAgICAgIHN1cGVyKHBhcmVudCk7XG4gICAgICAgIHRoaXMudHJhbnNmb3JtID0gdHJhbnNmb3JtO1xuICAgIH1cbiAgICBjbG9uZSgpIHtcbiAgICAgICAgcmV0dXJuIG5ldyBKb2luQWdncmVnYXRlVHJhbnNmb3JtTm9kZShudWxsLCBkdXBsaWNhdGUodGhpcy50cmFuc2Zvcm0pKTtcbiAgICB9XG4gICAgYWRkRGltZW5zaW9ucyhmaWVsZHMpIHtcbiAgICAgICAgdGhpcy50cmFuc2Zvcm0uZ3JvdXBieSA9IHVuaXF1ZSh0aGlzLnRyYW5zZm9ybS5ncm91cGJ5LmNvbmNhdChmaWVsZHMpLCBkID0+IGQpO1xuICAgIH1cbiAgICBkZXBlbmRlbnRGaWVsZHMoKSB7XG4gICAgICAgIGNvbnN0IG91dCA9IG5ldyBTZXQoKTtcbiAgICAgICAgaWYgKHRoaXMudHJhbnNmb3JtLmdyb3VwYnkpIHtcbiAgICAgICAgICAgIHRoaXMudHJhbnNmb3JtLmdyb3VwYnkuZm9yRWFjaChvdXQuYWRkLCBvdXQpO1xuICAgICAgICB9XG4gICAgICAgIHRoaXMudHJhbnNmb3JtLmpvaW5hZ2dyZWdhdGVcbiAgICAgICAgICAgIC5tYXAodyA9PiB3LmZpZWxkKVxuICAgICAgICAgICAgLmZpbHRlcihmID0+IGYgIT09IHVuZGVmaW5lZClcbiAgICAgICAgICAgIC5mb3JFYWNoKG91dC5hZGQsIG91dCk7XG4gICAgICAgIHJldHVybiBvdXQ7XG4gICAgfVxuICAgIHByb2R1Y2VkRmllbGRzKCkge1xuICAgICAgICByZXR1cm4gbmV3IFNldCh0aGlzLnRyYW5zZm9ybS5qb2luYWdncmVnYXRlLm1hcCh0aGlzLmdldERlZmF1bHROYW1lKSk7XG4gICAgfVxuICAgIGdldERlZmF1bHROYW1lKGpvaW5BZ2dyZWdhdGVGaWVsZERlZikge1xuICAgICAgICB2YXIgX2E7XG4gICAgICAgIHJldHVybiAoX2EgPSBqb2luQWdncmVnYXRlRmllbGREZWYuYXMpICE9PSBudWxsICYmIF9hICE9PSB2b2lkIDAgPyBfYSA6IHZnRmllbGQoam9pbkFnZ3JlZ2F0ZUZpZWxkRGVmKTtcbiAgICB9XG4gICAgaGFzaCgpIHtcbiAgICAgICAgcmV0dXJuIGBKb2luQWdncmVnYXRlVHJhbnNmb3JtICR7aGFzaCh0aGlzLnRyYW5zZm9ybSl9YDtcbiAgICB9XG4gICAgYXNzZW1ibGUoKSB7XG4gICAgICAgIGNvbnN0IGZpZWxkcyA9IFtdO1xuICAgICAgICBjb25zdCBvcHMgPSBbXTtcbiAgICAgICAgY29uc3QgYXMgPSBbXTtcbiAgICAgICAgZm9yIChjb25zdCBqb2luYWdncmVnYXRlIG9mIHRoaXMudHJhbnNmb3JtLmpvaW5hZ2dyZWdhdGUpIHtcbiAgICAgICAgICAgIG9wcy5wdXNoKGpvaW5hZ2dyZWdhdGUub3ApO1xuICAgICAgICAgICAgYXMucHVzaCh0aGlzLmdldERlZmF1bHROYW1lKGpvaW5hZ2dyZWdhdGUpKTtcbiAgICAgICAgICAgIGZpZWxkcy5wdXNoKGpvaW5hZ2dyZWdhdGUuZmllbGQgPT09IHVuZGVmaW5lZCA/IG51bGwgOiBqb2luYWdncmVnYXRlLmZpZWxkKTtcbiAgICAgICAgfVxuICAgICAgICBjb25zdCBncm91cGJ5ID0gdGhpcy50cmFuc2Zvcm0uZ3JvdXBieTtcbiAgICAgICAgcmV0dXJuIE9iamVjdC5hc3NpZ24oeyB0eXBlOiAnam9pbmFnZ3JlZ2F0ZScsIGFzLFxuICAgICAgICAgICAgb3BzLFxuICAgICAgICAgICAgZmllbGRzIH0sIChncm91cGJ5ICE9PSB1bmRlZmluZWQgPyB7IGdyb3VwYnkgfSA6IHt9KSk7XG4gICAgfVxufVxuLy8jIHNvdXJjZU1hcHBpbmdVUkw9am9pbmFnZ3JlZ2F0ZS5qcy5tYXAiXSwibWFwcGluZ3MiOiJBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSIsInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///./node_modules/vega-lite/build/src/compile/data/joinaggregate.js\n");

/***/ }),

/***/ "./node_modules/vega-lite/build/src/compile/data/joinaggregatefacet.js":
/*!*****************************************************************************!*\
  !*** ./node_modules/vega-lite/build/src/compile/data/joinaggregatefacet.js ***!
  \*****************************************************************************/
/*! exports provided: makeJoinAggregateFromFacet */
/***/ (function(module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"makeJoinAggregateFromFacet\", function() { return makeJoinAggregateFromFacet; });\n/* harmony import */ var _channeldef__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../../channeldef */ \"./node_modules/vega-lite/build/src/channeldef.js\");\n/* harmony import */ var _sort__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../../sort */ \"./node_modules/vega-lite/build/src/sort.js\");\n/* harmony import */ var _facet__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ../facet */ \"./node_modules/vega-lite/build/src/compile/facet.js\");\n/* harmony import */ var _joinaggregate__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ./joinaggregate */ \"./node_modules/vega-lite/build/src/compile/data/joinaggregate.js\");\n\n\n\n\nfunction makeJoinAggregateFromFacet(parent, facet) {\n    const { row, column } = facet;\n    if (row && column) {\n        let newParent = null;\n        // only need to make one for crossed facet\n        for (const fieldDef of [row, column]) {\n            if (Object(_sort__WEBPACK_IMPORTED_MODULE_1__[\"isSortField\"])(fieldDef.sort)) {\n                const { field, op = _sort__WEBPACK_IMPORTED_MODULE_1__[\"DEFAULT_SORT_OP\"] } = fieldDef.sort;\n                parent = newParent = new _joinaggregate__WEBPACK_IMPORTED_MODULE_3__[\"JoinAggregateTransformNode\"](parent, {\n                    joinaggregate: [\n                        {\n                            op,\n                            field,\n                            as: Object(_facet__WEBPACK_IMPORTED_MODULE_2__[\"facetSortFieldName\"])(fieldDef, fieldDef.sort, { forAs: true })\n                        }\n                    ],\n                    groupby: [Object(_channeldef__WEBPACK_IMPORTED_MODULE_0__[\"vgField\"])(fieldDef)]\n                });\n            }\n        }\n        return newParent;\n    }\n    return null;\n}\n//# sourceMappingURL=joinaggregatefacet.js.map//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvdmVnYS1saXRlL2J1aWxkL3NyYy9jb21waWxlL2RhdGEvam9pbmFnZ3JlZ2F0ZWZhY2V0LmpzLmpzIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL3ZlZ2EtbGl0ZS9idWlsZC9zcmMvY29tcGlsZS9kYXRhL2pvaW5hZ2dyZWdhdGVmYWNldC5qcz82MjgzIl0sInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IHZnRmllbGQgfSBmcm9tICcuLi8uLi9jaGFubmVsZGVmJztcbmltcG9ydCB7IERFRkFVTFRfU09SVF9PUCwgaXNTb3J0RmllbGQgfSBmcm9tICcuLi8uLi9zb3J0JztcbmltcG9ydCB7IGZhY2V0U29ydEZpZWxkTmFtZSB9IGZyb20gJy4uL2ZhY2V0JztcbmltcG9ydCB7IEpvaW5BZ2dyZWdhdGVUcmFuc2Zvcm1Ob2RlIH0gZnJvbSAnLi9qb2luYWdncmVnYXRlJztcbmV4cG9ydCBmdW5jdGlvbiBtYWtlSm9pbkFnZ3JlZ2F0ZUZyb21GYWNldChwYXJlbnQsIGZhY2V0KSB7XG4gICAgY29uc3QgeyByb3csIGNvbHVtbiB9ID0gZmFjZXQ7XG4gICAgaWYgKHJvdyAmJiBjb2x1bW4pIHtcbiAgICAgICAgbGV0IG5ld1BhcmVudCA9IG51bGw7XG4gICAgICAgIC8vIG9ubHkgbmVlZCB0byBtYWtlIG9uZSBmb3IgY3Jvc3NlZCBmYWNldFxuICAgICAgICBmb3IgKGNvbnN0IGZpZWxkRGVmIG9mIFtyb3csIGNvbHVtbl0pIHtcbiAgICAgICAgICAgIGlmIChpc1NvcnRGaWVsZChmaWVsZERlZi5zb3J0KSkge1xuICAgICAgICAgICAgICAgIGNvbnN0IHsgZmllbGQsIG9wID0gREVGQVVMVF9TT1JUX09QIH0gPSBmaWVsZERlZi5zb3J0O1xuICAgICAgICAgICAgICAgIHBhcmVudCA9IG5ld1BhcmVudCA9IG5ldyBKb2luQWdncmVnYXRlVHJhbnNmb3JtTm9kZShwYXJlbnQsIHtcbiAgICAgICAgICAgICAgICAgICAgam9pbmFnZ3JlZ2F0ZTogW1xuICAgICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9wLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZpZWxkLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFzOiBmYWNldFNvcnRGaWVsZE5hbWUoZmllbGREZWYsIGZpZWxkRGVmLnNvcnQsIHsgZm9yQXM6IHRydWUgfSlcbiAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgXSxcbiAgICAgICAgICAgICAgICAgICAgZ3JvdXBieTogW3ZnRmllbGQoZmllbGREZWYpXVxuICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICAgIHJldHVybiBuZXdQYXJlbnQ7XG4gICAgfVxuICAgIHJldHVybiBudWxsO1xufVxuLy8jIHNvdXJjZU1hcHBpbmdVUkw9am9pbmFnZ3JlZ2F0ZWZhY2V0LmpzLm1hcCJdLCJtYXBwaW5ncyI6IkFBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSIsInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///./node_modules/vega-lite/build/src/compile/data/joinaggregatefacet.js\n");

/***/ }),

/***/ "./node_modules/vega-lite/build/src/compile/data/loess.js":
/*!****************************************************************!*\
  !*** ./node_modules/vega-lite/build/src/compile/data/loess.js ***!
  \****************************************************************/
/*! exports provided: LoessTransformNode */
/***/ (function(module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"LoessTransformNode\", function() { return LoessTransformNode; });\n/* harmony import */ var _util__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../../util */ \"./node_modules/vega-lite/build/src/util.js\");\n/* harmony import */ var _dataflow__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./dataflow */ \"./node_modules/vega-lite/build/src/compile/data/dataflow.js\");\nvar __rest = (undefined && undefined.__rest) || function (s, e) {\n    var t = {};\n    for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0)\n        t[p] = s[p];\n    if (s != null && typeof Object.getOwnPropertySymbols === \"function\")\n        for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) {\n            if (e.indexOf(p[i]) < 0 && Object.prototype.propertyIsEnumerable.call(s, p[i]))\n                t[p[i]] = s[p[i]];\n        }\n    return t;\n};\n\n\n/**\n * A class for loess transform nodes\n */\nclass LoessTransformNode extends _dataflow__WEBPACK_IMPORTED_MODULE_1__[\"DataFlowNode\"] {\n    constructor(parent, transform) {\n        var _a, _b, _c;\n        super(parent);\n        this.transform = transform;\n        this.transform = Object(_util__WEBPACK_IMPORTED_MODULE_0__[\"duplicate\"])(transform); // duplicate to prevent side effects\n        const specifiedAs = (_a = this.transform.as) !== null && _a !== void 0 ? _a : [undefined, undefined];\n        this.transform.as = [(_b = specifiedAs[0]) !== null && _b !== void 0 ? _b : transform.on, (_c = specifiedAs[1]) !== null && _c !== void 0 ? _c : transform.loess];\n    }\n    clone() {\n        return new LoessTransformNode(null, Object(_util__WEBPACK_IMPORTED_MODULE_0__[\"duplicate\"])(this.transform));\n    }\n    dependentFields() {\n        var _a;\n        return new Set([this.transform.loess, this.transform.on, ...((_a = this.transform.groupby) !== null && _a !== void 0 ? _a : [])]);\n    }\n    producedFields() {\n        return new Set(this.transform.as);\n    }\n    hash() {\n        return `LoessTransform ${Object(_util__WEBPACK_IMPORTED_MODULE_0__[\"hash\"])(this.transform)}`;\n    }\n    assemble() {\n        const _a = this.transform, { loess, on } = _a, rest = __rest(_a, [\"loess\", \"on\"]);\n        const result = Object.assign({ type: 'loess', x: on, y: loess }, rest);\n        return result;\n    }\n}\n//# sourceMappingURL=loess.js.map//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvdmVnYS1saXRlL2J1aWxkL3NyYy9jb21waWxlL2RhdGEvbG9lc3MuanMuanMiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvdmVnYS1saXRlL2J1aWxkL3NyYy9jb21waWxlL2RhdGEvbG9lc3MuanM/ZmZkYSJdLCJzb3VyY2VzQ29udGVudCI6WyJ2YXIgX19yZXN0ID0gKHRoaXMgJiYgdGhpcy5fX3Jlc3QpIHx8IGZ1bmN0aW9uIChzLCBlKSB7XG4gICAgdmFyIHQgPSB7fTtcbiAgICBmb3IgKHZhciBwIGluIHMpIGlmIChPYmplY3QucHJvdG90eXBlLmhhc093blByb3BlcnR5LmNhbGwocywgcCkgJiYgZS5pbmRleE9mKHApIDwgMClcbiAgICAgICAgdFtwXSA9IHNbcF07XG4gICAgaWYgKHMgIT0gbnVsbCAmJiB0eXBlb2YgT2JqZWN0LmdldE93blByb3BlcnR5U3ltYm9scyA9PT0gXCJmdW5jdGlvblwiKVxuICAgICAgICBmb3IgKHZhciBpID0gMCwgcCA9IE9iamVjdC5nZXRPd25Qcm9wZXJ0eVN5bWJvbHMocyk7IGkgPCBwLmxlbmd0aDsgaSsrKSB7XG4gICAgICAgICAgICBpZiAoZS5pbmRleE9mKHBbaV0pIDwgMCAmJiBPYmplY3QucHJvdG90eXBlLnByb3BlcnR5SXNFbnVtZXJhYmxlLmNhbGwocywgcFtpXSkpXG4gICAgICAgICAgICAgICAgdFtwW2ldXSA9IHNbcFtpXV07XG4gICAgICAgIH1cbiAgICByZXR1cm4gdDtcbn07XG5pbXBvcnQgeyBkdXBsaWNhdGUsIGhhc2ggfSBmcm9tICcuLi8uLi91dGlsJztcbmltcG9ydCB7IERhdGFGbG93Tm9kZSB9IGZyb20gJy4vZGF0YWZsb3cnO1xuLyoqXG4gKiBBIGNsYXNzIGZvciBsb2VzcyB0cmFuc2Zvcm0gbm9kZXNcbiAqL1xuZXhwb3J0IGNsYXNzIExvZXNzVHJhbnNmb3JtTm9kZSBleHRlbmRzIERhdGFGbG93Tm9kZSB7XG4gICAgY29uc3RydWN0b3IocGFyZW50LCB0cmFuc2Zvcm0pIHtcbiAgICAgICAgdmFyIF9hLCBfYiwgX2M7XG4gICAgICAgIHN1cGVyKHBhcmVudCk7XG4gICAgICAgIHRoaXMudHJhbnNmb3JtID0gdHJhbnNmb3JtO1xuICAgICAgICB0aGlzLnRyYW5zZm9ybSA9IGR1cGxpY2F0ZSh0cmFuc2Zvcm0pOyAvLyBkdXBsaWNhdGUgdG8gcHJldmVudCBzaWRlIGVmZmVjdHNcbiAgICAgICAgY29uc3Qgc3BlY2lmaWVkQXMgPSAoX2EgPSB0aGlzLnRyYW5zZm9ybS5hcykgIT09IG51bGwgJiYgX2EgIT09IHZvaWQgMCA/IF9hIDogW3VuZGVmaW5lZCwgdW5kZWZpbmVkXTtcbiAgICAgICAgdGhpcy50cmFuc2Zvcm0uYXMgPSBbKF9iID0gc3BlY2lmaWVkQXNbMF0pICE9PSBudWxsICYmIF9iICE9PSB2b2lkIDAgPyBfYiA6IHRyYW5zZm9ybS5vbiwgKF9jID0gc3BlY2lmaWVkQXNbMV0pICE9PSBudWxsICYmIF9jICE9PSB2b2lkIDAgPyBfYyA6IHRyYW5zZm9ybS5sb2Vzc107XG4gICAgfVxuICAgIGNsb25lKCkge1xuICAgICAgICByZXR1cm4gbmV3IExvZXNzVHJhbnNmb3JtTm9kZShudWxsLCBkdXBsaWNhdGUodGhpcy50cmFuc2Zvcm0pKTtcbiAgICB9XG4gICAgZGVwZW5kZW50RmllbGRzKCkge1xuICAgICAgICB2YXIgX2E7XG4gICAgICAgIHJldHVybiBuZXcgU2V0KFt0aGlzLnRyYW5zZm9ybS5sb2VzcywgdGhpcy50cmFuc2Zvcm0ub24sIC4uLigoX2EgPSB0aGlzLnRyYW5zZm9ybS5ncm91cGJ5KSAhPT0gbnVsbCAmJiBfYSAhPT0gdm9pZCAwID8gX2EgOiBbXSldKTtcbiAgICB9XG4gICAgcHJvZHVjZWRGaWVsZHMoKSB7XG4gICAgICAgIHJldHVybiBuZXcgU2V0KHRoaXMudHJhbnNmb3JtLmFzKTtcbiAgICB9XG4gICAgaGFzaCgpIHtcbiAgICAgICAgcmV0dXJuIGBMb2Vzc1RyYW5zZm9ybSAke2hhc2godGhpcy50cmFuc2Zvcm0pfWA7XG4gICAgfVxuICAgIGFzc2VtYmxlKCkge1xuICAgICAgICBjb25zdCBfYSA9IHRoaXMudHJhbnNmb3JtLCB7IGxvZXNzLCBvbiB9ID0gX2EsIHJlc3QgPSBfX3Jlc3QoX2EsIFtcImxvZXNzXCIsIFwib25cIl0pO1xuICAgICAgICBjb25zdCByZXN1bHQgPSBPYmplY3QuYXNzaWduKHsgdHlwZTogJ2xvZXNzJywgeDogb24sIHk6IGxvZXNzIH0sIHJlc3QpO1xuICAgICAgICByZXR1cm4gcmVzdWx0O1xuICAgIH1cbn1cbi8vIyBzb3VyY2VNYXBwaW5nVVJMPWxvZXNzLmpzLm1hcCJdLCJtYXBwaW5ncyI6IkFBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EiLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///./node_modules/vega-lite/build/src/compile/data/loess.js\n");

/***/ }),

/***/ "./node_modules/vega-lite/build/src/compile/data/lookup.js":
/*!*****************************************************************!*\
  !*** ./node_modules/vega-lite/build/src/compile/data/lookup.js ***!
  \*****************************************************************/
/*! exports provided: LookupNode */
/***/ (function(module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"LookupNode\", function() { return LookupNode; });\n/* harmony import */ var vega_util__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! vega-util */ \"./node_modules/vega-lite/node_modules/vega-util/build/vega-util.module.js\");\n/* harmony import */ var _log__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../../log */ \"./node_modules/vega-lite/build/src/log/index.js\");\n/* harmony import */ var _transform__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ../../transform */ \"./node_modules/vega-lite/build/src/transform.js\");\n/* harmony import */ var _util__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ../../util */ \"./node_modules/vega-lite/build/src/util.js\");\n/* harmony import */ var _dataflow__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ./dataflow */ \"./node_modules/vega-lite/build/src/compile/data/dataflow.js\");\n/* harmony import */ var _parse__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! ./parse */ \"./node_modules/vega-lite/build/src/compile/data/parse.js\");\n/* harmony import */ var _source__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! ./source */ \"./node_modules/vega-lite/build/src/compile/data/source.js\");\n/* harmony import */ var _data__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! ../../data */ \"./node_modules/vega-lite/build/src/data.js\");\n\n\n\n\n\n\n\n\nclass LookupNode extends _dataflow__WEBPACK_IMPORTED_MODULE_4__[\"DataFlowNode\"] {\n    constructor(parent, transform, secondary) {\n        super(parent);\n        this.transform = transform;\n        this.secondary = secondary;\n    }\n    clone() {\n        return new LookupNode(null, Object(_util__WEBPACK_IMPORTED_MODULE_3__[\"duplicate\"])(this.transform), this.secondary);\n    }\n    static make(parent, model, transform, counter) {\n        const sources = model.component.data.sources;\n        const { from } = transform;\n        let fromOutputNode = null;\n        if (Object(_transform__WEBPACK_IMPORTED_MODULE_2__[\"isLookupData\"])(from)) {\n            let fromSource = Object(_parse__WEBPACK_IMPORTED_MODULE_5__[\"findSource\"])(from.data, sources);\n            if (!fromSource) {\n                fromSource = new _source__WEBPACK_IMPORTED_MODULE_6__[\"SourceNode\"](from.data);\n                sources.push(fromSource);\n            }\n            const fromOutputName = model.getName(`lookup_${counter}`);\n            fromOutputNode = new _dataflow__WEBPACK_IMPORTED_MODULE_4__[\"OutputNode\"](fromSource, fromOutputName, _data__WEBPACK_IMPORTED_MODULE_7__[\"DataSourceType\"].Lookup, model.component.data.outputNodeRefCounts);\n            model.component.data.outputNodes[fromOutputName] = fromOutputNode;\n        }\n        else if (Object(_transform__WEBPACK_IMPORTED_MODULE_2__[\"isLookupSelection\"])(from)) {\n            const selName = from.selection;\n            transform = Object.assign({ as: selName }, transform);\n            fromOutputNode = model.getSelectionComponent(Object(_util__WEBPACK_IMPORTED_MODULE_3__[\"varName\"])(selName), selName).materialized;\n            if (!fromOutputNode) {\n                throw new Error(_log__WEBPACK_IMPORTED_MODULE_1__[\"message\"].noSameUnitLookup(selName));\n            }\n        }\n        return new LookupNode(parent, transform, fromOutputNode.getSource());\n    }\n    dependentFields() {\n        return new Set([this.transform.lookup]);\n    }\n    producedFields() {\n        return new Set(this.transform.as ? Object(vega_util__WEBPACK_IMPORTED_MODULE_0__[\"array\"])(this.transform.as) : this.transform.from.fields);\n    }\n    hash() {\n        return `Lookup ${Object(_util__WEBPACK_IMPORTED_MODULE_3__[\"hash\"])({ transform: this.transform, secondary: this.secondary })}`;\n    }\n    assemble() {\n        let foreign;\n        if (this.transform.from.fields) {\n            // lookup a few fields and add create a flat output\n            foreign = Object.assign({ values: this.transform.from.fields }, (this.transform.as ? { as: Object(vega_util__WEBPACK_IMPORTED_MODULE_0__[\"array\"])(this.transform.as) } : {}));\n        }\n        else {\n            // lookup full record and nest it\n            let asName = this.transform.as;\n            if (!Object(vega_util__WEBPACK_IMPORTED_MODULE_0__[\"isString\"])(asName)) {\n                _log__WEBPACK_IMPORTED_MODULE_1__[\"warn\"](_log__WEBPACK_IMPORTED_MODULE_1__[\"message\"].NO_FIELDS_NEEDS_AS);\n                asName = '_lookup';\n            }\n            foreign = {\n                as: [asName]\n            };\n        }\n        return Object.assign(Object.assign({ type: 'lookup', from: this.secondary, key: this.transform.from.key, fields: [this.transform.lookup] }, foreign), (this.transform.default ? { default: this.transform.default } : {}));\n    }\n}\n//# sourceMappingURL=lookup.js.map//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,[encoded data, 5016 characters]\n//# sourceURL=webpack-internal:///./node_modules/vega-lite/build/src/compile/data/lookup.js\n");

/***/ }),

/***/ "./node_modules/vega-lite/build/src/compile/data/optimize.js":
/*!*******************************************************************!*\
  !*** ./node_modules/vega-lite/build/src/compile/data/optimize.js ***!
  \*******************************************************************/
/*! exports provided: FACET_SCALE_PREFIX, MAX_OPTIMIZATION_RUNS, checkLinks, optimizeDataflow */
/***/ (function(module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"FACET_SCALE_PREFIX\", function() { return FACET_SCALE_PREFIX; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"MAX_OPTIMIZATION_RUNS\", function() { return MAX_OPTIMIZATION_RUNS; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"checkLinks\", function() { return checkLinks; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"optimizeDataflow\", function() { return optimizeDataflow; });\n/* harmony import */ var _log__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../../log */ \"./node_modules/vega-lite/build/src/log/index.js\");\n/* harmony import */ var _optimizers__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./optimizers */ \"./node_modules/vega-lite/build/src/compile/data/optimizers.js\");\n/* harmony import */ var _subtree__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./subtree */ \"./node_modules/vega-lite/build/src/compile/data/subtree.js\");\n\n\n\nconst FACET_SCALE_PREFIX = 'scale_';\nconst MAX_OPTIMIZATION_RUNS = 5;\n/**\n * Iterates over a dataflow graph and checks whether all links are consistent.\n */\nfunction checkLinks(nodes) {\n    for (const node of nodes) {\n        for (const child of node.children) {\n            if (child.parent !== node) {\n                // log.error('Dataflow graph is inconsistent.', node, child);\n                return false;\n            }\n        }\n        if (!checkLinks(node.children)) {\n            return false;\n        }\n    }\n    return true;\n}\n/**\n * Run the specified optimizer on the provided nodes.\n *\n * @param optimizer The optimizer instance to run.\n * @param nodes A set of nodes to optimize.\n */\nfunction runOptimizer(optimizer, nodes) {\n    let modified = false;\n    for (const node of nodes) {\n        modified = optimizer.optimize(node) || modified;\n    }\n    return modified;\n}\nfunction optimizationDataflowHelper(dataComponent, model, firstPass) {\n    let roots = dataComponent.sources;\n    let modified = false;\n    modified = runOptimizer(new _optimizers__WEBPACK_IMPORTED_MODULE_1__[\"RemoveUnnecessaryOutputNodes\"](), roots) || modified;\n    modified = runOptimizer(new _optimizers__WEBPACK_IMPORTED_MODULE_1__[\"RemoveUnnecessaryIdentifierNodes\"](model), roots) || modified;\n    // remove source nodes that don't have any children because they also don't have output nodes\n    roots = roots.filter(r => r.numChildren() > 0);\n    modified = runOptimizer(new _optimizers__WEBPACK_IMPORTED_MODULE_1__[\"RemoveUnusedSubtrees\"](), roots) || modified;\n    roots = roots.filter(r => r.numChildren() > 0);\n    if (!firstPass) {\n        // Only run these optimizations after the optimizer has moved down the facet node.\n        // With this change, we can be more aggressive in the optimizations.\n        modified = runOptimizer(new _optimizers__WEBPACK_IMPORTED_MODULE_1__[\"MoveParseUp\"](), roots) || modified;\n        modified = runOptimizer(new _optimizers__WEBPACK_IMPORTED_MODULE_1__[\"MergeBins\"](model), roots) || modified;\n        modified = runOptimizer(new _optimizers__WEBPACK_IMPORTED_MODULE_1__[\"RemoveDuplicateTimeUnits\"](), roots) || modified;\n        modified = runOptimizer(new _optimizers__WEBPACK_IMPORTED_MODULE_1__[\"MergeParse\"](), roots) || modified;\n        modified = runOptimizer(new _optimizers__WEBPACK_IMPORTED_MODULE_1__[\"MergeAggregates\"](), roots) || modified;\n        modified = runOptimizer(new _optimizers__WEBPACK_IMPORTED_MODULE_1__[\"MergeTimeUnits\"](), roots) || modified;\n        modified = runOptimizer(new _optimizers__WEBPACK_IMPORTED_MODULE_1__[\"MergeIdenticalNodes\"](), roots) || modified;\n        modified = runOptimizer(new _optimizers__WEBPACK_IMPORTED_MODULE_1__[\"MergeOutputs\"](), roots) || modified;\n    }\n    dataComponent.sources = roots;\n    return modified;\n}\n/**\n * Optimizes the dataflow of the passed in data component.\n */\nfunction optimizeDataflow(data, model) {\n    // check before optimizations\n    checkLinks(data.sources);\n    let firstPassCounter = 0;\n    let secondPassCounter = 0;\n    for (let i = 0; i < MAX_OPTIMIZATION_RUNS; i++) {\n        if (!optimizationDataflowHelper(data, model, true)) {\n            break;\n        }\n        firstPassCounter++;\n    }\n    // move facets down and make a copy of the subtree so that we can have scales at the top level\n    data.sources.map(_subtree__WEBPACK_IMPORTED_MODULE_2__[\"moveFacetDown\"]);\n    for (let i = 0; i < MAX_OPTIMIZATION_RUNS; i++) {\n        if (!optimizationDataflowHelper(data, model, false)) {\n            break;\n        }\n        secondPassCounter++;\n    }\n    // check after optimizations\n    checkLinks(data.sources);\n    if (Math.max(firstPassCounter, secondPassCounter) === MAX_OPTIMIZATION_RUNS) {\n        _log__WEBPACK_IMPORTED_MODULE_0__[\"warn\"](`Maximum optimization runs(${MAX_OPTIMIZATION_RUNS}) reached.`);\n    }\n}\n//# sourceMappingURL=optimize.js.map//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,[encoded data, 5860 characters]\n//# sourceURL=webpack-internal:///./node_modules/vega-lite/build/src/compile/data/optimize.js\n");

/***/ }),

/***/ "./node_modules/vega-lite/build/src/compile/data/optimizer.js":
/*!********************************************************************!*\
  !*** ./node_modules/vega-lite/build/src/compile/data/optimizer.js ***!
  \********************************************************************/
/*! exports provided: isDataSourceNode, Optimizer, BottomUpOptimizer, TopDownOptimizer */
/***/ (function(module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"isDataSourceNode\", function() { return isDataSourceNode; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"Optimizer\", function() { return Optimizer; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"BottomUpOptimizer\", function() { return BottomUpOptimizer; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"TopDownOptimizer\", function() { return TopDownOptimizer; });\n/* harmony import */ var _graticule__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./graticule */ \"./node_modules/vega-lite/build/src/compile/data/graticule.js\");\n/* harmony import */ var _sequence__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./sequence */ \"./node_modules/vega-lite/build/src/compile/data/sequence.js\");\n/* harmony import */ var _source__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./source */ \"./node_modules/vega-lite/build/src/compile/data/source.js\");\nvar __classPrivateFieldSet = (undefined && undefined.__classPrivateFieldSet) || function (receiver, privateMap, value) {\n    if (!privateMap.has(receiver)) {\n        throw new TypeError(\"attempted to set private field on non-instance\");\n    }\n    privateMap.set(receiver, value);\n    return value;\n};\nvar __classPrivateFieldGet = (undefined && undefined.__classPrivateFieldGet) || function (receiver, privateMap) {\n    if (!privateMap.has(receiver)) {\n        throw new TypeError(\"attempted to get private field on non-instance\");\n    }\n    return privateMap.get(receiver);\n};\nvar _modified;\n\n\n\n/**\n * Whether this dataflow node is the source of the dataflow that produces data i.e. a source or a generator.\n */\nfunction isDataSourceNode(node) {\n    return node instanceof _source__WEBPACK_IMPORTED_MODULE_2__[\"SourceNode\"] || node instanceof _graticule__WEBPACK_IMPORTED_MODULE_0__[\"GraticuleNode\"] || node instanceof _sequence__WEBPACK_IMPORTED_MODULE_1__[\"SequenceNode\"];\n}\n/**\n * Abstract base class for Dataflow optimizers.\n * Contains only mutation handling logic. Subclasses need to implement iteration logic.\n */\nclass Optimizer {\n    constructor() {\n        _modified.set(this, void 0);\n        __classPrivateFieldSet(this, _modified, false);\n    }\n    // Once true, #modified is never set to false\n    setModified() {\n        __classPrivateFieldSet(this, _modified, true);\n    }\n    get modifiedFlag() {\n        return __classPrivateFieldGet(this, _modified);\n    }\n}\n_modified = new WeakMap();\n/**\n * Starts from a node and runs the optimization function (the \"run\" method) upwards to the root,\n * depending on the continue and modified flag values returned by the optimization function.\n */\nclass BottomUpOptimizer extends Optimizer {\n    /**\n     * Compute a map of node depths that we can use to determine a topological sort order.\n     */\n    getNodeDepths(node, depth, depths) {\n        depths.set(node, depth);\n        for (const child of node.children) {\n            this.getNodeDepths(child, depth + 1, depths);\n        }\n        return depths;\n    }\n    /**\n     * Run the optimizer on all nodes starting from the leaves.\n     */\n    optimize(node) {\n        const depths = this.getNodeDepths(node, 0, new Map());\n        const topologicalSort = [...depths.entries()].sort((a, b) => b[1] - a[1]);\n        for (const tuple of topologicalSort) {\n            this.run(tuple[0]);\n        }\n        return this.modifiedFlag;\n    }\n}\n/**\n * The optimizer function (the \"run\" method), is invoked on the given node and then continues recursively.\n */\nclass TopDownOptimizer extends Optimizer {\n    /**\n     * Run the optimizer depth first on all nodes starting from the roots.\n     */\n    optimize(node) {\n        this.run(node);\n        for (const child of node.children) {\n            this.optimize(child);\n        }\n        return this.modifiedFlag;\n    }\n}\n//# sourceMappingURL=optimizer.js.map//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,[encoded data, 4928 characters]\n//# sourceURL=webpack-internal:///./node_modules/vega-lite/build/src/compile/data/optimizer.js\n");

/***/ }),

/***/ "./node_modules/vega-lite/build/src/compile/data/optimizers.js":
/*!*********************************************************************!*\
  !*** ./node_modules/vega-lite/build/src/compile/data/optimizers.js ***!
  \*********************************************************************/
/*! exports provided: MergeIdenticalNodes, RemoveUnnecessaryIdentifierNodes, RemoveDuplicateTimeUnits, RemoveUnnecessaryOutputNodes, MoveParseUp, MergeParse, RemoveUnusedSubtrees, MergeTimeUnits, MergeAggregates, MergeBins, MergeOutputs */
/***/ (function(module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"MergeIdenticalNodes\", function() { return MergeIdenticalNodes; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"RemoveUnnecessaryIdentifierNodes\", function() { return RemoveUnnecessaryIdentifierNodes; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"RemoveDuplicateTimeUnits\", function() { return RemoveDuplicateTimeUnits; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"RemoveUnnecessaryOutputNodes\", function() { return RemoveUnnecessaryOutputNodes; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"MoveParseUp\", function() { return MoveParseUp; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"MergeParse\", function() { return MergeParse; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"RemoveUnusedSubtrees\", function() { return RemoveUnusedSubtrees; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"MergeTimeUnits\", function() { return MergeTimeUnits; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"MergeAggregates\", function() { return MergeAggregates; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"MergeBins\", function() { return MergeBins; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"MergeOutputs\", function() { return MergeOutputs; });\n/* harmony import */ var _util__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../../util */ \"./node_modules/vega-lite/build/src/util.js\");\n/* harmony import */ var _selection__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../selection */ \"./node_modules/vega-lite/build/src/compile/selection/index.js\");\n/* harmony import */ var _aggregate__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./aggregate */ \"./node_modules/vega-lite/build/src/compile/data/aggregate.js\");\n/* harmony import */ var _bin__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ./bin */ \"./node_modules/vega-lite/build/src/compile/data/bin.js\");\n/* harmony import */ var _dataflow__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ./dataflow */ \"./node_modules/vega-lite/build/src/compile/data/dataflow.js\");\n/* harmony import */ var _facet__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! ./facet */ \"./node_modules/vega-lite/build/src/compile/data/facet.js\");\n/* harmony import */ var _filter__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! ./filter */ \"./node_modules/vega-lite/build/src/compile/data/filter.js\");\n/* harmony import */ var _formatparse__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! ./formatparse */ \"./node_modules/vega-lite/build/src/compile/data/formatparse.js\");\n/* harmony import */ var _identifier__WEBPACK_IMPORTED_MODULE_8__ = __webpack_require__(/*! ./identifier */ \"./node_modules/vega-lite/build/src/compile/data/identifier.js\");\n/* harmony import */ var _optimizer__WEBPACK_IMPORTED_MODULE_9__ = __webpack_require__(/*! ./optimizer */ \"./node_modules/vega-lite/build/src/compile/data/optimizer.js\");\n/* harmony import */ var _source__WEBPACK_IMPORTED_MODULE_10__ = __webpack_require__(/*! ./source */ \"./node_modules/vega-lite/build/src/compile/data/source.js\");\n/* harmony import */ var _timeunit__WEBPACK_IMPORTED_MODULE_11__ = __webpack_require__(/*! ./timeunit */ \"./node_modules/vega-lite/build/src/compile/data/timeunit.js\");\n\n\n\n\n\n\n\n\n\n\n\n\n/**\n * Merge identical nodes at forks by comparing hashes.\n *\n * Does not need to iterate from leaves so we implement this with recursion as it's a bit simpler.\n */\nclass MergeIdenticalNodes extends _optimizer__WEBPACK_IMPORTED_MODULE_9__[\"TopDownOptimizer\"] {\n    mergeNodes(parent, nodes) {\n        const mergedNode = nodes.shift();\n        for (const node of nodes) {\n            parent.removeChild(node);\n            node.parent = mergedNode;\n            node.remove();\n        }\n    }\n    run(node) {\n        const hashes = node.children.map(x => x.hash());\n        const buckets = {};\n        for (let i = 0; i < hashes.length; i++) {\n            if (buckets[hashes[i]] === undefined) {\n                buckets[hashes[i]] = [node.children[i]];\n            }\n            else {\n                buckets[hashes[i]].push(node.children[i]);\n            }\n        }\n        for (const k of Object(_util__WEBPACK_IMPORTED_MODULE_0__[\"keys\"])(buckets)) {\n            if (buckets[k].length > 1) {\n                this.setModified();\n                this.mergeNodes(node, buckets[k]);\n            }\n        }\n    }\n}\n/**\n * Optimizer that removes identifier nodes that are not needed for selections.\n */\nclass RemoveUnnecessaryIdentifierNodes extends _optimizer__WEBPACK_IMPORTED_MODULE_9__[\"TopDownOptimizer\"] {\n    constructor(model) {\n        super();\n        this.requiresSelectionId = model && Object(_selection__WEBPACK_IMPORTED_MODULE_1__[\"requiresSelectionId\"])(model);\n    }\n    run(node) {\n        if (node instanceof _identifier__WEBPACK_IMPORTED_MODULE_8__[\"IdentifierNode\"]) {\n            // Only preserve IdentifierNodes if we have default discrete selections\n            // in our model tree, and if the nodes come after tuple producing nodes.\n            if (!(this.requiresSelectionId &&\n                (Object(_optimizer__WEBPACK_IMPORTED_MODULE_9__[\"isDataSourceNode\"])(node.parent) || node.parent instanceof _aggregate__WEBPACK_IMPORTED_MODULE_2__[\"AggregateNode\"] || node.parent instanceof _formatparse__WEBPACK_IMPORTED_MODULE_7__[\"ParseNode\"]))) {\n                this.setModified();\n                node.remove();\n            }\n        }\n    }\n}\n/**\n * Removes duplicate time unit nodes (as determined by the name of the output field) that may be generated due to\n * selections projected over time units. Only keeps the first time unit in any branch.\n *\n * This optimizer is a custom top down optimizer that keep track of produced fields in a branch.\n */\nclass RemoveDuplicateTimeUnits extends _optimizer__WEBPACK_IMPORTED_MODULE_9__[\"Optimizer\"] {\n    optimize(node) {\n        this.run(node, new Set());\n        return this.modifiedFlag;\n    }\n    run(node, timeUnitFields) {\n        let producedFields = new Set();\n        if (node instanceof _timeunit__WEBPACK_IMPORTED_MODULE_11__[\"TimeUnitNode\"]) {\n            producedFields = node.producedFields();\n            if (Object(_util__WEBPACK_IMPORTED_MODULE_0__[\"hasIntersection\"])(producedFields, timeUnitFields)) {\n                this.setModified();\n                node.removeFormulas(timeUnitFields);\n                if (node.producedFields.length === 0) {\n                    node.remove();\n                }\n            }\n        }\n        for (const child of node.children) {\n            this.run(child, new Set([...timeUnitFields, ...producedFields]));\n        }\n    }\n}\n/**\n * Remove output nodes that are not required.\n */\nclass RemoveUnnecessaryOutputNodes extends _optimizer__WEBPACK_IMPORTED_MODULE_9__[\"TopDownOptimizer\"] {\n    constructor() {\n        super();\n    }\n    run(node) {\n        if (node instanceof _dataflow__WEBPACK_IMPORTED_MODULE_4__[\"OutputNode\"] && !node.isRequired()) {\n            this.setModified();\n            node.remove();\n        }\n    }\n}\n/**\n * Move parse nodes up to forks and merges them if possible.\n */\nclass MoveParseUp extends _optimizer__WEBPACK_IMPORTED_MODULE_9__[\"BottomUpOptimizer\"] {\n    run(node) {\n        if (Object(_optimizer__WEBPACK_IMPORTED_MODULE_9__[\"isDataSourceNode\"])(node)) {\n            return;\n        }\n        if (node.numChildren() > 1) {\n            // Don't move parse further up but continue with parent.\n            return;\n        }\n        for (const child of node.children) {\n            if (child instanceof _formatparse__WEBPACK_IMPORTED_MODULE_7__[\"ParseNode\"]) {\n                if (node instanceof _formatparse__WEBPACK_IMPORTED_MODULE_7__[\"ParseNode\"]) {\n                    this.setModified();\n                    node.merge(child);\n                }\n                else {\n                    // Don't swap with nodes that produce something that the parse node depends on (e.g. lookup).\n                    if (Object(_util__WEBPACK_IMPORTED_MODULE_0__[\"fieldIntersection\"])(node.producedFields(), child.dependentFields())) {\n                        continue;\n                    }\n                    this.setModified();\n                    child.swapWithParent();\n                }\n            }\n        }\n        return;\n    }\n}\n/**\n * Inserts an intermediate ParseNode containing all non-conflicting parse fields and removes the empty ParseNodes.\n *\n * We assume that dependent paths that do not have a parse node can be just merged.\n */\nclass MergeParse extends _optimizer__WEBPACK_IMPORTED_MODULE_9__[\"BottomUpOptimizer\"] {\n    run(node) {\n        const originalChildren = [...node.children];\n        const parseChildren = node.children.filter((child) => child instanceof _formatparse__WEBPACK_IMPORTED_MODULE_7__[\"ParseNode\"]);\n        if (node.numChildren() > 1 && parseChildren.length >= 1) {\n            const commonParse = {};\n            const conflictingParse = new Set();\n            for (const parseNode of parseChildren) {\n                const parse = parseNode.parse;\n                for (const k of Object(_util__WEBPACK_IMPORTED_MODULE_0__[\"keys\"])(parse)) {\n                    if (!(k in commonParse)) {\n                        commonParse[k] = parse[k];\n                    }\n                    else if (commonParse[k] !== parse[k]) {\n                        conflictingParse.add(k);\n                    }\n                }\n            }\n            for (const field of conflictingParse) {\n                delete commonParse[field];\n            }\n            if (!Object(_util__WEBPACK_IMPORTED_MODULE_0__[\"isEmpty\"])(commonParse)) {\n                this.setModified();\n                const mergedParseNode = new _formatparse__WEBPACK_IMPORTED_MODULE_7__[\"ParseNode\"](node, commonParse);\n                for (const childNode of originalChildren) {\n                    if (childNode instanceof _formatparse__WEBPACK_IMPORTED_MODULE_7__[\"ParseNode\"]) {\n                        for (const key of Object(_util__WEBPACK_IMPORTED_MODULE_0__[\"keys\"])(commonParse)) {\n                            delete childNode.parse[key];\n                        }\n                    }\n                    node.removeChild(childNode);\n                    childNode.parent = mergedParseNode;\n                    // remove empty parse nodes\n                    if (childNode instanceof _formatparse__WEBPACK_IMPORTED_MODULE_7__[\"ParseNode\"] && Object(_util__WEBPACK_IMPORTED_MODULE_0__[\"keys\"])(childNode.parse).length === 0) {\n                        childNode.remove();\n                    }\n                }\n            }\n        }\n    }\n}\n/**\n * Repeatedly remove leaf nodes that are not output or facet nodes.\n * The reason is that we don't need subtrees that don't have any output nodes.\n * Facet nodes are needed for the row or column domains.\n */\nclass RemoveUnusedSubtrees extends _optimizer__WEBPACK_IMPORTED_MODULE_9__[\"BottomUpOptimizer\"] {\n    run(node) {\n        if (node instanceof _dataflow__WEBPACK_IMPORTED_MODULE_4__[\"OutputNode\"] || node.numChildren() > 0 || node instanceof _facet__WEBPACK_IMPORTED_MODULE_5__[\"FacetNode\"]) {\n            // no need to continue with parent because it is output node or will have children (there was a fork)\n        }\n        else if (node instanceof _source__WEBPACK_IMPORTED_MODULE_10__[\"SourceNode\"]) {\n            // ignore empty unused sources as they will be removed in optimizationDataflowHelper\n        }\n        else {\n            this.setModified();\n            node.remove();\n        }\n    }\n}\n/**\n * Merge adjacent time unit nodes.\n */\nclass MergeTimeUnits extends _optimizer__WEBPACK_IMPORTED_MODULE_9__[\"BottomUpOptimizer\"] {\n    run(node) {\n        const timeUnitChildren = node.children.filter((x) => x instanceof _timeunit__WEBPACK_IMPORTED_MODULE_11__[\"TimeUnitNode\"]);\n        const combination = timeUnitChildren.pop();\n        for (const timeUnit of timeUnitChildren) {\n            this.setModified();\n            combination.merge(timeUnit);\n        }\n    }\n}\nclass MergeAggregates extends _optimizer__WEBPACK_IMPORTED_MODULE_9__[\"BottomUpOptimizer\"] {\n    run(node) {\n        const aggChildren = node.children.filter((child) => child instanceof _aggregate__WEBPACK_IMPORTED_MODULE_2__[\"AggregateNode\"]);\n        // Object which we'll use to map the fields which an aggregate is grouped by to\n        // the set of aggregates with that grouping. This is useful as only aggregates\n        // with the same group by can be merged\n        const groupedAggregates = {};\n        // Build groupedAggregates\n        for (const agg of aggChildren) {\n            const groupBys = Object(_util__WEBPACK_IMPORTED_MODULE_0__[\"hash\"])(agg.groupBy);\n            if (!(groupBys in groupedAggregates)) {\n                groupedAggregates[groupBys] = [];\n            }\n            groupedAggregates[groupBys].push(agg);\n        }\n        // Merge aggregateNodes with same key in groupedAggregates\n        for (const group of Object(_util__WEBPACK_IMPORTED_MODULE_0__[\"keys\"])(groupedAggregates)) {\n            const mergeableAggs = groupedAggregates[group];\n            if (mergeableAggs.length > 1) {\n                const mergedAggs = mergeableAggs.pop();\n                for (const agg of mergeableAggs) {\n                    if (mergedAggs.merge(agg)) {\n                        node.removeChild(agg);\n                        agg.parent = mergedAggs;\n                        agg.remove();\n                        this.setModified();\n                    }\n                }\n            }\n        }\n    }\n}\n/**\n * Merge bin nodes and move them up through forks. Stop at filters, parse, identifier as we want them to stay before the bin node.\n */\nclass MergeBins extends _optimizer__WEBPACK_IMPORTED_MODULE_9__[\"BottomUpOptimizer\"] {\n    constructor(model) {\n        super();\n        this.model = model;\n    }\n    run(node) {\n        const moveBinsUp = !(Object(_optimizer__WEBPACK_IMPORTED_MODULE_9__[\"isDataSourceNode\"])(node) ||\n            node instanceof _filter__WEBPACK_IMPORTED_MODULE_6__[\"FilterNode\"] ||\n            node instanceof _formatparse__WEBPACK_IMPORTED_MODULE_7__[\"ParseNode\"] ||\n            node instanceof _identifier__WEBPACK_IMPORTED_MODULE_8__[\"IdentifierNode\"]);\n        const promotableBins = [];\n        const remainingBins = [];\n        for (const child of node.children) {\n            if (child instanceof _bin__WEBPACK_IMPORTED_MODULE_3__[\"BinNode\"]) {\n                if (moveBinsUp && !Object(_util__WEBPACK_IMPORTED_MODULE_0__[\"fieldIntersection\"])(node.producedFields(), child.dependentFields())) {\n                    promotableBins.push(child);\n                }\n                else {\n                    remainingBins.push(child);\n                }\n            }\n        }\n        if (promotableBins.length > 0) {\n            const promotedBin = promotableBins.pop();\n            for (const bin of promotableBins) {\n                promotedBin.merge(bin, this.model.renameSignal.bind(this.model));\n            }\n            this.setModified();\n            if (node instanceof _bin__WEBPACK_IMPORTED_MODULE_3__[\"BinNode\"]) {\n                node.merge(promotedBin, this.model.renameSignal.bind(this.model));\n            }\n            else {\n                promotedBin.swapWithParent();\n            }\n        }\n        if (remainingBins.length > 1) {\n            const remainingBin = remainingBins.pop();\n            for (const bin of remainingBins) {\n                remainingBin.merge(bin, this.model.renameSignal.bind(this.model));\n            }\n            this.setModified();\n        }\n    }\n}\n/**\n * This optimizer takes output nodes that are at a fork and moves them before the fork.\n *\n * The algorithm iterates over the children and tries to find the last output node in a chain of output nodes.\n * It then moves all output nodes before that main output node. All other children (and the children of the output nodes)\n * are inserted after the main output node.\n */\nclass MergeOutputs extends _optimizer__WEBPACK_IMPORTED_MODULE_9__[\"BottomUpOptimizer\"] {\n    run(node) {\n        const children = [...node.children];\n        const hasOutputChild = Object(_util__WEBPACK_IMPORTED_MODULE_0__[\"some\"])(children, child => child instanceof _dataflow__WEBPACK_IMPORTED_MODULE_4__[\"OutputNode\"]);\n        if (!hasOutputChild || node.numChildren() <= 1) {\n            return;\n        }\n        const otherChildren = [];\n        // The output node we will connect all other nodes to.\n        // Output nodes will be added before the new node, other nodes after.\n        let mainOutput;\n        for (const child of children) {\n            if (child instanceof _dataflow__WEBPACK_IMPORTED_MODULE_4__[\"OutputNode\"]) {\n                let lastOutput = child;\n                while (lastOutput.numChildren() === 1) {\n                    const [theChild] = lastOutput.children;\n                    if (theChild instanceof _dataflow__WEBPACK_IMPORTED_MODULE_4__[\"OutputNode\"]) {\n                        lastOutput = theChild;\n                    }\n                    else {\n                        break;\n                    }\n                }\n                otherChildren.push(...lastOutput.children);\n                if (mainOutput) {\n                    // Move the output nodes before the mainOutput. We do this by setting\n                    // the parent of the first not to the parent of the main output and\n                    // the main output's parent to the last output.\n                    // note: the child is the first output\n                    node.removeChild(child);\n                    child.parent = mainOutput.parent;\n                    mainOutput.parent.removeChild(mainOutput);\n                    mainOutput.parent = lastOutput;\n                    this.setModified();\n                }\n                else {\n                    mainOutput = lastOutput;\n                }\n            }\n            else {\n                otherChildren.push(child);\n            }\n        }\n        if (otherChildren.length) {\n            this.setModified();\n            for (const child of otherChildren) {\n                child.parent.removeChild(child);\n                child.parent = mainOutput;\n            }\n        }\n    }\n}\n//# sourceMappingURL=optimizers.js.map//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,[encoded data, 21188 characters]\n//# sourceURL=webpack-internal:///./node_modules/vega-lite/build/src/compile/data/optimizers.js\n");

/***/ }),

/***/ "./node_modules/vega-lite/build/src/compile/data/parse.js":
/*!****************************************************************!*\
  !*** ./node_modules/vega-lite/build/src/compile/data/parse.js ***!
  \****************************************************************/
/*! exports provided: findSource, parseTransformArray, parseData */
/***/ (function(module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"findSource\", function() { return findSource; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"parseTransformArray\", function() { return parseTransformArray; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"parseData\", function() { return parseData; });\n/* harmony import */ var ___WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! . */ \"./node_modules/vega-lite/build/src/compile/data/index.js\");\n/* harmony import */ var _data__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../../data */ \"./node_modules/vega-lite/build/src/data.js\");\n/* harmony import */ var _log__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ../../log */ \"./node_modules/vega-lite/build/src/log/index.js\");\n/* harmony import */ var _transform__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ../../transform */ \"./node_modules/vega-lite/build/src/transform.js\");\n/* harmony import */ var _util__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ../../util */ \"./node_modules/vega-lite/build/src/util.js\");\n/* harmony import */ var _model__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! ../model */ \"./node_modules/vega-lite/build/src/compile/model.js\");\n/* harmony import */ var _selection__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! ../selection */ \"./node_modules/vega-lite/build/src/compile/selection/index.js\");\n/* harmony import */ var _selection_parse__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! ../selection/parse */ \"./node_modules/vega-lite/build/src/compile/selection/parse.js\");\n/* harmony import */ var _aggregate__WEBPACK_IMPORTED_MODULE_8__ = __webpack_require__(/*! ./aggregate */ \"./node_modules/vega-lite/build/src/compile/data/aggregate.js\");\n/* harmony import */ var _bin__WEBPACK_IMPORTED_MODULE_9__ = __webpack_require__(/*! ./bin */ \"./node_modules/vega-lite/build/src/compile/data/bin.js\");\n/* harmony import */ var _calculate__WEBPACK_IMPORTED_MODULE_10__ = __webpack_require__(/*! ./calculate */ \"./node_modules/vega-lite/build/src/compile/data/calculate.js\");\n/* harmony import */ var _dataflow__WEBPACK_IMPORTED_MODULE_11__ = __webpack_require__(/*! ./dataflow */ \"./node_modules/vega-lite/build/src/compile/data/dataflow.js\");\n/* harmony import */ var _density__WEBPACK_IMPORTED_MODULE_12__ = __webpack_require__(/*! ./density */ \"./node_modules/vega-lite/build/src/compile/data/density.js\");\n/* harmony import */ var _facet__WEBPACK_IMPORTED_MODULE_13__ = __webpack_require__(/*! ./facet */ \"./node_modules/vega-lite/build/src/compile/data/facet.js\");\n/* harmony import */ var _filter__WEBPACK_IMPORTED_MODULE_14__ = __webpack_require__(/*! ./filter */ \"./node_modules/vega-lite/build/src/compile/data/filter.js\");\n/* harmony import */ var _filterinvalid__WEBPACK_IMPORTED_MODULE_15__ = __webpack_require__(/*! ./filterinvalid */ \"./node_modules/vega-lite/build/src/compile/data/filterinvalid.js\");\n/* harmony import */ var _flatten__WEBPACK_IMPORTED_MODULE_16__ = __webpack_require__(/*! ./flatten */ \"./node_modules/vega-lite/build/src/compile/data/flatten.js\");\n/* harmony import */ var _fold__WEBPACK_IMPORTED_MODULE_17__ = __webpack_require__(/*! ./fold */ \"./node_modules/vega-lite/build/src/compile/data/fold.js\");\n/* harmony import */ var _formatparse__WEBPACK_IMPORTED_MODULE_18__ = __webpack_require__(/*! ./formatparse */ \"./node_modules/vega-lite/build/src/compile/data/formatparse.js\");\n/* harmony import */ var _geojson__WEBPACK_IMPORTED_MODULE_19__ = __webpack_require__(/*! ./geojson */ \"./node_modules/vega-lite/build/src/compile/data/geojson.js\");\n/* harmony import */ var _geopoint__WEBPACK_IMPORTED_MODULE_20__ = __webpack_require__(/*! ./geopoint */ \"./node_modules/vega-lite/build/src/compile/data/geopoint.js\");\n/* harmony import */ var _graticule__WEBPACK_IMPORTED_MODULE_21__ = __webpack_require__(/*! ./graticule */ \"./node_modules/vega-lite/build/src/compile/data/graticule.js\");\n/* harmony import */ var _identifier__WEBPACK_IMPORTED_MODULE_22__ = __webpack_require__(/*! ./identifier */ \"./node_modules/vega-lite/build/src/compile/data/identifier.js\");\n/* harmony import */ var _impute__WEBPACK_IMPORTED_MODULE_23__ = __webpack_require__(/*! ./impute */ \"./node_modules/vega-lite/build/src/compile/data/impute.js\");\n/* harmony import */ var _joinaggregate__WEBPACK_IMPORTED_MODULE_24__ = __webpack_require__(/*! ./joinaggregate */ \"./node_modules/vega-lite/build/src/compile/data/joinaggregate.js\");\n/* harmony import */ var _joinaggregatefacet__WEBPACK_IMPORTED_MODULE_25__ = __webpack_require__(/*! ./joinaggregatefacet */ \"./node_modules/vega-lite/build/src/compile/data/joinaggregatefacet.js\");\n/* harmony import */ var _loess__WEBPACK_IMPORTED_MODULE_26__ = __webpack_require__(/*! ./loess */ \"./node_modules/vega-lite/build/src/compile/data/loess.js\");\n/* harmony import */ var _lookup__WEBPACK_IMPORTED_MODULE_27__ = __webpack_require__(/*! ./lookup */ \"./node_modules/vega-lite/build/src/compile/data/lookup.js\");\n/* harmony import */ var _pivot__WEBPACK_IMPORTED_MODULE_28__ = __webpack_require__(/*! ./pivot */ \"./node_modules/vega-lite/build/src/compile/data/pivot.js\");\n/* harmony import */ var _quantile__WEBPACK_IMPORTED_MODULE_29__ = __webpack_require__(/*! ./quantile */ \"./node_modules/vega-lite/build/src/compile/data/quantile.js\");\n/* harmony import */ var _regression__WEBPACK_IMPORTED_MODULE_30__ = __webpack_require__(/*! ./regression */ \"./node_modules/vega-lite/build/src/compile/data/regression.js\");\n/* harmony import */ var _sample__WEBPACK_IMPORTED_MODULE_31__ = __webpack_require__(/*! ./sample */ \"./node_modules/vega-lite/build/src/compile/data/sample.js\");\n/* harmony import */ var _sequence__WEBPACK_IMPORTED_MODULE_32__ = __webpack_require__(/*! ./sequence */ \"./node_modules/vega-lite/build/src/compile/data/sequence.js\");\n/* harmony import */ var _source__WEBPACK_IMPORTED_MODULE_33__ = __webpack_require__(/*! ./source */ \"./node_modules/vega-lite/build/src/compile/data/source.js\");\n/* harmony import */ var _stack__WEBPACK_IMPORTED_MODULE_34__ = __webpack_require__(/*! ./stack */ \"./node_modules/vega-lite/build/src/compile/data/stack.js\");\n/* harmony import */ var _timeunit__WEBPACK_IMPORTED_MODULE_35__ = __webpack_require__(/*! ./timeunit */ \"./node_modules/vega-lite/build/src/compile/data/timeunit.js\");\n/* harmony import */ var _window__WEBPACK_IMPORTED_MODULE_36__ = __webpack_require__(/*! ./window */ \"./node_modules/vega-lite/build/src/compile/data/window.js\");\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\nfunction findSource(data, sources) {\n    var _a, _b, _c, _d;\n    for (const other of sources) {\n        const otherData = other.data;\n        // if both datasets have a name defined, we cannot merge\n        if (data.name && other.hasName() && data.name !== other.dataName) {\n            continue;\n        }\n        const formatMesh = (_a = data['format']) === null || _a === void 0 ? void 0 : _a.mesh;\n        const otherFeature = (_b = otherData.format) === null || _b === void 0 ? void 0 : _b.feature;\n        // feature and mesh are mutually exclusive\n        if (formatMesh && otherFeature) {\n            continue;\n        }\n        // we have to extract the same feature or mesh\n        const formatFeature = (_c = data['format']) === null || _c === void 0 ? void 0 : _c.feature;\n        if ((formatFeature || otherFeature) && formatFeature !== otherFeature) {\n            continue;\n        }\n        const otherMesh = (_d = otherData.format) === null || _d === void 0 ? void 0 : _d.mesh;\n        if ((formatMesh || otherMesh) && formatMesh !== otherMesh) {\n            continue;\n        }\n        if (Object(_data__WEBPACK_IMPORTED_MODULE_1__[\"isInlineData\"])(data) && Object(_data__WEBPACK_IMPORTED_MODULE_1__[\"isInlineData\"])(otherData)) {\n            if (Object(_util__WEBPACK_IMPORTED_MODULE_4__[\"deepEqual\"])(data.values, otherData.values)) {\n                return other;\n            }\n        }\n        else if (Object(_data__WEBPACK_IMPORTED_MODULE_1__[\"isUrlData\"])(data) && Object(_data__WEBPACK_IMPORTED_MODULE_1__[\"isUrlData\"])(otherData)) {\n            if (data.url === otherData.url) {\n                return other;\n            }\n        }\n        else if (Object(_data__WEBPACK_IMPORTED_MODULE_1__[\"isNamedData\"])(data)) {\n            if (data.name === other.dataName) {\n                return other;\n            }\n        }\n    }\n    return null;\n}\nfunction parseRoot(model, sources) {\n    if (model.data || !model.parent) {\n        // if the model defines a data source or is the root, create a source node\n        if (model.data === null) {\n            // data: null means we should ignore the parent's data so we just create a new data source\n            const source = new _source__WEBPACK_IMPORTED_MODULE_33__[\"SourceNode\"]({ values: [] });\n            sources.push(source);\n            return source;\n        }\n        const existingSource = findSource(model.data, sources);\n        if (existingSource) {\n            if (!Object(_data__WEBPACK_IMPORTED_MODULE_1__[\"isGenerator\"])(model.data)) {\n                existingSource.data.format = Object(_util__WEBPACK_IMPORTED_MODULE_4__[\"mergeDeep\"])({}, model.data.format, existingSource.data.format);\n            }\n            // if the new source has a name but the existing one does not, we can set it\n            if (!existingSource.hasName() && model.data.name) {\n                existingSource.dataName = model.data.name;\n            }\n            return existingSource;\n        }\n        else {\n            const source = new _source__WEBPACK_IMPORTED_MODULE_33__[\"SourceNode\"](model.data);\n            sources.push(source);\n            return source;\n        }\n    }\n    else {\n        // If we don't have a source defined (overriding parent's data), use the parent's facet root or main.\n        return model.parent.component.data.facetRoot\n            ? model.parent.component.data.facetRoot\n            : model.parent.component.data.main;\n    }\n}\n/**\n * Parses a transform array into a chain of connected dataflow nodes.\n */\nfunction parseTransformArray(head, model, ancestorParse) {\n    var _a, _b;\n    let lookupCounter = 0;\n    for (const t of model.transforms) {\n        let derivedType = undefined;\n        let transformNode;\n        if (Object(_transform__WEBPACK_IMPORTED_MODULE_3__[\"isCalculate\"])(t)) {\n            transformNode = head = new _calculate__WEBPACK_IMPORTED_MODULE_10__[\"CalculateNode\"](head, t);\n            derivedType = 'derived';\n        }\n        else if (Object(_transform__WEBPACK_IMPORTED_MODULE_3__[\"isFilter\"])(t)) {\n            const implicit = Object(_formatparse__WEBPACK_IMPORTED_MODULE_18__[\"getImplicitFromFilterTransform\"])(t);\n            transformNode = head = (_a = _formatparse__WEBPACK_IMPORTED_MODULE_18__[\"ParseNode\"].makeWithAncestors(head, {}, implicit, ancestorParse)) !== null && _a !== void 0 ? _a : head;\n            head = new _filter__WEBPACK_IMPORTED_MODULE_14__[\"FilterNode\"](head, model, t.filter);\n        }\n        else if (Object(_transform__WEBPACK_IMPORTED_MODULE_3__[\"isBin\"])(t)) {\n            transformNode = head = _bin__WEBPACK_IMPORTED_MODULE_9__[\"BinNode\"].makeFromTransform(head, t, model);\n            derivedType = 'number';\n        }\n        else if (Object(_transform__WEBPACK_IMPORTED_MODULE_3__[\"isTimeUnit\"])(t)) {\n            derivedType = 'date';\n            const parsedAs = ancestorParse.getWithExplicit(t.field);\n            // Create parse node because the input to time unit is always date.\n            if (parsedAs.value === undefined) {\n                head = new _formatparse__WEBPACK_IMPORTED_MODULE_18__[\"ParseNode\"](head, { [t.field]: derivedType });\n                ancestorParse.set(t.field, derivedType, false);\n            }\n            transformNode = head = _timeunit__WEBPACK_IMPORTED_MODULE_35__[\"TimeUnitNode\"].makeFromTransform(head, t);\n        }\n        else if (Object(_transform__WEBPACK_IMPORTED_MODULE_3__[\"isAggregate\"])(t)) {\n            transformNode = head = _aggregate__WEBPACK_IMPORTED_MODULE_8__[\"AggregateNode\"].makeFromTransform(head, t);\n            derivedType = 'number';\n            if (Object(_selection__WEBPACK_IMPORTED_MODULE_6__[\"requiresSelectionId\"])(model)) {\n                head = new _identifier__WEBPACK_IMPORTED_MODULE_22__[\"IdentifierNode\"](head);\n            }\n        }\n        else if (Object(_transform__WEBPACK_IMPORTED_MODULE_3__[\"isLookup\"])(t)) {\n            transformNode = head = _lookup__WEBPACK_IMPORTED_MODULE_27__[\"LookupNode\"].make(head, model, t, lookupCounter++);\n            derivedType = 'derived';\n        }\n        else if (Object(_transform__WEBPACK_IMPORTED_MODULE_3__[\"isWindow\"])(t)) {\n            transformNode = head = new _window__WEBPACK_IMPORTED_MODULE_36__[\"WindowTransformNode\"](head, t);\n            derivedType = 'number';\n        }\n        else if (Object(_transform__WEBPACK_IMPORTED_MODULE_3__[\"isJoinAggregate\"])(t)) {\n            transformNode = head = new _joinaggregate__WEBPACK_IMPORTED_MODULE_24__[\"JoinAggregateTransformNode\"](head, t);\n            derivedType = 'number';\n        }\n        else if (Object(_transform__WEBPACK_IMPORTED_MODULE_3__[\"isStack\"])(t)) {\n            transformNode = head = _stack__WEBPACK_IMPORTED_MODULE_34__[\"StackNode\"].makeFromTransform(head, t);\n            derivedType = 'derived';\n        }\n        else if (Object(_transform__WEBPACK_IMPORTED_MODULE_3__[\"isFold\"])(t)) {\n            transformNode = head = new _fold__WEBPACK_IMPORTED_MODULE_17__[\"FoldTransformNode\"](head, t);\n            derivedType = 'derived';\n        }\n        else if (Object(_transform__WEBPACK_IMPORTED_MODULE_3__[\"isFlatten\"])(t)) {\n            transformNode = head = new _flatten__WEBPACK_IMPORTED_MODULE_16__[\"FlattenTransformNode\"](head, t);\n            derivedType = 'derived';\n        }\n        else if (Object(_transform__WEBPACK_IMPORTED_MODULE_3__[\"isPivot\"])(t)) {\n            transformNode = head = new _pivot__WEBPACK_IMPORTED_MODULE_28__[\"PivotTransformNode\"](head, t);\n            derivedType = 'derived';\n        }\n        else if (Object(_transform__WEBPACK_IMPORTED_MODULE_3__[\"isSample\"])(t)) {\n            head = new _sample__WEBPACK_IMPORTED_MODULE_31__[\"SampleTransformNode\"](head, t);\n        }\n        else if (Object(_transform__WEBPACK_IMPORTED_MODULE_3__[\"isImpute\"])(t)) {\n            transformNode = head = _impute__WEBPACK_IMPORTED_MODULE_23__[\"ImputeNode\"].makeFromTransform(head, t);\n            derivedType = 'derived';\n        }\n        else if (Object(_transform__WEBPACK_IMPORTED_MODULE_3__[\"isDensity\"])(t)) {\n            transformNode = head = new _density__WEBPACK_IMPORTED_MODULE_12__[\"DensityTransformNode\"](head, t);\n            derivedType = 'derived';\n        }\n        else if (Object(_transform__WEBPACK_IMPORTED_MODULE_3__[\"isQuantile\"])(t)) {\n            transformNode = head = new _quantile__WEBPACK_IMPORTED_MODULE_29__[\"QuantileTransformNode\"](head, t);\n            derivedType = 'derived';\n        }\n        else if (Object(_transform__WEBPACK_IMPORTED_MODULE_3__[\"isRegression\"])(t)) {\n            transformNode = head = new _regression__WEBPACK_IMPORTED_MODULE_30__[\"RegressionTransformNode\"](head, t);\n            derivedType = 'derived';\n        }\n        else if (Object(_transform__WEBPACK_IMPORTED_MODULE_3__[\"isLoess\"])(t)) {\n            transformNode = head = new _loess__WEBPACK_IMPORTED_MODULE_26__[\"LoessTransformNode\"](head, t);\n            derivedType = 'derived';\n        }\n        else {\n            _log__WEBPACK_IMPORTED_MODULE_2__[\"warn\"](_log__WEBPACK_IMPORTED_MODULE_2__[\"message\"].invalidTransformIgnored(t));\n            continue;\n        }\n        if (transformNode && derivedType !== undefined) {\n            for (const field of (_b = transformNode.producedFields()) !== null && _b !== void 0 ? _b : []) {\n                ancestorParse.set(field, derivedType, false);\n            }\n        }\n    }\n    return head;\n}\n/*\nDescription of the dataflow (http://asciiflow.com/):\n     +--------+\n     | Source |\n     +---+----+\n         |\n         v\n     FormatParse\n     (explicit)\n         |\n         v\n     Transforms\n(Filter, Calculate, Binning, TimeUnit, Aggregate, Window, ...)\n         |\n         v\n     FormatParse\n     (implicit)\n         |\n         v\n Binning (in `encoding`)\n         |\n         v\n Timeunit (in `encoding`)\n         |\n         v\nFormula From Sort Array\n         |\n         v\n      +--+--+\n      | Raw |\n      +-----+\n         |\n         v\n  Aggregate (in `encoding`)\n         |\n         v\n  Stack (in `encoding`)\n         |\n         v\n  Invalid Filter\n         |\n         v\n   +----------+\n   |   Main   |\n   +----------+\n         |\n         v\n     +-------+\n     | Facet |----> \"column\", \"column-layout\", and \"row\"\n     +-------+\n         |\n         v\n  ...Child data...\n*/\nfunction parseData(model) {\n    var _a, _b, _c, _d, _e, _f, _g, _h, _j, _k;\n    let head = parseRoot(model, model.component.data.sources);\n    const { outputNodes, outputNodeRefCounts } = model.component.data;\n    const ancestorParse = model.parent ? model.parent.component.data.ancestorParse.clone() : new ___WEBPACK_IMPORTED_MODULE_0__[\"AncestorParse\"]();\n    const data = model.data;\n    if (Object(_data__WEBPACK_IMPORTED_MODULE_1__[\"isGenerator\"])(data)) {\n        // insert generator transform\n        if (Object(_data__WEBPACK_IMPORTED_MODULE_1__[\"isSequenceGenerator\"])(data)) {\n            head = new _sequence__WEBPACK_IMPORTED_MODULE_32__[\"SequenceNode\"](head, data.sequence);\n        }\n        else if (Object(_data__WEBPACK_IMPORTED_MODULE_1__[\"isGraticuleGenerator\"])(data)) {\n            head = new _graticule__WEBPACK_IMPORTED_MODULE_21__[\"GraticuleNode\"](head, data.graticule);\n        }\n        // no parsing necessary for generator\n        ancestorParse.parseNothing = true;\n    }\n    else if (((_a = data === null || data === void 0 ? void 0 : data.format) === null || _a === void 0 ? void 0 : _a.parse) === null) {\n        // format.parse: null means disable parsing\n        ancestorParse.parseNothing = true;\n    }\n    head = (_b = _formatparse__WEBPACK_IMPORTED_MODULE_18__[\"ParseNode\"].makeExplicit(head, model, ancestorParse)) !== null && _b !== void 0 ? _b : head;\n    // Default discrete selections require an identifer transform to\n    // uniquely identify data points. Add this transform at the head of\n    // the pipeline such that the identifier field is available for all\n    // subsequent datasets. During optimization, we will remove this\n    // transform if it proves to be unnecessary. Additional identifier\n    // transforms will be necessary when new tuples are constructed\n    // (e.g., post-aggregation).\n    head = new _identifier__WEBPACK_IMPORTED_MODULE_22__[\"IdentifierNode\"](head);\n    // HACK: This is equivalent for merging bin extent for union scale.\n    // FIXME(https://github.com/vega/vega-lite/issues/2270): Correctly merge extent / bin node for shared bin scale\n    const parentIsLayer = model.parent && Object(_model__WEBPACK_IMPORTED_MODULE_5__[\"isLayerModel\"])(model.parent);\n    if (Object(_model__WEBPACK_IMPORTED_MODULE_5__[\"isUnitModel\"])(model) || Object(_model__WEBPACK_IMPORTED_MODULE_5__[\"isFacetModel\"])(model)) {\n        if (parentIsLayer) {\n            head = (_c = _bin__WEBPACK_IMPORTED_MODULE_9__[\"BinNode\"].makeFromEncoding(head, model)) !== null && _c !== void 0 ? _c : head;\n        }\n    }\n    if (model.transforms.length > 0) {\n        head = parseTransformArray(head, model, ancestorParse);\n    }\n    // create parse nodes for fields that need to be parsed (or flattened) implicitly\n    const implicitSelection = Object(_formatparse__WEBPACK_IMPORTED_MODULE_18__[\"getImplicitFromSelection\"])(model);\n    const implicitEncoding = Object(_formatparse__WEBPACK_IMPORTED_MODULE_18__[\"getImplicitFromEncoding\"])(model);\n    head = (_d = _formatparse__WEBPACK_IMPORTED_MODULE_18__[\"ParseNode\"].makeWithAncestors(head, {}, Object.assign(Object.assign({}, implicitSelection), implicitEncoding), ancestorParse)) !== null && _d !== void 0 ? _d : head;\n    if (Object(_model__WEBPACK_IMPORTED_MODULE_5__[\"isUnitModel\"])(model)) {\n        head = _geojson__WEBPACK_IMPORTED_MODULE_19__[\"GeoJSONNode\"].parseAll(head, model);\n        head = _geopoint__WEBPACK_IMPORTED_MODULE_20__[\"GeoPointNode\"].parseAll(head, model);\n    }\n    if (Object(_model__WEBPACK_IMPORTED_MODULE_5__[\"isUnitModel\"])(model) || Object(_model__WEBPACK_IMPORTED_MODULE_5__[\"isFacetModel\"])(model)) {\n        if (!parentIsLayer) {\n            head = (_e = _bin__WEBPACK_IMPORTED_MODULE_9__[\"BinNode\"].makeFromEncoding(head, model)) !== null && _e !== void 0 ? _e : head;\n        }\n        head = (_f = _timeunit__WEBPACK_IMPORTED_MODULE_35__[\"TimeUnitNode\"].makeFromEncoding(head, model)) !== null && _f !== void 0 ? _f : head;\n        head = _calculate__WEBPACK_IMPORTED_MODULE_10__[\"CalculateNode\"].parseAllForSortIndex(head, model);\n    }\n    // add an output node pre aggregation\n    const rawName = model.getDataName(_data__WEBPACK_IMPORTED_MODULE_1__[\"DataSourceType\"].Raw);\n    const raw = new _dataflow__WEBPACK_IMPORTED_MODULE_11__[\"OutputNode\"](head, rawName, _data__WEBPACK_IMPORTED_MODULE_1__[\"DataSourceType\"].Raw, outputNodeRefCounts);\n    outputNodes[rawName] = raw;\n    head = raw;\n    if (Object(_model__WEBPACK_IMPORTED_MODULE_5__[\"isUnitModel\"])(model)) {\n        const agg = _aggregate__WEBPACK_IMPORTED_MODULE_8__[\"AggregateNode\"].makeFromEncoding(head, model);\n        if (agg) {\n            head = agg;\n            if (Object(_selection__WEBPACK_IMPORTED_MODULE_6__[\"requiresSelectionId\"])(model)) {\n                head = new _identifier__WEBPACK_IMPORTED_MODULE_22__[\"IdentifierNode\"](head);\n            }\n        }\n        head = (_g = _impute__WEBPACK_IMPORTED_MODULE_23__[\"ImputeNode\"].makeFromEncoding(head, model)) !== null && _g !== void 0 ? _g : head;\n        head = (_h = _stack__WEBPACK_IMPORTED_MODULE_34__[\"StackNode\"].makeFromEncoding(head, model)) !== null && _h !== void 0 ? _h : head;\n    }\n    if (Object(_model__WEBPACK_IMPORTED_MODULE_5__[\"isUnitModel\"])(model)) {\n        head = (_j = _filterinvalid__WEBPACK_IMPORTED_MODULE_15__[\"FilterInvalidNode\"].make(head, model)) !== null && _j !== void 0 ? _j : head;\n    }\n    // output node for marks\n    const mainName = model.getDataName(_data__WEBPACK_IMPORTED_MODULE_1__[\"DataSourceType\"].Main);\n    const main = new _dataflow__WEBPACK_IMPORTED_MODULE_11__[\"OutputNode\"](head, mainName, _data__WEBPACK_IMPORTED_MODULE_1__[\"DataSourceType\"].Main, outputNodeRefCounts);\n    outputNodes[mainName] = main;\n    head = main;\n    if (Object(_model__WEBPACK_IMPORTED_MODULE_5__[\"isUnitModel\"])(model)) {\n        Object(_selection_parse__WEBPACK_IMPORTED_MODULE_7__[\"materializeSelections\"])(model, main);\n    }\n    // add facet marker\n    let facetRoot = null;\n    if (Object(_model__WEBPACK_IMPORTED_MODULE_5__[\"isFacetModel\"])(model)) {\n        const facetName = model.getName('facet');\n        // Derive new aggregate for facet's sort field\n        // augment data source with new fields for crossed facet\n        head = (_k = Object(_joinaggregatefacet__WEBPACK_IMPORTED_MODULE_25__[\"makeJoinAggregateFromFacet\"])(head, model.facet)) !== null && _k !== void 0 ? _k : head;\n        facetRoot = new _facet__WEBPACK_IMPORTED_MODULE_13__[\"FacetNode\"](head, model, facetName, main.getSource());\n        outputNodes[facetName] = facetRoot;\n    }\n    return Object.assign(Object.assign({}, model.component.data), { outputNodes,\n        outputNodeRefCounts,\n        raw,\n        main,\n        facetRoot,\n        ancestorParse });\n}\n//# sourceMappingURL=parse.js.map//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,[encoded data, 23252 characters]\n//# sourceURL=webpack-internal:///./node_modules/vega-lite/build/src/compile/data/parse.js\n");

/***/ }),

/***/ "./node_modules/vega-lite/build/src/compile/data/pivot.js":
/*!****************************************************************!*\
  !*** ./node_modules/vega-lite/build/src/compile/data/pivot.js ***!
  \****************************************************************/
/*! exports provided: PivotTransformNode */
/***/ (function(module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"PivotTransformNode\", function() { return PivotTransformNode; });\n/* harmony import */ var _util__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../../util */ \"./node_modules/vega-lite/build/src/util.js\");\n/* harmony import */ var _dataflow__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./dataflow */ \"./node_modules/vega-lite/build/src/compile/data/dataflow.js\");\n\n\n/**\n * A class for pivot transform nodes.\n */\nclass PivotTransformNode extends _dataflow__WEBPACK_IMPORTED_MODULE_1__[\"DataFlowNode\"] {\n    constructor(parent, transform) {\n        super(parent);\n        this.transform = transform;\n    }\n    clone() {\n        return new PivotTransformNode(null, Object(_util__WEBPACK_IMPORTED_MODULE_0__[\"duplicate\"])(this.transform));\n    }\n    addDimensions(fields) {\n        var _a;\n        this.transform.groupby = Object(_util__WEBPACK_IMPORTED_MODULE_0__[\"unique\"])(((_a = this.transform.groupby) !== null && _a !== void 0 ? _a : []).concat(fields), d => d);\n    }\n    producedFields() {\n        return undefined; // return undefined so that potentially everything can depend on the pivot\n    }\n    dependentFields() {\n        var _a;\n        return new Set([this.transform.pivot, this.transform.value, ...((_a = this.transform.groupby) !== null && _a !== void 0 ? _a : [])]);\n    }\n    hash() {\n        return `PivotTransform ${Object(_util__WEBPACK_IMPORTED_MODULE_0__[\"hash\"])(this.transform)}`;\n    }\n    assemble() {\n        const { pivot, value, groupby, limit, op } = this.transform;\n        return Object.assign(Object.assign(Object.assign({ type: 'pivot', field: pivot, value }, (limit !== undefined ? { limit } : {})), (op !== undefined ? { op } : {})), (groupby !== undefined ? { groupby } : {}));\n    }\n}\n//# sourceMappingURL=pivot.js.map//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvdmVnYS1saXRlL2J1aWxkL3NyYy9jb21waWxlL2RhdGEvcGl2b3QuanMuanMiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvdmVnYS1saXRlL2J1aWxkL3NyYy9jb21waWxlL2RhdGEvcGl2b3QuanM/NGU3ZiJdLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBkdXBsaWNhdGUsIGhhc2gsIHVuaXF1ZSB9IGZyb20gJy4uLy4uL3V0aWwnO1xuaW1wb3J0IHsgRGF0YUZsb3dOb2RlIH0gZnJvbSAnLi9kYXRhZmxvdyc7XG4vKipcbiAqIEEgY2xhc3MgZm9yIHBpdm90IHRyYW5zZm9ybSBub2Rlcy5cbiAqL1xuZXhwb3J0IGNsYXNzIFBpdm90VHJhbnNmb3JtTm9kZSBleHRlbmRzIERhdGFGbG93Tm9kZSB7XG4gICAgY29uc3RydWN0b3IocGFyZW50LCB0cmFuc2Zvcm0pIHtcbiAgICAgICAgc3VwZXIocGFyZW50KTtcbiAgICAgICAgdGhpcy50cmFuc2Zvcm0gPSB0cmFuc2Zvcm07XG4gICAgfVxuICAgIGNsb25lKCkge1xuICAgICAgICByZXR1cm4gbmV3IFBpdm90VHJhbnNmb3JtTm9kZShudWxsLCBkdXBsaWNhdGUodGhpcy50cmFuc2Zvcm0pKTtcbiAgICB9XG4gICAgYWRkRGltZW5zaW9ucyhmaWVsZHMpIHtcbiAgICAgICAgdmFyIF9hO1xuICAgICAgICB0aGlzLnRyYW5zZm9ybS5ncm91cGJ5ID0gdW5pcXVlKCgoX2EgPSB0aGlzLnRyYW5zZm9ybS5ncm91cGJ5KSAhPT0gbnVsbCAmJiBfYSAhPT0gdm9pZCAwID8gX2EgOiBbXSkuY29uY2F0KGZpZWxkcyksIGQgPT4gZCk7XG4gICAgfVxuICAgIHByb2R1Y2VkRmllbGRzKCkge1xuICAgICAgICByZXR1cm4gdW5kZWZpbmVkOyAvLyByZXR1cm4gdW5kZWZpbmVkIHNvIHRoYXQgcG90ZW50aWFsbHkgZXZlcnl0aGluZyBjYW4gZGVwZW5kIG9uIHRoZSBwaXZvdFxuICAgIH1cbiAgICBkZXBlbmRlbnRGaWVsZHMoKSB7XG4gICAgICAgIHZhciBfYTtcbiAgICAgICAgcmV0dXJuIG5ldyBTZXQoW3RoaXMudHJhbnNmb3JtLnBpdm90LCB0aGlzLnRyYW5zZm9ybS52YWx1ZSwgLi4uKChfYSA9IHRoaXMudHJhbnNmb3JtLmdyb3VwYnkpICE9PSBudWxsICYmIF9hICE9PSB2b2lkIDAgPyBfYSA6IFtdKV0pO1xuICAgIH1cbiAgICBoYXNoKCkge1xuICAgICAgICByZXR1cm4gYFBpdm90VHJhbnNmb3JtICR7aGFzaCh0aGlzLnRyYW5zZm9ybSl9YDtcbiAgICB9XG4gICAgYXNzZW1ibGUoKSB7XG4gICAgICAgIGNvbnN0IHsgcGl2b3QsIHZhbHVlLCBncm91cGJ5LCBsaW1pdCwgb3AgfSA9IHRoaXMudHJhbnNmb3JtO1xuICAgICAgICByZXR1cm4gT2JqZWN0LmFzc2lnbihPYmplY3QuYXNzaWduKE9iamVjdC5hc3NpZ24oeyB0eXBlOiAncGl2b3QnLCBmaWVsZDogcGl2b3QsIHZhbHVlIH0sIChsaW1pdCAhPT0gdW5kZWZpbmVkID8geyBsaW1pdCB9IDoge30pKSwgKG9wICE9PSB1bmRlZmluZWQgPyB7IG9wIH0gOiB7fSkpLCAoZ3JvdXBieSAhPT0gdW5kZWZpbmVkID8geyBncm91cGJ5IH0gOiB7fSkpO1xuICAgIH1cbn1cbi8vIyBzb3VyY2VNYXBwaW5nVVJMPXBpdm90LmpzLm1hcCJdLCJtYXBwaW5ncyI6IkFBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EiLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///./node_modules/vega-lite/build/src/compile/data/pivot.js\n");

/***/ }),

/***/ "./node_modules/vega-lite/build/src/compile/data/quantile.js":
/*!*******************************************************************!*\
  !*** ./node_modules/vega-lite/build/src/compile/data/quantile.js ***!
  \*******************************************************************/
/*! exports provided: QuantileTransformNode */
/***/ (function(module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"QuantileTransformNode\", function() { return QuantileTransformNode; });\n/* harmony import */ var _util__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../../util */ \"./node_modules/vega-lite/build/src/util.js\");\n/* harmony import */ var _dataflow__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./dataflow */ \"./node_modules/vega-lite/build/src/compile/data/dataflow.js\");\nvar __rest = (undefined && undefined.__rest) || function (s, e) {\n    var t = {};\n    for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0)\n        t[p] = s[p];\n    if (s != null && typeof Object.getOwnPropertySymbols === \"function\")\n        for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) {\n            if (e.indexOf(p[i]) < 0 && Object.prototype.propertyIsEnumerable.call(s, p[i]))\n                t[p[i]] = s[p[i]];\n        }\n    return t;\n};\n\n\n/**\n * A class for quantile transform nodes\n */\nclass QuantileTransformNode extends _dataflow__WEBPACK_IMPORTED_MODULE_1__[\"DataFlowNode\"] {\n    constructor(parent, transform) {\n        var _a, _b, _c;\n        super(parent);\n        this.transform = transform;\n        this.transform = Object(_util__WEBPACK_IMPORTED_MODULE_0__[\"duplicate\"])(transform); // duplicate to prevent side effects\n        const specifiedAs = (_a = this.transform.as) !== null && _a !== void 0 ? _a : [undefined, undefined];\n        this.transform.as = [(_b = specifiedAs[0]) !== null && _b !== void 0 ? _b : 'prob', (_c = specifiedAs[1]) !== null && _c !== void 0 ? _c : 'value'];\n    }\n    clone() {\n        return new QuantileTransformNode(null, Object(_util__WEBPACK_IMPORTED_MODULE_0__[\"duplicate\"])(this.transform));\n    }\n    dependentFields() {\n        var _a;\n        return new Set([this.transform.quantile, ...((_a = this.transform.groupby) !== null && _a !== void 0 ? _a : [])]);\n    }\n    producedFields() {\n        return new Set(this.transform.as);\n    }\n    hash() {\n        return `QuantileTransform ${Object(_util__WEBPACK_IMPORTED_MODULE_0__[\"hash\"])(this.transform)}`;\n    }\n    assemble() {\n        const _a = this.transform, { quantile } = _a, rest = __rest(_a, [\"quantile\"]);\n        const result = Object.assign({ type: 'quantile', field: quantile }, rest);\n        return result;\n    }\n}\n//# sourceMappingURL=quantile.js.map//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvdmVnYS1saXRlL2J1aWxkL3NyYy9jb21waWxlL2RhdGEvcXVhbnRpbGUuanMuanMiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvdmVnYS1saXRlL2J1aWxkL3NyYy9jb21waWxlL2RhdGEvcXVhbnRpbGUuanM/YTFjOCJdLCJzb3VyY2VzQ29udGVudCI6WyJ2YXIgX19yZXN0ID0gKHRoaXMgJiYgdGhpcy5fX3Jlc3QpIHx8IGZ1bmN0aW9uIChzLCBlKSB7XG4gICAgdmFyIHQgPSB7fTtcbiAgICBmb3IgKHZhciBwIGluIHMpIGlmIChPYmplY3QucHJvdG90eXBlLmhhc093blByb3BlcnR5LmNhbGwocywgcCkgJiYgZS5pbmRleE9mKHApIDwgMClcbiAgICAgICAgdFtwXSA9IHNbcF07XG4gICAgaWYgKHMgIT0gbnVsbCAmJiB0eXBlb2YgT2JqZWN0LmdldE93blByb3BlcnR5U3ltYm9scyA9PT0gXCJmdW5jdGlvblwiKVxuICAgICAgICBmb3IgKHZhciBpID0gMCwgcCA9IE9iamVjdC5nZXRPd25Qcm9wZXJ0eVN5bWJvbHMocyk7IGkgPCBwLmxlbmd0aDsgaSsrKSB7XG4gICAgICAgICAgICBpZiAoZS5pbmRleE9mKHBbaV0pIDwgMCAmJiBPYmplY3QucHJvdG90eXBlLnByb3BlcnR5SXNFbnVtZXJhYmxlLmNhbGwocywgcFtpXSkpXG4gICAgICAgICAgICAgICAgdFtwW2ldXSA9IHNbcFtpXV07XG4gICAgICAgIH1cbiAgICByZXR1cm4gdDtcbn07XG5pbXBvcnQgeyBkdXBsaWNhdGUsIGhhc2ggfSBmcm9tICcuLi8uLi91dGlsJztcbmltcG9ydCB7IERhdGFGbG93Tm9kZSB9IGZyb20gJy4vZGF0YWZsb3cnO1xuLyoqXG4gKiBBIGNsYXNzIGZvciBxdWFudGlsZSB0cmFuc2Zvcm0gbm9kZXNcbiAqL1xuZXhwb3J0IGNsYXNzIFF1YW50aWxlVHJhbnNmb3JtTm9kZSBleHRlbmRzIERhdGFGbG93Tm9kZSB7XG4gICAgY29uc3RydWN0b3IocGFyZW50LCB0cmFuc2Zvcm0pIHtcbiAgICAgICAgdmFyIF9hLCBfYiwgX2M7XG4gICAgICAgIHN1cGVyKHBhcmVudCk7XG4gICAgICAgIHRoaXMudHJhbnNmb3JtID0gdHJhbnNmb3JtO1xuICAgICAgICB0aGlzLnRyYW5zZm9ybSA9IGR1cGxpY2F0ZSh0cmFuc2Zvcm0pOyAvLyBkdXBsaWNhdGUgdG8gcHJldmVudCBzaWRlIGVmZmVjdHNcbiAgICAgICAgY29uc3Qgc3BlY2lmaWVkQXMgPSAoX2EgPSB0aGlzLnRyYW5zZm9ybS5hcykgIT09IG51bGwgJiYgX2EgIT09IHZvaWQgMCA/IF9hIDogW3VuZGVmaW5lZCwgdW5kZWZpbmVkXTtcbiAgICAgICAgdGhpcy50cmFuc2Zvcm0uYXMgPSBbKF9iID0gc3BlY2lmaWVkQXNbMF0pICE9PSBudWxsICYmIF9iICE9PSB2b2lkIDAgPyBfYiA6ICdwcm9iJywgKF9jID0gc3BlY2lmaWVkQXNbMV0pICE9PSBudWxsICYmIF9jICE9PSB2b2lkIDAgPyBfYyA6ICd2YWx1ZSddO1xuICAgIH1cbiAgICBjbG9uZSgpIHtcbiAgICAgICAgcmV0dXJuIG5ldyBRdWFudGlsZVRyYW5zZm9ybU5vZGUobnVsbCwgZHVwbGljYXRlKHRoaXMudHJhbnNmb3JtKSk7XG4gICAgfVxuICAgIGRlcGVuZGVudEZpZWxkcygpIHtcbiAgICAgICAgdmFyIF9hO1xuICAgICAgICByZXR1cm4gbmV3IFNldChbdGhpcy50cmFuc2Zvcm0ucXVhbnRpbGUsIC4uLigoX2EgPSB0aGlzLnRyYW5zZm9ybS5ncm91cGJ5KSAhPT0gbnVsbCAmJiBfYSAhPT0gdm9pZCAwID8gX2EgOiBbXSldKTtcbiAgICB9XG4gICAgcHJvZHVjZWRGaWVsZHMoKSB7XG4gICAgICAgIHJldHVybiBuZXcgU2V0KHRoaXMudHJhbnNmb3JtLmFzKTtcbiAgICB9XG4gICAgaGFzaCgpIHtcbiAgICAgICAgcmV0dXJuIGBRdWFudGlsZVRyYW5zZm9ybSAke2hhc2godGhpcy50cmFuc2Zvcm0pfWA7XG4gICAgfVxuICAgIGFzc2VtYmxlKCkge1xuICAgICAgICBjb25zdCBfYSA9IHRoaXMudHJhbnNmb3JtLCB7IHF1YW50aWxlIH0gPSBfYSwgcmVzdCA9IF9fcmVzdChfYSwgW1wicXVhbnRpbGVcIl0pO1xuICAgICAgICBjb25zdCByZXN1bHQgPSBPYmplY3QuYXNzaWduKHsgdHlwZTogJ3F1YW50aWxlJywgZmllbGQ6IHF1YW50aWxlIH0sIHJlc3QpO1xuICAgICAgICByZXR1cm4gcmVzdWx0O1xuICAgIH1cbn1cbi8vIyBzb3VyY2VNYXBwaW5nVVJMPXF1YW50aWxlLmpzLm1hcCJdLCJtYXBwaW5ncyI6IkFBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EiLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///./node_modules/vega-lite/build/src/compile/data/quantile.js\n");

/***/ }),

/***/ "./node_modules/vega-lite/build/src/compile/data/regression.js":
/*!*********************************************************************!*\
  !*** ./node_modules/vega-lite/build/src/compile/data/regression.js ***!
  \*********************************************************************/
/*! exports provided: RegressionTransformNode */
/***/ (function(module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"RegressionTransformNode\", function() { return RegressionTransformNode; });\n/* harmony import */ var _util__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../../util */ \"./node_modules/vega-lite/build/src/util.js\");\n/* harmony import */ var _dataflow__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./dataflow */ \"./node_modules/vega-lite/build/src/compile/data/dataflow.js\");\nvar __rest = (undefined && undefined.__rest) || function (s, e) {\n    var t = {};\n    for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0)\n        t[p] = s[p];\n    if (s != null && typeof Object.getOwnPropertySymbols === \"function\")\n        for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) {\n            if (e.indexOf(p[i]) < 0 && Object.prototype.propertyIsEnumerable.call(s, p[i]))\n                t[p[i]] = s[p[i]];\n        }\n    return t;\n};\n\n\n/**\n * A class for regression transform nodes\n */\nclass RegressionTransformNode extends _dataflow__WEBPACK_IMPORTED_MODULE_1__[\"DataFlowNode\"] {\n    constructor(parent, transform) {\n        var _a, _b, _c;\n        super(parent);\n        this.transform = transform;\n        this.transform = Object(_util__WEBPACK_IMPORTED_MODULE_0__[\"duplicate\"])(transform); // duplicate to prevent side effects\n        const specifiedAs = (_a = this.transform.as) !== null && _a !== void 0 ? _a : [undefined, undefined];\n        this.transform.as = [(_b = specifiedAs[0]) !== null && _b !== void 0 ? _b : transform.on, (_c = specifiedAs[1]) !== null && _c !== void 0 ? _c : transform.regression];\n    }\n    clone() {\n        return new RegressionTransformNode(null, Object(_util__WEBPACK_IMPORTED_MODULE_0__[\"duplicate\"])(this.transform));\n    }\n    dependentFields() {\n        var _a;\n        return new Set([this.transform.regression, this.transform.on, ...((_a = this.transform.groupby) !== null && _a !== void 0 ? _a : [])]);\n    }\n    producedFields() {\n        return new Set(this.transform.as);\n    }\n    hash() {\n        return `RegressionTransform ${Object(_util__WEBPACK_IMPORTED_MODULE_0__[\"hash\"])(this.transform)}`;\n    }\n    assemble() {\n        const _a = this.transform, { regression, on } = _a, rest = __rest(_a, [\"regression\", \"on\"]);\n        const result = Object.assign({ type: 'regression', x: on, y: regression }, rest);\n        return result;\n    }\n}\n//# sourceMappingURL=regression.js.map//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvdmVnYS1saXRlL2J1aWxkL3NyYy9jb21waWxlL2RhdGEvcmVncmVzc2lvbi5qcy5qcyIsInNvdXJjZXMiOlsid2VicGFjazovLy8uL25vZGVfbW9kdWxlcy92ZWdhLWxpdGUvYnVpbGQvc3JjL2NvbXBpbGUvZGF0YS9yZWdyZXNzaW9uLmpzPzMzODQiXSwic291cmNlc0NvbnRlbnQiOlsidmFyIF9fcmVzdCA9ICh0aGlzICYmIHRoaXMuX19yZXN0KSB8fCBmdW5jdGlvbiAocywgZSkge1xuICAgIHZhciB0ID0ge307XG4gICAgZm9yICh2YXIgcCBpbiBzKSBpZiAoT2JqZWN0LnByb3RvdHlwZS5oYXNPd25Qcm9wZXJ0eS5jYWxsKHMsIHApICYmIGUuaW5kZXhPZihwKSA8IDApXG4gICAgICAgIHRbcF0gPSBzW3BdO1xuICAgIGlmIChzICE9IG51bGwgJiYgdHlwZW9mIE9iamVjdC5nZXRPd25Qcm9wZXJ0eVN5bWJvbHMgPT09IFwiZnVuY3Rpb25cIilcbiAgICAgICAgZm9yICh2YXIgaSA9IDAsIHAgPSBPYmplY3QuZ2V0T3duUHJvcGVydHlTeW1ib2xzKHMpOyBpIDwgcC5sZW5ndGg7IGkrKykge1xuICAgICAgICAgICAgaWYgKGUuaW5kZXhPZihwW2ldKSA8IDAgJiYgT2JqZWN0LnByb3RvdHlwZS5wcm9wZXJ0eUlzRW51bWVyYWJsZS5jYWxsKHMsIHBbaV0pKVxuICAgICAgICAgICAgICAgIHRbcFtpXV0gPSBzW3BbaV1dO1xuICAgICAgICB9XG4gICAgcmV0dXJuIHQ7XG59O1xuaW1wb3J0IHsgZHVwbGljYXRlLCBoYXNoIH0gZnJvbSAnLi4vLi4vdXRpbCc7XG5pbXBvcnQgeyBEYXRhRmxvd05vZGUgfSBmcm9tICcuL2RhdGFmbG93Jztcbi8qKlxuICogQSBjbGFzcyBmb3IgcmVncmVzc2lvbiB0cmFuc2Zvcm0gbm9kZXNcbiAqL1xuZXhwb3J0IGNsYXNzIFJlZ3Jlc3Npb25UcmFuc2Zvcm1Ob2RlIGV4dGVuZHMgRGF0YUZsb3dOb2RlIHtcbiAgICBjb25zdHJ1Y3RvcihwYXJlbnQsIHRyYW5zZm9ybSkge1xuICAgICAgICB2YXIgX2EsIF9iLCBfYztcbiAgICAgICAgc3VwZXIocGFyZW50KTtcbiAgICAgICAgdGhpcy50cmFuc2Zvcm0gPSB0cmFuc2Zvcm07XG4gICAgICAgIHRoaXMudHJhbnNmb3JtID0gZHVwbGljYXRlKHRyYW5zZm9ybSk7IC8vIGR1cGxpY2F0ZSB0byBwcmV2ZW50IHNpZGUgZWZmZWN0c1xuICAgICAgICBjb25zdCBzcGVjaWZpZWRBcyA9IChfYSA9IHRoaXMudHJhbnNmb3JtLmFzKSAhPT0gbnVsbCAmJiBfYSAhPT0gdm9pZCAwID8gX2EgOiBbdW5kZWZpbmVkLCB1bmRlZmluZWRdO1xuICAgICAgICB0aGlzLnRyYW5zZm9ybS5hcyA9IFsoX2IgPSBzcGVjaWZpZWRBc1swXSkgIT09IG51bGwgJiYgX2IgIT09IHZvaWQgMCA/IF9iIDogdHJhbnNmb3JtLm9uLCAoX2MgPSBzcGVjaWZpZWRBc1sxXSkgIT09IG51bGwgJiYgX2MgIT09IHZvaWQgMCA/IF9jIDogdHJhbnNmb3JtLnJlZ3Jlc3Npb25dO1xuICAgIH1cbiAgICBjbG9uZSgpIHtcbiAgICAgICAgcmV0dXJuIG5ldyBSZWdyZXNzaW9uVHJhbnNmb3JtTm9kZShudWxsLCBkdXBsaWNhdGUodGhpcy50cmFuc2Zvcm0pKTtcbiAgICB9XG4gICAgZGVwZW5kZW50RmllbGRzKCkge1xuICAgICAgICB2YXIgX2E7XG4gICAgICAgIHJldHVybiBuZXcgU2V0KFt0aGlzLnRyYW5zZm9ybS5yZWdyZXNzaW9uLCB0aGlzLnRyYW5zZm9ybS5vbiwgLi4uKChfYSA9IHRoaXMudHJhbnNmb3JtLmdyb3VwYnkpICE9PSBudWxsICYmIF9hICE9PSB2b2lkIDAgPyBfYSA6IFtdKV0pO1xuICAgIH1cbiAgICBwcm9kdWNlZEZpZWxkcygpIHtcbiAgICAgICAgcmV0dXJuIG5ldyBTZXQodGhpcy50cmFuc2Zvcm0uYXMpO1xuICAgIH1cbiAgICBoYXNoKCkge1xuICAgICAgICByZXR1cm4gYFJlZ3Jlc3Npb25UcmFuc2Zvcm0gJHtoYXNoKHRoaXMudHJhbnNmb3JtKX1gO1xuICAgIH1cbiAgICBhc3NlbWJsZSgpIHtcbiAgICAgICAgY29uc3QgX2EgPSB0aGlzLnRyYW5zZm9ybSwgeyByZWdyZXNzaW9uLCBvbiB9ID0gX2EsIHJlc3QgPSBfX3Jlc3QoX2EsIFtcInJlZ3Jlc3Npb25cIiwgXCJvblwiXSk7XG4gICAgICAgIGNvbnN0IHJlc3VsdCA9IE9iamVjdC5hc3NpZ24oeyB0eXBlOiAncmVncmVzc2lvbicsIHg6IG9uLCB5OiByZWdyZXNzaW9uIH0sIHJlc3QpO1xuICAgICAgICByZXR1cm4gcmVzdWx0O1xuICAgIH1cbn1cbi8vIyBzb3VyY2VNYXBwaW5nVVJMPXJlZ3Jlc3Npb24uanMubWFwIl0sIm1hcHBpbmdzIjoiQUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSIsInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///./node_modules/vega-lite/build/src/compile/data/regression.js\n");

/***/ }),

/***/ "./node_modules/vega-lite/build/src/compile/data/sample.js":
/*!*****************************************************************!*\
  !*** ./node_modules/vega-lite/build/src/compile/data/sample.js ***!
  \*****************************************************************/
/*! exports provided: SampleTransformNode */
/***/ (function(module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"SampleTransformNode\", function() { return SampleTransformNode; });\n/* harmony import */ var _util__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../../util */ \"./node_modules/vega-lite/build/src/util.js\");\n/* harmony import */ var _dataflow__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./dataflow */ \"./node_modules/vega-lite/build/src/compile/data/dataflow.js\");\n\n\n/**\n * A class for the sample transform nodes\n */\nclass SampleTransformNode extends _dataflow__WEBPACK_IMPORTED_MODULE_1__[\"DataFlowNode\"] {\n    constructor(parent, transform) {\n        super(parent);\n        this.transform = transform;\n    }\n    clone() {\n        return new SampleTransformNode(null, Object(_util__WEBPACK_IMPORTED_MODULE_0__[\"duplicate\"])(this.transform));\n    }\n    dependentFields() {\n        return new Set();\n    }\n    producedFields() {\n        return new Set();\n    }\n    hash() {\n        return `SampleTransform ${Object(_util__WEBPACK_IMPORTED_MODULE_0__[\"hash\"])(this.transform)}`;\n    }\n    assemble() {\n        return {\n            type: 'sample',\n            size: this.transform.sample\n        };\n    }\n}\n//# sourceMappingURL=sample.js.map//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvdmVnYS1saXRlL2J1aWxkL3NyYy9jb21waWxlL2RhdGEvc2FtcGxlLmpzLmpzIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL3ZlZ2EtbGl0ZS9idWlsZC9zcmMvY29tcGlsZS9kYXRhL3NhbXBsZS5qcz80OWY1Il0sInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IGR1cGxpY2F0ZSwgaGFzaCB9IGZyb20gJy4uLy4uL3V0aWwnO1xuaW1wb3J0IHsgRGF0YUZsb3dOb2RlIH0gZnJvbSAnLi9kYXRhZmxvdyc7XG4vKipcbiAqIEEgY2xhc3MgZm9yIHRoZSBzYW1wbGUgdHJhbnNmb3JtIG5vZGVzXG4gKi9cbmV4cG9ydCBjbGFzcyBTYW1wbGVUcmFuc2Zvcm1Ob2RlIGV4dGVuZHMgRGF0YUZsb3dOb2RlIHtcbiAgICBjb25zdHJ1Y3RvcihwYXJlbnQsIHRyYW5zZm9ybSkge1xuICAgICAgICBzdXBlcihwYXJlbnQpO1xuICAgICAgICB0aGlzLnRyYW5zZm9ybSA9IHRyYW5zZm9ybTtcbiAgICB9XG4gICAgY2xvbmUoKSB7XG4gICAgICAgIHJldHVybiBuZXcgU2FtcGxlVHJhbnNmb3JtTm9kZShudWxsLCBkdXBsaWNhdGUodGhpcy50cmFuc2Zvcm0pKTtcbiAgICB9XG4gICAgZGVwZW5kZW50RmllbGRzKCkge1xuICAgICAgICByZXR1cm4gbmV3IFNldCgpO1xuICAgIH1cbiAgICBwcm9kdWNlZEZpZWxkcygpIHtcbiAgICAgICAgcmV0dXJuIG5ldyBTZXQoKTtcbiAgICB9XG4gICAgaGFzaCgpIHtcbiAgICAgICAgcmV0dXJuIGBTYW1wbGVUcmFuc2Zvcm0gJHtoYXNoKHRoaXMudHJhbnNmb3JtKX1gO1xuICAgIH1cbiAgICBhc3NlbWJsZSgpIHtcbiAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICAgIHR5cGU6ICdzYW1wbGUnLFxuICAgICAgICAgICAgc2l6ZTogdGhpcy50cmFuc2Zvcm0uc2FtcGxlXG4gICAgICAgIH07XG4gICAgfVxufVxuLy8jIHNvdXJjZU1hcHBpbmdVUkw9c2FtcGxlLmpzLm1hcCJdLCJtYXBwaW5ncyI6IkFBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EiLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///./node_modules/vega-lite/build/src/compile/data/sample.js\n");

/***/ }),

/***/ "./node_modules/vega-lite/build/src/compile/data/sequence.js":
/*!*******************************************************************!*\
  !*** ./node_modules/vega-lite/build/src/compile/data/sequence.js ***!
  \*******************************************************************/
/*! exports provided: SequenceNode */
/***/ (function(module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"SequenceNode\", function() { return SequenceNode; });\n/* harmony import */ var _util__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../../util */ \"./node_modules/vega-lite/build/src/util.js\");\n/* harmony import */ var _dataflow__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./dataflow */ \"./node_modules/vega-lite/build/src/compile/data/dataflow.js\");\n\n\nclass SequenceNode extends _dataflow__WEBPACK_IMPORTED_MODULE_1__[\"DataFlowNode\"] {\n    constructor(parent, params) {\n        super(parent);\n        this.params = params;\n    }\n    clone() {\n        return new SequenceNode(null, this.params);\n    }\n    dependentFields() {\n        return new Set();\n    }\n    producedFields() {\n        var _a;\n        return new Set([(_a = this.params.as) !== null && _a !== void 0 ? _a : 'data']);\n    }\n    hash() {\n        return `Hash ${Object(_util__WEBPACK_IMPORTED_MODULE_0__[\"hash\"])(this.params)}`;\n    }\n    assemble() {\n        return Object.assign({ type: 'sequence' }, this.params);\n    }\n}\n//# sourceMappingURL=sequence.js.map//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvdmVnYS1saXRlL2J1aWxkL3NyYy9jb21waWxlL2RhdGEvc2VxdWVuY2UuanMuanMiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvdmVnYS1saXRlL2J1aWxkL3NyYy9jb21waWxlL2RhdGEvc2VxdWVuY2UuanM/ZTQ5YyJdLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBoYXNoIH0gZnJvbSAnLi4vLi4vdXRpbCc7XG5pbXBvcnQgeyBEYXRhRmxvd05vZGUgfSBmcm9tICcuL2RhdGFmbG93JztcbmV4cG9ydCBjbGFzcyBTZXF1ZW5jZU5vZGUgZXh0ZW5kcyBEYXRhRmxvd05vZGUge1xuICAgIGNvbnN0cnVjdG9yKHBhcmVudCwgcGFyYW1zKSB7XG4gICAgICAgIHN1cGVyKHBhcmVudCk7XG4gICAgICAgIHRoaXMucGFyYW1zID0gcGFyYW1zO1xuICAgIH1cbiAgICBjbG9uZSgpIHtcbiAgICAgICAgcmV0dXJuIG5ldyBTZXF1ZW5jZU5vZGUobnVsbCwgdGhpcy5wYXJhbXMpO1xuICAgIH1cbiAgICBkZXBlbmRlbnRGaWVsZHMoKSB7XG4gICAgICAgIHJldHVybiBuZXcgU2V0KCk7XG4gICAgfVxuICAgIHByb2R1Y2VkRmllbGRzKCkge1xuICAgICAgICB2YXIgX2E7XG4gICAgICAgIHJldHVybiBuZXcgU2V0KFsoX2EgPSB0aGlzLnBhcmFtcy5hcykgIT09IG51bGwgJiYgX2EgIT09IHZvaWQgMCA/IF9hIDogJ2RhdGEnXSk7XG4gICAgfVxuICAgIGhhc2goKSB7XG4gICAgICAgIHJldHVybiBgSGFzaCAke2hhc2godGhpcy5wYXJhbXMpfWA7XG4gICAgfVxuICAgIGFzc2VtYmxlKCkge1xuICAgICAgICByZXR1cm4gT2JqZWN0LmFzc2lnbih7IHR5cGU6ICdzZXF1ZW5jZScgfSwgdGhpcy5wYXJhbXMpO1xuICAgIH1cbn1cbi8vIyBzb3VyY2VNYXBwaW5nVVJMPXNlcXVlbmNlLmpzLm1hcCJdLCJtYXBwaW5ncyI6IkFBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSIsInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///./node_modules/vega-lite/build/src/compile/data/sequence.js\n");

/***/ }),

/***/ "./node_modules/vega-lite/build/src/compile/data/source.js":
/*!*****************************************************************!*\
  !*** ./node_modules/vega-lite/build/src/compile/data/source.js ***!
  \*****************************************************************/
/*! exports provided: SourceNode */
/***/ (function(module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"SourceNode\", function() { return SourceNode; });\n/* harmony import */ var _data__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../../data */ \"./node_modules/vega-lite/build/src/data.js\");\n/* harmony import */ var _util__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../../util */ \"./node_modules/vega-lite/build/src/util.js\");\n/* harmony import */ var _dataflow__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./dataflow */ \"./node_modules/vega-lite/build/src/compile/data/dataflow.js\");\n\n\n\nclass SourceNode extends _dataflow__WEBPACK_IMPORTED_MODULE_2__[\"DataFlowNode\"] {\n    constructor(data) {\n        super(null); // source cannot have parent\n        data = data !== null && data !== void 0 ? data : { name: 'source' };\n        let format;\n        if (!Object(_data__WEBPACK_IMPORTED_MODULE_0__[\"isGenerator\"])(data)) {\n            format = data.format ? Object.assign({}, Object(_util__WEBPACK_IMPORTED_MODULE_1__[\"omit\"])(data.format, ['parse'])) : {};\n        }\n        if (Object(_data__WEBPACK_IMPORTED_MODULE_0__[\"isInlineData\"])(data)) {\n            this._data = { values: data.values };\n        }\n        else if (Object(_data__WEBPACK_IMPORTED_MODULE_0__[\"isUrlData\"])(data)) {\n            this._data = { url: data.url };\n            if (!format.type) {\n                // Extract extension from URL using snippet from\n                // http://stackoverflow.com/questions/680929/how-to-extract-extension-from-filename-string-in-javascript\n                let defaultExtension = /(?:\\.([^.]+))?$/.exec(data.url)[1];\n                if (!Object(_util__WEBPACK_IMPORTED_MODULE_1__[\"contains\"])(['json', 'csv', 'tsv', 'dsv', 'topojson'], defaultExtension)) {\n                    defaultExtension = 'json';\n                }\n                // defaultExtension has type string but we ensure that it is DataFormatType above\n                format.type = defaultExtension;\n            }\n        }\n        else if (Object(_data__WEBPACK_IMPORTED_MODULE_0__[\"isSphereGenerator\"])(data)) {\n            // hardwire GeoJSON sphere data into output specification\n            this._data = { values: [{ type: 'Sphere' }] };\n        }\n        else if (Object(_data__WEBPACK_IMPORTED_MODULE_0__[\"isNamedData\"])(data) || Object(_data__WEBPACK_IMPORTED_MODULE_0__[\"isGenerator\"])(data)) {\n            this._data = {};\n        }\n        // set flag to check if generator\n        this._generator = Object(_data__WEBPACK_IMPORTED_MODULE_0__[\"isGenerator\"])(data);\n        // any dataset can be named\n        if (data.name) {\n            this._name = data.name;\n        }\n        if (format && !Object(_util__WEBPACK_IMPORTED_MODULE_1__[\"isEmpty\"])(format)) {\n            this._data.format = format;\n        }\n    }\n    dependentFields() {\n        return new Set();\n    }\n    producedFields() {\n        return undefined; // we don't know what this source produces\n    }\n    get data() {\n        return this._data;\n    }\n    hasName() {\n        return !!this._name;\n    }\n    get isGenerator() {\n        return this._generator;\n    }\n    get dataName() {\n        return this._name;\n    }\n    set dataName(name) {\n        this._name = name;\n    }\n    set parent(parent) {\n        throw new Error('Source nodes have to be roots.');\n    }\n    remove() {\n        throw new Error('Source nodes are roots and cannot be removed.');\n    }\n    hash() {\n        throw new Error('Cannot hash sources');\n    }\n    assemble() {\n        return Object.assign(Object.assign({ name: this._name }, this._data), { transform: [] });\n    }\n}\n//# sourceMappingURL=source.js.map//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,[encoded data, 4636 characters]\n//# sourceURL=webpack-internal:///./node_modules/vega-lite/build/src/compile/data/source.js\n");

/***/ }),

/***/ "./node_modules/vega-lite/build/src/compile/data/stack.js":
/*!****************************************************************!*\
  !*** ./node_modules/vega-lite/build/src/compile/data/stack.js ***!
  \****************************************************************/
/*! exports provided: StackNode */
/***/ (function(module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"StackNode\", function() { return StackNode; });\n/* harmony import */ var vega_util__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! vega-util */ \"./node_modules/vega-lite/node_modules/vega-util/build/vega-util.module.js\");\n/* harmony import */ var _channeldef__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../../channeldef */ \"./node_modules/vega-lite/build/src/channeldef.js\");\n/* harmony import */ var _util__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ../../util */ \"./node_modules/vega-lite/build/src/util.js\");\n/* harmony import */ var _common__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ../common */ \"./node_modules/vega-lite/build/src/compile/common.js\");\n/* harmony import */ var _dataflow__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ./dataflow */ \"./node_modules/vega-lite/build/src/compile/data/dataflow.js\");\n\n\n\n\n\nfunction getStackByFields(model) {\n    return model.stack.stackBy.reduce((fields, by) => {\n        const fieldDef = by.fieldDef;\n        const _field = Object(_channeldef__WEBPACK_IMPORTED_MODULE_1__[\"vgField\"])(fieldDef);\n        if (_field) {\n            fields.push(_field);\n        }\n        return fields;\n    }, []);\n}\nfunction isValidAsArray(as) {\n    return Object(vega_util__WEBPACK_IMPORTED_MODULE_0__[\"isArray\"])(as) && as.every(s => Object(vega_util__WEBPACK_IMPORTED_MODULE_0__[\"isString\"])(s)) && as.length > 1;\n}\nclass StackNode extends _dataflow__WEBPACK_IMPORTED_MODULE_4__[\"DataFlowNode\"] {\n    constructor(parent, stack) {\n        super(parent);\n        this._stack = stack;\n    }\n    clone() {\n        return new StackNode(null, Object(_util__WEBPACK_IMPORTED_MODULE_2__[\"duplicate\"])(this._stack));\n    }\n    static makeFromTransform(parent, stackTransform) {\n        const { stack, groupby, as, offset = 'zero' } = stackTransform;\n        const sortFields = [];\n        const sortOrder = [];\n        if (stackTransform.sort !== undefined) {\n            for (const sortField of stackTransform.sort) {\n                sortFields.push(sortField.field);\n                sortOrder.push(Object(_util__WEBPACK_IMPORTED_MODULE_2__[\"getFirstDefined\"])(sortField.order, 'ascending'));\n            }\n        }\n        const sort = {\n            field: sortFields,\n            order: sortOrder\n        };\n        let normalizedAs;\n        if (isValidAsArray(as)) {\n            normalizedAs = as;\n        }\n        else if (Object(vega_util__WEBPACK_IMPORTED_MODULE_0__[\"isString\"])(as)) {\n            normalizedAs = [as, as + '_end'];\n        }\n        else {\n            normalizedAs = [stackTransform.stack + '_start', stackTransform.stack + '_end'];\n        }\n        return new StackNode(parent, {\n            stackField: stack,\n            groupby,\n            offset,\n            sort,\n            facetby: [],\n            as: normalizedAs\n        });\n    }\n    static makeFromEncoding(parent, model) {\n        const stackProperties = model.stack;\n        const { encoding } = model;\n        if (!stackProperties) {\n            return null;\n        }\n        const { groupbyChannel, fieldChannel, offset, impute } = stackProperties;\n        let dimensionFieldDef;\n        if (groupbyChannel) {\n            const cDef = encoding[groupbyChannel];\n            dimensionFieldDef = Object(_channeldef__WEBPACK_IMPORTED_MODULE_1__[\"getFieldDef\"])(cDef); // Fair to cast as groupByChannel is always either x or y\n        }\n        const stackby = getStackByFields(model);\n        const orderDef = model.encoding.order;\n        let sort;\n        if (Object(vega_util__WEBPACK_IMPORTED_MODULE_0__[\"isArray\"])(orderDef) || Object(_channeldef__WEBPACK_IMPORTED_MODULE_1__[\"isFieldDef\"])(orderDef)) {\n            sort = Object(_common__WEBPACK_IMPORTED_MODULE_3__[\"sortParams\"])(orderDef);\n        }\n        else {\n            // default = descending by stackFields\n            // FIXME is the default here correct for binned fields?\n            sort = stackby.reduce((s, field) => {\n                s.field.push(field);\n                s.order.push(fieldChannel === 'y' ? 'descending' : 'ascending');\n                return s;\n            }, { field: [], order: [] });\n        }\n        return new StackNode(parent, {\n            dimensionFieldDef,\n            stackField: model.vgField(fieldChannel),\n            facetby: [],\n            stackby,\n            sort,\n            offset,\n            impute,\n            as: [\n                model.vgField(fieldChannel, { suffix: 'start', forAs: true }),\n                model.vgField(fieldChannel, { suffix: 'end', forAs: true })\n            ]\n        });\n    }\n    get stack() {\n        return this._stack;\n    }\n    addDimensions(fields) {\n        this._stack.facetby.push(...fields);\n    }\n    dependentFields() {\n        const out = new Set();\n        out.add(this._stack.stackField);\n        this.getGroupbyFields().forEach(out.add, out);\n        this._stack.facetby.forEach(out.add, out);\n        this._stack.sort.field.forEach(out.add, out);\n        return out;\n    }\n    producedFields() {\n        return new Set(this._stack.as);\n    }\n    hash() {\n        return `Stack ${Object(_util__WEBPACK_IMPORTED_MODULE_2__[\"hash\"])(this._stack)}`;\n    }\n    getGroupbyFields() {\n        const { dimensionFieldDef, impute, groupby } = this._stack;\n        if (dimensionFieldDef) {\n            if (dimensionFieldDef.bin) {\n                if (impute) {\n                    // For binned group by field with impute, we calculate bin_mid\n                    // as we cannot impute two fields simultaneously\n                    return [Object(_channeldef__WEBPACK_IMPORTED_MODULE_1__[\"vgField\"])(dimensionFieldDef, { binSuffix: 'mid' })];\n                }\n                return [\n                    // For binned group by field without impute, we need both bin (start) and bin_end\n                    Object(_channeldef__WEBPACK_IMPORTED_MODULE_1__[\"vgField\"])(dimensionFieldDef, {}),\n                    Object(_channeldef__WEBPACK_IMPORTED_MODULE_1__[\"vgField\"])(dimensionFieldDef, { binSuffix: 'end' })\n                ];\n            }\n            return [Object(_channeldef__WEBPACK_IMPORTED_MODULE_1__[\"vgField\"])(dimensionFieldDef)];\n        }\n        return groupby !== null && groupby !== void 0 ? groupby : [];\n    }\n    assemble() {\n        const transform = [];\n        const { facetby, dimensionFieldDef, stackField: field, stackby, sort, offset, impute, as } = this._stack;\n        // Impute\n        if (impute && dimensionFieldDef) {\n            const { band = 0.5, bin } = dimensionFieldDef;\n            if (bin) {\n                // As we can only impute one field at a time, we need to calculate\n                // mid point for a binned field\n                transform.push({\n                    type: 'formula',\n                    expr: `${band}*` +\n                        Object(_channeldef__WEBPACK_IMPORTED_MODULE_1__[\"vgField\"])(dimensionFieldDef, { expr: 'datum' }) +\n                        `+${1 - band}*` +\n                        Object(_channeldef__WEBPACK_IMPORTED_MODULE_1__[\"vgField\"])(dimensionFieldDef, { expr: 'datum', binSuffix: 'end' }),\n                    as: Object(_channeldef__WEBPACK_IMPORTED_MODULE_1__[\"vgField\"])(dimensionFieldDef, { binSuffix: 'mid', forAs: true })\n                });\n            }\n            transform.push({\n                type: 'impute',\n                field,\n                groupby: [...stackby, ...facetby],\n                key: Object(_channeldef__WEBPACK_IMPORTED_MODULE_1__[\"vgField\"])(dimensionFieldDef, { binSuffix: 'mid' }),\n                method: 'value',\n                value: 0\n            });\n        }\n        // Stack\n        transform.push({\n            type: 'stack',\n            groupby: [...this.getGroupbyFields(), ...facetby],\n            field,\n            sort,\n            as,\n            offset\n        });\n        return transform;\n    }\n}\n//# sourceMappingURL=stack.js.map//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,[encoded data, 10164 characters]\n//# sourceURL=webpack-internal:///./node_modules/vega-lite/build/src/compile/data/stack.js\n");

/***/ }),

/***/ "./node_modules/vega-lite/build/src/compile/data/subtree.js":
/*!******************************************************************!*\
  !*** ./node_modules/vega-lite/build/src/compile/data/subtree.js ***!
  \******************************************************************/
/*! exports provided: moveFacetDown */
/***/ (function(module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"moveFacetDown\", function() { return moveFacetDown; });\n/* harmony import */ var _data__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../../data */ \"./node_modules/vega-lite/build/src/data.js\");\n/* harmony import */ var _aggregate__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./aggregate */ \"./node_modules/vega-lite/build/src/compile/data/aggregate.js\");\n/* harmony import */ var _dataflow__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./dataflow */ \"./node_modules/vega-lite/build/src/compile/data/dataflow.js\");\n/* harmony import */ var _facet__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ./facet */ \"./node_modules/vega-lite/build/src/compile/data/facet.js\");\n/* harmony import */ var _joinaggregate__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ./joinaggregate */ \"./node_modules/vega-lite/build/src/compile/data/joinaggregate.js\");\n/* harmony import */ var _optimize__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! ./optimize */ \"./node_modules/vega-lite/build/src/compile/data/optimize.js\");\n/* harmony import */ var _stack__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! ./stack */ \"./node_modules/vega-lite/build/src/compile/data/stack.js\");\n/* harmony import */ var _window__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! ./window */ \"./node_modules/vega-lite/build/src/compile/data/window.js\");\n\n\n\n\n\n\n\n\n/**\n * Clones the subtree and ignores output nodes except for the leaves, which are renamed.\n */\nfunction cloneSubtree(facet) {\n    function clone(node) {\n        if (!(node instanceof _facet__WEBPACK_IMPORTED_MODULE_3__[\"FacetNode\"])) {\n            const copy = node.clone();\n            if (copy instanceof _dataflow__WEBPACK_IMPORTED_MODULE_2__[\"OutputNode\"]) {\n                const newName = _optimize__WEBPACK_IMPORTED_MODULE_5__[\"FACET_SCALE_PREFIX\"] + copy.getSource();\n                copy.setSource(newName);\n                facet.model.component.data.outputNodes[newName] = copy;\n            }\n            else if (copy instanceof _aggregate__WEBPACK_IMPORTED_MODULE_1__[\"AggregateNode\"] ||\n                copy instanceof _stack__WEBPACK_IMPORTED_MODULE_6__[\"StackNode\"] ||\n                copy instanceof _window__WEBPACK_IMPORTED_MODULE_7__[\"WindowTransformNode\"] ||\n                copy instanceof _joinaggregate__WEBPACK_IMPORTED_MODULE_4__[\"JoinAggregateTransformNode\"]) {\n                copy.addDimensions(facet.fields);\n            }\n            for (const n of node.children.flatMap(clone)) {\n                n.parent = copy;\n            }\n            return [copy];\n        }\n        return node.children.flatMap(clone);\n    }\n    return clone;\n}\n/**\n * Move facet nodes down to the next fork or output node. Also pull the main output with the facet node.\n * After moving down the facet node, make a copy of the subtree and make it a child of the main output.\n */\nfunction moveFacetDown(node) {\n    if (node instanceof _facet__WEBPACK_IMPORTED_MODULE_3__[\"FacetNode\"]) {\n        if (node.numChildren() === 1 && !(node.children[0] instanceof _dataflow__WEBPACK_IMPORTED_MODULE_2__[\"OutputNode\"])) {\n            // move down until we hit a fork or output node\n            const child = node.children[0];\n            if (child instanceof _aggregate__WEBPACK_IMPORTED_MODULE_1__[\"AggregateNode\"] ||\n                child instanceof _stack__WEBPACK_IMPORTED_MODULE_6__[\"StackNode\"] ||\n                child instanceof _window__WEBPACK_IMPORTED_MODULE_7__[\"WindowTransformNode\"] ||\n                child instanceof _joinaggregate__WEBPACK_IMPORTED_MODULE_4__[\"JoinAggregateTransformNode\"]) {\n                child.addDimensions(node.fields);\n            }\n            child.swapWithParent();\n            moveFacetDown(node);\n        }\n        else {\n            // move main to facet\n            const facetMain = node.model.component.data.main;\n            moveMainDownToFacet(facetMain);\n            // replicate the subtree and place it before the facet's main node\n            const cloner = cloneSubtree(node);\n            const copy = node.children.map(cloner).flat();\n            for (const c of copy) {\n                c.parent = facetMain;\n            }\n        }\n    }\n    else {\n        node.children.map(moveFacetDown);\n    }\n}\nfunction moveMainDownToFacet(node) {\n    if (node instanceof _dataflow__WEBPACK_IMPORTED_MODULE_2__[\"OutputNode\"] && node.type === _data__WEBPACK_IMPORTED_MODULE_0__[\"DataSourceType\"].Main) {\n        if (node.numChildren() === 1) {\n            const child = node.children[0];\n            if (!(child instanceof _facet__WEBPACK_IMPORTED_MODULE_3__[\"FacetNode\"])) {\n                child.swapWithParent();\n                moveMainDownToFacet(node);\n            }\n        }\n    }\n}\n//# sourceMappingURL=subtree.js.map//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,[encoded data, 5120 characters]\n//# sourceURL=webpack-internal:///./node_modules/vega-lite/build/src/compile/data/subtree.js\n");

/***/ }),

/***/ "./node_modules/vega-lite/build/src/compile/data/timeunit.js":
/*!*******************************************************************!*\
  !*** ./node_modules/vega-lite/build/src/compile/data/timeunit.js ***!
  \*******************************************************************/
/*! exports provided: TimeUnitNode */
/***/ (function(module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"TimeUnitNode\", function() { return TimeUnitNode; });\n/* harmony import */ var _channel__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../../channel */ \"./node_modules/vega-lite/build/src/channel.js\");\n/* harmony import */ var _channeldef__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../../channeldef */ \"./node_modules/vega-lite/build/src/channeldef.js\");\n/* harmony import */ var _timeunit__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ../../timeunit */ \"./node_modules/vega-lite/build/src/timeunit.js\");\n/* harmony import */ var _util__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ../../util */ \"./node_modules/vega-lite/build/src/util.js\");\n/* harmony import */ var _model__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ../model */ \"./node_modules/vega-lite/build/src/compile/model.js\");\n/* harmony import */ var _dataflow__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! ./dataflow */ \"./node_modules/vega-lite/build/src/compile/data/dataflow.js\");\nvar __rest = (undefined && undefined.__rest) || function (s, e) {\n    var t = {};\n    for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0)\n        t[p] = s[p];\n    if (s != null && typeof Object.getOwnPropertySymbols === \"function\")\n        for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) {\n            if (e.indexOf(p[i]) < 0 && Object.prototype.propertyIsEnumerable.call(s, p[i]))\n                t[p[i]] = s[p[i]];\n        }\n    return t;\n};\n\n\n\n\n\n\nclass TimeUnitNode extends _dataflow__WEBPACK_IMPORTED_MODULE_5__[\"DataFlowNode\"] {\n    constructor(parent, formula) {\n        super(parent);\n        this.formula = formula;\n    }\n    clone() {\n        return new TimeUnitNode(null, Object(_util__WEBPACK_IMPORTED_MODULE_3__[\"duplicate\"])(this.formula));\n    }\n    static makeFromEncoding(parent, model) {\n        const formula = model.reduceFieldDef((timeUnitComponent, fieldDef, channel) => {\n            const { field, timeUnit } = fieldDef;\n            const channelDef2 = Object(_model__WEBPACK_IMPORTED_MODULE_4__[\"isUnitModel\"])(model) ? model.encoding[Object(_channel__WEBPACK_IMPORTED_MODULE_0__[\"getSecondaryRangeChannel\"])(channel)] : undefined;\n            const band = Object(_model__WEBPACK_IMPORTED_MODULE_4__[\"isUnitModel\"])(model) && Object(_channeldef__WEBPACK_IMPORTED_MODULE_1__[\"hasBand\"])(channel, fieldDef, channelDef2, model.stack, model.markDef, model.config);\n            if (timeUnit) {\n                const as = Object(_channeldef__WEBPACK_IMPORTED_MODULE_1__[\"vgField\"])(fieldDef, { forAs: true });\n                timeUnitComponent[Object(_util__WEBPACK_IMPORTED_MODULE_3__[\"hash\"])({\n                    as,\n                    field,\n                    timeUnit\n                })] = Object.assign({ as,\n                    field,\n                    timeUnit }, (band ? { band: true } : {}));\n            }\n            return timeUnitComponent;\n        }, {});\n        if (Object(_util__WEBPACK_IMPORTED_MODULE_3__[\"isEmpty\"])(formula)) {\n            return null;\n        }\n        return new TimeUnitNode(parent, formula);\n    }\n    static makeFromTransform(parent, t) {\n        const _a = Object.assign({}, t), { timeUnit } = _a, other = __rest(_a, [\"timeUnit\"]);\n        const normalizedTimeUnit = Object(_timeunit__WEBPACK_IMPORTED_MODULE_2__[\"normalizeTimeUnit\"])(timeUnit);\n        const component = Object.assign(Object.assign({}, other), { timeUnit: normalizedTimeUnit });\n        return new TimeUnitNode(parent, {\n            [Object(_util__WEBPACK_IMPORTED_MODULE_3__[\"hash\"])(component)]: component\n        });\n    }\n    /**\n     * Merge together TimeUnitNodes assigning the children of `other` to `this`\n     * and removing `other`.\n     */\n    merge(other) {\n        this.formula = Object.assign({}, this.formula);\n        // if the same hash happen twice, merge \"band\"\n        for (const key in other.formula) {\n            if (!this.formula[key] || other.formula[key].band) {\n                // copy if it's not a duplicate or if we need to copy band over\n                this.formula[key] = other.formula[key];\n            }\n        }\n        for (const child of other.children) {\n            other.removeChild(child);\n            child.parent = this;\n        }\n        other.remove();\n    }\n    /**\n     * Remove time units coming from the other node.\n     */\n    removeFormulas(fields) {\n        const newFormula = {};\n        for (const [key, timeUnit] of Object(_util__WEBPACK_IMPORTED_MODULE_3__[\"entries\"])(this.formula)) {\n            if (!fields.has(timeUnit.as)) {\n                newFormula[key] = timeUnit;\n            }\n        }\n        this.formula = newFormula;\n    }\n    producedFields() {\n        return new Set(Object(_util__WEBPACK_IMPORTED_MODULE_3__[\"vals\"])(this.formula).map(f => f.as));\n    }\n    dependentFields() {\n        return new Set(Object(_util__WEBPACK_IMPORTED_MODULE_3__[\"vals\"])(this.formula).map(f => f.field));\n    }\n    hash() {\n        return `TimeUnit ${Object(_util__WEBPACK_IMPORTED_MODULE_3__[\"hash\"])(this.formula)}`;\n    }\n    assemble() {\n        const transforms = [];\n        for (const f of Object(_util__WEBPACK_IMPORTED_MODULE_3__[\"vals\"])(this.formula)) {\n            const { field, as, timeUnit } = f;\n            const _a = Object(_timeunit__WEBPACK_IMPORTED_MODULE_2__[\"normalizeTimeUnit\"])(timeUnit), { unit, utc } = _a, params = __rest(_a, [\"unit\", \"utc\"]);\n            transforms.push(Object.assign(Object.assign(Object.assign(Object.assign({ field: Object(_util__WEBPACK_IMPORTED_MODULE_3__[\"replacePathInField\"])(field), type: 'timeunit' }, (unit ? { units: Object(_timeunit__WEBPACK_IMPORTED_MODULE_2__[\"getTimeUnitParts\"])(unit) } : {})), (utc ? { timezone: 'utc' } : {})), params), { as: [as, `${as}_end`] }));\n        }\n        return transforms;\n    }\n}\n//# sourceMappingURL=timeunit.js.map//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,[encoded data, 6960 characters]\n//# sourceURL=webpack-internal:///./node_modules/vega-lite/build/src/compile/data/timeunit.js\n");

/***/ }),

/***/ "./node_modules/vega-lite/build/src/compile/data/window.js":
/*!*****************************************************************!*\
  !*** ./node_modules/vega-lite/build/src/compile/data/window.js ***!
  \*****************************************************************/
/*! exports provided: WindowTransformNode */
/***/ (function(module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"WindowTransformNode\", function() { return WindowTransformNode; });\n/* harmony import */ var _aggregate__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../../aggregate */ \"./node_modules/vega-lite/build/src/aggregate.js\");\n/* harmony import */ var _channeldef__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../../channeldef */ \"./node_modules/vega-lite/build/src/channeldef.js\");\n/* harmony import */ var _util__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ../../util */ \"./node_modules/vega-lite/build/src/util.js\");\n/* harmony import */ var _dataflow__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ./dataflow */ \"./node_modules/vega-lite/build/src/compile/data/dataflow.js\");\n\n\n\n\n\n/**\n * A class for the window transform nodes\n */\nclass WindowTransformNode extends _dataflow__WEBPACK_IMPORTED_MODULE_3__[\"DataFlowNode\"] {\n    constructor(parent, transform) {\n        super(parent);\n        this.transform = transform;\n    }\n    clone() {\n        return new WindowTransformNode(null, Object(_util__WEBPACK_IMPORTED_MODULE_2__[\"duplicate\"])(this.transform));\n    }\n    addDimensions(fields) {\n        this.transform.groupby = Object(_util__WEBPACK_IMPORTED_MODULE_2__[\"unique\"])(this.transform.groupby.concat(fields), d => d);\n    }\n    dependentFields() {\n        var _a, _b;\n        const out = new Set();\n        ((_a = this.transform.groupby) !== null && _a !== void 0 ? _a : []).forEach(out.add, out);\n        ((_b = this.transform.sort) !== null && _b !== void 0 ? _b : []).forEach(m => out.add(m.field));\n        this.transform.window\n            .map(w => w.field)\n            .filter(f => f !== undefined)\n            .forEach(out.add, out);\n        return out;\n    }\n    producedFields() {\n        return new Set(this.transform.window.map(this.getDefaultName));\n    }\n    getDefaultName(windowFieldDef) {\n        var _a;\n        return (_a = windowFieldDef.as) !== null && _a !== void 0 ? _a : Object(_channeldef__WEBPACK_IMPORTED_MODULE_1__[\"vgField\"])(windowFieldDef);\n    }\n    hash() {\n        return `WindowTransform ${Object(_util__WEBPACK_IMPORTED_MODULE_2__[\"hash\"])(this.transform)}`;\n    }\n    assemble() {\n        var _a;\n        const fields = [];\n        const ops = [];\n        const as = [];\n        const params = [];\n        for (const window of this.transform.window) {\n            ops.push(window.op);\n            as.push(this.getDefaultName(window));\n            params.push(window.param === undefined ? null : window.param);\n            fields.push(window.field === undefined ? null : window.field);\n        }\n        const frame = this.transform.frame;\n        const groupby = this.transform.groupby;\n        if (frame && frame[0] === null && frame[1] === null && ops.every(o => Object(_aggregate__WEBPACK_IMPORTED_MODULE_0__[\"isAggregateOp\"])(o))) {\n            // when the window does not rely on any particular window ops or frame, switch to a simpler and more efficient joinaggregate\n            return Object.assign({ type: 'joinaggregate', as, ops: ops, fields }, (groupby !== undefined ? { groupby } : {}));\n        }\n        const sortFields = [];\n        const sortOrder = [];\n        if (this.transform.sort !== undefined) {\n            for (const sortField of this.transform.sort) {\n                sortFields.push(sortField.field);\n                sortOrder.push((_a = sortField.order) !== null && _a !== void 0 ? _a : 'ascending');\n            }\n        }\n        const sort = {\n            field: sortFields,\n            order: sortOrder\n        };\n        const ignorePeers = this.transform.ignorePeers;\n        return Object.assign(Object.assign(Object.assign({ type: 'window', params,\n            as,\n            ops,\n            fields,\n            sort }, (ignorePeers !== undefined ? { ignorePeers } : {})), (groupby !== undefined ? { groupby } : {})), (frame !== undefined ? { frame } : {}));\n    }\n}\n//# sourceMappingURL=window.js.map//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,[encoded data, 5164 characters]\n//# sourceURL=webpack-internal:///./node_modules/vega-lite/build/src/compile/data/window.js\n");

/***/ }),

/***/ "./node_modules/vega-lite/build/src/compile/facet.js":
/*!***********************************************************!*\
  !*** ./node_modules/vega-lite/build/src/compile/facet.js ***!
  \***********************************************************/
/*! exports provided: facetSortFieldName, FacetModel */
/***/ (function(module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"facetSortFieldName\", function() { return facetSortFieldName; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"FacetModel\", function() { return FacetModel; });\n/* harmony import */ var vega_util__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! vega-util */ \"./node_modules/vega-lite/node_modules/vega-util/build/vega-util.module.js\");\n/* harmony import */ var _bin__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../bin */ \"./node_modules/vega-lite/build/src/bin.js\");\n/* harmony import */ var _channel__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ../channel */ \"./node_modules/vega-lite/build/src/channel.js\");\n/* harmony import */ var _channeldef__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ../channeldef */ \"./node_modules/vega-lite/build/src/channeldef.js\");\n/* harmony import */ var _expr__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ../expr */ \"./node_modules/vega-lite/build/src/expr.js\");\n/* harmony import */ var _log__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! ../log */ \"./node_modules/vega-lite/build/src/log/index.js\");\n/* harmony import */ var _scale__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! ../scale */ \"./node_modules/vega-lite/build/src/scale.js\");\n/* harmony import */ var _sort__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! ../sort */ \"./node_modules/vega-lite/build/src/sort.js\");\n/* harmony import */ var _spec_facet__WEBPACK_IMPORTED_MODULE_8__ = __webpack_require__(/*! ../spec/facet */ \"./node_modules/vega-lite/build/src/spec/facet.js\");\n/* harmony import */ var _util__WEBPACK_IMPORTED_MODULE_9__ = __webpack_require__(/*! ../util */ \"./node_modules/vega-lite/build/src/util.js\");\n/* harmony import */ var _vega_schema__WEBPACK_IMPORTED_MODULE_10__ = __webpack_require__(/*! ../vega.schema */ \"./node_modules/vega-lite/build/src/vega.schema.js\");\n/* harmony import */ var _buildmodel__WEBPACK_IMPORTED_MODULE_11__ = __webpack_require__(/*! ./buildmodel */ \"./node_modules/vega-lite/build/src/compile/buildmodel.js\");\n/* harmony import */ var _data_assemble__WEBPACK_IMPORTED_MODULE_12__ = __webpack_require__(/*! ./data/assemble */ \"./node_modules/vega-lite/build/src/compile/data/assemble.js\");\n/* harmony import */ var _data_calculate__WEBPACK_IMPORTED_MODULE_13__ = __webpack_require__(/*! ./data/calculate */ \"./node_modules/vega-lite/build/src/compile/data/calculate.js\");\n/* harmony import */ var _data_parse__WEBPACK_IMPORTED_MODULE_14__ = __webpack_require__(/*! ./data/parse */ \"./node_modules/vega-lite/build/src/compile/data/parse.js\");\n/* harmony import */ var _header_assemble__WEBPACK_IMPORTED_MODULE_15__ = __webpack_require__(/*! ./header/assemble */ \"./node_modules/vega-lite/build/src/compile/header/assemble.js\");\n/* harmony import */ var _header_common__WEBPACK_IMPORTED_MODULE_16__ = __webpack_require__(/*! ./header/common */ \"./node_modules/vega-lite/build/src/compile/header/common.js\");\n/* harmony import */ var _header_component__WEBPACK_IMPORTED_MODULE_17__ = __webpack_require__(/*! ./header/component */ \"./node_modules/vega-lite/build/src/compile/header/component.js\");\n/* harmony import */ var _header_parse__WEBPACK_IMPORTED_MODULE_18__ = __webpack_require__(/*! ./header/parse */ \"./node_modules/vega-lite/build/src/compile/header/parse.js\");\n/* harmony import */ var _layoutsize_parse__WEBPACK_IMPORTED_MODULE_19__ = __webpack_require__(/*! ./layoutsize/parse */ \"./node_modules/vega-lite/build/src/compile/layoutsize/parse.js\");\n/* harmony import */ var _model__WEBPACK_IMPORTED_MODULE_20__ = __webpack_require__(/*! ./model */ \"./node_modules/vega-lite/build/src/compile/model.js\");\n/* harmony import */ var _scale_domain__WEBPACK_IMPORTED_MODULE_21__ = __webpack_require__(/*! ./scale/domain */ \"./node_modules/vega-lite/build/src/compile/scale/domain.js\");\n/* harmony import */ var _selection_assemble__WEBPACK_IMPORTED_MODULE_22__ = __webpack_require__(/*! ./selection/assemble */ \"./node_modules/vega-lite/build/src/compile/selection/assemble.js\");\nvar __rest = (undefined && undefined.__rest) || function (s, e) {\n    var t = {};\n    for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0)\n        t[p] = s[p];\n    if (s != null && typeof Object.getOwnPropertySymbols === \"function\")\n        for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) {\n            if (e.indexOf(p[i]) < 0 && Object.prototype.propertyIsEnumerable.call(s, p[i]))\n                t[p[i]] = s[p[i]];\n        }\n    return t;\n};\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\nfunction facetSortFieldName(fieldDef, sort, opt) {\n    return Object(_channeldef__WEBPACK_IMPORTED_MODULE_3__[\"vgField\"])(sort, Object.assign({ suffix: `by_${Object(_channeldef__WEBPACK_IMPORTED_MODULE_3__[\"vgField\"])(fieldDef)}` }, (opt !== null && opt !== void 0 ? opt : {})));\n}\nclass FacetModel extends _model__WEBPACK_IMPORTED_MODULE_20__[\"ModelWithField\"] {\n    constructor(spec, parent, parentGivenName, config) {\n        super(spec, 'facet', parent, parentGivenName, config, spec.resolve);\n        this.child = Object(_buildmodel__WEBPACK_IMPORTED_MODULE_11__[\"buildModel\"])(spec.spec, this, this.getName('child'), undefined, config);\n        this.children = [this.child];\n        this.facet = this.initFacet(spec.facet);\n    }\n    initFacet(facet) {\n        // clone to prevent side effect to the original spec\n        if (!Object(_spec_facet__WEBPACK_IMPORTED_MODULE_8__[\"isFacetMapping\"])(facet)) {\n            return { facet: this.initFacetFieldDef(facet, 'facet') };\n        }\n        const channels = Object(_util__WEBPACK_IMPORTED_MODULE_9__[\"keys\"])(facet);\n        const normalizedFacet = {};\n        for (const channel of channels) {\n            if (!Object(_util__WEBPACK_IMPORTED_MODULE_9__[\"contains\"])([_channel__WEBPACK_IMPORTED_MODULE_2__[\"ROW\"], _channel__WEBPACK_IMPORTED_MODULE_2__[\"COLUMN\"]], channel)) {\n                // Drop unsupported channel\n                _log__WEBPACK_IMPORTED_MODULE_5__[\"warn\"](_log__WEBPACK_IMPORTED_MODULE_5__[\"message\"].incompatibleChannel(channel, 'facet'));\n                break;\n            }\n            const fieldDef = facet[channel];\n            if (fieldDef.field === undefined) {\n                _log__WEBPACK_IMPORTED_MODULE_5__[\"warn\"](_log__WEBPACK_IMPORTED_MODULE_5__[\"message\"].emptyFieldDef(fieldDef, channel));\n                break;\n            }\n            normalizedFacet[channel] = this.initFacetFieldDef(fieldDef, channel);\n        }\n        return normalizedFacet;\n    }\n    initFacetFieldDef(fieldDef, channel) {\n        const { header } = fieldDef, rest = __rest(fieldDef, [\"header\"]);\n        // Cast because we call initFieldDef, which assumes general FieldDef.\n        // However, FacetFieldDef is a bit more constrained than the general FieldDef\n        const facetFieldDef = Object(_channeldef__WEBPACK_IMPORTED_MODULE_3__[\"initFieldDef\"])(rest, channel);\n        if (header) {\n            facetFieldDef.header = Object(_expr__WEBPACK_IMPORTED_MODULE_4__[\"replaceExprRefInIndex\"])(header);\n        }\n        return facetFieldDef;\n    }\n    channelHasField(channel) {\n        return !!this.facet[channel];\n    }\n    fieldDef(channel) {\n        return this.facet[channel];\n    }\n    parseData() {\n        this.component.data = Object(_data_parse__WEBPACK_IMPORTED_MODULE_14__[\"parseData\"])(this);\n        this.child.parseData();\n    }\n    parseLayoutSize() {\n        Object(_layoutsize_parse__WEBPACK_IMPORTED_MODULE_19__[\"parseChildrenLayoutSize\"])(this);\n    }\n    parseSelections() {\n        // As a facet has a single child, the selection components are the same.\n        // The child maintains its selections to assemble signals, which remain\n        // within its unit.\n        this.child.parseSelections();\n        this.component.selection = this.child.component.selection;\n    }\n    parseMarkGroup() {\n        this.child.parseMarkGroup();\n    }\n    parseAxesAndHeaders() {\n        this.child.parseAxesAndHeaders();\n        Object(_header_parse__WEBPACK_IMPORTED_MODULE_18__[\"parseFacetHeaders\"])(this);\n    }\n    assembleSelectionTopLevelSignals(signals) {\n        return this.child.assembleSelectionTopLevelSignals(signals);\n    }\n    assembleSignals() {\n        this.child.assembleSignals();\n        return [];\n    }\n    assembleSelectionData(data) {\n        return this.child.assembleSelectionData(data);\n    }\n    getHeaderLayoutMixins() {\n        var _a, _b, _c;\n        const layoutMixins = {};\n        for (const channel of _channel__WEBPACK_IMPORTED_MODULE_2__[\"FACET_CHANNELS\"]) {\n            for (const headerType of _header_component__WEBPACK_IMPORTED_MODULE_17__[\"HEADER_TYPES\"]) {\n                const layoutHeaderComponent = this.component.layoutHeaders[channel];\n                const headerComponent = layoutHeaderComponent[headerType];\n                const { facetFieldDef } = layoutHeaderComponent;\n                if (facetFieldDef) {\n                    const titleOrient = Object(_header_common__WEBPACK_IMPORTED_MODULE_16__[\"getHeaderProperty\"])('titleOrient', facetFieldDef.header, this.config, channel);\n                    if (Object(_util__WEBPACK_IMPORTED_MODULE_9__[\"contains\"])(['right', 'bottom'], titleOrient)) {\n                        const headerChannel = Object(_header_common__WEBPACK_IMPORTED_MODULE_16__[\"getHeaderChannel\"])(channel, titleOrient);\n                        layoutMixins.titleAnchor = (_a = layoutMixins.titleAnchor) !== null && _a !== void 0 ? _a : {};\n                        layoutMixins.titleAnchor[headerChannel] = 'end';\n                    }\n                }\n                if (headerComponent === null || headerComponent === void 0 ? void 0 : headerComponent[0]) {\n                    // set header/footerBand\n                    const sizeType = channel === 'row' ? 'height' : 'width';\n                    const bandType = headerType === 'header' ? 'headerBand' : 'footerBand';\n                    if (channel !== 'facet' && !this.child.component.layoutSize.get(sizeType)) {\n                        // If facet child does not have size signal, then apply headerBand\n                        layoutMixins[bandType] = (_b = layoutMixins[bandType]) !== null && _b !== void 0 ? _b : {};\n                        layoutMixins[bandType][channel] = 0.5;\n                    }\n                    if (layoutHeaderComponent.title) {\n                        layoutMixins.offset = (_c = layoutMixins.offset) !== null && _c !== void 0 ? _c : {};\n                        layoutMixins.offset[channel === 'row' ? 'rowTitle' : 'columnTitle'] = 10;\n                    }\n                }\n            }\n        }\n        return layoutMixins;\n    }\n    assembleDefaultLayout() {\n        const { column, row } = this.facet;\n        const columns = column ? this.columnDistinctSignal() : row ? 1 : undefined;\n        let align = 'all';\n        // Do not align the cells if the scale corresponding to the direction is indepent.\n        // We always align when we facet into both row and column.\n        if (!row && this.component.resolve.scale.x === 'independent') {\n            align = 'none';\n        }\n        else if (!column && this.component.resolve.scale.y === 'independent') {\n            align = 'none';\n        }\n        return Object.assign(Object.assign(Object.assign({}, this.getHeaderLayoutMixins()), (columns ? { columns } : {})), { bounds: 'full', align });\n    }\n    assembleLayoutSignals() {\n        // FIXME(https://github.com/vega/vega-lite/issues/1193): this can be incorrect if we have independent scales.\n        return this.child.assembleLayoutSignals();\n    }\n    columnDistinctSignal() {\n        if (this.parent && this.parent instanceof FacetModel) {\n            // For nested facet, we will add columns to group mark instead\n            // See discussion in https://github.com/vega/vega/issues/952\n            // and https://github.com/vega/vega-view/releases/tag/v1.2.6\n            return undefined;\n        }\n        else {\n            // In facetNode.assemble(), the name is always this.getName('column') + '_layout'.\n            const facetLayoutDataName = this.getName('column_domain');\n            return { signal: `length(data('${facetLayoutDataName}'))` };\n        }\n    }\n    assembleGroup(signals) {\n        if (this.parent && this.parent instanceof FacetModel) {\n            // Provide number of columns for layout.\n            // See discussion in https://github.com/vega/vega/issues/952\n            // and https://github.com/vega/vega-view/releases/tag/v1.2.6\n            return Object.assign(Object.assign({}, (this.channelHasField('column')\n                ? {\n                    encode: {\n                        update: {\n                            // TODO(https://github.com/vega/vega-lite/issues/2759):\n                            // Correct the signal for facet of concat of facet_column\n                            columns: { field: Object(_channeldef__WEBPACK_IMPORTED_MODULE_3__[\"vgField\"])(this.facet.column, { prefix: 'distinct' }) }\n                        }\n                    }\n                }\n                : {})), super.assembleGroup(signals));\n        }\n        return super.assembleGroup(signals);\n    }\n    /**\n     * Aggregate cardinality for calculating size\n     */\n    getCardinalityAggregateForChild() {\n        const fields = [];\n        const ops = [];\n        const as = [];\n        if (this.child instanceof FacetModel) {\n            if (this.child.channelHasField('column')) {\n                const field = Object(_channeldef__WEBPACK_IMPORTED_MODULE_3__[\"vgField\"])(this.child.facet.column);\n                fields.push(field);\n                ops.push('distinct');\n                as.push(`distinct_${field}`);\n            }\n        }\n        else {\n            for (const channel of _channel__WEBPACK_IMPORTED_MODULE_2__[\"POSITION_SCALE_CHANNELS\"]) {\n                const childScaleComponent = this.child.component.scales[channel];\n                if (childScaleComponent && !childScaleComponent.merged) {\n                    const type = childScaleComponent.get('type');\n                    const range = childScaleComponent.get('range');\n                    if (Object(_scale__WEBPACK_IMPORTED_MODULE_6__[\"hasDiscreteDomain\"])(type) && Object(_vega_schema__WEBPACK_IMPORTED_MODULE_10__[\"isVgRangeStep\"])(range)) {\n                        const domain = Object(_scale_domain__WEBPACK_IMPORTED_MODULE_21__[\"assembleDomain\"])(this.child, channel);\n                        const field = Object(_scale_domain__WEBPACK_IMPORTED_MODULE_21__[\"getFieldFromDomain\"])(domain);\n                        if (field) {\n                            fields.push(field);\n                            ops.push('distinct');\n                            as.push(`distinct_${field}`);\n                        }\n                        else {\n                            _log__WEBPACK_IMPORTED_MODULE_5__[\"warn\"](_log__WEBPACK_IMPORTED_MODULE_5__[\"message\"].unknownField(channel));\n                        }\n                    }\n                }\n            }\n        }\n        return { fields, ops, as };\n    }\n    assembleFacet() {\n        const { name, data } = this.component.data.facetRoot;\n        const { row, column } = this.facet;\n        const { fields, ops, as } = this.getCardinalityAggregateForChild();\n        const groupby = [];\n        for (const channel of _channel__WEBPACK_IMPORTED_MODULE_2__[\"FACET_CHANNELS\"]) {\n            const fieldDef = this.facet[channel];\n            if (fieldDef) {\n                groupby.push(Object(_channeldef__WEBPACK_IMPORTED_MODULE_3__[\"vgField\"])(fieldDef));\n                const { bin, sort } = fieldDef;\n                if (Object(_bin__WEBPACK_IMPORTED_MODULE_1__[\"isBinning\"])(bin)) {\n                    groupby.push(Object(_channeldef__WEBPACK_IMPORTED_MODULE_3__[\"vgField\"])(fieldDef, { binSuffix: 'end' }));\n                }\n                if (Object(_sort__WEBPACK_IMPORTED_MODULE_7__[\"isSortField\"])(sort)) {\n                    const { field, op = _sort__WEBPACK_IMPORTED_MODULE_7__[\"DEFAULT_SORT_OP\"] } = sort;\n                    const outputName = facetSortFieldName(fieldDef, sort);\n                    if (row && column) {\n                        // For crossed facet, use pre-calculate field as it requires a different groupby\n                        // For each calculated field, apply max and assign them to the same name as\n                        // all values of the same group should be the same anyway.\n                        fields.push(outputName);\n                        ops.push('max');\n                        as.push(outputName);\n                    }\n                    else {\n                        fields.push(field);\n                        ops.push(op);\n                        as.push(outputName);\n                    }\n                }\n                else if (Object(vega_util__WEBPACK_IMPORTED_MODULE_0__[\"isArray\"])(sort)) {\n                    const outputName = Object(_data_calculate__WEBPACK_IMPORTED_MODULE_13__[\"sortArrayIndexField\"])(fieldDef, channel);\n                    fields.push(outputName);\n                    ops.push('max');\n                    as.push(outputName);\n                }\n            }\n        }\n        const cross = !!row && !!column;\n        return Object.assign({ name,\n            data,\n            groupby }, (cross || fields.length > 0\n            ? {\n                aggregate: Object.assign(Object.assign({}, (cross ? { cross } : {})), (fields.length ? { fields, ops, as } : {}))\n            }\n            : {}));\n    }\n    facetSortFields(channel) {\n        const { facet } = this;\n        const fieldDef = facet[channel];\n        if (fieldDef) {\n            if (Object(_sort__WEBPACK_IMPORTED_MODULE_7__[\"isSortField\"])(fieldDef.sort)) {\n                return [facetSortFieldName(fieldDef, fieldDef.sort, { expr: 'datum' })];\n            }\n            else if (Object(vega_util__WEBPACK_IMPORTED_MODULE_0__[\"isArray\"])(fieldDef.sort)) {\n                return [Object(_data_calculate__WEBPACK_IMPORTED_MODULE_13__[\"sortArrayIndexField\"])(fieldDef, channel, { expr: 'datum' })];\n            }\n            return [Object(_channeldef__WEBPACK_IMPORTED_MODULE_3__[\"vgField\"])(fieldDef, { expr: 'datum' })];\n        }\n        return [];\n    }\n    facetSortOrder(channel) {\n        const { facet } = this;\n        const fieldDef = facet[channel];\n        if (fieldDef) {\n            const { sort } = fieldDef;\n            const order = (Object(_sort__WEBPACK_IMPORTED_MODULE_7__[\"isSortField\"])(sort) ? sort.order : !Object(vega_util__WEBPACK_IMPORTED_MODULE_0__[\"isArray\"])(sort) && sort) || 'ascending';\n            return [order];\n        }\n        return [];\n    }\n    assembleLabelTitle() {\n        var _a;\n        const { facet, config } = this;\n        if (facet.facet) {\n            // Facet always uses title to display labels\n            return Object(_header_assemble__WEBPACK_IMPORTED_MODULE_15__[\"assembleLabelTitle\"])(facet.facet, 'facet', config);\n        }\n        const ORTHOGONAL_ORIENT = {\n            row: ['top', 'bottom'],\n            column: ['left', 'right']\n        };\n        for (const channel of _header_component__WEBPACK_IMPORTED_MODULE_17__[\"HEADER_CHANNELS\"]) {\n            if (facet[channel]) {\n                const labelOrient = Object(_header_common__WEBPACK_IMPORTED_MODULE_16__[\"getHeaderProperty\"])('labelOrient', (_a = facet[channel]) === null || _a === void 0 ? void 0 : _a.header, config, channel);\n                if (Object(_util__WEBPACK_IMPORTED_MODULE_9__[\"contains\"])(ORTHOGONAL_ORIENT[channel], labelOrient)) {\n                    // Row/Column with orthogonal labelOrient must use title to display labels\n                    return Object(_header_assemble__WEBPACK_IMPORTED_MODULE_15__[\"assembleLabelTitle\"])(facet[channel], channel, config);\n                }\n            }\n        }\n        return undefined;\n    }\n    assembleMarks() {\n        const { child } = this;\n        // If we facet by two dimensions, we need to add a cross operator to the aggregation\n        // so that we create all groups\n        const facetRoot = this.component.data.facetRoot;\n        const data = Object(_data_assemble__WEBPACK_IMPORTED_MODULE_12__[\"assembleFacetData\"])(facetRoot);\n        const encodeEntry = child.assembleGroupEncodeEntry(false);\n        const title = this.assembleLabelTitle() || child.assembleTitle();\n        const style = child.assembleGroupStyle();\n        const markGroup = Object.assign(Object.assign(Object.assign(Object.assign(Object.assign(Object.assign({ name: this.getName('cell'), type: 'group' }, (title ? { title } : {})), (style ? { style } : {})), { from: {\n                facet: this.assembleFacet()\n            }, \n            // TODO: move this to after data\n            sort: {\n                field: _channel__WEBPACK_IMPORTED_MODULE_2__[\"FACET_CHANNELS\"].map(c => this.facetSortFields(c)).flat(),\n                order: _channel__WEBPACK_IMPORTED_MODULE_2__[\"FACET_CHANNELS\"].map(c => this.facetSortOrder(c)).flat()\n            } }), (data.length > 0 ? { data: data } : {})), (encodeEntry ? { encode: { update: encodeEntry } } : {})), child.assembleGroup(Object(_selection_assemble__WEBPACK_IMPORTED_MODULE_22__[\"assembleFacetSignals\"])(this, [])));\n        return [markGroup];\n    }\n    getMapping() {\n        return this.facet;\n    }\n}\n//# sourceMappingURL=facet.js.map//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,[encoded data, 24412 characters]\n//# sourceURL=webpack-internal:///./node_modules/vega-lite/build/src/compile/facet.js\n");

/***/ }),

/***/ "./node_modules/vega-lite/build/src/compile/format.js":
/*!************************************************************!*\
  !*** ./node_modules/vega-lite/build/src/compile/format.js ***!
  \************************************************************/
/*! exports provided: isCustomFormatType, BIN_RANGE_DELIMITER, formatSignalRef, formatCustomType, guideFormat, guideFormatType, numberFormat, timeFormat, binFormatExpression, timeFormatExpression */
/***/ (function(module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"isCustomFormatType\", function() { return isCustomFormatType; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"BIN_RANGE_DELIMITER\", function() { return BIN_RANGE_DELIMITER; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"formatSignalRef\", function() { return formatSignalRef; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"formatCustomType\", function() { return formatCustomType; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"guideFormat\", function() { return guideFormat; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"guideFormatType\", function() { return guideFormatType; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"numberFormat\", function() { return numberFormat; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"timeFormat\", function() { return timeFormat; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"binFormatExpression\", function() { return binFormatExpression; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"timeFormatExpression\", function() { return timeFormatExpression; });\n/* harmony import */ var vega_util__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! vega-util */ \"./node_modules/vega-lite/node_modules/vega-util/build/vega-util.module.js\");\n/* harmony import */ var _bin__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../bin */ \"./node_modules/vega-lite/build/src/bin.js\");\n/* harmony import */ var _channeldef__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ../channeldef */ \"./node_modules/vega-lite/build/src/channeldef.js\");\n/* harmony import */ var _predicate__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ../predicate */ \"./node_modules/vega-lite/build/src/predicate.js\");\n/* harmony import */ var _scale__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ../scale */ \"./node_modules/vega-lite/build/src/scale.js\");\n/* harmony import */ var _timeunit__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! ../timeunit */ \"./node_modules/vega-lite/build/src/timeunit.js\");\n/* harmony import */ var _type__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! ../type */ \"./node_modules/vega-lite/build/src/type.js\");\n/* harmony import */ var _vega_schema__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! ../vega.schema */ \"./node_modules/vega-lite/build/src/vega.schema.js\");\n/* harmony import */ var _mark_encode_valueref__WEBPACK_IMPORTED_MODULE_8__ = __webpack_require__(/*! ./mark/encode/valueref */ \"./node_modules/vega-lite/build/src/compile/mark/encode/valueref.js\");\n\n\n\n\n\n\n\n\n\nfunction isCustomFormatType(formatType) {\n    return formatType && formatType !== 'number' && formatType !== 'time';\n}\nfunction customFormatExpr(formatType, field, format) {\n    return `${formatType}(${field}${format ? `, ${JSON.stringify(format)}` : ''})`;\n}\nconst BIN_RANGE_DELIMITER = ' \\u2013 ';\nfunction formatSignalRef({ fieldOrDatumDef, format, formatType, expr, normalizeStack, config }) {\n    var _a, _b;\n    if (isCustomFormatType(formatType)) {\n        return formatCustomType({\n            fieldOrDatumDef,\n            format,\n            formatType,\n            expr,\n            config\n        });\n    }\n    const field = fieldToFormat(fieldOrDatumDef, expr, normalizeStack);\n    if (Object(_channeldef__WEBPACK_IMPORTED_MODULE_2__[\"isFieldOrDatumDefForTimeFormat\"])(fieldOrDatumDef)) {\n        const signal = timeFormatExpression(field, Object(_channeldef__WEBPACK_IMPORTED_MODULE_2__[\"isFieldDef\"])(fieldOrDatumDef) ? (_a = Object(_timeunit__WEBPACK_IMPORTED_MODULE_5__[\"normalizeTimeUnit\"])(fieldOrDatumDef.timeUnit)) === null || _a === void 0 ? void 0 : _a.unit : undefined, format, config.timeFormat, Object(_channeldef__WEBPACK_IMPORTED_MODULE_2__[\"isScaleFieldDef\"])(fieldOrDatumDef) && ((_b = fieldOrDatumDef.scale) === null || _b === void 0 ? void 0 : _b.type) === _scale__WEBPACK_IMPORTED_MODULE_4__[\"ScaleType\"].UTC);\n        return signal ? { signal } : undefined;\n    }\n    format = numberFormat(Object(_channeldef__WEBPACK_IMPORTED_MODULE_2__[\"channelDefType\"])(fieldOrDatumDef), format, config);\n    if (Object(_channeldef__WEBPACK_IMPORTED_MODULE_2__[\"isFieldDef\"])(fieldOrDatumDef) && Object(_bin__WEBPACK_IMPORTED_MODULE_1__[\"isBinning\"])(fieldOrDatumDef.bin)) {\n        const endField = Object(_channeldef__WEBPACK_IMPORTED_MODULE_2__[\"vgField\"])(fieldOrDatumDef, { expr, binSuffix: 'end' });\n        return {\n            signal: binFormatExpression(field, endField, format, formatType, config)\n        };\n    }\n    else if (format || Object(_channeldef__WEBPACK_IMPORTED_MODULE_2__[\"channelDefType\"])(fieldOrDatumDef) === 'quantitative') {\n        return {\n            signal: `${formatExpr(field, format)}`\n        };\n    }\n    else {\n        return { signal: `isValid(${field}) ? ${field} : \"\"+${field}` };\n    }\n}\nfunction fieldToFormat(fieldOrDatumDef, expr, normalizeStack) {\n    if (Object(_channeldef__WEBPACK_IMPORTED_MODULE_2__[\"isFieldDef\"])(fieldOrDatumDef)) {\n        if (normalizeStack) {\n            return `${Object(_channeldef__WEBPACK_IMPORTED_MODULE_2__[\"vgField\"])(fieldOrDatumDef, { expr, suffix: 'end' })}-${Object(_channeldef__WEBPACK_IMPORTED_MODULE_2__[\"vgField\"])(fieldOrDatumDef, {\n                expr,\n                suffix: 'start'\n            })}`;\n        }\n        else {\n            return Object(_channeldef__WEBPACK_IMPORTED_MODULE_2__[\"vgField\"])(fieldOrDatumDef, { expr });\n        }\n    }\n    else {\n        return Object(_mark_encode_valueref__WEBPACK_IMPORTED_MODULE_8__[\"datumDefToExpr\"])(fieldOrDatumDef);\n    }\n}\nfunction formatCustomType({ fieldOrDatumDef, format, formatType, expr, normalizeStack, config, field }) {\n    field = field !== null && field !== void 0 ? field : fieldToFormat(fieldOrDatumDef, expr, normalizeStack);\n    if (Object(_channeldef__WEBPACK_IMPORTED_MODULE_2__[\"isFieldDef\"])(fieldOrDatumDef) && Object(_bin__WEBPACK_IMPORTED_MODULE_1__[\"isBinning\"])(fieldOrDatumDef.bin)) {\n        const endField = Object(_channeldef__WEBPACK_IMPORTED_MODULE_2__[\"vgField\"])(fieldOrDatumDef, { expr, binSuffix: 'end' });\n        return {\n            signal: binFormatExpression(field, endField, format, formatType, config)\n        };\n    }\n    return { signal: customFormatExpr(formatType, field, format) };\n}\nfunction guideFormat(fieldOrDatumDef, type, format, formatType, config, omitTimeFormatConfig // axis doesn't use config.timeFormat\n) {\n    var _a;\n    if (isCustomFormatType(formatType)) {\n        return undefined; // handled in encode block\n    }\n    if (Object(_channeldef__WEBPACK_IMPORTED_MODULE_2__[\"isFieldOrDatumDefForTimeFormat\"])(fieldOrDatumDef)) {\n        const timeUnit = Object(_channeldef__WEBPACK_IMPORTED_MODULE_2__[\"isFieldDef\"])(fieldOrDatumDef) ? (_a = Object(_timeunit__WEBPACK_IMPORTED_MODULE_5__[\"normalizeTimeUnit\"])(fieldOrDatumDef.timeUnit)) === null || _a === void 0 ? void 0 : _a.unit : undefined;\n        return timeFormat(format, timeUnit, config, omitTimeFormatConfig);\n    }\n    return numberFormat(type, format, config);\n}\nfunction guideFormatType(formatType, fieldOrDatumDef, scaleType) {\n    if (formatType && (Object(_vega_schema__WEBPACK_IMPORTED_MODULE_7__[\"isSignalRef\"])(formatType) || formatType === 'number' || formatType === 'time')) {\n        return formatType;\n    }\n    if (Object(_channeldef__WEBPACK_IMPORTED_MODULE_2__[\"isFieldOrDatumDefForTimeFormat\"])(fieldOrDatumDef) && scaleType !== 'time' && scaleType !== 'utc') {\n        return 'time';\n    }\n    return undefined;\n}\n/**\n * Returns number format for a fieldDef.\n */\nfunction numberFormat(type, specifiedFormat, config) {\n    // Specified format in axis/legend has higher precedence than fieldDef.format\n    if (Object(vega_util__WEBPACK_IMPORTED_MODULE_0__[\"isString\"])(specifiedFormat)) {\n        return specifiedFormat;\n    }\n    if (type === _type__WEBPACK_IMPORTED_MODULE_6__[\"QUANTITATIVE\"]) {\n        // we only apply the default if the field is quantitative\n        return config.numberFormat;\n    }\n    return undefined;\n}\n/**\n * Returns time format for a fieldDef for use in guides.\n */\nfunction timeFormat(specifiedFormat, timeUnit, config, omitTimeFormatConfig) {\n    if (specifiedFormat) {\n        return specifiedFormat;\n    }\n    if (timeUnit) {\n        return {\n            signal: Object(_timeunit__WEBPACK_IMPORTED_MODULE_5__[\"timeUnitSpecifierExpression\"])(timeUnit)\n        };\n    }\n    return omitTimeFormatConfig ? undefined : config.timeFormat;\n}\nfunction formatExpr(field, format) {\n    return `format(${field}, \"${format || ''}\")`;\n}\nfunction binNumberFormatExpr(field, format, formatType, config) {\n    var _a;\n    if (isCustomFormatType(formatType)) {\n        return customFormatExpr(formatType, field, format);\n    }\n    return formatExpr(field, (_a = (Object(vega_util__WEBPACK_IMPORTED_MODULE_0__[\"isString\"])(format) ? format : undefined)) !== null && _a !== void 0 ? _a : config.numberFormat);\n}\nfunction binFormatExpression(startField, endField, format, formatType, config) {\n    const start = binNumberFormatExpr(startField, format, formatType, config);\n    const end = binNumberFormatExpr(endField, format, formatType, config);\n    return `${Object(_predicate__WEBPACK_IMPORTED_MODULE_3__[\"fieldValidPredicate\"])(startField, false)} ? \"null\" : ${start} + \"${BIN_RANGE_DELIMITER}\" + ${end}`;\n}\n/**\n * Returns the time expression used for axis/legend labels or text mark for a temporal field\n */\nfunction timeFormatExpression(field, timeUnit, format, rawTimeFormat, // should be provided only for actual text and headers, not axis/legend labels\nisUTCScale) {\n    if (!timeUnit || format) {\n        // If there is no time unit, or if user explicitly specifies format for axis/legend/text.\n        format = Object(vega_util__WEBPACK_IMPORTED_MODULE_0__[\"isString\"])(format) ? format : rawTimeFormat; // only use provided timeFormat if there is no timeUnit.\n        return `${isUTCScale ? 'utc' : 'time'}Format(${field}, '${format}')`;\n    }\n    else {\n        return Object(_timeunit__WEBPACK_IMPORTED_MODULE_5__[\"formatExpression\"])(timeUnit, field, isUTCScale);\n    }\n}\n//# sourceMappingURL=format.js.map//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,[encoded data, 10472 characters]\n//# sourceURL=webpack-internal:///./node_modules/vega-lite/build/src/compile/format.js\n");

/***/ }),

/***/ "./node_modules/vega-lite/build/src/compile/guide.js":
/*!***********************************************************!*\
  !*** ./node_modules/vega-lite/build/src/compile/guide.js ***!
  \***********************************************************/
/*! exports provided: guideEncodeEntry */
/***/ (function(module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"guideEncodeEntry\", function() { return guideEncodeEntry; });\n/* harmony import */ var _util__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../util */ \"./node_modules/vega-lite/build/src/util.js\");\n/* harmony import */ var _common__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./common */ \"./node_modules/vega-lite/build/src/compile/common.js\");\n/* harmony import */ var _mark_encode__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./mark/encode */ \"./node_modules/vega-lite/build/src/compile/mark/encode/index.js\");\n\n\n\nfunction guideEncodeEntry(encoding, model) {\n    return Object(_util__WEBPACK_IMPORTED_MODULE_0__[\"keys\"])(encoding).reduce((encode, channel) => {\n        const valueDef = encoding[channel];\n        return Object.assign(Object.assign({}, encode), Object(_mark_encode__WEBPACK_IMPORTED_MODULE_2__[\"wrapCondition\"])(model, valueDef, channel, def => Object(_common__WEBPACK_IMPORTED_MODULE_1__[\"signalOrValueRef\"])(def.value)));\n    }, {});\n}\n//# sourceMappingURL=guide.js.map//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvdmVnYS1saXRlL2J1aWxkL3NyYy9jb21waWxlL2d1aWRlLmpzLmpzIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL3ZlZ2EtbGl0ZS9idWlsZC9zcmMvY29tcGlsZS9ndWlkZS5qcz9lYTU2Il0sInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IGtleXMgfSBmcm9tICcuLi91dGlsJztcbmltcG9ydCB7IHNpZ25hbE9yVmFsdWVSZWYgfSBmcm9tICcuL2NvbW1vbic7XG5pbXBvcnQgeyB3cmFwQ29uZGl0aW9uIH0gZnJvbSAnLi9tYXJrL2VuY29kZSc7XG5leHBvcnQgZnVuY3Rpb24gZ3VpZGVFbmNvZGVFbnRyeShlbmNvZGluZywgbW9kZWwpIHtcbiAgICByZXR1cm4ga2V5cyhlbmNvZGluZykucmVkdWNlKChlbmNvZGUsIGNoYW5uZWwpID0+IHtcbiAgICAgICAgY29uc3QgdmFsdWVEZWYgPSBlbmNvZGluZ1tjaGFubmVsXTtcbiAgICAgICAgcmV0dXJuIE9iamVjdC5hc3NpZ24oT2JqZWN0LmFzc2lnbih7fSwgZW5jb2RlKSwgd3JhcENvbmRpdGlvbihtb2RlbCwgdmFsdWVEZWYsIGNoYW5uZWwsIGRlZiA9PiBzaWduYWxPclZhbHVlUmVmKGRlZi52YWx1ZSkpKTtcbiAgICB9LCB7fSk7XG59XG4vLyMgc291cmNlTWFwcGluZ1VSTD1ndWlkZS5qcy5tYXAiXSwibWFwcGluZ3MiOiJBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSIsInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///./node_modules/vega-lite/build/src/compile/guide.js\n");

/***/ }),

/***/ "./node_modules/vega-lite/build/src/compile/header/assemble.js":
/*!*********************************************************************!*\
  !*** ./node_modules/vega-lite/build/src/compile/header/assemble.js ***!
  \*********************************************************************/
/*! exports provided: assembleTitleGroup, defaultHeaderGuideAlign, defaultHeaderGuideBaseline, assembleHeaderGroups, assembleLabelTitle, assembleHeaderGroup, getLayoutTitleBand, assembleLayoutTitleBand, assembleHeaderProperties */
/***/ (function(module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"assembleTitleGroup\", function() { return assembleTitleGroup; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"defaultHeaderGuideAlign\", function() { return defaultHeaderGuideAlign; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"defaultHeaderGuideBaseline\", function() { return defaultHeaderGuideBaseline; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"assembleHeaderGroups\", function() { return assembleHeaderGroups; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"assembleLabelTitle\", function() { return assembleLabelTitle; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"assembleHeaderGroup\", function() { return assembleHeaderGroup; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"getLayoutTitleBand\", function() { return getLayoutTitleBand; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"assembleLayoutTitleBand\", function() { return assembleLayoutTitleBand; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"assembleHeaderProperties\", function() { return assembleHeaderProperties; });\n/* harmony import */ var vega_util__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! vega-util */ \"./node_modules/vega-lite/node_modules/vega-util/build/vega-util.module.js\");\n/* harmony import */ var _channel__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../../channel */ \"./node_modules/vega-lite/build/src/channel.js\");\n/* harmony import */ var _channeldef__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ../../channeldef */ \"./node_modules/vega-lite/build/src/channeldef.js\");\n/* harmony import */ var _header__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ../../header */ \"./node_modules/vega-lite/build/src/header.js\");\n/* harmony import */ var _sort__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ../../sort */ \"./node_modules/vega-lite/build/src/sort.js\");\n/* harmony import */ var _spec_facet__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! ../../spec/facet */ \"./node_modules/vega-lite/build/src/spec/facet.js\");\n/* harmony import */ var _util__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! ../../util */ \"./node_modules/vega-lite/build/src/util.js\");\n/* harmony import */ var _axis_properties__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! ../axis/properties */ \"./node_modules/vega-lite/build/src/compile/axis/properties.js\");\n/* harmony import */ var _data_calculate__WEBPACK_IMPORTED_MODULE_8__ = __webpack_require__(/*! ../data/calculate */ \"./node_modules/vega-lite/build/src/compile/data/calculate.js\");\n/* harmony import */ var _format__WEBPACK_IMPORTED_MODULE_9__ = __webpack_require__(/*! ../format */ \"./node_modules/vega-lite/build/src/compile/format.js\");\n/* harmony import */ var _model__WEBPACK_IMPORTED_MODULE_10__ = __webpack_require__(/*! ../model */ \"./node_modules/vega-lite/build/src/compile/model.js\");\n/* harmony import */ var _common__WEBPACK_IMPORTED_MODULE_11__ = __webpack_require__(/*! ./common */ \"./node_modules/vega-lite/build/src/compile/header/common.js\");\n/* harmony import */ var _component__WEBPACK_IMPORTED_MODULE_12__ = __webpack_require__(/*! ./component */ \"./node_modules/vega-lite/build/src/compile/header/component.js\");\n/**\n * Utility for generating row / column headers\n */\n\n\n\n\n\n\n\n\n\n\n\n\n\n// TODO: rename to assembleHeaderTitleGroup\nfunction assembleTitleGroup(model, channel) {\n    const title = model.component.layoutHeaders[channel].title;\n    const config = model.config ? model.config : undefined;\n    const facetFieldDef = model.component.layoutHeaders[channel].facetFieldDef\n        ? model.component.layoutHeaders[channel].facetFieldDef\n        : undefined;\n    const { titleAnchor, titleAngle: ta, titleOrient } = Object(_common__WEBPACK_IMPORTED_MODULE_11__[\"getHeaderProperties\"])(['titleAnchor', 'titleAngle', 'titleOrient'], facetFieldDef.header, config, channel);\n    const headerChannel = Object(_common__WEBPACK_IMPORTED_MODULE_11__[\"getHeaderChannel\"])(channel, titleOrient);\n    const titleAngle = Object(_util__WEBPACK_IMPORTED_MODULE_6__[\"normalizeAngle\"])(ta);\n    return {\n        name: `${channel}-title`,\n        type: 'group',\n        role: `${headerChannel}-title`,\n        title: Object.assign(Object.assign(Object.assign(Object.assign(Object.assign({ text: title }, (channel === 'row' ? { orient: 'left' } : {})), { style: 'guide-title' }), defaultHeaderGuideBaseline(titleAngle, headerChannel)), defaultHeaderGuideAlign(headerChannel, titleAngle, titleAnchor)), assembleHeaderProperties(config, facetFieldDef, channel, _header__WEBPACK_IMPORTED_MODULE_3__[\"HEADER_TITLE_PROPERTIES\"], _header__WEBPACK_IMPORTED_MODULE_3__[\"HEADER_TITLE_PROPERTIES_MAP\"]))\n    };\n}\nfunction defaultHeaderGuideAlign(headerChannel, angle, anchor = 'middle') {\n    switch (anchor) {\n        case 'start':\n            return { align: 'left' };\n        case 'end':\n            return { align: 'right' };\n    }\n    const align = Object(_axis_properties__WEBPACK_IMPORTED_MODULE_7__[\"defaultLabelAlign\"])(angle, headerChannel === 'row' ? 'left' : 'top', headerChannel === 'row' ? 'y' : 'x');\n    return align ? { align } : {};\n}\nfunction defaultHeaderGuideBaseline(angle, channel) {\n    const baseline = Object(_axis_properties__WEBPACK_IMPORTED_MODULE_7__[\"defaultLabelBaseline\"])(angle, channel === 'row' ? 'left' : 'top', channel === 'row' ? 'y' : 'x', true);\n    return baseline ? { baseline } : {};\n}\nfunction assembleHeaderGroups(model, channel) {\n    const layoutHeader = model.component.layoutHeaders[channel];\n    const groups = [];\n    for (const headerType of _component__WEBPACK_IMPORTED_MODULE_12__[\"HEADER_TYPES\"]) {\n        if (layoutHeader[headerType]) {\n            for (const headerComponent of layoutHeader[headerType]) {\n                const group = assembleHeaderGroup(model, channel, headerType, layoutHeader, headerComponent);\n                if (group != null) {\n                    groups.push(group);\n                }\n            }\n        }\n    }\n    return groups;\n}\nfunction getSort(facetFieldDef, channel) {\n    var _a;\n    const { sort } = facetFieldDef;\n    if (Object(_sort__WEBPACK_IMPORTED_MODULE_4__[\"isSortField\"])(sort)) {\n        return {\n            field: Object(_channeldef__WEBPACK_IMPORTED_MODULE_2__[\"vgField\"])(sort, { expr: 'datum' }),\n            order: (_a = sort.order) !== null && _a !== void 0 ? _a : 'ascending'\n        };\n    }\n    else if (Object(vega_util__WEBPACK_IMPORTED_MODULE_0__[\"isArray\"])(sort)) {\n        return {\n            field: Object(_data_calculate__WEBPACK_IMPORTED_MODULE_8__[\"sortArrayIndexField\"])(facetFieldDef, channel, { expr: 'datum' }),\n            order: 'ascending'\n        };\n    }\n    else {\n        return {\n            field: Object(_channeldef__WEBPACK_IMPORTED_MODULE_2__[\"vgField\"])(facetFieldDef, { expr: 'datum' }),\n            order: sort !== null && sort !== void 0 ? sort : 'ascending'\n        };\n    }\n}\nfunction assembleLabelTitle(facetFieldDef, channel, config) {\n    const { format, formatType, labelAngle, labelAnchor, labelOrient, labelExpr } = Object(_common__WEBPACK_IMPORTED_MODULE_11__[\"getHeaderProperties\"])(['format', 'formatType', 'labelAngle', 'labelAnchor', 'labelOrient', 'labelExpr'], facetFieldDef.header, config, channel);\n    const titleTextExpr = Object(_format__WEBPACK_IMPORTED_MODULE_9__[\"formatSignalRef\"])({ fieldOrDatumDef: facetFieldDef, format, formatType, expr: 'parent', config })\n        .signal;\n    const headerChannel = Object(_common__WEBPACK_IMPORTED_MODULE_11__[\"getHeaderChannel\"])(channel, labelOrient);\n    return Object.assign(Object.assign(Object.assign(Object.assign(Object.assign({ text: {\n            signal: labelExpr\n                ? Object(_util__WEBPACK_IMPORTED_MODULE_6__[\"replaceAll\"])(Object(_util__WEBPACK_IMPORTED_MODULE_6__[\"replaceAll\"])(labelExpr, 'datum.label', titleTextExpr), 'datum.value', Object(_channeldef__WEBPACK_IMPORTED_MODULE_2__[\"vgField\"])(facetFieldDef, { expr: 'parent' }))\n                : titleTextExpr\n        } }, (channel === 'row' ? { orient: 'left' } : {})), { style: 'guide-label', frame: 'group' }), defaultHeaderGuideBaseline(labelAngle, headerChannel)), defaultHeaderGuideAlign(headerChannel, labelAngle, labelAnchor)), assembleHeaderProperties(config, facetFieldDef, channel, _header__WEBPACK_IMPORTED_MODULE_3__[\"HEADER_LABEL_PROPERTIES\"], _header__WEBPACK_IMPORTED_MODULE_3__[\"HEADER_LABEL_PROPERTIES_MAP\"]));\n}\nfunction assembleHeaderGroup(model, channel, headerType, layoutHeader, headerComponent) {\n    if (headerComponent) {\n        let title = null;\n        const { facetFieldDef } = layoutHeader;\n        const config = model.config ? model.config : undefined;\n        if (facetFieldDef && headerComponent.labels) {\n            const { labelOrient } = Object(_common__WEBPACK_IMPORTED_MODULE_11__[\"getHeaderProperties\"])(['labelOrient'], facetFieldDef.header, config, channel);\n            // Include label title in the header if orient aligns with the channel\n            if ((channel === 'row' && !Object(_util__WEBPACK_IMPORTED_MODULE_6__[\"contains\"])(['top', 'bottom'], labelOrient)) ||\n                (channel === 'column' && !Object(_util__WEBPACK_IMPORTED_MODULE_6__[\"contains\"])(['left', 'right'], labelOrient))) {\n                title = assembleLabelTitle(facetFieldDef, channel, config);\n            }\n        }\n        const isFacetWithoutRowCol = Object(_model__WEBPACK_IMPORTED_MODULE_10__[\"isFacetModel\"])(model) && !Object(_spec_facet__WEBPACK_IMPORTED_MODULE_5__[\"isFacetMapping\"])(model.facet);\n        const axes = headerComponent.axes;\n        const hasAxes = (axes === null || axes === void 0 ? void 0 : axes.length) > 0;\n        if (title || hasAxes) {\n            const sizeChannel = channel === 'row' ? 'height' : 'width';\n            return Object.assign(Object.assign(Object.assign(Object.assign(Object.assign({ name: model.getName(`${channel}_${headerType}`), type: 'group', role: `${channel}-${headerType}` }, (layoutHeader.facetFieldDef\n                ? {\n                    from: { data: model.getName(channel + '_domain') },\n                    sort: getSort(facetFieldDef, channel)\n                }\n                : {})), (hasAxes && isFacetWithoutRowCol\n                ? {\n                    from: { data: model.getName(`facet_domain_${channel}`) }\n                }\n                : {})), (title ? { title } : {})), (headerComponent.sizeSignal\n                ? {\n                    encode: {\n                        update: {\n                            [sizeChannel]: headerComponent.sizeSignal\n                        }\n                    }\n                }\n                : {})), (hasAxes ? { axes } : {}));\n        }\n    }\n    return null;\n}\nconst LAYOUT_TITLE_BAND = {\n    column: {\n        start: 0,\n        end: 1\n    },\n    row: {\n        start: 1,\n        end: 0\n    }\n};\nfunction getLayoutTitleBand(titleAnchor, headerChannel) {\n    return LAYOUT_TITLE_BAND[headerChannel][titleAnchor];\n}\nfunction assembleLayoutTitleBand(headerComponentIndex, config) {\n    const titleBand = {};\n    for (const channel of _channel__WEBPACK_IMPORTED_MODULE_1__[\"FACET_CHANNELS\"]) {\n        const headerComponent = headerComponentIndex[channel];\n        if (headerComponent === null || headerComponent === void 0 ? void 0 : headerComponent.facetFieldDef) {\n            const { titleAnchor, titleOrient } = Object(_common__WEBPACK_IMPORTED_MODULE_11__[\"getHeaderProperties\"])(['titleAnchor', 'titleOrient'], headerComponent.facetFieldDef.header, config, channel);\n            const headerChannel = Object(_common__WEBPACK_IMPORTED_MODULE_11__[\"getHeaderChannel\"])(channel, titleOrient);\n            const band = getLayoutTitleBand(titleAnchor, headerChannel);\n            if (band !== undefined) {\n                titleBand[headerChannel] = band;\n            }\n        }\n    }\n    return Object(_util__WEBPACK_IMPORTED_MODULE_6__[\"isEmpty\"])(titleBand) ? undefined : titleBand;\n}\nfunction assembleHeaderProperties(config, facetFieldDef, channel, properties, propertiesMap) {\n    const props = {};\n    for (const prop of properties) {\n        if (!propertiesMap[prop]) {\n            continue;\n        }\n        const value = Object(_common__WEBPACK_IMPORTED_MODULE_11__[\"getHeaderProperty\"])(prop, facetFieldDef === null || facetFieldDef === void 0 ? void 0 : facetFieldDef.header, config, channel);\n        if (value !== undefined) {\n            props[propertiesMap[prop]] = value;\n        }\n    }\n    return props;\n}\n//# sourceMappingURL=assemble.js.map//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,[encoded data, 13372 characters]\n//# sourceURL=webpack-internal:///./node_modules/vega-lite/build/src/compile/header/assemble.js\n");

/***/ }),

/***/ "./node_modules/vega-lite/build/src/compile/header/common.js":
/*!*******************************************************************!*\
  !*** ./node_modules/vega-lite/build/src/compile/header/common.js ***!
  \*******************************************************************/
/*! exports provided: getHeaderChannel, getHeaderProperty, getHeaderProperties */
/***/ (function(module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"getHeaderChannel\", function() { return getHeaderChannel; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"getHeaderProperty\", function() { return getHeaderProperty; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"getHeaderProperties\", function() { return getHeaderProperties; });\n/* harmony import */ var _util__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../../util */ \"./node_modules/vega-lite/build/src/util.js\");\n\n/**\n * Get header channel, which can be different from facet channel when orient is specified or when the facet channel is facet.\n */\nfunction getHeaderChannel(channel, orient) {\n    if (Object(_util__WEBPACK_IMPORTED_MODULE_0__[\"contains\"])(['top', 'bottom'], orient)) {\n        return 'column';\n    }\n    else if (Object(_util__WEBPACK_IMPORTED_MODULE_0__[\"contains\"])(['left', 'right'], orient)) {\n        return 'row';\n    }\n    return channel === 'row' ? 'row' : 'column';\n}\nfunction getHeaderProperty(prop, header, config, channel) {\n    const headerSpecificConfig = channel === 'row' ? config.headerRow : channel === 'column' ? config.headerColumn : config.headerFacet;\n    return Object(_util__WEBPACK_IMPORTED_MODULE_0__[\"getFirstDefined\"])((header || {})[prop], headerSpecificConfig[prop], config.header[prop]);\n}\nfunction getHeaderProperties(properties, header, config, channel) {\n    const props = {};\n    for (const prop of properties) {\n        const value = getHeaderProperty(prop, header || {}, config, channel);\n        if (value !== undefined) {\n            props[prop] = value;\n        }\n    }\n    return props;\n}\n//# sourceMappingURL=common.js.map//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvdmVnYS1saXRlL2J1aWxkL3NyYy9jb21waWxlL2hlYWRlci9jb21tb24uanMuanMiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvdmVnYS1saXRlL2J1aWxkL3NyYy9jb21waWxlL2hlYWRlci9jb21tb24uanM/ZTJhNCJdLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBjb250YWlucywgZ2V0Rmlyc3REZWZpbmVkIH0gZnJvbSAnLi4vLi4vdXRpbCc7XG4vKipcbiAqIEdldCBoZWFkZXIgY2hhbm5lbCwgd2hpY2ggY2FuIGJlIGRpZmZlcmVudCBmcm9tIGZhY2V0IGNoYW5uZWwgd2hlbiBvcmllbnQgaXMgc3BlY2lmaWVkIG9yIHdoZW4gdGhlIGZhY2V0IGNoYW5uZWwgaXMgZmFjZXQuXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBnZXRIZWFkZXJDaGFubmVsKGNoYW5uZWwsIG9yaWVudCkge1xuICAgIGlmIChjb250YWlucyhbJ3RvcCcsICdib3R0b20nXSwgb3JpZW50KSkge1xuICAgICAgICByZXR1cm4gJ2NvbHVtbic7XG4gICAgfVxuICAgIGVsc2UgaWYgKGNvbnRhaW5zKFsnbGVmdCcsICdyaWdodCddLCBvcmllbnQpKSB7XG4gICAgICAgIHJldHVybiAncm93JztcbiAgICB9XG4gICAgcmV0dXJuIGNoYW5uZWwgPT09ICdyb3cnID8gJ3JvdycgOiAnY29sdW1uJztcbn1cbmV4cG9ydCBmdW5jdGlvbiBnZXRIZWFkZXJQcm9wZXJ0eShwcm9wLCBoZWFkZXIsIGNvbmZpZywgY2hhbm5lbCkge1xuICAgIGNvbnN0IGhlYWRlclNwZWNpZmljQ29uZmlnID0gY2hhbm5lbCA9PT0gJ3JvdycgPyBjb25maWcuaGVhZGVyUm93IDogY2hhbm5lbCA9PT0gJ2NvbHVtbicgPyBjb25maWcuaGVhZGVyQ29sdW1uIDogY29uZmlnLmhlYWRlckZhY2V0O1xuICAgIHJldHVybiBnZXRGaXJzdERlZmluZWQoKGhlYWRlciB8fCB7fSlbcHJvcF0sIGhlYWRlclNwZWNpZmljQ29uZmlnW3Byb3BdLCBjb25maWcuaGVhZGVyW3Byb3BdKTtcbn1cbmV4cG9ydCBmdW5jdGlvbiBnZXRIZWFkZXJQcm9wZXJ0aWVzKHByb3BlcnRpZXMsIGhlYWRlciwgY29uZmlnLCBjaGFubmVsKSB7XG4gICAgY29uc3QgcHJvcHMgPSB7fTtcbiAgICBmb3IgKGNvbnN0IHByb3Agb2YgcHJvcGVydGllcykge1xuICAgICAgICBjb25zdCB2YWx1ZSA9IGdldEhlYWRlclByb3BlcnR5KHByb3AsIGhlYWRlciB8fCB7fSwgY29uZmlnLCBjaGFubmVsKTtcbiAgICAgICAgaWYgKHZhbHVlICE9PSB1bmRlZmluZWQpIHtcbiAgICAgICAgICAgIHByb3BzW3Byb3BdID0gdmFsdWU7XG4gICAgICAgIH1cbiAgICB9XG4gICAgcmV0dXJuIHByb3BzO1xufVxuLy8jIHNvdXJjZU1hcHBpbmdVUkw9Y29tbW9uLmpzLm1hcCJdLCJtYXBwaW5ncyI6IkFBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBIiwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///./node_modules/vega-lite/build/src/compile/header/common.js\n");

/***/ }),

/***/ "./node_modules/vega-lite/build/src/compile/header/component.js":
/*!**********************************************************************!*\
  !*** ./node_modules/vega-lite/build/src/compile/header/component.js ***!
  \**********************************************************************/
/*! exports provided: HEADER_CHANNELS, HEADER_TYPES */
/***/ (function(module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"HEADER_CHANNELS\", function() { return HEADER_CHANNELS; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"HEADER_TYPES\", function() { return HEADER_TYPES; });\nconst HEADER_CHANNELS = ['row', 'column'];\nconst HEADER_TYPES = ['header', 'footer'];\n//# sourceMappingURL=component.js.map//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvdmVnYS1saXRlL2J1aWxkL3NyYy9jb21waWxlL2hlYWRlci9jb21wb25lbnQuanMuanMiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvdmVnYS1saXRlL2J1aWxkL3NyYy9jb21waWxlL2hlYWRlci9jb21wb25lbnQuanM/OTI2MyJdLCJzb3VyY2VzQ29udGVudCI6WyJleHBvcnQgY29uc3QgSEVBREVSX0NIQU5ORUxTID0gWydyb3cnLCAnY29sdW1uJ107XG5leHBvcnQgY29uc3QgSEVBREVSX1RZUEVTID0gWydoZWFkZXInLCAnZm9vdGVyJ107XG4vLyMgc291cmNlTWFwcGluZ1VSTD1jb21wb25lbnQuanMubWFwIl0sIm1hcHBpbmdzIjoiQUFBQTtBQUFBO0FBQUE7QUFBQTtBQUNBO0FBQ0EiLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///./node_modules/vega-lite/build/src/compile/header/component.js\n");

/***/ }),

/***/ "./node_modules/vega-lite/build/src/compile/header/parse.js":
/*!******************************************************************!*\
  !*** ./node_modules/vega-lite/build/src/compile/header/parse.js ***!
  \******************************************************************/
/*! exports provided: getHeaderType, parseFacetHeaders */
/***/ (function(module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"getHeaderType\", function() { return getHeaderType; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"parseFacetHeaders\", function() { return parseFacetHeaders; });\n/* harmony import */ var vega_util__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! vega-util */ \"./node_modules/vega-lite/node_modules/vega-util/build/vega-util.module.js\");\n/* harmony import */ var _channel__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../../channel */ \"./node_modules/vega-lite/build/src/channel.js\");\n/* harmony import */ var _channeldef__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ../../channeldef */ \"./node_modules/vega-lite/build/src/channeldef.js\");\n/* harmony import */ var _util__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ../../util */ \"./node_modules/vega-lite/build/src/util.js\");\n/* harmony import */ var _vega_schema__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ../../vega.schema */ \"./node_modules/vega-lite/build/src/vega.schema.js\");\n/* harmony import */ var _axis_assemble__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! ../axis/assemble */ \"./node_modules/vega-lite/build/src/compile/axis/assemble.js\");\n/* harmony import */ var _resolve__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! ../resolve */ \"./node_modules/vega-lite/build/src/compile/resolve.js\");\n/* harmony import */ var _common__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! ./common */ \"./node_modules/vega-lite/build/src/compile/header/common.js\");\n\n\n\n\n\n\n\n\nfunction getHeaderType(orient) {\n    if (orient === 'top' || orient === 'left' || Object(_vega_schema__WEBPACK_IMPORTED_MODULE_4__[\"isSignalRef\"])(orient)) {\n        // we always use header for orient signal since we can't dynamically make header becomes footer\n        return 'header';\n    }\n    return 'footer';\n}\nfunction parseFacetHeaders(model) {\n    for (const channel of _channel__WEBPACK_IMPORTED_MODULE_1__[\"FACET_CHANNELS\"]) {\n        parseFacetHeader(model, channel);\n    }\n    mergeChildAxis(model, 'x');\n    mergeChildAxis(model, 'y');\n}\nfunction parseFacetHeader(model, channel) {\n    var _a;\n    const { facet, config, child, component } = model;\n    if (model.channelHasField(channel)) {\n        const fieldDef = facet[channel];\n        const titleConfig = Object(_common__WEBPACK_IMPORTED_MODULE_7__[\"getHeaderProperty\"])('title', null, config, channel);\n        let title = Object(_channeldef__WEBPACK_IMPORTED_MODULE_2__[\"title\"])(fieldDef, config, {\n            allowDisabling: true,\n            includeDefault: titleConfig === undefined || !!titleConfig\n        });\n        if (child.component.layoutHeaders[channel].title) {\n            // TODO: better handle multiline titles\n            title = Object(vega_util__WEBPACK_IMPORTED_MODULE_0__[\"isArray\"])(title) ? title.join(', ') : title;\n            // merge title with child to produce \"Title / Subtitle / Sub-subtitle\"\n            title += ' / ' + child.component.layoutHeaders[channel].title;\n            child.component.layoutHeaders[channel].title = null;\n        }\n        const labelOrient = Object(_common__WEBPACK_IMPORTED_MODULE_7__[\"getHeaderProperty\"])('labelOrient', fieldDef, config, channel);\n        const header = (_a = fieldDef.header) !== null && _a !== void 0 ? _a : {};\n        const labels = Object(_util__WEBPACK_IMPORTED_MODULE_3__[\"getFirstDefined\"])(header.labels, config.header.labels, true);\n        const headerType = Object(_util__WEBPACK_IMPORTED_MODULE_3__[\"contains\"])(['bottom', 'right'], labelOrient) ? 'footer' : 'header';\n        component.layoutHeaders[channel] = {\n            title,\n            facetFieldDef: fieldDef,\n            [headerType]: channel === 'facet' ? [] : [makeHeaderComponent(model, channel, labels)]\n        };\n    }\n}\nfunction makeHeaderComponent(model, channel, labels) {\n    const sizeType = channel === 'row' ? 'height' : 'width';\n    return {\n        labels,\n        sizeSignal: model.child.component.layoutSize.get(sizeType) ? model.child.getSizeSignalRef(sizeType) : undefined,\n        axes: []\n    };\n}\nfunction mergeChildAxis(model, channel) {\n    var _a;\n    const { child } = model;\n    if (child.component.axes[channel]) {\n        const { layoutHeaders, resolve } = model.component;\n        resolve.axis[channel] = Object(_resolve__WEBPACK_IMPORTED_MODULE_6__[\"parseGuideResolve\"])(resolve, channel);\n        if (resolve.axis[channel] === 'shared') {\n            // For shared axis, move the axes to facet's header or footer\n            const headerChannel = channel === 'x' ? 'column' : 'row';\n            const layoutHeader = layoutHeaders[headerChannel];\n            for (const axisComponent of child.component.axes[channel]) {\n                const headerType = getHeaderType(axisComponent.get('orient'));\n                layoutHeader[headerType] = (_a = layoutHeader[headerType]) !== null && _a !== void 0 ? _a : [makeHeaderComponent(model, headerChannel, false)];\n                // FIXME: assemble shouldn't be called here, but we do it this way so we only extract the main part of the axes\n                const mainAxis = Object(_axis_assemble__WEBPACK_IMPORTED_MODULE_5__[\"assembleAxis\"])(axisComponent, 'main', model.config, { header: true });\n                if (mainAxis) {\n                    // LayoutHeader no longer keep track of property precedence, thus let's combine.\n                    layoutHeader[headerType][0].axes.push(mainAxis);\n                }\n                axisComponent.mainExtracted = true;\n            }\n        }\n        else {\n            // Otherwise do nothing for independent axes\n        }\n    }\n}\n//# sourceMappingURL=parse.js.map//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,[encoded data, 6456 characters]\n//# sourceURL=webpack-internal:///./node_modules/vega-lite/build/src/compile/header/parse.js\n");

/***/ }),

/***/ "./node_modules/vega-lite/build/src/compile/layer.js":
/*!***********************************************************!*\
  !*** ./node_modules/vega-lite/build/src/compile/layer.js ***!
  \***********************************************************/
/*! exports provided: LayerModel */
/***/ (function(module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"LayerModel\", function() { return LayerModel; });\n/* harmony import */ var _log__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../log */ \"./node_modules/vega-lite/build/src/log/index.js\");\n/* harmony import */ var _spec__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../spec */ \"./node_modules/vega-lite/build/src/spec/index.js\");\n/* harmony import */ var _util__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ../util */ \"./node_modules/vega-lite/build/src/util.js\");\n/* harmony import */ var _axis_assemble__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ./axis/assemble */ \"./node_modules/vega-lite/build/src/compile/axis/assemble.js\");\n/* harmony import */ var _axis_parse__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ./axis/parse */ \"./node_modules/vega-lite/build/src/compile/axis/parse.js\");\n/* harmony import */ var _data_parse__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! ./data/parse */ \"./node_modules/vega-lite/build/src/compile/data/parse.js\");\n/* harmony import */ var _layoutsize_assemble__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! ./layoutsize/assemble */ \"./node_modules/vega-lite/build/src/compile/layoutsize/assemble.js\");\n/* harmony import */ var _layoutsize_parse__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! ./layoutsize/parse */ \"./node_modules/vega-lite/build/src/compile/layoutsize/parse.js\");\n/* harmony import */ var _legend_assemble__WEBPACK_IMPORTED_MODULE_8__ = __webpack_require__(/*! ./legend/assemble */ \"./node_modules/vega-lite/build/src/compile/legend/assemble.js\");\n/* harmony import */ var _model__WEBPACK_IMPORTED_MODULE_9__ = __webpack_require__(/*! ./model */ \"./node_modules/vega-lite/build/src/compile/model.js\");\n/* harmony import */ var _selection_assemble__WEBPACK_IMPORTED_MODULE_10__ = __webpack_require__(/*! ./selection/assemble */ \"./node_modules/vega-lite/build/src/compile/selection/assemble.js\");\n/* harmony import */ var _unit__WEBPACK_IMPORTED_MODULE_11__ = __webpack_require__(/*! ./unit */ \"./node_modules/vega-lite/build/src/compile/unit.js\");\n\n\n\n\n\n\n\n\n\n\n\n\nclass LayerModel extends _model__WEBPACK_IMPORTED_MODULE_9__[\"Model\"] {\n    constructor(spec, parent, parentGivenName, parentGivenSize, config) {\n        super(spec, 'layer', parent, parentGivenName, config, spec.resolve, spec.view);\n        const layoutSize = Object.assign(Object.assign(Object.assign({}, parentGivenSize), (spec.width ? { width: spec.width } : {})), (spec.height ? { height: spec.height } : {}));\n        this.children = spec.layer.map((layer, i) => {\n            if (Object(_spec__WEBPACK_IMPORTED_MODULE_1__[\"isLayerSpec\"])(layer)) {\n                return new LayerModel(layer, this, this.getName('layer_' + i), layoutSize, config);\n            }\n            else if (Object(_spec__WEBPACK_IMPORTED_MODULE_1__[\"isUnitSpec\"])(layer)) {\n                return new _unit__WEBPACK_IMPORTED_MODULE_11__[\"UnitModel\"](layer, this, this.getName('layer_' + i), layoutSize, config);\n            }\n            throw new Error(_log__WEBPACK_IMPORTED_MODULE_0__[\"message\"].invalidSpec(layer));\n        });\n    }\n    parseData() {\n        this.component.data = Object(_data_parse__WEBPACK_IMPORTED_MODULE_5__[\"parseData\"])(this);\n        for (const child of this.children) {\n            child.parseData();\n        }\n    }\n    parseLayoutSize() {\n        Object(_layoutsize_parse__WEBPACK_IMPORTED_MODULE_7__[\"parseLayerLayoutSize\"])(this);\n    }\n    parseSelections() {\n        // Merge selections up the hierarchy so that they may be referenced\n        // across unit specs. Persist their definitions within each child\n        // to assemble signals which remain within output Vega unit groups.\n        this.component.selection = {};\n        for (const child of this.children) {\n            child.parseSelections();\n            for (const key of Object(_util__WEBPACK_IMPORTED_MODULE_2__[\"keys\"])(child.component.selection)) {\n                this.component.selection[key] = child.component.selection[key];\n            }\n        }\n    }\n    parseMarkGroup() {\n        for (const child of this.children) {\n            child.parseMarkGroup();\n        }\n    }\n    parseAxesAndHeaders() {\n        Object(_axis_parse__WEBPACK_IMPORTED_MODULE_4__[\"parseLayerAxes\"])(this);\n    }\n    assembleSelectionTopLevelSignals(signals) {\n        return this.children.reduce((sg, child) => child.assembleSelectionTopLevelSignals(sg), signals);\n    }\n    // TODO: Support same named selections across children.\n    assembleSignals() {\n        return this.children.reduce((signals, child) => {\n            return signals.concat(child.assembleSignals());\n        }, Object(_axis_assemble__WEBPACK_IMPORTED_MODULE_3__[\"assembleAxisSignals\"])(this));\n    }\n    assembleLayoutSignals() {\n        return this.children.reduce((signals, child) => {\n            return signals.concat(child.assembleLayoutSignals());\n        }, Object(_layoutsize_assemble__WEBPACK_IMPORTED_MODULE_6__[\"assembleLayoutSignals\"])(this));\n    }\n    assembleSelectionData(data) {\n        return this.children.reduce((db, child) => child.assembleSelectionData(db), data);\n    }\n    assembleTitle() {\n        let title = super.assembleTitle();\n        if (title) {\n            return title;\n        }\n        // If title does not provide layer, look into children\n        for (const child of this.children) {\n            title = child.assembleTitle();\n            if (title) {\n                return title;\n            }\n        }\n        return undefined;\n    }\n    assembleLayout() {\n        return null;\n    }\n    assembleMarks() {\n        return Object(_selection_assemble__WEBPACK_IMPORTED_MODULE_10__[\"assembleLayerSelectionMarks\"])(this, this.children.flatMap(child => {\n            return child.assembleMarks();\n        }));\n    }\n    assembleLegends() {\n        return this.children.reduce((legends, child) => {\n            return legends.concat(child.assembleLegends());\n        }, Object(_legend_assemble__WEBPACK_IMPORTED_MODULE_8__[\"assembleLegends\"])(this));\n    }\n}\n//# sourceMappingURL=layer.js.map//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,[encoded data, 6384 characters]\n//# sourceURL=webpack-internal:///./node_modules/vega-lite/build/src/compile/layer.js\n");

/***/ }),

/***/ "./node_modules/vega-lite/build/src/compile/layoutsize/assemble.js":
/*!*************************************************************************!*\
  !*** ./node_modules/vega-lite/build/src/compile/layoutsize/assemble.js ***!
  \*************************************************************************/
/*! exports provided: assembleLayoutSignals, sizeSignals, sizeExpr */
/***/ (function(module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"assembleLayoutSignals\", function() { return assembleLayoutSignals; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"sizeSignals\", function() { return sizeSignals; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"sizeExpr\", function() { return sizeExpr; });\n/* harmony import */ var _config__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../../config */ \"./node_modules/vega-lite/build/src/config.js\");\n/* harmony import */ var _scale__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../../scale */ \"./node_modules/vega-lite/build/src/scale.js\");\n/* harmony import */ var _util__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ../../util */ \"./node_modules/vega-lite/build/src/util.js\");\n/* harmony import */ var _vega_schema__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ../../vega.schema */ \"./node_modules/vega-lite/build/src/vega.schema.js\");\n/* harmony import */ var _common__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ../common */ \"./node_modules/vega-lite/build/src/compile/common.js\");\n/* harmony import */ var _model__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! ../model */ \"./node_modules/vega-lite/build/src/compile/model.js\");\n\n\n\n\n\n\nfunction assembleLayoutSignals(model) {\n    return [\n        ...sizeSignals(model, 'width'),\n        ...sizeSignals(model, 'height'),\n        ...sizeSignals(model, 'childWidth'),\n        ...sizeSignals(model, 'childHeight')\n    ];\n}\nfunction sizeSignals(model, sizeType) {\n    const channel = sizeType === 'width' ? 'x' : 'y';\n    const size = model.component.layoutSize.get(sizeType);\n    if (!size || size === 'merged') {\n        return [];\n    }\n    // Read size signal name from name map, just in case it is the top-level size signal that got renamed.\n    const name = model.getSizeSignalRef(sizeType).signal;\n    if (size === 'step') {\n        const scaleComponent = model.getScaleComponent(channel);\n        if (scaleComponent) {\n            const type = scaleComponent.get('type');\n            const range = scaleComponent.get('range');\n            if (Object(_scale__WEBPACK_IMPORTED_MODULE_1__[\"hasDiscreteDomain\"])(type) && Object(_vega_schema__WEBPACK_IMPORTED_MODULE_3__[\"isVgRangeStep\"])(range)) {\n                const scaleName = model.scaleName(channel);\n                if (Object(_model__WEBPACK_IMPORTED_MODULE_5__[\"isFacetModel\"])(model.parent)) {\n                    // If parent is facet and this is an independent scale, return only signal signal\n                    // as the width/height will be calculated using the cardinality from\n                    // facet's aggregate rather than reading from scale domain\n                    const parentResolve = model.parent.component.resolve;\n                    if (parentResolve.scale[channel] === 'independent') {\n                        return [stepSignal(scaleName, range)];\n                    }\n                }\n                return [\n                    stepSignal(scaleName, range),\n                    {\n                        name,\n                        update: sizeExpr(scaleName, scaleComponent, `domain('${scaleName}').length`)\n                    }\n                ];\n            }\n        }\n        /* istanbul ignore next: Condition should not happen -- only for warning in development. */\n        throw new Error('layout size is step although width/height is not step.');\n    }\n    else if (size == 'container') {\n        const isWidth = name.endsWith('width');\n        const expr = isWidth ? 'containerSize()[0]' : 'containerSize()[1]';\n        const defaultValue = Object(_config__WEBPACK_IMPORTED_MODULE_0__[\"getViewConfigContinuousSize\"])(model.config.view, isWidth ? 'width' : 'height');\n        const safeExpr = `isFinite(${expr}) ? ${expr} : ${defaultValue}`;\n        return [{ name, init: safeExpr, on: [{ update: safeExpr, events: 'window:resize' }] }];\n    }\n    else {\n        return [\n            {\n                name,\n                value: size\n            }\n        ];\n    }\n}\nfunction stepSignal(scaleName, range) {\n    return {\n        name: scaleName + '_step',\n        value: range.step\n    };\n}\nfunction sizeExpr(scaleName, scaleComponent, cardinality) {\n    const type = scaleComponent.get('type');\n    const padding = scaleComponent.get('padding');\n    const paddingOuter = Object(_util__WEBPACK_IMPORTED_MODULE_2__[\"getFirstDefined\"])(scaleComponent.get('paddingOuter'), padding);\n    let paddingInner = scaleComponent.get('paddingInner');\n    paddingInner =\n        type === 'band'\n            ? // only band has real paddingInner\n                paddingInner !== undefined\n                    ? paddingInner\n                    : padding\n            : // For point, as calculated in https://github.com/vega/vega-scale/blob/master/src/band.js#L128,\n                // it's equivalent to have paddingInner = 1 since there is only n-1 steps between n points.\n                1;\n    return `bandspace(${cardinality}, ${Object(_common__WEBPACK_IMPORTED_MODULE_4__[\"signalOrStringValue\"])(paddingInner)}, ${Object(_common__WEBPACK_IMPORTED_MODULE_4__[\"signalOrStringValue\"])(paddingOuter)}) * ${scaleName}_step`;\n}\n//# sourceMappingURL=assemble.js.map//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,[encoded data, 6356 characters]\n//# sourceURL=webpack-internal:///./node_modules/vega-lite/build/src/compile/layoutsize/assemble.js\n");

/***/ }),

/***/ "./node_modules/vega-lite/build/src/compile/layoutsize/component.js":
/*!**************************************************************************!*\
  !*** ./node_modules/vega-lite/build/src/compile/layoutsize/component.js ***!
  \**************************************************************************/
/*! exports provided: getSizeTypeFromLayoutSizeType */
/***/ (function(module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"getSizeTypeFromLayoutSizeType\", function() { return getSizeTypeFromLayoutSizeType; });\nfunction getSizeTypeFromLayoutSizeType(layoutSizeType) {\n    return layoutSizeType === 'childWidth' ? 'width' : layoutSizeType === 'childHeight' ? 'height' : layoutSizeType;\n}\n//# sourceMappingURL=component.js.map//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvdmVnYS1saXRlL2J1aWxkL3NyYy9jb21waWxlL2xheW91dHNpemUvY29tcG9uZW50LmpzLmpzIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL3ZlZ2EtbGl0ZS9idWlsZC9zcmMvY29tcGlsZS9sYXlvdXRzaXplL2NvbXBvbmVudC5qcz83NjdiIl0sInNvdXJjZXNDb250ZW50IjpbImV4cG9ydCBmdW5jdGlvbiBnZXRTaXplVHlwZUZyb21MYXlvdXRTaXplVHlwZShsYXlvdXRTaXplVHlwZSkge1xuICAgIHJldHVybiBsYXlvdXRTaXplVHlwZSA9PT0gJ2NoaWxkV2lkdGgnID8gJ3dpZHRoJyA6IGxheW91dFNpemVUeXBlID09PSAnY2hpbGRIZWlnaHQnID8gJ2hlaWdodCcgOiBsYXlvdXRTaXplVHlwZTtcbn1cbi8vIyBzb3VyY2VNYXBwaW5nVVJMPWNvbXBvbmVudC5qcy5tYXAiXSwibWFwcGluZ3MiOiJBQUFBO0FBQUE7QUFBQTtBQUNBO0FBQ0E7QUFDQSIsInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///./node_modules/vega-lite/build/src/compile/layoutsize/component.js\n");

/***/ }),

/***/ "./node_modules/vega-lite/build/src/compile/layoutsize/init.js":
/*!*********************************************************************!*\
  !*** ./node_modules/vega-lite/build/src/compile/layoutsize/init.js ***!
  \*********************************************************************/
/*! exports provided: initLayoutSize */
/***/ (function(module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"initLayoutSize\", function() { return initLayoutSize; });\n/* harmony import */ var _channel__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../../channel */ \"./node_modules/vega-lite/build/src/channel.js\");\n/* harmony import */ var _channeldef__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../../channeldef */ \"./node_modules/vega-lite/build/src/channeldef.js\");\n/* harmony import */ var _log__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ../../log */ \"./node_modules/vega-lite/build/src/log/index.js\");\n/* harmony import */ var _spec_base__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ../../spec/base */ \"./node_modules/vega-lite/build/src/spec/base.js\");\n\n\n\n\nfunction initLayoutSize({ encoding, size }) {\n    for (const channel of _channel__WEBPACK_IMPORTED_MODULE_0__[\"POSITION_SCALE_CHANNELS\"]) {\n        const sizeType = Object(_channel__WEBPACK_IMPORTED_MODULE_0__[\"getSizeChannel\"])(channel);\n        if (Object(_spec_base__WEBPACK_IMPORTED_MODULE_3__[\"isStep\"])(size[sizeType])) {\n            if (Object(_channeldef__WEBPACK_IMPORTED_MODULE_1__[\"isContinuousFieldOrDatumDef\"])(encoding[channel])) {\n                delete size[sizeType];\n                _log__WEBPACK_IMPORTED_MODULE_2__[\"warn\"](_log__WEBPACK_IMPORTED_MODULE_2__[\"message\"].stepDropped(sizeType));\n            }\n        }\n    }\n    return size;\n}\n//# sourceMappingURL=init.js.map//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvdmVnYS1saXRlL2J1aWxkL3NyYy9jb21waWxlL2xheW91dHNpemUvaW5pdC5qcy5qcyIsInNvdXJjZXMiOlsid2VicGFjazovLy8uL25vZGVfbW9kdWxlcy92ZWdhLWxpdGUvYnVpbGQvc3JjL2NvbXBpbGUvbGF5b3V0c2l6ZS9pbml0LmpzPzc5YTgiXSwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgZ2V0U2l6ZUNoYW5uZWwsIFBPU0lUSU9OX1NDQUxFX0NIQU5ORUxTIH0gZnJvbSAnLi4vLi4vY2hhbm5lbCc7XG5pbXBvcnQgeyBpc0NvbnRpbnVvdXNGaWVsZE9yRGF0dW1EZWYgfSBmcm9tICcuLi8uLi9jaGFubmVsZGVmJztcbmltcG9ydCAqIGFzIGxvZyBmcm9tICcuLi8uLi9sb2cnO1xuaW1wb3J0IHsgaXNTdGVwIH0gZnJvbSAnLi4vLi4vc3BlYy9iYXNlJztcbmV4cG9ydCBmdW5jdGlvbiBpbml0TGF5b3V0U2l6ZSh7IGVuY29kaW5nLCBzaXplIH0pIHtcbiAgICBmb3IgKGNvbnN0IGNoYW5uZWwgb2YgUE9TSVRJT05fU0NBTEVfQ0hBTk5FTFMpIHtcbiAgICAgICAgY29uc3Qgc2l6ZVR5cGUgPSBnZXRTaXplQ2hhbm5lbChjaGFubmVsKTtcbiAgICAgICAgaWYgKGlzU3RlcChzaXplW3NpemVUeXBlXSkpIHtcbiAgICAgICAgICAgIGlmIChpc0NvbnRpbnVvdXNGaWVsZE9yRGF0dW1EZWYoZW5jb2RpbmdbY2hhbm5lbF0pKSB7XG4gICAgICAgICAgICAgICAgZGVsZXRlIHNpemVbc2l6ZVR5cGVdO1xuICAgICAgICAgICAgICAgIGxvZy53YXJuKGxvZy5tZXNzYWdlLnN0ZXBEcm9wcGVkKHNpemVUeXBlKSk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICB9XG4gICAgcmV0dXJuIHNpemU7XG59XG4vLyMgc291cmNlTWFwcGluZ1VSTD1pbml0LmpzLm1hcCJdLCJtYXBwaW5ncyI6IkFBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSIsInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///./node_modules/vega-lite/build/src/compile/layoutsize/init.js\n");

/***/ }),

/***/ "./node_modules/vega-lite/build/src/compile/layoutsize/parse.js":
/*!**********************************************************************!*\
  !*** ./node_modules/vega-lite/build/src/compile/layoutsize/parse.js ***!
  \**********************************************************************/
/*! exports provided: parseLayerLayoutSize, parseRepeatLayoutSize, parseConcatLayoutSize, parseChildrenLayoutSize, parseUnitLayoutSize */
/***/ (function(module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"parseLayerLayoutSize\", function() { return parseLayerLayoutSize; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"parseRepeatLayoutSize\", function() { return parseRepeatLayoutSize; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"parseConcatLayoutSize\", function() { return parseConcatLayoutSize; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"parseChildrenLayoutSize\", function() { return parseChildrenLayoutSize; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"parseUnitLayoutSize\", function() { return parseUnitLayoutSize; });\n/* harmony import */ var _channel__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../../channel */ \"./node_modules/vega-lite/build/src/channel.js\");\n/* harmony import */ var _config__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../../config */ \"./node_modules/vega-lite/build/src/config.js\");\n/* harmony import */ var _scale__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ../../scale */ \"./node_modules/vega-lite/build/src/scale.js\");\n/* harmony import */ var _spec_base__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ../../spec/base */ \"./node_modules/vega-lite/build/src/spec/base.js\");\n/* harmony import */ var _vega_schema__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ../../vega.schema */ \"./node_modules/vega-lite/build/src/vega.schema.js\");\n/* harmony import */ var _split__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! ../split */ \"./node_modules/vega-lite/build/src/compile/split.js\");\n/* harmony import */ var _component__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! ./component */ \"./node_modules/vega-lite/build/src/compile/layoutsize/component.js\");\n\n\n\n\n\n\n\nfunction parseLayerLayoutSize(model) {\n    parseChildrenLayoutSize(model);\n    parseNonUnitLayoutSizeForChannel(model, 'width');\n    parseNonUnitLayoutSizeForChannel(model, 'height');\n}\nconst parseRepeatLayoutSize = parseConcatLayoutSize;\nfunction parseConcatLayoutSize(model) {\n    parseChildrenLayoutSize(model);\n    // for columns === 1 (vconcat), we can completely merge width. Otherwise, we can treat merged width as childWidth.\n    const widthType = model.layout.columns === 1 ? 'width' : 'childWidth';\n    // for columns === undefined (hconcat), we can completely merge height. Otherwise, we can treat merged height as childHeight.\n    const heightType = model.layout.columns === undefined ? 'height' : 'childHeight';\n    parseNonUnitLayoutSizeForChannel(model, widthType);\n    parseNonUnitLayoutSizeForChannel(model, heightType);\n}\nfunction parseChildrenLayoutSize(model) {\n    for (const child of model.children) {\n        child.parseLayoutSize();\n    }\n}\n/**\n * Merge child layout size (width or height).\n */\nfunction parseNonUnitLayoutSizeForChannel(model, layoutSizeType) {\n    /*\n     * For concat, the parent width or height might not be the same as the children's shared height.\n     * For example, hconcat's subviews may share width, but the shared width is not the hconcat view's width.\n     *\n     * layoutSizeType represents the output of the view (could be childWidth/childHeight/width/height)\n     * while the sizeType represents the properties of the child.\n     */\n    const sizeType = Object(_component__WEBPACK_IMPORTED_MODULE_6__[\"getSizeTypeFromLayoutSizeType\"])(layoutSizeType);\n    const channel = Object(_channel__WEBPACK_IMPORTED_MODULE_0__[\"getPositionScaleChannel\"])(sizeType);\n    const resolve = model.component.resolve;\n    const layoutSizeCmpt = model.component.layoutSize;\n    let mergedSize;\n    // Try to merge layout size\n    for (const child of model.children) {\n        const childSize = child.component.layoutSize.getWithExplicit(sizeType);\n        const scaleResolve = resolve.scale[channel];\n        if (scaleResolve === 'independent' && childSize.value === 'step') {\n            // Do not merge independent scales with range-step as their size depends\n            // on the scale domains, which can be different between scales.\n            mergedSize = undefined;\n            break;\n        }\n        if (mergedSize) {\n            if (scaleResolve === 'independent' && mergedSize.value !== childSize.value) {\n                // For independent scale, only merge if all the sizes are the same.\n                // If the values are different, abandon the merge!\n                mergedSize = undefined;\n                break;\n            }\n            mergedSize = Object(_split__WEBPACK_IMPORTED_MODULE_5__[\"mergeValuesWithExplicit\"])(mergedSize, childSize, sizeType, '');\n        }\n        else {\n            mergedSize = childSize;\n        }\n    }\n    if (mergedSize) {\n        // If merged, rename size and set size of all children.\n        for (const child of model.children) {\n            model.renameSignal(child.getName(sizeType), model.getName(layoutSizeType));\n            child.component.layoutSize.set(sizeType, 'merged', false);\n        }\n        layoutSizeCmpt.setWithExplicit(layoutSizeType, mergedSize);\n    }\n    else {\n        layoutSizeCmpt.setWithExplicit(layoutSizeType, {\n            explicit: false,\n            value: undefined\n        });\n    }\n}\nfunction parseUnitLayoutSize(model) {\n    const { size, component } = model;\n    for (const channel of _channel__WEBPACK_IMPORTED_MODULE_0__[\"POSITION_SCALE_CHANNELS\"]) {\n        const sizeType = Object(_channel__WEBPACK_IMPORTED_MODULE_0__[\"getSizeChannel\"])(channel);\n        if (size[sizeType]) {\n            const specifiedSize = size[sizeType];\n            component.layoutSize.set(sizeType, Object(_spec_base__WEBPACK_IMPORTED_MODULE_3__[\"isStep\"])(specifiedSize) ? 'step' : specifiedSize, true);\n        }\n        else {\n            const defaultSize = defaultUnitSize(model, sizeType);\n            component.layoutSize.set(sizeType, defaultSize, false);\n        }\n    }\n}\nfunction defaultUnitSize(model, sizeType) {\n    const channel = sizeType === 'width' ? 'x' : 'y';\n    const config = model.config;\n    const scaleComponent = model.getScaleComponent(channel);\n    if (scaleComponent) {\n        const scaleType = scaleComponent.get('type');\n        const range = scaleComponent.get('range');\n        if (Object(_scale__WEBPACK_IMPORTED_MODULE_2__[\"hasDiscreteDomain\"])(scaleType)) {\n            const size = Object(_config__WEBPACK_IMPORTED_MODULE_1__[\"getViewConfigDiscreteSize\"])(config.view, sizeType);\n            if (Object(_vega_schema__WEBPACK_IMPORTED_MODULE_4__[\"isVgRangeStep\"])(range) || Object(_spec_base__WEBPACK_IMPORTED_MODULE_3__[\"isStep\"])(size)) {\n                // For discrete domain with range.step, use dynamic width/height\n                return 'step';\n            }\n            else {\n                return size;\n            }\n        }\n        else {\n            return Object(_config__WEBPACK_IMPORTED_MODULE_1__[\"getViewConfigContinuousSize\"])(config.view, sizeType);\n        }\n    }\n    else if (model.hasProjection || model.mark === 'arc') {\n        // arc should use continuous size by default otherwise the pie is extremely small\n        return Object(_config__WEBPACK_IMPORTED_MODULE_1__[\"getViewConfigContinuousSize\"])(config.view, sizeType);\n    }\n    else {\n        const size = Object(_config__WEBPACK_IMPORTED_MODULE_1__[\"getViewConfigDiscreteSize\"])(config.view, sizeType);\n        return Object(_spec_base__WEBPACK_IMPORTED_MODULE_3__[\"isStep\"])(size) ? size.step : size;\n    }\n}\n//# sourceMappingURL=parse.js.map//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,[encoded data, 8704 characters]\n//# sourceURL=webpack-internal:///./node_modules/vega-lite/build/src/compile/layoutsize/parse.js\n");

/***/ }),

/***/ "./node_modules/vega-lite/build/src/compile/legend/assemble.js":
/*!*********************************************************************!*\
  !*** ./node_modules/vega-lite/build/src/compile/legend/assemble.js ***!
  \*********************************************************************/
/*! exports provided: assembleLegends, assembleLegend */
/***/ (function(module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"assembleLegends\", function() { return assembleLegends; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"assembleLegend\", function() { return assembleLegend; });\n/* harmony import */ var _legend__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../../legend */ \"./node_modules/vega-lite/build/src/legend.js\");\n/* harmony import */ var _util__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../../util */ \"./node_modules/vega-lite/build/src/util.js\");\n/* harmony import */ var _vega_schema__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ../../vega.schema */ \"./node_modules/vega-lite/build/src/vega.schema.js\");\n/* harmony import */ var _parse__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ./parse */ \"./node_modules/vega-lite/build/src/compile/legend/parse.js\");\nvar __rest = (undefined && undefined.__rest) || function (s, e) {\n    var t = {};\n    for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0)\n        t[p] = s[p];\n    if (s != null && typeof Object.getOwnPropertySymbols === \"function\")\n        for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) {\n            if (e.indexOf(p[i]) < 0 && Object.prototype.propertyIsEnumerable.call(s, p[i]))\n                t[p[i]] = s[p[i]];\n        }\n    return t;\n};\n\n\n\n\nfunction setLegendEncode(legend, part, vgProp, vgRef) {\n    var _a, _b, _c;\n    legend.encode = (_a = legend.encode) !== null && _a !== void 0 ? _a : {};\n    legend.encode[part] = (_b = legend.encode[part]) !== null && _b !== void 0 ? _b : {};\n    legend.encode[part].update = (_c = legend.encode[part].update) !== null && _c !== void 0 ? _c : {};\n    // TODO: remove as any after https://github.com/prisma/nexus-prisma/issues/291\n    legend.encode[part].update[vgProp] = vgRef;\n}\nfunction assembleLegends(model) {\n    const legendComponentIndex = model.component.legends;\n    const legendByDomain = {};\n    for (const channel of Object(_util__WEBPACK_IMPORTED_MODULE_1__[\"keys\"])(legendComponentIndex)) {\n        const scaleComponent = model.getScaleComponent(channel);\n        const domainHash = Object(_util__WEBPACK_IMPORTED_MODULE_1__[\"stringify\"])(scaleComponent.get('domains'));\n        if (legendByDomain[domainHash]) {\n            for (const mergedLegendComponent of legendByDomain[domainHash]) {\n                const merged = Object(_parse__WEBPACK_IMPORTED_MODULE_3__[\"mergeLegendComponent\"])(mergedLegendComponent, legendComponentIndex[channel]);\n                if (!merged) {\n                    // If cannot merge, need to add this legend separately\n                    legendByDomain[domainHash].push(legendComponentIndex[channel]);\n                }\n            }\n        }\n        else {\n            legendByDomain[domainHash] = [legendComponentIndex[channel].clone()];\n        }\n    }\n    const legends = Object(_util__WEBPACK_IMPORTED_MODULE_1__[\"vals\"])(legendByDomain)\n        .flat()\n        .map(l => assembleLegend(l, model.config))\n        .filter(l => l !== undefined);\n    return legends;\n}\nfunction assembleLegend(legendCmpt, config) {\n    var _a, _b, _c;\n    const _d = legendCmpt.combine(), { disable, labelExpr, selections } = _d, legend = __rest(_d, [\"disable\", \"labelExpr\", \"selections\"]);\n    if (disable) {\n        return undefined;\n    }\n    if (config.aria === false && legend.aria == undefined) {\n        legend.aria = false;\n    }\n    if ((_a = legend.encode) === null || _a === void 0 ? void 0 : _a.symbols) {\n        const out = legend.encode.symbols.update;\n        if (out.fill && out.fill['value'] !== 'transparent' && !out.stroke && !legend.stroke) {\n            // For non color channel's legend, we need to override symbol stroke config from Vega config if stroke channel is not used.\n            out.stroke = { value: 'transparent' };\n        }\n        // Remove properties that the legend is encoding.\n        for (const property of _legend__WEBPACK_IMPORTED_MODULE_0__[\"LEGEND_SCALE_CHANNELS\"]) {\n            if (legend[property]) {\n                delete out[property];\n            }\n        }\n    }\n    if (!legend.title) {\n        // title schema doesn't include null, ''\n        delete legend.title;\n    }\n    if (labelExpr !== undefined) {\n        let expr = labelExpr;\n        if (((_c = (_b = legend.encode) === null || _b === void 0 ? void 0 : _b.labels) === null || _c === void 0 ? void 0 : _c.update) && Object(_vega_schema__WEBPACK_IMPORTED_MODULE_2__[\"isSignalRef\"])(legend.encode.labels.update.text)) {\n            expr = Object(_util__WEBPACK_IMPORTED_MODULE_1__[\"replaceAll\"])(labelExpr, 'datum.label', legend.encode.labels.update.text.signal);\n        }\n        setLegendEncode(legend, 'labels', 'text', { signal: expr });\n    }\n    return legend;\n}\n//# sourceMappingURL=assemble.js.map//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,[encoded data, 6168 characters]\n//# sourceURL=webpack-internal:///./node_modules/vega-lite/build/src/compile/legend/assemble.js\n");

/***/ }),

/***/ "./node_modules/vega-lite/build/src/compile/legend/component.js":
/*!**********************************************************************!*\
  !*** ./node_modules/vega-lite/build/src/compile/legend/component.js ***!
  \**********************************************************************/
/*! exports provided: LEGEND_COMPONENT_PROPERTIES, LegendComponent */
/***/ (function(module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"LEGEND_COMPONENT_PROPERTIES\", function() { return LEGEND_COMPONENT_PROPERTIES; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"LegendComponent\", function() { return LegendComponent; });\n/* harmony import */ var _legend__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../../legend */ \"./node_modules/vega-lite/build/src/legend.js\");\n/* harmony import */ var _util__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../../util */ \"./node_modules/vega-lite/build/src/util.js\");\n/* harmony import */ var _split__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ../split */ \"./node_modules/vega-lite/build/src/compile/split.js\");\n\n\n\nconst LEGEND_COMPONENT_PROPERTY_INDEX = Object.assign(Object.assign({}, _legend__WEBPACK_IMPORTED_MODULE_0__[\"COMMON_LEGEND_PROPERTY_INDEX\"]), { disable: 1, labelExpr: 1, selections: 1, \n    // channel scales\n    opacity: 1, shape: 1, stroke: 1, fill: 1, size: 1, strokeWidth: 1, strokeDash: 1, \n    // encode\n    encode: 1 });\nconst LEGEND_COMPONENT_PROPERTIES = Object(_util__WEBPACK_IMPORTED_MODULE_1__[\"keys\"])(LEGEND_COMPONENT_PROPERTY_INDEX);\nclass LegendComponent extends _split__WEBPACK_IMPORTED_MODULE_2__[\"Split\"] {\n}\n//# sourceMappingURL=component.js.map//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvdmVnYS1saXRlL2J1aWxkL3NyYy9jb21waWxlL2xlZ2VuZC9jb21wb25lbnQuanMuanMiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvdmVnYS1saXRlL2J1aWxkL3NyYy9jb21waWxlL2xlZ2VuZC9jb21wb25lbnQuanM/MTBiMiJdLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDT01NT05fTEVHRU5EX1BST1BFUlRZX0lOREVYIH0gZnJvbSAnLi4vLi4vbGVnZW5kJztcbmltcG9ydCB7IGtleXMgfSBmcm9tICcuLi8uLi91dGlsJztcbmltcG9ydCB7IFNwbGl0IH0gZnJvbSAnLi4vc3BsaXQnO1xuY29uc3QgTEVHRU5EX0NPTVBPTkVOVF9QUk9QRVJUWV9JTkRFWCA9IE9iamVjdC5hc3NpZ24oT2JqZWN0LmFzc2lnbih7fSwgQ09NTU9OX0xFR0VORF9QUk9QRVJUWV9JTkRFWCksIHsgZGlzYWJsZTogMSwgbGFiZWxFeHByOiAxLCBzZWxlY3Rpb25zOiAxLCBcbiAgICAvLyBjaGFubmVsIHNjYWxlc1xuICAgIG9wYWNpdHk6IDEsIHNoYXBlOiAxLCBzdHJva2U6IDEsIGZpbGw6IDEsIHNpemU6IDEsIHN0cm9rZVdpZHRoOiAxLCBzdHJva2VEYXNoOiAxLCBcbiAgICAvLyBlbmNvZGVcbiAgICBlbmNvZGU6IDEgfSk7XG5leHBvcnQgY29uc3QgTEVHRU5EX0NPTVBPTkVOVF9QUk9QRVJUSUVTID0ga2V5cyhMRUdFTkRfQ09NUE9ORU5UX1BST1BFUlRZX0lOREVYKTtcbmV4cG9ydCBjbGFzcyBMZWdlbmRDb21wb25lbnQgZXh0ZW5kcyBTcGxpdCB7XG59XG4vLyMgc291cmNlTWFwcGluZ1VSTD1jb21wb25lbnQuanMubWFwIl0sIm1hcHBpbmdzIjoiQUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EiLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///./node_modules/vega-lite/build/src/compile/legend/component.js\n");

/***/ }),

/***/ "./node_modules/vega-lite/build/src/compile/legend/encode.js":
/*!*******************************************************************!*\
  !*** ./node_modules/vega-lite/build/src/compile/legend/encode.js ***!
  \*******************************************************************/
/*! exports provided: legendEncodeRules, symbols, gradient, labels, entries, getFirstConditionValue */
/***/ (function(module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"legendEncodeRules\", function() { return legendEncodeRules; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"symbols\", function() { return symbols; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"gradient\", function() { return gradient; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"labels\", function() { return labels; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"entries\", function() { return entries; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"getFirstConditionValue\", function() { return getFirstConditionValue; });\n/* harmony import */ var vega_util__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! vega-util */ \"./node_modules/vega-lite/node_modules/vega-util/build/vega-util.module.js\");\n/* harmony import */ var _channel__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../../channel */ \"./node_modules/vega-lite/build/src/channel.js\");\n/* harmony import */ var _channeldef__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ../../channeldef */ \"./node_modules/vega-lite/build/src/channeldef.js\");\n/* harmony import */ var _mark__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ../../mark */ \"./node_modules/vega-lite/build/src/mark.js\");\n/* harmony import */ var _util__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ../../util */ \"./node_modules/vega-lite/build/src/util.js\");\n/* harmony import */ var _common__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! ../common */ \"./node_modules/vega-lite/build/src/compile/common.js\");\n/* harmony import */ var _format__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! ../format */ \"./node_modules/vega-lite/build/src/compile/format.js\");\n/* harmony import */ var _mark_encode__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! ../mark/encode */ \"./node_modules/vega-lite/build/src/compile/mark/encode/index.js\");\n/* harmony import */ var _selection__WEBPACK_IMPORTED_MODULE_8__ = __webpack_require__(/*! ../selection */ \"./node_modules/vega-lite/build/src/compile/selection/index.js\");\n\n\n\n\n\n\n\n\n\nconst legendEncodeRules = {\n    symbols,\n    gradient,\n    labels,\n    entries\n};\nfunction symbols(symbolsSpec, { fieldOrDatumDef, model, channel, legendCmpt, legendType }) {\n    var _a, _b, _c, _d, _e, _f, _g, _h;\n    if (legendType !== 'symbol') {\n        return undefined;\n    }\n    const { markDef, encoding, config, mark } = model;\n    const filled = markDef.filled && mark !== 'trail';\n    let out = Object.assign(Object.assign({}, Object(_common__WEBPACK_IMPORTED_MODULE_5__[\"applyMarkConfig\"])({}, model, _mark__WEBPACK_IMPORTED_MODULE_3__[\"FILL_STROKE_CONFIG\"])), _mark_encode__WEBPACK_IMPORTED_MODULE_7__[\"color\"](model, { filled })); // FIXME: remove this when VgEncodeEntry is compatible with SymbolEncodeEntry\n    const symbolOpacity = (_a = legendCmpt.get('symbolOpacity')) !== null && _a !== void 0 ? _a : config.legend.symbolOpacity;\n    const symbolFillColor = (_b = legendCmpt.get('symbolFillColor')) !== null && _b !== void 0 ? _b : config.legend.symbolFillColor;\n    const symbolStrokeColor = (_c = legendCmpt.get('symbolStrokeColor')) !== null && _c !== void 0 ? _c : config.legend.symbolStrokeColor;\n    const opacity = symbolOpacity === undefined ? (_d = getMaxValue(encoding.opacity)) !== null && _d !== void 0 ? _d : markDef.opacity : undefined;\n    if (out.fill) {\n        // for fill legend, we don't want any fill in symbol\n        if (channel === 'fill' || (filled && channel === _channel__WEBPACK_IMPORTED_MODULE_1__[\"COLOR\"])) {\n            delete out.fill;\n        }\n        else {\n            if (out.fill['field']) {\n                // For others, set fill to some opaque value (or nothing if a color is already set)\n                if (symbolFillColor) {\n                    delete out.fill;\n                }\n                else {\n                    out.fill = Object(_common__WEBPACK_IMPORTED_MODULE_5__[\"signalOrValueRef\"])((_e = config.legend.symbolBaseFillColor) !== null && _e !== void 0 ? _e : 'black');\n                    out.fillOpacity = Object(_common__WEBPACK_IMPORTED_MODULE_5__[\"signalOrValueRef\"])(opacity !== null && opacity !== void 0 ? opacity : 1);\n                }\n            }\n            else if (Object(vega_util__WEBPACK_IMPORTED_MODULE_0__[\"isArray\"])(out.fill)) {\n                const fill = (_h = (_g = getFirstConditionValue((_f = encoding.fill) !== null && _f !== void 0 ? _f : encoding.color)) !== null && _g !== void 0 ? _g : markDef.fill) !== null && _h !== void 0 ? _h : (filled && markDef.color);\n                if (fill) {\n                    out.fill = Object(_common__WEBPACK_IMPORTED_MODULE_5__[\"signalOrValueRef\"])(fill);\n                }\n            }\n        }\n    }\n    if (out.stroke) {\n        if (channel === 'stroke' || (!filled && channel === _channel__WEBPACK_IMPORTED_MODULE_1__[\"COLOR\"])) {\n            delete out.stroke;\n        }\n        else {\n            if (out.stroke['field'] || symbolStrokeColor) {\n                // For others, remove stroke field\n                delete out.stroke;\n            }\n            else if (Object(vega_util__WEBPACK_IMPORTED_MODULE_0__[\"isArray\"])(out.stroke)) {\n                const stroke = Object(_util__WEBPACK_IMPORTED_MODULE_4__[\"getFirstDefined\"])(getFirstConditionValue(encoding.stroke || encoding.color), markDef.stroke, filled ? markDef.color : undefined);\n                if (stroke) {\n                    out.stroke = { value: stroke };\n                }\n            }\n        }\n    }\n    if (channel !== _channel__WEBPACK_IMPORTED_MODULE_1__[\"OPACITY\"]) {\n        const condition = Object(_channeldef__WEBPACK_IMPORTED_MODULE_2__[\"isFieldDef\"])(fieldOrDatumDef) && selectedCondition(model, legendCmpt, fieldOrDatumDef);\n        if (condition) {\n            out.opacity = [\n                Object.assign({ test: condition }, Object(_common__WEBPACK_IMPORTED_MODULE_5__[\"signalOrValueRef\"])(opacity !== null && opacity !== void 0 ? opacity : 1)),\n                Object(_common__WEBPACK_IMPORTED_MODULE_5__[\"signalOrValueRef\"])(config.legend.unselectedOpacity)\n            ];\n        }\n        else if (opacity) {\n            out.opacity = Object(_common__WEBPACK_IMPORTED_MODULE_5__[\"signalOrValueRef\"])(opacity);\n        }\n    }\n    out = Object.assign(Object.assign({}, out), symbolsSpec);\n    return Object(_util__WEBPACK_IMPORTED_MODULE_4__[\"isEmpty\"])(out) ? undefined : out;\n}\nfunction gradient(gradientSpec, { model, legendType, legendCmpt }) {\n    var _a;\n    if (legendType !== 'gradient') {\n        return undefined;\n    }\n    const { config, markDef, encoding } = model;\n    let out = {};\n    const gradientOpacity = (_a = legendCmpt.get('gradientOpacity')) !== null && _a !== void 0 ? _a : config.legend.gradientOpacity;\n    const opacity = gradientOpacity === undefined ? getMaxValue(encoding.opacity) || markDef.opacity : undefined;\n    if (opacity) {\n        // only apply opacity if it is neither zero or undefined\n        out.opacity = Object(_common__WEBPACK_IMPORTED_MODULE_5__[\"signalOrValueRef\"])(opacity);\n    }\n    out = Object.assign(Object.assign({}, out), gradientSpec);\n    return Object(_util__WEBPACK_IMPORTED_MODULE_4__[\"isEmpty\"])(out) ? undefined : out;\n}\nfunction labels(specifiedlabelsSpec, { fieldOrDatumDef, model, channel, legendCmpt }) {\n    const legend = model.legend(channel) || {};\n    const config = model.config;\n    const condition = Object(_channeldef__WEBPACK_IMPORTED_MODULE_2__[\"isFieldDef\"])(fieldOrDatumDef) ? selectedCondition(model, legendCmpt, fieldOrDatumDef) : undefined;\n    const opacity = condition ? [{ test: condition, value: 1 }, { value: config.legend.unselectedOpacity }] : undefined;\n    const { format, formatType } = legend;\n    const text = Object(_format__WEBPACK_IMPORTED_MODULE_6__[\"isCustomFormatType\"])(formatType)\n        ? Object(_format__WEBPACK_IMPORTED_MODULE_6__[\"formatCustomType\"])({\n            fieldOrDatumDef,\n            field: 'datum.value',\n            format,\n            formatType,\n            config\n        })\n        : undefined;\n    const labelsSpec = Object.assign(Object.assign(Object.assign({}, (opacity ? { opacity } : {})), (text ? { text } : {})), specifiedlabelsSpec);\n    return Object(_util__WEBPACK_IMPORTED_MODULE_4__[\"isEmpty\"])(labelsSpec) ? undefined : labelsSpec;\n}\nfunction entries(entriesSpec, { legendCmpt }) {\n    const selections = legendCmpt.get('selections');\n    return (selections === null || selections === void 0 ? void 0 : selections.length) ? Object.assign(Object.assign({}, entriesSpec), { fill: { value: 'transparent' } }) : entriesSpec;\n}\nfunction getMaxValue(channelDef) {\n    return getConditionValue(channelDef, (v, conditionalDef) => Math.max(v, conditionalDef.value));\n}\nfunction getFirstConditionValue(channelDef) {\n    return getConditionValue(channelDef, (v, conditionalDef) => {\n        return Object(_util__WEBPACK_IMPORTED_MODULE_4__[\"getFirstDefined\"])(v, conditionalDef.value);\n    });\n}\nfunction getConditionValue(channelDef, reducer) {\n    if (Object(_channeldef__WEBPACK_IMPORTED_MODULE_2__[\"hasConditionalValueDef\"])(channelDef)) {\n        return Object(vega_util__WEBPACK_IMPORTED_MODULE_0__[\"array\"])(channelDef.condition).reduce(reducer, channelDef.value);\n    }\n    else if (Object(_channeldef__WEBPACK_IMPORTED_MODULE_2__[\"isValueDef\"])(channelDef)) {\n        return channelDef.value;\n    }\n    return undefined;\n}\nfunction selectedCondition(model, legendCmpt, fieldDef) {\n    const selections = legendCmpt.get('selections');\n    if (!(selections === null || selections === void 0 ? void 0 : selections.length))\n        return undefined;\n    const field = Object(vega_util__WEBPACK_IMPORTED_MODULE_0__[\"stringValue\"])(fieldDef.field);\n    return selections\n        .map(name => {\n        const store = Object(vega_util__WEBPACK_IMPORTED_MODULE_0__[\"stringValue\"])(Object(_util__WEBPACK_IMPORTED_MODULE_4__[\"varName\"])(name) + _selection__WEBPACK_IMPORTED_MODULE_8__[\"STORE\"]);\n        return `(!length(data(${store})) || (${name}[${field}] && indexof(${name}[${field}], datum.value) >= 0))`;\n    })\n        .join(' || ');\n}\n//# sourceMappingURL=encode.js.map//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,[encoded data, 11144 characters]\n//# sourceURL=webpack-internal:///./node_modules/vega-lite/build/src/compile/legend/encode.js\n");

/***/ }),

/***/ "./node_modules/vega-lite/build/src/compile/legend/parse.js":
/*!******************************************************************!*\
  !*** ./node_modules/vega-lite/build/src/compile/legend/parse.js ***!
  \******************************************************************/
/*! exports provided: parseLegend, parseLegendForChannel, mergeLegendComponent */
/***/ (function(module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"parseLegend\", function() { return parseLegend; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"parseLegendForChannel\", function() { return parseLegendForChannel; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"mergeLegendComponent\", function() { return mergeLegendComponent; });\n/* harmony import */ var _channel__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../../channel */ \"./node_modules/vega-lite/build/src/channel.js\");\n/* harmony import */ var _channeldef__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../../channeldef */ \"./node_modules/vega-lite/build/src/channeldef.js\");\n/* harmony import */ var _legend__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ../../legend */ \"./node_modules/vega-lite/build/src/legend.js\");\n/* harmony import */ var _timeunit__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ../../timeunit */ \"./node_modules/vega-lite/build/src/timeunit.js\");\n/* harmony import */ var _type__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ../../type */ \"./node_modules/vega-lite/build/src/type.js\");\n/* harmony import */ var _util__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! ../../util */ \"./node_modules/vega-lite/build/src/util.js\");\n/* harmony import */ var _common__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! ../common */ \"./node_modules/vega-lite/build/src/compile/common.js\");\n/* harmony import */ var _guide__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! ../guide */ \"./node_modules/vega-lite/build/src/compile/guide.js\");\n/* harmony import */ var _model__WEBPACK_IMPORTED_MODULE_8__ = __webpack_require__(/*! ../model */ \"./node_modules/vega-lite/build/src/compile/model.js\");\n/* harmony import */ var _resolve__WEBPACK_IMPORTED_MODULE_9__ = __webpack_require__(/*! ../resolve */ \"./node_modules/vega-lite/build/src/compile/resolve.js\");\n/* harmony import */ var _selection_transforms_legends__WEBPACK_IMPORTED_MODULE_10__ = __webpack_require__(/*! ../selection/transforms/legends */ \"./node_modules/vega-lite/build/src/compile/selection/transforms/legends.js\");\n/* harmony import */ var _split__WEBPACK_IMPORTED_MODULE_11__ = __webpack_require__(/*! ../split */ \"./node_modules/vega-lite/build/src/compile/split.js\");\n/* harmony import */ var _component__WEBPACK_IMPORTED_MODULE_12__ = __webpack_require__(/*! ./component */ \"./node_modules/vega-lite/build/src/compile/legend/component.js\");\n/* harmony import */ var _encode__WEBPACK_IMPORTED_MODULE_13__ = __webpack_require__(/*! ./encode */ \"./node_modules/vega-lite/build/src/compile/legend/encode.js\");\n/* harmony import */ var _properties__WEBPACK_IMPORTED_MODULE_14__ = __webpack_require__(/*! ./properties */ \"./node_modules/vega-lite/build/src/compile/legend/properties.js\");\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\nfunction parseLegend(model) {\n    const legendComponent = Object(_model__WEBPACK_IMPORTED_MODULE_8__[\"isUnitModel\"])(model) ? parseUnitLegend(model) : parseNonUnitLegend(model);\n    model.component.legends = legendComponent;\n    return legendComponent;\n}\nfunction parseUnitLegend(model) {\n    const { encoding } = model;\n    const legendComponent = {};\n    for (const channel of [_channel__WEBPACK_IMPORTED_MODULE_0__[\"COLOR\"], ..._legend__WEBPACK_IMPORTED_MODULE_2__[\"LEGEND_SCALE_CHANNELS\"]]) {\n        const def = Object(_channeldef__WEBPACK_IMPORTED_MODULE_1__[\"getFieldOrDatumDef\"])(encoding[channel]);\n        if (!def || !model.getScaleComponent(channel)) {\n            continue;\n        }\n        if (channel === _channel__WEBPACK_IMPORTED_MODULE_0__[\"SHAPE\"] && Object(_channeldef__WEBPACK_IMPORTED_MODULE_1__[\"isFieldDef\"])(def) && def.type === _type__WEBPACK_IMPORTED_MODULE_4__[\"GEOJSON\"]) {\n            continue;\n        }\n        legendComponent[channel] = parseLegendForChannel(model, channel);\n    }\n    return legendComponent;\n}\nfunction getLegendDefWithScale(model, channel) {\n    const scale = model.scaleName(channel);\n    if (model.mark === 'trail') {\n        if (channel === 'color') {\n            // trail is a filled mark, but its default symbolType (\"stroke\") should use \"stroke\"\n            return { stroke: scale };\n        }\n        else if (channel === 'size') {\n            return { strokeWidth: scale };\n        }\n    }\n    if (channel === 'color') {\n        return model.markDef.filled ? { fill: scale } : { stroke: scale };\n    }\n    return { [channel]: scale };\n}\n// eslint-disable-next-line @typescript-eslint/ban-types\nfunction isExplicit(value, property, legend, fieldDef) {\n    switch (property) {\n        case 'disable':\n            return legend !== undefined; // if axis is specified or null/false, then it's enable/disable state is explicit\n        case 'values':\n            // specified legend.values is already respected, but may get transformed.\n            return !!(legend === null || legend === void 0 ? void 0 : legend.values);\n        case 'title':\n            // title can be explicit if fieldDef.title is set\n            if (property === 'title' && value === (fieldDef === null || fieldDef === void 0 ? void 0 : fieldDef.title)) {\n                return true;\n            }\n    }\n    // Otherwise, things are explicit if the returned value matches the specified property\n    return value === (legend || {})[property];\n}\nfunction parseLegendForChannel(model, channel) {\n    var _a, _b, _c;\n    let legend = model.legend(channel);\n    const { markDef, encoding, config } = model;\n    const legendConfig = config.legend;\n    const legendCmpt = new _component__WEBPACK_IMPORTED_MODULE_12__[\"LegendComponent\"]({}, getLegendDefWithScale(model, channel));\n    Object(_selection_transforms_legends__WEBPACK_IMPORTED_MODULE_10__[\"parseInteractiveLegend\"])(model, channel, legendCmpt);\n    const disable = legend !== undefined ? !legend : legendConfig.disable;\n    legendCmpt.set('disable', disable, legend !== undefined);\n    if (disable) {\n        return legendCmpt;\n    }\n    legend = legend || {};\n    const scaleType = model.getScaleComponent(channel).get('type');\n    const fieldOrDatumDef = Object(_channeldef__WEBPACK_IMPORTED_MODULE_1__[\"getFieldOrDatumDef\"])(encoding[channel]);\n    const timeUnit = Object(_channeldef__WEBPACK_IMPORTED_MODULE_1__[\"isFieldDef\"])(fieldOrDatumDef) ? (_a = Object(_timeunit__WEBPACK_IMPORTED_MODULE_3__[\"normalizeTimeUnit\"])(fieldOrDatumDef.timeUnit)) === null || _a === void 0 ? void 0 : _a.unit : undefined;\n    const orient = legend.orient || config.legend.orient || 'right';\n    const legendType = Object(_properties__WEBPACK_IMPORTED_MODULE_14__[\"getLegendType\"])({ legend, channel, timeUnit, scaleType });\n    const direction = Object(_properties__WEBPACK_IMPORTED_MODULE_14__[\"getDirection\"])({ legend, legendType, orient, legendConfig });\n    const ruleParams = {\n        legend,\n        channel,\n        model,\n        markDef,\n        encoding,\n        fieldOrDatumDef,\n        legendConfig,\n        config,\n        scaleType,\n        orient,\n        legendType,\n        direction\n    };\n    for (const property of _component__WEBPACK_IMPORTED_MODULE_12__[\"LEGEND_COMPONENT_PROPERTIES\"]) {\n        if ((legendType === 'gradient' && property.startsWith('symbol')) ||\n            (legendType === 'symbol' && property.startsWith('gradient'))) {\n            continue;\n        }\n        const value = property in _properties__WEBPACK_IMPORTED_MODULE_14__[\"legendRules\"] ? _properties__WEBPACK_IMPORTED_MODULE_14__[\"legendRules\"][property](ruleParams) : legend[property];\n        if (value !== undefined) {\n            const explicit = isExplicit(value, property, legend, model.fieldDef(channel));\n            if (explicit || config.legend[property] === undefined) {\n                legendCmpt.set(property, value, explicit);\n            }\n        }\n    }\n    const legendEncoding = (_b = legend === null || legend === void 0 ? void 0 : legend.encoding) !== null && _b !== void 0 ? _b : {};\n    const selections = legendCmpt.get('selections');\n    const legendEncode = {};\n    const legendEncodeParams = { fieldOrDatumDef, model, channel, legendCmpt, legendType };\n    for (const part of ['labels', 'legend', 'title', 'symbols', 'gradient', 'entries']) {\n        const legendEncodingPart = Object(_guide__WEBPACK_IMPORTED_MODULE_7__[\"guideEncodeEntry\"])((_c = legendEncoding[part]) !== null && _c !== void 0 ? _c : {}, model);\n        const value = part in _encode__WEBPACK_IMPORTED_MODULE_13__[\"legendEncodeRules\"]\n            ? _encode__WEBPACK_IMPORTED_MODULE_13__[\"legendEncodeRules\"][part](legendEncodingPart, legendEncodeParams) // apply rule\n            : legendEncodingPart; // no rule -- just default values\n        if (value !== undefined && !Object(_util__WEBPACK_IMPORTED_MODULE_5__[\"isEmpty\"])(value)) {\n            legendEncode[part] = Object.assign(Object.assign(Object.assign({}, ((selections === null || selections === void 0 ? void 0 : selections.length) && Object(_channeldef__WEBPACK_IMPORTED_MODULE_1__[\"isFieldDef\"])(fieldOrDatumDef)\n                ? { name: `${Object(_util__WEBPACK_IMPORTED_MODULE_5__[\"varName\"])(fieldOrDatumDef.field)}_legend_${part}` }\n                : {})), ((selections === null || selections === void 0 ? void 0 : selections.length) ? { interactive: !!selections } : {})), { update: value });\n        }\n    }\n    if (!Object(_util__WEBPACK_IMPORTED_MODULE_5__[\"isEmpty\"])(legendEncode)) {\n        legendCmpt.set('encode', legendEncode, !!(legend === null || legend === void 0 ? void 0 : legend.encoding));\n    }\n    return legendCmpt;\n}\nfunction parseNonUnitLegend(model) {\n    const { legends, resolve } = model.component;\n    for (const child of model.children) {\n        parseLegend(child);\n        for (const channel of Object(_util__WEBPACK_IMPORTED_MODULE_5__[\"keys\"])(child.component.legends)) {\n            resolve.legend[channel] = Object(_resolve__WEBPACK_IMPORTED_MODULE_9__[\"parseGuideResolve\"])(model.component.resolve, channel);\n            if (resolve.legend[channel] === 'shared') {\n                // If the resolve says shared (and has not been overridden)\n                // We will try to merge and see if there is a conflict\n                legends[channel] = mergeLegendComponent(legends[channel], child.component.legends[channel]);\n                if (!legends[channel]) {\n                    // If merge returns nothing, there is a conflict so we cannot make the legend shared.\n                    // Thus, mark legend as independent and remove the legend component.\n                    resolve.legend[channel] = 'independent';\n                    delete legends[channel];\n                }\n            }\n        }\n    }\n    for (const channel of Object(_util__WEBPACK_IMPORTED_MODULE_5__[\"keys\"])(legends)) {\n        for (const child of model.children) {\n            if (!child.component.legends[channel]) {\n                // skip if the child does not have a particular legend\n                continue;\n            }\n            if (resolve.legend[channel] === 'shared') {\n                // After merging shared legend, make sure to remove legend from child\n                delete child.component.legends[channel];\n            }\n        }\n    }\n    return legends;\n}\nfunction mergeLegendComponent(mergedLegend, childLegend) {\n    var _a, _b, _c, _d;\n    if (!mergedLegend) {\n        return childLegend.clone();\n    }\n    const mergedOrient = mergedLegend.getWithExplicit('orient');\n    const childOrient = childLegend.getWithExplicit('orient');\n    if (mergedOrient.explicit && childOrient.explicit && mergedOrient.value !== childOrient.value) {\n        // TODO: throw warning if resolve is explicit (We don't have info about explicit/implicit resolve yet.)\n        // Cannot merge due to inconsistent orient\n        return undefined;\n    }\n    let typeMerged = false;\n    // Otherwise, let's merge\n    for (const prop of _component__WEBPACK_IMPORTED_MODULE_12__[\"LEGEND_COMPONENT_PROPERTIES\"]) {\n        const mergedValueWithExplicit = Object(_split__WEBPACK_IMPORTED_MODULE_11__[\"mergeValuesWithExplicit\"])(mergedLegend.getWithExplicit(prop), childLegend.getWithExplicit(prop), prop, 'legend', \n        // Tie breaker function\n        (v1, v2) => {\n            switch (prop) {\n                case 'symbolType':\n                    return mergeSymbolType(v1, v2);\n                case 'title':\n                    return Object(_common__WEBPACK_IMPORTED_MODULE_6__[\"mergeTitleComponent\"])(v1, v2);\n                case 'type':\n                    // There are only two types. If we have different types, then prefer symbol over gradient.\n                    typeMerged = true;\n                    return Object(_split__WEBPACK_IMPORTED_MODULE_11__[\"makeImplicit\"])('symbol');\n            }\n            return Object(_split__WEBPACK_IMPORTED_MODULE_11__[\"defaultTieBreaker\"])(v1, v2, prop, 'legend');\n        });\n        mergedLegend.setWithExplicit(prop, mergedValueWithExplicit);\n    }\n    if (typeMerged) {\n        if ((_b = (_a = mergedLegend.implicit) === null || _a === void 0 ? void 0 : _a.encode) === null || _b === void 0 ? void 0 : _b.gradient) {\n            Object(_util__WEBPACK_IMPORTED_MODULE_5__[\"deleteNestedProperty\"])(mergedLegend.implicit, ['encode', 'gradient']);\n        }\n        if ((_d = (_c = mergedLegend.explicit) === null || _c === void 0 ? void 0 : _c.encode) === null || _d === void 0 ? void 0 : _d.gradient) {\n            Object(_util__WEBPACK_IMPORTED_MODULE_5__[\"deleteNestedProperty\"])(mergedLegend.explicit, ['encode', 'gradient']);\n        }\n    }\n    return mergedLegend;\n}\nfunction mergeSymbolType(st1, st2) {\n    if (st2.value === 'circle') {\n        // prefer \"circle\" over \"stroke\"\n        return st2;\n    }\n    return st1;\n}\n//# sourceMappingURL=parse.js.map//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,[encoded data, 15700 characters]\n//# sourceURL=webpack-internal:///./node_modules/vega-lite/build/src/compile/legend/parse.js\n");

/***/ }),

/***/ "./node_modules/vega-lite/build/src/compile/legend/properties.js":
/*!***********************************************************************!*\
  !*** ./node_modules/vega-lite/build/src/compile/legend/properties.js ***!
  \***********************************************************************/
/*! exports provided: legendRules, values, defaultSymbolType, clipHeight, getLegendType, defaultType, getDirection, defaultDirection, defaultGradientLength, defaultLabelOverlap */
/***/ (function(module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"legendRules\", function() { return legendRules; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"values\", function() { return values; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"defaultSymbolType\", function() { return defaultSymbolType; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"clipHeight\", function() { return clipHeight; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"getLegendType\", function() { return getLegendType; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"defaultType\", function() { return defaultType; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"getDirection\", function() { return getDirection; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"defaultDirection\", function() { return defaultDirection; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"defaultGradientLength\", function() { return defaultGradientLength; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"defaultLabelOverlap\", function() { return defaultLabelOverlap; });\n/* harmony import */ var vega_util__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! vega-util */ \"./node_modules/vega-lite/node_modules/vega-util/build/vega-util.module.js\");\n/* harmony import */ var _channel__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../../channel */ \"./node_modules/vega-lite/build/src/channel.js\");\n/* harmony import */ var _channeldef__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ../../channeldef */ \"./node_modules/vega-lite/build/src/channeldef.js\");\n/* harmony import */ var _scale__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ../../scale */ \"./node_modules/vega-lite/build/src/scale.js\");\n/* harmony import */ var _util__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ../../util */ \"./node_modules/vega-lite/build/src/util.js\");\n/* harmony import */ var _vega_schema__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! ../../vega.schema */ \"./node_modules/vega-lite/build/src/vega.schema.js\");\n/* harmony import */ var _format__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! ../format */ \"./node_modules/vega-lite/build/src/compile/format.js\");\n/* harmony import */ var _encode__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! ./encode */ \"./node_modules/vega-lite/build/src/compile/legend/encode.js\");\n\n\n\n\n\n\n\n\nconst legendRules = {\n    direction: ({ direction }) => direction,\n    format: ({ fieldOrDatumDef, legend, config }) => {\n        const { format, formatType } = legend;\n        return Object(_format__WEBPACK_IMPORTED_MODULE_6__[\"guideFormat\"])(fieldOrDatumDef, fieldOrDatumDef.type, format, formatType, config, false);\n    },\n    formatType: ({ legend, fieldOrDatumDef, scaleType }) => {\n        const { formatType } = legend;\n        return Object(_format__WEBPACK_IMPORTED_MODULE_6__[\"guideFormatType\"])(formatType, fieldOrDatumDef, scaleType);\n    },\n    gradientLength: params => {\n        var _a, _b;\n        const { legend, legendConfig } = params;\n        return (_b = (_a = legend.gradientLength) !== null && _a !== void 0 ? _a : legendConfig.gradientLength) !== null && _b !== void 0 ? _b : defaultGradientLength(params);\n    },\n    labelOverlap: ({ legend, legendConfig, scaleType }) => { var _a, _b; return (_b = (_a = legend.labelOverlap) !== null && _a !== void 0 ? _a : legendConfig.labelOverlap) !== null && _b !== void 0 ? _b : defaultLabelOverlap(scaleType); },\n    symbolType: ({ legend, markDef, channel, encoding }) => { var _a; return (_a = legend.symbolType) !== null && _a !== void 0 ? _a : defaultSymbolType(markDef.type, channel, encoding.shape, markDef.shape); },\n    title: ({ fieldOrDatumDef, config }) => Object(_channeldef__WEBPACK_IMPORTED_MODULE_2__[\"title\"])(fieldOrDatumDef, config, { allowDisabling: true }),\n    type: ({ legendType, scaleType, channel }) => {\n        if (Object(_channel__WEBPACK_IMPORTED_MODULE_1__[\"isColorChannel\"])(channel) && Object(_scale__WEBPACK_IMPORTED_MODULE_3__[\"isContinuousToContinuous\"])(scaleType)) {\n            if (legendType === 'gradient') {\n                return undefined;\n            }\n        }\n        else if (legendType === 'symbol') {\n            return undefined;\n        }\n        return legendType;\n    },\n    values: ({ fieldOrDatumDef, legend }) => values(legend, fieldOrDatumDef)\n};\nfunction values(legend, fieldOrDatumDef) {\n    const vals = legend.values;\n    if (Object(vega_util__WEBPACK_IMPORTED_MODULE_0__[\"isArray\"])(vals)) {\n        return Object(_channeldef__WEBPACK_IMPORTED_MODULE_2__[\"valueArray\"])(fieldOrDatumDef, vals);\n    }\n    else if (Object(_vega_schema__WEBPACK_IMPORTED_MODULE_5__[\"isSignalRef\"])(vals)) {\n        return vals;\n    }\n    return undefined;\n}\nfunction defaultSymbolType(mark, channel, shapeChannelDef, markShape) {\n    var _a;\n    if (channel !== 'shape') {\n        // use the value from the shape encoding or the mark config if they exist\n        const shape = (_a = Object(_encode__WEBPACK_IMPORTED_MODULE_7__[\"getFirstConditionValue\"])(shapeChannelDef)) !== null && _a !== void 0 ? _a : markShape;\n        if (shape) {\n            return shape;\n        }\n    }\n    switch (mark) {\n        case 'bar':\n        case 'rect':\n        case 'image':\n        case 'square':\n            return 'square';\n        case 'line':\n        case 'trail':\n        case 'rule':\n            return 'stroke';\n        case 'arc':\n        case 'point':\n        case 'circle':\n        case 'tick':\n        case 'geoshape':\n        case 'area':\n        case 'text':\n            return 'circle';\n    }\n}\nfunction clipHeight(legendType) {\n    if (legendType === 'gradient') {\n        return 20;\n    }\n    return undefined;\n}\nfunction getLegendType(params) {\n    const { legend } = params;\n    return Object(_util__WEBPACK_IMPORTED_MODULE_4__[\"getFirstDefined\"])(legend.type, defaultType(params));\n}\nfunction defaultType({ channel, timeUnit, scaleType }) {\n    // Following the logic in https://github.com/vega/vega-parser/blob/master/src/parsers/legend.js\n    if (Object(_channel__WEBPACK_IMPORTED_MODULE_1__[\"isColorChannel\"])(channel)) {\n        if (Object(_util__WEBPACK_IMPORTED_MODULE_4__[\"contains\"])(['quarter', 'month', 'day'], timeUnit)) {\n            return 'symbol';\n        }\n        if (Object(_scale__WEBPACK_IMPORTED_MODULE_3__[\"isContinuousToContinuous\"])(scaleType)) {\n            return 'gradient';\n        }\n    }\n    return 'symbol';\n}\nfunction getDirection({ legendConfig, legendType, orient, legend }) {\n    var _a, _b;\n    return ((_b = (_a = legend.direction) !== null && _a !== void 0 ? _a : legendConfig[legendType ? 'gradientDirection' : 'symbolDirection']) !== null && _b !== void 0 ? _b : defaultDirection(orient, legendType));\n}\nfunction defaultDirection(orient, legendType) {\n    switch (orient) {\n        case 'top':\n        case 'bottom':\n            return 'horizontal';\n        case 'left':\n        case 'right':\n        case 'none':\n        case undefined: // undefined = \"right\" in Vega\n            return undefined; // vertical is Vega's default\n        default:\n            // top-left / ...\n            // For inner legend, uses compact layout like Tableau\n            return legendType === 'gradient' ? 'horizontal' : undefined;\n    }\n}\nfunction defaultGradientLength({ legendConfig, model, direction, orient, scaleType }) {\n    const { gradientHorizontalMaxLength, gradientHorizontalMinLength, gradientVerticalMaxLength, gradientVerticalMinLength } = legendConfig;\n    if (Object(_scale__WEBPACK_IMPORTED_MODULE_3__[\"isContinuousToContinuous\"])(scaleType)) {\n        if (direction === 'horizontal') {\n            if (orient === 'top' || orient === 'bottom') {\n                return gradientLengthSignal(model, 'width', gradientHorizontalMinLength, gradientHorizontalMaxLength);\n            }\n            else {\n                return gradientHorizontalMinLength;\n            }\n        }\n        else {\n            // vertical / undefined (Vega uses vertical by default)\n            return gradientLengthSignal(model, 'height', gradientVerticalMinLength, gradientVerticalMaxLength);\n        }\n    }\n    return undefined;\n}\nfunction gradientLengthSignal(model, sizeType, min, max) {\n    const sizeSignal = model.getSizeSignalRef(sizeType).signal;\n    return { signal: `clamp(${sizeSignal}, ${min}, ${max})` };\n}\nfunction defaultLabelOverlap(scaleType) {\n    if (Object(_util__WEBPACK_IMPORTED_MODULE_4__[\"contains\"])(['quantile', 'threshold', 'log', 'symlog'], scaleType)) {\n        return 'greedy';\n    }\n    return undefined;\n}\n//# sourceMappingURL=properties.js.map//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,[encoded data, 9616 characters]\n//# sourceURL=webpack-internal:///./node_modules/vega-lite/build/src/compile/legend/properties.js\n");

/***/ }),

/***/ "./node_modules/vega-lite/build/src/compile/mark/arc.js":
/*!**************************************************************!*\
  !*** ./node_modules/vega-lite/build/src/compile/mark/arc.js ***!
  \**************************************************************/
/*! exports provided: arc */
/***/ (function(module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"arc\", function() { return arc; });\n/* harmony import */ var _encode__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./encode */ \"./node_modules/vega-lite/build/src/compile/mark/encode/index.js\");\n\nconst arc = {\n    vgMark: 'arc',\n    encodeEntry: (model) => {\n        return Object.assign(Object.assign(Object.assign(Object.assign(Object.assign({}, _encode__WEBPACK_IMPORTED_MODULE_0__[\"baseEncodeEntry\"](model, {\n            align: 'ignore',\n            baseline: 'ignore',\n            color: 'include',\n            size: 'ignore',\n            orient: 'ignore',\n            theta: 'ignore'\n        })), _encode__WEBPACK_IMPORTED_MODULE_0__[\"pointPosition\"]('x', model, { defaultPos: 'mid' })), _encode__WEBPACK_IMPORTED_MODULE_0__[\"pointPosition\"]('y', model, { defaultPos: 'mid' })), _encode__WEBPACK_IMPORTED_MODULE_0__[\"rectPosition\"](model, 'radius', 'arc')), _encode__WEBPACK_IMPORTED_MODULE_0__[\"rectPosition\"](model, 'theta', 'arc'));\n    }\n};\n//# sourceMappingURL=arc.js.map//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvdmVnYS1saXRlL2J1aWxkL3NyYy9jb21waWxlL21hcmsvYXJjLmpzLmpzIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL3ZlZ2EtbGl0ZS9idWlsZC9zcmMvY29tcGlsZS9tYXJrL2FyYy5qcz8yNDgwIl0sInNvdXJjZXNDb250ZW50IjpbImltcG9ydCAqIGFzIGVuY29kZSBmcm9tICcuL2VuY29kZSc7XG5leHBvcnQgY29uc3QgYXJjID0ge1xuICAgIHZnTWFyazogJ2FyYycsXG4gICAgZW5jb2RlRW50cnk6IChtb2RlbCkgPT4ge1xuICAgICAgICByZXR1cm4gT2JqZWN0LmFzc2lnbihPYmplY3QuYXNzaWduKE9iamVjdC5hc3NpZ24oT2JqZWN0LmFzc2lnbihPYmplY3QuYXNzaWduKHt9LCBlbmNvZGUuYmFzZUVuY29kZUVudHJ5KG1vZGVsLCB7XG4gICAgICAgICAgICBhbGlnbjogJ2lnbm9yZScsXG4gICAgICAgICAgICBiYXNlbGluZTogJ2lnbm9yZScsXG4gICAgICAgICAgICBjb2xvcjogJ2luY2x1ZGUnLFxuICAgICAgICAgICAgc2l6ZTogJ2lnbm9yZScsXG4gICAgICAgICAgICBvcmllbnQ6ICdpZ25vcmUnLFxuICAgICAgICAgICAgdGhldGE6ICdpZ25vcmUnXG4gICAgICAgIH0pKSwgZW5jb2RlLnBvaW50UG9zaXRpb24oJ3gnLCBtb2RlbCwgeyBkZWZhdWx0UG9zOiAnbWlkJyB9KSksIGVuY29kZS5wb2ludFBvc2l0aW9uKCd5JywgbW9kZWwsIHsgZGVmYXVsdFBvczogJ21pZCcgfSkpLCBlbmNvZGUucmVjdFBvc2l0aW9uKG1vZGVsLCAncmFkaXVzJywgJ2FyYycpKSwgZW5jb2RlLnJlY3RQb3NpdGlvbihtb2RlbCwgJ3RoZXRhJywgJ2FyYycpKTtcbiAgICB9XG59O1xuLy8jIHNvdXJjZU1hcHBpbmdVUkw9YXJjLmpzLm1hcCJdLCJtYXBwaW5ncyI6IkFBQUE7QUFBQTtBQUFBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBIiwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///./node_modules/vega-lite/build/src/compile/mark/arc.js\n");

/***/ }),

/***/ "./node_modules/vega-lite/build/src/compile/mark/area.js":
/*!***************************************************************!*\
  !*** ./node_modules/vega-lite/build/src/compile/mark/area.js ***!
  \***************************************************************/
/*! exports provided: area */
/***/ (function(module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"area\", function() { return area; });\n/* harmony import */ var _encode__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./encode */ \"./node_modules/vega-lite/build/src/compile/mark/encode/index.js\");\n\nconst area = {\n    vgMark: 'area',\n    encodeEntry: (model) => {\n        return Object.assign(Object.assign(Object.assign(Object.assign({}, _encode__WEBPACK_IMPORTED_MODULE_0__[\"baseEncodeEntry\"](model, {\n            align: 'ignore',\n            baseline: 'ignore',\n            color: 'include',\n            orient: 'include',\n            size: 'ignore',\n            theta: 'ignore'\n        })), _encode__WEBPACK_IMPORTED_MODULE_0__[\"pointOrRangePosition\"]('x', model, {\n            defaultPos: 'zeroOrMin',\n            defaultPos2: 'zeroOrMin',\n            range: model.markDef.orient === 'horizontal'\n        })), _encode__WEBPACK_IMPORTED_MODULE_0__[\"pointOrRangePosition\"]('y', model, {\n            defaultPos: 'zeroOrMin',\n            defaultPos2: 'zeroOrMin',\n            range: model.markDef.orient === 'vertical'\n        })), _encode__WEBPACK_IMPORTED_MODULE_0__[\"defined\"](model));\n    }\n};\n//# sourceMappingURL=area.js.map//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvdmVnYS1saXRlL2J1aWxkL3NyYy9jb21waWxlL21hcmsvYXJlYS5qcy5qcyIsInNvdXJjZXMiOlsid2VicGFjazovLy8uL25vZGVfbW9kdWxlcy92ZWdhLWxpdGUvYnVpbGQvc3JjL2NvbXBpbGUvbWFyay9hcmVhLmpzPzg4NTEiXSwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0ICogYXMgZW5jb2RlIGZyb20gJy4vZW5jb2RlJztcbmV4cG9ydCBjb25zdCBhcmVhID0ge1xuICAgIHZnTWFyazogJ2FyZWEnLFxuICAgIGVuY29kZUVudHJ5OiAobW9kZWwpID0+IHtcbiAgICAgICAgcmV0dXJuIE9iamVjdC5hc3NpZ24oT2JqZWN0LmFzc2lnbihPYmplY3QuYXNzaWduKE9iamVjdC5hc3NpZ24oe30sIGVuY29kZS5iYXNlRW5jb2RlRW50cnkobW9kZWwsIHtcbiAgICAgICAgICAgIGFsaWduOiAnaWdub3JlJyxcbiAgICAgICAgICAgIGJhc2VsaW5lOiAnaWdub3JlJyxcbiAgICAgICAgICAgIGNvbG9yOiAnaW5jbHVkZScsXG4gICAgICAgICAgICBvcmllbnQ6ICdpbmNsdWRlJyxcbiAgICAgICAgICAgIHNpemU6ICdpZ25vcmUnLFxuICAgICAgICAgICAgdGhldGE6ICdpZ25vcmUnXG4gICAgICAgIH0pKSwgZW5jb2RlLnBvaW50T3JSYW5nZVBvc2l0aW9uKCd4JywgbW9kZWwsIHtcbiAgICAgICAgICAgIGRlZmF1bHRQb3M6ICd6ZXJvT3JNaW4nLFxuICAgICAgICAgICAgZGVmYXVsdFBvczI6ICd6ZXJvT3JNaW4nLFxuICAgICAgICAgICAgcmFuZ2U6IG1vZGVsLm1hcmtEZWYub3JpZW50ID09PSAnaG9yaXpvbnRhbCdcbiAgICAgICAgfSkpLCBlbmNvZGUucG9pbnRPclJhbmdlUG9zaXRpb24oJ3knLCBtb2RlbCwge1xuICAgICAgICAgICAgZGVmYXVsdFBvczogJ3plcm9Pck1pbicsXG4gICAgICAgICAgICBkZWZhdWx0UG9zMjogJ3plcm9Pck1pbicsXG4gICAgICAgICAgICByYW5nZTogbW9kZWwubWFya0RlZi5vcmllbnQgPT09ICd2ZXJ0aWNhbCdcbiAgICAgICAgfSkpLCBlbmNvZGUuZGVmaW5lZChtb2RlbCkpO1xuICAgIH1cbn07XG4vLyMgc291cmNlTWFwcGluZ1VSTD1hcmVhLmpzLm1hcCJdLCJtYXBwaW5ncyI6IkFBQUE7QUFBQTtBQUFBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSIsInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///./node_modules/vega-lite/build/src/compile/mark/area.js\n");

/***/ }),

/***/ "./node_modules/vega-lite/build/src/compile/mark/bar.js":
/*!**************************************************************!*\
  !*** ./node_modules/vega-lite/build/src/compile/mark/bar.js ***!
  \**************************************************************/
/*! exports provided: bar */
/***/ (function(module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"bar\", function() { return bar; });\n/* harmony import */ var _encode__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./encode */ \"./node_modules/vega-lite/build/src/compile/mark/encode/index.js\");\n\nconst bar = {\n    vgMark: 'rect',\n    encodeEntry: (model) => {\n        return Object.assign(Object.assign(Object.assign({}, _encode__WEBPACK_IMPORTED_MODULE_0__[\"baseEncodeEntry\"](model, {\n            align: 'ignore',\n            baseline: 'ignore',\n            color: 'include',\n            orient: 'ignore',\n            size: 'ignore',\n            theta: 'ignore'\n        })), _encode__WEBPACK_IMPORTED_MODULE_0__[\"rectPosition\"](model, 'x', 'bar')), _encode__WEBPACK_IMPORTED_MODULE_0__[\"rectPosition\"](model, 'y', 'bar'));\n    }\n};\n//# sourceMappingURL=bar.js.map//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvdmVnYS1saXRlL2J1aWxkL3NyYy9jb21waWxlL21hcmsvYmFyLmpzLmpzIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL3ZlZ2EtbGl0ZS9idWlsZC9zcmMvY29tcGlsZS9tYXJrL2Jhci5qcz80M2I4Il0sInNvdXJjZXNDb250ZW50IjpbImltcG9ydCAqIGFzIGVuY29kZSBmcm9tICcuL2VuY29kZSc7XG5leHBvcnQgY29uc3QgYmFyID0ge1xuICAgIHZnTWFyazogJ3JlY3QnLFxuICAgIGVuY29kZUVudHJ5OiAobW9kZWwpID0+IHtcbiAgICAgICAgcmV0dXJuIE9iamVjdC5hc3NpZ24oT2JqZWN0LmFzc2lnbihPYmplY3QuYXNzaWduKHt9LCBlbmNvZGUuYmFzZUVuY29kZUVudHJ5KG1vZGVsLCB7XG4gICAgICAgICAgICBhbGlnbjogJ2lnbm9yZScsXG4gICAgICAgICAgICBiYXNlbGluZTogJ2lnbm9yZScsXG4gICAgICAgICAgICBjb2xvcjogJ2luY2x1ZGUnLFxuICAgICAgICAgICAgb3JpZW50OiAnaWdub3JlJyxcbiAgICAgICAgICAgIHNpemU6ICdpZ25vcmUnLFxuICAgICAgICAgICAgdGhldGE6ICdpZ25vcmUnXG4gICAgICAgIH0pKSwgZW5jb2RlLnJlY3RQb3NpdGlvbihtb2RlbCwgJ3gnLCAnYmFyJykpLCBlbmNvZGUucmVjdFBvc2l0aW9uKG1vZGVsLCAneScsICdiYXInKSk7XG4gICAgfVxufTtcbi8vIyBzb3VyY2VNYXBwaW5nVVJMPWJhci5qcy5tYXAiXSwibWFwcGluZ3MiOiJBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSIsInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///./node_modules/vega-lite/build/src/compile/mark/bar.js\n");

/***/ }),

/***/ "./node_modules/vega-lite/build/src/compile/mark/encode/aria.js":
/*!**********************************************************************!*\
  !*** ./node_modules/vega-lite/build/src/compile/mark/encode/aria.js ***!
  \**********************************************************************/
/*! exports provided: aria, description */
/***/ (function(module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"aria\", function() { return aria; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"description\", function() { return description; });\n/* harmony import */ var _util__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../../../util */ \"./node_modules/vega-lite/build/src/util.js\");\n/* harmony import */ var _common__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../../common */ \"./node_modules/vega-lite/build/src/compile/common.js\");\n/* harmony import */ var _vega_schema__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./../../../vega.schema */ \"./node_modules/vega-lite/build/src/vega.schema.js\");\n/* harmony import */ var _conditional__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ./conditional */ \"./node_modules/vega-lite/build/src/compile/mark/encode/conditional.js\");\n/* harmony import */ var _text__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ./text */ \"./node_modules/vega-lite/build/src/compile/mark/encode/text.js\");\n/* harmony import */ var _tooltip__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! ./tooltip */ \"./node_modules/vega-lite/build/src/compile/mark/encode/tooltip.js\");\n\n\n\n\n\n\nfunction aria(model) {\n    const { markDef, config } = model;\n    const enableAria = Object(_common__WEBPACK_IMPORTED_MODULE_1__[\"getMarkPropOrConfig\"])('aria', markDef, config);\n    // We can ignore other aria properties if ariaHidden is true.\n    if (enableAria === false) {\n        // getMarkGroups sets aria to false already so we don't have to set it in the encode block\n        return {};\n    }\n    return Object.assign(Object.assign(Object.assign({}, (enableAria ? { aria: enableAria } : {})), ariaRoleDescription(model)), description(model));\n}\nfunction ariaRoleDescription(model) {\n    const { mark, markDef, config } = model;\n    if (config.aria === false) {\n        return {};\n    }\n    const ariaRoleDesc = Object(_common__WEBPACK_IMPORTED_MODULE_1__[\"getMarkPropOrConfig\"])('ariaRoleDescription', markDef, config);\n    if (ariaRoleDesc != null) {\n        return { ariaRoleDescription: { value: ariaRoleDesc } };\n    }\n    return mark in _vega_schema__WEBPACK_IMPORTED_MODULE_2__[\"VG_MARK_INDEX\"] ? {} : { ariaRoleDescription: { value: mark } };\n}\nfunction description(model) {\n    const { encoding, markDef, config, stack } = model;\n    const channelDef = encoding.description;\n    if (channelDef) {\n        return Object(_conditional__WEBPACK_IMPORTED_MODULE_3__[\"wrapCondition\"])(model, channelDef, 'description', cDef => Object(_text__WEBPACK_IMPORTED_MODULE_4__[\"textRef\"])(cDef, model.config));\n    }\n    // Use default from mark def or config if defined.\n    // Functions in encode usually just return undefined but since we are defining a default below, we need to check the default here.\n    const descriptionValue = Object(_common__WEBPACK_IMPORTED_MODULE_1__[\"getMarkPropOrConfig\"])('description', markDef, config);\n    if (descriptionValue != null) {\n        return {\n            description: Object(_common__WEBPACK_IMPORTED_MODULE_1__[\"signalOrValueRef\"])(descriptionValue)\n        };\n    }\n    if (config.aria === false) {\n        return {};\n    }\n    const data = Object(_tooltip__WEBPACK_IMPORTED_MODULE_5__[\"tooltipData\"])(encoding, stack, config);\n    if (Object(_util__WEBPACK_IMPORTED_MODULE_0__[\"isEmpty\"])(data)) {\n        return undefined;\n    }\n    return {\n        description: {\n            signal: Object(_util__WEBPACK_IMPORTED_MODULE_0__[\"entries\"])(data)\n                .map(([key, value], index) => `\"${index > 0 ? '; ' : ''}${key}: \" + (${value})`)\n                .join(' + ')\n        }\n    };\n}\n//# sourceMappingURL=aria.js.map//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvdmVnYS1saXRlL2J1aWxkL3NyYy9jb21waWxlL21hcmsvZW5jb2RlL2FyaWEuanMuanMiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvdmVnYS1saXRlL2J1aWxkL3NyYy9jb21waWxlL21hcmsvZW5jb2RlL2FyaWEuanM/NDdjZiJdLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBlbnRyaWVzLCBpc0VtcHR5IH0gZnJvbSAnLi4vLi4vLi4vdXRpbCc7XG5pbXBvcnQgeyBnZXRNYXJrUHJvcE9yQ29uZmlnLCBzaWduYWxPclZhbHVlUmVmIH0gZnJvbSAnLi4vLi4vY29tbW9uJztcbmltcG9ydCB7IFZHX01BUktfSU5ERVggfSBmcm9tICcuLy4uLy4uLy4uL3ZlZ2Euc2NoZW1hJztcbmltcG9ydCB7IHdyYXBDb25kaXRpb24gfSBmcm9tICcuL2NvbmRpdGlvbmFsJztcbmltcG9ydCB7IHRleHRSZWYgfSBmcm9tICcuL3RleHQnO1xuaW1wb3J0IHsgdG9vbHRpcERhdGEgfSBmcm9tICcuL3Rvb2x0aXAnO1xuZXhwb3J0IGZ1bmN0aW9uIGFyaWEobW9kZWwpIHtcbiAgICBjb25zdCB7IG1hcmtEZWYsIGNvbmZpZyB9ID0gbW9kZWw7XG4gICAgY29uc3QgZW5hYmxlQXJpYSA9IGdldE1hcmtQcm9wT3JDb25maWcoJ2FyaWEnLCBtYXJrRGVmLCBjb25maWcpO1xuICAgIC8vIFdlIGNhbiBpZ25vcmUgb3RoZXIgYXJpYSBwcm9wZXJ0aWVzIGlmIGFyaWFIaWRkZW4gaXMgdHJ1ZS5cbiAgICBpZiAoZW5hYmxlQXJpYSA9PT0gZmFsc2UpIHtcbiAgICAgICAgLy8gZ2V0TWFya0dyb3VwcyBzZXRzIGFyaWEgdG8gZmFsc2UgYWxyZWFkeSBzbyB3ZSBkb24ndCBoYXZlIHRvIHNldCBpdCBpbiB0aGUgZW5jb2RlIGJsb2NrXG4gICAgICAgIHJldHVybiB7fTtcbiAgICB9XG4gICAgcmV0dXJuIE9iamVjdC5hc3NpZ24oT2JqZWN0LmFzc2lnbihPYmplY3QuYXNzaWduKHt9LCAoZW5hYmxlQXJpYSA/IHsgYXJpYTogZW5hYmxlQXJpYSB9IDoge30pKSwgYXJpYVJvbGVEZXNjcmlwdGlvbihtb2RlbCkpLCBkZXNjcmlwdGlvbihtb2RlbCkpO1xufVxuZnVuY3Rpb24gYXJpYVJvbGVEZXNjcmlwdGlvbihtb2RlbCkge1xuICAgIGNvbnN0IHsgbWFyaywgbWFya0RlZiwgY29uZmlnIH0gPSBtb2RlbDtcbiAgICBpZiAoY29uZmlnLmFyaWEgPT09IGZhbHNlKSB7XG4gICAgICAgIHJldHVybiB7fTtcbiAgICB9XG4gICAgY29uc3QgYXJpYVJvbGVEZXNjID0gZ2V0TWFya1Byb3BPckNvbmZpZygnYXJpYVJvbGVEZXNjcmlwdGlvbicsIG1hcmtEZWYsIGNvbmZpZyk7XG4gICAgaWYgKGFyaWFSb2xlRGVzYyAhPSBudWxsKSB7XG4gICAgICAgIHJldHVybiB7IGFyaWFSb2xlRGVzY3JpcHRpb246IHsgdmFsdWU6IGFyaWFSb2xlRGVzYyB9IH07XG4gICAgfVxuICAgIHJldHVybiBtYXJrIGluIFZHX01BUktfSU5ERVggPyB7fSA6IHsgYXJpYVJvbGVEZXNjcmlwdGlvbjogeyB2YWx1ZTogbWFyayB9IH07XG59XG5leHBvcnQgZnVuY3Rpb24gZGVzY3JpcHRpb24obW9kZWwpIHtcbiAgICBjb25zdCB7IGVuY29kaW5nLCBtYXJrRGVmLCBjb25maWcsIHN0YWNrIH0gPSBtb2RlbDtcbiAgICBjb25zdCBjaGFubmVsRGVmID0gZW5jb2RpbmcuZGVzY3JpcHRpb247XG4gICAgaWYgKGNoYW5uZWxEZWYpIHtcbiAgICAgICAgcmV0dXJuIHdyYXBDb25kaXRpb24obW9kZWwsIGNoYW5uZWxEZWYsICdkZXNjcmlwdGlvbicsIGNEZWYgPT4gdGV4dFJlZihjRGVmLCBtb2RlbC5jb25maWcpKTtcbiAgICB9XG4gICAgLy8gVXNlIGRlZmF1bHQgZnJvbSBtYXJrIGRlZiBvciBjb25maWcgaWYgZGVmaW5lZC5cbiAgICAvLyBGdW5jdGlvbnMgaW4gZW5jb2RlIHVzdWFsbHkganVzdCByZXR1cm4gdW5kZWZpbmVkIGJ1dCBzaW5jZSB3ZSBhcmUgZGVmaW5pbmcgYSBkZWZhdWx0IGJlbG93LCB3ZSBuZWVkIHRvIGNoZWNrIHRoZSBkZWZhdWx0IGhlcmUuXG4gICAgY29uc3QgZGVzY3JpcHRpb25WYWx1ZSA9IGdldE1hcmtQcm9wT3JDb25maWcoJ2Rlc2NyaXB0aW9uJywgbWFya0RlZiwgY29uZmlnKTtcbiAgICBpZiAoZGVzY3JpcHRpb25WYWx1ZSAhPSBudWxsKSB7XG4gICAgICAgIHJldHVybiB7XG4gICAgICAgICAgICBkZXNjcmlwdGlvbjogc2lnbmFsT3JWYWx1ZVJlZihkZXNjcmlwdGlvblZhbHVlKVxuICAgICAgICB9O1xuICAgIH1cbiAgICBpZiAoY29uZmlnLmFyaWEgPT09IGZhbHNlKSB7XG4gICAgICAgIHJldHVybiB7fTtcbiAgICB9XG4gICAgY29uc3QgZGF0YSA9IHRvb2x0aXBEYXRhKGVuY29kaW5nLCBzdGFjaywgY29uZmlnKTtcbiAgICBpZiAoaXNFbXB0eShkYXRhKSkge1xuICAgICAgICByZXR1cm4gdW5kZWZpbmVkO1xuICAgIH1cbiAgICByZXR1cm4ge1xuICAgICAgICBkZXNjcmlwdGlvbjoge1xuICAgICAgICAgICAgc2lnbmFsOiBlbnRyaWVzKGRhdGEpXG4gICAgICAgICAgICAgICAgLm1hcCgoW2tleSwgdmFsdWVdLCBpbmRleCkgPT4gYFwiJHtpbmRleCA+IDAgPyAnOyAnIDogJyd9JHtrZXl9OiBcIiArICgke3ZhbHVlfSlgKVxuICAgICAgICAgICAgICAgIC5qb2luKCcgKyAnKVxuICAgICAgICB9XG4gICAgfTtcbn1cbi8vIyBzb3VyY2VNYXBwaW5nVVJMPWFyaWEuanMubWFwIl0sIm1hcHBpbmdzIjoiQUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EiLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///./node_modules/vega-lite/build/src/compile/mark/encode/aria.js\n");

/***/ }),

/***/ "./node_modules/vega-lite/build/src/compile/mark/encode/base.js":
/*!**********************************************************************!*\
  !*** ./node_modules/vega-lite/build/src/compile/mark/encode/base.js ***!
  \**********************************************************************/
/*! exports provided: color, wrapCondition, nonPosition, pointPosition, pointOrRangePosition, rangePosition, rectPosition, text, tooltip, baseEncodeEntry */
/***/ (function(module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"baseEncodeEntry\", function() { return baseEncodeEntry; });\n/* harmony import */ var vega_util__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! vega-util */ \"./node_modules/vega-lite/node_modules/vega-util/build/vega-util.module.js\");\n/* harmony import */ var _channel__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../../../channel */ \"./node_modules/vega-lite/build/src/channel.js\");\n/* harmony import */ var _mark__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ../../../mark */ \"./node_modules/vega-lite/build/src/mark.js\");\n/* harmony import */ var _scale__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ../../../scale */ \"./node_modules/vega-lite/build/src/scale.js\");\n/* harmony import */ var _util__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ../../../util */ \"./node_modules/vega-lite/build/src/util.js\");\n/* harmony import */ var _vega_schema__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! ../../../vega.schema */ \"./node_modules/vega-lite/build/src/vega.schema.js\");\n/* harmony import */ var _common__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! ../../common */ \"./node_modules/vega-lite/build/src/compile/common.js\");\n/* harmony import */ var _aria__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! ./aria */ \"./node_modules/vega-lite/build/src/compile/mark/encode/aria.js\");\n/* harmony import */ var _color__WEBPACK_IMPORTED_MODULE_8__ = __webpack_require__(/*! ./color */ \"./node_modules/vega-lite/build/src/compile/mark/encode/color.js\");\n/* harmony import */ var _nonposition__WEBPACK_IMPORTED_MODULE_9__ = __webpack_require__(/*! ./nonposition */ \"./node_modules/vega-lite/build/src/compile/mark/encode/nonposition.js\");\n/* harmony import */ var _text__WEBPACK_IMPORTED_MODULE_10__ = __webpack_require__(/*! ./text */ \"./node_modules/vega-lite/build/src/compile/mark/encode/text.js\");\n/* harmony import */ var _tooltip__WEBPACK_IMPORTED_MODULE_11__ = __webpack_require__(/*! ./tooltip */ \"./node_modules/vega-lite/build/src/compile/mark/encode/tooltip.js\");\n/* harmony import */ var _valueref__WEBPACK_IMPORTED_MODULE_12__ = __webpack_require__(/*! ./valueref */ \"./node_modules/vega-lite/build/src/compile/mark/encode/valueref.js\");\n/* harmony import */ var _zindex__WEBPACK_IMPORTED_MODULE_13__ = __webpack_require__(/*! ./zindex */ \"./node_modules/vega-lite/build/src/compile/mark/encode/zindex.js\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"color\", function() { return _color__WEBPACK_IMPORTED_MODULE_8__[\"color\"]; });\n\n/* harmony import */ var _conditional__WEBPACK_IMPORTED_MODULE_14__ = __webpack_require__(/*! ./conditional */ \"./node_modules/vega-lite/build/src/compile/mark/encode/conditional.js\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"wrapCondition\", function() { return _conditional__WEBPACK_IMPORTED_MODULE_14__[\"wrapCondition\"]; });\n\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"nonPosition\", function() { return _nonposition__WEBPACK_IMPORTED_MODULE_9__[\"nonPosition\"]; });\n\n/* harmony import */ var _position_point__WEBPACK_IMPORTED_MODULE_15__ = __webpack_require__(/*! ./position-point */ \"./node_modules/vega-lite/build/src/compile/mark/encode/position-point.js\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"pointPosition\", function() { return _position_point__WEBPACK_IMPORTED_MODULE_15__[\"pointPosition\"]; });\n\n/* harmony import */ var _position_range__WEBPACK_IMPORTED_MODULE_16__ = __webpack_require__(/*! ./position-range */ \"./node_modules/vega-lite/build/src/compile/mark/encode/position-range.js\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"pointOrRangePosition\", function() { return _position_range__WEBPACK_IMPORTED_MODULE_16__[\"pointOrRangePosition\"]; });\n\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"rangePosition\", function() { return _position_range__WEBPACK_IMPORTED_MODULE_16__[\"rangePosition\"]; });\n\n/* harmony import */ var _position_rect__WEBPACK_IMPORTED_MODULE_17__ = __webpack_require__(/*! ./position-rect */ \"./node_modules/vega-lite/build/src/compile/mark/encode/position-rect.js\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"rectPosition\", function() { return _position_rect__WEBPACK_IMPORTED_MODULE_17__[\"rectPosition\"]; });\n\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"text\", function() { return _text__WEBPACK_IMPORTED_MODULE_10__[\"text\"]; });\n\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"tooltip\", function() { return _tooltip__WEBPACK_IMPORTED_MODULE_11__[\"tooltip\"]; });\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\nconst ALWAYS_IGNORE = new Set(['aria']);\nfunction baseEncodeEntry(model, ignore) {\n    const { fill = undefined, stroke = undefined } = ignore.color === 'include' ? Object(_color__WEBPACK_IMPORTED_MODULE_8__[\"color\"])(model) : {};\n    return Object.assign(Object.assign(Object.assign(Object.assign(Object.assign(Object.assign(Object.assign(Object.assign(Object.assign(Object.assign(Object.assign(Object.assign({}, markDefProperties(model.markDef, ignore)), wrapAllFieldsInvalid(model, 'fill', fill)), wrapAllFieldsInvalid(model, 'stroke', stroke)), Object(_nonposition__WEBPACK_IMPORTED_MODULE_9__[\"nonPosition\"])('opacity', model)), Object(_nonposition__WEBPACK_IMPORTED_MODULE_9__[\"nonPosition\"])('fillOpacity', model)), Object(_nonposition__WEBPACK_IMPORTED_MODULE_9__[\"nonPosition\"])('strokeOpacity', model)), Object(_nonposition__WEBPACK_IMPORTED_MODULE_9__[\"nonPosition\"])('strokeWidth', model)), Object(_nonposition__WEBPACK_IMPORTED_MODULE_9__[\"nonPosition\"])('strokeDash', model)), Object(_zindex__WEBPACK_IMPORTED_MODULE_13__[\"zindex\"])(model)), Object(_tooltip__WEBPACK_IMPORTED_MODULE_11__[\"tooltip\"])(model)), Object(_text__WEBPACK_IMPORTED_MODULE_10__[\"text\"])(model, 'href')), Object(_aria__WEBPACK_IMPORTED_MODULE_7__[\"aria\"])(model));\n}\n// TODO: mark VgValueRef[] as readonly after https://github.com/vega/vega/pull/1987\nfunction wrapAllFieldsInvalid(model, channel, valueRef) {\n    const { config, mark, markDef } = model;\n    const invalid = Object(_common__WEBPACK_IMPORTED_MODULE_6__[\"getMarkPropOrConfig\"])('invalid', markDef, config);\n    if (invalid === 'hide' && valueRef && !Object(_mark__WEBPACK_IMPORTED_MODULE_2__[\"isPathMark\"])(mark)) {\n        // For non-path marks, we have to exclude invalid values (null and NaN) for scales with continuous domains.\n        // For path marks, we will use \"defined\" property and skip these values instead.\n        const test = allFieldsInvalidPredicate(model, { invalid: true, channels: _channel__WEBPACK_IMPORTED_MODULE_1__[\"SCALE_CHANNELS\"] });\n        if (test) {\n            return {\n                [channel]: [\n                    // prepend the invalid case\n                    // TODO: support custom value\n                    { test, value: null },\n                    ...Object(vega_util__WEBPACK_IMPORTED_MODULE_0__[\"array\"])(valueRef)\n                ]\n            };\n        }\n    }\n    return valueRef ? { [channel]: valueRef } : {};\n}\nfunction markDefProperties(mark, ignore) {\n    return _vega_schema__WEBPACK_IMPORTED_MODULE_5__[\"VG_MARK_CONFIGS\"].reduce((m, prop) => {\n        if (!ALWAYS_IGNORE.has(prop) && mark[prop] !== undefined && ignore[prop] !== 'ignore') {\n            m[prop] = Object(_common__WEBPACK_IMPORTED_MODULE_6__[\"signalOrValueRef\"])(mark[prop]);\n        }\n        return m;\n    }, {});\n}\nfunction allFieldsInvalidPredicate(model, { invalid = false, channels }) {\n    const filterIndex = channels.reduce((aggregator, channel) => {\n        const scaleComponent = model.getScaleComponent(channel);\n        if (scaleComponent) {\n            const scaleType = scaleComponent.get('type');\n            const field = model.vgField(channel, { expr: 'datum' });\n            // While discrete domain scales can handle invalid values, continuous scales can't.\n            if (field && Object(_scale__WEBPACK_IMPORTED_MODULE_3__[\"hasContinuousDomain\"])(scaleType)) {\n                aggregator[field] = true;\n            }\n        }\n        return aggregator;\n    }, {});\n    const fields = Object(_util__WEBPACK_IMPORTED_MODULE_4__[\"keys\"])(filterIndex);\n    if (fields.length > 0) {\n        const op = invalid ? '||' : '&&';\n        return fields.map(field => Object(_valueref__WEBPACK_IMPORTED_MODULE_12__[\"fieldInvalidPredicate\"])(field, invalid)).join(` ${op} `);\n    }\n    return undefined;\n}\n//# sourceMappingURL=base.js.map//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,[encoded data, 6352 characters]\n//# sourceURL=webpack-internal:///./node_modules/vega-lite/build/src/compile/mark/encode/base.js\n");

/***/ }),

/***/ "./node_modules/vega-lite/build/src/compile/mark/encode/color.js":
/*!***********************************************************************!*\
  !*** ./node_modules/vega-lite/build/src/compile/mark/encode/color.js ***!
  \***********************************************************************/
/*! exports provided: color */
/***/ (function(module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"color\", function() { return color; });\n/* harmony import */ var _log__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../../../log */ \"./node_modules/vega-lite/build/src/log/index.js\");\n/* harmony import */ var _util__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../../../util */ \"./node_modules/vega-lite/build/src/util.js\");\n/* harmony import */ var _common__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ../../common */ \"./node_modules/vega-lite/build/src/compile/common.js\");\n/* harmony import */ var _nonposition__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ./nonposition */ \"./node_modules/vega-lite/build/src/compile/mark/encode/nonposition.js\");\n\n\n\n\nfunction color(model, opt = { filled: undefined }) {\n    var _a, _b, _c, _d;\n    const { markDef, encoding, config } = model;\n    const { type: markType } = markDef;\n    // Allow filled to be overridden (for trail's \"filled\")\n    const filled = (_a = opt.filled) !== null && _a !== void 0 ? _a : Object(_common__WEBPACK_IMPORTED_MODULE_2__[\"getMarkPropOrConfig\"])('filled', markDef, config);\n    const transparentIfNeeded = Object(_util__WEBPACK_IMPORTED_MODULE_1__[\"contains\"])(['bar', 'point', 'circle', 'square', 'geoshape'], markType)\n        ? 'transparent'\n        : undefined;\n    const defaultFill = (_c = (_b = Object(_common__WEBPACK_IMPORTED_MODULE_2__[\"getMarkPropOrConfig\"])(filled === true ? 'color' : undefined, markDef, config, { vgChannel: 'fill' })) !== null && _b !== void 0 ? _b : \n    // need to add this manually as getMarkConfig normally drops config.mark[channel] if vgChannel is specified\n    config.mark[filled === true && 'color']) !== null && _c !== void 0 ? _c : \n    // If there is no fill, always fill symbols, bar, geoshape\n    // with transparent fills https://github.com/vega/vega-lite/issues/1316\n    transparentIfNeeded;\n    const defaultStroke = (_d = Object(_common__WEBPACK_IMPORTED_MODULE_2__[\"getMarkPropOrConfig\"])(filled === false ? 'color' : undefined, markDef, config, { vgChannel: 'stroke' })) !== null && _d !== void 0 ? _d : \n    // need to add this manually as getMarkConfig normally drops config.mark[channel] if vgChannel is specified\n    config.mark[filled === false && 'color'];\n    const colorVgChannel = filled ? 'fill' : 'stroke';\n    const fillStrokeMarkDefAndConfig = Object.assign(Object.assign({}, (defaultFill ? { fill: Object(_common__WEBPACK_IMPORTED_MODULE_2__[\"signalOrValueRef\"])(defaultFill) } : {})), (defaultStroke ? { stroke: Object(_common__WEBPACK_IMPORTED_MODULE_2__[\"signalOrValueRef\"])(defaultStroke) } : {}));\n    if (markDef.color && (filled ? markDef.fill : markDef.stroke)) {\n        _log__WEBPACK_IMPORTED_MODULE_0__[\"warn\"](_log__WEBPACK_IMPORTED_MODULE_0__[\"message\"].droppingColor('property', { fill: 'fill' in markDef, stroke: 'stroke' in markDef }));\n    }\n    return Object.assign(Object.assign(Object.assign(Object.assign({}, fillStrokeMarkDefAndConfig), Object(_nonposition__WEBPACK_IMPORTED_MODULE_3__[\"nonPosition\"])('color', model, {\n        vgChannel: colorVgChannel,\n        defaultValue: filled ? defaultFill : defaultStroke\n    })), Object(_nonposition__WEBPACK_IMPORTED_MODULE_3__[\"nonPosition\"])('fill', model, {\n        // if there is encoding.fill, include default fill just in case we have conditional-only fill encoding\n        defaultValue: encoding.fill ? defaultFill : undefined\n    })), Object(_nonposition__WEBPACK_IMPORTED_MODULE_3__[\"nonPosition\"])('stroke', model, {\n        // if there is encoding.stroke, include default fill just in case we have conditional-only stroke encoding\n        defaultValue: encoding.stroke ? defaultStroke : undefined\n    }));\n}\n//# sourceMappingURL=color.js.map//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,[encoded data, 4256 characters]\n//# sourceURL=webpack-internal:///./node_modules/vega-lite/build/src/compile/mark/encode/color.js\n");

/***/ }),

/***/ "./node_modules/vega-lite/build/src/compile/mark/encode/conditional.js":
/*!*****************************************************************************!*\
  !*** ./node_modules/vega-lite/build/src/compile/mark/encode/conditional.js ***!
  \*****************************************************************************/
/*! exports provided: wrapCondition */
/***/ (function(module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"wrapCondition\", function() { return wrapCondition; });\n/* harmony import */ var vega_util__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! vega-util */ \"./node_modules/vega-lite/node_modules/vega-util/build/vega-util.module.js\");\n/* harmony import */ var _channeldef__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../../../channeldef */ \"./node_modules/vega-lite/build/src/channeldef.js\");\n/* harmony import */ var _predicate__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ../../predicate */ \"./node_modules/vega-lite/build/src/compile/predicate.js\");\n/* harmony import */ var _selection_parse__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ../../selection/parse */ \"./node_modules/vega-lite/build/src/compile/selection/parse.js\");\n\n\n\n\n/**\n * Return a mixin that includes a Vega production rule for a Vega-Lite conditional channel definition\n * or a simple mixin if channel def has no condition.\n */\nfunction wrapCondition(model, channelDef, vgChannel, refFn) {\n    const condition = Object(_channeldef__WEBPACK_IMPORTED_MODULE_1__[\"isConditionalDef\"])(channelDef) && channelDef.condition;\n    const valueRef = refFn(channelDef);\n    if (condition) {\n        const conditions = Object(vega_util__WEBPACK_IMPORTED_MODULE_0__[\"array\"])(condition);\n        const vgConditions = conditions.map(c => {\n            const conditionValueRef = refFn(c);\n            const test = Object(_channeldef__WEBPACK_IMPORTED_MODULE_1__[\"isConditionalSelection\"])(c)\n                ? Object(_selection_parse__WEBPACK_IMPORTED_MODULE_3__[\"parseSelectionPredicate\"])(model, c.selection) // FIXME: remove casting once TS is no longer dumb about it\n                : Object(_predicate__WEBPACK_IMPORTED_MODULE_2__[\"expression\"])(model, c.test); // FIXME: remove casting once TS is no longer dumb about it\n            return Object.assign({ test }, conditionValueRef);\n        });\n        return {\n            [vgChannel]: [...vgConditions, ...(valueRef !== undefined ? [valueRef] : [])]\n        };\n    }\n    else {\n        return valueRef !== undefined ? { [vgChannel]: valueRef } : {};\n    }\n}\n//# sourceMappingURL=conditional.js.map//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvdmVnYS1saXRlL2J1aWxkL3NyYy9jb21waWxlL21hcmsvZW5jb2RlL2NvbmRpdGlvbmFsLmpzLmpzIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL3ZlZ2EtbGl0ZS9idWlsZC9zcmMvY29tcGlsZS9tYXJrL2VuY29kZS9jb25kaXRpb25hbC5qcz8xOTUwIl0sInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IGFycmF5IH0gZnJvbSAndmVnYS11dGlsJztcbmltcG9ydCB7IGlzQ29uZGl0aW9uYWxEZWYsIGlzQ29uZGl0aW9uYWxTZWxlY3Rpb24gfSBmcm9tICcuLi8uLi8uLi9jaGFubmVsZGVmJztcbmltcG9ydCB7IGV4cHJlc3Npb24gfSBmcm9tICcuLi8uLi9wcmVkaWNhdGUnO1xuaW1wb3J0IHsgcGFyc2VTZWxlY3Rpb25QcmVkaWNhdGUgfSBmcm9tICcuLi8uLi9zZWxlY3Rpb24vcGFyc2UnO1xuLyoqXG4gKiBSZXR1cm4gYSBtaXhpbiB0aGF0IGluY2x1ZGVzIGEgVmVnYSBwcm9kdWN0aW9uIHJ1bGUgZm9yIGEgVmVnYS1MaXRlIGNvbmRpdGlvbmFsIGNoYW5uZWwgZGVmaW5pdGlvblxuICogb3IgYSBzaW1wbGUgbWl4aW4gaWYgY2hhbm5lbCBkZWYgaGFzIG5vIGNvbmRpdGlvbi5cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIHdyYXBDb25kaXRpb24obW9kZWwsIGNoYW5uZWxEZWYsIHZnQ2hhbm5lbCwgcmVmRm4pIHtcbiAgICBjb25zdCBjb25kaXRpb24gPSBpc0NvbmRpdGlvbmFsRGVmKGNoYW5uZWxEZWYpICYmIGNoYW5uZWxEZWYuY29uZGl0aW9uO1xuICAgIGNvbnN0IHZhbHVlUmVmID0gcmVmRm4oY2hhbm5lbERlZik7XG4gICAgaWYgKGNvbmRpdGlvbikge1xuICAgICAgICBjb25zdCBjb25kaXRpb25zID0gYXJyYXkoY29uZGl0aW9uKTtcbiAgICAgICAgY29uc3QgdmdDb25kaXRpb25zID0gY29uZGl0aW9ucy5tYXAoYyA9PiB7XG4gICAgICAgICAgICBjb25zdCBjb25kaXRpb25WYWx1ZVJlZiA9IHJlZkZuKGMpO1xuICAgICAgICAgICAgY29uc3QgdGVzdCA9IGlzQ29uZGl0aW9uYWxTZWxlY3Rpb24oYylcbiAgICAgICAgICAgICAgICA/IHBhcnNlU2VsZWN0aW9uUHJlZGljYXRlKG1vZGVsLCBjLnNlbGVjdGlvbikgLy8gRklYTUU6IHJlbW92ZSBjYXN0aW5nIG9uY2UgVFMgaXMgbm8gbG9uZ2VyIGR1bWIgYWJvdXQgaXRcbiAgICAgICAgICAgICAgICA6IGV4cHJlc3Npb24obW9kZWwsIGMudGVzdCk7IC8vIEZJWE1FOiByZW1vdmUgY2FzdGluZyBvbmNlIFRTIGlzIG5vIGxvbmdlciBkdW1iIGFib3V0IGl0XG4gICAgICAgICAgICByZXR1cm4gT2JqZWN0LmFzc2lnbih7IHRlc3QgfSwgY29uZGl0aW9uVmFsdWVSZWYpO1xuICAgICAgICB9KTtcbiAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICAgIFt2Z0NoYW5uZWxdOiBbLi4udmdDb25kaXRpb25zLCAuLi4odmFsdWVSZWYgIT09IHVuZGVmaW5lZCA/IFt2YWx1ZVJlZl0gOiBbXSldXG4gICAgICAgIH07XG4gICAgfVxuICAgIGVsc2Uge1xuICAgICAgICByZXR1cm4gdmFsdWVSZWYgIT09IHVuZGVmaW5lZCA/IHsgW3ZnQ2hhbm5lbF06IHZhbHVlUmVmIH0gOiB7fTtcbiAgICB9XG59XG4vLyMgc291cmNlTWFwcGluZ1VSTD1jb25kaXRpb25hbC5qcy5tYXAiXSwibWFwcGluZ3MiOiJBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EiLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///./node_modules/vega-lite/build/src/compile/mark/encode/conditional.js\n");

/***/ }),

/***/ "./node_modules/vega-lite/build/src/compile/mark/encode/defined.js":
/*!*************************************************************************!*\
  !*** ./node_modules/vega-lite/build/src/compile/mark/encode/defined.js ***!
  \*************************************************************************/
/*! exports provided: defined, valueIfDefined */
/***/ (function(module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"defined\", function() { return defined; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"valueIfDefined\", function() { return valueIfDefined; });\n/* harmony import */ var _channel__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../../../channel */ \"./node_modules/vega-lite/build/src/channel.js\");\n/* harmony import */ var _scale__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../../../scale */ \"./node_modules/vega-lite/build/src/scale.js\");\n/* harmony import */ var _util__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ../../../util */ \"./node_modules/vega-lite/build/src/util.js\");\n/* harmony import */ var _common__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ../../common */ \"./node_modules/vega-lite/build/src/compile/common.js\");\n/* harmony import */ var _valueref__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ./valueref */ \"./node_modules/vega-lite/build/src/compile/mark/encode/valueref.js\");\n\n\n\n\n\nfunction defined(model) {\n    const { config, markDef } = model;\n    const invalid = Object(_common__WEBPACK_IMPORTED_MODULE_3__[\"getMarkPropOrConfig\"])('invalid', markDef, config);\n    if (invalid) {\n        const signal = allFieldsInvalidPredicate(model, { channels: _channel__WEBPACK_IMPORTED_MODULE_0__[\"POSITION_SCALE_CHANNELS\"] });\n        if (signal) {\n            return { defined: { signal } };\n        }\n    }\n    return {};\n}\nfunction allFieldsInvalidPredicate(model, { invalid = false, channels }) {\n    const filterIndex = channels.reduce((aggregator, channel) => {\n        const scaleComponent = model.getScaleComponent(channel);\n        if (scaleComponent) {\n            const scaleType = scaleComponent.get('type');\n            const field = model.vgField(channel, { expr: 'datum' });\n            // While discrete domain scales can handle invalid values, continuous scales can't.\n            if (field && Object(_scale__WEBPACK_IMPORTED_MODULE_1__[\"hasContinuousDomain\"])(scaleType)) {\n                aggregator[field] = true;\n            }\n        }\n        return aggregator;\n    }, {});\n    const fields = Object(_util__WEBPACK_IMPORTED_MODULE_2__[\"keys\"])(filterIndex);\n    if (fields.length > 0) {\n        const op = invalid ? '||' : '&&';\n        return fields.map(field => Object(_valueref__WEBPACK_IMPORTED_MODULE_4__[\"fieldInvalidPredicate\"])(field, invalid)).join(` ${op} `);\n    }\n    return undefined;\n}\nfunction valueIfDefined(prop, value) {\n    if (value !== undefined) {\n        return { [prop]: Object(_common__WEBPACK_IMPORTED_MODULE_3__[\"signalOrValueRef\"])(value) };\n    }\n    return undefined;\n}\n//# sourceMappingURL=defined.js.map//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvdmVnYS1saXRlL2J1aWxkL3NyYy9jb21waWxlL21hcmsvZW5jb2RlL2RlZmluZWQuanMuanMiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvdmVnYS1saXRlL2J1aWxkL3NyYy9jb21waWxlL21hcmsvZW5jb2RlL2RlZmluZWQuanM/YzZmNiJdLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBQT1NJVElPTl9TQ0FMRV9DSEFOTkVMUyB9IGZyb20gJy4uLy4uLy4uL2NoYW5uZWwnO1xuaW1wb3J0IHsgaGFzQ29udGludW91c0RvbWFpbiB9IGZyb20gJy4uLy4uLy4uL3NjYWxlJztcbmltcG9ydCB7IGtleXMgfSBmcm9tICcuLi8uLi8uLi91dGlsJztcbmltcG9ydCB7IGdldE1hcmtQcm9wT3JDb25maWcsIHNpZ25hbE9yVmFsdWVSZWYgfSBmcm9tICcuLi8uLi9jb21tb24nO1xuaW1wb3J0IHsgZmllbGRJbnZhbGlkUHJlZGljYXRlIH0gZnJvbSAnLi92YWx1ZXJlZic7XG5leHBvcnQgZnVuY3Rpb24gZGVmaW5lZChtb2RlbCkge1xuICAgIGNvbnN0IHsgY29uZmlnLCBtYXJrRGVmIH0gPSBtb2RlbDtcbiAgICBjb25zdCBpbnZhbGlkID0gZ2V0TWFya1Byb3BPckNvbmZpZygnaW52YWxpZCcsIG1hcmtEZWYsIGNvbmZpZyk7XG4gICAgaWYgKGludmFsaWQpIHtcbiAgICAgICAgY29uc3Qgc2lnbmFsID0gYWxsRmllbGRzSW52YWxpZFByZWRpY2F0ZShtb2RlbCwgeyBjaGFubmVsczogUE9TSVRJT05fU0NBTEVfQ0hBTk5FTFMgfSk7XG4gICAgICAgIGlmIChzaWduYWwpIHtcbiAgICAgICAgICAgIHJldHVybiB7IGRlZmluZWQ6IHsgc2lnbmFsIH0gfTtcbiAgICAgICAgfVxuICAgIH1cbiAgICByZXR1cm4ge307XG59XG5mdW5jdGlvbiBhbGxGaWVsZHNJbnZhbGlkUHJlZGljYXRlKG1vZGVsLCB7IGludmFsaWQgPSBmYWxzZSwgY2hhbm5lbHMgfSkge1xuICAgIGNvbnN0IGZpbHRlckluZGV4ID0gY2hhbm5lbHMucmVkdWNlKChhZ2dyZWdhdG9yLCBjaGFubmVsKSA9PiB7XG4gICAgICAgIGNvbnN0IHNjYWxlQ29tcG9uZW50ID0gbW9kZWwuZ2V0U2NhbGVDb21wb25lbnQoY2hhbm5lbCk7XG4gICAgICAgIGlmIChzY2FsZUNvbXBvbmVudCkge1xuICAgICAgICAgICAgY29uc3Qgc2NhbGVUeXBlID0gc2NhbGVDb21wb25lbnQuZ2V0KCd0eXBlJyk7XG4gICAgICAgICAgICBjb25zdCBmaWVsZCA9IG1vZGVsLnZnRmllbGQoY2hhbm5lbCwgeyBleHByOiAnZGF0dW0nIH0pO1xuICAgICAgICAgICAgLy8gV2hpbGUgZGlzY3JldGUgZG9tYWluIHNjYWxlcyBjYW4gaGFuZGxlIGludmFsaWQgdmFsdWVzLCBjb250aW51b3VzIHNjYWxlcyBjYW4ndC5cbiAgICAgICAgICAgIGlmIChmaWVsZCAmJiBoYXNDb250aW51b3VzRG9tYWluKHNjYWxlVHlwZSkpIHtcbiAgICAgICAgICAgICAgICBhZ2dyZWdhdG9yW2ZpZWxkXSA9IHRydWU7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIGFnZ3JlZ2F0b3I7XG4gICAgfSwge30pO1xuICAgIGNvbnN0IGZpZWxkcyA9IGtleXMoZmlsdGVySW5kZXgpO1xuICAgIGlmIChmaWVsZHMubGVuZ3RoID4gMCkge1xuICAgICAgICBjb25zdCBvcCA9IGludmFsaWQgPyAnfHwnIDogJyYmJztcbiAgICAgICAgcmV0dXJuIGZpZWxkcy5tYXAoZmllbGQgPT4gZmllbGRJbnZhbGlkUHJlZGljYXRlKGZpZWxkLCBpbnZhbGlkKSkuam9pbihgICR7b3B9IGApO1xuICAgIH1cbiAgICByZXR1cm4gdW5kZWZpbmVkO1xufVxuZXhwb3J0IGZ1bmN0aW9uIHZhbHVlSWZEZWZpbmVkKHByb3AsIHZhbHVlKSB7XG4gICAgaWYgKHZhbHVlICE9PSB1bmRlZmluZWQpIHtcbiAgICAgICAgcmV0dXJuIHsgW3Byb3BdOiBzaWduYWxPclZhbHVlUmVmKHZhbHVlKSB9O1xuICAgIH1cbiAgICByZXR1cm4gdW5kZWZpbmVkO1xufVxuLy8jIHNvdXJjZU1hcHBpbmdVUkw9ZGVmaW5lZC5qcy5tYXAiXSwibWFwcGluZ3MiOiJBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSIsInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///./node_modules/vega-lite/build/src/compile/mark/encode/defined.js\n");

/***/ }),

/***/ "./node_modules/vega-lite/build/src/compile/mark/encode/index.js":
/*!***********************************************************************!*\
  !*** ./node_modules/vega-lite/build/src/compile/mark/encode/index.js ***!
  \***********************************************************************/
/*! exports provided: baseEncodeEntry, color, wrapCondition, defined, valueIfDefined, nonPosition, pointPosition, pointOrRangePosition, rangePosition, rectBinPosition, rectPosition, text, tooltip, tooltipRefForEncoding, aria */
/***/ (function(module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _base__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./base */ \"./node_modules/vega-lite/build/src/compile/mark/encode/base.js\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"baseEncodeEntry\", function() { return _base__WEBPACK_IMPORTED_MODULE_0__[\"baseEncodeEntry\"]; });\n\n/* harmony import */ var _color__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./color */ \"./node_modules/vega-lite/build/src/compile/mark/encode/color.js\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"color\", function() { return _color__WEBPACK_IMPORTED_MODULE_1__[\"color\"]; });\n\n/* harmony import */ var _conditional__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./conditional */ \"./node_modules/vega-lite/build/src/compile/mark/encode/conditional.js\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"wrapCondition\", function() { return _conditional__WEBPACK_IMPORTED_MODULE_2__[\"wrapCondition\"]; });\n\n/* harmony import */ var _defined__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ./defined */ \"./node_modules/vega-lite/build/src/compile/mark/encode/defined.js\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"defined\", function() { return _defined__WEBPACK_IMPORTED_MODULE_3__[\"defined\"]; });\n\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"valueIfDefined\", function() { return _defined__WEBPACK_IMPORTED_MODULE_3__[\"valueIfDefined\"]; });\n\n/* harmony import */ var _nonposition__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ./nonposition */ \"./node_modules/vega-lite/build/src/compile/mark/encode/nonposition.js\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"nonPosition\", function() { return _nonposition__WEBPACK_IMPORTED_MODULE_4__[\"nonPosition\"]; });\n\n/* harmony import */ var _position_point__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! ./position-point */ \"./node_modules/vega-lite/build/src/compile/mark/encode/position-point.js\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"pointPosition\", function() { return _position_point__WEBPACK_IMPORTED_MODULE_5__[\"pointPosition\"]; });\n\n/* harmony import */ var _position_range__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! ./position-range */ \"./node_modules/vega-lite/build/src/compile/mark/encode/position-range.js\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"pointOrRangePosition\", function() { return _position_range__WEBPACK_IMPORTED_MODULE_6__[\"pointOrRangePosition\"]; });\n\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"rangePosition\", function() { return _position_range__WEBPACK_IMPORTED_MODULE_6__[\"rangePosition\"]; });\n\n/* harmony import */ var _position_rect__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! ./position-rect */ \"./node_modules/vega-lite/build/src/compile/mark/encode/position-rect.js\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"rectBinPosition\", function() { return _position_rect__WEBPACK_IMPORTED_MODULE_7__[\"rectBinPosition\"]; });\n\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"rectPosition\", function() { return _position_rect__WEBPACK_IMPORTED_MODULE_7__[\"rectPosition\"]; });\n\n/* harmony import */ var _text__WEBPACK_IMPORTED_MODULE_8__ = __webpack_require__(/*! ./text */ \"./node_modules/vega-lite/build/src/compile/mark/encode/text.js\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"text\", function() { return _text__WEBPACK_IMPORTED_MODULE_8__[\"text\"]; });\n\n/* harmony import */ var _tooltip__WEBPACK_IMPORTED_MODULE_9__ = __webpack_require__(/*! ./tooltip */ \"./node_modules/vega-lite/build/src/compile/mark/encode/tooltip.js\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"tooltip\", function() { return _tooltip__WEBPACK_IMPORTED_MODULE_9__[\"tooltip\"]; });\n\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"tooltipRefForEncoding\", function() { return _tooltip__WEBPACK_IMPORTED_MODULE_9__[\"tooltipRefForEncoding\"]; });\n\n/* harmony import */ var _aria__WEBPACK_IMPORTED_MODULE_10__ = __webpack_require__(/*! ./aria */ \"./node_modules/vega-lite/build/src/compile/mark/encode/aria.js\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"aria\", function() { return _aria__WEBPACK_IMPORTED_MODULE_10__[\"aria\"]; });\n\n\n\n\n\n\n\n\n\n\n\n\n//# sourceMappingURL=index.js.map//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvdmVnYS1saXRlL2J1aWxkL3NyYy9jb21waWxlL21hcmsvZW5jb2RlL2luZGV4LmpzLmpzIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL3ZlZ2EtbGl0ZS9idWlsZC9zcmMvY29tcGlsZS9tYXJrL2VuY29kZS9pbmRleC5qcz80Yzg1Il0sInNvdXJjZXNDb250ZW50IjpbImV4cG9ydCB7IGJhc2VFbmNvZGVFbnRyeSB9IGZyb20gJy4vYmFzZSc7XG5leHBvcnQgeyBjb2xvciB9IGZyb20gJy4vY29sb3InO1xuZXhwb3J0IHsgd3JhcENvbmRpdGlvbiB9IGZyb20gJy4vY29uZGl0aW9uYWwnO1xuZXhwb3J0IHsgZGVmaW5lZCwgdmFsdWVJZkRlZmluZWQgfSBmcm9tICcuL2RlZmluZWQnO1xuZXhwb3J0IHsgbm9uUG9zaXRpb24gfSBmcm9tICcuL25vbnBvc2l0aW9uJztcbmV4cG9ydCB7IHBvaW50UG9zaXRpb24gfSBmcm9tICcuL3Bvc2l0aW9uLXBvaW50JztcbmV4cG9ydCB7IHBvaW50T3JSYW5nZVBvc2l0aW9uLCByYW5nZVBvc2l0aW9uIH0gZnJvbSAnLi9wb3NpdGlvbi1yYW5nZSc7XG5leHBvcnQgeyByZWN0QmluUG9zaXRpb24sIHJlY3RQb3NpdGlvbiB9IGZyb20gJy4vcG9zaXRpb24tcmVjdCc7XG5leHBvcnQgeyB0ZXh0IH0gZnJvbSAnLi90ZXh0JztcbmV4cG9ydCB7IHRvb2x0aXAsIHRvb2x0aXBSZWZGb3JFbmNvZGluZyB9IGZyb20gJy4vdG9vbHRpcCc7XG5leHBvcnQgeyBhcmlhIH0gZnJvbSAnLi9hcmlhJztcbi8vIyBzb3VyY2VNYXBwaW5nVVJMPWluZGV4LmpzLm1hcCJdLCJtYXBwaW5ncyI6IkFBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBIiwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///./node_modules/vega-lite/build/src/compile/mark/encode/index.js\n");

/***/ }),

/***/ "./node_modules/vega-lite/build/src/compile/mark/encode/nonposition.js":
/*!*****************************************************************************!*\
  !*** ./node_modules/vega-lite/build/src/compile/mark/encode/nonposition.js ***!
  \*****************************************************************************/
/*! exports provided: nonPosition */
/***/ (function(module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"nonPosition\", function() { return nonPosition; });\n/* harmony import */ var _common__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../../common */ \"./node_modules/vega-lite/build/src/compile/common.js\");\n/* harmony import */ var _conditional__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./conditional */ \"./node_modules/vega-lite/build/src/compile/mark/encode/conditional.js\");\n/* harmony import */ var _valueref__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./valueref */ \"./node_modules/vega-lite/build/src/compile/mark/encode/valueref.js\");\n\n\n\n/**\n * Return encode for non-positional channels with scales. (Text doesn't have scale.)\n */\nfunction nonPosition(channel, model, opt = {}) {\n    const { markDef, encoding, config } = model;\n    const { vgChannel } = opt;\n    let { defaultRef, defaultValue } = opt;\n    if (defaultRef === undefined) {\n        // prettier-ignore\n        defaultValue = defaultValue !== null && defaultValue !== void 0 ? defaultValue : Object(_common__WEBPACK_IMPORTED_MODULE_0__[\"getMarkPropOrConfig\"])(channel, markDef, config, { vgChannel, ignoreVgConfig: true });\n        if (defaultValue !== undefined) {\n            defaultRef = Object(_common__WEBPACK_IMPORTED_MODULE_0__[\"signalOrValueRef\"])(defaultValue);\n        }\n    }\n    const channelDef = encoding[channel];\n    return Object(_conditional__WEBPACK_IMPORTED_MODULE_1__[\"wrapCondition\"])(model, channelDef, vgChannel !== null && vgChannel !== void 0 ? vgChannel : channel, cDef => {\n        return _valueref__WEBPACK_IMPORTED_MODULE_2__[\"midPoint\"]({\n            channel,\n            channelDef: cDef,\n            markDef,\n            config,\n            scaleName: model.scaleName(channel),\n            scale: model.getScaleComponent(channel),\n            stack: null,\n            defaultRef\n        });\n    });\n}\n//# sourceMappingURL=nonposition.js.map//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvdmVnYS1saXRlL2J1aWxkL3NyYy9jb21waWxlL21hcmsvZW5jb2RlL25vbnBvc2l0aW9uLmpzLmpzIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL3ZlZ2EtbGl0ZS9idWlsZC9zcmMvY29tcGlsZS9tYXJrL2VuY29kZS9ub25wb3NpdGlvbi5qcz80NzFjIl0sInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IGdldE1hcmtQcm9wT3JDb25maWcsIHNpZ25hbE9yVmFsdWVSZWYgfSBmcm9tICcuLi8uLi9jb21tb24nO1xuaW1wb3J0IHsgd3JhcENvbmRpdGlvbiB9IGZyb20gJy4vY29uZGl0aW9uYWwnO1xuaW1wb3J0ICogYXMgcmVmIGZyb20gJy4vdmFsdWVyZWYnO1xuLyoqXG4gKiBSZXR1cm4gZW5jb2RlIGZvciBub24tcG9zaXRpb25hbCBjaGFubmVscyB3aXRoIHNjYWxlcy4gKFRleHQgZG9lc24ndCBoYXZlIHNjYWxlLilcbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIG5vblBvc2l0aW9uKGNoYW5uZWwsIG1vZGVsLCBvcHQgPSB7fSkge1xuICAgIGNvbnN0IHsgbWFya0RlZiwgZW5jb2RpbmcsIGNvbmZpZyB9ID0gbW9kZWw7XG4gICAgY29uc3QgeyB2Z0NoYW5uZWwgfSA9IG9wdDtcbiAgICBsZXQgeyBkZWZhdWx0UmVmLCBkZWZhdWx0VmFsdWUgfSA9IG9wdDtcbiAgICBpZiAoZGVmYXVsdFJlZiA9PT0gdW5kZWZpbmVkKSB7XG4gICAgICAgIC8vIHByZXR0aWVyLWlnbm9yZVxuICAgICAgICBkZWZhdWx0VmFsdWUgPSBkZWZhdWx0VmFsdWUgIT09IG51bGwgJiYgZGVmYXVsdFZhbHVlICE9PSB2b2lkIDAgPyBkZWZhdWx0VmFsdWUgOiBnZXRNYXJrUHJvcE9yQ29uZmlnKGNoYW5uZWwsIG1hcmtEZWYsIGNvbmZpZywgeyB2Z0NoYW5uZWwsIGlnbm9yZVZnQ29uZmlnOiB0cnVlIH0pO1xuICAgICAgICBpZiAoZGVmYXVsdFZhbHVlICE9PSB1bmRlZmluZWQpIHtcbiAgICAgICAgICAgIGRlZmF1bHRSZWYgPSBzaWduYWxPclZhbHVlUmVmKGRlZmF1bHRWYWx1ZSk7XG4gICAgICAgIH1cbiAgICB9XG4gICAgY29uc3QgY2hhbm5lbERlZiA9IGVuY29kaW5nW2NoYW5uZWxdO1xuICAgIHJldHVybiB3cmFwQ29uZGl0aW9uKG1vZGVsLCBjaGFubmVsRGVmLCB2Z0NoYW5uZWwgIT09IG51bGwgJiYgdmdDaGFubmVsICE9PSB2b2lkIDAgPyB2Z0NoYW5uZWwgOiBjaGFubmVsLCBjRGVmID0+IHtcbiAgICAgICAgcmV0dXJuIHJlZi5taWRQb2ludCh7XG4gICAgICAgICAgICBjaGFubmVsLFxuICAgICAgICAgICAgY2hhbm5lbERlZjogY0RlZixcbiAgICAgICAgICAgIG1hcmtEZWYsXG4gICAgICAgICAgICBjb25maWcsXG4gICAgICAgICAgICBzY2FsZU5hbWU6IG1vZGVsLnNjYWxlTmFtZShjaGFubmVsKSxcbiAgICAgICAgICAgIHNjYWxlOiBtb2RlbC5nZXRTY2FsZUNvbXBvbmVudChjaGFubmVsKSxcbiAgICAgICAgICAgIHN0YWNrOiBudWxsLFxuICAgICAgICAgICAgZGVmYXVsdFJlZlxuICAgICAgICB9KTtcbiAgICB9KTtcbn1cbi8vIyBzb3VyY2VNYXBwaW5nVVJMPW5vbnBvc2l0aW9uLmpzLm1hcCJdLCJtYXBwaW5ncyI6IkFBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EiLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///./node_modules/vega-lite/build/src/compile/mark/encode/nonposition.js\n");

/***/ }),

/***/ "./node_modules/vega-lite/build/src/compile/mark/encode/offset.js":
/*!************************************************************************!*\
  !*** ./node_modules/vega-lite/build/src/compile/mark/encode/offset.js ***!
  \************************************************************************/
/*! exports provided: getOffset */
/***/ (function(module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"getOffset\", function() { return getOffset; });\n/* harmony import */ var _channel__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../../../channel */ \"./node_modules/vega-lite/build/src/channel.js\");\n\nfunction getOffset(channel, markDef) {\n    const offsetChannel = Object(_channel__WEBPACK_IMPORTED_MODULE_0__[\"getOffsetChannel\"])(channel);\n    // TODO: in the future read from encoding channel too\n    const markDefOffsetValue = markDef[offsetChannel];\n    if (markDefOffsetValue) {\n        return markDefOffsetValue;\n    }\n    return undefined;\n}\n//# sourceMappingURL=offset.js.map//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvdmVnYS1saXRlL2J1aWxkL3NyYy9jb21waWxlL21hcmsvZW5jb2RlL29mZnNldC5qcy5qcyIsInNvdXJjZXMiOlsid2VicGFjazovLy8uL25vZGVfbW9kdWxlcy92ZWdhLWxpdGUvYnVpbGQvc3JjL2NvbXBpbGUvbWFyay9lbmNvZGUvb2Zmc2V0LmpzPzFjMmEiXSwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgZ2V0T2Zmc2V0Q2hhbm5lbCB9IGZyb20gJy4uLy4uLy4uL2NoYW5uZWwnO1xuZXhwb3J0IGZ1bmN0aW9uIGdldE9mZnNldChjaGFubmVsLCBtYXJrRGVmKSB7XG4gICAgY29uc3Qgb2Zmc2V0Q2hhbm5lbCA9IGdldE9mZnNldENoYW5uZWwoY2hhbm5lbCk7XG4gICAgLy8gVE9ETzogaW4gdGhlIGZ1dHVyZSByZWFkIGZyb20gZW5jb2RpbmcgY2hhbm5lbCB0b29cbiAgICBjb25zdCBtYXJrRGVmT2Zmc2V0VmFsdWUgPSBtYXJrRGVmW29mZnNldENoYW5uZWxdO1xuICAgIGlmIChtYXJrRGVmT2Zmc2V0VmFsdWUpIHtcbiAgICAgICAgcmV0dXJuIG1hcmtEZWZPZmZzZXRWYWx1ZTtcbiAgICB9XG4gICAgcmV0dXJuIHVuZGVmaW5lZDtcbn1cbi8vIyBzb3VyY2VNYXBwaW5nVVJMPW9mZnNldC5qcy5tYXAiXSwibWFwcGluZ3MiOiJBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EiLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///./node_modules/vega-lite/build/src/compile/mark/encode/offset.js\n");

/***/ }),

/***/ "./node_modules/vega-lite/build/src/compile/mark/encode/position-align.js":
/*!********************************************************************************!*\
  !*** ./node_modules/vega-lite/build/src/compile/mark/encode/position-align.js ***!
  \********************************************************************************/
/*! exports provided: vgAlignedPositionChannel */
/***/ (function(module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"vgAlignedPositionChannel\", function() { return vgAlignedPositionChannel; });\n/* harmony import */ var _channel__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../../../channel */ \"./node_modules/vega-lite/build/src/channel.js\");\n/* harmony import */ var _log__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../../../log */ \"./node_modules/vega-lite/build/src/log/index.js\");\n/* harmony import */ var _vega_schema__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ../../../vega.schema */ \"./node_modules/vega-lite/build/src/vega.schema.js\");\n/* harmony import */ var _common__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ../../common */ \"./node_modules/vega-lite/build/src/compile/common.js\");\n\n\n\n\nconst ALIGNED_X_CHANNEL = {\n    left: 'x',\n    center: 'xc',\n    right: 'x2'\n};\nconst BASELINED_Y_CHANNEL = {\n    top: 'y',\n    middle: 'yc',\n    bottom: 'y2'\n};\nfunction vgAlignedPositionChannel(channel, markDef, config, defaultAlign = 'middle') {\n    if (channel === 'radius' || channel === 'theta') {\n        return Object(_channel__WEBPACK_IMPORTED_MODULE_0__[\"getVgPositionChannel\"])(channel);\n    }\n    const alignChannel = channel === 'x' ? 'align' : 'baseline';\n    const align = Object(_common__WEBPACK_IMPORTED_MODULE_3__[\"getMarkPropOrConfig\"])(alignChannel, markDef, config);\n    let alignExcludingSignal;\n    if (Object(_vega_schema__WEBPACK_IMPORTED_MODULE_2__[\"isSignalRef\"])(align)) {\n        _log__WEBPACK_IMPORTED_MODULE_1__[\"warn\"](_log__WEBPACK_IMPORTED_MODULE_1__[\"message\"].rangeMarkAlignmentCannotBeExpression(alignChannel));\n        alignExcludingSignal = undefined;\n    }\n    else {\n        alignExcludingSignal = align;\n    }\n    if (channel === 'x') {\n        return ALIGNED_X_CHANNEL[alignExcludingSignal || (defaultAlign === 'top' ? 'left' : 'center')];\n    }\n    else {\n        return BASELINED_Y_CHANNEL[alignExcludingSignal || defaultAlign];\n    }\n}\n//# sourceMappingURL=position-align.js.map//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvdmVnYS1saXRlL2J1aWxkL3NyYy9jb21waWxlL21hcmsvZW5jb2RlL3Bvc2l0aW9uLWFsaWduLmpzLmpzIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL3ZlZ2EtbGl0ZS9idWlsZC9zcmMvY29tcGlsZS9tYXJrL2VuY29kZS9wb3NpdGlvbi1hbGlnbi5qcz8yOWZjIl0sInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IGdldFZnUG9zaXRpb25DaGFubmVsIH0gZnJvbSAnLi4vLi4vLi4vY2hhbm5lbCc7XG5pbXBvcnQgKiBhcyBsb2cgZnJvbSAnLi4vLi4vLi4vbG9nJztcbmltcG9ydCB7IGlzU2lnbmFsUmVmIH0gZnJvbSAnLi4vLi4vLi4vdmVnYS5zY2hlbWEnO1xuaW1wb3J0IHsgZ2V0TWFya1Byb3BPckNvbmZpZyB9IGZyb20gJy4uLy4uL2NvbW1vbic7XG5jb25zdCBBTElHTkVEX1hfQ0hBTk5FTCA9IHtcbiAgICBsZWZ0OiAneCcsXG4gICAgY2VudGVyOiAneGMnLFxuICAgIHJpZ2h0OiAneDInXG59O1xuY29uc3QgQkFTRUxJTkVEX1lfQ0hBTk5FTCA9IHtcbiAgICB0b3A6ICd5JyxcbiAgICBtaWRkbGU6ICd5YycsXG4gICAgYm90dG9tOiAneTInXG59O1xuZXhwb3J0IGZ1bmN0aW9uIHZnQWxpZ25lZFBvc2l0aW9uQ2hhbm5lbChjaGFubmVsLCBtYXJrRGVmLCBjb25maWcsIGRlZmF1bHRBbGlnbiA9ICdtaWRkbGUnKSB7XG4gICAgaWYgKGNoYW5uZWwgPT09ICdyYWRpdXMnIHx8IGNoYW5uZWwgPT09ICd0aGV0YScpIHtcbiAgICAgICAgcmV0dXJuIGdldFZnUG9zaXRpb25DaGFubmVsKGNoYW5uZWwpO1xuICAgIH1cbiAgICBjb25zdCBhbGlnbkNoYW5uZWwgPSBjaGFubmVsID09PSAneCcgPyAnYWxpZ24nIDogJ2Jhc2VsaW5lJztcbiAgICBjb25zdCBhbGlnbiA9IGdldE1hcmtQcm9wT3JDb25maWcoYWxpZ25DaGFubmVsLCBtYXJrRGVmLCBjb25maWcpO1xuICAgIGxldCBhbGlnbkV4Y2x1ZGluZ1NpZ25hbDtcbiAgICBpZiAoaXNTaWduYWxSZWYoYWxpZ24pKSB7XG4gICAgICAgIGxvZy53YXJuKGxvZy5tZXNzYWdlLnJhbmdlTWFya0FsaWdubWVudENhbm5vdEJlRXhwcmVzc2lvbihhbGlnbkNoYW5uZWwpKTtcbiAgICAgICAgYWxpZ25FeGNsdWRpbmdTaWduYWwgPSB1bmRlZmluZWQ7XG4gICAgfVxuICAgIGVsc2Uge1xuICAgICAgICBhbGlnbkV4Y2x1ZGluZ1NpZ25hbCA9IGFsaWduO1xuICAgIH1cbiAgICBpZiAoY2hhbm5lbCA9PT0gJ3gnKSB7XG4gICAgICAgIHJldHVybiBBTElHTkVEX1hfQ0hBTk5FTFthbGlnbkV4Y2x1ZGluZ1NpZ25hbCB8fCAoZGVmYXVsdEFsaWduID09PSAndG9wJyA/ICdsZWZ0JyA6ICdjZW50ZXInKV07XG4gICAgfVxuICAgIGVsc2Uge1xuICAgICAgICByZXR1cm4gQkFTRUxJTkVEX1lfQ0hBTk5FTFthbGlnbkV4Y2x1ZGluZ1NpZ25hbCB8fCBkZWZhdWx0QWxpZ25dO1xuICAgIH1cbn1cbi8vIyBzb3VyY2VNYXBwaW5nVVJMPXBvc2l0aW9uLWFsaWduLmpzLm1hcCJdLCJtYXBwaW5ncyI6IkFBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBIiwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///./node_modules/vega-lite/build/src/compile/mark/encode/position-align.js\n");

/***/ }),

/***/ "./node_modules/vega-lite/build/src/compile/mark/encode/position-point.js":
/*!********************************************************************************!*\
  !*** ./node_modules/vega-lite/build/src/compile/mark/encode/position-point.js ***!
  \********************************************************************************/
/*! exports provided: pointPosition, positionRef, pointPositionDefaultRef */
/***/ (function(module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"pointPosition\", function() { return pointPosition; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"positionRef\", function() { return positionRef; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"pointPositionDefaultRef\", function() { return pointPositionDefaultRef; });\n/* harmony import */ var _channel__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../../../channel */ \"./node_modules/vega-lite/build/src/channel.js\");\n/* harmony import */ var _channeldef__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../../../channeldef */ \"./node_modules/vega-lite/build/src/channeldef.js\");\n/* harmony import */ var _scale__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ../../../scale */ \"./node_modules/vega-lite/build/src/scale.js\");\n/* harmony import */ var _util__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ../../../util */ \"./node_modules/vega-lite/build/src/util.js\");\n/* harmony import */ var _common__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ../../common */ \"./node_modules/vega-lite/build/src/compile/common.js\");\n/* harmony import */ var _offset__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! ./offset */ \"./node_modules/vega-lite/build/src/compile/mark/encode/offset.js\");\n/* harmony import */ var _valueref__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! ./valueref */ \"./node_modules/vega-lite/build/src/compile/mark/encode/valueref.js\");\n\n\n\n\n\n\n\n/**\n * Return encode for point (non-band) position channels.\n */\nfunction pointPosition(channel, model, { defaultPos, vgChannel, isMidPoint }) {\n    const { encoding, markDef, config, stack } = model;\n    const channelDef = encoding[channel];\n    const channel2Def = encoding[Object(_channel__WEBPACK_IMPORTED_MODULE_0__[\"getSecondaryRangeChannel\"])(channel)];\n    const scaleName = model.scaleName(channel);\n    const scale = model.getScaleComponent(channel);\n    const offset = Object(_offset__WEBPACK_IMPORTED_MODULE_5__[\"getOffset\"])(channel, markDef);\n    // Get default position or position from mark def\n    const defaultRef = pointPositionDefaultRef({\n        model,\n        defaultPos,\n        channel,\n        scaleName,\n        scale\n    });\n    const valueRef = !channelDef && Object(_channel__WEBPACK_IMPORTED_MODULE_0__[\"isXorY\"])(channel) && (encoding.latitude || encoding.longitude)\n        ? // use geopoint output if there are lat/long and there is no point position overriding lat/long.\n            { field: model.getName(channel) }\n        : positionRef({\n            channel,\n            channelDef,\n            channel2Def,\n            markDef,\n            config,\n            isMidPoint,\n            scaleName,\n            scale,\n            stack,\n            offset,\n            defaultRef\n        });\n    return valueRef ? { [vgChannel || channel]: valueRef } : undefined;\n}\n// TODO: we need to find a way to refactor these so that scaleName is a part of scale\n// but that's complicated. For now, this is a huge step moving forward.\n/**\n * @return Vega ValueRef for normal x- or y-position without projection\n */\nfunction positionRef(params) {\n    const { channel, channelDef, isMidPoint, scaleName, stack, offset, markDef, config } = params;\n    // This isn't a part of midPoint because we use midPoint for non-position too\n    if (Object(_channeldef__WEBPACK_IMPORTED_MODULE_1__[\"isFieldOrDatumDef\"])(channelDef) && stack && channel === stack.fieldChannel) {\n        if (Object(_channeldef__WEBPACK_IMPORTED_MODULE_1__[\"isFieldDef\"])(channelDef)) {\n            const band = Object(_channeldef__WEBPACK_IMPORTED_MODULE_1__[\"getBand\"])({\n                channel,\n                fieldDef: channelDef,\n                isMidPoint,\n                markDef,\n                stack,\n                config\n            });\n            if (band !== undefined) {\n                return _valueref__WEBPACK_IMPORTED_MODULE_6__[\"interpolatedSignalRef\"]({\n                    scaleName,\n                    fieldOrDatumDef: channelDef,\n                    startSuffix: 'start',\n                    band,\n                    offset\n                });\n            }\n        }\n        // x or y use stack_end so that stacked line's point mark use stack_end too.\n        return _valueref__WEBPACK_IMPORTED_MODULE_6__[\"valueRefForFieldOrDatumDef\"](channelDef, scaleName, { suffix: 'end' }, { offset });\n    }\n    return _valueref__WEBPACK_IMPORTED_MODULE_6__[\"midPointRefWithPositionInvalidTest\"](params);\n}\nfunction pointPositionDefaultRef({ model, defaultPos, channel, scaleName, scale }) {\n    const { markDef, config } = model;\n    return () => {\n        const mainChannel = Object(_channel__WEBPACK_IMPORTED_MODULE_0__[\"getMainRangeChannel\"])(channel);\n        const vgChannel = Object(_channel__WEBPACK_IMPORTED_MODULE_0__[\"getVgPositionChannel\"])(channel);\n        const definedValueOrConfig = Object(_common__WEBPACK_IMPORTED_MODULE_4__[\"getMarkPropOrConfig\"])(channel, markDef, config, { vgChannel });\n        if (definedValueOrConfig !== undefined) {\n            return _valueref__WEBPACK_IMPORTED_MODULE_6__[\"widthHeightValueOrSignalRef\"](channel, definedValueOrConfig);\n        }\n        switch (defaultPos) {\n            case 'zeroOrMin':\n            case 'zeroOrMax':\n                if (scaleName) {\n                    const scaleType = scale.get('type');\n                    if (Object(_util__WEBPACK_IMPORTED_MODULE_3__[\"contains\"])([_scale__WEBPACK_IMPORTED_MODULE_2__[\"ScaleType\"].LOG, _scale__WEBPACK_IMPORTED_MODULE_2__[\"ScaleType\"].TIME, _scale__WEBPACK_IMPORTED_MODULE_2__[\"ScaleType\"].UTC], scaleType)) {\n                        // Log scales cannot have zero.\n                        // Zero in time scale is arbitrary, and does not affect ratio.\n                        // (Time is an interval level of measurement, not ratio).\n                        // See https://en.wikipedia.org/wiki/Level_of_measurement for more info.\n                    }\n                    else {\n                        if (scale.domainDefinitelyIncludesZero()) {\n                            return {\n                                scale: scaleName,\n                                value: 0\n                            };\n                        }\n                    }\n                }\n                if (defaultPos === 'zeroOrMin') {\n                    return mainChannel === 'y' ? { field: { group: 'height' } } : { value: 0 };\n                }\n                else {\n                    // zeroOrMax\n                    switch (mainChannel) {\n                        case 'radius':\n                            // max of radius is min(width, height) / 2\n                            return {\n                                signal: `min(${model.width.signal},${model.height.signal})/2`\n                            };\n                        case 'theta':\n                            return { signal: '2*PI' };\n                        case 'x':\n                            return { field: { group: 'width' } };\n                        case 'y':\n                            return { value: 0 };\n                    }\n                }\n                break;\n            case 'mid': {\n                const sizeRef = model[Object(_channel__WEBPACK_IMPORTED_MODULE_0__[\"getSizeChannel\"])(channel)];\n                return Object.assign(Object.assign({}, sizeRef), { mult: 0.5 });\n            }\n        }\n        // defaultPos === null\n        return undefined;\n    };\n}\n//# sourceMappingURL=position-point.js.map//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,[encoded data, 9028 characters]\n//# sourceURL=webpack-internal:///./node_modules/vega-lite/build/src/compile/mark/encode/position-point.js\n");

/***/ }),

/***/ "./node_modules/vega-lite/build/src/compile/mark/encode/position-range.js":
/*!********************************************************************************!*\
  !*** ./node_modules/vega-lite/build/src/compile/mark/encode/position-range.js ***!
  \********************************************************************************/
/*! exports provided: pointOrRangePosition, rangePosition, position2Ref */
/***/ (function(module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"pointOrRangePosition\", function() { return pointOrRangePosition; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"rangePosition\", function() { return rangePosition; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"position2Ref\", function() { return position2Ref; });\n/* harmony import */ var _channel__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../../../channel */ \"./node_modules/vega-lite/build/src/channel.js\");\n/* harmony import */ var _channeldef__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../../../channeldef */ \"./node_modules/vega-lite/build/src/channeldef.js\");\n/* harmony import */ var _common__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ../../common */ \"./node_modules/vega-lite/build/src/compile/common.js\");\n/* harmony import */ var _offset__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ./offset */ \"./node_modules/vega-lite/build/src/compile/mark/encode/offset.js\");\n/* harmony import */ var _position_align__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ./position-align */ \"./node_modules/vega-lite/build/src/compile/mark/encode/position-align.js\");\n/* harmony import */ var _position_point__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! ./position-point */ \"./node_modules/vega-lite/build/src/compile/mark/encode/position-point.js\");\n/* harmony import */ var _valueref__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! ./valueref */ \"./node_modules/vega-lite/build/src/compile/mark/encode/valueref.js\");\n\n\n\n\n\n\n\n/**\n * Utility for area/rule position, which can be either point or range. (One of the axes should be point and the other should be range.)\n */\nfunction pointOrRangePosition(channel, model, { defaultPos, defaultPos2, range }) {\n    if (range) {\n        return rangePosition(channel, model, { defaultPos, defaultPos2 });\n    }\n    return Object(_position_point__WEBPACK_IMPORTED_MODULE_5__[\"pointPosition\"])(channel, model, { defaultPos });\n}\nfunction rangePosition(channel, model, { defaultPos, defaultPos2 }) {\n    const { markDef, config } = model;\n    const channel2 = Object(_channel__WEBPACK_IMPORTED_MODULE_0__[\"getSecondaryRangeChannel\"])(channel);\n    const sizeChannel = Object(_channel__WEBPACK_IMPORTED_MODULE_0__[\"getSizeChannel\"])(channel);\n    const pos2Mixins = pointPosition2OrSize(model, defaultPos2, channel2);\n    const vgChannel = pos2Mixins[sizeChannel]\n        ? // If there is width/height, we need to position the marks based on the alignment.\n            Object(_position_align__WEBPACK_IMPORTED_MODULE_4__[\"vgAlignedPositionChannel\"])(channel, markDef, config)\n        : // Otherwise, make sure to apply to the right Vg Channel (for arc mark)\n            Object(_channel__WEBPACK_IMPORTED_MODULE_0__[\"getVgPositionChannel\"])(channel);\n    return Object.assign(Object.assign({}, Object(_position_point__WEBPACK_IMPORTED_MODULE_5__[\"pointPosition\"])(channel, model, { defaultPos, vgChannel })), pos2Mixins);\n}\n/**\n * Return encode for x2, y2.\n * If channel is not specified, return one channel based on orientation.\n */\nfunction pointPosition2OrSize(model, defaultPos, channel) {\n    const { encoding, mark, markDef, stack, config } = model;\n    const baseChannel = Object(_channel__WEBPACK_IMPORTED_MODULE_0__[\"getMainRangeChannel\"])(channel);\n    const sizeChannel = Object(_channel__WEBPACK_IMPORTED_MODULE_0__[\"getSizeChannel\"])(channel);\n    const vgChannel = Object(_channel__WEBPACK_IMPORTED_MODULE_0__[\"getVgPositionChannel\"])(channel);\n    const channelDef = encoding[baseChannel];\n    const scaleName = model.scaleName(baseChannel);\n    const scale = model.getScaleComponent(baseChannel);\n    const offset = channel in encoding || channel in markDef\n        ? Object(_offset__WEBPACK_IMPORTED_MODULE_3__[\"getOffset\"])(channel, model.markDef)\n        : Object(_offset__WEBPACK_IMPORTED_MODULE_3__[\"getOffset\"])(baseChannel, model.markDef);\n    if (!channelDef && (channel === 'x2' || channel === 'y2') && (encoding.latitude || encoding.longitude)) {\n        // use geopoint output if there are lat2/long2 and there is no point position2 overriding lat2/long2.\n        return { [vgChannel]: { field: model.getName(channel) } };\n    }\n    const valueRef = position2Ref({\n        channel,\n        channelDef,\n        channel2Def: encoding[channel],\n        markDef,\n        config,\n        scaleName,\n        scale,\n        stack,\n        offset,\n        defaultRef: undefined\n    });\n    if (valueRef !== undefined) {\n        return { [vgChannel]: valueRef };\n    }\n    // TODO: check width/height encoding here once we add them\n    // no x2/y2 encoding, then try to read x2/y2 or width/height based on precedence:\n    // markDef > config.style > mark-specific config (config[mark]) > general mark config (config.mark)\n    return (position2orSize(channel, markDef) ||\n        position2orSize(channel, {\n            [channel]: Object(_common__WEBPACK_IMPORTED_MODULE_2__[\"getMarkStyleConfig\"])(channel, markDef, config.style),\n            [sizeChannel]: Object(_common__WEBPACK_IMPORTED_MODULE_2__[\"getMarkStyleConfig\"])(sizeChannel, markDef, config.style)\n        }) ||\n        position2orSize(channel, config[mark]) ||\n        position2orSize(channel, config.mark) || {\n        [vgChannel]: Object(_position_point__WEBPACK_IMPORTED_MODULE_5__[\"pointPositionDefaultRef\"])({\n            model,\n            defaultPos,\n            channel,\n            scaleName,\n            scale\n        })()\n    });\n}\nfunction position2Ref({ channel, channelDef, channel2Def, markDef, config, scaleName, scale, stack, offset, defaultRef }) {\n    if (Object(_channeldef__WEBPACK_IMPORTED_MODULE_1__[\"isFieldOrDatumDef\"])(channelDef) &&\n        stack &&\n        // If fieldChannel is X and channel is X2 (or Y and Y2)\n        channel.charAt(0) === stack.fieldChannel.charAt(0)) {\n        return _valueref__WEBPACK_IMPORTED_MODULE_6__[\"valueRefForFieldOrDatumDef\"](channelDef, scaleName, { suffix: 'start' }, { offset });\n    }\n    return _valueref__WEBPACK_IMPORTED_MODULE_6__[\"midPointRefWithPositionInvalidTest\"]({\n        channel,\n        channelDef: channel2Def,\n        scaleName,\n        scale,\n        stack,\n        markDef,\n        config,\n        offset,\n        defaultRef\n    });\n}\nfunction position2orSize(channel, markDef) {\n    const sizeChannel = Object(_channel__WEBPACK_IMPORTED_MODULE_0__[\"getSizeChannel\"])(channel);\n    const vgChannel = Object(_channel__WEBPACK_IMPORTED_MODULE_0__[\"getVgPositionChannel\"])(channel);\n    if (markDef[vgChannel] !== undefined) {\n        return { [vgChannel]: _valueref__WEBPACK_IMPORTED_MODULE_6__[\"widthHeightValueOrSignalRef\"](channel, markDef[vgChannel]) };\n    }\n    else if (markDef[channel] !== undefined) {\n        return { [vgChannel]: _valueref__WEBPACK_IMPORTED_MODULE_6__[\"widthHeightValueOrSignalRef\"](channel, markDef[channel]) };\n    }\n    else if (markDef[sizeChannel]) {\n        return { [sizeChannel]: _valueref__WEBPACK_IMPORTED_MODULE_6__[\"widthHeightValueOrSignalRef\"](channel, markDef[sizeChannel]) };\n    }\n    return undefined;\n}\n//# sourceMappingURL=position-range.js.map//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,[encoded data, 7956 characters]\n//# sourceURL=webpack-internal:///./node_modules/vega-lite/build/src/compile/mark/encode/position-range.js\n");

/***/ }),

/***/ "./node_modules/vega-lite/build/src/compile/mark/encode/position-rect.js":
/*!*******************************************************************************!*\
  !*** ./node_modules/vega-lite/build/src/compile/mark/encode/position-rect.js ***!
  \*******************************************************************************/
/*! exports provided: rectPosition, rectBinPosition, rectBinRef */
/***/ (function(module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"rectPosition\", function() { return rectPosition; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"rectBinPosition\", function() { return rectBinPosition; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"rectBinRef\", function() { return rectBinRef; });\n/* harmony import */ var vega_util__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! vega-util */ \"./node_modules/vega-lite/node_modules/vega-util/build/vega-util.module.js\");\n/* harmony import */ var _bin__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../../../bin */ \"./node_modules/vega-lite/build/src/bin.js\");\n/* harmony import */ var _channel__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ../../../channel */ \"./node_modules/vega-lite/build/src/channel.js\");\n/* harmony import */ var _channeldef__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ../../../channeldef */ \"./node_modules/vega-lite/build/src/channeldef.js\");\n/* harmony import */ var _config__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ../../../config */ \"./node_modules/vega-lite/build/src/config.js\");\n/* harmony import */ var _log__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! ../../../log */ \"./node_modules/vega-lite/build/src/log/index.js\");\n/* harmony import */ var _scale__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! ../../../scale */ \"./node_modules/vega-lite/build/src/scale.js\");\n/* harmony import */ var _util__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! ../../../util */ \"./node_modules/vega-lite/build/src/util.js\");\n/* harmony import */ var _vega_schema__WEBPACK_IMPORTED_MODULE_8__ = __webpack_require__(/*! ../../../vega.schema */ \"./node_modules/vega-lite/build/src/vega.schema.js\");\n/* harmony import */ var _common__WEBPACK_IMPORTED_MODULE_9__ = __webpack_require__(/*! ../../common */ \"./node_modules/vega-lite/build/src/compile/common.js\");\n/* harmony import */ var _nonposition__WEBPACK_IMPORTED_MODULE_10__ = __webpack_require__(/*! ./nonposition */ \"./node_modules/vega-lite/build/src/compile/mark/encode/nonposition.js\");\n/* harmony import */ var _offset__WEBPACK_IMPORTED_MODULE_11__ = __webpack_require__(/*! ./offset */ \"./node_modules/vega-lite/build/src/compile/mark/encode/offset.js\");\n/* harmony import */ var _position_align__WEBPACK_IMPORTED_MODULE_12__ = __webpack_require__(/*! ./position-align */ \"./node_modules/vega-lite/build/src/compile/mark/encode/position-align.js\");\n/* harmony import */ var _position_point__WEBPACK_IMPORTED_MODULE_13__ = __webpack_require__(/*! ./position-point */ \"./node_modules/vega-lite/build/src/compile/mark/encode/position-point.js\");\n/* harmony import */ var _position_range__WEBPACK_IMPORTED_MODULE_14__ = __webpack_require__(/*! ./position-range */ \"./node_modules/vega-lite/build/src/compile/mark/encode/position-range.js\");\n/* harmony import */ var _valueref__WEBPACK_IMPORTED_MODULE_15__ = __webpack_require__(/*! ./valueref */ \"./node_modules/vega-lite/build/src/compile/mark/encode/valueref.js\");\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\nfunction rectPosition(model, channel, mark) {\n    var _a, _b, _c, _d;\n    const { config, encoding, markDef, stack } = model;\n    const channel2 = Object(_channel__WEBPACK_IMPORTED_MODULE_2__[\"getSecondaryRangeChannel\"])(channel);\n    const sizeChannel = Object(_channel__WEBPACK_IMPORTED_MODULE_2__[\"getSizeChannel\"])(channel);\n    const channelDef = encoding[channel];\n    const channelDef2 = encoding[channel2];\n    const scale = model.getScaleComponent(channel);\n    const scaleType = scale ? scale.get('type') : undefined;\n    const scaleName = model.scaleName(channel);\n    const orient = markDef.orient;\n    const hasSizeDef = (_b = (_a = encoding[sizeChannel]) !== null && _a !== void 0 ? _a : encoding.size) !== null && _b !== void 0 ? _b : Object(_common__WEBPACK_IMPORTED_MODULE_9__[\"getMarkPropOrConfig\"])('size', markDef, config, { vgChannel: sizeChannel });\n    const isBarBand = mark === 'bar' && (channel === 'x' ? orient === 'vertical' : orient === 'horizontal');\n    // x, x2, and width -- we must specify two of these in all conditions\n    if (Object(_channeldef__WEBPACK_IMPORTED_MODULE_3__[\"isFieldDef\"])(channelDef) &&\n        (Object(_bin__WEBPACK_IMPORTED_MODULE_1__[\"isBinning\"])(channelDef.bin) || Object(_bin__WEBPACK_IMPORTED_MODULE_1__[\"isBinned\"])(channelDef.bin) || (channelDef.timeUnit && !channelDef2)) &&\n        !hasSizeDef &&\n        !Object(_scale__WEBPACK_IMPORTED_MODULE_6__[\"hasDiscreteDomain\"])(scaleType)) {\n        const band = Object(_channeldef__WEBPACK_IMPORTED_MODULE_3__[\"getBand\"])({ channel, fieldDef: channelDef, stack, markDef, config });\n        const axis = (_c = model.component.axes[channel]) === null || _c === void 0 ? void 0 : _c[0];\n        const axisTranslate = (_d = axis === null || axis === void 0 ? void 0 : axis.get('translate')) !== null && _d !== void 0 ? _d : 0.5; // vega default is 0.5\n        return rectBinPosition({\n            fieldDef: channelDef,\n            fieldDef2: channelDef2,\n            channel,\n            markDef,\n            scaleName,\n            band,\n            axisTranslate,\n            spacing: Object(_channel__WEBPACK_IMPORTED_MODULE_2__[\"isXorY\"])(channel) ? Object(_common__WEBPACK_IMPORTED_MODULE_9__[\"getMarkPropOrConfig\"])('binSpacing', markDef, config) : undefined,\n            reverse: scale.get('reverse'),\n            config\n        });\n    }\n    else if (((Object(_channeldef__WEBPACK_IMPORTED_MODULE_3__[\"isFieldOrDatumDef\"])(channelDef) && Object(_scale__WEBPACK_IMPORTED_MODULE_6__[\"hasDiscreteDomain\"])(scaleType)) || isBarBand) && !channelDef2) {\n        return positionAndSize(mark, channelDef, channel, model);\n    }\n    else {\n        return Object(_position_range__WEBPACK_IMPORTED_MODULE_14__[\"rangePosition\"])(channel, model, { defaultPos: 'zeroOrMax', defaultPos2: 'zeroOrMin' });\n    }\n}\nfunction defaultSizeRef(mark, sizeChannel, scaleName, scale, config, band) {\n    if (scale) {\n        const scaleType = scale.get('type');\n        if (scaleType === 'point' || scaleType === 'band') {\n            if (config[mark].discreteBandSize !== undefined) {\n                return { value: config[mark].discreteBandSize };\n            }\n            if (scaleType === _scale__WEBPACK_IMPORTED_MODULE_6__[\"ScaleType\"].POINT) {\n                const scaleRange = scale.get('range');\n                if (Object(_vega_schema__WEBPACK_IMPORTED_MODULE_8__[\"isVgRangeStep\"])(scaleRange) && Object(vega_util__WEBPACK_IMPORTED_MODULE_0__[\"isNumber\"])(scaleRange.step)) {\n                    return { value: scaleRange.step - 2 };\n                }\n                return { value: _config__WEBPACK_IMPORTED_MODULE_4__[\"DEFAULT_STEP\"] - 2 };\n            }\n            else {\n                // BAND\n                return { scale: scaleName, band };\n            }\n        }\n        else {\n            // continuous scale\n            return { value: config[mark].continuousBandSize };\n        }\n    }\n    // No Scale\n    const step = Object(_config__WEBPACK_IMPORTED_MODULE_4__[\"getViewConfigDiscreteStep\"])(config.view, sizeChannel);\n    const value = Object(_util__WEBPACK_IMPORTED_MODULE_7__[\"getFirstDefined\"])(\n    // No scale is like discrete bar (with one item)\n    config[mark].discreteBandSize, step - 2);\n    return value !== undefined ? { value } : undefined;\n}\n/**\n * Output position encoding and its size encoding for continuous, point, and band scales.\n */\nfunction positionAndSize(mark, fieldDef, channel, model) {\n    var _a;\n    const { markDef, encoding, config, stack } = model;\n    const orient = markDef.orient;\n    const scaleName = model.scaleName(channel);\n    const scale = model.getScaleComponent(channel);\n    const vgSizeChannel = Object(_channel__WEBPACK_IMPORTED_MODULE_2__[\"getSizeChannel\"])(channel);\n    const channel2 = Object(_channel__WEBPACK_IMPORTED_MODULE_2__[\"getSecondaryRangeChannel\"])(channel);\n    // use \"size\" channel for bars, if there is orient and the channel matches the right orientation\n    const useVlSizeChannel = (orient === 'horizontal' && channel === 'y') || (orient === 'vertical' && channel === 'x');\n    const sizeFromMarkOrConfig = Object(_common__WEBPACK_IMPORTED_MODULE_9__[\"getMarkPropOrConfig\"])(useVlSizeChannel ? 'size' : vgSizeChannel, markDef, config, {\n        vgChannel: vgSizeChannel\n    });\n    // Use size encoding / mark property / config if it exists\n    let sizeMixins;\n    if (encoding.size || sizeFromMarkOrConfig !== undefined) {\n        if (useVlSizeChannel) {\n            sizeMixins = Object(_nonposition__WEBPACK_IMPORTED_MODULE_10__[\"nonPosition\"])('size', model, { vgChannel: vgSizeChannel, defaultValue: sizeFromMarkOrConfig });\n        }\n        else {\n            _log__WEBPACK_IMPORTED_MODULE_5__[\"warn\"](_log__WEBPACK_IMPORTED_MODULE_5__[\"message\"].cannotApplySizeToNonOrientedMark(markDef.type));\n        }\n    }\n    // Otherwise, apply default value\n    const band = (_a = (Object(_channeldef__WEBPACK_IMPORTED_MODULE_3__[\"isFieldOrDatumDef\"])(fieldDef) ? Object(_channeldef__WEBPACK_IMPORTED_MODULE_3__[\"getBand\"])({ channel, fieldDef, markDef, stack, config }) : undefined)) !== null && _a !== void 0 ? _a : 1;\n    sizeMixins = sizeMixins || { [vgSizeChannel]: defaultSizeRef(mark, vgSizeChannel, scaleName, scale, config, band) };\n    /*\n      Band scales with size value and all point scales, use xc/yc + band=0.5\n  \n      Otherwise (band scales that has size based on a band ref), use x/y with position band = (1 - size_band) / 2.\n      In this case, size_band is the band specified in the x/y-encoding.\n      By default band is 1, so `(1 - band) / 2` = 0.\n      If band is 0.6, the the x/y position in such case should be `(1 - band) / 2` = 0.2\n     */\n    const center = (scale === null || scale === void 0 ? void 0 : scale.get('type')) !== 'band' || !('band' in sizeMixins[vgSizeChannel]);\n    const vgChannel = Object(_position_align__WEBPACK_IMPORTED_MODULE_12__[\"vgAlignedPositionChannel\"])(channel, markDef, config, center ? 'middle' : 'top');\n    const offset = Object(_offset__WEBPACK_IMPORTED_MODULE_11__[\"getOffset\"])(channel, markDef);\n    const posRef = _valueref__WEBPACK_IMPORTED_MODULE_15__[\"midPointRefWithPositionInvalidTest\"]({\n        channel,\n        channelDef: fieldDef,\n        markDef,\n        config,\n        scaleName,\n        scale,\n        stack,\n        offset,\n        defaultRef: Object(_position_point__WEBPACK_IMPORTED_MODULE_13__[\"pointPositionDefaultRef\"])({ model, defaultPos: 'mid', channel, scaleName, scale }),\n        band: center ? 0.5 : (1 - band) / 2\n    });\n    if (vgSizeChannel) {\n        return Object.assign({ [vgChannel]: posRef }, sizeMixins);\n    }\n    else {\n        // otherwise, we must simulate size by setting position2 = position + size\n        // (for theta/radius since Vega doesn't have thetaWidth/radiusWidth)\n        const vgChannel2 = Object(_channel__WEBPACK_IMPORTED_MODULE_2__[\"getVgPositionChannel\"])(channel2);\n        const sizeRef = sizeMixins[vgSizeChannel];\n        const sizeOffset = offset ? Object.assign(Object.assign({}, sizeRef), { offset }) : sizeRef;\n        return {\n            [vgChannel]: posRef,\n            // posRef might be an array that wraps position invalid test\n            [vgChannel2]: Object(vega_util__WEBPACK_IMPORTED_MODULE_0__[\"isArray\"])(posRef)\n                ? [posRef[0], Object.assign(Object.assign({}, posRef[1]), { offset: sizeOffset })]\n                : Object.assign(Object.assign({}, posRef), { offset: sizeOffset })\n        };\n    }\n}\nfunction getBinSpacing(channel, spacing, reverse, translate, offset) {\n    if (Object(_channel__WEBPACK_IMPORTED_MODULE_2__[\"isPolarPositionChannel\"])(channel)) {\n        return 0;\n    }\n    const spacingOffset = channel === 'x' || channel === 'y2' ? -spacing / 2 : spacing / 2;\n    if (Object(_vega_schema__WEBPACK_IMPORTED_MODULE_8__[\"isSignalRef\"])(reverse) || Object(_vega_schema__WEBPACK_IMPORTED_MODULE_8__[\"isSignalRef\"])(offset) || Object(_vega_schema__WEBPACK_IMPORTED_MODULE_8__[\"isSignalRef\"])(translate)) {\n        const reverseExpr = Object(_common__WEBPACK_IMPORTED_MODULE_9__[\"signalOrStringValue\"])(reverse);\n        const offsetExpr = Object(_common__WEBPACK_IMPORTED_MODULE_9__[\"signalOrStringValue\"])(offset);\n        const translateExpr = Object(_common__WEBPACK_IMPORTED_MODULE_9__[\"signalOrStringValue\"])(translate);\n        const t = translateExpr ? `${translateExpr} + ` : '';\n        const r = reverseExpr ? `(${reverseExpr} ? -1 : 1) * ` : '';\n        const o = offsetExpr ? `(${offsetExpr} + ${spacingOffset})` : spacingOffset;\n        return {\n            signal: t + r + o\n        };\n    }\n    else {\n        offset = offset || 0;\n        return translate + (reverse ? -offset - spacingOffset : +offset + spacingOffset);\n    }\n}\nfunction rectBinPosition({ fieldDef, fieldDef2, channel, band, scaleName, markDef, spacing = 0, axisTranslate, reverse, config }) {\n    const channel2 = Object(_channel__WEBPACK_IMPORTED_MODULE_2__[\"getSecondaryRangeChannel\"])(channel);\n    const vgChannel = Object(_channel__WEBPACK_IMPORTED_MODULE_2__[\"getVgPositionChannel\"])(channel);\n    const vgChannel2 = Object(_channel__WEBPACK_IMPORTED_MODULE_2__[\"getVgPositionChannel\"])(channel2);\n    const offset = Object(_offset__WEBPACK_IMPORTED_MODULE_11__[\"getOffset\"])(channel, markDef);\n    if (Object(_bin__WEBPACK_IMPORTED_MODULE_1__[\"isBinning\"])(fieldDef.bin) || fieldDef.timeUnit) {\n        return {\n            [vgChannel2]: rectBinRef({\n                channel,\n                fieldDef,\n                scaleName,\n                markDef,\n                band: (1 - band) / 2,\n                offset: getBinSpacing(channel2, spacing, reverse, axisTranslate, offset),\n                config\n            }),\n            [vgChannel]: rectBinRef({\n                channel,\n                fieldDef,\n                scaleName,\n                markDef,\n                band: 1 - (1 - band) / 2,\n                offset: getBinSpacing(channel, spacing, reverse, axisTranslate, offset),\n                config\n            })\n        };\n    }\n    else if (Object(_bin__WEBPACK_IMPORTED_MODULE_1__[\"isBinned\"])(fieldDef.bin)) {\n        const startRef = _valueref__WEBPACK_IMPORTED_MODULE_15__[\"valueRefForFieldOrDatumDef\"](fieldDef, scaleName, {}, { offset: getBinSpacing(channel2, spacing, reverse, axisTranslate, offset) });\n        if (Object(_channeldef__WEBPACK_IMPORTED_MODULE_3__[\"isFieldDef\"])(fieldDef2)) {\n            return {\n                [vgChannel2]: startRef,\n                [vgChannel]: _valueref__WEBPACK_IMPORTED_MODULE_15__[\"valueRefForFieldOrDatumDef\"](fieldDef2, scaleName, {}, { offset: getBinSpacing(channel, spacing, reverse, axisTranslate, offset) })\n            };\n        }\n        else if (Object(_bin__WEBPACK_IMPORTED_MODULE_1__[\"isBinParams\"])(fieldDef.bin) && fieldDef.bin.step) {\n            return {\n                [vgChannel2]: startRef,\n                [vgChannel]: {\n                    signal: `scale(\"${scaleName}\", ${Object(_channeldef__WEBPACK_IMPORTED_MODULE_3__[\"vgField\"])(fieldDef, { expr: 'datum' })} + ${fieldDef.bin.step})`,\n                    offset: getBinSpacing(channel, spacing, reverse, axisTranslate, offset)\n                }\n            };\n        }\n    }\n    _log__WEBPACK_IMPORTED_MODULE_5__[\"warn\"](_log__WEBPACK_IMPORTED_MODULE_5__[\"message\"].channelRequiredForBinned(channel2));\n    return undefined;\n}\n/**\n * Value Ref for binned fields\n */\nfunction rectBinRef({ channel, fieldDef, scaleName, markDef, band, offset, config }) {\n    const r = _valueref__WEBPACK_IMPORTED_MODULE_15__[\"interpolatedSignalRef\"]({\n        scaleName,\n        fieldOrDatumDef: fieldDef,\n        band,\n        offset\n    });\n    return _valueref__WEBPACK_IMPORTED_MODULE_15__[\"wrapPositionInvalidTest\"]({\n        fieldDef,\n        channel,\n        markDef,\n        ref: r,\n        config\n    });\n}\n//# sourceMappingURL=position-rect.js.map//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,[encoded data, 17432 characters]\n//# sourceURL=webpack-internal:///./node_modules/vega-lite/build/src/compile/mark/encode/position-rect.js\n");

/***/ }),

/***/ "./node_modules/vega-lite/build/src/compile/mark/encode/text.js":
/*!**********************************************************************!*\
  !*** ./node_modules/vega-lite/build/src/compile/mark/encode/text.js ***!
  \**********************************************************************/
/*! exports provided: text, textRef */
/***/ (function(module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"text\", function() { return text; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"textRef\", function() { return textRef; });\n/* harmony import */ var _channeldef__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../../../channeldef */ \"./node_modules/vega-lite/build/src/channeldef.js\");\n/* harmony import */ var _common__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../../common */ \"./node_modules/vega-lite/build/src/compile/common.js\");\n/* harmony import */ var _format__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ../../format */ \"./node_modules/vega-lite/build/src/compile/format.js\");\n/* harmony import */ var _conditional__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ./conditional */ \"./node_modules/vega-lite/build/src/compile/mark/encode/conditional.js\");\n\n\n\n\nfunction text(model, channel = 'text') {\n    const channelDef = model.encoding[channel];\n    return Object(_conditional__WEBPACK_IMPORTED_MODULE_3__[\"wrapCondition\"])(model, channelDef, channel, cDef => textRef(cDef, model.config));\n}\nfunction textRef(channelDef, config, expr = 'datum') {\n    // text\n    if (channelDef) {\n        if (Object(_channeldef__WEBPACK_IMPORTED_MODULE_0__[\"isValueDef\"])(channelDef)) {\n            return Object(_common__WEBPACK_IMPORTED_MODULE_1__[\"signalOrValueRef\"])(channelDef.value);\n        }\n        if (Object(_channeldef__WEBPACK_IMPORTED_MODULE_0__[\"isFieldOrDatumDef\"])(channelDef)) {\n            const { format, formatType } = Object(_channeldef__WEBPACK_IMPORTED_MODULE_0__[\"getFormatMixins\"])(channelDef);\n            return Object(_format__WEBPACK_IMPORTED_MODULE_2__[\"formatSignalRef\"])({ fieldOrDatumDef: channelDef, format, formatType, expr, config });\n        }\n    }\n    return undefined;\n}\n//# sourceMappingURL=text.js.map//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvdmVnYS1saXRlL2J1aWxkL3NyYy9jb21waWxlL21hcmsvZW5jb2RlL3RleHQuanMuanMiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvdmVnYS1saXRlL2J1aWxkL3NyYy9jb21waWxlL21hcmsvZW5jb2RlL3RleHQuanM/MmU0NCJdLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBnZXRGb3JtYXRNaXhpbnMsIGlzRmllbGRPckRhdHVtRGVmLCBpc1ZhbHVlRGVmIH0gZnJvbSAnLi4vLi4vLi4vY2hhbm5lbGRlZic7XG5pbXBvcnQgeyBzaWduYWxPclZhbHVlUmVmIH0gZnJvbSAnLi4vLi4vY29tbW9uJztcbmltcG9ydCB7IGZvcm1hdFNpZ25hbFJlZiB9IGZyb20gJy4uLy4uL2Zvcm1hdCc7XG5pbXBvcnQgeyB3cmFwQ29uZGl0aW9uIH0gZnJvbSAnLi9jb25kaXRpb25hbCc7XG5leHBvcnQgZnVuY3Rpb24gdGV4dChtb2RlbCwgY2hhbm5lbCA9ICd0ZXh0Jykge1xuICAgIGNvbnN0IGNoYW5uZWxEZWYgPSBtb2RlbC5lbmNvZGluZ1tjaGFubmVsXTtcbiAgICByZXR1cm4gd3JhcENvbmRpdGlvbihtb2RlbCwgY2hhbm5lbERlZiwgY2hhbm5lbCwgY0RlZiA9PiB0ZXh0UmVmKGNEZWYsIG1vZGVsLmNvbmZpZykpO1xufVxuZXhwb3J0IGZ1bmN0aW9uIHRleHRSZWYoY2hhbm5lbERlZiwgY29uZmlnLCBleHByID0gJ2RhdHVtJykge1xuICAgIC8vIHRleHRcbiAgICBpZiAoY2hhbm5lbERlZikge1xuICAgICAgICBpZiAoaXNWYWx1ZURlZihjaGFubmVsRGVmKSkge1xuICAgICAgICAgICAgcmV0dXJuIHNpZ25hbE9yVmFsdWVSZWYoY2hhbm5lbERlZi52YWx1ZSk7XG4gICAgICAgIH1cbiAgICAgICAgaWYgKGlzRmllbGRPckRhdHVtRGVmKGNoYW5uZWxEZWYpKSB7XG4gICAgICAgICAgICBjb25zdCB7IGZvcm1hdCwgZm9ybWF0VHlwZSB9ID0gZ2V0Rm9ybWF0TWl4aW5zKGNoYW5uZWxEZWYpO1xuICAgICAgICAgICAgcmV0dXJuIGZvcm1hdFNpZ25hbFJlZih7IGZpZWxkT3JEYXR1bURlZjogY2hhbm5lbERlZiwgZm9ybWF0LCBmb3JtYXRUeXBlLCBleHByLCBjb25maWcgfSk7XG4gICAgICAgIH1cbiAgICB9XG4gICAgcmV0dXJuIHVuZGVmaW5lZDtcbn1cbi8vIyBzb3VyY2VNYXBwaW5nVVJMPXRleHQuanMubWFwIl0sIm1hcHBpbmdzIjoiQUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBIiwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///./node_modules/vega-lite/build/src/compile/mark/encode/text.js\n");

/***/ }),

/***/ "./node_modules/vega-lite/build/src/compile/mark/encode/tooltip.js":
/*!*************************************************************************!*\
  !*** ./node_modules/vega-lite/build/src/compile/mark/encode/tooltip.js ***!
  \*************************************************************************/
/*! exports provided: tooltip, tooltipData, tooltipRefForEncoding */
/***/ (function(module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"tooltip\", function() { return tooltip; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"tooltipData\", function() { return tooltipData; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"tooltipRefForEncoding\", function() { return tooltipRefForEncoding; });\n/* harmony import */ var vega_util__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! vega-util */ \"./node_modules/vega-lite/node_modules/vega-util/build/vega-util.module.js\");\n/* harmony import */ var _bin__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../../../bin */ \"./node_modules/vega-lite/build/src/bin.js\");\n/* harmony import */ var _channel__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ../../../channel */ \"./node_modules/vega-lite/build/src/channel.js\");\n/* harmony import */ var _channeldef__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ../../../channeldef */ \"./node_modules/vega-lite/build/src/channeldef.js\");\n/* harmony import */ var _encoding__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ../../../encoding */ \"./node_modules/vega-lite/build/src/encoding.js\");\n/* harmony import */ var _util__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! ../../../util */ \"./node_modules/vega-lite/build/src/util.js\");\n/* harmony import */ var _vega_schema__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! ../../../vega.schema */ \"./node_modules/vega-lite/build/src/vega.schema.js\");\n/* harmony import */ var _common__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! ../../common */ \"./node_modules/vega-lite/build/src/compile/common.js\");\n/* harmony import */ var _format__WEBPACK_IMPORTED_MODULE_8__ = __webpack_require__(/*! ../../format */ \"./node_modules/vega-lite/build/src/compile/format.js\");\n/* harmony import */ var _conditional__WEBPACK_IMPORTED_MODULE_9__ = __webpack_require__(/*! ./conditional */ \"./node_modules/vega-lite/build/src/compile/mark/encode/conditional.js\");\n/* harmony import */ var _text__WEBPACK_IMPORTED_MODULE_10__ = __webpack_require__(/*! ./text */ \"./node_modules/vega-lite/build/src/compile/mark/encode/text.js\");\n\n\n\n\n\n\n\n\n\n\n\nfunction tooltip(model, opt = {}) {\n    const { encoding, markDef, config, stack } = model;\n    const channelDef = encoding.tooltip;\n    if (Object(vega_util__WEBPACK_IMPORTED_MODULE_0__[\"isArray\"])(channelDef)) {\n        return { tooltip: tooltipRefForEncoding({ tooltip: channelDef }, stack, config, opt) };\n    }\n    else {\n        const datum = opt.reactiveGeom ? 'datum.datum' : 'datum';\n        return Object(_conditional__WEBPACK_IMPORTED_MODULE_9__[\"wrapCondition\"])(model, channelDef, 'tooltip', cDef => {\n            // use valueRef based on channelDef first\n            const tooltipRefFromChannelDef = Object(_text__WEBPACK_IMPORTED_MODULE_10__[\"textRef\"])(cDef, config, datum);\n            if (tooltipRefFromChannelDef) {\n                return tooltipRefFromChannelDef;\n            }\n            if (cDef === null) {\n                // Allow using encoding.tooltip = null to disable tooltip\n                return undefined;\n            }\n            let markTooltip = Object(_common__WEBPACK_IMPORTED_MODULE_7__[\"getMarkPropOrConfig\"])('tooltip', markDef, config);\n            if (markTooltip === true) {\n                markTooltip = { content: 'encoding' };\n            }\n            if (Object(vega_util__WEBPACK_IMPORTED_MODULE_0__[\"isString\"])(markTooltip)) {\n                return { value: markTooltip };\n            }\n            else if (Object(vega_util__WEBPACK_IMPORTED_MODULE_0__[\"isObject\"])(markTooltip)) {\n                // `tooltip` is `{fields: 'encodings' | 'fields'}`\n                if (Object(_vega_schema__WEBPACK_IMPORTED_MODULE_6__[\"isSignalRef\"])(markTooltip)) {\n                    return markTooltip;\n                }\n                else if (markTooltip.content === 'encoding') {\n                    return tooltipRefForEncoding(encoding, stack, config, opt);\n                }\n                else {\n                    return { signal: datum };\n                }\n            }\n            return undefined;\n        });\n    }\n}\nfunction tooltipData(encoding, stack, config, { reactiveGeom } = {}) {\n    const toSkip = {};\n    const expr = reactiveGeom ? 'datum.datum' : 'datum';\n    const tuples = [];\n    function add(fDef, channel) {\n        const mainChannel = Object(_channel__WEBPACK_IMPORTED_MODULE_2__[\"getMainRangeChannel\"])(channel);\n        const fieldDef = Object(_channeldef__WEBPACK_IMPORTED_MODULE_3__[\"isTypedFieldDef\"])(fDef)\n            ? fDef\n            : Object.assign(Object.assign({}, fDef), { type: encoding[mainChannel].type // for secondary field def, copy type from main channel\n             });\n        const title = fieldDef.title || Object(_channeldef__WEBPACK_IMPORTED_MODULE_3__[\"defaultTitle\"])(fieldDef, config);\n        const key = Object(vega_util__WEBPACK_IMPORTED_MODULE_0__[\"array\"])(title).join(', ');\n        let value;\n        if (Object(_channel__WEBPACK_IMPORTED_MODULE_2__[\"isXorY\"])(channel)) {\n            const channel2 = channel === 'x' ? 'x2' : 'y2';\n            const fieldDef2 = Object(_channeldef__WEBPACK_IMPORTED_MODULE_3__[\"getFieldDef\"])(encoding[channel2]);\n            if (Object(_bin__WEBPACK_IMPORTED_MODULE_1__[\"isBinned\"])(fieldDef.bin) && fieldDef2) {\n                const startField = Object(_channeldef__WEBPACK_IMPORTED_MODULE_3__[\"vgField\"])(fieldDef, { expr });\n                const endField = Object(_channeldef__WEBPACK_IMPORTED_MODULE_3__[\"vgField\"])(fieldDef2, { expr });\n                const { format, formatType } = Object(_channeldef__WEBPACK_IMPORTED_MODULE_3__[\"getFormatMixins\"])(fieldDef);\n                value = Object(_format__WEBPACK_IMPORTED_MODULE_8__[\"binFormatExpression\"])(startField, endField, format, formatType, config);\n                toSkip[channel2] = true;\n            }\n            else if (stack && stack.fieldChannel === channel && stack.offset === 'normalize') {\n                const { format, formatType } = Object(_channeldef__WEBPACK_IMPORTED_MODULE_3__[\"getFormatMixins\"])(fieldDef);\n                value = Object(_format__WEBPACK_IMPORTED_MODULE_8__[\"formatSignalRef\"])({ fieldOrDatumDef: fieldDef, format, formatType, expr, config, normalizeStack: true })\n                    .signal;\n            }\n        }\n        value = value !== null && value !== void 0 ? value : Object(_text__WEBPACK_IMPORTED_MODULE_10__[\"textRef\"])(fieldDef, config, expr).signal;\n        tuples.push({ channel, key, value });\n    }\n    Object(_encoding__WEBPACK_IMPORTED_MODULE_4__[\"forEach\"])(encoding, (channelDef, channel) => {\n        if (Object(_channeldef__WEBPACK_IMPORTED_MODULE_3__[\"isFieldDef\"])(channelDef)) {\n            add(channelDef, channel);\n        }\n        else if (Object(_channeldef__WEBPACK_IMPORTED_MODULE_3__[\"hasConditionalFieldDef\"])(channelDef)) {\n            add(channelDef.condition, channel);\n        }\n    });\n    const out = {};\n    for (const { channel, key, value } of tuples) {\n        if (!toSkip[channel] && !out[key]) {\n            out[key] = value;\n        }\n    }\n    return out;\n}\nfunction tooltipRefForEncoding(encoding, stack, config, { reactiveGeom } = {}) {\n    const data = tooltipData(encoding, stack, config, { reactiveGeom });\n    const keyValues = Object(_util__WEBPACK_IMPORTED_MODULE_5__[\"entries\"])(data).map(([key, value]) => `\"${key}\": ${value}`);\n    return keyValues.length > 0 ? { signal: `{${keyValues.join(', ')}}` } : undefined;\n}\n//# sourceMappingURL=tooltip.js.map//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,[encoded data, 7648 characters]\n//# sourceURL=webpack-internal:///./node_modules/vega-lite/build/src/compile/mark/encode/tooltip.js\n");

/***/ }),

/***/ "./node_modules/vega-lite/build/src/compile/mark/encode/valueref.js":
/*!**************************************************************************!*\
  !*** ./node_modules/vega-lite/build/src/compile/mark/encode/valueref.js ***!
  \**************************************************************************/
/*! exports provided: midPointRefWithPositionInvalidTest, wrapPositionInvalidTest, fieldInvalidTestValueRef, fieldInvalidPredicate, datumDefToExpr, valueRefForFieldOrDatumDef, interpolatedSignalRef, midPoint, widthHeightValueOrSignalRef */
/***/ (function(module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"midPointRefWithPositionInvalidTest\", function() { return midPointRefWithPositionInvalidTest; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"wrapPositionInvalidTest\", function() { return wrapPositionInvalidTest; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"fieldInvalidTestValueRef\", function() { return fieldInvalidTestValueRef; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"fieldInvalidPredicate\", function() { return fieldInvalidPredicate; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"datumDefToExpr\", function() { return datumDefToExpr; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"valueRefForFieldOrDatumDef\", function() { return valueRefForFieldOrDatumDef; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"interpolatedSignalRef\", function() { return interpolatedSignalRef; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"midPoint\", function() { return midPoint; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"widthHeightValueOrSignalRef\", function() { return widthHeightValueOrSignalRef; });\n/* harmony import */ var vega_util__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! vega-util */ \"./node_modules/vega-lite/node_modules/vega-util/build/vega-util.module.js\");\n/* harmony import */ var _aggregate__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../../../aggregate */ \"./node_modules/vega-lite/build/src/aggregate.js\");\n/* harmony import */ var _bin__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ../../../bin */ \"./node_modules/vega-lite/build/src/bin.js\");\n/* harmony import */ var _channel__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ../../../channel */ \"./node_modules/vega-lite/build/src/channel.js\");\n/* harmony import */ var _channeldef__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ../../../channeldef */ \"./node_modules/vega-lite/build/src/channeldef.js\");\n/* harmony import */ var _datetime__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! ../../../datetime */ \"./node_modules/vega-lite/build/src/datetime.js\");\n/* harmony import */ var _expr__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! ../../../expr */ \"./node_modules/vega-lite/build/src/expr.js\");\n/* harmony import */ var _log__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! ../../../log */ \"./node_modules/vega-lite/build/src/log/index.js\");\n/* harmony import */ var _mark__WEBPACK_IMPORTED_MODULE_8__ = __webpack_require__(/*! ../../../mark */ \"./node_modules/vega-lite/build/src/mark.js\");\n/* harmony import */ var _predicate__WEBPACK_IMPORTED_MODULE_9__ = __webpack_require__(/*! ../../../predicate */ \"./node_modules/vega-lite/build/src/predicate.js\");\n/* harmony import */ var _scale__WEBPACK_IMPORTED_MODULE_10__ = __webpack_require__(/*! ../../../scale */ \"./node_modules/vega-lite/build/src/scale.js\");\n/* harmony import */ var _type__WEBPACK_IMPORTED_MODULE_11__ = __webpack_require__(/*! ../../../type */ \"./node_modules/vega-lite/build/src/type.js\");\n/* harmony import */ var _util__WEBPACK_IMPORTED_MODULE_12__ = __webpack_require__(/*! ../../../util */ \"./node_modules/vega-lite/build/src/util.js\");\n/* harmony import */ var _vega_schema__WEBPACK_IMPORTED_MODULE_13__ = __webpack_require__(/*! ../../../vega.schema */ \"./node_modules/vega-lite/build/src/vega.schema.js\");\n/* harmony import */ var _common__WEBPACK_IMPORTED_MODULE_14__ = __webpack_require__(/*! ../../common */ \"./node_modules/vega-lite/build/src/compile/common.js\");\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\nfunction midPointRefWithPositionInvalidTest(params) {\n    const { channel, channelDef, markDef, scale, config } = params;\n    const ref = midPoint(params);\n    // Wrap to check if the positional value is invalid, if so, plot the point on the min value\n    if (\n    // Only this for field def without counting aggregate (as count wouldn't be null)\n    Object(_channeldef__WEBPACK_IMPORTED_MODULE_4__[\"isFieldDef\"])(channelDef) &&\n        !Object(_aggregate__WEBPACK_IMPORTED_MODULE_1__[\"isCountingAggregateOp\"])(channelDef.aggregate) &&\n        // and only for continuous scale without zero (otherwise, null / invalid will be interpreted as zero, which doesn't cause layout problem)\n        scale &&\n        Object(_scale__WEBPACK_IMPORTED_MODULE_10__[\"isContinuousToContinuous\"])(scale.get('type')) &&\n        scale.get('zero') === false) {\n        return wrapPositionInvalidTest({\n            fieldDef: channelDef,\n            channel,\n            markDef,\n            ref,\n            config\n        });\n    }\n    return ref;\n}\nfunction wrapPositionInvalidTest({ fieldDef, channel, markDef, ref, config }) {\n    if (Object(_mark__WEBPACK_IMPORTED_MODULE_8__[\"isPathMark\"])(markDef.type)) {\n        // path mark already use defined to skip points, no need to do it here.\n        return ref;\n    }\n    const invalid = Object(_common__WEBPACK_IMPORTED_MODULE_14__[\"getMarkPropOrConfig\"])('invalid', markDef, config);\n    if (invalid === null) {\n        // if there is no invalid filter, don't do the invalid test\n        return ref;\n    }\n    return [fieldInvalidTestValueRef(fieldDef, channel), ref];\n}\nfunction fieldInvalidTestValueRef(fieldDef, channel) {\n    const test = fieldInvalidPredicate(fieldDef, true);\n    const mainChannel = Object(_channel__WEBPACK_IMPORTED_MODULE_3__[\"getMainRangeChannel\"])(channel); // we can cast here as the output can't be other things.\n    const zeroValueRef = mainChannel === 'y'\n        ? { field: { group: 'height' } }\n        : // x / angle / radius can all use 0\n            { value: 0 };\n    return Object.assign({ test }, zeroValueRef);\n}\nfunction fieldInvalidPredicate(field, invalid = true) {\n    return Object(_predicate__WEBPACK_IMPORTED_MODULE_9__[\"fieldValidPredicate\"])(Object(vega_util__WEBPACK_IMPORTED_MODULE_0__[\"isString\"])(field) ? field : Object(_channeldef__WEBPACK_IMPORTED_MODULE_4__[\"vgField\"])(field, { expr: 'datum' }), !invalid);\n}\nfunction datumDefToExpr(datumDef) {\n    const { datum } = datumDef;\n    if (Object(_datetime__WEBPACK_IMPORTED_MODULE_5__[\"isDateTime\"])(datum)) {\n        return Object(_datetime__WEBPACK_IMPORTED_MODULE_5__[\"dateTimeToExpr\"])(datum);\n    }\n    return `${JSON.stringify(datum)}`;\n}\nfunction valueRefForFieldOrDatumDef(fieldDef, scaleName, opt, encode) {\n    const ref = {};\n    if (scaleName) {\n        ref.scale = scaleName;\n    }\n    if (Object(_channeldef__WEBPACK_IMPORTED_MODULE_4__[\"isDatumDef\"])(fieldDef)) {\n        const { datum } = fieldDef;\n        if (Object(_datetime__WEBPACK_IMPORTED_MODULE_5__[\"isDateTime\"])(datum)) {\n            ref.signal = Object(_datetime__WEBPACK_IMPORTED_MODULE_5__[\"dateTimeToExpr\"])(datum);\n        }\n        else if (Object(_vega_schema__WEBPACK_IMPORTED_MODULE_13__[\"isSignalRef\"])(datum)) {\n            ref.signal = datum.signal;\n        }\n        else if (Object(_expr__WEBPACK_IMPORTED_MODULE_6__[\"isExprRef\"])(datum)) {\n            ref.signal = datum.expr;\n        }\n        else {\n            ref.value = datum;\n        }\n    }\n    else {\n        ref.field = Object(_channeldef__WEBPACK_IMPORTED_MODULE_4__[\"vgField\"])(fieldDef, opt);\n    }\n    if (encode) {\n        const { offset, band } = encode;\n        if (offset) {\n            ref.offset = offset;\n        }\n        if (band) {\n            ref.band = band;\n        }\n    }\n    return ref;\n}\n/**\n * Signal that returns the middle of a bin from start and end field. Should only be used with x and y.\n */\nfunction interpolatedSignalRef({ scaleName, fieldOrDatumDef, fieldOrDatumDef2, offset, startSuffix, band = 0.5 }) {\n    const expr = 0 < band && band < 1 ? 'datum' : undefined;\n    const start = Object(_channeldef__WEBPACK_IMPORTED_MODULE_4__[\"vgField\"])(fieldOrDatumDef, { expr, suffix: startSuffix });\n    const end = fieldOrDatumDef2 !== undefined\n        ? Object(_channeldef__WEBPACK_IMPORTED_MODULE_4__[\"vgField\"])(fieldOrDatumDef2, { expr })\n        : Object(_channeldef__WEBPACK_IMPORTED_MODULE_4__[\"vgField\"])(fieldOrDatumDef, { suffix: 'end', expr });\n    const ref = {};\n    if (band === 0 || band === 1) {\n        ref.scale = scaleName;\n        const val = band === 0 ? start : end;\n        ref.field = val;\n    }\n    else {\n        const datum = `${band} * ${start} + ${1 - band} * ${end}`;\n        ref.signal = `scale(\"${scaleName}\", ${datum})`;\n    }\n    if (offset) {\n        ref.offset = offset;\n    }\n    return ref;\n}\n/**\n * @returns {VgValueRef} Value Ref for xc / yc or mid point for other channels.\n */\nfunction midPoint({ channel, channelDef, channel2Def, markDef, config, scaleName, scale, stack, offset, defaultRef, band }) {\n    var _a;\n    // TODO: datum support\n    if (channelDef) {\n        /* istanbul ignore else */\n        if (Object(_channeldef__WEBPACK_IMPORTED_MODULE_4__[\"isFieldOrDatumDef\"])(channelDef)) {\n            if (Object(_channeldef__WEBPACK_IMPORTED_MODULE_4__[\"isTypedFieldDef\"])(channelDef)) {\n                band = band !== null && band !== void 0 ? band : Object(_channeldef__WEBPACK_IMPORTED_MODULE_4__[\"getBand\"])({\n                    channel,\n                    fieldDef: channelDef,\n                    fieldDef2: channel2Def,\n                    markDef,\n                    stack,\n                    config,\n                    isMidPoint: true\n                });\n                const { bin, timeUnit, type } = channelDef;\n                if (Object(_bin__WEBPACK_IMPORTED_MODULE_2__[\"isBinning\"])(bin) || (band && timeUnit && type === _type__WEBPACK_IMPORTED_MODULE_11__[\"TEMPORAL\"])) {\n                    // Use middle only for x an y to place marks in the center between start and end of the bin range.\n                    // We do not use the mid point for other channels (e.g. size) so that properties of legends and marks match.\n                    if (stack && stack.impute) {\n                        // For stack, we computed bin_mid so we can impute.\n                        return valueRefForFieldOrDatumDef(channelDef, scaleName, { binSuffix: 'mid' }, { offset });\n                    }\n                    if (band) {\n                        // if band = 0, no need to call interpolation\n                        // For non-stack, we can just calculate bin mid on the fly using signal.\n                        return interpolatedSignalRef({ scaleName, fieldOrDatumDef: channelDef, band, offset });\n                    }\n                    return valueRefForFieldOrDatumDef(channelDef, scaleName, Object(_channeldef__WEBPACK_IMPORTED_MODULE_4__[\"binRequiresRange\"])(channelDef, channel) ? { binSuffix: 'range' } : {}, {\n                        offset\n                    });\n                }\n                else if (Object(_bin__WEBPACK_IMPORTED_MODULE_2__[\"isBinned\"])(bin)) {\n                    if (Object(_channeldef__WEBPACK_IMPORTED_MODULE_4__[\"isFieldDef\"])(channel2Def)) {\n                        return interpolatedSignalRef({\n                            scaleName,\n                            fieldOrDatumDef: channelDef,\n                            fieldOrDatumDef2: channel2Def,\n                            band,\n                            offset\n                        });\n                    }\n                    else {\n                        const channel2 = channel === _channel__WEBPACK_IMPORTED_MODULE_3__[\"X\"] ? _channel__WEBPACK_IMPORTED_MODULE_3__[\"X2\"] : _channel__WEBPACK_IMPORTED_MODULE_3__[\"Y2\"];\n                        _log__WEBPACK_IMPORTED_MODULE_7__[\"warn\"](_log__WEBPACK_IMPORTED_MODULE_7__[\"message\"].channelRequiredForBinned(channel2));\n                    }\n                }\n            }\n            const scaleType = scale === null || scale === void 0 ? void 0 : scale.get('type');\n            return valueRefForFieldOrDatumDef(channelDef, scaleName, Object(_scale__WEBPACK_IMPORTED_MODULE_10__[\"hasDiscreteDomain\"])(scaleType) ? { binSuffix: 'range' } : {}, // no need for bin suffix if there is no scale\n            {\n                offset,\n                // For band, to get mid point, need to offset by half of the band\n                band: scaleType === 'band' ? (_a = band !== null && band !== void 0 ? band : channelDef.band) !== null && _a !== void 0 ? _a : 0.5 : undefined\n            });\n        }\n        else if (Object(_channeldef__WEBPACK_IMPORTED_MODULE_4__[\"isValueDef\"])(channelDef)) {\n            const value = channelDef.value;\n            const offsetMixins = offset ? { offset } : {};\n            return Object.assign(Object.assign({}, widthHeightValueOrSignalRef(channel, value)), offsetMixins);\n        }\n        // If channelDef is neither field def or value def, it's a condition-only def.\n        // In such case, we will use default ref.\n    }\n    if (Object(vega_util__WEBPACK_IMPORTED_MODULE_0__[\"isFunction\"])(defaultRef)) {\n        defaultRef = defaultRef();\n    }\n    if (defaultRef) {\n        // for non-position, ref could be undefined.\n        return Object.assign(Object.assign({}, defaultRef), (offset ? { offset } : {}));\n    }\n    return defaultRef;\n}\n/**\n * Convert special \"width\" and \"height\" values in Vega-Lite into Vega value ref.\n */\nfunction widthHeightValueOrSignalRef(channel, value) {\n    if (Object(_util__WEBPACK_IMPORTED_MODULE_12__[\"contains\"])(['x', 'x2'], channel) && value === 'width') {\n        return { field: { group: 'width' } };\n    }\n    else if (Object(_util__WEBPACK_IMPORTED_MODULE_12__[\"contains\"])(['y', 'y2'], channel) && value === 'height') {\n        return { field: { group: 'height' } };\n    }\n    return Object(_common__WEBPACK_IMPORTED_MODULE_14__[\"signalOrValueRef\"])(value);\n}\n//# sourceMappingURL=valueref.js.map//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,[encoded data, 14364 characters]\n//# sourceURL=webpack-internal:///./node_modules/vega-lite/build/src/compile/mark/encode/valueref.js\n");

/***/ }),

/***/ "./node_modules/vega-lite/build/src/compile/mark/encode/zindex.js":
/*!************************************************************************!*\
  !*** ./node_modules/vega-lite/build/src/compile/mark/encode/zindex.js ***!
  \************************************************************************/
/*! exports provided: zindex */
/***/ (function(module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"zindex\", function() { return zindex; });\n/* harmony import */ var _channeldef__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../../../channeldef */ \"./node_modules/vega-lite/build/src/channeldef.js\");\n/* harmony import */ var _mark__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../../../mark */ \"./node_modules/vega-lite/build/src/mark.js\");\n/* harmony import */ var _common__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ../../common */ \"./node_modules/vega-lite/build/src/compile/common.js\");\n/* harmony import */ var _conditional__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ./conditional */ \"./node_modules/vega-lite/build/src/compile/mark/encode/conditional.js\");\n\n\n\n\nfunction zindex(model) {\n    const { encoding, mark } = model;\n    const order = encoding.order;\n    if (!Object(_mark__WEBPACK_IMPORTED_MODULE_1__[\"isPathMark\"])(mark) && Object(_channeldef__WEBPACK_IMPORTED_MODULE_0__[\"isValueDef\"])(order)) {\n        return Object(_conditional__WEBPACK_IMPORTED_MODULE_3__[\"wrapCondition\"])(model, order, 'zindex', cd => Object(_common__WEBPACK_IMPORTED_MODULE_2__[\"signalOrValueRef\"])(cd.value));\n    }\n    return {};\n}\n//# sourceMappingURL=zindex.js.map//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvdmVnYS1saXRlL2J1aWxkL3NyYy9jb21waWxlL21hcmsvZW5jb2RlL3ppbmRleC5qcy5qcyIsInNvdXJjZXMiOlsid2VicGFjazovLy8uL25vZGVfbW9kdWxlcy92ZWdhLWxpdGUvYnVpbGQvc3JjL2NvbXBpbGUvbWFyay9lbmNvZGUvemluZGV4LmpzPzg4NDEiXSwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgaXNWYWx1ZURlZiB9IGZyb20gJy4uLy4uLy4uL2NoYW5uZWxkZWYnO1xuaW1wb3J0IHsgaXNQYXRoTWFyayB9IGZyb20gJy4uLy4uLy4uL21hcmsnO1xuaW1wb3J0IHsgc2lnbmFsT3JWYWx1ZVJlZiB9IGZyb20gJy4uLy4uL2NvbW1vbic7XG5pbXBvcnQgeyB3cmFwQ29uZGl0aW9uIH0gZnJvbSAnLi9jb25kaXRpb25hbCc7XG5leHBvcnQgZnVuY3Rpb24gemluZGV4KG1vZGVsKSB7XG4gICAgY29uc3QgeyBlbmNvZGluZywgbWFyayB9ID0gbW9kZWw7XG4gICAgY29uc3Qgb3JkZXIgPSBlbmNvZGluZy5vcmRlcjtcbiAgICBpZiAoIWlzUGF0aE1hcmsobWFyaykgJiYgaXNWYWx1ZURlZihvcmRlcikpIHtcbiAgICAgICAgcmV0dXJuIHdyYXBDb25kaXRpb24obW9kZWwsIG9yZGVyLCAnemluZGV4JywgY2QgPT4gc2lnbmFsT3JWYWx1ZVJlZihjZC52YWx1ZSkpO1xuICAgIH1cbiAgICByZXR1cm4ge307XG59XG4vLyMgc291cmNlTWFwcGluZ1VSTD16aW5kZXguanMubWFwIl0sIm1hcHBpbmdzIjoiQUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSIsInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///./node_modules/vega-lite/build/src/compile/mark/encode/zindex.js\n");

/***/ }),

/***/ "./node_modules/vega-lite/build/src/compile/mark/geoshape.js":
/*!*******************************************************************!*\
  !*** ./node_modules/vega-lite/build/src/compile/mark/geoshape.js ***!
  \*******************************************************************/
/*! exports provided: geoshape */
/***/ (function(module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"geoshape\", function() { return geoshape; });\n/* harmony import */ var _channeldef__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../../channeldef */ \"./node_modules/vega-lite/build/src/channeldef.js\");\n/* harmony import */ var _type__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../../type */ \"./node_modules/vega-lite/build/src/type.js\");\n/* harmony import */ var _encode__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./encode */ \"./node_modules/vega-lite/build/src/compile/mark/encode/index.js\");\n\n\n\nconst geoshape = {\n    vgMark: 'shape',\n    encodeEntry: (model) => {\n        return Object.assign({}, _encode__WEBPACK_IMPORTED_MODULE_2__[\"baseEncodeEntry\"](model, {\n            align: 'ignore',\n            baseline: 'ignore',\n            color: 'include',\n            size: 'ignore',\n            orient: 'ignore',\n            theta: 'ignore'\n        }));\n    },\n    postEncodingTransform: (model) => {\n        const { encoding } = model;\n        const shapeDef = encoding.shape;\n        const transform = Object.assign({ type: 'geoshape', projection: model.projectionName() }, (shapeDef && Object(_channeldef__WEBPACK_IMPORTED_MODULE_0__[\"isFieldDef\"])(shapeDef) && shapeDef.type === _type__WEBPACK_IMPORTED_MODULE_1__[\"GEOJSON\"]\n            ? { field: Object(_channeldef__WEBPACK_IMPORTED_MODULE_0__[\"vgField\"])(shapeDef, { expr: 'datum' }) }\n            : {}));\n        return [transform];\n    }\n};\n//# sourceMappingURL=geoshape.js.map//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvdmVnYS1saXRlL2J1aWxkL3NyYy9jb21waWxlL21hcmsvZ2Vvc2hhcGUuanMuanMiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvdmVnYS1saXRlL2J1aWxkL3NyYy9jb21waWxlL21hcmsvZ2Vvc2hhcGUuanM/NmM5MiJdLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBpc0ZpZWxkRGVmLCB2Z0ZpZWxkIH0gZnJvbSAnLi4vLi4vY2hhbm5lbGRlZic7XG5pbXBvcnQgeyBHRU9KU09OIH0gZnJvbSAnLi4vLi4vdHlwZSc7XG5pbXBvcnQgKiBhcyBlbmNvZGUgZnJvbSAnLi9lbmNvZGUnO1xuZXhwb3J0IGNvbnN0IGdlb3NoYXBlID0ge1xuICAgIHZnTWFyazogJ3NoYXBlJyxcbiAgICBlbmNvZGVFbnRyeTogKG1vZGVsKSA9PiB7XG4gICAgICAgIHJldHVybiBPYmplY3QuYXNzaWduKHt9LCBlbmNvZGUuYmFzZUVuY29kZUVudHJ5KG1vZGVsLCB7XG4gICAgICAgICAgICBhbGlnbjogJ2lnbm9yZScsXG4gICAgICAgICAgICBiYXNlbGluZTogJ2lnbm9yZScsXG4gICAgICAgICAgICBjb2xvcjogJ2luY2x1ZGUnLFxuICAgICAgICAgICAgc2l6ZTogJ2lnbm9yZScsXG4gICAgICAgICAgICBvcmllbnQ6ICdpZ25vcmUnLFxuICAgICAgICAgICAgdGhldGE6ICdpZ25vcmUnXG4gICAgICAgIH0pKTtcbiAgICB9LFxuICAgIHBvc3RFbmNvZGluZ1RyYW5zZm9ybTogKG1vZGVsKSA9PiB7XG4gICAgICAgIGNvbnN0IHsgZW5jb2RpbmcgfSA9IG1vZGVsO1xuICAgICAgICBjb25zdCBzaGFwZURlZiA9IGVuY29kaW5nLnNoYXBlO1xuICAgICAgICBjb25zdCB0cmFuc2Zvcm0gPSBPYmplY3QuYXNzaWduKHsgdHlwZTogJ2dlb3NoYXBlJywgcHJvamVjdGlvbjogbW9kZWwucHJvamVjdGlvbk5hbWUoKSB9LCAoc2hhcGVEZWYgJiYgaXNGaWVsZERlZihzaGFwZURlZikgJiYgc2hhcGVEZWYudHlwZSA9PT0gR0VPSlNPTlxuICAgICAgICAgICAgPyB7IGZpZWxkOiB2Z0ZpZWxkKHNoYXBlRGVmLCB7IGV4cHI6ICdkYXR1bScgfSkgfVxuICAgICAgICAgICAgOiB7fSkpO1xuICAgICAgICByZXR1cm4gW3RyYW5zZm9ybV07XG4gICAgfVxufTtcbi8vIyBzb3VyY2VNYXBwaW5nVVJMPWdlb3NoYXBlLmpzLm1hcCJdLCJtYXBwaW5ncyI6IkFBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBIiwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///./node_modules/vega-lite/build/src/compile/mark/geoshape.js\n");

/***/ }),

/***/ "./node_modules/vega-lite/build/src/compile/mark/image.js":
/*!****************************************************************!*\
  !*** ./node_modules/vega-lite/build/src/compile/mark/image.js ***!
  \****************************************************************/
/*! exports provided: image */
/***/ (function(module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"image\", function() { return image; });\n/* harmony import */ var _encode__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./encode */ \"./node_modules/vega-lite/build/src/compile/mark/encode/index.js\");\n\nconst image = {\n    vgMark: 'image',\n    encodeEntry: (model) => {\n        return Object.assign(Object.assign(Object.assign(Object.assign({}, _encode__WEBPACK_IMPORTED_MODULE_0__[\"baseEncodeEntry\"](model, {\n            align: 'ignore',\n            baseline: 'ignore',\n            color: 'ignore',\n            orient: 'ignore',\n            size: 'ignore',\n            theta: 'ignore'\n        })), _encode__WEBPACK_IMPORTED_MODULE_0__[\"rectPosition\"](model, 'x', 'image')), _encode__WEBPACK_IMPORTED_MODULE_0__[\"rectPosition\"](model, 'y', 'image')), _encode__WEBPACK_IMPORTED_MODULE_0__[\"text\"](model, 'url'));\n    }\n};\n//# sourceMappingURL=image.js.map//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvdmVnYS1saXRlL2J1aWxkL3NyYy9jb21waWxlL21hcmsvaW1hZ2UuanMuanMiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvdmVnYS1saXRlL2J1aWxkL3NyYy9jb21waWxlL21hcmsvaW1hZ2UuanM/NTk4YiJdLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgKiBhcyBlbmNvZGUgZnJvbSAnLi9lbmNvZGUnO1xuZXhwb3J0IGNvbnN0IGltYWdlID0ge1xuICAgIHZnTWFyazogJ2ltYWdlJyxcbiAgICBlbmNvZGVFbnRyeTogKG1vZGVsKSA9PiB7XG4gICAgICAgIHJldHVybiBPYmplY3QuYXNzaWduKE9iamVjdC5hc3NpZ24oT2JqZWN0LmFzc2lnbihPYmplY3QuYXNzaWduKHt9LCBlbmNvZGUuYmFzZUVuY29kZUVudHJ5KG1vZGVsLCB7XG4gICAgICAgICAgICBhbGlnbjogJ2lnbm9yZScsXG4gICAgICAgICAgICBiYXNlbGluZTogJ2lnbm9yZScsXG4gICAgICAgICAgICBjb2xvcjogJ2lnbm9yZScsXG4gICAgICAgICAgICBvcmllbnQ6ICdpZ25vcmUnLFxuICAgICAgICAgICAgc2l6ZTogJ2lnbm9yZScsXG4gICAgICAgICAgICB0aGV0YTogJ2lnbm9yZSdcbiAgICAgICAgfSkpLCBlbmNvZGUucmVjdFBvc2l0aW9uKG1vZGVsLCAneCcsICdpbWFnZScpKSwgZW5jb2RlLnJlY3RQb3NpdGlvbihtb2RlbCwgJ3knLCAnaW1hZ2UnKSksIGVuY29kZS50ZXh0KG1vZGVsLCAndXJsJykpO1xuICAgIH1cbn07XG4vLyMgc291cmNlTWFwcGluZ1VSTD1pbWFnZS5qcy5tYXAiXSwibWFwcGluZ3MiOiJBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSIsInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///./node_modules/vega-lite/build/src/compile/mark/image.js\n");

/***/ }),

/***/ "./node_modules/vega-lite/build/src/compile/mark/init.js":
/*!***************************************************************!*\
  !*** ./node_modules/vega-lite/build/src/compile/mark/init.js ***!
  \***************************************************************/
/*! exports provided: initMarkdef, defaultFilled */
/***/ (function(module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"initMarkdef\", function() { return initMarkdef; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"defaultFilled\", function() { return defaultFilled; });\n/* harmony import */ var _bin__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../../bin */ \"./node_modules/vega-lite/build/src/bin.js\");\n/* harmony import */ var _channeldef__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../../channeldef */ \"./node_modules/vega-lite/build/src/channeldef.js\");\n/* harmony import */ var _encoding__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ../../encoding */ \"./node_modules/vega-lite/build/src/encoding.js\");\n/* harmony import */ var _expr__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ../../expr */ \"./node_modules/vega-lite/build/src/expr.js\");\n/* harmony import */ var _log__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ../../log */ \"./node_modules/vega-lite/build/src/log/index.js\");\n/* harmony import */ var _mark__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! ../../mark */ \"./node_modules/vega-lite/build/src/mark.js\");\n/* harmony import */ var _type__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! ../../type */ \"./node_modules/vega-lite/build/src/type.js\");\n/* harmony import */ var _util__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! ../../util */ \"./node_modules/vega-lite/build/src/util.js\");\n/* harmony import */ var _common__WEBPACK_IMPORTED_MODULE_8__ = __webpack_require__(/*! ../common */ \"./node_modules/vega-lite/build/src/compile/common.js\");\n\n\n\n\n\n\n\n\n\nfunction initMarkdef(originalMarkDef, encoding, config) {\n    const markDef = Object(_expr__WEBPACK_IMPORTED_MODULE_3__[\"replaceExprRefInIndex\"])(originalMarkDef);\n    // set orient, which can be overridden by rules as sometimes the specified orient is invalid.\n    const specifiedOrient = Object(_common__WEBPACK_IMPORTED_MODULE_8__[\"getMarkPropOrConfig\"])('orient', markDef, config);\n    markDef.orient = orient(markDef.type, encoding, specifiedOrient);\n    if (specifiedOrient !== undefined && specifiedOrient !== markDef.orient) {\n        _log__WEBPACK_IMPORTED_MODULE_4__[\"warn\"](_log__WEBPACK_IMPORTED_MODULE_4__[\"message\"].orientOverridden(markDef.orient, specifiedOrient));\n    }\n    if (markDef.type === 'bar' && markDef.orient) {\n        const cornerRadiusEnd = Object(_common__WEBPACK_IMPORTED_MODULE_8__[\"getMarkPropOrConfig\"])('cornerRadiusEnd', markDef, config);\n        if (cornerRadiusEnd !== undefined) {\n            const newProps = (markDef.orient === 'horizontal' && encoding.x2) || (markDef.orient === 'vertical' && encoding.y2)\n                ? ['cornerRadius']\n                : _mark__WEBPACK_IMPORTED_MODULE_5__[\"BAR_CORNER_RADIUS_INDEX\"][markDef.orient];\n            for (const newProp of newProps) {\n                markDef[newProp] = cornerRadiusEnd;\n            }\n            if (markDef.cornerRadiusEnd !== undefined) {\n                delete markDef.cornerRadiusEnd; // no need to keep the original cap cornerRadius\n            }\n        }\n    }\n    // set opacity and filled if not specified in mark config\n    const specifiedOpacity = Object(_common__WEBPACK_IMPORTED_MODULE_8__[\"getMarkPropOrConfig\"])('opacity', markDef, config);\n    if (specifiedOpacity === undefined) {\n        markDef.opacity = opacity(markDef.type, encoding);\n    }\n    // set cursor, which should be pointer if href channel is present unless otherwise specified\n    const specifiedCursor = Object(_common__WEBPACK_IMPORTED_MODULE_8__[\"getMarkPropOrConfig\"])('cursor', markDef, config);\n    if (specifiedCursor === undefined) {\n        markDef.cursor = cursor(markDef, encoding, config);\n    }\n    return markDef;\n}\nfunction cursor(markDef, encoding, config) {\n    if (encoding.href || markDef.href || Object(_common__WEBPACK_IMPORTED_MODULE_8__[\"getMarkPropOrConfig\"])('href', markDef, config)) {\n        return 'pointer';\n    }\n    return markDef.cursor;\n}\nfunction opacity(mark, encoding) {\n    if (Object(_util__WEBPACK_IMPORTED_MODULE_7__[\"contains\"])([_mark__WEBPACK_IMPORTED_MODULE_5__[\"POINT\"], _mark__WEBPACK_IMPORTED_MODULE_5__[\"TICK\"], _mark__WEBPACK_IMPORTED_MODULE_5__[\"CIRCLE\"], _mark__WEBPACK_IMPORTED_MODULE_5__[\"SQUARE\"]], mark)) {\n        // point-based marks\n        if (!Object(_encoding__WEBPACK_IMPORTED_MODULE_2__[\"isAggregate\"])(encoding)) {\n            return 0.7;\n        }\n    }\n    return undefined;\n}\nfunction defaultFilled(markDef, config, { graticule }) {\n    if (graticule) {\n        return false;\n    }\n    const filledConfig = Object(_common__WEBPACK_IMPORTED_MODULE_8__[\"getMarkConfig\"])('filled', markDef, config);\n    const mark = markDef.type;\n    return Object(_util__WEBPACK_IMPORTED_MODULE_7__[\"getFirstDefined\"])(filledConfig, mark !== _mark__WEBPACK_IMPORTED_MODULE_5__[\"POINT\"] && mark !== _mark__WEBPACK_IMPORTED_MODULE_5__[\"LINE\"] && mark !== _mark__WEBPACK_IMPORTED_MODULE_5__[\"RULE\"]);\n}\nfunction orient(mark, encoding, specifiedOrient) {\n    switch (mark) {\n        case _mark__WEBPACK_IMPORTED_MODULE_5__[\"POINT\"]:\n        case _mark__WEBPACK_IMPORTED_MODULE_5__[\"CIRCLE\"]:\n        case _mark__WEBPACK_IMPORTED_MODULE_5__[\"SQUARE\"]:\n        case _mark__WEBPACK_IMPORTED_MODULE_5__[\"TEXT\"]:\n        case _mark__WEBPACK_IMPORTED_MODULE_5__[\"RECT\"]:\n        case _mark__WEBPACK_IMPORTED_MODULE_5__[\"IMAGE\"]:\n            // orient is meaningless for these marks.\n            return undefined;\n    }\n    const { x, y, x2, y2 } = encoding;\n    switch (mark) {\n        case _mark__WEBPACK_IMPORTED_MODULE_5__[\"BAR\"]:\n            if (Object(_channeldef__WEBPACK_IMPORTED_MODULE_1__[\"isFieldDef\"])(x) && (Object(_bin__WEBPACK_IMPORTED_MODULE_0__[\"isBinned\"])(x.bin) || (Object(_channeldef__WEBPACK_IMPORTED_MODULE_1__[\"isFieldDef\"])(y) && y.aggregate && !x.aggregate))) {\n                return 'vertical';\n            }\n            if (Object(_channeldef__WEBPACK_IMPORTED_MODULE_1__[\"isFieldDef\"])(y) && (Object(_bin__WEBPACK_IMPORTED_MODULE_0__[\"isBinned\"])(y.bin) || (Object(_channeldef__WEBPACK_IMPORTED_MODULE_1__[\"isFieldDef\"])(x) && x.aggregate && !y.aggregate))) {\n                return 'horizontal';\n            }\n            if (y2 || x2) {\n                // Ranged bar does not always have clear orientation, so we allow overriding\n                if (specifiedOrient) {\n                    return specifiedOrient;\n                }\n                // If y is range and x is non-range, non-bin Q, y is likely a prebinned field\n                if (!x2) {\n                    if ((Object(_channeldef__WEBPACK_IMPORTED_MODULE_1__[\"isFieldDef\"])(x) && x.type === _type__WEBPACK_IMPORTED_MODULE_6__[\"QUANTITATIVE\"] && !Object(_bin__WEBPACK_IMPORTED_MODULE_0__[\"isBinning\"])(x.bin)) || Object(_channeldef__WEBPACK_IMPORTED_MODULE_1__[\"isNumericDataDef\"])(x)) {\n                        return 'horizontal';\n                    }\n                }\n                // If x is range and y is non-range, non-bin Q, x is likely a prebinned field\n                if (!y2) {\n                    if ((Object(_channeldef__WEBPACK_IMPORTED_MODULE_1__[\"isFieldDef\"])(y) && y.type === _type__WEBPACK_IMPORTED_MODULE_6__[\"QUANTITATIVE\"] && !Object(_bin__WEBPACK_IMPORTED_MODULE_0__[\"isBinning\"])(y.bin)) || Object(_channeldef__WEBPACK_IMPORTED_MODULE_1__[\"isNumericDataDef\"])(y)) {\n                        return 'vertical';\n                    }\n                }\n            }\n        // falls through\n        case _mark__WEBPACK_IMPORTED_MODULE_5__[\"RULE\"]:\n            // return undefined for line segment rule and bar with both axis ranged\n            // we have to ignore the case that the data are already binned\n            if (x2 && !(Object(_channeldef__WEBPACK_IMPORTED_MODULE_1__[\"isFieldDef\"])(x) && Object(_bin__WEBPACK_IMPORTED_MODULE_0__[\"isBinned\"])(x.bin)) && y2 && !(Object(_channeldef__WEBPACK_IMPORTED_MODULE_1__[\"isFieldDef\"])(y) && Object(_bin__WEBPACK_IMPORTED_MODULE_0__[\"isBinned\"])(y.bin))) {\n                return undefined;\n            }\n        // falls through\n        case _mark__WEBPACK_IMPORTED_MODULE_5__[\"AREA\"]:\n            // If there are range for both x and y, y (vertical) has higher precedence.\n            if (y2) {\n                if (Object(_channeldef__WEBPACK_IMPORTED_MODULE_1__[\"isFieldDef\"])(y) && Object(_bin__WEBPACK_IMPORTED_MODULE_0__[\"isBinned\"])(y.bin)) {\n                    return 'horizontal';\n                }\n                else {\n                    return 'vertical';\n                }\n            }\n            else if (x2) {\n                if (Object(_channeldef__WEBPACK_IMPORTED_MODULE_1__[\"isFieldDef\"])(x) && Object(_bin__WEBPACK_IMPORTED_MODULE_0__[\"isBinned\"])(x.bin)) {\n                    return 'vertical';\n                }\n                else {\n                    return 'horizontal';\n                }\n            }\n            else if (mark === _mark__WEBPACK_IMPORTED_MODULE_5__[\"RULE\"]) {\n                if (x && !y) {\n                    return 'vertical';\n                }\n                else if (y && !x) {\n                    return 'horizontal';\n                }\n            }\n        // falls through\n        case _mark__WEBPACK_IMPORTED_MODULE_5__[\"LINE\"]:\n        case _mark__WEBPACK_IMPORTED_MODULE_5__[\"TICK\"]: {\n            // Tick is opposite to bar, line, area and never have ranged mark.\n            const xIsContinuous = Object(_channeldef__WEBPACK_IMPORTED_MODULE_1__[\"isContinuousFieldOrDatumDef\"])(x);\n            const yIsContinuous = Object(_channeldef__WEBPACK_IMPORTED_MODULE_1__[\"isContinuousFieldOrDatumDef\"])(y);\n            if (xIsContinuous && !yIsContinuous) {\n                return mark !== 'tick' ? 'horizontal' : 'vertical';\n            }\n            else if (!xIsContinuous && yIsContinuous) {\n                return mark !== 'tick' ? 'vertical' : 'horizontal';\n            }\n            else if (xIsContinuous && yIsContinuous) {\n                const xDef = x; // we can cast here since they are surely fieldDef\n                const yDef = y;\n                const xIsTemporal = xDef.type === _type__WEBPACK_IMPORTED_MODULE_6__[\"TEMPORAL\"];\n                const yIsTemporal = yDef.type === _type__WEBPACK_IMPORTED_MODULE_6__[\"TEMPORAL\"];\n                // temporal without timeUnit is considered continuous, but better serves as dimension\n                if (xIsTemporal && !yIsTemporal) {\n                    return mark !== 'tick' ? 'vertical' : 'horizontal';\n                }\n                else if (!xIsTemporal && yIsTemporal) {\n                    return mark !== 'tick' ? 'horizontal' : 'vertical';\n                }\n                if (!xDef.aggregate && yDef.aggregate) {\n                    return mark !== 'tick' ? 'vertical' : 'horizontal';\n                }\n                else if (xDef.aggregate && !yDef.aggregate) {\n                    return mark !== 'tick' ? 'horizontal' : 'vertical';\n                }\n                if (specifiedOrient) {\n                    // When ambiguous, use user specified one.\n                    return specifiedOrient;\n                }\n                return 'vertical';\n            }\n            else {\n                // Discrete x Discrete case\n                if (specifiedOrient) {\n                    // When ambiguous, use user specified one.\n                    return specifiedOrient;\n                }\n                return undefined;\n            }\n        }\n    }\n    return 'vertical';\n}\n//# sourceMappingURL=init.js.map//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,[encoded data, 12448 characters]\n//# sourceURL=webpack-internal:///./node_modules/vega-lite/build/src/compile/mark/init.js\n");

/***/ }),

/***/ "./node_modules/vega-lite/build/src/compile/mark/line.js":
/*!***************************************************************!*\
  !*** ./node_modules/vega-lite/build/src/compile/mark/line.js ***!
  \***************************************************************/
/*! exports provided: line, trail */
/***/ (function(module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"line\", function() { return line; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"trail\", function() { return trail; });\n/* harmony import */ var _encode__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./encode */ \"./node_modules/vega-lite/build/src/compile/mark/encode/index.js\");\n\nconst line = {\n    vgMark: 'line',\n    encodeEntry: (model) => {\n        return Object.assign(Object.assign(Object.assign(Object.assign(Object.assign({}, _encode__WEBPACK_IMPORTED_MODULE_0__[\"baseEncodeEntry\"](model, {\n            align: 'ignore',\n            baseline: 'ignore',\n            color: 'include',\n            size: 'ignore',\n            orient: 'ignore',\n            theta: 'ignore'\n        })), _encode__WEBPACK_IMPORTED_MODULE_0__[\"pointPosition\"]('x', model, { defaultPos: 'mid' })), _encode__WEBPACK_IMPORTED_MODULE_0__[\"pointPosition\"]('y', model, { defaultPos: 'mid' })), _encode__WEBPACK_IMPORTED_MODULE_0__[\"nonPosition\"]('size', model, {\n            vgChannel: 'strokeWidth' // VL's line size is strokeWidth\n        })), _encode__WEBPACK_IMPORTED_MODULE_0__[\"defined\"](model));\n    }\n};\nconst trail = {\n    vgMark: 'trail',\n    encodeEntry: (model) => {\n        return Object.assign(Object.assign(Object.assign(Object.assign(Object.assign({}, _encode__WEBPACK_IMPORTED_MODULE_0__[\"baseEncodeEntry\"](model, {\n            align: 'ignore',\n            baseline: 'ignore',\n            color: 'include',\n            size: 'include',\n            orient: 'ignore',\n            theta: 'ignore'\n        })), _encode__WEBPACK_IMPORTED_MODULE_0__[\"pointPosition\"]('x', model, { defaultPos: 'mid' })), _encode__WEBPACK_IMPORTED_MODULE_0__[\"pointPosition\"]('y', model, { defaultPos: 'mid' })), _encode__WEBPACK_IMPORTED_MODULE_0__[\"nonPosition\"]('size', model)), _encode__WEBPACK_IMPORTED_MODULE_0__[\"defined\"](model));\n    }\n};\n//# sourceMappingURL=line.js.map//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvdmVnYS1saXRlL2J1aWxkL3NyYy9jb21waWxlL21hcmsvbGluZS5qcy5qcyIsInNvdXJjZXMiOlsid2VicGFjazovLy8uL25vZGVfbW9kdWxlcy92ZWdhLWxpdGUvYnVpbGQvc3JjL2NvbXBpbGUvbWFyay9saW5lLmpzP2MwNWUiXSwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0ICogYXMgZW5jb2RlIGZyb20gJy4vZW5jb2RlJztcbmV4cG9ydCBjb25zdCBsaW5lID0ge1xuICAgIHZnTWFyazogJ2xpbmUnLFxuICAgIGVuY29kZUVudHJ5OiAobW9kZWwpID0+IHtcbiAgICAgICAgcmV0dXJuIE9iamVjdC5hc3NpZ24oT2JqZWN0LmFzc2lnbihPYmplY3QuYXNzaWduKE9iamVjdC5hc3NpZ24oT2JqZWN0LmFzc2lnbih7fSwgZW5jb2RlLmJhc2VFbmNvZGVFbnRyeShtb2RlbCwge1xuICAgICAgICAgICAgYWxpZ246ICdpZ25vcmUnLFxuICAgICAgICAgICAgYmFzZWxpbmU6ICdpZ25vcmUnLFxuICAgICAgICAgICAgY29sb3I6ICdpbmNsdWRlJyxcbiAgICAgICAgICAgIHNpemU6ICdpZ25vcmUnLFxuICAgICAgICAgICAgb3JpZW50OiAnaWdub3JlJyxcbiAgICAgICAgICAgIHRoZXRhOiAnaWdub3JlJ1xuICAgICAgICB9KSksIGVuY29kZS5wb2ludFBvc2l0aW9uKCd4JywgbW9kZWwsIHsgZGVmYXVsdFBvczogJ21pZCcgfSkpLCBlbmNvZGUucG9pbnRQb3NpdGlvbigneScsIG1vZGVsLCB7IGRlZmF1bHRQb3M6ICdtaWQnIH0pKSwgZW5jb2RlLm5vblBvc2l0aW9uKCdzaXplJywgbW9kZWwsIHtcbiAgICAgICAgICAgIHZnQ2hhbm5lbDogJ3N0cm9rZVdpZHRoJyAvLyBWTCdzIGxpbmUgc2l6ZSBpcyBzdHJva2VXaWR0aFxuICAgICAgICB9KSksIGVuY29kZS5kZWZpbmVkKG1vZGVsKSk7XG4gICAgfVxufTtcbmV4cG9ydCBjb25zdCB0cmFpbCA9IHtcbiAgICB2Z01hcms6ICd0cmFpbCcsXG4gICAgZW5jb2RlRW50cnk6IChtb2RlbCkgPT4ge1xuICAgICAgICByZXR1cm4gT2JqZWN0LmFzc2lnbihPYmplY3QuYXNzaWduKE9iamVjdC5hc3NpZ24oT2JqZWN0LmFzc2lnbihPYmplY3QuYXNzaWduKHt9LCBlbmNvZGUuYmFzZUVuY29kZUVudHJ5KG1vZGVsLCB7XG4gICAgICAgICAgICBhbGlnbjogJ2lnbm9yZScsXG4gICAgICAgICAgICBiYXNlbGluZTogJ2lnbm9yZScsXG4gICAgICAgICAgICBjb2xvcjogJ2luY2x1ZGUnLFxuICAgICAgICAgICAgc2l6ZTogJ2luY2x1ZGUnLFxuICAgICAgICAgICAgb3JpZW50OiAnaWdub3JlJyxcbiAgICAgICAgICAgIHRoZXRhOiAnaWdub3JlJ1xuICAgICAgICB9KSksIGVuY29kZS5wb2ludFBvc2l0aW9uKCd4JywgbW9kZWwsIHsgZGVmYXVsdFBvczogJ21pZCcgfSkpLCBlbmNvZGUucG9pbnRQb3NpdGlvbigneScsIG1vZGVsLCB7IGRlZmF1bHRQb3M6ICdtaWQnIH0pKSwgZW5jb2RlLm5vblBvc2l0aW9uKCdzaXplJywgbW9kZWwpKSwgZW5jb2RlLmRlZmluZWQobW9kZWwpKTtcbiAgICB9XG59O1xuLy8jIHNvdXJjZU1hcHBpbmdVUkw9bGluZS5qcy5tYXAiXSwibWFwcGluZ3MiOiJBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBIiwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///./node_modules/vega-lite/build/src/compile/mark/line.js\n");

/***/ }),

/***/ "./node_modules/vega-lite/build/src/compile/mark/mark.js":
/*!***************************************************************!*\
  !*** ./node_modules/vega-lite/build/src/compile/mark/mark.js ***!
  \***************************************************************/
/*! exports provided: parseMarkGroups, getSort */
/***/ (function(module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"parseMarkGroups\", function() { return parseMarkGroups; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"getSort\", function() { return getSort; });\n/* harmony import */ var vega_util__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! vega-util */ \"./node_modules/vega-lite/node_modules/vega-util/build/vega-util.module.js\");\n/* harmony import */ var _channeldef__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../../channeldef */ \"./node_modules/vega-lite/build/src/channeldef.js\");\n/* harmony import */ var _data__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ../../data */ \"./node_modules/vega-lite/build/src/data.js\");\n/* harmony import */ var _encoding__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ../../encoding */ \"./node_modules/vega-lite/build/src/encoding.js\");\n/* harmony import */ var _mark__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ../../mark */ \"./node_modules/vega-lite/build/src/mark.js\");\n/* harmony import */ var _sort__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! ../../sort */ \"./node_modules/vega-lite/build/src/sort.js\");\n/* harmony import */ var _util__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! ../../util */ \"./node_modules/vega-lite/build/src/util.js\");\n/* harmony import */ var _vega_schema__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! ../../vega.schema */ \"./node_modules/vega-lite/build/src/vega.schema.js\");\n/* harmony import */ var _common__WEBPACK_IMPORTED_MODULE_8__ = __webpack_require__(/*! ../common */ \"./node_modules/vega-lite/build/src/compile/common.js\");\n/* harmony import */ var _arc__WEBPACK_IMPORTED_MODULE_9__ = __webpack_require__(/*! ./arc */ \"./node_modules/vega-lite/build/src/compile/mark/arc.js\");\n/* harmony import */ var _area__WEBPACK_IMPORTED_MODULE_10__ = __webpack_require__(/*! ./area */ \"./node_modules/vega-lite/build/src/compile/mark/area.js\");\n/* harmony import */ var _bar__WEBPACK_IMPORTED_MODULE_11__ = __webpack_require__(/*! ./bar */ \"./node_modules/vega-lite/build/src/compile/mark/bar.js\");\n/* harmony import */ var _geoshape__WEBPACK_IMPORTED_MODULE_12__ = __webpack_require__(/*! ./geoshape */ \"./node_modules/vega-lite/build/src/compile/mark/geoshape.js\");\n/* harmony import */ var _image__WEBPACK_IMPORTED_MODULE_13__ = __webpack_require__(/*! ./image */ \"./node_modules/vega-lite/build/src/compile/mark/image.js\");\n/* harmony import */ var _line__WEBPACK_IMPORTED_MODULE_14__ = __webpack_require__(/*! ./line */ \"./node_modules/vega-lite/build/src/compile/mark/line.js\");\n/* harmony import */ var _point__WEBPACK_IMPORTED_MODULE_15__ = __webpack_require__(/*! ./point */ \"./node_modules/vega-lite/build/src/compile/mark/point.js\");\n/* harmony import */ var _rect__WEBPACK_IMPORTED_MODULE_16__ = __webpack_require__(/*! ./rect */ \"./node_modules/vega-lite/build/src/compile/mark/rect.js\");\n/* harmony import */ var _rule__WEBPACK_IMPORTED_MODULE_17__ = __webpack_require__(/*! ./rule */ \"./node_modules/vega-lite/build/src/compile/mark/rule.js\");\n/* harmony import */ var _text__WEBPACK_IMPORTED_MODULE_18__ = __webpack_require__(/*! ./text */ \"./node_modules/vega-lite/build/src/compile/mark/text.js\");\n/* harmony import */ var _tick__WEBPACK_IMPORTED_MODULE_19__ = __webpack_require__(/*! ./tick */ \"./node_modules/vega-lite/build/src/compile/mark/tick.js\");\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\nconst markCompiler = {\n    arc: _arc__WEBPACK_IMPORTED_MODULE_9__[\"arc\"],\n    area: _area__WEBPACK_IMPORTED_MODULE_10__[\"area\"],\n    bar: _bar__WEBPACK_IMPORTED_MODULE_11__[\"bar\"],\n    circle: _point__WEBPACK_IMPORTED_MODULE_15__[\"circle\"],\n    geoshape: _geoshape__WEBPACK_IMPORTED_MODULE_12__[\"geoshape\"],\n    image: _image__WEBPACK_IMPORTED_MODULE_13__[\"image\"],\n    line: _line__WEBPACK_IMPORTED_MODULE_14__[\"line\"],\n    point: _point__WEBPACK_IMPORTED_MODULE_15__[\"point\"],\n    rect: _rect__WEBPACK_IMPORTED_MODULE_16__[\"rect\"],\n    rule: _rule__WEBPACK_IMPORTED_MODULE_17__[\"rule\"],\n    square: _point__WEBPACK_IMPORTED_MODULE_15__[\"square\"],\n    text: _text__WEBPACK_IMPORTED_MODULE_18__[\"text\"],\n    tick: _tick__WEBPACK_IMPORTED_MODULE_19__[\"tick\"],\n    trail: _line__WEBPACK_IMPORTED_MODULE_14__[\"trail\"]\n};\nfunction parseMarkGroups(model) {\n    if (Object(_util__WEBPACK_IMPORTED_MODULE_6__[\"contains\"])([_mark__WEBPACK_IMPORTED_MODULE_4__[\"LINE\"], _mark__WEBPACK_IMPORTED_MODULE_4__[\"AREA\"], _mark__WEBPACK_IMPORTED_MODULE_4__[\"TRAIL\"]], model.mark)) {\n        const details = Object(_encoding__WEBPACK_IMPORTED_MODULE_3__[\"pathGroupingFields\"])(model.mark, model.encoding);\n        if (details.length > 0) {\n            return getPathGroups(model, details);\n        }\n        // otherwise use standard mark groups\n    }\n    else if (Object(_util__WEBPACK_IMPORTED_MODULE_6__[\"contains\"])([_mark__WEBPACK_IMPORTED_MODULE_4__[\"BAR\"]], model.mark)) {\n        const hasCornerRadius = _vega_schema__WEBPACK_IMPORTED_MODULE_7__[\"VG_CORNERRADIUS_CHANNELS\"].some(prop => Object(_common__WEBPACK_IMPORTED_MODULE_8__[\"getMarkPropOrConfig\"])(prop, model.markDef, model.config));\n        if (model.stack && !model.fieldDef('size') && hasCornerRadius) {\n            return getGroupsForStackedBarWithCornerRadius(model);\n        }\n    }\n    return getMarkGroup(model);\n}\nconst FACETED_PATH_PREFIX = 'faceted_path_';\nfunction getPathGroups(model, details) {\n    // TODO: for non-stacked plot, map order to zindex. (Maybe rename order for layer to zindex?)\n    return [\n        {\n            name: model.getName('pathgroup'),\n            type: 'group',\n            from: {\n                facet: {\n                    name: FACETED_PATH_PREFIX + model.requestDataName(_data__WEBPACK_IMPORTED_MODULE_2__[\"DataSourceType\"].Main),\n                    data: model.requestDataName(_data__WEBPACK_IMPORTED_MODULE_2__[\"DataSourceType\"].Main),\n                    groupby: details\n                }\n            },\n            encode: {\n                update: {\n                    width: { field: { group: 'width' } },\n                    height: { field: { group: 'height' } }\n                }\n            },\n            // With subfacet for line/area group, need to use faceted data from above.\n            marks: getMarkGroup(model, { fromPrefix: FACETED_PATH_PREFIX })\n        }\n    ];\n}\nconst STACK_GROUP_PREFIX = 'stack_group_';\n/**\n * We need to put stacked bars into groups in order to enable cornerRadius for stacks.\n * If stack is used and the model doesn't have size encoding, we put the mark into groups,\n * and apply cornerRadius properties at the group.\n */\nfunction getGroupsForStackedBarWithCornerRadius(model) {\n    // Generate the mark\n    const [mark] = getMarkGroup(model, { fromPrefix: STACK_GROUP_PREFIX });\n    // Get the scale for the stacked field\n    const fieldScale = model.scaleName(model.stack.fieldChannel);\n    const stackField = (opt = {}) => model.vgField(model.stack.fieldChannel, opt);\n    // Find the min/max of the pixel value on the stacked direction\n    const stackFieldGroup = (func, expr) => {\n        const vgFieldMinMax = [\n            stackField({ prefix: 'min', suffix: 'start', expr }),\n            stackField({ prefix: 'max', suffix: 'start', expr }),\n            stackField({ prefix: 'min', suffix: 'end', expr }),\n            stackField({ prefix: 'max', suffix: 'end', expr })\n        ];\n        return `${func}(${vgFieldMinMax.map(field => `scale('${fieldScale}',${field})`).join(',')})`;\n    };\n    let groupUpdate;\n    let innerGroupUpdate;\n    // Build the encoding for group and an inner group\n    if (model.stack.fieldChannel === 'x') {\n        // Move cornerRadius, y/yc/y2/height properties to group\n        // Group x/x2 should be the min/max of the marks within\n        groupUpdate = Object.assign(Object.assign({}, Object(_util__WEBPACK_IMPORTED_MODULE_6__[\"pick\"])(mark.encode.update, ['y', 'yc', 'y2', 'height', ..._vega_schema__WEBPACK_IMPORTED_MODULE_7__[\"VG_CORNERRADIUS_CHANNELS\"]])), { x: { signal: stackFieldGroup('min', 'datum') }, x2: { signal: stackFieldGroup('max', 'datum') }, clip: { value: true } });\n        // Inner group should revert the x translation, and pass height through\n        innerGroupUpdate = {\n            x: { field: { group: 'x' }, mult: -1 },\n            height: { field: { group: 'height' } }\n        };\n        // The marks should use the same height as group, without y/yc/y2 properties (because it's already done by group)\n        // This is why size encoding is not supported yet\n        mark.encode.update = Object.assign(Object.assign({}, Object(_util__WEBPACK_IMPORTED_MODULE_6__[\"omit\"])(mark.encode.update, ['y', 'yc', 'y2'])), { height: { field: { group: 'height' } } });\n    }\n    else {\n        groupUpdate = Object.assign(Object.assign({}, Object(_util__WEBPACK_IMPORTED_MODULE_6__[\"pick\"])(mark.encode.update, ['x', 'xc', 'x2', 'width'])), { y: { signal: stackFieldGroup('min', 'datum') }, y2: { signal: stackFieldGroup('max', 'datum') }, clip: { value: true } });\n        innerGroupUpdate = {\n            y: { field: { group: 'y' }, mult: -1 },\n            width: { field: { group: 'width' } }\n        };\n        mark.encode.update = Object.assign(Object.assign({}, Object(_util__WEBPACK_IMPORTED_MODULE_6__[\"omit\"])(mark.encode.update, ['x', 'xc', 'x2'])), { width: { field: { group: 'width' } } });\n    }\n    // Deal with cornerRadius properties\n    for (const key of _vega_schema__WEBPACK_IMPORTED_MODULE_7__[\"VG_CORNERRADIUS_CHANNELS\"]) {\n        const configValue = Object(_common__WEBPACK_IMPORTED_MODULE_8__[\"getMarkConfig\"])(key, model.markDef, model.config);\n        // Move from mark to group\n        if (mark.encode.update[key]) {\n            groupUpdate[key] = mark.encode.update[key];\n            delete mark.encode.update[key];\n        }\n        else if (configValue) {\n            groupUpdate[key] = Object(_common__WEBPACK_IMPORTED_MODULE_8__[\"signalOrValueRef\"])(configValue);\n        }\n        // Overwrite any cornerRadius on mark set by config --- they are already moved to the group\n        if (configValue) {\n            mark.encode.update[key] = { value: 0 };\n        }\n    }\n    // For bin and time unit, we have to add bin/timeunit -end channels.\n    const groupByField = model.fieldDef(model.stack.groupbyChannel);\n    const groupby = Object(_channeldef__WEBPACK_IMPORTED_MODULE_1__[\"vgField\"])(groupByField) ? [Object(_channeldef__WEBPACK_IMPORTED_MODULE_1__[\"vgField\"])(groupByField)] : [];\n    if ((groupByField === null || groupByField === void 0 ? void 0 : groupByField.bin) || (groupByField === null || groupByField === void 0 ? void 0 : groupByField.timeUnit)) {\n        groupby.push(Object(_channeldef__WEBPACK_IMPORTED_MODULE_1__[\"vgField\"])(groupByField, { binSuffix: 'end' }));\n    }\n    const strokeProperties = [\n        'stroke',\n        'strokeWidth',\n        'strokeJoin',\n        'strokeCap',\n        'strokeDash',\n        'strokeDashOffset',\n        'strokeMiterLimit',\n        'strokeOpacity'\n    ];\n    // Generate stroke properties for the group\n    groupUpdate = strokeProperties.reduce((encode, prop) => {\n        if (mark.encode.update[prop]) {\n            return Object.assign(Object.assign({}, encode), { [prop]: mark.encode.update[prop] });\n        }\n        else {\n            const configValue = Object(_common__WEBPACK_IMPORTED_MODULE_8__[\"getMarkConfig\"])(prop, model.markDef, model.config);\n            if (configValue !== undefined) {\n                return Object.assign(Object.assign({}, encode), { [prop]: Object(_common__WEBPACK_IMPORTED_MODULE_8__[\"signalOrValueRef\"])(configValue) });\n            }\n            else {\n                return encode;\n            }\n        }\n    }, groupUpdate);\n    // Apply strokeForeground and strokeOffset if stroke is used\n    if (groupUpdate.stroke) {\n        groupUpdate.strokeForeground = { value: true };\n        groupUpdate.strokeOffset = { value: 0 };\n    }\n    return [\n        {\n            type: 'group',\n            from: {\n                facet: {\n                    data: model.requestDataName(_data__WEBPACK_IMPORTED_MODULE_2__[\"DataSourceType\"].Main),\n                    name: STACK_GROUP_PREFIX + model.requestDataName(_data__WEBPACK_IMPORTED_MODULE_2__[\"DataSourceType\"].Main),\n                    groupby,\n                    aggregate: {\n                        fields: [\n                            stackField({ suffix: 'start' }),\n                            stackField({ suffix: 'start' }),\n                            stackField({ suffix: 'end' }),\n                            stackField({ suffix: 'end' })\n                        ],\n                        ops: ['min', 'max', 'min', 'max']\n                    }\n                }\n            },\n            encode: {\n                update: groupUpdate\n            },\n            marks: [\n                {\n                    type: 'group',\n                    encode: { update: innerGroupUpdate },\n                    marks: [mark]\n                }\n            ]\n        }\n    ];\n}\nfunction getSort(model) {\n    const { encoding, stack, mark, markDef, config } = model;\n    const order = encoding.order;\n    if ((!Object(vega_util__WEBPACK_IMPORTED_MODULE_0__[\"isArray\"])(order) && Object(_channeldef__WEBPACK_IMPORTED_MODULE_1__[\"isValueDef\"])(order) && Object(_util__WEBPACK_IMPORTED_MODULE_6__[\"isNullOrFalse\"])(order.value)) ||\n        (!order && Object(_util__WEBPACK_IMPORTED_MODULE_6__[\"isNullOrFalse\"])(Object(_common__WEBPACK_IMPORTED_MODULE_8__[\"getMarkPropOrConfig\"])('order', markDef, config)))) {\n        return undefined;\n    }\n    else if ((Object(vega_util__WEBPACK_IMPORTED_MODULE_0__[\"isArray\"])(order) || Object(_channeldef__WEBPACK_IMPORTED_MODULE_1__[\"isFieldDef\"])(order)) && !stack) {\n        // Sort by the order field if it is specified and the field is not stacked. (For stacked field, order specify stack order.)\n        return Object(_common__WEBPACK_IMPORTED_MODULE_8__[\"sortParams\"])(order, { expr: 'datum' });\n    }\n    else if (Object(_mark__WEBPACK_IMPORTED_MODULE_4__[\"isPathMark\"])(mark)) {\n        // For both line and area, we sort values based on dimension by default\n        const dimensionChannel = markDef.orient === 'horizontal' ? 'y' : 'x';\n        const dimensionChannelDef = encoding[dimensionChannel];\n        if (Object(_channeldef__WEBPACK_IMPORTED_MODULE_1__[\"isFieldDef\"])(dimensionChannelDef)) {\n            const s = dimensionChannelDef.sort;\n            if (Object(vega_util__WEBPACK_IMPORTED_MODULE_0__[\"isArray\"])(s)) {\n                return {\n                    field: Object(_channeldef__WEBPACK_IMPORTED_MODULE_1__[\"vgField\"])(dimensionChannelDef, { prefix: dimensionChannel, suffix: 'sort_index', expr: 'datum' })\n                };\n            }\n            else if (Object(_sort__WEBPACK_IMPORTED_MODULE_5__[\"isSortField\"])(s)) {\n                return {\n                    field: Object(_channeldef__WEBPACK_IMPORTED_MODULE_1__[\"vgField\"])({\n                        // FIXME: this op might not already exist?\n                        // FIXME: what if dimensionChannel (x or y) contains custom domain?\n                        aggregate: Object(_encoding__WEBPACK_IMPORTED_MODULE_3__[\"isAggregate\"])(model.encoding) ? s.op : undefined,\n                        field: s.field\n                    }, { expr: 'datum' })\n                };\n            }\n            else if (Object(_sort__WEBPACK_IMPORTED_MODULE_5__[\"isSortByEncoding\"])(s)) {\n                const fieldDefToSort = model.fieldDef(s.encoding);\n                return {\n                    field: Object(_channeldef__WEBPACK_IMPORTED_MODULE_1__[\"vgField\"])(fieldDefToSort, { expr: 'datum' }),\n                    order: s.order\n                };\n            }\n            else if (s === null) {\n                return undefined;\n            }\n            else {\n                return {\n                    field: Object(_channeldef__WEBPACK_IMPORTED_MODULE_1__[\"vgField\"])(dimensionChannelDef, {\n                        // For stack with imputation, we only have bin_mid\n                        binSuffix: model.stack && model.stack.impute ? 'mid' : undefined,\n                        expr: 'datum'\n                    })\n                };\n            }\n        }\n        return undefined;\n    }\n    return undefined;\n}\nfunction getMarkGroup(model, opt = { fromPrefix: '' }) {\n    const { mark, markDef, encoding, config } = model;\n    const clip = Object(_util__WEBPACK_IMPORTED_MODULE_6__[\"getFirstDefined\"])(markDef.clip, scaleClip(model), projectionClip(model));\n    const style = Object(_common__WEBPACK_IMPORTED_MODULE_8__[\"getStyles\"])(markDef);\n    const key = encoding.key;\n    const sort = getSort(model);\n    const interactive = interactiveFlag(model);\n    const aria = Object(_common__WEBPACK_IMPORTED_MODULE_8__[\"getMarkPropOrConfig\"])('aria', markDef, config);\n    const postEncodingTransform = markCompiler[mark].postEncodingTransform\n        ? markCompiler[mark].postEncodingTransform(model)\n        : null;\n    return [\n        Object.assign(Object.assign(Object.assign(Object.assign(Object.assign(Object.assign(Object.assign(Object.assign({ name: model.getName('marks'), type: markCompiler[mark].vgMark }, (clip ? { clip: true } : {})), (style ? { style } : {})), (key ? { key: key.field } : {})), (sort ? { sort } : {})), (interactive ? interactive : {})), (aria === false ? { aria } : {})), { from: { data: opt.fromPrefix + model.requestDataName(_data__WEBPACK_IMPORTED_MODULE_2__[\"DataSourceType\"].Main) }, encode: {\n                update: markCompiler[mark].encodeEntry(model)\n            } }), (postEncodingTransform\n            ? {\n                transform: postEncodingTransform\n            }\n            : {}))\n    ];\n}\n/**\n * If scales are bound to interval selections, we want to automatically clip\n * marks to account for panning/zooming interactions. We identify bound scales\n * by the selectionExtent property, which gets added during scale parsing.\n */\nfunction scaleClip(model) {\n    const xScale = model.getScaleComponent('x');\n    const yScale = model.getScaleComponent('y');\n    return (xScale && xScale.get('selectionExtent')) || (yScale && yScale.get('selectionExtent')) ? true : undefined;\n}\n/**\n * If we use a custom projection with auto-fitting to the geodata extent,\n * we need to clip to ensure the chart size doesn't explode.\n */\nfunction projectionClip(model) {\n    const projection = model.component.projection;\n    return projection && !projection.isFit ? true : undefined;\n}\n/**\n * Only output interactive flags if we have selections defined somewhere in our model hierarchy.\n */\nfunction interactiveFlag(model) {\n    if (!model.component.selection)\n        return null;\n    const unitCount = Object(_util__WEBPACK_IMPORTED_MODULE_6__[\"keys\"])(model.component.selection).length;\n    let parentCount = unitCount;\n    let parent = model.parent;\n    while (parent && parentCount === 0) {\n        parentCount = Object(_util__WEBPACK_IMPORTED_MODULE_6__[\"keys\"])(parent.component.selection).length;\n        parent = parent.parent;\n    }\n    return parentCount\n        ? {\n            interactive: unitCount > 0 || !!model.encoding.tooltip\n        }\n        : null;\n}\n//# sourceMappingURL=mark.js.map//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,[encoded data, 21380 characters]\n//# sourceURL=webpack-internal:///./node_modules/vega-lite/build/src/compile/mark/mark.js\n");

/***/ }),

/***/ "./node_modules/vega-lite/build/src/compile/mark/point.js":
/*!****************************************************************!*\
  !*** ./node_modules/vega-lite/build/src/compile/mark/point.js ***!
  \****************************************************************/
/*! exports provided: shapeMixins, point, circle, square */
/***/ (function(module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"shapeMixins\", function() { return shapeMixins; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"point\", function() { return point; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"circle\", function() { return circle; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"square\", function() { return square; });\n/* harmony import */ var _encode__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./encode */ \"./node_modules/vega-lite/build/src/compile/mark/encode/index.js\");\n\nfunction encodeEntry(model, fixedShape) {\n    const { config } = model;\n    return Object.assign(Object.assign(Object.assign(Object.assign(Object.assign(Object.assign({}, _encode__WEBPACK_IMPORTED_MODULE_0__[\"baseEncodeEntry\"](model, {\n        align: 'ignore',\n        baseline: 'ignore',\n        color: 'include',\n        size: 'include',\n        orient: 'ignore',\n        theta: 'ignore'\n    })), _encode__WEBPACK_IMPORTED_MODULE_0__[\"pointPosition\"]('x', model, { defaultPos: 'mid' })), _encode__WEBPACK_IMPORTED_MODULE_0__[\"pointPosition\"]('y', model, { defaultPos: 'mid' })), _encode__WEBPACK_IMPORTED_MODULE_0__[\"nonPosition\"]('size', model)), _encode__WEBPACK_IMPORTED_MODULE_0__[\"nonPosition\"]('angle', model)), shapeMixins(model, config, fixedShape));\n}\nfunction shapeMixins(model, config, fixedShape) {\n    if (fixedShape) {\n        return { shape: { value: fixedShape } };\n    }\n    return _encode__WEBPACK_IMPORTED_MODULE_0__[\"nonPosition\"]('shape', model);\n}\nconst point = {\n    vgMark: 'symbol',\n    encodeEntry: (model) => {\n        return encodeEntry(model);\n    }\n};\nconst circle = {\n    vgMark: 'symbol',\n    encodeEntry: (model) => {\n        return encodeEntry(model, 'circle');\n    }\n};\nconst square = {\n    vgMark: 'symbol',\n    encodeEntry: (model) => {\n        return encodeEntry(model, 'square');\n    }\n};\n//# sourceMappingURL=point.js.map//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvdmVnYS1saXRlL2J1aWxkL3NyYy9jb21waWxlL21hcmsvcG9pbnQuanMuanMiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvdmVnYS1saXRlL2J1aWxkL3NyYy9jb21waWxlL21hcmsvcG9pbnQuanM/MDAyOCJdLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgKiBhcyBlbmNvZGUgZnJvbSAnLi9lbmNvZGUnO1xuZnVuY3Rpb24gZW5jb2RlRW50cnkobW9kZWwsIGZpeGVkU2hhcGUpIHtcbiAgICBjb25zdCB7IGNvbmZpZyB9ID0gbW9kZWw7XG4gICAgcmV0dXJuIE9iamVjdC5hc3NpZ24oT2JqZWN0LmFzc2lnbihPYmplY3QuYXNzaWduKE9iamVjdC5hc3NpZ24oT2JqZWN0LmFzc2lnbihPYmplY3QuYXNzaWduKHt9LCBlbmNvZGUuYmFzZUVuY29kZUVudHJ5KG1vZGVsLCB7XG4gICAgICAgIGFsaWduOiAnaWdub3JlJyxcbiAgICAgICAgYmFzZWxpbmU6ICdpZ25vcmUnLFxuICAgICAgICBjb2xvcjogJ2luY2x1ZGUnLFxuICAgICAgICBzaXplOiAnaW5jbHVkZScsXG4gICAgICAgIG9yaWVudDogJ2lnbm9yZScsXG4gICAgICAgIHRoZXRhOiAnaWdub3JlJ1xuICAgIH0pKSwgZW5jb2RlLnBvaW50UG9zaXRpb24oJ3gnLCBtb2RlbCwgeyBkZWZhdWx0UG9zOiAnbWlkJyB9KSksIGVuY29kZS5wb2ludFBvc2l0aW9uKCd5JywgbW9kZWwsIHsgZGVmYXVsdFBvczogJ21pZCcgfSkpLCBlbmNvZGUubm9uUG9zaXRpb24oJ3NpemUnLCBtb2RlbCkpLCBlbmNvZGUubm9uUG9zaXRpb24oJ2FuZ2xlJywgbW9kZWwpKSwgc2hhcGVNaXhpbnMobW9kZWwsIGNvbmZpZywgZml4ZWRTaGFwZSkpO1xufVxuZXhwb3J0IGZ1bmN0aW9uIHNoYXBlTWl4aW5zKG1vZGVsLCBjb25maWcsIGZpeGVkU2hhcGUpIHtcbiAgICBpZiAoZml4ZWRTaGFwZSkge1xuICAgICAgICByZXR1cm4geyBzaGFwZTogeyB2YWx1ZTogZml4ZWRTaGFwZSB9IH07XG4gICAgfVxuICAgIHJldHVybiBlbmNvZGUubm9uUG9zaXRpb24oJ3NoYXBlJywgbW9kZWwpO1xufVxuZXhwb3J0IGNvbnN0IHBvaW50ID0ge1xuICAgIHZnTWFyazogJ3N5bWJvbCcsXG4gICAgZW5jb2RlRW50cnk6IChtb2RlbCkgPT4ge1xuICAgICAgICByZXR1cm4gZW5jb2RlRW50cnkobW9kZWwpO1xuICAgIH1cbn07XG5leHBvcnQgY29uc3QgY2lyY2xlID0ge1xuICAgIHZnTWFyazogJ3N5bWJvbCcsXG4gICAgZW5jb2RlRW50cnk6IChtb2RlbCkgPT4ge1xuICAgICAgICByZXR1cm4gZW5jb2RlRW50cnkobW9kZWwsICdjaXJjbGUnKTtcbiAgICB9XG59O1xuZXhwb3J0IGNvbnN0IHNxdWFyZSA9IHtcbiAgICB2Z01hcms6ICdzeW1ib2wnLFxuICAgIGVuY29kZUVudHJ5OiAobW9kZWwpID0+IHtcbiAgICAgICAgcmV0dXJuIGVuY29kZUVudHJ5KG1vZGVsLCAnc3F1YXJlJyk7XG4gICAgfVxufTtcbi8vIyBzb3VyY2VNYXBwaW5nVVJMPXBvaW50LmpzLm1hcCJdLCJtYXBwaW5ncyI6IkFBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EiLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///./node_modules/vega-lite/build/src/compile/mark/point.js\n");

/***/ }),

/***/ "./node_modules/vega-lite/build/src/compile/mark/rect.js":
/*!***************************************************************!*\
  !*** ./node_modules/vega-lite/build/src/compile/mark/rect.js ***!
  \***************************************************************/
/*! exports provided: rect */
/***/ (function(module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"rect\", function() { return rect; });\n/* harmony import */ var _encode__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./encode */ \"./node_modules/vega-lite/build/src/compile/mark/encode/index.js\");\n\nconst rect = {\n    vgMark: 'rect',\n    encodeEntry: (model) => {\n        return Object.assign(Object.assign(Object.assign({}, _encode__WEBPACK_IMPORTED_MODULE_0__[\"baseEncodeEntry\"](model, {\n            align: 'ignore',\n            baseline: 'ignore',\n            color: 'include',\n            orient: 'ignore',\n            size: 'ignore',\n            theta: 'ignore'\n        })), _encode__WEBPACK_IMPORTED_MODULE_0__[\"rectPosition\"](model, 'x', 'rect')), _encode__WEBPACK_IMPORTED_MODULE_0__[\"rectPosition\"](model, 'y', 'rect'));\n    }\n};\n//# sourceMappingURL=rect.js.map//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvdmVnYS1saXRlL2J1aWxkL3NyYy9jb21waWxlL21hcmsvcmVjdC5qcy5qcyIsInNvdXJjZXMiOlsid2VicGFjazovLy8uL25vZGVfbW9kdWxlcy92ZWdhLWxpdGUvYnVpbGQvc3JjL2NvbXBpbGUvbWFyay9yZWN0LmpzPzQ1M2YiXSwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0ICogYXMgZW5jb2RlIGZyb20gJy4vZW5jb2RlJztcbmV4cG9ydCBjb25zdCByZWN0ID0ge1xuICAgIHZnTWFyazogJ3JlY3QnLFxuICAgIGVuY29kZUVudHJ5OiAobW9kZWwpID0+IHtcbiAgICAgICAgcmV0dXJuIE9iamVjdC5hc3NpZ24oT2JqZWN0LmFzc2lnbihPYmplY3QuYXNzaWduKHt9LCBlbmNvZGUuYmFzZUVuY29kZUVudHJ5KG1vZGVsLCB7XG4gICAgICAgICAgICBhbGlnbjogJ2lnbm9yZScsXG4gICAgICAgICAgICBiYXNlbGluZTogJ2lnbm9yZScsXG4gICAgICAgICAgICBjb2xvcjogJ2luY2x1ZGUnLFxuICAgICAgICAgICAgb3JpZW50OiAnaWdub3JlJyxcbiAgICAgICAgICAgIHNpemU6ICdpZ25vcmUnLFxuICAgICAgICAgICAgdGhldGE6ICdpZ25vcmUnXG4gICAgICAgIH0pKSwgZW5jb2RlLnJlY3RQb3NpdGlvbihtb2RlbCwgJ3gnLCAncmVjdCcpKSwgZW5jb2RlLnJlY3RQb3NpdGlvbihtb2RlbCwgJ3knLCAncmVjdCcpKTtcbiAgICB9XG59O1xuLy8jIHNvdXJjZU1hcHBpbmdVUkw9cmVjdC5qcy5tYXAiXSwibWFwcGluZ3MiOiJBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSIsInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///./node_modules/vega-lite/build/src/compile/mark/rect.js\n");

/***/ }),

/***/ "./node_modules/vega-lite/build/src/compile/mark/rule.js":
/*!***************************************************************!*\
  !*** ./node_modules/vega-lite/build/src/compile/mark/rule.js ***!
  \***************************************************************/
/*! exports provided: rule */
/***/ (function(module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"rule\", function() { return rule; });\n/* harmony import */ var _encode__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./encode */ \"./node_modules/vega-lite/build/src/compile/mark/encode/index.js\");\n\nconst rule = {\n    vgMark: 'rule',\n    encodeEntry: (model) => {\n        const { markDef } = model;\n        const orient = markDef.orient;\n        if (!model.encoding.x && !model.encoding.y && !model.encoding.latitude && !model.encoding.longitude) {\n            // Show nothing if we have none of x, y, lat, and long.\n            return {};\n        }\n        return Object.assign(Object.assign(Object.assign(Object.assign({}, _encode__WEBPACK_IMPORTED_MODULE_0__[\"baseEncodeEntry\"](model, {\n            align: 'ignore',\n            baseline: 'ignore',\n            color: 'include',\n            orient: 'ignore',\n            size: 'ignore',\n            theta: 'ignore'\n        })), _encode__WEBPACK_IMPORTED_MODULE_0__[\"pointOrRangePosition\"]('x', model, {\n            defaultPos: orient === 'horizontal' ? 'zeroOrMax' : 'mid',\n            defaultPos2: 'zeroOrMin',\n            range: orient !== 'vertical' // include x2 for horizontal or line segment rule\n        })), _encode__WEBPACK_IMPORTED_MODULE_0__[\"pointOrRangePosition\"]('y', model, {\n            defaultPos: orient === 'vertical' ? 'zeroOrMax' : 'mid',\n            defaultPos2: 'zeroOrMin',\n            range: orient !== 'horizontal' // include y2 for vertical or line segment rule\n        })), _encode__WEBPACK_IMPORTED_MODULE_0__[\"nonPosition\"]('size', model, {\n            vgChannel: 'strokeWidth' // VL's rule size is strokeWidth\n        }));\n    }\n};\n//# sourceMappingURL=rule.js.map//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvdmVnYS1saXRlL2J1aWxkL3NyYy9jb21waWxlL21hcmsvcnVsZS5qcy5qcyIsInNvdXJjZXMiOlsid2VicGFjazovLy8uL25vZGVfbW9kdWxlcy92ZWdhLWxpdGUvYnVpbGQvc3JjL2NvbXBpbGUvbWFyay9ydWxlLmpzP2ZmNTEiXSwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0ICogYXMgZW5jb2RlIGZyb20gJy4vZW5jb2RlJztcbmV4cG9ydCBjb25zdCBydWxlID0ge1xuICAgIHZnTWFyazogJ3J1bGUnLFxuICAgIGVuY29kZUVudHJ5OiAobW9kZWwpID0+IHtcbiAgICAgICAgY29uc3QgeyBtYXJrRGVmIH0gPSBtb2RlbDtcbiAgICAgICAgY29uc3Qgb3JpZW50ID0gbWFya0RlZi5vcmllbnQ7XG4gICAgICAgIGlmICghbW9kZWwuZW5jb2RpbmcueCAmJiAhbW9kZWwuZW5jb2RpbmcueSAmJiAhbW9kZWwuZW5jb2RpbmcubGF0aXR1ZGUgJiYgIW1vZGVsLmVuY29kaW5nLmxvbmdpdHVkZSkge1xuICAgICAgICAgICAgLy8gU2hvdyBub3RoaW5nIGlmIHdlIGhhdmUgbm9uZSBvZiB4LCB5LCBsYXQsIGFuZCBsb25nLlxuICAgICAgICAgICAgcmV0dXJuIHt9O1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiBPYmplY3QuYXNzaWduKE9iamVjdC5hc3NpZ24oT2JqZWN0LmFzc2lnbihPYmplY3QuYXNzaWduKHt9LCBlbmNvZGUuYmFzZUVuY29kZUVudHJ5KG1vZGVsLCB7XG4gICAgICAgICAgICBhbGlnbjogJ2lnbm9yZScsXG4gICAgICAgICAgICBiYXNlbGluZTogJ2lnbm9yZScsXG4gICAgICAgICAgICBjb2xvcjogJ2luY2x1ZGUnLFxuICAgICAgICAgICAgb3JpZW50OiAnaWdub3JlJyxcbiAgICAgICAgICAgIHNpemU6ICdpZ25vcmUnLFxuICAgICAgICAgICAgdGhldGE6ICdpZ25vcmUnXG4gICAgICAgIH0pKSwgZW5jb2RlLnBvaW50T3JSYW5nZVBvc2l0aW9uKCd4JywgbW9kZWwsIHtcbiAgICAgICAgICAgIGRlZmF1bHRQb3M6IG9yaWVudCA9PT0gJ2hvcml6b250YWwnID8gJ3plcm9Pck1heCcgOiAnbWlkJyxcbiAgICAgICAgICAgIGRlZmF1bHRQb3MyOiAnemVyb09yTWluJyxcbiAgICAgICAgICAgIHJhbmdlOiBvcmllbnQgIT09ICd2ZXJ0aWNhbCcgLy8gaW5jbHVkZSB4MiBmb3IgaG9yaXpvbnRhbCBvciBsaW5lIHNlZ21lbnQgcnVsZVxuICAgICAgICB9KSksIGVuY29kZS5wb2ludE9yUmFuZ2VQb3NpdGlvbigneScsIG1vZGVsLCB7XG4gICAgICAgICAgICBkZWZhdWx0UG9zOiBvcmllbnQgPT09ICd2ZXJ0aWNhbCcgPyAnemVyb09yTWF4JyA6ICdtaWQnLFxuICAgICAgICAgICAgZGVmYXVsdFBvczI6ICd6ZXJvT3JNaW4nLFxuICAgICAgICAgICAgcmFuZ2U6IG9yaWVudCAhPT0gJ2hvcml6b250YWwnIC8vIGluY2x1ZGUgeTIgZm9yIHZlcnRpY2FsIG9yIGxpbmUgc2VnbWVudCBydWxlXG4gICAgICAgIH0pKSwgZW5jb2RlLm5vblBvc2l0aW9uKCdzaXplJywgbW9kZWwsIHtcbiAgICAgICAgICAgIHZnQ2hhbm5lbDogJ3N0cm9rZVdpZHRoJyAvLyBWTCdzIHJ1bGUgc2l6ZSBpcyBzdHJva2VXaWR0aFxuICAgICAgICB9KSk7XG4gICAgfVxufTtcbi8vIyBzb3VyY2VNYXBwaW5nVVJMPXJ1bGUuanMubWFwIl0sIm1hcHBpbmdzIjoiQUFBQTtBQUFBO0FBQUE7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSIsInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///./node_modules/vega-lite/build/src/compile/mark/rule.js\n");

/***/ }),

/***/ "./node_modules/vega-lite/build/src/compile/mark/text.js":
/*!***************************************************************!*\
  !*** ./node_modules/vega-lite/build/src/compile/mark/text.js ***!
  \***************************************************************/
/*! exports provided: text */
/***/ (function(module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"text\", function() { return text; });\n/* harmony import */ var _common__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../common */ \"./node_modules/vega-lite/build/src/compile/common.js\");\n/* harmony import */ var _encode__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./encode */ \"./node_modules/vega-lite/build/src/compile/mark/encode/index.js\");\n\n\nconst text = {\n    vgMark: 'text',\n    encodeEntry: (model) => {\n        const { config, encoding } = model;\n        return Object.assign(Object.assign(Object.assign(Object.assign(Object.assign(Object.assign(Object.assign(Object.assign(Object.assign(Object.assign({}, _encode__WEBPACK_IMPORTED_MODULE_1__[\"baseEncodeEntry\"](model, {\n            align: 'include',\n            baseline: 'include',\n            color: 'include',\n            size: 'ignore',\n            orient: 'ignore',\n            theta: 'include'\n        })), _encode__WEBPACK_IMPORTED_MODULE_1__[\"pointPosition\"]('x', model, { defaultPos: 'mid' })), _encode__WEBPACK_IMPORTED_MODULE_1__[\"pointPosition\"]('y', model, { defaultPos: 'mid' })), _encode__WEBPACK_IMPORTED_MODULE_1__[\"text\"](model)), _encode__WEBPACK_IMPORTED_MODULE_1__[\"nonPosition\"]('size', model, {\n            vgChannel: 'fontSize' // VL's text size is fontSize\n        })), _encode__WEBPACK_IMPORTED_MODULE_1__[\"nonPosition\"]('angle', model)), _encode__WEBPACK_IMPORTED_MODULE_1__[\"valueIfDefined\"]('align', align(model.markDef, encoding, config))), _encode__WEBPACK_IMPORTED_MODULE_1__[\"valueIfDefined\"]('baseline', baseline(model.markDef, encoding, config))), _encode__WEBPACK_IMPORTED_MODULE_1__[\"pointPosition\"]('radius', model, { defaultPos: null, isMidPoint: true })), _encode__WEBPACK_IMPORTED_MODULE_1__[\"pointPosition\"]('theta', model, { defaultPos: null, isMidPoint: true }));\n    }\n};\nfunction align(markDef, encoding, config) {\n    const a = Object(_common__WEBPACK_IMPORTED_MODULE_0__[\"getMarkPropOrConfig\"])('align', markDef, config);\n    if (a === undefined) {\n        return 'center';\n    }\n    // If there is a config, Vega-parser will process this already.\n    return undefined;\n}\nfunction baseline(markDef, encoding, config) {\n    const b = Object(_common__WEBPACK_IMPORTED_MODULE_0__[\"getMarkPropOrConfig\"])('baseline', markDef, config);\n    if (b === undefined) {\n        return 'middle';\n    }\n    // If there is a config, Vega-parser will process this already.\n    return undefined;\n}\n//# sourceMappingURL=text.js.map//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvdmVnYS1saXRlL2J1aWxkL3NyYy9jb21waWxlL21hcmsvdGV4dC5qcy5qcyIsInNvdXJjZXMiOlsid2VicGFjazovLy8uL25vZGVfbW9kdWxlcy92ZWdhLWxpdGUvYnVpbGQvc3JjL2NvbXBpbGUvbWFyay90ZXh0LmpzPzlmMmIiXSwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgZ2V0TWFya1Byb3BPckNvbmZpZyB9IGZyb20gJy4uL2NvbW1vbic7XG5pbXBvcnQgKiBhcyBlbmNvZGUgZnJvbSAnLi9lbmNvZGUnO1xuZXhwb3J0IGNvbnN0IHRleHQgPSB7XG4gICAgdmdNYXJrOiAndGV4dCcsXG4gICAgZW5jb2RlRW50cnk6IChtb2RlbCkgPT4ge1xuICAgICAgICBjb25zdCB7IGNvbmZpZywgZW5jb2RpbmcgfSA9IG1vZGVsO1xuICAgICAgICByZXR1cm4gT2JqZWN0LmFzc2lnbihPYmplY3QuYXNzaWduKE9iamVjdC5hc3NpZ24oT2JqZWN0LmFzc2lnbihPYmplY3QuYXNzaWduKE9iamVjdC5hc3NpZ24oT2JqZWN0LmFzc2lnbihPYmplY3QuYXNzaWduKE9iamVjdC5hc3NpZ24oT2JqZWN0LmFzc2lnbih7fSwgZW5jb2RlLmJhc2VFbmNvZGVFbnRyeShtb2RlbCwge1xuICAgICAgICAgICAgYWxpZ246ICdpbmNsdWRlJyxcbiAgICAgICAgICAgIGJhc2VsaW5lOiAnaW5jbHVkZScsXG4gICAgICAgICAgICBjb2xvcjogJ2luY2x1ZGUnLFxuICAgICAgICAgICAgc2l6ZTogJ2lnbm9yZScsXG4gICAgICAgICAgICBvcmllbnQ6ICdpZ25vcmUnLFxuICAgICAgICAgICAgdGhldGE6ICdpbmNsdWRlJ1xuICAgICAgICB9KSksIGVuY29kZS5wb2ludFBvc2l0aW9uKCd4JywgbW9kZWwsIHsgZGVmYXVsdFBvczogJ21pZCcgfSkpLCBlbmNvZGUucG9pbnRQb3NpdGlvbigneScsIG1vZGVsLCB7IGRlZmF1bHRQb3M6ICdtaWQnIH0pKSwgZW5jb2RlLnRleHQobW9kZWwpKSwgZW5jb2RlLm5vblBvc2l0aW9uKCdzaXplJywgbW9kZWwsIHtcbiAgICAgICAgICAgIHZnQ2hhbm5lbDogJ2ZvbnRTaXplJyAvLyBWTCdzIHRleHQgc2l6ZSBpcyBmb250U2l6ZVxuICAgICAgICB9KSksIGVuY29kZS5ub25Qb3NpdGlvbignYW5nbGUnLCBtb2RlbCkpLCBlbmNvZGUudmFsdWVJZkRlZmluZWQoJ2FsaWduJywgYWxpZ24obW9kZWwubWFya0RlZiwgZW5jb2RpbmcsIGNvbmZpZykpKSwgZW5jb2RlLnZhbHVlSWZEZWZpbmVkKCdiYXNlbGluZScsIGJhc2VsaW5lKG1vZGVsLm1hcmtEZWYsIGVuY29kaW5nLCBjb25maWcpKSksIGVuY29kZS5wb2ludFBvc2l0aW9uKCdyYWRpdXMnLCBtb2RlbCwgeyBkZWZhdWx0UG9zOiBudWxsLCBpc01pZFBvaW50OiB0cnVlIH0pKSwgZW5jb2RlLnBvaW50UG9zaXRpb24oJ3RoZXRhJywgbW9kZWwsIHsgZGVmYXVsdFBvczogbnVsbCwgaXNNaWRQb2ludDogdHJ1ZSB9KSk7XG4gICAgfVxufTtcbmZ1bmN0aW9uIGFsaWduKG1hcmtEZWYsIGVuY29kaW5nLCBjb25maWcpIHtcbiAgICBjb25zdCBhID0gZ2V0TWFya1Byb3BPckNvbmZpZygnYWxpZ24nLCBtYXJrRGVmLCBjb25maWcpO1xuICAgIGlmIChhID09PSB1bmRlZmluZWQpIHtcbiAgICAgICAgcmV0dXJuICdjZW50ZXInO1xuICAgIH1cbiAgICAvLyBJZiB0aGVyZSBpcyBhIGNvbmZpZywgVmVnYS1wYXJzZXIgd2lsbCBwcm9jZXNzIHRoaXMgYWxyZWFkeS5cbiAgICByZXR1cm4gdW5kZWZpbmVkO1xufVxuZnVuY3Rpb24gYmFzZWxpbmUobWFya0RlZiwgZW5jb2RpbmcsIGNvbmZpZykge1xuICAgIGNvbnN0IGIgPSBnZXRNYXJrUHJvcE9yQ29uZmlnKCdiYXNlbGluZScsIG1hcmtEZWYsIGNvbmZpZyk7XG4gICAgaWYgKGIgPT09IHVuZGVmaW5lZCkge1xuICAgICAgICByZXR1cm4gJ21pZGRsZSc7XG4gICAgfVxuICAgIC8vIElmIHRoZXJlIGlzIGEgY29uZmlnLCBWZWdhLXBhcnNlciB3aWxsIHByb2Nlc3MgdGhpcyBhbHJlYWR5LlxuICAgIHJldHVybiB1bmRlZmluZWQ7XG59XG4vLyMgc291cmNlTWFwcGluZ1VSTD10ZXh0LmpzLm1hcCJdLCJtYXBwaW5ncyI6IkFBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBIiwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///./node_modules/vega-lite/build/src/compile/mark/text.js\n");

/***/ }),

/***/ "./node_modules/vega-lite/build/src/compile/mark/tick.js":
/*!***************************************************************!*\
  !*** ./node_modules/vega-lite/build/src/compile/mark/tick.js ***!
  \***************************************************************/
/*! exports provided: tick */
/***/ (function(module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"tick\", function() { return tick; });\n/* harmony import */ var vega_util__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! vega-util */ \"./node_modules/vega-lite/node_modules/vega-util/build/vega-util.module.js\");\n/* harmony import */ var _config__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../../config */ \"./node_modules/vega-lite/build/src/config.js\");\n/* harmony import */ var _vega_schema__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ../../vega.schema */ \"./node_modules/vega-lite/build/src/vega.schema.js\");\n/* harmony import */ var _common__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ../common */ \"./node_modules/vega-lite/build/src/compile/common.js\");\n/* harmony import */ var _encode__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ./encode */ \"./node_modules/vega-lite/build/src/compile/mark/encode/index.js\");\n\n\n\n\n\nconst tick = {\n    vgMark: 'rect',\n    encodeEntry: (model) => {\n        const { config, markDef } = model;\n        const orient = markDef.orient;\n        const vgSizeChannel = orient === 'horizontal' ? 'width' : 'height';\n        const vgThicknessChannel = orient === 'horizontal' ? 'height' : 'width';\n        return Object.assign(Object.assign(Object.assign(Object.assign(Object.assign({}, _encode__WEBPACK_IMPORTED_MODULE_4__[\"baseEncodeEntry\"](model, {\n            align: 'ignore',\n            baseline: 'ignore',\n            color: 'include',\n            orient: 'ignore',\n            size: 'ignore',\n            theta: 'ignore'\n        })), _encode__WEBPACK_IMPORTED_MODULE_4__[\"pointPosition\"]('x', model, { defaultPos: 'mid', vgChannel: 'xc' })), _encode__WEBPACK_IMPORTED_MODULE_4__[\"pointPosition\"]('y', model, { defaultPos: 'mid', vgChannel: 'yc' })), _encode__WEBPACK_IMPORTED_MODULE_4__[\"nonPosition\"]('size', model, {\n            defaultValue: defaultSize(model),\n            vgChannel: vgSizeChannel\n        })), { [vgThicknessChannel]: Object(_common__WEBPACK_IMPORTED_MODULE_3__[\"signalOrValueRef\"])(Object(_common__WEBPACK_IMPORTED_MODULE_3__[\"getMarkPropOrConfig\"])('thickness', markDef, config)) });\n    }\n};\nfunction defaultSize(model) {\n    var _a;\n    const { config, markDef } = model;\n    const { orient } = markDef;\n    const vgSizeChannel = orient === 'horizontal' ? 'width' : 'height';\n    const scale = model.getScaleComponent(orient === 'horizontal' ? 'x' : 'y');\n    const markPropOrConfig = (_a = Object(_common__WEBPACK_IMPORTED_MODULE_3__[\"getMarkPropOrConfig\"])('size', markDef, config, { vgChannel: vgSizeChannel })) !== null && _a !== void 0 ? _a : config.tick.bandSize;\n    if (markPropOrConfig !== undefined) {\n        return markPropOrConfig;\n    }\n    else {\n        const scaleRange = scale ? scale.get('range') : undefined;\n        if (scaleRange && Object(_vega_schema__WEBPACK_IMPORTED_MODULE_2__[\"isVgRangeStep\"])(scaleRange) && Object(vega_util__WEBPACK_IMPORTED_MODULE_0__[\"isNumber\"])(scaleRange.step)) {\n            return (scaleRange.step * 3) / 4;\n        }\n        const defaultViewStep = Object(_config__WEBPACK_IMPORTED_MODULE_1__[\"getViewConfigDiscreteStep\"])(config.view, vgSizeChannel);\n        return (defaultViewStep * 3) / 4;\n    }\n}\n//# sourceMappingURL=tick.js.map//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvdmVnYS1saXRlL2J1aWxkL3NyYy9jb21waWxlL21hcmsvdGljay5qcy5qcyIsInNvdXJjZXMiOlsid2VicGFjazovLy8uL25vZGVfbW9kdWxlcy92ZWdhLWxpdGUvYnVpbGQvc3JjL2NvbXBpbGUvbWFyay90aWNrLmpzPzI4YTAiXSwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgaXNOdW1iZXIgfSBmcm9tICd2ZWdhLXV0aWwnO1xuaW1wb3J0IHsgZ2V0Vmlld0NvbmZpZ0Rpc2NyZXRlU3RlcCB9IGZyb20gJy4uLy4uL2NvbmZpZyc7XG5pbXBvcnQgeyBpc1ZnUmFuZ2VTdGVwIH0gZnJvbSAnLi4vLi4vdmVnYS5zY2hlbWEnO1xuaW1wb3J0IHsgZ2V0TWFya1Byb3BPckNvbmZpZywgc2lnbmFsT3JWYWx1ZVJlZiB9IGZyb20gJy4uL2NvbW1vbic7XG5pbXBvcnQgKiBhcyBlbmNvZGUgZnJvbSAnLi9lbmNvZGUnO1xuZXhwb3J0IGNvbnN0IHRpY2sgPSB7XG4gICAgdmdNYXJrOiAncmVjdCcsXG4gICAgZW5jb2RlRW50cnk6IChtb2RlbCkgPT4ge1xuICAgICAgICBjb25zdCB7IGNvbmZpZywgbWFya0RlZiB9ID0gbW9kZWw7XG4gICAgICAgIGNvbnN0IG9yaWVudCA9IG1hcmtEZWYub3JpZW50O1xuICAgICAgICBjb25zdCB2Z1NpemVDaGFubmVsID0gb3JpZW50ID09PSAnaG9yaXpvbnRhbCcgPyAnd2lkdGgnIDogJ2hlaWdodCc7XG4gICAgICAgIGNvbnN0IHZnVGhpY2tuZXNzQ2hhbm5lbCA9IG9yaWVudCA9PT0gJ2hvcml6b250YWwnID8gJ2hlaWdodCcgOiAnd2lkdGgnO1xuICAgICAgICByZXR1cm4gT2JqZWN0LmFzc2lnbihPYmplY3QuYXNzaWduKE9iamVjdC5hc3NpZ24oT2JqZWN0LmFzc2lnbihPYmplY3QuYXNzaWduKHt9LCBlbmNvZGUuYmFzZUVuY29kZUVudHJ5KG1vZGVsLCB7XG4gICAgICAgICAgICBhbGlnbjogJ2lnbm9yZScsXG4gICAgICAgICAgICBiYXNlbGluZTogJ2lnbm9yZScsXG4gICAgICAgICAgICBjb2xvcjogJ2luY2x1ZGUnLFxuICAgICAgICAgICAgb3JpZW50OiAnaWdub3JlJyxcbiAgICAgICAgICAgIHNpemU6ICdpZ25vcmUnLFxuICAgICAgICAgICAgdGhldGE6ICdpZ25vcmUnXG4gICAgICAgIH0pKSwgZW5jb2RlLnBvaW50UG9zaXRpb24oJ3gnLCBtb2RlbCwgeyBkZWZhdWx0UG9zOiAnbWlkJywgdmdDaGFubmVsOiAneGMnIH0pKSwgZW5jb2RlLnBvaW50UG9zaXRpb24oJ3knLCBtb2RlbCwgeyBkZWZhdWx0UG9zOiAnbWlkJywgdmdDaGFubmVsOiAneWMnIH0pKSwgZW5jb2RlLm5vblBvc2l0aW9uKCdzaXplJywgbW9kZWwsIHtcbiAgICAgICAgICAgIGRlZmF1bHRWYWx1ZTogZGVmYXVsdFNpemUobW9kZWwpLFxuICAgICAgICAgICAgdmdDaGFubmVsOiB2Z1NpemVDaGFubmVsXG4gICAgICAgIH0pKSwgeyBbdmdUaGlja25lc3NDaGFubmVsXTogc2lnbmFsT3JWYWx1ZVJlZihnZXRNYXJrUHJvcE9yQ29uZmlnKCd0aGlja25lc3MnLCBtYXJrRGVmLCBjb25maWcpKSB9KTtcbiAgICB9XG59O1xuZnVuY3Rpb24gZGVmYXVsdFNpemUobW9kZWwpIHtcbiAgICB2YXIgX2E7XG4gICAgY29uc3QgeyBjb25maWcsIG1hcmtEZWYgfSA9IG1vZGVsO1xuICAgIGNvbnN0IHsgb3JpZW50IH0gPSBtYXJrRGVmO1xuICAgIGNvbnN0IHZnU2l6ZUNoYW5uZWwgPSBvcmllbnQgPT09ICdob3Jpem9udGFsJyA/ICd3aWR0aCcgOiAnaGVpZ2h0JztcbiAgICBjb25zdCBzY2FsZSA9IG1vZGVsLmdldFNjYWxlQ29tcG9uZW50KG9yaWVudCA9PT0gJ2hvcml6b250YWwnID8gJ3gnIDogJ3knKTtcbiAgICBjb25zdCBtYXJrUHJvcE9yQ29uZmlnID0gKF9hID0gZ2V0TWFya1Byb3BPckNvbmZpZygnc2l6ZScsIG1hcmtEZWYsIGNvbmZpZywgeyB2Z0NoYW5uZWw6IHZnU2l6ZUNoYW5uZWwgfSkpICE9PSBudWxsICYmIF9hICE9PSB2b2lkIDAgPyBfYSA6IGNvbmZpZy50aWNrLmJhbmRTaXplO1xuICAgIGlmIChtYXJrUHJvcE9yQ29uZmlnICE9PSB1bmRlZmluZWQpIHtcbiAgICAgICAgcmV0dXJuIG1hcmtQcm9wT3JDb25maWc7XG4gICAgfVxuICAgIGVsc2Uge1xuICAgICAgICBjb25zdCBzY2FsZVJhbmdlID0gc2NhbGUgPyBzY2FsZS5nZXQoJ3JhbmdlJykgOiB1bmRlZmluZWQ7XG4gICAgICAgIGlmIChzY2FsZVJhbmdlICYmIGlzVmdSYW5nZVN0ZXAoc2NhbGVSYW5nZSkgJiYgaXNOdW1iZXIoc2NhbGVSYW5nZS5zdGVwKSkge1xuICAgICAgICAgICAgcmV0dXJuIChzY2FsZVJhbmdlLnN0ZXAgKiAzKSAvIDQ7XG4gICAgICAgIH1cbiAgICAgICAgY29uc3QgZGVmYXVsdFZpZXdTdGVwID0gZ2V0Vmlld0NvbmZpZ0Rpc2NyZXRlU3RlcChjb25maWcudmlldywgdmdTaXplQ2hhbm5lbCk7XG4gICAgICAgIHJldHVybiAoZGVmYXVsdFZpZXdTdGVwICogMykgLyA0O1xuICAgIH1cbn1cbi8vIyBzb3VyY2VNYXBwaW5nVVJMPXRpY2suanMubWFwIl0sIm1hcHBpbmdzIjoiQUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSIsInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///./node_modules/vega-lite/build/src/compile/mark/tick.js\n");

/***/ }),

/***/ "./node_modules/vega-lite/build/src/compile/model.js":
/*!***********************************************************!*\
  !*** ./node_modules/vega-lite/build/src/compile/model.js ***!
  \***********************************************************/
/*! exports provided: NameMap, isUnitModel, isFacetModel, isConcatModel, isLayerModel, Model, ModelWithField */
/***/ (function(module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"NameMap\", function() { return NameMap; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"isUnitModel\", function() { return isUnitModel; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"isFacetModel\", function() { return isFacetModel; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"isConcatModel\", function() { return isConcatModel; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"isLayerModel\", function() { return isLayerModel; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"Model\", function() { return Model; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"ModelWithField\", function() { return ModelWithField; });\n/* harmony import */ var _channel__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../channel */ \"./node_modules/vega-lite/build/src/channel.js\");\n/* harmony import */ var _channeldef__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../channeldef */ \"./node_modules/vega-lite/build/src/channeldef.js\");\n/* harmony import */ var _data__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ../data */ \"./node_modules/vega-lite/build/src/data.js\");\n/* harmony import */ var _encoding__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ../encoding */ \"./node_modules/vega-lite/build/src/encoding.js\");\n/* harmony import */ var _expr__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ../expr */ \"./node_modules/vega-lite/build/src/expr.js\");\n/* harmony import */ var _log__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! ../log */ \"./node_modules/vega-lite/build/src/log/index.js\");\n/* harmony import */ var _scale__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! ../scale */ \"./node_modules/vega-lite/build/src/scale.js\");\n/* harmony import */ var _spec__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! ../spec */ \"./node_modules/vega-lite/build/src/spec/index.js\");\n/* harmony import */ var _spec_base__WEBPACK_IMPORTED_MODULE_8__ = __webpack_require__(/*! ../spec/base */ \"./node_modules/vega-lite/build/src/spec/base.js\");\n/* harmony import */ var _title__WEBPACK_IMPORTED_MODULE_9__ = __webpack_require__(/*! ../title */ \"./node_modules/vega-lite/build/src/title.js\");\n/* harmony import */ var _transform__WEBPACK_IMPORTED_MODULE_10__ = __webpack_require__(/*! ../transform */ \"./node_modules/vega-lite/build/src/transform.js\");\n/* harmony import */ var _util__WEBPACK_IMPORTED_MODULE_11__ = __webpack_require__(/*! ../util */ \"./node_modules/vega-lite/build/src/util.js\");\n/* harmony import */ var _vega_schema__WEBPACK_IMPORTED_MODULE_12__ = __webpack_require__(/*! ../vega.schema */ \"./node_modules/vega-lite/build/src/vega.schema.js\");\n/* harmony import */ var _axis_assemble__WEBPACK_IMPORTED_MODULE_13__ = __webpack_require__(/*! ./axis/assemble */ \"./node_modules/vega-lite/build/src/compile/axis/assemble.js\");\n/* harmony import */ var _common__WEBPACK_IMPORTED_MODULE_14__ = __webpack_require__(/*! ./common */ \"./node_modules/vega-lite/build/src/compile/common.js\");\n/* harmony import */ var _header_assemble__WEBPACK_IMPORTED_MODULE_15__ = __webpack_require__(/*! ./header/assemble */ \"./node_modules/vega-lite/build/src/compile/header/assemble.js\");\n/* harmony import */ var _header_component__WEBPACK_IMPORTED_MODULE_16__ = __webpack_require__(/*! ./header/component */ \"./node_modules/vega-lite/build/src/compile/header/component.js\");\n/* harmony import */ var _layoutsize_assemble__WEBPACK_IMPORTED_MODULE_17__ = __webpack_require__(/*! ./layoutsize/assemble */ \"./node_modules/vega-lite/build/src/compile/layoutsize/assemble.js\");\n/* harmony import */ var _layoutsize_component__WEBPACK_IMPORTED_MODULE_18__ = __webpack_require__(/*! ./layoutsize/component */ \"./node_modules/vega-lite/build/src/compile/layoutsize/component.js\");\n/* harmony import */ var _legend_assemble__WEBPACK_IMPORTED_MODULE_19__ = __webpack_require__(/*! ./legend/assemble */ \"./node_modules/vega-lite/build/src/compile/legend/assemble.js\");\n/* harmony import */ var _legend_parse__WEBPACK_IMPORTED_MODULE_20__ = __webpack_require__(/*! ./legend/parse */ \"./node_modules/vega-lite/build/src/compile/legend/parse.js\");\n/* harmony import */ var _projection_assemble__WEBPACK_IMPORTED_MODULE_21__ = __webpack_require__(/*! ./projection/assemble */ \"./node_modules/vega-lite/build/src/compile/projection/assemble.js\");\n/* harmony import */ var _projection_parse__WEBPACK_IMPORTED_MODULE_22__ = __webpack_require__(/*! ./projection/parse */ \"./node_modules/vega-lite/build/src/compile/projection/parse.js\");\n/* harmony import */ var _scale_assemble__WEBPACK_IMPORTED_MODULE_23__ = __webpack_require__(/*! ./scale/assemble */ \"./node_modules/vega-lite/build/src/compile/scale/assemble.js\");\n/* harmony import */ var _scale_domain__WEBPACK_IMPORTED_MODULE_24__ = __webpack_require__(/*! ./scale/domain */ \"./node_modules/vega-lite/build/src/compile/scale/domain.js\");\n/* harmony import */ var _scale_parse__WEBPACK_IMPORTED_MODULE_25__ = __webpack_require__(/*! ./scale/parse */ \"./node_modules/vega-lite/build/src/compile/scale/parse.js\");\n/* harmony import */ var _split__WEBPACK_IMPORTED_MODULE_26__ = __webpack_require__(/*! ./split */ \"./node_modules/vega-lite/build/src/compile/split.js\");\nvar __rest = (undefined && undefined.__rest) || function (s, e) {\n    var t = {};\n    for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0)\n        t[p] = s[p];\n    if (s != null && typeof Object.getOwnPropertySymbols === \"function\")\n        for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) {\n            if (e.indexOf(p[i]) < 0 && Object.prototype.propertyIsEnumerable.call(s, p[i]))\n                t[p[i]] = s[p[i]];\n        }\n    return t;\n};\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\nclass NameMap {\n    constructor() {\n        this.nameMap = {};\n    }\n    rename(oldName, newName) {\n        this.nameMap[oldName] = newName;\n    }\n    has(name) {\n        return this.nameMap[name] !== undefined;\n    }\n    get(name) {\n        // If the name appears in the _nameMap, we need to read its new name.\n        // We have to loop over the dict just in case the new name also gets renamed.\n        while (this.nameMap[name] && name !== this.nameMap[name]) {\n            name = this.nameMap[name];\n        }\n        return name;\n    }\n}\n/*\n  We use type guards instead of `instanceof` as `instanceof` makes\n  different parts of the compiler depend on the actual implementation of\n  the model classes, which in turn depend on different parts of the compiler.\n  Thus, `instanceof` leads to circular dependency problems.\n\n  On the other hand, type guards only make different parts of the compiler\n  depend on the type of the model classes, but not the actual implementation.\n*/\nfunction isUnitModel(model) {\n    return (model === null || model === void 0 ? void 0 : model.type) === 'unit';\n}\nfunction isFacetModel(model) {\n    return (model === null || model === void 0 ? void 0 : model.type) === 'facet';\n}\nfunction isConcatModel(model) {\n    return (model === null || model === void 0 ? void 0 : model.type) === 'concat';\n}\nfunction isLayerModel(model) {\n    return (model === null || model === void 0 ? void 0 : model.type) === 'layer';\n}\nclass Model {\n    constructor(spec, type, parent, parentGivenName, config, resolve, view) {\n        var _a, _b;\n        this.type = type;\n        this.parent = parent;\n        this.config = config;\n        this.children = [];\n        /**\n         * Corrects the data references in marks after assemble.\n         */\n        this.correctDataNames = (mark) => {\n            // TODO: make this correct\n            // for normal data references\n            if (mark.from && mark.from.data) {\n                mark.from.data = this.lookupDataSource(mark.from.data);\n            }\n            // for access to facet data\n            if (mark.from && mark.from.facet && mark.from.facet.data) {\n                mark.from.facet.data = this.lookupDataSource(mark.from.facet.data);\n            }\n            return mark;\n        };\n        this.parent = parent;\n        this.config = config;\n        this.view = Object(_expr__WEBPACK_IMPORTED_MODULE_4__[\"replaceExprRefInIndex\"])(view);\n        // If name is not provided, always use parent's givenName to avoid name conflicts.\n        this.name = (_a = spec.name) !== null && _a !== void 0 ? _a : parentGivenName;\n        this.title = Object(_title__WEBPACK_IMPORTED_MODULE_9__[\"isText\"])(spec.title) ? { text: spec.title } : spec.title ? this.initTitle(spec.title) : undefined;\n        // Shared name maps\n        this.scaleNameMap = parent ? parent.scaleNameMap : new NameMap();\n        this.projectionNameMap = parent ? parent.projectionNameMap : new NameMap();\n        this.signalNameMap = parent ? parent.signalNameMap : new NameMap();\n        this.data = spec.data;\n        this.description = spec.description;\n        this.transforms = Object(_transform__WEBPACK_IMPORTED_MODULE_10__[\"normalizeTransform\"])((_b = spec.transform) !== null && _b !== void 0 ? _b : []);\n        this.layout = type === 'layer' || type === 'unit' ? {} : Object(_spec_base__WEBPACK_IMPORTED_MODULE_8__[\"extractCompositionLayout\"])(spec, type, config);\n        this.component = {\n            data: {\n                sources: parent ? parent.component.data.sources : [],\n                outputNodes: parent ? parent.component.data.outputNodes : {},\n                outputNodeRefCounts: parent ? parent.component.data.outputNodeRefCounts : {},\n                // data is faceted if the spec is a facet spec or the parent has faceted data and data is undefined\n                isFaceted: Object(_spec__WEBPACK_IMPORTED_MODULE_7__[\"isFacetSpec\"])(spec) || (parent && parent.component.data.isFaceted && spec.data === undefined)\n            },\n            layoutSize: new _split__WEBPACK_IMPORTED_MODULE_26__[\"Split\"](),\n            layoutHeaders: { row: {}, column: {}, facet: {} },\n            mark: null,\n            resolve: Object.assign({ scale: {}, axis: {}, legend: {} }, (resolve ? Object(_util__WEBPACK_IMPORTED_MODULE_11__[\"duplicate\"])(resolve) : {})),\n            selection: null,\n            scales: null,\n            projection: null,\n            axes: {},\n            legends: {}\n        };\n    }\n    initTitle(title) {\n        const props = Object(_util__WEBPACK_IMPORTED_MODULE_11__[\"keys\"])(title);\n        const titleInternal = {\n            text: Object(_common__WEBPACK_IMPORTED_MODULE_14__[\"signalRefOrValue\"])(title.text)\n        };\n        for (const prop of props) {\n            titleInternal[prop] = Object(_common__WEBPACK_IMPORTED_MODULE_14__[\"signalRefOrValue\"])(title[prop]);\n        }\n        return titleInternal;\n    }\n    get width() {\n        return this.getSizeSignalRef('width');\n    }\n    get height() {\n        return this.getSizeSignalRef('height');\n    }\n    parse() {\n        this.parseScale();\n        this.parseLayoutSize(); // depends on scale\n        this.renameTopLevelLayoutSizeSignal();\n        this.parseSelections();\n        this.parseProjection();\n        this.parseData(); // (pathorder) depends on markDef; selection filters depend on parsed selections; depends on projection because some transforms require the finalized projection name.\n        this.parseAxesAndHeaders(); // depends on scale and layout size\n        this.parseLegends(); // depends on scale, markDef\n        this.parseMarkGroup(); // depends on data name, scale, layout size, axisGroup, and children's scale, axis, legend and mark.\n    }\n    parseScale() {\n        Object(_scale_parse__WEBPACK_IMPORTED_MODULE_25__[\"parseScales\"])(this);\n    }\n    parseProjection() {\n        Object(_projection_parse__WEBPACK_IMPORTED_MODULE_22__[\"parseProjection\"])(this);\n    }\n    /**\n     * Rename top-level spec's size to be just width / height, ignoring model name.\n     * This essentially merges the top-level spec's width/height signals with the width/height signals\n     * to help us reduce redundant signals declaration.\n     */\n    renameTopLevelLayoutSizeSignal() {\n        if (this.getName('width') !== 'width') {\n            this.renameSignal(this.getName('width'), 'width');\n        }\n        if (this.getName('height') !== 'height') {\n            this.renameSignal(this.getName('height'), 'height');\n        }\n    }\n    parseLegends() {\n        Object(_legend_parse__WEBPACK_IMPORTED_MODULE_20__[\"parseLegend\"])(this);\n    }\n    assembleGroupStyle() {\n        var _a, _b;\n        if (this.type === 'unit' || this.type === 'layer') {\n            return (_b = (_a = this.view) === null || _a === void 0 ? void 0 : _a.style) !== null && _b !== void 0 ? _b : 'cell';\n        }\n        return undefined;\n    }\n    assembleEncodeFromView(view) {\n        // Exclude \"style\"\n        const { style: _ } = view, baseView = __rest(view, [\"style\"]);\n        const e = {};\n        for (const property of Object(_util__WEBPACK_IMPORTED_MODULE_11__[\"keys\"])(baseView)) {\n            const value = baseView[property];\n            if (value !== undefined) {\n                e[property] = Object(_common__WEBPACK_IMPORTED_MODULE_14__[\"signalOrValueRef\"])(value);\n            }\n        }\n        return e;\n    }\n    assembleGroupEncodeEntry(isTopLevel) {\n        let encodeEntry = {};\n        if (this.view) {\n            encodeEntry = this.assembleEncodeFromView(this.view);\n        }\n        if (!isTopLevel) {\n            // Descriptions are already added to the top-level description so we only need to add them to the inner views.\n            if (this.description) {\n                encodeEntry['description'] = Object(_common__WEBPACK_IMPORTED_MODULE_14__[\"signalOrValueRef\"])(this.description);\n            }\n            // For top-level spec, we can set the global width and height signal to adjust the group size.\n            // For other child specs, we have to manually set width and height in the encode entry.\n            if (this.type === 'unit' || this.type === 'layer') {\n                return Object.assign({ width: this.getSizeSignalRef('width'), height: this.getSizeSignalRef('height') }, (encodeEntry !== null && encodeEntry !== void 0 ? encodeEntry : {}));\n            }\n        }\n        return Object(_util__WEBPACK_IMPORTED_MODULE_11__[\"isEmpty\"])(encodeEntry) ? undefined : encodeEntry;\n    }\n    assembleLayout() {\n        if (!this.layout) {\n            return undefined;\n        }\n        const _a = this.layout, { spacing } = _a, layout = __rest(_a, [\"spacing\"]);\n        const { component, config } = this;\n        const titleBand = Object(_header_assemble__WEBPACK_IMPORTED_MODULE_15__[\"assembleLayoutTitleBand\"])(component.layoutHeaders, config);\n        return Object.assign(Object.assign(Object.assign({ padding: spacing }, this.assembleDefaultLayout()), layout), (titleBand ? { titleBand } : {}));\n    }\n    assembleDefaultLayout() {\n        return {};\n    }\n    assembleHeaderMarks() {\n        const { layoutHeaders } = this.component;\n        let headerMarks = [];\n        for (const channel of _channel__WEBPACK_IMPORTED_MODULE_0__[\"FACET_CHANNELS\"]) {\n            if (layoutHeaders[channel].title) {\n                headerMarks.push(Object(_header_assemble__WEBPACK_IMPORTED_MODULE_15__[\"assembleTitleGroup\"])(this, channel));\n            }\n        }\n        for (const channel of _header_component__WEBPACK_IMPORTED_MODULE_16__[\"HEADER_CHANNELS\"]) {\n            headerMarks = headerMarks.concat(Object(_header_assemble__WEBPACK_IMPORTED_MODULE_15__[\"assembleHeaderGroups\"])(this, channel));\n        }\n        return headerMarks;\n    }\n    assembleAxes() {\n        return Object(_axis_assemble__WEBPACK_IMPORTED_MODULE_13__[\"assembleAxes\"])(this.component.axes, this.config);\n    }\n    assembleLegends() {\n        return Object(_legend_assemble__WEBPACK_IMPORTED_MODULE_19__[\"assembleLegends\"])(this);\n    }\n    assembleProjections() {\n        return Object(_projection_assemble__WEBPACK_IMPORTED_MODULE_21__[\"assembleProjections\"])(this);\n    }\n    assembleTitle() {\n        var _a, _b, _c;\n        const _d = (_a = this.title) !== null && _a !== void 0 ? _a : {}, { encoding } = _d, titleNoEncoding = __rest(_d, [\"encoding\"]);\n        const title = Object.assign(Object.assign(Object.assign({}, Object(_title__WEBPACK_IMPORTED_MODULE_9__[\"extractTitleConfig\"])(this.config.title).nonMark), titleNoEncoding), (encoding ? { encode: { update: encoding } } : {}));\n        if (title.text) {\n            if (Object(_util__WEBPACK_IMPORTED_MODULE_11__[\"contains\"])(['unit', 'layer'], this.type)) {\n                // Unit/Layer\n                if (Object(_util__WEBPACK_IMPORTED_MODULE_11__[\"contains\"])(['middle', undefined], title.anchor)) {\n                    title.frame = (_b = title.frame) !== null && _b !== void 0 ? _b : 'group';\n                }\n            }\n            else {\n                // composition with Vega layout\n                // Set title = \"start\" by default for composition as \"middle\" does not look nice\n                // https://github.com/vega/vega/issues/960#issuecomment-471360328\n                title.anchor = (_c = title.anchor) !== null && _c !== void 0 ? _c : 'start';\n            }\n            return Object(_util__WEBPACK_IMPORTED_MODULE_11__[\"isEmpty\"])(title) ? undefined : title;\n        }\n        return undefined;\n    }\n    /**\n     * Assemble the mark group for this model. We accept optional `signals` so that we can include concat top-level signals with the top-level model's local signals.\n     */\n    assembleGroup(signals = []) {\n        const group = {};\n        signals = signals.concat(this.assembleSignals());\n        if (signals.length > 0) {\n            group.signals = signals;\n        }\n        const layout = this.assembleLayout();\n        if (layout) {\n            group.layout = layout;\n        }\n        group.marks = [].concat(this.assembleHeaderMarks(), this.assembleMarks());\n        // Only include scales if this spec is top-level or if parent is facet.\n        // (Otherwise, it will be merged with upper-level's scope.)\n        const scales = !this.parent || isFacetModel(this.parent) ? Object(_scale_assemble__WEBPACK_IMPORTED_MODULE_23__[\"assembleScales\"])(this) : [];\n        if (scales.length > 0) {\n            group.scales = scales;\n        }\n        const axes = this.assembleAxes();\n        if (axes.length > 0) {\n            group.axes = axes;\n        }\n        const legends = this.assembleLegends();\n        if (legends.length > 0) {\n            group.legends = legends;\n        }\n        return group;\n    }\n    getName(text) {\n        return Object(_util__WEBPACK_IMPORTED_MODULE_11__[\"varName\"])((this.name ? this.name + '_' : '') + text);\n    }\n    getDataName(type) {\n        return this.getName(_data__WEBPACK_IMPORTED_MODULE_2__[\"DataSourceType\"][type].toLowerCase());\n    }\n    /**\n     * Request a data source name for the given data source type and mark that data source as required.\n     * This method should be called in parse, so that all used data source can be correctly instantiated in assembleData().\n     * You can lookup the correct dataset name in assemble with `lookupDataSource`.\n     */\n    requestDataName(name) {\n        const fullName = this.getDataName(name);\n        // Increase ref count. This is critical because otherwise we won't create a data source.\n        // We also increase the ref counts on OutputNode.getSource() calls.\n        const refCounts = this.component.data.outputNodeRefCounts;\n        refCounts[fullName] = (refCounts[fullName] || 0) + 1;\n        return fullName;\n    }\n    getSizeSignalRef(layoutSizeType) {\n        if (isFacetModel(this.parent)) {\n            const sizeType = Object(_layoutsize_component__WEBPACK_IMPORTED_MODULE_18__[\"getSizeTypeFromLayoutSizeType\"])(layoutSizeType);\n            const channel = Object(_channel__WEBPACK_IMPORTED_MODULE_0__[\"getPositionScaleChannel\"])(sizeType);\n            const scaleComponent = this.component.scales[channel];\n            if (scaleComponent && !scaleComponent.merged) {\n                // independent scale\n                const type = scaleComponent.get('type');\n                const range = scaleComponent.get('range');\n                if (Object(_scale__WEBPACK_IMPORTED_MODULE_6__[\"hasDiscreteDomain\"])(type) && Object(_vega_schema__WEBPACK_IMPORTED_MODULE_12__[\"isVgRangeStep\"])(range)) {\n                    const scaleName = scaleComponent.get('name');\n                    const domain = Object(_scale_domain__WEBPACK_IMPORTED_MODULE_24__[\"assembleDomain\"])(this, channel);\n                    const field = Object(_scale_domain__WEBPACK_IMPORTED_MODULE_24__[\"getFieldFromDomain\"])(domain);\n                    if (field) {\n                        const fieldRef = Object(_channeldef__WEBPACK_IMPORTED_MODULE_1__[\"vgField\"])({ aggregate: 'distinct', field }, { expr: 'datum' });\n                        return {\n                            signal: Object(_layoutsize_assemble__WEBPACK_IMPORTED_MODULE_17__[\"sizeExpr\"])(scaleName, scaleComponent, fieldRef)\n                        };\n                    }\n                    else {\n                        _log__WEBPACK_IMPORTED_MODULE_5__[\"warn\"](_log__WEBPACK_IMPORTED_MODULE_5__[\"message\"].unknownField(channel));\n                        return null;\n                    }\n                }\n            }\n        }\n        return {\n            signal: this.signalNameMap.get(this.getName(layoutSizeType))\n        };\n    }\n    /**\n     * Lookup the name of the datasource for an output node. You probably want to call this in assemble.\n     */\n    lookupDataSource(name) {\n        const node = this.component.data.outputNodes[name];\n        if (!node) {\n            // Name not found in map so let's just return what we got.\n            // This can happen if we already have the correct name.\n            return name;\n        }\n        return node.getSource();\n    }\n    getSignalName(oldSignalName) {\n        return this.signalNameMap.get(oldSignalName);\n    }\n    renameSignal(oldName, newName) {\n        this.signalNameMap.rename(oldName, newName);\n    }\n    renameScale(oldName, newName) {\n        this.scaleNameMap.rename(oldName, newName);\n    }\n    renameProjection(oldName, newName) {\n        this.projectionNameMap.rename(oldName, newName);\n    }\n    /**\n     * @return scale name for a given channel after the scale has been parsed and named.\n     */\n    scaleName(originalScaleName, parse) {\n        if (parse) {\n            // During the parse phase always return a value\n            // No need to refer to rename map because a scale can't be renamed\n            // before it has the original name.\n            return this.getName(originalScaleName);\n        }\n        // If there is a scale for the channel, it should either\n        // be in the scale component or exist in the name map\n        if (\n        // If there is a scale for the channel, there should be a local scale component for it\n        (Object(_channel__WEBPACK_IMPORTED_MODULE_0__[\"isChannel\"])(originalScaleName) && Object(_channel__WEBPACK_IMPORTED_MODULE_0__[\"isScaleChannel\"])(originalScaleName) && this.component.scales[originalScaleName]) ||\n            // in the scale name map (the scale get merged by its parent)\n            this.scaleNameMap.has(this.getName(originalScaleName))) {\n            return this.scaleNameMap.get(this.getName(originalScaleName));\n        }\n        return undefined;\n    }\n    /**\n     * @return projection name after the projection has been parsed and named.\n     */\n    projectionName(parse) {\n        if (parse) {\n            // During the parse phase always return a value\n            // No need to refer to rename map because a projection can't be renamed\n            // before it has the original name.\n            return this.getName('projection');\n        }\n        if ((this.component.projection && !this.component.projection.merged) ||\n            this.projectionNameMap.has(this.getName('projection'))) {\n            return this.projectionNameMap.get(this.getName('projection'));\n        }\n        return undefined;\n    }\n    /**\n     * Traverse a model's hierarchy to get the scale component for a particular channel.\n     */\n    getScaleComponent(channel) {\n        /* istanbul ignore next: This is warning for debugging test */\n        if (!this.component.scales) {\n            throw new Error('getScaleComponent cannot be called before parseScale(). Make sure you have called parseScale or use parseUnitModelWithScale().');\n        }\n        const localScaleComponent = this.component.scales[channel];\n        if (localScaleComponent && !localScaleComponent.merged) {\n            return localScaleComponent;\n        }\n        return this.parent ? this.parent.getScaleComponent(channel) : undefined;\n    }\n    /**\n     * Traverse a model's hierarchy to get a particular selection component.\n     */\n    getSelectionComponent(variableName, origName) {\n        let sel = this.component.selection[variableName];\n        if (!sel && this.parent) {\n            sel = this.parent.getSelectionComponent(variableName, origName);\n        }\n        if (!sel) {\n            throw new Error(_log__WEBPACK_IMPORTED_MODULE_5__[\"message\"].selectionNotFound(origName));\n        }\n        return sel;\n    }\n    /**\n     * Returns true if the model has a signalRef for an axis orient.\n     */\n    hasAxisOrientSignalRef() {\n        var _a, _b;\n        return (((_a = this.component.axes.x) === null || _a === void 0 ? void 0 : _a.some(a => a.hasOrientSignalRef())) || ((_b = this.component.axes.y) === null || _b === void 0 ? void 0 : _b.some(a => a.hasOrientSignalRef())));\n    }\n}\n/** Abstract class for UnitModel and FacetModel. Both of which can contain fieldDefs as a part of its own specification. */\nclass ModelWithField extends Model {\n    /** Get \"field\" reference for Vega */\n    vgField(channel, opt = {}) {\n        const fieldDef = this.fieldDef(channel);\n        if (!fieldDef) {\n            return undefined;\n        }\n        return Object(_channeldef__WEBPACK_IMPORTED_MODULE_1__[\"vgField\"])(fieldDef, opt);\n    }\n    reduceFieldDef(f, init) {\n        return Object(_encoding__WEBPACK_IMPORTED_MODULE_3__[\"reduce\"])(this.getMapping(), (acc, cd, c) => {\n            const fieldDef = Object(_channeldef__WEBPACK_IMPORTED_MODULE_1__[\"getFieldDef\"])(cd);\n            if (fieldDef) {\n                return f(acc, fieldDef, c);\n            }\n            return acc;\n        }, init);\n    }\n    forEachFieldDef(f, t) {\n        Object(_encoding__WEBPACK_IMPORTED_MODULE_3__[\"forEach\"])(this.getMapping(), (cd, c) => {\n            const fieldDef = Object(_channeldef__WEBPACK_IMPORTED_MODULE_1__[\"getFieldDef\"])(cd);\n            if (fieldDef) {\n                f(fieldDef, c);\n            }\n        }, t);\n    }\n}\n//# sourceMappingURL=model.js.map//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,[encoded data, 31632 characters]\n//# sourceURL=webpack-internal:///./node_modules/vega-lite/build/src/compile/model.js\n");

/***/ }),

/***/ "./node_modules/vega-lite/build/src/compile/predicate.js":
/*!***************************************************************!*\
  !*** ./node_modules/vega-lite/build/src/compile/predicate.js ***!
  \***************************************************************/
/*! exports provided: expression */
/***/ (function(module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"expression\", function() { return expression; });\n/* harmony import */ var vega_util__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! vega-util */ \"./node_modules/vega-lite/node_modules/vega-util/build/vega-util.module.js\");\n/* harmony import */ var _predicate__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../predicate */ \"./node_modules/vega-lite/build/src/predicate.js\");\n/* harmony import */ var _util__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ../util */ \"./node_modules/vega-lite/build/src/util.js\");\n/* harmony import */ var _selection_parse__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ./selection/parse */ \"./node_modules/vega-lite/build/src/compile/selection/parse.js\");\n\n\n\n\n/**\n * Converts a predicate into an expression.\n */\n// model is only used for selection filters.\nfunction expression(model, filterOp, node) {\n    return Object(_util__WEBPACK_IMPORTED_MODULE_2__[\"logicalExpr\"])(filterOp, (predicate) => {\n        if (Object(vega_util__WEBPACK_IMPORTED_MODULE_0__[\"isString\"])(predicate)) {\n            return predicate;\n        }\n        else if (Object(_predicate__WEBPACK_IMPORTED_MODULE_1__[\"isSelectionPredicate\"])(predicate)) {\n            return Object(_selection_parse__WEBPACK_IMPORTED_MODULE_3__[\"parseSelectionPredicate\"])(model, predicate.selection, node);\n        }\n        else {\n            // Filter Object\n            return Object(_predicate__WEBPACK_IMPORTED_MODULE_1__[\"fieldFilterExpression\"])(predicate);\n        }\n    });\n}\n//# sourceMappingURL=predicate.js.map//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvdmVnYS1saXRlL2J1aWxkL3NyYy9jb21waWxlL3ByZWRpY2F0ZS5qcy5qcyIsInNvdXJjZXMiOlsid2VicGFjazovLy8uL25vZGVfbW9kdWxlcy92ZWdhLWxpdGUvYnVpbGQvc3JjL2NvbXBpbGUvcHJlZGljYXRlLmpzP2Q1YmUiXSwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgaXNTdHJpbmcgfSBmcm9tICd2ZWdhLXV0aWwnO1xuaW1wb3J0IHsgZmllbGRGaWx0ZXJFeHByZXNzaW9uLCBpc1NlbGVjdGlvblByZWRpY2F0ZSB9IGZyb20gJy4uL3ByZWRpY2F0ZSc7XG5pbXBvcnQgeyBsb2dpY2FsRXhwciB9IGZyb20gJy4uL3V0aWwnO1xuaW1wb3J0IHsgcGFyc2VTZWxlY3Rpb25QcmVkaWNhdGUgfSBmcm9tICcuL3NlbGVjdGlvbi9wYXJzZSc7XG4vKipcbiAqIENvbnZlcnRzIGEgcHJlZGljYXRlIGludG8gYW4gZXhwcmVzc2lvbi5cbiAqL1xuLy8gbW9kZWwgaXMgb25seSB1c2VkIGZvciBzZWxlY3Rpb24gZmlsdGVycy5cbmV4cG9ydCBmdW5jdGlvbiBleHByZXNzaW9uKG1vZGVsLCBmaWx0ZXJPcCwgbm9kZSkge1xuICAgIHJldHVybiBsb2dpY2FsRXhwcihmaWx0ZXJPcCwgKHByZWRpY2F0ZSkgPT4ge1xuICAgICAgICBpZiAoaXNTdHJpbmcocHJlZGljYXRlKSkge1xuICAgICAgICAgICAgcmV0dXJuIHByZWRpY2F0ZTtcbiAgICAgICAgfVxuICAgICAgICBlbHNlIGlmIChpc1NlbGVjdGlvblByZWRpY2F0ZShwcmVkaWNhdGUpKSB7XG4gICAgICAgICAgICByZXR1cm4gcGFyc2VTZWxlY3Rpb25QcmVkaWNhdGUobW9kZWwsIHByZWRpY2F0ZS5zZWxlY3Rpb24sIG5vZGUpO1xuICAgICAgICB9XG4gICAgICAgIGVsc2Uge1xuICAgICAgICAgICAgLy8gRmlsdGVyIE9iamVjdFxuICAgICAgICAgICAgcmV0dXJuIGZpZWxkRmlsdGVyRXhwcmVzc2lvbihwcmVkaWNhdGUpO1xuICAgICAgICB9XG4gICAgfSk7XG59XG4vLyMgc291cmNlTWFwcGluZ1VSTD1wcmVkaWNhdGUuanMubWFwIl0sIm1hcHBpbmdzIjoiQUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBIiwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///./node_modules/vega-lite/build/src/compile/predicate.js\n");

/***/ }),

/***/ "./node_modules/vega-lite/build/src/compile/projection/assemble.js":
/*!*************************************************************************!*\
  !*** ./node_modules/vega-lite/build/src/compile/projection/assemble.js ***!
  \*************************************************************************/
/*! exports provided: assembleProjections, assembleProjectionsForModelAndChildren, assembleProjectionForModel */
/***/ (function(module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"assembleProjections\", function() { return assembleProjections; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"assembleProjectionsForModelAndChildren\", function() { return assembleProjectionsForModelAndChildren; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"assembleProjectionForModel\", function() { return assembleProjectionForModel; });\n/* harmony import */ var _util__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../../util */ \"./node_modules/vega-lite/build/src/util.js\");\n/* harmony import */ var _vega_schema__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../../vega.schema */ \"./node_modules/vega-lite/build/src/vega.schema.js\");\n/* harmony import */ var _model__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ../model */ \"./node_modules/vega-lite/build/src/compile/model.js\");\n\n\n\nfunction assembleProjections(model) {\n    if (Object(_model__WEBPACK_IMPORTED_MODULE_2__[\"isLayerModel\"])(model) || Object(_model__WEBPACK_IMPORTED_MODULE_2__[\"isConcatModel\"])(model)) {\n        return assembleProjectionsForModelAndChildren(model);\n    }\n    else {\n        return assembleProjectionForModel(model);\n    }\n}\nfunction assembleProjectionsForModelAndChildren(model) {\n    return model.children.reduce((projections, child) => {\n        return projections.concat(child.assembleProjections());\n    }, assembleProjectionForModel(model));\n}\nfunction assembleProjectionForModel(model) {\n    const component = model.component.projection;\n    if (!component || component.merged) {\n        return [];\n    }\n    const projection = component.combine();\n    const { name } = projection; // we need to extract name so that it is always present in the output and pass TS type validation\n    if (!component.data) {\n        // generate custom projection, no automatic fitting\n        return [\n            Object.assign(Object.assign({ name }, { translate: { signal: '[width / 2, height / 2]' } }), projection)\n        ];\n    }\n    else {\n        // generate projection that uses extent fitting\n        const size = {\n            signal: `[${component.size.map(ref => ref.signal).join(', ')}]`\n        };\n        const fits = component.data.reduce((sources, data) => {\n            const source = Object(_vega_schema__WEBPACK_IMPORTED_MODULE_1__[\"isSignalRef\"])(data) ? data.signal : `data('${model.lookupDataSource(data)}')`;\n            if (!Object(_util__WEBPACK_IMPORTED_MODULE_0__[\"contains\"])(sources, source)) {\n                // build a unique list of sources\n                sources.push(source);\n            }\n            return sources;\n        }, []);\n        if (fits.length <= 0) {\n            throw new Error(\"Projection's fit didn't find any data sources\");\n        }\n        return [\n            Object.assign({ name,\n                size, fit: {\n                    signal: fits.length > 1 ? `[${fits.join(', ')}]` : fits[0]\n                } }, projection)\n        ];\n    }\n}\n//# sourceMappingURL=assemble.js.map//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvdmVnYS1saXRlL2J1aWxkL3NyYy9jb21waWxlL3Byb2plY3Rpb24vYXNzZW1ibGUuanMuanMiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvdmVnYS1saXRlL2J1aWxkL3NyYy9jb21waWxlL3Byb2plY3Rpb24vYXNzZW1ibGUuanM/ZmNhMiJdLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBjb250YWlucyB9IGZyb20gJy4uLy4uL3V0aWwnO1xuaW1wb3J0IHsgaXNTaWduYWxSZWYgfSBmcm9tICcuLi8uLi92ZWdhLnNjaGVtYSc7XG5pbXBvcnQgeyBpc0NvbmNhdE1vZGVsLCBpc0xheWVyTW9kZWwgfSBmcm9tICcuLi9tb2RlbCc7XG5leHBvcnQgZnVuY3Rpb24gYXNzZW1ibGVQcm9qZWN0aW9ucyhtb2RlbCkge1xuICAgIGlmIChpc0xheWVyTW9kZWwobW9kZWwpIHx8IGlzQ29uY2F0TW9kZWwobW9kZWwpKSB7XG4gICAgICAgIHJldHVybiBhc3NlbWJsZVByb2plY3Rpb25zRm9yTW9kZWxBbmRDaGlsZHJlbihtb2RlbCk7XG4gICAgfVxuICAgIGVsc2Uge1xuICAgICAgICByZXR1cm4gYXNzZW1ibGVQcm9qZWN0aW9uRm9yTW9kZWwobW9kZWwpO1xuICAgIH1cbn1cbmV4cG9ydCBmdW5jdGlvbiBhc3NlbWJsZVByb2plY3Rpb25zRm9yTW9kZWxBbmRDaGlsZHJlbihtb2RlbCkge1xuICAgIHJldHVybiBtb2RlbC5jaGlsZHJlbi5yZWR1Y2UoKHByb2plY3Rpb25zLCBjaGlsZCkgPT4ge1xuICAgICAgICByZXR1cm4gcHJvamVjdGlvbnMuY29uY2F0KGNoaWxkLmFzc2VtYmxlUHJvamVjdGlvbnMoKSk7XG4gICAgfSwgYXNzZW1ibGVQcm9qZWN0aW9uRm9yTW9kZWwobW9kZWwpKTtcbn1cbmV4cG9ydCBmdW5jdGlvbiBhc3NlbWJsZVByb2plY3Rpb25Gb3JNb2RlbChtb2RlbCkge1xuICAgIGNvbnN0IGNvbXBvbmVudCA9IG1vZGVsLmNvbXBvbmVudC5wcm9qZWN0aW9uO1xuICAgIGlmICghY29tcG9uZW50IHx8IGNvbXBvbmVudC5tZXJnZWQpIHtcbiAgICAgICAgcmV0dXJuIFtdO1xuICAgIH1cbiAgICBjb25zdCBwcm9qZWN0aW9uID0gY29tcG9uZW50LmNvbWJpbmUoKTtcbiAgICBjb25zdCB7IG5hbWUgfSA9IHByb2plY3Rpb247IC8vIHdlIG5lZWQgdG8gZXh0cmFjdCBuYW1lIHNvIHRoYXQgaXQgaXMgYWx3YXlzIHByZXNlbnQgaW4gdGhlIG91dHB1dCBhbmQgcGFzcyBUUyB0eXBlIHZhbGlkYXRpb25cbiAgICBpZiAoIWNvbXBvbmVudC5kYXRhKSB7XG4gICAgICAgIC8vIGdlbmVyYXRlIGN1c3RvbSBwcm9qZWN0aW9uLCBubyBhdXRvbWF0aWMgZml0dGluZ1xuICAgICAgICByZXR1cm4gW1xuICAgICAgICAgICAgT2JqZWN0LmFzc2lnbihPYmplY3QuYXNzaWduKHsgbmFtZSB9LCB7IHRyYW5zbGF0ZTogeyBzaWduYWw6ICdbd2lkdGggLyAyLCBoZWlnaHQgLyAyXScgfSB9KSwgcHJvamVjdGlvbilcbiAgICAgICAgXTtcbiAgICB9XG4gICAgZWxzZSB7XG4gICAgICAgIC8vIGdlbmVyYXRlIHByb2plY3Rpb24gdGhhdCB1c2VzIGV4dGVudCBmaXR0aW5nXG4gICAgICAgIGNvbnN0IHNpemUgPSB7XG4gICAgICAgICAgICBzaWduYWw6IGBbJHtjb21wb25lbnQuc2l6ZS5tYXAocmVmID0+IHJlZi5zaWduYWwpLmpvaW4oJywgJyl9XWBcbiAgICAgICAgfTtcbiAgICAgICAgY29uc3QgZml0cyA9IGNvbXBvbmVudC5kYXRhLnJlZHVjZSgoc291cmNlcywgZGF0YSkgPT4ge1xuICAgICAgICAgICAgY29uc3Qgc291cmNlID0gaXNTaWduYWxSZWYoZGF0YSkgPyBkYXRhLnNpZ25hbCA6IGBkYXRhKCcke21vZGVsLmxvb2t1cERhdGFTb3VyY2UoZGF0YSl9JylgO1xuICAgICAgICAgICAgaWYgKCFjb250YWlucyhzb3VyY2VzLCBzb3VyY2UpKSB7XG4gICAgICAgICAgICAgICAgLy8gYnVpbGQgYSB1bmlxdWUgbGlzdCBvZiBzb3VyY2VzXG4gICAgICAgICAgICAgICAgc291cmNlcy5wdXNoKHNvdXJjZSk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICByZXR1cm4gc291cmNlcztcbiAgICAgICAgfSwgW10pO1xuICAgICAgICBpZiAoZml0cy5sZW5ndGggPD0gMCkge1xuICAgICAgICAgICAgdGhyb3cgbmV3IEVycm9yKFwiUHJvamVjdGlvbidzIGZpdCBkaWRuJ3QgZmluZCBhbnkgZGF0YSBzb3VyY2VzXCIpO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiBbXG4gICAgICAgICAgICBPYmplY3QuYXNzaWduKHsgbmFtZSxcbiAgICAgICAgICAgICAgICBzaXplLCBmaXQ6IHtcbiAgICAgICAgICAgICAgICAgICAgc2lnbmFsOiBmaXRzLmxlbmd0aCA+IDEgPyBgWyR7Zml0cy5qb2luKCcsICcpfV1gIDogZml0c1swXVxuICAgICAgICAgICAgICAgIH0gfSwgcHJvamVjdGlvbilcbiAgICAgICAgXTtcbiAgICB9XG59XG4vLyMgc291cmNlTWFwcGluZ1VSTD1hc3NlbWJsZS5qcy5tYXAiXSwibWFwcGluZ3MiOiJBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBIiwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///./node_modules/vega-lite/build/src/compile/projection/assemble.js\n");

/***/ }),

/***/ "./node_modules/vega-lite/build/src/compile/projection/component.js":
/*!**************************************************************************!*\
  !*** ./node_modules/vega-lite/build/src/compile/projection/component.js ***!
  \**************************************************************************/
/*! exports provided: ProjectionComponent */
/***/ (function(module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"ProjectionComponent\", function() { return ProjectionComponent; });\n/* harmony import */ var _split__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../split */ \"./node_modules/vega-lite/build/src/compile/split.js\");\n\nclass ProjectionComponent extends _split__WEBPACK_IMPORTED_MODULE_0__[\"Split\"] {\n    constructor(name, specifiedProjection, size, data) {\n        super(Object.assign({}, specifiedProjection), // all explicit properties of projection\n        { name } // name as initial implicit property\n        );\n        this.specifiedProjection = specifiedProjection;\n        this.size = size;\n        this.data = data;\n        this.merged = false;\n    }\n    /**\n     * Whether the projection parameters should fit provided data.\n     */\n    get isFit() {\n        return !!this.data;\n    }\n}\n//# sourceMappingURL=component.js.map//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvdmVnYS1saXRlL2J1aWxkL3NyYy9jb21waWxlL3Byb2plY3Rpb24vY29tcG9uZW50LmpzLmpzIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL3ZlZ2EtbGl0ZS9idWlsZC9zcmMvY29tcGlsZS9wcm9qZWN0aW9uL2NvbXBvbmVudC5qcz8yNzRlIl0sInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IFNwbGl0IH0gZnJvbSAnLi4vc3BsaXQnO1xuZXhwb3J0IGNsYXNzIFByb2plY3Rpb25Db21wb25lbnQgZXh0ZW5kcyBTcGxpdCB7XG4gICAgY29uc3RydWN0b3IobmFtZSwgc3BlY2lmaWVkUHJvamVjdGlvbiwgc2l6ZSwgZGF0YSkge1xuICAgICAgICBzdXBlcihPYmplY3QuYXNzaWduKHt9LCBzcGVjaWZpZWRQcm9qZWN0aW9uKSwgLy8gYWxsIGV4cGxpY2l0IHByb3BlcnRpZXMgb2YgcHJvamVjdGlvblxuICAgICAgICB7IG5hbWUgfSAvLyBuYW1lIGFzIGluaXRpYWwgaW1wbGljaXQgcHJvcGVydHlcbiAgICAgICAgKTtcbiAgICAgICAgdGhpcy5zcGVjaWZpZWRQcm9qZWN0aW9uID0gc3BlY2lmaWVkUHJvamVjdGlvbjtcbiAgICAgICAgdGhpcy5zaXplID0gc2l6ZTtcbiAgICAgICAgdGhpcy5kYXRhID0gZGF0YTtcbiAgICAgICAgdGhpcy5tZXJnZWQgPSBmYWxzZTtcbiAgICB9XG4gICAgLyoqXG4gICAgICogV2hldGhlciB0aGUgcHJvamVjdGlvbiBwYXJhbWV0ZXJzIHNob3VsZCBmaXQgcHJvdmlkZWQgZGF0YS5cbiAgICAgKi9cbiAgICBnZXQgaXNGaXQoKSB7XG4gICAgICAgIHJldHVybiAhIXRoaXMuZGF0YTtcbiAgICB9XG59XG4vLyMgc291cmNlTWFwcGluZ1VSTD1jb21wb25lbnQuanMubWFwIl0sIm1hcHBpbmdzIjoiQUFBQTtBQUFBO0FBQUE7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSIsInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///./node_modules/vega-lite/build/src/compile/projection/component.js\n");

/***/ }),

/***/ "./node_modules/vega-lite/build/src/compile/projection/parse.js":
/*!**********************************************************************!*\
  !*** ./node_modules/vega-lite/build/src/compile/projection/parse.js ***!
  \**********************************************************************/
/*! exports provided: parseProjection */
/***/ (function(module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"parseProjection\", function() { return parseProjection; });\n/* harmony import */ var vega_util__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! vega-util */ \"./node_modules/vega-lite/node_modules/vega-util/build/vega-util.module.js\");\n/* harmony import */ var _channel__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../../channel */ \"./node_modules/vega-lite/build/src/channel.js\");\n/* harmony import */ var _channeldef__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ../../channeldef */ \"./node_modules/vega-lite/build/src/channeldef.js\");\n/* harmony import */ var _data__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ../../data */ \"./node_modules/vega-lite/build/src/data.js\");\n/* harmony import */ var _projection__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ../../projection */ \"./node_modules/vega-lite/build/src/projection.js\");\n/* harmony import */ var _type__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! ../../type */ \"./node_modules/vega-lite/build/src/type.js\");\n/* harmony import */ var _util__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! ../../util */ \"./node_modules/vega-lite/build/src/util.js\");\n/* harmony import */ var _model__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! ../model */ \"./node_modules/vega-lite/build/src/compile/model.js\");\n/* harmony import */ var _component__WEBPACK_IMPORTED_MODULE_8__ = __webpack_require__(/*! ./component */ \"./node_modules/vega-lite/build/src/compile/projection/component.js\");\n\n\n\n\n\n\n\n\n\nfunction parseProjection(model) {\n    model.component.projection = Object(_model__WEBPACK_IMPORTED_MODULE_7__[\"isUnitModel\"])(model) ? parseUnitProjection(model) : parseNonUnitProjections(model);\n}\nfunction parseUnitProjection(model) {\n    var _a;\n    if (model.hasProjection) {\n        const proj = model.specifiedProjection;\n        const fit = !(proj && (proj.scale != null || proj.translate != null));\n        const size = fit ? [model.getSizeSignalRef('width'), model.getSizeSignalRef('height')] : undefined;\n        const data = fit ? gatherFitData(model) : undefined;\n        return new _component__WEBPACK_IMPORTED_MODULE_8__[\"ProjectionComponent\"](model.projectionName(true), Object.assign(Object.assign({}, ((_a = model.config.projection) !== null && _a !== void 0 ? _a : {})), (proj !== null && proj !== void 0 ? proj : {})), size, data);\n    }\n    return undefined;\n}\nfunction gatherFitData(model) {\n    const data = [];\n    const { encoding } = model;\n    for (const posssiblePair of [\n        [_channel__WEBPACK_IMPORTED_MODULE_1__[\"LONGITUDE\"], _channel__WEBPACK_IMPORTED_MODULE_1__[\"LATITUDE\"]],\n        [_channel__WEBPACK_IMPORTED_MODULE_1__[\"LONGITUDE2\"], _channel__WEBPACK_IMPORTED_MODULE_1__[\"LATITUDE2\"]]\n    ]) {\n        if (Object(_channeldef__WEBPACK_IMPORTED_MODULE_2__[\"getFieldOrDatumDef\"])(encoding[posssiblePair[0]]) || Object(_channeldef__WEBPACK_IMPORTED_MODULE_2__[\"getFieldOrDatumDef\"])(encoding[posssiblePair[1]])) {\n            data.push({\n                signal: model.getName(`geojson_${data.length}`)\n            });\n        }\n    }\n    if (model.channelHasField(_channel__WEBPACK_IMPORTED_MODULE_1__[\"SHAPE\"]) && model.typedFieldDef(_channel__WEBPACK_IMPORTED_MODULE_1__[\"SHAPE\"]).type === _type__WEBPACK_IMPORTED_MODULE_5__[\"GEOJSON\"]) {\n        data.push({\n            signal: model.getName(`geojson_${data.length}`)\n        });\n    }\n    if (data.length === 0) {\n        // main source is geojson, so we can just use that\n        data.push(model.requestDataName(_data__WEBPACK_IMPORTED_MODULE_3__[\"DataSourceType\"].Main));\n    }\n    return data;\n}\nfunction mergeIfNoConflict(first, second) {\n    const allPropertiesShared = Object(_util__WEBPACK_IMPORTED_MODULE_6__[\"every\"])(_projection__WEBPACK_IMPORTED_MODULE_4__[\"PROJECTION_PROPERTIES\"], prop => {\n        // neither has the property\n        if (!Object(vega_util__WEBPACK_IMPORTED_MODULE_0__[\"hasOwnProperty\"])(first.explicit, prop) && !Object(vega_util__WEBPACK_IMPORTED_MODULE_0__[\"hasOwnProperty\"])(second.explicit, prop)) {\n            return true;\n        }\n        // both have property and an equal value for property\n        if (Object(vega_util__WEBPACK_IMPORTED_MODULE_0__[\"hasOwnProperty\"])(first.explicit, prop) &&\n            Object(vega_util__WEBPACK_IMPORTED_MODULE_0__[\"hasOwnProperty\"])(second.explicit, prop) &&\n            // some properties might be signals or objects and require hashing for comparison\n            Object(_util__WEBPACK_IMPORTED_MODULE_6__[\"stringify\"])(first.get(prop)) === Object(_util__WEBPACK_IMPORTED_MODULE_6__[\"stringify\"])(second.get(prop))) {\n            return true;\n        }\n        return false;\n    });\n    const size = Object(_util__WEBPACK_IMPORTED_MODULE_6__[\"stringify\"])(first.size) === Object(_util__WEBPACK_IMPORTED_MODULE_6__[\"stringify\"])(second.size);\n    if (size) {\n        if (allPropertiesShared) {\n            return first;\n        }\n        else if (Object(_util__WEBPACK_IMPORTED_MODULE_6__[\"stringify\"])(first.explicit) === Object(_util__WEBPACK_IMPORTED_MODULE_6__[\"stringify\"])({})) {\n            return second;\n        }\n        else if (Object(_util__WEBPACK_IMPORTED_MODULE_6__[\"stringify\"])(second.explicit) === Object(_util__WEBPACK_IMPORTED_MODULE_6__[\"stringify\"])({})) {\n            return first;\n        }\n    }\n    // if all properties don't match, let each unit spec have its own projection\n    return null;\n}\nfunction parseNonUnitProjections(model) {\n    if (model.children.length === 0) {\n        return undefined;\n    }\n    let nonUnitProjection;\n    // parse all children first\n    for (const child of model.children) {\n        parseProjection(child);\n    }\n    // analyze parsed projections, attempt to merge\n    const mergable = Object(_util__WEBPACK_IMPORTED_MODULE_6__[\"every\"])(model.children, child => {\n        const projection = child.component.projection;\n        if (!projection) {\n            // child layer does not use a projection\n            return true;\n        }\n        else if (!nonUnitProjection) {\n            // cached 'projection' is null, cache this one\n            nonUnitProjection = projection;\n            return true;\n        }\n        else {\n            const merge = mergeIfNoConflict(nonUnitProjection, projection);\n            if (merge) {\n                nonUnitProjection = merge;\n            }\n            return !!merge;\n        }\n    });\n    // if cached one and all other children share the same projection,\n    if (nonUnitProjection && mergable) {\n        // so we can elevate it to the layer level\n        const name = model.projectionName(true);\n        const modelProjection = new _component__WEBPACK_IMPORTED_MODULE_8__[\"ProjectionComponent\"](name, nonUnitProjection.specifiedProjection, nonUnitProjection.size, Object(_util__WEBPACK_IMPORTED_MODULE_6__[\"duplicate\"])(nonUnitProjection.data));\n        // rename and assign all others as merged\n        for (const child of model.children) {\n            const projection = child.component.projection;\n            if (projection) {\n                if (projection.isFit) {\n                    modelProjection.data.push(...child.component.projection.data);\n                }\n                child.renameProjection(projection.get('name'), name);\n                projection.merged = true;\n            }\n        }\n        return modelProjection;\n    }\n    return undefined;\n}\n//# sourceMappingURL=parse.js.map//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,[encoded data, 8132 characters]\n//# sourceURL=webpack-internal:///./node_modules/vega-lite/build/src/compile/projection/parse.js\n");

/***/ }),

/***/ "./node_modules/vega-lite/build/src/compile/resolve.js":
/*!*************************************************************!*\
  !*** ./node_modules/vega-lite/build/src/compile/resolve.js ***!
  \*************************************************************/
/*! exports provided: defaultScaleResolve, parseGuideResolve */
/***/ (function(module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"defaultScaleResolve\", function() { return defaultScaleResolve; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"parseGuideResolve\", function() { return parseGuideResolve; });\n/* harmony import */ var _channel__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../channel */ \"./node_modules/vega-lite/build/src/channel.js\");\n/* harmony import */ var _log__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../log */ \"./node_modules/vega-lite/build/src/log/index.js\");\n/* harmony import */ var _model__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./model */ \"./node_modules/vega-lite/build/src/compile/model.js\");\n\n\n\nfunction defaultScaleResolve(channel, model) {\n    if (Object(_model__WEBPACK_IMPORTED_MODULE_2__[\"isLayerModel\"])(model) || Object(_model__WEBPACK_IMPORTED_MODULE_2__[\"isFacetModel\"])(model)) {\n        return 'shared';\n    }\n    else if (Object(_model__WEBPACK_IMPORTED_MODULE_2__[\"isConcatModel\"])(model)) {\n        return Object(_channel__WEBPACK_IMPORTED_MODULE_0__[\"isXorY\"])(channel) ? 'independent' : 'shared';\n    }\n    /* istanbul ignore next: should never reach here. */\n    throw new Error('invalid model type for resolve');\n}\nfunction parseGuideResolve(resolve, channel) {\n    const channelScaleResolve = resolve.scale[channel];\n    const guide = Object(_channel__WEBPACK_IMPORTED_MODULE_0__[\"isXorY\"])(channel) ? 'axis' : 'legend';\n    if (channelScaleResolve === 'independent') {\n        if (resolve[guide][channel] === 'shared') {\n            _log__WEBPACK_IMPORTED_MODULE_1__[\"warn\"](_log__WEBPACK_IMPORTED_MODULE_1__[\"message\"].independentScaleMeansIndependentGuide(channel));\n        }\n        return 'independent';\n    }\n    return resolve[guide][channel] || 'shared';\n}\n//# sourceMappingURL=resolve.js.map//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvdmVnYS1saXRlL2J1aWxkL3NyYy9jb21waWxlL3Jlc29sdmUuanMuanMiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvdmVnYS1saXRlL2J1aWxkL3NyYy9jb21waWxlL3Jlc29sdmUuanM/Njk5NCJdLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBpc1hvclkgfSBmcm9tICcuLi9jaGFubmVsJztcbmltcG9ydCAqIGFzIGxvZyBmcm9tICcuLi9sb2cnO1xuaW1wb3J0IHsgaXNDb25jYXRNb2RlbCwgaXNGYWNldE1vZGVsLCBpc0xheWVyTW9kZWwgfSBmcm9tICcuL21vZGVsJztcbmV4cG9ydCBmdW5jdGlvbiBkZWZhdWx0U2NhbGVSZXNvbHZlKGNoYW5uZWwsIG1vZGVsKSB7XG4gICAgaWYgKGlzTGF5ZXJNb2RlbChtb2RlbCkgfHwgaXNGYWNldE1vZGVsKG1vZGVsKSkge1xuICAgICAgICByZXR1cm4gJ3NoYXJlZCc7XG4gICAgfVxuICAgIGVsc2UgaWYgKGlzQ29uY2F0TW9kZWwobW9kZWwpKSB7XG4gICAgICAgIHJldHVybiBpc1hvclkoY2hhbm5lbCkgPyAnaW5kZXBlbmRlbnQnIDogJ3NoYXJlZCc7XG4gICAgfVxuICAgIC8qIGlzdGFuYnVsIGlnbm9yZSBuZXh0OiBzaG91bGQgbmV2ZXIgcmVhY2ggaGVyZS4gKi9cbiAgICB0aHJvdyBuZXcgRXJyb3IoJ2ludmFsaWQgbW9kZWwgdHlwZSBmb3IgcmVzb2x2ZScpO1xufVxuZXhwb3J0IGZ1bmN0aW9uIHBhcnNlR3VpZGVSZXNvbHZlKHJlc29sdmUsIGNoYW5uZWwpIHtcbiAgICBjb25zdCBjaGFubmVsU2NhbGVSZXNvbHZlID0gcmVzb2x2ZS5zY2FsZVtjaGFubmVsXTtcbiAgICBjb25zdCBndWlkZSA9IGlzWG9yWShjaGFubmVsKSA/ICdheGlzJyA6ICdsZWdlbmQnO1xuICAgIGlmIChjaGFubmVsU2NhbGVSZXNvbHZlID09PSAnaW5kZXBlbmRlbnQnKSB7XG4gICAgICAgIGlmIChyZXNvbHZlW2d1aWRlXVtjaGFubmVsXSA9PT0gJ3NoYXJlZCcpIHtcbiAgICAgICAgICAgIGxvZy53YXJuKGxvZy5tZXNzYWdlLmluZGVwZW5kZW50U2NhbGVNZWFuc0luZGVwZW5kZW50R3VpZGUoY2hhbm5lbCkpO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiAnaW5kZXBlbmRlbnQnO1xuICAgIH1cbiAgICByZXR1cm4gcmVzb2x2ZVtndWlkZV1bY2hhbm5lbF0gfHwgJ3NoYXJlZCc7XG59XG4vLyMgc291cmNlTWFwcGluZ1VSTD1yZXNvbHZlLmpzLm1hcCJdLCJtYXBwaW5ncyI6IkFBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EiLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///./node_modules/vega-lite/build/src/compile/resolve.js\n");

/***/ }),

/***/ "./node_modules/vega-lite/build/src/compile/scale/assemble.js":
/*!********************************************************************!*\
  !*** ./node_modules/vega-lite/build/src/compile/scale/assemble.js ***!
  \********************************************************************/
/*! exports provided: assembleScales, assembleScalesForModel, assembleScaleRange */
/***/ (function(module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"assembleScales\", function() { return assembleScales; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"assembleScalesForModel\", function() { return assembleScalesForModel; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"assembleScaleRange\", function() { return assembleScaleRange; });\n/* harmony import */ var vega_util__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! vega-util */ \"./node_modules/vega-lite/node_modules/vega-util/build/vega-util.module.js\");\n/* harmony import */ var _channel__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../../channel */ \"./node_modules/vega-lite/build/src/channel.js\");\n/* harmony import */ var _util__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ../../util */ \"./node_modules/vega-lite/build/src/util.js\");\n/* harmony import */ var _vega_schema__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ../../vega.schema */ \"./node_modules/vega-lite/build/src/vega.schema.js\");\n/* harmony import */ var _model__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ../model */ \"./node_modules/vega-lite/build/src/compile/model.js\");\n/* harmony import */ var _selection_assemble__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! ../selection/assemble */ \"./node_modules/vega-lite/build/src/compile/selection/assemble.js\");\n/* harmony import */ var _domain__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! ./domain */ \"./node_modules/vega-lite/build/src/compile/scale/domain.js\");\nvar __rest = (undefined && undefined.__rest) || function (s, e) {\n    var t = {};\n    for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0)\n        t[p] = s[p];\n    if (s != null && typeof Object.getOwnPropertySymbols === \"function\")\n        for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) {\n            if (e.indexOf(p[i]) < 0 && Object.prototype.propertyIsEnumerable.call(s, p[i]))\n                t[p[i]] = s[p[i]];\n        }\n    return t;\n};\n\n\n\n\n\n\n\nfunction assembleScales(model) {\n    if (Object(_model__WEBPACK_IMPORTED_MODULE_4__[\"isLayerModel\"])(model) || Object(_model__WEBPACK_IMPORTED_MODULE_4__[\"isConcatModel\"])(model)) {\n        // For concat and layer, include scales of children too\n        return model.children.reduce((scales, child) => {\n            return scales.concat(assembleScales(child));\n        }, assembleScalesForModel(model));\n    }\n    else {\n        // For facet, child scales would not be included in the parent's scope.\n        // For unit, there is no child.\n        return assembleScalesForModel(model);\n    }\n}\nfunction assembleScalesForModel(model) {\n    return Object(_util__WEBPACK_IMPORTED_MODULE_2__[\"keys\"])(model.component.scales).reduce((scales, channel) => {\n        const scaleComponent = model.component.scales[channel];\n        if (scaleComponent.merged) {\n            // Skipped merged scales\n            return scales;\n        }\n        const scale = scaleComponent.combine();\n        const { name, type, selectionExtent, domains: _d, range: _r, reverse } = scale, otherScaleProps = __rest(scale, [\"name\", \"type\", \"selectionExtent\", \"domains\", \"range\", \"reverse\"]);\n        const range = assembleScaleRange(scale.range, name, channel, model);\n        let domainRaw;\n        if (selectionExtent) {\n            domainRaw = Object(_selection_assemble__WEBPACK_IMPORTED_MODULE_5__[\"assembleSelectionScaleDomain\"])(model, selectionExtent);\n        }\n        const domain = Object(_domain__WEBPACK_IMPORTED_MODULE_6__[\"assembleDomain\"])(model, channel);\n        scales.push(Object.assign(Object.assign(Object.assign(Object.assign(Object.assign({ name,\n            type }, (domain ? { domain } : {})), (domainRaw ? { domainRaw } : {})), { range }), (reverse !== undefined ? { reverse: reverse } : {})), otherScaleProps));\n        return scales;\n    }, []);\n}\nfunction assembleScaleRange(scaleRange, scaleName, channel, model) {\n    // add signals to x/y range\n    if (Object(_channel__WEBPACK_IMPORTED_MODULE_1__[\"isXorY\"])(channel)) {\n        if (Object(_vega_schema__WEBPACK_IMPORTED_MODULE_3__[\"isVgRangeStep\"])(scaleRange)) {\n            // For width/height step, use a signal created in layout assemble instead of a constant step.\n            return {\n                step: { signal: scaleName + '_step' }\n            };\n        }\n    }\n    else if (Object(vega_util__WEBPACK_IMPORTED_MODULE_0__[\"isObject\"])(scaleRange) && Object(_vega_schema__WEBPACK_IMPORTED_MODULE_3__[\"isDataRefDomain\"])(scaleRange)) {\n        return Object.assign(Object.assign({}, scaleRange), { data: model.lookupDataSource(scaleRange.data) });\n    }\n    return scaleRange;\n}\n//# sourceMappingURL=assemble.js.map//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,[encoded data, 5056 characters]\n//# sourceURL=webpack-internal:///./node_modules/vega-lite/build/src/compile/scale/assemble.js\n");

/***/ }),

/***/ "./node_modules/vega-lite/build/src/compile/scale/component.js":
/*!*********************************************************************!*\
  !*** ./node_modules/vega-lite/build/src/compile/scale/component.js ***!
  \*********************************************************************/
/*! exports provided: ScaleComponent */
/***/ (function(module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"ScaleComponent\", function() { return ScaleComponent; });\n/* harmony import */ var vega_util__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! vega-util */ \"./node_modules/vega-lite/node_modules/vega-util/build/vega-util.module.js\");\n/* harmony import */ var _util__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../../util */ \"./node_modules/vega-lite/build/src/util.js\");\n/* harmony import */ var _split__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ../split */ \"./node_modules/vega-lite/build/src/compile/split.js\");\n\n\n\nclass ScaleComponent extends _split__WEBPACK_IMPORTED_MODULE_2__[\"Split\"] {\n    constructor(name, typeWithExplicit) {\n        super({}, // no initial explicit property\n        { name } // name as initial implicit property\n        );\n        this.merged = false;\n        this.setWithExplicit('type', typeWithExplicit);\n    }\n    /**\n     * Whether the scale definitely includes zero in the domain\n     */\n    domainDefinitelyIncludesZero() {\n        if (this.get('zero') !== false) {\n            return true;\n        }\n        return Object(_util__WEBPACK_IMPORTED_MODULE_1__[\"some\"])(this.get('domains'), d => Object(vega_util__WEBPACK_IMPORTED_MODULE_0__[\"isArray\"])(d) && d.length === 2 && d[0] <= 0 && d[1] >= 0);\n    }\n}\n//# sourceMappingURL=component.js.map//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvdmVnYS1saXRlL2J1aWxkL3NyYy9jb21waWxlL3NjYWxlL2NvbXBvbmVudC5qcy5qcyIsInNvdXJjZXMiOlsid2VicGFjazovLy8uL25vZGVfbW9kdWxlcy92ZWdhLWxpdGUvYnVpbGQvc3JjL2NvbXBpbGUvc2NhbGUvY29tcG9uZW50LmpzP2IxYzIiXSwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgaXNBcnJheSB9IGZyb20gJ3ZlZ2EtdXRpbCc7XG5pbXBvcnQgeyBzb21lIH0gZnJvbSAnLi4vLi4vdXRpbCc7XG5pbXBvcnQgeyBTcGxpdCB9IGZyb20gJy4uL3NwbGl0JztcbmV4cG9ydCBjbGFzcyBTY2FsZUNvbXBvbmVudCBleHRlbmRzIFNwbGl0IHtcbiAgICBjb25zdHJ1Y3RvcihuYW1lLCB0eXBlV2l0aEV4cGxpY2l0KSB7XG4gICAgICAgIHN1cGVyKHt9LCAvLyBubyBpbml0aWFsIGV4cGxpY2l0IHByb3BlcnR5XG4gICAgICAgIHsgbmFtZSB9IC8vIG5hbWUgYXMgaW5pdGlhbCBpbXBsaWNpdCBwcm9wZXJ0eVxuICAgICAgICApO1xuICAgICAgICB0aGlzLm1lcmdlZCA9IGZhbHNlO1xuICAgICAgICB0aGlzLnNldFdpdGhFeHBsaWNpdCgndHlwZScsIHR5cGVXaXRoRXhwbGljaXQpO1xuICAgIH1cbiAgICAvKipcbiAgICAgKiBXaGV0aGVyIHRoZSBzY2FsZSBkZWZpbml0ZWx5IGluY2x1ZGVzIHplcm8gaW4gdGhlIGRvbWFpblxuICAgICAqL1xuICAgIGRvbWFpbkRlZmluaXRlbHlJbmNsdWRlc1plcm8oKSB7XG4gICAgICAgIGlmICh0aGlzLmdldCgnemVybycpICE9PSBmYWxzZSkge1xuICAgICAgICAgICAgcmV0dXJuIHRydWU7XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIHNvbWUodGhpcy5nZXQoJ2RvbWFpbnMnKSwgZCA9PiBpc0FycmF5KGQpICYmIGQubGVuZ3RoID09PSAyICYmIGRbMF0gPD0gMCAmJiBkWzFdID49IDApO1xuICAgIH1cbn1cbi8vIyBzb3VyY2VNYXBwaW5nVVJMPWNvbXBvbmVudC5qcy5tYXAiXSwibWFwcGluZ3MiOiJBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSIsInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///./node_modules/vega-lite/build/src/compile/scale/component.js\n");

/***/ }),

/***/ "./node_modules/vega-lite/build/src/compile/scale/domain.js":
/*!******************************************************************!*\
  !*** ./node_modules/vega-lite/build/src/compile/scale/domain.js ***!
  \******************************************************************/
/*! exports provided: parseScaleDomain, parseDomainForChannel, domainSort, canUseUnaggregatedDomain, mergeDomains, getFieldFromDomain, assembleDomain */
/***/ (function(module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"parseScaleDomain\", function() { return parseScaleDomain; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"parseDomainForChannel\", function() { return parseDomainForChannel; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"domainSort\", function() { return domainSort; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"canUseUnaggregatedDomain\", function() { return canUseUnaggregatedDomain; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"mergeDomains\", function() { return mergeDomains; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"getFieldFromDomain\", function() { return getFieldFromDomain; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"assembleDomain\", function() { return assembleDomain; });\n/* harmony import */ var vega_util__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! vega-util */ \"./node_modules/vega-lite/node_modules/vega-util/build/vega-util.module.js\");\n/* harmony import */ var _aggregate__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../../aggregate */ \"./node_modules/vega-lite/build/src/aggregate.js\");\n/* harmony import */ var _bin__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ../../bin */ \"./node_modules/vega-lite/build/src/bin.js\");\n/* harmony import */ var _channel__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ../../channel */ \"./node_modules/vega-lite/build/src/channel.js\");\n/* harmony import */ var _channeldef__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ../../channeldef */ \"./node_modules/vega-lite/build/src/channeldef.js\");\n/* harmony import */ var _data__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! ../../data */ \"./node_modules/vega-lite/build/src/data.js\");\n/* harmony import */ var _log__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! ../../log */ \"./node_modules/vega-lite/build/src/log/index.js\");\n/* harmony import */ var _scale__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! ../../scale */ \"./node_modules/vega-lite/build/src/scale.js\");\n/* harmony import */ var _sort__WEBPACK_IMPORTED_MODULE_8__ = __webpack_require__(/*! ../../sort */ \"./node_modules/vega-lite/build/src/sort.js\");\n/* harmony import */ var _timeunit__WEBPACK_IMPORTED_MODULE_9__ = __webpack_require__(/*! ../../timeunit */ \"./node_modules/vega-lite/build/src/timeunit.js\");\n/* harmony import */ var _util__WEBPACK_IMPORTED_MODULE_10__ = __webpack_require__(/*! ../../util */ \"./node_modules/vega-lite/build/src/util.js\");\n/* harmony import */ var _vega_schema__WEBPACK_IMPORTED_MODULE_11__ = __webpack_require__(/*! ../../vega.schema */ \"./node_modules/vega-lite/build/src/vega.schema.js\");\n/* harmony import */ var _data_bin__WEBPACK_IMPORTED_MODULE_12__ = __webpack_require__(/*! ../data/bin */ \"./node_modules/vega-lite/build/src/compile/data/bin.js\");\n/* harmony import */ var _data_calculate__WEBPACK_IMPORTED_MODULE_13__ = __webpack_require__(/*! ../data/calculate */ \"./node_modules/vega-lite/build/src/compile/data/calculate.js\");\n/* harmony import */ var _data_optimize__WEBPACK_IMPORTED_MODULE_14__ = __webpack_require__(/*! ../data/optimize */ \"./node_modules/vega-lite/build/src/compile/data/optimize.js\");\n/* harmony import */ var _model__WEBPACK_IMPORTED_MODULE_15__ = __webpack_require__(/*! ../model */ \"./node_modules/vega-lite/build/src/compile/model.js\");\n/* harmony import */ var _signal__WEBPACK_IMPORTED_MODULE_16__ = __webpack_require__(/*! ../signal */ \"./node_modules/vega-lite/build/src/compile/signal.js\");\n/* harmony import */ var _split__WEBPACK_IMPORTED_MODULE_17__ = __webpack_require__(/*! ../split */ \"./node_modules/vega-lite/build/src/compile/split.js\");\nvar __rest = (undefined && undefined.__rest) || function (s, e) {\n    var t = {};\n    for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0)\n        t[p] = s[p];\n    if (s != null && typeof Object.getOwnPropertySymbols === \"function\")\n        for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) {\n            if (e.indexOf(p[i]) < 0 && Object.prototype.propertyIsEnumerable.call(s, p[i]))\n                t[p[i]] = s[p[i]];\n        }\n    return t;\n};\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\nfunction parseScaleDomain(model) {\n    if (Object(_model__WEBPACK_IMPORTED_MODULE_15__[\"isUnitModel\"])(model)) {\n        parseUnitScaleDomain(model);\n    }\n    else {\n        parseNonUnitScaleDomain(model);\n    }\n}\nfunction parseUnitScaleDomain(model) {\n    const localScaleComponents = model.component.scales;\n    for (const channel of _util__WEBPACK_IMPORTED_MODULE_10__[\"keys\"](localScaleComponents)) {\n        const domains = parseDomainForChannel(model, channel);\n        const localScaleCmpt = localScaleComponents[channel];\n        localScaleCmpt.setWithExplicit('domains', domains);\n        parseSelectionDomain(model, channel);\n        if (model.component.data.isFaceted) {\n            // get resolve from closest facet parent as this decides whether we need to refer to cloned subtree or not\n            let facetParent = model;\n            while (!Object(_model__WEBPACK_IMPORTED_MODULE_15__[\"isFacetModel\"])(facetParent) && facetParent.parent) {\n                facetParent = facetParent.parent;\n            }\n            const resolve = facetParent.component.resolve.scale[channel];\n            if (resolve === 'shared') {\n                for (const domain of domains.value) {\n                    // Replace the scale domain with data output from a cloned subtree after the facet.\n                    if (Object(_vega_schema__WEBPACK_IMPORTED_MODULE_11__[\"isDataRefDomain\"])(domain)) {\n                        // use data from cloned subtree (which is the same as data but with a prefix added once)\n                        domain.data = _data_optimize__WEBPACK_IMPORTED_MODULE_14__[\"FACET_SCALE_PREFIX\"] + domain.data.replace(_data_optimize__WEBPACK_IMPORTED_MODULE_14__[\"FACET_SCALE_PREFIX\"], '');\n                    }\n                }\n            }\n        }\n    }\n}\nfunction parseNonUnitScaleDomain(model) {\n    for (const child of model.children) {\n        parseScaleDomain(child);\n    }\n    const localScaleComponents = model.component.scales;\n    for (const channel of _util__WEBPACK_IMPORTED_MODULE_10__[\"keys\"](localScaleComponents)) {\n        let domains;\n        let selectionExtent = null;\n        for (const child of model.children) {\n            const childComponent = child.component.scales[channel];\n            if (childComponent) {\n                if (domains === undefined) {\n                    domains = childComponent.getWithExplicit('domains');\n                }\n                else {\n                    domains = Object(_split__WEBPACK_IMPORTED_MODULE_17__[\"mergeValuesWithExplicit\"])(domains, childComponent.getWithExplicit('domains'), 'domains', 'scale', domainsTieBreaker);\n                }\n                const se = childComponent.get('selectionExtent');\n                if (selectionExtent && se && selectionExtent.selection !== se.selection) {\n                    _log__WEBPACK_IMPORTED_MODULE_6__[\"warn\"](_log__WEBPACK_IMPORTED_MODULE_6__[\"message\"].NEEDS_SAME_SELECTION);\n                }\n                selectionExtent = se;\n            }\n        }\n        localScaleComponents[channel].setWithExplicit('domains', domains);\n        if (selectionExtent) {\n            localScaleComponents[channel].set('selectionExtent', selectionExtent, true);\n        }\n    }\n}\n/**\n * Remove unaggregated domain if it is not applicable\n * Add unaggregated domain if domain is not specified and config.scale.useUnaggregatedDomain is true.\n */\nfunction normalizeUnaggregatedDomain(domain, fieldDef, scaleType, scaleConfig) {\n    if (domain === 'unaggregated') {\n        const { valid, reason } = canUseUnaggregatedDomain(fieldDef, scaleType);\n        if (!valid) {\n            _log__WEBPACK_IMPORTED_MODULE_6__[\"warn\"](reason);\n            return undefined;\n        }\n    }\n    else if (domain === undefined && scaleConfig.useUnaggregatedDomain) {\n        // Apply config if domain is not specified.\n        const { valid } = canUseUnaggregatedDomain(fieldDef, scaleType);\n        if (valid) {\n            return 'unaggregated';\n        }\n    }\n    return domain;\n}\nfunction parseDomainForChannel(model, channel) {\n    const scaleType = model.getScaleComponent(channel).get('type');\n    const { encoding } = model;\n    const domain = normalizeUnaggregatedDomain(model.scaleDomain(channel), model.typedFieldDef(channel), scaleType, model.config.scale);\n    if (domain !== model.scaleDomain(channel)) {\n        model.specifiedScales[channel] = Object.assign(Object.assign({}, model.specifiedScales[channel]), { domain });\n    }\n    // If channel is either X or Y then union them with X2 & Y2 if they exist\n    if (channel === 'x' && Object(_channeldef__WEBPACK_IMPORTED_MODULE_4__[\"getFieldOrDatumDef\"])(encoding.x2)) {\n        if (Object(_channeldef__WEBPACK_IMPORTED_MODULE_4__[\"getFieldOrDatumDef\"])(encoding.x)) {\n            return Object(_split__WEBPACK_IMPORTED_MODULE_17__[\"mergeValuesWithExplicit\"])(parseSingleChannelDomain(scaleType, domain, model, 'x'), parseSingleChannelDomain(scaleType, domain, model, 'x2'), 'domain', 'scale', domainsTieBreaker);\n        }\n        else {\n            return parseSingleChannelDomain(scaleType, domain, model, 'x2');\n        }\n    }\n    else if (channel === 'y' && Object(_channeldef__WEBPACK_IMPORTED_MODULE_4__[\"getFieldOrDatumDef\"])(encoding.y2)) {\n        if (Object(_channeldef__WEBPACK_IMPORTED_MODULE_4__[\"getFieldOrDatumDef\"])(encoding.y)) {\n            return Object(_split__WEBPACK_IMPORTED_MODULE_17__[\"mergeValuesWithExplicit\"])(parseSingleChannelDomain(scaleType, domain, model, 'y'), parseSingleChannelDomain(scaleType, domain, model, 'y2'), 'domain', 'scale', domainsTieBreaker);\n        }\n        else {\n            return parseSingleChannelDomain(scaleType, domain, model, 'y2');\n        }\n    }\n    return parseSingleChannelDomain(scaleType, domain, model, channel);\n}\nfunction mapDomainToDataSignal(domain, type, timeUnit) {\n    return domain.map(v => {\n        const data = Object(_channeldef__WEBPACK_IMPORTED_MODULE_4__[\"valueExpr\"])(v, { timeUnit, type });\n        return { signal: `{data: ${data}}` };\n    });\n}\nfunction convertDomainIfItIsDateTime(domain, type, timeUnit) {\n    var _a;\n    // explicit value\n    const normalizedTimeUnit = (_a = Object(_timeunit__WEBPACK_IMPORTED_MODULE_9__[\"normalizeTimeUnit\"])(timeUnit)) === null || _a === void 0 ? void 0 : _a.unit;\n    if (type === 'temporal' || normalizedTimeUnit) {\n        return mapDomainToDataSignal(domain, type, normalizedTimeUnit);\n    }\n    return [domain]; // Date time won't make sense\n}\nfunction parseSingleChannelDomain(scaleType, domain, model, channel) {\n    const { encoding } = model;\n    const fieldOrDatumDef = Object(_channeldef__WEBPACK_IMPORTED_MODULE_4__[\"getFieldOrDatumDef\"])(encoding[channel]);\n    const { type } = fieldOrDatumDef;\n    const timeUnit = fieldOrDatumDef['timeUnit'];\n    if (Object(_scale__WEBPACK_IMPORTED_MODULE_7__[\"isDomainUnionWith\"])(domain)) {\n        const defaultDomain = parseSingleChannelDomain(scaleType, undefined, model, channel);\n        const unionWith = convertDomainIfItIsDateTime(domain.unionWith, type, timeUnit);\n        return Object(_split__WEBPACK_IMPORTED_MODULE_17__[\"makeExplicit\"])([...defaultDomain.value, ...unionWith]);\n    }\n    else if (Object(_vega_schema__WEBPACK_IMPORTED_MODULE_11__[\"isSignalRef\"])(domain)) {\n        return Object(_split__WEBPACK_IMPORTED_MODULE_17__[\"makeExplicit\"])([domain]);\n    }\n    else if (domain && domain !== 'unaggregated' && !Object(_scale__WEBPACK_IMPORTED_MODULE_7__[\"isSelectionDomain\"])(domain)) {\n        return Object(_split__WEBPACK_IMPORTED_MODULE_17__[\"makeExplicit\"])(convertDomainIfItIsDateTime(domain, type, timeUnit));\n    }\n    const stack = model.stack;\n    if (stack && channel === stack.fieldChannel) {\n        if (stack.offset === 'normalize') {\n            return Object(_split__WEBPACK_IMPORTED_MODULE_17__[\"makeImplicit\"])([[0, 1]]);\n        }\n        const data = model.requestDataName(_data__WEBPACK_IMPORTED_MODULE_5__[\"DataSourceType\"].Main);\n        return Object(_split__WEBPACK_IMPORTED_MODULE_17__[\"makeImplicit\"])([\n            {\n                data,\n                field: model.vgField(channel, { suffix: 'start' })\n            },\n            {\n                data,\n                field: model.vgField(channel, { suffix: 'end' })\n            }\n        ]);\n    }\n    const sort = Object(_channel__WEBPACK_IMPORTED_MODULE_3__[\"isScaleChannel\"])(channel) && Object(_channeldef__WEBPACK_IMPORTED_MODULE_4__[\"isFieldDef\"])(fieldOrDatumDef) ? domainSort(model, channel, scaleType) : undefined;\n    if (Object(_channeldef__WEBPACK_IMPORTED_MODULE_4__[\"isDatumDef\"])(fieldOrDatumDef)) {\n        const d = convertDomainIfItIsDateTime([fieldOrDatumDef.datum], type, timeUnit);\n        return Object(_split__WEBPACK_IMPORTED_MODULE_17__[\"makeImplicit\"])(d);\n    }\n    const fieldDef = fieldOrDatumDef; // now we can be sure it's a fieldDef\n    if (domain === 'unaggregated') {\n        const data = model.requestDataName(_data__WEBPACK_IMPORTED_MODULE_5__[\"DataSourceType\"].Main);\n        const { field } = fieldOrDatumDef;\n        return Object(_split__WEBPACK_IMPORTED_MODULE_17__[\"makeImplicit\"])([\n            {\n                data,\n                field: Object(_channeldef__WEBPACK_IMPORTED_MODULE_4__[\"vgField\"])({ field, aggregate: 'min' })\n            },\n            {\n                data,\n                field: Object(_channeldef__WEBPACK_IMPORTED_MODULE_4__[\"vgField\"])({ field, aggregate: 'max' })\n            }\n        ]);\n    }\n    else if (Object(_bin__WEBPACK_IMPORTED_MODULE_2__[\"isBinning\"])(fieldDef.bin)) {\n        if (Object(_scale__WEBPACK_IMPORTED_MODULE_7__[\"hasDiscreteDomain\"])(scaleType)) {\n            if (scaleType === 'bin-ordinal') {\n                // we can omit the domain as it is inferred from the `bins` property\n                return Object(_split__WEBPACK_IMPORTED_MODULE_17__[\"makeImplicit\"])([]);\n            }\n            // ordinal bin scale takes domain from bin_range, ordered by bin start\n            // This is useful for both axis-based scale (x/y) and legend-based scale (other channels).\n            return Object(_split__WEBPACK_IMPORTED_MODULE_17__[\"makeImplicit\"])([\n                {\n                    // If sort by aggregation of a specified sort field, we need to use RAW table,\n                    // so we can aggregate values for the scale independently from the main aggregation.\n                    data: _util__WEBPACK_IMPORTED_MODULE_10__[\"isBoolean\"](sort)\n                        ? model.requestDataName(_data__WEBPACK_IMPORTED_MODULE_5__[\"DataSourceType\"].Main)\n                        : model.requestDataName(_data__WEBPACK_IMPORTED_MODULE_5__[\"DataSourceType\"].Raw),\n                    // Use range if we added it and the scale does not support computing a range as a signal.\n                    field: model.vgField(channel, Object(_channeldef__WEBPACK_IMPORTED_MODULE_4__[\"binRequiresRange\"])(fieldDef, channel) ? { binSuffix: 'range' } : {}),\n                    // we have to use a sort object if sort = true to make the sort correct by bin start\n                    sort: sort === true || !Object(vega_util__WEBPACK_IMPORTED_MODULE_0__[\"isObject\"])(sort)\n                        ? {\n                            field: model.vgField(channel, {}),\n                            op: 'min' // min or max doesn't matter since we sort by the start of the bin range\n                        }\n                        : sort\n                }\n            ]);\n        }\n        else {\n            // continuous scales\n            const { bin } = fieldDef;\n            if (Object(_bin__WEBPACK_IMPORTED_MODULE_2__[\"isBinning\"])(bin)) {\n                const binSignal = Object(_data_bin__WEBPACK_IMPORTED_MODULE_12__[\"getBinSignalName\"])(model, fieldDef.field, bin);\n                return Object(_split__WEBPACK_IMPORTED_MODULE_17__[\"makeImplicit\"])([\n                    new _signal__WEBPACK_IMPORTED_MODULE_16__[\"SignalRefWrapper\"](() => {\n                        const signal = model.getSignalName(binSignal);\n                        return `[${signal}.start, ${signal}.stop]`;\n                    })\n                ]);\n            }\n            else {\n                return Object(_split__WEBPACK_IMPORTED_MODULE_17__[\"makeImplicit\"])([\n                    {\n                        data: model.requestDataName(_data__WEBPACK_IMPORTED_MODULE_5__[\"DataSourceType\"].Main),\n                        field: model.vgField(channel, {})\n                    }\n                ]);\n            }\n        }\n    }\n    else if (fieldDef.timeUnit &&\n        _util__WEBPACK_IMPORTED_MODULE_10__[\"contains\"](['time', 'utc'], scaleType) &&\n        Object(_channeldef__WEBPACK_IMPORTED_MODULE_4__[\"hasBand\"])(channel, fieldDef, Object(_model__WEBPACK_IMPORTED_MODULE_15__[\"isUnitModel\"])(model) ? model.encoding[Object(_channel__WEBPACK_IMPORTED_MODULE_3__[\"getSecondaryRangeChannel\"])(channel)] : undefined, model.stack, model.markDef, model.config)) {\n        const data = model.requestDataName(_data__WEBPACK_IMPORTED_MODULE_5__[\"DataSourceType\"].Main);\n        return Object(_split__WEBPACK_IMPORTED_MODULE_17__[\"makeImplicit\"])([\n            {\n                data,\n                field: model.vgField(channel)\n            },\n            {\n                data,\n                field: model.vgField(channel, { suffix: 'end' })\n            }\n        ]);\n    }\n    else if (sort) {\n        return Object(_split__WEBPACK_IMPORTED_MODULE_17__[\"makeImplicit\"])([\n            {\n                // If sort by aggregation of a specified sort field, we need to use RAW table,\n                // so we can aggregate values for the scale independently from the main aggregation.\n                data: _util__WEBPACK_IMPORTED_MODULE_10__[\"isBoolean\"](sort)\n                    ? model.requestDataName(_data__WEBPACK_IMPORTED_MODULE_5__[\"DataSourceType\"].Main)\n                    : model.requestDataName(_data__WEBPACK_IMPORTED_MODULE_5__[\"DataSourceType\"].Raw),\n                field: model.vgField(channel),\n                sort: sort\n            }\n        ]);\n    }\n    else {\n        return Object(_split__WEBPACK_IMPORTED_MODULE_17__[\"makeImplicit\"])([\n            {\n                data: model.requestDataName(_data__WEBPACK_IMPORTED_MODULE_5__[\"DataSourceType\"].Main),\n                field: model.vgField(channel)\n            }\n        ]);\n    }\n}\nfunction normalizeSortField(sort, isStackedMeasure) {\n    const { op, field, order } = sort;\n    return Object.assign(Object.assign({ \n        // Apply default op\n        op: op !== null && op !== void 0 ? op : (isStackedMeasure ? 'sum' : _sort__WEBPACK_IMPORTED_MODULE_8__[\"DEFAULT_SORT_OP\"]) }, (field ? { field: _util__WEBPACK_IMPORTED_MODULE_10__[\"replacePathInField\"](field) } : {})), (order ? { order } : {}));\n}\nfunction parseSelectionDomain(model, channel) {\n    var _a;\n    const scale = model.component.scales[channel];\n    const spec = model.specifiedScales[channel].domain;\n    const bin = (_a = model.fieldDef(channel)) === null || _a === void 0 ? void 0 : _a.bin;\n    const domain = Object(_scale__WEBPACK_IMPORTED_MODULE_7__[\"isSelectionDomain\"])(spec) && spec;\n    const extent = Object(_bin__WEBPACK_IMPORTED_MODULE_2__[\"isBinParams\"])(bin) && Object(_bin__WEBPACK_IMPORTED_MODULE_2__[\"isSelectionExtent\"])(bin.extent) && bin.extent;\n    if (domain || extent) {\n        // As scale parsing occurs before selection parsing, we cannot set\n        // domainRaw directly. So instead, we store the selectionExtent on\n        // the scale component, and then add domainRaw during scale assembly.\n        scale.set('selectionExtent', domain !== null && domain !== void 0 ? domain : extent, true);\n    }\n}\nfunction domainSort(model, channel, scaleType) {\n    if (!Object(_scale__WEBPACK_IMPORTED_MODULE_7__[\"hasDiscreteDomain\"])(scaleType)) {\n        return undefined;\n    }\n    // save to cast as the only exception is the geojson type for shape, which would not generate a scale\n    const fieldDef = model.fieldDef(channel);\n    const sort = fieldDef.sort;\n    // if the sort is specified with array, use the derived sort index field\n    if (Object(_sort__WEBPACK_IMPORTED_MODULE_8__[\"isSortArray\"])(sort)) {\n        return {\n            op: 'min',\n            field: Object(_data_calculate__WEBPACK_IMPORTED_MODULE_13__[\"sortArrayIndexField\"])(fieldDef, channel),\n            order: 'ascending'\n        };\n    }\n    const { stack } = model;\n    const stackDimensions = stack\n        ? [...(stack.groupbyField ? [stack.groupbyField] : []), ...stack.stackBy.map(s => s.fieldDef.field)]\n        : undefined;\n    // Sorted based on an aggregate calculation over a specified sort field (only for ordinal scale)\n    if (Object(_sort__WEBPACK_IMPORTED_MODULE_8__[\"isSortField\"])(sort)) {\n        const isStackedMeasure = stack && !_util__WEBPACK_IMPORTED_MODULE_10__[\"contains\"](stackDimensions, sort.field);\n        return normalizeSortField(sort, isStackedMeasure);\n    }\n    else if (Object(_sort__WEBPACK_IMPORTED_MODULE_8__[\"isSortByEncoding\"])(sort)) {\n        const { encoding, order } = sort;\n        const fieldDefToSortBy = model.fieldDef(encoding);\n        const { aggregate, field } = fieldDefToSortBy;\n        const isStackedMeasure = stack && !_util__WEBPACK_IMPORTED_MODULE_10__[\"contains\"](stackDimensions, field);\n        if (Object(_aggregate__WEBPACK_IMPORTED_MODULE_1__[\"isArgminDef\"])(aggregate) || Object(_aggregate__WEBPACK_IMPORTED_MODULE_1__[\"isArgmaxDef\"])(aggregate)) {\n            return normalizeSortField({\n                field: Object(_channeldef__WEBPACK_IMPORTED_MODULE_4__[\"vgField\"])(fieldDefToSortBy),\n                order\n            }, isStackedMeasure);\n        }\n        else if (Object(_aggregate__WEBPACK_IMPORTED_MODULE_1__[\"isAggregateOp\"])(aggregate) || !aggregate) {\n            return normalizeSortField({\n                op: aggregate,\n                field,\n                order\n            }, isStackedMeasure);\n        }\n    }\n    else if (sort === 'descending') {\n        return {\n            op: 'min',\n            field: model.vgField(channel),\n            order: 'descending'\n        };\n    }\n    else if (_util__WEBPACK_IMPORTED_MODULE_10__[\"contains\"](['ascending', undefined /* default =ascending*/], sort)) {\n        return true;\n    }\n    // sort == null\n    return undefined;\n}\n/**\n * Determine if a scale can use unaggregated domain.\n * @return {Boolean} Returns true if all of the following conditions apply:\n * 1. `scale.domain` is `unaggregated`\n * 2. Aggregation function is not `count` or `sum`\n * 3. The scale is quantitative or time scale.\n */\nfunction canUseUnaggregatedDomain(fieldDef, scaleType) {\n    const { aggregate, type } = fieldDef;\n    if (!aggregate) {\n        return {\n            valid: false,\n            reason: _log__WEBPACK_IMPORTED_MODULE_6__[\"message\"].unaggregateDomainHasNoEffectForRawField(fieldDef)\n        };\n    }\n    if (Object(vega_util__WEBPACK_IMPORTED_MODULE_0__[\"isString\"])(aggregate) && !_aggregate__WEBPACK_IMPORTED_MODULE_1__[\"SHARED_DOMAIN_OP_INDEX\"][aggregate]) {\n        return {\n            valid: false,\n            reason: _log__WEBPACK_IMPORTED_MODULE_6__[\"message\"].unaggregateDomainWithNonSharedDomainOp(aggregate)\n        };\n    }\n    if (type === 'quantitative') {\n        if (scaleType === 'log') {\n            return {\n                valid: false,\n                reason: _log__WEBPACK_IMPORTED_MODULE_6__[\"message\"].unaggregatedDomainWithLogScale(fieldDef)\n            };\n        }\n    }\n    return { valid: true };\n}\n/**\n * Tie breaker for mergeValuesWithExplicit for domains. We concat the specified values.\n */\nfunction domainsTieBreaker(v1, v2, property, propertyOf) {\n    if (v1.explicit && v2.explicit) {\n        _log__WEBPACK_IMPORTED_MODULE_6__[\"warn\"](_log__WEBPACK_IMPORTED_MODULE_6__[\"message\"].mergeConflictingDomainProperty(property, propertyOf, v1.value, v2.value));\n    }\n    // If equal score, concat the domains so that we union them later.\n    return { explicit: v1.explicit, value: [...v1.value, ...v2.value] };\n}\n/**\n * Converts an array of domains to a single Vega scale domain.\n */\nfunction mergeDomains(domains) {\n    const uniqueDomains = _util__WEBPACK_IMPORTED_MODULE_10__[\"unique\"](domains.map(domain => {\n        // ignore sort property when computing the unique domains\n        if (Object(_vega_schema__WEBPACK_IMPORTED_MODULE_11__[\"isDataRefDomain\"])(domain)) {\n            const { sort: _s } = domain, domainWithoutSort = __rest(domain, [\"sort\"]);\n            return domainWithoutSort;\n        }\n        return domain;\n    }), _util__WEBPACK_IMPORTED_MODULE_10__[\"hash\"]);\n    const sorts = _util__WEBPACK_IMPORTED_MODULE_10__[\"unique\"](domains\n        .map(d => {\n        if (Object(_vega_schema__WEBPACK_IMPORTED_MODULE_11__[\"isDataRefDomain\"])(d)) {\n            const s = d.sort;\n            if (s !== undefined && !_util__WEBPACK_IMPORTED_MODULE_10__[\"isBoolean\"](s)) {\n                if ('op' in s && s.op === 'count') {\n                    // let's make sure that if op is count, we don't use a field\n                    delete s.field;\n                }\n                if (s.order === 'ascending') {\n                    // drop order: ascending as it is the default\n                    delete s.order;\n                }\n            }\n            return s;\n        }\n        return undefined;\n    })\n        .filter(s => s !== undefined), _util__WEBPACK_IMPORTED_MODULE_10__[\"hash\"]);\n    if (uniqueDomains.length === 0) {\n        return undefined;\n    }\n    else if (uniqueDomains.length === 1) {\n        const domain = domains[0];\n        if (Object(_vega_schema__WEBPACK_IMPORTED_MODULE_11__[\"isDataRefDomain\"])(domain) && sorts.length > 0) {\n            let sort = sorts[0];\n            if (sorts.length > 1) {\n                _log__WEBPACK_IMPORTED_MODULE_6__[\"warn\"](_log__WEBPACK_IMPORTED_MODULE_6__[\"message\"].MORE_THAN_ONE_SORT);\n                sort = true;\n            }\n            else {\n                // Simplify domain sort by removing field and op when the field is the same as the domain field.\n                if (Object(vega_util__WEBPACK_IMPORTED_MODULE_0__[\"isObject\"])(sort) && 'field' in sort) {\n                    const sortField = sort.field;\n                    if (domain.field === sortField) {\n                        sort = sort.order ? { order: sort.order } : true;\n                    }\n                }\n            }\n            return Object.assign(Object.assign({}, domain), { sort });\n        }\n        return domain;\n    }\n    // only keep sort properties that work with unioned domains\n    const unionDomainSorts = _util__WEBPACK_IMPORTED_MODULE_10__[\"unique\"](sorts.map(s => {\n        if (_util__WEBPACK_IMPORTED_MODULE_10__[\"isBoolean\"](s) || !('op' in s) || (Object(vega_util__WEBPACK_IMPORTED_MODULE_0__[\"isString\"])(s.op) && s.op in _aggregate__WEBPACK_IMPORTED_MODULE_1__[\"MULTIDOMAIN_SORT_OP_INDEX\"])) {\n            return s;\n        }\n        _log__WEBPACK_IMPORTED_MODULE_6__[\"warn\"](_log__WEBPACK_IMPORTED_MODULE_6__[\"message\"].domainSortDropped(s));\n        return true;\n    }), _util__WEBPACK_IMPORTED_MODULE_10__[\"hash\"]);\n    let sort;\n    if (unionDomainSorts.length === 1) {\n        sort = unionDomainSorts[0];\n    }\n    else if (unionDomainSorts.length > 1) {\n        _log__WEBPACK_IMPORTED_MODULE_6__[\"warn\"](_log__WEBPACK_IMPORTED_MODULE_6__[\"message\"].MORE_THAN_ONE_SORT);\n        sort = true;\n    }\n    const allData = _util__WEBPACK_IMPORTED_MODULE_10__[\"unique\"](domains.map(d => {\n        if (Object(_vega_schema__WEBPACK_IMPORTED_MODULE_11__[\"isDataRefDomain\"])(d)) {\n            return d.data;\n        }\n        return null;\n    }), x => x);\n    if (allData.length === 1 && allData[0] !== null) {\n        // create a union domain of different fields with a single data source\n        const domain = Object.assign({ data: allData[0], fields: uniqueDomains.map(d => d.field) }, (sort ? { sort } : {}));\n        return domain;\n    }\n    return Object.assign({ fields: uniqueDomains }, (sort ? { sort } : {}));\n}\n/**\n * Return a field if a scale uses a single field.\n * Return `undefined` otherwise.\n */\nfunction getFieldFromDomain(domain) {\n    if (Object(_vega_schema__WEBPACK_IMPORTED_MODULE_11__[\"isDataRefDomain\"])(domain) && Object(vega_util__WEBPACK_IMPORTED_MODULE_0__[\"isString\"])(domain.field)) {\n        return domain.field;\n    }\n    else if (Object(_vega_schema__WEBPACK_IMPORTED_MODULE_11__[\"isDataRefUnionedDomain\"])(domain)) {\n        let field;\n        for (const nonUnionDomain of domain.fields) {\n            if (Object(_vega_schema__WEBPACK_IMPORTED_MODULE_11__[\"isDataRefDomain\"])(nonUnionDomain) && Object(vega_util__WEBPACK_IMPORTED_MODULE_0__[\"isString\"])(nonUnionDomain.field)) {\n                if (!field) {\n                    field = nonUnionDomain.field;\n                }\n                else if (field !== nonUnionDomain.field) {\n                    _log__WEBPACK_IMPORTED_MODULE_6__[\"warn\"](_log__WEBPACK_IMPORTED_MODULE_6__[\"message\"].FACETED_INDEPENDENT_DIFFERENT_SOURCES);\n                    return field;\n                }\n            }\n        }\n        _log__WEBPACK_IMPORTED_MODULE_6__[\"warn\"](_log__WEBPACK_IMPORTED_MODULE_6__[\"message\"].FACETED_INDEPENDENT_SAME_FIELDS_DIFFERENT_SOURCES);\n        return field;\n    }\n    else if (Object(_vega_schema__WEBPACK_IMPORTED_MODULE_11__[\"isFieldRefUnionDomain\"])(domain)) {\n        _log__WEBPACK_IMPORTED_MODULE_6__[\"warn\"](_log__WEBPACK_IMPORTED_MODULE_6__[\"message\"].FACETED_INDEPENDENT_SAME_SOURCE);\n        const field = domain.fields[0];\n        return Object(vega_util__WEBPACK_IMPORTED_MODULE_0__[\"isString\"])(field) ? field : undefined;\n    }\n    return undefined;\n}\nfunction assembleDomain(model, channel) {\n    const scaleComponent = model.component.scales[channel];\n    const domains = scaleComponent.get('domains').map((domain) => {\n        // Correct references to data as the original domain's data was determined\n        // in parseScale, which happens before parseData. Thus the original data\n        // reference can be incorrect.\n        if (Object(_vega_schema__WEBPACK_IMPORTED_MODULE_11__[\"isDataRefDomain\"])(domain)) {\n            domain.data = model.lookupDataSource(domain.data);\n        }\n        return domain;\n    });\n    // domains is an array that has to be merged into a single vega domain\n    return mergeDomains(domains);\n}\n//# sourceMappingURL=domain.js.map//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,[encoded data, 35068 characters]\n//# sourceURL=webpack-internal:///./node_modules/vega-lite/build/src/compile/scale/domain.js\n");

/***/ }),

/***/ "./node_modules/vega-lite/build/src/compile/scale/parse.js":
/*!*****************************************************************!*\
  !*** ./node_modules/vega-lite/build/src/compile/scale/parse.js ***!
  \*****************************************************************/
/*! exports provided: parseScales, parseScaleCore */
/***/ (function(module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"parseScales\", function() { return parseScales; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"parseScaleCore\", function() { return parseScaleCore; });\n/* harmony import */ var _channel__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../../channel */ \"./node_modules/vega-lite/build/src/channel.js\");\n/* harmony import */ var _channeldef__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../../channeldef */ \"./node_modules/vega-lite/build/src/channeldef.js\");\n/* harmony import */ var _mark__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ../../mark */ \"./node_modules/vega-lite/build/src/mark.js\");\n/* harmony import */ var _scale__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ../../scale */ \"./node_modules/vega-lite/build/src/scale.js\");\n/* harmony import */ var _type__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ../../type */ \"./node_modules/vega-lite/build/src/type.js\");\n/* harmony import */ var _util__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! ../../util */ \"./node_modules/vega-lite/build/src/util.js\");\n/* harmony import */ var _model__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! ../model */ \"./node_modules/vega-lite/build/src/compile/model.js\");\n/* harmony import */ var _resolve__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! ../resolve */ \"./node_modules/vega-lite/build/src/compile/resolve.js\");\n/* harmony import */ var _split__WEBPACK_IMPORTED_MODULE_8__ = __webpack_require__(/*! ../split */ \"./node_modules/vega-lite/build/src/compile/split.js\");\n/* harmony import */ var _component__WEBPACK_IMPORTED_MODULE_9__ = __webpack_require__(/*! ./component */ \"./node_modules/vega-lite/build/src/compile/scale/component.js\");\n/* harmony import */ var _domain__WEBPACK_IMPORTED_MODULE_10__ = __webpack_require__(/*! ./domain */ \"./node_modules/vega-lite/build/src/compile/scale/domain.js\");\n/* harmony import */ var _properties__WEBPACK_IMPORTED_MODULE_11__ = __webpack_require__(/*! ./properties */ \"./node_modules/vega-lite/build/src/compile/scale/properties.js\");\n/* harmony import */ var _type__WEBPACK_IMPORTED_MODULE_12__ = __webpack_require__(/*! ./type */ \"./node_modules/vega-lite/build/src/compile/scale/type.js\");\n\n\n\n\n\n\n\n\n\n\n\n\n\nfunction parseScales(model, { ignoreRange } = {}) {\n    parseScaleCore(model);\n    Object(_domain__WEBPACK_IMPORTED_MODULE_10__[\"parseScaleDomain\"])(model);\n    for (const prop of _scale__WEBPACK_IMPORTED_MODULE_3__[\"NON_TYPE_DOMAIN_RANGE_VEGA_SCALE_PROPERTIES\"]) {\n        Object(_properties__WEBPACK_IMPORTED_MODULE_11__[\"parseScaleProperty\"])(model, prop);\n    }\n    if (!ignoreRange) {\n        // range depends on zero\n        Object(_properties__WEBPACK_IMPORTED_MODULE_11__[\"parseScaleRange\"])(model);\n    }\n}\nfunction parseScaleCore(model) {\n    if (Object(_model__WEBPACK_IMPORTED_MODULE_6__[\"isUnitModel\"])(model)) {\n        model.component.scales = parseUnitScaleCore(model);\n    }\n    else {\n        model.component.scales = parseNonUnitScaleCore(model);\n    }\n}\n/**\n * Parse scales for all channels of a model.\n */\nfunction parseUnitScaleCore(model) {\n    const { encoding, mark } = model;\n    return _channel__WEBPACK_IMPORTED_MODULE_0__[\"SCALE_CHANNELS\"].reduce((scaleComponents, channel) => {\n        const fieldOrDatumDef = Object(_channeldef__WEBPACK_IMPORTED_MODULE_1__[\"getFieldOrDatumDef\"])(encoding[channel]); // must be typed def to have scale\n        // Don't generate scale for shape of geoshape\n        if (fieldOrDatumDef && mark === _mark__WEBPACK_IMPORTED_MODULE_2__[\"GEOSHAPE\"] && channel === _channel__WEBPACK_IMPORTED_MODULE_0__[\"SHAPE\"] && fieldOrDatumDef.type === _type__WEBPACK_IMPORTED_MODULE_4__[\"GEOJSON\"]) {\n            return scaleComponents;\n        }\n        let specifiedScale = fieldOrDatumDef && fieldOrDatumDef['scale'];\n        if (fieldOrDatumDef && specifiedScale !== null && specifiedScale !== false) {\n            specifiedScale = specifiedScale !== null && specifiedScale !== void 0 ? specifiedScale : {};\n            const sType = Object(_type__WEBPACK_IMPORTED_MODULE_12__[\"scaleType\"])(specifiedScale, channel, fieldOrDatumDef, mark);\n            scaleComponents[channel] = new _component__WEBPACK_IMPORTED_MODULE_9__[\"ScaleComponent\"](model.scaleName(channel + '', true), {\n                value: sType,\n                explicit: specifiedScale.type === sType\n            });\n        }\n        return scaleComponents;\n    }, {});\n}\nconst scaleTypeTieBreaker = Object(_split__WEBPACK_IMPORTED_MODULE_8__[\"tieBreakByComparing\"])((st1, st2) => Object(_scale__WEBPACK_IMPORTED_MODULE_3__[\"scaleTypePrecedence\"])(st1) - Object(_scale__WEBPACK_IMPORTED_MODULE_3__[\"scaleTypePrecedence\"])(st2));\nfunction parseNonUnitScaleCore(model) {\n    var _a;\n    const scaleComponents = (model.component.scales = {});\n    const scaleTypeWithExplicitIndex = {};\n    const resolve = model.component.resolve;\n    // Parse each child scale and determine if a particular channel can be merged.\n    for (const child of model.children) {\n        parseScaleCore(child);\n        // Instead of always merging right away -- check if it is compatible to merge first!\n        for (const channel of Object(_util__WEBPACK_IMPORTED_MODULE_5__[\"keys\"])(child.component.scales)) {\n            // if resolve is undefined, set default first\n            resolve.scale[channel] = (_a = resolve.scale[channel]) !== null && _a !== void 0 ? _a : Object(_resolve__WEBPACK_IMPORTED_MODULE_7__[\"defaultScaleResolve\"])(channel, model);\n            if (resolve.scale[channel] === 'shared') {\n                const explicitScaleType = scaleTypeWithExplicitIndex[channel];\n                const childScaleType = child.component.scales[channel].getWithExplicit('type');\n                if (explicitScaleType) {\n                    if (Object(_scale__WEBPACK_IMPORTED_MODULE_3__[\"scaleCompatible\"])(explicitScaleType.value, childScaleType.value)) {\n                        // merge scale component if type are compatible\n                        scaleTypeWithExplicitIndex[channel] = Object(_split__WEBPACK_IMPORTED_MODULE_8__[\"mergeValuesWithExplicit\"])(explicitScaleType, childScaleType, 'type', 'scale', scaleTypeTieBreaker);\n                    }\n                    else {\n                        // Otherwise, update conflicting channel to be independent\n                        resolve.scale[channel] = 'independent';\n                        // Remove from the index so they don't get merged\n                        delete scaleTypeWithExplicitIndex[channel];\n                    }\n                }\n                else {\n                    scaleTypeWithExplicitIndex[channel] = childScaleType;\n                }\n            }\n        }\n    }\n    // Merge each channel listed in the index\n    for (const channel of Object(_util__WEBPACK_IMPORTED_MODULE_5__[\"keys\"])(scaleTypeWithExplicitIndex)) {\n        // Create new merged scale component\n        const name = model.scaleName(channel, true);\n        const typeWithExplicit = scaleTypeWithExplicitIndex[channel];\n        scaleComponents[channel] = new _component__WEBPACK_IMPORTED_MODULE_9__[\"ScaleComponent\"](name, typeWithExplicit);\n        // rename each child and mark them as merged\n        for (const child of model.children) {\n            const childScale = child.component.scales[channel];\n            if (childScale) {\n                child.renameScale(childScale.get('name'), name);\n                childScale.merged = true;\n            }\n        }\n    }\n    return scaleComponents;\n}\n//# sourceMappingURL=parse.js.map//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,[encoded data, 7976 characters]\n//# sourceURL=webpack-internal:///./node_modules/vega-lite/build/src/compile/scale/parse.js\n");

/***/ }),

/***/ "./node_modules/vega-lite/build/src/compile/scale/properties.js":
/*!**********************************************************************!*\
  !*** ./node_modules/vega-lite/build/src/compile/scale/properties.js ***!
  \**********************************************************************/
/*! exports provided: parseScaleProperty, scaleRules, parseScaleRange, parseNonUnitScaleProperty, bins, interpolate, nice, padding, paddingInner, paddingOuter, reverse, zero */
/***/ (function(module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"parseScaleProperty\", function() { return parseScaleProperty; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"scaleRules\", function() { return scaleRules; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"parseScaleRange\", function() { return parseScaleRange; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"parseNonUnitScaleProperty\", function() { return parseNonUnitScaleProperty; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"bins\", function() { return bins; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"interpolate\", function() { return interpolate; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"nice\", function() { return nice; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"padding\", function() { return padding; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"paddingInner\", function() { return paddingInner; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"paddingOuter\", function() { return paddingOuter; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"reverse\", function() { return reverse; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"zero\", function() { return zero; });\n/* harmony import */ var vega_util__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! vega-util */ \"./node_modules/vega-lite/node_modules/vega-util/build/vega-util.module.js\");\n/* harmony import */ var _bin__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../../bin */ \"./node_modules/vega-lite/build/src/bin.js\");\n/* harmony import */ var _channel__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ../../channel */ \"./node_modules/vega-lite/build/src/channel.js\");\n/* harmony import */ var _channeldef__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ../../channeldef */ \"./node_modules/vega-lite/build/src/channeldef.js\");\n/* harmony import */ var _datetime__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ../../datetime */ \"./node_modules/vega-lite/build/src/datetime.js\");\n/* harmony import */ var _log__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! ../../log */ \"./node_modules/vega-lite/build/src/log/index.js\");\n/* harmony import */ var _scale__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! ../../scale */ \"./node_modules/vega-lite/build/src/scale.js\");\n/* harmony import */ var _util__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! ../../util */ \"./node_modules/vega-lite/build/src/util.js\");\n/* harmony import */ var _vega_schema__WEBPACK_IMPORTED_MODULE_8__ = __webpack_require__(/*! ../../vega.schema */ \"./node_modules/vega-lite/build/src/vega.schema.js\");\n/* harmony import */ var _data_bin__WEBPACK_IMPORTED_MODULE_9__ = __webpack_require__(/*! ../data/bin */ \"./node_modules/vega-lite/build/src/compile/data/bin.js\");\n/* harmony import */ var _model__WEBPACK_IMPORTED_MODULE_10__ = __webpack_require__(/*! ../model */ \"./node_modules/vega-lite/build/src/compile/model.js\");\n/* harmony import */ var _signal__WEBPACK_IMPORTED_MODULE_11__ = __webpack_require__(/*! ../signal */ \"./node_modules/vega-lite/build/src/compile/signal.js\");\n/* harmony import */ var _split__WEBPACK_IMPORTED_MODULE_12__ = __webpack_require__(/*! ../split */ \"./node_modules/vega-lite/build/src/compile/split.js\");\n/* harmony import */ var _range__WEBPACK_IMPORTED_MODULE_13__ = __webpack_require__(/*! ./range */ \"./node_modules/vega-lite/build/src/compile/scale/range.js\");\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\nfunction parseScaleProperty(model, property) {\n    if (Object(_model__WEBPACK_IMPORTED_MODULE_10__[\"isUnitModel\"])(model)) {\n        parseUnitScaleProperty(model, property);\n    }\n    else {\n        parseNonUnitScaleProperty(model, property);\n    }\n}\nfunction parseUnitScaleProperty(model, property) {\n    const localScaleComponents = model.component.scales;\n    const { config, encoding, markDef, specifiedScales } = model;\n    for (const channel of Object(_util__WEBPACK_IMPORTED_MODULE_7__[\"keys\"])(localScaleComponents)) {\n        const specifiedScale = specifiedScales[channel];\n        const localScaleCmpt = localScaleComponents[channel];\n        const mergedScaleCmpt = model.getScaleComponent(channel);\n        const fieldOrDatumDef = Object(_channeldef__WEBPACK_IMPORTED_MODULE_3__[\"getFieldOrDatumDef\"])(encoding[channel]);\n        const specifiedValue = specifiedScale[property];\n        const scaleType = mergedScaleCmpt.get('type');\n        const scalePadding = mergedScaleCmpt.get('padding');\n        const scalePaddingInner = mergedScaleCmpt.get('paddingInner');\n        const supportedByScaleType = Object(_scale__WEBPACK_IMPORTED_MODULE_6__[\"scaleTypeSupportProperty\"])(scaleType, property);\n        const channelIncompatability = Object(_scale__WEBPACK_IMPORTED_MODULE_6__[\"channelScalePropertyIncompatability\"])(channel, property);\n        if (specifiedValue !== undefined) {\n            // If there is a specified value, check if it is compatible with scale type and channel\n            if (!supportedByScaleType) {\n                _log__WEBPACK_IMPORTED_MODULE_5__[\"warn\"](_log__WEBPACK_IMPORTED_MODULE_5__[\"message\"].scalePropertyNotWorkWithScaleType(scaleType, property, channel));\n            }\n            else if (channelIncompatability) {\n                // channel\n                _log__WEBPACK_IMPORTED_MODULE_5__[\"warn\"](channelIncompatability);\n            }\n        }\n        if (supportedByScaleType && channelIncompatability === undefined) {\n            if (specifiedValue !== undefined) {\n                const timeUnit = fieldOrDatumDef['timeUnit'];\n                const type = fieldOrDatumDef.type;\n                switch (property) {\n                    // domainMax/Min to signal if the value is a datetime object\n                    case 'domainMax':\n                    case 'domainMin':\n                        if (Object(_datetime__WEBPACK_IMPORTED_MODULE_4__[\"isDateTime\"])(specifiedScale[property]) || type === 'temporal' || timeUnit) {\n                            localScaleCmpt.set(property, { signal: Object(_channeldef__WEBPACK_IMPORTED_MODULE_3__[\"valueExpr\"])(specifiedScale[property], { type, timeUnit }) }, true);\n                        }\n                        else {\n                            localScaleCmpt.set(property, specifiedScale[property], true);\n                        }\n                        break;\n                    default:\n                        localScaleCmpt.copyKeyFromObject(property, specifiedScale);\n                }\n            }\n            else {\n                const value = property in scaleRules\n                    ? scaleRules[property]({\n                        model,\n                        channel,\n                        fieldOrDatumDef,\n                        scaleType,\n                        scalePadding,\n                        scalePaddingInner,\n                        domain: specifiedScale.domain,\n                        markDef,\n                        config\n                    })\n                    : config.scale[property];\n                if (value !== undefined) {\n                    localScaleCmpt.set(property, value, false);\n                }\n            }\n        }\n    }\n}\nconst scaleRules = {\n    bins: ({ model, fieldOrDatumDef }) => (Object(_channeldef__WEBPACK_IMPORTED_MODULE_3__[\"isFieldDef\"])(fieldOrDatumDef) ? bins(model, fieldOrDatumDef) : undefined),\n    interpolate: ({ channel, fieldOrDatumDef }) => interpolate(channel, fieldOrDatumDef.type),\n    nice: ({ scaleType, channel, fieldOrDatumDef }) => nice(scaleType, channel, fieldOrDatumDef),\n    padding: ({ channel, scaleType, fieldOrDatumDef, markDef, config }) => padding(channel, scaleType, config.scale, fieldOrDatumDef, markDef, config.bar),\n    paddingInner: ({ scalePadding, channel, markDef, config }) => paddingInner(scalePadding, channel, markDef.type, config.scale),\n    paddingOuter: ({ scalePadding, channel, scaleType, markDef, scalePaddingInner, config }) => paddingOuter(scalePadding, channel, scaleType, markDef.type, scalePaddingInner, config.scale),\n    reverse: ({ fieldOrDatumDef, scaleType, channel, config }) => {\n        const sort = Object(_channeldef__WEBPACK_IMPORTED_MODULE_3__[\"isFieldDef\"])(fieldOrDatumDef) ? fieldOrDatumDef.sort : undefined;\n        return reverse(scaleType, sort, channel, config.scale);\n    },\n    zero: ({ channel, fieldOrDatumDef, domain, markDef, scaleType }) => zero(channel, fieldOrDatumDef, domain, markDef, scaleType)\n};\n// This method is here rather than in range.ts to avoid circular dependency.\nfunction parseScaleRange(model) {\n    if (Object(_model__WEBPACK_IMPORTED_MODULE_10__[\"isUnitModel\"])(model)) {\n        Object(_range__WEBPACK_IMPORTED_MODULE_13__[\"parseUnitScaleRange\"])(model);\n    }\n    else {\n        parseNonUnitScaleProperty(model, 'range');\n    }\n}\nfunction parseNonUnitScaleProperty(model, property) {\n    const localScaleComponents = model.component.scales;\n    for (const child of model.children) {\n        if (property === 'range') {\n            parseScaleRange(child);\n        }\n        else {\n            parseScaleProperty(child, property);\n        }\n    }\n    for (const channel of Object(_util__WEBPACK_IMPORTED_MODULE_7__[\"keys\"])(localScaleComponents)) {\n        let valueWithExplicit;\n        for (const child of model.children) {\n            const childComponent = child.component.scales[channel];\n            if (childComponent) {\n                const childValueWithExplicit = childComponent.getWithExplicit(property);\n                valueWithExplicit = Object(_split__WEBPACK_IMPORTED_MODULE_12__[\"mergeValuesWithExplicit\"])(valueWithExplicit, childValueWithExplicit, property, 'scale', Object(_split__WEBPACK_IMPORTED_MODULE_12__[\"tieBreakByComparing\"])((v1, v2) => {\n                    switch (property) {\n                        case 'range':\n                            // For step, prefer larger step\n                            if (v1.step && v2.step) {\n                                return v1.step - v2.step;\n                            }\n                            return 0;\n                        // TODO: precedence rule for other properties\n                    }\n                    return 0;\n                }));\n            }\n        }\n        localScaleComponents[channel].setWithExplicit(property, valueWithExplicit);\n    }\n}\nfunction bins(model, fieldDef) {\n    const bin = fieldDef.bin;\n    if (Object(_bin__WEBPACK_IMPORTED_MODULE_1__[\"isBinning\"])(bin)) {\n        const binSignal = Object(_data_bin__WEBPACK_IMPORTED_MODULE_9__[\"getBinSignalName\"])(model, fieldDef.field, bin);\n        return new _signal__WEBPACK_IMPORTED_MODULE_11__[\"SignalRefWrapper\"](() => {\n            return model.getSignalName(binSignal);\n        });\n    }\n    else if (Object(_bin__WEBPACK_IMPORTED_MODULE_1__[\"isBinned\"])(bin) && Object(_bin__WEBPACK_IMPORTED_MODULE_1__[\"isBinParams\"])(bin) && bin.step !== undefined) {\n        // start and stop will be determined from the scale domain\n        return {\n            step: bin.step\n        };\n    }\n    return undefined;\n}\nfunction interpolate(channel, type) {\n    if (Object(_util__WEBPACK_IMPORTED_MODULE_7__[\"contains\"])([_channel__WEBPACK_IMPORTED_MODULE_2__[\"COLOR\"], _channel__WEBPACK_IMPORTED_MODULE_2__[\"FILL\"], _channel__WEBPACK_IMPORTED_MODULE_2__[\"STROKE\"]], channel) && type !== 'nominal') {\n        return 'hcl';\n    }\n    return undefined;\n}\nfunction nice(scaleType, channel, fieldOrDatumDef) {\n    var _a;\n    if (((_a = Object(_channeldef__WEBPACK_IMPORTED_MODULE_3__[\"getFieldDef\"])(fieldOrDatumDef)) === null || _a === void 0 ? void 0 : _a.bin) || _util__WEBPACK_IMPORTED_MODULE_7__[\"contains\"]([_scale__WEBPACK_IMPORTED_MODULE_6__[\"ScaleType\"].TIME, _scale__WEBPACK_IMPORTED_MODULE_6__[\"ScaleType\"].UTC], scaleType)) {\n        return undefined;\n    }\n    return channel in _channel__WEBPACK_IMPORTED_MODULE_2__[\"POSITION_SCALE_CHANNEL_INDEX\"] ? true : undefined;\n}\nfunction padding(channel, scaleType, scaleConfig, fieldOrDatumDef, markDef, barConfig) {\n    if (channel in _channel__WEBPACK_IMPORTED_MODULE_2__[\"POSITION_SCALE_CHANNEL_INDEX\"]) {\n        if (Object(_scale__WEBPACK_IMPORTED_MODULE_6__[\"isContinuousToContinuous\"])(scaleType)) {\n            if (scaleConfig.continuousPadding !== undefined) {\n                return scaleConfig.continuousPadding;\n            }\n            const { type, orient } = markDef;\n            if (type === 'bar' && !(Object(_channeldef__WEBPACK_IMPORTED_MODULE_3__[\"isFieldDef\"])(fieldOrDatumDef) && (fieldOrDatumDef.bin || fieldOrDatumDef.timeUnit))) {\n                if ((orient === 'vertical' && channel === 'x') || (orient === 'horizontal' && channel === 'y')) {\n                    return barConfig.continuousBandSize;\n                }\n            }\n        }\n        if (scaleType === _scale__WEBPACK_IMPORTED_MODULE_6__[\"ScaleType\"].POINT) {\n            return scaleConfig.pointPadding;\n        }\n    }\n    return undefined;\n}\nfunction paddingInner(paddingValue, channel, mark, scaleConfig) {\n    if (paddingValue !== undefined) {\n        // If user has already manually specified \"padding\", no need to add default paddingInner.\n        return undefined;\n    }\n    if (channel in _channel__WEBPACK_IMPORTED_MODULE_2__[\"POSITION_SCALE_CHANNEL_INDEX\"]) {\n        // Padding is only set for X and Y by default.\n        // Basically it doesn't make sense to add padding for color and size.\n        // paddingOuter would only be called if it's a band scale, just return the default for bandScale.\n        const { bandPaddingInner, barBandPaddingInner, rectBandPaddingInner } = scaleConfig;\n        return Object(_util__WEBPACK_IMPORTED_MODULE_7__[\"getFirstDefined\"])(bandPaddingInner, mark === 'bar' ? barBandPaddingInner : rectBandPaddingInner);\n    }\n    return undefined;\n}\nfunction paddingOuter(paddingValue, channel, scaleType, mark, paddingInnerValue, scaleConfig) {\n    if (paddingValue !== undefined) {\n        // If user has already manually specified \"padding\", no need to add default paddingOuter.\n        return undefined;\n    }\n    if (channel in _channel__WEBPACK_IMPORTED_MODULE_2__[\"POSITION_SCALE_CHANNEL_INDEX\"]) {\n        // Padding is only set for X and Y by default.\n        // Basically it doesn't make sense to add padding for color and size.\n        if (scaleType === _scale__WEBPACK_IMPORTED_MODULE_6__[\"ScaleType\"].BAND) {\n            const { bandPaddingOuter } = scaleConfig;\n            return Object(_util__WEBPACK_IMPORTED_MODULE_7__[\"getFirstDefined\"])(bandPaddingOuter, \n            /* By default, paddingOuter is paddingInner / 2. The reason is that\n              size (width/height) = step * (cardinality - paddingInner + 2 * paddingOuter).\n              and we want the width/height to be integer by default.\n              Note that step (by default) and cardinality are integers.) */\n            Object(_vega_schema__WEBPACK_IMPORTED_MODULE_8__[\"isSignalRef\"])(paddingInnerValue) ? { signal: `${paddingInnerValue.signal}/2` } : paddingInnerValue / 2);\n        }\n    }\n    return undefined;\n}\nfunction reverse(scaleType, sort, channel, scaleConfig) {\n    if (channel === 'x' && scaleConfig.xReverse !== undefined) {\n        if (Object(_scale__WEBPACK_IMPORTED_MODULE_6__[\"hasContinuousDomain\"])(scaleType) && sort === 'descending') {\n            if (Object(_vega_schema__WEBPACK_IMPORTED_MODULE_8__[\"isSignalRef\"])(scaleConfig.xReverse)) {\n                return { signal: `!${scaleConfig.xReverse.signal}` };\n            }\n            else {\n                return !scaleConfig.xReverse;\n            }\n        }\n        return scaleConfig.xReverse;\n    }\n    if (Object(_scale__WEBPACK_IMPORTED_MODULE_6__[\"hasContinuousDomain\"])(scaleType) && sort === 'descending') {\n        // For continuous domain scales, Vega does not support domain sort.\n        // Thus, we reverse range instead if sort is descending\n        return true;\n    }\n    return undefined;\n}\nfunction zero(channel, fieldDef, specifiedDomain, markDef, scaleType) {\n    // If users explicitly provide a domain range, we should not augment zero as that will be unexpected.\n    const hasCustomDomain = !!specifiedDomain && specifiedDomain !== 'unaggregated';\n    if (hasCustomDomain) {\n        if (Object(_scale__WEBPACK_IMPORTED_MODULE_6__[\"hasContinuousDomain\"])(scaleType)) {\n            if (Object(vega_util__WEBPACK_IMPORTED_MODULE_0__[\"isArray\"])(specifiedDomain)) {\n                const first = specifiedDomain[0];\n                const last = specifiedDomain[specifiedDomain.length - 1];\n                if (first <= 0 && last >= 0) {\n                    // if the domain includes zero, make zero remains true\n                    return true;\n                }\n            }\n            return false;\n        }\n    }\n    // If there is no custom domain, return true only for the following cases:\n    // 1) using quantitative field with size\n    // While this can be either ratio or interval fields, our assumption is that\n    // ratio are more common. However, if the scaleType is discretizing scale, we want to return\n    // false so that range doesn't start at zero\n    if (channel === 'size' && fieldDef.type === 'quantitative' && !Object(_scale__WEBPACK_IMPORTED_MODULE_6__[\"isContinuousToDiscrete\"])(scaleType)) {\n        return true;\n    }\n    // 2) non-binned, quantitative x-scale or y-scale\n    // (For binning, we should not include zero by default because binning are calculated without zero.)\n    if (!(Object(_channeldef__WEBPACK_IMPORTED_MODULE_3__[\"isFieldDef\"])(fieldDef) && fieldDef.bin) &&\n        _util__WEBPACK_IMPORTED_MODULE_7__[\"contains\"]([..._channel__WEBPACK_IMPORTED_MODULE_2__[\"POSITION_SCALE_CHANNELS\"], ..._channel__WEBPACK_IMPORTED_MODULE_2__[\"POLAR_POSITION_SCALE_CHANNELS\"]], channel)) {\n        const { orient, type } = markDef;\n        if (Object(_util__WEBPACK_IMPORTED_MODULE_7__[\"contains\"])(['bar', 'area', 'line', 'trail'], type)) {\n            if ((orient === 'horizontal' && channel === 'y') || (orient === 'vertical' && channel === 'x')) {\n                return false;\n            }\n        }\n        return true;\n    }\n    return false;\n}\n//# sourceMappingURL=properties.js.map//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,[encoded data, 20576 characters]\n//# sourceURL=webpack-internal:///./node_modules/vega-lite/build/src/compile/scale/properties.js\n");

/***/ }),

/***/ "./node_modules/vega-lite/build/src/compile/scale/range.js":
/*!*****************************************************************!*\
  !*** ./node_modules/vega-lite/build/src/compile/scale/range.js ***!
  \*****************************************************************/
/*! exports provided: RANGE_PROPERTIES, parseUnitScaleRange, parseRangeForChannel, defaultContinuousToDiscreteCount, interpolateRange, MAX_SIZE_RANGE_STEP_RATIO */
/***/ (function(module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"RANGE_PROPERTIES\", function() { return RANGE_PROPERTIES; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"parseUnitScaleRange\", function() { return parseUnitScaleRange; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"parseRangeForChannel\", function() { return parseRangeForChannel; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"defaultContinuousToDiscreteCount\", function() { return defaultContinuousToDiscreteCount; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"interpolateRange\", function() { return interpolateRange; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"MAX_SIZE_RANGE_STEP_RATIO\", function() { return MAX_SIZE_RANGE_STEP_RATIO; });\n/* harmony import */ var vega_util__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! vega-util */ \"./node_modules/vega-lite/node_modules/vega-util/build/vega-util.module.js\");\n/* harmony import */ var _bin__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../../bin */ \"./node_modules/vega-lite/build/src/bin.js\");\n/* harmony import */ var _channel__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ../../channel */ \"./node_modules/vega-lite/build/src/channel.js\");\n/* harmony import */ var _channeldef__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ../../channeldef */ \"./node_modules/vega-lite/build/src/channeldef.js\");\n/* harmony import */ var _config__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ../../config */ \"./node_modules/vega-lite/build/src/config.js\");\n/* harmony import */ var _data__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! ../../data */ \"./node_modules/vega-lite/build/src/data.js\");\n/* harmony import */ var _log__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! ../../log */ \"./node_modules/vega-lite/build/src/log/index.js\");\n/* harmony import */ var _scale__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! ../../scale */ \"./node_modules/vega-lite/build/src/scale.js\");\n/* harmony import */ var _spec_base__WEBPACK_IMPORTED_MODULE_8__ = __webpack_require__(/*! ../../spec/base */ \"./node_modules/vega-lite/build/src/spec/base.js\");\n/* harmony import */ var _util__WEBPACK_IMPORTED_MODULE_9__ = __webpack_require__(/*! ../../util */ \"./node_modules/vega-lite/build/src/util.js\");\n/* harmony import */ var _vega_schema__WEBPACK_IMPORTED_MODULE_10__ = __webpack_require__(/*! ../../vega.schema */ \"./node_modules/vega-lite/build/src/vega.schema.js\");\n/* harmony import */ var _common__WEBPACK_IMPORTED_MODULE_11__ = __webpack_require__(/*! ../common */ \"./node_modules/vega-lite/build/src/compile/common.js\");\n/* harmony import */ var _data_bin__WEBPACK_IMPORTED_MODULE_12__ = __webpack_require__(/*! ../data/bin */ \"./node_modules/vega-lite/build/src/compile/data/bin.js\");\n/* harmony import */ var _signal__WEBPACK_IMPORTED_MODULE_13__ = __webpack_require__(/*! ../signal */ \"./node_modules/vega-lite/build/src/compile/signal.js\");\n/* harmony import */ var _split__WEBPACK_IMPORTED_MODULE_14__ = __webpack_require__(/*! ../split */ \"./node_modules/vega-lite/build/src/compile/split.js\");\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\nconst RANGE_PROPERTIES = ['range', 'scheme'];\nfunction getSizeChannel(channel) {\n    return channel === 'x' ? 'width' : channel === 'y' ? 'height' : undefined;\n}\nfunction parseUnitScaleRange(model) {\n    const localScaleComponents = model.component.scales;\n    // use SCALE_CHANNELS instead of scales[channel] to ensure that x, y come first!\n    for (const channel of _channel__WEBPACK_IMPORTED_MODULE_2__[\"SCALE_CHANNELS\"]) {\n        const localScaleCmpt = localScaleComponents[channel];\n        if (!localScaleCmpt) {\n            continue;\n        }\n        const rangeWithExplicit = parseRangeForChannel(channel, model);\n        localScaleCmpt.setWithExplicit('range', rangeWithExplicit);\n    }\n}\nfunction getBinStepSignal(model, channel) {\n    const fieldDef = model.fieldDef(channel);\n    if (fieldDef && fieldDef.bin && Object(_bin__WEBPACK_IMPORTED_MODULE_1__[\"isBinning\"])(fieldDef.bin)) {\n        const binSignal = Object(_data_bin__WEBPACK_IMPORTED_MODULE_12__[\"getBinSignalName\"])(model, fieldDef.field, fieldDef.bin);\n        // TODO: extract this to be range step signal\n        const sizeType = getSizeChannel(channel);\n        const sizeSignal = model.getName(sizeType);\n        return new _signal__WEBPACK_IMPORTED_MODULE_13__[\"SignalRefWrapper\"](() => {\n            const updatedName = model.getSignalName(binSignal);\n            const binCount = `(${updatedName}.stop - ${updatedName}.start) / ${updatedName}.step`;\n            return `${model.getSignalName(sizeSignal)} / (${binCount})`;\n        });\n    }\n    return undefined;\n}\n/**\n * Return mixins that includes one of the Vega range types (explicit range, range.step, range.scheme).\n */\nfunction parseRangeForChannel(channel, model) {\n    const specifiedScale = model.specifiedScales[channel];\n    const { size } = model;\n    const mergedScaleCmpt = model.getScaleComponent(channel);\n    const scaleType = mergedScaleCmpt.get('type');\n    // Check if any of the range properties is specified.\n    // If so, check if it is compatible and make sure that we only output one of the properties\n    for (const property of RANGE_PROPERTIES) {\n        if (specifiedScale[property] !== undefined) {\n            const supportedByScaleType = Object(_scale__WEBPACK_IMPORTED_MODULE_7__[\"scaleTypeSupportProperty\"])(scaleType, property);\n            const channelIncompatability = Object(_scale__WEBPACK_IMPORTED_MODULE_7__[\"channelScalePropertyIncompatability\"])(channel, property);\n            if (!supportedByScaleType) {\n                _log__WEBPACK_IMPORTED_MODULE_6__[\"warn\"](_log__WEBPACK_IMPORTED_MODULE_6__[\"message\"].scalePropertyNotWorkWithScaleType(scaleType, property, channel));\n            }\n            else if (channelIncompatability) {\n                // channel\n                _log__WEBPACK_IMPORTED_MODULE_6__[\"warn\"](channelIncompatability);\n            }\n            else {\n                switch (property) {\n                    case 'range': {\n                        const range = specifiedScale.range;\n                        if (Object(vega_util__WEBPACK_IMPORTED_MODULE_0__[\"isArray\"])(range)) {\n                            if (Object(_channel__WEBPACK_IMPORTED_MODULE_2__[\"isXorY\"])(channel)) {\n                                return Object(_split__WEBPACK_IMPORTED_MODULE_14__[\"makeExplicit\"])(range.map(v => {\n                                    if (v === 'width' || v === 'height') {\n                                        // get signal for width/height\n                                        // Just like default range logic below, we use SignalRefWrapper to account for potential merges and renames.\n                                        const sizeSignal = model.getName(v);\n                                        const getSignalName = model.getSignalName.bind(model);\n                                        return _signal__WEBPACK_IMPORTED_MODULE_13__[\"SignalRefWrapper\"].fromName(getSignalName, sizeSignal);\n                                    }\n                                    return v;\n                                }));\n                            }\n                        }\n                        else if (Object(vega_util__WEBPACK_IMPORTED_MODULE_0__[\"isObject\"])(range)) {\n                            return Object(_split__WEBPACK_IMPORTED_MODULE_14__[\"makeExplicit\"])({\n                                data: model.requestDataName(_data__WEBPACK_IMPORTED_MODULE_5__[\"DataSourceType\"].Main),\n                                field: range.field,\n                                sort: { op: 'min', field: model.vgField(channel) }\n                            });\n                        }\n                        return Object(_split__WEBPACK_IMPORTED_MODULE_14__[\"makeExplicit\"])(range);\n                    }\n                    case 'scheme':\n                        return Object(_split__WEBPACK_IMPORTED_MODULE_14__[\"makeExplicit\"])(parseScheme(specifiedScale[property]));\n                }\n            }\n        }\n    }\n    if (channel === _channel__WEBPACK_IMPORTED_MODULE_2__[\"X\"] || channel === _channel__WEBPACK_IMPORTED_MODULE_2__[\"Y\"]) {\n        const sizeChannel = channel === _channel__WEBPACK_IMPORTED_MODULE_2__[\"X\"] ? 'width' : 'height';\n        const sizeValue = size[sizeChannel];\n        if (Object(_spec_base__WEBPACK_IMPORTED_MODULE_8__[\"isStep\"])(sizeValue)) {\n            if (Object(_scale__WEBPACK_IMPORTED_MODULE_7__[\"hasDiscreteDomain\"])(scaleType)) {\n                return Object(_split__WEBPACK_IMPORTED_MODULE_14__[\"makeExplicit\"])({ step: sizeValue.step });\n            }\n            else {\n                _log__WEBPACK_IMPORTED_MODULE_6__[\"warn\"](_log__WEBPACK_IMPORTED_MODULE_6__[\"message\"].stepDropped(sizeChannel));\n            }\n        }\n    }\n    const { rangeMin, rangeMax } = specifiedScale;\n    const d = defaultRange(channel, model);\n    if ((rangeMin !== undefined || rangeMax !== undefined) &&\n        // it's ok to check just rangeMin's compatibility since rangeMin/rangeMax are the same\n        Object(_scale__WEBPACK_IMPORTED_MODULE_7__[\"scaleTypeSupportProperty\"])(scaleType, 'rangeMin') &&\n        Object(vega_util__WEBPACK_IMPORTED_MODULE_0__[\"isArray\"])(d) &&\n        d.length === 2) {\n        return Object(_split__WEBPACK_IMPORTED_MODULE_14__[\"makeExplicit\"])([rangeMin !== null && rangeMin !== void 0 ? rangeMin : d[0], rangeMax !== null && rangeMax !== void 0 ? rangeMax : d[1]]);\n    }\n    return Object(_split__WEBPACK_IMPORTED_MODULE_14__[\"makeImplicit\"])(d);\n}\nfunction parseScheme(scheme) {\n    if (Object(_scale__WEBPACK_IMPORTED_MODULE_7__[\"isExtendedScheme\"])(scheme)) {\n        return Object.assign({ scheme: scheme.name }, _util__WEBPACK_IMPORTED_MODULE_9__[\"omit\"](scheme, ['name']));\n    }\n    return { scheme: scheme };\n}\nfunction defaultRange(channel, model) {\n    const { size, config, mark, encoding } = model;\n    const getSignalName = model.getSignalName.bind(model);\n    const { type } = Object(_channeldef__WEBPACK_IMPORTED_MODULE_3__[\"getFieldOrDatumDef\"])(encoding[channel]);\n    const mergedScaleCmpt = model.getScaleComponent(channel);\n    const scaleType = mergedScaleCmpt.get('type');\n    const { domain, domainMid } = model.specifiedScales[channel];\n    switch (channel) {\n        case _channel__WEBPACK_IMPORTED_MODULE_2__[\"X\"]:\n        case _channel__WEBPACK_IMPORTED_MODULE_2__[\"Y\"]: {\n            // If there is no explicit width/height for discrete x/y scales\n            if (_util__WEBPACK_IMPORTED_MODULE_9__[\"contains\"](['point', 'band'], scaleType)) {\n                if (channel === _channel__WEBPACK_IMPORTED_MODULE_2__[\"X\"] && !size.width) {\n                    const w = Object(_config__WEBPACK_IMPORTED_MODULE_4__[\"getViewConfigDiscreteSize\"])(config.view, 'width');\n                    if (Object(_spec_base__WEBPACK_IMPORTED_MODULE_8__[\"isStep\"])(w)) {\n                        return w;\n                    }\n                }\n                else if (channel === _channel__WEBPACK_IMPORTED_MODULE_2__[\"Y\"] && !size.height) {\n                    const h = Object(_config__WEBPACK_IMPORTED_MODULE_4__[\"getViewConfigDiscreteSize\"])(config.view, 'height');\n                    if (Object(_spec_base__WEBPACK_IMPORTED_MODULE_8__[\"isStep\"])(h)) {\n                        return h;\n                    }\n                }\n            }\n            // If step is null, use zero to width or height.\n            // Note that we use SignalRefWrapper to account for potential merges and renames.\n            const sizeType = getSizeChannel(channel);\n            const sizeSignal = model.getName(sizeType);\n            if (channel === _channel__WEBPACK_IMPORTED_MODULE_2__[\"Y\"] && Object(_scale__WEBPACK_IMPORTED_MODULE_7__[\"hasContinuousDomain\"])(scaleType)) {\n                // For y continuous scale, we have to start from the height as the bottom part has the max value.\n                return [_signal__WEBPACK_IMPORTED_MODULE_13__[\"SignalRefWrapper\"].fromName(getSignalName, sizeSignal), 0];\n            }\n            else {\n                return [0, _signal__WEBPACK_IMPORTED_MODULE_13__[\"SignalRefWrapper\"].fromName(getSignalName, sizeSignal)];\n            }\n        }\n        case _channel__WEBPACK_IMPORTED_MODULE_2__[\"SIZE\"]: {\n            // TODO: support custom rangeMin, rangeMax\n            const zero = model.component.scales[channel].get('zero');\n            const rangeMin = sizeRangeMin(mark, zero, config);\n            const rangeMax = sizeRangeMax(mark, size, model, config);\n            if (Object(_scale__WEBPACK_IMPORTED_MODULE_7__[\"isContinuousToDiscrete\"])(scaleType)) {\n                return interpolateRange(rangeMin, rangeMax, defaultContinuousToDiscreteCount(scaleType, config, domain, channel));\n            }\n            else {\n                return [rangeMin, rangeMax];\n            }\n        }\n        case _channel__WEBPACK_IMPORTED_MODULE_2__[\"THETA\"]:\n            return [0, Math.PI * 2];\n        case _channel__WEBPACK_IMPORTED_MODULE_2__[\"ANGLE\"]:\n            // TODO: add config.scale.min/maxAngleDegree (for point and text) and config.scale.min/maxAngleRadian (for arc) once we add arc marks.\n            // (It's weird to add just config.scale.min/maxAngleDegree for now)\n            return [0, 360];\n        case _channel__WEBPACK_IMPORTED_MODULE_2__[\"RADIUS\"]: {\n            // max radius = half od min(width,height)\n            return [\n                0,\n                new _signal__WEBPACK_IMPORTED_MODULE_13__[\"SignalRefWrapper\"](() => {\n                    const w = model.getSignalName('width');\n                    const h = model.getSignalName('height');\n                    return `min(${w},${h})/2`;\n                })\n            ];\n        }\n        case _channel__WEBPACK_IMPORTED_MODULE_2__[\"STROKEWIDTH\"]:\n            // TODO: support custom rangeMin, rangeMax\n            return [config.scale.minStrokeWidth, config.scale.maxStrokeWidth];\n        case _channel__WEBPACK_IMPORTED_MODULE_2__[\"STROKEDASH\"]:\n            return [\n                // TODO: add this to Vega's config.range?\n                [1, 0],\n                [4, 2],\n                [2, 1],\n                [1, 1],\n                [1, 2, 4, 2]\n            ];\n        case _channel__WEBPACK_IMPORTED_MODULE_2__[\"SHAPE\"]:\n            return 'symbol';\n        case _channel__WEBPACK_IMPORTED_MODULE_2__[\"COLOR\"]:\n        case _channel__WEBPACK_IMPORTED_MODULE_2__[\"FILL\"]:\n        case _channel__WEBPACK_IMPORTED_MODULE_2__[\"STROKE\"]:\n            if (scaleType === 'ordinal') {\n                // Only nominal data uses ordinal scale by default\n                return type === 'nominal' ? 'category' : 'ordinal';\n            }\n            else {\n                if (domainMid !== undefined) {\n                    return 'diverging';\n                }\n                else {\n                    return mark === 'rect' || mark === 'geoshape' ? 'heatmap' : 'ramp';\n                }\n            }\n        case _channel__WEBPACK_IMPORTED_MODULE_2__[\"OPACITY\"]:\n        case _channel__WEBPACK_IMPORTED_MODULE_2__[\"FILLOPACITY\"]:\n        case _channel__WEBPACK_IMPORTED_MODULE_2__[\"STROKEOPACITY\"]:\n            // TODO: support custom rangeMin, rangeMax\n            return [config.scale.minOpacity, config.scale.maxOpacity];\n    }\n    /* istanbul ignore next: should never reach here */\n    throw new Error(`Scale range undefined for channel ${channel}`);\n}\nfunction defaultContinuousToDiscreteCount(scaleType, config, domain, channel) {\n    switch (scaleType) {\n        case 'quantile':\n            return config.scale.quantileCount;\n        case 'quantize':\n            return config.scale.quantizeCount;\n        case 'threshold':\n            if (domain !== undefined && Object(vega_util__WEBPACK_IMPORTED_MODULE_0__[\"isArray\"])(domain)) {\n                return domain.length + 1;\n            }\n            else {\n                _log__WEBPACK_IMPORTED_MODULE_6__[\"warn\"](_log__WEBPACK_IMPORTED_MODULE_6__[\"message\"].domainRequiredForThresholdScale(channel));\n                // default threshold boundaries for threshold scale since domain has cardinality of 2\n                return 3;\n            }\n    }\n}\n/**\n * Returns the linear interpolation of the range according to the cardinality\n *\n * @param rangeMin start of the range\n * @param rangeMax end of the range\n * @param cardinality number of values in the output range\n */\nfunction interpolateRange(rangeMin, rangeMax, cardinality) {\n    // always return a signal since it's better to compute the sequence in Vega later\n    const f = () => {\n        const rMax = Object(_common__WEBPACK_IMPORTED_MODULE_11__[\"signalOrStringValue\"])(rangeMax);\n        const rMin = Object(_common__WEBPACK_IMPORTED_MODULE_11__[\"signalOrStringValue\"])(rangeMin);\n        const step = `(${rMax} - ${rMin}) / (${cardinality} - 1)`;\n        return `sequence(${rMin}, ${rMax} + ${step}, ${step})`;\n    };\n    if (Object(_vega_schema__WEBPACK_IMPORTED_MODULE_10__[\"isSignalRef\"])(rangeMax)) {\n        return new _signal__WEBPACK_IMPORTED_MODULE_13__[\"SignalRefWrapper\"](f);\n    }\n    else {\n        return { signal: f() };\n    }\n}\nfunction sizeRangeMin(mark, zero, config) {\n    if (zero) {\n        if (Object(_vega_schema__WEBPACK_IMPORTED_MODULE_10__[\"isSignalRef\"])(zero)) {\n            return { signal: `${zero.signal} ? 0 : ${sizeRangeMin(mark, false, config)}` };\n        }\n        else {\n            return 0;\n        }\n    }\n    switch (mark) {\n        case 'bar':\n        case 'tick':\n            return config.scale.minBandSize;\n        case 'line':\n        case 'trail':\n        case 'rule':\n            return config.scale.minStrokeWidth;\n        case 'text':\n            return config.scale.minFontSize;\n        case 'point':\n        case 'square':\n        case 'circle':\n            return config.scale.minSize;\n    }\n    /* istanbul ignore next: should never reach here */\n    // sizeRangeMin not implemented for the mark\n    throw new Error(_log__WEBPACK_IMPORTED_MODULE_6__[\"message\"].incompatibleChannel('size', mark));\n}\nconst MAX_SIZE_RANGE_STEP_RATIO = 0.95;\nfunction sizeRangeMax(mark, size, model, config) {\n    const xyStepSignals = {\n        x: getBinStepSignal(model, 'x'),\n        y: getBinStepSignal(model, 'y')\n    };\n    switch (mark) {\n        case 'bar':\n        case 'tick': {\n            if (config.scale.maxBandSize !== undefined) {\n                return config.scale.maxBandSize;\n            }\n            const min = minXYStep(size, xyStepSignals, config.view);\n            if (Object(vega_util__WEBPACK_IMPORTED_MODULE_0__[\"isNumber\"])(min)) {\n                return min - 1;\n            }\n            else {\n                return new _signal__WEBPACK_IMPORTED_MODULE_13__[\"SignalRefWrapper\"](() => `${min.signal} - 1`);\n            }\n        }\n        case 'line':\n        case 'trail':\n        case 'rule':\n            return config.scale.maxStrokeWidth;\n        case 'text':\n            return config.scale.maxFontSize;\n        case 'point':\n        case 'square':\n        case 'circle': {\n            if (config.scale.maxSize) {\n                return config.scale.maxSize;\n            }\n            const pointStep = minXYStep(size, xyStepSignals, config.view);\n            if (Object(vega_util__WEBPACK_IMPORTED_MODULE_0__[\"isNumber\"])(pointStep)) {\n                return Math.pow(MAX_SIZE_RANGE_STEP_RATIO * pointStep, 2);\n            }\n            else {\n                return new _signal__WEBPACK_IMPORTED_MODULE_13__[\"SignalRefWrapper\"](() => `pow(${MAX_SIZE_RANGE_STEP_RATIO} * ${pointStep.signal}, 2)`);\n            }\n        }\n    }\n    /* istanbul ignore next: should never reach here */\n    // sizeRangeMax not implemented for the mark\n    throw new Error(_log__WEBPACK_IMPORTED_MODULE_6__[\"message\"].incompatibleChannel('size', mark));\n}\n/**\n * @returns {number} Range step of x or y or minimum between the two if both are ordinal scale.\n */\nfunction minXYStep(size, xyStepSignals, viewConfig) {\n    const widthStep = Object(_spec_base__WEBPACK_IMPORTED_MODULE_8__[\"isStep\"])(size.width) ? size.width.step : Object(_config__WEBPACK_IMPORTED_MODULE_4__[\"getViewConfigDiscreteStep\"])(viewConfig, 'width');\n    const heightStep = Object(_spec_base__WEBPACK_IMPORTED_MODULE_8__[\"isStep\"])(size.height) ? size.height.step : Object(_config__WEBPACK_IMPORTED_MODULE_4__[\"getViewConfigDiscreteStep\"])(viewConfig, 'height');\n    if (xyStepSignals.x || xyStepSignals.y) {\n        return new _signal__WEBPACK_IMPORTED_MODULE_13__[\"SignalRefWrapper\"](() => {\n            const exprs = [\n                xyStepSignals.x ? xyStepSignals.x.signal : widthStep,\n                xyStepSignals.y ? xyStepSignals.y.signal : heightStep\n            ];\n            return `min(${exprs.join(', ')})`;\n        });\n    }\n    return Math.min(widthStep, heightStep);\n}\n//# sourceMappingURL=range.js.map//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,[encoded data, 23668 characters]\n//# sourceURL=webpack-internal:///./node_modules/vega-lite/build/src/compile/scale/range.js\n");

/***/ }),

/***/ "./node_modules/vega-lite/build/src/compile/scale/type.js":
/*!****************************************************************!*\
  !*** ./node_modules/vega-lite/build/src/compile/scale/type.js ***!
  \****************************************************************/
/*! exports provided: scaleType */
/***/ (function(module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"scaleType\", function() { return scaleType; });\n/* harmony import */ var _bin__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../../bin */ \"./node_modules/vega-lite/build/src/bin.js\");\n/* harmony import */ var _channel__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../../channel */ \"./node_modules/vega-lite/build/src/channel.js\");\n/* harmony import */ var _channeldef__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ../../channeldef */ \"./node_modules/vega-lite/build/src/channeldef.js\");\n/* harmony import */ var _log__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ../../log */ \"./node_modules/vega-lite/build/src/log/index.js\");\n/* harmony import */ var _scale__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ../../scale */ \"./node_modules/vega-lite/build/src/scale.js\");\n/* harmony import */ var _timeunit__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! ../../timeunit */ \"./node_modules/vega-lite/build/src/timeunit.js\");\n/* harmony import */ var _util__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! ../../util */ \"./node_modules/vega-lite/build/src/util.js\");\n\n\n\n\n\n\n\n\n/**\n * Determine if there is a specified scale type and if it is appropriate,\n * or determine default type if type is unspecified or inappropriate.\n */\n// NOTE: CompassQL uses this method.\nfunction scaleType(specifiedScale, channel, fieldDef, mark) {\n    const defaultScaleType = defaultType(channel, fieldDef, mark);\n    const { type } = specifiedScale;\n    if (!Object(_channel__WEBPACK_IMPORTED_MODULE_1__[\"isScaleChannel\"])(channel)) {\n        // There is no scale for these channels\n        return null;\n    }\n    if (type !== undefined) {\n        // Check if explicitly specified scale type is supported by the channel\n        if (!Object(_scale__WEBPACK_IMPORTED_MODULE_4__[\"channelSupportScaleType\"])(channel, type)) {\n            _log__WEBPACK_IMPORTED_MODULE_3__[\"warn\"](_log__WEBPACK_IMPORTED_MODULE_3__[\"message\"].scaleTypeNotWorkWithChannel(channel, type, defaultScaleType));\n            return defaultScaleType;\n        }\n        // Check if explicitly specified scale type is supported by the data type\n        if (Object(_channeldef__WEBPACK_IMPORTED_MODULE_2__[\"isFieldDef\"])(fieldDef) && !Object(_scale__WEBPACK_IMPORTED_MODULE_4__[\"scaleTypeSupportDataType\"])(type, fieldDef.type)) {\n            _log__WEBPACK_IMPORTED_MODULE_3__[\"warn\"](_log__WEBPACK_IMPORTED_MODULE_3__[\"message\"].scaleTypeNotWorkWithFieldDef(type, defaultScaleType));\n            return defaultScaleType;\n        }\n        return type;\n    }\n    return defaultScaleType;\n}\n/**\n * Determine appropriate default scale type.\n */\n// NOTE: Voyager uses this method.\nfunction defaultType(channel, fieldDef, mark) {\n    var _a;\n    switch (fieldDef.type) {\n        case 'nominal':\n        case 'ordinal':\n            if (Object(_channel__WEBPACK_IMPORTED_MODULE_1__[\"isColorChannel\"])(channel) || Object(_channel__WEBPACK_IMPORTED_MODULE_1__[\"rangeType\"])(channel) === 'discrete') {\n                if (channel === 'shape' && fieldDef.type === 'ordinal') {\n                    _log__WEBPACK_IMPORTED_MODULE_3__[\"warn\"](_log__WEBPACK_IMPORTED_MODULE_3__[\"message\"].discreteChannelCannotEncode(channel, 'ordinal'));\n                }\n                return 'ordinal';\n            }\n            if (channel in _channel__WEBPACK_IMPORTED_MODULE_1__[\"POSITION_SCALE_CHANNEL_INDEX\"]) {\n                if (_util__WEBPACK_IMPORTED_MODULE_6__[\"contains\"](['rect', 'bar', 'image', 'rule'], mark)) {\n                    // The rect/bar mark should fit into a band.\n                    // For rule, using band scale to make rule align with axis ticks better https://github.com/vega/vega-lite/issues/3429\n                    return 'band';\n                }\n            }\n            else if (mark === 'arc' && channel in _channel__WEBPACK_IMPORTED_MODULE_1__[\"POLAR_POSITION_SCALE_CHANNEL_INDEX\"]) {\n                return 'band';\n            }\n            if (fieldDef.band !== undefined || (Object(_channeldef__WEBPACK_IMPORTED_MODULE_2__[\"isPositionFieldOrDatumDef\"])(fieldDef) && ((_a = fieldDef.axis) === null || _a === void 0 ? void 0 : _a.tickBand))) {\n                return 'band';\n            }\n            // Otherwise, use ordinal point scale so we can easily get center positions of the marks.\n            return 'point';\n        case 'temporal':\n            if (Object(_channel__WEBPACK_IMPORTED_MODULE_1__[\"isColorChannel\"])(channel)) {\n                return 'time';\n            }\n            else if (Object(_channel__WEBPACK_IMPORTED_MODULE_1__[\"rangeType\"])(channel) === 'discrete') {\n                _log__WEBPACK_IMPORTED_MODULE_3__[\"warn\"](_log__WEBPACK_IMPORTED_MODULE_3__[\"message\"].discreteChannelCannotEncode(channel, 'temporal'));\n                // TODO: consider using quantize (equivalent to binning) once we have it\n                return 'ordinal';\n            }\n            else if (Object(_channeldef__WEBPACK_IMPORTED_MODULE_2__[\"isFieldDef\"])(fieldDef) && fieldDef.timeUnit && Object(_timeunit__WEBPACK_IMPORTED_MODULE_5__[\"normalizeTimeUnit\"])(fieldDef.timeUnit).utc) {\n                return 'utc';\n            }\n            return 'time';\n        case 'quantitative':\n            if (Object(_channel__WEBPACK_IMPORTED_MODULE_1__[\"isColorChannel\"])(channel)) {\n                if (Object(_channeldef__WEBPACK_IMPORTED_MODULE_2__[\"isFieldDef\"])(fieldDef) && Object(_bin__WEBPACK_IMPORTED_MODULE_0__[\"isBinning\"])(fieldDef.bin)) {\n                    return 'bin-ordinal';\n                }\n                return 'linear';\n            }\n            else if (Object(_channel__WEBPACK_IMPORTED_MODULE_1__[\"rangeType\"])(channel) === 'discrete') {\n                _log__WEBPACK_IMPORTED_MODULE_3__[\"warn\"](_log__WEBPACK_IMPORTED_MODULE_3__[\"message\"].discreteChannelCannotEncode(channel, 'quantitative'));\n                // TODO: consider using quantize (equivalent to binning) once we have it\n                return 'ordinal';\n            }\n            return 'linear';\n        case 'geojson':\n            return undefined;\n    }\n    /* istanbul ignore next: should never reach this */\n    throw new Error(_log__WEBPACK_IMPORTED_MODULE_3__[\"message\"].invalidFieldType(fieldDef.type));\n}\n//# sourceMappingURL=type.js.map//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,[encoded data, 7012 characters]\n//# sourceURL=webpack-internal:///./node_modules/vega-lite/build/src/compile/scale/type.js\n");

/***/ }),

/***/ "./node_modules/vega-lite/build/src/compile/selection/assemble.js":
/*!************************************************************************!*\
  !*** ./node_modules/vega-lite/build/src/compile/selection/assemble.js ***!
  \************************************************************************/
/*! exports provided: assembleInit, assembleUnitSelectionSignals, assembleFacetSignals, assembleTopLevelSignals, assembleUnitSelectionData, assembleUnitSelectionMarks, assembleLayerSelectionMarks, assembleSelectionScaleDomain */
/***/ (function(module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"assembleInit\", function() { return assembleInit; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"assembleUnitSelectionSignals\", function() { return assembleUnitSelectionSignals; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"assembleFacetSignals\", function() { return assembleFacetSignals; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"assembleTopLevelSignals\", function() { return assembleTopLevelSignals; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"assembleUnitSelectionData\", function() { return assembleUnitSelectionData; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"assembleUnitSelectionMarks\", function() { return assembleUnitSelectionMarks; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"assembleLayerSelectionMarks\", function() { return assembleLayerSelectionMarks; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"assembleSelectionScaleDomain\", function() { return assembleSelectionScaleDomain; });\n/* harmony import */ var vega_event_selector__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! vega-event-selector */ \"./node_modules/vega-event-selector/build/vega-event-selector.module.js\");\n/* harmony import */ var vega_util__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! vega-util */ \"./node_modules/vega-lite/node_modules/vega-util/build/vega-util.module.js\");\n/* harmony import */ var ___WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! . */ \"./node_modules/vega-lite/build/src/compile/selection/index.js\");\n/* harmony import */ var _datetime__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ../../datetime */ \"./node_modules/vega-lite/build/src/datetime.js\");\n/* harmony import */ var _util__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ../../util */ \"./node_modules/vega-lite/build/src/util.js\");\n/* harmony import */ var _model__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! ../model */ \"./node_modules/vega-lite/build/src/compile/model.js\");\n/* harmony import */ var _transforms_transforms__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! ./transforms/transforms */ \"./node_modules/vega-lite/build/src/compile/selection/transforms/transforms.js\");\n/* harmony import */ var _parse__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! ./parse */ \"./node_modules/vega-lite/build/src/compile/selection/parse.js\");\nvar __rest = (undefined && undefined.__rest) || function (s, e) {\n    var t = {};\n    for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0)\n        t[p] = s[p];\n    if (s != null && typeof Object.getOwnPropertySymbols === \"function\")\n        for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) {\n            if (e.indexOf(p[i]) < 0 && Object.prototype.propertyIsEnumerable.call(s, p[i]))\n                t[p[i]] = s[p[i]];\n        }\n    return t;\n};\n\n\n\n\n\n\n\n\nfunction assembleInit(init, isExpr = true, wrap = vega_util__WEBPACK_IMPORTED_MODULE_1__[\"identity\"]) {\n    if (Object(vega_util__WEBPACK_IMPORTED_MODULE_1__[\"isArray\"])(init)) {\n        const assembled = init.map(v => assembleInit(v, isExpr, wrap));\n        return isExpr ? `[${assembled.join(', ')}]` : assembled;\n    }\n    else if (Object(_datetime__WEBPACK_IMPORTED_MODULE_3__[\"isDateTime\"])(init)) {\n        if (isExpr) {\n            return wrap(Object(_datetime__WEBPACK_IMPORTED_MODULE_3__[\"dateTimeToExpr\"])(init));\n        }\n        else {\n            return wrap(Object(_datetime__WEBPACK_IMPORTED_MODULE_3__[\"dateTimeToTimestamp\"])(init));\n        }\n    }\n    return isExpr ? wrap(JSON.stringify(init)) : init;\n}\nfunction assembleUnitSelectionSignals(model, signals) {\n    Object(___WEBPACK_IMPORTED_MODULE_2__[\"forEachSelection\"])(model, (selCmpt, selCompiler) => {\n        const name = selCmpt.name;\n        let modifyExpr = selCompiler.modifyExpr(model, selCmpt);\n        signals.push(...selCompiler.signals(model, selCmpt));\n        Object(_transforms_transforms__WEBPACK_IMPORTED_MODULE_6__[\"forEachTransform\"])(selCmpt, txCompiler => {\n            if (txCompiler.signals) {\n                signals = txCompiler.signals(model, selCmpt, signals);\n            }\n            if (txCompiler.modifyExpr) {\n                modifyExpr = txCompiler.modifyExpr(model, selCmpt, modifyExpr);\n            }\n        });\n        signals.push({\n            name: name + ___WEBPACK_IMPORTED_MODULE_2__[\"MODIFY\"],\n            on: [\n                {\n                    events: { signal: selCmpt.name + ___WEBPACK_IMPORTED_MODULE_2__[\"TUPLE\"] },\n                    update: `modify(${Object(vega_util__WEBPACK_IMPORTED_MODULE_1__[\"stringValue\"])(selCmpt.name + ___WEBPACK_IMPORTED_MODULE_2__[\"STORE\"])}, ${modifyExpr})`\n                }\n            ]\n        });\n    });\n    return cleanupEmptyOnArray(signals);\n}\nfunction assembleFacetSignals(model, signals) {\n    if (model.component.selection && Object(_util__WEBPACK_IMPORTED_MODULE_4__[\"keys\"])(model.component.selection).length) {\n        const name = Object(vega_util__WEBPACK_IMPORTED_MODULE_1__[\"stringValue\"])(model.getName('cell'));\n        signals.unshift({\n            name: 'facet',\n            value: {},\n            on: [\n                {\n                    events: Object(vega_event_selector__WEBPACK_IMPORTED_MODULE_0__[\"selector\"])('mousemove', 'scope'),\n                    update: `isTuple(facet) ? facet : group(${name}).datum`\n                }\n            ]\n        });\n    }\n    return cleanupEmptyOnArray(signals);\n}\nfunction assembleTopLevelSignals(model, signals) {\n    let hasSelections = false;\n    Object(___WEBPACK_IMPORTED_MODULE_2__[\"forEachSelection\"])(model, (selCmpt, selCompiler) => {\n        const name = selCmpt.name;\n        const store = Object(vega_util__WEBPACK_IMPORTED_MODULE_1__[\"stringValue\"])(name + ___WEBPACK_IMPORTED_MODULE_2__[\"STORE\"]);\n        const hasSg = signals.filter(s => s.name === name);\n        if (hasSg.length === 0) {\n            const resolve = selCmpt.resolve === 'global' ? 'union' : selCmpt.resolve;\n            const isMulti = selCmpt.type === 'multi' ? ', true)' : ')';\n            signals.push({\n                name: selCmpt.name,\n                update: `${___WEBPACK_IMPORTED_MODULE_2__[\"VL_SELECTION_RESOLVE\"]}(${store}, ${Object(vega_util__WEBPACK_IMPORTED_MODULE_1__[\"stringValue\"])(resolve)}${isMulti}`\n            });\n        }\n        hasSelections = true;\n        if (selCompiler.topLevelSignals) {\n            signals = selCompiler.topLevelSignals(model, selCmpt, signals);\n        }\n        Object(_transforms_transforms__WEBPACK_IMPORTED_MODULE_6__[\"forEachTransform\"])(selCmpt, txCompiler => {\n            if (txCompiler.topLevelSignals) {\n                signals = txCompiler.topLevelSignals(model, selCmpt, signals);\n            }\n        });\n    });\n    if (hasSelections) {\n        const hasUnit = signals.filter(s => s.name === 'unit');\n        if (hasUnit.length === 0) {\n            signals.unshift({\n                name: 'unit',\n                value: {},\n                on: [{ events: 'mousemove', update: 'isTuple(group()) ? group() : unit' }]\n            });\n        }\n    }\n    return cleanupEmptyOnArray(signals);\n}\nfunction assembleUnitSelectionData(model, data) {\n    const dataCopy = [...data];\n    Object(___WEBPACK_IMPORTED_MODULE_2__[\"forEachSelection\"])(model, selCmpt => {\n        const init = { name: selCmpt.name + ___WEBPACK_IMPORTED_MODULE_2__[\"STORE\"] };\n        if (selCmpt.init) {\n            const fields = selCmpt.project.items.map(proj => {\n                const { signals } = proj, rest = __rest(proj, [\"signals\"]);\n                return rest;\n            });\n            const insert = selCmpt.init.map(i => assembleInit(i, false));\n            init.values =\n                selCmpt.type === 'interval'\n                    ? [{ unit: Object(___WEBPACK_IMPORTED_MODULE_2__[\"unitName\"])(model, { escape: false }), fields, values: insert }]\n                    : insert.map(i => ({ unit: Object(___WEBPACK_IMPORTED_MODULE_2__[\"unitName\"])(model, { escape: false }), fields, values: i }));\n        }\n        const contains = dataCopy.filter(d => d.name === selCmpt.name + ___WEBPACK_IMPORTED_MODULE_2__[\"STORE\"]);\n        if (!contains.length) {\n            dataCopy.push(init);\n        }\n    });\n    return dataCopy;\n}\nfunction assembleUnitSelectionMarks(model, marks) {\n    Object(___WEBPACK_IMPORTED_MODULE_2__[\"forEachSelection\"])(model, (selCmpt, selCompiler) => {\n        marks = selCompiler.marks ? selCompiler.marks(model, selCmpt, marks) : marks;\n        Object(_transforms_transforms__WEBPACK_IMPORTED_MODULE_6__[\"forEachTransform\"])(selCmpt, txCompiler => {\n            if (txCompiler.marks) {\n                marks = txCompiler.marks(model, selCmpt, marks);\n            }\n        });\n    });\n    return marks;\n}\nfunction assembleLayerSelectionMarks(model, marks) {\n    for (const child of model.children) {\n        if (Object(_model__WEBPACK_IMPORTED_MODULE_5__[\"isUnitModel\"])(child)) {\n            marks = assembleUnitSelectionMarks(child, marks);\n        }\n    }\n    return marks;\n}\nfunction assembleSelectionScaleDomain(model, extent) {\n    const name = extent.selection;\n    const selCmpt = model.getSelectionComponent(name, Object(_util__WEBPACK_IMPORTED_MODULE_4__[\"varName\"])(name));\n    return { signal: Object(_parse__WEBPACK_IMPORTED_MODULE_7__[\"parseSelectionBinExtent\"])(selCmpt, extent) };\n}\nfunction cleanupEmptyOnArray(signals) {\n    return signals.map(s => {\n        if (s.on && !s.on.length)\n            delete s.on;\n        return s;\n    });\n}\n//# sourceMappingURL=assemble.js.map//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,[encoded data, 10236 characters]\n//# sourceURL=webpack-internal:///./node_modules/vega-lite/build/src/compile/selection/assemble.js\n");

/***/ }),

/***/ "./node_modules/vega-lite/build/src/compile/selection/index.js":
/*!*********************************************************************!*\
  !*** ./node_modules/vega-lite/build/src/compile/selection/index.js ***!
  \*********************************************************************/
/*! exports provided: STORE, TUPLE, MODIFY, SELECTION_DOMAIN, VL_SELECTION_RESOLVE, forEachSelection, unitName, requiresSelectionId */
/***/ (function(module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"STORE\", function() { return STORE; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"TUPLE\", function() { return TUPLE; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"MODIFY\", function() { return MODIFY; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"SELECTION_DOMAIN\", function() { return SELECTION_DOMAIN; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"VL_SELECTION_RESOLVE\", function() { return VL_SELECTION_RESOLVE; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"forEachSelection\", function() { return forEachSelection; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"unitName\", function() { return unitName; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"requiresSelectionId\", function() { return requiresSelectionId; });\n/* harmony import */ var vega_util__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! vega-util */ \"./node_modules/vega-lite/node_modules/vega-util/build/vega-util.module.js\");\n/* harmony import */ var _channel__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../../channel */ \"./node_modules/vega-lite/build/src/channel.js\");\n/* harmony import */ var _selection__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ../../selection */ \"./node_modules/vega-lite/build/src/selection.js\");\n/* harmony import */ var _util__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ../../util */ \"./node_modules/vega-lite/build/src/util.js\");\n/* harmony import */ var _model__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ../model */ \"./node_modules/vega-lite/build/src/compile/model.js\");\n/* harmony import */ var _interval__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! ./interval */ \"./node_modules/vega-lite/build/src/compile/selection/interval.js\");\n/* harmony import */ var _multi__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! ./multi */ \"./node_modules/vega-lite/build/src/compile/selection/multi.js\");\n/* harmony import */ var _single__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! ./single */ \"./node_modules/vega-lite/build/src/compile/selection/single.js\");\n\n\n\n\n\n\n\n\nconst STORE = '_store';\nconst TUPLE = '_tuple';\nconst MODIFY = '_modify';\nconst SELECTION_DOMAIN = '_selection_domain_';\nconst VL_SELECTION_RESOLVE = 'vlSelectionResolve';\nconst compilers = { single: _single__WEBPACK_IMPORTED_MODULE_7__[\"default\"], multi: _multi__WEBPACK_IMPORTED_MODULE_6__[\"default\"], interval: _interval__WEBPACK_IMPORTED_MODULE_5__[\"default\"] };\nfunction forEachSelection(model, cb) {\n    const selections = model.component.selection;\n    if (selections) {\n        for (const sel of Object(_util__WEBPACK_IMPORTED_MODULE_3__[\"vals\"])(selections)) {\n            const success = cb(sel, compilers[sel.type]);\n            if (success === true)\n                break;\n        }\n    }\n}\nfunction getFacetModel(model) {\n    let parent = model.parent;\n    while (parent) {\n        if (Object(_model__WEBPACK_IMPORTED_MODULE_4__[\"isFacetModel\"])(parent)) {\n            break;\n        }\n        parent = parent.parent;\n    }\n    return parent;\n}\nfunction unitName(model, { escape } = { escape: true }) {\n    let name = escape ? Object(vega_util__WEBPACK_IMPORTED_MODULE_0__[\"stringValue\"])(model.name) : model.name;\n    const facetModel = getFacetModel(model);\n    if (facetModel) {\n        const { facet } = facetModel;\n        for (const channel of _channel__WEBPACK_IMPORTED_MODULE_1__[\"FACET_CHANNELS\"]) {\n            if (facet[channel]) {\n                name += ` + '__facet_${channel}_' + (facet[${Object(vega_util__WEBPACK_IMPORTED_MODULE_0__[\"stringValue\"])(facetModel.vgField(channel))}])`;\n            }\n        }\n    }\n    return name;\n}\nfunction requiresSelectionId(model) {\n    let identifier = false;\n    forEachSelection(model, selCmpt => {\n        identifier = identifier || selCmpt.project.items.some(proj => proj.field === _selection__WEBPACK_IMPORTED_MODULE_2__[\"SELECTION_ID\"]);\n    });\n    return identifier;\n}\n//# sourceMappingURL=index.js.map//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvdmVnYS1saXRlL2J1aWxkL3NyYy9jb21waWxlL3NlbGVjdGlvbi9pbmRleC5qcy5qcyIsInNvdXJjZXMiOlsid2VicGFjazovLy8uL25vZGVfbW9kdWxlcy92ZWdhLWxpdGUvYnVpbGQvc3JjL2NvbXBpbGUvc2VsZWN0aW9uL2luZGV4LmpzPzdiOGMiXSwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgc3RyaW5nVmFsdWUgfSBmcm9tICd2ZWdhLXV0aWwnO1xuaW1wb3J0IHsgRkFDRVRfQ0hBTk5FTFMgfSBmcm9tICcuLi8uLi9jaGFubmVsJztcbmltcG9ydCB7IFNFTEVDVElPTl9JRCB9IGZyb20gJy4uLy4uL3NlbGVjdGlvbic7XG5pbXBvcnQgeyB2YWxzIH0gZnJvbSAnLi4vLi4vdXRpbCc7XG5pbXBvcnQgeyBpc0ZhY2V0TW9kZWwgfSBmcm9tICcuLi9tb2RlbCc7XG5pbXBvcnQgaW50ZXJ2YWwgZnJvbSAnLi9pbnRlcnZhbCc7XG5pbXBvcnQgbXVsdGkgZnJvbSAnLi9tdWx0aSc7XG5pbXBvcnQgc2luZ2xlIGZyb20gJy4vc2luZ2xlJztcbmV4cG9ydCBjb25zdCBTVE9SRSA9ICdfc3RvcmUnO1xuZXhwb3J0IGNvbnN0IFRVUExFID0gJ190dXBsZSc7XG5leHBvcnQgY29uc3QgTU9ESUZZID0gJ19tb2RpZnknO1xuZXhwb3J0IGNvbnN0IFNFTEVDVElPTl9ET01BSU4gPSAnX3NlbGVjdGlvbl9kb21haW5fJztcbmV4cG9ydCBjb25zdCBWTF9TRUxFQ1RJT05fUkVTT0xWRSA9ICd2bFNlbGVjdGlvblJlc29sdmUnO1xuY29uc3QgY29tcGlsZXJzID0geyBzaW5nbGUsIG11bHRpLCBpbnRlcnZhbCB9O1xuZXhwb3J0IGZ1bmN0aW9uIGZvckVhY2hTZWxlY3Rpb24obW9kZWwsIGNiKSB7XG4gICAgY29uc3Qgc2VsZWN0aW9ucyA9IG1vZGVsLmNvbXBvbmVudC5zZWxlY3Rpb247XG4gICAgaWYgKHNlbGVjdGlvbnMpIHtcbiAgICAgICAgZm9yIChjb25zdCBzZWwgb2YgdmFscyhzZWxlY3Rpb25zKSkge1xuICAgICAgICAgICAgY29uc3Qgc3VjY2VzcyA9IGNiKHNlbCwgY29tcGlsZXJzW3NlbC50eXBlXSk7XG4gICAgICAgICAgICBpZiAoc3VjY2VzcyA9PT0gdHJ1ZSlcbiAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgfVxuICAgIH1cbn1cbmZ1bmN0aW9uIGdldEZhY2V0TW9kZWwobW9kZWwpIHtcbiAgICBsZXQgcGFyZW50ID0gbW9kZWwucGFyZW50O1xuICAgIHdoaWxlIChwYXJlbnQpIHtcbiAgICAgICAgaWYgKGlzRmFjZXRNb2RlbChwYXJlbnQpKSB7XG4gICAgICAgICAgICBicmVhaztcbiAgICAgICAgfVxuICAgICAgICBwYXJlbnQgPSBwYXJlbnQucGFyZW50O1xuICAgIH1cbiAgICByZXR1cm4gcGFyZW50O1xufVxuZXhwb3J0IGZ1bmN0aW9uIHVuaXROYW1lKG1vZGVsLCB7IGVzY2FwZSB9ID0geyBlc2NhcGU6IHRydWUgfSkge1xuICAgIGxldCBuYW1lID0gZXNjYXBlID8gc3RyaW5nVmFsdWUobW9kZWwubmFtZSkgOiBtb2RlbC5uYW1lO1xuICAgIGNvbnN0IGZhY2V0TW9kZWwgPSBnZXRGYWNldE1vZGVsKG1vZGVsKTtcbiAgICBpZiAoZmFjZXRNb2RlbCkge1xuICAgICAgICBjb25zdCB7IGZhY2V0IH0gPSBmYWNldE1vZGVsO1xuICAgICAgICBmb3IgKGNvbnN0IGNoYW5uZWwgb2YgRkFDRVRfQ0hBTk5FTFMpIHtcbiAgICAgICAgICAgIGlmIChmYWNldFtjaGFubmVsXSkge1xuICAgICAgICAgICAgICAgIG5hbWUgKz0gYCArICdfX2ZhY2V0XyR7Y2hhbm5lbH1fJyArIChmYWNldFske3N0cmluZ1ZhbHVlKGZhY2V0TW9kZWwudmdGaWVsZChjaGFubmVsKSl9XSlgO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgfVxuICAgIHJldHVybiBuYW1lO1xufVxuZXhwb3J0IGZ1bmN0aW9uIHJlcXVpcmVzU2VsZWN0aW9uSWQobW9kZWwpIHtcbiAgICBsZXQgaWRlbnRpZmllciA9IGZhbHNlO1xuICAgIGZvckVhY2hTZWxlY3Rpb24obW9kZWwsIHNlbENtcHQgPT4ge1xuICAgICAgICBpZGVudGlmaWVyID0gaWRlbnRpZmllciB8fCBzZWxDbXB0LnByb2plY3QuaXRlbXMuc29tZShwcm9qID0+IHByb2ouZmllbGQgPT09IFNFTEVDVElPTl9JRCk7XG4gICAgfSk7XG4gICAgcmV0dXJuIGlkZW50aWZpZXI7XG59XG4vLyMgc291cmNlTWFwcGluZ1VSTD1pbmRleC5qcy5tYXAiXSwibWFwcGluZ3MiOiJBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSIsInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///./node_modules/vega-lite/build/src/compile/selection/index.js\n");

/***/ }),

/***/ "./node_modules/vega-lite/build/src/compile/selection/interval.js":
/*!************************************************************************!*\
  !*** ./node_modules/vega-lite/build/src/compile/selection/interval.js ***!
  \************************************************************************/
/*! exports provided: BRUSH, SCALE_TRIGGER, default */
/***/ (function(module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"BRUSH\", function() { return BRUSH; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"SCALE_TRIGGER\", function() { return SCALE_TRIGGER; });\n/* harmony import */ var vega_util__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! vega-util */ \"./node_modules/vega-lite/node_modules/vega-util/build/vega-util.module.js\");\n/* harmony import */ var ___WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! . */ \"./node_modules/vega-lite/build/src/compile/selection/index.js\");\n/* harmony import */ var _channel__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ../../channel */ \"./node_modules/vega-lite/build/src/channel.js\");\n/* harmony import */ var _log__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ../../log */ \"./node_modules/vega-lite/build/src/log/index.js\");\n/* harmony import */ var _scale__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ../../scale */ \"./node_modules/vega-lite/build/src/scale.js\");\n/* harmony import */ var _util__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! ../../util */ \"./node_modules/vega-lite/build/src/util.js\");\n/* harmony import */ var _assemble__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! ./assemble */ \"./node_modules/vega-lite/build/src/compile/selection/assemble.js\");\n/* harmony import */ var _transforms_project__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! ./transforms/project */ \"./node_modules/vega-lite/build/src/compile/selection/transforms/project.js\");\n/* harmony import */ var _transforms_scales__WEBPACK_IMPORTED_MODULE_8__ = __webpack_require__(/*! ./transforms/scales */ \"./node_modules/vega-lite/build/src/compile/selection/transforms/scales.js\");\nvar __rest = (undefined && undefined.__rest) || function (s, e) {\n    var t = {};\n    for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0)\n        t[p] = s[p];\n    if (s != null && typeof Object.getOwnPropertySymbols === \"function\")\n        for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) {\n            if (e.indexOf(p[i]) < 0 && Object.prototype.propertyIsEnumerable.call(s, p[i]))\n                t[p[i]] = s[p[i]];\n        }\n    return t;\n};\n\n\n\n\n\n\n\n\n\nconst BRUSH = '_brush';\nconst SCALE_TRIGGER = '_scale_trigger';\nconst interval = {\n    signals: (model, selCmpt) => {\n        const name = selCmpt.name;\n        const fieldsSg = name + _transforms_project__WEBPACK_IMPORTED_MODULE_7__[\"TUPLE_FIELDS\"];\n        const hasScales = _transforms_scales__WEBPACK_IMPORTED_MODULE_8__[\"default\"].has(selCmpt);\n        const signals = [];\n        const dataSignals = [];\n        const scaleTriggers = [];\n        if (selCmpt.translate && !hasScales) {\n            const filterExpr = `!event.item || event.item.mark.name !== ${Object(vega_util__WEBPACK_IMPORTED_MODULE_0__[\"stringValue\"])(name + BRUSH)}`;\n            events(selCmpt, (on, evt) => {\n                var _a;\n                const filters = Object(vega_util__WEBPACK_IMPORTED_MODULE_0__[\"array\"])((_a = evt.between[0].filter) !== null && _a !== void 0 ? _a : (evt.between[0].filter = []));\n                if (filters.indexOf(filterExpr) < 0) {\n                    filters.push(filterExpr);\n                }\n                return on;\n            });\n        }\n        selCmpt.project.items.forEach((proj, i) => {\n            const channel = proj.channel;\n            if (channel !== _channel__WEBPACK_IMPORTED_MODULE_2__[\"X\"] && channel !== _channel__WEBPACK_IMPORTED_MODULE_2__[\"Y\"]) {\n                Object(_log__WEBPACK_IMPORTED_MODULE_3__[\"warn\"])('Interval selections only support x and y encoding channels.');\n                return;\n            }\n            const init = selCmpt.init ? selCmpt.init[i] : null;\n            const cs = channelSignals(model, selCmpt, proj, init);\n            const dname = proj.signals.data;\n            const vname = proj.signals.visual;\n            const scaleName = Object(vega_util__WEBPACK_IMPORTED_MODULE_0__[\"stringValue\"])(model.scaleName(channel));\n            const scaleType = model.getScaleComponent(channel).get('type');\n            const toNum = Object(_scale__WEBPACK_IMPORTED_MODULE_4__[\"hasContinuousDomain\"])(scaleType) ? '+' : '';\n            signals.push(...cs);\n            dataSignals.push(dname);\n            scaleTriggers.push({\n                scaleName: model.scaleName(channel),\n                expr: `(!isArray(${dname}) || ` +\n                    `(${toNum}invert(${scaleName}, ${vname})[0] === ${toNum}${dname}[0] && ` +\n                    `${toNum}invert(${scaleName}, ${vname})[1] === ${toNum}${dname}[1]))`\n            });\n        });\n        // Proxy scale reactions to ensure that an infinite loop doesn't occur\n        // when an interval selection filter touches the scale.\n        if (!hasScales) {\n            signals.push({\n                name: name + SCALE_TRIGGER,\n                value: {},\n                on: [\n                    {\n                        events: scaleTriggers.map(t => ({ scale: t.scaleName })),\n                        update: scaleTriggers.map(t => t.expr).join(' && ') + ` ? ${name + SCALE_TRIGGER} : {}`\n                    }\n                ]\n            });\n        }\n        // Only add an interval to the store if it has valid data extents. Data extents\n        // are set to null if pixel extents are equal to account for intervals over\n        // ordinal/nominal domains which, when inverted, will still produce a valid datum.\n        const init = selCmpt.init;\n        const update = `unit: ${Object(___WEBPACK_IMPORTED_MODULE_1__[\"unitName\"])(model)}, fields: ${fieldsSg}, values`;\n        return signals.concat(Object.assign(Object.assign({ name: name + ___WEBPACK_IMPORTED_MODULE_1__[\"TUPLE\"] }, (init ? { init: `{${update}: ${Object(_assemble__WEBPACK_IMPORTED_MODULE_6__[\"assembleInit\"])(init)}}` } : {})), { on: [\n                {\n                    events: [{ signal: dataSignals.join(' || ') }],\n                    update: dataSignals.join(' && ') + ` ? {${update}: [${dataSignals}]} : null`\n                }\n            ] }));\n    },\n    modifyExpr: (model, selCmpt) => {\n        const tpl = selCmpt.name + ___WEBPACK_IMPORTED_MODULE_1__[\"TUPLE\"];\n        return tpl + ', ' + (selCmpt.resolve === 'global' ? 'true' : `{unit: ${Object(___WEBPACK_IMPORTED_MODULE_1__[\"unitName\"])(model)}}`);\n    },\n    marks: (model, selCmpt, marks) => {\n        const name = selCmpt.name;\n        const { x, y } = selCmpt.project.hasChannel;\n        const xvname = x && x.signals.visual;\n        const yvname = y && y.signals.visual;\n        const store = `data(${Object(vega_util__WEBPACK_IMPORTED_MODULE_0__[\"stringValue\"])(selCmpt.name + ___WEBPACK_IMPORTED_MODULE_1__[\"STORE\"])})`;\n        // Do not add a brush if we're binding to scales.\n        if (_transforms_scales__WEBPACK_IMPORTED_MODULE_8__[\"default\"].has(selCmpt)) {\n            return marks;\n        }\n        const update = {\n            x: x !== undefined ? { signal: `${xvname}[0]` } : { value: 0 },\n            y: y !== undefined ? { signal: `${yvname}[0]` } : { value: 0 },\n            x2: x !== undefined ? { signal: `${xvname}[1]` } : { field: { group: 'width' } },\n            y2: y !== undefined ? { signal: `${yvname}[1]` } : { field: { group: 'height' } }\n        };\n        // If the selection is resolved to global, only a single interval is in\n        // the store. Wrap brush mark's encodings with a production rule to test\n        // this based on the `unit` property. Hide the brush mark if it corresponds\n        // to a unit different from the one in the store.\n        if (selCmpt.resolve === 'global') {\n            for (const key of Object(_util__WEBPACK_IMPORTED_MODULE_5__[\"keys\"])(update)) {\n                update[key] = [\n                    Object.assign({ test: `${store}.length && ${store}[0].unit === ${Object(___WEBPACK_IMPORTED_MODULE_1__[\"unitName\"])(model)}` }, update[key]),\n                    { value: 0 }\n                ];\n            }\n        }\n        // Two brush marks ensure that fill colors and other aesthetic choices do\n        // not interefere with the core marks, but that the brushed region can still\n        // be interacted with (e.g., dragging it around).\n        const _a = selCmpt.mark, { fill, fillOpacity, cursor } = _a, stroke = __rest(_a, [\"fill\", \"fillOpacity\", \"cursor\"]);\n        const vgStroke = Object(_util__WEBPACK_IMPORTED_MODULE_5__[\"keys\"])(stroke).reduce((def, k) => {\n            def[k] = [\n                {\n                    test: [x !== undefined && `${xvname}[0] !== ${xvname}[1]`, y !== undefined && `${yvname}[0] !== ${yvname}[1]`]\n                        .filter(t => t)\n                        .join(' && '),\n                    value: stroke[k]\n                },\n                { value: null }\n            ];\n            return def;\n        }, {});\n        return [\n            {\n                name: name + BRUSH + '_bg',\n                type: 'rect',\n                clip: true,\n                encode: {\n                    enter: {\n                        fill: { value: fill },\n                        fillOpacity: { value: fillOpacity }\n                    },\n                    update: update\n                }\n            },\n            ...marks,\n            {\n                name: name + BRUSH,\n                type: 'rect',\n                clip: true,\n                encode: {\n                    enter: Object.assign(Object.assign({}, (cursor ? { cursor: { value: cursor } } : {})), { fill: { value: 'transparent' } }),\n                    update: Object.assign(Object.assign({}, update), vgStroke)\n                }\n            }\n        ];\n    }\n};\n/* harmony default export */ __webpack_exports__[\"default\"] = (interval);\n/**\n * Returns the visual and data signals for an interval selection.\n */\nfunction channelSignals(model, selCmpt, proj, init) {\n    const channel = proj.channel;\n    const vname = proj.signals.visual;\n    const dname = proj.signals.data;\n    const hasScales = _transforms_scales__WEBPACK_IMPORTED_MODULE_8__[\"default\"].has(selCmpt);\n    const scaleName = Object(vega_util__WEBPACK_IMPORTED_MODULE_0__[\"stringValue\"])(model.scaleName(channel));\n    const scale = model.getScaleComponent(channel);\n    const scaleType = scale ? scale.get('type') : undefined;\n    const scaled = (str) => `scale(${scaleName}, ${str})`;\n    const size = model.getSizeSignalRef(channel === _channel__WEBPACK_IMPORTED_MODULE_2__[\"X\"] ? 'width' : 'height').signal;\n    const coord = `${channel}(unit)`;\n    const on = events(selCmpt, (def, evt) => {\n        return [\n            ...def,\n            { events: evt.between[0], update: `[${coord}, ${coord}]` },\n            { events: evt, update: `[${vname}[0], clamp(${coord}, 0, ${size})]` } // Brush End\n        ];\n    });\n    // React to pan/zooms of continuous scales. Non-continuous scales\n    // (band, point) cannot be pan/zoomed and any other changes\n    // to their domains (e.g., filtering) should clear the brushes.\n    on.push({\n        events: { signal: selCmpt.name + SCALE_TRIGGER },\n        update: Object(_scale__WEBPACK_IMPORTED_MODULE_4__[\"hasContinuousDomain\"])(scaleType) ? `[${scaled(`${dname}[0]`)}, ${scaled(`${dname}[1]`)}]` : `[0, 0]`\n    });\n    return hasScales\n        ? [{ name: dname, on: [] }]\n        : [\n            Object.assign(Object.assign({ name: vname }, (init ? { init: Object(_assemble__WEBPACK_IMPORTED_MODULE_6__[\"assembleInit\"])(init, true, scaled) } : { value: [] })), { on: on }),\n            Object.assign(Object.assign({ name: dname }, (init ? { init: Object(_assemble__WEBPACK_IMPORTED_MODULE_6__[\"assembleInit\"])(init) } : {})), { on: [\n                    {\n                        events: { signal: vname },\n                        update: `${vname}[0] === ${vname}[1] ? null : invert(${scaleName}, ${vname})`\n                    }\n                ] })\n        ];\n}\nfunction events(selCmpt, cb) {\n    return selCmpt.events.reduce((on, evt) => {\n        if (!evt.between) {\n            Object(_log__WEBPACK_IMPORTED_MODULE_3__[\"warn\"])(`${evt} is not an ordered event stream for interval selections.`);\n            return on;\n        }\n        return cb(on, evt);\n    }, []);\n}\n//# sourceMappingURL=interval.js.map//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,[encoded data, 14928 characters]\n//# sourceURL=webpack-internal:///./node_modules/vega-lite/build/src/compile/selection/interval.js\n");

/***/ }),

/***/ "./node_modules/vega-lite/build/src/compile/selection/multi.js":
/*!*********************************************************************!*\
  !*** ./node_modules/vega-lite/build/src/compile/selection/multi.js ***!
  \*********************************************************************/
/*! exports provided: singleOrMultiSignals, default */
/***/ (function(module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"singleOrMultiSignals\", function() { return singleOrMultiSignals; });\n/* harmony import */ var vega_util__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! vega-util */ \"./node_modules/vega-lite/node_modules/vega-util/build/vega-util.module.js\");\n/* harmony import */ var ___WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! . */ \"./node_modules/vega-lite/build/src/compile/selection/index.js\");\n/* harmony import */ var _transforms_project__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./transforms/project */ \"./node_modules/vega-lite/build/src/compile/selection/transforms/project.js\");\n\n\n\nfunction singleOrMultiSignals(model, selCmpt) {\n    const name = selCmpt.name;\n    const fieldsSg = name + _transforms_project__WEBPACK_IMPORTED_MODULE_2__[\"TUPLE_FIELDS\"];\n    const project = selCmpt.project;\n    const datum = '(item().isVoronoi ? datum.datum : datum)';\n    const values = project.items\n        .map(p => {\n        const fieldDef = model.fieldDef(p.channel);\n        // Binned fields should capture extents, for a range test against the raw field.\n        return fieldDef && fieldDef.bin\n            ? `[${datum}[${Object(vega_util__WEBPACK_IMPORTED_MODULE_0__[\"stringValue\"])(model.vgField(p.channel, {}))}], ` +\n                `${datum}[${Object(vega_util__WEBPACK_IMPORTED_MODULE_0__[\"stringValue\"])(model.vgField(p.channel, { binSuffix: 'end' }))}]]`\n            : `${datum}[${Object(vega_util__WEBPACK_IMPORTED_MODULE_0__[\"stringValue\"])(p.field)}]`;\n    })\n        .join(', ');\n    // Only add a discrete selection to the store if a datum is present _and_\n    // the interaction isn't occurring on a group mark. This guards against\n    // polluting interactive state with invalid values in faceted displays\n    // as the group marks are also data-driven. We force the update to account\n    // for constant null states but varying toggles (e.g., shift-click in\n    // whitespace followed by a click in whitespace; the store should only\n    // be cleared on the second click).\n    const update = `unit: ${Object(___WEBPACK_IMPORTED_MODULE_1__[\"unitName\"])(model)}, fields: ${fieldsSg}, values`;\n    const events = selCmpt.events;\n    return [\n        {\n            name: name + ___WEBPACK_IMPORTED_MODULE_1__[\"TUPLE\"],\n            on: events\n                ? [\n                    {\n                        events,\n                        update: `datum && item().mark.marktype !== 'group' ? {${update}: [${values}]} : null`,\n                        force: true\n                    }\n                ]\n                : []\n        }\n    ];\n}\nconst multi = {\n    signals: singleOrMultiSignals,\n    modifyExpr: (model, selCmpt) => {\n        const tpl = selCmpt.name + ___WEBPACK_IMPORTED_MODULE_1__[\"TUPLE\"];\n        return tpl + ', ' + (selCmpt.resolve === 'global' ? 'null' : `{unit: ${Object(___WEBPACK_IMPORTED_MODULE_1__[\"unitName\"])(model)}}`);\n    }\n};\n/* harmony default export */ __webpack_exports__[\"default\"] = (multi);\n//# sourceMappingURL=multi.js.map//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvdmVnYS1saXRlL2J1aWxkL3NyYy9jb21waWxlL3NlbGVjdGlvbi9tdWx0aS5qcy5qcyIsInNvdXJjZXMiOlsid2VicGFjazovLy8uL25vZGVfbW9kdWxlcy92ZWdhLWxpdGUvYnVpbGQvc3JjL2NvbXBpbGUvc2VsZWN0aW9uL211bHRpLmpzPzNmZTciXSwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgc3RyaW5nVmFsdWUgfSBmcm9tICd2ZWdhLXV0aWwnO1xuaW1wb3J0IHsgVFVQTEUsIHVuaXROYW1lIH0gZnJvbSAnLic7XG5pbXBvcnQgeyBUVVBMRV9GSUVMRFMgfSBmcm9tICcuL3RyYW5zZm9ybXMvcHJvamVjdCc7XG5leHBvcnQgZnVuY3Rpb24gc2luZ2xlT3JNdWx0aVNpZ25hbHMobW9kZWwsIHNlbENtcHQpIHtcbiAgICBjb25zdCBuYW1lID0gc2VsQ21wdC5uYW1lO1xuICAgIGNvbnN0IGZpZWxkc1NnID0gbmFtZSArIFRVUExFX0ZJRUxEUztcbiAgICBjb25zdCBwcm9qZWN0ID0gc2VsQ21wdC5wcm9qZWN0O1xuICAgIGNvbnN0IGRhdHVtID0gJyhpdGVtKCkuaXNWb3Jvbm9pID8gZGF0dW0uZGF0dW0gOiBkYXR1bSknO1xuICAgIGNvbnN0IHZhbHVlcyA9IHByb2plY3QuaXRlbXNcbiAgICAgICAgLm1hcChwID0+IHtcbiAgICAgICAgY29uc3QgZmllbGREZWYgPSBtb2RlbC5maWVsZERlZihwLmNoYW5uZWwpO1xuICAgICAgICAvLyBCaW5uZWQgZmllbGRzIHNob3VsZCBjYXB0dXJlIGV4dGVudHMsIGZvciBhIHJhbmdlIHRlc3QgYWdhaW5zdCB0aGUgcmF3IGZpZWxkLlxuICAgICAgICByZXR1cm4gZmllbGREZWYgJiYgZmllbGREZWYuYmluXG4gICAgICAgICAgICA/IGBbJHtkYXR1bX1bJHtzdHJpbmdWYWx1ZShtb2RlbC52Z0ZpZWxkKHAuY2hhbm5lbCwge30pKX1dLCBgICtcbiAgICAgICAgICAgICAgICBgJHtkYXR1bX1bJHtzdHJpbmdWYWx1ZShtb2RlbC52Z0ZpZWxkKHAuY2hhbm5lbCwgeyBiaW5TdWZmaXg6ICdlbmQnIH0pKX1dXWBcbiAgICAgICAgICAgIDogYCR7ZGF0dW19WyR7c3RyaW5nVmFsdWUocC5maWVsZCl9XWA7XG4gICAgfSlcbiAgICAgICAgLmpvaW4oJywgJyk7XG4gICAgLy8gT25seSBhZGQgYSBkaXNjcmV0ZSBzZWxlY3Rpb24gdG8gdGhlIHN0b3JlIGlmIGEgZGF0dW0gaXMgcHJlc2VudCBfYW5kX1xuICAgIC8vIHRoZSBpbnRlcmFjdGlvbiBpc24ndCBvY2N1cnJpbmcgb24gYSBncm91cCBtYXJrLiBUaGlzIGd1YXJkcyBhZ2FpbnN0XG4gICAgLy8gcG9sbHV0aW5nIGludGVyYWN0aXZlIHN0YXRlIHdpdGggaW52YWxpZCB2YWx1ZXMgaW4gZmFjZXRlZCBkaXNwbGF5c1xuICAgIC8vIGFzIHRoZSBncm91cCBtYXJrcyBhcmUgYWxzbyBkYXRhLWRyaXZlbi4gV2UgZm9yY2UgdGhlIHVwZGF0ZSB0byBhY2NvdW50XG4gICAgLy8gZm9yIGNvbnN0YW50IG51bGwgc3RhdGVzIGJ1dCB2YXJ5aW5nIHRvZ2dsZXMgKGUuZy4sIHNoaWZ0LWNsaWNrIGluXG4gICAgLy8gd2hpdGVzcGFjZSBmb2xsb3dlZCBieSBhIGNsaWNrIGluIHdoaXRlc3BhY2U7IHRoZSBzdG9yZSBzaG91bGQgb25seVxuICAgIC8vIGJlIGNsZWFyZWQgb24gdGhlIHNlY29uZCBjbGljaykuXG4gICAgY29uc3QgdXBkYXRlID0gYHVuaXQ6ICR7dW5pdE5hbWUobW9kZWwpfSwgZmllbGRzOiAke2ZpZWxkc1NnfSwgdmFsdWVzYDtcbiAgICBjb25zdCBldmVudHMgPSBzZWxDbXB0LmV2ZW50cztcbiAgICByZXR1cm4gW1xuICAgICAgICB7XG4gICAgICAgICAgICBuYW1lOiBuYW1lICsgVFVQTEUsXG4gICAgICAgICAgICBvbjogZXZlbnRzXG4gICAgICAgICAgICAgICAgPyBbXG4gICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGV2ZW50cyxcbiAgICAgICAgICAgICAgICAgICAgICAgIHVwZGF0ZTogYGRhdHVtICYmIGl0ZW0oKS5tYXJrLm1hcmt0eXBlICE9PSAnZ3JvdXAnID8geyR7dXBkYXRlfTogWyR7dmFsdWVzfV19IDogbnVsbGAsXG4gICAgICAgICAgICAgICAgICAgICAgICBmb3JjZTogdHJ1ZVxuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgXVxuICAgICAgICAgICAgICAgIDogW11cbiAgICAgICAgfVxuICAgIF07XG59XG5jb25zdCBtdWx0aSA9IHtcbiAgICBzaWduYWxzOiBzaW5nbGVPck11bHRpU2lnbmFscyxcbiAgICBtb2RpZnlFeHByOiAobW9kZWwsIHNlbENtcHQpID0+IHtcbiAgICAgICAgY29uc3QgdHBsID0gc2VsQ21wdC5uYW1lICsgVFVQTEU7XG4gICAgICAgIHJldHVybiB0cGwgKyAnLCAnICsgKHNlbENtcHQucmVzb2x2ZSA9PT0gJ2dsb2JhbCcgPyAnbnVsbCcgOiBge3VuaXQ6ICR7dW5pdE5hbWUobW9kZWwpfX1gKTtcbiAgICB9XG59O1xuZXhwb3J0IGRlZmF1bHQgbXVsdGk7XG4vLyMgc291cmNlTWFwcGluZ1VSTD1tdWx0aS5qcy5tYXAiXSwibWFwcGluZ3MiOiJBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EiLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///./node_modules/vega-lite/build/src/compile/selection/multi.js\n");

/***/ }),

/***/ "./node_modules/vega-lite/build/src/compile/selection/parse.js":
/*!*********************************************************************!*\
  !*** ./node_modules/vega-lite/build/src/compile/selection/parse.js ***!
  \*********************************************************************/
/*! exports provided: parseUnitSelection, parseSelectionPredicate, parseSelectionBinExtent, materializeSelections */
/***/ (function(module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"parseUnitSelection\", function() { return parseUnitSelection; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"parseSelectionPredicate\", function() { return parseSelectionPredicate; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"parseSelectionBinExtent\", function() { return parseSelectionBinExtent; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"materializeSelections\", function() { return materializeSelections; });\n/* harmony import */ var vega_event_selector__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! vega-event-selector */ \"./node_modules/vega-event-selector/build/vega-event-selector.module.js\");\n/* harmony import */ var vega_util__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! vega-util */ \"./node_modules/vega-lite/node_modules/vega-util/build/vega-util.module.js\");\n/* harmony import */ var ___WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! . */ \"./node_modules/vega-lite/build/src/compile/selection/index.js\");\n/* harmony import */ var _log__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ../../log */ \"./node_modules/vega-lite/build/src/log/index.js\");\n/* harmony import */ var _util__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ../../util */ \"./node_modules/vega-lite/build/src/util.js\");\n/* harmony import */ var _data_dataflow__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! ../data/dataflow */ \"./node_modules/vega-lite/build/src/compile/data/dataflow.js\");\n/* harmony import */ var _data_filter__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! ../data/filter */ \"./node_modules/vega-lite/build/src/compile/data/filter.js\");\n/* harmony import */ var _transforms_transforms__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! ./transforms/transforms */ \"./node_modules/vega-lite/build/src/compile/selection/transforms/transforms.js\");\n/* harmony import */ var _data__WEBPACK_IMPORTED_MODULE_8__ = __webpack_require__(/*! ../../data */ \"./node_modules/vega-lite/build/src/data.js\");\nvar __rest = (undefined && undefined.__rest) || function (s, e) {\n    var t = {};\n    for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0)\n        t[p] = s[p];\n    if (s != null && typeof Object.getOwnPropertySymbols === \"function\")\n        for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) {\n            if (e.indexOf(p[i]) < 0 && Object.prototype.propertyIsEnumerable.call(s, p[i]))\n                t[p[i]] = s[p[i]];\n        }\n    return t;\n};\n\n\n\n\n\n\n\n\n\nfunction parseUnitSelection(model, selDefs) {\n    var _a;\n    const selCmpts = {};\n    const selectionConfig = model.config.selection;\n    for (const name of Object(_util__WEBPACK_IMPORTED_MODULE_4__[\"keys\"])(selDefs !== null && selDefs !== void 0 ? selDefs : {})) {\n        const selDef = Object(_util__WEBPACK_IMPORTED_MODULE_4__[\"duplicate\"])(selDefs[name]);\n        const _b = selectionConfig[selDef.type], { fields, encodings } = _b, cfg = __rest(_b, [\"fields\", \"encodings\"]); // Project transform applies its defaults.\n        // Set default values from config if a property hasn't been specified,\n        // or if it is true. E.g., \"translate\": true should use the default\n        // event handlers for translate. However, true may be a valid value for\n        // a property (e.g., \"nearest\": true).\n        for (const key in cfg) {\n            // A selection should contain either `encodings` or `fields`, only use\n            // default values for these two values if neither of them is specified.\n            if ((key === 'encodings' && selDef.fields) || (key === 'fields' && selDef.encodings)) {\n                continue;\n            }\n            if (key === 'mark') {\n                selDef[key] = Object.assign(Object.assign({}, cfg[key]), selDef[key]);\n            }\n            if (selDef[key] === undefined || selDef[key] === true) {\n                selDef[key] = (_a = cfg[key]) !== null && _a !== void 0 ? _a : selDef[key];\n            }\n        }\n        const safeName = Object(_util__WEBPACK_IMPORTED_MODULE_4__[\"varName\"])(name);\n        const selCmpt = (selCmpts[safeName] = Object.assign(Object.assign({}, selDef), { name: safeName, events: Object(vega_util__WEBPACK_IMPORTED_MODULE_1__[\"isString\"])(selDef.on) ? Object(vega_event_selector__WEBPACK_IMPORTED_MODULE_0__[\"selector\"])(selDef.on, 'scope') : Object(_util__WEBPACK_IMPORTED_MODULE_4__[\"duplicate\"])(selDef.on) }));\n        Object(_transforms_transforms__WEBPACK_IMPORTED_MODULE_7__[\"forEachTransform\"])(selCmpt, txCompiler => {\n            if (txCompiler.has(selCmpt) && txCompiler.parse) {\n                txCompiler.parse(model, selCmpt, selDef, selDefs[name]);\n            }\n        });\n    }\n    return selCmpts;\n}\nfunction parseSelectionPredicate(model, selections, dfnode, datum = 'datum') {\n    const stores = [];\n    function expr(name) {\n        const vname = Object(_util__WEBPACK_IMPORTED_MODULE_4__[\"varName\"])(name);\n        const selCmpt = model.getSelectionComponent(vname, name);\n        const store = Object(vega_util__WEBPACK_IMPORTED_MODULE_1__[\"stringValue\"])(vname + ___WEBPACK_IMPORTED_MODULE_2__[\"STORE\"]);\n        if (selCmpt.project.timeUnit) {\n            const child = dfnode !== null && dfnode !== void 0 ? dfnode : model.component.data.raw;\n            const tunode = selCmpt.project.timeUnit.clone();\n            if (child.parent) {\n                tunode.insertAsParentOf(child);\n            }\n            else {\n                child.parent = tunode;\n            }\n        }\n        if (selCmpt.empty !== 'none') {\n            stores.push(store);\n        }\n        return (`vlSelectionTest(${store}, ${datum}` + (selCmpt.resolve === 'global' ? ')' : `, ${Object(vega_util__WEBPACK_IMPORTED_MODULE_1__[\"stringValue\"])(selCmpt.resolve)})`));\n    }\n    const predicateStr = Object(_util__WEBPACK_IMPORTED_MODULE_4__[\"logicalExpr\"])(selections, expr);\n    return ((stores.length ? '!(' + stores.map(s => `length(data(${s}))`).join(' || ') + ') || ' : '') + `(${predicateStr})`);\n}\nfunction parseSelectionBinExtent(selCmpt, extent) {\n    const encoding = extent['encoding'];\n    let field = extent['field'];\n    if (!encoding && !field) {\n        field = selCmpt.project.items[0].field;\n        if (selCmpt.project.items.length > 1) {\n            Object(_log__WEBPACK_IMPORTED_MODULE_3__[\"warn\"])('A \"field\" or \"encoding\" must be specified when using a selection as a scale domain. ' +\n                `Using \"field\": ${Object(vega_util__WEBPACK_IMPORTED_MODULE_1__[\"stringValue\"])(field)}.`);\n        }\n    }\n    else if (encoding && !field) {\n        const encodings = selCmpt.project.items.filter(p => p.channel === encoding);\n        if (!encodings.length || encodings.length > 1) {\n            field = selCmpt.project.items[0].field;\n            Object(_log__WEBPACK_IMPORTED_MODULE_3__[\"warn\"])((!encodings.length ? 'No ' : 'Multiple ') +\n                `matching ${Object(vega_util__WEBPACK_IMPORTED_MODULE_1__[\"stringValue\"])(encoding)} encoding found for selection ${Object(vega_util__WEBPACK_IMPORTED_MODULE_1__[\"stringValue\"])(extent.selection)}. ` +\n                `Using \"field\": ${Object(vega_util__WEBPACK_IMPORTED_MODULE_1__[\"stringValue\"])(field)}.`);\n        }\n        else {\n            field = encodings[0].field;\n        }\n    }\n    return `${selCmpt.name}[${Object(vega_util__WEBPACK_IMPORTED_MODULE_1__[\"stringValue\"])(field)}]`;\n}\nfunction materializeSelections(model, main) {\n    Object(___WEBPACK_IMPORTED_MODULE_2__[\"forEachSelection\"])(model, selCmpt => {\n        const selection = selCmpt.name;\n        const lookupName = model.getName(`lookup_${selection}`);\n        model.component.data.outputNodes[lookupName] = selCmpt.materialized = new _data_dataflow__WEBPACK_IMPORTED_MODULE_5__[\"OutputNode\"](new _data_filter__WEBPACK_IMPORTED_MODULE_6__[\"FilterNode\"](main, model, { selection }), lookupName, _data__WEBPACK_IMPORTED_MODULE_8__[\"DataSourceType\"].Lookup, model.component.data.outputNodeRefCounts);\n    });\n}\n//# sourceMappingURL=parse.js.map//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,[encoded data, 8480 characters]\n//# sourceURL=webpack-internal:///./node_modules/vega-lite/build/src/compile/selection/parse.js\n");

/***/ }),

/***/ "./node_modules/vega-lite/build/src/compile/selection/single.js":
/*!**********************************************************************!*\
  !*** ./node_modules/vega-lite/build/src/compile/selection/single.js ***!
  \**********************************************************************/
/*! exports provided: default */
/***/ (function(module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var ___WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! . */ \"./node_modules/vega-lite/build/src/compile/selection/index.js\");\n/* harmony import */ var _multi__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./multi */ \"./node_modules/vega-lite/build/src/compile/selection/multi.js\");\n\n\nconst single = {\n    signals: _multi__WEBPACK_IMPORTED_MODULE_1__[\"singleOrMultiSignals\"],\n    modifyExpr: (model, selCmpt) => {\n        const tpl = selCmpt.name + ___WEBPACK_IMPORTED_MODULE_0__[\"TUPLE\"];\n        return tpl + ', ' + (selCmpt.resolve === 'global' ? 'true' : `{unit: ${Object(___WEBPACK_IMPORTED_MODULE_0__[\"unitName\"])(model)}}`);\n    }\n};\n/* harmony default export */ __webpack_exports__[\"default\"] = (single);\n//# sourceMappingURL=single.js.map//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvdmVnYS1saXRlL2J1aWxkL3NyYy9jb21waWxlL3NlbGVjdGlvbi9zaW5nbGUuanMuanMiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvdmVnYS1saXRlL2J1aWxkL3NyYy9jb21waWxlL3NlbGVjdGlvbi9zaW5nbGUuanM/Njg4MCJdLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBUVVBMRSwgdW5pdE5hbWUgfSBmcm9tICcuJztcbmltcG9ydCB7IHNpbmdsZU9yTXVsdGlTaWduYWxzIH0gZnJvbSAnLi9tdWx0aSc7XG5jb25zdCBzaW5nbGUgPSB7XG4gICAgc2lnbmFsczogc2luZ2xlT3JNdWx0aVNpZ25hbHMsXG4gICAgbW9kaWZ5RXhwcjogKG1vZGVsLCBzZWxDbXB0KSA9PiB7XG4gICAgICAgIGNvbnN0IHRwbCA9IHNlbENtcHQubmFtZSArIFRVUExFO1xuICAgICAgICByZXR1cm4gdHBsICsgJywgJyArIChzZWxDbXB0LnJlc29sdmUgPT09ICdnbG9iYWwnID8gJ3RydWUnIDogYHt1bml0OiAke3VuaXROYW1lKG1vZGVsKX19YCk7XG4gICAgfVxufTtcbmV4cG9ydCBkZWZhdWx0IHNpbmdsZTtcbi8vIyBzb3VyY2VNYXBwaW5nVVJMPXNpbmdsZS5qcy5tYXAiXSwibWFwcGluZ3MiOiJBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EiLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///./node_modules/vega-lite/build/src/compile/selection/single.js\n");

/***/ }),

/***/ "./node_modules/vega-lite/build/src/compile/selection/transforms/clear.js":
/*!********************************************************************************!*\
  !*** ./node_modules/vega-lite/build/src/compile/selection/transforms/clear.js ***!
  \********************************************************************************/
/*! exports provided: default */
/***/ (function(module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var vega_event_selector__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! vega-event-selector */ \"./node_modules/vega-event-selector/build/vega-event-selector.module.js\");\n/* harmony import */ var vega_util__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! vega-util */ \"./node_modules/vega-lite/node_modules/vega-util/build/vega-util.module.js\");\n/* harmony import */ var ___WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! .. */ \"./node_modules/vega-lite/build/src/compile/selection/index.js\");\n/* harmony import */ var _util__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ../../../util */ \"./node_modules/vega-lite/build/src/util.js\");\n/* harmony import */ var _inputs__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ./inputs */ \"./node_modules/vega-lite/build/src/compile/selection/transforms/inputs.js\");\n/* harmony import */ var _toggle__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! ./toggle */ \"./node_modules/vega-lite/build/src/compile/selection/transforms/toggle.js\");\n\n\n\n\n\n\nconst clear = {\n    has: selCmpt => {\n        return selCmpt.clear !== undefined && selCmpt.clear !== false;\n    },\n    parse: (model, selCmpt, selDef) => {\n        if (selDef.clear) {\n            selCmpt.clear = Object(vega_util__WEBPACK_IMPORTED_MODULE_1__[\"isString\"])(selDef.clear) ? Object(vega_event_selector__WEBPACK_IMPORTED_MODULE_0__[\"selector\"])(selDef.clear, 'scope') : selDef.clear;\n        }\n    },\n    topLevelSignals: (model, selCmpt, signals) => {\n        if (_inputs__WEBPACK_IMPORTED_MODULE_4__[\"default\"].has(selCmpt)) {\n            for (const proj of selCmpt.project.items) {\n                const idx = signals.findIndex(n => n.name === Object(_util__WEBPACK_IMPORTED_MODULE_3__[\"varName\"])(`${selCmpt.name}_${proj.field}`));\n                if (idx !== -1) {\n                    signals[idx].on.push({ events: selCmpt.clear, update: 'null' });\n                }\n            }\n        }\n        return signals;\n    },\n    signals: (model, selCmpt, signals) => {\n        function addClear(idx, update) {\n            if (idx !== -1 && signals[idx].on) {\n                signals[idx].on.push({ events: selCmpt.clear, update });\n            }\n        }\n        // Be as minimalist as possible when adding clear triggers to minimize dataflow execution.\n        if (selCmpt.type === 'interval') {\n            for (const proj of selCmpt.project.items) {\n                const vIdx = signals.findIndex(n => n.name === proj.signals.visual);\n                addClear(vIdx, '[0, 0]');\n                if (vIdx === -1) {\n                    const dIdx = signals.findIndex(n => n.name === proj.signals.data);\n                    addClear(dIdx, 'null');\n                }\n            }\n        }\n        else {\n            let tIdx = signals.findIndex(n => n.name === selCmpt.name + ___WEBPACK_IMPORTED_MODULE_2__[\"TUPLE\"]);\n            addClear(tIdx, 'null');\n            if (_toggle__WEBPACK_IMPORTED_MODULE_5__[\"default\"].has(selCmpt)) {\n                tIdx = signals.findIndex(n => n.name === selCmpt.name + _toggle__WEBPACK_IMPORTED_MODULE_5__[\"TOGGLE\"]);\n                addClear(tIdx, 'false');\n            }\n        }\n        return signals;\n    }\n};\n/* harmony default export */ __webpack_exports__[\"default\"] = (clear);\n//# sourceMappingURL=clear.js.map//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvdmVnYS1saXRlL2J1aWxkL3NyYy9jb21waWxlL3NlbGVjdGlvbi90cmFuc2Zvcm1zL2NsZWFyLmpzLmpzIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL3ZlZ2EtbGl0ZS9idWlsZC9zcmMvY29tcGlsZS9zZWxlY3Rpb24vdHJhbnNmb3Jtcy9jbGVhci5qcz9hZGZlIl0sInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IHNlbGVjdG9yIGFzIHBhcnNlU2VsZWN0b3IgfSBmcm9tICd2ZWdhLWV2ZW50LXNlbGVjdG9yJztcbmltcG9ydCB7IGlzU3RyaW5nIH0gZnJvbSAndmVnYS11dGlsJztcbmltcG9ydCB7IFRVUExFIH0gZnJvbSAnLi4nO1xuaW1wb3J0IHsgdmFyTmFtZSB9IGZyb20gJy4uLy4uLy4uL3V0aWwnO1xuaW1wb3J0IGlucHV0QmluZGluZ3MgZnJvbSAnLi9pbnB1dHMnO1xuaW1wb3J0IHRvZ2dsZSwgeyBUT0dHTEUgfSBmcm9tICcuL3RvZ2dsZSc7XG5jb25zdCBjbGVhciA9IHtcbiAgICBoYXM6IHNlbENtcHQgPT4ge1xuICAgICAgICByZXR1cm4gc2VsQ21wdC5jbGVhciAhPT0gdW5kZWZpbmVkICYmIHNlbENtcHQuY2xlYXIgIT09IGZhbHNlO1xuICAgIH0sXG4gICAgcGFyc2U6IChtb2RlbCwgc2VsQ21wdCwgc2VsRGVmKSA9PiB7XG4gICAgICAgIGlmIChzZWxEZWYuY2xlYXIpIHtcbiAgICAgICAgICAgIHNlbENtcHQuY2xlYXIgPSBpc1N0cmluZyhzZWxEZWYuY2xlYXIpID8gcGFyc2VTZWxlY3RvcihzZWxEZWYuY2xlYXIsICdzY29wZScpIDogc2VsRGVmLmNsZWFyO1xuICAgICAgICB9XG4gICAgfSxcbiAgICB0b3BMZXZlbFNpZ25hbHM6IChtb2RlbCwgc2VsQ21wdCwgc2lnbmFscykgPT4ge1xuICAgICAgICBpZiAoaW5wdXRCaW5kaW5ncy5oYXMoc2VsQ21wdCkpIHtcbiAgICAgICAgICAgIGZvciAoY29uc3QgcHJvaiBvZiBzZWxDbXB0LnByb2plY3QuaXRlbXMpIHtcbiAgICAgICAgICAgICAgICBjb25zdCBpZHggPSBzaWduYWxzLmZpbmRJbmRleChuID0+IG4ubmFtZSA9PT0gdmFyTmFtZShgJHtzZWxDbXB0Lm5hbWV9XyR7cHJvai5maWVsZH1gKSk7XG4gICAgICAgICAgICAgICAgaWYgKGlkeCAhPT0gLTEpIHtcbiAgICAgICAgICAgICAgICAgICAgc2lnbmFsc1tpZHhdLm9uLnB1c2goeyBldmVudHM6IHNlbENtcHQuY2xlYXIsIHVwZGF0ZTogJ251bGwnIH0pO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gc2lnbmFscztcbiAgICB9LFxuICAgIHNpZ25hbHM6IChtb2RlbCwgc2VsQ21wdCwgc2lnbmFscykgPT4ge1xuICAgICAgICBmdW5jdGlvbiBhZGRDbGVhcihpZHgsIHVwZGF0ZSkge1xuICAgICAgICAgICAgaWYgKGlkeCAhPT0gLTEgJiYgc2lnbmFsc1tpZHhdLm9uKSB7XG4gICAgICAgICAgICAgICAgc2lnbmFsc1tpZHhdLm9uLnB1c2goeyBldmVudHM6IHNlbENtcHQuY2xlYXIsIHVwZGF0ZSB9KTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgICAvLyBCZSBhcyBtaW5pbWFsaXN0IGFzIHBvc3NpYmxlIHdoZW4gYWRkaW5nIGNsZWFyIHRyaWdnZXJzIHRvIG1pbmltaXplIGRhdGFmbG93IGV4ZWN1dGlvbi5cbiAgICAgICAgaWYgKHNlbENtcHQudHlwZSA9PT0gJ2ludGVydmFsJykge1xuICAgICAgICAgICAgZm9yIChjb25zdCBwcm9qIG9mIHNlbENtcHQucHJvamVjdC5pdGVtcykge1xuICAgICAgICAgICAgICAgIGNvbnN0IHZJZHggPSBzaWduYWxzLmZpbmRJbmRleChuID0+IG4ubmFtZSA9PT0gcHJvai5zaWduYWxzLnZpc3VhbCk7XG4gICAgICAgICAgICAgICAgYWRkQ2xlYXIodklkeCwgJ1swLCAwXScpO1xuICAgICAgICAgICAgICAgIGlmICh2SWR4ID09PSAtMSkge1xuICAgICAgICAgICAgICAgICAgICBjb25zdCBkSWR4ID0gc2lnbmFscy5maW5kSW5kZXgobiA9PiBuLm5hbWUgPT09IHByb2ouc2lnbmFscy5kYXRhKTtcbiAgICAgICAgICAgICAgICAgICAgYWRkQ2xlYXIoZElkeCwgJ251bGwnKTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgICAgZWxzZSB7XG4gICAgICAgICAgICBsZXQgdElkeCA9IHNpZ25hbHMuZmluZEluZGV4KG4gPT4gbi5uYW1lID09PSBzZWxDbXB0Lm5hbWUgKyBUVVBMRSk7XG4gICAgICAgICAgICBhZGRDbGVhcih0SWR4LCAnbnVsbCcpO1xuICAgICAgICAgICAgaWYgKHRvZ2dsZS5oYXMoc2VsQ21wdCkpIHtcbiAgICAgICAgICAgICAgICB0SWR4ID0gc2lnbmFscy5maW5kSW5kZXgobiA9PiBuLm5hbWUgPT09IHNlbENtcHQubmFtZSArIFRPR0dMRSk7XG4gICAgICAgICAgICAgICAgYWRkQ2xlYXIodElkeCwgJ2ZhbHNlJyk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIHNpZ25hbHM7XG4gICAgfVxufTtcbmV4cG9ydCBkZWZhdWx0IGNsZWFyO1xuLy8jIHNvdXJjZU1hcHBpbmdVUkw9Y2xlYXIuanMubWFwIl0sIm1hcHBpbmdzIjoiQUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EiLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///./node_modules/vega-lite/build/src/compile/selection/transforms/clear.js\n");

/***/ }),

/***/ "./node_modules/vega-lite/build/src/compile/selection/transforms/inputs.js":
/*!*********************************************************************************!*\
  !*** ./node_modules/vega-lite/build/src/compile/selection/transforms/inputs.js ***!
  \*********************************************************************************/
/*! exports provided: default */
/***/ (function(module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var vega_util__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! vega-util */ \"./node_modules/vega-lite/node_modules/vega-util/build/vega-util.module.js\");\n/* harmony import */ var ___WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! .. */ \"./node_modules/vega-lite/build/src/compile/selection/index.js\");\n/* harmony import */ var _util__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ../../../util */ \"./node_modules/vega-lite/build/src/util.js\");\n/* harmony import */ var _assemble__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ../assemble */ \"./node_modules/vega-lite/build/src/compile/selection/assemble.js\");\n/* harmony import */ var _nearest__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ./nearest */ \"./node_modules/vega-lite/build/src/compile/selection/transforms/nearest.js\");\n/* harmony import */ var _project__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! ./project */ \"./node_modules/vega-lite/build/src/compile/selection/transforms/project.js\");\n/* harmony import */ var _selection__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! ../../../selection */ \"./node_modules/vega-lite/build/src/selection.js\");\n\n\n\n\n\n\n\nconst inputBindings = {\n    has: selCmpt => {\n        return (selCmpt.type === 'single' &&\n            selCmpt.resolve === 'global' &&\n            selCmpt.bind &&\n            selCmpt.bind !== 'scales' &&\n            !Object(_selection__WEBPACK_IMPORTED_MODULE_6__[\"isLegendBinding\"])(selCmpt.bind));\n    },\n    parse: (model, selCmpt, selDef, origDef) => {\n        // Binding a selection to input widgets disables default direct manipulation interaction.\n        // A user can choose to re-enable it by explicitly specifying triggering input events.\n        if (!origDef.on)\n            delete selCmpt.events;\n        if (!origDef.clear)\n            delete selCmpt.clear;\n    },\n    topLevelSignals: (model, selCmpt, signals) => {\n        const name = selCmpt.name;\n        const proj = selCmpt.project;\n        const bind = selCmpt.bind;\n        const init = selCmpt.init && selCmpt.init[0]; // Can only exist on single selections (one initial value).\n        const datum = _nearest__WEBPACK_IMPORTED_MODULE_4__[\"default\"].has(selCmpt) ? '(item().isVoronoi ? datum.datum : datum)' : 'datum';\n        proj.items.forEach((p, i) => {\n            var _a, _b;\n            const sgname = Object(_util__WEBPACK_IMPORTED_MODULE_2__[\"varName\"])(`${name}_${p.field}`);\n            const hasSignal = signals.filter(s => s.name === sgname);\n            if (!hasSignal.length) {\n                signals.unshift(Object.assign(Object.assign({ name: sgname }, (init ? { init: Object(_assemble__WEBPACK_IMPORTED_MODULE_3__[\"assembleInit\"])(init[i]) } : { value: null })), { on: selCmpt.events\n                        ? [\n                            {\n                                events: selCmpt.events,\n                                update: `datum && item().mark.marktype !== 'group' ? ${datum}[${Object(vega_util__WEBPACK_IMPORTED_MODULE_0__[\"stringValue\"])(p.field)}] : null`\n                            }\n                        ]\n                        : [], bind: (_b = (_a = bind[p.field]) !== null && _a !== void 0 ? _a : bind[p.channel]) !== null && _b !== void 0 ? _b : bind }));\n            }\n        });\n        return signals;\n    },\n    signals: (model, selCmpt, signals) => {\n        const name = selCmpt.name;\n        const proj = selCmpt.project;\n        const signal = signals.filter(s => s.name === name + ___WEBPACK_IMPORTED_MODULE_1__[\"TUPLE\"])[0];\n        const fields = name + _project__WEBPACK_IMPORTED_MODULE_5__[\"TUPLE_FIELDS\"];\n        const values = proj.items.map(p => Object(_util__WEBPACK_IMPORTED_MODULE_2__[\"varName\"])(`${name}_${p.field}`));\n        const valid = values.map(v => `${v} !== null`).join(' && ');\n        if (values.length) {\n            signal.update = `${valid} ? {fields: ${fields}, values: [${values.join(', ')}]} : null`;\n        }\n        delete signal.value;\n        delete signal.on;\n        return signals;\n    }\n};\n/* harmony default export */ __webpack_exports__[\"default\"] = (inputBindings);\n//# sourceMappingURL=inputs.js.map//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,[encoded data, 4696 characters]\n//# sourceURL=webpack-internal:///./node_modules/vega-lite/build/src/compile/selection/transforms/inputs.js\n");

/***/ }),

/***/ "./node_modules/vega-lite/build/src/compile/selection/transforms/legends.js":
/*!**********************************************************************************!*\
  !*** ./node_modules/vega-lite/build/src/compile/selection/transforms/legends.js ***!
  \**********************************************************************************/
/*! exports provided: default, parseInteractiveLegend */
/***/ (function(module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"parseInteractiveLegend\", function() { return parseInteractiveLegend; });\n/* harmony import */ var vega_event_selector__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! vega-event-selector */ \"./node_modules/vega-event-selector/build/vega-event-selector.module.js\");\n/* harmony import */ var vega_util__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! vega-util */ \"./node_modules/vega-lite/node_modules/vega-util/build/vega-util.module.js\");\n/* harmony import */ var ___WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! .. */ \"./node_modules/vega-lite/build/src/compile/selection/index.js\");\n/* harmony import */ var _log__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ../../../log */ \"./node_modules/vega-lite/build/src/log/index.js\");\n/* harmony import */ var _selection__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ../../../selection */ \"./node_modules/vega-lite/build/src/selection.js\");\n/* harmony import */ var _util__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! ../../../util */ \"./node_modules/vega-lite/build/src/util.js\");\n/* harmony import */ var _project__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! ./project */ \"./node_modules/vega-lite/build/src/compile/selection/transforms/project.js\");\n/* harmony import */ var _toggle__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! ./toggle */ \"./node_modules/vega-lite/build/src/compile/selection/transforms/toggle.js\");\n\n\n\n\n\n\n\n\nconst legendBindings = {\n    has: (selCmpt) => {\n        const spec = selCmpt.resolve === 'global' && selCmpt.bind && Object(_selection__WEBPACK_IMPORTED_MODULE_4__[\"isLegendBinding\"])(selCmpt.bind);\n        const projLen = selCmpt.project.items.length === 1 && selCmpt.project.items[0].field !== _selection__WEBPACK_IMPORTED_MODULE_4__[\"SELECTION_ID\"];\n        if (spec && !projLen) {\n            _log__WEBPACK_IMPORTED_MODULE_3__[\"warn\"](_log__WEBPACK_IMPORTED_MODULE_3__[\"message\"].LEGEND_BINDINGS_MUST_HAVE_PROJECTION);\n        }\n        return spec && projLen;\n    },\n    parse: (model, selCmpt, selDef, origDef) => {\n        var _a;\n        // Binding a selection to a legend disables default direct manipulation interaction.\n        // A user can choose to re-enable it by explicitly specifying triggering input events.\n        if (!origDef.on)\n            delete selCmpt.events;\n        if (!origDef.clear)\n            delete selCmpt.clear;\n        if (origDef.on || origDef.clear) {\n            const legendFilter = 'event.item && indexof(event.item.mark.role, \"legend\") < 0';\n            for (const evt of selCmpt.events) {\n                evt.filter = Object(vega_util__WEBPACK_IMPORTED_MODULE_1__[\"array\"])((_a = evt.filter) !== null && _a !== void 0 ? _a : []);\n                if (evt.filter.indexOf(legendFilter) < 0) {\n                    evt.filter.push(legendFilter);\n                }\n            }\n        }\n        const evt = Object(_selection__WEBPACK_IMPORTED_MODULE_4__[\"isLegendStreamBinding\"])(selCmpt.bind) ? selCmpt.bind.legend : 'click';\n        const stream = Object(vega_util__WEBPACK_IMPORTED_MODULE_1__[\"isString\"])(evt) ? Object(vega_event_selector__WEBPACK_IMPORTED_MODULE_0__[\"selector\"])(evt, 'view') : Object(vega_util__WEBPACK_IMPORTED_MODULE_1__[\"array\"])(evt);\n        selCmpt.bind = { legend: { merge: stream } };\n    },\n    topLevelSignals: (model, selCmpt, signals) => {\n        const selName = selCmpt.name;\n        const stream = Object(_selection__WEBPACK_IMPORTED_MODULE_4__[\"isLegendStreamBinding\"])(selCmpt.bind) && selCmpt.bind.legend;\n        const markName = (name) => (s) => {\n            const ds = Object(_util__WEBPACK_IMPORTED_MODULE_5__[\"duplicate\"])(s);\n            ds.markname = name;\n            return ds;\n        };\n        for (const proj of selCmpt.project.items) {\n            if (!proj.hasLegend)\n                continue;\n            const prefix = `${Object(_util__WEBPACK_IMPORTED_MODULE_5__[\"varName\"])(proj.field)}_legend`;\n            const sgName = `${selName}_${prefix}`;\n            const hasSignal = signals.filter(s => s.name === sgName);\n            if (hasSignal.length === 0) {\n                const events = stream.merge\n                    .map(markName(`${prefix}_symbols`))\n                    .concat(stream.merge.map(markName(`${prefix}_labels`)))\n                    .concat(stream.merge.map(markName(`${prefix}_entries`)));\n                signals.unshift(Object.assign(Object.assign({ name: sgName }, (!selCmpt.init ? { value: null } : {})), { on: [\n                        // Legend entries do not store values, so we need to walk the scenegraph to the symbol datum.\n                        { events, update: 'datum.value || item().items[0].items[0].datum.value', force: true },\n                        { events: stream.merge, update: `!event.item || !datum ? null : ${sgName}`, force: true }\n                    ] }));\n            }\n        }\n        return signals;\n    },\n    signals: (model, selCmpt, signals) => {\n        const name = selCmpt.name;\n        const proj = selCmpt.project;\n        const tuple = signals.find(s => s.name === name + ___WEBPACK_IMPORTED_MODULE_2__[\"TUPLE\"]);\n        const fields = name + _project__WEBPACK_IMPORTED_MODULE_6__[\"TUPLE_FIELDS\"];\n        const values = proj.items.filter(p => p.hasLegend).map(p => Object(_util__WEBPACK_IMPORTED_MODULE_5__[\"varName\"])(`${name}_${Object(_util__WEBPACK_IMPORTED_MODULE_5__[\"varName\"])(p.field)}_legend`));\n        const valid = values.map(v => `${v} !== null`).join(' && ');\n        const update = `${valid} ? {fields: ${fields}, values: [${values.join(', ')}]} : null`;\n        if (selCmpt.events && values.length > 0) {\n            tuple.on.push({\n                events: values.map(signal => ({ signal })),\n                update\n            });\n        }\n        else if (values.length > 0) {\n            tuple.update = update;\n            delete tuple.value;\n            delete tuple.on;\n        }\n        const toggle = signals.find(s => s.name === name + _toggle__WEBPACK_IMPORTED_MODULE_7__[\"TOGGLE\"]);\n        const events = Object(_selection__WEBPACK_IMPORTED_MODULE_4__[\"isLegendStreamBinding\"])(selCmpt.bind) && selCmpt.bind.legend;\n        if (toggle) {\n            if (!selCmpt.events)\n                toggle.on[0].events = events;\n            else\n                toggle.on.push(Object.assign(Object.assign({}, toggle.on[0]), { events }));\n        }\n        return signals;\n    }\n};\n/* harmony default export */ __webpack_exports__[\"default\"] = (legendBindings);\nfunction parseInteractiveLegend(model, channel, legendCmpt) {\n    var _a;\n    const field = (_a = model.fieldDef(channel)) === null || _a === void 0 ? void 0 : _a.field;\n    Object(___WEBPACK_IMPORTED_MODULE_2__[\"forEachSelection\"])(model, selCmpt => {\n        var _a, _b;\n        const proj = (_a = selCmpt.project.hasField[field]) !== null && _a !== void 0 ? _a : selCmpt.project.hasChannel[channel];\n        if (proj && legendBindings.has(selCmpt)) {\n            const legendSelections = (_b = legendCmpt.get('selections')) !== null && _b !== void 0 ? _b : [];\n            legendSelections.push(selCmpt.name);\n            legendCmpt.set('selections', legendSelections, false);\n            proj.hasLegend = true;\n        }\n    });\n}\n//# sourceMappingURL=legends.js.map//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,[encoded data, 8416 characters]\n//# sourceURL=webpack-internal:///./node_modules/vega-lite/build/src/compile/selection/transforms/legends.js\n");

/***/ }),

/***/ "./node_modules/vega-lite/build/src/compile/selection/transforms/nearest.js":
/*!**********************************************************************************!*\
  !*** ./node_modules/vega-lite/build/src/compile/selection/transforms/nearest.js ***!
  \**********************************************************************************/
/*! exports provided: default */
/***/ (function(module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _log__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../../../log */ \"./node_modules/vega-lite/build/src/log/index.js\");\n/* harmony import */ var _mark__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../../../mark */ \"./node_modules/vega-lite/build/src/mark.js\");\n/* harmony import */ var _mark_encode__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ../../mark/encode */ \"./node_modules/vega-lite/build/src/compile/mark/encode/index.js\");\n\n\n\nconst VORONOI = 'voronoi';\nconst nearest = {\n    has: selCmpt => {\n        return selCmpt.type !== 'interval' && selCmpt.nearest;\n    },\n    parse: (model, selCmpt) => {\n        // Scope selection events to the voronoi mark to prevent capturing\n        // events that occur on the group mark (https://github.com/vega/vega/issues/2112).\n        if (selCmpt.events) {\n            for (const s of selCmpt.events) {\n                s.markname = model.getName(VORONOI);\n            }\n        }\n    },\n    marks: (model, selCmpt, marks) => {\n        const { x, y } = selCmpt.project.hasChannel;\n        const markType = model.mark;\n        if (Object(_mark__WEBPACK_IMPORTED_MODULE_1__[\"isPathMark\"])(markType)) {\n            _log__WEBPACK_IMPORTED_MODULE_0__[\"warn\"](_log__WEBPACK_IMPORTED_MODULE_0__[\"message\"].nearestNotSupportForContinuous(markType));\n            return marks;\n        }\n        const cellDef = {\n            name: model.getName(VORONOI),\n            type: 'path',\n            interactive: true,\n            from: { data: model.getName('marks') },\n            encode: {\n                update: Object.assign({ fill: { value: 'transparent' }, strokeWidth: { value: 0.35 }, stroke: { value: 'transparent' }, isVoronoi: { value: true } }, Object(_mark_encode__WEBPACK_IMPORTED_MODULE_2__[\"tooltip\"])(model, { reactiveGeom: true }))\n            },\n            transform: [\n                {\n                    type: 'voronoi',\n                    x: { expr: x || !y ? 'datum.datum.x || 0' : '0' },\n                    y: { expr: y || !x ? 'datum.datum.y || 0' : '0' },\n                    size: [model.getSizeSignalRef('width'), model.getSizeSignalRef('height')]\n                }\n            ]\n        };\n        let index = 0;\n        let exists = false;\n        marks.forEach((mark, i) => {\n            var _a;\n            const name = (_a = mark.name) !== null && _a !== void 0 ? _a : '';\n            if (name === model.component.mark[0].name) {\n                index = i;\n            }\n            else if (name.indexOf(VORONOI) >= 0) {\n                exists = true;\n            }\n        });\n        if (!exists) {\n            marks.splice(index + 1, 0, cellDef);\n        }\n        return marks;\n    }\n};\n/* harmony default export */ __webpack_exports__[\"default\"] = (nearest);\n//# sourceMappingURL=nearest.js.map//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvdmVnYS1saXRlL2J1aWxkL3NyYy9jb21waWxlL3NlbGVjdGlvbi90cmFuc2Zvcm1zL25lYXJlc3QuanMuanMiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvdmVnYS1saXRlL2J1aWxkL3NyYy9jb21waWxlL3NlbGVjdGlvbi90cmFuc2Zvcm1zL25lYXJlc3QuanM/OGE0YSJdLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgKiBhcyBsb2cgZnJvbSAnLi4vLi4vLi4vbG9nJztcbmltcG9ydCB7IGlzUGF0aE1hcmsgfSBmcm9tICcuLi8uLi8uLi9tYXJrJztcbmltcG9ydCB7IHRvb2x0aXAgfSBmcm9tICcuLi8uLi9tYXJrL2VuY29kZSc7XG5jb25zdCBWT1JPTk9JID0gJ3Zvcm9ub2knO1xuY29uc3QgbmVhcmVzdCA9IHtcbiAgICBoYXM6IHNlbENtcHQgPT4ge1xuICAgICAgICByZXR1cm4gc2VsQ21wdC50eXBlICE9PSAnaW50ZXJ2YWwnICYmIHNlbENtcHQubmVhcmVzdDtcbiAgICB9LFxuICAgIHBhcnNlOiAobW9kZWwsIHNlbENtcHQpID0+IHtcbiAgICAgICAgLy8gU2NvcGUgc2VsZWN0aW9uIGV2ZW50cyB0byB0aGUgdm9yb25vaSBtYXJrIHRvIHByZXZlbnQgY2FwdHVyaW5nXG4gICAgICAgIC8vIGV2ZW50cyB0aGF0IG9jY3VyIG9uIHRoZSBncm91cCBtYXJrIChodHRwczovL2dpdGh1Yi5jb20vdmVnYS92ZWdhL2lzc3Vlcy8yMTEyKS5cbiAgICAgICAgaWYgKHNlbENtcHQuZXZlbnRzKSB7XG4gICAgICAgICAgICBmb3IgKGNvbnN0IHMgb2Ygc2VsQ21wdC5ldmVudHMpIHtcbiAgICAgICAgICAgICAgICBzLm1hcmtuYW1lID0gbW9kZWwuZ2V0TmFtZShWT1JPTk9JKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgIH0sXG4gICAgbWFya3M6IChtb2RlbCwgc2VsQ21wdCwgbWFya3MpID0+IHtcbiAgICAgICAgY29uc3QgeyB4LCB5IH0gPSBzZWxDbXB0LnByb2plY3QuaGFzQ2hhbm5lbDtcbiAgICAgICAgY29uc3QgbWFya1R5cGUgPSBtb2RlbC5tYXJrO1xuICAgICAgICBpZiAoaXNQYXRoTWFyayhtYXJrVHlwZSkpIHtcbiAgICAgICAgICAgIGxvZy53YXJuKGxvZy5tZXNzYWdlLm5lYXJlc3ROb3RTdXBwb3J0Rm9yQ29udGludW91cyhtYXJrVHlwZSkpO1xuICAgICAgICAgICAgcmV0dXJuIG1hcmtzO1xuICAgICAgICB9XG4gICAgICAgIGNvbnN0IGNlbGxEZWYgPSB7XG4gICAgICAgICAgICBuYW1lOiBtb2RlbC5nZXROYW1lKFZPUk9OT0kpLFxuICAgICAgICAgICAgdHlwZTogJ3BhdGgnLFxuICAgICAgICAgICAgaW50ZXJhY3RpdmU6IHRydWUsXG4gICAgICAgICAgICBmcm9tOiB7IGRhdGE6IG1vZGVsLmdldE5hbWUoJ21hcmtzJykgfSxcbiAgICAgICAgICAgIGVuY29kZToge1xuICAgICAgICAgICAgICAgIHVwZGF0ZTogT2JqZWN0LmFzc2lnbih7IGZpbGw6IHsgdmFsdWU6ICd0cmFuc3BhcmVudCcgfSwgc3Ryb2tlV2lkdGg6IHsgdmFsdWU6IDAuMzUgfSwgc3Ryb2tlOiB7IHZhbHVlOiAndHJhbnNwYXJlbnQnIH0sIGlzVm9yb25vaTogeyB2YWx1ZTogdHJ1ZSB9IH0sIHRvb2x0aXAobW9kZWwsIHsgcmVhY3RpdmVHZW9tOiB0cnVlIH0pKVxuICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIHRyYW5zZm9ybTogW1xuICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgdHlwZTogJ3Zvcm9ub2knLFxuICAgICAgICAgICAgICAgICAgICB4OiB7IGV4cHI6IHggfHwgIXkgPyAnZGF0dW0uZGF0dW0ueCB8fCAwJyA6ICcwJyB9LFxuICAgICAgICAgICAgICAgICAgICB5OiB7IGV4cHI6IHkgfHwgIXggPyAnZGF0dW0uZGF0dW0ueSB8fCAwJyA6ICcwJyB9LFxuICAgICAgICAgICAgICAgICAgICBzaXplOiBbbW9kZWwuZ2V0U2l6ZVNpZ25hbFJlZignd2lkdGgnKSwgbW9kZWwuZ2V0U2l6ZVNpZ25hbFJlZignaGVpZ2h0JyldXG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgXVxuICAgICAgICB9O1xuICAgICAgICBsZXQgaW5kZXggPSAwO1xuICAgICAgICBsZXQgZXhpc3RzID0gZmFsc2U7XG4gICAgICAgIG1hcmtzLmZvckVhY2goKG1hcmssIGkpID0+IHtcbiAgICAgICAgICAgIHZhciBfYTtcbiAgICAgICAgICAgIGNvbnN0IG5hbWUgPSAoX2EgPSBtYXJrLm5hbWUpICE9PSBudWxsICYmIF9hICE9PSB2b2lkIDAgPyBfYSA6ICcnO1xuICAgICAgICAgICAgaWYgKG5hbWUgPT09IG1vZGVsLmNvbXBvbmVudC5tYXJrWzBdLm5hbWUpIHtcbiAgICAgICAgICAgICAgICBpbmRleCA9IGk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBlbHNlIGlmIChuYW1lLmluZGV4T2YoVk9ST05PSSkgPj0gMCkge1xuICAgICAgICAgICAgICAgIGV4aXN0cyA9IHRydWU7XG4gICAgICAgICAgICB9XG4gICAgICAgIH0pO1xuICAgICAgICBpZiAoIWV4aXN0cykge1xuICAgICAgICAgICAgbWFya3Muc3BsaWNlKGluZGV4ICsgMSwgMCwgY2VsbERlZik7XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIG1hcmtzO1xuICAgIH1cbn07XG5leHBvcnQgZGVmYXVsdCBuZWFyZXN0O1xuLy8jIHNvdXJjZU1hcHBpbmdVUkw9bmVhcmVzdC5qcy5tYXAiXSwibWFwcGluZ3MiOiJBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EiLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///./node_modules/vega-lite/build/src/compile/selection/transforms/nearest.js\n");

/***/ }),

/***/ "./node_modules/vega-lite/build/src/compile/selection/transforms/project.js":
/*!**********************************************************************************!*\
  !*** ./node_modules/vega-lite/build/src/compile/selection/transforms/project.js ***!
  \**********************************************************************************/
/*! exports provided: TUPLE_FIELDS, SelectionProjectionComponent, default */
/***/ (function(module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"TUPLE_FIELDS\", function() { return TUPLE_FIELDS; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"SelectionProjectionComponent\", function() { return SelectionProjectionComponent; });\n/* harmony import */ var vega_util__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! vega-util */ \"./node_modules/vega-lite/node_modules/vega-util/build/vega-util.module.js\");\n/* harmony import */ var _channel__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../../../channel */ \"./node_modules/vega-lite/build/src/channel.js\");\n/* harmony import */ var _log__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ../../../log */ \"./node_modules/vega-lite/build/src/log/index.js\");\n/* harmony import */ var _scale__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ../../../scale */ \"./node_modules/vega-lite/build/src/scale.js\");\n/* harmony import */ var _util__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ../../../util */ \"./node_modules/vega-lite/build/src/util.js\");\n/* harmony import */ var _data_timeunit__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! ../../data/timeunit */ \"./node_modules/vega-lite/build/src/compile/data/timeunit.js\");\nvar __rest = (undefined && undefined.__rest) || function (s, e) {\n    var t = {};\n    for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0)\n        t[p] = s[p];\n    if (s != null && typeof Object.getOwnPropertySymbols === \"function\")\n        for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) {\n            if (e.indexOf(p[i]) < 0 && Object.prototype.propertyIsEnumerable.call(s, p[i]))\n                t[p[i]] = s[p[i]];\n        }\n    return t;\n};\n\n\n\n\n\n\nconst TUPLE_FIELDS = '_tuple_fields';\nclass SelectionProjectionComponent {\n    constructor(...items) {\n        this.items = items;\n        this.hasChannel = {};\n        this.hasField = {};\n    }\n}\nconst project = {\n    has: () => {\n        return true; // This transform handles its own defaults, so always run parse.\n    },\n    parse: (model, selCmpt, selDef) => {\n        var _a, _b, _c;\n        const name = selCmpt.name;\n        const proj = (_a = selCmpt.project) !== null && _a !== void 0 ? _a : (selCmpt.project = new SelectionProjectionComponent());\n        const parsed = {};\n        const timeUnits = {};\n        const signals = new Set();\n        const signalName = (p, range) => {\n            const suffix = range === 'visual' ? p.channel : p.field;\n            let sg = Object(_util__WEBPACK_IMPORTED_MODULE_4__[\"varName\"])(`${name}_${suffix}`);\n            for (let counter = 1; signals.has(sg); counter++) {\n                sg = Object(_util__WEBPACK_IMPORTED_MODULE_4__[\"varName\"])(`${name}_${suffix}_${counter}`);\n            }\n            signals.add(sg);\n            return { [range]: sg };\n        };\n        // If no explicit projection (either fields or encodings) is specified, set some defaults.\n        // If an initial value is set, try to infer projections.\n        // Otherwise, use the default configuration.\n        if (!selDef.fields && !selDef.encodings) {\n            const cfg = model.config.selection[selDef.type];\n            if (selDef.init) {\n                for (const init of Object(vega_util__WEBPACK_IMPORTED_MODULE_0__[\"array\"])(selDef.init)) {\n                    for (const key of Object(_util__WEBPACK_IMPORTED_MODULE_4__[\"keys\"])(init)) {\n                        if (Object(_channel__WEBPACK_IMPORTED_MODULE_1__[\"isSingleDefUnitChannel\"])(key)) {\n                            (selDef.encodings || (selDef.encodings = [])).push(key);\n                        }\n                        else {\n                            if (selDef.type === 'interval') {\n                                _log__WEBPACK_IMPORTED_MODULE_2__[\"warn\"](_log__WEBPACK_IMPORTED_MODULE_2__[\"message\"].INTERVAL_INITIALIZED_WITH_X_Y);\n                                selDef.encodings = cfg.encodings;\n                            }\n                            else {\n                                (selDef.fields || (selDef.fields = [])).push(key);\n                            }\n                        }\n                    }\n                }\n            }\n            else {\n                selDef.encodings = cfg.encodings;\n                selDef.fields = cfg.fields;\n            }\n        }\n        // TODO: find a possible channel mapping for these fields.\n        for (const field of (_b = selDef.fields) !== null && _b !== void 0 ? _b : []) {\n            const p = { type: 'E', field };\n            p.signals = Object.assign({}, signalName(p, 'data'));\n            proj.items.push(p);\n            proj.hasField[field] = p;\n        }\n        for (const channel of (_c = selDef.encodings) !== null && _c !== void 0 ? _c : []) {\n            const fieldDef = model.fieldDef(channel);\n            if (fieldDef) {\n                let field = fieldDef.field;\n                if (fieldDef.aggregate) {\n                    _log__WEBPACK_IMPORTED_MODULE_2__[\"warn\"](_log__WEBPACK_IMPORTED_MODULE_2__[\"message\"].cannotProjectAggregate(channel, fieldDef.aggregate));\n                    continue;\n                }\n                else if (!field) {\n                    _log__WEBPACK_IMPORTED_MODULE_2__[\"warn\"](_log__WEBPACK_IMPORTED_MODULE_2__[\"message\"].cannotProjectOnChannelWithoutField(channel));\n                    continue;\n                }\n                if (fieldDef.timeUnit) {\n                    field = model.vgField(channel);\n                    // Construct TimeUnitComponents which will be combined into a\n                    // TimeUnitNode. This node may need to be inserted into the\n                    // dataflow if the selection is used across views that do not\n                    // have these time units defined.\n                    const component = {\n                        timeUnit: fieldDef.timeUnit,\n                        as: field,\n                        field: fieldDef.field\n                    };\n                    timeUnits[Object(_util__WEBPACK_IMPORTED_MODULE_4__[\"hash\"])(component)] = component;\n                }\n                // Prevent duplicate projections on the same field.\n                // TODO: what if the same field is bound to multiple channels (e.g., SPLOM diag).\n                if (!parsed[field]) {\n                    // Determine whether the tuple will store enumerated or ranged values.\n                    // Interval selections store ranges for continuous scales, and enumerations otherwise.\n                    // Single/multi selections store ranges for binned fields, and enumerations otherwise.\n                    let type = 'E';\n                    if (selCmpt.type === 'interval') {\n                        const scaleType = model.getScaleComponent(channel).get('type');\n                        if (Object(_scale__WEBPACK_IMPORTED_MODULE_3__[\"hasContinuousDomain\"])(scaleType)) {\n                            type = 'R';\n                        }\n                    }\n                    else if (fieldDef.bin) {\n                        type = 'R-RE';\n                    }\n                    const p = { field, channel, type };\n                    p.signals = Object.assign(Object.assign({}, signalName(p, 'data')), signalName(p, 'visual'));\n                    proj.items.push((parsed[field] = p));\n                    proj.hasField[field] = proj.hasChannel[channel] = parsed[field];\n                }\n            }\n            else {\n                _log__WEBPACK_IMPORTED_MODULE_2__[\"warn\"](_log__WEBPACK_IMPORTED_MODULE_2__[\"message\"].cannotProjectOnChannelWithoutField(channel));\n            }\n        }\n        if (selDef.init) {\n            const parseInit = (i) => {\n                return proj.items.map(p => (i[p.channel] !== undefined ? i[p.channel] : i[p.field]));\n            };\n            if (selDef.type === 'interval') {\n                selCmpt.init = parseInit(selDef.init);\n            }\n            else {\n                const init = Object(vega_util__WEBPACK_IMPORTED_MODULE_0__[\"array\"])(selDef.init);\n                selCmpt.init = init.map(parseInit);\n            }\n        }\n        if (!Object(_util__WEBPACK_IMPORTED_MODULE_4__[\"isEmpty\"])(timeUnits)) {\n            proj.timeUnit = new _data_timeunit__WEBPACK_IMPORTED_MODULE_5__[\"TimeUnitNode\"](null, timeUnits);\n        }\n    },\n    signals: (model, selCmpt, allSignals) => {\n        const name = selCmpt.name + TUPLE_FIELDS;\n        const hasSignal = allSignals.filter(s => s.name === name);\n        return hasSignal.length > 0\n            ? allSignals\n            : allSignals.concat({\n                name,\n                value: selCmpt.project.items.map(proj => {\n                    const { signals, hasLegend } = proj, rest = __rest(proj, [\"signals\", \"hasLegend\"]);\n                    rest.field = Object(_util__WEBPACK_IMPORTED_MODULE_4__[\"replacePathInField\"])(rest.field);\n                    return rest;\n                })\n            });\n    }\n};\n/* harmony default export */ __webpack_exports__[\"default\"] = (project);\n//# sourceMappingURL=project.js.map//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,[encoded data, 11500 characters]\n//# sourceURL=webpack-internal:///./node_modules/vega-lite/build/src/compile/selection/transforms/project.js\n");

/***/ }),

/***/ "./node_modules/vega-lite/build/src/compile/selection/transforms/scales.js":
/*!*********************************************************************************!*\
  !*** ./node_modules/vega-lite/build/src/compile/selection/transforms/scales.js ***!
  \*********************************************************************************/
/*! exports provided: default, domain */
/***/ (function(module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"domain\", function() { return domain; });\n/* harmony import */ var vega_util__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! vega-util */ \"./node_modules/vega-lite/node_modules/vega-util/build/vega-util.module.js\");\n/* harmony import */ var ___WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! .. */ \"./node_modules/vega-lite/build/src/compile/selection/index.js\");\n/* harmony import */ var _channel__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ../../../channel */ \"./node_modules/vega-lite/build/src/channel.js\");\n/* harmony import */ var _log__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ../../../log */ \"./node_modules/vega-lite/build/src/log/index.js\");\n/* harmony import */ var _scale__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ../../../scale */ \"./node_modules/vega-lite/build/src/scale.js\");\n/* harmony import */ var _model__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! ../../model */ \"./node_modules/vega-lite/build/src/compile/model.js\");\n\n\n\n\n\n\nconst scaleBindings = {\n    has: selCmpt => {\n        return selCmpt.type === 'interval' && selCmpt.resolve === 'global' && selCmpt.bind && selCmpt.bind === 'scales';\n    },\n    parse: (model, selCmpt) => {\n        const bound = (selCmpt.scales = []);\n        for (const proj of selCmpt.project.items) {\n            const channel = proj.channel;\n            if (!Object(_channel__WEBPACK_IMPORTED_MODULE_2__[\"isScaleChannel\"])(channel)) {\n                continue;\n            }\n            const scale = model.getScaleComponent(channel);\n            const scaleType = scale ? scale.get('type') : undefined;\n            if (!scale || !Object(_scale__WEBPACK_IMPORTED_MODULE_4__[\"hasContinuousDomain\"])(scaleType)) {\n                _log__WEBPACK_IMPORTED_MODULE_3__[\"warn\"](_log__WEBPACK_IMPORTED_MODULE_3__[\"message\"].SCALE_BINDINGS_CONTINUOUS);\n                continue;\n            }\n            const extent = { selection: selCmpt.name, field: proj.field };\n            scale.set('selectionExtent', extent, true);\n            bound.push(proj);\n        }\n    },\n    topLevelSignals: (model, selCmpt, signals) => {\n        const bound = selCmpt.scales.filter(proj => signals.filter(s => s.name === proj.signals.data).length === 0);\n        // Top-level signals are only needed for multiview displays and if this\n        // view's top-level signals haven't already been generated.\n        if (!model.parent || isTopLevelLayer(model) || bound.length === 0) {\n            return signals;\n        }\n        // vlSelectionResolve does not account for the behavior of bound scales in\n        // multiview displays. Each unit view adds a tuple to the store, but the\n        // state of the selection is the unit selection most recently updated. This\n        // state is captured by the top-level signals that we insert and \"push\n        // outer\" to from within the units. We need to reassemble this state into\n        // the top-level named signal, except no single selCmpt has a global view.\n        const namedSg = signals.filter(s => s.name === selCmpt.name)[0];\n        let update = namedSg.update;\n        if (update.indexOf(___WEBPACK_IMPORTED_MODULE_1__[\"VL_SELECTION_RESOLVE\"]) >= 0) {\n            namedSg.update = `{${bound.map(proj => `${Object(vega_util__WEBPACK_IMPORTED_MODULE_0__[\"stringValue\"])(proj.field)}: ${proj.signals.data}`).join(', ')}}`;\n        }\n        else {\n            for (const proj of bound) {\n                const mapping = `${Object(vega_util__WEBPACK_IMPORTED_MODULE_0__[\"stringValue\"])(proj.field)}: ${proj.signals.data}`;\n                if (update.indexOf(mapping) < 0) {\n                    update = `${update.substring(0, update.length - 1)}, ${mapping}}`;\n                }\n            }\n            namedSg.update = update;\n        }\n        return signals.concat(bound.map(proj => ({ name: proj.signals.data })));\n    },\n    signals: (model, selCmpt, signals) => {\n        // Nested signals need only push to top-level signals with multiview displays.\n        if (model.parent && !isTopLevelLayer(model)) {\n            for (const proj of selCmpt.scales) {\n                const signal = signals.filter(s => s.name === proj.signals.data)[0];\n                signal.push = 'outer';\n                delete signal.value;\n                delete signal.update;\n            }\n        }\n        return signals;\n    }\n};\n/* harmony default export */ __webpack_exports__[\"default\"] = (scaleBindings);\nfunction domain(model, channel) {\n    const scale = Object(vega_util__WEBPACK_IMPORTED_MODULE_0__[\"stringValue\"])(model.scaleName(channel));\n    return `domain(${scale})`;\n}\nfunction isTopLevelLayer(model) {\n    var _a;\n    return model.parent && Object(_model__WEBPACK_IMPORTED_MODULE_5__[\"isLayerModel\"])(model.parent) && ((_a = !model.parent.parent) !== null && _a !== void 0 ? _a : isTopLevelLayer(model.parent.parent));\n}\n//# sourceMappingURL=scales.js.map//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,[encoded data, 6004 characters]\n//# sourceURL=webpack-internal:///./node_modules/vega-lite/build/src/compile/selection/transforms/scales.js\n");

/***/ }),

/***/ "./node_modules/vega-lite/build/src/compile/selection/transforms/toggle.js":
/*!*********************************************************************************!*\
  !*** ./node_modules/vega-lite/build/src/compile/selection/transforms/toggle.js ***!
  \*********************************************************************************/
/*! exports provided: TOGGLE, default */
/***/ (function(module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"TOGGLE\", function() { return TOGGLE; });\n/* harmony import */ var ___WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! .. */ \"./node_modules/vega-lite/build/src/compile/selection/index.js\");\n\nconst TOGGLE = '_toggle';\nconst toggle = {\n    has: selCmpt => {\n        return selCmpt.type === 'multi' && !!selCmpt.toggle;\n    },\n    signals: (model, selCmpt, signals) => {\n        return signals.concat({\n            name: selCmpt.name + TOGGLE,\n            value: false,\n            on: [{ events: selCmpt.events, update: selCmpt.toggle }]\n        });\n    },\n    modifyExpr: (model, selCmpt) => {\n        const tpl = selCmpt.name + ___WEBPACK_IMPORTED_MODULE_0__[\"TUPLE\"];\n        const signal = selCmpt.name + TOGGLE;\n        return (`${signal} ? null : ${tpl}, ` +\n            (selCmpt.resolve === 'global' ? `${signal} ? null : true, ` : `${signal} ? null : {unit: ${Object(___WEBPACK_IMPORTED_MODULE_0__[\"unitName\"])(model)}}, `) +\n            `${signal} ? ${tpl} : null`);\n    }\n};\n/* harmony default export */ __webpack_exports__[\"default\"] = (toggle);\n//# sourceMappingURL=toggle.js.map//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvdmVnYS1saXRlL2J1aWxkL3NyYy9jb21waWxlL3NlbGVjdGlvbi90cmFuc2Zvcm1zL3RvZ2dsZS5qcy5qcyIsInNvdXJjZXMiOlsid2VicGFjazovLy8uL25vZGVfbW9kdWxlcy92ZWdhLWxpdGUvYnVpbGQvc3JjL2NvbXBpbGUvc2VsZWN0aW9uL3RyYW5zZm9ybXMvdG9nZ2xlLmpzPzY5ZTgiXSwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgVFVQTEUsIHVuaXROYW1lIH0gZnJvbSAnLi4nO1xuZXhwb3J0IGNvbnN0IFRPR0dMRSA9ICdfdG9nZ2xlJztcbmNvbnN0IHRvZ2dsZSA9IHtcbiAgICBoYXM6IHNlbENtcHQgPT4ge1xuICAgICAgICByZXR1cm4gc2VsQ21wdC50eXBlID09PSAnbXVsdGknICYmICEhc2VsQ21wdC50b2dnbGU7XG4gICAgfSxcbiAgICBzaWduYWxzOiAobW9kZWwsIHNlbENtcHQsIHNpZ25hbHMpID0+IHtcbiAgICAgICAgcmV0dXJuIHNpZ25hbHMuY29uY2F0KHtcbiAgICAgICAgICAgIG5hbWU6IHNlbENtcHQubmFtZSArIFRPR0dMRSxcbiAgICAgICAgICAgIHZhbHVlOiBmYWxzZSxcbiAgICAgICAgICAgIG9uOiBbeyBldmVudHM6IHNlbENtcHQuZXZlbnRzLCB1cGRhdGU6IHNlbENtcHQudG9nZ2xlIH1dXG4gICAgICAgIH0pO1xuICAgIH0sXG4gICAgbW9kaWZ5RXhwcjogKG1vZGVsLCBzZWxDbXB0KSA9PiB7XG4gICAgICAgIGNvbnN0IHRwbCA9IHNlbENtcHQubmFtZSArIFRVUExFO1xuICAgICAgICBjb25zdCBzaWduYWwgPSBzZWxDbXB0Lm5hbWUgKyBUT0dHTEU7XG4gICAgICAgIHJldHVybiAoYCR7c2lnbmFsfSA/IG51bGwgOiAke3RwbH0sIGAgK1xuICAgICAgICAgICAgKHNlbENtcHQucmVzb2x2ZSA9PT0gJ2dsb2JhbCcgPyBgJHtzaWduYWx9ID8gbnVsbCA6IHRydWUsIGAgOiBgJHtzaWduYWx9ID8gbnVsbCA6IHt1bml0OiAke3VuaXROYW1lKG1vZGVsKX19LCBgKSArXG4gICAgICAgICAgICBgJHtzaWduYWx9ID8gJHt0cGx9IDogbnVsbGApO1xuICAgIH1cbn07XG5leHBvcnQgZGVmYXVsdCB0b2dnbGU7XG4vLyMgc291cmNlTWFwcGluZ1VSTD10b2dnbGUuanMubWFwIl0sIm1hcHBpbmdzIjoiQUFBQTtBQUFBO0FBQUE7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBIiwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///./node_modules/vega-lite/build/src/compile/selection/transforms/toggle.js\n");

/***/ }),

/***/ "./node_modules/vega-lite/build/src/compile/selection/transforms/transforms.js":
/*!*************************************************************************************!*\
  !*** ./node_modules/vega-lite/build/src/compile/selection/transforms/transforms.js ***!
  \*************************************************************************************/
/*! exports provided: forEachTransform */
/***/ (function(module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"forEachTransform\", function() { return forEachTransform; });\n/* harmony import */ var _clear__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./clear */ \"./node_modules/vega-lite/build/src/compile/selection/transforms/clear.js\");\n/* harmony import */ var _inputs__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./inputs */ \"./node_modules/vega-lite/build/src/compile/selection/transforms/inputs.js\");\n/* harmony import */ var _nearest__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./nearest */ \"./node_modules/vega-lite/build/src/compile/selection/transforms/nearest.js\");\n/* harmony import */ var _project__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ./project */ \"./node_modules/vega-lite/build/src/compile/selection/transforms/project.js\");\n/* harmony import */ var _scales__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ./scales */ \"./node_modules/vega-lite/build/src/compile/selection/transforms/scales.js\");\n/* harmony import */ var _legends__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! ./legends */ \"./node_modules/vega-lite/build/src/compile/selection/transforms/legends.js\");\n/* harmony import */ var _toggle__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! ./toggle */ \"./node_modules/vega-lite/build/src/compile/selection/transforms/toggle.js\");\n/* harmony import */ var _translate__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! ./translate */ \"./node_modules/vega-lite/build/src/compile/selection/transforms/translate.js\");\n/* harmony import */ var _zoom__WEBPACK_IMPORTED_MODULE_8__ = __webpack_require__(/*! ./zoom */ \"./node_modules/vega-lite/build/src/compile/selection/transforms/zoom.js\");\n\n\n\n\n\n\n\n\n\nconst compilers = [_project__WEBPACK_IMPORTED_MODULE_3__[\"default\"], _toggle__WEBPACK_IMPORTED_MODULE_6__[\"default\"], _scales__WEBPACK_IMPORTED_MODULE_4__[\"default\"], _legends__WEBPACK_IMPORTED_MODULE_5__[\"default\"], _translate__WEBPACK_IMPORTED_MODULE_7__[\"default\"], _zoom__WEBPACK_IMPORTED_MODULE_8__[\"default\"], _inputs__WEBPACK_IMPORTED_MODULE_1__[\"default\"], _nearest__WEBPACK_IMPORTED_MODULE_2__[\"default\"], _clear__WEBPACK_IMPORTED_MODULE_0__[\"default\"]];\nfunction forEachTransform(selCmpt, cb) {\n    for (const t of compilers) {\n        if (t.has(selCmpt)) {\n            cb(t);\n        }\n    }\n}\n//# sourceMappingURL=transforms.js.map//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvdmVnYS1saXRlL2J1aWxkL3NyYy9jb21waWxlL3NlbGVjdGlvbi90cmFuc2Zvcm1zL3RyYW5zZm9ybXMuanMuanMiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvdmVnYS1saXRlL2J1aWxkL3NyYy9jb21waWxlL3NlbGVjdGlvbi90cmFuc2Zvcm1zL3RyYW5zZm9ybXMuanM/ZmIyYyJdLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgY2xlYXIgZnJvbSAnLi9jbGVhcic7XG5pbXBvcnQgaW5wdXRzIGZyb20gJy4vaW5wdXRzJztcbmltcG9ydCBuZWFyZXN0IGZyb20gJy4vbmVhcmVzdCc7XG5pbXBvcnQgcHJvamVjdCBmcm9tICcuL3Byb2plY3QnO1xuaW1wb3J0IHNjYWxlcyBmcm9tICcuL3NjYWxlcyc7XG5pbXBvcnQgbGVnZW5kcyBmcm9tICcuL2xlZ2VuZHMnO1xuaW1wb3J0IHRvZ2dsZSBmcm9tICcuL3RvZ2dsZSc7XG5pbXBvcnQgdHJhbnNsYXRlIGZyb20gJy4vdHJhbnNsYXRlJztcbmltcG9ydCB6b29tIGZyb20gJy4vem9vbSc7XG5jb25zdCBjb21waWxlcnMgPSBbcHJvamVjdCwgdG9nZ2xlLCBzY2FsZXMsIGxlZ2VuZHMsIHRyYW5zbGF0ZSwgem9vbSwgaW5wdXRzLCBuZWFyZXN0LCBjbGVhcl07XG5leHBvcnQgZnVuY3Rpb24gZm9yRWFjaFRyYW5zZm9ybShzZWxDbXB0LCBjYikge1xuICAgIGZvciAoY29uc3QgdCBvZiBjb21waWxlcnMpIHtcbiAgICAgICAgaWYgKHQuaGFzKHNlbENtcHQpKSB7XG4gICAgICAgICAgICBjYih0KTtcbiAgICAgICAgfVxuICAgIH1cbn1cbi8vIyBzb3VyY2VNYXBwaW5nVVJMPXRyYW5zZm9ybXMuanMubWFwIl0sIm1hcHBpbmdzIjoiQUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBIiwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///./node_modules/vega-lite/build/src/compile/selection/transforms/transforms.js\n");

/***/ }),

/***/ "./node_modules/vega-lite/build/src/compile/selection/transforms/translate.js":
/*!************************************************************************************!*\
  !*** ./node_modules/vega-lite/build/src/compile/selection/transforms/translate.js ***!
  \************************************************************************************/
/*! exports provided: default */
/***/ (function(module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var vega_event_selector__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! vega-event-selector */ \"./node_modules/vega-event-selector/build/vega-event-selector.module.js\");\n/* harmony import */ var _channel__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../../../channel */ \"./node_modules/vega-lite/build/src/channel.js\");\n/* harmony import */ var _interval__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ../interval */ \"./node_modules/vega-lite/build/src/compile/selection/interval.js\");\n/* harmony import */ var _scales__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ./scales */ \"./node_modules/vega-lite/build/src/compile/selection/transforms/scales.js\");\n\n\n\n\nconst ANCHOR = '_translate_anchor';\nconst DELTA = '_translate_delta';\nconst translate = {\n    has: selCmpt => {\n        return selCmpt.type === 'interval' && selCmpt.translate;\n    },\n    signals: (model, selCmpt, signals) => {\n        const name = selCmpt.name;\n        const hasScales = _scales__WEBPACK_IMPORTED_MODULE_3__[\"default\"].has(selCmpt);\n        const anchor = name + ANCHOR;\n        const { x, y } = selCmpt.project.hasChannel;\n        let events = Object(vega_event_selector__WEBPACK_IMPORTED_MODULE_0__[\"selector\"])(selCmpt.translate, 'scope');\n        if (!hasScales) {\n            events = events.map(e => ((e.between[0].markname = name + _interval__WEBPACK_IMPORTED_MODULE_2__[\"BRUSH\"]), e));\n        }\n        signals.push({\n            name: anchor,\n            value: {},\n            on: [\n                {\n                    events: events.map(e => e.between[0]),\n                    update: '{x: x(unit), y: y(unit)' +\n                        (x !== undefined ? ', extent_x: ' + (hasScales ? Object(_scales__WEBPACK_IMPORTED_MODULE_3__[\"domain\"])(model, _channel__WEBPACK_IMPORTED_MODULE_1__[\"X\"]) : `slice(${x.signals.visual})`) : '') +\n                        (y !== undefined ? ', extent_y: ' + (hasScales ? Object(_scales__WEBPACK_IMPORTED_MODULE_3__[\"domain\"])(model, _channel__WEBPACK_IMPORTED_MODULE_1__[\"Y\"]) : `slice(${y.signals.visual})`) : '') +\n                        '}'\n                }\n            ]\n        }, {\n            name: name + DELTA,\n            value: {},\n            on: [\n                {\n                    events: events,\n                    update: `{x: ${anchor}.x - x(unit), y: ${anchor}.y - y(unit)}`\n                }\n            ]\n        });\n        if (x !== undefined) {\n            onDelta(model, selCmpt, x, 'width', signals);\n        }\n        if (y !== undefined) {\n            onDelta(model, selCmpt, y, 'height', signals);\n        }\n        return signals;\n    }\n};\n/* harmony default export */ __webpack_exports__[\"default\"] = (translate);\nfunction onDelta(model, selCmpt, proj, size, signals) {\n    var _a;\n    const name = selCmpt.name;\n    const anchor = name + ANCHOR;\n    const delta = name + DELTA;\n    const channel = proj.channel;\n    const hasScales = _scales__WEBPACK_IMPORTED_MODULE_3__[\"default\"].has(selCmpt);\n    const signal = signals.filter(s => s.name === proj.signals[hasScales ? 'data' : 'visual'])[0];\n    const sizeSg = model.getSizeSignalRef(size).signal;\n    const scaleCmpt = model.getScaleComponent(channel);\n    const scaleType = scaleCmpt.get('type');\n    const sign = hasScales && channel === _channel__WEBPACK_IMPORTED_MODULE_1__[\"X\"] ? '-' : ''; // Invert delta when panning x-scales.\n    const extent = `${anchor}.extent_${channel}`;\n    const offset = `${sign}${delta}.${channel} / ` + (hasScales ? `${sizeSg}` : `span(${extent})`);\n    const panFn = !hasScales\n        ? 'panLinear'\n        : scaleType === 'log'\n            ? 'panLog'\n            : scaleType === 'pow'\n                ? 'panPow'\n                : 'panLinear';\n    const update = `${panFn}(${extent}, ${offset}` +\n        (hasScales && scaleType === 'pow' ? `, ${(_a = scaleCmpt.get('exponent')) !== null && _a !== void 0 ? _a : 1}` : '') +\n        ')';\n    signal.on.push({\n        events: { signal: delta },\n        update: hasScales ? update : `clampRange(${update}, 0, ${sizeSg})`\n    });\n}\n//# sourceMappingURL=translate.js.map//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,[encoded data, 5292 characters]\n//# sourceURL=webpack-internal:///./node_modules/vega-lite/build/src/compile/selection/transforms/translate.js\n");

/***/ }),

/***/ "./node_modules/vega-lite/build/src/compile/selection/transforms/zoom.js":
/*!*******************************************************************************!*\
  !*** ./node_modules/vega-lite/build/src/compile/selection/transforms/zoom.js ***!
  \*******************************************************************************/
/*! exports provided: default */
/***/ (function(module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var vega_event_selector__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! vega-event-selector */ \"./node_modules/vega-event-selector/build/vega-event-selector.module.js\");\n/* harmony import */ var vega_util__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! vega-util */ \"./node_modules/vega-lite/node_modules/vega-util/build/vega-util.module.js\");\n/* harmony import */ var _channel__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ../../../channel */ \"./node_modules/vega-lite/build/src/channel.js\");\n/* harmony import */ var _interval__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ../interval */ \"./node_modules/vega-lite/build/src/compile/selection/interval.js\");\n/* harmony import */ var _scales__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ./scales */ \"./node_modules/vega-lite/build/src/compile/selection/transforms/scales.js\");\n\n\n\n\n\nconst ANCHOR = '_zoom_anchor';\nconst DELTA = '_zoom_delta';\nconst zoom = {\n    has: selCmpt => {\n        return selCmpt.type === 'interval' && selCmpt.zoom;\n    },\n    signals: (model, selCmpt, signals) => {\n        const name = selCmpt.name;\n        const hasScales = _scales__WEBPACK_IMPORTED_MODULE_4__[\"default\"].has(selCmpt);\n        const delta = name + DELTA;\n        const { x, y } = selCmpt.project.hasChannel;\n        const sx = Object(vega_util__WEBPACK_IMPORTED_MODULE_1__[\"stringValue\"])(model.scaleName(_channel__WEBPACK_IMPORTED_MODULE_2__[\"X\"]));\n        const sy = Object(vega_util__WEBPACK_IMPORTED_MODULE_1__[\"stringValue\"])(model.scaleName(_channel__WEBPACK_IMPORTED_MODULE_2__[\"Y\"]));\n        let events = Object(vega_event_selector__WEBPACK_IMPORTED_MODULE_0__[\"selector\"])(selCmpt.zoom, 'scope');\n        if (!hasScales) {\n            events = events.map(e => ((e.markname = name + _interval__WEBPACK_IMPORTED_MODULE_3__[\"BRUSH\"]), e));\n        }\n        signals.push({\n            name: name + ANCHOR,\n            on: [\n                {\n                    events: events,\n                    update: !hasScales\n                        ? `{x: x(unit), y: y(unit)}`\n                        : '{' +\n                            [sx ? `x: invert(${sx}, x(unit))` : '', sy ? `y: invert(${sy}, y(unit))` : '']\n                                .filter(expr => !!expr)\n                                .join(', ') +\n                            '}'\n                }\n            ]\n        }, {\n            name: delta,\n            on: [\n                {\n                    events: events,\n                    force: true,\n                    update: 'pow(1.001, event.deltaY * pow(16, event.deltaMode))'\n                }\n            ]\n        });\n        if (x !== undefined) {\n            onDelta(model, selCmpt, x, 'width', signals);\n        }\n        if (y !== undefined) {\n            onDelta(model, selCmpt, y, 'height', signals);\n        }\n        return signals;\n    }\n};\n/* harmony default export */ __webpack_exports__[\"default\"] = (zoom);\nfunction onDelta(model, selCmpt, proj, size, signals) {\n    var _a;\n    const name = selCmpt.name;\n    const channel = proj.channel;\n    const hasScales = _scales__WEBPACK_IMPORTED_MODULE_4__[\"default\"].has(selCmpt);\n    const signal = signals.filter(s => s.name === proj.signals[hasScales ? 'data' : 'visual'])[0];\n    const sizeSg = model.getSizeSignalRef(size).signal;\n    const scaleCmpt = model.getScaleComponent(channel);\n    const scaleType = scaleCmpt.get('type');\n    const base = hasScales ? Object(_scales__WEBPACK_IMPORTED_MODULE_4__[\"domain\"])(model, channel) : signal.name;\n    const delta = name + DELTA;\n    const anchor = `${name}${ANCHOR}.${channel}`;\n    const zoomFn = !hasScales\n        ? 'zoomLinear'\n        : scaleType === 'log'\n            ? 'zoomLog'\n            : scaleType === 'pow'\n                ? 'zoomPow'\n                : 'zoomLinear';\n    const update = `${zoomFn}(${base}, ${anchor}, ${delta}` +\n        (hasScales && scaleType === 'pow' ? `, ${(_a = scaleCmpt.get('exponent')) !== null && _a !== void 0 ? _a : 1}` : '') +\n        ')';\n    signal.on.push({\n        events: { signal: delta },\n        update: hasScales ? update : `clampRange(${update}, 0, ${sizeSg})`\n    });\n}\n//# sourceMappingURL=zoom.js.map//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,[encoded data, 5236 characters]\n//# sourceURL=webpack-internal:///./node_modules/vega-lite/build/src/compile/selection/transforms/zoom.js\n");

/***/ }),

/***/ "./node_modules/vega-lite/build/src/compile/signal.js":
/*!************************************************************!*\
  !*** ./node_modules/vega-lite/build/src/compile/signal.js ***!
  \************************************************************/
/*! exports provided: SignalRefWrapper */
/***/ (function(module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"SignalRefWrapper\", function() { return SignalRefWrapper; });\n/**\n * A class that behaves like a SignalRef but lazily generates the signal.\n * The provided generator function should use `Model.getSignalName` to use the correct signal name.\n */\nclass SignalRefWrapper {\n    constructor(exprGenerator) {\n        Object.defineProperty(this, 'signal', {\n            enumerable: true,\n            get: exprGenerator\n        });\n    }\n    static fromName(rename, signalName) {\n        return new SignalRefWrapper(() => rename(signalName));\n    }\n}\n//# sourceMappingURL=signal.js.map//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvdmVnYS1saXRlL2J1aWxkL3NyYy9jb21waWxlL3NpZ25hbC5qcy5qcyIsInNvdXJjZXMiOlsid2VicGFjazovLy8uL25vZGVfbW9kdWxlcy92ZWdhLWxpdGUvYnVpbGQvc3JjL2NvbXBpbGUvc2lnbmFsLmpzP2U3MzMiXSwic291cmNlc0NvbnRlbnQiOlsiLyoqXG4gKiBBIGNsYXNzIHRoYXQgYmVoYXZlcyBsaWtlIGEgU2lnbmFsUmVmIGJ1dCBsYXppbHkgZ2VuZXJhdGVzIHRoZSBzaWduYWwuXG4gKiBUaGUgcHJvdmlkZWQgZ2VuZXJhdG9yIGZ1bmN0aW9uIHNob3VsZCB1c2UgYE1vZGVsLmdldFNpZ25hbE5hbWVgIHRvIHVzZSB0aGUgY29ycmVjdCBzaWduYWwgbmFtZS5cbiAqL1xuZXhwb3J0IGNsYXNzIFNpZ25hbFJlZldyYXBwZXIge1xuICAgIGNvbnN0cnVjdG9yKGV4cHJHZW5lcmF0b3IpIHtcbiAgICAgICAgT2JqZWN0LmRlZmluZVByb3BlcnR5KHRoaXMsICdzaWduYWwnLCB7XG4gICAgICAgICAgICBlbnVtZXJhYmxlOiB0cnVlLFxuICAgICAgICAgICAgZ2V0OiBleHByR2VuZXJhdG9yXG4gICAgICAgIH0pO1xuICAgIH1cbiAgICBzdGF0aWMgZnJvbU5hbWUocmVuYW1lLCBzaWduYWxOYW1lKSB7XG4gICAgICAgIHJldHVybiBuZXcgU2lnbmFsUmVmV3JhcHBlcigoKSA9PiByZW5hbWUoc2lnbmFsTmFtZSkpO1xuICAgIH1cbn1cbi8vIyBzb3VyY2VNYXBwaW5nVVJMPXNpZ25hbC5qcy5tYXAiXSwibWFwcGluZ3MiOiJBQUFBO0FBQUE7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSIsInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///./node_modules/vega-lite/build/src/compile/signal.js\n");

/***/ }),

/***/ "./node_modules/vega-lite/build/src/compile/split.js":
/*!***********************************************************!*\
  !*** ./node_modules/vega-lite/build/src/compile/split.js ***!
  \***********************************************************/
/*! exports provided: Split, makeExplicit, makeImplicit, tieBreakByComparing, defaultTieBreaker, mergeValuesWithExplicit */
/***/ (function(module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"Split\", function() { return Split; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"makeExplicit\", function() { return makeExplicit; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"makeImplicit\", function() { return makeImplicit; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"tieBreakByComparing\", function() { return tieBreakByComparing; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"defaultTieBreaker\", function() { return defaultTieBreaker; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"mergeValuesWithExplicit\", function() { return mergeValuesWithExplicit; });\n/* harmony import */ var _log__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../log */ \"./node_modules/vega-lite/build/src/log/index.js\");\n/* harmony import */ var _util__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../util */ \"./node_modules/vega-lite/build/src/util.js\");\n\n\n/**\n * Generic class for storing properties that are explicitly specified\n * and implicitly determined by the compiler.\n * This is important for scale/axis/legend merging as\n * we want to prioritize properties that users explicitly specified.\n */\n// eslint-disable-next-line @typescript-eslint/ban-types\nclass Split {\n    constructor(explicit = {}, implicit = {}) {\n        this.explicit = explicit;\n        this.implicit = implicit;\n    }\n    clone() {\n        return new Split(Object(_util__WEBPACK_IMPORTED_MODULE_1__[\"duplicate\"])(this.explicit), Object(_util__WEBPACK_IMPORTED_MODULE_1__[\"duplicate\"])(this.implicit));\n    }\n    combine() {\n        // FIXME remove \"as any\".\n        // Add \"as any\" to avoid an error \"Spread types may only be created from object types\".\n        return Object.assign(Object.assign({}, this.explicit), this.implicit);\n    }\n    get(key) {\n        // Explicit has higher precedence\n        return Object(_util__WEBPACK_IMPORTED_MODULE_1__[\"getFirstDefined\"])(this.explicit[key], this.implicit[key]);\n    }\n    getWithExplicit(key) {\n        // Explicit has higher precedence\n        if (this.explicit[key] !== undefined) {\n            return { explicit: true, value: this.explicit[key] };\n        }\n        else if (this.implicit[key] !== undefined) {\n            return { explicit: false, value: this.implicit[key] };\n        }\n        return { explicit: false, value: undefined };\n    }\n    setWithExplicit(key, value) {\n        if (value.value !== undefined) {\n            this.set(key, value.value, value.explicit);\n        }\n    }\n    set(key, value, explicit) {\n        delete this[explicit ? 'implicit' : 'explicit'][key];\n        this[explicit ? 'explicit' : 'implicit'][key] = value;\n        return this;\n    }\n    copyKeyFromSplit(key, s) {\n        // Explicit has higher precedence\n        if (s.explicit[key] !== undefined) {\n            this.set(key, s.explicit[key], true);\n        }\n        else if (s.implicit[key] !== undefined) {\n            this.set(key, s.implicit[key], false);\n        }\n    }\n    copyKeyFromObject(key, s) {\n        // Explicit has higher precedence\n        if (s[key] !== undefined) {\n            this.set(key, s[key], true);\n        }\n    }\n    /**\n     * Merge split object into this split object. Properties from the other split\n     * overwrite properties from this split.\n     */\n    copyAll(other) {\n        for (const key of Object(_util__WEBPACK_IMPORTED_MODULE_1__[\"keys\"])(other.combine())) {\n            const val = other.getWithExplicit(key);\n            this.setWithExplicit(key, val);\n        }\n    }\n}\nfunction makeExplicit(value) {\n    return {\n        explicit: true,\n        value\n    };\n}\nfunction makeImplicit(value) {\n    return {\n        explicit: false,\n        value\n    };\n}\nfunction tieBreakByComparing(compare) {\n    return (v1, v2, property, propertyOf) => {\n        const diff = compare(v1.value, v2.value);\n        if (diff > 0) {\n            return v1;\n        }\n        else if (diff < 0) {\n            return v2;\n        }\n        return defaultTieBreaker(v1, v2, property, propertyOf);\n    };\n}\nfunction defaultTieBreaker(v1, v2, property, propertyOf) {\n    if (v1.explicit && v2.explicit) {\n        _log__WEBPACK_IMPORTED_MODULE_0__[\"warn\"](_log__WEBPACK_IMPORTED_MODULE_0__[\"message\"].mergeConflictingProperty(property, propertyOf, v1.value, v2.value));\n    }\n    // If equal score, prefer v1.\n    return v1;\n}\nfunction mergeValuesWithExplicit(v1, v2, property, propertyOf, tieBreaker = defaultTieBreaker) {\n    if (v1 === undefined || v1.value === undefined) {\n        // For first run\n        return v2;\n    }\n    if (v1.explicit && !v2.explicit) {\n        return v1;\n    }\n    else if (v2.explicit && !v1.explicit) {\n        return v2;\n    }\n    else if (Object(_util__WEBPACK_IMPORTED_MODULE_1__[\"deepEqual\"])(v1.value, v2.value)) {\n        return v1;\n    }\n    else {\n        return tieBreaker(v1, v2, property, propertyOf);\n    }\n}\n//# sourceMappingURL=split.js.map//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,[encoded data, 6432 characters]\n//# sourceURL=webpack-internal:///./node_modules/vega-lite/build/src/compile/split.js\n");

/***/ }),

/***/ "./node_modules/vega-lite/build/src/compile/unit.js":
/*!**********************************************************!*\
  !*** ./node_modules/vega-lite/build/src/compile/unit.js ***!
  \**********************************************************/
/*! exports provided: UnitModel */
/***/ (function(module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"UnitModel\", function() { return UnitModel; });\n/* harmony import */ var vega_util__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! vega-util */ \"./node_modules/vega-lite/node_modules/vega-util/build/vega-util.module.js\");\n/* harmony import */ var _axis__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../axis */ \"./node_modules/vega-lite/build/src/axis.js\");\n/* harmony import */ var _channel__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ../channel */ \"./node_modules/vega-lite/build/src/channel.js\");\n/* harmony import */ var _channeldef__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ../channeldef */ \"./node_modules/vega-lite/build/src/channeldef.js\");\n/* harmony import */ var _data__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ../data */ \"./node_modules/vega-lite/build/src/data.js\");\n/* harmony import */ var _encoding__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! ../encoding */ \"./node_modules/vega-lite/build/src/encoding.js\");\n/* harmony import */ var _expr__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! ../expr */ \"./node_modules/vega-lite/build/src/expr.js\");\n/* harmony import */ var _mark__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! ../mark */ \"./node_modules/vega-lite/build/src/mark.js\");\n/* harmony import */ var _spec_base__WEBPACK_IMPORTED_MODULE_8__ = __webpack_require__(/*! ../spec/base */ \"./node_modules/vega-lite/build/src/spec/base.js\");\n/* harmony import */ var _stack__WEBPACK_IMPORTED_MODULE_9__ = __webpack_require__(/*! ../stack */ \"./node_modules/vega-lite/build/src/stack.js\");\n/* harmony import */ var _util__WEBPACK_IMPORTED_MODULE_10__ = __webpack_require__(/*! ../util */ \"./node_modules/vega-lite/build/src/util.js\");\n/* harmony import */ var _axis_assemble__WEBPACK_IMPORTED_MODULE_11__ = __webpack_require__(/*! ./axis/assemble */ \"./node_modules/vega-lite/build/src/compile/axis/assemble.js\");\n/* harmony import */ var _axis_parse__WEBPACK_IMPORTED_MODULE_12__ = __webpack_require__(/*! ./axis/parse */ \"./node_modules/vega-lite/build/src/compile/axis/parse.js\");\n/* harmony import */ var _common__WEBPACK_IMPORTED_MODULE_13__ = __webpack_require__(/*! ./common */ \"./node_modules/vega-lite/build/src/compile/common.js\");\n/* harmony import */ var _data_parse__WEBPACK_IMPORTED_MODULE_14__ = __webpack_require__(/*! ./data/parse */ \"./node_modules/vega-lite/build/src/compile/data/parse.js\");\n/* harmony import */ var _layoutsize_assemble__WEBPACK_IMPORTED_MODULE_15__ = __webpack_require__(/*! ./layoutsize/assemble */ \"./node_modules/vega-lite/build/src/compile/layoutsize/assemble.js\");\n/* harmony import */ var _layoutsize_init__WEBPACK_IMPORTED_MODULE_16__ = __webpack_require__(/*! ./layoutsize/init */ \"./node_modules/vega-lite/build/src/compile/layoutsize/init.js\");\n/* harmony import */ var _layoutsize_parse__WEBPACK_IMPORTED_MODULE_17__ = __webpack_require__(/*! ./layoutsize/parse */ \"./node_modules/vega-lite/build/src/compile/layoutsize/parse.js\");\n/* harmony import */ var _mark_init__WEBPACK_IMPORTED_MODULE_18__ = __webpack_require__(/*! ./mark/init */ \"./node_modules/vega-lite/build/src/compile/mark/init.js\");\n/* harmony import */ var _mark_mark__WEBPACK_IMPORTED_MODULE_19__ = __webpack_require__(/*! ./mark/mark */ \"./node_modules/vega-lite/build/src/compile/mark/mark.js\");\n/* harmony import */ var _model__WEBPACK_IMPORTED_MODULE_20__ = __webpack_require__(/*! ./model */ \"./node_modules/vega-lite/build/src/compile/model.js\");\n/* harmony import */ var _selection_assemble__WEBPACK_IMPORTED_MODULE_21__ = __webpack_require__(/*! ./selection/assemble */ \"./node_modules/vega-lite/build/src/compile/selection/assemble.js\");\n/* harmony import */ var _selection_parse__WEBPACK_IMPORTED_MODULE_22__ = __webpack_require__(/*! ./selection/parse */ \"./node_modules/vega-lite/build/src/compile/selection/parse.js\");\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n/**\n * Internal model of Vega-Lite specification for the compiler.\n */\nclass UnitModel extends _model__WEBPACK_IMPORTED_MODULE_20__[\"ModelWithField\"] {\n    constructor(spec, parent, parentGivenName, parentGivenSize = {}, config) {\n        super(spec, 'unit', parent, parentGivenName, config, undefined, Object(_spec_base__WEBPACK_IMPORTED_MODULE_8__[\"isFrameMixins\"])(spec) ? spec.view : undefined);\n        this.specifiedScales = {};\n        this.specifiedAxes = {};\n        this.specifiedLegends = {};\n        this.specifiedProjection = {};\n        this.selection = {};\n        this.children = [];\n        const markDef = Object(_mark__WEBPACK_IMPORTED_MODULE_7__[\"isMarkDef\"])(spec.mark) ? Object.assign({}, spec.mark) : { type: spec.mark };\n        const mark = markDef.type;\n        // Need to init filled before other mark properties because encoding depends on filled but other mark properties depend on types inside encoding\n        if (markDef.filled === undefined) {\n            markDef.filled = Object(_mark_init__WEBPACK_IMPORTED_MODULE_18__[\"defaultFilled\"])(markDef, config, {\n                graticule: spec.data && Object(_data__WEBPACK_IMPORTED_MODULE_4__[\"isGraticuleGenerator\"])(spec.data)\n            });\n        }\n        const encoding = (this.encoding = Object(_encoding__WEBPACK_IMPORTED_MODULE_5__[\"initEncoding\"])(spec.encoding || {}, mark, markDef.filled, config));\n        this.markDef = Object(_mark_init__WEBPACK_IMPORTED_MODULE_18__[\"initMarkdef\"])(markDef, encoding, config);\n        this.size = Object(_layoutsize_init__WEBPACK_IMPORTED_MODULE_16__[\"initLayoutSize\"])({\n            encoding: encoding,\n            size: Object(_spec_base__WEBPACK_IMPORTED_MODULE_8__[\"isFrameMixins\"])(spec)\n                ? Object.assign(Object.assign(Object.assign({}, parentGivenSize), (spec.width ? { width: spec.width } : {})), (spec.height ? { height: spec.height } : {})) : parentGivenSize\n        });\n        // calculate stack properties\n        this.stack = Object(_stack__WEBPACK_IMPORTED_MODULE_9__[\"stack\"])(mark, encoding);\n        this.specifiedScales = this.initScales(mark, encoding);\n        this.specifiedAxes = this.initAxes(encoding);\n        this.specifiedLegends = this.initLegends(encoding);\n        this.specifiedProjection = spec.projection;\n        // Selections will be initialized upon parse.\n        this.selection = spec.selection;\n    }\n    get hasProjection() {\n        const { encoding } = this;\n        const isGeoShapeMark = this.mark === _mark__WEBPACK_IMPORTED_MODULE_7__[\"GEOSHAPE\"];\n        const hasGeoPosition = encoding && _channel__WEBPACK_IMPORTED_MODULE_2__[\"GEOPOSITION_CHANNELS\"].some(channel => Object(_channeldef__WEBPACK_IMPORTED_MODULE_3__[\"isFieldOrDatumDef\"])(encoding[channel]));\n        return isGeoShapeMark || hasGeoPosition;\n    }\n    /**\n     * Return specified Vega-Lite scale domain for a particular channel\n     * @param channel\n     */\n    scaleDomain(channel) {\n        const scale = this.specifiedScales[channel];\n        return scale ? scale.domain : undefined;\n    }\n    axis(channel) {\n        return this.specifiedAxes[channel];\n    }\n    legend(channel) {\n        return this.specifiedLegends[channel];\n    }\n    initScales(mark, encoding) {\n        return _channel__WEBPACK_IMPORTED_MODULE_2__[\"SCALE_CHANNELS\"].reduce((scales, channel) => {\n            var _a;\n            const fieldOrDatumDef = Object(_channeldef__WEBPACK_IMPORTED_MODULE_3__[\"getFieldOrDatumDef\"])(encoding[channel]);\n            if (fieldOrDatumDef) {\n                scales[channel] = this.initScale((_a = fieldOrDatumDef.scale) !== null && _a !== void 0 ? _a : {});\n            }\n            return scales;\n        }, {});\n    }\n    initScale(scale) {\n        const { domain, range } = scale;\n        const scaleInternal = Object(_expr__WEBPACK_IMPORTED_MODULE_6__[\"replaceExprRefInIndex\"])(scale);\n        if (Object(vega_util__WEBPACK_IMPORTED_MODULE_0__[\"isArray\"])(domain)) {\n            scaleInternal.domain = domain.map(_common__WEBPACK_IMPORTED_MODULE_13__[\"signalRefOrValue\"]);\n        }\n        if (Object(vega_util__WEBPACK_IMPORTED_MODULE_0__[\"isArray\"])(range)) {\n            scaleInternal.range = range.map(_common__WEBPACK_IMPORTED_MODULE_13__[\"signalRefOrValue\"]);\n        }\n        return scaleInternal;\n    }\n    initAxes(encoding) {\n        return _channel__WEBPACK_IMPORTED_MODULE_2__[\"POSITION_SCALE_CHANNELS\"].reduce((_axis, channel) => {\n            // Position Axis\n            // TODO: handle ConditionFieldDef\n            const channelDef = encoding[channel];\n            if (Object(_channeldef__WEBPACK_IMPORTED_MODULE_3__[\"isFieldOrDatumDef\"])(channelDef) ||\n                (channel === _channel__WEBPACK_IMPORTED_MODULE_2__[\"X\"] && Object(_channeldef__WEBPACK_IMPORTED_MODULE_3__[\"isFieldOrDatumDef\"])(encoding.x2)) ||\n                (channel === _channel__WEBPACK_IMPORTED_MODULE_2__[\"Y\"] && Object(_channeldef__WEBPACK_IMPORTED_MODULE_3__[\"isFieldOrDatumDef\"])(encoding.y2))) {\n                const axisSpec = Object(_channeldef__WEBPACK_IMPORTED_MODULE_3__[\"isFieldOrDatumDef\"])(channelDef) ? channelDef.axis : undefined;\n                _axis[channel] = axisSpec\n                    ? this.initAxis(Object.assign({}, axisSpec)) // convert truthy value to object\n                    : axisSpec;\n            }\n            return _axis;\n        }, {});\n    }\n    initAxis(axis) {\n        const props = Object(_util__WEBPACK_IMPORTED_MODULE_10__[\"keys\"])(axis);\n        const axisInternal = {};\n        for (const prop of props) {\n            const val = axis[prop];\n            axisInternal[prop] = Object(_axis__WEBPACK_IMPORTED_MODULE_1__[\"isConditionalAxisValue\"])(val)\n                ? Object(_common__WEBPACK_IMPORTED_MODULE_13__[\"signalOrValueRefWithCondition\"])(val)\n                : Object(_common__WEBPACK_IMPORTED_MODULE_13__[\"signalRefOrValue\"])(val);\n        }\n        return axisInternal;\n    }\n    initLegends(encoding) {\n        return _channel__WEBPACK_IMPORTED_MODULE_2__[\"NONPOSITION_SCALE_CHANNELS\"].reduce((_legend, channel) => {\n            const fieldOrDatumDef = Object(_channeldef__WEBPACK_IMPORTED_MODULE_3__[\"getFieldOrDatumDef\"])(encoding[channel]);\n            if (fieldOrDatumDef && Object(_channel__WEBPACK_IMPORTED_MODULE_2__[\"supportLegend\"])(channel)) {\n                const legend = fieldOrDatumDef.legend;\n                _legend[channel] = legend\n                    ? Object(_expr__WEBPACK_IMPORTED_MODULE_6__[\"replaceExprRefInIndex\"])(legend) // convert truthy value to object\n                    : legend;\n            }\n            return _legend;\n        }, {});\n    }\n    parseData() {\n        this.component.data = Object(_data_parse__WEBPACK_IMPORTED_MODULE_14__[\"parseData\"])(this);\n    }\n    parseLayoutSize() {\n        Object(_layoutsize_parse__WEBPACK_IMPORTED_MODULE_17__[\"parseUnitLayoutSize\"])(this);\n    }\n    parseSelections() {\n        this.component.selection = Object(_selection_parse__WEBPACK_IMPORTED_MODULE_22__[\"parseUnitSelection\"])(this, this.selection);\n    }\n    parseMarkGroup() {\n        this.component.mark = Object(_mark_mark__WEBPACK_IMPORTED_MODULE_19__[\"parseMarkGroups\"])(this);\n    }\n    parseAxesAndHeaders() {\n        this.component.axes = Object(_axis_parse__WEBPACK_IMPORTED_MODULE_12__[\"parseUnitAxes\"])(this);\n    }\n    assembleSelectionTopLevelSignals(signals) {\n        return Object(_selection_assemble__WEBPACK_IMPORTED_MODULE_21__[\"assembleTopLevelSignals\"])(this, signals);\n    }\n    assembleSignals() {\n        return [...Object(_axis_assemble__WEBPACK_IMPORTED_MODULE_11__[\"assembleAxisSignals\"])(this), ...Object(_selection_assemble__WEBPACK_IMPORTED_MODULE_21__[\"assembleUnitSelectionSignals\"])(this, [])];\n    }\n    assembleSelectionData(data) {\n        return Object(_selection_assemble__WEBPACK_IMPORTED_MODULE_21__[\"assembleUnitSelectionData\"])(this, data);\n    }\n    assembleLayout() {\n        return null;\n    }\n    assembleLayoutSignals() {\n        return Object(_layoutsize_assemble__WEBPACK_IMPORTED_MODULE_15__[\"assembleLayoutSignals\"])(this);\n    }\n    assembleMarks() {\n        var _a;\n        let marks = (_a = this.component.mark) !== null && _a !== void 0 ? _a : [];\n        // If this unit is part of a layer, selections should augment\n        // all in concert rather than each unit individually. This\n        // ensures correct interleaving of clipping and brushed marks.\n        if (!this.parent || !Object(_model__WEBPACK_IMPORTED_MODULE_20__[\"isLayerModel\"])(this.parent)) {\n            marks = Object(_selection_assemble__WEBPACK_IMPORTED_MODULE_21__[\"assembleUnitSelectionMarks\"])(this, marks);\n        }\n        return marks.map(this.correctDataNames);\n    }\n    getMapping() {\n        return this.encoding;\n    }\n    get mark() {\n        return this.markDef.type;\n    }\n    channelHasField(channel) {\n        return _encoding__WEBPACK_IMPORTED_MODULE_5__[\"channelHasField\"](this.encoding, channel);\n    }\n    fieldDef(channel) {\n        const channelDef = this.encoding[channel];\n        return Object(_channeldef__WEBPACK_IMPORTED_MODULE_3__[\"getFieldDef\"])(channelDef);\n    }\n    typedFieldDef(channel) {\n        const fieldDef = this.fieldDef(channel);\n        if (Object(_channeldef__WEBPACK_IMPORTED_MODULE_3__[\"isTypedFieldDef\"])(fieldDef)) {\n            return fieldDef;\n        }\n        return null;\n    }\n}\n//# sourceMappingURL=unit.js.map//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,[encoded data, 13164 characters]\n//# sourceURL=webpack-internal:///./node_modules/vega-lite/build/src/compile/unit.js\n");

/***/ }),

/***/ "./node_modules/vega-lite/build/src/compositemark/base.js":
/*!****************************************************************!*\
  !*** ./node_modules/vega-lite/build/src/compositemark/base.js ***!
  \****************************************************************/
/*! exports provided: CompositeMarkNormalizer */
/***/ (function(module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"CompositeMarkNormalizer\", function() { return CompositeMarkNormalizer; });\n/* harmony import */ var _mark__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../mark */ \"./node_modules/vega-lite/build/src/mark.js\");\n/* harmony import */ var _spec_unit__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../spec/unit */ \"./node_modules/vega-lite/build/src/spec/unit.js\");\n\n\nclass CompositeMarkNormalizer {\n    constructor(name, run) {\n        this.name = name;\n        this.run = run;\n    }\n    hasMatchingType(spec) {\n        if (Object(_spec_unit__WEBPACK_IMPORTED_MODULE_1__[\"isUnitSpec\"])(spec)) {\n            return Object(_mark__WEBPACK_IMPORTED_MODULE_0__[\"getMarkType\"])(spec.mark) === this.name;\n        }\n        return false;\n    }\n}\n//# sourceMappingURL=base.js.map//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvdmVnYS1saXRlL2J1aWxkL3NyYy9jb21wb3NpdGVtYXJrL2Jhc2UuanMuanMiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvdmVnYS1saXRlL2J1aWxkL3NyYy9jb21wb3NpdGVtYXJrL2Jhc2UuanM/ODRmMiJdLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBnZXRNYXJrVHlwZSB9IGZyb20gJy4uL21hcmsnO1xuaW1wb3J0IHsgaXNVbml0U3BlYyB9IGZyb20gJy4uL3NwZWMvdW5pdCc7XG5leHBvcnQgY2xhc3MgQ29tcG9zaXRlTWFya05vcm1hbGl6ZXIge1xuICAgIGNvbnN0cnVjdG9yKG5hbWUsIHJ1bikge1xuICAgICAgICB0aGlzLm5hbWUgPSBuYW1lO1xuICAgICAgICB0aGlzLnJ1biA9IHJ1bjtcbiAgICB9XG4gICAgaGFzTWF0Y2hpbmdUeXBlKHNwZWMpIHtcbiAgICAgICAgaWYgKGlzVW5pdFNwZWMoc3BlYykpIHtcbiAgICAgICAgICAgIHJldHVybiBnZXRNYXJrVHlwZShzcGVjLm1hcmspID09PSB0aGlzLm5hbWU7XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIGZhbHNlO1xuICAgIH1cbn1cbi8vIyBzb3VyY2VNYXBwaW5nVVJMPWJhc2UuanMubWFwIl0sIm1hcHBpbmdzIjoiQUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSIsInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///./node_modules/vega-lite/build/src/compositemark/base.js\n");

/***/ }),

/***/ "./node_modules/vega-lite/build/src/compositemark/boxplot.js":
/*!*******************************************************************!*\
  !*** ./node_modules/vega-lite/build/src/compositemark/boxplot.js ***!
  \*******************************************************************/
/*! exports provided: BOXPLOT, BOXPLOT_PARTS, boxPlotNormalizer, getBoxPlotType, normalizeBoxPlot */
/***/ (function(module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"BOXPLOT\", function() { return BOXPLOT; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"BOXPLOT_PARTS\", function() { return BOXPLOT_PARTS; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"boxPlotNormalizer\", function() { return boxPlotNormalizer; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"getBoxPlotType\", function() { return getBoxPlotType; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"normalizeBoxPlot\", function() { return normalizeBoxPlot; });\n/* harmony import */ var vega_util__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! vega-util */ \"./node_modules/vega-lite/node_modules/vega-util/build/vega-util.module.js\");\n/* harmony import */ var _compile_common__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../compile/common */ \"./node_modules/vega-lite/build/src/compile/common.js\");\n/* harmony import */ var _encoding__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ../encoding */ \"./node_modules/vega-lite/build/src/encoding.js\");\n/* harmony import */ var _log__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ../log */ \"./node_modules/vega-lite/build/src/log/index.js\");\n/* harmony import */ var _mark__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ../mark */ \"./node_modules/vega-lite/build/src/mark.js\");\n/* harmony import */ var _util__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! ../util */ \"./node_modules/vega-lite/build/src/util.js\");\n/* harmony import */ var _base__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! ./base */ \"./node_modules/vega-lite/build/src/compositemark/base.js\");\n/* harmony import */ var _common__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! ./common */ \"./node_modules/vega-lite/build/src/compositemark/common.js\");\nvar __rest = (undefined && undefined.__rest) || function (s, e) {\n    var t = {};\n    for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0)\n        t[p] = s[p];\n    if (s != null && typeof Object.getOwnPropertySymbols === \"function\")\n        for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) {\n            if (e.indexOf(p[i]) < 0 && Object.prototype.propertyIsEnumerable.call(s, p[i]))\n                t[p[i]] = s[p[i]];\n        }\n    return t;\n};\n\n\n\n\n\n\n\n\nconst BOXPLOT = 'boxplot';\nconst BOXPLOT_PARTS = ['box', 'median', 'outliers', 'rule', 'ticks'];\nconst boxPlotNormalizer = new _base__WEBPACK_IMPORTED_MODULE_6__[\"CompositeMarkNormalizer\"](BOXPLOT, normalizeBoxPlot);\nfunction getBoxPlotType(extent) {\n    if (Object(vega_util__WEBPACK_IMPORTED_MODULE_0__[\"isNumber\"])(extent)) {\n        return 'tukey';\n    }\n    // Ham: If we ever want to, we could add another extent syntax `{kIQR: number}` for the original [Q1-k*IQR, Q3+k*IQR] whisker and call this boxPlotType = `kIQR`. However, I'm not exposing this for now.\n    return extent;\n}\nfunction normalizeBoxPlot(spec, { config }) {\n    var _a, _b;\n    // Need to initEncoding first so we can infer type\n    spec = Object.assign(Object.assign({}, spec), { encoding: Object(_encoding__WEBPACK_IMPORTED_MODULE_2__[\"normalizeEncoding\"])(spec.encoding, config) });\n    const { mark, encoding: _encoding, selection, projection: _p } = spec, outerSpec = __rest(spec, [\"mark\", \"encoding\", \"selection\", \"projection\"]);\n    const markDef = Object(_mark__WEBPACK_IMPORTED_MODULE_4__[\"isMarkDef\"])(mark) ? mark : { type: mark };\n    // TODO(https://github.com/vega/vega-lite/issues/3702): add selection support\n    if (selection) {\n        _log__WEBPACK_IMPORTED_MODULE_3__[\"warn\"](_log__WEBPACK_IMPORTED_MODULE_3__[\"message\"].selectionNotSupported('boxplot'));\n    }\n    const extent = (_a = markDef.extent) !== null && _a !== void 0 ? _a : config.boxplot.extent;\n    const sizeValue = Object(_compile_common__WEBPACK_IMPORTED_MODULE_1__[\"getMarkPropOrConfig\"])('size', markDef, // TODO: https://github.com/vega/vega-lite/issues/6245\n    config);\n    const boxPlotType = getBoxPlotType(extent);\n    const { bins, timeUnits, transform, continuousAxisChannelDef, continuousAxis, groupby, aggregate, encodingWithoutContinuousAxis, ticksOrient, boxOrient, customTooltipWithoutAggregatedField } = boxParams(spec, extent, config);\n    const { color, size } = encodingWithoutContinuousAxis, encodingWithoutSizeColorAndContinuousAxis = __rest(encodingWithoutContinuousAxis, [\"color\", \"size\"]);\n    const makeBoxPlotPart = (sharedEncoding) => {\n        return Object(_common__WEBPACK_IMPORTED_MODULE_7__[\"makeCompositeAggregatePartFactory\"])(markDef, continuousAxis, continuousAxisChannelDef, sharedEncoding, config.boxplot);\n    };\n    const makeBoxPlotExtent = makeBoxPlotPart(encodingWithoutSizeColorAndContinuousAxis);\n    const makeBoxPlotBox = makeBoxPlotPart(encodingWithoutContinuousAxis);\n    const makeBoxPlotMidTick = makeBoxPlotPart(Object.assign(Object.assign({}, encodingWithoutSizeColorAndContinuousAxis), (size ? { size } : {})));\n    const fiveSummaryTooltipEncoding = Object(_common__WEBPACK_IMPORTED_MODULE_7__[\"getCompositeMarkTooltip\"])([\n        { fieldPrefix: boxPlotType === 'min-max' ? 'upper_whisker_' : 'max_', titlePrefix: 'Max' },\n        { fieldPrefix: 'upper_box_', titlePrefix: 'Q3' },\n        { fieldPrefix: 'mid_box_', titlePrefix: 'Median' },\n        { fieldPrefix: 'lower_box_', titlePrefix: 'Q1' },\n        { fieldPrefix: boxPlotType === 'min-max' ? 'lower_whisker_' : 'min_', titlePrefix: 'Min' }\n    ], continuousAxisChannelDef, encodingWithoutContinuousAxis);\n    // ## Whisker Layers\n    const endTick = { type: 'tick', color: 'black', opacity: 1, orient: ticksOrient, invalid: null, aria: false };\n    const whiskerTooltipEncoding = boxPlotType === 'min-max'\n        ? fiveSummaryTooltipEncoding // for min-max, show five-summary tooltip for whisker\n        : // for tukey / k-IQR, just show upper/lower-whisker\n            Object(_common__WEBPACK_IMPORTED_MODULE_7__[\"getCompositeMarkTooltip\"])([\n                { fieldPrefix: 'upper_whisker_', titlePrefix: 'Upper Whisker' },\n                { fieldPrefix: 'lower_whisker_', titlePrefix: 'Lower Whisker' }\n            ], continuousAxisChannelDef, encodingWithoutContinuousAxis);\n    const whiskerLayers = [\n        ...makeBoxPlotExtent({\n            partName: 'rule',\n            mark: { type: 'rule', invalid: null, aria: false },\n            positionPrefix: 'lower_whisker',\n            endPositionPrefix: 'lower_box',\n            extraEncoding: whiskerTooltipEncoding\n        }),\n        ...makeBoxPlotExtent({\n            partName: 'rule',\n            mark: { type: 'rule', invalid: null, aria: false },\n            positionPrefix: 'upper_box',\n            endPositionPrefix: 'upper_whisker',\n            extraEncoding: whiskerTooltipEncoding\n        }),\n        ...makeBoxPlotExtent({\n            partName: 'ticks',\n            mark: endTick,\n            positionPrefix: 'lower_whisker',\n            extraEncoding: whiskerTooltipEncoding\n        }),\n        ...makeBoxPlotExtent({\n            partName: 'ticks',\n            mark: endTick,\n            positionPrefix: 'upper_whisker',\n            extraEncoding: whiskerTooltipEncoding\n        })\n    ];\n    // ## Box Layers\n    // TODO: support hiding certain mark parts\n    const boxLayers = [\n        ...(boxPlotType !== 'tukey' ? whiskerLayers : []),\n        ...makeBoxPlotBox({\n            partName: 'box',\n            mark: Object.assign(Object.assign({ type: 'bar' }, (sizeValue ? { size: sizeValue } : {})), { orient: boxOrient, invalid: null, ariaRoleDescription: 'box' }),\n            positionPrefix: 'lower_box',\n            endPositionPrefix: 'upper_box',\n            extraEncoding: fiveSummaryTooltipEncoding\n        }),\n        ...makeBoxPlotMidTick({\n            partName: 'median',\n            mark: Object.assign(Object.assign(Object.assign({ type: 'tick', invalid: null }, (Object(vega_util__WEBPACK_IMPORTED_MODULE_0__[\"isObject\"])(config.boxplot.median) && config.boxplot.median.color ? { color: config.boxplot.median.color } : {})), (sizeValue ? { size: sizeValue } : {})), { orient: ticksOrient, aria: false }),\n            positionPrefix: 'mid_box',\n            extraEncoding: fiveSummaryTooltipEncoding\n        })\n    ];\n    if (boxPlotType === 'min-max') {\n        return Object.assign(Object.assign({}, outerSpec), { transform: ((_b = outerSpec.transform) !== null && _b !== void 0 ? _b : []).concat(transform), layer: boxLayers });\n    }\n    // Tukey Box Plot\n    const lowerBoxExpr = `datum[\"lower_box_${continuousAxisChannelDef.field}\"]`;\n    const upperBoxExpr = `datum[\"upper_box_${continuousAxisChannelDef.field}\"]`;\n    const iqrExpr = `(${upperBoxExpr} - ${lowerBoxExpr})`;\n    const lowerWhiskerExpr = `${lowerBoxExpr} - ${extent} * ${iqrExpr}`;\n    const upperWhiskerExpr = `${upperBoxExpr} + ${extent} * ${iqrExpr}`;\n    const fieldExpr = `datum[\"${continuousAxisChannelDef.field}\"]`;\n    const joinaggregateTransform = {\n        joinaggregate: boxParamsQuartiles(continuousAxisChannelDef.field),\n        groupby\n    };\n    const filteredWhiskerSpec = {\n        transform: [\n            {\n                filter: `(${lowerWhiskerExpr} <= ${fieldExpr}) && (${fieldExpr} <= ${upperWhiskerExpr})`\n            },\n            {\n                aggregate: [\n                    {\n                        op: 'min',\n                        field: continuousAxisChannelDef.field,\n                        as: 'lower_whisker_' + continuousAxisChannelDef.field\n                    },\n                    {\n                        op: 'max',\n                        field: continuousAxisChannelDef.field,\n                        as: 'upper_whisker_' + continuousAxisChannelDef.field\n                    },\n                    // preserve lower_box / upper_box\n                    {\n                        op: 'min',\n                        field: 'lower_box_' + continuousAxisChannelDef.field,\n                        as: 'lower_box_' + continuousAxisChannelDef.field\n                    },\n                    {\n                        op: 'max',\n                        field: 'upper_box_' + continuousAxisChannelDef.field,\n                        as: 'upper_box_' + continuousAxisChannelDef.field\n                    },\n                    ...aggregate\n                ],\n                groupby\n            }\n        ],\n        layer: whiskerLayers\n    };\n    const { tooltip } = encodingWithoutSizeColorAndContinuousAxis, encodingWithoutSizeColorContinuousAxisAndTooltip = __rest(encodingWithoutSizeColorAndContinuousAxis, [\"tooltip\"]);\n    const { scale, axis } = continuousAxisChannelDef;\n    const title = Object(_common__WEBPACK_IMPORTED_MODULE_7__[\"getTitle\"])(continuousAxisChannelDef);\n    const axisWithoutTitle = Object(_util__WEBPACK_IMPORTED_MODULE_5__[\"omit\"])(axis, ['title']);\n    const outlierLayersMixins = Object(_common__WEBPACK_IMPORTED_MODULE_7__[\"partLayerMixins\"])(markDef, 'outliers', config.boxplot, {\n        transform: [{ filter: `(${fieldExpr} < ${lowerWhiskerExpr}) || (${fieldExpr} > ${upperWhiskerExpr})` }],\n        mark: 'point',\n        encoding: Object.assign(Object.assign(Object.assign({ [continuousAxis]: Object.assign(Object.assign(Object.assign({ field: continuousAxisChannelDef.field, type: continuousAxisChannelDef.type }, (title !== undefined ? { title } : {})), (scale !== undefined ? { scale } : {})), (Object(_util__WEBPACK_IMPORTED_MODULE_5__[\"isEmpty\"])(axisWithoutTitle) ? {} : { axis: axisWithoutTitle })) }, encodingWithoutSizeColorContinuousAxisAndTooltip), (color ? { color } : {})), (customTooltipWithoutAggregatedField ? { tooltip: customTooltipWithoutAggregatedField } : {}))\n    })[0];\n    let filteredLayersMixins;\n    const filteredLayersMixinsTransforms = [...bins, ...timeUnits, joinaggregateTransform];\n    if (outlierLayersMixins) {\n        filteredLayersMixins = {\n            transform: filteredLayersMixinsTransforms,\n            layer: [outlierLayersMixins, filteredWhiskerSpec]\n        };\n    }\n    else {\n        filteredLayersMixins = filteredWhiskerSpec;\n        filteredLayersMixins.transform.unshift(...filteredLayersMixinsTransforms);\n    }\n    return Object.assign(Object.assign({}, outerSpec), { layer: [\n            filteredLayersMixins,\n            {\n                // boxplot\n                transform,\n                layer: boxLayers\n            }\n        ] });\n}\nfunction boxParamsQuartiles(continousAxisField) {\n    return [\n        {\n            op: 'q1',\n            field: continousAxisField,\n            as: 'lower_box_' + continousAxisField\n        },\n        {\n            op: 'q3',\n            field: continousAxisField,\n            as: 'upper_box_' + continousAxisField\n        }\n    ];\n}\nfunction boxParams(spec, extent, config) {\n    const orient = Object(_common__WEBPACK_IMPORTED_MODULE_7__[\"compositeMarkOrient\"])(spec, BOXPLOT);\n    const { continuousAxisChannelDef, continuousAxis } = Object(_common__WEBPACK_IMPORTED_MODULE_7__[\"compositeMarkContinuousAxis\"])(spec, orient, BOXPLOT);\n    const continuousFieldName = continuousAxisChannelDef.field;\n    const boxPlotType = getBoxPlotType(extent);\n    const boxplotSpecificAggregate = [\n        ...boxParamsQuartiles(continuousFieldName),\n        {\n            op: 'median',\n            field: continuousFieldName,\n            as: 'mid_box_' + continuousFieldName\n        },\n        {\n            op: 'min',\n            field: continuousFieldName,\n            as: (boxPlotType === 'min-max' ? 'lower_whisker_' : 'min_') + continuousFieldName\n        },\n        {\n            op: 'max',\n            field: continuousFieldName,\n            as: (boxPlotType === 'min-max' ? 'upper_whisker_' : 'max_') + continuousFieldName\n        }\n    ];\n    const postAggregateCalculates = boxPlotType === 'min-max' || boxPlotType === 'tukey'\n        ? []\n        : [\n            // This is for the  original k-IQR, which we do not expose\n            {\n                calculate: `datum[\"upper_box_${continuousFieldName}\"] - datum[\"lower_box_${continuousFieldName}\"]`,\n                as: 'iqr_' + continuousFieldName\n            },\n            {\n                calculate: `min(datum[\"upper_box_${continuousFieldName}\"] + datum[\"iqr_${continuousFieldName}\"] * ${extent}, datum[\"max_${continuousFieldName}\"])`,\n                as: 'upper_whisker_' + continuousFieldName\n            },\n            {\n                calculate: `max(datum[\"lower_box_${continuousFieldName}\"] - datum[\"iqr_${continuousFieldName}\"] * ${extent}, datum[\"min_${continuousFieldName}\"])`,\n                as: 'lower_whisker_' + continuousFieldName\n            }\n        ];\n    const _a = spec.encoding, _b = continuousAxis, oldContinuousAxisChannelDef = _a[_b], oldEncodingWithoutContinuousAxis = __rest(_a, [typeof _b === \"symbol\" ? _b : _b + \"\"]);\n    const { customTooltipWithoutAggregatedField, filteredEncoding } = Object(_common__WEBPACK_IMPORTED_MODULE_7__[\"filterTooltipWithAggregatedField\"])(oldEncodingWithoutContinuousAxis);\n    const { bins, timeUnits, aggregate, groupby, encoding: encodingWithoutContinuousAxis } = Object(_encoding__WEBPACK_IMPORTED_MODULE_2__[\"extractTransformsFromEncoding\"])(filteredEncoding, config);\n    const ticksOrient = orient === 'vertical' ? 'horizontal' : 'vertical';\n    const boxOrient = orient;\n    const transform = [\n        ...bins,\n        ...timeUnits,\n        {\n            aggregate: [...aggregate, ...boxplotSpecificAggregate],\n            groupby\n        },\n        ...postAggregateCalculates\n    ];\n    return {\n        bins,\n        timeUnits,\n        transform,\n        groupby,\n        aggregate,\n        continuousAxisChannelDef,\n        continuousAxis,\n        encodingWithoutContinuousAxis,\n        ticksOrient,\n        boxOrient,\n        customTooltipWithoutAggregatedField\n    };\n}\n//# sourceMappingURL=boxplot.js.map//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,[encoded data, 20824 characters]\n//# sourceURL=webpack-internal:///./node_modules/vega-lite/build/src/compositemark/boxplot.js\n");

/***/ }),

/***/ "./node_modules/vega-lite/build/src/compositemark/common.js":
/*!******************************************************************!*\
  !*** ./node_modules/vega-lite/build/src/compositemark/common.js ***!
  \******************************************************************/
/*! exports provided: filterTooltipWithAggregatedField, getCompositeMarkTooltip, getTitle, makeCompositeAggregatePartFactory, partLayerMixins, compositeMarkContinuousAxis, compositeMarkOrient */
/***/ (function(module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"filterTooltipWithAggregatedField\", function() { return filterTooltipWithAggregatedField; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"getCompositeMarkTooltip\", function() { return getCompositeMarkTooltip; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"getTitle\", function() { return getTitle; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"makeCompositeAggregatePartFactory\", function() { return makeCompositeAggregatePartFactory; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"partLayerMixins\", function() { return partLayerMixins; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"compositeMarkContinuousAxis\", function() { return compositeMarkContinuousAxis; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"compositeMarkOrient\", function() { return compositeMarkOrient; });\n/* harmony import */ var vega_util__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! vega-util */ \"./node_modules/vega-lite/node_modules/vega-util/build/vega-util.module.js\");\n/* harmony import */ var _channeldef__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../channeldef */ \"./node_modules/vega-lite/build/src/channeldef.js\");\n/* harmony import */ var _encoding__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ../encoding */ \"./node_modules/vega-lite/build/src/encoding.js\");\n/* harmony import */ var _log__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ../log */ \"./node_modules/vega-lite/build/src/log/index.js\");\n/* harmony import */ var _mark__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ../mark */ \"./node_modules/vega-lite/build/src/mark.js\");\n/* harmony import */ var _util__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! ../util */ \"./node_modules/vega-lite/build/src/util.js\");\n/* harmony import */ var _vega_schema__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! ../vega.schema */ \"./node_modules/vega-lite/build/src/vega.schema.js\");\nvar __rest = (undefined && undefined.__rest) || function (s, e) {\n    var t = {};\n    for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0)\n        t[p] = s[p];\n    if (s != null && typeof Object.getOwnPropertySymbols === \"function\")\n        for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) {\n            if (e.indexOf(p[i]) < 0 && Object.prototype.propertyIsEnumerable.call(s, p[i]))\n                t[p[i]] = s[p[i]];\n        }\n    return t;\n};\n\n\n\n\n\n\n\n\nfunction filterTooltipWithAggregatedField(oldEncoding) {\n    const { tooltip } = oldEncoding, filteredEncoding = __rest(oldEncoding, [\"tooltip\"]);\n    if (!tooltip) {\n        return { filteredEncoding };\n    }\n    let customTooltipWithAggregatedField;\n    let customTooltipWithoutAggregatedField;\n    if (Object(vega_util__WEBPACK_IMPORTED_MODULE_0__[\"isArray\"])(tooltip)) {\n        for (const t of tooltip) {\n            if (t.aggregate) {\n                if (!customTooltipWithAggregatedField) {\n                    customTooltipWithAggregatedField = [];\n                }\n                customTooltipWithAggregatedField.push(t);\n            }\n            else {\n                if (!customTooltipWithoutAggregatedField) {\n                    customTooltipWithoutAggregatedField = [];\n                }\n                customTooltipWithoutAggregatedField.push(t);\n            }\n        }\n        if (customTooltipWithAggregatedField) {\n            filteredEncoding.tooltip = customTooltipWithAggregatedField;\n        }\n    }\n    else {\n        if (tooltip['aggregate']) {\n            filteredEncoding.tooltip = tooltip;\n        }\n        else {\n            customTooltipWithoutAggregatedField = tooltip;\n        }\n    }\n    if (Object(vega_util__WEBPACK_IMPORTED_MODULE_0__[\"isArray\"])(customTooltipWithoutAggregatedField) && customTooltipWithoutAggregatedField.length === 1) {\n        customTooltipWithoutAggregatedField = customTooltipWithoutAggregatedField[0];\n    }\n    return { customTooltipWithoutAggregatedField, filteredEncoding };\n}\nfunction getCompositeMarkTooltip(tooltipSummary, continuousAxisChannelDef, encodingWithoutContinuousAxis, withFieldName = true) {\n    if ('tooltip' in encodingWithoutContinuousAxis) {\n        return { tooltip: encodingWithoutContinuousAxis.tooltip };\n    }\n    const fiveSummaryTooltip = tooltipSummary.map(({ fieldPrefix, titlePrefix }) => {\n        const mainTitle = withFieldName ? ` of ${getTitle(continuousAxisChannelDef)}` : '';\n        return {\n            field: fieldPrefix + continuousAxisChannelDef.field,\n            type: continuousAxisChannelDef.type,\n            title: Object(_vega_schema__WEBPACK_IMPORTED_MODULE_6__[\"isSignalRef\"])(titlePrefix) ? { signal: titlePrefix + `\"${escape(mainTitle)}\"` } : titlePrefix + mainTitle\n        };\n    });\n    const tooltipFieldDefs = Object(_encoding__WEBPACK_IMPORTED_MODULE_2__[\"fieldDefs\"])(encodingWithoutContinuousAxis).map(_channeldef__WEBPACK_IMPORTED_MODULE_1__[\"toStringFieldDef\"]);\n    return {\n        tooltip: [\n            ...fiveSummaryTooltip,\n            // need to cast because TextFieldDef supports fewer types of bin\n            ...Object(_util__WEBPACK_IMPORTED_MODULE_5__[\"unique\"])(tooltipFieldDefs, _util__WEBPACK_IMPORTED_MODULE_5__[\"hash\"])\n        ]\n    };\n}\nfunction getTitle(continuousAxisChannelDef) {\n    const { title, field } = continuousAxisChannelDef;\n    return Object(_util__WEBPACK_IMPORTED_MODULE_5__[\"getFirstDefined\"])(title, field);\n}\nfunction makeCompositeAggregatePartFactory(compositeMarkDef, continuousAxis, continuousAxisChannelDef, sharedEncoding, compositeMarkConfig) {\n    const { scale, axis } = continuousAxisChannelDef;\n    return ({ partName, mark, positionPrefix, endPositionPrefix = undefined, extraEncoding = {} }) => {\n        const title = getTitle(continuousAxisChannelDef);\n        return partLayerMixins(compositeMarkDef, partName, compositeMarkConfig, {\n            mark,\n            encoding: Object.assign(Object.assign(Object.assign({ [continuousAxis]: Object.assign(Object.assign(Object.assign({ field: positionPrefix + '_' + continuousAxisChannelDef.field, type: continuousAxisChannelDef.type }, (title !== undefined ? { title } : {})), (scale !== undefined ? { scale } : {})), (axis !== undefined ? { axis } : {})) }, (Object(vega_util__WEBPACK_IMPORTED_MODULE_0__[\"isString\"])(endPositionPrefix)\n                ? {\n                    [continuousAxis + '2']: {\n                        field: endPositionPrefix + '_' + continuousAxisChannelDef.field\n                    }\n                }\n                : {})), sharedEncoding), extraEncoding)\n        });\n    };\n}\nfunction partLayerMixins(markDef, part, compositeMarkConfig, partBaseSpec) {\n    const { clip, color, opacity } = markDef;\n    const mark = markDef.type;\n    if (markDef[part] || (markDef[part] === undefined && compositeMarkConfig[part])) {\n        return [\n            Object.assign(Object.assign({}, partBaseSpec), { mark: Object.assign(Object.assign(Object.assign(Object.assign(Object.assign(Object.assign(Object.assign({}, compositeMarkConfig[part]), (clip ? { clip } : {})), (color ? { color } : {})), (opacity ? { opacity } : {})), (Object(_mark__WEBPACK_IMPORTED_MODULE_4__[\"isMarkDef\"])(partBaseSpec.mark) ? partBaseSpec.mark : { type: partBaseSpec.mark })), { style: `${mark}-${part}` }), (Object(vega_util__WEBPACK_IMPORTED_MODULE_0__[\"isBoolean\"])(markDef[part]) ? {} : markDef[part])) })\n        ];\n    }\n    return [];\n}\nfunction compositeMarkContinuousAxis(spec, orient, compositeMark) {\n    const { encoding } = spec;\n    const continuousAxis = orient === 'vertical' ? 'y' : 'x';\n    const continuousAxisChannelDef = encoding[continuousAxis]; // Safe to cast because if x is not continuous fielddef, the orient would not be horizontal.\n    const continuousAxisChannelDef2 = encoding[continuousAxis + '2'];\n    const continuousAxisChannelDefError = encoding[continuousAxis + 'Error'];\n    const continuousAxisChannelDefError2 = encoding[continuousAxis + 'Error2'];\n    return {\n        continuousAxisChannelDef: filterAggregateFromChannelDef(continuousAxisChannelDef, compositeMark),\n        continuousAxisChannelDef2: filterAggregateFromChannelDef(continuousAxisChannelDef2, compositeMark),\n        continuousAxisChannelDefError: filterAggregateFromChannelDef(continuousAxisChannelDefError, compositeMark),\n        continuousAxisChannelDefError2: filterAggregateFromChannelDef(continuousAxisChannelDefError2, compositeMark),\n        continuousAxis\n    };\n}\nfunction filterAggregateFromChannelDef(continuousAxisChannelDef, compositeMark) {\n    if (continuousAxisChannelDef && continuousAxisChannelDef.aggregate) {\n        const { aggregate } = continuousAxisChannelDef, continuousAxisWithoutAggregate = __rest(continuousAxisChannelDef, [\"aggregate\"]);\n        if (aggregate !== compositeMark) {\n            _log__WEBPACK_IMPORTED_MODULE_3__[\"warn\"](_log__WEBPACK_IMPORTED_MODULE_3__[\"message\"].errorBarContinuousAxisHasCustomizedAggregate(aggregate, compositeMark));\n        }\n        return continuousAxisWithoutAggregate;\n    }\n    else {\n        return continuousAxisChannelDef;\n    }\n}\nfunction compositeMarkOrient(spec, compositeMark) {\n    const { mark, encoding } = spec;\n    const { x, y } = encoding;\n    if (Object(_mark__WEBPACK_IMPORTED_MODULE_4__[\"isMarkDef\"])(mark) && mark.orient) {\n        return mark.orient;\n    }\n    if (Object(_channeldef__WEBPACK_IMPORTED_MODULE_1__[\"isContinuousFieldOrDatumDef\"])(x)) {\n        // x is continuous\n        if (Object(_channeldef__WEBPACK_IMPORTED_MODULE_1__[\"isContinuousFieldOrDatumDef\"])(y)) {\n            // both x and y are continuous\n            const xAggregate = Object(_channeldef__WEBPACK_IMPORTED_MODULE_1__[\"isFieldDef\"])(x) && x.aggregate;\n            const yAggregate = Object(_channeldef__WEBPACK_IMPORTED_MODULE_1__[\"isFieldDef\"])(y) && y.aggregate;\n            if (!xAggregate && yAggregate === compositeMark) {\n                return 'vertical';\n            }\n            else if (!yAggregate && xAggregate === compositeMark) {\n                return 'horizontal';\n            }\n            else if (xAggregate === compositeMark && yAggregate === compositeMark) {\n                throw new Error('Both x and y cannot have aggregate');\n            }\n            else {\n                if (Object(_channeldef__WEBPACK_IMPORTED_MODULE_1__[\"isFieldOrDatumDefForTimeFormat\"])(y) && !Object(_channeldef__WEBPACK_IMPORTED_MODULE_1__[\"isFieldOrDatumDefForTimeFormat\"])(x)) {\n                    // y is temporal but x is not\n                    return 'horizontal';\n                }\n                // default orientation for two continuous\n                return 'vertical';\n            }\n        }\n        return 'horizontal';\n    }\n    else if (Object(_channeldef__WEBPACK_IMPORTED_MODULE_1__[\"isContinuousFieldOrDatumDef\"])(y)) {\n        // y is continuous but x is not\n        return 'vertical';\n    }\n    else {\n        // Neither x nor y is continuous.\n        throw new Error(`Need a valid continuous axis for ${compositeMark}s`);\n    }\n}\n//# sourceMappingURL=common.js.map//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,[encoded data, 13252 characters]\n//# sourceURL=webpack-internal:///./node_modules/vega-lite/build/src/compositemark/common.js\n");

/***/ }),

/***/ "./node_modules/vega-lite/build/src/compositemark/errorband.js":
/*!*********************************************************************!*\
  !*** ./node_modules/vega-lite/build/src/compositemark/errorband.js ***!
  \*********************************************************************/
/*! exports provided: ERRORBAND, ERRORBAND_PARTS, errorBandNormalizer, normalizeErrorBand */
/***/ (function(module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"ERRORBAND\", function() { return ERRORBAND; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"ERRORBAND_PARTS\", function() { return ERRORBAND_PARTS; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"errorBandNormalizer\", function() { return errorBandNormalizer; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"normalizeErrorBand\", function() { return normalizeErrorBand; });\n/* harmony import */ var _encoding__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../encoding */ \"./node_modules/vega-lite/build/src/encoding.js\");\n/* harmony import */ var _log__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../log */ \"./node_modules/vega-lite/build/src/log/index.js\");\n/* harmony import */ var _base__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./base */ \"./node_modules/vega-lite/build/src/compositemark/base.js\");\n/* harmony import */ var _common__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ./common */ \"./node_modules/vega-lite/build/src/compositemark/common.js\");\n/* harmony import */ var _errorbar__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ./errorbar */ \"./node_modules/vega-lite/build/src/compositemark/errorbar.js\");\n\n\n\n\n\nconst ERRORBAND = 'errorband';\nconst ERRORBAND_PARTS = ['band', 'borders'];\nconst errorBandNormalizer = new _base__WEBPACK_IMPORTED_MODULE_2__[\"CompositeMarkNormalizer\"](ERRORBAND, normalizeErrorBand);\nfunction normalizeErrorBand(spec, { config }) {\n    // Need to initEncoding first so we can infer type\n    spec = Object.assign(Object.assign({}, spec), { encoding: Object(_encoding__WEBPACK_IMPORTED_MODULE_0__[\"normalizeEncoding\"])(spec.encoding, config) });\n    const { transform, continuousAxisChannelDef, continuousAxis, encodingWithoutContinuousAxis, markDef, outerSpec, tooltipEncoding } = Object(_errorbar__WEBPACK_IMPORTED_MODULE_4__[\"errorBarParams\"])(spec, ERRORBAND, config);\n    const errorBandDef = markDef;\n    const makeErrorBandPart = Object(_common__WEBPACK_IMPORTED_MODULE_3__[\"makeCompositeAggregatePartFactory\"])(errorBandDef, continuousAxis, continuousAxisChannelDef, encodingWithoutContinuousAxis, config.errorband);\n    const is2D = spec.encoding.x !== undefined && spec.encoding.y !== undefined;\n    let bandMark = { type: is2D ? 'area' : 'rect' };\n    let bordersMark = { type: is2D ? 'line' : 'rule' };\n    const interpolate = Object.assign(Object.assign({}, (errorBandDef.interpolate ? { interpolate: errorBandDef.interpolate } : {})), (errorBandDef.tension && errorBandDef.interpolate ? { tension: errorBandDef.tension } : {}));\n    if (is2D) {\n        bandMark = Object.assign(Object.assign(Object.assign({}, bandMark), interpolate), { ariaRoleDescription: 'errorband' });\n        bordersMark = Object.assign(Object.assign(Object.assign({}, bordersMark), interpolate), { aria: false });\n    }\n    else if (errorBandDef.interpolate) {\n        _log__WEBPACK_IMPORTED_MODULE_1__[\"warn\"](_log__WEBPACK_IMPORTED_MODULE_1__[\"message\"].errorBand1DNotSupport('interpolate'));\n    }\n    else if (errorBandDef.tension) {\n        _log__WEBPACK_IMPORTED_MODULE_1__[\"warn\"](_log__WEBPACK_IMPORTED_MODULE_1__[\"message\"].errorBand1DNotSupport('tension'));\n    }\n    return Object.assign(Object.assign({}, outerSpec), { transform, layer: [\n            ...makeErrorBandPart({\n                partName: 'band',\n                mark: bandMark,\n                positionPrefix: 'lower',\n                endPositionPrefix: 'upper',\n                extraEncoding: tooltipEncoding\n            }),\n            ...makeErrorBandPart({\n                partName: 'borders',\n                mark: bordersMark,\n                positionPrefix: 'lower',\n                extraEncoding: tooltipEncoding\n            }),\n            ...makeErrorBandPart({\n                partName: 'borders',\n                mark: bordersMark,\n                positionPrefix: 'upper',\n                extraEncoding: tooltipEncoding\n            })\n        ] });\n}\n//# sourceMappingURL=errorband.js.map//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,[encoded data, 4416 characters]\n//# sourceURL=webpack-internal:///./node_modules/vega-lite/build/src/compositemark/errorband.js\n");

/***/ }),

/***/ "./node_modules/vega-lite/build/src/compositemark/errorbar.js":
/*!********************************************************************!*\
  !*** ./node_modules/vega-lite/build/src/compositemark/errorbar.js ***!
  \********************************************************************/
/*! exports provided: ERRORBAR, ERRORBAR_PARTS, errorBarNormalizer, normalizeErrorBar, errorBarParams */
/***/ (function(module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"ERRORBAR\", function() { return ERRORBAR; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"ERRORBAR_PARTS\", function() { return ERRORBAR_PARTS; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"errorBarNormalizer\", function() { return errorBarNormalizer; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"normalizeErrorBar\", function() { return normalizeErrorBar; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"errorBarParams\", function() { return errorBarParams; });\n/* harmony import */ var _channeldef__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../channeldef */ \"./node_modules/vega-lite/build/src/channeldef.js\");\n/* harmony import */ var _encoding__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../encoding */ \"./node_modules/vega-lite/build/src/encoding.js\");\n/* harmony import */ var _log__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ../log */ \"./node_modules/vega-lite/build/src/log/index.js\");\n/* harmony import */ var _mark__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ../mark */ \"./node_modules/vega-lite/build/src/mark.js\");\n/* harmony import */ var _util__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ../util */ \"./node_modules/vega-lite/build/src/util.js\");\n/* harmony import */ var _base__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! ./base */ \"./node_modules/vega-lite/build/src/compositemark/base.js\");\n/* harmony import */ var _common__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! ./common */ \"./node_modules/vega-lite/build/src/compositemark/common.js\");\nvar __rest = (undefined && undefined.__rest) || function (s, e) {\n    var t = {};\n    for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0)\n        t[p] = s[p];\n    if (s != null && typeof Object.getOwnPropertySymbols === \"function\")\n        for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) {\n            if (e.indexOf(p[i]) < 0 && Object.prototype.propertyIsEnumerable.call(s, p[i]))\n                t[p[i]] = s[p[i]];\n        }\n    return t;\n};\n\n\n\n\n\n\n\nconst ERRORBAR = 'errorbar';\nconst ERRORBAR_PARTS = ['ticks', 'rule'];\nconst errorBarNormalizer = new _base__WEBPACK_IMPORTED_MODULE_5__[\"CompositeMarkNormalizer\"](ERRORBAR, normalizeErrorBar);\nfunction normalizeErrorBar(spec, { config }) {\n    // Need to initEncoding first so we can infer type\n    spec = Object.assign(Object.assign({}, spec), { encoding: Object(_encoding__WEBPACK_IMPORTED_MODULE_1__[\"normalizeEncoding\"])(spec.encoding, config) });\n    const { transform, continuousAxisChannelDef, continuousAxis, encodingWithoutContinuousAxis, ticksOrient, markDef, outerSpec, tooltipEncoding } = errorBarParams(spec, ERRORBAR, config);\n    delete encodingWithoutContinuousAxis['size'];\n    const makeErrorBarPart = Object(_common__WEBPACK_IMPORTED_MODULE_6__[\"makeCompositeAggregatePartFactory\"])(markDef, continuousAxis, continuousAxisChannelDef, encodingWithoutContinuousAxis, config.errorbar);\n    const thickness = markDef.thickness;\n    const size = markDef.size;\n    const tick = Object.assign(Object.assign({ type: 'tick', orient: ticksOrient, aria: false }, (thickness !== undefined ? { thickness } : {})), (size !== undefined ? { size } : {}));\n    const layer = [\n        ...makeErrorBarPart({\n            partName: 'ticks',\n            mark: tick,\n            positionPrefix: 'lower',\n            extraEncoding: tooltipEncoding\n        }),\n        ...makeErrorBarPart({\n            partName: 'ticks',\n            mark: tick,\n            positionPrefix: 'upper',\n            extraEncoding: tooltipEncoding\n        }),\n        ...makeErrorBarPart({\n            partName: 'rule',\n            mark: Object.assign({ type: 'rule', ariaRoleDescription: 'errorbar' }, (thickness !== undefined ? { size: thickness } : {})),\n            positionPrefix: 'lower',\n            endPositionPrefix: 'upper',\n            extraEncoding: tooltipEncoding\n        })\n    ];\n    return Object.assign(Object.assign(Object.assign({}, outerSpec), { transform }), (layer.length > 1 ? { layer } : Object.assign({}, layer[0])));\n}\nfunction errorBarOrientAndInputType(spec, compositeMark) {\n    const { encoding } = spec;\n    if (errorBarIsInputTypeRaw(encoding)) {\n        return {\n            orient: Object(_common__WEBPACK_IMPORTED_MODULE_6__[\"compositeMarkOrient\"])(spec, compositeMark),\n            inputType: 'raw'\n        };\n    }\n    const isTypeAggregatedUpperLower = errorBarIsInputTypeAggregatedUpperLower(encoding);\n    const isTypeAggregatedError = errorBarIsInputTypeAggregatedError(encoding);\n    const x = encoding.x;\n    const y = encoding.y;\n    if (isTypeAggregatedUpperLower) {\n        // type is aggregated-upper-lower\n        if (isTypeAggregatedError) {\n            throw new Error(`${compositeMark} cannot be both type aggregated-upper-lower and aggregated-error`);\n        }\n        const x2 = encoding.x2;\n        const y2 = encoding.y2;\n        if (Object(_channeldef__WEBPACK_IMPORTED_MODULE_0__[\"isFieldOrDatumDef\"])(x2) && Object(_channeldef__WEBPACK_IMPORTED_MODULE_0__[\"isFieldOrDatumDef\"])(y2)) {\n            // having both x, x2 and y, y2\n            throw new Error(`${compositeMark} cannot have both x2 and y2`);\n        }\n        else if (Object(_channeldef__WEBPACK_IMPORTED_MODULE_0__[\"isFieldOrDatumDef\"])(x2)) {\n            if (Object(_channeldef__WEBPACK_IMPORTED_MODULE_0__[\"isContinuousFieldOrDatumDef\"])(x)) {\n                // having x, x2 quantitative and field y, y2 are not specified\n                return { orient: 'horizontal', inputType: 'aggregated-upper-lower' };\n            }\n            else {\n                // having x, x2 that are not both quantitative\n                throw new Error(`Both x and x2 have to be quantitative in ${compositeMark}`);\n            }\n        }\n        else if (Object(_channeldef__WEBPACK_IMPORTED_MODULE_0__[\"isFieldOrDatumDef\"])(y2)) {\n            // y2 is a FieldDef\n            if (Object(_channeldef__WEBPACK_IMPORTED_MODULE_0__[\"isContinuousFieldOrDatumDef\"])(y)) {\n                // having y, y2 quantitative and field x, x2 are not specified\n                return { orient: 'vertical', inputType: 'aggregated-upper-lower' };\n            }\n            else {\n                // having y, y2 that are not both quantitative\n                throw new Error(`Both y and y2 have to be quantitative in ${compositeMark}`);\n            }\n        }\n        throw new Error('No ranged axis');\n    }\n    else {\n        // type is aggregated-error\n        const xError = encoding.xError;\n        const xError2 = encoding.xError2;\n        const yError = encoding.yError;\n        const yError2 = encoding.yError2;\n        if (Object(_channeldef__WEBPACK_IMPORTED_MODULE_0__[\"isFieldOrDatumDef\"])(xError2) && !Object(_channeldef__WEBPACK_IMPORTED_MODULE_0__[\"isFieldOrDatumDef\"])(xError)) {\n            // having xError2 without xError\n            throw new Error(`${compositeMark} cannot have xError2 without xError`);\n        }\n        if (Object(_channeldef__WEBPACK_IMPORTED_MODULE_0__[\"isFieldOrDatumDef\"])(yError2) && !Object(_channeldef__WEBPACK_IMPORTED_MODULE_0__[\"isFieldOrDatumDef\"])(yError)) {\n            // having yError2 without yError\n            throw new Error(`${compositeMark} cannot have yError2 without yError`);\n        }\n        if (Object(_channeldef__WEBPACK_IMPORTED_MODULE_0__[\"isFieldOrDatumDef\"])(xError) && Object(_channeldef__WEBPACK_IMPORTED_MODULE_0__[\"isFieldOrDatumDef\"])(yError)) {\n            // having both xError and yError\n            throw new Error(`${compositeMark} cannot have both xError and yError with both are quantiative`);\n        }\n        else if (Object(_channeldef__WEBPACK_IMPORTED_MODULE_0__[\"isFieldOrDatumDef\"])(xError)) {\n            if (Object(_channeldef__WEBPACK_IMPORTED_MODULE_0__[\"isContinuousFieldOrDatumDef\"])(x)) {\n                // having x and xError that are all quantitative\n                return { orient: 'horizontal', inputType: 'aggregated-error' };\n            }\n            else {\n                // having x, xError, and xError2 that are not all quantitative\n                throw new Error('All x, xError, and xError2 (if exist) have to be quantitative');\n            }\n        }\n        else if (Object(_channeldef__WEBPACK_IMPORTED_MODULE_0__[\"isFieldOrDatumDef\"])(yError)) {\n            if (Object(_channeldef__WEBPACK_IMPORTED_MODULE_0__[\"isContinuousFieldOrDatumDef\"])(y)) {\n                // having y and yError that are all quantitative\n                return { orient: 'vertical', inputType: 'aggregated-error' };\n            }\n            else {\n                // having y, yError, and yError2 that are not all quantitative\n                throw new Error('All y, yError, and yError2 (if exist) have to be quantitative');\n            }\n        }\n        throw new Error('No ranged axis');\n    }\n}\nfunction errorBarIsInputTypeRaw(encoding) {\n    return ((Object(_channeldef__WEBPACK_IMPORTED_MODULE_0__[\"isFieldOrDatumDef\"])(encoding.x) || Object(_channeldef__WEBPACK_IMPORTED_MODULE_0__[\"isFieldOrDatumDef\"])(encoding.y)) &&\n        !Object(_channeldef__WEBPACK_IMPORTED_MODULE_0__[\"isFieldOrDatumDef\"])(encoding.x2) &&\n        !Object(_channeldef__WEBPACK_IMPORTED_MODULE_0__[\"isFieldOrDatumDef\"])(encoding.y2) &&\n        !Object(_channeldef__WEBPACK_IMPORTED_MODULE_0__[\"isFieldOrDatumDef\"])(encoding.xError) &&\n        !Object(_channeldef__WEBPACK_IMPORTED_MODULE_0__[\"isFieldOrDatumDef\"])(encoding.xError2) &&\n        !Object(_channeldef__WEBPACK_IMPORTED_MODULE_0__[\"isFieldOrDatumDef\"])(encoding.yError) &&\n        !Object(_channeldef__WEBPACK_IMPORTED_MODULE_0__[\"isFieldOrDatumDef\"])(encoding.yError2));\n}\nfunction errorBarIsInputTypeAggregatedUpperLower(encoding) {\n    return Object(_channeldef__WEBPACK_IMPORTED_MODULE_0__[\"isFieldOrDatumDef\"])(encoding.x2) || Object(_channeldef__WEBPACK_IMPORTED_MODULE_0__[\"isFieldOrDatumDef\"])(encoding.y2);\n}\nfunction errorBarIsInputTypeAggregatedError(encoding) {\n    return (Object(_channeldef__WEBPACK_IMPORTED_MODULE_0__[\"isFieldOrDatumDef\"])(encoding.xError) ||\n        Object(_channeldef__WEBPACK_IMPORTED_MODULE_0__[\"isFieldOrDatumDef\"])(encoding.xError2) ||\n        Object(_channeldef__WEBPACK_IMPORTED_MODULE_0__[\"isFieldOrDatumDef\"])(encoding.yError) ||\n        Object(_channeldef__WEBPACK_IMPORTED_MODULE_0__[\"isFieldOrDatumDef\"])(encoding.yError2));\n}\nfunction errorBarParams(spec, compositeMark, config) {\n    var _a;\n    // TODO: use selection\n    const { mark, encoding, selection, projection: _p } = spec, outerSpec = __rest(spec, [\"mark\", \"encoding\", \"selection\", \"projection\"]);\n    const markDef = Object(_mark__WEBPACK_IMPORTED_MODULE_3__[\"isMarkDef\"])(mark) ? mark : { type: mark };\n    // TODO(https://github.com/vega/vega-lite/issues/3702): add selection support\n    if (selection) {\n        _log__WEBPACK_IMPORTED_MODULE_2__[\"warn\"](_log__WEBPACK_IMPORTED_MODULE_2__[\"message\"].selectionNotSupported(compositeMark));\n    }\n    const { orient, inputType } = errorBarOrientAndInputType(spec, compositeMark);\n    const { continuousAxisChannelDef, continuousAxisChannelDef2, continuousAxisChannelDefError, continuousAxisChannelDefError2, continuousAxis } = Object(_common__WEBPACK_IMPORTED_MODULE_6__[\"compositeMarkContinuousAxis\"])(spec, orient, compositeMark);\n    const { errorBarSpecificAggregate, postAggregateCalculates, tooltipSummary, tooltipTitleWithFieldName } = errorBarAggregationAndCalculation(markDef, continuousAxisChannelDef, continuousAxisChannelDef2, continuousAxisChannelDefError, continuousAxisChannelDefError2, inputType, compositeMark, config);\n    const _b = encoding, _c = continuousAxis, oldContinuousAxisChannelDef = _b[_c], _d = continuousAxis === 'x' ? 'x2' : 'y2', oldContinuousAxisChannelDef2 = _b[_d], _e = continuousAxis === 'x' ? 'xError' : 'yError', oldContinuousAxisChannelDefError = _b[_e], _f = continuousAxis === 'x' ? 'xError2' : 'yError2', oldContinuousAxisChannelDefError2 = _b[_f], oldEncodingWithoutContinuousAxis = __rest(_b, [typeof _c === \"symbol\" ? _c : _c + \"\", typeof _d === \"symbol\" ? _d : _d + \"\", typeof _e === \"symbol\" ? _e : _e + \"\", typeof _f === \"symbol\" ? _f : _f + \"\"]);\n    const { bins, timeUnits, aggregate: oldAggregate, groupby: oldGroupBy, encoding: encodingWithoutContinuousAxis } = Object(_encoding__WEBPACK_IMPORTED_MODULE_1__[\"extractTransformsFromEncoding\"])(oldEncodingWithoutContinuousAxis, config);\n    const aggregate = [...oldAggregate, ...errorBarSpecificAggregate];\n    const groupby = inputType !== 'raw' ? [] : oldGroupBy;\n    const tooltipEncoding = Object(_common__WEBPACK_IMPORTED_MODULE_6__[\"getCompositeMarkTooltip\"])(tooltipSummary, continuousAxisChannelDef, encodingWithoutContinuousAxis, tooltipTitleWithFieldName);\n    return {\n        transform: [\n            ...((_a = outerSpec.transform) !== null && _a !== void 0 ? _a : []),\n            ...bins,\n            ...timeUnits,\n            ...(aggregate.length === 0 ? [] : [{ aggregate, groupby }]),\n            ...postAggregateCalculates\n        ],\n        groupby,\n        continuousAxisChannelDef,\n        continuousAxis,\n        encodingWithoutContinuousAxis,\n        ticksOrient: orient === 'vertical' ? 'horizontal' : 'vertical',\n        markDef,\n        outerSpec,\n        tooltipEncoding\n    };\n}\nfunction errorBarAggregationAndCalculation(markDef, continuousAxisChannelDef, continuousAxisChannelDef2, continuousAxisChannelDefError, continuousAxisChannelDefError2, inputType, compositeMark, config) {\n    let errorBarSpecificAggregate = [];\n    let postAggregateCalculates = [];\n    const continuousFieldName = continuousAxisChannelDef.field;\n    let tooltipSummary;\n    let tooltipTitleWithFieldName = false;\n    if (inputType === 'raw') {\n        const center = markDef.center\n            ? markDef.center\n            : markDef.extent\n                ? markDef.extent === 'iqr'\n                    ? 'median'\n                    : 'mean'\n                : config.errorbar.center;\n        const extent = markDef.extent ? markDef.extent : center === 'mean' ? 'stderr' : 'iqr';\n        if ((center === 'median') !== (extent === 'iqr')) {\n            _log__WEBPACK_IMPORTED_MODULE_2__[\"warn\"](_log__WEBPACK_IMPORTED_MODULE_2__[\"message\"].errorBarCenterIsUsedWithWrongExtent(center, extent, compositeMark));\n        }\n        if (extent === 'stderr' || extent === 'stdev') {\n            errorBarSpecificAggregate = [\n                { op: extent, field: continuousFieldName, as: 'extent_' + continuousFieldName },\n                { op: center, field: continuousFieldName, as: 'center_' + continuousFieldName }\n            ];\n            postAggregateCalculates = [\n                {\n                    calculate: `datum[\"center_${continuousFieldName}\"] + datum[\"extent_${continuousFieldName}\"]`,\n                    as: 'upper_' + continuousFieldName\n                },\n                {\n                    calculate: `datum[\"center_${continuousFieldName}\"] - datum[\"extent_${continuousFieldName}\"]`,\n                    as: 'lower_' + continuousFieldName\n                }\n            ];\n            tooltipSummary = [\n                { fieldPrefix: 'center_', titlePrefix: Object(_util__WEBPACK_IMPORTED_MODULE_4__[\"titleCase\"])(center) },\n                { fieldPrefix: 'upper_', titlePrefix: getTitlePrefix(center, extent, '+') },\n                { fieldPrefix: 'lower_', titlePrefix: getTitlePrefix(center, extent, '-') }\n            ];\n            tooltipTitleWithFieldName = true;\n        }\n        else {\n            let centerOp;\n            let lowerExtentOp;\n            let upperExtentOp;\n            if (extent === 'ci') {\n                centerOp = 'mean';\n                lowerExtentOp = 'ci0';\n                upperExtentOp = 'ci1';\n            }\n            else {\n                centerOp = 'median';\n                lowerExtentOp = 'q1';\n                upperExtentOp = 'q3';\n            }\n            errorBarSpecificAggregate = [\n                { op: lowerExtentOp, field: continuousFieldName, as: 'lower_' + continuousFieldName },\n                { op: upperExtentOp, field: continuousFieldName, as: 'upper_' + continuousFieldName },\n                { op: centerOp, field: continuousFieldName, as: 'center_' + continuousFieldName }\n            ];\n            tooltipSummary = [\n                {\n                    fieldPrefix: 'upper_',\n                    titlePrefix: Object(_channeldef__WEBPACK_IMPORTED_MODULE_0__[\"title\"])({ field: continuousFieldName, aggregate: upperExtentOp, type: 'quantitative' }, config, {\n                        allowDisabling: false\n                    })\n                },\n                {\n                    fieldPrefix: 'lower_',\n                    titlePrefix: Object(_channeldef__WEBPACK_IMPORTED_MODULE_0__[\"title\"])({ field: continuousFieldName, aggregate: lowerExtentOp, type: 'quantitative' }, config, {\n                        allowDisabling: false\n                    })\n                },\n                {\n                    fieldPrefix: 'center_',\n                    titlePrefix: Object(_channeldef__WEBPACK_IMPORTED_MODULE_0__[\"title\"])({ field: continuousFieldName, aggregate: centerOp, type: 'quantitative' }, config, {\n                        allowDisabling: false\n                    })\n                }\n            ];\n        }\n    }\n    else {\n        if (markDef.center || markDef.extent) {\n            _log__WEBPACK_IMPORTED_MODULE_2__[\"warn\"](_log__WEBPACK_IMPORTED_MODULE_2__[\"message\"].errorBarCenterAndExtentAreNotNeeded(markDef.center, markDef.extent));\n        }\n        if (inputType === 'aggregated-upper-lower') {\n            tooltipSummary = [];\n            postAggregateCalculates = [\n                { calculate: `datum[\"${continuousAxisChannelDef2.field}\"]`, as: 'upper_' + continuousFieldName },\n                { calculate: `datum[\"${continuousFieldName}\"]`, as: 'lower_' + continuousFieldName }\n            ];\n        }\n        else if (inputType === 'aggregated-error') {\n            tooltipSummary = [{ fieldPrefix: '', titlePrefix: continuousFieldName }];\n            postAggregateCalculates = [\n                {\n                    calculate: `datum[\"${continuousFieldName}\"] + datum[\"${continuousAxisChannelDefError.field}\"]`,\n                    as: 'upper_' + continuousFieldName\n                }\n            ];\n            if (continuousAxisChannelDefError2) {\n                postAggregateCalculates.push({\n                    calculate: `datum[\"${continuousFieldName}\"] + datum[\"${continuousAxisChannelDefError2.field}\"]`,\n                    as: 'lower_' + continuousFieldName\n                });\n            }\n            else {\n                postAggregateCalculates.push({\n                    calculate: `datum[\"${continuousFieldName}\"] - datum[\"${continuousAxisChannelDefError.field}\"]`,\n                    as: 'lower_' + continuousFieldName\n                });\n            }\n        }\n        for (const postAggregateCalculate of postAggregateCalculates) {\n            tooltipSummary.push({\n                fieldPrefix: postAggregateCalculate.as.substring(0, 6),\n                titlePrefix: Object(_util__WEBPACK_IMPORTED_MODULE_4__[\"replaceAll\"])(Object(_util__WEBPACK_IMPORTED_MODULE_4__[\"replaceAll\"])(postAggregateCalculate.calculate, 'datum[\"', ''), '\"]', '')\n            });\n        }\n    }\n    return { postAggregateCalculates, errorBarSpecificAggregate, tooltipSummary, tooltipTitleWithFieldName };\n}\nfunction getTitlePrefix(center, extent, operation) {\n    return Object(_util__WEBPACK_IMPORTED_MODULE_4__[\"titleCase\"])(center) + ' ' + operation + ' ' + extent;\n}\n//# sourceMappingURL=errorbar.js.map//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,[encoded data, 24392 characters]\n//# sourceURL=webpack-internal:///./node_modules/vega-lite/build/src/compositemark/errorbar.js\n");

/***/ }),

/***/ "./node_modules/vega-lite/build/src/compositemark/index.js":
/*!*****************************************************************!*\
  !*** ./node_modules/vega-lite/build/src/compositemark/index.js ***!
  \*****************************************************************/
/*! exports provided: add, remove, getAllCompositeMarks */
/***/ (function(module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"add\", function() { return add; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"remove\", function() { return remove; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"getAllCompositeMarks\", function() { return getAllCompositeMarks; });\n/* harmony import */ var _util__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../util */ \"./node_modules/vega-lite/build/src/util.js\");\n/* harmony import */ var _base__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./base */ \"./node_modules/vega-lite/build/src/compositemark/base.js\");\n/* harmony import */ var _boxplot__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./boxplot */ \"./node_modules/vega-lite/build/src/compositemark/boxplot.js\");\n/* harmony import */ var _errorband__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ./errorband */ \"./node_modules/vega-lite/build/src/compositemark/errorband.js\");\n/* harmony import */ var _errorbar__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ./errorbar */ \"./node_modules/vega-lite/build/src/compositemark/errorbar.js\");\n\n\n\n\n\n/**\n * Registry index for all composite mark's normalizer\n */\nconst compositeMarkRegistry = {};\nfunction add(mark, run, parts) {\n    const normalizer = new _base__WEBPACK_IMPORTED_MODULE_1__[\"CompositeMarkNormalizer\"](mark, run);\n    compositeMarkRegistry[mark] = { normalizer, parts };\n}\nfunction remove(mark) {\n    delete compositeMarkRegistry[mark];\n}\nfunction getAllCompositeMarks() {\n    return Object(_util__WEBPACK_IMPORTED_MODULE_0__[\"keys\"])(compositeMarkRegistry);\n}\nadd(_boxplot__WEBPACK_IMPORTED_MODULE_2__[\"BOXPLOT\"], _boxplot__WEBPACK_IMPORTED_MODULE_2__[\"normalizeBoxPlot\"], _boxplot__WEBPACK_IMPORTED_MODULE_2__[\"BOXPLOT_PARTS\"]);\nadd(_errorbar__WEBPACK_IMPORTED_MODULE_4__[\"ERRORBAR\"], _errorbar__WEBPACK_IMPORTED_MODULE_4__[\"normalizeErrorBar\"], _errorbar__WEBPACK_IMPORTED_MODULE_4__[\"ERRORBAR_PARTS\"]);\nadd(_errorband__WEBPACK_IMPORTED_MODULE_3__[\"ERRORBAND\"], _errorband__WEBPACK_IMPORTED_MODULE_3__[\"normalizeErrorBand\"], _errorband__WEBPACK_IMPORTED_MODULE_3__[\"ERRORBAND_PARTS\"]);\n//# sourceMappingURL=index.js.map//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvdmVnYS1saXRlL2J1aWxkL3NyYy9jb21wb3NpdGVtYXJrL2luZGV4LmpzLmpzIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL3ZlZ2EtbGl0ZS9idWlsZC9zcmMvY29tcG9zaXRlbWFyay9pbmRleC5qcz8xMjA3Il0sInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IGtleXMgfSBmcm9tICcuLi91dGlsJztcbmltcG9ydCB7IENvbXBvc2l0ZU1hcmtOb3JtYWxpemVyIH0gZnJvbSAnLi9iYXNlJztcbmltcG9ydCB7IEJPWFBMT1QsIEJPWFBMT1RfUEFSVFMsIG5vcm1hbGl6ZUJveFBsb3QgfSBmcm9tICcuL2JveHBsb3QnO1xuaW1wb3J0IHsgRVJST1JCQU5ELCBFUlJPUkJBTkRfUEFSVFMsIG5vcm1hbGl6ZUVycm9yQmFuZCB9IGZyb20gJy4vZXJyb3JiYW5kJztcbmltcG9ydCB7IEVSUk9SQkFSLCBFUlJPUkJBUl9QQVJUUywgbm9ybWFsaXplRXJyb3JCYXIgfSBmcm9tICcuL2Vycm9yYmFyJztcbi8qKlxuICogUmVnaXN0cnkgaW5kZXggZm9yIGFsbCBjb21wb3NpdGUgbWFyaydzIG5vcm1hbGl6ZXJcbiAqL1xuY29uc3QgY29tcG9zaXRlTWFya1JlZ2lzdHJ5ID0ge307XG5leHBvcnQgZnVuY3Rpb24gYWRkKG1hcmssIHJ1biwgcGFydHMpIHtcbiAgICBjb25zdCBub3JtYWxpemVyID0gbmV3IENvbXBvc2l0ZU1hcmtOb3JtYWxpemVyKG1hcmssIHJ1bik7XG4gICAgY29tcG9zaXRlTWFya1JlZ2lzdHJ5W21hcmtdID0geyBub3JtYWxpemVyLCBwYXJ0cyB9O1xufVxuZXhwb3J0IGZ1bmN0aW9uIHJlbW92ZShtYXJrKSB7XG4gICAgZGVsZXRlIGNvbXBvc2l0ZU1hcmtSZWdpc3RyeVttYXJrXTtcbn1cbmV4cG9ydCBmdW5jdGlvbiBnZXRBbGxDb21wb3NpdGVNYXJrcygpIHtcbiAgICByZXR1cm4ga2V5cyhjb21wb3NpdGVNYXJrUmVnaXN0cnkpO1xufVxuYWRkKEJPWFBMT1QsIG5vcm1hbGl6ZUJveFBsb3QsIEJPWFBMT1RfUEFSVFMpO1xuYWRkKEVSUk9SQkFSLCBub3JtYWxpemVFcnJvckJhciwgRVJST1JCQVJfUEFSVFMpO1xuYWRkKEVSUk9SQkFORCwgbm9ybWFsaXplRXJyb3JCYW5kLCBFUlJPUkJBTkRfUEFSVFMpO1xuLy8jIHNvdXJjZU1hcHBpbmdVUkw9aW5kZXguanMubWFwIl0sIm1hcHBpbmdzIjoiQUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBIiwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///./node_modules/vega-lite/build/src/compositemark/index.js\n");

/***/ }),

/***/ "./node_modules/vega-lite/build/src/config.js":
/*!****************************************************!*\
  !*** ./node_modules/vega-lite/build/src/config.js ***!
  \****************************************************/
/*! exports provided: getViewConfigContinuousSize, getViewConfigDiscreteStep, getViewConfigDiscreteSize, DEFAULT_STEP, defaultViewConfig, isVgScheme, defaultConfig, DEFAULT_FONT_SIZE, DEFAULT_COLOR, colorSignalConfig, fontSizeSignalConfig, fontConfig, initConfig, stripAndRedirectConfig */
/***/ (function(module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"getViewConfigContinuousSize\", function() { return getViewConfigContinuousSize; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"getViewConfigDiscreteStep\", function() { return getViewConfigDiscreteStep; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"getViewConfigDiscreteSize\", function() { return getViewConfigDiscreteSize; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"DEFAULT_STEP\", function() { return DEFAULT_STEP; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"defaultViewConfig\", function() { return defaultViewConfig; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"isVgScheme\", function() { return isVgScheme; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"defaultConfig\", function() { return defaultConfig; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"DEFAULT_FONT_SIZE\", function() { return DEFAULT_FONT_SIZE; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"DEFAULT_COLOR\", function() { return DEFAULT_COLOR; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"colorSignalConfig\", function() { return colorSignalConfig; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"fontSizeSignalConfig\", function() { return fontSizeSignalConfig; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"fontConfig\", function() { return fontConfig; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"initConfig\", function() { return initConfig; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"stripAndRedirectConfig\", function() { return stripAndRedirectConfig; });\n/* harmony import */ var vega_util__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! vega-util */ \"./node_modules/vega-lite/node_modules/vega-util/build/vega-util.module.js\");\n/* harmony import */ var _axis__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./axis */ \"./node_modules/vega-lite/build/src/axis.js\");\n/* harmony import */ var _compile_common__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./compile/common */ \"./node_modules/vega-lite/build/src/compile/common.js\");\n/* harmony import */ var _compositemark__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ./compositemark */ \"./node_modules/vega-lite/build/src/compositemark/index.js\");\n/* harmony import */ var _expr__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ./expr */ \"./node_modules/vega-lite/build/src/expr.js\");\n/* harmony import */ var _guide__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! ./guide */ \"./node_modules/vega-lite/build/src/guide.js\");\n/* harmony import */ var _header__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! ./header */ \"./node_modules/vega-lite/build/src/header.js\");\n/* harmony import */ var _legend__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! ./legend */ \"./node_modules/vega-lite/build/src/legend.js\");\n/* harmony import */ var _mark__WEBPACK_IMPORTED_MODULE_8__ = __webpack_require__(/*! ./mark */ \"./node_modules/vega-lite/build/src/mark.js\");\n/* harmony import */ var _parameter__WEBPACK_IMPORTED_MODULE_9__ = __webpack_require__(/*! ./parameter */ \"./node_modules/vega-lite/build/src/parameter.js\");\n/* harmony import */ var _scale__WEBPACK_IMPORTED_MODULE_10__ = __webpack_require__(/*! ./scale */ \"./node_modules/vega-lite/build/src/scale.js\");\n/* harmony import */ var _selection__WEBPACK_IMPORTED_MODULE_11__ = __webpack_require__(/*! ./selection */ \"./node_modules/vega-lite/build/src/selection.js\");\n/* harmony import */ var _spec_base__WEBPACK_IMPORTED_MODULE_12__ = __webpack_require__(/*! ./spec/base */ \"./node_modules/vega-lite/build/src/spec/base.js\");\n/* harmony import */ var _title__WEBPACK_IMPORTED_MODULE_13__ = __webpack_require__(/*! ./title */ \"./node_modules/vega-lite/build/src/title.js\");\n/* harmony import */ var _util__WEBPACK_IMPORTED_MODULE_14__ = __webpack_require__(/*! ./util */ \"./node_modules/vega-lite/build/src/util.js\");\nvar __rest = (undefined && undefined.__rest) || function (s, e) {\n    var t = {};\n    for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0)\n        t[p] = s[p];\n    if (s != null && typeof Object.getOwnPropertySymbols === \"function\")\n        for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) {\n            if (e.indexOf(p[i]) < 0 && Object.prototype.propertyIsEnumerable.call(s, p[i]))\n                t[p[i]] = s[p[i]];\n        }\n    return t;\n};\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\nfunction getViewConfigContinuousSize(viewConfig, channel) {\n    var _a;\n    return (_a = viewConfig[channel]) !== null && _a !== void 0 ? _a : viewConfig[channel === 'width' ? 'continuousWidth' : 'continuousHeight']; // get width/height for backwards compatibility\n}\nfunction getViewConfigDiscreteStep(viewConfig, channel) {\n    const size = getViewConfigDiscreteSize(viewConfig, channel);\n    return Object(_spec_base__WEBPACK_IMPORTED_MODULE_12__[\"isStep\"])(size) ? size.step : DEFAULT_STEP;\n}\nfunction getViewConfigDiscreteSize(viewConfig, channel) {\n    var _a;\n    const size = (_a = viewConfig[channel]) !== null && _a !== void 0 ? _a : viewConfig[channel === 'width' ? 'discreteWidth' : 'discreteHeight']; // get width/height for backwards compatibility\n    return Object(_util__WEBPACK_IMPORTED_MODULE_14__[\"getFirstDefined\"])(size, { step: viewConfig.step });\n}\nconst DEFAULT_STEP = 20;\nconst defaultViewConfig = {\n    continuousWidth: 200,\n    continuousHeight: 200,\n    step: DEFAULT_STEP\n};\nfunction isVgScheme(rangeScheme) {\n    return rangeScheme && !!rangeScheme['scheme'];\n}\nconst defaultConfig = {\n    background: 'white',\n    padding: 5,\n    timeFormat: '%b %d, %Y',\n    countTitle: 'Count of Records',\n    view: defaultViewConfig,\n    mark: _mark__WEBPACK_IMPORTED_MODULE_8__[\"defaultMarkConfig\"],\n    arc: {},\n    area: {},\n    bar: _mark__WEBPACK_IMPORTED_MODULE_8__[\"defaultBarConfig\"],\n    circle: {},\n    geoshape: {},\n    image: {},\n    line: {},\n    point: {},\n    rect: _mark__WEBPACK_IMPORTED_MODULE_8__[\"defaultRectConfig\"],\n    rule: { color: 'black' },\n    square: {},\n    text: { color: 'black' },\n    tick: _mark__WEBPACK_IMPORTED_MODULE_8__[\"defaultTickConfig\"],\n    trail: {},\n    boxplot: {\n        size: 14,\n        extent: 1.5,\n        box: {},\n        median: { color: 'white' },\n        outliers: {},\n        rule: {},\n        ticks: null\n    },\n    errorbar: {\n        center: 'mean',\n        rule: true,\n        ticks: false\n    },\n    errorband: {\n        band: {\n            opacity: 0.3\n        },\n        borders: false\n    },\n    scale: _scale__WEBPACK_IMPORTED_MODULE_10__[\"defaultScaleConfig\"],\n    projection: {},\n    legend: _legend__WEBPACK_IMPORTED_MODULE_7__[\"defaultLegendConfig\"],\n    header: { titlePadding: 10, labelPadding: 10 },\n    headerColumn: {},\n    headerRow: {},\n    headerFacet: {},\n    selection: _selection__WEBPACK_IMPORTED_MODULE_11__[\"defaultConfig\"],\n    style: {},\n    title: {},\n    facet: { spacing: _spec_base__WEBPACK_IMPORTED_MODULE_12__[\"DEFAULT_SPACING\"] },\n    concat: { spacing: _spec_base__WEBPACK_IMPORTED_MODULE_12__[\"DEFAULT_SPACING\"] }\n};\n// Tableau10 color palette, copied from `vegaScale.scheme('tableau10')`\nconst tab10 = [\n    '#4c78a8',\n    '#f58518',\n    '#e45756',\n    '#72b7b2',\n    '#54a24b',\n    '#eeca3b',\n    '#b279a2',\n    '#ff9da6',\n    '#9d755d',\n    '#bab0ac'\n];\nconst DEFAULT_FONT_SIZE = {\n    text: 11,\n    guideLabel: 10,\n    guideTitle: 11,\n    groupTitle: 13,\n    groupSubtitle: 12\n};\nconst DEFAULT_COLOR = {\n    blue: tab10[0],\n    orange: tab10[1],\n    red: tab10[2],\n    teal: tab10[3],\n    green: tab10[4],\n    yellow: tab10[5],\n    purple: tab10[6],\n    pink: tab10[7],\n    brown: tab10[8],\n    gray0: '#000',\n    gray1: '#111',\n    gray2: '#222',\n    gray3: '#333',\n    gray4: '#444',\n    gray5: '#555',\n    gray6: '#666',\n    gray7: '#777',\n    gray8: '#888',\n    gray9: '#999',\n    gray10: '#aaa',\n    gray11: '#bbb',\n    gray12: '#ccc',\n    gray13: '#ddd',\n    gray14: '#eee',\n    gray15: '#fff'\n};\nfunction colorSignalConfig(color = {}) {\n    return {\n        signals: [\n            {\n                name: 'color',\n                value: Object(vega_util__WEBPACK_IMPORTED_MODULE_0__[\"isObject\"])(color) ? Object.assign(Object.assign({}, DEFAULT_COLOR), color) : DEFAULT_COLOR\n            }\n        ],\n        mark: { color: { signal: 'color.blue' } },\n        rule: { color: { signal: 'color.gray0' } },\n        text: {\n            color: { signal: 'color.gray0' }\n        },\n        style: {\n            'guide-label': {\n                fill: { signal: 'color.gray0' }\n            },\n            'guide-title': {\n                fill: { signal: 'color.gray0' }\n            },\n            'group-title': {\n                fill: { signal: 'color.gray0' }\n            },\n            'group-subtitle': {\n                fill: { signal: 'color.gray0' }\n            },\n            cell: {\n                stroke: { signal: 'color.gray8' }\n            }\n        },\n        axis: {\n            domainColor: { signal: 'color.gray13' },\n            gridColor: { signal: 'color.gray8' },\n            tickColor: { signal: 'color.gray13' }\n        },\n        range: {\n            category: [\n                { signal: 'color.blue' },\n                { signal: 'color.orange' },\n                { signal: 'color.red' },\n                { signal: 'color.teal' },\n                { signal: 'color.green' },\n                { signal: 'color.yellow' },\n                { signal: 'color.purple' },\n                { signal: 'color.pink' },\n                { signal: 'color.brown' },\n                { signal: 'color.grey8' }\n            ]\n        }\n    };\n}\nfunction fontSizeSignalConfig(fontSize) {\n    return {\n        signals: [\n            {\n                name: 'fontSize',\n                value: Object(vega_util__WEBPACK_IMPORTED_MODULE_0__[\"isObject\"])(fontSize) ? Object.assign(Object.assign({}, DEFAULT_FONT_SIZE), fontSize) : DEFAULT_FONT_SIZE\n            }\n        ],\n        text: {\n            fontSize: { signal: 'fontSize.text' }\n        },\n        style: {\n            'guide-label': {\n                fontSize: { signal: 'fontSize.guideLabel' }\n            },\n            'guide-title': {\n                fontSize: { signal: 'fontSize.guideTitle' }\n            },\n            'group-title': {\n                fontSize: { signal: 'fontSize.groupTitle' }\n            },\n            'group-subtitle': {\n                fontSize: { signal: 'fontSize.groupSubtitle' }\n            }\n        }\n    };\n}\nfunction fontConfig(font) {\n    return {\n        text: { font },\n        style: {\n            'guide-label': { font },\n            'guide-title': { font },\n            'group-title': { font },\n            'group-subtitle': { font }\n        }\n    };\n}\nfunction getAxisConfigInternal(axisConfig) {\n    const props = Object(_util__WEBPACK_IMPORTED_MODULE_14__[\"keys\"])(axisConfig || {});\n    const axisConfigInternal = {};\n    for (const prop of props) {\n        const val = axisConfig[prop];\n        axisConfigInternal[prop] = Object(_axis__WEBPACK_IMPORTED_MODULE_1__[\"isConditionalAxisValue\"])(val)\n            ? Object(_compile_common__WEBPACK_IMPORTED_MODULE_2__[\"signalOrValueRefWithCondition\"])(val)\n            : Object(_compile_common__WEBPACK_IMPORTED_MODULE_2__[\"signalRefOrValue\"])(val);\n    }\n    return axisConfigInternal;\n}\nfunction getStyleConfigInternal(styleConfig) {\n    const props = Object(_util__WEBPACK_IMPORTED_MODULE_14__[\"keys\"])(styleConfig);\n    const styleConfigInternal = {};\n    for (const prop of props) {\n        // We need to cast to cheat a bit here since styleConfig can be either mark config or axis config\n        styleConfigInternal[prop] = getAxisConfigInternal(styleConfig[prop]);\n    }\n    return styleConfigInternal;\n}\nconst configPropsWithExpr = [\n    ..._mark__WEBPACK_IMPORTED_MODULE_8__[\"MARK_CONFIGS\"],\n    ..._axis__WEBPACK_IMPORTED_MODULE_1__[\"AXIS_CONFIGS\"],\n    ..._header__WEBPACK_IMPORTED_MODULE_6__[\"HEADER_CONFIGS\"],\n    'background',\n    'padding',\n    'legend',\n    'lineBreak',\n    'scale',\n    'style',\n    'title',\n    'view'\n];\n/**\n * Merge specified config with default config and config for the `color` flag,\n * then replace all expressions with signals\n */\nfunction initConfig(specifiedConfig = {}) {\n    const { color, font, fontSize } = specifiedConfig, restConfig = __rest(specifiedConfig, [\"color\", \"font\", \"fontSize\"]);\n    const mergedConfig = Object(vega_util__WEBPACK_IMPORTED_MODULE_0__[\"mergeConfig\"])({}, defaultConfig, font ? fontConfig(font) : {}, color ? colorSignalConfig(color) : {}, fontSize ? fontSizeSignalConfig(fontSize) : {}, restConfig || {});\n    const outputConfig = Object(_util__WEBPACK_IMPORTED_MODULE_14__[\"omit\"])(mergedConfig, configPropsWithExpr);\n    for (const prop of ['background', 'lineBreak', 'padding']) {\n        if (mergedConfig[prop]) {\n            outputConfig[prop] = Object(_compile_common__WEBPACK_IMPORTED_MODULE_2__[\"signalRefOrValue\"])(mergedConfig[prop]);\n        }\n    }\n    for (const markConfigType of _mark__WEBPACK_IMPORTED_MODULE_8__[\"MARK_CONFIGS\"]) {\n        if (mergedConfig[markConfigType]) {\n            outputConfig[markConfigType] = Object(_expr__WEBPACK_IMPORTED_MODULE_4__[\"replaceExprRefInIndex\"])(mergedConfig[markConfigType]);\n        }\n    }\n    for (const axisConfigType of _axis__WEBPACK_IMPORTED_MODULE_1__[\"AXIS_CONFIGS\"]) {\n        if (mergedConfig[axisConfigType]) {\n            outputConfig[axisConfigType] = getAxisConfigInternal(mergedConfig[axisConfigType]);\n        }\n    }\n    for (const headerConfigType of _header__WEBPACK_IMPORTED_MODULE_6__[\"HEADER_CONFIGS\"]) {\n        if (mergedConfig[headerConfigType]) {\n            outputConfig[headerConfigType] = Object(_expr__WEBPACK_IMPORTED_MODULE_4__[\"replaceExprRefInIndex\"])(mergedConfig[headerConfigType]);\n        }\n    }\n    if (mergedConfig.legend) {\n        outputConfig.legend = Object(_expr__WEBPACK_IMPORTED_MODULE_4__[\"replaceExprRefInIndex\"])(mergedConfig.legend);\n    }\n    if (mergedConfig.scale) {\n        outputConfig.scale = Object(_expr__WEBPACK_IMPORTED_MODULE_4__[\"replaceExprRefInIndex\"])(mergedConfig.scale);\n    }\n    if (mergedConfig.style) {\n        outputConfig.style = getStyleConfigInternal(mergedConfig.style);\n    }\n    if (mergedConfig.title) {\n        outputConfig.title = Object(_expr__WEBPACK_IMPORTED_MODULE_4__[\"replaceExprRefInIndex\"])(mergedConfig.title);\n    }\n    if (mergedConfig.view) {\n        outputConfig.view = Object(_expr__WEBPACK_IMPORTED_MODULE_4__[\"replaceExprRefInIndex\"])(mergedConfig.view);\n    }\n    return outputConfig;\n}\nconst MARK_STYLES = ['view', ..._mark__WEBPACK_IMPORTED_MODULE_8__[\"PRIMITIVE_MARKS\"]];\nconst VL_ONLY_CONFIG_PROPERTIES = [\n    'color',\n    'fontSize',\n    'background',\n    'padding',\n    'facet',\n    'concat',\n    'numberFormat',\n    'timeFormat',\n    'countTitle',\n    'header',\n    'axisQuantitative',\n    'axisTemporal',\n    'axisDiscrete',\n    'axisPoint',\n    'axisXBand',\n    'axisXPoint',\n    'axisXDiscrete',\n    'axisXQuantitative',\n    'axisXTemporal',\n    'axisYBand',\n    'axisYPoint',\n    'axisYDiscrete',\n    'axisYQuantitative',\n    'axisYTemporal',\n    'scale',\n    'selection',\n    'overlay' // FIXME: Redesign and unhide this\n];\nconst VL_ONLY_ALL_MARK_SPECIFIC_CONFIG_PROPERTY_INDEX = Object.assign({ view: ['continuousWidth', 'continuousHeight', 'discreteWidth', 'discreteHeight', 'step'] }, _mark__WEBPACK_IMPORTED_MODULE_8__[\"VL_ONLY_MARK_SPECIFIC_CONFIG_PROPERTY_INDEX\"]);\nfunction stripAndRedirectConfig(config) {\n    config = Object(_util__WEBPACK_IMPORTED_MODULE_14__[\"duplicate\"])(config);\n    for (const prop of VL_ONLY_CONFIG_PROPERTIES) {\n        delete config[prop];\n    }\n    if (config.axis) {\n        // delete condition axis config\n        for (const prop in config.axis) {\n            if (Object(_axis__WEBPACK_IMPORTED_MODULE_1__[\"isConditionalAxisValue\"])(config.axis[prop])) {\n                delete config.axis[prop];\n            }\n        }\n    }\n    if (config.legend) {\n        for (const prop of _guide__WEBPACK_IMPORTED_MODULE_5__[\"VL_ONLY_LEGEND_CONFIG\"]) {\n            delete config.legend[prop];\n        }\n    }\n    // Remove Vega-Lite only generic mark config\n    if (config.mark) {\n        for (const prop of _mark__WEBPACK_IMPORTED_MODULE_8__[\"VL_ONLY_MARK_CONFIG_PROPERTIES\"]) {\n            delete config.mark[prop];\n        }\n        if (config.mark.tooltip && Object(vega_util__WEBPACK_IMPORTED_MODULE_0__[\"isObject\"])(config.mark.tooltip)) {\n            delete config.mark.tooltip;\n        }\n    }\n    if (config.params) {\n        config.signals = (config.signals || []).concat(Object(_parameter__WEBPACK_IMPORTED_MODULE_9__[\"assembleParameterSignals\"])(config.params));\n        delete config.params;\n    }\n    for (const markType of MARK_STYLES) {\n        // Remove Vega-Lite-only mark config\n        for (const prop of _mark__WEBPACK_IMPORTED_MODULE_8__[\"VL_ONLY_MARK_CONFIG_PROPERTIES\"]) {\n            delete config[markType][prop];\n        }\n        // Remove Vega-Lite only mark-specific config\n        const vlOnlyMarkSpecificConfigs = VL_ONLY_ALL_MARK_SPECIFIC_CONFIG_PROPERTY_INDEX[markType];\n        if (vlOnlyMarkSpecificConfigs) {\n            for (const prop of vlOnlyMarkSpecificConfigs) {\n                delete config[markType][prop];\n            }\n        }\n        // Redirect mark config to config.style so that mark config only affect its own mark type\n        // without affecting other marks that share the same underlying Vega marks.\n        // For example, config.rect should not affect bar marks.\n        redirectConfigToStyleConfig(config, markType);\n    }\n    for (const m of Object(_compositemark__WEBPACK_IMPORTED_MODULE_3__[\"getAllCompositeMarks\"])()) {\n        // Clean up the composite mark config as we don't need them in the output specs anymore\n        delete config[m];\n    }\n    redirectTitleConfig(config);\n    // Remove empty config objects.\n    for (const prop in config) {\n        if (Object(vega_util__WEBPACK_IMPORTED_MODULE_0__[\"isObject\"])(config[prop]) && Object(_util__WEBPACK_IMPORTED_MODULE_14__[\"isEmpty\"])(config[prop])) {\n            delete config[prop];\n        }\n    }\n    return Object(_util__WEBPACK_IMPORTED_MODULE_14__[\"isEmpty\"])(config) ? undefined : config;\n}\n/**\n *\n * Redirect config.title -- so that title config do not affect header labels,\n * which also uses `title` directive to implement.\n *\n * For subtitle configs in config.title, keep them in config.title as header titles never have subtitles.\n */\nfunction redirectTitleConfig(config) {\n    const { titleMarkConfig, subtitleMarkConfig, subtitle } = Object(_title__WEBPACK_IMPORTED_MODULE_13__[\"extractTitleConfig\"])(config.title);\n    // set config.style if title/subtitleMarkConfig is not an empty object\n    if (!Object(_util__WEBPACK_IMPORTED_MODULE_14__[\"isEmpty\"])(titleMarkConfig)) {\n        config.style['group-title'] = Object.assign(Object.assign({}, config.style['group-title']), titleMarkConfig // config.title has higher precedence than config.style.group-title in Vega\n        );\n    }\n    if (!Object(_util__WEBPACK_IMPORTED_MODULE_14__[\"isEmpty\"])(subtitleMarkConfig)) {\n        config.style['group-subtitle'] = Object.assign(Object.assign({}, config.style['group-subtitle']), subtitleMarkConfig);\n    }\n    // subtitle part can stay in config.title since header titles do not use subtitle\n    if (!Object(_util__WEBPACK_IMPORTED_MODULE_14__[\"isEmpty\"])(subtitle)) {\n        config.title = subtitle;\n    }\n    else {\n        delete config.title;\n    }\n}\nfunction redirectConfigToStyleConfig(config, prop, // string = composite mark\ntoProp, compositeMarkPart) {\n    const propConfig = compositeMarkPart ? config[prop][compositeMarkPart] : config[prop];\n    if (prop === 'view') {\n        toProp = 'cell'; // View's default style is \"cell\"\n    }\n    const style = Object.assign(Object.assign({}, propConfig), config.style[toProp !== null && toProp !== void 0 ? toProp : prop]);\n    // set config.style if it is not an empty object\n    if (!Object(_util__WEBPACK_IMPORTED_MODULE_14__[\"isEmpty\"])(style)) {\n        config.style[toProp !== null && toProp !== void 0 ? toProp : prop] = style;\n    }\n    if (!compositeMarkPart) {\n        // For composite mark, so don't delete the whole config yet as we have to do multiple redirections.\n        delete config[prop];\n    }\n}\n//# sourceMappingURL=config.js.map//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,[encoded data, 24300 characters]\n//# sourceURL=webpack-internal:///./node_modules/vega-lite/build/src/config.js\n");

/***/ }),

/***/ "./node_modules/vega-lite/build/src/data.js":
/*!**************************************************!*\
  !*** ./node_modules/vega-lite/build/src/data.js ***!
  \**************************************************/
/*! exports provided: isUrlData, isInlineData, isNamedData, isGenerator, isSequenceGenerator, isSphereGenerator, isGraticuleGenerator, DataSourceType */
/***/ (function(module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"isUrlData\", function() { return isUrlData; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"isInlineData\", function() { return isInlineData; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"isNamedData\", function() { return isNamedData; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"isGenerator\", function() { return isGenerator; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"isSequenceGenerator\", function() { return isSequenceGenerator; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"isSphereGenerator\", function() { return isSphereGenerator; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"isGraticuleGenerator\", function() { return isGraticuleGenerator; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"DataSourceType\", function() { return DataSourceType; });\nfunction isUrlData(data) {\n    return 'url' in data;\n}\nfunction isInlineData(data) {\n    return 'values' in data;\n}\nfunction isNamedData(data) {\n    return 'name' in data && !isUrlData(data) && !isInlineData(data) && !isGenerator(data);\n}\nfunction isGenerator(data) {\n    return data && (isSequenceGenerator(data) || isSphereGenerator(data) || isGraticuleGenerator(data));\n}\nfunction isSequenceGenerator(data) {\n    return 'sequence' in data;\n}\nfunction isSphereGenerator(data) {\n    return 'sphere' in data;\n}\nfunction isGraticuleGenerator(data) {\n    return 'graticule' in data;\n}\nvar DataSourceType;\n(function (DataSourceType) {\n    DataSourceType[DataSourceType[\"Raw\"] = 0] = \"Raw\";\n    DataSourceType[DataSourceType[\"Main\"] = 1] = \"Main\";\n    DataSourceType[DataSourceType[\"Row\"] = 2] = \"Row\";\n    DataSourceType[DataSourceType[\"Column\"] = 3] = \"Column\";\n    DataSourceType[DataSourceType[\"Lookup\"] = 4] = \"Lookup\";\n})(DataSourceType || (DataSourceType = {}));\n//# sourceMappingURL=data.js.map//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvdmVnYS1saXRlL2J1aWxkL3NyYy9kYXRhLmpzLmpzIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL3ZlZ2EtbGl0ZS9idWlsZC9zcmMvZGF0YS5qcz8zNDIyIl0sInNvdXJjZXNDb250ZW50IjpbImV4cG9ydCBmdW5jdGlvbiBpc1VybERhdGEoZGF0YSkge1xuICAgIHJldHVybiAndXJsJyBpbiBkYXRhO1xufVxuZXhwb3J0IGZ1bmN0aW9uIGlzSW5saW5lRGF0YShkYXRhKSB7XG4gICAgcmV0dXJuICd2YWx1ZXMnIGluIGRhdGE7XG59XG5leHBvcnQgZnVuY3Rpb24gaXNOYW1lZERhdGEoZGF0YSkge1xuICAgIHJldHVybiAnbmFtZScgaW4gZGF0YSAmJiAhaXNVcmxEYXRhKGRhdGEpICYmICFpc0lubGluZURhdGEoZGF0YSkgJiYgIWlzR2VuZXJhdG9yKGRhdGEpO1xufVxuZXhwb3J0IGZ1bmN0aW9uIGlzR2VuZXJhdG9yKGRhdGEpIHtcbiAgICByZXR1cm4gZGF0YSAmJiAoaXNTZXF1ZW5jZUdlbmVyYXRvcihkYXRhKSB8fCBpc1NwaGVyZUdlbmVyYXRvcihkYXRhKSB8fCBpc0dyYXRpY3VsZUdlbmVyYXRvcihkYXRhKSk7XG59XG5leHBvcnQgZnVuY3Rpb24gaXNTZXF1ZW5jZUdlbmVyYXRvcihkYXRhKSB7XG4gICAgcmV0dXJuICdzZXF1ZW5jZScgaW4gZGF0YTtcbn1cbmV4cG9ydCBmdW5jdGlvbiBpc1NwaGVyZUdlbmVyYXRvcihkYXRhKSB7XG4gICAgcmV0dXJuICdzcGhlcmUnIGluIGRhdGE7XG59XG5leHBvcnQgZnVuY3Rpb24gaXNHcmF0aWN1bGVHZW5lcmF0b3IoZGF0YSkge1xuICAgIHJldHVybiAnZ3JhdGljdWxlJyBpbiBkYXRhO1xufVxuZXhwb3J0IHZhciBEYXRhU291cmNlVHlwZTtcbihmdW5jdGlvbiAoRGF0YVNvdXJjZVR5cGUpIHtcbiAgICBEYXRhU291cmNlVHlwZVtEYXRhU291cmNlVHlwZVtcIlJhd1wiXSA9IDBdID0gXCJSYXdcIjtcbiAgICBEYXRhU291cmNlVHlwZVtEYXRhU291cmNlVHlwZVtcIk1haW5cIl0gPSAxXSA9IFwiTWFpblwiO1xuICAgIERhdGFTb3VyY2VUeXBlW0RhdGFTb3VyY2VUeXBlW1wiUm93XCJdID0gMl0gPSBcIlJvd1wiO1xuICAgIERhdGFTb3VyY2VUeXBlW0RhdGFTb3VyY2VUeXBlW1wiQ29sdW1uXCJdID0gM10gPSBcIkNvbHVtblwiO1xuICAgIERhdGFTb3VyY2VUeXBlW0RhdGFTb3VyY2VUeXBlW1wiTG9va3VwXCJdID0gNF0gPSBcIkxvb2t1cFwiO1xufSkoRGF0YVNvdXJjZVR5cGUgfHwgKERhdGFTb3VyY2VUeXBlID0ge30pKTtcbi8vIyBzb3VyY2VNYXBwaW5nVVJMPWRhdGEuanMubWFwIl0sIm1hcHBpbmdzIjoiQUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EiLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///./node_modules/vega-lite/build/src/data.js\n");

/***/ }),

/***/ "./node_modules/vega-lite/build/src/datetime.js":
/*!******************************************************!*\
  !*** ./node_modules/vega-lite/build/src/datetime.js ***!
  \******************************************************/
/*! exports provided: isDateTime, MONTHS, SHORT_MONTHS, DAYS, SHORT_DAYS, dateTimeToExpr, dateTimeExprToExpr, dateTimeToTimestamp */
/***/ (function(module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"isDateTime\", function() { return isDateTime; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"MONTHS\", function() { return MONTHS; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"SHORT_MONTHS\", function() { return SHORT_MONTHS; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"DAYS\", function() { return DAYS; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"SHORT_DAYS\", function() { return SHORT_DAYS; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"dateTimeToExpr\", function() { return dateTimeToExpr; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"dateTimeExprToExpr\", function() { return dateTimeExprToExpr; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"dateTimeToTimestamp\", function() { return dateTimeToTimestamp; });\n/* harmony import */ var vega_util__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! vega-util */ \"./node_modules/vega-lite/node_modules/vega-util/build/vega-util.module.js\");\n/* harmony import */ var _log__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./log */ \"./node_modules/vega-lite/build/src/log/index.js\");\n/* harmony import */ var _timeunit__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./timeunit */ \"./node_modules/vega-lite/build/src/timeunit.js\");\n/* harmony import */ var _util__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ./util */ \"./node_modules/vega-lite/build/src/util.js\");\n// DateTime definition object\n\n\n\n\nfunction isDateTime(o) {\n    if (o && Object(vega_util__WEBPACK_IMPORTED_MODULE_0__[\"isObject\"])(o)) {\n        for (const part of _timeunit__WEBPACK_IMPORTED_MODULE_2__[\"TIMEUNIT_PARTS\"]) {\n            if (part in o) {\n                return true;\n            }\n        }\n    }\n    return false;\n}\nconst MONTHS = [\n    'january',\n    'february',\n    'march',\n    'april',\n    'may',\n    'june',\n    'july',\n    'august',\n    'september',\n    'october',\n    'november',\n    'december'\n];\nconst SHORT_MONTHS = MONTHS.map(m => m.substr(0, 3));\nconst DAYS = ['sunday', 'monday', 'tuesday', 'wednesday', 'thursday', 'friday', 'saturday'];\nconst SHORT_DAYS = DAYS.map(d => d.substr(0, 3));\nfunction normalizeQuarter(q) {\n    if (Object(_util__WEBPACK_IMPORTED_MODULE_3__[\"isNumeric\"])(q)) {\n        q = +q;\n    }\n    if (Object(vega_util__WEBPACK_IMPORTED_MODULE_0__[\"isNumber\"])(q)) {\n        if (q > 4) {\n            _log__WEBPACK_IMPORTED_MODULE_1__[\"warn\"](_log__WEBPACK_IMPORTED_MODULE_1__[\"message\"].invalidTimeUnit('quarter', q));\n        }\n        // We accept 1-based quarter, so need to readjust to 0-based quarter\n        return q - 1;\n    }\n    else {\n        // Invalid quarter\n        throw new Error(_log__WEBPACK_IMPORTED_MODULE_1__[\"message\"].invalidTimeUnit('quarter', q));\n    }\n}\nfunction normalizeMonth(m) {\n    if (Object(_util__WEBPACK_IMPORTED_MODULE_3__[\"isNumeric\"])(m)) {\n        m = +m;\n    }\n    if (Object(vega_util__WEBPACK_IMPORTED_MODULE_0__[\"isNumber\"])(m)) {\n        // We accept 1-based month, so need to readjust to 0-based month\n        return m - 1;\n    }\n    else {\n        const lowerM = m.toLowerCase();\n        const monthIndex = MONTHS.indexOf(lowerM);\n        if (monthIndex !== -1) {\n            return monthIndex; // 0 for january, ...\n        }\n        const shortM = lowerM.substr(0, 3);\n        const shortMonthIndex = SHORT_MONTHS.indexOf(shortM);\n        if (shortMonthIndex !== -1) {\n            return shortMonthIndex;\n        }\n        // Invalid month\n        throw new Error(_log__WEBPACK_IMPORTED_MODULE_1__[\"message\"].invalidTimeUnit('month', m));\n    }\n}\nfunction normalizeDay(d) {\n    if (Object(_util__WEBPACK_IMPORTED_MODULE_3__[\"isNumeric\"])(d)) {\n        d = +d;\n    }\n    if (Object(vega_util__WEBPACK_IMPORTED_MODULE_0__[\"isNumber\"])(d)) {\n        // mod so that this can be both 0-based where 0 = sunday\n        // and 1-based where 7=sunday\n        return d % 7;\n    }\n    else {\n        const lowerD = d.toLowerCase();\n        const dayIndex = DAYS.indexOf(lowerD);\n        if (dayIndex !== -1) {\n            return dayIndex; // 0 for january, ...\n        }\n        const shortD = lowerD.substr(0, 3);\n        const shortDayIndex = SHORT_DAYS.indexOf(shortD);\n        if (shortDayIndex !== -1) {\n            return shortDayIndex;\n        }\n        // Invalid day\n        throw new Error(_log__WEBPACK_IMPORTED_MODULE_1__[\"message\"].invalidTimeUnit('day', d));\n    }\n}\n/**\n * @param d the date.\n * @param normalize whether to normalize quarter, month, day. This should probably be true if d is a DateTime.\n * @returns array of date time parts [year, month, day, hours, minutes, seconds, milliseconds]\n */\nfunction dateTimeParts(d, normalize) {\n    const parts = [];\n    if (normalize && d.day !== undefined) {\n        if (Object(_util__WEBPACK_IMPORTED_MODULE_3__[\"keys\"])(d).length > 1) {\n            _log__WEBPACK_IMPORTED_MODULE_1__[\"warn\"](_log__WEBPACK_IMPORTED_MODULE_1__[\"message\"].droppedDay(d));\n            d = Object(_util__WEBPACK_IMPORTED_MODULE_3__[\"duplicate\"])(d);\n            delete d.day;\n        }\n    }\n    if (d.year !== undefined) {\n        parts.push(d.year);\n    }\n    else {\n        // Just like Vega's timeunit transform, set default year to 2012, so domain conversion will be compatible with Vega\n        // Note: 2012 is a leap year (and so the date February 29 is respected) that begins on a Sunday (and so days of the week will order properly at the beginning of the year).\n        parts.push(2012);\n    }\n    if (d.month !== undefined) {\n        const month = normalize ? normalizeMonth(d.month) : d.month;\n        parts.push(month);\n    }\n    else if (d.quarter !== undefined) {\n        const quarter = normalize ? normalizeQuarter(d.quarter) : d.quarter;\n        parts.push(Object(vega_util__WEBPACK_IMPORTED_MODULE_0__[\"isNumber\"])(quarter) ? quarter * 3 : quarter + '*3');\n    }\n    else {\n        parts.push(0); // months start at zero in JS\n    }\n    if (d.date !== undefined) {\n        parts.push(d.date);\n    }\n    else if (d.day !== undefined) {\n        // HACK: Day only works as a standalone unit\n        // This is only correct because we always set year to 2006 for day\n        const day = normalize ? normalizeDay(d.day) : d.day;\n        parts.push(Object(vega_util__WEBPACK_IMPORTED_MODULE_0__[\"isNumber\"])(day) ? day + 1 : day + '+1');\n    }\n    else {\n        parts.push(1); // Date starts at 1 in JS\n    }\n    // Note: can't use TimeUnit enum here as importing it will create\n    // circular dependency problem!\n    for (const timeUnit of ['hours', 'minutes', 'seconds', 'milliseconds']) {\n        const unit = d[timeUnit];\n        parts.push(typeof unit === 'undefined' ? 0 : unit);\n    }\n    return parts;\n}\n/**\n * Return Vega expression for a date time.\n *\n * @param d the date time.\n * @returns the Vega expression.\n */\nfunction dateTimeToExpr(d) {\n    const parts = dateTimeParts(d, true);\n    const string = parts.join(', ');\n    if (d.utc) {\n        return `utc(${string})`;\n    }\n    else {\n        return `datetime(${string})`;\n    }\n}\n/**\n * Return Vega expression for a date time expression.\n *\n * @param d the internal date time object with expression.\n * @returns the Vega expression.\n */\nfunction dateTimeExprToExpr(d) {\n    const parts = dateTimeParts(d, false);\n    const string = parts.join(', ');\n    if (d.utc) {\n        return `utc(${string})`;\n    }\n    else {\n        return `datetime(${string})`;\n    }\n}\n/**\n * @param d the date time.\n * @returns the timestamp.\n */\nfunction dateTimeToTimestamp(d) {\n    const parts = dateTimeParts(d, true);\n    if (d.utc) {\n        return +new Date(Date.UTC(...parts));\n    }\n    else {\n        return +new Date(...parts);\n    }\n}\n//# sourceMappingURL=datetime.js.map//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,[encoded data, 9500 characters]\n//# sourceURL=webpack-internal:///./node_modules/vega-lite/build/src/datetime.js\n");

/***/ }),

/***/ "./node_modules/vega-lite/build/src/encoding.js":
/*!******************************************************!*\
  !*** ./node_modules/vega-lite/build/src/encoding.js ***!
  \******************************************************/
/*! exports provided: channelHasField, isAggregate, extractTransformsFromEncoding, markChannelCompatible, initEncoding, normalizeEncoding, fieldDefs, forEach, reduce, pathGroupingFields */
/***/ (function(module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"channelHasField\", function() { return channelHasField; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"isAggregate\", function() { return isAggregate; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"extractTransformsFromEncoding\", function() { return extractTransformsFromEncoding; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"markChannelCompatible\", function() { return markChannelCompatible; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"initEncoding\", function() { return initEncoding; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"normalizeEncoding\", function() { return normalizeEncoding; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"fieldDefs\", function() { return fieldDefs; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"forEach\", function() { return forEach; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"reduce\", function() { return reduce; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"pathGroupingFields\", function() { return pathGroupingFields; });\n/* harmony import */ var vega_util__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! vega-util */ \"./node_modules/vega-lite/node_modules/vega-util/build/vega-util.module.js\");\n/* harmony import */ var _aggregate__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./aggregate */ \"./node_modules/vega-lite/build/src/aggregate.js\");\n/* harmony import */ var _bin__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./bin */ \"./node_modules/vega-lite/build/src/bin.js\");\n/* harmony import */ var _channel__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ./channel */ \"./node_modules/vega-lite/build/src/channel.js\");\n/* harmony import */ var _channeldef__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ./channeldef */ \"./node_modules/vega-lite/build/src/channeldef.js\");\n/* harmony import */ var _log__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! ./log */ \"./node_modules/vega-lite/build/src/log/index.js\");\n/* harmony import */ var _type__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! ./type */ \"./node_modules/vega-lite/build/src/type.js\");\n/* harmony import */ var _util__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! ./util */ \"./node_modules/vega-lite/build/src/util.js\");\n/* harmony import */ var _vega_schema__WEBPACK_IMPORTED_MODULE_8__ = __webpack_require__(/*! ./vega.schema */ \"./node_modules/vega-lite/build/src/vega.schema.js\");\nvar __rest = (undefined && undefined.__rest) || function (s, e) {\n    var t = {};\n    for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0)\n        t[p] = s[p];\n    if (s != null && typeof Object.getOwnPropertySymbols === \"function\")\n        for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) {\n            if (e.indexOf(p[i]) < 0 && Object.prototype.propertyIsEnumerable.call(s, p[i]))\n                t[p[i]] = s[p[i]];\n        }\n    return t;\n};\n\n\n\n\n\n\n\n\n\nfunction channelHasField(encoding, channel) {\n    const channelDef = encoding && encoding[channel];\n    if (channelDef) {\n        if (Object(vega_util__WEBPACK_IMPORTED_MODULE_0__[\"isArray\"])(channelDef)) {\n            return Object(_util__WEBPACK_IMPORTED_MODULE_7__[\"some\"])(channelDef, fieldDef => !!fieldDef.field);\n        }\n        else {\n            return Object(_channeldef__WEBPACK_IMPORTED_MODULE_4__[\"isFieldDef\"])(channelDef) || Object(_channeldef__WEBPACK_IMPORTED_MODULE_4__[\"hasConditionalFieldDef\"])(channelDef);\n        }\n    }\n    return false;\n}\nfunction isAggregate(encoding) {\n    return Object(_util__WEBPACK_IMPORTED_MODULE_7__[\"some\"])(_channel__WEBPACK_IMPORTED_MODULE_3__[\"CHANNELS\"], channel => {\n        if (channelHasField(encoding, channel)) {\n            const channelDef = encoding[channel];\n            if (Object(vega_util__WEBPACK_IMPORTED_MODULE_0__[\"isArray\"])(channelDef)) {\n                return Object(_util__WEBPACK_IMPORTED_MODULE_7__[\"some\"])(channelDef, fieldDef => !!fieldDef.aggregate);\n            }\n            else {\n                const fieldDef = Object(_channeldef__WEBPACK_IMPORTED_MODULE_4__[\"getFieldDef\"])(channelDef);\n                return fieldDef && !!fieldDef.aggregate;\n            }\n        }\n        return false;\n    });\n}\nfunction extractTransformsFromEncoding(oldEncoding, config) {\n    const groupby = [];\n    const bins = [];\n    const timeUnits = [];\n    const aggregate = [];\n    const encoding = {};\n    forEach(oldEncoding, (channelDef, channel) => {\n        // Extract potential embedded transformations along with remaining properties\n        if (Object(_channeldef__WEBPACK_IMPORTED_MODULE_4__[\"isFieldDef\"])(channelDef)) {\n            const { field, aggregate: aggOp, bin, timeUnit } = channelDef, remaining = __rest(channelDef, [\"field\", \"aggregate\", \"bin\", \"timeUnit\"]);\n            if (aggOp || timeUnit || bin) {\n                const guide = Object(_channeldef__WEBPACK_IMPORTED_MODULE_4__[\"getGuide\"])(channelDef);\n                const isTitleDefined = guide && guide.title;\n                let newField = Object(_channeldef__WEBPACK_IMPORTED_MODULE_4__[\"vgField\"])(channelDef, { forAs: true });\n                const newFieldDef = Object.assign(Object.assign(Object.assign({}, (isTitleDefined ? [] : { title: Object(_channeldef__WEBPACK_IMPORTED_MODULE_4__[\"title\"])(channelDef, config, { allowDisabling: true }) })), remaining), { \n                    // Always overwrite field\n                    field: newField });\n                if (aggOp) {\n                    let op;\n                    if (Object(_aggregate__WEBPACK_IMPORTED_MODULE_1__[\"isArgmaxDef\"])(aggOp)) {\n                        op = 'argmax';\n                        newField = Object(_channeldef__WEBPACK_IMPORTED_MODULE_4__[\"vgField\"])({ op: 'argmax', field: aggOp.argmax }, { forAs: true });\n                        newFieldDef.field = `${newField}.${field}`;\n                    }\n                    else if (Object(_aggregate__WEBPACK_IMPORTED_MODULE_1__[\"isArgminDef\"])(aggOp)) {\n                        op = 'argmin';\n                        newField = Object(_channeldef__WEBPACK_IMPORTED_MODULE_4__[\"vgField\"])({ op: 'argmin', field: aggOp.argmin }, { forAs: true });\n                        newFieldDef.field = `${newField}.${field}`;\n                    }\n                    else if (aggOp !== 'boxplot' && aggOp !== 'errorbar' && aggOp !== 'errorband') {\n                        op = aggOp;\n                    }\n                    if (op) {\n                        const aggregateEntry = {\n                            op,\n                            as: newField\n                        };\n                        if (field) {\n                            aggregateEntry.field = field;\n                        }\n                        aggregate.push(aggregateEntry);\n                    }\n                }\n                else {\n                    groupby.push(newField);\n                    if (Object(_channeldef__WEBPACK_IMPORTED_MODULE_4__[\"isTypedFieldDef\"])(channelDef) && Object(_bin__WEBPACK_IMPORTED_MODULE_2__[\"isBinning\"])(bin)) {\n                        bins.push({ bin, field, as: newField });\n                        // Add additional groupbys for range and end of bins\n                        groupby.push(Object(_channeldef__WEBPACK_IMPORTED_MODULE_4__[\"vgField\"])(channelDef, { binSuffix: 'end' }));\n                        if (Object(_channeldef__WEBPACK_IMPORTED_MODULE_4__[\"binRequiresRange\"])(channelDef, channel)) {\n                            groupby.push(Object(_channeldef__WEBPACK_IMPORTED_MODULE_4__[\"vgField\"])(channelDef, { binSuffix: 'range' }));\n                        }\n                        // Create accompanying 'x2' or 'y2' field if channel is 'x' or 'y' respectively\n                        if (Object(_channel__WEBPACK_IMPORTED_MODULE_3__[\"isXorY\"])(channel)) {\n                            const secondaryChannel = {\n                                field: newField + '_end'\n                            };\n                            encoding[channel + '2'] = secondaryChannel;\n                        }\n                        newFieldDef.bin = 'binned';\n                        if (!Object(_channel__WEBPACK_IMPORTED_MODULE_3__[\"isSecondaryRangeChannel\"])(channel)) {\n                            newFieldDef['type'] = _type__WEBPACK_IMPORTED_MODULE_6__[\"QUANTITATIVE\"];\n                        }\n                    }\n                    else if (timeUnit) {\n                        timeUnits.push({\n                            timeUnit,\n                            field,\n                            as: newField\n                        });\n                        // define the format type for later compilation\n                        const formatType = Object(_channeldef__WEBPACK_IMPORTED_MODULE_4__[\"isTypedFieldDef\"])(channelDef) && channelDef.type !== _type__WEBPACK_IMPORTED_MODULE_6__[\"TEMPORAL\"] && 'time';\n                        if (formatType) {\n                            if (channel === _channel__WEBPACK_IMPORTED_MODULE_3__[\"TEXT\"] || channel === _channel__WEBPACK_IMPORTED_MODULE_3__[\"TOOLTIP\"]) {\n                                newFieldDef['formatType'] = formatType;\n                            }\n                            else if (Object(_channel__WEBPACK_IMPORTED_MODULE_3__[\"isNonPositionScaleChannel\"])(channel)) {\n                                newFieldDef['legend'] = Object.assign({ formatType }, newFieldDef['legend']);\n                            }\n                            else if (Object(_channel__WEBPACK_IMPORTED_MODULE_3__[\"isXorY\"])(channel)) {\n                                newFieldDef['axis'] = Object.assign({ formatType }, newFieldDef['axis']);\n                            }\n                        }\n                    }\n                }\n                // now the field should refer to post-transformed field instead\n                encoding[channel] = newFieldDef;\n            }\n            else {\n                groupby.push(field);\n                encoding[channel] = oldEncoding[channel];\n            }\n        }\n        else {\n            // For value def / signal ref / datum def, just copy\n            encoding[channel] = oldEncoding[channel];\n        }\n    });\n    return {\n        bins,\n        timeUnits,\n        aggregate,\n        groupby,\n        encoding\n    };\n}\nfunction markChannelCompatible(encoding, channel, mark) {\n    const markSupported = Object(_channel__WEBPACK_IMPORTED_MODULE_3__[\"supportMark\"])(channel, mark);\n    if (!markSupported) {\n        return false;\n    }\n    else if (markSupported === 'binned') {\n        const primaryFieldDef = encoding[channel === _channel__WEBPACK_IMPORTED_MODULE_3__[\"X2\"] ? _channel__WEBPACK_IMPORTED_MODULE_3__[\"X\"] : _channel__WEBPACK_IMPORTED_MODULE_3__[\"Y\"]];\n        // circle, point, square and tick only support x2/y2 when their corresponding x/y fieldDef\n        // has \"binned\" data and thus need x2/y2 to specify the bin-end field.\n        if (Object(_channeldef__WEBPACK_IMPORTED_MODULE_4__[\"isFieldDef\"])(primaryFieldDef) && Object(_channeldef__WEBPACK_IMPORTED_MODULE_4__[\"isFieldDef\"])(encoding[channel]) && Object(_bin__WEBPACK_IMPORTED_MODULE_2__[\"isBinned\"])(primaryFieldDef.bin)) {\n            return true;\n        }\n        else {\n            return false;\n        }\n    }\n    return true;\n}\nfunction initEncoding(encoding, mark, filled, config) {\n    return Object(_util__WEBPACK_IMPORTED_MODULE_7__[\"keys\"])(encoding).reduce((normalizedEncoding, channel) => {\n        if (!Object(_channel__WEBPACK_IMPORTED_MODULE_3__[\"isChannel\"])(channel)) {\n            // Drop invalid channel\n            _log__WEBPACK_IMPORTED_MODULE_5__[\"warn\"](_log__WEBPACK_IMPORTED_MODULE_5__[\"message\"].invalidEncodingChannel(channel));\n            return normalizedEncoding;\n        }\n        const channelDef = encoding[channel];\n        if (channel === 'angle' && mark === 'arc' && !encoding.theta) {\n            _log__WEBPACK_IMPORTED_MODULE_5__[\"warn\"](_log__WEBPACK_IMPORTED_MODULE_5__[\"message\"].REPLACE_ANGLE_WITH_THETA);\n            channel = _channel__WEBPACK_IMPORTED_MODULE_3__[\"THETA\"];\n        }\n        if (!markChannelCompatible(encoding, channel, mark)) {\n            // Drop unsupported channel\n            _log__WEBPACK_IMPORTED_MODULE_5__[\"warn\"](_log__WEBPACK_IMPORTED_MODULE_5__[\"message\"].incompatibleChannel(channel, mark));\n            return normalizedEncoding;\n        }\n        // Drop line's size if the field is aggregated.\n        if (channel === _channel__WEBPACK_IMPORTED_MODULE_3__[\"SIZE\"] && mark === 'line') {\n            const fieldDef = Object(_channeldef__WEBPACK_IMPORTED_MODULE_4__[\"getFieldDef\"])(encoding[channel]);\n            if (fieldDef === null || fieldDef === void 0 ? void 0 : fieldDef.aggregate) {\n                _log__WEBPACK_IMPORTED_MODULE_5__[\"warn\"](_log__WEBPACK_IMPORTED_MODULE_5__[\"message\"].LINE_WITH_VARYING_SIZE);\n                return normalizedEncoding;\n            }\n        }\n        // Drop color if either fill or stroke is specified\n        if (channel === _channel__WEBPACK_IMPORTED_MODULE_3__[\"COLOR\"] && (filled ? 'fill' in encoding : 'stroke' in encoding)) {\n            _log__WEBPACK_IMPORTED_MODULE_5__[\"warn\"](_log__WEBPACK_IMPORTED_MODULE_5__[\"message\"].droppingColor('encoding', { fill: 'fill' in encoding, stroke: 'stroke' in encoding }));\n            return normalizedEncoding;\n        }\n        if (channel === _channel__WEBPACK_IMPORTED_MODULE_3__[\"DETAIL\"] ||\n            (channel === _channel__WEBPACK_IMPORTED_MODULE_3__[\"ORDER\"] && !Object(vega_util__WEBPACK_IMPORTED_MODULE_0__[\"isArray\"])(channelDef) && !Object(_channeldef__WEBPACK_IMPORTED_MODULE_4__[\"isValueDef\"])(channelDef)) ||\n            (channel === _channel__WEBPACK_IMPORTED_MODULE_3__[\"TOOLTIP\"] && Object(vega_util__WEBPACK_IMPORTED_MODULE_0__[\"isArray\"])(channelDef))) {\n            if (channelDef) {\n                // Array of fieldDefs for detail channel (or production rule)\n                normalizedEncoding[channel] = Object(vega_util__WEBPACK_IMPORTED_MODULE_0__[\"array\"])(channelDef).reduce((defs, fieldDef) => {\n                    if (!Object(_channeldef__WEBPACK_IMPORTED_MODULE_4__[\"isFieldDef\"])(fieldDef)) {\n                        _log__WEBPACK_IMPORTED_MODULE_5__[\"warn\"](_log__WEBPACK_IMPORTED_MODULE_5__[\"message\"].emptyFieldDef(fieldDef, channel));\n                    }\n                    else {\n                        defs.push(Object(_channeldef__WEBPACK_IMPORTED_MODULE_4__[\"initFieldDef\"])(fieldDef, channel));\n                    }\n                    return defs;\n                }, []);\n            }\n        }\n        else {\n            if (channel === _channel__WEBPACK_IMPORTED_MODULE_3__[\"TOOLTIP\"] && channelDef === null) {\n                // Preserve null so we can use it to disable tooltip\n                normalizedEncoding[channel] = null;\n            }\n            else if (!Object(_channeldef__WEBPACK_IMPORTED_MODULE_4__[\"isFieldDef\"])(channelDef) &&\n                !Object(_channeldef__WEBPACK_IMPORTED_MODULE_4__[\"isDatumDef\"])(channelDef) &&\n                !Object(_channeldef__WEBPACK_IMPORTED_MODULE_4__[\"isValueDef\"])(channelDef) &&\n                !Object(_channeldef__WEBPACK_IMPORTED_MODULE_4__[\"isConditionalDef\"])(channelDef) &&\n                !Object(_vega_schema__WEBPACK_IMPORTED_MODULE_8__[\"isSignalRef\"])(channelDef)) {\n                _log__WEBPACK_IMPORTED_MODULE_5__[\"warn\"](_log__WEBPACK_IMPORTED_MODULE_5__[\"message\"].emptyFieldDef(channelDef, channel));\n                return normalizedEncoding;\n            }\n            normalizedEncoding[channel] = Object(_channeldef__WEBPACK_IMPORTED_MODULE_4__[\"initChannelDef\"])(channelDef, channel, config);\n        }\n        return normalizedEncoding;\n    }, {});\n}\n/**\n * For composite marks, we have to call initChannelDef during init so we can infer types earlier.\n */\nfunction normalizeEncoding(encoding, config) {\n    const normalizedEncoding = {};\n    for (const channel of Object(_util__WEBPACK_IMPORTED_MODULE_7__[\"keys\"])(encoding)) {\n        const newChannelDef = Object(_channeldef__WEBPACK_IMPORTED_MODULE_4__[\"initChannelDef\"])(encoding[channel], channel, config, { compositeMark: true });\n        normalizedEncoding[channel] = newChannelDef;\n    }\n    return normalizedEncoding;\n}\nfunction fieldDefs(encoding) {\n    const arr = [];\n    for (const channel of Object(_util__WEBPACK_IMPORTED_MODULE_7__[\"keys\"])(encoding)) {\n        if (channelHasField(encoding, channel)) {\n            const channelDef = encoding[channel];\n            const channelDefArray = Object(vega_util__WEBPACK_IMPORTED_MODULE_0__[\"array\"])(channelDef);\n            for (const def of channelDefArray) {\n                if (Object(_channeldef__WEBPACK_IMPORTED_MODULE_4__[\"isFieldDef\"])(def)) {\n                    arr.push(def);\n                }\n                else if (Object(_channeldef__WEBPACK_IMPORTED_MODULE_4__[\"hasConditionalFieldDef\"])(def)) {\n                    arr.push(def.condition);\n                }\n            }\n        }\n    }\n    return arr;\n}\nfunction forEach(mapping, f, thisArg) {\n    if (!mapping) {\n        return;\n    }\n    for (const channel of Object(_util__WEBPACK_IMPORTED_MODULE_7__[\"keys\"])(mapping)) {\n        const el = mapping[channel];\n        if (Object(vega_util__WEBPACK_IMPORTED_MODULE_0__[\"isArray\"])(el)) {\n            for (const channelDef of el) {\n                f.call(thisArg, channelDef, channel);\n            }\n        }\n        else {\n            f.call(thisArg, el, channel);\n        }\n    }\n}\nfunction reduce(mapping, f, init, thisArg) {\n    if (!mapping) {\n        return init;\n    }\n    return Object(_util__WEBPACK_IMPORTED_MODULE_7__[\"keys\"])(mapping).reduce((r, channel) => {\n        const map = mapping[channel];\n        if (Object(vega_util__WEBPACK_IMPORTED_MODULE_0__[\"isArray\"])(map)) {\n            return map.reduce((r1, channelDef) => {\n                return f.call(thisArg, r1, channelDef, channel);\n            }, r);\n        }\n        else {\n            return f.call(thisArg, r, map, channel);\n        }\n    }, init);\n}\n/**\n * Returns list of path grouping fields for the given encoding\n */\nfunction pathGroupingFields(mark, encoding) {\n    return Object(_util__WEBPACK_IMPORTED_MODULE_7__[\"keys\"])(encoding).reduce((details, channel) => {\n        switch (channel) {\n            // x, y, x2, y2, lat, long, lat1, long2, order, tooltip, href, aria label, cursor should not cause lines to group\n            case _channel__WEBPACK_IMPORTED_MODULE_3__[\"X\"]:\n            case _channel__WEBPACK_IMPORTED_MODULE_3__[\"Y\"]:\n            case _channel__WEBPACK_IMPORTED_MODULE_3__[\"HREF\"]:\n            case _channel__WEBPACK_IMPORTED_MODULE_3__[\"DESCRIPTION\"]:\n            case _channel__WEBPACK_IMPORTED_MODULE_3__[\"URL\"]:\n            case _channel__WEBPACK_IMPORTED_MODULE_3__[\"X2\"]:\n            case _channel__WEBPACK_IMPORTED_MODULE_3__[\"Y2\"]:\n            case _channel__WEBPACK_IMPORTED_MODULE_3__[\"THETA\"]:\n            case _channel__WEBPACK_IMPORTED_MODULE_3__[\"THETA2\"]:\n            case _channel__WEBPACK_IMPORTED_MODULE_3__[\"RADIUS\"]:\n            case _channel__WEBPACK_IMPORTED_MODULE_3__[\"RADIUS2\"]:\n            // falls through\n            case _channel__WEBPACK_IMPORTED_MODULE_3__[\"LATITUDE\"]:\n            case _channel__WEBPACK_IMPORTED_MODULE_3__[\"LONGITUDE\"]:\n            case _channel__WEBPACK_IMPORTED_MODULE_3__[\"LATITUDE2\"]:\n            case _channel__WEBPACK_IMPORTED_MODULE_3__[\"LONGITUDE2\"]:\n            // TODO: case 'cursor':\n            // text, shape, shouldn't be a part of line/trail/area [falls through]\n            case _channel__WEBPACK_IMPORTED_MODULE_3__[\"TEXT\"]:\n            case _channel__WEBPACK_IMPORTED_MODULE_3__[\"SHAPE\"]:\n            case _channel__WEBPACK_IMPORTED_MODULE_3__[\"ANGLE\"]:\n            // falls through\n            // tooltip fields should not be added to group by [falls through]\n            case _channel__WEBPACK_IMPORTED_MODULE_3__[\"TOOLTIP\"]:\n                return details;\n            case _channel__WEBPACK_IMPORTED_MODULE_3__[\"ORDER\"]:\n                // order should not group line / trail\n                if (mark === 'line' || mark === 'trail') {\n                    return details;\n                }\n            // but order should group area for stacking (falls through)\n            case _channel__WEBPACK_IMPORTED_MODULE_3__[\"DETAIL\"]:\n            case _channel__WEBPACK_IMPORTED_MODULE_3__[\"KEY\"]: {\n                const channelDef = encoding[channel];\n                if (Object(vega_util__WEBPACK_IMPORTED_MODULE_0__[\"isArray\"])(channelDef) || Object(_channeldef__WEBPACK_IMPORTED_MODULE_4__[\"isFieldDef\"])(channelDef)) {\n                    for (const fieldDef of Object(vega_util__WEBPACK_IMPORTED_MODULE_0__[\"array\"])(channelDef)) {\n                        if (!fieldDef.aggregate) {\n                            details.push(Object(_channeldef__WEBPACK_IMPORTED_MODULE_4__[\"vgField\"])(fieldDef, {}));\n                        }\n                    }\n                }\n                return details;\n            }\n            case _channel__WEBPACK_IMPORTED_MODULE_3__[\"SIZE\"]:\n                if (mark === 'trail') {\n                    // For trail, size should not group trail lines.\n                    return details;\n                }\n            // For line, size should group lines.\n            // falls through\n            case _channel__WEBPACK_IMPORTED_MODULE_3__[\"COLOR\"]:\n            case _channel__WEBPACK_IMPORTED_MODULE_3__[\"FILL\"]:\n            case _channel__WEBPACK_IMPORTED_MODULE_3__[\"STROKE\"]:\n            case _channel__WEBPACK_IMPORTED_MODULE_3__[\"OPACITY\"]:\n            case _channel__WEBPACK_IMPORTED_MODULE_3__[\"FILLOPACITY\"]:\n            case _channel__WEBPACK_IMPORTED_MODULE_3__[\"STROKEOPACITY\"]:\n            case _channel__WEBPACK_IMPORTED_MODULE_3__[\"STROKEDASH\"]:\n            case _channel__WEBPACK_IMPORTED_MODULE_3__[\"STROKEWIDTH\"]: {\n                // TODO strokeDashOffset:\n                // falls through\n                const fieldDef = Object(_channeldef__WEBPACK_IMPORTED_MODULE_4__[\"getFieldDef\"])(encoding[channel]);\n                if (fieldDef && !fieldDef.aggregate) {\n                    details.push(Object(_channeldef__WEBPACK_IMPORTED_MODULE_4__[\"vgField\"])(fieldDef, {}));\n                }\n                return details;\n            }\n        }\n    }, []);\n}\n//# sourceMappingURL=encoding.js.map//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,[encoded data, 23880 characters]\n//# sourceURL=webpack-internal:///./node_modules/vega-lite/build/src/encoding.js\n");

/***/ }),

/***/ "./node_modules/vega-lite/build/src/expr.js":
/*!**************************************************!*\
  !*** ./node_modules/vega-lite/build/src/expr.js ***!
  \**************************************************/
/*! exports provided: isExprRef, isExprOrSignalRef, replaceExprRefInIndex */
/***/ (function(module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"isExprRef\", function() { return isExprRef; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"isExprOrSignalRef\", function() { return isExprOrSignalRef; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"replaceExprRefInIndex\", function() { return replaceExprRefInIndex; });\n/* harmony import */ var _compile_common__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./compile/common */ \"./node_modules/vega-lite/build/src/compile/common.js\");\n/* harmony import */ var _util__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./util */ \"./node_modules/vega-lite/build/src/util.js\");\n/* harmony import */ var _vega_schema__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./vega.schema */ \"./node_modules/vega-lite/build/src/vega.schema.js\");\n\n\n\nfunction isExprRef(o) {\n    return o && !!o['expr'];\n}\nfunction isExprOrSignalRef(o) {\n    return isExprRef(o) || Object(_vega_schema__WEBPACK_IMPORTED_MODULE_2__[\"isSignalRef\"])(o);\n}\nfunction replaceExprRefInIndex(index) {\n    const props = Object(_util__WEBPACK_IMPORTED_MODULE_1__[\"keys\"])(index || {});\n    const newIndex = {};\n    for (const prop of props) {\n        newIndex[prop] = Object(_compile_common__WEBPACK_IMPORTED_MODULE_0__[\"signalRefOrValue\"])(index[prop]);\n    }\n    return newIndex;\n}\n//# sourceMappingURL=expr.js.map//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvdmVnYS1saXRlL2J1aWxkL3NyYy9leHByLmpzLmpzIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL3ZlZ2EtbGl0ZS9idWlsZC9zcmMvZXhwci5qcz9jNWFmIl0sInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IHNpZ25hbFJlZk9yVmFsdWUgfSBmcm9tICcuL2NvbXBpbGUvY29tbW9uJztcbmltcG9ydCB7IGtleXMgfSBmcm9tICcuL3V0aWwnO1xuaW1wb3J0IHsgaXNTaWduYWxSZWYgfSBmcm9tICcuL3ZlZ2Euc2NoZW1hJztcbmV4cG9ydCBmdW5jdGlvbiBpc0V4cHJSZWYobykge1xuICAgIHJldHVybiBvICYmICEhb1snZXhwciddO1xufVxuZXhwb3J0IGZ1bmN0aW9uIGlzRXhwck9yU2lnbmFsUmVmKG8pIHtcbiAgICByZXR1cm4gaXNFeHByUmVmKG8pIHx8IGlzU2lnbmFsUmVmKG8pO1xufVxuZXhwb3J0IGZ1bmN0aW9uIHJlcGxhY2VFeHByUmVmSW5JbmRleChpbmRleCkge1xuICAgIGNvbnN0IHByb3BzID0ga2V5cyhpbmRleCB8fCB7fSk7XG4gICAgY29uc3QgbmV3SW5kZXggPSB7fTtcbiAgICBmb3IgKGNvbnN0IHByb3Agb2YgcHJvcHMpIHtcbiAgICAgICAgbmV3SW5kZXhbcHJvcF0gPSBzaWduYWxSZWZPclZhbHVlKGluZGV4W3Byb3BdKTtcbiAgICB9XG4gICAgcmV0dXJuIG5ld0luZGV4O1xufVxuLy8jIHNvdXJjZU1hcHBpbmdVUkw9ZXhwci5qcy5tYXAiXSwibWFwcGluZ3MiOiJBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBIiwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///./node_modules/vega-lite/build/src/expr.js\n");

/***/ }),

/***/ "./node_modules/vega-lite/build/src/guide.js":
/*!***************************************************!*\
  !*** ./node_modules/vega-lite/build/src/guide.js ***!
  \***************************************************/
/*! exports provided: VL_ONLY_LEGEND_CONFIG */
/***/ (function(module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"VL_ONLY_LEGEND_CONFIG\", function() { return VL_ONLY_LEGEND_CONFIG; });\nconst VL_ONLY_LEGEND_CONFIG = [\n    'gradientHorizontalMaxLength',\n    'gradientHorizontalMinLength',\n    'gradientVerticalMaxLength',\n    'gradientVerticalMinLength',\n    'unselectedOpacity'\n];\n//# sourceMappingURL=guide.js.map//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvdmVnYS1saXRlL2J1aWxkL3NyYy9ndWlkZS5qcy5qcyIsInNvdXJjZXMiOlsid2VicGFjazovLy8uL25vZGVfbW9kdWxlcy92ZWdhLWxpdGUvYnVpbGQvc3JjL2d1aWRlLmpzPzA1MmMiXSwic291cmNlc0NvbnRlbnQiOlsiZXhwb3J0IGNvbnN0IFZMX09OTFlfTEVHRU5EX0NPTkZJRyA9IFtcbiAgICAnZ3JhZGllbnRIb3Jpem9udGFsTWF4TGVuZ3RoJyxcbiAgICAnZ3JhZGllbnRIb3Jpem9udGFsTWluTGVuZ3RoJyxcbiAgICAnZ3JhZGllbnRWZXJ0aWNhbE1heExlbmd0aCcsXG4gICAgJ2dyYWRpZW50VmVydGljYWxNaW5MZW5ndGgnLFxuICAgICd1bnNlbGVjdGVkT3BhY2l0eSdcbl07XG4vLyMgc291cmNlTWFwcGluZ1VSTD1ndWlkZS5qcy5tYXAiXSwibWFwcGluZ3MiOiJBQUFBO0FBQUE7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBIiwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///./node_modules/vega-lite/build/src/guide.js\n");

/***/ }),

/***/ "./node_modules/vega-lite/build/src/header.js":
/*!****************************************************!*\
  !*** ./node_modules/vega-lite/build/src/header.js ***!
  \****************************************************/
/*! exports provided: HEADER_TITLE_PROPERTIES_MAP, HEADER_LABEL_PROPERTIES_MAP, HEADER_TITLE_PROPERTIES, HEADER_LABEL_PROPERTIES, HEADER_CONFIGS */
/***/ (function(module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"HEADER_TITLE_PROPERTIES_MAP\", function() { return HEADER_TITLE_PROPERTIES_MAP; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"HEADER_LABEL_PROPERTIES_MAP\", function() { return HEADER_LABEL_PROPERTIES_MAP; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"HEADER_TITLE_PROPERTIES\", function() { return HEADER_TITLE_PROPERTIES; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"HEADER_LABEL_PROPERTIES\", function() { return HEADER_LABEL_PROPERTIES; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"HEADER_CONFIGS\", function() { return HEADER_CONFIGS; });\n/* harmony import */ var _util__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./util */ \"./node_modules/vega-lite/build/src/util.js\");\n\nconst HEADER_TITLE_PROPERTIES_MAP = {\n    titleAlign: 'align',\n    titleAnchor: 'anchor',\n    titleAngle: 'angle',\n    titleBaseline: 'baseline',\n    titleColor: 'color',\n    titleFont: 'font',\n    titleFontSize: 'fontSize',\n    titleFontStyle: 'fontStyle',\n    titleFontWeight: 'fontWeight',\n    titleLimit: 'limit',\n    titleLineHeight: 'lineHeight',\n    titleOrient: 'orient',\n    titlePadding: 'offset'\n};\nconst HEADER_LABEL_PROPERTIES_MAP = {\n    labelAlign: 'align',\n    labelAnchor: 'anchor',\n    labelAngle: 'angle',\n    labelBaseline: 'baseline',\n    labelColor: 'color',\n    labelFont: 'font',\n    labelFontSize: 'fontSize',\n    labelFontStyle: 'fontStyle',\n    labelFontWeight: 'fontWeight',\n    labelLimit: 'limit',\n    labelLineHeight: 'lineHeight',\n    labelOrient: 'orient',\n    labelPadding: 'offset'\n};\nconst HEADER_TITLE_PROPERTIES = Object(_util__WEBPACK_IMPORTED_MODULE_0__[\"keys\"])(HEADER_TITLE_PROPERTIES_MAP);\nconst HEADER_LABEL_PROPERTIES = Object(_util__WEBPACK_IMPORTED_MODULE_0__[\"keys\"])(HEADER_LABEL_PROPERTIES_MAP);\nconst HEADER_CONFIGS_INDEX = {\n    header: 1,\n    headerRow: 1,\n    headerColumn: 1,\n    headerFacet: 1\n};\nconst HEADER_CONFIGS = Object(_util__WEBPACK_IMPORTED_MODULE_0__[\"keys\"])(HEADER_CONFIGS_INDEX);\n//# sourceMappingURL=header.js.map//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvdmVnYS1saXRlL2J1aWxkL3NyYy9oZWFkZXIuanMuanMiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvdmVnYS1saXRlL2J1aWxkL3NyYy9oZWFkZXIuanM/ZjQyZSJdLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBrZXlzIH0gZnJvbSAnLi91dGlsJztcbmV4cG9ydCBjb25zdCBIRUFERVJfVElUTEVfUFJPUEVSVElFU19NQVAgPSB7XG4gICAgdGl0bGVBbGlnbjogJ2FsaWduJyxcbiAgICB0aXRsZUFuY2hvcjogJ2FuY2hvcicsXG4gICAgdGl0bGVBbmdsZTogJ2FuZ2xlJyxcbiAgICB0aXRsZUJhc2VsaW5lOiAnYmFzZWxpbmUnLFxuICAgIHRpdGxlQ29sb3I6ICdjb2xvcicsXG4gICAgdGl0bGVGb250OiAnZm9udCcsXG4gICAgdGl0bGVGb250U2l6ZTogJ2ZvbnRTaXplJyxcbiAgICB0aXRsZUZvbnRTdHlsZTogJ2ZvbnRTdHlsZScsXG4gICAgdGl0bGVGb250V2VpZ2h0OiAnZm9udFdlaWdodCcsXG4gICAgdGl0bGVMaW1pdDogJ2xpbWl0JyxcbiAgICB0aXRsZUxpbmVIZWlnaHQ6ICdsaW5lSGVpZ2h0JyxcbiAgICB0aXRsZU9yaWVudDogJ29yaWVudCcsXG4gICAgdGl0bGVQYWRkaW5nOiAnb2Zmc2V0J1xufTtcbmV4cG9ydCBjb25zdCBIRUFERVJfTEFCRUxfUFJPUEVSVElFU19NQVAgPSB7XG4gICAgbGFiZWxBbGlnbjogJ2FsaWduJyxcbiAgICBsYWJlbEFuY2hvcjogJ2FuY2hvcicsXG4gICAgbGFiZWxBbmdsZTogJ2FuZ2xlJyxcbiAgICBsYWJlbEJhc2VsaW5lOiAnYmFzZWxpbmUnLFxuICAgIGxhYmVsQ29sb3I6ICdjb2xvcicsXG4gICAgbGFiZWxGb250OiAnZm9udCcsXG4gICAgbGFiZWxGb250U2l6ZTogJ2ZvbnRTaXplJyxcbiAgICBsYWJlbEZvbnRTdHlsZTogJ2ZvbnRTdHlsZScsXG4gICAgbGFiZWxGb250V2VpZ2h0OiAnZm9udFdlaWdodCcsXG4gICAgbGFiZWxMaW1pdDogJ2xpbWl0JyxcbiAgICBsYWJlbExpbmVIZWlnaHQ6ICdsaW5lSGVpZ2h0JyxcbiAgICBsYWJlbE9yaWVudDogJ29yaWVudCcsXG4gICAgbGFiZWxQYWRkaW5nOiAnb2Zmc2V0J1xufTtcbmV4cG9ydCBjb25zdCBIRUFERVJfVElUTEVfUFJPUEVSVElFUyA9IGtleXMoSEVBREVSX1RJVExFX1BST1BFUlRJRVNfTUFQKTtcbmV4cG9ydCBjb25zdCBIRUFERVJfTEFCRUxfUFJPUEVSVElFUyA9IGtleXMoSEVBREVSX0xBQkVMX1BST1BFUlRJRVNfTUFQKTtcbmNvbnN0IEhFQURFUl9DT05GSUdTX0lOREVYID0ge1xuICAgIGhlYWRlcjogMSxcbiAgICBoZWFkZXJSb3c6IDEsXG4gICAgaGVhZGVyQ29sdW1uOiAxLFxuICAgIGhlYWRlckZhY2V0OiAxXG59O1xuZXhwb3J0IGNvbnN0IEhFQURFUl9DT05GSUdTID0ga2V5cyhIRUFERVJfQ09ORklHU19JTkRFWCk7XG4vLyMgc291cmNlTWFwcGluZ1VSTD1oZWFkZXIuanMubWFwIl0sIm1hcHBpbmdzIjoiQUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EiLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///./node_modules/vega-lite/build/src/header.js\n");

/***/ }),

/***/ "./node_modules/vega-lite/build/src/index.js":
/*!***************************************************!*\
  !*** ./node_modules/vega-lite/build/src/index.js ***!
  \***************************************************/
/*! exports provided: compile, deepEqual, duplicate, pick, omit, stringify, hash, isNullOrFalse, contains, some, every, mergeDeep, unique, isEqual, setEqual, hasIntersection, prefixGenerator, fieldIntersection, isEmpty, keys, vals, entries, isBoolean, varName, logicalExpr, deleteNestedProperty, titleCase, accessPathWithDatum, flatAccessWithDatum, replacePathInField, replaceAll, removePathFromField, accessPathDepth, getFirstDefined, uniqueId, resetIdCounter, internalField, isInternalField, normalizeAngle, isNumeric, normalize, version */
/***/ (function(module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _package_json__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../package.json */ \"./node_modules/vega-lite/build/package.json\");\nvar _package_json__WEBPACK_IMPORTED_MODULE_0___namespace = /*#__PURE__*/__webpack_require__.t(/*! ../package.json */ \"./node_modules/vega-lite/build/package.json\", 1);\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"version\", function() { return _package_json__WEBPACK_IMPORTED_MODULE_0__[\"version\"]; });\n\n/* harmony import */ var _normalize__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./normalize */ \"./node_modules/vega-lite/build/src/normalize/index.js\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"normalize\", function() { return _normalize__WEBPACK_IMPORTED_MODULE_1__[\"normalize\"]; });\n\n/* harmony import */ var _compile_compile__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./compile/compile */ \"./node_modules/vega-lite/build/src/compile/compile.js\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"compile\", function() { return _compile_compile__WEBPACK_IMPORTED_MODULE_2__[\"compile\"]; });\n\n/* harmony import */ var _util__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ./util */ \"./node_modules/vega-lite/build/src/util.js\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"deepEqual\", function() { return _util__WEBPACK_IMPORTED_MODULE_3__[\"deepEqual\"]; });\n\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"duplicate\", function() { return _util__WEBPACK_IMPORTED_MODULE_3__[\"duplicate\"]; });\n\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"pick\", function() { return _util__WEBPACK_IMPORTED_MODULE_3__[\"pick\"]; });\n\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"omit\", function() { return _util__WEBPACK_IMPORTED_MODULE_3__[\"omit\"]; });\n\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"stringify\", function() { return _util__WEBPACK_IMPORTED_MODULE_3__[\"stringify\"]; });\n\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"hash\", function() { return _util__WEBPACK_IMPORTED_MODULE_3__[\"hash\"]; });\n\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"isNullOrFalse\", function() { return _util__WEBPACK_IMPORTED_MODULE_3__[\"isNullOrFalse\"]; });\n\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"contains\", function() { return _util__WEBPACK_IMPORTED_MODULE_3__[\"contains\"]; });\n\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"some\", function() { return _util__WEBPACK_IMPORTED_MODULE_3__[\"some\"]; });\n\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"every\", function() { return _util__WEBPACK_IMPORTED_MODULE_3__[\"every\"]; });\n\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"mergeDeep\", function() { return _util__WEBPACK_IMPORTED_MODULE_3__[\"mergeDeep\"]; });\n\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"unique\", function() { return _util__WEBPACK_IMPORTED_MODULE_3__[\"unique\"]; });\n\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"isEqual\", function() { return _util__WEBPACK_IMPORTED_MODULE_3__[\"isEqual\"]; });\n\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"setEqual\", function() { return _util__WEBPACK_IMPORTED_MODULE_3__[\"setEqual\"]; });\n\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"hasIntersection\", function() { return _util__WEBPACK_IMPORTED_MODULE_3__[\"hasIntersection\"]; });\n\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"prefixGenerator\", function() { return _util__WEBPACK_IMPORTED_MODULE_3__[\"prefixGenerator\"]; });\n\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"fieldIntersection\", function() { return _util__WEBPACK_IMPORTED_MODULE_3__[\"fieldIntersection\"]; });\n\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"isEmpty\", function() { return _util__WEBPACK_IMPORTED_MODULE_3__[\"isEmpty\"]; });\n\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"keys\", function() { return _util__WEBPACK_IMPORTED_MODULE_3__[\"keys\"]; });\n\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"vals\", function() { return _util__WEBPACK_IMPORTED_MODULE_3__[\"vals\"]; });\n\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"entries\", function() { return _util__WEBPACK_IMPORTED_MODULE_3__[\"entries\"]; });\n\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"isBoolean\", function() { return _util__WEBPACK_IMPORTED_MODULE_3__[\"isBoolean\"]; });\n\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"varName\", function() { return _util__WEBPACK_IMPORTED_MODULE_3__[\"varName\"]; });\n\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"logicalExpr\", function() { return _util__WEBPACK_IMPORTED_MODULE_3__[\"logicalExpr\"]; });\n\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"deleteNestedProperty\", function() { return _util__WEBPACK_IMPORTED_MODULE_3__[\"deleteNestedProperty\"]; });\n\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"titleCase\", function() { return _util__WEBPACK_IMPORTED_MODULE_3__[\"titleCase\"]; });\n\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"accessPathWithDatum\", function() { return _util__WEBPACK_IMPORTED_MODULE_3__[\"accessPathWithDatum\"]; });\n\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"flatAccessWithDatum\", function() { return _util__WEBPACK_IMPORTED_MODULE_3__[\"flatAccessWithDatum\"]; });\n\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"replacePathInField\", function() { return _util__WEBPACK_IMPORTED_MODULE_3__[\"replacePathInField\"]; });\n\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"replaceAll\", function() { return _util__WEBPACK_IMPORTED_MODULE_3__[\"replaceAll\"]; });\n\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"removePathFromField\", function() { return _util__WEBPACK_IMPORTED_MODULE_3__[\"removePathFromField\"]; });\n\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"accessPathDepth\", function() { return _util__WEBPACK_IMPORTED_MODULE_3__[\"accessPathDepth\"]; });\n\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"getFirstDefined\", function() { return _util__WEBPACK_IMPORTED_MODULE_3__[\"getFirstDefined\"]; });\n\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"uniqueId\", function() { return _util__WEBPACK_IMPORTED_MODULE_3__[\"uniqueId\"]; });\n\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"resetIdCounter\", function() { return _util__WEBPACK_IMPORTED_MODULE_3__[\"resetIdCounter\"]; });\n\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"internalField\", function() { return _util__WEBPACK_IMPORTED_MODULE_3__[\"internalField\"]; });\n\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"isInternalField\", function() { return _util__WEBPACK_IMPORTED_MODULE_3__[\"isInternalField\"]; });\n\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"normalizeAngle\", function() { return _util__WEBPACK_IMPORTED_MODULE_3__[\"normalizeAngle\"]; });\n\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"isNumeric\", function() { return _util__WEBPACK_IMPORTED_MODULE_3__[\"isNumeric\"]; });\n\n\n\n\n\n\n//# sourceMappingURL=index.js.map//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvdmVnYS1saXRlL2J1aWxkL3NyYy9pbmRleC5qcy5qcyIsInNvdXJjZXMiOlsid2VicGFjazovLy8uL25vZGVfbW9kdWxlcy92ZWdhLWxpdGUvYnVpbGQvc3JjL2luZGV4LmpzPzJhODMiXSwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgdmVyc2lvbiB9IGZyb20gJy4uL3BhY2thZ2UuanNvbic7XG5pbXBvcnQgeyBub3JtYWxpemUgfSBmcm9tICcuL25vcm1hbGl6ZSc7XG5leHBvcnQgeyBjb21waWxlIH0gZnJvbSAnLi9jb21waWxlL2NvbXBpbGUnO1xuZXhwb3J0ICogZnJvbSAnLi91dGlsJztcbmV4cG9ydCB7IG5vcm1hbGl6ZSwgdmVyc2lvbiB9O1xuLy8jIHNvdXJjZU1hcHBpbmdVUkw9aW5kZXguanMubWFwIl0sIm1hcHBpbmdzIjoiQUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EiLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///./node_modules/vega-lite/build/src/index.js\n");

/***/ }),

/***/ "./node_modules/vega-lite/build/src/legend.js":
/*!****************************************************!*\
  !*** ./node_modules/vega-lite/build/src/legend.js ***!
  \****************************************************/
/*! exports provided: LEGEND_SCALE_CHANNELS, defaultLegendConfig, COMMON_LEGEND_PROPERTY_INDEX, LEGEND_PROPERTIES */
/***/ (function(module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"LEGEND_SCALE_CHANNELS\", function() { return LEGEND_SCALE_CHANNELS; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"defaultLegendConfig\", function() { return defaultLegendConfig; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"COMMON_LEGEND_PROPERTY_INDEX\", function() { return COMMON_LEGEND_PROPERTY_INDEX; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"LEGEND_PROPERTIES\", function() { return LEGEND_PROPERTIES; });\n/* harmony import */ var _util__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./util */ \"./node_modules/vega-lite/build/src/util.js\");\n\nconst LEGEND_SCALE_CHANNELS = [\n    'size',\n    'shape',\n    'fill',\n    'stroke',\n    'strokeDash',\n    'strokeWidth',\n    'opacity'\n];\nconst defaultLegendConfig = {\n    gradientHorizontalMaxLength: 200,\n    gradientHorizontalMinLength: 100,\n    gradientVerticalMaxLength: 200,\n    gradientVerticalMinLength: 64,\n    unselectedOpacity: 0.35\n};\nconst COMMON_LEGEND_PROPERTY_INDEX = {\n    aria: 1,\n    clipHeight: 1,\n    columnPadding: 1,\n    columns: 1,\n    cornerRadius: 1,\n    description: 1,\n    direction: 1,\n    fillColor: 1,\n    format: 1,\n    formatType: 1,\n    gradientLength: 1,\n    gradientOpacity: 1,\n    gradientStrokeColor: 1,\n    gradientStrokeWidth: 1,\n    gradientThickness: 1,\n    gridAlign: 1,\n    labelAlign: 1,\n    labelBaseline: 1,\n    labelColor: 1,\n    labelFont: 1,\n    labelFontSize: 1,\n    labelFontStyle: 1,\n    labelFontWeight: 1,\n    labelLimit: 1,\n    labelOffset: 1,\n    labelOpacity: 1,\n    labelOverlap: 1,\n    labelPadding: 1,\n    labelSeparation: 1,\n    legendX: 1,\n    legendY: 1,\n    offset: 1,\n    orient: 1,\n    padding: 1,\n    rowPadding: 1,\n    strokeColor: 1,\n    symbolDash: 1,\n    symbolDashOffset: 1,\n    symbolFillColor: 1,\n    symbolLimit: 1,\n    symbolOffset: 1,\n    symbolOpacity: 1,\n    symbolSize: 1,\n    symbolStrokeColor: 1,\n    symbolStrokeWidth: 1,\n    symbolType: 1,\n    tickCount: 1,\n    tickMinStep: 1,\n    title: 1,\n    titleAlign: 1,\n    titleAnchor: 1,\n    titleBaseline: 1,\n    titleColor: 1,\n    titleFont: 1,\n    titleFontSize: 1,\n    titleFontStyle: 1,\n    titleFontWeight: 1,\n    titleLimit: 1,\n    titleLineHeight: 1,\n    titleOpacity: 1,\n    titleOrient: 1,\n    titlePadding: 1,\n    type: 1,\n    values: 1,\n    zindex: 1\n};\nconst LEGEND_PROPERTIES = Object(_util__WEBPACK_IMPORTED_MODULE_0__[\"keys\"])(COMMON_LEGEND_PROPERTY_INDEX);\n//# sourceMappingURL=legend.js.map//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvdmVnYS1saXRlL2J1aWxkL3NyYy9sZWdlbmQuanMuanMiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvdmVnYS1saXRlL2J1aWxkL3NyYy9sZWdlbmQuanM/Y2FlNCJdLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBrZXlzIH0gZnJvbSAnLi91dGlsJztcbmV4cG9ydCBjb25zdCBMRUdFTkRfU0NBTEVfQ0hBTk5FTFMgPSBbXG4gICAgJ3NpemUnLFxuICAgICdzaGFwZScsXG4gICAgJ2ZpbGwnLFxuICAgICdzdHJva2UnLFxuICAgICdzdHJva2VEYXNoJyxcbiAgICAnc3Ryb2tlV2lkdGgnLFxuICAgICdvcGFjaXR5J1xuXTtcbmV4cG9ydCBjb25zdCBkZWZhdWx0TGVnZW5kQ29uZmlnID0ge1xuICAgIGdyYWRpZW50SG9yaXpvbnRhbE1heExlbmd0aDogMjAwLFxuICAgIGdyYWRpZW50SG9yaXpvbnRhbE1pbkxlbmd0aDogMTAwLFxuICAgIGdyYWRpZW50VmVydGljYWxNYXhMZW5ndGg6IDIwMCxcbiAgICBncmFkaWVudFZlcnRpY2FsTWluTGVuZ3RoOiA2NCxcbiAgICB1bnNlbGVjdGVkT3BhY2l0eTogMC4zNVxufTtcbmV4cG9ydCBjb25zdCBDT01NT05fTEVHRU5EX1BST1BFUlRZX0lOREVYID0ge1xuICAgIGFyaWE6IDEsXG4gICAgY2xpcEhlaWdodDogMSxcbiAgICBjb2x1bW5QYWRkaW5nOiAxLFxuICAgIGNvbHVtbnM6IDEsXG4gICAgY29ybmVyUmFkaXVzOiAxLFxuICAgIGRlc2NyaXB0aW9uOiAxLFxuICAgIGRpcmVjdGlvbjogMSxcbiAgICBmaWxsQ29sb3I6IDEsXG4gICAgZm9ybWF0OiAxLFxuICAgIGZvcm1hdFR5cGU6IDEsXG4gICAgZ3JhZGllbnRMZW5ndGg6IDEsXG4gICAgZ3JhZGllbnRPcGFjaXR5OiAxLFxuICAgIGdyYWRpZW50U3Ryb2tlQ29sb3I6IDEsXG4gICAgZ3JhZGllbnRTdHJva2VXaWR0aDogMSxcbiAgICBncmFkaWVudFRoaWNrbmVzczogMSxcbiAgICBncmlkQWxpZ246IDEsXG4gICAgbGFiZWxBbGlnbjogMSxcbiAgICBsYWJlbEJhc2VsaW5lOiAxLFxuICAgIGxhYmVsQ29sb3I6IDEsXG4gICAgbGFiZWxGb250OiAxLFxuICAgIGxhYmVsRm9udFNpemU6IDEsXG4gICAgbGFiZWxGb250U3R5bGU6IDEsXG4gICAgbGFiZWxGb250V2VpZ2h0OiAxLFxuICAgIGxhYmVsTGltaXQ6IDEsXG4gICAgbGFiZWxPZmZzZXQ6IDEsXG4gICAgbGFiZWxPcGFjaXR5OiAxLFxuICAgIGxhYmVsT3ZlcmxhcDogMSxcbiAgICBsYWJlbFBhZGRpbmc6IDEsXG4gICAgbGFiZWxTZXBhcmF0aW9uOiAxLFxuICAgIGxlZ2VuZFg6IDEsXG4gICAgbGVnZW5kWTogMSxcbiAgICBvZmZzZXQ6IDEsXG4gICAgb3JpZW50OiAxLFxuICAgIHBhZGRpbmc6IDEsXG4gICAgcm93UGFkZGluZzogMSxcbiAgICBzdHJva2VDb2xvcjogMSxcbiAgICBzeW1ib2xEYXNoOiAxLFxuICAgIHN5bWJvbERhc2hPZmZzZXQ6IDEsXG4gICAgc3ltYm9sRmlsbENvbG9yOiAxLFxuICAgIHN5bWJvbExpbWl0OiAxLFxuICAgIHN5bWJvbE9mZnNldDogMSxcbiAgICBzeW1ib2xPcGFjaXR5OiAxLFxuICAgIHN5bWJvbFNpemU6IDEsXG4gICAgc3ltYm9sU3Ryb2tlQ29sb3I6IDEsXG4gICAgc3ltYm9sU3Ryb2tlV2lkdGg6IDEsXG4gICAgc3ltYm9sVHlwZTogMSxcbiAgICB0aWNrQ291bnQ6IDEsXG4gICAgdGlja01pblN0ZXA6IDEsXG4gICAgdGl0bGU6IDEsXG4gICAgdGl0bGVBbGlnbjogMSxcbiAgICB0aXRsZUFuY2hvcjogMSxcbiAgICB0aXRsZUJhc2VsaW5lOiAxLFxuICAgIHRpdGxlQ29sb3I6IDEsXG4gICAgdGl0bGVGb250OiAxLFxuICAgIHRpdGxlRm9udFNpemU6IDEsXG4gICAgdGl0bGVGb250U3R5bGU6IDEsXG4gICAgdGl0bGVGb250V2VpZ2h0OiAxLFxuICAgIHRpdGxlTGltaXQ6IDEsXG4gICAgdGl0bGVMaW5lSGVpZ2h0OiAxLFxuICAgIHRpdGxlT3BhY2l0eTogMSxcbiAgICB0aXRsZU9yaWVudDogMSxcbiAgICB0aXRsZVBhZGRpbmc6IDEsXG4gICAgdHlwZTogMSxcbiAgICB2YWx1ZXM6IDEsXG4gICAgemluZGV4OiAxXG59O1xuZXhwb3J0IGNvbnN0IExFR0VORF9QUk9QRVJUSUVTID0ga2V5cyhDT01NT05fTEVHRU5EX1BST1BFUlRZX0lOREVYKTtcbi8vIyBzb3VyY2VNYXBwaW5nVVJMPWxlZ2VuZC5qcy5tYXAiXSwibWFwcGluZ3MiOiJBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EiLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///./node_modules/vega-lite/build/src/legend.js\n");

/***/ }),

/***/ "./node_modules/vega-lite/build/src/log/index.js":
/*!*******************************************************!*\
  !*** ./node_modules/vega-lite/build/src/log/index.js ***!
  \*******************************************************/
/*! exports provided: message, LocalLogger, wrap, set, reset, error, warn, info, debug */
/***/ (function(module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"LocalLogger\", function() { return LocalLogger; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"wrap\", function() { return wrap; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"set\", function() { return set; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"reset\", function() { return reset; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"error\", function() { return error; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"warn\", function() { return warn; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"info\", function() { return info; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"debug\", function() { return debug; });\n/* harmony import */ var vega_util__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! vega-util */ \"./node_modules/vega-lite/node_modules/vega-util/build/vega-util.module.js\");\n/* harmony import */ var _message__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./message */ \"./node_modules/vega-lite/build/src/log/message.js\");\n/* harmony reexport (module object) */ __webpack_require__.d(__webpack_exports__, \"message\", function() { return _message__WEBPACK_IMPORTED_MODULE_1__; });\n/**\n * Vega-Lite's singleton logger utility.\n */\nvar __classPrivateFieldSet = (undefined && undefined.__classPrivateFieldSet) || function (receiver, privateMap, value) {\n    if (!privateMap.has(receiver)) {\n        throw new TypeError(\"attempted to set private field on non-instance\");\n    }\n    privateMap.set(receiver, value);\n    return value;\n};\nvar __classPrivateFieldGet = (undefined && undefined.__classPrivateFieldGet) || function (receiver, privateMap) {\n    if (!privateMap.has(receiver)) {\n        throw new TypeError(\"attempted to get private field on non-instance\");\n    }\n    return privateMap.get(receiver);\n};\nvar _level;\n\n\n\n/**\n * Main (default) Vega Logger instance for Vega-Lite.\n */\nconst main = Object(vega_util__WEBPACK_IMPORTED_MODULE_0__[\"logger\"])(vega_util__WEBPACK_IMPORTED_MODULE_0__[\"Warn\"]);\nlet current = main;\n/**\n * Logger tool for checking if the code throws correct warning.\n */\nclass LocalLogger {\n    constructor() {\n        this.warns = [];\n        this.infos = [];\n        this.debugs = [];\n        _level.set(this, vega_util__WEBPACK_IMPORTED_MODULE_0__[\"Warn\"]);\n    }\n    level(_) {\n        if (_) {\n            __classPrivateFieldSet(this, _level, _);\n            return this;\n        }\n        return __classPrivateFieldGet(this, _level);\n    }\n    warn(...args) {\n        if (__classPrivateFieldGet(this, _level) >= vega_util__WEBPACK_IMPORTED_MODULE_0__[\"Warn\"])\n            this.warns.push(...args);\n        return this;\n    }\n    info(...args) {\n        if (__classPrivateFieldGet(this, _level) >= vega_util__WEBPACK_IMPORTED_MODULE_0__[\"Info\"])\n            this.infos.push(...args);\n        return this;\n    }\n    debug(...args) {\n        if (__classPrivateFieldGet(this, _level) >= vega_util__WEBPACK_IMPORTED_MODULE_0__[\"Debug\"])\n            this.debugs.push(...args);\n        return this;\n    }\n    error(...args) {\n        if (__classPrivateFieldGet(this, _level) >= vega_util__WEBPACK_IMPORTED_MODULE_0__[\"Error\"])\n            throw Error(...args);\n        return this;\n    }\n}\n_level = new WeakMap();\nfunction wrap(f) {\n    return () => {\n        current = new LocalLogger();\n        f(current);\n        reset();\n    };\n}\n/**\n * Set the singleton logger to be a custom logger.\n */\nfunction set(newLogger) {\n    current = newLogger;\n    return current;\n}\n/**\n * Reset the main logger to use the default Vega Logger.\n */\nfunction reset() {\n    current = main;\n    return current;\n}\nfunction error(...args) {\n    current.error(...args);\n}\nfunction warn(...args) {\n    current.warn(...args);\n}\nfunction info(...args) {\n    current.info(...args);\n}\nfunction debug(...args) {\n    current.debug(...args);\n}\n//# sourceMappingURL=index.js.map//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,[encoded data, 4568 characters]\n//# sourceURL=webpack-internal:///./node_modules/vega-lite/build/src/log/index.js\n");

/***/ }),

/***/ "./node_modules/vega-lite/build/src/log/message.js":
/*!*********************************************************!*\
  !*** ./node_modules/vega-lite/build/src/log/message.js ***!
  \*********************************************************/
/*! exports provided: invalidSpec, FIT_NON_SINGLE, containerSizeNonSingle, containerSizeNotCompatibleWithAutosize, droppingFit, unknownField, cannotProjectOnChannelWithoutField, cannotProjectAggregate, nearestNotSupportForContinuous, selectionNotSupported, selectionNotFound, SCALE_BINDINGS_CONTINUOUS, LEGEND_BINDINGS_MUST_HAVE_PROJECTION, noSameUnitLookup, NEEDS_SAME_SELECTION, INTERVAL_INITIALIZED_WITH_X_Y, noSuchRepeatedValue, columnsNotSupportByRowCol, CONCAT_CANNOT_SHARE_AXIS, unrecognizedParse, differentParse, ADD_SAME_CHILD_TWICE, invalidTransformIgnored, NO_FIELDS_NEEDS_AS, customFormatTypeNotAllowed, projectionOverridden, REPLACE_ANGLE_WITH_THETA, primitiveChannelDef, invalidFieldType, invalidFieldTypeForCountAggregate, invalidAggregate, missingFieldType, droppingColor, emptyFieldDef, latLongDeprecated, LINE_WITH_VARYING_SIZE, incompatibleChannel, invalidEncodingChannel, facetChannelShouldBeDiscrete, facetChannelDropped, discreteChannelCannotEncode, rangeMarkAlignmentCannotBeExpression, lineWithRange, orientOverridden, CANNOT_UNION_CUSTOM_DOMAIN_WITH_FIELD_DOMAIN, RANGE_STEP_DEPRECATED, cannotUseScalePropertyWithNonColor, unaggregateDomainHasNoEffectForRawField, unaggregateDomainWithNonSharedDomainOp, unaggregatedDomainWithLogScale, cannotApplySizeToNonOrientedMark, scaleTypeNotWorkWithChannel, scaleTypeNotWorkWithFieldDef, scalePropertyNotWorkWithScaleType, scaleTypeNotWorkWithMark, stepDropped, mergeConflictingProperty, mergeConflictingDomainProperty, independentScaleMeansIndependentGuide, domainSortDropped, MORE_THAN_ONE_SORT, FACETED_INDEPENDENT_DIFFERENT_SOURCES, FACETED_INDEPENDENT_SAME_FIELDS_DIFFERENT_SOURCES, FACETED_INDEPENDENT_SAME_SOURCE, INVALID_CHANNEL_FOR_AXIS, cannotStackRangedMark, cannotStackNonLinearScale, stackNonSummativeAggregate, invalidTimeUnit, droppedDay, errorBarCenterAndExtentAreNotNeeded, errorBarCenterIsUsedWithWrongExtent, errorBarContinuousAxisHasCustomizedAggregate, errorBand1DNotSupport, channelRequiredForBinned, channelShouldNotBeUsedForBinned, domainRequiredForThresholdScale */
/***/ (function(module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"invalidSpec\", function() { return invalidSpec; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"FIT_NON_SINGLE\", function() { return FIT_NON_SINGLE; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"containerSizeNonSingle\", function() { return containerSizeNonSingle; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"containerSizeNotCompatibleWithAutosize\", function() { return containerSizeNotCompatibleWithAutosize; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"droppingFit\", function() { return droppingFit; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"unknownField\", function() { return unknownField; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"cannotProjectOnChannelWithoutField\", function() { return cannotProjectOnChannelWithoutField; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"cannotProjectAggregate\", function() { return cannotProjectAggregate; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"nearestNotSupportForContinuous\", function() { return nearestNotSupportForContinuous; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"selectionNotSupported\", function() { return selectionNotSupported; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"selectionNotFound\", function() { return selectionNotFound; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"SCALE_BINDINGS_CONTINUOUS\", function() { return SCALE_BINDINGS_CONTINUOUS; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"LEGEND_BINDINGS_MUST_HAVE_PROJECTION\", function() { return LEGEND_BINDINGS_MUST_HAVE_PROJECTION; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"noSameUnitLookup\", function() { return noSameUnitLookup; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"NEEDS_SAME_SELECTION\", function() { return NEEDS_SAME_SELECTION; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"INTERVAL_INITIALIZED_WITH_X_Y\", function() { return INTERVAL_INITIALIZED_WITH_X_Y; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"noSuchRepeatedValue\", function() { return noSuchRepeatedValue; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"columnsNotSupportByRowCol\", function() { return columnsNotSupportByRowCol; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"CONCAT_CANNOT_SHARE_AXIS\", function() { return CONCAT_CANNOT_SHARE_AXIS; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"unrecognizedParse\", function() { return unrecognizedParse; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"differentParse\", function() { return differentParse; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"ADD_SAME_CHILD_TWICE\", function() { return ADD_SAME_CHILD_TWICE; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"invalidTransformIgnored\", function() { return invalidTransformIgnored; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"NO_FIELDS_NEEDS_AS\", function() { return NO_FIELDS_NEEDS_AS; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"customFormatTypeNotAllowed\", function() { return customFormatTypeNotAllowed; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"projectionOverridden\", function() { return projectionOverridden; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"REPLACE_ANGLE_WITH_THETA\", function() { return REPLACE_ANGLE_WITH_THETA; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"primitiveChannelDef\", function() { return primitiveChannelDef; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"invalidFieldType\", function() { return invalidFieldType; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"invalidFieldTypeForCountAggregate\", function() { return invalidFieldTypeForCountAggregate; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"invalidAggregate\", function() { return invalidAggregate; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"missingFieldType\", function() { return missingFieldType; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"droppingColor\", function() { return droppingColor; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"emptyFieldDef\", function() { return emptyFieldDef; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"latLongDeprecated\", function() { return latLongDeprecated; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"LINE_WITH_VARYING_SIZE\", function() { return LINE_WITH_VARYING_SIZE; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"incompatibleChannel\", function() { return incompatibleChannel; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"invalidEncodingChannel\", function() { return invalidEncodingChannel; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"facetChannelShouldBeDiscrete\", function() { return facetChannelShouldBeDiscrete; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"facetChannelDropped\", function() { return facetChannelDropped; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"discreteChannelCannotEncode\", function() { return discreteChannelCannotEncode; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"rangeMarkAlignmentCannotBeExpression\", function() { return rangeMarkAlignmentCannotBeExpression; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"lineWithRange\", function() { return lineWithRange; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"orientOverridden\", function() { return orientOverridden; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"CANNOT_UNION_CUSTOM_DOMAIN_WITH_FIELD_DOMAIN\", function() { return CANNOT_UNION_CUSTOM_DOMAIN_WITH_FIELD_DOMAIN; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"RANGE_STEP_DEPRECATED\", function() { return RANGE_STEP_DEPRECATED; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"cannotUseScalePropertyWithNonColor\", function() { return cannotUseScalePropertyWithNonColor; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"unaggregateDomainHasNoEffectForRawField\", function() { return unaggregateDomainHasNoEffectForRawField; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"unaggregateDomainWithNonSharedDomainOp\", function() { return unaggregateDomainWithNonSharedDomainOp; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"unaggregatedDomainWithLogScale\", function() { return unaggregatedDomainWithLogScale; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"cannotApplySizeToNonOrientedMark\", function() { return cannotApplySizeToNonOrientedMark; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"scaleTypeNotWorkWithChannel\", function() { return scaleTypeNotWorkWithChannel; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"scaleTypeNotWorkWithFieldDef\", function() { return scaleTypeNotWorkWithFieldDef; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"scalePropertyNotWorkWithScaleType\", function() { return scalePropertyNotWorkWithScaleType; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"scaleTypeNotWorkWithMark\", function() { return scaleTypeNotWorkWithMark; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"stepDropped\", function() { return stepDropped; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"mergeConflictingProperty\", function() { return mergeConflictingProperty; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"mergeConflictingDomainProperty\", function() { return mergeConflictingDomainProperty; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"independentScaleMeansIndependentGuide\", function() { return independentScaleMeansIndependentGuide; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"domainSortDropped\", function() { return domainSortDropped; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"MORE_THAN_ONE_SORT\", function() { return MORE_THAN_ONE_SORT; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"FACETED_INDEPENDENT_DIFFERENT_SOURCES\", function() { return FACETED_INDEPENDENT_DIFFERENT_SOURCES; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"FACETED_INDEPENDENT_SAME_FIELDS_DIFFERENT_SOURCES\", function() { return FACETED_INDEPENDENT_SAME_FIELDS_DIFFERENT_SOURCES; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"FACETED_INDEPENDENT_SAME_SOURCE\", function() { return FACETED_INDEPENDENT_SAME_SOURCE; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"INVALID_CHANNEL_FOR_AXIS\", function() { return INVALID_CHANNEL_FOR_AXIS; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"cannotStackRangedMark\", function() { return cannotStackRangedMark; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"cannotStackNonLinearScale\", function() { return cannotStackNonLinearScale; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"stackNonSummativeAggregate\", function() { return stackNonSummativeAggregate; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"invalidTimeUnit\", function() { return invalidTimeUnit; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"droppedDay\", function() { return droppedDay; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"errorBarCenterAndExtentAreNotNeeded\", function() { return errorBarCenterAndExtentAreNotNeeded; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"errorBarCenterIsUsedWithWrongExtent\", function() { return errorBarCenterIsUsedWithWrongExtent; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"errorBarContinuousAxisHasCustomizedAggregate\", function() { return errorBarContinuousAxisHasCustomizedAggregate; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"errorBand1DNotSupport\", function() { return errorBand1DNotSupport; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"channelRequiredForBinned\", function() { return channelRequiredForBinned; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"channelShouldNotBeUsedForBinned\", function() { return channelShouldNotBeUsedForBinned; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"domainRequiredForThresholdScale\", function() { return domainRequiredForThresholdScale; });\n/* harmony import */ var _channel__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../channel */ \"./node_modules/vega-lite/build/src/channel.js\");\n/* harmony import */ var _util__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../util */ \"./node_modules/vega-lite/build/src/util.js\");\n\n\nfunction invalidSpec(spec) {\n    return `Invalid specification ${JSON.stringify(spec)}. Make sure the specification includes at least one of the following properties: \"mark\", \"layer\", \"facet\", \"hconcat\", \"vconcat\", \"concat\", or \"repeat\".`;\n}\n// FIT\nconst FIT_NON_SINGLE = 'Autosize \"fit\" only works for single views and layered views.';\nfunction containerSizeNonSingle(name) {\n    const uName = name == 'width' ? 'Width' : 'Height';\n    return `${uName} \"container\" only works for single views and layered views.`;\n}\nfunction containerSizeNotCompatibleWithAutosize(name) {\n    const uName = name == 'width' ? 'Width' : 'Height';\n    const fitDirection = name == 'width' ? 'x' : 'y';\n    return `${uName} \"container\" only works well with autosize \"fit\" or \"fit-${fitDirection}\".`;\n}\nfunction droppingFit(channel) {\n    return channel\n        ? `Dropping \"fit-${channel}\" because spec has discrete ${Object(_channel__WEBPACK_IMPORTED_MODULE_0__[\"getSizeChannel\"])(channel)}.`\n        : `Dropping \"fit\" because spec has discrete size.`;\n}\n// VIEW SIZE\nfunction unknownField(channel) {\n    return `Unknown field for ${channel}. Cannot calculate view size.`;\n}\n// SELECTION\nfunction cannotProjectOnChannelWithoutField(channel) {\n    return `Cannot project a selection on encoding channel \"${channel}\", which has no field.`;\n}\nfunction cannotProjectAggregate(channel, aggregate) {\n    return `Cannot project a selection on encoding channel \"${channel}\" as it uses an aggregate function (\"${aggregate}\").`;\n}\nfunction nearestNotSupportForContinuous(mark) {\n    return `The \"nearest\" transform is not supported for ${mark} marks.`;\n}\nfunction selectionNotSupported(mark) {\n    return `Selection not supported for ${mark} yet.`;\n}\nfunction selectionNotFound(name) {\n    return `Cannot find a selection named \"${name}\".`;\n}\nconst SCALE_BINDINGS_CONTINUOUS = 'Scale bindings are currently only supported for scales with unbinned, continuous domains.';\nconst LEGEND_BINDINGS_MUST_HAVE_PROJECTION = 'Legend bindings are only supported for selections over an individual field or encoding channel.';\nfunction noSameUnitLookup(name) {\n    return (`Cannot define and lookup the \"${name}\" selection in the same view. ` +\n        `Try moving the lookup into a second, layered view?`);\n}\nconst NEEDS_SAME_SELECTION = 'The same selection must be used to override scale domains in a layered view.';\nconst INTERVAL_INITIALIZED_WITH_X_Y = 'Interval selections should be initialized using \"x\" and/or \"y\" keys.';\n// REPEAT\nfunction noSuchRepeatedValue(field) {\n    return `Unknown repeated value \"${field}\".`;\n}\nfunction columnsNotSupportByRowCol(type) {\n    return `The \"columns\" property cannot be used when \"${type}\" has nested row/column.`;\n}\n// CONCAT / REPEAT\nconst CONCAT_CANNOT_SHARE_AXIS = 'Axes cannot be shared in concatenated or repeated views yet (https://github.com/vega/vega-lite/issues/2415).';\n// DATA\nfunction unrecognizedParse(p) {\n    return `Unrecognized parse \"${p}\".`;\n}\nfunction differentParse(field, local, ancestor) {\n    return `An ancestor parsed field \"${field}\" as ${ancestor} but a child wants to parse the field as ${local}.`;\n}\nconst ADD_SAME_CHILD_TWICE = 'Attempt to add the same child twice.';\n// TRANSFORMS\nfunction invalidTransformIgnored(transform) {\n    return `Ignoring an invalid transform: ${Object(_util__WEBPACK_IMPORTED_MODULE_1__[\"stringify\"])(transform)}.`;\n}\nconst NO_FIELDS_NEEDS_AS = 'If \"from.fields\" is not specified, \"as\" has to be a string that specifies the key to be used for the data from the secondary source.';\n// ENCODING & FACET\nfunction customFormatTypeNotAllowed(channel) {\n    return `Config.customFormatTypes is not true, thus custom format type and format for channel ${channel} are dropped.`;\n}\nfunction projectionOverridden(opt) {\n    const { parentProjection, projection } = opt;\n    return `Layer's shared projection ${Object(_util__WEBPACK_IMPORTED_MODULE_1__[\"stringify\"])(parentProjection)} is overridden by a child projection ${Object(_util__WEBPACK_IMPORTED_MODULE_1__[\"stringify\"])(projection)}.`;\n}\nconst REPLACE_ANGLE_WITH_THETA = 'Arc marks uses theta channel rather than angle, replacing angle with theta.';\nfunction primitiveChannelDef(channel, type, value) {\n    return `Channel ${channel} is a ${type}. Converted to {value: ${Object(_util__WEBPACK_IMPORTED_MODULE_1__[\"stringify\"])(value)}}.`;\n}\nfunction invalidFieldType(type) {\n    return `Invalid field type \"${type}\".`;\n}\nfunction invalidFieldTypeForCountAggregate(type, aggregate) {\n    return `Invalid field type \"${type}\" for aggregate: \"${aggregate}\", using \"quantitative\" instead.`;\n}\nfunction invalidAggregate(aggregate) {\n    return `Invalid aggregation operator \"${aggregate}\".`;\n}\nfunction missingFieldType(channel, newType) {\n    return `Missing type for channel \"${channel}\", using \"${newType}\" instead.`;\n}\nfunction droppingColor(type, opt) {\n    const { fill, stroke } = opt;\n    return `Dropping color ${type} as the plot also has ${fill && stroke ? 'fill and stroke' : fill ? 'fill' : 'stroke'}.`;\n}\nfunction emptyFieldDef(fieldDef, channel) {\n    return `Dropping ${Object(_util__WEBPACK_IMPORTED_MODULE_1__[\"stringify\"])(fieldDef)} from channel \"${channel}\" since it does not contain any data field, datum, value, or signal.`;\n}\nfunction latLongDeprecated(channel, type, newChannel) {\n    return `${channel}-encoding with type ${type} is deprecated. Replacing with ${newChannel}-encoding.`;\n}\nconst LINE_WITH_VARYING_SIZE = 'Line marks cannot encode size with a non-groupby field. You may want to use trail marks instead.';\nfunction incompatibleChannel(channel, markOrFacet, when) {\n    return `${channel} dropped as it is incompatible with \"${markOrFacet}\"${when ? ` when ${when}` : ''}.`;\n}\nfunction invalidEncodingChannel(channel) {\n    return `${channel}-encoding is dropped as ${channel} is not a valid encoding channel.`;\n}\nfunction facetChannelShouldBeDiscrete(channel) {\n    return `${channel} encoding should be discrete (ordinal / nominal / binned).`;\n}\nfunction facetChannelDropped(channels) {\n    return `Facet encoding dropped as ${channels.join(' and ')} ${channels.length > 1 ? 'are' : 'is'} also specified.`;\n}\nfunction discreteChannelCannotEncode(channel, type) {\n    return `Using discrete channel \"${channel}\" to encode \"${type}\" field can be misleading as it does not encode ${type === 'ordinal' ? 'order' : 'magnitude'}.`;\n}\n// MARK\nfunction rangeMarkAlignmentCannotBeExpression(align) {\n    return `The ${align} for range marks cannot be an expression`;\n}\nfunction lineWithRange(hasX2, hasY2) {\n    const channels = hasX2 && hasY2 ? 'x2 and y2' : hasX2 ? 'x2' : 'y2';\n    return `Line mark is for continuous lines and thus cannot be used with ${channels}. We will use the rule mark (line segments) instead.`;\n}\nfunction orientOverridden(original, actual) {\n    return `Specified orient \"${original}\" overridden with \"${actual}\".`;\n}\n// SCALE\nconst CANNOT_UNION_CUSTOM_DOMAIN_WITH_FIELD_DOMAIN = 'Custom domain scale cannot be unioned with default field-based domain.';\nconst RANGE_STEP_DEPRECATED = `Scale's \"rangeStep\" is deprecated and will be removed in Vega-Lite 5.0. Please use \"width\"/\"height\": {\"step\": ...} instead. See https://vega.github.io/vega-lite/docs/size.html.`;\nfunction cannotUseScalePropertyWithNonColor(prop) {\n    return `Cannot use the scale property \"${prop}\" with non-color channel.`;\n}\nfunction unaggregateDomainHasNoEffectForRawField(fieldDef) {\n    return `Using unaggregated domain with raw field has no effect (${Object(_util__WEBPACK_IMPORTED_MODULE_1__[\"stringify\"])(fieldDef)}).`;\n}\nfunction unaggregateDomainWithNonSharedDomainOp(aggregate) {\n    return `Unaggregated domain not applicable for \"${aggregate}\" since it produces values outside the origin domain of the source data.`;\n}\nfunction unaggregatedDomainWithLogScale(fieldDef) {\n    return `Unaggregated domain is currently unsupported for log scale (${Object(_util__WEBPACK_IMPORTED_MODULE_1__[\"stringify\"])(fieldDef)}).`;\n}\nfunction cannotApplySizeToNonOrientedMark(mark) {\n    return `Cannot apply size to non-oriented mark \"${mark}\".`;\n}\nfunction scaleTypeNotWorkWithChannel(channel, scaleType, defaultScaleType) {\n    return `Channel \"${channel}\" does not work with \"${scaleType}\" scale. We are using \"${defaultScaleType}\" scale instead.`;\n}\nfunction scaleTypeNotWorkWithFieldDef(scaleType, defaultScaleType) {\n    return `FieldDef does not work with \"${scaleType}\" scale. We are using \"${defaultScaleType}\" scale instead.`;\n}\nfunction scalePropertyNotWorkWithScaleType(scaleType, propName, channel) {\n    return `${channel}-scale's \"${propName}\" is dropped as it does not work with ${scaleType} scale.`;\n}\nfunction scaleTypeNotWorkWithMark(mark, scaleType) {\n    return `Scale type \"${scaleType}\" does not work with mark \"${mark}\".`;\n}\nfunction stepDropped(channel) {\n    return `The step for \"${channel}\" is dropped because the ${channel === 'width' ? 'x' : 'y'} is continuous.`;\n}\nfunction mergeConflictingProperty(property, propertyOf, v1, v2) {\n    return `Conflicting ${propertyOf.toString()} property \"${property.toString()}\" (${Object(_util__WEBPACK_IMPORTED_MODULE_1__[\"stringify\"])(v1)} and ${Object(_util__WEBPACK_IMPORTED_MODULE_1__[\"stringify\"])(v2)}). Using ${Object(_util__WEBPACK_IMPORTED_MODULE_1__[\"stringify\"])(v1)}.`;\n}\nfunction mergeConflictingDomainProperty(property, propertyOf, v1, v2) {\n    return `Conflicting ${propertyOf.toString()} property \"${property.toString()}\" (${Object(_util__WEBPACK_IMPORTED_MODULE_1__[\"stringify\"])(v1)} and ${Object(_util__WEBPACK_IMPORTED_MODULE_1__[\"stringify\"])(v2)}). Using the union of the two domains.`;\n}\nfunction independentScaleMeansIndependentGuide(channel) {\n    return `Setting the scale to be independent for \"${channel}\" means we also have to set the guide (axis or legend) to be independent.`;\n}\nfunction domainSortDropped(sort) {\n    return `Dropping sort property ${Object(_util__WEBPACK_IMPORTED_MODULE_1__[\"stringify\"])(sort)} as unioned domains only support boolean or op \"count\", \"min\", and \"max\".`;\n}\nconst MORE_THAN_ONE_SORT = 'Domains that should be unioned has conflicting sort properties. Sort will be set to true.';\nconst FACETED_INDEPENDENT_DIFFERENT_SOURCES = 'Detected faceted independent scales that union domain of multiple fields from different data sources. We will use the first field. The result view size may be incorrect.';\nconst FACETED_INDEPENDENT_SAME_FIELDS_DIFFERENT_SOURCES = 'Detected faceted independent scales that union domain of the same fields from different source. We will assume that this is the same field from a different fork of the same data source. However, if this is not the case, the result view size may be incorrect.';\nconst FACETED_INDEPENDENT_SAME_SOURCE = 'Detected faceted independent scales that union domain of multiple fields from the same data source. We will use the first field. The result view size may be incorrect.';\n// AXIS\nconst INVALID_CHANNEL_FOR_AXIS = 'Invalid channel for axis.';\n// STACK\nfunction cannotStackRangedMark(channel) {\n    return `Cannot stack \"${channel}\" if there is already \"${channel}2\".`;\n}\nfunction cannotStackNonLinearScale(scaleType) {\n    return `Cannot stack non-linear scale (${scaleType}).`;\n}\nfunction stackNonSummativeAggregate(aggregate) {\n    return `Stacking is applied even though the aggregate function is non-summative (\"${aggregate}\").`;\n}\n// TIMEUNIT\nfunction invalidTimeUnit(unitName, value) {\n    return `Invalid ${unitName}: ${Object(_util__WEBPACK_IMPORTED_MODULE_1__[\"stringify\"])(value)}.`;\n}\nfunction droppedDay(d) {\n    return `Dropping day from datetime ${Object(_util__WEBPACK_IMPORTED_MODULE_1__[\"stringify\"])(d)} as day cannot be combined with other units.`;\n}\nfunction errorBarCenterAndExtentAreNotNeeded(center, extent) {\n    return `${extent ? 'extent ' : ''}${extent && center ? 'and ' : ''}${center ? 'center ' : ''}${extent && center ? 'are ' : 'is '}not needed when data are aggregated.`;\n}\nfunction errorBarCenterIsUsedWithWrongExtent(center, extent, mark) {\n    return `${center} is not usually used with ${extent} for ${mark}.`;\n}\nfunction errorBarContinuousAxisHasCustomizedAggregate(aggregate, compositeMark) {\n    return `Continuous axis should not have customized aggregation function ${aggregate}; ${compositeMark} already agregates the axis.`;\n}\nfunction errorBand1DNotSupport(property) {\n    return `1D error band does not support ${property}.`;\n}\n// CHANNEL\nfunction channelRequiredForBinned(channel) {\n    return `Channel ${channel} is required for \"binned\" bin.`;\n}\nfunction channelShouldNotBeUsedForBinned(channel) {\n    return `Channel ${channel} should not be used with \"binned\" bin.`;\n}\nfunction domainRequiredForThresholdScale(channel) {\n    return `Domain for ${channel} is required for threshold scale.`;\n}\n//# sourceMappingURL=message.js.map//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,[encoded data, 19684 characters]\n//# sourceURL=webpack-internal:///./node_modules/vega-lite/build/src/log/message.js\n");

/***/ }),

/***/ "./node_modules/vega-lite/build/src/logical.js":
/*!*****************************************************!*\
  !*** ./node_modules/vega-lite/build/src/logical.js ***!
  \*****************************************************/
/*! exports provided: isLogicalOr, isLogicalAnd, isLogicalNot, forEachLeaf, normalizeLogicalComposition */
/***/ (function(module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"isLogicalOr\", function() { return isLogicalOr; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"isLogicalAnd\", function() { return isLogicalAnd; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"isLogicalNot\", function() { return isLogicalNot; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"forEachLeaf\", function() { return forEachLeaf; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"normalizeLogicalComposition\", function() { return normalizeLogicalComposition; });\nfunction isLogicalOr(op) {\n    return !!op.or;\n}\nfunction isLogicalAnd(op) {\n    return !!op.and;\n}\nfunction isLogicalNot(op) {\n    return !!op.not;\n}\nfunction forEachLeaf(op, fn) {\n    if (isLogicalNot(op)) {\n        forEachLeaf(op.not, fn);\n    }\n    else if (isLogicalAnd(op)) {\n        for (const subop of op.and) {\n            forEachLeaf(subop, fn);\n        }\n    }\n    else if (isLogicalOr(op)) {\n        for (const subop of op.or) {\n            forEachLeaf(subop, fn);\n        }\n    }\n    else {\n        fn(op);\n    }\n}\nfunction normalizeLogicalComposition(op, normalizer) {\n    if (isLogicalNot(op)) {\n        return { not: normalizeLogicalComposition(op.not, normalizer) };\n    }\n    else if (isLogicalAnd(op)) {\n        return { and: op.and.map(o => normalizeLogicalComposition(o, normalizer)) };\n    }\n    else if (isLogicalOr(op)) {\n        return { or: op.or.map(o => normalizeLogicalComposition(o, normalizer)) };\n    }\n    else {\n        return normalizer(op);\n    }\n}\n//# sourceMappingURL=logical.js.map//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvdmVnYS1saXRlL2J1aWxkL3NyYy9sb2dpY2FsLmpzLmpzIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL3ZlZ2EtbGl0ZS9idWlsZC9zcmMvbG9naWNhbC5qcz9iM2YxIl0sInNvdXJjZXNDb250ZW50IjpbImV4cG9ydCBmdW5jdGlvbiBpc0xvZ2ljYWxPcihvcCkge1xuICAgIHJldHVybiAhIW9wLm9yO1xufVxuZXhwb3J0IGZ1bmN0aW9uIGlzTG9naWNhbEFuZChvcCkge1xuICAgIHJldHVybiAhIW9wLmFuZDtcbn1cbmV4cG9ydCBmdW5jdGlvbiBpc0xvZ2ljYWxOb3Qob3ApIHtcbiAgICByZXR1cm4gISFvcC5ub3Q7XG59XG5leHBvcnQgZnVuY3Rpb24gZm9yRWFjaExlYWYob3AsIGZuKSB7XG4gICAgaWYgKGlzTG9naWNhbE5vdChvcCkpIHtcbiAgICAgICAgZm9yRWFjaExlYWYob3Aubm90LCBmbik7XG4gICAgfVxuICAgIGVsc2UgaWYgKGlzTG9naWNhbEFuZChvcCkpIHtcbiAgICAgICAgZm9yIChjb25zdCBzdWJvcCBvZiBvcC5hbmQpIHtcbiAgICAgICAgICAgIGZvckVhY2hMZWFmKHN1Ym9wLCBmbik7XG4gICAgICAgIH1cbiAgICB9XG4gICAgZWxzZSBpZiAoaXNMb2dpY2FsT3Iob3ApKSB7XG4gICAgICAgIGZvciAoY29uc3Qgc3Vib3Agb2Ygb3Aub3IpIHtcbiAgICAgICAgICAgIGZvckVhY2hMZWFmKHN1Ym9wLCBmbik7XG4gICAgICAgIH1cbiAgICB9XG4gICAgZWxzZSB7XG4gICAgICAgIGZuKG9wKTtcbiAgICB9XG59XG5leHBvcnQgZnVuY3Rpb24gbm9ybWFsaXplTG9naWNhbENvbXBvc2l0aW9uKG9wLCBub3JtYWxpemVyKSB7XG4gICAgaWYgKGlzTG9naWNhbE5vdChvcCkpIHtcbiAgICAgICAgcmV0dXJuIHsgbm90OiBub3JtYWxpemVMb2dpY2FsQ29tcG9zaXRpb24ob3Aubm90LCBub3JtYWxpemVyKSB9O1xuICAgIH1cbiAgICBlbHNlIGlmIChpc0xvZ2ljYWxBbmQob3ApKSB7XG4gICAgICAgIHJldHVybiB7IGFuZDogb3AuYW5kLm1hcChvID0+IG5vcm1hbGl6ZUxvZ2ljYWxDb21wb3NpdGlvbihvLCBub3JtYWxpemVyKSkgfTtcbiAgICB9XG4gICAgZWxzZSBpZiAoaXNMb2dpY2FsT3Iob3ApKSB7XG4gICAgICAgIHJldHVybiB7IG9yOiBvcC5vci5tYXAobyA9PiBub3JtYWxpemVMb2dpY2FsQ29tcG9zaXRpb24obywgbm9ybWFsaXplcikpIH07XG4gICAgfVxuICAgIGVsc2Uge1xuICAgICAgICByZXR1cm4gbm9ybWFsaXplcihvcCk7XG4gICAgfVxufVxuLy8jIHNvdXJjZU1hcHBpbmdVUkw9bG9naWNhbC5qcy5tYXAiXSwibWFwcGluZ3MiOiJBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSIsInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///./node_modules/vega-lite/build/src/logical.js\n");

/***/ }),

/***/ "./node_modules/vega-lite/build/src/mark.js":
/*!**************************************************!*\
  !*** ./node_modules/vega-lite/build/src/mark.js ***!
  \**************************************************/
/*! exports provided: Mark, ARC, AREA, BAR, IMAGE, LINE, POINT, RECT, RULE, TEXT, TICK, TRAIL, CIRCLE, SQUARE, GEOSHAPE, isMark, isPathMark, isRectBasedMark, PRIMITIVE_MARKS, isMarkDef, isPrimitiveMark, STROKE_CONFIG, FILL_CONFIG, FILL_STROKE_CONFIG, VL_ONLY_MARK_CONFIG_PROPERTIES, VL_ONLY_MARK_SPECIFIC_CONFIG_PROPERTY_INDEX, defaultMarkConfig, MARK_CONFIGS, BAR_CORNER_RADIUS_INDEX, defaultBarConfig, defaultRectConfig, defaultTickConfig, getMarkType */
/***/ (function(module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"Mark\", function() { return Mark; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"ARC\", function() { return ARC; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"AREA\", function() { return AREA; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"BAR\", function() { return BAR; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"IMAGE\", function() { return IMAGE; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"LINE\", function() { return LINE; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"POINT\", function() { return POINT; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"RECT\", function() { return RECT; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"RULE\", function() { return RULE; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"TEXT\", function() { return TEXT; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"TICK\", function() { return TICK; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"TRAIL\", function() { return TRAIL; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"CIRCLE\", function() { return CIRCLE; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"SQUARE\", function() { return SQUARE; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"GEOSHAPE\", function() { return GEOSHAPE; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"isMark\", function() { return isMark; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"isPathMark\", function() { return isPathMark; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"isRectBasedMark\", function() { return isRectBasedMark; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"PRIMITIVE_MARKS\", function() { return PRIMITIVE_MARKS; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"isMarkDef\", function() { return isMarkDef; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"isPrimitiveMark\", function() { return isPrimitiveMark; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"STROKE_CONFIG\", function() { return STROKE_CONFIG; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"FILL_CONFIG\", function() { return FILL_CONFIG; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"FILL_STROKE_CONFIG\", function() { return FILL_STROKE_CONFIG; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"VL_ONLY_MARK_CONFIG_PROPERTIES\", function() { return VL_ONLY_MARK_CONFIG_PROPERTIES; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"VL_ONLY_MARK_SPECIFIC_CONFIG_PROPERTY_INDEX\", function() { return VL_ONLY_MARK_SPECIFIC_CONFIG_PROPERTY_INDEX; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"defaultMarkConfig\", function() { return defaultMarkConfig; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"MARK_CONFIGS\", function() { return MARK_CONFIGS; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"BAR_CORNER_RADIUS_INDEX\", function() { return BAR_CORNER_RADIUS_INDEX; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"defaultBarConfig\", function() { return defaultBarConfig; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"defaultRectConfig\", function() { return defaultRectConfig; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"defaultTickConfig\", function() { return defaultTickConfig; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"getMarkType\", function() { return getMarkType; });\n/* harmony import */ var vega_util__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! vega-util */ \"./node_modules/vega-lite/node_modules/vega-util/build/vega-util.module.js\");\n/* harmony import */ var _util__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./util */ \"./node_modules/vega-lite/build/src/util.js\");\n\n\n/**\n * All types of primitive marks.\n */\nconst Mark = {\n    arc: 'arc',\n    area: 'area',\n    bar: 'bar',\n    image: 'image',\n    line: 'line',\n    point: 'point',\n    rect: 'rect',\n    rule: 'rule',\n    text: 'text',\n    tick: 'tick',\n    trail: 'trail',\n    circle: 'circle',\n    square: 'square',\n    geoshape: 'geoshape'\n};\nconst ARC = Mark.arc;\nconst AREA = Mark.area;\nconst BAR = Mark.bar;\nconst IMAGE = Mark.image;\nconst LINE = Mark.line;\nconst POINT = Mark.point;\nconst RECT = Mark.rect;\nconst RULE = Mark.rule;\nconst TEXT = Mark.text;\nconst TICK = Mark.tick;\nconst TRAIL = Mark.trail;\nconst CIRCLE = Mark.circle;\nconst SQUARE = Mark.square;\nconst GEOSHAPE = Mark.geoshape;\nfunction isMark(m) {\n    return m in Mark;\n}\nfunction isPathMark(m) {\n    return Object(_util__WEBPACK_IMPORTED_MODULE_1__[\"contains\"])(['line', 'area', 'trail'], m);\n}\nfunction isRectBasedMark(m) {\n    return Object(_util__WEBPACK_IMPORTED_MODULE_1__[\"contains\"])(['rect', 'bar', 'image', 'arc' /* arc is rect/interval in polar coordinate */], m);\n}\nconst PRIMITIVE_MARKS = Object(_util__WEBPACK_IMPORTED_MODULE_1__[\"keys\"])(Mark);\nfunction isMarkDef(mark) {\n    return mark['type'];\n}\nconst PRIMITIVE_MARK_INDEX = Object(vega_util__WEBPACK_IMPORTED_MODULE_0__[\"toSet\"])(PRIMITIVE_MARKS);\nfunction isPrimitiveMark(mark) {\n    const markType = isMarkDef(mark) ? mark.type : mark;\n    return markType in PRIMITIVE_MARK_INDEX;\n}\nconst STROKE_CONFIG = [\n    'stroke',\n    'strokeWidth',\n    'strokeDash',\n    'strokeDashOffset',\n    'strokeOpacity',\n    'strokeJoin',\n    'strokeMiterLimit'\n];\nconst FILL_CONFIG = ['fill', 'fillOpacity'];\nconst FILL_STROKE_CONFIG = [...STROKE_CONFIG, ...FILL_CONFIG];\nconst VL_ONLY_MARK_CONFIG_INDEX = {\n    color: 1,\n    filled: 1,\n    invalid: 1,\n    order: 1,\n    radius2: 1,\n    theta2: 1,\n    timeUnitBand: 1,\n    timeUnitBandPosition: 1\n};\nconst VL_ONLY_MARK_CONFIG_PROPERTIES = Object(_util__WEBPACK_IMPORTED_MODULE_1__[\"keys\"])(VL_ONLY_MARK_CONFIG_INDEX);\nconst VL_ONLY_MARK_SPECIFIC_CONFIG_PROPERTY_INDEX = {\n    area: ['line', 'point'],\n    bar: ['binSpacing', 'continuousBandSize', 'discreteBandSize'],\n    rect: ['binSpacing', 'continuousBandSize', 'discreteBandSize'],\n    line: ['point'],\n    tick: ['bandSize', 'thickness']\n};\nconst defaultMarkConfig = {\n    color: '#4c78a8',\n    invalid: 'filter',\n    timeUnitBand: 1\n};\nconst MARK_CONFIG_INDEX = {\n    mark: 1,\n    arc: 1,\n    area: 1,\n    bar: 1,\n    circle: 1,\n    image: 1,\n    line: 1,\n    point: 1,\n    rect: 1,\n    rule: 1,\n    square: 1,\n    text: 1,\n    tick: 1,\n    trail: 1,\n    geoshape: 1\n};\nconst MARK_CONFIGS = Object(_util__WEBPACK_IMPORTED_MODULE_1__[\"keys\"])(MARK_CONFIG_INDEX);\nconst BAR_CORNER_RADIUS_INDEX = {\n    horizontal: ['cornerRadiusTopRight', 'cornerRadiusBottomRight'],\n    vertical: ['cornerRadiusTopLeft', 'cornerRadiusTopRight']\n};\nconst DEFAULT_RECT_BAND_SIZE = 5;\nconst defaultBarConfig = {\n    binSpacing: 1,\n    continuousBandSize: DEFAULT_RECT_BAND_SIZE,\n    timeUnitBandPosition: 0.5\n};\nconst defaultRectConfig = {\n    binSpacing: 0,\n    continuousBandSize: DEFAULT_RECT_BAND_SIZE,\n    timeUnitBandPosition: 0.5\n};\nconst defaultTickConfig = {\n    thickness: 1\n};\nfunction getMarkType(m) {\n    return isMarkDef(m) ? m.type : m;\n}\n//# sourceMappingURL=mark.js.map//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,[encoded data, 5920 characters]\n//# sourceURL=webpack-internal:///./node_modules/vega-lite/build/src/mark.js\n");

/***/ }),

/***/ "./node_modules/vega-lite/build/src/normalize/core.js":
/*!************************************************************!*\
  !*** ./node_modules/vega-lite/build/src/normalize/core.js ***!
  \************************************************************/
/*! exports provided: CoreNormalizer */
/***/ (function(module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"CoreNormalizer\", function() { return CoreNormalizer; });\n/* harmony import */ var vega_util__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! vega-util */ \"./node_modules/vega-lite/node_modules/vega-util/build/vega-util.module.js\");\n/* harmony import */ var _channel__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../channel */ \"./node_modules/vega-lite/build/src/channel.js\");\n/* harmony import */ var _channeldef__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ../channeldef */ \"./node_modules/vega-lite/build/src/channeldef.js\");\n/* harmony import */ var _compositemark_boxplot__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ../compositemark/boxplot */ \"./node_modules/vega-lite/build/src/compositemark/boxplot.js\");\n/* harmony import */ var _compositemark_errorband__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ../compositemark/errorband */ \"./node_modules/vega-lite/build/src/compositemark/errorband.js\");\n/* harmony import */ var _compositemark_errorbar__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! ../compositemark/errorbar */ \"./node_modules/vega-lite/build/src/compositemark/errorbar.js\");\n/* harmony import */ var _encoding__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! ../encoding */ \"./node_modules/vega-lite/build/src/encoding.js\");\n/* harmony import */ var _log__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! ../log */ \"./node_modules/vega-lite/build/src/log/index.js\");\n/* harmony import */ var _spec_facet__WEBPACK_IMPORTED_MODULE_8__ = __webpack_require__(/*! ../spec/facet */ \"./node_modules/vega-lite/build/src/spec/facet.js\");\n/* harmony import */ var _spec_map__WEBPACK_IMPORTED_MODULE_9__ = __webpack_require__(/*! ../spec/map */ \"./node_modules/vega-lite/build/src/spec/map.js\");\n/* harmony import */ var _spec_repeat__WEBPACK_IMPORTED_MODULE_10__ = __webpack_require__(/*! ../spec/repeat */ \"./node_modules/vega-lite/build/src/spec/repeat.js\");\n/* harmony import */ var _spec_unit__WEBPACK_IMPORTED_MODULE_11__ = __webpack_require__(/*! ../spec/unit */ \"./node_modules/vega-lite/build/src/spec/unit.js\");\n/* harmony import */ var _util__WEBPACK_IMPORTED_MODULE_12__ = __webpack_require__(/*! ../util */ \"./node_modules/vega-lite/build/src/util.js\");\n/* harmony import */ var _vega_schema__WEBPACK_IMPORTED_MODULE_13__ = __webpack_require__(/*! ../vega.schema */ \"./node_modules/vega-lite/build/src/vega.schema.js\");\n/* harmony import */ var _pathoverlay__WEBPACK_IMPORTED_MODULE_14__ = __webpack_require__(/*! ./pathoverlay */ \"./node_modules/vega-lite/build/src/normalize/pathoverlay.js\");\n/* harmony import */ var _rangestep__WEBPACK_IMPORTED_MODULE_15__ = __webpack_require__(/*! ./rangestep */ \"./node_modules/vega-lite/build/src/normalize/rangestep.js\");\n/* harmony import */ var _repeater__WEBPACK_IMPORTED_MODULE_16__ = __webpack_require__(/*! ./repeater */ \"./node_modules/vega-lite/build/src/normalize/repeater.js\");\n/* harmony import */ var _ruleforrangedline__WEBPACK_IMPORTED_MODULE_17__ = __webpack_require__(/*! ./ruleforrangedline */ \"./node_modules/vega-lite/build/src/normalize/ruleforrangedline.js\");\nvar __rest = (undefined && undefined.__rest) || function (s, e) {\n    var t = {};\n    for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0)\n        t[p] = s[p];\n    if (s != null && typeof Object.getOwnPropertySymbols === \"function\")\n        for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) {\n            if (e.indexOf(p[i]) < 0 && Object.prototype.propertyIsEnumerable.call(s, p[i]))\n                t[p[i]] = s[p[i]];\n        }\n    return t;\n};\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\nclass CoreNormalizer extends _spec_map__WEBPACK_IMPORTED_MODULE_9__[\"SpecMapper\"] {\n    constructor() {\n        super(...arguments);\n        this.nonFacetUnitNormalizers = [\n            _compositemark_boxplot__WEBPACK_IMPORTED_MODULE_3__[\"boxPlotNormalizer\"],\n            _compositemark_errorbar__WEBPACK_IMPORTED_MODULE_5__[\"errorBarNormalizer\"],\n            _compositemark_errorband__WEBPACK_IMPORTED_MODULE_4__[\"errorBandNormalizer\"],\n            new _pathoverlay__WEBPACK_IMPORTED_MODULE_14__[\"PathOverlayNormalizer\"](),\n            new _ruleforrangedline__WEBPACK_IMPORTED_MODULE_17__[\"RuleForRangedLineNormalizer\"](),\n            new _rangestep__WEBPACK_IMPORTED_MODULE_15__[\"RangeStepNormalizer\"]()\n        ];\n    }\n    map(spec, params) {\n        // Special handling for a faceted unit spec as it can return a facet spec, not just a layer or unit spec like a normal unit spec.\n        if (Object(_spec_unit__WEBPACK_IMPORTED_MODULE_11__[\"isUnitSpec\"])(spec)) {\n            const hasRow = Object(_encoding__WEBPACK_IMPORTED_MODULE_6__[\"channelHasField\"])(spec.encoding, _channel__WEBPACK_IMPORTED_MODULE_1__[\"ROW\"]);\n            const hasColumn = Object(_encoding__WEBPACK_IMPORTED_MODULE_6__[\"channelHasField\"])(spec.encoding, _channel__WEBPACK_IMPORTED_MODULE_1__[\"COLUMN\"]);\n            const hasFacet = Object(_encoding__WEBPACK_IMPORTED_MODULE_6__[\"channelHasField\"])(spec.encoding, _channel__WEBPACK_IMPORTED_MODULE_1__[\"FACET\"]);\n            if (hasRow || hasColumn || hasFacet) {\n                return this.mapFacetedUnit(spec, params);\n            }\n        }\n        return super.map(spec, params);\n    }\n    // This is for normalizing non-facet unit\n    mapUnit(spec, params) {\n        const { parentEncoding, parentProjection } = params;\n        const encoding = Object(_repeater__WEBPACK_IMPORTED_MODULE_16__[\"replaceRepeaterInEncoding\"])(spec.encoding, params.repeater);\n        const specWithReplacedEncoding = Object.assign(Object.assign({}, spec), (encoding ? { encoding } : {}));\n        if (parentEncoding || parentProjection) {\n            return this.mapUnitWithParentEncodingOrProjection(specWithReplacedEncoding, params);\n        }\n        const normalizeLayerOrUnit = this.mapLayerOrUnit.bind(this);\n        for (const unitNormalizer of this.nonFacetUnitNormalizers) {\n            if (unitNormalizer.hasMatchingType(specWithReplacedEncoding, params.config)) {\n                return unitNormalizer.run(specWithReplacedEncoding, params, normalizeLayerOrUnit);\n            }\n        }\n        return specWithReplacedEncoding;\n    }\n    mapRepeat(spec, params) {\n        if (Object(_spec_repeat__WEBPACK_IMPORTED_MODULE_10__[\"isLayerRepeatSpec\"])(spec)) {\n            return this.mapLayerRepeat(spec, params);\n        }\n        else {\n            return this.mapNonLayerRepeat(spec, params);\n        }\n    }\n    mapLayerRepeat(spec, params) {\n        const { repeat, spec: childSpec } = spec, rest = __rest(spec, [\"repeat\", \"spec\"]);\n        const { row, column, layer } = repeat;\n        const { repeater = {}, repeaterPrefix = '' } = params;\n        if (row || column) {\n            return this.mapRepeat(Object.assign(Object.assign({}, spec), { repeat: Object.assign(Object.assign({}, (row ? { row } : {})), (column ? { column } : {})), spec: {\n                    repeat: { layer },\n                    spec: childSpec\n                } }), params);\n        }\n        else {\n            return Object.assign(Object.assign({}, rest), { layer: layer.map(layerValue => {\n                    const childRepeater = Object.assign(Object.assign({}, repeater), { layer: layerValue });\n                    const childName = (childSpec.name || '') + repeaterPrefix + `child__layer_${Object(_util__WEBPACK_IMPORTED_MODULE_12__[\"varName\"])(layerValue)}`;\n                    const child = this.mapLayerOrUnit(childSpec, Object.assign(Object.assign({}, params), { repeater: childRepeater, repeaterPrefix: childName }));\n                    child.name = childName;\n                    return child;\n                }) });\n        }\n    }\n    mapNonLayerRepeat(spec, params) {\n        var _a;\n        const { repeat, spec: childSpec, data } = spec, remainingProperties = __rest(spec, [\"repeat\", \"spec\", \"data\"]);\n        if (!Object(vega_util__WEBPACK_IMPORTED_MODULE_0__[\"isArray\"])(repeat) && spec.columns) {\n            // is repeat with row/column\n            spec = Object(_util__WEBPACK_IMPORTED_MODULE_12__[\"omit\"])(spec, ['columns']);\n            _log__WEBPACK_IMPORTED_MODULE_7__[\"warn\"](_log__WEBPACK_IMPORTED_MODULE_7__[\"message\"].columnsNotSupportByRowCol('repeat'));\n        }\n        const concat = [];\n        const { repeater = {}, repeaterPrefix = '' } = params;\n        const row = (!Object(vega_util__WEBPACK_IMPORTED_MODULE_0__[\"isArray\"])(repeat) && repeat.row) || [repeater ? repeater.row : null];\n        const column = (!Object(vega_util__WEBPACK_IMPORTED_MODULE_0__[\"isArray\"])(repeat) && repeat.column) || [repeater ? repeater.column : null];\n        const repeatValues = (Object(vega_util__WEBPACK_IMPORTED_MODULE_0__[\"isArray\"])(repeat) && repeat) || [repeater ? repeater.repeat : null];\n        // cross product\n        for (const repeatValue of repeatValues) {\n            for (const rowValue of row) {\n                for (const columnValue of column) {\n                    const childRepeater = {\n                        repeat: repeatValue,\n                        row: rowValue,\n                        column: columnValue,\n                        layer: repeater.layer\n                    };\n                    const childName = (childSpec.name || '') +\n                        repeaterPrefix +\n                        'child__' +\n                        (Object(vega_util__WEBPACK_IMPORTED_MODULE_0__[\"isArray\"])(repeat)\n                            ? `${Object(_util__WEBPACK_IMPORTED_MODULE_12__[\"varName\"])(repeatValue)}`\n                            : (repeat.row ? `row_${Object(_util__WEBPACK_IMPORTED_MODULE_12__[\"varName\"])(rowValue)}` : '') +\n                                (repeat.column ? `column_${Object(_util__WEBPACK_IMPORTED_MODULE_12__[\"varName\"])(columnValue)}` : ''));\n                    const child = this.map(childSpec, Object.assign(Object.assign({}, params), { repeater: childRepeater, repeaterPrefix: childName }));\n                    child.name = childName;\n                    // we move data up\n                    concat.push(Object(_util__WEBPACK_IMPORTED_MODULE_12__[\"omit\"])(child, ['data']));\n                }\n            }\n        }\n        const columns = Object(vega_util__WEBPACK_IMPORTED_MODULE_0__[\"isArray\"])(repeat) ? spec.columns : repeat.column ? repeat.column.length : 1;\n        return Object.assign(Object.assign({ data: (_a = childSpec.data) !== null && _a !== void 0 ? _a : data, align: 'all' }, remainingProperties), { columns,\n            concat });\n    }\n    mapFacet(spec, params) {\n        const { facet } = spec;\n        if (Object(_spec_facet__WEBPACK_IMPORTED_MODULE_8__[\"isFacetMapping\"])(facet) && spec.columns) {\n            // is facet with row/column\n            spec = Object(_util__WEBPACK_IMPORTED_MODULE_12__[\"omit\"])(spec, ['columns']);\n            _log__WEBPACK_IMPORTED_MODULE_7__[\"warn\"](_log__WEBPACK_IMPORTED_MODULE_7__[\"message\"].columnsNotSupportByRowCol('facet'));\n        }\n        return super.mapFacet(spec, params);\n    }\n    mapUnitWithParentEncodingOrProjection(spec, params) {\n        const { encoding, projection } = spec;\n        const { parentEncoding, parentProjection, config } = params;\n        const mergedProjection = mergeProjection({ parentProjection, projection });\n        const mergedEncoding = mergeEncoding({\n            parentEncoding,\n            encoding: Object(_repeater__WEBPACK_IMPORTED_MODULE_16__[\"replaceRepeaterInEncoding\"])(encoding, params.repeater)\n        });\n        return this.mapUnit(Object.assign(Object.assign(Object.assign({}, spec), (mergedProjection ? { projection: mergedProjection } : {})), (mergedEncoding ? { encoding: mergedEncoding } : {})), { config });\n    }\n    mapFacetedUnit(spec, params) {\n        // New encoding in the inside spec should not contain row / column\n        // as row/column should be moved to facet\n        const _a = spec.encoding, { row, column, facet } = _a, encoding = __rest(_a, [\"row\", \"column\", \"facet\"]);\n        // Mark and encoding should be moved into the inner spec\n        const { mark, width, projection, height, view, selection, encoding: _ } = spec, outerSpec = __rest(spec, [\"mark\", \"width\", \"projection\", \"height\", \"view\", \"selection\", \"encoding\"]);\n        const { facetMapping, layout } = this.getFacetMappingAndLayout({ row, column, facet }, params);\n        const newEncoding = Object(_repeater__WEBPACK_IMPORTED_MODULE_16__[\"replaceRepeaterInEncoding\"])(encoding, params.repeater);\n        return this.mapFacet(Object.assign(Object.assign(Object.assign({}, outerSpec), layout), { \n            // row / column has higher precedence than facet\n            facet: facetMapping, spec: Object.assign(Object.assign(Object.assign(Object.assign(Object.assign(Object.assign({}, (width ? { width } : {})), (height ? { height } : {})), (view ? { view } : {})), (projection ? { projection } : {})), { mark, encoding: newEncoding }), (selection ? { selection } : {})) }), params);\n    }\n    getFacetMappingAndLayout(facets, params) {\n        var _a;\n        const { row, column, facet } = facets;\n        if (row || column) {\n            if (facet) {\n                _log__WEBPACK_IMPORTED_MODULE_7__[\"warn\"](_log__WEBPACK_IMPORTED_MODULE_7__[\"message\"].facetChannelDropped([...(row ? [_channel__WEBPACK_IMPORTED_MODULE_1__[\"ROW\"]] : []), ...(column ? [_channel__WEBPACK_IMPORTED_MODULE_1__[\"COLUMN\"]] : [])]));\n            }\n            const facetMapping = {};\n            const layout = {};\n            for (const channel of [_channel__WEBPACK_IMPORTED_MODULE_1__[\"ROW\"], _channel__WEBPACK_IMPORTED_MODULE_1__[\"COLUMN\"]]) {\n                const def = facets[channel];\n                if (def) {\n                    const { align, center, spacing, columns } = def, defWithoutLayout = __rest(def, [\"align\", \"center\", \"spacing\", \"columns\"]);\n                    facetMapping[channel] = defWithoutLayout;\n                    for (const prop of ['align', 'center', 'spacing']) {\n                        if (def[prop] !== undefined) {\n                            layout[prop] = (_a = layout[prop]) !== null && _a !== void 0 ? _a : {};\n                            layout[prop][channel] = def[prop];\n                        }\n                    }\n                }\n            }\n            return { facetMapping, layout };\n        }\n        else {\n            const { align, center, spacing, columns } = facet, facetMapping = __rest(facet, [\"align\", \"center\", \"spacing\", \"columns\"]);\n            return {\n                facetMapping: Object(_repeater__WEBPACK_IMPORTED_MODULE_16__[\"replaceRepeaterInFacet\"])(facetMapping, params.repeater),\n                layout: Object.assign(Object.assign(Object.assign(Object.assign({}, (align ? { align } : {})), (center ? { center } : {})), (spacing ? { spacing } : {})), (columns ? { columns } : {}))\n            };\n        }\n    }\n    mapLayer(spec, _a) {\n        // Special handling for extended layer spec\n        var { parentEncoding, parentProjection } = _a, otherParams = __rest(_a, [\"parentEncoding\", \"parentProjection\"]);\n        const { encoding, projection } = spec, rest = __rest(spec, [\"encoding\", \"projection\"]);\n        const params = Object.assign(Object.assign({}, otherParams), { parentEncoding: mergeEncoding({ parentEncoding, encoding, layer: true }), parentProjection: mergeProjection({ parentProjection, projection }) });\n        return super.mapLayer(rest, params);\n    }\n}\nfunction mergeEncoding({ parentEncoding, encoding = {}, layer }) {\n    let merged = {};\n    if (parentEncoding) {\n        const channels = new Set([...Object(_util__WEBPACK_IMPORTED_MODULE_12__[\"keys\"])(parentEncoding), ...Object(_util__WEBPACK_IMPORTED_MODULE_12__[\"keys\"])(encoding)]);\n        for (const channel of channels) {\n            const channelDef = encoding[channel];\n            const parentChannelDef = parentEncoding[channel];\n            if (Object(_channeldef__WEBPACK_IMPORTED_MODULE_2__[\"isFieldOrDatumDef\"])(channelDef)) {\n                // Field/Datum Def can inherit properties from its parent\n                // Note that parentChannelDef doesn't have to be a field/datum def if the channelDef is already one.\n                const mergedChannelDef = Object.assign(Object.assign({}, parentChannelDef), channelDef);\n                merged[channel] = mergedChannelDef;\n            }\n            else if (Object(_channeldef__WEBPACK_IMPORTED_MODULE_2__[\"hasConditionalFieldOrDatumDef\"])(channelDef)) {\n                merged[channel] = Object.assign(Object.assign({}, channelDef), { condition: Object.assign(Object.assign({}, parentChannelDef), channelDef.condition) });\n            }\n            else if (channelDef || channelDef === null) {\n                merged[channel] = channelDef;\n            }\n            else if (layer ||\n                Object(_channeldef__WEBPACK_IMPORTED_MODULE_2__[\"isValueDef\"])(parentChannelDef) ||\n                Object(_vega_schema__WEBPACK_IMPORTED_MODULE_13__[\"isSignalRef\"])(parentChannelDef) ||\n                Object(_channeldef__WEBPACK_IMPORTED_MODULE_2__[\"isFieldOrDatumDef\"])(parentChannelDef) ||\n                Object(vega_util__WEBPACK_IMPORTED_MODULE_0__[\"isArray\"])(parentChannelDef)) {\n                merged[channel] = parentChannelDef;\n            }\n        }\n    }\n    else {\n        merged = encoding;\n    }\n    return !merged || Object(_util__WEBPACK_IMPORTED_MODULE_12__[\"isEmpty\"])(merged) ? undefined : merged;\n}\nfunction mergeProjection(opt) {\n    const { parentProjection, projection } = opt;\n    if (parentProjection && projection) {\n        _log__WEBPACK_IMPORTED_MODULE_7__[\"warn\"](_log__WEBPACK_IMPORTED_MODULE_7__[\"message\"].projectionOverridden({ parentProjection, projection }));\n    }\n    return projection !== null && projection !== void 0 ? projection : parentProjection;\n}\n//# sourceMappingURL=core.js.map//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,[encoded data, 20008 characters]\n//# sourceURL=webpack-internal:///./node_modules/vega-lite/build/src/normalize/core.js\n");

/***/ }),

/***/ "./node_modules/vega-lite/build/src/normalize/index.js":
/*!*************************************************************!*\
  !*** ./node_modules/vega-lite/build/src/normalize/index.js ***!
  \*************************************************************/
/*! exports provided: normalize, normalizeAutoSize */
/***/ (function(module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"normalize\", function() { return normalize; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"normalizeAutoSize\", function() { return normalizeAutoSize; });\n/* harmony import */ var vega_util__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! vega-util */ \"./node_modules/vega-lite/node_modules/vega-util/build/vega-util.module.js\");\n/* harmony import */ var _config__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../config */ \"./node_modules/vega-lite/build/src/config.js\");\n/* harmony import */ var _log__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ../log */ \"./node_modules/vega-lite/build/src/log/index.js\");\n/* harmony import */ var _spec__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ../spec */ \"./node_modules/vega-lite/build/src/spec/index.js\");\n/* harmony import */ var _util__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ../util */ \"./node_modules/vega-lite/build/src/util.js\");\n/* harmony import */ var _core__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! ./core */ \"./node_modules/vega-lite/build/src/normalize/core.js\");\n\n\n\n\n\n\nfunction normalize(spec, config) {\n    if (config === undefined) {\n        config = Object(_config__WEBPACK_IMPORTED_MODULE_1__[\"initConfig\"])(spec.config);\n    }\n    const normalizedSpec = normalizeGenericSpec(spec, config);\n    const { width, height } = spec;\n    const autosize = normalizeAutoSize(normalizedSpec, { width, height, autosize: spec.autosize }, config);\n    return Object.assign(Object.assign({}, normalizedSpec), (autosize ? { autosize } : {}));\n}\nconst normalizer = new _core__WEBPACK_IMPORTED_MODULE_5__[\"CoreNormalizer\"]();\n/**\n * Decompose extended unit specs into composition of pure unit specs.\n */\nfunction normalizeGenericSpec(spec, config = {}) {\n    return normalizer.map(spec, { config });\n}\nfunction _normalizeAutoSize(autosize) {\n    return Object(vega_util__WEBPACK_IMPORTED_MODULE_0__[\"isString\"])(autosize) ? { type: autosize } : autosize !== null && autosize !== void 0 ? autosize : {};\n}\n/**\n * Normalize autosize and deal with width or height == \"container\".\n */\nfunction normalizeAutoSize(spec, sizeInfo, config) {\n    let { width, height } = sizeInfo;\n    const isFitCompatible = Object(_spec__WEBPACK_IMPORTED_MODULE_3__[\"isUnitSpec\"])(spec) || Object(_spec__WEBPACK_IMPORTED_MODULE_3__[\"isLayerSpec\"])(spec);\n    const autosizeDefault = {};\n    if (!isFitCompatible) {\n        // If spec is not compatible with autosize == \"fit\", discard width/height == container\n        if (width == 'container') {\n            _log__WEBPACK_IMPORTED_MODULE_2__[\"warn\"](_log__WEBPACK_IMPORTED_MODULE_2__[\"message\"].containerSizeNonSingle('width'));\n            width = undefined;\n        }\n        if (height == 'container') {\n            _log__WEBPACK_IMPORTED_MODULE_2__[\"warn\"](_log__WEBPACK_IMPORTED_MODULE_2__[\"message\"].containerSizeNonSingle('height'));\n            height = undefined;\n        }\n    }\n    else {\n        // Default autosize parameters to fit when width/height is \"container\"\n        if (width == 'container' && height == 'container') {\n            autosizeDefault.type = 'fit';\n            autosizeDefault.contains = 'padding';\n        }\n        else if (width == 'container') {\n            autosizeDefault.type = 'fit-x';\n            autosizeDefault.contains = 'padding';\n        }\n        else if (height == 'container') {\n            autosizeDefault.type = 'fit-y';\n            autosizeDefault.contains = 'padding';\n        }\n    }\n    const autosize = Object.assign(Object.assign(Object.assign({ type: 'pad' }, autosizeDefault), (config ? _normalizeAutoSize(config.autosize) : {})), _normalizeAutoSize(spec.autosize));\n    if (autosize.type === 'fit' && !isFitCompatible) {\n        _log__WEBPACK_IMPORTED_MODULE_2__[\"warn\"](_log__WEBPACK_IMPORTED_MODULE_2__[\"message\"].FIT_NON_SINGLE);\n        autosize.type = 'pad';\n    }\n    if (width == 'container' && !(autosize.type == 'fit' || autosize.type == 'fit-x')) {\n        _log__WEBPACK_IMPORTED_MODULE_2__[\"warn\"](_log__WEBPACK_IMPORTED_MODULE_2__[\"message\"].containerSizeNotCompatibleWithAutosize('width'));\n    }\n    if (height == 'container' && !(autosize.type == 'fit' || autosize.type == 'fit-y')) {\n        _log__WEBPACK_IMPORTED_MODULE_2__[\"warn\"](_log__WEBPACK_IMPORTED_MODULE_2__[\"message\"].containerSizeNotCompatibleWithAutosize('height'));\n    }\n    // Delete autosize property if it's Vega's default\n    if (Object(_util__WEBPACK_IMPORTED_MODULE_4__[\"deepEqual\"])(autosize, { type: 'pad' })) {\n        return undefined;\n    }\n    return autosize;\n}\n//# sourceMappingURL=index.js.map//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,[encoded data, 5152 characters]\n//# sourceURL=webpack-internal:///./node_modules/vega-lite/build/src/normalize/index.js\n");

/***/ }),

/***/ "./node_modules/vega-lite/build/src/normalize/pathoverlay.js":
/*!*******************************************************************!*\
  !*** ./node_modules/vega-lite/build/src/normalize/pathoverlay.js ***!
  \*******************************************************************/
/*! exports provided: PathOverlayNormalizer */
/***/ (function(module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"PathOverlayNormalizer\", function() { return PathOverlayNormalizer; });\n/* harmony import */ var vega_util__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! vega-util */ \"./node_modules/vega-lite/node_modules/vega-util/build/vega-util.module.js\");\n/* harmony import */ var _encoding__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../encoding */ \"./node_modules/vega-lite/build/src/encoding.js\");\n/* harmony import */ var _mark__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ../mark */ \"./node_modules/vega-lite/build/src/mark.js\");\n/* harmony import */ var _spec_unit__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ../spec/unit */ \"./node_modules/vega-lite/build/src/spec/unit.js\");\n/* harmony import */ var _stack__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ../stack */ \"./node_modules/vega-lite/build/src/stack.js\");\n/* harmony import */ var _util__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! ../util */ \"./node_modules/vega-lite/build/src/util.js\");\nvar __rest = (undefined && undefined.__rest) || function (s, e) {\n    var t = {};\n    for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0)\n        t[p] = s[p];\n    if (s != null && typeof Object.getOwnPropertySymbols === \"function\")\n        for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) {\n            if (e.indexOf(p[i]) < 0 && Object.prototype.propertyIsEnumerable.call(s, p[i]))\n                t[p[i]] = s[p[i]];\n        }\n    return t;\n};\n\n\n\n\n\n\nfunction dropLineAndPoint(markDef) {\n    const { point: _point, line: _line } = markDef, mark = __rest(markDef, [\"point\", \"line\"]);\n    return Object(_util__WEBPACK_IMPORTED_MODULE_5__[\"keys\"])(mark).length > 1 ? mark : mark.type;\n}\nfunction dropLineAndPointFromConfig(config) {\n    for (const mark of ['line', 'area', 'rule', 'trail']) {\n        if (config[mark]) {\n            config = Object.assign(Object.assign({}, config), { \n                // TODO: remove as any\n                [mark]: Object(_util__WEBPACK_IMPORTED_MODULE_5__[\"omit\"])(config[mark], ['point', 'line']) });\n        }\n    }\n    return config;\n}\nfunction getPointOverlay(markDef, markConfig = {}, encoding) {\n    if (markDef.point === 'transparent') {\n        return { opacity: 0 };\n    }\n    else if (markDef.point) {\n        // truthy : true or object\n        return Object(vega_util__WEBPACK_IMPORTED_MODULE_0__[\"isObject\"])(markDef.point) ? markDef.point : {};\n    }\n    else if (markDef.point !== undefined) {\n        // false or null\n        return null;\n    }\n    else {\n        // undefined (not disabled)\n        if (markConfig.point || encoding.shape) {\n            // enable point overlay if config[mark].point is truthy or if encoding.shape is provided\n            return Object(vega_util__WEBPACK_IMPORTED_MODULE_0__[\"isObject\"])(markConfig.point) ? markConfig.point : {};\n        }\n        // markDef.point is defined as falsy\n        return undefined;\n    }\n}\nfunction getLineOverlay(markDef, markConfig = {}) {\n    if (markDef.line) {\n        // true or object\n        return markDef.line === true ? {} : markDef.line;\n    }\n    else if (markDef.line !== undefined) {\n        // false or null\n        return null;\n    }\n    else {\n        // undefined (not disabled)\n        if (markConfig.line) {\n            // enable line overlay if config[mark].line is truthy\n            return markConfig.line === true ? {} : markConfig.line;\n        }\n        // markDef.point is defined as falsy\n        return undefined;\n    }\n}\nclass PathOverlayNormalizer {\n    constructor() {\n        this.name = 'path-overlay';\n    }\n    hasMatchingType(spec, config) {\n        if (Object(_spec_unit__WEBPACK_IMPORTED_MODULE_3__[\"isUnitSpec\"])(spec)) {\n            const { mark, encoding } = spec;\n            const markDef = Object(_mark__WEBPACK_IMPORTED_MODULE_2__[\"isMarkDef\"])(mark) ? mark : { type: mark };\n            switch (markDef.type) {\n                case 'line':\n                case 'rule':\n                case 'trail':\n                    return !!getPointOverlay(markDef, config[markDef.type], encoding);\n                case 'area':\n                    return (\n                    // false / null are also included as we want to remove the properties\n                    !!getPointOverlay(markDef, config[markDef.type], encoding) ||\n                        !!getLineOverlay(markDef, config[markDef.type]));\n            }\n        }\n        return false;\n    }\n    run(spec, params, normalize) {\n        const { config } = params;\n        const { selection, projection, mark, encoding: e } = spec, outerSpec = __rest(spec, [\"selection\", \"projection\", \"mark\", \"encoding\"]);\n        // Need to call normalizeEncoding because we need the inferred types to correctly determine stack\n        const encoding = Object(_encoding__WEBPACK_IMPORTED_MODULE_1__[\"normalizeEncoding\"])(e, config);\n        const markDef = Object(_mark__WEBPACK_IMPORTED_MODULE_2__[\"isMarkDef\"])(mark) ? mark : { type: mark };\n        const pointOverlay = getPointOverlay(markDef, config[markDef.type], encoding);\n        const lineOverlay = markDef.type === 'area' && getLineOverlay(markDef, config[markDef.type]);\n        const layer = [\n            Object.assign(Object.assign({}, (selection ? { selection } : {})), { mark: dropLineAndPoint(Object.assign(Object.assign({}, (markDef.type === 'area' && markDef.opacity === undefined && markDef.fillOpacity === undefined\n                    ? { opacity: 0.7 }\n                    : {})), markDef)), \n                // drop shape from encoding as this might be used to trigger point overlay\n                encoding: Object(_util__WEBPACK_IMPORTED_MODULE_5__[\"omit\"])(encoding, ['shape']) })\n        ];\n        // FIXME: determine rules for applying selections.\n        // Need to copy stack config to overlayed layer\n        const stackProps = Object(_stack__WEBPACK_IMPORTED_MODULE_4__[\"stack\"])(markDef, encoding);\n        let overlayEncoding = encoding;\n        if (stackProps) {\n            const { fieldChannel: stackFieldChannel, offset } = stackProps;\n            overlayEncoding = Object.assign(Object.assign({}, encoding), { [stackFieldChannel]: Object.assign(Object.assign({}, encoding[stackFieldChannel]), (offset ? { stack: offset } : {})) });\n        }\n        if (lineOverlay) {\n            layer.push(Object.assign(Object.assign({}, (projection ? { projection } : {})), { mark: Object.assign(Object.assign({ type: 'line' }, Object(_util__WEBPACK_IMPORTED_MODULE_5__[\"pick\"])(markDef, ['clip', 'interpolate', 'tension', 'tooltip'])), lineOverlay), encoding: overlayEncoding }));\n        }\n        if (pointOverlay) {\n            layer.push(Object.assign(Object.assign({}, (projection ? { projection } : {})), { mark: Object.assign(Object.assign({ type: 'point', opacity: 1, filled: true }, Object(_util__WEBPACK_IMPORTED_MODULE_5__[\"pick\"])(markDef, ['clip', 'tooltip'])), pointOverlay), encoding: overlayEncoding }));\n        }\n        return normalize(Object.assign(Object.assign({}, outerSpec), { layer }), Object.assign(Object.assign({}, params), { config: dropLineAndPointFromConfig(config) }));\n    }\n}\n//# sourceMappingURL=pathoverlay.js.map//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,[encoded data, 9180 characters]\n//# sourceURL=webpack-internal:///./node_modules/vega-lite/build/src/normalize/pathoverlay.js\n");

/***/ }),

/***/ "./node_modules/vega-lite/build/src/normalize/rangestep.js":
/*!*****************************************************************!*\
  !*** ./node_modules/vega-lite/build/src/normalize/rangestep.js ***!
  \*****************************************************************/
/*! exports provided: RangeStepNormalizer */
/***/ (function(module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"RangeStepNormalizer\", function() { return RangeStepNormalizer; });\n/* harmony import */ var _channel__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../channel */ \"./node_modules/vega-lite/build/src/channel.js\");\n/* harmony import */ var _channeldef__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../channeldef */ \"./node_modules/vega-lite/build/src/channeldef.js\");\n/* harmony import */ var _log__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ../log */ \"./node_modules/vega-lite/build/src/log/index.js\");\n/* harmony import */ var _spec_unit__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ../spec/unit */ \"./node_modules/vega-lite/build/src/spec/unit.js\");\n/* harmony import */ var _util__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ../util */ \"./node_modules/vega-lite/build/src/util.js\");\nvar __rest = (undefined && undefined.__rest) || function (s, e) {\n    var t = {};\n    for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0)\n        t[p] = s[p];\n    if (s != null && typeof Object.getOwnPropertySymbols === \"function\")\n        for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) {\n            if (e.indexOf(p[i]) < 0 && Object.prototype.propertyIsEnumerable.call(s, p[i]))\n                t[p[i]] = s[p[i]];\n        }\n    return t;\n};\n\n\n\n\n\nclass RangeStepNormalizer {\n    constructor() {\n        this.name = 'RangeStep';\n    }\n    hasMatchingType(spec) {\n        var _a;\n        if (Object(_spec_unit__WEBPACK_IMPORTED_MODULE_3__[\"isUnitSpec\"])(spec) && spec.encoding) {\n            for (const channel of _channel__WEBPACK_IMPORTED_MODULE_0__[\"POSITION_SCALE_CHANNELS\"]) {\n                const def = spec.encoding[channel];\n                if (def && Object(_channeldef__WEBPACK_IMPORTED_MODULE_1__[\"isFieldOrDatumDef\"])(def)) {\n                    if ((_a = def === null || def === void 0 ? void 0 : def.scale) === null || _a === void 0 ? void 0 : _a['rangeStep']) {\n                        return true;\n                    }\n                }\n            }\n        }\n        return false;\n    }\n    run(spec) {\n        var _a;\n        const sizeMixins = {};\n        let encoding = Object.assign({}, spec.encoding);\n        for (const channel of _channel__WEBPACK_IMPORTED_MODULE_0__[\"POSITION_SCALE_CHANNELS\"]) {\n            const sizeType = Object(_channel__WEBPACK_IMPORTED_MODULE_0__[\"getSizeChannel\"])(channel);\n            const def = encoding[channel];\n            if (def && Object(_channeldef__WEBPACK_IMPORTED_MODULE_1__[\"isFieldOrDatumDef\"])(def)) {\n                if ((_a = def === null || def === void 0 ? void 0 : def.scale) === null || _a === void 0 ? void 0 : _a['rangeStep']) {\n                    const { scale } = def, defWithoutScale = __rest(def, [\"scale\"]);\n                    const _b = scale, { rangeStep } = _b, scaleWithoutRangeStep = __rest(_b, [\"rangeStep\"]);\n                    sizeMixins[sizeType] = { step: scale['rangeStep'] };\n                    _log__WEBPACK_IMPORTED_MODULE_2__[\"warn\"](_log__WEBPACK_IMPORTED_MODULE_2__[\"message\"].RANGE_STEP_DEPRECATED);\n                    encoding = Object.assign(Object.assign({}, encoding), { [channel]: Object.assign(Object.assign({}, defWithoutScale), (Object(_util__WEBPACK_IMPORTED_MODULE_4__[\"isEmpty\"])(scaleWithoutRangeStep) ? {} : { scale: scaleWithoutRangeStep })) });\n                }\n            }\n        }\n        return Object.assign(Object.assign(Object.assign({}, sizeMixins), spec), { encoding });\n    }\n}\n//# sourceMappingURL=rangestep.js.map//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,[encoded data, 4164 characters]\n//# sourceURL=webpack-internal:///./node_modules/vega-lite/build/src/normalize/rangestep.js\n");

/***/ }),

/***/ "./node_modules/vega-lite/build/src/normalize/repeater.js":
/*!****************************************************************!*\
  !*** ./node_modules/vega-lite/build/src/normalize/repeater.js ***!
  \****************************************************************/
/*! exports provided: replaceRepeaterInFacet, replaceRepeaterInEncoding */
/***/ (function(module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"replaceRepeaterInFacet\", function() { return replaceRepeaterInFacet; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"replaceRepeaterInEncoding\", function() { return replaceRepeaterInEncoding; });\n/* harmony import */ var vega_util__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! vega-util */ \"./node_modules/vega-lite/node_modules/vega-util/build/vega-util.module.js\");\n/* harmony import */ var _channeldef__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../channeldef */ \"./node_modules/vega-lite/build/src/channeldef.js\");\n/* harmony import */ var _log__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ../log */ \"./node_modules/vega-lite/build/src/log/index.js\");\n/* harmony import */ var _sort__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ../sort */ \"./node_modules/vega-lite/build/src/sort.js\");\n/* harmony import */ var _spec_facet__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ../spec/facet */ \"./node_modules/vega-lite/build/src/spec/facet.js\");\nvar __rest = (undefined && undefined.__rest) || function (s, e) {\n    var t = {};\n    for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0)\n        t[p] = s[p];\n    if (s != null && typeof Object.getOwnPropertySymbols === \"function\")\n        for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) {\n            if (e.indexOf(p[i]) < 0 && Object.prototype.propertyIsEnumerable.call(s, p[i]))\n                t[p[i]] = s[p[i]];\n        }\n    return t;\n};\n\n\n\n\n\nfunction replaceRepeaterInFacet(facet, repeater) {\n    if (!repeater) {\n        return facet;\n    }\n    if (Object(_spec_facet__WEBPACK_IMPORTED_MODULE_4__[\"isFacetMapping\"])(facet)) {\n        return replaceRepeaterInMapping(facet, repeater);\n    }\n    return replaceRepeaterInFieldDef(facet, repeater);\n}\nfunction replaceRepeaterInEncoding(encoding, repeater) {\n    if (!repeater) {\n        return encoding;\n    }\n    return replaceRepeaterInMapping(encoding, repeater);\n}\n/**\n * Replaces repeated value and returns if the repeated value is valid.\n */\nfunction replaceRepeatInProp(prop, o, repeater) {\n    const val = o[prop];\n    if (Object(_channeldef__WEBPACK_IMPORTED_MODULE_1__[\"isRepeatRef\"])(val)) {\n        if (val.repeat in repeater) {\n            return Object.assign(Object.assign({}, o), { [prop]: repeater[val.repeat] });\n        }\n        else {\n            _log__WEBPACK_IMPORTED_MODULE_2__[\"warn\"](_log__WEBPACK_IMPORTED_MODULE_2__[\"message\"].noSuchRepeatedValue(val.repeat));\n            return undefined;\n        }\n    }\n    return o;\n}\n/**\n * Replace repeater values in a field def with the concrete field name.\n */\nfunction replaceRepeaterInFieldDef(fieldDef, repeater) {\n    fieldDef = replaceRepeatInProp('field', fieldDef, repeater);\n    if (fieldDef === undefined) {\n        // the field def should be ignored\n        return undefined;\n    }\n    else if (fieldDef === null) {\n        return null;\n    }\n    if (Object(_channeldef__WEBPACK_IMPORTED_MODULE_1__[\"isSortableFieldDef\"])(fieldDef) && Object(_sort__WEBPACK_IMPORTED_MODULE_3__[\"isSortField\"])(fieldDef.sort)) {\n        const sort = replaceRepeatInProp('field', fieldDef.sort, repeater);\n        fieldDef = Object.assign(Object.assign({}, fieldDef), (sort ? { sort } : {}));\n    }\n    return fieldDef;\n}\nfunction replaceRepeaterInFieldOrDatumDef(def, repeater) {\n    if (Object(_channeldef__WEBPACK_IMPORTED_MODULE_1__[\"isFieldDef\"])(def)) {\n        return replaceRepeaterInFieldDef(def, repeater);\n    }\n    else {\n        const datumDef = replaceRepeatInProp('datum', def, repeater);\n        if (datumDef !== def && !datumDef.type) {\n            datumDef.type = 'nominal';\n        }\n        return datumDef;\n    }\n}\nfunction replaceRepeaterInChannelDef(channelDef, repeater) {\n    if (Object(_channeldef__WEBPACK_IMPORTED_MODULE_1__[\"isFieldOrDatumDef\"])(channelDef)) {\n        const fd = replaceRepeaterInFieldOrDatumDef(channelDef, repeater);\n        if (fd) {\n            return fd;\n        }\n        else if (Object(_channeldef__WEBPACK_IMPORTED_MODULE_1__[\"isConditionalDef\"])(channelDef)) {\n            return { condition: channelDef.condition };\n        }\n    }\n    else {\n        if (Object(_channeldef__WEBPACK_IMPORTED_MODULE_1__[\"hasConditionalFieldOrDatumDef\"])(channelDef)) {\n            const fd = replaceRepeaterInFieldOrDatumDef(channelDef.condition, repeater);\n            if (fd) {\n                return Object.assign(Object.assign({}, channelDef), { condition: fd });\n            }\n            else {\n                const { condition } = channelDef, channelDefWithoutCondition = __rest(channelDef, [\"condition\"]);\n                return channelDefWithoutCondition;\n            }\n        }\n        return channelDef;\n    }\n    return undefined;\n}\nfunction replaceRepeaterInMapping(mapping, repeater) {\n    const out = {};\n    for (const channel in mapping) {\n        if (Object(vega_util__WEBPACK_IMPORTED_MODULE_0__[\"hasOwnProperty\"])(mapping, channel)) {\n            const channelDef = mapping[channel];\n            if (Object(vega_util__WEBPACK_IMPORTED_MODULE_0__[\"isArray\"])(channelDef)) {\n                // array cannot have condition\n                out[channel] = channelDef // somehow we need to cast it here\n                    .map(cd => replaceRepeaterInChannelDef(cd, repeater))\n                    .filter(cd => cd);\n            }\n            else {\n                const cd = replaceRepeaterInChannelDef(channelDef, repeater);\n                if (cd !== undefined) {\n                    out[channel] = cd;\n                }\n            }\n        }\n    }\n    return out;\n}\n//# sourceMappingURL=repeater.js.map//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,[encoded data, 7176 characters]\n//# sourceURL=webpack-internal:///./node_modules/vega-lite/build/src/normalize/repeater.js\n");

/***/ }),

/***/ "./node_modules/vega-lite/build/src/normalize/ruleforrangedline.js":
/*!*************************************************************************!*\
  !*** ./node_modules/vega-lite/build/src/normalize/ruleforrangedline.js ***!
  \*************************************************************************/
/*! exports provided: RuleForRangedLineNormalizer */
/***/ (function(module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"RuleForRangedLineNormalizer\", function() { return RuleForRangedLineNormalizer; });\n/* harmony import */ var _bin__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../bin */ \"./node_modules/vega-lite/build/src/bin.js\");\n/* harmony import */ var _channel__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../channel */ \"./node_modules/vega-lite/build/src/channel.js\");\n/* harmony import */ var _channeldef__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ../channeldef */ \"./node_modules/vega-lite/build/src/channeldef.js\");\n/* harmony import */ var _log__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ../log */ \"./node_modules/vega-lite/build/src/log/index.js\");\n/* harmony import */ var _spec_unit__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ../spec/unit */ \"./node_modules/vega-lite/build/src/spec/unit.js\");\n\n\n\n\n\nclass RuleForRangedLineNormalizer {\n    constructor() {\n        this.name = 'RuleForRangedLine';\n    }\n    hasMatchingType(spec) {\n        if (Object(_spec_unit__WEBPACK_IMPORTED_MODULE_4__[\"isUnitSpec\"])(spec)) {\n            const { encoding, mark } = spec;\n            if (mark === 'line') {\n                for (const channel of _channel__WEBPACK_IMPORTED_MODULE_1__[\"SECONDARY_RANGE_CHANNEL\"]) {\n                    const mainChannel = Object(_channel__WEBPACK_IMPORTED_MODULE_1__[\"getMainRangeChannel\"])(channel);\n                    const mainChannelDef = encoding[mainChannel];\n                    if (encoding[channel]) {\n                        if ((Object(_channeldef__WEBPACK_IMPORTED_MODULE_2__[\"isFieldDef\"])(mainChannelDef) && !Object(_bin__WEBPACK_IMPORTED_MODULE_0__[\"isBinned\"])(mainChannelDef.bin)) || Object(_channeldef__WEBPACK_IMPORTED_MODULE_2__[\"isDatumDef\"])(mainChannelDef)) {\n                            return true;\n                        }\n                    }\n                }\n            }\n        }\n        return false;\n    }\n    run(spec, params, normalize) {\n        const { encoding } = spec;\n        _log__WEBPACK_IMPORTED_MODULE_3__[\"warn\"](_log__WEBPACK_IMPORTED_MODULE_3__[\"message\"].lineWithRange(!!encoding.x2, !!encoding.y2));\n        return normalize(Object.assign(Object.assign({}, spec), { mark: 'rule' }), params);\n    }\n}\n//# sourceMappingURL=ruleforrangedline.js.map//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvdmVnYS1saXRlL2J1aWxkL3NyYy9ub3JtYWxpemUvcnVsZWZvcnJhbmdlZGxpbmUuanMuanMiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvdmVnYS1saXRlL2J1aWxkL3NyYy9ub3JtYWxpemUvcnVsZWZvcnJhbmdlZGxpbmUuanM/ZjE3OCJdLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBpc0Jpbm5lZCB9IGZyb20gJy4uL2Jpbic7XG5pbXBvcnQgeyBnZXRNYWluUmFuZ2VDaGFubmVsLCBTRUNPTkRBUllfUkFOR0VfQ0hBTk5FTCB9IGZyb20gJy4uL2NoYW5uZWwnO1xuaW1wb3J0IHsgaXNEYXR1bURlZiwgaXNGaWVsZERlZiB9IGZyb20gJy4uL2NoYW5uZWxkZWYnO1xuaW1wb3J0ICogYXMgbG9nIGZyb20gJy4uL2xvZyc7XG5pbXBvcnQgeyBpc1VuaXRTcGVjIH0gZnJvbSAnLi4vc3BlYy91bml0JztcbmV4cG9ydCBjbGFzcyBSdWxlRm9yUmFuZ2VkTGluZU5vcm1hbGl6ZXIge1xuICAgIGNvbnN0cnVjdG9yKCkge1xuICAgICAgICB0aGlzLm5hbWUgPSAnUnVsZUZvclJhbmdlZExpbmUnO1xuICAgIH1cbiAgICBoYXNNYXRjaGluZ1R5cGUoc3BlYykge1xuICAgICAgICBpZiAoaXNVbml0U3BlYyhzcGVjKSkge1xuICAgICAgICAgICAgY29uc3QgeyBlbmNvZGluZywgbWFyayB9ID0gc3BlYztcbiAgICAgICAgICAgIGlmIChtYXJrID09PSAnbGluZScpIHtcbiAgICAgICAgICAgICAgICBmb3IgKGNvbnN0IGNoYW5uZWwgb2YgU0VDT05EQVJZX1JBTkdFX0NIQU5ORUwpIHtcbiAgICAgICAgICAgICAgICAgICAgY29uc3QgbWFpbkNoYW5uZWwgPSBnZXRNYWluUmFuZ2VDaGFubmVsKGNoYW5uZWwpO1xuICAgICAgICAgICAgICAgICAgICBjb25zdCBtYWluQ2hhbm5lbERlZiA9IGVuY29kaW5nW21haW5DaGFubmVsXTtcbiAgICAgICAgICAgICAgICAgICAgaWYgKGVuY29kaW5nW2NoYW5uZWxdKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICBpZiAoKGlzRmllbGREZWYobWFpbkNoYW5uZWxEZWYpICYmICFpc0Jpbm5lZChtYWluQ2hhbm5lbERlZi5iaW4pKSB8fCBpc0RhdHVtRGVmKG1haW5DaGFubmVsRGVmKSkge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiB0cnVlO1xuICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICAgIHJldHVybiBmYWxzZTtcbiAgICB9XG4gICAgcnVuKHNwZWMsIHBhcmFtcywgbm9ybWFsaXplKSB7XG4gICAgICAgIGNvbnN0IHsgZW5jb2RpbmcgfSA9IHNwZWM7XG4gICAgICAgIGxvZy53YXJuKGxvZy5tZXNzYWdlLmxpbmVXaXRoUmFuZ2UoISFlbmNvZGluZy54MiwgISFlbmNvZGluZy55MikpO1xuICAgICAgICByZXR1cm4gbm9ybWFsaXplKE9iamVjdC5hc3NpZ24oT2JqZWN0LmFzc2lnbih7fSwgc3BlYyksIHsgbWFyazogJ3J1bGUnIH0pLCBwYXJhbXMpO1xuICAgIH1cbn1cbi8vIyBzb3VyY2VNYXBwaW5nVVJMPXJ1bGVmb3JyYW5nZWRsaW5lLmpzLm1hcCJdLCJtYXBwaW5ncyI6IkFBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EiLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///./node_modules/vega-lite/build/src/normalize/ruleforrangedline.js\n");

/***/ }),

/***/ "./node_modules/vega-lite/build/src/parameter.js":
/*!*******************************************************!*\
  !*** ./node_modules/vega-lite/build/src/parameter.js ***!
  \*******************************************************/
/*! exports provided: assembleParameterSignals */
/***/ (function(module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"assembleParameterSignals\", function() { return assembleParameterSignals; });\nvar __rest = (undefined && undefined.__rest) || function (s, e) {\n    var t = {};\n    for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0)\n        t[p] = s[p];\n    if (s != null && typeof Object.getOwnPropertySymbols === \"function\")\n        for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) {\n            if (e.indexOf(p[i]) < 0 && Object.prototype.propertyIsEnumerable.call(s, p[i]))\n                t[p[i]] = s[p[i]];\n        }\n    return t;\n};\nfunction assembleParameterSignals(params) {\n    const signals = [];\n    for (const param of params || []) {\n        const { expr, bind } = param, rest = __rest(param, [\"expr\", \"bind\"]);\n        if (bind && expr) {\n            // Vega's InitSignal -- apply expr to \"init\"\n            const signal = Object.assign(Object.assign({}, rest), { bind, init: expr });\n            signals.push(signal);\n        }\n        else {\n            const signal = Object.assign(Object.assign(Object.assign({}, rest), (expr ? { update: expr } : {})), (bind ? { bind } : {}));\n            signals.push(signal);\n        }\n    }\n    return signals;\n}\n//# sourceMappingURL=parameter.js.map//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvdmVnYS1saXRlL2J1aWxkL3NyYy9wYXJhbWV0ZXIuanMuanMiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvdmVnYS1saXRlL2J1aWxkL3NyYy9wYXJhbWV0ZXIuanM/OTI1ZiJdLCJzb3VyY2VzQ29udGVudCI6WyJ2YXIgX19yZXN0ID0gKHRoaXMgJiYgdGhpcy5fX3Jlc3QpIHx8IGZ1bmN0aW9uIChzLCBlKSB7XG4gICAgdmFyIHQgPSB7fTtcbiAgICBmb3IgKHZhciBwIGluIHMpIGlmIChPYmplY3QucHJvdG90eXBlLmhhc093blByb3BlcnR5LmNhbGwocywgcCkgJiYgZS5pbmRleE9mKHApIDwgMClcbiAgICAgICAgdFtwXSA9IHNbcF07XG4gICAgaWYgKHMgIT0gbnVsbCAmJiB0eXBlb2YgT2JqZWN0LmdldE93blByb3BlcnR5U3ltYm9scyA9PT0gXCJmdW5jdGlvblwiKVxuICAgICAgICBmb3IgKHZhciBpID0gMCwgcCA9IE9iamVjdC5nZXRPd25Qcm9wZXJ0eVN5bWJvbHMocyk7IGkgPCBwLmxlbmd0aDsgaSsrKSB7XG4gICAgICAgICAgICBpZiAoZS5pbmRleE9mKHBbaV0pIDwgMCAmJiBPYmplY3QucHJvdG90eXBlLnByb3BlcnR5SXNFbnVtZXJhYmxlLmNhbGwocywgcFtpXSkpXG4gICAgICAgICAgICAgICAgdFtwW2ldXSA9IHNbcFtpXV07XG4gICAgICAgIH1cbiAgICByZXR1cm4gdDtcbn07XG5leHBvcnQgZnVuY3Rpb24gYXNzZW1ibGVQYXJhbWV0ZXJTaWduYWxzKHBhcmFtcykge1xuICAgIGNvbnN0IHNpZ25hbHMgPSBbXTtcbiAgICBmb3IgKGNvbnN0IHBhcmFtIG9mIHBhcmFtcyB8fCBbXSkge1xuICAgICAgICBjb25zdCB7IGV4cHIsIGJpbmQgfSA9IHBhcmFtLCByZXN0ID0gX19yZXN0KHBhcmFtLCBbXCJleHByXCIsIFwiYmluZFwiXSk7XG4gICAgICAgIGlmIChiaW5kICYmIGV4cHIpIHtcbiAgICAgICAgICAgIC8vIFZlZ2EncyBJbml0U2lnbmFsIC0tIGFwcGx5IGV4cHIgdG8gXCJpbml0XCJcbiAgICAgICAgICAgIGNvbnN0IHNpZ25hbCA9IE9iamVjdC5hc3NpZ24oT2JqZWN0LmFzc2lnbih7fSwgcmVzdCksIHsgYmluZCwgaW5pdDogZXhwciB9KTtcbiAgICAgICAgICAgIHNpZ25hbHMucHVzaChzaWduYWwpO1xuICAgICAgICB9XG4gICAgICAgIGVsc2Uge1xuICAgICAgICAgICAgY29uc3Qgc2lnbmFsID0gT2JqZWN0LmFzc2lnbihPYmplY3QuYXNzaWduKE9iamVjdC5hc3NpZ24oe30sIHJlc3QpLCAoZXhwciA/IHsgdXBkYXRlOiBleHByIH0gOiB7fSkpLCAoYmluZCA/IHsgYmluZCB9IDoge30pKTtcbiAgICAgICAgICAgIHNpZ25hbHMucHVzaChzaWduYWwpO1xuICAgICAgICB9XG4gICAgfVxuICAgIHJldHVybiBzaWduYWxzO1xufVxuLy8jIHNvdXJjZU1hcHBpbmdVUkw9cGFyYW1ldGVyLmpzLm1hcCJdLCJtYXBwaW5ncyI6IkFBQUE7QUFBQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBIiwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///./node_modules/vega-lite/build/src/parameter.js\n");

/***/ }),

/***/ "./node_modules/vega-lite/build/src/predicate.js":
/*!*******************************************************!*\
  !*** ./node_modules/vega-lite/build/src/predicate.js ***!
  \*******************************************************/
/*! exports provided: isSelectionPredicate, isFieldEqualPredicate, isFieldLTPredicate, isFieldLTEPredicate, isFieldGTPredicate, isFieldGTEPredicate, isFieldRangePredicate, isFieldOneOfPredicate, isFieldValidPredicate, isFieldPredicate, fieldFilterExpression, fieldValidPredicate, normalizePredicate */
/***/ (function(module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"isSelectionPredicate\", function() { return isSelectionPredicate; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"isFieldEqualPredicate\", function() { return isFieldEqualPredicate; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"isFieldLTPredicate\", function() { return isFieldLTPredicate; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"isFieldLTEPredicate\", function() { return isFieldLTEPredicate; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"isFieldGTPredicate\", function() { return isFieldGTPredicate; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"isFieldGTEPredicate\", function() { return isFieldGTEPredicate; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"isFieldRangePredicate\", function() { return isFieldRangePredicate; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"isFieldOneOfPredicate\", function() { return isFieldOneOfPredicate; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"isFieldValidPredicate\", function() { return isFieldValidPredicate; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"isFieldPredicate\", function() { return isFieldPredicate; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"fieldFilterExpression\", function() { return fieldFilterExpression; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"fieldValidPredicate\", function() { return fieldValidPredicate; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"normalizePredicate\", function() { return normalizePredicate; });\n/* harmony import */ var vega_util__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! vega-util */ \"./node_modules/vega-lite/node_modules/vega-util/build/vega-util.module.js\");\n/* harmony import */ var _channeldef__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./channeldef */ \"./node_modules/vega-lite/build/src/channeldef.js\");\n/* harmony import */ var _timeunit__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./timeunit */ \"./node_modules/vega-lite/build/src/timeunit.js\");\n/* harmony import */ var _vega_schema__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ./vega.schema */ \"./node_modules/vega-lite/build/src/vega.schema.js\");\n\n\n\n\nfunction isSelectionPredicate(predicate) {\n    return predicate === null || predicate === void 0 ? void 0 : predicate['selection'];\n}\nfunction isFieldEqualPredicate(predicate) {\n    return predicate && !!predicate.field && predicate.equal !== undefined;\n}\nfunction isFieldLTPredicate(predicate) {\n    return predicate && !!predicate.field && predicate.lt !== undefined;\n}\nfunction isFieldLTEPredicate(predicate) {\n    return predicate && !!predicate.field && predicate.lte !== undefined;\n}\nfunction isFieldGTPredicate(predicate) {\n    return predicate && !!predicate.field && predicate.gt !== undefined;\n}\nfunction isFieldGTEPredicate(predicate) {\n    return predicate && !!predicate.field && predicate.gte !== undefined;\n}\nfunction isFieldRangePredicate(predicate) {\n    if (predicate && predicate.field) {\n        if (Object(vega_util__WEBPACK_IMPORTED_MODULE_0__[\"isArray\"])(predicate.range) && predicate.range.length === 2) {\n            return true;\n        }\n        else if (Object(_vega_schema__WEBPACK_IMPORTED_MODULE_3__[\"isSignalRef\"])(predicate.range)) {\n            return true;\n        }\n    }\n    return false;\n}\nfunction isFieldOneOfPredicate(predicate) {\n    return (predicate && !!predicate.field && (Object(vega_util__WEBPACK_IMPORTED_MODULE_0__[\"isArray\"])(predicate.oneOf) || Object(vega_util__WEBPACK_IMPORTED_MODULE_0__[\"isArray\"])(predicate.in)) // backward compatibility\n    );\n}\nfunction isFieldValidPredicate(predicate) {\n    return predicate && !!predicate.field && predicate.valid !== undefined;\n}\nfunction isFieldPredicate(predicate) {\n    return (isFieldOneOfPredicate(predicate) ||\n        isFieldEqualPredicate(predicate) ||\n        isFieldRangePredicate(predicate) ||\n        isFieldLTPredicate(predicate) ||\n        isFieldGTPredicate(predicate) ||\n        isFieldLTEPredicate(predicate) ||\n        isFieldGTEPredicate(predicate));\n}\nfunction predicateValueExpr(v, timeUnit) {\n    return Object(_channeldef__WEBPACK_IMPORTED_MODULE_1__[\"valueExpr\"])(v, { timeUnit, wrapTime: true });\n}\nfunction predicateValuesExpr(vals, timeUnit) {\n    return vals.map(v => predicateValueExpr(v, timeUnit));\n}\n// This method is used by Voyager. Do not change its behavior without changing Voyager.\nfunction fieldFilterExpression(predicate, useInRange = true) {\n    var _a;\n    const { field } = predicate;\n    const timeUnit = (_a = Object(_timeunit__WEBPACK_IMPORTED_MODULE_2__[\"normalizeTimeUnit\"])(predicate.timeUnit)) === null || _a === void 0 ? void 0 : _a.unit;\n    const fieldExpr = timeUnit\n        ? // For timeUnit, cast into integer with time() so we can use ===, inrange, indexOf to compare values directly.\n            // TODO: We calculate timeUnit on the fly here. Consider if we would like to consolidate this with timeUnit pipeline\n            // TODO: support utc\n            'time(' + Object(_timeunit__WEBPACK_IMPORTED_MODULE_2__[\"fieldExpr\"])(timeUnit, field) + ')'\n        : Object(_channeldef__WEBPACK_IMPORTED_MODULE_1__[\"vgField\"])(predicate, { expr: 'datum' });\n    if (isFieldEqualPredicate(predicate)) {\n        return fieldExpr + '===' + predicateValueExpr(predicate.equal, timeUnit);\n    }\n    else if (isFieldLTPredicate(predicate)) {\n        const upper = predicate.lt;\n        return `${fieldExpr}<${predicateValueExpr(upper, timeUnit)}`;\n    }\n    else if (isFieldGTPredicate(predicate)) {\n        const lower = predicate.gt;\n        return `${fieldExpr}>${predicateValueExpr(lower, timeUnit)}`;\n    }\n    else if (isFieldLTEPredicate(predicate)) {\n        const upper = predicate.lte;\n        return `${fieldExpr}<=${predicateValueExpr(upper, timeUnit)}`;\n    }\n    else if (isFieldGTEPredicate(predicate)) {\n        const lower = predicate.gte;\n        return `${fieldExpr}>=${predicateValueExpr(lower, timeUnit)}`;\n    }\n    else if (isFieldOneOfPredicate(predicate)) {\n        return `indexof([${predicateValuesExpr(predicate.oneOf, timeUnit).join(',')}], ${fieldExpr}) !== -1`;\n    }\n    else if (isFieldValidPredicate(predicate)) {\n        return fieldValidPredicate(fieldExpr, predicate.valid);\n    }\n    else if (isFieldRangePredicate(predicate)) {\n        const { range } = predicate;\n        const lower = Object(_vega_schema__WEBPACK_IMPORTED_MODULE_3__[\"isSignalRef\"])(range) ? { signal: `${range.signal}[0]` } : range[0];\n        const upper = Object(_vega_schema__WEBPACK_IMPORTED_MODULE_3__[\"isSignalRef\"])(range) ? { signal: `${range.signal}[1]` } : range[1];\n        if (lower !== null && upper !== null && useInRange) {\n            return ('inrange(' +\n                fieldExpr +\n                ', [' +\n                predicateValueExpr(lower, timeUnit) +\n                ', ' +\n                predicateValueExpr(upper, timeUnit) +\n                '])');\n        }\n        const exprs = [];\n        if (lower !== null) {\n            exprs.push(`${fieldExpr} >= ${predicateValueExpr(lower, timeUnit)}`);\n        }\n        if (upper !== null) {\n            exprs.push(`${fieldExpr} <= ${predicateValueExpr(upper, timeUnit)}`);\n        }\n        return exprs.length > 0 ? exprs.join(' && ') : 'true';\n    }\n    /* istanbul ignore next: it should never reach here */\n    throw new Error(`Invalid field predicate: ${JSON.stringify(predicate)}`);\n}\nfunction fieldValidPredicate(fieldExpr, valid = true) {\n    if (valid) {\n        return `isValid(${fieldExpr}) && isFinite(+${fieldExpr})`;\n    }\n    else {\n        return `!isValid(${fieldExpr}) || !isFinite(+${fieldExpr})`;\n    }\n}\nfunction normalizePredicate(f) {\n    var _a;\n    if (isFieldPredicate(f) && f.timeUnit) {\n        return Object.assign(Object.assign({}, f), { timeUnit: (_a = Object(_timeunit__WEBPACK_IMPORTED_MODULE_2__[\"normalizeTimeUnit\"])(f.timeUnit)) === null || _a === void 0 ? void 0 : _a.unit });\n    }\n    return f;\n}\n//# sourceMappingURL=predicate.js.map//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,[encoded data, 8844 characters]\n//# sourceURL=webpack-internal:///./node_modules/vega-lite/build/src/predicate.js\n");

/***/ }),

/***/ "./node_modules/vega-lite/build/src/projection.js":
/*!********************************************************!*\
  !*** ./node_modules/vega-lite/build/src/projection.js ***!
  \********************************************************/
/*! exports provided: PROJECTION_PROPERTIES */
/***/ (function(module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"PROJECTION_PROPERTIES\", function() { return PROJECTION_PROPERTIES; });\nconst PROJECTION_PROPERTIES = [\n    'type',\n    'clipAngle',\n    'clipExtent',\n    'center',\n    'rotate',\n    'precision',\n    'reflectX',\n    'reflectY',\n    'coefficient',\n    'distance',\n    'fraction',\n    'lobes',\n    'parallel',\n    'radius',\n    'ratio',\n    'spacing',\n    'tilt'\n];\n//# sourceMappingURL=projection.js.map//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvdmVnYS1saXRlL2J1aWxkL3NyYy9wcm9qZWN0aW9uLmpzLmpzIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL3ZlZ2EtbGl0ZS9idWlsZC9zcmMvcHJvamVjdGlvbi5qcz83YzIxIl0sInNvdXJjZXNDb250ZW50IjpbImV4cG9ydCBjb25zdCBQUk9KRUNUSU9OX1BST1BFUlRJRVMgPSBbXG4gICAgJ3R5cGUnLFxuICAgICdjbGlwQW5nbGUnLFxuICAgICdjbGlwRXh0ZW50JyxcbiAgICAnY2VudGVyJyxcbiAgICAncm90YXRlJyxcbiAgICAncHJlY2lzaW9uJyxcbiAgICAncmVmbGVjdFgnLFxuICAgICdyZWZsZWN0WScsXG4gICAgJ2NvZWZmaWNpZW50JyxcbiAgICAnZGlzdGFuY2UnLFxuICAgICdmcmFjdGlvbicsXG4gICAgJ2xvYmVzJyxcbiAgICAncGFyYWxsZWwnLFxuICAgICdyYWRpdXMnLFxuICAgICdyYXRpbycsXG4gICAgJ3NwYWNpbmcnLFxuICAgICd0aWx0J1xuXTtcbi8vIyBzb3VyY2VNYXBwaW5nVVJMPXByb2plY3Rpb24uanMubWFwIl0sIm1hcHBpbmdzIjoiQUFBQTtBQUFBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSIsInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///./node_modules/vega-lite/build/src/projection.js\n");

/***/ }),

/***/ "./node_modules/vega-lite/build/src/scale.js":
/*!***************************************************!*\
  !*** ./node_modules/vega-lite/build/src/scale.js ***!
  \***************************************************/
/*! exports provided: ScaleType, SCALE_CATEGORY_INDEX, SCALE_TYPES, scaleCompatible, scaleTypePrecedence, CONTINUOUS_TO_CONTINUOUS_SCALES, QUANTITATIVE_SCALES, isQuantitative, CONTINUOUS_TO_DISCRETE_SCALES, CONTINUOUS_DOMAIN_SCALES, DISCRETE_DOMAIN_SCALES, TIME_SCALE_TYPES, hasDiscreteDomain, hasContinuousDomain, isContinuousToContinuous, isContinuousToDiscrete, defaultScaleConfig, isExtendedScheme, isSelectionDomain, isDomainUnionWith, SCALE_PROPERTIES, NON_TYPE_DOMAIN_RANGE_VEGA_SCALE_PROPERTIES, scaleTypeSupportProperty, channelScalePropertyIncompatability, scaleTypeSupportDataType, channelSupportScaleType */
/***/ (function(module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"ScaleType\", function() { return ScaleType; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"SCALE_CATEGORY_INDEX\", function() { return SCALE_CATEGORY_INDEX; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"SCALE_TYPES\", function() { return SCALE_TYPES; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"scaleCompatible\", function() { return scaleCompatible; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"scaleTypePrecedence\", function() { return scaleTypePrecedence; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"CONTINUOUS_TO_CONTINUOUS_SCALES\", function() { return CONTINUOUS_TO_CONTINUOUS_SCALES; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"QUANTITATIVE_SCALES\", function() { return QUANTITATIVE_SCALES; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"isQuantitative\", function() { return isQuantitative; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"CONTINUOUS_TO_DISCRETE_SCALES\", function() { return CONTINUOUS_TO_DISCRETE_SCALES; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"CONTINUOUS_DOMAIN_SCALES\", function() { return CONTINUOUS_DOMAIN_SCALES; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"DISCRETE_DOMAIN_SCALES\", function() { return DISCRETE_DOMAIN_SCALES; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"TIME_SCALE_TYPES\", function() { return TIME_SCALE_TYPES; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"hasDiscreteDomain\", function() { return hasDiscreteDomain; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"hasContinuousDomain\", function() { return hasContinuousDomain; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"isContinuousToContinuous\", function() { return isContinuousToContinuous; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"isContinuousToDiscrete\", function() { return isContinuousToDiscrete; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"defaultScaleConfig\", function() { return defaultScaleConfig; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"isExtendedScheme\", function() { return isExtendedScheme; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"isSelectionDomain\", function() { return isSelectionDomain; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"isDomainUnionWith\", function() { return isDomainUnionWith; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"SCALE_PROPERTIES\", function() { return SCALE_PROPERTIES; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"NON_TYPE_DOMAIN_RANGE_VEGA_SCALE_PROPERTIES\", function() { return NON_TYPE_DOMAIN_RANGE_VEGA_SCALE_PROPERTIES; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"scaleTypeSupportProperty\", function() { return scaleTypeSupportProperty; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"channelScalePropertyIncompatability\", function() { return channelScalePropertyIncompatability; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"scaleTypeSupportDataType\", function() { return scaleTypeSupportDataType; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"channelSupportScaleType\", function() { return channelSupportScaleType; });\n/* harmony import */ var vega_util__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! vega-util */ \"./node_modules/vega-lite/node_modules/vega-util/build/vega-util.module.js\");\n/* harmony import */ var _channel__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./channel */ \"./node_modules/vega-lite/build/src/channel.js\");\n/* harmony import */ var _log__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./log */ \"./node_modules/vega-lite/build/src/log/index.js\");\n/* harmony import */ var _type__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ./type */ \"./node_modules/vega-lite/build/src/type.js\");\n/* harmony import */ var _util__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ./util */ \"./node_modules/vega-lite/build/src/util.js\");\nvar __rest = (undefined && undefined.__rest) || function (s, e) {\n    var t = {};\n    for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0)\n        t[p] = s[p];\n    if (s != null && typeof Object.getOwnPropertySymbols === \"function\")\n        for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) {\n            if (e.indexOf(p[i]) < 0 && Object.prototype.propertyIsEnumerable.call(s, p[i]))\n                t[p[i]] = s[p[i]];\n        }\n    return t;\n};\n\n\n\n\n\n\nconst ScaleType = {\n    // Continuous - Quantitative\n    LINEAR: 'linear',\n    LOG: 'log',\n    POW: 'pow',\n    SQRT: 'sqrt',\n    SYMLOG: 'symlog',\n    IDENTITY: 'identity',\n    SEQUENTIAL: 'sequential',\n    // Continuous - Time\n    TIME: 'time',\n    UTC: 'utc',\n    // Discretizing scales\n    QUANTILE: 'quantile',\n    QUANTIZE: 'quantize',\n    THRESHOLD: 'threshold',\n    BIN_ORDINAL: 'bin-ordinal',\n    // Discrete scales\n    ORDINAL: 'ordinal',\n    POINT: 'point',\n    BAND: 'band'\n};\n/**\n * Index for scale categories -- only scale of the same categories can be merged together.\n * Current implementation is trying to be conservative and avoid merging scale type that might not work together\n */\nconst SCALE_CATEGORY_INDEX = {\n    linear: 'numeric',\n    log: 'numeric',\n    pow: 'numeric',\n    sqrt: 'numeric',\n    symlog: 'numeric',\n    identity: 'numeric',\n    sequential: 'numeric',\n    time: 'time',\n    utc: 'time',\n    ordinal: 'ordinal',\n    'bin-ordinal': 'bin-ordinal',\n    point: 'ordinal-position',\n    band: 'ordinal-position',\n    quantile: 'discretizing',\n    quantize: 'discretizing',\n    threshold: 'discretizing'\n};\nconst SCALE_TYPES = Object(_util__WEBPACK_IMPORTED_MODULE_4__[\"keys\"])(SCALE_CATEGORY_INDEX);\n/**\n * Whether the two given scale types can be merged together.\n */\nfunction scaleCompatible(scaleType1, scaleType2) {\n    const scaleCategory1 = SCALE_CATEGORY_INDEX[scaleType1];\n    const scaleCategory2 = SCALE_CATEGORY_INDEX[scaleType2];\n    return (scaleCategory1 === scaleCategory2 ||\n        (scaleCategory1 === 'ordinal-position' && scaleCategory2 === 'time') ||\n        (scaleCategory2 === 'ordinal-position' && scaleCategory1 === 'time'));\n}\n/**\n * Index for scale precedence -- high score = higher priority for merging.\n */\nconst SCALE_PRECEDENCE_INDEX = {\n    // numeric\n    linear: 0,\n    log: 1,\n    pow: 1,\n    sqrt: 1,\n    symlog: 1,\n    identity: 1,\n    sequential: 1,\n    // time\n    time: 0,\n    utc: 0,\n    // ordinal-position -- these have higher precedence than continuous scales as they support more types of data\n    point: 10,\n    band: 11,\n    // non grouped types\n    ordinal: 0,\n    'bin-ordinal': 0,\n    quantile: 0,\n    quantize: 0,\n    threshold: 0\n};\n/**\n * Return scale categories -- only scale of the same categories can be merged together.\n */\nfunction scaleTypePrecedence(scaleType) {\n    return SCALE_PRECEDENCE_INDEX[scaleType];\n}\nconst CONTINUOUS_TO_CONTINUOUS_SCALES = ['linear', 'log', 'pow', 'sqrt', 'symlog', 'time', 'utc'];\nconst CONTINUOUS_TO_CONTINUOUS_INDEX = Object(vega_util__WEBPACK_IMPORTED_MODULE_0__[\"toSet\"])(CONTINUOUS_TO_CONTINUOUS_SCALES);\nconst QUANTITATIVE_SCALES = ['linear', 'log', 'pow', 'sqrt', 'symlog'];\nconst QUANTITATIVE_SCALES_INDEX = Object(vega_util__WEBPACK_IMPORTED_MODULE_0__[\"toSet\"])(QUANTITATIVE_SCALES);\nfunction isQuantitative(type) {\n    return type in QUANTITATIVE_SCALES_INDEX;\n}\nconst CONTINUOUS_TO_DISCRETE_SCALES = ['quantile', 'quantize', 'threshold'];\nconst CONTINUOUS_TO_DISCRETE_INDEX = Object(vega_util__WEBPACK_IMPORTED_MODULE_0__[\"toSet\"])(CONTINUOUS_TO_DISCRETE_SCALES);\nconst CONTINUOUS_DOMAIN_SCALES = CONTINUOUS_TO_CONTINUOUS_SCALES.concat([\n    'quantile',\n    'quantize',\n    'threshold',\n    'sequential',\n    'identity'\n]);\nconst CONTINUOUS_DOMAIN_INDEX = Object(vega_util__WEBPACK_IMPORTED_MODULE_0__[\"toSet\"])(CONTINUOUS_DOMAIN_SCALES);\nconst DISCRETE_DOMAIN_SCALES = ['ordinal', 'bin-ordinal', 'point', 'band'];\nconst DISCRETE_DOMAIN_INDEX = Object(vega_util__WEBPACK_IMPORTED_MODULE_0__[\"toSet\"])(DISCRETE_DOMAIN_SCALES);\nconst TIME_SCALE_TYPES = ['time', 'utc'];\nfunction hasDiscreteDomain(type) {\n    return type in DISCRETE_DOMAIN_INDEX;\n}\nfunction hasContinuousDomain(type) {\n    return type in CONTINUOUS_DOMAIN_INDEX;\n}\nfunction isContinuousToContinuous(type) {\n    return type in CONTINUOUS_TO_CONTINUOUS_INDEX;\n}\nfunction isContinuousToDiscrete(type) {\n    return type in CONTINUOUS_TO_DISCRETE_INDEX;\n}\nconst defaultScaleConfig = {\n    pointPadding: 0.5,\n    barBandPaddingInner: 0.1,\n    rectBandPaddingInner: 0,\n    minBandSize: 2,\n    minFontSize: 8,\n    maxFontSize: 40,\n    minOpacity: 0.3,\n    maxOpacity: 0.8,\n    // FIXME: revise if these *can* become ratios of width/height step\n    minSize: 9,\n    minStrokeWidth: 1,\n    maxStrokeWidth: 4,\n    quantileCount: 4,\n    quantizeCount: 4\n};\nfunction isExtendedScheme(scheme) {\n    return !Object(vega_util__WEBPACK_IMPORTED_MODULE_0__[\"isString\"])(scheme) && !!scheme['name'];\n}\nfunction isSelectionDomain(domain) {\n    return domain === null || domain === void 0 ? void 0 : domain['selection'];\n}\nfunction isDomainUnionWith(domain) {\n    return domain && domain['unionWith'];\n}\nconst SCALE_PROPERTY_INDEX = {\n    type: 1,\n    domain: 1,\n    domainMax: 1,\n    domainMin: 1,\n    domainMid: 1,\n    align: 1,\n    range: 1,\n    rangeMax: 1,\n    rangeMin: 1,\n    scheme: 1,\n    bins: 1,\n    // Other properties\n    reverse: 1,\n    round: 1,\n    // quantitative / time\n    clamp: 1,\n    nice: 1,\n    // quantitative\n    base: 1,\n    exponent: 1,\n    constant: 1,\n    interpolate: 1,\n    zero: 1,\n    // band/point\n    padding: 1,\n    paddingInner: 1,\n    paddingOuter: 1\n};\nconst SCALE_PROPERTIES = Object(_util__WEBPACK_IMPORTED_MODULE_4__[\"keys\"])(SCALE_PROPERTY_INDEX);\nconst { type, domain, range, rangeMax, rangeMin, scheme } = SCALE_PROPERTY_INDEX, NON_TYPE_DOMAIN_RANGE_VEGA_SCALE_PROPERTY_INDEX = __rest(SCALE_PROPERTY_INDEX, [\"type\", \"domain\", \"range\", \"rangeMax\", \"rangeMin\", \"scheme\"]);\nconst NON_TYPE_DOMAIN_RANGE_VEGA_SCALE_PROPERTIES = Object(_util__WEBPACK_IMPORTED_MODULE_4__[\"keys\"])(NON_TYPE_DOMAIN_RANGE_VEGA_SCALE_PROPERTY_INDEX);\nfunction scaleTypeSupportProperty(scaleType, propName) {\n    switch (propName) {\n        case 'type':\n        case 'domain':\n        case 'reverse':\n        case 'range':\n            return true;\n        case 'scheme':\n        case 'interpolate':\n            return !Object(_util__WEBPACK_IMPORTED_MODULE_4__[\"contains\"])(['point', 'band', 'identity'], scaleType);\n        case 'bins':\n            return !Object(_util__WEBPACK_IMPORTED_MODULE_4__[\"contains\"])(['point', 'band', 'identity', 'ordinal'], scaleType);\n        case 'round':\n            return isContinuousToContinuous(scaleType) || scaleType === 'band' || scaleType === 'point';\n        case 'padding':\n        case 'rangeMin':\n        case 'rangeMax':\n            return isContinuousToContinuous(scaleType) || Object(_util__WEBPACK_IMPORTED_MODULE_4__[\"contains\"])(['point', 'band'], scaleType);\n        case 'paddingOuter':\n        case 'align':\n            return Object(_util__WEBPACK_IMPORTED_MODULE_4__[\"contains\"])(['point', 'band'], scaleType);\n        case 'paddingInner':\n            return scaleType === 'band';\n        case 'domainMax':\n        case 'domainMid':\n        case 'domainMin':\n        case 'clamp':\n            return isContinuousToContinuous(scaleType);\n        case 'nice':\n            return isContinuousToContinuous(scaleType) || scaleType === 'quantize' || scaleType === 'threshold';\n        case 'exponent':\n            return scaleType === 'pow';\n        case 'base':\n            return scaleType === 'log';\n        case 'constant':\n            return scaleType === 'symlog';\n        case 'zero':\n            return (hasContinuousDomain(scaleType) &&\n                !Object(_util__WEBPACK_IMPORTED_MODULE_4__[\"contains\"])([\n                    'log',\n                    'time',\n                    'utc',\n                    'threshold',\n                    'quantile' // quantile depends on distribution so zero does not matter\n                ], scaleType));\n    }\n}\n/**\n * Returns undefined if the input channel supports the input scale property name\n */\nfunction channelScalePropertyIncompatability(channel, propName) {\n    switch (propName) {\n        case 'interpolate':\n        case 'scheme':\n        case 'domainMid':\n            if (!Object(_channel__WEBPACK_IMPORTED_MODULE_1__[\"isColorChannel\"])(channel)) {\n                return _log__WEBPACK_IMPORTED_MODULE_2__[\"message\"].cannotUseScalePropertyWithNonColor(channel);\n            }\n            return undefined;\n        case 'align':\n        case 'type':\n        case 'bins':\n        case 'domain':\n        case 'domainMax':\n        case 'domainMin':\n        case 'range':\n        case 'base':\n        case 'exponent':\n        case 'constant':\n        case 'nice':\n        case 'padding':\n        case 'paddingInner':\n        case 'paddingOuter':\n        case 'rangeMax':\n        case 'rangeMin':\n        case 'reverse':\n        case 'round':\n        case 'clamp':\n        case 'zero':\n            return undefined; // GOOD!\n    }\n}\nfunction scaleTypeSupportDataType(specifiedType, fieldDefType) {\n    if (Object(_util__WEBPACK_IMPORTED_MODULE_4__[\"contains\"])([_type__WEBPACK_IMPORTED_MODULE_3__[\"ORDINAL\"], _type__WEBPACK_IMPORTED_MODULE_3__[\"NOMINAL\"]], fieldDefType)) {\n        return specifiedType === undefined || hasDiscreteDomain(specifiedType);\n    }\n    else if (fieldDefType === _type__WEBPACK_IMPORTED_MODULE_3__[\"TEMPORAL\"]) {\n        return Object(_util__WEBPACK_IMPORTED_MODULE_4__[\"contains\"])([ScaleType.TIME, ScaleType.UTC, undefined], specifiedType);\n    }\n    else if (fieldDefType === _type__WEBPACK_IMPORTED_MODULE_3__[\"QUANTITATIVE\"]) {\n        return Object(_util__WEBPACK_IMPORTED_MODULE_4__[\"contains\"])([\n            ScaleType.LOG,\n            ScaleType.POW,\n            ScaleType.SQRT,\n            ScaleType.SYMLOG,\n            ScaleType.QUANTILE,\n            ScaleType.QUANTIZE,\n            ScaleType.THRESHOLD,\n            ScaleType.LINEAR,\n            undefined\n        ], specifiedType);\n    }\n    return true;\n}\nfunction channelSupportScaleType(channel, scaleType) {\n    if (!_channel__WEBPACK_IMPORTED_MODULE_1__[\"isScaleChannel\"](channel)) {\n        return false;\n    }\n    switch (channel) {\n        case _channel__WEBPACK_IMPORTED_MODULE_1__[\"X\"]:\n        case _channel__WEBPACK_IMPORTED_MODULE_1__[\"Y\"]:\n        case _channel__WEBPACK_IMPORTED_MODULE_1__[\"THETA\"]:\n        case _channel__WEBPACK_IMPORTED_MODULE_1__[\"RADIUS\"]:\n            return isContinuousToContinuous(scaleType) || Object(_util__WEBPACK_IMPORTED_MODULE_4__[\"contains\"])(['band', 'point'], scaleType);\n        case _channel__WEBPACK_IMPORTED_MODULE_1__[\"SIZE\"]: // TODO: size and opacity can support ordinal with more modification\n        case _channel__WEBPACK_IMPORTED_MODULE_1__[\"STROKEWIDTH\"]:\n        case _channel__WEBPACK_IMPORTED_MODULE_1__[\"OPACITY\"]:\n        case _channel__WEBPACK_IMPORTED_MODULE_1__[\"FILLOPACITY\"]:\n        case _channel__WEBPACK_IMPORTED_MODULE_1__[\"STROKEOPACITY\"]:\n        case _channel__WEBPACK_IMPORTED_MODULE_1__[\"ANGLE\"]:\n            // Although it generally doesn't make sense to use band with size and opacity,\n            // it can also work since we use band: 0.5 to get midpoint.\n            return (isContinuousToContinuous(scaleType) ||\n                isContinuousToDiscrete(scaleType) ||\n                Object(_util__WEBPACK_IMPORTED_MODULE_4__[\"contains\"])(['band', 'point', 'ordinal'], scaleType));\n        case _channel__WEBPACK_IMPORTED_MODULE_1__[\"COLOR\"]:\n        case _channel__WEBPACK_IMPORTED_MODULE_1__[\"FILL\"]:\n        case _channel__WEBPACK_IMPORTED_MODULE_1__[\"STROKE\"]:\n            return scaleType !== 'band'; // band does not make sense with color\n        case _channel__WEBPACK_IMPORTED_MODULE_1__[\"STROKEDASH\"]:\n            return scaleType === 'ordinal' || isContinuousToDiscrete(scaleType);\n        case _channel__WEBPACK_IMPORTED_MODULE_1__[\"SHAPE\"]:\n            return scaleType === 'ordinal'; // shape = lookup only\n    }\n}\n//# sourceMappingURL=scale.js.map//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,[encoded data, 17664 characters]\n//# sourceURL=webpack-internal:///./node_modules/vega-lite/build/src/scale.js\n");

/***/ }),

/***/ "./node_modules/vega-lite/build/src/selection.js":
/*!*******************************************************!*\
  !*** ./node_modules/vega-lite/build/src/selection.js ***!
  \*******************************************************/
/*! exports provided: SELECTION_ID, defaultConfig, isLegendBinding, isLegendStreamBinding */
/***/ (function(module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"SELECTION_ID\", function() { return SELECTION_ID; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"defaultConfig\", function() { return defaultConfig; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"isLegendBinding\", function() { return isLegendBinding; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"isLegendStreamBinding\", function() { return isLegendStreamBinding; });\n/* harmony import */ var vega_util__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! vega-util */ \"./node_modules/vega-lite/node_modules/vega-util/build/vega-util.module.js\");\n\nconst SELECTION_ID = '_vgsid_';\nconst defaultConfig = {\n    single: {\n        on: 'click',\n        fields: [SELECTION_ID],\n        resolve: 'global',\n        empty: 'all',\n        clear: 'dblclick'\n    },\n    multi: {\n        on: 'click',\n        fields: [SELECTION_ID],\n        toggle: 'event.shiftKey',\n        resolve: 'global',\n        empty: 'all',\n        clear: 'dblclick'\n    },\n    interval: {\n        on: '[mousedown, window:mouseup] > window:mousemove!',\n        encodings: ['x', 'y'],\n        translate: '[mousedown, window:mouseup] > window:mousemove!',\n        zoom: 'wheel!',\n        mark: { fill: '#333', fillOpacity: 0.125, stroke: 'white' },\n        resolve: 'global',\n        clear: 'dblclick'\n    }\n};\nfunction isLegendBinding(bind) {\n    return !!bind && (bind === 'legend' || !!bind.legend);\n}\nfunction isLegendStreamBinding(bind) {\n    return isLegendBinding(bind) && Object(vega_util__WEBPACK_IMPORTED_MODULE_0__[\"isObject\"])(bind);\n}\n//# sourceMappingURL=selection.js.map//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvdmVnYS1saXRlL2J1aWxkL3NyYy9zZWxlY3Rpb24uanMuanMiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvdmVnYS1saXRlL2J1aWxkL3NyYy9zZWxlY3Rpb24uanM/OTMyOCJdLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBpc09iamVjdCB9IGZyb20gJ3ZlZ2EtdXRpbCc7XG5leHBvcnQgY29uc3QgU0VMRUNUSU9OX0lEID0gJ192Z3NpZF8nO1xuZXhwb3J0IGNvbnN0IGRlZmF1bHRDb25maWcgPSB7XG4gICAgc2luZ2xlOiB7XG4gICAgICAgIG9uOiAnY2xpY2snLFxuICAgICAgICBmaWVsZHM6IFtTRUxFQ1RJT05fSURdLFxuICAgICAgICByZXNvbHZlOiAnZ2xvYmFsJyxcbiAgICAgICAgZW1wdHk6ICdhbGwnLFxuICAgICAgICBjbGVhcjogJ2RibGNsaWNrJ1xuICAgIH0sXG4gICAgbXVsdGk6IHtcbiAgICAgICAgb246ICdjbGljaycsXG4gICAgICAgIGZpZWxkczogW1NFTEVDVElPTl9JRF0sXG4gICAgICAgIHRvZ2dsZTogJ2V2ZW50LnNoaWZ0S2V5JyxcbiAgICAgICAgcmVzb2x2ZTogJ2dsb2JhbCcsXG4gICAgICAgIGVtcHR5OiAnYWxsJyxcbiAgICAgICAgY2xlYXI6ICdkYmxjbGljaydcbiAgICB9LFxuICAgIGludGVydmFsOiB7XG4gICAgICAgIG9uOiAnW21vdXNlZG93biwgd2luZG93Om1vdXNldXBdID4gd2luZG93Om1vdXNlbW92ZSEnLFxuICAgICAgICBlbmNvZGluZ3M6IFsneCcsICd5J10sXG4gICAgICAgIHRyYW5zbGF0ZTogJ1ttb3VzZWRvd24sIHdpbmRvdzptb3VzZXVwXSA+IHdpbmRvdzptb3VzZW1vdmUhJyxcbiAgICAgICAgem9vbTogJ3doZWVsIScsXG4gICAgICAgIG1hcms6IHsgZmlsbDogJyMzMzMnLCBmaWxsT3BhY2l0eTogMC4xMjUsIHN0cm9rZTogJ3doaXRlJyB9LFxuICAgICAgICByZXNvbHZlOiAnZ2xvYmFsJyxcbiAgICAgICAgY2xlYXI6ICdkYmxjbGljaydcbiAgICB9XG59O1xuZXhwb3J0IGZ1bmN0aW9uIGlzTGVnZW5kQmluZGluZyhiaW5kKSB7XG4gICAgcmV0dXJuICEhYmluZCAmJiAoYmluZCA9PT0gJ2xlZ2VuZCcgfHwgISFiaW5kLmxlZ2VuZCk7XG59XG5leHBvcnQgZnVuY3Rpb24gaXNMZWdlbmRTdHJlYW1CaW5kaW5nKGJpbmQpIHtcbiAgICByZXR1cm4gaXNMZWdlbmRCaW5kaW5nKGJpbmQpICYmIGlzT2JqZWN0KGJpbmQpO1xufVxuLy8jIHNvdXJjZU1hcHBpbmdVUkw9c2VsZWN0aW9uLmpzLm1hcCJdLCJtYXBwaW5ncyI6IkFBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSIsInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///./node_modules/vega-lite/build/src/selection.js\n");

/***/ }),

/***/ "./node_modules/vega-lite/build/src/sort.js":
/*!**************************************************!*\
  !*** ./node_modules/vega-lite/build/src/sort.js ***!
  \**************************************************/
/*! exports provided: DEFAULT_SORT_OP, isSortByChannel, isSortByEncoding, isSortField, isSortArray */
/***/ (function(module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"DEFAULT_SORT_OP\", function() { return DEFAULT_SORT_OP; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"isSortByChannel\", function() { return isSortByChannel; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"isSortByEncoding\", function() { return isSortByEncoding; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"isSortField\", function() { return isSortField; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"isSortArray\", function() { return isSortArray; });\n/* harmony import */ var vega_util__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! vega-util */ \"./node_modules/vega-lite/node_modules/vega-util/build/vega-util.module.js\");\n\nconst DEFAULT_SORT_OP = 'min';\nconst SORT_BY_CHANNEL_INDEX = {\n    x: 1,\n    y: 1,\n    color: 1,\n    fill: 1,\n    stroke: 1,\n    strokeWidth: 1,\n    size: 1,\n    shape: 1,\n    fillOpacity: 1,\n    strokeOpacity: 1,\n    opacity: 1,\n    text: 1\n};\nfunction isSortByChannel(c) {\n    return c in SORT_BY_CHANNEL_INDEX;\n}\nfunction isSortByEncoding(sort) {\n    return !!sort && !!sort['encoding'];\n}\nfunction isSortField(sort) {\n    return !!sort && (sort['op'] === 'count' || !!sort['field']);\n}\nfunction isSortArray(sort) {\n    return !!sort && Object(vega_util__WEBPACK_IMPORTED_MODULE_0__[\"isArray\"])(sort);\n}\n//# sourceMappingURL=sort.js.map//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvdmVnYS1saXRlL2J1aWxkL3NyYy9zb3J0LmpzLmpzIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL3ZlZ2EtbGl0ZS9idWlsZC9zcmMvc29ydC5qcz9lN2NjIl0sInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IGlzQXJyYXkgfSBmcm9tICd2ZWdhLXV0aWwnO1xuZXhwb3J0IGNvbnN0IERFRkFVTFRfU09SVF9PUCA9ICdtaW4nO1xuY29uc3QgU09SVF9CWV9DSEFOTkVMX0lOREVYID0ge1xuICAgIHg6IDEsXG4gICAgeTogMSxcbiAgICBjb2xvcjogMSxcbiAgICBmaWxsOiAxLFxuICAgIHN0cm9rZTogMSxcbiAgICBzdHJva2VXaWR0aDogMSxcbiAgICBzaXplOiAxLFxuICAgIHNoYXBlOiAxLFxuICAgIGZpbGxPcGFjaXR5OiAxLFxuICAgIHN0cm9rZU9wYWNpdHk6IDEsXG4gICAgb3BhY2l0eTogMSxcbiAgICB0ZXh0OiAxXG59O1xuZXhwb3J0IGZ1bmN0aW9uIGlzU29ydEJ5Q2hhbm5lbChjKSB7XG4gICAgcmV0dXJuIGMgaW4gU09SVF9CWV9DSEFOTkVMX0lOREVYO1xufVxuZXhwb3J0IGZ1bmN0aW9uIGlzU29ydEJ5RW5jb2Rpbmcoc29ydCkge1xuICAgIHJldHVybiAhIXNvcnQgJiYgISFzb3J0WydlbmNvZGluZyddO1xufVxuZXhwb3J0IGZ1bmN0aW9uIGlzU29ydEZpZWxkKHNvcnQpIHtcbiAgICByZXR1cm4gISFzb3J0ICYmIChzb3J0WydvcCddID09PSAnY291bnQnIHx8ICEhc29ydFsnZmllbGQnXSk7XG59XG5leHBvcnQgZnVuY3Rpb24gaXNTb3J0QXJyYXkoc29ydCkge1xuICAgIHJldHVybiAhIXNvcnQgJiYgaXNBcnJheShzb3J0KTtcbn1cbi8vIyBzb3VyY2VNYXBwaW5nVVJMPXNvcnQuanMubWFwIl0sIm1hcHBpbmdzIjoiQUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EiLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///./node_modules/vega-lite/build/src/sort.js\n");

/***/ }),

/***/ "./node_modules/vega-lite/build/src/spec/base.js":
/*!*******************************************************!*\
  !*** ./node_modules/vega-lite/build/src/spec/base.js ***!
  \*******************************************************/
/*! exports provided: isStep, isFrameMixins, DEFAULT_SPACING, extractCompositionLayout */
/***/ (function(module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"isStep\", function() { return isStep; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"isFrameMixins\", function() { return isFrameMixins; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"DEFAULT_SPACING\", function() { return DEFAULT_SPACING; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"extractCompositionLayout\", function() { return extractCompositionLayout; });\n/* harmony import */ var vega_util__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! vega-util */ \"./node_modules/vega-lite/node_modules/vega-util/build/vega-util.module.js\");\n/* harmony import */ var _util__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../util */ \"./node_modules/vega-lite/build/src/util.js\");\n/* harmony import */ var _concat__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./concat */ \"./node_modules/vega-lite/build/src/spec/concat.js\");\n/* harmony import */ var _facet__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ./facet */ \"./node_modules/vega-lite/build/src/spec/facet.js\");\n\n\n\n\nfunction isStep(size) {\n    return Object(vega_util__WEBPACK_IMPORTED_MODULE_0__[\"isObject\"])(size) && size['step'] !== undefined;\n}\nfunction isFrameMixins(o) {\n    return o['view'] || o['width'] || o['height'];\n}\nconst DEFAULT_SPACING = 20;\nconst COMPOSITION_LAYOUT_INDEX = {\n    align: 1,\n    bounds: 1,\n    center: 1,\n    columns: 1,\n    spacing: 1\n};\nconst COMPOSITION_LAYOUT_PROPERTIES = Object(_util__WEBPACK_IMPORTED_MODULE_1__[\"keys\"])(COMPOSITION_LAYOUT_INDEX);\nfunction extractCompositionLayout(spec, specType, config) {\n    var _a, _b;\n    const compositionConfig = config[specType];\n    const layout = {};\n    // Apply config first\n    const { spacing: spacingConfig, columns } = compositionConfig;\n    if (spacingConfig !== undefined) {\n        layout.spacing = spacingConfig;\n    }\n    if (columns !== undefined) {\n        if ((Object(_facet__WEBPACK_IMPORTED_MODULE_3__[\"isFacetSpec\"])(spec) && !Object(_facet__WEBPACK_IMPORTED_MODULE_3__[\"isFacetMapping\"])(spec.facet)) || Object(_concat__WEBPACK_IMPORTED_MODULE_2__[\"isConcatSpec\"])(spec)) {\n            layout.columns = columns;\n        }\n    }\n    if (Object(_concat__WEBPACK_IMPORTED_MODULE_2__[\"isVConcatSpec\"])(spec)) {\n        layout.columns = 1;\n    }\n    // Then copy properties from the spec\n    for (const prop of COMPOSITION_LAYOUT_PROPERTIES) {\n        if (spec[prop] !== undefined) {\n            if (prop === 'spacing') {\n                const spacing = spec[prop];\n                layout[prop] = Object(vega_util__WEBPACK_IMPORTED_MODULE_0__[\"isNumber\"])(spacing)\n                    ? spacing\n                    : {\n                        row: (_a = spacing.row) !== null && _a !== void 0 ? _a : spacingConfig,\n                        column: (_b = spacing.column) !== null && _b !== void 0 ? _b : spacingConfig\n                    };\n            }\n            else {\n                layout[prop] = spec[prop];\n            }\n        }\n    }\n    return layout;\n}\n//# sourceMappingURL=base.js.map//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvdmVnYS1saXRlL2J1aWxkL3NyYy9zcGVjL2Jhc2UuanMuanMiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvdmVnYS1saXRlL2J1aWxkL3NyYy9zcGVjL2Jhc2UuanM/YThlOCJdLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBpc051bWJlciwgaXNPYmplY3QgfSBmcm9tICd2ZWdhLXV0aWwnO1xuaW1wb3J0IHsga2V5cyB9IGZyb20gJy4uL3V0aWwnO1xuaW1wb3J0IHsgaXNDb25jYXRTcGVjLCBpc1ZDb25jYXRTcGVjIH0gZnJvbSAnLi9jb25jYXQnO1xuaW1wb3J0IHsgaXNGYWNldE1hcHBpbmcsIGlzRmFjZXRTcGVjIH0gZnJvbSAnLi9mYWNldCc7XG5leHBvcnQgZnVuY3Rpb24gaXNTdGVwKHNpemUpIHtcbiAgICByZXR1cm4gaXNPYmplY3Qoc2l6ZSkgJiYgc2l6ZVsnc3RlcCddICE9PSB1bmRlZmluZWQ7XG59XG5leHBvcnQgZnVuY3Rpb24gaXNGcmFtZU1peGlucyhvKSB7XG4gICAgcmV0dXJuIG9bJ3ZpZXcnXSB8fCBvWyd3aWR0aCddIHx8IG9bJ2hlaWdodCddO1xufVxuZXhwb3J0IGNvbnN0IERFRkFVTFRfU1BBQ0lORyA9IDIwO1xuY29uc3QgQ09NUE9TSVRJT05fTEFZT1VUX0lOREVYID0ge1xuICAgIGFsaWduOiAxLFxuICAgIGJvdW5kczogMSxcbiAgICBjZW50ZXI6IDEsXG4gICAgY29sdW1uczogMSxcbiAgICBzcGFjaW5nOiAxXG59O1xuY29uc3QgQ09NUE9TSVRJT05fTEFZT1VUX1BST1BFUlRJRVMgPSBrZXlzKENPTVBPU0lUSU9OX0xBWU9VVF9JTkRFWCk7XG5leHBvcnQgZnVuY3Rpb24gZXh0cmFjdENvbXBvc2l0aW9uTGF5b3V0KHNwZWMsIHNwZWNUeXBlLCBjb25maWcpIHtcbiAgICB2YXIgX2EsIF9iO1xuICAgIGNvbnN0IGNvbXBvc2l0aW9uQ29uZmlnID0gY29uZmlnW3NwZWNUeXBlXTtcbiAgICBjb25zdCBsYXlvdXQgPSB7fTtcbiAgICAvLyBBcHBseSBjb25maWcgZmlyc3RcbiAgICBjb25zdCB7IHNwYWNpbmc6IHNwYWNpbmdDb25maWcsIGNvbHVtbnMgfSA9IGNvbXBvc2l0aW9uQ29uZmlnO1xuICAgIGlmIChzcGFjaW5nQ29uZmlnICE9PSB1bmRlZmluZWQpIHtcbiAgICAgICAgbGF5b3V0LnNwYWNpbmcgPSBzcGFjaW5nQ29uZmlnO1xuICAgIH1cbiAgICBpZiAoY29sdW1ucyAhPT0gdW5kZWZpbmVkKSB7XG4gICAgICAgIGlmICgoaXNGYWNldFNwZWMoc3BlYykgJiYgIWlzRmFjZXRNYXBwaW5nKHNwZWMuZmFjZXQpKSB8fCBpc0NvbmNhdFNwZWMoc3BlYykpIHtcbiAgICAgICAgICAgIGxheW91dC5jb2x1bW5zID0gY29sdW1ucztcbiAgICAgICAgfVxuICAgIH1cbiAgICBpZiAoaXNWQ29uY2F0U3BlYyhzcGVjKSkge1xuICAgICAgICBsYXlvdXQuY29sdW1ucyA9IDE7XG4gICAgfVxuICAgIC8vIFRoZW4gY29weSBwcm9wZXJ0aWVzIGZyb20gdGhlIHNwZWNcbiAgICBmb3IgKGNvbnN0IHByb3Agb2YgQ09NUE9TSVRJT05fTEFZT1VUX1BST1BFUlRJRVMpIHtcbiAgICAgICAgaWYgKHNwZWNbcHJvcF0gIT09IHVuZGVmaW5lZCkge1xuICAgICAgICAgICAgaWYgKHByb3AgPT09ICdzcGFjaW5nJykge1xuICAgICAgICAgICAgICAgIGNvbnN0IHNwYWNpbmcgPSBzcGVjW3Byb3BdO1xuICAgICAgICAgICAgICAgIGxheW91dFtwcm9wXSA9IGlzTnVtYmVyKHNwYWNpbmcpXG4gICAgICAgICAgICAgICAgICAgID8gc3BhY2luZ1xuICAgICAgICAgICAgICAgICAgICA6IHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHJvdzogKF9hID0gc3BhY2luZy5yb3cpICE9PSBudWxsICYmIF9hICE9PSB2b2lkIDAgPyBfYSA6IHNwYWNpbmdDb25maWcsXG4gICAgICAgICAgICAgICAgICAgICAgICBjb2x1bW46IChfYiA9IHNwYWNpbmcuY29sdW1uKSAhPT0gbnVsbCAmJiBfYiAhPT0gdm9pZCAwID8gX2IgOiBzcGFjaW5nQ29uZmlnXG4gICAgICAgICAgICAgICAgICAgIH07XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBlbHNlIHtcbiAgICAgICAgICAgICAgICBsYXlvdXRbcHJvcF0gPSBzcGVjW3Byb3BdO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgfVxuICAgIHJldHVybiBsYXlvdXQ7XG59XG4vLyMgc291cmNlTWFwcGluZ1VSTD1iYXNlLmpzLm1hcCJdLCJtYXBwaW5ncyI6IkFBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSIsInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///./node_modules/vega-lite/build/src/spec/base.js\n");

/***/ }),

/***/ "./node_modules/vega-lite/build/src/spec/concat.js":
/*!*********************************************************!*\
  !*** ./node_modules/vega-lite/build/src/spec/concat.js ***!
  \*********************************************************/
/*! exports provided: isAnyConcatSpec, isConcatSpec, isVConcatSpec, isHConcatSpec */
/***/ (function(module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"isAnyConcatSpec\", function() { return isAnyConcatSpec; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"isConcatSpec\", function() { return isConcatSpec; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"isVConcatSpec\", function() { return isVConcatSpec; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"isHConcatSpec\", function() { return isHConcatSpec; });\nfunction isAnyConcatSpec(spec) {\n    return isVConcatSpec(spec) || isHConcatSpec(spec) || isConcatSpec(spec);\n}\nfunction isConcatSpec(spec) {\n    return 'concat' in spec;\n}\nfunction isVConcatSpec(spec) {\n    return 'vconcat' in spec;\n}\nfunction isHConcatSpec(spec) {\n    return 'hconcat' in spec;\n}\n//# sourceMappingURL=concat.js.map//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvdmVnYS1saXRlL2J1aWxkL3NyYy9zcGVjL2NvbmNhdC5qcy5qcyIsInNvdXJjZXMiOlsid2VicGFjazovLy8uL25vZGVfbW9kdWxlcy92ZWdhLWxpdGUvYnVpbGQvc3JjL3NwZWMvY29uY2F0LmpzPzVjZWUiXSwic291cmNlc0NvbnRlbnQiOlsiZXhwb3J0IGZ1bmN0aW9uIGlzQW55Q29uY2F0U3BlYyhzcGVjKSB7XG4gICAgcmV0dXJuIGlzVkNvbmNhdFNwZWMoc3BlYykgfHwgaXNIQ29uY2F0U3BlYyhzcGVjKSB8fCBpc0NvbmNhdFNwZWMoc3BlYyk7XG59XG5leHBvcnQgZnVuY3Rpb24gaXNDb25jYXRTcGVjKHNwZWMpIHtcbiAgICByZXR1cm4gJ2NvbmNhdCcgaW4gc3BlYztcbn1cbmV4cG9ydCBmdW5jdGlvbiBpc1ZDb25jYXRTcGVjKHNwZWMpIHtcbiAgICByZXR1cm4gJ3Zjb25jYXQnIGluIHNwZWM7XG59XG5leHBvcnQgZnVuY3Rpb24gaXNIQ29uY2F0U3BlYyhzcGVjKSB7XG4gICAgcmV0dXJuICdoY29uY2F0JyBpbiBzcGVjO1xufVxuLy8jIHNvdXJjZU1hcHBpbmdVUkw9Y29uY2F0LmpzLm1hcCJdLCJtYXBwaW5ncyI6IkFBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBIiwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///./node_modules/vega-lite/build/src/spec/concat.js\n");

/***/ }),

/***/ "./node_modules/vega-lite/build/src/spec/facet.js":
/*!********************************************************!*\
  !*** ./node_modules/vega-lite/build/src/spec/facet.js ***!
  \********************************************************/
/*! exports provided: isFacetMapping, isFacetFieldDef, isFacetSpec */
/***/ (function(module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"isFacetMapping\", function() { return isFacetMapping; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"isFacetFieldDef\", function() { return isFacetFieldDef; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"isFacetSpec\", function() { return isFacetSpec; });\nfunction isFacetMapping(f) {\n    return 'row' in f || 'column' in f;\n}\nfunction isFacetFieldDef(channelDef) {\n    return !!channelDef && 'header' in channelDef;\n}\nfunction isFacetSpec(spec) {\n    return 'facet' in spec;\n}\n//# sourceMappingURL=facet.js.map//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvdmVnYS1saXRlL2J1aWxkL3NyYy9zcGVjL2ZhY2V0LmpzLmpzIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL3ZlZ2EtbGl0ZS9idWlsZC9zcmMvc3BlYy9mYWNldC5qcz9lZGE2Il0sInNvdXJjZXNDb250ZW50IjpbImV4cG9ydCBmdW5jdGlvbiBpc0ZhY2V0TWFwcGluZyhmKSB7XG4gICAgcmV0dXJuICdyb3cnIGluIGYgfHwgJ2NvbHVtbicgaW4gZjtcbn1cbmV4cG9ydCBmdW5jdGlvbiBpc0ZhY2V0RmllbGREZWYoY2hhbm5lbERlZikge1xuICAgIHJldHVybiAhIWNoYW5uZWxEZWYgJiYgJ2hlYWRlcicgaW4gY2hhbm5lbERlZjtcbn1cbmV4cG9ydCBmdW5jdGlvbiBpc0ZhY2V0U3BlYyhzcGVjKSB7XG4gICAgcmV0dXJuICdmYWNldCcgaW4gc3BlYztcbn1cbi8vIyBzb3VyY2VNYXBwaW5nVVJMPWZhY2V0LmpzLm1hcCJdLCJtYXBwaW5ncyI6IkFBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSIsInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///./node_modules/vega-lite/build/src/spec/facet.js\n");

/***/ }),

/***/ "./node_modules/vega-lite/build/src/spec/index.js":
/*!********************************************************!*\
  !*** ./node_modules/vega-lite/build/src/spec/index.js ***!
  \********************************************************/
/*! exports provided: isAnyConcatSpec, isHConcatSpec, isVConcatSpec, isFacetSpec, isLayerSpec, isRepeatSpec, isUnitSpec */
/***/ (function(module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _concat__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./concat */ \"./node_modules/vega-lite/build/src/spec/concat.js\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"isAnyConcatSpec\", function() { return _concat__WEBPACK_IMPORTED_MODULE_0__[\"isAnyConcatSpec\"]; });\n\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"isHConcatSpec\", function() { return _concat__WEBPACK_IMPORTED_MODULE_0__[\"isHConcatSpec\"]; });\n\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"isVConcatSpec\", function() { return _concat__WEBPACK_IMPORTED_MODULE_0__[\"isVConcatSpec\"]; });\n\n/* harmony import */ var _facet__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./facet */ \"./node_modules/vega-lite/build/src/spec/facet.js\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"isFacetSpec\", function() { return _facet__WEBPACK_IMPORTED_MODULE_1__[\"isFacetSpec\"]; });\n\n/* harmony import */ var _layer__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./layer */ \"./node_modules/vega-lite/build/src/spec/layer.js\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"isLayerSpec\", function() { return _layer__WEBPACK_IMPORTED_MODULE_2__[\"isLayerSpec\"]; });\n\n/* harmony import */ var _repeat__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ./repeat */ \"./node_modules/vega-lite/build/src/spec/repeat.js\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"isRepeatSpec\", function() { return _repeat__WEBPACK_IMPORTED_MODULE_3__[\"isRepeatSpec\"]; });\n\n/* harmony import */ var _unit__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ./unit */ \"./node_modules/vega-lite/build/src/spec/unit.js\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"isUnitSpec\", function() { return _unit__WEBPACK_IMPORTED_MODULE_4__[\"isUnitSpec\"]; });\n\n\n\n\n\n\n//# sourceMappingURL=index.js.map//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvdmVnYS1saXRlL2J1aWxkL3NyYy9zcGVjL2luZGV4LmpzLmpzIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL3ZlZ2EtbGl0ZS9idWlsZC9zcmMvc3BlYy9pbmRleC5qcz8xOGUzIl0sInNvdXJjZXNDb250ZW50IjpbImV4cG9ydCB7IGlzQW55Q29uY2F0U3BlYywgaXNIQ29uY2F0U3BlYywgaXNWQ29uY2F0U3BlYyB9IGZyb20gJy4vY29uY2F0JztcbmV4cG9ydCB7IGlzRmFjZXRTcGVjIH0gZnJvbSAnLi9mYWNldCc7XG5leHBvcnQgeyBpc0xheWVyU3BlYyB9IGZyb20gJy4vbGF5ZXInO1xuZXhwb3J0IHsgaXNSZXBlYXRTcGVjIH0gZnJvbSAnLi9yZXBlYXQnO1xuZXhwb3J0IHsgaXNVbml0U3BlYyB9IGZyb20gJy4vdW5pdCc7XG4vLyMgc291cmNlTWFwcGluZ1VSTD1pbmRleC5qcy5tYXAiXSwibWFwcGluZ3MiOiJBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EiLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///./node_modules/vega-lite/build/src/spec/index.js\n");

/***/ }),

/***/ "./node_modules/vega-lite/build/src/spec/layer.js":
/*!********************************************************!*\
  !*** ./node_modules/vega-lite/build/src/spec/layer.js ***!
  \********************************************************/
/*! exports provided: isLayerSpec */
/***/ (function(module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"isLayerSpec\", function() { return isLayerSpec; });\nfunction isLayerSpec(spec) {\n    return 'layer' in spec;\n}\n//# sourceMappingURL=layer.js.map//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvdmVnYS1saXRlL2J1aWxkL3NyYy9zcGVjL2xheWVyLmpzLmpzIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL3ZlZ2EtbGl0ZS9idWlsZC9zcmMvc3BlYy9sYXllci5qcz8xYjVmIl0sInNvdXJjZXNDb250ZW50IjpbImV4cG9ydCBmdW5jdGlvbiBpc0xheWVyU3BlYyhzcGVjKSB7XG4gICAgcmV0dXJuICdsYXllcicgaW4gc3BlYztcbn1cbi8vIyBzb3VyY2VNYXBwaW5nVVJMPWxheWVyLmpzLm1hcCJdLCJtYXBwaW5ncyI6IkFBQUE7QUFBQTtBQUFBO0FBQ0E7QUFDQTtBQUNBIiwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///./node_modules/vega-lite/build/src/spec/layer.js\n");

/***/ }),

/***/ "./node_modules/vega-lite/build/src/spec/map.js":
/*!******************************************************!*\
  !*** ./node_modules/vega-lite/build/src/spec/map.js ***!
  \******************************************************/
/*! exports provided: SpecMapper */
/***/ (function(module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"SpecMapper\", function() { return SpecMapper; });\n/* harmony import */ var _log__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../log */ \"./node_modules/vega-lite/build/src/log/index.js\");\n/* harmony import */ var _concat__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./concat */ \"./node_modules/vega-lite/build/src/spec/concat.js\");\n/* harmony import */ var _facet__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./facet */ \"./node_modules/vega-lite/build/src/spec/facet.js\");\n/* harmony import */ var _layer__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ./layer */ \"./node_modules/vega-lite/build/src/spec/layer.js\");\n/* harmony import */ var _repeat__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ./repeat */ \"./node_modules/vega-lite/build/src/spec/repeat.js\");\n/* harmony import */ var _unit__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! ./unit */ \"./node_modules/vega-lite/build/src/spec/unit.js\");\nvar __rest = (undefined && undefined.__rest) || function (s, e) {\n    var t = {};\n    for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0)\n        t[p] = s[p];\n    if (s != null && typeof Object.getOwnPropertySymbols === \"function\")\n        for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) {\n            if (e.indexOf(p[i]) < 0 && Object.prototype.propertyIsEnumerable.call(s, p[i]))\n                t[p[i]] = s[p[i]];\n        }\n    return t;\n};\n\n\n\n\n\n\nclass SpecMapper {\n    map(spec, params) {\n        if (Object(_facet__WEBPACK_IMPORTED_MODULE_2__[\"isFacetSpec\"])(spec)) {\n            return this.mapFacet(spec, params);\n        }\n        else if (Object(_repeat__WEBPACK_IMPORTED_MODULE_4__[\"isRepeatSpec\"])(spec)) {\n            return this.mapRepeat(spec, params);\n        }\n        else if (Object(_concat__WEBPACK_IMPORTED_MODULE_1__[\"isHConcatSpec\"])(spec)) {\n            return this.mapHConcat(spec, params);\n        }\n        else if (Object(_concat__WEBPACK_IMPORTED_MODULE_1__[\"isVConcatSpec\"])(spec)) {\n            return this.mapVConcat(spec, params);\n        }\n        else if (Object(_concat__WEBPACK_IMPORTED_MODULE_1__[\"isConcatSpec\"])(spec)) {\n            return this.mapConcat(spec, params);\n        }\n        else {\n            return this.mapLayerOrUnit(spec, params);\n        }\n    }\n    mapLayerOrUnit(spec, params) {\n        if (Object(_layer__WEBPACK_IMPORTED_MODULE_3__[\"isLayerSpec\"])(spec)) {\n            return this.mapLayer(spec, params);\n        }\n        else if (Object(_unit__WEBPACK_IMPORTED_MODULE_5__[\"isUnitSpec\"])(spec)) {\n            return this.mapUnit(spec, params);\n        }\n        throw new Error(_log__WEBPACK_IMPORTED_MODULE_0__[\"message\"].invalidSpec(spec));\n    }\n    mapLayer(spec, params) {\n        return Object.assign(Object.assign({}, spec), { layer: spec.layer.map(subspec => this.mapLayerOrUnit(subspec, params)) });\n    }\n    mapHConcat(spec, params) {\n        return Object.assign(Object.assign({}, spec), { hconcat: spec.hconcat.map(subspec => this.map(subspec, params)) });\n    }\n    mapVConcat(spec, params) {\n        return Object.assign(Object.assign({}, spec), { vconcat: spec.vconcat.map(subspec => this.map(subspec, params)) });\n    }\n    mapConcat(spec, params) {\n        const { concat } = spec, rest = __rest(spec, [\"concat\"]);\n        return Object.assign(Object.assign({}, rest), { concat: concat.map(subspec => this.map(subspec, params)) });\n    }\n    mapFacet(spec, params) {\n        return Object.assign(Object.assign({}, spec), { \n            // TODO: remove \"any\" once we support all facet listed in https://github.com/vega/vega-lite/issues/2760\n            spec: this.map(spec.spec, params) });\n    }\n    mapRepeat(spec, params) {\n        return Object.assign(Object.assign({}, spec), { \n            // as any is required here since TS cannot infer that the output type satisfies the input type\n            spec: this.map(spec.spec, params) });\n    }\n}\n//# sourceMappingURL=map.js.map//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,[encoded data, 4772 characters]\n//# sourceURL=webpack-internal:///./node_modules/vega-lite/build/src/spec/map.js\n");

/***/ }),

/***/ "./node_modules/vega-lite/build/src/spec/repeat.js":
/*!*********************************************************!*\
  !*** ./node_modules/vega-lite/build/src/spec/repeat.js ***!
  \*********************************************************/
/*! exports provided: isRepeatSpec, isLayerRepeatSpec */
/***/ (function(module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"isRepeatSpec\", function() { return isRepeatSpec; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"isLayerRepeatSpec\", function() { return isLayerRepeatSpec; });\n/* harmony import */ var vega_util__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! vega-util */ \"./node_modules/vega-lite/node_modules/vega-util/build/vega-util.module.js\");\n\nfunction isRepeatSpec(spec) {\n    return 'repeat' in spec;\n}\nfunction isLayerRepeatSpec(spec) {\n    return !Object(vega_util__WEBPACK_IMPORTED_MODULE_0__[\"isArray\"])(spec.repeat) && spec.repeat['layer'];\n}\n//# sourceMappingURL=repeat.js.map//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvdmVnYS1saXRlL2J1aWxkL3NyYy9zcGVjL3JlcGVhdC5qcy5qcyIsInNvdXJjZXMiOlsid2VicGFjazovLy8uL25vZGVfbW9kdWxlcy92ZWdhLWxpdGUvYnVpbGQvc3JjL3NwZWMvcmVwZWF0LmpzP2Q3YTEiXSwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgaXNBcnJheSB9IGZyb20gJ3ZlZ2EtdXRpbCc7XG5leHBvcnQgZnVuY3Rpb24gaXNSZXBlYXRTcGVjKHNwZWMpIHtcbiAgICByZXR1cm4gJ3JlcGVhdCcgaW4gc3BlYztcbn1cbmV4cG9ydCBmdW5jdGlvbiBpc0xheWVyUmVwZWF0U3BlYyhzcGVjKSB7XG4gICAgcmV0dXJuICFpc0FycmF5KHNwZWMucmVwZWF0KSAmJiBzcGVjLnJlcGVhdFsnbGF5ZXInXTtcbn1cbi8vIyBzb3VyY2VNYXBwaW5nVVJMPXJlcGVhdC5qcy5tYXAiXSwibWFwcGluZ3MiOiJBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSIsInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///./node_modules/vega-lite/build/src/spec/repeat.js\n");

/***/ }),

/***/ "./node_modules/vega-lite/build/src/spec/toplevel.js":
/*!***********************************************************!*\
  !*** ./node_modules/vega-lite/build/src/spec/toplevel.js ***!
  \***********************************************************/
/*! exports provided: isFitType, getFitType, extractTopLevelProperties */
/***/ (function(module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"isFitType\", function() { return isFitType; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"getFitType\", function() { return getFitType; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"extractTopLevelProperties\", function() { return extractTopLevelProperties; });\n/* harmony import */ var _channel__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../channel */ \"./node_modules/vega-lite/build/src/channel.js\");\n/* harmony import */ var _compile_common__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../compile/common */ \"./node_modules/vega-lite/build/src/compile/common.js\");\n\n\nfunction isFitType(autoSizeType) {\n    return autoSizeType === 'fit' || autoSizeType === 'fit-x' || autoSizeType === 'fit-y';\n}\nfunction getFitType(sizeType) {\n    return sizeType ? `fit-${Object(_channel__WEBPACK_IMPORTED_MODULE_0__[\"getPositionScaleChannel\"])(sizeType)}` : 'fit';\n}\nconst TOP_LEVEL_PROPERTIES = [\n    'background',\n    'padding'\n    // We do not include \"autosize\" here as it is supported by only unit and layer specs and thus need to be normalized\n];\nfunction extractTopLevelProperties(t, includeParams) {\n    const o = {};\n    for (const p of TOP_LEVEL_PROPERTIES) {\n        if (t && t[p] !== undefined) {\n            o[p] = Object(_compile_common__WEBPACK_IMPORTED_MODULE_1__[\"signalRefOrValue\"])(t[p]);\n        }\n    }\n    if (includeParams) {\n        o.params = t.params;\n    }\n    return o;\n}\n//# sourceMappingURL=toplevel.js.map//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvdmVnYS1saXRlL2J1aWxkL3NyYy9zcGVjL3RvcGxldmVsLmpzLmpzIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL3ZlZ2EtbGl0ZS9idWlsZC9zcmMvc3BlYy90b3BsZXZlbC5qcz82M2JlIl0sInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IGdldFBvc2l0aW9uU2NhbGVDaGFubmVsIH0gZnJvbSAnLi4vY2hhbm5lbCc7XG5pbXBvcnQgeyBzaWduYWxSZWZPclZhbHVlIH0gZnJvbSAnLi4vY29tcGlsZS9jb21tb24nO1xuZXhwb3J0IGZ1bmN0aW9uIGlzRml0VHlwZShhdXRvU2l6ZVR5cGUpIHtcbiAgICByZXR1cm4gYXV0b1NpemVUeXBlID09PSAnZml0JyB8fCBhdXRvU2l6ZVR5cGUgPT09ICdmaXQteCcgfHwgYXV0b1NpemVUeXBlID09PSAnZml0LXknO1xufVxuZXhwb3J0IGZ1bmN0aW9uIGdldEZpdFR5cGUoc2l6ZVR5cGUpIHtcbiAgICByZXR1cm4gc2l6ZVR5cGUgPyBgZml0LSR7Z2V0UG9zaXRpb25TY2FsZUNoYW5uZWwoc2l6ZVR5cGUpfWAgOiAnZml0Jztcbn1cbmNvbnN0IFRPUF9MRVZFTF9QUk9QRVJUSUVTID0gW1xuICAgICdiYWNrZ3JvdW5kJyxcbiAgICAncGFkZGluZydcbiAgICAvLyBXZSBkbyBub3QgaW5jbHVkZSBcImF1dG9zaXplXCIgaGVyZSBhcyBpdCBpcyBzdXBwb3J0ZWQgYnkgb25seSB1bml0IGFuZCBsYXllciBzcGVjcyBhbmQgdGh1cyBuZWVkIHRvIGJlIG5vcm1hbGl6ZWRcbl07XG5leHBvcnQgZnVuY3Rpb24gZXh0cmFjdFRvcExldmVsUHJvcGVydGllcyh0LCBpbmNsdWRlUGFyYW1zKSB7XG4gICAgY29uc3QgbyA9IHt9O1xuICAgIGZvciAoY29uc3QgcCBvZiBUT1BfTEVWRUxfUFJPUEVSVElFUykge1xuICAgICAgICBpZiAodCAmJiB0W3BdICE9PSB1bmRlZmluZWQpIHtcbiAgICAgICAgICAgIG9bcF0gPSBzaWduYWxSZWZPclZhbHVlKHRbcF0pO1xuICAgICAgICB9XG4gICAgfVxuICAgIGlmIChpbmNsdWRlUGFyYW1zKSB7XG4gICAgICAgIG8ucGFyYW1zID0gdC5wYXJhbXM7XG4gICAgfVxuICAgIHJldHVybiBvO1xufVxuLy8jIHNvdXJjZU1hcHBpbmdVUkw9dG9wbGV2ZWwuanMubWFwIl0sIm1hcHBpbmdzIjoiQUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBIiwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///./node_modules/vega-lite/build/src/spec/toplevel.js\n");

/***/ }),

/***/ "./node_modules/vega-lite/build/src/spec/unit.js":
/*!*******************************************************!*\
  !*** ./node_modules/vega-lite/build/src/spec/unit.js ***!
  \*******************************************************/
/*! exports provided: isUnitSpec */
/***/ (function(module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"isUnitSpec\", function() { return isUnitSpec; });\nfunction isUnitSpec(spec) {\n    return 'mark' in spec;\n}\n//# sourceMappingURL=unit.js.map//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvdmVnYS1saXRlL2J1aWxkL3NyYy9zcGVjL3VuaXQuanMuanMiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvdmVnYS1saXRlL2J1aWxkL3NyYy9zcGVjL3VuaXQuanM/OGRkNiJdLCJzb3VyY2VzQ29udGVudCI6WyJleHBvcnQgZnVuY3Rpb24gaXNVbml0U3BlYyhzcGVjKSB7XG4gICAgcmV0dXJuICdtYXJrJyBpbiBzcGVjO1xufVxuLy8jIHNvdXJjZU1hcHBpbmdVUkw9dW5pdC5qcy5tYXAiXSwibWFwcGluZ3MiOiJBQUFBO0FBQUE7QUFBQTtBQUNBO0FBQ0E7QUFDQSIsInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///./node_modules/vega-lite/build/src/spec/unit.js\n");

/***/ }),

/***/ "./node_modules/vega-lite/build/src/stack.js":
/*!***************************************************!*\
  !*** ./node_modules/vega-lite/build/src/stack.js ***!
  \***************************************************/
/*! exports provided: isStackOffset, STACKABLE_MARKS, STACK_BY_DEFAULT_MARKS, stack */
/***/ (function(module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"isStackOffset\", function() { return isStackOffset; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"STACKABLE_MARKS\", function() { return STACKABLE_MARKS; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"STACK_BY_DEFAULT_MARKS\", function() { return STACK_BY_DEFAULT_MARKS; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"stack\", function() { return stack; });\n/* harmony import */ var vega_util__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! vega-util */ \"./node_modules/vega-lite/node_modules/vega-util/build/vega-util.module.js\");\n/* harmony import */ var _aggregate__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./aggregate */ \"./node_modules/vega-lite/build/src/aggregate.js\");\n/* harmony import */ var _channel__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./channel */ \"./node_modules/vega-lite/build/src/channel.js\");\n/* harmony import */ var _channeldef__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ./channeldef */ \"./node_modules/vega-lite/build/src/channeldef.js\");\n/* harmony import */ var _encoding__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ./encoding */ \"./node_modules/vega-lite/build/src/encoding.js\");\n/* harmony import */ var _log__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! ./log */ \"./node_modules/vega-lite/build/src/log/index.js\");\n/* harmony import */ var _mark__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! ./mark */ \"./node_modules/vega-lite/build/src/mark.js\");\n/* harmony import */ var _scale__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! ./scale */ \"./node_modules/vega-lite/build/src/scale.js\");\n/* harmony import */ var _util__WEBPACK_IMPORTED_MODULE_8__ = __webpack_require__(/*! ./util */ \"./node_modules/vega-lite/build/src/util.js\");\n\n\n\n\n\n\n\n\n\nconst STACK_OFFSET_INDEX = {\n    zero: 1,\n    center: 1,\n    normalize: 1\n};\nfunction isStackOffset(s) {\n    return s in STACK_OFFSET_INDEX;\n}\nconst STACKABLE_MARKS = new Set([_mark__WEBPACK_IMPORTED_MODULE_6__[\"ARC\"], _mark__WEBPACK_IMPORTED_MODULE_6__[\"BAR\"], _mark__WEBPACK_IMPORTED_MODULE_6__[\"AREA\"], _mark__WEBPACK_IMPORTED_MODULE_6__[\"RULE\"], _mark__WEBPACK_IMPORTED_MODULE_6__[\"POINT\"], _mark__WEBPACK_IMPORTED_MODULE_6__[\"CIRCLE\"], _mark__WEBPACK_IMPORTED_MODULE_6__[\"SQUARE\"], _mark__WEBPACK_IMPORTED_MODULE_6__[\"LINE\"], _mark__WEBPACK_IMPORTED_MODULE_6__[\"TEXT\"], _mark__WEBPACK_IMPORTED_MODULE_6__[\"TICK\"]]);\nconst STACK_BY_DEFAULT_MARKS = new Set([_mark__WEBPACK_IMPORTED_MODULE_6__[\"BAR\"], _mark__WEBPACK_IMPORTED_MODULE_6__[\"AREA\"], _mark__WEBPACK_IMPORTED_MODULE_6__[\"ARC\"]]);\nfunction potentialStackedChannel(encoding, x) {\n    var _a, _b;\n    const y = x === 'x' ? 'y' : 'radius';\n    const xDef = encoding[x];\n    const yDef = encoding[y];\n    if (Object(_channeldef__WEBPACK_IMPORTED_MODULE_3__[\"isFieldDef\"])(xDef) && Object(_channeldef__WEBPACK_IMPORTED_MODULE_3__[\"isFieldDef\"])(yDef)) {\n        if (Object(_channeldef__WEBPACK_IMPORTED_MODULE_3__[\"channelDefType\"])(xDef) === 'quantitative' && Object(_channeldef__WEBPACK_IMPORTED_MODULE_3__[\"channelDefType\"])(yDef) === 'quantitative') {\n            if (xDef.stack) {\n                return x;\n            }\n            else if (yDef.stack) {\n                return y;\n            }\n            const xAggregate = Object(_channeldef__WEBPACK_IMPORTED_MODULE_3__[\"isFieldDef\"])(xDef) && !!xDef.aggregate;\n            const yAggregate = Object(_channeldef__WEBPACK_IMPORTED_MODULE_3__[\"isFieldDef\"])(yDef) && !!yDef.aggregate;\n            // if there is no explicit stacking, only apply stack if there is only one aggregate for x or y\n            if (xAggregate !== yAggregate) {\n                return xAggregate ? x : y;\n            }\n            else {\n                const xScale = (_a = xDef.scale) === null || _a === void 0 ? void 0 : _a.type;\n                const yScale = (_b = yDef.scale) === null || _b === void 0 ? void 0 : _b.type;\n                if (xScale && xScale !== 'linear') {\n                    return y;\n                }\n                else if (yScale && yScale !== 'linear') {\n                    return x;\n                }\n            }\n        }\n        else if (Object(_channeldef__WEBPACK_IMPORTED_MODULE_3__[\"channelDefType\"])(xDef) === 'quantitative') {\n            return x;\n        }\n        else if (Object(_channeldef__WEBPACK_IMPORTED_MODULE_3__[\"channelDefType\"])(yDef) === 'quantitative') {\n            return y;\n        }\n    }\n    else if (Object(_channeldef__WEBPACK_IMPORTED_MODULE_3__[\"channelDefType\"])(xDef) === 'quantitative') {\n        return x;\n    }\n    else if (Object(_channeldef__WEBPACK_IMPORTED_MODULE_3__[\"channelDefType\"])(yDef) === 'quantitative') {\n        return y;\n    }\n    return undefined;\n}\nfunction getDimensionChannel(channel) {\n    switch (channel) {\n        case 'x':\n            return 'y';\n        case 'y':\n            return 'x';\n        case 'theta':\n            return 'radius';\n        case 'radius':\n            return 'theta';\n    }\n}\n// Note: CompassQL uses this method and only pass in required properties of each argument object.\n// If required properties change, make sure to update CompassQL.\nfunction stack(m, encoding, opt = {}) {\n    const mark = Object(_mark__WEBPACK_IMPORTED_MODULE_6__[\"isMarkDef\"])(m) ? m.type : m;\n    // Should have stackable mark\n    if (!STACKABLE_MARKS.has(mark)) {\n        return null;\n    }\n    // Run potential stacked twice, one for Cartesian and another for Polar,\n    // so text marks can be stacked in any of the coordinates.\n    // Note: The logic here is not perfectly correct.  If we want to support stacked dot plots where each dot is a pie chart with label, we have to change the stack logic here to separate Cartesian stacking for polar stacking.\n    // However, since we probably never want to do that, let's just note the limitation here.\n    const fieldChannel = potentialStackedChannel(encoding, 'x') || potentialStackedChannel(encoding, 'theta');\n    if (!fieldChannel) {\n        return null;\n    }\n    const stackedFieldDef = encoding[fieldChannel];\n    const stackedField = Object(_channeldef__WEBPACK_IMPORTED_MODULE_3__[\"isFieldDef\"])(stackedFieldDef) ? Object(_channeldef__WEBPACK_IMPORTED_MODULE_3__[\"vgField\"])(stackedFieldDef, {}) : undefined;\n    let dimensionChannel = getDimensionChannel(fieldChannel);\n    let dimensionDef = encoding[dimensionChannel];\n    let dimensionField = Object(_channeldef__WEBPACK_IMPORTED_MODULE_3__[\"isFieldDef\"])(dimensionDef) ? Object(_channeldef__WEBPACK_IMPORTED_MODULE_3__[\"vgField\"])(dimensionDef, {}) : undefined;\n    // avoid grouping by the stacked field\n    if (dimensionField === stackedField) {\n        dimensionField = undefined;\n        dimensionDef = undefined;\n        dimensionChannel = undefined;\n    }\n    // Should have grouping level of detail that is different from the dimension field\n    const stackBy = _channel__WEBPACK_IMPORTED_MODULE_2__[\"NONPOSITION_CHANNELS\"].reduce((sc, channel) => {\n        // Ignore tooltip in stackBy (https://github.com/vega/vega-lite/issues/4001)\n        if (channel !== 'tooltip' && Object(_encoding__WEBPACK_IMPORTED_MODULE_4__[\"channelHasField\"])(encoding, channel)) {\n            const channelDef = encoding[channel];\n            for (const cDef of Object(vega_util__WEBPACK_IMPORTED_MODULE_0__[\"array\"])(channelDef)) {\n                const fieldDef = Object(_channeldef__WEBPACK_IMPORTED_MODULE_3__[\"getFieldDef\"])(cDef);\n                if (fieldDef.aggregate) {\n                    continue;\n                }\n                // Check whether the channel's field is identical to x/y's field or if the channel is a repeat\n                const f = Object(_channeldef__WEBPACK_IMPORTED_MODULE_3__[\"vgField\"])(fieldDef, {});\n                if (\n                // if fielddef is a repeat, just include it in the stack by\n                !f ||\n                    // otherwise, the field must be different from x and y fields.\n                    f !== dimensionField) {\n                    sc.push({ channel, fieldDef });\n                }\n            }\n        }\n        return sc;\n    }, []);\n    // Automatically determine offset\n    let offset;\n    if (stackedFieldDef.stack !== undefined) {\n        if (Object(vega_util__WEBPACK_IMPORTED_MODULE_0__[\"isBoolean\"])(stackedFieldDef.stack)) {\n            offset = stackedFieldDef.stack ? 'zero' : null;\n        }\n        else {\n            offset = stackedFieldDef.stack;\n        }\n    }\n    else if (stackBy.length > 0 && STACK_BY_DEFAULT_MARKS.has(mark)) {\n        // Bar and Area with sum ops are automatically stacked by default\n        offset = 'zero';\n    }\n    if (!offset || !isStackOffset(offset)) {\n        return null;\n    }\n    if (Object(_encoding__WEBPACK_IMPORTED_MODULE_4__[\"isAggregate\"])(encoding) && stackBy.length === 0) {\n        return null;\n    }\n    // warn when stacking non-linear\n    if (stackedFieldDef.scale && stackedFieldDef.scale.type && stackedFieldDef.scale.type !== _scale__WEBPACK_IMPORTED_MODULE_7__[\"ScaleType\"].LINEAR) {\n        if (opt.disallowNonLinearStack) {\n            return null;\n        }\n        else {\n            _log__WEBPACK_IMPORTED_MODULE_5__[\"warn\"](_log__WEBPACK_IMPORTED_MODULE_5__[\"message\"].cannotStackNonLinearScale(stackedFieldDef.scale.type));\n        }\n    }\n    // Check if it is a ranged mark\n    if (Object(_channeldef__WEBPACK_IMPORTED_MODULE_3__[\"isFieldOrDatumDef\"])(encoding[Object(_channel__WEBPACK_IMPORTED_MODULE_2__[\"getSecondaryRangeChannel\"])(fieldChannel)])) {\n        if (stackedFieldDef.stack !== undefined) {\n            _log__WEBPACK_IMPORTED_MODULE_5__[\"warn\"](_log__WEBPACK_IMPORTED_MODULE_5__[\"message\"].cannotStackRangedMark(fieldChannel));\n        }\n        return null;\n    }\n    // Warn if stacking non-summative aggregate\n    if (Object(_channeldef__WEBPACK_IMPORTED_MODULE_3__[\"isFieldDef\"])(stackedFieldDef) && stackedFieldDef.aggregate && !Object(_util__WEBPACK_IMPORTED_MODULE_8__[\"contains\"])(_aggregate__WEBPACK_IMPORTED_MODULE_1__[\"SUM_OPS\"], stackedFieldDef.aggregate)) {\n        _log__WEBPACK_IMPORTED_MODULE_5__[\"warn\"](_log__WEBPACK_IMPORTED_MODULE_5__[\"message\"].stackNonSummativeAggregate(stackedFieldDef.aggregate));\n    }\n    return {\n        groupbyChannel: dimensionDef ? dimensionChannel : undefined,\n        groupbyField: dimensionField,\n        fieldChannel,\n        impute: stackedFieldDef.impute === null ? false : Object(_mark__WEBPACK_IMPORTED_MODULE_6__[\"isPathMark\"])(mark),\n        stackBy,\n        offset\n    };\n}\n//# sourceMappingURL=stack.js.map//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,[encoded data, 11284 characters]\n//# sourceURL=webpack-internal:///./node_modules/vega-lite/build/src/stack.js\n");

/***/ }),

/***/ "./node_modules/vega-lite/build/src/timeunit.js":
/*!******************************************************!*\
  !*** ./node_modules/vega-lite/build/src/timeunit.js ***!
  \******************************************************/
/*! exports provided: LOCAL_SINGLE_TIMEUNIT_INDEX, TIMEUNIT_PARTS, isLocalSingleTimeUnit, UTC_SINGLE_TIMEUNIT_INDEX, LOCAL_MULTI_TIMEUNIT_INDEX, UTC_MULTI_TIMEUNIT_INDEX, isUTCTimeUnit, getLocalTimeUnit, VEGALITE_TIMEFORMAT, getTimeUnitParts, containsTimeUnit, fieldExpr, timeUnitSpecifierExpression, formatExpression, normalizeTimeUnit, timeUnitToString */
/***/ (function(module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"LOCAL_SINGLE_TIMEUNIT_INDEX\", function() { return LOCAL_SINGLE_TIMEUNIT_INDEX; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"TIMEUNIT_PARTS\", function() { return TIMEUNIT_PARTS; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"isLocalSingleTimeUnit\", function() { return isLocalSingleTimeUnit; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"UTC_SINGLE_TIMEUNIT_INDEX\", function() { return UTC_SINGLE_TIMEUNIT_INDEX; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"LOCAL_MULTI_TIMEUNIT_INDEX\", function() { return LOCAL_MULTI_TIMEUNIT_INDEX; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"UTC_MULTI_TIMEUNIT_INDEX\", function() { return UTC_MULTI_TIMEUNIT_INDEX; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"isUTCTimeUnit\", function() { return isUTCTimeUnit; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"getLocalTimeUnit\", function() { return getLocalTimeUnit; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"VEGALITE_TIMEFORMAT\", function() { return VEGALITE_TIMEFORMAT; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"getTimeUnitParts\", function() { return getTimeUnitParts; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"containsTimeUnit\", function() { return containsTimeUnit; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"fieldExpr\", function() { return fieldExpr; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"timeUnitSpecifierExpression\", function() { return timeUnitSpecifierExpression; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"formatExpression\", function() { return formatExpression; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"normalizeTimeUnit\", function() { return normalizeTimeUnit; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"timeUnitToString\", function() { return timeUnitToString; });\n/* harmony import */ var fast_json_stable_stringify__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! fast-json-stable-stringify */ \"./node_modules/fast-json-stable-stringify/index.js\");\n/* harmony import */ var fast_json_stable_stringify__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(fast_json_stable_stringify__WEBPACK_IMPORTED_MODULE_0__);\n/* harmony import */ var vega_util__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! vega-util */ \"./node_modules/vega-lite/node_modules/vega-util/build/vega-util.module.js\");\n/* harmony import */ var _datetime__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./datetime */ \"./node_modules/vega-lite/build/src/datetime.js\");\n/* harmony import */ var _util__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ./util */ \"./node_modules/vega-lite/build/src/util.js\");\nvar __rest = (undefined && undefined.__rest) || function (s, e) {\n    var t = {};\n    for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0)\n        t[p] = s[p];\n    if (s != null && typeof Object.getOwnPropertySymbols === \"function\")\n        for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) {\n            if (e.indexOf(p[i]) < 0 && Object.prototype.propertyIsEnumerable.call(s, p[i]))\n                t[p[i]] = s[p[i]];\n        }\n    return t;\n};\n\n\n\n\n/** Time Unit that only corresponds to only one part of Date objects. */\nconst LOCAL_SINGLE_TIMEUNIT_INDEX = {\n    year: 1,\n    quarter: 1,\n    month: 1,\n    week: 1,\n    day: 1,\n    dayofyear: 1,\n    date: 1,\n    hours: 1,\n    minutes: 1,\n    seconds: 1,\n    milliseconds: 1\n};\nconst TIMEUNIT_PARTS = Object(_util__WEBPACK_IMPORTED_MODULE_3__[\"keys\"])(LOCAL_SINGLE_TIMEUNIT_INDEX);\nfunction isLocalSingleTimeUnit(timeUnit) {\n    return !!LOCAL_SINGLE_TIMEUNIT_INDEX[timeUnit];\n}\nconst UTC_SINGLE_TIMEUNIT_INDEX = {\n    utcyear: 1,\n    utcquarter: 1,\n    utcmonth: 1,\n    utcweek: 1,\n    utcday: 1,\n    utcdayofyear: 1,\n    utcdate: 1,\n    utchours: 1,\n    utcminutes: 1,\n    utcseconds: 1,\n    utcmilliseconds: 1\n};\nconst LOCAL_MULTI_TIMEUNIT_INDEX = {\n    yearquarter: 1,\n    yearquartermonth: 1,\n    yearmonth: 1,\n    yearmonthdate: 1,\n    yearmonthdatehours: 1,\n    yearmonthdatehoursminutes: 1,\n    yearmonthdatehoursminutesseconds: 1,\n    yearweek: 1,\n    yearweekday: 1,\n    yearweekdayhours: 1,\n    yearweekdayhoursminutes: 1,\n    yearweekdayhoursminutesseconds: 1,\n    yeardayofyear: 1,\n    quartermonth: 1,\n    monthdate: 1,\n    monthdatehours: 1,\n    monthdatehoursminutes: 1,\n    monthdatehoursminutesseconds: 1,\n    weekday: 1,\n    weeksdayhours: 1,\n    weekdayhoursminutes: 1,\n    weekdayhoursminutesseconds: 1,\n    dayhours: 1,\n    dayhoursminutes: 1,\n    dayhoursminutesseconds: 1,\n    hoursminutes: 1,\n    hoursminutesseconds: 1,\n    minutesseconds: 1,\n    secondsmilliseconds: 1\n};\nconst UTC_MULTI_TIMEUNIT_INDEX = {\n    utcyearquarter: 1,\n    utcyearquartermonth: 1,\n    utcyearmonth: 1,\n    utcyearmonthdate: 1,\n    utcyearmonthdatehours: 1,\n    utcyearmonthdatehoursminutes: 1,\n    utcyearmonthdatehoursminutesseconds: 1,\n    utcyearweek: 1,\n    utcyearweekday: 1,\n    utcyearweekdayhours: 1,\n    utcyearweekdayhoursminutes: 1,\n    utcyearweekdayhoursminutesseconds: 1,\n    utcyeardayofyear: 1,\n    utcquartermonth: 1,\n    utcmonthdate: 1,\n    utcmonthdatehours: 1,\n    utcmonthdatehoursminutes: 1,\n    utcmonthdatehoursminutesseconds: 1,\n    utcweekday: 1,\n    utcweeksdayhours: 1,\n    utcweekdayhoursminutes: 1,\n    utcweekdayhoursminutesseconds: 1,\n    utcdayhours: 1,\n    utcdayhoursminutes: 1,\n    utcdayhoursminutesseconds: 1,\n    utchoursminutes: 1,\n    utchoursminutesseconds: 1,\n    utcminutesseconds: 1,\n    utcsecondsmilliseconds: 1\n};\nfunction isUTCTimeUnit(t) {\n    return t.startsWith('utc');\n}\nfunction getLocalTimeUnit(t) {\n    return t.substr(3);\n}\n// In order of increasing specificity\nconst VEGALITE_TIMEFORMAT = {\n    'year-month': '%b %Y ',\n    'year-month-date': '%b %d, %Y '\n};\nfunction getTimeUnitParts(timeUnit) {\n    const parts = [];\n    for (const part of TIMEUNIT_PARTS) {\n        if (containsTimeUnit(timeUnit, part)) {\n            parts.push(part);\n        }\n    }\n    return parts;\n}\n/** Returns true if fullTimeUnit contains the timeUnit, false otherwise. */\nfunction containsTimeUnit(fullTimeUnit, timeUnit) {\n    const index = fullTimeUnit.indexOf(timeUnit);\n    if (index < 0) {\n        return false;\n    }\n    // exclude milliseconds\n    if (index > 0 && timeUnit === 'seconds' && fullTimeUnit.charAt(index - 1) === 'i') {\n        return false;\n    }\n    // exclude dayofyear\n    if (fullTimeUnit.length > index + 3 && timeUnit === 'day' && fullTimeUnit.charAt(index + 3) === 'o') {\n        return false;\n    }\n    if (index > 0 && timeUnit === 'year' && fullTimeUnit.charAt(index - 1) === 'f') {\n        return false;\n    }\n    return true;\n}\n/**\n * Returns Vega expression for a given timeUnit and fieldRef\n */\nfunction fieldExpr(fullTimeUnit, field, { end } = { end: false }) {\n    const fieldRef = Object(_util__WEBPACK_IMPORTED_MODULE_3__[\"accessPathWithDatum\"])(field);\n    const utc = isUTCTimeUnit(fullTimeUnit) ? 'utc' : '';\n    function func(timeUnit) {\n        if (timeUnit === 'quarter') {\n            // quarter starting at 0 (0,3,6,9).\n            return `(${utc}quarter(${fieldRef})-1)`;\n        }\n        else {\n            return `${utc}${timeUnit}(${fieldRef})`;\n        }\n    }\n    let lastTimeUnit;\n    const dateExpr = {};\n    for (const part of TIMEUNIT_PARTS) {\n        if (containsTimeUnit(fullTimeUnit, part)) {\n            dateExpr[part] = func(part);\n            lastTimeUnit = part;\n        }\n    }\n    if (end) {\n        dateExpr[lastTimeUnit] += '+1';\n    }\n    return Object(_datetime__WEBPACK_IMPORTED_MODULE_2__[\"dateTimeExprToExpr\"])(dateExpr);\n}\nfunction timeUnitSpecifierExpression(timeUnit) {\n    if (!timeUnit) {\n        return undefined;\n    }\n    const timeUnitParts = getTimeUnitParts(timeUnit);\n    return `timeUnitSpecifier(${fast_json_stable_stringify__WEBPACK_IMPORTED_MODULE_0___default()(timeUnitParts)}, ${fast_json_stable_stringify__WEBPACK_IMPORTED_MODULE_0___default()(VEGALITE_TIMEFORMAT)})`;\n}\n/**\n * Returns the signal expression used for axis labels for a time unit.\n */\nfunction formatExpression(timeUnit, field, isUTCScale) {\n    if (!timeUnit) {\n        return undefined;\n    }\n    const expr = timeUnitSpecifierExpression(timeUnit);\n    // We only use utcFormat for utc scale\n    // For utc time units, the data is already converted as a part of timeUnit transform.\n    // Thus, utc time units should use timeFormat to avoid shifting the time twice.\n    const utc = isUTCScale || isUTCTimeUnit(timeUnit);\n    return `${utc ? 'utc' : 'time'}Format(${field}, ${expr})`;\n}\nfunction normalizeTimeUnit(timeUnit) {\n    if (!timeUnit) {\n        return undefined;\n    }\n    let params;\n    if (Object(vega_util__WEBPACK_IMPORTED_MODULE_1__[\"isString\"])(timeUnit)) {\n        params = {\n            unit: timeUnit\n        };\n    }\n    else if (Object(vega_util__WEBPACK_IMPORTED_MODULE_1__[\"isObject\"])(timeUnit)) {\n        params = Object.assign(Object.assign({}, timeUnit), (timeUnit.unit ? { unit: timeUnit.unit } : {}));\n    }\n    if (isUTCTimeUnit(params.unit)) {\n        params.utc = true;\n        params.unit = getLocalTimeUnit(params.unit);\n    }\n    return params;\n}\nfunction timeUnitToString(tu) {\n    const _a = normalizeTimeUnit(tu), { utc } = _a, rest = __rest(_a, [\"utc\"]);\n    if (rest.unit) {\n        return ((utc ? 'utc' : '') +\n            Object(_util__WEBPACK_IMPORTED_MODULE_3__[\"keys\"])(rest)\n                .map(p => Object(_util__WEBPACK_IMPORTED_MODULE_3__[\"varName\"])(`${p === 'unit' ? '' : `_${p}_`}${rest[p]}`))\n                .join(''));\n    }\n    else {\n        // when maxbins is specified instead of units\n        return ((utc ? 'utc' : '') +\n            'timeunit' +\n            Object(_util__WEBPACK_IMPORTED_MODULE_3__[\"keys\"])(rest)\n                .map(p => Object(_util__WEBPACK_IMPORTED_MODULE_3__[\"varName\"])(`_${p}_${rest[p]}`))\n                .join(''));\n    }\n}\n//# sourceMappingURL=timeunit.js.map//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,[encoded data, 11652 characters]\n//# sourceURL=webpack-internal:///./node_modules/vega-lite/build/src/timeunit.js\n");

/***/ }),

/***/ "./node_modules/vega-lite/build/src/title.js":
/*!***************************************************!*\
  !*** ./node_modules/vega-lite/build/src/title.js ***!
  \***************************************************/
/*! exports provided: extractTitleConfig, isText */
/***/ (function(module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"extractTitleConfig\", function() { return extractTitleConfig; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"isText\", function() { return isText; });\n/* harmony import */ var vega_util__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! vega-util */ \"./node_modules/vega-lite/node_modules/vega-util/build/vega-util.module.js\");\n/* harmony import */ var _util__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./util */ \"./node_modules/vega-lite/build/src/util.js\");\nvar __rest = (undefined && undefined.__rest) || function (s, e) {\n    var t = {};\n    for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0)\n        t[p] = s[p];\n    if (s != null && typeof Object.getOwnPropertySymbols === \"function\")\n        for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) {\n            if (e.indexOf(p[i]) < 0 && Object.prototype.propertyIsEnumerable.call(s, p[i]))\n                t[p[i]] = s[p[i]];\n        }\n    return t;\n};\n\n\nfunction extractTitleConfig(titleConfig) {\n    const { \n    // These are non-mark title config that need to be hardcoded\n    anchor, frame, offset, orient, \n    // color needs to be redirect to fill\n    color, \n    // subtitle properties\n    subtitleColor, subtitleFont, subtitleFontSize, subtitleFontStyle, subtitleFontWeight, subtitleLineHeight, subtitlePadding } = titleConfig, \n    // The rest are mark config.\n    rest = __rest(titleConfig, [\"anchor\", \"frame\", \"offset\", \"orient\", \"color\", \"subtitleColor\", \"subtitleFont\", \"subtitleFontSize\", \"subtitleFontStyle\", \"subtitleFontWeight\", \"subtitleLineHeight\", \"subtitlePadding\"]);\n    const titleMarkConfig = Object.assign(Object.assign({}, rest), (color ? { fill: color } : {}));\n    // These are non-mark title config that need to be hardcoded\n    const nonMark = Object.assign(Object.assign(Object.assign(Object.assign({}, (anchor ? { anchor } : {})), (frame ? { frame } : {})), (offset ? { offset } : {})), (orient ? { orient } : {}));\n    // subtitle part can stay in config.title since header titles do not use subtitle\n    const subtitle = Object.assign(Object.assign(Object.assign(Object.assign(Object.assign(Object.assign(Object.assign({}, (subtitleColor ? { subtitleColor } : {})), (subtitleFont ? { subtitleFont } : {})), (subtitleFontSize ? { subtitleFontSize } : {})), (subtitleFontStyle ? { subtitleFontStyle } : {})), (subtitleFontWeight ? { subtitleFontWeight } : {})), (subtitleLineHeight ? { subtitleLineHeight } : {})), (subtitlePadding ? { subtitlePadding } : {}));\n    const subtitleMarkConfig = Object(_util__WEBPACK_IMPORTED_MODULE_1__[\"pick\"])(titleMarkConfig, ['align', 'baseline', 'dx', 'dy', 'limit']);\n    return { titleMarkConfig, subtitleMarkConfig, nonMark, subtitle };\n}\nfunction isText(v) {\n    return Object(vega_util__WEBPACK_IMPORTED_MODULE_0__[\"isString\"])(v) || (Object(vega_util__WEBPACK_IMPORTED_MODULE_0__[\"isArray\"])(v) && Object(vega_util__WEBPACK_IMPORTED_MODULE_0__[\"isString\"])(v[0]));\n}\n//# sourceMappingURL=title.js.map//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvdmVnYS1saXRlL2J1aWxkL3NyYy90aXRsZS5qcy5qcyIsInNvdXJjZXMiOlsid2VicGFjazovLy8uL25vZGVfbW9kdWxlcy92ZWdhLWxpdGUvYnVpbGQvc3JjL3RpdGxlLmpzP2E5MTAiXSwic291cmNlc0NvbnRlbnQiOlsidmFyIF9fcmVzdCA9ICh0aGlzICYmIHRoaXMuX19yZXN0KSB8fCBmdW5jdGlvbiAocywgZSkge1xuICAgIHZhciB0ID0ge307XG4gICAgZm9yICh2YXIgcCBpbiBzKSBpZiAoT2JqZWN0LnByb3RvdHlwZS5oYXNPd25Qcm9wZXJ0eS5jYWxsKHMsIHApICYmIGUuaW5kZXhPZihwKSA8IDApXG4gICAgICAgIHRbcF0gPSBzW3BdO1xuICAgIGlmIChzICE9IG51bGwgJiYgdHlwZW9mIE9iamVjdC5nZXRPd25Qcm9wZXJ0eVN5bWJvbHMgPT09IFwiZnVuY3Rpb25cIilcbiAgICAgICAgZm9yICh2YXIgaSA9IDAsIHAgPSBPYmplY3QuZ2V0T3duUHJvcGVydHlTeW1ib2xzKHMpOyBpIDwgcC5sZW5ndGg7IGkrKykge1xuICAgICAgICAgICAgaWYgKGUuaW5kZXhPZihwW2ldKSA8IDAgJiYgT2JqZWN0LnByb3RvdHlwZS5wcm9wZXJ0eUlzRW51bWVyYWJsZS5jYWxsKHMsIHBbaV0pKVxuICAgICAgICAgICAgICAgIHRbcFtpXV0gPSBzW3BbaV1dO1xuICAgICAgICB9XG4gICAgcmV0dXJuIHQ7XG59O1xuaW1wb3J0IHsgaXNBcnJheSwgaXNTdHJpbmcgfSBmcm9tICd2ZWdhLXV0aWwnO1xuaW1wb3J0IHsgcGljayB9IGZyb20gJy4vdXRpbCc7XG5leHBvcnQgZnVuY3Rpb24gZXh0cmFjdFRpdGxlQ29uZmlnKHRpdGxlQ29uZmlnKSB7XG4gICAgY29uc3QgeyBcbiAgICAvLyBUaGVzZSBhcmUgbm9uLW1hcmsgdGl0bGUgY29uZmlnIHRoYXQgbmVlZCB0byBiZSBoYXJkY29kZWRcbiAgICBhbmNob3IsIGZyYW1lLCBvZmZzZXQsIG9yaWVudCwgXG4gICAgLy8gY29sb3IgbmVlZHMgdG8gYmUgcmVkaXJlY3QgdG8gZmlsbFxuICAgIGNvbG9yLCBcbiAgICAvLyBzdWJ0aXRsZSBwcm9wZXJ0aWVzXG4gICAgc3VidGl0bGVDb2xvciwgc3VidGl0bGVGb250LCBzdWJ0aXRsZUZvbnRTaXplLCBzdWJ0aXRsZUZvbnRTdHlsZSwgc3VidGl0bGVGb250V2VpZ2h0LCBzdWJ0aXRsZUxpbmVIZWlnaHQsIHN1YnRpdGxlUGFkZGluZyB9ID0gdGl0bGVDb25maWcsIFxuICAgIC8vIFRoZSByZXN0IGFyZSBtYXJrIGNvbmZpZy5cbiAgICByZXN0ID0gX19yZXN0KHRpdGxlQ29uZmlnLCBbXCJhbmNob3JcIiwgXCJmcmFtZVwiLCBcIm9mZnNldFwiLCBcIm9yaWVudFwiLCBcImNvbG9yXCIsIFwic3VidGl0bGVDb2xvclwiLCBcInN1YnRpdGxlRm9udFwiLCBcInN1YnRpdGxlRm9udFNpemVcIiwgXCJzdWJ0aXRsZUZvbnRTdHlsZVwiLCBcInN1YnRpdGxlRm9udFdlaWdodFwiLCBcInN1YnRpdGxlTGluZUhlaWdodFwiLCBcInN1YnRpdGxlUGFkZGluZ1wiXSk7XG4gICAgY29uc3QgdGl0bGVNYXJrQ29uZmlnID0gT2JqZWN0LmFzc2lnbihPYmplY3QuYXNzaWduKHt9LCByZXN0KSwgKGNvbG9yID8geyBmaWxsOiBjb2xvciB9IDoge30pKTtcbiAgICAvLyBUaGVzZSBhcmUgbm9uLW1hcmsgdGl0bGUgY29uZmlnIHRoYXQgbmVlZCB0byBiZSBoYXJkY29kZWRcbiAgICBjb25zdCBub25NYXJrID0gT2JqZWN0LmFzc2lnbihPYmplY3QuYXNzaWduKE9iamVjdC5hc3NpZ24oT2JqZWN0LmFzc2lnbih7fSwgKGFuY2hvciA/IHsgYW5jaG9yIH0gOiB7fSkpLCAoZnJhbWUgPyB7IGZyYW1lIH0gOiB7fSkpLCAob2Zmc2V0ID8geyBvZmZzZXQgfSA6IHt9KSksIChvcmllbnQgPyB7IG9yaWVudCB9IDoge30pKTtcbiAgICAvLyBzdWJ0aXRsZSBwYXJ0IGNhbiBzdGF5IGluIGNvbmZpZy50aXRsZSBzaW5jZSBoZWFkZXIgdGl0bGVzIGRvIG5vdCB1c2Ugc3VidGl0bGVcbiAgICBjb25zdCBzdWJ0aXRsZSA9IE9iamVjdC5hc3NpZ24oT2JqZWN0LmFzc2lnbihPYmplY3QuYXNzaWduKE9iamVjdC5hc3NpZ24oT2JqZWN0LmFzc2lnbihPYmplY3QuYXNzaWduKE9iamVjdC5hc3NpZ24oe30sIChzdWJ0aXRsZUNvbG9yID8geyBzdWJ0aXRsZUNvbG9yIH0gOiB7fSkpLCAoc3VidGl0bGVGb250ID8geyBzdWJ0aXRsZUZvbnQgfSA6IHt9KSksIChzdWJ0aXRsZUZvbnRTaXplID8geyBzdWJ0aXRsZUZvbnRTaXplIH0gOiB7fSkpLCAoc3VidGl0bGVGb250U3R5bGUgPyB7IHN1YnRpdGxlRm9udFN0eWxlIH0gOiB7fSkpLCAoc3VidGl0bGVGb250V2VpZ2h0ID8geyBzdWJ0aXRsZUZvbnRXZWlnaHQgfSA6IHt9KSksIChzdWJ0aXRsZUxpbmVIZWlnaHQgPyB7IHN1YnRpdGxlTGluZUhlaWdodCB9IDoge30pKSwgKHN1YnRpdGxlUGFkZGluZyA/IHsgc3VidGl0bGVQYWRkaW5nIH0gOiB7fSkpO1xuICAgIGNvbnN0IHN1YnRpdGxlTWFya0NvbmZpZyA9IHBpY2sodGl0bGVNYXJrQ29uZmlnLCBbJ2FsaWduJywgJ2Jhc2VsaW5lJywgJ2R4JywgJ2R5JywgJ2xpbWl0J10pO1xuICAgIHJldHVybiB7IHRpdGxlTWFya0NvbmZpZywgc3VidGl0bGVNYXJrQ29uZmlnLCBub25NYXJrLCBzdWJ0aXRsZSB9O1xufVxuZXhwb3J0IGZ1bmN0aW9uIGlzVGV4dCh2KSB7XG4gICAgcmV0dXJuIGlzU3RyaW5nKHYpIHx8IChpc0FycmF5KHYpICYmIGlzU3RyaW5nKHZbMF0pKTtcbn1cbi8vIyBzb3VyY2VNYXBwaW5nVVJMPXRpdGxlLmpzLm1hcCJdLCJtYXBwaW5ncyI6IkFBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EiLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///./node_modules/vega-lite/build/src/title.js\n");

/***/ }),

/***/ "./node_modules/vega-lite/build/src/transform.js":
/*!*******************************************************!*\
  !*** ./node_modules/vega-lite/build/src/transform.js ***!
  \*******************************************************/
/*! exports provided: isFilter, isImputeSequence, isLookup, isLookupData, isLookupSelection, isPivot, isDensity, isQuantile, isRegression, isLoess, isSample, isWindow, isJoinAggregate, isFlatten, isCalculate, isBin, isImpute, isTimeUnit, isAggregate, isStack, isFold, normalizeTransform */
/***/ (function(module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"isFilter\", function() { return isFilter; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"isImputeSequence\", function() { return isImputeSequence; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"isLookup\", function() { return isLookup; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"isLookupData\", function() { return isLookupData; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"isLookupSelection\", function() { return isLookupSelection; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"isPivot\", function() { return isPivot; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"isDensity\", function() { return isDensity; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"isQuantile\", function() { return isQuantile; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"isRegression\", function() { return isRegression; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"isLoess\", function() { return isLoess; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"isSample\", function() { return isSample; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"isWindow\", function() { return isWindow; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"isJoinAggregate\", function() { return isJoinAggregate; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"isFlatten\", function() { return isFlatten; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"isCalculate\", function() { return isCalculate; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"isBin\", function() { return isBin; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"isImpute\", function() { return isImpute; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"isTimeUnit\", function() { return isTimeUnit; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"isAggregate\", function() { return isAggregate; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"isStack\", function() { return isStack; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"isFold\", function() { return isFold; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"normalizeTransform\", function() { return normalizeTransform; });\n/* harmony import */ var _logical__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./logical */ \"./node_modules/vega-lite/build/src/logical.js\");\n/* harmony import */ var _predicate__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./predicate */ \"./node_modules/vega-lite/build/src/predicate.js\");\n\n\nfunction isFilter(t) {\n    return 'filter' in t;\n}\nfunction isImputeSequence(t) {\n    return (t === null || t === void 0 ? void 0 : t['stop']) !== undefined;\n}\nfunction isLookup(t) {\n    return 'lookup' in t;\n}\nfunction isLookupData(from) {\n    return 'data' in from;\n}\nfunction isLookupSelection(from) {\n    return 'selection' in from;\n}\nfunction isPivot(t) {\n    return 'pivot' in t;\n}\nfunction isDensity(t) {\n    return 'density' in t;\n}\nfunction isQuantile(t) {\n    return 'quantile' in t;\n}\nfunction isRegression(t) {\n    return 'regression' in t;\n}\nfunction isLoess(t) {\n    return 'loess' in t;\n}\nfunction isSample(t) {\n    return 'sample' in t;\n}\nfunction isWindow(t) {\n    return 'window' in t;\n}\nfunction isJoinAggregate(t) {\n    return 'joinaggregate' in t;\n}\nfunction isFlatten(t) {\n    return 'flatten' in t;\n}\nfunction isCalculate(t) {\n    return 'calculate' in t;\n}\nfunction isBin(t) {\n    return 'bin' in t;\n}\nfunction isImpute(t) {\n    return 'impute' in t;\n}\nfunction isTimeUnit(t) {\n    return 'timeUnit' in t;\n}\nfunction isAggregate(t) {\n    return 'aggregate' in t;\n}\nfunction isStack(t) {\n    return 'stack' in t;\n}\nfunction isFold(t) {\n    return 'fold' in t;\n}\nfunction normalizeTransform(transform) {\n    return transform.map(t => {\n        if (isFilter(t)) {\n            return {\n                filter: Object(_logical__WEBPACK_IMPORTED_MODULE_0__[\"normalizeLogicalComposition\"])(t.filter, _predicate__WEBPACK_IMPORTED_MODULE_1__[\"normalizePredicate\"])\n            };\n        }\n        return t;\n    });\n}\n//# sourceMappingURL=transform.js.map//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvdmVnYS1saXRlL2J1aWxkL3NyYy90cmFuc2Zvcm0uanMuanMiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvdmVnYS1saXRlL2J1aWxkL3NyYy90cmFuc2Zvcm0uanM/ZDY2MiJdLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBub3JtYWxpemVMb2dpY2FsQ29tcG9zaXRpb24gfSBmcm9tICcuL2xvZ2ljYWwnO1xuaW1wb3J0IHsgbm9ybWFsaXplUHJlZGljYXRlIH0gZnJvbSAnLi9wcmVkaWNhdGUnO1xuZXhwb3J0IGZ1bmN0aW9uIGlzRmlsdGVyKHQpIHtcbiAgICByZXR1cm4gJ2ZpbHRlcicgaW4gdDtcbn1cbmV4cG9ydCBmdW5jdGlvbiBpc0ltcHV0ZVNlcXVlbmNlKHQpIHtcbiAgICByZXR1cm4gKHQgPT09IG51bGwgfHwgdCA9PT0gdm9pZCAwID8gdm9pZCAwIDogdFsnc3RvcCddKSAhPT0gdW5kZWZpbmVkO1xufVxuZXhwb3J0IGZ1bmN0aW9uIGlzTG9va3VwKHQpIHtcbiAgICByZXR1cm4gJ2xvb2t1cCcgaW4gdDtcbn1cbmV4cG9ydCBmdW5jdGlvbiBpc0xvb2t1cERhdGEoZnJvbSkge1xuICAgIHJldHVybiAnZGF0YScgaW4gZnJvbTtcbn1cbmV4cG9ydCBmdW5jdGlvbiBpc0xvb2t1cFNlbGVjdGlvbihmcm9tKSB7XG4gICAgcmV0dXJuICdzZWxlY3Rpb24nIGluIGZyb207XG59XG5leHBvcnQgZnVuY3Rpb24gaXNQaXZvdCh0KSB7XG4gICAgcmV0dXJuICdwaXZvdCcgaW4gdDtcbn1cbmV4cG9ydCBmdW5jdGlvbiBpc0RlbnNpdHkodCkge1xuICAgIHJldHVybiAnZGVuc2l0eScgaW4gdDtcbn1cbmV4cG9ydCBmdW5jdGlvbiBpc1F1YW50aWxlKHQpIHtcbiAgICByZXR1cm4gJ3F1YW50aWxlJyBpbiB0O1xufVxuZXhwb3J0IGZ1bmN0aW9uIGlzUmVncmVzc2lvbih0KSB7XG4gICAgcmV0dXJuICdyZWdyZXNzaW9uJyBpbiB0O1xufVxuZXhwb3J0IGZ1bmN0aW9uIGlzTG9lc3ModCkge1xuICAgIHJldHVybiAnbG9lc3MnIGluIHQ7XG59XG5leHBvcnQgZnVuY3Rpb24gaXNTYW1wbGUodCkge1xuICAgIHJldHVybiAnc2FtcGxlJyBpbiB0O1xufVxuZXhwb3J0IGZ1bmN0aW9uIGlzV2luZG93KHQpIHtcbiAgICByZXR1cm4gJ3dpbmRvdycgaW4gdDtcbn1cbmV4cG9ydCBmdW5jdGlvbiBpc0pvaW5BZ2dyZWdhdGUodCkge1xuICAgIHJldHVybiAnam9pbmFnZ3JlZ2F0ZScgaW4gdDtcbn1cbmV4cG9ydCBmdW5jdGlvbiBpc0ZsYXR0ZW4odCkge1xuICAgIHJldHVybiAnZmxhdHRlbicgaW4gdDtcbn1cbmV4cG9ydCBmdW5jdGlvbiBpc0NhbGN1bGF0ZSh0KSB7XG4gICAgcmV0dXJuICdjYWxjdWxhdGUnIGluIHQ7XG59XG5leHBvcnQgZnVuY3Rpb24gaXNCaW4odCkge1xuICAgIHJldHVybiAnYmluJyBpbiB0O1xufVxuZXhwb3J0IGZ1bmN0aW9uIGlzSW1wdXRlKHQpIHtcbiAgICByZXR1cm4gJ2ltcHV0ZScgaW4gdDtcbn1cbmV4cG9ydCBmdW5jdGlvbiBpc1RpbWVVbml0KHQpIHtcbiAgICByZXR1cm4gJ3RpbWVVbml0JyBpbiB0O1xufVxuZXhwb3J0IGZ1bmN0aW9uIGlzQWdncmVnYXRlKHQpIHtcbiAgICByZXR1cm4gJ2FnZ3JlZ2F0ZScgaW4gdDtcbn1cbmV4cG9ydCBmdW5jdGlvbiBpc1N0YWNrKHQpIHtcbiAgICByZXR1cm4gJ3N0YWNrJyBpbiB0O1xufVxuZXhwb3J0IGZ1bmN0aW9uIGlzRm9sZCh0KSB7XG4gICAgcmV0dXJuICdmb2xkJyBpbiB0O1xufVxuZXhwb3J0IGZ1bmN0aW9uIG5vcm1hbGl6ZVRyYW5zZm9ybSh0cmFuc2Zvcm0pIHtcbiAgICByZXR1cm4gdHJhbnNmb3JtLm1hcCh0ID0+IHtcbiAgICAgICAgaWYgKGlzRmlsdGVyKHQpKSB7XG4gICAgICAgICAgICByZXR1cm4ge1xuICAgICAgICAgICAgICAgIGZpbHRlcjogbm9ybWFsaXplTG9naWNhbENvbXBvc2l0aW9uKHQuZmlsdGVyLCBub3JtYWxpemVQcmVkaWNhdGUpXG4gICAgICAgICAgICB9O1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiB0O1xuICAgIH0pO1xufVxuLy8jIHNvdXJjZU1hcHBpbmdVUkw9dHJhbnNmb3JtLmpzLm1hcCJdLCJtYXBwaW5ncyI6IkFBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSIsInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///./node_modules/vega-lite/build/src/transform.js\n");

/***/ }),

/***/ "./node_modules/vega-lite/build/src/type.js":
/*!**************************************************!*\
  !*** ./node_modules/vega-lite/build/src/type.js ***!
  \**************************************************/
/*! exports provided: Type, isType, QUANTITATIVE, ORDINAL, TEMPORAL, NOMINAL, GEOJSON, TYPES, getFullName */
/***/ (function(module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"Type\", function() { return Type; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"isType\", function() { return isType; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"QUANTITATIVE\", function() { return QUANTITATIVE; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"ORDINAL\", function() { return ORDINAL; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"TEMPORAL\", function() { return TEMPORAL; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"NOMINAL\", function() { return NOMINAL; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"GEOJSON\", function() { return GEOJSON; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"TYPES\", function() { return TYPES; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"getFullName\", function() { return getFullName; });\n/* harmony import */ var _util__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./util */ \"./node_modules/vega-lite/build/src/util.js\");\n\n/**\n * Data type based on level of measurement\n */\nconst Type = {\n    quantitative: 'quantitative',\n    ordinal: 'ordinal',\n    temporal: 'temporal',\n    nominal: 'nominal',\n    geojson: 'geojson'\n};\nfunction isType(t) {\n    return t in Type;\n}\nconst QUANTITATIVE = Type.quantitative;\nconst ORDINAL = Type.ordinal;\nconst TEMPORAL = Type.temporal;\nconst NOMINAL = Type.nominal;\nconst GEOJSON = Type.geojson;\nconst TYPES = Object(_util__WEBPACK_IMPORTED_MODULE_0__[\"keys\"])(Type);\n/**\n * Get full, lowercase type name for a given type.\n * @param  type\n * @return Full type name.\n */\nfunction getFullName(type) {\n    if (type) {\n        type = type.toLowerCase();\n        switch (type) {\n            case 'q':\n            case QUANTITATIVE:\n                return 'quantitative';\n            case 't':\n            case TEMPORAL:\n                return 'temporal';\n            case 'o':\n            case ORDINAL:\n                return 'ordinal';\n            case 'n':\n            case NOMINAL:\n                return 'nominal';\n            case GEOJSON:\n                return 'geojson';\n        }\n    }\n    // If we get invalid input, return undefined type.\n    return undefined;\n}\n//# sourceMappingURL=type.js.map//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvdmVnYS1saXRlL2J1aWxkL3NyYy90eXBlLmpzLmpzIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL3ZlZ2EtbGl0ZS9idWlsZC9zcmMvdHlwZS5qcz83YzU2Il0sInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IGtleXMgfSBmcm9tICcuL3V0aWwnO1xuLyoqXG4gKiBEYXRhIHR5cGUgYmFzZWQgb24gbGV2ZWwgb2YgbWVhc3VyZW1lbnRcbiAqL1xuZXhwb3J0IGNvbnN0IFR5cGUgPSB7XG4gICAgcXVhbnRpdGF0aXZlOiAncXVhbnRpdGF0aXZlJyxcbiAgICBvcmRpbmFsOiAnb3JkaW5hbCcsXG4gICAgdGVtcG9yYWw6ICd0ZW1wb3JhbCcsXG4gICAgbm9taW5hbDogJ25vbWluYWwnLFxuICAgIGdlb2pzb246ICdnZW9qc29uJ1xufTtcbmV4cG9ydCBmdW5jdGlvbiBpc1R5cGUodCkge1xuICAgIHJldHVybiB0IGluIFR5cGU7XG59XG5leHBvcnQgY29uc3QgUVVBTlRJVEFUSVZFID0gVHlwZS5xdWFudGl0YXRpdmU7XG5leHBvcnQgY29uc3QgT1JESU5BTCA9IFR5cGUub3JkaW5hbDtcbmV4cG9ydCBjb25zdCBURU1QT1JBTCA9IFR5cGUudGVtcG9yYWw7XG5leHBvcnQgY29uc3QgTk9NSU5BTCA9IFR5cGUubm9taW5hbDtcbmV4cG9ydCBjb25zdCBHRU9KU09OID0gVHlwZS5nZW9qc29uO1xuZXhwb3J0IGNvbnN0IFRZUEVTID0ga2V5cyhUeXBlKTtcbi8qKlxuICogR2V0IGZ1bGwsIGxvd2VyY2FzZSB0eXBlIG5hbWUgZm9yIGEgZ2l2ZW4gdHlwZS5cbiAqIEBwYXJhbSAgdHlwZVxuICogQHJldHVybiBGdWxsIHR5cGUgbmFtZS5cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGdldEZ1bGxOYW1lKHR5cGUpIHtcbiAgICBpZiAodHlwZSkge1xuICAgICAgICB0eXBlID0gdHlwZS50b0xvd2VyQ2FzZSgpO1xuICAgICAgICBzd2l0Y2ggKHR5cGUpIHtcbiAgICAgICAgICAgIGNhc2UgJ3EnOlxuICAgICAgICAgICAgY2FzZSBRVUFOVElUQVRJVkU6XG4gICAgICAgICAgICAgICAgcmV0dXJuICdxdWFudGl0YXRpdmUnO1xuICAgICAgICAgICAgY2FzZSAndCc6XG4gICAgICAgICAgICBjYXNlIFRFTVBPUkFMOlxuICAgICAgICAgICAgICAgIHJldHVybiAndGVtcG9yYWwnO1xuICAgICAgICAgICAgY2FzZSAnbyc6XG4gICAgICAgICAgICBjYXNlIE9SRElOQUw6XG4gICAgICAgICAgICAgICAgcmV0dXJuICdvcmRpbmFsJztcbiAgICAgICAgICAgIGNhc2UgJ24nOlxuICAgICAgICAgICAgY2FzZSBOT01JTkFMOlxuICAgICAgICAgICAgICAgIHJldHVybiAnbm9taW5hbCc7XG4gICAgICAgICAgICBjYXNlIEdFT0pTT046XG4gICAgICAgICAgICAgICAgcmV0dXJuICdnZW9qc29uJztcbiAgICAgICAgfVxuICAgIH1cbiAgICAvLyBJZiB3ZSBnZXQgaW52YWxpZCBpbnB1dCwgcmV0dXJuIHVuZGVmaW5lZCB0eXBlLlxuICAgIHJldHVybiB1bmRlZmluZWQ7XG59XG4vLyMgc291cmNlTWFwcGluZ1VSTD10eXBlLmpzLm1hcCJdLCJtYXBwaW5ncyI6IkFBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBIiwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///./node_modules/vega-lite/build/src/type.js\n");

/***/ }),

/***/ "./node_modules/vega-lite/build/src/util.js":
/*!**************************************************!*\
  !*** ./node_modules/vega-lite/build/src/util.js ***!
  \**************************************************/
/*! exports provided: deepEqual, duplicate, pick, omit, stringify, hash, isNullOrFalse, contains, some, every, mergeDeep, unique, isEqual, setEqual, hasIntersection, prefixGenerator, fieldIntersection, isEmpty, keys, vals, entries, isBoolean, varName, logicalExpr, deleteNestedProperty, titleCase, accessPathWithDatum, flatAccessWithDatum, replacePathInField, replaceAll, removePathFromField, accessPathDepth, getFirstDefined, uniqueId, resetIdCounter, internalField, isInternalField, normalizeAngle, isNumeric */
/***/ (function(module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"deepEqual\", function() { return deepEqual; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"duplicate\", function() { return duplicate; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"pick\", function() { return pick; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"omit\", function() { return omit; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"stringify\", function() { return stringify; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"hash\", function() { return hash; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"isNullOrFalse\", function() { return isNullOrFalse; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"contains\", function() { return contains; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"some\", function() { return some; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"every\", function() { return every; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"mergeDeep\", function() { return mergeDeep; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"unique\", function() { return unique; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"isEqual\", function() { return isEqual; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"setEqual\", function() { return setEqual; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"hasIntersection\", function() { return hasIntersection; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"prefixGenerator\", function() { return prefixGenerator; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"fieldIntersection\", function() { return fieldIntersection; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"isEmpty\", function() { return isEmpty; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"keys\", function() { return keys; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"vals\", function() { return vals; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"entries\", function() { return entries; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"isBoolean\", function() { return isBoolean; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"varName\", function() { return varName; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"logicalExpr\", function() { return logicalExpr; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"deleteNestedProperty\", function() { return deleteNestedProperty; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"titleCase\", function() { return titleCase; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"accessPathWithDatum\", function() { return accessPathWithDatum; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"flatAccessWithDatum\", function() { return flatAccessWithDatum; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"replacePathInField\", function() { return replacePathInField; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"replaceAll\", function() { return replaceAll; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"removePathFromField\", function() { return removePathFromField; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"accessPathDepth\", function() { return accessPathDepth; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"getFirstDefined\", function() { return getFirstDefined; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"uniqueId\", function() { return uniqueId; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"resetIdCounter\", function() { return resetIdCounter; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"internalField\", function() { return internalField; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"isInternalField\", function() { return isInternalField; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"normalizeAngle\", function() { return normalizeAngle; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"isNumeric\", function() { return isNumeric; });\n/* harmony import */ var array_flat_polyfill__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! array-flat-polyfill */ \"./node_modules/array-flat-polyfill/index.mjs\");\n/* harmony import */ var clone__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! clone */ \"./node_modules/clone/clone.js\");\n/* harmony import */ var clone__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(clone__WEBPACK_IMPORTED_MODULE_1__);\n/* harmony import */ var fast_deep_equal__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! fast-deep-equal */ \"./node_modules/fast-deep-equal/index.js\");\n/* harmony import */ var fast_deep_equal__WEBPACK_IMPORTED_MODULE_2___default = /*#__PURE__*/__webpack_require__.n(fast_deep_equal__WEBPACK_IMPORTED_MODULE_2__);\n/* harmony import */ var fast_json_stable_stringify__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! fast-json-stable-stringify */ \"./node_modules/fast-json-stable-stringify/index.js\");\n/* harmony import */ var fast_json_stable_stringify__WEBPACK_IMPORTED_MODULE_3___default = /*#__PURE__*/__webpack_require__.n(fast_json_stable_stringify__WEBPACK_IMPORTED_MODULE_3__);\n/* harmony import */ var vega_util__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! vega-util */ \"./node_modules/vega-lite/node_modules/vega-util/build/vega-util.module.js\");\n/* harmony import */ var _logical__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! ./logical */ \"./node_modules/vega-lite/build/src/logical.js\");\n\n\n\n\n\n\nconst deepEqual = fast_deep_equal__WEBPACK_IMPORTED_MODULE_2___default.a;\nconst duplicate = clone__WEBPACK_IMPORTED_MODULE_1___default.a;\n/**\n * Creates an object composed of the picked object properties.\n *\n * var object = {'a': 1, 'b': '2', 'c': 3};\n * pick(object, ['a', 'c']);\n * // → {'a': 1, 'c': 3}\n */\n// eslint-disable-next-line @typescript-eslint/ban-types\nfunction pick(obj, props) {\n    const copy = {};\n    for (const prop of props) {\n        if (Object(vega_util__WEBPACK_IMPORTED_MODULE_4__[\"hasOwnProperty\"])(obj, prop)) {\n            copy[prop] = obj[prop];\n        }\n    }\n    return copy;\n}\n/**\n * The opposite of _.pick; this method creates an object composed of the own\n * and inherited enumerable string keyed properties of object that are not omitted.\n */\n// eslint-disable-next-line @typescript-eslint/ban-types\nfunction omit(obj, props) {\n    const copy = Object.assign({}, obj);\n    for (const prop of props) {\n        delete copy[prop];\n    }\n    return copy;\n}\n/**\n * Monkey patch Set so that `stringify` produces a string representation of sets.\n */\nSet.prototype['toJSON'] = function () {\n    return `Set(${[...this].map(x => fast_json_stable_stringify__WEBPACK_IMPORTED_MODULE_3___default()(x)).join(',')})`;\n};\n/**\n * Converts any object to a string representation that can be consumed by humans.\n */\nconst stringify = fast_json_stable_stringify__WEBPACK_IMPORTED_MODULE_3___default.a;\n/**\n * Converts any object to a string of limited size, or a number.\n */\nfunction hash(a) {\n    if (Object(vega_util__WEBPACK_IMPORTED_MODULE_4__[\"isNumber\"])(a)) {\n        return a;\n    }\n    const str = Object(vega_util__WEBPACK_IMPORTED_MODULE_4__[\"isString\"])(a) ? a : fast_json_stable_stringify__WEBPACK_IMPORTED_MODULE_3___default()(a);\n    // short strings can be used as hash directly, longer strings are hashed to reduce memory usage\n    if (str.length < 250) {\n        return str;\n    }\n    // from http://werxltd.com/wp/2010/05/13/javascript-implementation-of-javas-string-hashcode-method/\n    let h = 0;\n    for (let i = 0; i < str.length; i++) {\n        const char = str.charCodeAt(i);\n        h = (h << 5) - h + char;\n        h = h & h; // Convert to 32bit integer\n    }\n    return h;\n}\nfunction isNullOrFalse(x) {\n    return x === false || x === null;\n}\nfunction contains(array, item) {\n    return array.indexOf(item) > -1;\n}\n/**\n * Returns true if any item returns true.\n */\nfunction some(arr, f) {\n    let i = 0;\n    for (const [k, a] of arr.entries()) {\n        if (f(a, k, i++)) {\n            return true;\n        }\n    }\n    return false;\n}\n/**\n * Returns true if all items return true.\n */\nfunction every(arr, f) {\n    let i = 0;\n    for (const [k, a] of arr.entries()) {\n        if (!f(a, k, i++)) {\n            return false;\n        }\n    }\n    return true;\n}\n/**\n * recursively merges src into dest\n */\nfunction mergeDeep(dest, ...src) {\n    for (const s of src) {\n        deepMerge_(dest, s !== null && s !== void 0 ? s : {});\n    }\n    return dest;\n}\nfunction deepMerge_(dest, src) {\n    for (const property of keys(src)) {\n        Object(vega_util__WEBPACK_IMPORTED_MODULE_4__[\"writeConfig\"])(dest, property, src[property], true);\n    }\n}\nfunction unique(values, f) {\n    const results = [];\n    const u = {};\n    let v;\n    for (const val of values) {\n        v = f(val);\n        if (v in u) {\n            continue;\n        }\n        u[v] = 1;\n        results.push(val);\n    }\n    return results;\n}\n/**\n * Returns true if the two dictionaries disagree. Applies only to defined values.\n */\nfunction isEqual(dict, other) {\n    const dictKeys = keys(dict);\n    const otherKeys = keys(other);\n    if (dictKeys.length !== otherKeys.length) {\n        return false;\n    }\n    for (const key of dictKeys) {\n        if (dict[key] !== other[key]) {\n            return false;\n        }\n    }\n    return true;\n}\nfunction setEqual(a, b) {\n    if (a.size !== b.size) {\n        return false;\n    }\n    for (const e of a) {\n        if (!b.has(e)) {\n            return false;\n        }\n    }\n    return true;\n}\nfunction hasIntersection(a, b) {\n    for (const key of a) {\n        if (b.has(key)) {\n            return true;\n        }\n    }\n    return false;\n}\nfunction prefixGenerator(a) {\n    const prefixes = new Set();\n    for (const x of a) {\n        const splitField = Object(vega_util__WEBPACK_IMPORTED_MODULE_4__[\"splitAccessPath\"])(x);\n        // Wrap every element other than the first in `[]`\n        const wrappedWithAccessors = splitField.map((y, i) => (i === 0 ? y : `[${y}]`));\n        const computedPrefixes = wrappedWithAccessors.map((_, i) => wrappedWithAccessors.slice(0, i + 1).join(''));\n        for (const y of computedPrefixes) {\n            prefixes.add(y);\n        }\n    }\n    return prefixes;\n}\n/**\n * Returns true if a and b have an intersection. Also return true if a or b are undefined\n * since this means we don't know what fields a node produces or depends on.\n */\nfunction fieldIntersection(a, b) {\n    if (a === undefined || b === undefined) {\n        return true;\n    }\n    return hasIntersection(prefixGenerator(a), prefixGenerator(b));\n}\n// eslint-disable-next-line @typescript-eslint/ban-types\nfunction isEmpty(obj) {\n    return keys(obj).length === 0;\n}\n// This is a stricter version of Object.keys but with better types. See https://github.com/Microsoft/TypeScript/pull/12253#issuecomment-263132208\nconst keys = Object.keys;\nconst vals = Object.values;\nconst entries = Object.entries;\nfunction isBoolean(b) {\n    return b === true || b === false;\n}\n/**\n * Convert a string into a valid variable name\n */\nfunction varName(s) {\n    // Replace non-alphanumeric characters (anything besides a-zA-Z0-9_) with _\n    const alphanumericS = s.replace(/\\W/g, '_');\n    // Add _ if the string has leading numbers.\n    return (s.match(/^\\d+/) ? '_' : '') + alphanumericS;\n}\nfunction logicalExpr(op, cb) {\n    if (Object(_logical__WEBPACK_IMPORTED_MODULE_5__[\"isLogicalNot\"])(op)) {\n        return '!(' + logicalExpr(op.not, cb) + ')';\n    }\n    else if (Object(_logical__WEBPACK_IMPORTED_MODULE_5__[\"isLogicalAnd\"])(op)) {\n        return '(' + op.and.map((and) => logicalExpr(and, cb)).join(') && (') + ')';\n    }\n    else if (Object(_logical__WEBPACK_IMPORTED_MODULE_5__[\"isLogicalOr\"])(op)) {\n        return '(' + op.or.map((or) => logicalExpr(or, cb)).join(') || (') + ')';\n    }\n    else {\n        return cb(op);\n    }\n}\n/**\n * Delete nested property of an object, and delete the ancestors of the property if they become empty.\n */\nfunction deleteNestedProperty(obj, orderedProps) {\n    if (orderedProps.length === 0) {\n        return true;\n    }\n    const prop = orderedProps.shift(); // eslint-disable-line @typescript-eslint/no-non-null-assertion\n    if (prop in obj && deleteNestedProperty(obj[prop], orderedProps)) {\n        delete obj[prop];\n    }\n    return isEmpty(obj);\n}\nfunction titleCase(s) {\n    return s.charAt(0).toUpperCase() + s.substr(1);\n}\n/**\n * Converts a path to an access path with datum.\n * @param path The field name.\n * @param datum The string to use for `datum`.\n */\nfunction accessPathWithDatum(path, datum = 'datum') {\n    const pieces = Object(vega_util__WEBPACK_IMPORTED_MODULE_4__[\"splitAccessPath\"])(path);\n    const prefixes = [];\n    for (let i = 1; i <= pieces.length; i++) {\n        const prefix = `[${pieces.slice(0, i).map(vega_util__WEBPACK_IMPORTED_MODULE_4__[\"stringValue\"]).join('][')}]`;\n        prefixes.push(`${datum}${prefix}`);\n    }\n    return prefixes.join(' && ');\n}\n/**\n * Return access with datum to the flattened field.\n *\n * @param path The field name.\n * @param datum The string to use for `datum`.\n */\nfunction flatAccessWithDatum(path, datum = 'datum') {\n    return `${datum}[${Object(vega_util__WEBPACK_IMPORTED_MODULE_4__[\"stringValue\"])(Object(vega_util__WEBPACK_IMPORTED_MODULE_4__[\"splitAccessPath\"])(path).join('.'))}]`;\n}\nfunction escapePathAccess(string) {\n    return string.replace(/(\\[|\\]|\\.|'|\")/g, '\\\\$1');\n}\n/**\n * Replaces path accesses with access to non-nested field.\n * For example, `foo[\"bar\"].baz` becomes `foo\\\\.bar\\\\.baz`.\n */\nfunction replacePathInField(path) {\n    return `${Object(vega_util__WEBPACK_IMPORTED_MODULE_4__[\"splitAccessPath\"])(path).map(escapePathAccess).join('\\\\.')}`;\n}\n/**\n * Replace all occurrences of a string with another string.\n *\n * @param string the string to replace in\n * @param find the string to replace\n * @param replacement the replacement\n */\nfunction replaceAll(string, find, replacement) {\n    return string.replace(new RegExp(find.replace(/[-/\\\\^$*+?.()|[\\]{}]/g, '\\\\$&'), 'g'), replacement);\n}\n/**\n * Remove path accesses with access from field.\n * For example, `foo[\"bar\"].baz` becomes `foo.bar.baz`.\n */\nfunction removePathFromField(path) {\n    return `${Object(vega_util__WEBPACK_IMPORTED_MODULE_4__[\"splitAccessPath\"])(path).join('.')}`;\n}\n/**\n * Count the depth of the path. Returns 1 for fields that are not nested.\n */\nfunction accessPathDepth(path) {\n    if (!path) {\n        return 0;\n    }\n    return Object(vega_util__WEBPACK_IMPORTED_MODULE_4__[\"splitAccessPath\"])(path).length;\n}\n/**\n * This is a replacement for chained || for numeric properties or properties that respect null so that 0 will be included.\n */\nfunction getFirstDefined(...args) {\n    for (const arg of args) {\n        if (arg !== undefined) {\n            return arg;\n        }\n    }\n    return undefined;\n}\n// variable used to generate id\nlet idCounter = 42;\n/**\n * Returns a new random id every time it gets called.\n *\n * Has side effect!\n */\nfunction uniqueId(prefix) {\n    const id = ++idCounter;\n    return prefix ? String(prefix) + id : id;\n}\n/**\n * Resets the id counter used in uniqueId. This can be useful for testing.\n */\nfunction resetIdCounter() {\n    idCounter = 42;\n}\nfunction internalField(name) {\n    return isInternalField(name) ? name : `__${name}`;\n}\nfunction isInternalField(name) {\n    return name.indexOf('__') === 0;\n}\n/**\n * Normalize angle to be within [0,360).\n */\nfunction normalizeAngle(angle) {\n    if (angle === undefined) {\n        return undefined;\n    }\n    return ((angle % 360) + 360) % 360;\n}\n/**\n * Returns whether the passed in value is a valid number.\n */\nfunction isNumeric(value) {\n    if (Object(vega_util__WEBPACK_IMPORTED_MODULE_4__[\"isNumber\"])(value)) {\n        return true;\n    }\n    return !isNaN(value) && !isNaN(parseFloat(value));\n}\n//# sourceMappingURL=util.js.map//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,[encoded data, 16676 characters]\n//# sourceURL=webpack-internal:///./node_modules/vega-lite/build/src/util.js\n");

/***/ }),

/***/ "./node_modules/vega-lite/build/src/vega.schema.js":
/*!*********************************************************!*\
  !*** ./node_modules/vega-lite/build/src/vega.schema.js ***!
  \*********************************************************/
/*! exports provided: isSignalRef, isVgRangeStep, isDataRefUnionedDomain, isFieldRefUnionDomain, isDataRefDomain, VG_MARK_CONFIGS, VG_MARK_INDEX, VG_CORNERRADIUS_CHANNELS */
/***/ (function(module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"isSignalRef\", function() { return isSignalRef; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"isVgRangeStep\", function() { return isVgRangeStep; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"isDataRefUnionedDomain\", function() { return isDataRefUnionedDomain; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"isFieldRefUnionDomain\", function() { return isFieldRefUnionDomain; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"isDataRefDomain\", function() { return isDataRefDomain; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"VG_MARK_CONFIGS\", function() { return VG_MARK_CONFIGS; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"VG_MARK_INDEX\", function() { return VG_MARK_INDEX; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"VG_CORNERRADIUS_CHANNELS\", function() { return VG_CORNERRADIUS_CHANNELS; });\n/* harmony import */ var vega_util__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! vega-util */ \"./node_modules/vega-lite/node_modules/vega-util/build/vega-util.module.js\");\n/* harmony import */ var _util__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./util */ \"./node_modules/vega-lite/build/src/util.js\");\n\n\nfunction isSignalRef(o) {\n    return o && !!o['signal'];\n}\nfunction isVgRangeStep(range) {\n    return !!range['step'];\n}\nfunction isDataRefUnionedDomain(domain) {\n    if (!Object(vega_util__WEBPACK_IMPORTED_MODULE_0__[\"isArray\"])(domain)) {\n        return 'fields' in domain && !('data' in domain);\n    }\n    return false;\n}\nfunction isFieldRefUnionDomain(domain) {\n    if (!Object(vega_util__WEBPACK_IMPORTED_MODULE_0__[\"isArray\"])(domain)) {\n        return 'fields' in domain && 'data' in domain;\n    }\n    return false;\n}\nfunction isDataRefDomain(domain) {\n    if (!Object(vega_util__WEBPACK_IMPORTED_MODULE_0__[\"isArray\"])(domain)) {\n        return 'field' in domain && 'data' in domain;\n    }\n    return false;\n}\nconst VG_MARK_CONFIG_INDEX = {\n    aria: 1,\n    description: 1,\n    ariaRole: 1,\n    ariaRoleDescription: 1,\n    blend: 1,\n    opacity: 1,\n    fill: 1,\n    fillOpacity: 1,\n    stroke: 1,\n    strokeCap: 1,\n    strokeWidth: 1,\n    strokeOpacity: 1,\n    strokeDash: 1,\n    strokeDashOffset: 1,\n    strokeJoin: 1,\n    strokeOffset: 1,\n    strokeMiterLimit: 1,\n    startAngle: 1,\n    endAngle: 1,\n    padAngle: 1,\n    innerRadius: 1,\n    outerRadius: 1,\n    size: 1,\n    shape: 1,\n    interpolate: 1,\n    tension: 1,\n    orient: 1,\n    align: 1,\n    baseline: 1,\n    text: 1,\n    dir: 1,\n    dx: 1,\n    dy: 1,\n    ellipsis: 1,\n    limit: 1,\n    radius: 1,\n    theta: 1,\n    angle: 1,\n    font: 1,\n    fontSize: 1,\n    fontWeight: 1,\n    fontStyle: 1,\n    lineBreak: 1,\n    lineHeight: 1,\n    cursor: 1,\n    href: 1,\n    tooltip: 1,\n    cornerRadius: 1,\n    cornerRadiusTopLeft: 1,\n    cornerRadiusTopRight: 1,\n    cornerRadiusBottomLeft: 1,\n    cornerRadiusBottomRight: 1,\n    aspect: 1,\n    width: 1,\n    height: 1,\n    url: 1,\n    smooth: 1\n    // commented below are vg channel that do not have mark config.\n    // x: 1,\n    // y: 1,\n    // x2: 1,\n    // y2: 1,\n    // xc'|'yc'\n    // clip: 1,\n    // path: 1,\n    // url: 1,\n};\nconst VG_MARK_CONFIGS = Object(_util__WEBPACK_IMPORTED_MODULE_1__[\"keys\"])(VG_MARK_CONFIG_INDEX);\nconst VG_MARK_INDEX = {\n    arc: 1,\n    area: 1,\n    group: 1,\n    image: 1,\n    line: 1,\n    path: 1,\n    rect: 1,\n    rule: 1,\n    shape: 1,\n    symbol: 1,\n    text: 1,\n    trail: 1\n};\n// Vega's cornerRadius channels.\nconst VG_CORNERRADIUS_CHANNELS = [\n    'cornerRadius',\n    'cornerRadiusTopLeft',\n    'cornerRadiusTopRight',\n    'cornerRadiusBottomLeft',\n    'cornerRadiusBottomRight'\n];\n//# sourceMappingURL=vega.schema.js.map//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,[encoded data, 4496 characters]\n//# sourceURL=webpack-internal:///./node_modules/vega-lite/build/src/vega.schema.js\n");

/***/ }),

/***/ "./node_modules/vega-lite/build/vega-lite-schema.json":
/*!************************************************************!*\
  !*** ./node_modules/vega-lite/build/vega-lite-schema.json ***!
  \************************************************************/
/*! exports provided: $ref, $schema, definitions, default */
/***/ (function(module) {

eval("module.exports = JSON.parse(\"{\\\"$ref\\\":\\\"#/definitions/TopLevelSpec\\\",\\\"$schema\\\":\\\"http://json-schema.org/draft-07/schema#\\\",\\\"definitions\\\":{\\\"Aggregate\\\":{\\\"anyOf\\\":[{\\\"$ref\\\":\\\"#/definitions/NonArgAggregateOp\\\"},{\\\"$ref\\\":\\\"#/definitions/ArgmaxDef\\\"},{\\\"$ref\\\":\\\"#/definitions/ArgminDef\\\"}]},\\\"AggregateOp\\\":{\\\"enum\\\":[\\\"argmax\\\",\\\"argmin\\\",\\\"average\\\",\\\"count\\\",\\\"distinct\\\",\\\"max\\\",\\\"mean\\\",\\\"median\\\",\\\"min\\\",\\\"missing\\\",\\\"product\\\",\\\"q1\\\",\\\"q3\\\",\\\"ci0\\\",\\\"ci1\\\",\\\"stderr\\\",\\\"stdev\\\",\\\"stdevp\\\",\\\"sum\\\",\\\"valid\\\",\\\"values\\\",\\\"variance\\\",\\\"variancep\\\"],\\\"type\\\":\\\"string\\\"},\\\"AggregateTransform\\\":{\\\"additionalProperties\\\":false,\\\"properties\\\":{\\\"aggregate\\\":{\\\"description\\\":\\\"Array of objects that define fields to aggregate.\\\",\\\"items\\\":{\\\"$ref\\\":\\\"#/definitions/AggregatedFieldDef\\\"},\\\"type\\\":\\\"array\\\"},\\\"groupby\\\":{\\\"description\\\":\\\"The data fields to group by. If not specified, a single group containing all data objects will be used.\\\",\\\"items\\\":{\\\"$ref\\\":\\\"#/definitions/FieldName\\\"},\\\"type\\\":\\\"array\\\"}},\\\"required\\\":[\\\"aggregate\\\"],\\\"type\\\":\\\"object\\\"},\\\"AggregatedFieldDef\\\":{\\\"additionalProperties\\\":false,\\\"properties\\\":{\\\"as\\\":{\\\"$ref\\\":\\\"#/definitions/FieldName\\\",\\\"description\\\":\\\"The output field names to use for each aggregated field.\\\"},\\\"field\\\":{\\\"$ref\\\":\\\"#/definitions/FieldName\\\",\\\"description\\\":\\\"The data field for which to compute aggregate function. This is required for all aggregation operations except `\\\\\\\"count\\\\\\\"`.\\\"},\\\"op\\\":{\\\"$ref\\\":\\\"#/definitions/AggregateOp\\\",\\\"description\\\":\\\"The aggregation operation to apply to the fields (e.g., `\\\\\\\"sum\\\\\\\"`, `\\\\\\\"average\\\\\\\"`, or `\\\\\\\"count\\\\\\\"`). See the [full list of supported aggregation operations](https://vega.github.io/vega-lite/docs/aggregate.html#ops) for more information.\\\"}},\\\"required\\\":[\\\"op\\\",\\\"as\\\"],\\\"type\\\":\\\"object\\\"},\\\"Align\\\":{\\\"enum\\\":[\\\"left\\\",\\\"center\\\",\\\"right\\\"],\\\"type\\\":\\\"string\\\"},\\\"AllSortString\\\":{\\\"anyOf\\\":[{\\\"$ref\\\":\\\"#/definitions/SortOrder\\\"},{\\\"$ref\\\":\\\"#/definitions/SortByChannel\\\"},{\\\"$ref\\\":\\\"#/definitions/SortByChannelDesc\\\"}]},\\\"AnyMark\\\":{\\\"anyOf\\\":[{\\\"$ref\\\":\\\"#/definitions/CompositeMark\\\"},{\\\"$ref\\\":\\\"#/definitions/CompositeMarkDef\\\"},{\\\"$ref\\\":\\\"#/definitions/Mark\\\"},{\\\"$ref\\\":\\\"#/definitions/MarkDef\\\"}]},\\\"AnyMarkConfig\\\":{\\\"anyOf\\\":[{\\\"$ref\\\":\\\"#/definitions/MarkConfig<>\\\"},{\\\"$ref\\\":\\\"#/definitions/AreaConfig\\\"},{\\\"$ref\\\":\\\"#/definitions/BarConfig\\\"},{\\\"$ref\\\":\\\"#/definitions/RectConfig\\\"},{\\\"$ref\\\":\\\"#/definitions/LineConfig\\\"},{\\\"$ref\\\":\\\"#/definitions/TickConfig\\\"}]},\\\"AreaConfig\\\":{\\\"additionalProperties\\\":false,\\\"properties\\\":{\\\"align\\\":{\\\"anyOf\\\":[{\\\"$ref\\\":\\\"#/definitions/Align\\\"},{\\\"$ref\\\":\\\"#/definitions/ExprRef\\\"}],\\\"description\\\":\\\"The horizontal alignment of the text or ranged marks (area, bar, image, rect, rule). One of `\\\\\\\"left\\\\\\\"`, `\\\\\\\"right\\\\\\\"`, `\\\\\\\"center\\\\\\\"`.\\\\n\\\\n__Note:__ Expression reference is *not* supported for range marks.\\\"},\\\"angle\\\":{\\\"anyOf\\\":[{\\\"description\\\":\\\"The rotation angle of the text, in degrees.\\\",\\\"maximum\\\":360,\\\"minimum\\\":0,\\\"type\\\":\\\"number\\\"},{\\\"$ref\\\":\\\"#/definitions/ExprRef\\\"}]},\\\"aria\\\":{\\\"anyOf\\\":[{\\\"description\\\":\\\"A boolean flag indicating if [ARIA attributes](https://developer.mozilla.org/en-US/docs/Web/Accessibility/ARIA) should be included (SVG output only). If `false`, the \\\\\\\"aria-hidden\\\\\\\" attribute will be set on the output SVG element, removing the mark item from the ARIA accessibility tree.\\\",\\\"type\\\":\\\"boolean\\\"},{\\\"$ref\\\":\\\"#/definitions/ExprRef\\\"}]},\\\"ariaRole\\\":{\\\"anyOf\\\":[{\\\"description\\\":\\\"Sets the type of user interface element of the mark item for [ARIA accessibility](https://developer.mozilla.org/en-US/docs/Web/Accessibility/ARIA) (SVG output only). If specified, this property determines the \\\\\\\"role\\\\\\\" attribute. Warning: this property is experimental and may be changed in the future.\\\",\\\"type\\\":\\\"string\\\"},{\\\"$ref\\\":\\\"#/definitions/ExprRef\\\"}]},\\\"ariaRoleDescription\\\":{\\\"anyOf\\\":[{\\\"description\\\":\\\"A human-readable, author-localized description for the role of the mark item for [ARIA accessibility](https://developer.mozilla.org/en-US/docs/Web/Accessibility/ARIA) (SVG output only). If specified, this property determines the \\\\\\\"aria-roledescription\\\\\\\" attribute. Warning: this property is experimental and may be changed in the future.\\\",\\\"type\\\":\\\"string\\\"},{\\\"$ref\\\":\\\"#/definitions/ExprRef\\\"}]},\\\"aspect\\\":{\\\"anyOf\\\":[{\\\"description\\\":\\\"Whether to keep aspect ratio of image marks.\\\",\\\"type\\\":\\\"boolean\\\"},{\\\"$ref\\\":\\\"#/definitions/ExprRef\\\"}]},\\\"baseline\\\":{\\\"anyOf\\\":[{\\\"$ref\\\":\\\"#/definitions/TextBaseline\\\"},{\\\"$ref\\\":\\\"#/definitions/ExprRef\\\"}],\\\"description\\\":\\\"For text marks, the vertical text baseline. One of `\\\\\\\"alphabetic\\\\\\\"` (default), `\\\\\\\"top\\\\\\\"`, `\\\\\\\"middle\\\\\\\"`, `\\\\\\\"bottom\\\\\\\"`, `\\\\\\\"line-top\\\\\\\"`, `\\\\\\\"line-bottom\\\\\\\"`, or an expression reference that provides one of the valid values. The `\\\\\\\"line-top\\\\\\\"` and `\\\\\\\"line-bottom\\\\\\\"` values operate similarly to `\\\\\\\"top\\\\\\\"` and `\\\\\\\"bottom\\\\\\\"`, but are calculated relative to the `lineHeight` rather than `fontSize` alone.\\\\n\\\\nFor range marks, the vertical alignment of the marks. One of `\\\\\\\"top\\\\\\\"`, `\\\\\\\"middle\\\\\\\"`, `\\\\\\\"bottom\\\\\\\"`.\\\\n\\\\n__Note:__ Expression reference is *not* supported for range marks.\\\"},\\\"blend\\\":{\\\"anyOf\\\":[{\\\"$ref\\\":\\\"#/definitions/Blend\\\",\\\"description\\\":\\\"The color blend mode for drawing an item on its current background. Any valid [CSS mix-blend-mode](https://developer.mozilla.org/en-US/docs/Web/CSS/mix-blend-mode) value can be used.\\\\n\\\\n__Default value: `\\\\\\\"source-over\\\\\\\"`\\\"},{\\\"$ref\\\":\\\"#/definitions/ExprRef\\\"}]},\\\"color\\\":{\\\"anyOf\\\":[{\\\"$ref\\\":\\\"#/definitions/Color\\\"},{\\\"$ref\\\":\\\"#/definitions/Gradient\\\"},{\\\"$ref\\\":\\\"#/definitions/ExprRef\\\"}],\\\"description\\\":\\\"Default color.\\\\n\\\\n__Default value:__ <span style=\\\\\\\"color: #4682b4;\\\\\\\">&#9632;</span> `\\\\\\\"#4682b4\\\\\\\"`\\\\n\\\\n__Note:__ - This property cannot be used in a [style config](https://vega.github.io/vega-lite/docs/mark.html#style-config). - The `fill` and `stroke` properties have higher precedence than `color` and will override `color`.\\\"},\\\"cornerRadius\\\":{\\\"anyOf\\\":[{\\\"description\\\":\\\"The radius in pixels of rounded rectangles or arcs' corners.\\\\n\\\\n__Default value:__ `0`\\\",\\\"type\\\":\\\"number\\\"},{\\\"$ref\\\":\\\"#/definitions/ExprRef\\\"}]},\\\"cornerRadiusBottomLeft\\\":{\\\"anyOf\\\":[{\\\"description\\\":\\\"The radius in pixels of rounded rectangles' bottom left corner.\\\\n\\\\n__Default value:__ `0`\\\",\\\"type\\\":\\\"number\\\"},{\\\"$ref\\\":\\\"#/definitions/ExprRef\\\"}]},\\\"cornerRadiusBottomRight\\\":{\\\"anyOf\\\":[{\\\"description\\\":\\\"The radius in pixels of rounded rectangles' bottom right corner.\\\\n\\\\n__Default value:__ `0`\\\",\\\"type\\\":\\\"number\\\"},{\\\"$ref\\\":\\\"#/definitions/ExprRef\\\"}]},\\\"cornerRadiusTopLeft\\\":{\\\"anyOf\\\":[{\\\"description\\\":\\\"The radius in pixels of rounded rectangles' top right corner.\\\\n\\\\n__Default value:__ `0`\\\",\\\"type\\\":\\\"number\\\"},{\\\"$ref\\\":\\\"#/definitions/ExprRef\\\"}]},\\\"cornerRadiusTopRight\\\":{\\\"anyOf\\\":[{\\\"description\\\":\\\"The radius in pixels of rounded rectangles' top left corner.\\\\n\\\\n__Default value:__ `0`\\\",\\\"type\\\":\\\"number\\\"},{\\\"$ref\\\":\\\"#/definitions/ExprRef\\\"}]},\\\"cursor\\\":{\\\"anyOf\\\":[{\\\"$ref\\\":\\\"#/definitions/Cursor\\\",\\\"description\\\":\\\"The mouse cursor used over the mark. Any valid [CSS cursor type](https://developer.mozilla.org/en-US/docs/Web/CSS/cursor#Values) can be used.\\\"},{\\\"$ref\\\":\\\"#/definitions/ExprRef\\\"}]},\\\"description\\\":{\\\"anyOf\\\":[{\\\"description\\\":\\\"A text description of the mark item for [ARIA accessibility](https://developer.mozilla.org/en-US/docs/Web/Accessibility/ARIA) (SVG output only). If specified, this property determines the [\\\\\\\"aria-label\\\\\\\" attribute](https://developer.mozilla.org/en-US/docs/Web/Accessibility/ARIA/ARIA_Techniques/Using_the_aria-label_attribute).\\\",\\\"type\\\":\\\"string\\\"},{\\\"$ref\\\":\\\"#/definitions/ExprRef\\\"}]},\\\"dir\\\":{\\\"anyOf\\\":[{\\\"$ref\\\":\\\"#/definitions/TextDirection\\\",\\\"description\\\":\\\"The direction of the text. One of `\\\\\\\"ltr\\\\\\\"` (left-to-right) or `\\\\\\\"rtl\\\\\\\"` (right-to-left). This property determines on which side is truncated in response to the limit parameter.\\\\n\\\\n__Default value:__ `\\\\\\\"ltr\\\\\\\"`\\\"},{\\\"$ref\\\":\\\"#/definitions/ExprRef\\\"}]},\\\"dx\\\":{\\\"anyOf\\\":[{\\\"description\\\":\\\"The horizontal offset, in pixels, between the text label and its anchor point. The offset is applied after rotation by the _angle_ property.\\\",\\\"type\\\":\\\"number\\\"},{\\\"$ref\\\":\\\"#/definitions/ExprRef\\\"}]},\\\"dy\\\":{\\\"anyOf\\\":[{\\\"description\\\":\\\"The vertical offset, in pixels, between the text label and its anchor point. The offset is applied after rotation by the _angle_ property.\\\",\\\"type\\\":\\\"number\\\"},{\\\"$ref\\\":\\\"#/definitions/ExprRef\\\"}]},\\\"ellipsis\\\":{\\\"anyOf\\\":[{\\\"description\\\":\\\"The ellipsis string for text truncated in response to the limit parameter.\\\\n\\\\n__Default value:__ `\\\\\\\"…\\\\\\\"`\\\",\\\"type\\\":\\\"string\\\"},{\\\"$ref\\\":\\\"#/definitions/ExprRef\\\"}]},\\\"endAngle\\\":{\\\"anyOf\\\":[{\\\"description\\\":\\\"The end angle in radians for arc marks. A value of `0` indicates up (north), increasing values proceed clockwise.\\\",\\\"type\\\":\\\"number\\\"},{\\\"$ref\\\":\\\"#/definitions/ExprRef\\\"}]},\\\"fill\\\":{\\\"anyOf\\\":[{\\\"$ref\\\":\\\"#/definitions/Color\\\"},{\\\"$ref\\\":\\\"#/definitions/Gradient\\\"},{\\\"type\\\":\\\"null\\\"},{\\\"$ref\\\":\\\"#/definitions/ExprRef\\\"}],\\\"description\\\":\\\"Default fill color. This property has higher precedence than `config.color`. Set to `null` to remove fill.\\\\n\\\\n__Default value:__ (None)\\\"},\\\"fillOpacity\\\":{\\\"anyOf\\\":[{\\\"description\\\":\\\"The fill opacity (value between [0,1]).\\\\n\\\\n__Default value:__ `1`\\\",\\\"maximum\\\":1,\\\"minimum\\\":0,\\\"type\\\":\\\"number\\\"},{\\\"$ref\\\":\\\"#/definitions/ExprRef\\\"}]},\\\"filled\\\":{\\\"description\\\":\\\"Whether the mark's color should be used as fill color instead of stroke color.\\\\n\\\\n__Default value:__ `false` for all `point`, `line`, and `rule` marks as well as `geoshape` marks for [`graticule`](https://vega.github.io/vega-lite/docs/data.html#graticule) data sources; otherwise, `true`.\\\\n\\\\n__Note:__ This property cannot be used in a [style config](https://vega.github.io/vega-lite/docs/mark.html#style-config).\\\",\\\"type\\\":\\\"boolean\\\"},\\\"font\\\":{\\\"anyOf\\\":[{\\\"description\\\":\\\"The typeface to set the text in (e.g., `\\\\\\\"Helvetica Neue\\\\\\\"`).\\\",\\\"type\\\":\\\"string\\\"},{\\\"$ref\\\":\\\"#/definitions/ExprRef\\\"}]},\\\"fontSize\\\":{\\\"anyOf\\\":[{\\\"description\\\":\\\"The font size, in pixels.\\\\n\\\\n__Default value:__ `11`\\\",\\\"minimum\\\":0,\\\"type\\\":\\\"number\\\"},{\\\"$ref\\\":\\\"#/definitions/ExprRef\\\"}]},\\\"fontStyle\\\":{\\\"anyOf\\\":[{\\\"$ref\\\":\\\"#/definitions/FontStyle\\\",\\\"description\\\":\\\"The font style (e.g., `\\\\\\\"italic\\\\\\\"`).\\\"},{\\\"$ref\\\":\\\"#/definitions/ExprRef\\\"}]},\\\"fontWeight\\\":{\\\"anyOf\\\":[{\\\"$ref\\\":\\\"#/definitions/FontWeight\\\",\\\"description\\\":\\\"The font weight. This can be either a string (e.g `\\\\\\\"bold\\\\\\\"`, `\\\\\\\"normal\\\\\\\"`) or a number (`100`, `200`, `300`, ..., `900` where `\\\\\\\"normal\\\\\\\"` = `400` and `\\\\\\\"bold\\\\\\\"` = `700`).\\\"},{\\\"$ref\\\":\\\"#/definitions/ExprRef\\\"}]},\\\"height\\\":{\\\"anyOf\\\":[{\\\"description\\\":\\\"Height of the marks.\\\",\\\"type\\\":\\\"number\\\"},{\\\"$ref\\\":\\\"#/definitions/ExprRef\\\"}]},\\\"href\\\":{\\\"anyOf\\\":[{\\\"$ref\\\":\\\"#/definitions/URI\\\",\\\"description\\\":\\\"A URL to load upon mouse click. If defined, the mark acts as a hyperlink.\\\"},{\\\"$ref\\\":\\\"#/definitions/ExprRef\\\"}]},\\\"innerRadius\\\":{\\\"anyOf\\\":[{\\\"type\\\":\\\"number\\\"},{\\\"$ref\\\":\\\"#/definitions/ExprRef\\\"}],\\\"description\\\":\\\"The inner radius in pixels of arc marks. `innerRadius` is an alias for `radius2`.\\\"},\\\"interpolate\\\":{\\\"anyOf\\\":[{\\\"$ref\\\":\\\"#/definitions/Interpolate\\\",\\\"description\\\":\\\"The line interpolation method to use for line and area marks. One of the following: - `\\\\\\\"linear\\\\\\\"`: piecewise linear segments, as in a polyline. - `\\\\\\\"linear-closed\\\\\\\"`: close the linear segments to form a polygon. - `\\\\\\\"step\\\\\\\"`: alternate between horizontal and vertical segments, as in a step function. - `\\\\\\\"step-before\\\\\\\"`: alternate between vertical and horizontal segments, as in a step function. - `\\\\\\\"step-after\\\\\\\"`: alternate between horizontal and vertical segments, as in a step function. - `\\\\\\\"basis\\\\\\\"`: a B-spline, with control point duplication on the ends. - `\\\\\\\"basis-open\\\\\\\"`: an open B-spline; may not intersect the start or end. - `\\\\\\\"basis-closed\\\\\\\"`: a closed B-spline, as in a loop. - `\\\\\\\"cardinal\\\\\\\"`: a Cardinal spline, with control point duplication on the ends. - `\\\\\\\"cardinal-open\\\\\\\"`: an open Cardinal spline; may not intersect the start or end, but will intersect other control points. - `\\\\\\\"cardinal-closed\\\\\\\"`: a closed Cardinal spline, as in a loop. - `\\\\\\\"bundle\\\\\\\"`: equivalent to basis, except the tension parameter is used to straighten the spline. - `\\\\\\\"monotone\\\\\\\"`: cubic interpolation that preserves monotonicity in y.\\\"},{\\\"$ref\\\":\\\"#/definitions/ExprRef\\\"}]},\\\"invalid\\\":{\\\"description\\\":\\\"Defines how Vega-Lite should handle marks for invalid values (`null` and `NaN`). - If set to `\\\\\\\"filter\\\\\\\"` (default), all data items with null values will be skipped (for line, trail, and area marks) or filtered (for other marks). - If `null`, all data items are included. In this case, invalid values will be interpreted as zeroes.\\\",\\\"enum\\\":[\\\"filter\\\",null],\\\"type\\\":[\\\"string\\\",\\\"null\\\"]},\\\"limit\\\":{\\\"anyOf\\\":[{\\\"description\\\":\\\"The maximum length of the text mark in pixels. The text value will be automatically truncated if the rendered size exceeds the limit.\\\\n\\\\n__Default value:__ `0` -- indicating no limit\\\",\\\"type\\\":\\\"number\\\"},{\\\"$ref\\\":\\\"#/definitions/ExprRef\\\"}]},\\\"line\\\":{\\\"anyOf\\\":[{\\\"type\\\":\\\"boolean\\\"},{\\\"$ref\\\":\\\"#/definitions/OverlayMarkDef\\\"}],\\\"description\\\":\\\"A flag for overlaying line on top of area marks, or an object defining the properties of the overlayed lines.\\\\n\\\\n- If this value is an empty object (`{}`) or `true`, lines with default properties will be used.\\\\n\\\\n- If this value is `false`, no lines would be automatically added to area marks.\\\\n\\\\n__Default value:__ `false`.\\\"},\\\"lineBreak\\\":{\\\"anyOf\\\":[{\\\"description\\\":\\\"A delimiter, such as a newline character, upon which to break text strings into multiple lines. This property is ignored if the text is array-valued.\\\",\\\"type\\\":\\\"string\\\"},{\\\"$ref\\\":\\\"#/definitions/ExprRef\\\"}]},\\\"lineHeight\\\":{\\\"anyOf\\\":[{\\\"description\\\":\\\"The line height in pixels (the spacing between subsequent lines of text) for multi-line text marks.\\\",\\\"type\\\":\\\"number\\\"},{\\\"$ref\\\":\\\"#/definitions/ExprRef\\\"}]},\\\"opacity\\\":{\\\"anyOf\\\":[{\\\"type\\\":\\\"number\\\"},{\\\"$ref\\\":\\\"#/definitions/ExprRef\\\"}],\\\"description\\\":\\\"The overall opacity (value between [0,1]).\\\\n\\\\n__Default value:__ `0.7` for non-aggregate plots with `point`, `tick`, `circle`, or `square` marks or layered `bar` charts and `1` otherwise.\\\",\\\"maximum\\\":1,\\\"minimum\\\":0},\\\"order\\\":{\\\"description\\\":\\\"For line and trail marks, this `order` property can be set to `null` or `false` to make the lines use the original order in the data sources.\\\",\\\"type\\\":[\\\"null\\\",\\\"boolean\\\"]},\\\"orient\\\":{\\\"$ref\\\":\\\"#/definitions/Orientation\\\",\\\"description\\\":\\\"The orientation of a non-stacked bar, tick, area, and line charts. The value is either horizontal (default) or vertical. - For bar, rule and tick, this determines whether the size of the bar and tick should be applied to x or y dimension. - For area, this property determines the orient property of the Vega output. - For line and trail marks, this property determines the sort order of the points in the line if `config.sortLineBy` is not specified. For stacked charts, this is always determined by the orientation of the stack; therefore explicitly specified value will be ignored.\\\"},\\\"outerRadius\\\":{\\\"anyOf\\\":[{\\\"type\\\":\\\"number\\\"},{\\\"$ref\\\":\\\"#/definitions/ExprRef\\\"}],\\\"description\\\":\\\"The outer radius in pixels of arc marks. `outerRadius` is an alias for `radius`.\\\"},\\\"padAngle\\\":{\\\"anyOf\\\":[{\\\"description\\\":\\\"The angular padding applied to sides of the arc, in radians.\\\",\\\"type\\\":\\\"number\\\"},{\\\"$ref\\\":\\\"#/definitions/ExprRef\\\"}]},\\\"point\\\":{\\\"anyOf\\\":[{\\\"type\\\":\\\"boolean\\\"},{\\\"$ref\\\":\\\"#/definitions/OverlayMarkDef\\\"},{\\\"const\\\":\\\"transparent\\\",\\\"type\\\":\\\"string\\\"}],\\\"description\\\":\\\"A flag for overlaying points on top of line or area marks, or an object defining the properties of the overlayed points.\\\\n\\\\n- If this property is `\\\\\\\"transparent\\\\\\\"`, transparent points will be used (for enhancing tooltips and selections).\\\\n\\\\n- If this property is an empty object (`{}`) or `true`, filled points with default properties will be used.\\\\n\\\\n- If this property is `false`, no points would be automatically added to line or area marks.\\\\n\\\\n__Default value:__ `false`.\\\"},\\\"radius\\\":{\\\"anyOf\\\":[{\\\"type\\\":\\\"number\\\"},{\\\"$ref\\\":\\\"#/definitions/ExprRef\\\"}],\\\"description\\\":\\\"For arc mark, the primary (outer) radius in pixels.\\\\n\\\\nFor text marks, polar coordinate radial offset, in pixels, of the text from the origin determined by the `x` and `y` properties.\\\"},\\\"radius2\\\":{\\\"anyOf\\\":[{\\\"type\\\":\\\"number\\\"},{\\\"$ref\\\":\\\"#/definitions/ExprRef\\\"}],\\\"description\\\":\\\"The secondary (inner) radius in pixels of arc marks.\\\"},\\\"shape\\\":{\\\"anyOf\\\":[{\\\"anyOf\\\":[{\\\"$ref\\\":\\\"#/definitions/SymbolShape\\\"},{\\\"type\\\":\\\"string\\\"}],\\\"description\\\":\\\"Shape of the point marks. Supported values include: - plotting shapes: `\\\\\\\"circle\\\\\\\"`, `\\\\\\\"square\\\\\\\"`, `\\\\\\\"cross\\\\\\\"`, `\\\\\\\"diamond\\\\\\\"`, `\\\\\\\"triangle-up\\\\\\\"`, `\\\\\\\"triangle-down\\\\\\\"`, `\\\\\\\"triangle-right\\\\\\\"`, or `\\\\\\\"triangle-left\\\\\\\"`. - the line symbol `\\\\\\\"stroke\\\\\\\"` - centered directional shapes `\\\\\\\"arrow\\\\\\\"`, `\\\\\\\"wedge\\\\\\\"`, or `\\\\\\\"triangle\\\\\\\"` - a custom [SVG path string](https://developer.mozilla.org/en-US/docs/Web/SVG/Tutorial/Paths) (For correct sizing, custom shape paths should be defined within a square bounding box with coordinates ranging from -1 to 1 along both the x and y dimensions.)\\\\n\\\\n__Default value:__ `\\\\\\\"circle\\\\\\\"`\\\"},{\\\"$ref\\\":\\\"#/definitions/ExprRef\\\"}]},\\\"size\\\":{\\\"anyOf\\\":[{\\\"type\\\":\\\"number\\\"},{\\\"$ref\\\":\\\"#/definitions/ExprRef\\\"}],\\\"description\\\":\\\"Default size for marks. - For `point`/`circle`/`square`, this represents the pixel area of the marks. Note that this value sets the area of the symbol; the side lengths will increase with the square root of this value. - For `bar`, this represents the band size of the bar, in pixels. - For `text`, this represents the font size, in pixels.\\\\n\\\\n__Default value:__ - `30` for point, circle, square marks; width/height's `step` - `2` for bar marks with discrete dimensions; - `5` for bar marks with continuous dimensions; - `11` for text marks.\\\",\\\"minimum\\\":0},\\\"smooth\\\":{\\\"anyOf\\\":[{\\\"description\\\":\\\"A boolean flag (default true) indicating if the image should be smoothed when resized. If false, individual pixels should be scaled directly rather than interpolated with smoothing. For SVG rendering, this option may not work in some browsers due to lack of standardization.\\\",\\\"type\\\":\\\"boolean\\\"},{\\\"$ref\\\":\\\"#/definitions/ExprRef\\\"}]},\\\"startAngle\\\":{\\\"anyOf\\\":[{\\\"description\\\":\\\"The start angle in radians for arc marks. A value of `0` indicates up (north), increasing values proceed clockwise.\\\",\\\"type\\\":\\\"number\\\"},{\\\"$ref\\\":\\\"#/definitions/ExprRef\\\"}]},\\\"stroke\\\":{\\\"anyOf\\\":[{\\\"$ref\\\":\\\"#/definitions/Color\\\"},{\\\"$ref\\\":\\\"#/definitions/Gradient\\\"},{\\\"type\\\":\\\"null\\\"},{\\\"$ref\\\":\\\"#/definitions/ExprRef\\\"}],\\\"description\\\":\\\"Default stroke color. This property has higher precedence than `config.color`. Set to `null` to remove stroke.\\\\n\\\\n__Default value:__ (None)\\\"},\\\"strokeCap\\\":{\\\"anyOf\\\":[{\\\"$ref\\\":\\\"#/definitions/StrokeCap\\\",\\\"description\\\":\\\"The stroke cap for line ending style. One of `\\\\\\\"butt\\\\\\\"`, `\\\\\\\"round\\\\\\\"`, or `\\\\\\\"square\\\\\\\"`.\\\\n\\\\n__Default value:__ `\\\\\\\"butt\\\\\\\"`\\\"},{\\\"$ref\\\":\\\"#/definitions/ExprRef\\\"}]},\\\"strokeDash\\\":{\\\"anyOf\\\":[{\\\"description\\\":\\\"An array of alternating stroke, space lengths for creating dashed or dotted lines.\\\",\\\"items\\\":{\\\"type\\\":\\\"number\\\"},\\\"type\\\":\\\"array\\\"},{\\\"$ref\\\":\\\"#/definitions/ExprRef\\\"}]},\\\"strokeDashOffset\\\":{\\\"anyOf\\\":[{\\\"description\\\":\\\"The offset (in pixels) into which to begin drawing with the stroke dash array.\\\",\\\"type\\\":\\\"number\\\"},{\\\"$ref\\\":\\\"#/definitions/ExprRef\\\"}]},\\\"strokeJoin\\\":{\\\"anyOf\\\":[{\\\"$ref\\\":\\\"#/definitions/StrokeJoin\\\",\\\"description\\\":\\\"The stroke line join method. One of `\\\\\\\"miter\\\\\\\"`, `\\\\\\\"round\\\\\\\"` or `\\\\\\\"bevel\\\\\\\"`.\\\\n\\\\n__Default value:__ `\\\\\\\"miter\\\\\\\"`\\\"},{\\\"$ref\\\":\\\"#/definitions/ExprRef\\\"}]},\\\"strokeMiterLimit\\\":{\\\"anyOf\\\":[{\\\"description\\\":\\\"The miter limit at which to bevel a line join.\\\",\\\"type\\\":\\\"number\\\"},{\\\"$ref\\\":\\\"#/definitions/ExprRef\\\"}]},\\\"strokeOffset\\\":{\\\"anyOf\\\":[{\\\"description\\\":\\\"The offset in pixels at which to draw the group stroke and fill. If unspecified, the default behavior is to dynamically offset stroked groups such that 1 pixel stroke widths align with the pixel grid.\\\",\\\"type\\\":\\\"number\\\"},{\\\"$ref\\\":\\\"#/definitions/ExprRef\\\"}]},\\\"strokeOpacity\\\":{\\\"anyOf\\\":[{\\\"description\\\":\\\"The stroke opacity (value between [0,1]).\\\\n\\\\n__Default value:__ `1`\\\",\\\"maximum\\\":1,\\\"minimum\\\":0,\\\"type\\\":\\\"number\\\"},{\\\"$ref\\\":\\\"#/definitions/ExprRef\\\"}]},\\\"strokeWidth\\\":{\\\"anyOf\\\":[{\\\"description\\\":\\\"The stroke width, in pixels.\\\",\\\"minimum\\\":0,\\\"type\\\":\\\"number\\\"},{\\\"$ref\\\":\\\"#/definitions/ExprRef\\\"}]},\\\"tension\\\":{\\\"anyOf\\\":[{\\\"description\\\":\\\"Depending on the interpolation type, sets the tension parameter (for line and area marks).\\\",\\\"type\\\":\\\"number\\\"},{\\\"$ref\\\":\\\"#/definitions/ExprRef\\\"}]},\\\"text\\\":{\\\"anyOf\\\":[{\\\"$ref\\\":\\\"#/definitions/Text\\\",\\\"description\\\":\\\"Placeholder text if the `text` channel is not specified\\\"},{\\\"$ref\\\":\\\"#/definitions/ExprRef\\\"}]},\\\"theta\\\":{\\\"anyOf\\\":[{\\\"type\\\":\\\"number\\\"},{\\\"$ref\\\":\\\"#/definitions/ExprRef\\\"}],\\\"description\\\":\\\"- For arc marks, the arc length in radians if theta2 is not specified, otherwise the start arc angle. (A value of 0 indicates up or “north”, increasing values proceed clockwise.)\\\\n\\\\n- For text marks, polar coordinate angle in radians.\\\",\\\"maximum\\\":360,\\\"minimum\\\":0},\\\"theta2\\\":{\\\"anyOf\\\":[{\\\"type\\\":\\\"number\\\"},{\\\"$ref\\\":\\\"#/definitions/ExprRef\\\"}],\\\"description\\\":\\\"The end angle of arc marks in radians. A value of 0 indicates up or “north”, increasing values proceed clockwise.\\\"},\\\"timeUnitBand\\\":{\\\"description\\\":\\\"Default relative band size for a time unit. If set to `1`, the bandwidth of the marks will be equal to the time unit band step. If set to `0.5`, bandwidth of the marks will be half of the time unit band step.\\\",\\\"type\\\":\\\"number\\\"},\\\"timeUnitBandPosition\\\":{\\\"description\\\":\\\"Default relative band position for a time unit. If set to `0`, the marks will be positioned at the beginning of the time unit band step. If set to `0.5`, the marks will be positioned in the middle of the time unit band step.\\\",\\\"type\\\":\\\"number\\\"},\\\"tooltip\\\":{\\\"anyOf\\\":[{\\\"type\\\":\\\"number\\\"},{\\\"type\\\":\\\"string\\\"},{\\\"type\\\":\\\"boolean\\\"},{\\\"$ref\\\":\\\"#/definitions/TooltipContent\\\"},{\\\"$ref\\\":\\\"#/definitions/ExprRef\\\"},{\\\"type\\\":\\\"null\\\"}],\\\"description\\\":\\\"The tooltip text string to show upon mouse hover or an object defining which fields should the tooltip be derived from.\\\\n\\\\n- If `tooltip` is `true` or `{\\\\\\\"content\\\\\\\": \\\\\\\"encoding\\\\\\\"}`, then all fields from `encoding` will be used. - If `tooltip` is `{\\\\\\\"content\\\\\\\": \\\\\\\"data\\\\\\\"}`, then all fields that appear in the highlighted data point will be used. - If set to `null` or `false`, then no tooltip will be used.\\\\n\\\\nSee the [`tooltip`](https://vega.github.io/vega-lite/docs/tooltip.html) documentation for a detailed discussion about tooltip  in Vega-Lite.\\\\n\\\\n__Default value:__ `null`\\\"},\\\"url\\\":{\\\"anyOf\\\":[{\\\"$ref\\\":\\\"#/definitions/URI\\\",\\\"description\\\":\\\"The URL of the image file for image marks.\\\"},{\\\"$ref\\\":\\\"#/definitions/ExprRef\\\"}]},\\\"width\\\":{\\\"anyOf\\\":[{\\\"description\\\":\\\"Width of the marks.\\\",\\\"type\\\":\\\"number\\\"},{\\\"$ref\\\":\\\"#/definitions/ExprRef\\\"}]},\\\"x\\\":{\\\"anyOf\\\":[{\\\"type\\\":\\\"number\\\"},{\\\"const\\\":\\\"width\\\",\\\"type\\\":\\\"string\\\"},{\\\"$ref\\\":\\\"#/definitions/ExprRef\\\"}],\\\"description\\\":\\\"X coordinates of the marks, or width of horizontal `\\\\\\\"bar\\\\\\\"` and `\\\\\\\"area\\\\\\\"` without specified `x2` or `width`.\\\\n\\\\nThe `value` of this channel can be a number or a string `\\\\\\\"width\\\\\\\"` for the width of the plot.\\\"},\\\"x2\\\":{\\\"anyOf\\\":[{\\\"type\\\":\\\"number\\\"},{\\\"const\\\":\\\"width\\\",\\\"type\\\":\\\"string\\\"},{\\\"$ref\\\":\\\"#/definitions/ExprRef\\\"}],\\\"description\\\":\\\"X2 coordinates for ranged `\\\\\\\"area\\\\\\\"`, `\\\\\\\"bar\\\\\\\"`, `\\\\\\\"rect\\\\\\\"`, and  `\\\\\\\"rule\\\\\\\"`.\\\\n\\\\nThe `value` of this channel can be a number or a string `\\\\\\\"width\\\\\\\"` for the width of the plot.\\\"},\\\"y\\\":{\\\"anyOf\\\":[{\\\"type\\\":\\\"number\\\"},{\\\"const\\\":\\\"height\\\",\\\"type\\\":\\\"string\\\"},{\\\"$ref\\\":\\\"#/definitions/ExprRef\\\"}],\\\"description\\\":\\\"Y coordinates of the marks, or height of vertical `\\\\\\\"bar\\\\\\\"` and `\\\\\\\"area\\\\\\\"` without specified `y2` or `height`.\\\\n\\\\nThe `value` of this channel can be a number or a string `\\\\\\\"height\\\\\\\"` for the height of the plot.\\\"},\\\"y2\\\":{\\\"anyOf\\\":[{\\\"type\\\":\\\"number\\\"},{\\\"const\\\":\\\"height\\\",\\\"type\\\":\\\"string\\\"},{\\\"$ref\\\":\\\"#/definitions/ExprRef\\\"}],\\\"description\\\":\\\"Y2 coordinates for ranged `\\\\\\\"area\\\\\\\"`, `\\\\\\\"bar\\\\\\\"`, `\\\\\\\"rect\\\\\\\"`, and  `\\\\\\\"rule\\\\\\\"`.\\\\n\\\\nThe `value` of this channel can be a number or a string `\\\\\\\"height\\\\\\\"` for the height of the plot.\\\"}},\\\"type\\\":\\\"object\\\"},\\\"ArgmaxDef\\\":{\\\"additionalProperties\\\":false,\\\"properties\\\":{\\\"argmax\\\":{\\\"type\\\":\\\"string\\\"}},\\\"required\\\":[\\\"argmax\\\"],\\\"type\\\":\\\"object\\\"},\\\"ArgminDef\\\":{\\\"additionalProperties\\\":false,\\\"properties\\\":{\\\"argmin\\\":{\\\"type\\\":\\\"string\\\"}},\\\"required\\\":[\\\"argmin\\\"],\\\"type\\\":\\\"object\\\"},\\\"AutoSizeParams\\\":{\\\"additionalProperties\\\":false,\\\"properties\\\":{\\\"contains\\\":{\\\"description\\\":\\\"Determines how size calculation should be performed, one of `\\\\\\\"content\\\\\\\"` or `\\\\\\\"padding\\\\\\\"`. The default setting (`\\\\\\\"content\\\\\\\"`) interprets the width and height settings as the data rectangle (plotting) dimensions, to which padding is then added. In contrast, the `\\\\\\\"padding\\\\\\\"` setting includes the padding within the view size calculations, such that the width and height settings indicate the **total** intended size of the view.\\\\n\\\\n__Default value__: `\\\\\\\"content\\\\\\\"`\\\",\\\"enum\\\":[\\\"content\\\",\\\"padding\\\"],\\\"type\\\":\\\"string\\\"},\\\"resize\\\":{\\\"description\\\":\\\"A boolean flag indicating if autosize layout should be re-calculated on every view update.\\\\n\\\\n__Default value__: `false`\\\",\\\"type\\\":\\\"boolean\\\"},\\\"type\\\":{\\\"$ref\\\":\\\"#/definitions/AutosizeType\\\",\\\"description\\\":\\\"The sizing format type. One of `\\\\\\\"pad\\\\\\\"`, `\\\\\\\"fit\\\\\\\"`, `\\\\\\\"fit-x\\\\\\\"`, `\\\\\\\"fit-y\\\\\\\"`,  or `\\\\\\\"none\\\\\\\"`. See the [autosize type](https://vega.github.io/vega-lite/docs/size.html#autosize) documentation for descriptions of each.\\\\n\\\\n__Default value__: `\\\\\\\"pad\\\\\\\"`\\\"}},\\\"type\\\":\\\"object\\\"},\\\"AutosizeType\\\":{\\\"enum\\\":[\\\"pad\\\",\\\"none\\\",\\\"fit\\\",\\\"fit-x\\\",\\\"fit-y\\\"],\\\"type\\\":\\\"string\\\"},\\\"Axis\\\":{\\\"additionalProperties\\\":false,\\\"properties\\\":{\\\"aria\\\":{\\\"anyOf\\\":[{\\\"description\\\":\\\"A boolean flag indicating if [ARIA attributes](https://developer.mozilla.org/en-US/docs/Web/Accessibility/ARIA) should be included (SVG output only). If `false`, the \\\\\\\"aria-hidden\\\\\\\" attribute will be set on the output SVG group, removing the axis from the ARIA accessibility tree.\\\\n\\\\n__Default value:__ `true`\\\",\\\"type\\\":\\\"boolean\\\"},{\\\"$ref\\\":\\\"#/definitions/ExprRef\\\"}]},\\\"bandPosition\\\":{\\\"anyOf\\\":[{\\\"description\\\":\\\"An interpolation fraction indicating where, for `band` scales, axis ticks should be positioned. A value of `0` places ticks at the left edge of their bands. A value of `0.5` places ticks in the middle of their bands.\\\\n\\\\n  __Default value:__ `0.5`\\\",\\\"type\\\":\\\"number\\\"},{\\\"$ref\\\":\\\"#/definitions/ExprRef\\\"}]},\\\"description\\\":{\\\"anyOf\\\":[{\\\"description\\\":\\\"A text description of this axis for [ARIA accessibility](https://developer.mozilla.org/en-US/docs/Web/Accessibility/ARIA) (SVG output only). If the `aria` property is true, for SVG output the [\\\\\\\"aria-label\\\\\\\" attribute](https://developer.mozilla.org/en-US/docs/Web/Accessibility/ARIA/ARIA_Techniques/Using_the_aria-label_attribute) will be set to this description. If the description is unspecified it will be automatically generated.\\\",\\\"type\\\":\\\"string\\\"},{\\\"$ref\\\":\\\"#/definitions/ExprRef\\\"}]},\\\"domain\\\":{\\\"anyOf\\\":[{\\\"description\\\":\\\"A boolean flag indicating if the domain (the axis baseline) should be included as part of the axis.\\\\n\\\\n__Default value:__ `true`\\\",\\\"type\\\":\\\"boolean\\\"},{\\\"$ref\\\":\\\"#/definitions/ExprRef\\\"}]},\\\"domainCap\\\":{\\\"anyOf\\\":[{\\\"$ref\\\":\\\"#/definitions/StrokeCap\\\",\\\"description\\\":\\\"The stroke cap for the domain line's ending style. One of `\\\\\\\"butt\\\\\\\"`, `\\\\\\\"round\\\\\\\"` or `\\\\\\\"square\\\\\\\"`.\\\\n\\\\n__Default value:__ `\\\\\\\"butt\\\\\\\"`\\\"},{\\\"$ref\\\":\\\"#/definitions/ExprRef\\\"}]},\\\"domainColor\\\":{\\\"anyOf\\\":[{\\\"anyOf\\\":[{\\\"type\\\":\\\"null\\\"},{\\\"$ref\\\":\\\"#/definitions/Color\\\"}],\\\"description\\\":\\\"Color of axis domain line.\\\\n\\\\n__Default value:__ `\\\\\\\"gray\\\\\\\"`.\\\"},{\\\"$ref\\\":\\\"#/definitions/ExprRef\\\"}]},\\\"domainDash\\\":{\\\"anyOf\\\":[{\\\"description\\\":\\\"An array of alternating [stroke, space] lengths for dashed domain lines.\\\",\\\"items\\\":{\\\"type\\\":\\\"number\\\"},\\\"type\\\":\\\"array\\\"},{\\\"$ref\\\":\\\"#/definitions/ExprRef\\\"}]},\\\"domainDashOffset\\\":{\\\"anyOf\\\":[{\\\"description\\\":\\\"The pixel offset at which to start drawing with the domain dash array.\\\",\\\"type\\\":\\\"number\\\"},{\\\"$ref\\\":\\\"#/definitions/ExprRef\\\"}]},\\\"domainOpacity\\\":{\\\"anyOf\\\":[{\\\"description\\\":\\\"Opacity of the axis domain line.\\\",\\\"type\\\":\\\"number\\\"},{\\\"$ref\\\":\\\"#/definitions/ExprRef\\\"}]},\\\"domainWidth\\\":{\\\"anyOf\\\":[{\\\"description\\\":\\\"Stroke width of axis domain line\\\\n\\\\n__Default value:__ `1`\\\",\\\"type\\\":\\\"number\\\"},{\\\"$ref\\\":\\\"#/definitions/ExprRef\\\"}]},\\\"format\\\":{\\\"anyOf\\\":[{\\\"type\\\":\\\"string\\\"},{\\\"$ref\\\":\\\"#/definitions/Dict<unknown>\\\"}],\\\"description\\\":\\\"When used with the default `\\\\\\\"number\\\\\\\"` and `\\\\\\\"time\\\\\\\"` format type, the text formatting pattern for labels of guides (axes, legends, headers) and text marks.\\\\n\\\\n- If the format type is `\\\\\\\"number\\\\\\\"` (e.g., for quantitative fields), this is D3's [number format pattern](https://github.com/d3/d3-format#locale_format). - If the format type is `\\\\\\\"time\\\\\\\"` (e.g., for temporal fields), this is D3's [time format pattern](https://github.com/d3/d3-time-format#locale_format).\\\\n\\\\nSee the [format documentation](https://vega.github.io/vega-lite/docs/format.html) for more examples.\\\\n\\\\nWhen used with a [custom `formatType`](https://vega.github.io/vega-lite/docs/config.html#custom-format-type), this value will be passed as `format` alongside `datum.value` to the registered function.\\\\n\\\\n__Default value:__  Derived from [numberFormat](https://vega.github.io/vega-lite/docs/config.html#format) config for number format and from [timeFormat](https://vega.github.io/vega-lite/docs/config.html#format) config for time format.\\\"},\\\"formatType\\\":{\\\"description\\\":\\\"The format type for labels. One of `\\\\\\\"number\\\\\\\"`, `\\\\\\\"time\\\\\\\"`, or a [registered custom format type](https://vega.github.io/vega-lite/docs/config.html#custom-format-type).\\\\n\\\\n__Default value:__ - `\\\\\\\"time\\\\\\\"` for temporal fields and ordinal and nominal fields with `timeUnit`. - `\\\\\\\"number\\\\\\\"` for quantitative fields as well as ordinal and nominal fields without `timeUnit`.\\\",\\\"type\\\":\\\"string\\\"},\\\"grid\\\":{\\\"description\\\":\\\"A boolean flag indicating if grid lines should be included as part of the axis\\\\n\\\\n__Default value:__ `true` for [continuous scales](https://vega.github.io/vega-lite/docs/scale.html#continuous) that are not binned; otherwise, `false`.\\\",\\\"type\\\":\\\"boolean\\\"},\\\"gridCap\\\":{\\\"anyOf\\\":[{\\\"$ref\\\":\\\"#/definitions/StrokeCap\\\",\\\"description\\\":\\\"The stroke cap for grid lines' ending style. One of `\\\\\\\"butt\\\\\\\"`, `\\\\\\\"round\\\\\\\"` or `\\\\\\\"square\\\\\\\"`.\\\\n\\\\n__Default value:__ `\\\\\\\"butt\\\\\\\"`\\\"},{\\\"$ref\\\":\\\"#/definitions/ExprRef\\\"}]},\\\"gridColor\\\":{\\\"anyOf\\\":[{\\\"anyOf\\\":[{\\\"type\\\":\\\"null\\\"},{\\\"$ref\\\":\\\"#/definitions/Color\\\"}],\\\"description\\\":\\\"Color of gridlines.\\\\n\\\\n__Default value:__ `\\\\\\\"lightGray\\\\\\\"`.\\\"},{\\\"$ref\\\":\\\"#/definitions/ExprRef\\\"},{\\\"$ref\\\":\\\"#/definitions/ConditionalAxisColor\\\"}]},\\\"gridDash\\\":{\\\"anyOf\\\":[{\\\"description\\\":\\\"An array of alternating [stroke, space] lengths for dashed grid lines.\\\",\\\"items\\\":{\\\"type\\\":\\\"number\\\"},\\\"type\\\":\\\"array\\\"},{\\\"$ref\\\":\\\"#/definitions/ExprRef\\\"},{\\\"$ref\\\":\\\"#/definitions/ConditionalAxisNumberArray\\\"}]},\\\"gridDashOffset\\\":{\\\"anyOf\\\":[{\\\"description\\\":\\\"The pixel offset at which to start drawing with the grid dash array.\\\",\\\"type\\\":\\\"number\\\"},{\\\"$ref\\\":\\\"#/definitions/ExprRef\\\"},{\\\"$ref\\\":\\\"#/definitions/ConditionalAxisNumber\\\"}]},\\\"gridOpacity\\\":{\\\"anyOf\\\":[{\\\"description\\\":\\\"The stroke opacity of grid (value between [0,1])\\\\n\\\\n__Default value:__ `1`\\\",\\\"maximum\\\":1,\\\"minimum\\\":0,\\\"type\\\":\\\"number\\\"},{\\\"$ref\\\":\\\"#/definitions/ExprRef\\\"},{\\\"$ref\\\":\\\"#/definitions/ConditionalAxisNumber\\\"}]},\\\"gridWidth\\\":{\\\"anyOf\\\":[{\\\"description\\\":\\\"The grid width, in pixels.\\\\n\\\\n__Default value:__ `1`\\\",\\\"minimum\\\":0,\\\"type\\\":\\\"number\\\"},{\\\"$ref\\\":\\\"#/definitions/ExprRef\\\"},{\\\"$ref\\\":\\\"#/definitions/ConditionalAxisNumber\\\"}]},\\\"labelAlign\\\":{\\\"anyOf\\\":[{\\\"$ref\\\":\\\"#/definitions/Align\\\",\\\"description\\\":\\\"Horizontal text alignment of axis tick labels, overriding the default setting for the current axis orientation.\\\"},{\\\"$ref\\\":\\\"#/definitions/ExprRef\\\"},{\\\"$ref\\\":\\\"#/definitions/ConditionalAxisLabelAlign\\\"}]},\\\"labelAngle\\\":{\\\"anyOf\\\":[{\\\"description\\\":\\\"The rotation angle of the axis labels.\\\\n\\\\n__Default value:__ `-90` for nominal and ordinal fields; `0` otherwise.\\\",\\\"maximum\\\":360,\\\"minimum\\\":-360,\\\"type\\\":\\\"number\\\"},{\\\"$ref\\\":\\\"#/definitions/ExprRef\\\"}]},\\\"labelBaseline\\\":{\\\"anyOf\\\":[{\\\"$ref\\\":\\\"#/definitions/TextBaseline\\\",\\\"description\\\":\\\"Vertical text baseline of axis tick labels, overriding the default setting for the current axis orientation. One of `\\\\\\\"alphabetic\\\\\\\"` (default), `\\\\\\\"top\\\\\\\"`, `\\\\\\\"middle\\\\\\\"`, `\\\\\\\"bottom\\\\\\\"`, `\\\\\\\"line-top\\\\\\\"`, or `\\\\\\\"line-bottom\\\\\\\"`. The `\\\\\\\"line-top\\\\\\\"` and `\\\\\\\"line-bottom\\\\\\\"` values operate similarly to `\\\\\\\"top\\\\\\\"` and `\\\\\\\"bottom\\\\\\\"`, but are calculated relative to the *lineHeight* rather than *fontSize* alone.\\\"},{\\\"$ref\\\":\\\"#/definitions/ExprRef\\\"},{\\\"$ref\\\":\\\"#/definitions/ConditionalAxisLabelBaseline\\\"}]},\\\"labelBound\\\":{\\\"anyOf\\\":[{\\\"description\\\":\\\"Indicates if labels should be hidden if they exceed the axis range. If `false` (the default) no bounds overlap analysis is performed. If `true`, labels will be hidden if they exceed the axis range by more than 1 pixel. If this property is a number, it specifies the pixel tolerance: the maximum amount by which a label bounding box may exceed the axis range.\\\\n\\\\n__Default value:__ `false`.\\\",\\\"type\\\":[\\\"number\\\",\\\"boolean\\\"]},{\\\"$ref\\\":\\\"#/definitions/ExprRef\\\"}]},\\\"labelColor\\\":{\\\"anyOf\\\":[{\\\"anyOf\\\":[{\\\"type\\\":\\\"null\\\"},{\\\"$ref\\\":\\\"#/definitions/Color\\\"}],\\\"description\\\":\\\"The color of the tick label, can be in hex color code or regular color name.\\\"},{\\\"$ref\\\":\\\"#/definitions/ExprRef\\\"},{\\\"$ref\\\":\\\"#/definitions/ConditionalAxisColor\\\"}]},\\\"labelExpr\\\":{\\\"description\\\":\\\"[Vega expression](https://vega.github.io/vega/docs/expressions/) for customizing labels.\\\\n\\\\n__Note:__ The label text and value can be assessed via the `label` and `value` properties of the axis's backing `datum` object.\\\",\\\"type\\\":\\\"string\\\"},\\\"labelFlush\\\":{\\\"description\\\":\\\"Indicates if the first and last axis labels should be aligned flush with the scale range. Flush alignment for a horizontal axis will left-align the first label and right-align the last label. For vertical axes, bottom and top text baselines are applied instead. If this property is a number, it also indicates the number of pixels by which to offset the first and last labels; for example, a value of 2 will flush-align the first and last labels and also push them 2 pixels outward from the center of the axis. The additional adjustment can sometimes help the labels better visually group with corresponding axis ticks.\\\\n\\\\n__Default value:__ `true` for axis of a continuous x-scale. Otherwise, `false`.\\\",\\\"type\\\":[\\\"boolean\\\",\\\"number\\\"]},\\\"labelFlushOffset\\\":{\\\"anyOf\\\":[{\\\"description\\\":\\\"Indicates the number of pixels by which to offset flush-adjusted labels. For example, a value of `2` will push flush-adjusted labels 2 pixels outward from the center of the axis. Offsets can help the labels better visually group with corresponding axis ticks.\\\\n\\\\n__Default value:__ `0`.\\\",\\\"type\\\":\\\"number\\\"},{\\\"$ref\\\":\\\"#/definitions/ExprRef\\\"}]},\\\"labelFont\\\":{\\\"anyOf\\\":[{\\\"description\\\":\\\"The font of the tick label.\\\",\\\"type\\\":\\\"string\\\"},{\\\"$ref\\\":\\\"#/definitions/ExprRef\\\"},{\\\"$ref\\\":\\\"#/definitions/ConditionalAxisString\\\"}]},\\\"labelFontSize\\\":{\\\"anyOf\\\":[{\\\"description\\\":\\\"The font size of the label, in pixels.\\\",\\\"minimum\\\":0,\\\"type\\\":\\\"number\\\"},{\\\"$ref\\\":\\\"#/definitions/ExprRef\\\"},{\\\"$ref\\\":\\\"#/definitions/ConditionalAxisNumber\\\"}]},\\\"labelFontStyle\\\":{\\\"anyOf\\\":[{\\\"$ref\\\":\\\"#/definitions/FontStyle\\\",\\\"description\\\":\\\"Font style of the title.\\\"},{\\\"$ref\\\":\\\"#/definitions/ExprRef\\\"},{\\\"$ref\\\":\\\"#/definitions/ConditionalAxisLabelFontStyle\\\"}]},\\\"labelFontWeight\\\":{\\\"anyOf\\\":[{\\\"$ref\\\":\\\"#/definitions/FontWeight\\\",\\\"description\\\":\\\"Font weight of axis tick labels.\\\"},{\\\"$ref\\\":\\\"#/definitions/ExprRef\\\"},{\\\"$ref\\\":\\\"#/definitions/ConditionalAxisLabelFontWeight\\\"}]},\\\"labelLimit\\\":{\\\"anyOf\\\":[{\\\"description\\\":\\\"Maximum allowed pixel width of axis tick labels.\\\\n\\\\n__Default value:__ `180`\\\",\\\"type\\\":\\\"number\\\"},{\\\"$ref\\\":\\\"#/definitions/ExprRef\\\"}]},\\\"labelLineHeight\\\":{\\\"anyOf\\\":[{\\\"description\\\":\\\"Line height in pixels for multi-line label text or label text with `\\\\\\\"line-top\\\\\\\"` or `\\\\\\\"line-bottom\\\\\\\"` baseline.\\\",\\\"type\\\":\\\"number\\\"},{\\\"$ref\\\":\\\"#/definitions/ExprRef\\\"}]},\\\"labelOffset\\\":{\\\"anyOf\\\":[{\\\"description\\\":\\\"Position offset in pixels to apply to labels, in addition to tickOffset.\\\\n\\\\n__Default value:__ `0`\\\",\\\"type\\\":\\\"number\\\"},{\\\"$ref\\\":\\\"#/definitions/ExprRef\\\"},{\\\"$ref\\\":\\\"#/definitions/ConditionalAxisNumber\\\"}]},\\\"labelOpacity\\\":{\\\"anyOf\\\":[{\\\"description\\\":\\\"The opacity of the labels.\\\",\\\"type\\\":\\\"number\\\"},{\\\"$ref\\\":\\\"#/definitions/ExprRef\\\"},{\\\"$ref\\\":\\\"#/definitions/ConditionalAxisNumber\\\"}]},\\\"labelOverlap\\\":{\\\"anyOf\\\":[{\\\"$ref\\\":\\\"#/definitions/LabelOverlap\\\"},{\\\"$ref\\\":\\\"#/definitions/ExprRef\\\"}],\\\"description\\\":\\\"The strategy to use for resolving overlap of axis labels. If `false` (the default), no overlap reduction is attempted. If set to `true` or `\\\\\\\"parity\\\\\\\"`, a strategy of removing every other label is used (this works well for standard linear axes). If set to `\\\\\\\"greedy\\\\\\\"`, a linear scan of the labels is performed, removing any labels that overlaps with the last visible label (this often works better for log-scaled axes).\\\\n\\\\n__Default value:__ `true` for non-nominal fields with non-log scales; `\\\\\\\"greedy\\\\\\\"` for log scales; otherwise `false`.\\\"},\\\"labelPadding\\\":{\\\"anyOf\\\":[{\\\"description\\\":\\\"The padding in pixels between labels and ticks.\\\\n\\\\n__Default value:__ `2`\\\",\\\"type\\\":\\\"number\\\"},{\\\"$ref\\\":\\\"#/definitions/ExprRef\\\"},{\\\"$ref\\\":\\\"#/definitions/ConditionalAxisNumber\\\"}]},\\\"labelSeparation\\\":{\\\"anyOf\\\":[{\\\"description\\\":\\\"The minimum separation that must be between label bounding boxes for them to be considered non-overlapping (default `0`). This property is ignored if *labelOverlap* resolution is not enabled.\\\",\\\"type\\\":\\\"number\\\"},{\\\"$ref\\\":\\\"#/definitions/ExprRef\\\"}]},\\\"labels\\\":{\\\"anyOf\\\":[{\\\"description\\\":\\\"A boolean flag indicating if labels should be included as part of the axis.\\\\n\\\\n__Default value:__ `true`.\\\",\\\"type\\\":\\\"boolean\\\"},{\\\"$ref\\\":\\\"#/definitions/ExprRef\\\"}]},\\\"maxExtent\\\":{\\\"anyOf\\\":[{\\\"description\\\":\\\"The maximum extent in pixels that axis ticks and labels should use. This determines a maximum offset value for axis titles.\\\\n\\\\n__Default value:__ `undefined`.\\\",\\\"type\\\":\\\"number\\\"},{\\\"$ref\\\":\\\"#/definitions/ExprRef\\\"}]},\\\"minExtent\\\":{\\\"anyOf\\\":[{\\\"description\\\":\\\"The minimum extent in pixels that axis ticks and labels should use. This determines a minimum offset value for axis titles.\\\\n\\\\n__Default value:__ `30` for y-axis; `undefined` for x-axis.\\\",\\\"type\\\":\\\"number\\\"},{\\\"$ref\\\":\\\"#/definitions/ExprRef\\\"}]},\\\"offset\\\":{\\\"description\\\":\\\"The offset, in pixels, by which to displace the axis from the edge of the enclosing group or data rectangle.\\\\n\\\\n__Default value:__ derived from the [axis config](https://vega.github.io/vega-lite/docs/config.html#facet-scale-config)'s `offset` (`0` by default)\\\",\\\"type\\\":\\\"number\\\"},\\\"orient\\\":{\\\"anyOf\\\":[{\\\"$ref\\\":\\\"#/definitions/AxisOrient\\\"},{\\\"$ref\\\":\\\"#/definitions/ExprRef\\\"}],\\\"description\\\":\\\"The orientation of the axis. One of `\\\\\\\"top\\\\\\\"`, `\\\\\\\"bottom\\\\\\\"`, `\\\\\\\"left\\\\\\\"` or `\\\\\\\"right\\\\\\\"`. The orientation can be used to further specialize the axis type (e.g., a y-axis oriented towards the right edge of the chart).\\\\n\\\\n__Default value:__ `\\\\\\\"bottom\\\\\\\"` for x-axes and `\\\\\\\"left\\\\\\\"` for y-axes.\\\"},\\\"position\\\":{\\\"anyOf\\\":[{\\\"type\\\":\\\"number\\\"},{\\\"$ref\\\":\\\"#/definitions/ExprRef\\\"}],\\\"description\\\":\\\"The anchor position of the axis in pixels. For x-axes with top or bottom orientation, this sets the axis group x coordinate. For y-axes with left or right orientation, this sets the axis group y coordinate.\\\\n\\\\n__Default value__: `0`\\\"},\\\"style\\\":{\\\"anyOf\\\":[{\\\"type\\\":\\\"string\\\"},{\\\"items\\\":{\\\"type\\\":\\\"string\\\"},\\\"type\\\":\\\"array\\\"}],\\\"description\\\":\\\"A string or array of strings indicating the name of custom styles to apply to the axis. A style is a named collection of axis property defined within the [style configuration](https://vega.github.io/vega-lite/docs/mark.html#style-config). If style is an array, later styles will override earlier styles.\\\\n\\\\n__Default value:__ (none) __Note:__ Any specified style will augment the default style. For example, an x-axis mark with `\\\\\\\"style\\\\\\\": \\\\\\\"foo\\\\\\\"` will use `config.axisX` and `config.style.foo` (the specified style `\\\\\\\"foo\\\\\\\"` has higher precedence).\\\"},\\\"tickBand\\\":{\\\"anyOf\\\":[{\\\"description\\\":\\\"For band scales, indicates if ticks and grid lines should be placed at the `\\\\\\\"center\\\\\\\"` of a band (default) or at the band `\\\\\\\"extent\\\\\\\"`s to indicate intervals\\\",\\\"enum\\\":[\\\"center\\\",\\\"extent\\\"],\\\"type\\\":\\\"string\\\"},{\\\"$ref\\\":\\\"#/definitions/ExprRef\\\"}]},\\\"tickCap\\\":{\\\"anyOf\\\":[{\\\"$ref\\\":\\\"#/definitions/StrokeCap\\\",\\\"description\\\":\\\"The stroke cap for the tick lines' ending style. One of `\\\\\\\"butt\\\\\\\"`, `\\\\\\\"round\\\\\\\"` or `\\\\\\\"square\\\\\\\"`.\\\\n\\\\n__Default value:__ `\\\\\\\"butt\\\\\\\"`\\\"},{\\\"$ref\\\":\\\"#/definitions/ExprRef\\\"}]},\\\"tickColor\\\":{\\\"anyOf\\\":[{\\\"anyOf\\\":[{\\\"type\\\":\\\"null\\\"},{\\\"$ref\\\":\\\"#/definitions/Color\\\"}],\\\"description\\\":\\\"The color of the axis's tick.\\\\n\\\\n__Default value:__ `\\\\\\\"gray\\\\\\\"`\\\"},{\\\"$ref\\\":\\\"#/definitions/ExprRef\\\"},{\\\"$ref\\\":\\\"#/definitions/ConditionalAxisColor\\\"}]},\\\"tickCount\\\":{\\\"anyOf\\\":[{\\\"type\\\":\\\"number\\\"},{\\\"$ref\\\":\\\"#/definitions/TimeInterval\\\"},{\\\"$ref\\\":\\\"#/definitions/TimeIntervalStep\\\"},{\\\"$ref\\\":\\\"#/definitions/ExprRef\\\"}],\\\"description\\\":\\\"A desired number of ticks, for axes visualizing quantitative scales. The resulting number may be different so that values are \\\\\\\"nice\\\\\\\" (multiples of 2, 5, 10) and lie within the underlying scale's range.\\\\n\\\\nFor scales of type `\\\\\\\"time\\\\\\\"` or `\\\\\\\"utc\\\\\\\"`, the tick count can instead be a time interval specifier. Legal string values are `\\\\\\\"millisecond\\\\\\\"`, `\\\\\\\"second\\\\\\\"`, `\\\\\\\"minute\\\\\\\"`, `\\\\\\\"hour\\\\\\\"`, `\\\\\\\"day\\\\\\\"`, `\\\\\\\"week\\\\\\\"`, `\\\\\\\"month\\\\\\\"`, and `\\\\\\\"year\\\\\\\"`. Alternatively, an object-valued interval specifier of the form `{\\\\\\\"interval\\\\\\\": \\\\\\\"month\\\\\\\", \\\\\\\"step\\\\\\\": 3}` includes a desired number of interval steps. Here, ticks are generated for each quarter (Jan, Apr, Jul, Oct) boundary.\\\\n\\\\n__Default value__: Determine using a formula `ceil(width/40)` for x and `ceil(height/40)` for y.\\\",\\\"minimum\\\":0},\\\"tickDash\\\":{\\\"anyOf\\\":[{\\\"description\\\":\\\"An array of alternating [stroke, space] lengths for dashed tick mark lines.\\\",\\\"items\\\":{\\\"type\\\":\\\"number\\\"},\\\"type\\\":\\\"array\\\"},{\\\"$ref\\\":\\\"#/definitions/ExprRef\\\"},{\\\"$ref\\\":\\\"#/definitions/ConditionalAxisNumberArray\\\"}]},\\\"tickDashOffset\\\":{\\\"anyOf\\\":[{\\\"description\\\":\\\"The pixel offset at which to start drawing with the tick mark dash array.\\\",\\\"type\\\":\\\"number\\\"},{\\\"$ref\\\":\\\"#/definitions/ExprRef\\\"},{\\\"$ref\\\":\\\"#/definitions/ConditionalAxisNumber\\\"}]},\\\"tickExtra\\\":{\\\"anyOf\\\":[{\\\"description\\\":\\\"Boolean flag indicating if an extra axis tick should be added for the initial position of the axis. This flag is useful for styling axes for `band` scales such that ticks are placed on band boundaries rather in the middle of a band. Use in conjunction with `\\\\\\\"bandPosition\\\\\\\": 1` and an axis `\\\\\\\"padding\\\\\\\"` value of `0`.\\\",\\\"type\\\":\\\"boolean\\\"},{\\\"$ref\\\":\\\"#/definitions/ExprRef\\\"}]},\\\"tickMinStep\\\":{\\\"anyOf\\\":[{\\\"type\\\":\\\"number\\\"},{\\\"$ref\\\":\\\"#/definitions/ExprRef\\\"}],\\\"description\\\":\\\"The minimum desired step between axis ticks, in terms of scale domain values. For example, a value of `1` indicates that ticks should not be less than 1 unit apart. If `tickMinStep` is specified, the `tickCount` value will be adjusted, if necessary, to enforce the minimum step value.\\\"},\\\"tickOffset\\\":{\\\"anyOf\\\":[{\\\"description\\\":\\\"Position offset in pixels to apply to ticks, labels, and gridlines.\\\",\\\"type\\\":\\\"number\\\"},{\\\"$ref\\\":\\\"#/definitions/ExprRef\\\"}]},\\\"tickOpacity\\\":{\\\"anyOf\\\":[{\\\"description\\\":\\\"Opacity of the ticks.\\\",\\\"type\\\":\\\"number\\\"},{\\\"$ref\\\":\\\"#/definitions/ExprRef\\\"},{\\\"$ref\\\":\\\"#/definitions/ConditionalAxisNumber\\\"}]},\\\"tickRound\\\":{\\\"anyOf\\\":[{\\\"description\\\":\\\"Boolean flag indicating if pixel position values should be rounded to the nearest integer.\\\\n\\\\n__Default value:__ `true`\\\",\\\"type\\\":\\\"boolean\\\"},{\\\"$ref\\\":\\\"#/definitions/ExprRef\\\"}]},\\\"tickSize\\\":{\\\"anyOf\\\":[{\\\"description\\\":\\\"The size in pixels of axis ticks.\\\\n\\\\n__Default value:__ `5`\\\",\\\"minimum\\\":0,\\\"type\\\":\\\"number\\\"},{\\\"$ref\\\":\\\"#/definitions/ExprRef\\\"},{\\\"$ref\\\":\\\"#/definitions/ConditionalAxisNumber\\\"}]},\\\"tickWidth\\\":{\\\"anyOf\\\":[{\\\"description\\\":\\\"The width, in pixels, of ticks.\\\\n\\\\n__Default value:__ `1`\\\",\\\"minimum\\\":0,\\\"type\\\":\\\"number\\\"},{\\\"$ref\\\":\\\"#/definitions/ExprRef\\\"},{\\\"$ref\\\":\\\"#/definitions/ConditionalAxisNumber\\\"}]},\\\"ticks\\\":{\\\"anyOf\\\":[{\\\"description\\\":\\\"Boolean value that determines whether the axis should include ticks.\\\\n\\\\n__Default value:__ `true`\\\",\\\"type\\\":\\\"boolean\\\"},{\\\"$ref\\\":\\\"#/definitions/ExprRef\\\"}]},\\\"title\\\":{\\\"anyOf\\\":[{\\\"$ref\\\":\\\"#/definitions/Text\\\"},{\\\"type\\\":\\\"null\\\"}],\\\"description\\\":\\\"A title for the field. If `null`, the title will be removed.\\\\n\\\\n__Default value:__  derived from the field's name and transformation function (`aggregate`, `bin` and `timeUnit`). If the field has an aggregate function, the function is displayed as part of the title (e.g., `\\\\\\\"Sum of Profit\\\\\\\"`). If the field is binned or has a time unit applied, the applied function is shown in parentheses (e.g., `\\\\\\\"Profit (binned)\\\\\\\"`, `\\\\\\\"Transaction Date (year-month)\\\\\\\"`). Otherwise, the title is simply the field name.\\\\n\\\\n__Notes__:\\\\n\\\\n1) You can customize the default field title format by providing the [`fieldTitle`](https://vega.github.io/vega-lite/docs/config.html#top-level-config) property in the [config](https://vega.github.io/vega-lite/docs/config.html) or [`fieldTitle` function via the `compile` function's options](https://vega.github.io/vega-lite/docs/compile.html#field-title).\\\\n\\\\n2) If both field definition's `title` and axis, header, or legend `title` are defined, axis/header/legend title will be used.\\\"},\\\"titleAlign\\\":{\\\"anyOf\\\":[{\\\"$ref\\\":\\\"#/definitions/Align\\\",\\\"description\\\":\\\"Horizontal text alignment of axis titles.\\\"},{\\\"$ref\\\":\\\"#/definitions/ExprRef\\\"}]},\\\"titleAnchor\\\":{\\\"anyOf\\\":[{\\\"$ref\\\":\\\"#/definitions/TitleAnchor\\\",\\\"description\\\":\\\"Text anchor position for placing axis titles.\\\"},{\\\"$ref\\\":\\\"#/definitions/ExprRef\\\"}]},\\\"titleAngle\\\":{\\\"anyOf\\\":[{\\\"description\\\":\\\"Angle in degrees of axis titles.\\\",\\\"type\\\":\\\"number\\\"},{\\\"$ref\\\":\\\"#/definitions/ExprRef\\\"}]},\\\"titleBaseline\\\":{\\\"anyOf\\\":[{\\\"$ref\\\":\\\"#/definitions/TextBaseline\\\",\\\"description\\\":\\\"Vertical text baseline for axis titles. One of `\\\\\\\"alphabetic\\\\\\\"` (default), `\\\\\\\"top\\\\\\\"`, `\\\\\\\"middle\\\\\\\"`, `\\\\\\\"bottom\\\\\\\"`, `\\\\\\\"line-top\\\\\\\"`, or `\\\\\\\"line-bottom\\\\\\\"`. The `\\\\\\\"line-top\\\\\\\"` and `\\\\\\\"line-bottom\\\\\\\"` values operate similarly to `\\\\\\\"top\\\\\\\"` and `\\\\\\\"bottom\\\\\\\"`, but are calculated relative to the *lineHeight* rather than *fontSize* alone.\\\"},{\\\"$ref\\\":\\\"#/definitions/ExprRef\\\"}]},\\\"titleColor\\\":{\\\"anyOf\\\":[{\\\"anyOf\\\":[{\\\"type\\\":\\\"null\\\"},{\\\"$ref\\\":\\\"#/definitions/Color\\\"}],\\\"description\\\":\\\"Color of the title, can be in hex color code or regular color name.\\\"},{\\\"$ref\\\":\\\"#/definitions/ExprRef\\\"}]},\\\"titleFont\\\":{\\\"anyOf\\\":[{\\\"description\\\":\\\"Font of the title. (e.g., `\\\\\\\"Helvetica Neue\\\\\\\"`).\\\",\\\"type\\\":\\\"string\\\"},{\\\"$ref\\\":\\\"#/definitions/ExprRef\\\"}]},\\\"titleFontSize\\\":{\\\"anyOf\\\":[{\\\"description\\\":\\\"Font size of the title.\\\",\\\"minimum\\\":0,\\\"type\\\":\\\"number\\\"},{\\\"$ref\\\":\\\"#/definitions/ExprRef\\\"}]},\\\"titleFontStyle\\\":{\\\"anyOf\\\":[{\\\"$ref\\\":\\\"#/definitions/FontStyle\\\",\\\"description\\\":\\\"Font style of the title.\\\"},{\\\"$ref\\\":\\\"#/definitions/ExprRef\\\"}]},\\\"titleFontWeight\\\":{\\\"anyOf\\\":[{\\\"$ref\\\":\\\"#/definitions/FontWeight\\\",\\\"description\\\":\\\"Font weight of the title. This can be either a string (e.g `\\\\\\\"bold\\\\\\\"`, `\\\\\\\"normal\\\\\\\"`) or a number (`100`, `200`, `300`, ..., `900` where `\\\\\\\"normal\\\\\\\"` = `400` and `\\\\\\\"bold\\\\\\\"` = `700`).\\\"},{\\\"$ref\\\":\\\"#/definitions/ExprRef\\\"}]},\\\"titleLimit\\\":{\\\"anyOf\\\":[{\\\"description\\\":\\\"Maximum allowed pixel width of axis titles.\\\",\\\"minimum\\\":0,\\\"type\\\":\\\"number\\\"},{\\\"$ref\\\":\\\"#/definitions/ExprRef\\\"}]},\\\"titleLineHeight\\\":{\\\"anyOf\\\":[{\\\"description\\\":\\\"Line height in pixels for multi-line title text or title text with `\\\\\\\"line-top\\\\\\\"` or `\\\\\\\"line-bottom\\\\\\\"` baseline.\\\",\\\"type\\\":\\\"number\\\"},{\\\"$ref\\\":\\\"#/definitions/ExprRef\\\"}]},\\\"titleOpacity\\\":{\\\"anyOf\\\":[{\\\"description\\\":\\\"Opacity of the axis title.\\\",\\\"type\\\":\\\"number\\\"},{\\\"$ref\\\":\\\"#/definitions/ExprRef\\\"}]},\\\"titlePadding\\\":{\\\"anyOf\\\":[{\\\"description\\\":\\\"The padding, in pixels, between title and axis.\\\",\\\"type\\\":\\\"number\\\"},{\\\"$ref\\\":\\\"#/definitions/ExprRef\\\"}]},\\\"titleX\\\":{\\\"anyOf\\\":[{\\\"description\\\":\\\"X-coordinate of the axis title relative to the axis group.\\\",\\\"type\\\":\\\"number\\\"},{\\\"$ref\\\":\\\"#/definitions/ExprRef\\\"}]},\\\"titleY\\\":{\\\"anyOf\\\":[{\\\"description\\\":\\\"Y-coordinate of the axis title relative to the axis group.\\\",\\\"type\\\":\\\"number\\\"},{\\\"$ref\\\":\\\"#/definitions/ExprRef\\\"}]},\\\"translate\\\":{\\\"anyOf\\\":[{\\\"description\\\":\\\"Coordinate space translation offset for axis layout. By default, axes are translated by a 0.5 pixel offset for both the x and y coordinates in order to align stroked lines with the pixel grid. However, for vector graphics output these pixel-specific adjustments may be undesirable, in which case translate can be changed (for example, to zero).\\\\n\\\\n__Default value:__ `0.5`\\\",\\\"type\\\":\\\"number\\\"},{\\\"$ref\\\":\\\"#/definitions/ExprRef\\\"}]},\\\"values\\\":{\\\"anyOf\\\":[{\\\"items\\\":{\\\"type\\\":\\\"number\\\"},\\\"type\\\":\\\"array\\\"},{\\\"items\\\":{\\\"type\\\":\\\"string\\\"},\\\"type\\\":\\\"array\\\"},{\\\"items\\\":{\\\"type\\\":\\\"boolean\\\"},\\\"type\\\":\\\"array\\\"},{\\\"items\\\":{\\\"$ref\\\":\\\"#/definitions/DateTime\\\"},\\\"type\\\":\\\"array\\\"},{\\\"$ref\\\":\\\"#/definitions/ExprRef\\\"}],\\\"description\\\":\\\"Explicitly set the visible axis tick values.\\\"},\\\"zindex\\\":{\\\"description\\\":\\\"A non-negative integer indicating the z-index of the axis. If zindex is 0, axes should be drawn behind all chart elements. To put them in front, set `zindex` to `1` or more.\\\\n\\\\n__Default value:__ `0` (behind the marks).\\\",\\\"minimum\\\":0,\\\"type\\\":\\\"number\\\"}},\\\"type\\\":\\\"object\\\"},\\\"AxisConfig\\\":{\\\"additionalProperties\\\":false,\\\"properties\\\":{\\\"aria\\\":{\\\"anyOf\\\":[{\\\"description\\\":\\\"A boolean flag indicating if [ARIA attributes](https://developer.mozilla.org/en-US/docs/Web/Accessibility/ARIA) should be included (SVG output only). If `false`, the \\\\\\\"aria-hidden\\\\\\\" attribute will be set on the output SVG group, removing the axis from the ARIA accessibility tree.\\\\n\\\\n__Default value:__ `true`\\\",\\\"type\\\":\\\"boolean\\\"},{\\\"$ref\\\":\\\"#/definitions/ExprRef\\\"}]},\\\"bandPosition\\\":{\\\"anyOf\\\":[{\\\"description\\\":\\\"An interpolation fraction indicating where, for `band` scales, axis ticks should be positioned. A value of `0` places ticks at the left edge of their bands. A value of `0.5` places ticks in the middle of their bands.\\\\n\\\\n  __Default value:__ `0.5`\\\",\\\"type\\\":\\\"number\\\"},{\\\"$ref\\\":\\\"#/definitions/ExprRef\\\"}]},\\\"description\\\":{\\\"anyOf\\\":[{\\\"description\\\":\\\"A text description of this axis for [ARIA accessibility](https://developer.mozilla.org/en-US/docs/Web/Accessibility/ARIA) (SVG output only). If the `aria` property is true, for SVG output the [\\\\\\\"aria-label\\\\\\\" attribute](https://developer.mozilla.org/en-US/docs/Web/Accessibility/ARIA/ARIA_Techniques/Using_the_aria-label_attribute) will be set to this description. If the description is unspecified it will be automatically generated.\\\",\\\"type\\\":\\\"string\\\"},{\\\"$ref\\\":\\\"#/definitions/ExprRef\\\"}]},\\\"disable\\\":{\\\"description\\\":\\\"Disable axis by default.\\\",\\\"type\\\":\\\"boolean\\\"},\\\"domain\\\":{\\\"anyOf\\\":[{\\\"description\\\":\\\"A boolean flag indicating if the domain (the axis baseline) should be included as part of the axis.\\\\n\\\\n__Default value:__ `true`\\\",\\\"type\\\":\\\"boolean\\\"},{\\\"$ref\\\":\\\"#/definitions/ExprRef\\\"}]},\\\"domainCap\\\":{\\\"anyOf\\\":[{\\\"$ref\\\":\\\"#/definitions/StrokeCap\\\",\\\"description\\\":\\\"The stroke cap for the domain line's ending style. One of `\\\\\\\"butt\\\\\\\"`, `\\\\\\\"round\\\\\\\"` or `\\\\\\\"square\\\\\\\"`.\\\\n\\\\n__Default value:__ `\\\\\\\"butt\\\\\\\"`\\\"},{\\\"$ref\\\":\\\"#/definitions/ExprRef\\\"}]},\\\"domainColor\\\":{\\\"anyOf\\\":[{\\\"anyOf\\\":[{\\\"type\\\":\\\"null\\\"},{\\\"$ref\\\":\\\"#/definitions/Color\\\"}],\\\"description\\\":\\\"Color of axis domain line.\\\\n\\\\n__Default value:__ `\\\\\\\"gray\\\\\\\"`.\\\"},{\\\"$ref\\\":\\\"#/definitions/ExprRef\\\"}]},\\\"domainDash\\\":{\\\"anyOf\\\":[{\\\"description\\\":\\\"An array of alternating [stroke, space] lengths for dashed domain lines.\\\",\\\"items\\\":{\\\"type\\\":\\\"number\\\"},\\\"type\\\":\\\"array\\\"},{\\\"$ref\\\":\\\"#/definitions/ExprRef\\\"}]},\\\"domainDashOffset\\\":{\\\"anyOf\\\":[{\\\"description\\\":\\\"The pixel offset at which to start drawing with the domain dash array.\\\",\\\"type\\\":\\\"number\\\"},{\\\"$ref\\\":\\\"#/definitions/ExprRef\\\"}]},\\\"domainOpacity\\\":{\\\"anyOf\\\":[{\\\"description\\\":\\\"Opacity of the axis domain line.\\\",\\\"type\\\":\\\"number\\\"},{\\\"$ref\\\":\\\"#/definitions/ExprRef\\\"}]},\\\"domainWidth\\\":{\\\"anyOf\\\":[{\\\"description\\\":\\\"Stroke width of axis domain line\\\\n\\\\n__Default value:__ `1`\\\",\\\"type\\\":\\\"number\\\"},{\\\"$ref\\\":\\\"#/definitions/ExprRef\\\"}]},\\\"format\\\":{\\\"anyOf\\\":[{\\\"type\\\":\\\"string\\\"},{\\\"$ref\\\":\\\"#/definitions/Dict<unknown>\\\"}],\\\"description\\\":\\\"When used with the default `\\\\\\\"number\\\\\\\"` and `\\\\\\\"time\\\\\\\"` format type, the text formatting pattern for labels of guides (axes, legends, headers) and text marks.\\\\n\\\\n- If the format type is `\\\\\\\"number\\\\\\\"` (e.g., for quantitative fields), this is D3's [number format pattern](https://github.com/d3/d3-format#locale_format). - If the format type is `\\\\\\\"time\\\\\\\"` (e.g., for temporal fields), this is D3's [time format pattern](https://github.com/d3/d3-time-format#locale_format).\\\\n\\\\nSee the [format documentation](https://vega.github.io/vega-lite/docs/format.html) for more examples.\\\\n\\\\nWhen used with a [custom `formatType`](https://vega.github.io/vega-lite/docs/config.html#custom-format-type), this value will be passed as `format` alongside `datum.value` to the registered function.\\\\n\\\\n__Default value:__  Derived from [numberFormat](https://vega.github.io/vega-lite/docs/config.html#format) config for number format and from [timeFormat](https://vega.github.io/vega-lite/docs/config.html#format) config for time format.\\\"},\\\"formatType\\\":{\\\"description\\\":\\\"The format type for labels. One of `\\\\\\\"number\\\\\\\"`, `\\\\\\\"time\\\\\\\"`, or a [registered custom format type](https://vega.github.io/vega-lite/docs/config.html#custom-format-type).\\\\n\\\\n__Default value:__ - `\\\\\\\"time\\\\\\\"` for temporal fields and ordinal and nominal fields with `timeUnit`. - `\\\\\\\"number\\\\\\\"` for quantitative fields as well as ordinal and nominal fields without `timeUnit`.\\\",\\\"type\\\":\\\"string\\\"},\\\"grid\\\":{\\\"description\\\":\\\"A boolean flag indicating if grid lines should be included as part of the axis\\\\n\\\\n__Default value:__ `true` for [continuous scales](https://vega.github.io/vega-lite/docs/scale.html#continuous) that are not binned; otherwise, `false`.\\\",\\\"type\\\":\\\"boolean\\\"},\\\"gridCap\\\":{\\\"anyOf\\\":[{\\\"$ref\\\":\\\"#/definitions/StrokeCap\\\",\\\"description\\\":\\\"The stroke cap for grid lines' ending style. One of `\\\\\\\"butt\\\\\\\"`, `\\\\\\\"round\\\\\\\"` or `\\\\\\\"square\\\\\\\"`.\\\\n\\\\n__Default value:__ `\\\\\\\"butt\\\\\\\"`\\\"},{\\\"$ref\\\":\\\"#/definitions/ExprRef\\\"}]},\\\"gridColor\\\":{\\\"anyOf\\\":[{\\\"anyOf\\\":[{\\\"type\\\":\\\"null\\\"},{\\\"$ref\\\":\\\"#/definitions/Color\\\"}],\\\"description\\\":\\\"Color of gridlines.\\\\n\\\\n__Default value:__ `\\\\\\\"lightGray\\\\\\\"`.\\\"},{\\\"$ref\\\":\\\"#/definitions/ExprRef\\\"},{\\\"$ref\\\":\\\"#/definitions/ConditionalAxisColor\\\"}]},\\\"gridDash\\\":{\\\"anyOf\\\":[{\\\"description\\\":\\\"An array of alternating [stroke, space] lengths for dashed grid lines.\\\",\\\"items\\\":{\\\"type\\\":\\\"number\\\"},\\\"type\\\":\\\"array\\\"},{\\\"$ref\\\":\\\"#/definitions/ExprRef\\\"},{\\\"$ref\\\":\\\"#/definitions/ConditionalAxisNumberArray\\\"}]},\\\"gridDashOffset\\\":{\\\"anyOf\\\":[{\\\"description\\\":\\\"The pixel offset at which to start drawing with the grid dash array.\\\",\\\"type\\\":\\\"number\\\"},{\\\"$ref\\\":\\\"#/definitions/ExprRef\\\"},{\\\"$ref\\\":\\\"#/definitions/ConditionalAxisNumber\\\"}]},\\\"gridOpacity\\\":{\\\"anyOf\\\":[{\\\"description\\\":\\\"The stroke opacity of grid (value between [0,1])\\\\n\\\\n__Default value:__ `1`\\\",\\\"maximum\\\":1,\\\"minimum\\\":0,\\\"type\\\":\\\"number\\\"},{\\\"$ref\\\":\\\"#/definitions/ExprRef\\\"},{\\\"$ref\\\":\\\"#/definitions/ConditionalAxisNumber\\\"}]},\\\"gridWidth\\\":{\\\"anyOf\\\":[{\\\"description\\\":\\\"The grid width, in pixels.\\\\n\\\\n__Default value:__ `1`\\\",\\\"minimum\\\":0,\\\"type\\\":\\\"number\\\"},{\\\"$ref\\\":\\\"#/definitions/ExprRef\\\"},{\\\"$ref\\\":\\\"#/definitions/ConditionalAxisNumber\\\"}]},\\\"labelAlign\\\":{\\\"anyOf\\\":[{\\\"$ref\\\":\\\"#/definitions/Align\\\",\\\"description\\\":\\\"Horizontal text alignment of axis tick labels, overriding the default setting for the current axis orientation.\\\"},{\\\"$ref\\\":\\\"#/definitions/ExprRef\\\"},{\\\"$ref\\\":\\\"#/definitions/ConditionalAxisLabelAlign\\\"}]},\\\"labelAngle\\\":{\\\"anyOf\\\":[{\\\"description\\\":\\\"The rotation angle of the axis labels.\\\\n\\\\n__Default value:__ `-90` for nominal and ordinal fields; `0` otherwise.\\\",\\\"maximum\\\":360,\\\"minimum\\\":-360,\\\"type\\\":\\\"number\\\"},{\\\"$ref\\\":\\\"#/definitions/ExprRef\\\"}]},\\\"labelBaseline\\\":{\\\"anyOf\\\":[{\\\"$ref\\\":\\\"#/definitions/TextBaseline\\\",\\\"description\\\":\\\"Vertical text baseline of axis tick labels, overriding the default setting for the current axis orientation. One of `\\\\\\\"alphabetic\\\\\\\"` (default), `\\\\\\\"top\\\\\\\"`, `\\\\\\\"middle\\\\\\\"`, `\\\\\\\"bottom\\\\\\\"`, `\\\\\\\"line-top\\\\\\\"`, or `\\\\\\\"line-bottom\\\\\\\"`. The `\\\\\\\"line-top\\\\\\\"` and `\\\\\\\"line-bottom\\\\\\\"` values operate similarly to `\\\\\\\"top\\\\\\\"` and `\\\\\\\"bottom\\\\\\\"`, but are calculated relative to the *lineHeight* rather than *fontSize* alone.\\\"},{\\\"$ref\\\":\\\"#/definitions/ExprRef\\\"},{\\\"$ref\\\":\\\"#/definitions/ConditionalAxisLabelBaseline\\\"}]},\\\"labelBound\\\":{\\\"anyOf\\\":[{\\\"description\\\":\\\"Indicates if labels should be hidden if they exceed the axis range. If `false` (the default) no bounds overlap analysis is performed. If `true`, labels will be hidden if they exceed the axis range by more than 1 pixel. If this property is a number, it specifies the pixel tolerance: the maximum amount by which a label bounding box may exceed the axis range.\\\\n\\\\n__Default value:__ `false`.\\\",\\\"type\\\":[\\\"number\\\",\\\"boolean\\\"]},{\\\"$ref\\\":\\\"#/definitions/ExprRef\\\"}]},\\\"labelColor\\\":{\\\"anyOf\\\":[{\\\"anyOf\\\":[{\\\"type\\\":\\\"null\\\"},{\\\"$ref\\\":\\\"#/definitions/Color\\\"}],\\\"description\\\":\\\"The color of the tick label, can be in hex color code or regular color name.\\\"},{\\\"$ref\\\":\\\"#/definitions/ExprRef\\\"},{\\\"$ref\\\":\\\"#/definitions/ConditionalAxisColor\\\"}]},\\\"labelExpr\\\":{\\\"description\\\":\\\"[Vega expression](https://vega.github.io/vega/docs/expressions/) for customizing labels text.\\\\n\\\\n__Note:__ The label text and value can be assessed via the `label` and `value` properties of the axis's backing `datum` object.\\\",\\\"type\\\":\\\"string\\\"},\\\"labelFlush\\\":{\\\"description\\\":\\\"Indicates if the first and last axis labels should be aligned flush with the scale range. Flush alignment for a horizontal axis will left-align the first label and right-align the last label. For vertical axes, bottom and top text baselines are applied instead. If this property is a number, it also indicates the number of pixels by which to offset the first and last labels; for example, a value of 2 will flush-align the first and last labels and also push them 2 pixels outward from the center of the axis. The additional adjustment can sometimes help the labels better visually group with corresponding axis ticks.\\\\n\\\\n__Default value:__ `true` for axis of a continuous x-scale. Otherwise, `false`.\\\",\\\"type\\\":[\\\"boolean\\\",\\\"number\\\"]},\\\"labelFlushOffset\\\":{\\\"anyOf\\\":[{\\\"description\\\":\\\"Indicates the number of pixels by which to offset flush-adjusted labels. For example, a value of `2` will push flush-adjusted labels 2 pixels outward from the center of the axis. Offsets can help the labels better visually group with corresponding axis ticks.\\\\n\\\\n__Default value:__ `0`.\\\",\\\"type\\\":\\\"number\\\"},{\\\"$ref\\\":\\\"#/definitions/ExprRef\\\"}]},\\\"labelFont\\\":{\\\"anyOf\\\":[{\\\"description\\\":\\\"The font of the tick label.\\\",\\\"type\\\":\\\"string\\\"},{\\\"$ref\\\":\\\"#/definitions/ExprRef\\\"},{\\\"$ref\\\":\\\"#/definitions/ConditionalAxisString\\\"}]},\\\"labelFontSize\\\":{\\\"anyOf\\\":[{\\\"description\\\":\\\"The font size of the label, in pixels.\\\",\\\"minimum\\\":0,\\\"type\\\":\\\"number\\\"},{\\\"$ref\\\":\\\"#/definitions/ExprRef\\\"},{\\\"$ref\\\":\\\"#/definitions/ConditionalAxisNumber\\\"}]},\\\"labelFontStyle\\\":{\\\"anyOf\\\":[{\\\"$ref\\\":\\\"#/definitions/FontStyle\\\",\\\"description\\\":\\\"Font style of the title.\\\"},{\\\"$ref\\\":\\\"#/definitions/ExprRef\\\"},{\\\"$ref\\\":\\\"#/definitions/ConditionalAxisLabelFontStyle\\\"}]},\\\"labelFontWeight\\\":{\\\"anyOf\\\":[{\\\"$ref\\\":\\\"#/definitions/FontWeight\\\",\\\"description\\\":\\\"Font weight of axis tick labels.\\\"},{\\\"$ref\\\":\\\"#/definitions/ExprRef\\\"},{\\\"$ref\\\":\\\"#/definitions/ConditionalAxisLabelFontWeight\\\"}]},\\\"labelLimit\\\":{\\\"anyOf\\\":[{\\\"description\\\":\\\"Maximum allowed pixel width of axis tick labels.\\\\n\\\\n__Default value:__ `180`\\\",\\\"type\\\":\\\"number\\\"},{\\\"$ref\\\":\\\"#/definitions/ExprRef\\\"}]},\\\"labelLineHeight\\\":{\\\"anyOf\\\":[{\\\"description\\\":\\\"Line height in pixels for multi-line label text or label text with `\\\\\\\"line-top\\\\\\\"` or `\\\\\\\"line-bottom\\\\\\\"` baseline.\\\",\\\"type\\\":\\\"number\\\"},{\\\"$ref\\\":\\\"#/definitions/ExprRef\\\"}]},\\\"labelOffset\\\":{\\\"anyOf\\\":[{\\\"description\\\":\\\"Position offset in pixels to apply to labels, in addition to tickOffset.\\\\n\\\\n__Default value:__ `0`\\\",\\\"type\\\":\\\"number\\\"},{\\\"$ref\\\":\\\"#/definitions/ExprRef\\\"},{\\\"$ref\\\":\\\"#/definitions/ConditionalAxisNumber\\\"}]},\\\"labelOpacity\\\":{\\\"anyOf\\\":[{\\\"description\\\":\\\"The opacity of the labels.\\\",\\\"type\\\":\\\"number\\\"},{\\\"$ref\\\":\\\"#/definitions/ExprRef\\\"},{\\\"$ref\\\":\\\"#/definitions/ConditionalAxisNumber\\\"}]},\\\"labelOverlap\\\":{\\\"anyOf\\\":[{\\\"$ref\\\":\\\"#/definitions/LabelOverlap\\\"},{\\\"$ref\\\":\\\"#/definitions/ExprRef\\\"}],\\\"description\\\":\\\"The strategy to use for resolving overlap of axis labels. If `false` (the default), no overlap reduction is attempted. If set to `true` or `\\\\\\\"parity\\\\\\\"`, a strategy of removing every other label is used (this works well for standard linear axes). If set to `\\\\\\\"greedy\\\\\\\"`, a linear scan of the labels is performed, removing any labels that overlaps with the last visible label (this often works better for log-scaled axes).\\\\n\\\\n__Default value:__ `true` for non-nominal fields with non-log scales; `\\\\\\\"greedy\\\\\\\"` for log scales; otherwise `false`.\\\"},\\\"labelPadding\\\":{\\\"anyOf\\\":[{\\\"description\\\":\\\"The padding in pixels between labels and ticks.\\\\n\\\\n__Default value:__ `2`\\\",\\\"type\\\":\\\"number\\\"},{\\\"$ref\\\":\\\"#/definitions/ExprRef\\\"},{\\\"$ref\\\":\\\"#/definitions/ConditionalAxisNumber\\\"}]},\\\"labelSeparation\\\":{\\\"anyOf\\\":[{\\\"description\\\":\\\"The minimum separation that must be between label bounding boxes for them to be considered non-overlapping (default `0`). This property is ignored if *labelOverlap* resolution is not enabled.\\\",\\\"type\\\":\\\"number\\\"},{\\\"$ref\\\":\\\"#/definitions/ExprRef\\\"}]},\\\"labels\\\":{\\\"anyOf\\\":[{\\\"description\\\":\\\"A boolean flag indicating if labels should be included as part of the axis.\\\\n\\\\n__Default value:__ `true`.\\\",\\\"type\\\":\\\"boolean\\\"},{\\\"$ref\\\":\\\"#/definitions/ExprRef\\\"}]},\\\"maxExtent\\\":{\\\"anyOf\\\":[{\\\"description\\\":\\\"The maximum extent in pixels that axis ticks and labels should use. This determines a maximum offset value for axis titles.\\\\n\\\\n__Default value:__ `undefined`.\\\",\\\"type\\\":\\\"number\\\"},{\\\"$ref\\\":\\\"#/definitions/ExprRef\\\"}]},\\\"minExtent\\\":{\\\"anyOf\\\":[{\\\"description\\\":\\\"The minimum extent in pixels that axis ticks and labels should use. This determines a minimum offset value for axis titles.\\\\n\\\\n__Default value:__ `30` for y-axis; `undefined` for x-axis.\\\",\\\"type\\\":\\\"number\\\"},{\\\"$ref\\\":\\\"#/definitions/ExprRef\\\"}]},\\\"offset\\\":{\\\"description\\\":\\\"The offset, in pixels, by which to displace the axis from the edge of the enclosing group or data rectangle.\\\\n\\\\n__Default value:__ derived from the [axis config](https://vega.github.io/vega-lite/docs/config.html#facet-scale-config)'s `offset` (`0` by default)\\\",\\\"type\\\":\\\"number\\\"},\\\"orient\\\":{\\\"anyOf\\\":[{\\\"$ref\\\":\\\"#/definitions/AxisOrient\\\"},{\\\"$ref\\\":\\\"#/definitions/ExprRef\\\"}],\\\"description\\\":\\\"The orientation of the axis. One of `\\\\\\\"top\\\\\\\"`, `\\\\\\\"bottom\\\\\\\"`, `\\\\\\\"left\\\\\\\"` or `\\\\\\\"right\\\\\\\"`. The orientation can be used to further specialize the axis type (e.g., a y-axis oriented towards the right edge of the chart).\\\\n\\\\n__Default value:__ `\\\\\\\"bottom\\\\\\\"` for x-axes and `\\\\\\\"left\\\\\\\"` for y-axes.\\\"},\\\"position\\\":{\\\"anyOf\\\":[{\\\"type\\\":\\\"number\\\"},{\\\"$ref\\\":\\\"#/definitions/ExprRef\\\"}],\\\"description\\\":\\\"The anchor position of the axis in pixels. For x-axes with top or bottom orientation, this sets the axis group x coordinate. For y-axes with left or right orientation, this sets the axis group y coordinate.\\\\n\\\\n__Default value__: `0`\\\"},\\\"style\\\":{\\\"anyOf\\\":[{\\\"type\\\":\\\"string\\\"},{\\\"items\\\":{\\\"type\\\":\\\"string\\\"},\\\"type\\\":\\\"array\\\"}],\\\"description\\\":\\\"A string or array of strings indicating the name of custom styles to apply to the axis. A style is a named collection of axis property defined within the [style configuration](https://vega.github.io/vega-lite/docs/mark.html#style-config). If style is an array, later styles will override earlier styles.\\\\n\\\\n__Default value:__ (none) __Note:__ Any specified style will augment the default style. For example, an x-axis mark with `\\\\\\\"style\\\\\\\": \\\\\\\"foo\\\\\\\"` will use `config.axisX` and `config.style.foo` (the specified style `\\\\\\\"foo\\\\\\\"` has higher precedence).\\\"},\\\"tickBand\\\":{\\\"anyOf\\\":[{\\\"description\\\":\\\"For band scales, indicates if ticks and grid lines should be placed at the `\\\\\\\"center\\\\\\\"` of a band (default) or at the band `\\\\\\\"extent\\\\\\\"`s to indicate intervals\\\",\\\"enum\\\":[\\\"center\\\",\\\"extent\\\"],\\\"type\\\":\\\"string\\\"},{\\\"$ref\\\":\\\"#/definitions/ExprRef\\\"}]},\\\"tickCap\\\":{\\\"anyOf\\\":[{\\\"$ref\\\":\\\"#/definitions/StrokeCap\\\",\\\"description\\\":\\\"The stroke cap for the tick lines' ending style. One of `\\\\\\\"butt\\\\\\\"`, `\\\\\\\"round\\\\\\\"` or `\\\\\\\"square\\\\\\\"`.\\\\n\\\\n__Default value:__ `\\\\\\\"butt\\\\\\\"`\\\"},{\\\"$ref\\\":\\\"#/definitions/ExprRef\\\"}]},\\\"tickColor\\\":{\\\"anyOf\\\":[{\\\"anyOf\\\":[{\\\"type\\\":\\\"null\\\"},{\\\"$ref\\\":\\\"#/definitions/Color\\\"}],\\\"description\\\":\\\"The color of the axis's tick.\\\\n\\\\n__Default value:__ `\\\\\\\"gray\\\\\\\"`\\\"},{\\\"$ref\\\":\\\"#/definitions/ExprRef\\\"},{\\\"$ref\\\":\\\"#/definitions/ConditionalAxisColor\\\"}]},\\\"tickCount\\\":{\\\"anyOf\\\":[{\\\"type\\\":\\\"number\\\"},{\\\"$ref\\\":\\\"#/definitions/TimeInterval\\\"},{\\\"$ref\\\":\\\"#/definitions/TimeIntervalStep\\\"},{\\\"$ref\\\":\\\"#/definitions/ExprRef\\\"}],\\\"description\\\":\\\"A desired number of ticks, for axes visualizing quantitative scales. The resulting number may be different so that values are \\\\\\\"nice\\\\\\\" (multiples of 2, 5, 10) and lie within the underlying scale's range.\\\\n\\\\nFor scales of type `\\\\\\\"time\\\\\\\"` or `\\\\\\\"utc\\\\\\\"`, the tick count can instead be a time interval specifier. Legal string values are `\\\\\\\"millisecond\\\\\\\"`, `\\\\\\\"second\\\\\\\"`, `\\\\\\\"minute\\\\\\\"`, `\\\\\\\"hour\\\\\\\"`, `\\\\\\\"day\\\\\\\"`, `\\\\\\\"week\\\\\\\"`, `\\\\\\\"month\\\\\\\"`, and `\\\\\\\"year\\\\\\\"`. Alternatively, an object-valued interval specifier of the form `{\\\\\\\"interval\\\\\\\": \\\\\\\"month\\\\\\\", \\\\\\\"step\\\\\\\": 3}` includes a desired number of interval steps. Here, ticks are generated for each quarter (Jan, Apr, Jul, Oct) boundary.\\\\n\\\\n__Default value__: Determine using a formula `ceil(width/40)` for x and `ceil(height/40)` for y.\\\",\\\"minimum\\\":0},\\\"tickDash\\\":{\\\"anyOf\\\":[{\\\"description\\\":\\\"An array of alternating [stroke, space] lengths for dashed tick mark lines.\\\",\\\"items\\\":{\\\"type\\\":\\\"number\\\"},\\\"type\\\":\\\"array\\\"},{\\\"$ref\\\":\\\"#/definitions/ExprRef\\\"},{\\\"$ref\\\":\\\"#/definitions/ConditionalAxisNumberArray\\\"}]},\\\"tickDashOffset\\\":{\\\"anyOf\\\":[{\\\"description\\\":\\\"The pixel offset at which to start drawing with the tick mark dash array.\\\",\\\"type\\\":\\\"number\\\"},{\\\"$ref\\\":\\\"#/definitions/ExprRef\\\"},{\\\"$ref\\\":\\\"#/definitions/ConditionalAxisNumber\\\"}]},\\\"tickExtra\\\":{\\\"anyOf\\\":[{\\\"description\\\":\\\"Boolean flag indicating if an extra axis tick should be added for the initial position of the axis. This flag is useful for styling axes for `band` scales such that ticks are placed on band boundaries rather in the middle of a band. Use in conjunction with `\\\\\\\"bandPosition\\\\\\\": 1` and an axis `\\\\\\\"padding\\\\\\\"` value of `0`.\\\",\\\"type\\\":\\\"boolean\\\"},{\\\"$ref\\\":\\\"#/definitions/ExprRef\\\"}]},\\\"tickMinStep\\\":{\\\"anyOf\\\":[{\\\"type\\\":\\\"number\\\"},{\\\"$ref\\\":\\\"#/definitions/ExprRef\\\"}],\\\"description\\\":\\\"The minimum desired step between axis ticks, in terms of scale domain values. For example, a value of `1` indicates that ticks should not be less than 1 unit apart. If `tickMinStep` is specified, the `tickCount` value will be adjusted, if necessary, to enforce the minimum step value.\\\"},\\\"tickOffset\\\":{\\\"anyOf\\\":[{\\\"description\\\":\\\"Position offset in pixels to apply to ticks, labels, and gridlines.\\\",\\\"type\\\":\\\"number\\\"},{\\\"$ref\\\":\\\"#/definitions/ExprRef\\\"}]},\\\"tickOpacity\\\":{\\\"anyOf\\\":[{\\\"description\\\":\\\"Opacity of the ticks.\\\",\\\"type\\\":\\\"number\\\"},{\\\"$ref\\\":\\\"#/definitions/ExprRef\\\"},{\\\"$ref\\\":\\\"#/definitions/ConditionalAxisNumber\\\"}]},\\\"tickRound\\\":{\\\"anyOf\\\":[{\\\"description\\\":\\\"Boolean flag indicating if pixel position values should be rounded to the nearest integer.\\\\n\\\\n__Default value:__ `true`\\\",\\\"type\\\":\\\"boolean\\\"},{\\\"$ref\\\":\\\"#/definitions/ExprRef\\\"}]},\\\"tickSize\\\":{\\\"anyOf\\\":[{\\\"description\\\":\\\"The size in pixels of axis ticks.\\\\n\\\\n__Default value:__ `5`\\\",\\\"minimum\\\":0,\\\"type\\\":\\\"number\\\"},{\\\"$ref\\\":\\\"#/definitions/ExprRef\\\"},{\\\"$ref\\\":\\\"#/definitions/ConditionalAxisNumber\\\"}]},\\\"tickWidth\\\":{\\\"anyOf\\\":[{\\\"description\\\":\\\"The width, in pixels, of ticks.\\\\n\\\\n__Default value:__ `1`\\\",\\\"minimum\\\":0,\\\"type\\\":\\\"number\\\"},{\\\"$ref\\\":\\\"#/definitions/ExprRef\\\"},{\\\"$ref\\\":\\\"#/definitions/ConditionalAxisNumber\\\"}]},\\\"ticks\\\":{\\\"anyOf\\\":[{\\\"description\\\":\\\"Boolean value that determines whether the axis should include ticks.\\\\n\\\\n__Default value:__ `true`\\\",\\\"type\\\":\\\"boolean\\\"},{\\\"$ref\\\":\\\"#/definitions/ExprRef\\\"}]},\\\"title\\\":{\\\"anyOf\\\":[{\\\"$ref\\\":\\\"#/definitions/Text\\\"},{\\\"type\\\":\\\"null\\\"}],\\\"description\\\":\\\"A title for the field. If `null`, the title will be removed.\\\\n\\\\n__Default value:__  derived from the field's name and transformation function (`aggregate`, `bin` and `timeUnit`). If the field has an aggregate function, the function is displayed as part of the title (e.g., `\\\\\\\"Sum of Profit\\\\\\\"`). If the field is binned or has a time unit applied, the applied function is shown in parentheses (e.g., `\\\\\\\"Profit (binned)\\\\\\\"`, `\\\\\\\"Transaction Date (year-month)\\\\\\\"`). Otherwise, the title is simply the field name.\\\\n\\\\n__Notes__:\\\\n\\\\n1) You can customize the default field title format by providing the [`fieldTitle`](https://vega.github.io/vega-lite/docs/config.html#top-level-config) property in the [config](https://vega.github.io/vega-lite/docs/config.html) or [`fieldTitle` function via the `compile` function's options](https://vega.github.io/vega-lite/docs/compile.html#field-title).\\\\n\\\\n2) If both field definition's `title` and axis, header, or legend `title` are defined, axis/header/legend title will be used.\\\"},\\\"titleAlign\\\":{\\\"anyOf\\\":[{\\\"$ref\\\":\\\"#/definitions/Align\\\",\\\"description\\\":\\\"Horizontal text alignment of axis titles.\\\"},{\\\"$ref\\\":\\\"#/definitions/ExprRef\\\"}]},\\\"titleAnchor\\\":{\\\"anyOf\\\":[{\\\"$ref\\\":\\\"#/definitions/TitleAnchor\\\",\\\"description\\\":\\\"Text anchor position for placing axis titles.\\\"},{\\\"$ref\\\":\\\"#/definitions/ExprRef\\\"}]},\\\"titleAngle\\\":{\\\"anyOf\\\":[{\\\"description\\\":\\\"Angle in degrees of axis titles.\\\",\\\"type\\\":\\\"number\\\"},{\\\"$ref\\\":\\\"#/definitions/ExprRef\\\"}]},\\\"titleBaseline\\\":{\\\"anyOf\\\":[{\\\"$ref\\\":\\\"#/definitions/TextBaseline\\\",\\\"description\\\":\\\"Vertical text baseline for axis titles. One of `\\\\\\\"alphabetic\\\\\\\"` (default), `\\\\\\\"top\\\\\\\"`, `\\\\\\\"middle\\\\\\\"`, `\\\\\\\"bottom\\\\\\\"`, `\\\\\\\"line-top\\\\\\\"`, or `\\\\\\\"line-bottom\\\\\\\"`. The `\\\\\\\"line-top\\\\\\\"` and `\\\\\\\"line-bottom\\\\\\\"` values operate similarly to `\\\\\\\"top\\\\\\\"` and `\\\\\\\"bottom\\\\\\\"`, but are calculated relative to the *lineHeight* rather than *fontSize* alone.\\\"},{\\\"$ref\\\":\\\"#/definitions/ExprRef\\\"}]},\\\"titleColor\\\":{\\\"anyOf\\\":[{\\\"anyOf\\\":[{\\\"type\\\":\\\"null\\\"},{\\\"$ref\\\":\\\"#/definitions/Color\\\"}],\\\"description\\\":\\\"Color of the title, can be in hex color code or regular color name.\\\"},{\\\"$ref\\\":\\\"#/definitions/ExprRef\\\"}]},\\\"titleFont\\\":{\\\"anyOf\\\":[{\\\"description\\\":\\\"Font of the title. (e.g., `\\\\\\\"Helvetica Neue\\\\\\\"`).\\\",\\\"type\\\":\\\"string\\\"},{\\\"$ref\\\":\\\"#/definitions/ExprRef\\\"}]},\\\"titleFontSize\\\":{\\\"anyOf\\\":[{\\\"description\\\":\\\"Font size of the title.\\\",\\\"minimum\\\":0,\\\"type\\\":\\\"number\\\"},{\\\"$ref\\\":\\\"#/definitions/ExprRef\\\"}]},\\\"titleFontStyle\\\":{\\\"anyOf\\\":[{\\\"$ref\\\":\\\"#/definitions/FontStyle\\\",\\\"description\\\":\\\"Font style of the title.\\\"},{\\\"$ref\\\":\\\"#/definitions/ExprRef\\\"}]},\\\"titleFontWeight\\\":{\\\"anyOf\\\":[{\\\"$ref\\\":\\\"#/definitions/FontWeight\\\",\\\"description\\\":\\\"Font weight of the title. This can be either a string (e.g `\\\\\\\"bold\\\\\\\"`, `\\\\\\\"normal\\\\\\\"`) or a number (`100`, `200`, `300`, ..., `900` where `\\\\\\\"normal\\\\\\\"` = `400` and `\\\\\\\"bold\\\\\\\"` = `700`).\\\"},{\\\"$ref\\\":\\\"#/definitions/ExprRef\\\"}]},\\\"titleLimit\\\":{\\\"anyOf\\\":[{\\\"description\\\":\\\"Maximum allowed pixel width of axis titles.\\\",\\\"minimum\\\":0,\\\"type\\\":\\\"number\\\"},{\\\"$ref\\\":\\\"#/definitions/ExprRef\\\"}]},\\\"titleLineHeight\\\":{\\\"anyOf\\\":[{\\\"description\\\":\\\"Line height in pixels for multi-line title text or title text with `\\\\\\\"line-top\\\\\\\"` or `\\\\\\\"line-bottom\\\\\\\"` baseline.\\\",\\\"type\\\":\\\"number\\\"},{\\\"$ref\\\":\\\"#/definitions/ExprRef\\\"}]},\\\"titleOpacity\\\":{\\\"anyOf\\\":[{\\\"description\\\":\\\"Opacity of the axis title.\\\",\\\"type\\\":\\\"number\\\"},{\\\"$ref\\\":\\\"#/definitions/ExprRef\\\"}]},\\\"titlePadding\\\":{\\\"anyOf\\\":[{\\\"description\\\":\\\"The padding, in pixels, between title and axis.\\\",\\\"type\\\":\\\"number\\\"},{\\\"$ref\\\":\\\"#/definitions/ExprRef\\\"}]},\\\"titleX\\\":{\\\"anyOf\\\":[{\\\"description\\\":\\\"X-coordinate of the axis title relative to the axis group.\\\",\\\"type\\\":\\\"number\\\"},{\\\"$ref\\\":\\\"#/definitions/ExprRef\\\"}]},\\\"titleY\\\":{\\\"anyOf\\\":[{\\\"description\\\":\\\"Y-coordinate of the axis title relative to the axis group.\\\",\\\"type\\\":\\\"number\\\"},{\\\"$ref\\\":\\\"#/definitions/ExprRef\\\"}]},\\\"translate\\\":{\\\"anyOf\\\":[{\\\"description\\\":\\\"Coordinate space translation offset for axis layout. By default, axes are translated by a 0.5 pixel offset for both the x and y coordinates in order to align stroked lines with the pixel grid. However, for vector graphics output these pixel-specific adjustments may be undesirable, in which case translate can be changed (for example, to zero).\\\\n\\\\n__Default value:__ `0.5`\\\",\\\"type\\\":\\\"number\\\"},{\\\"$ref\\\":\\\"#/definitions/ExprRef\\\"}]},\\\"values\\\":{\\\"anyOf\\\":[{\\\"items\\\":{\\\"type\\\":\\\"number\\\"},\\\"type\\\":\\\"array\\\"},{\\\"items\\\":{\\\"type\\\":\\\"string\\\"},\\\"type\\\":\\\"array\\\"},{\\\"items\\\":{\\\"type\\\":\\\"boolean\\\"},\\\"type\\\":\\\"array\\\"},{\\\"items\\\":{\\\"$ref\\\":\\\"#/definitions/DateTime\\\"},\\\"type\\\":\\\"array\\\"},{\\\"$ref\\\":\\\"#/definitions/ExprRef\\\"}],\\\"description\\\":\\\"Explicitly set the visible axis tick values.\\\"},\\\"zindex\\\":{\\\"description\\\":\\\"A non-negative integer indicating the z-index of the axis. If zindex is 0, axes should be drawn behind all chart elements. To put them in front, set `zindex` to `1` or more.\\\\n\\\\n__Default value:__ `0` (behind the marks).\\\",\\\"minimum\\\":0,\\\"type\\\":\\\"number\\\"}},\\\"type\\\":\\\"object\\\"},\\\"AxisOrient\\\":{\\\"enum\\\":[\\\"top\\\",\\\"bottom\\\",\\\"left\\\",\\\"right\\\"],\\\"type\\\":\\\"string\\\"},\\\"AxisResolveMap\\\":{\\\"additionalProperties\\\":false,\\\"properties\\\":{\\\"x\\\":{\\\"$ref\\\":\\\"#/definitions/ResolveMode\\\"},\\\"y\\\":{\\\"$ref\\\":\\\"#/definitions/ResolveMode\\\"}},\\\"type\\\":\\\"object\\\"},\\\"BarConfig\\\":{\\\"additionalProperties\\\":false,\\\"properties\\\":{\\\"align\\\":{\\\"anyOf\\\":[{\\\"$ref\\\":\\\"#/definitions/Align\\\"},{\\\"$ref\\\":\\\"#/definitions/ExprRef\\\"}],\\\"description\\\":\\\"The horizontal alignment of the text or ranged marks (area, bar, image, rect, rule). One of `\\\\\\\"left\\\\\\\"`, `\\\\\\\"right\\\\\\\"`, `\\\\\\\"center\\\\\\\"`.\\\\n\\\\n__Note:__ Expression reference is *not* supported for range marks.\\\"},\\\"angle\\\":{\\\"anyOf\\\":[{\\\"description\\\":\\\"The rotation angle of the text, in degrees.\\\",\\\"maximum\\\":360,\\\"minimum\\\":0,\\\"type\\\":\\\"number\\\"},{\\\"$ref\\\":\\\"#/definitions/ExprRef\\\"}]},\\\"aria\\\":{\\\"anyOf\\\":[{\\\"description\\\":\\\"A boolean flag indicating if [ARIA attributes](https://developer.mozilla.org/en-US/docs/Web/Accessibility/ARIA) should be included (SVG output only). If `false`, the \\\\\\\"aria-hidden\\\\\\\" attribute will be set on the output SVG element, removing the mark item from the ARIA accessibility tree.\\\",\\\"type\\\":\\\"boolean\\\"},{\\\"$ref\\\":\\\"#/definitions/ExprRef\\\"}]},\\\"ariaRole\\\":{\\\"anyOf\\\":[{\\\"description\\\":\\\"Sets the type of user interface element of the mark item for [ARIA accessibility](https://developer.mozilla.org/en-US/docs/Web/Accessibility/ARIA) (SVG output only). If specified, this property determines the \\\\\\\"role\\\\\\\" attribute. Warning: this property is experimental and may be changed in the future.\\\",\\\"type\\\":\\\"string\\\"},{\\\"$ref\\\":\\\"#/definitions/ExprRef\\\"}]},\\\"ariaRoleDescription\\\":{\\\"anyOf\\\":[{\\\"description\\\":\\\"A human-readable, author-localized description for the role of the mark item for [ARIA accessibility](https://developer.mozilla.org/en-US/docs/Web/Accessibility/ARIA) (SVG output only). If specified, this property determines the \\\\\\\"aria-roledescription\\\\\\\" attribute. Warning: this property is experimental and may be changed in the future.\\\",\\\"type\\\":\\\"string\\\"},{\\\"$ref\\\":\\\"#/definitions/ExprRef\\\"}]},\\\"aspect\\\":{\\\"anyOf\\\":[{\\\"description\\\":\\\"Whether to keep aspect ratio of image marks.\\\",\\\"type\\\":\\\"boolean\\\"},{\\\"$ref\\\":\\\"#/definitions/ExprRef\\\"}]},\\\"baseline\\\":{\\\"anyOf\\\":[{\\\"$ref\\\":\\\"#/definitions/TextBaseline\\\"},{\\\"$ref\\\":\\\"#/definitions/ExprRef\\\"}],\\\"description\\\":\\\"For text marks, the vertical text baseline. One of `\\\\\\\"alphabetic\\\\\\\"` (default), `\\\\\\\"top\\\\\\\"`, `\\\\\\\"middle\\\\\\\"`, `\\\\\\\"bottom\\\\\\\"`, `\\\\\\\"line-top\\\\\\\"`, `\\\\\\\"line-bottom\\\\\\\"`, or an expression reference that provides one of the valid values. The `\\\\\\\"line-top\\\\\\\"` and `\\\\\\\"line-bottom\\\\\\\"` values operate similarly to `\\\\\\\"top\\\\\\\"` and `\\\\\\\"bottom\\\\\\\"`, but are calculated relative to the `lineHeight` rather than `fontSize` alone.\\\\n\\\\nFor range marks, the vertical alignment of the marks. One of `\\\\\\\"top\\\\\\\"`, `\\\\\\\"middle\\\\\\\"`, `\\\\\\\"bottom\\\\\\\"`.\\\\n\\\\n__Note:__ Expression reference is *not* supported for range marks.\\\"},\\\"binSpacing\\\":{\\\"description\\\":\\\"Offset between bars for binned field. The ideal value for this is either 0 (preferred by statisticians) or 1 (Vega-Lite default, D3 example style).\\\\n\\\\n__Default value:__ `1`\\\",\\\"minimum\\\":0,\\\"type\\\":\\\"number\\\"},\\\"blend\\\":{\\\"anyOf\\\":[{\\\"$ref\\\":\\\"#/definitions/Blend\\\",\\\"description\\\":\\\"The color blend mode for drawing an item on its current background. Any valid [CSS mix-blend-mode](https://developer.mozilla.org/en-US/docs/Web/CSS/mix-blend-mode) value can be used.\\\\n\\\\n__Default value: `\\\\\\\"source-over\\\\\\\"`\\\"},{\\\"$ref\\\":\\\"#/definitions/ExprRef\\\"}]},\\\"color\\\":{\\\"anyOf\\\":[{\\\"$ref\\\":\\\"#/definitions/Color\\\"},{\\\"$ref\\\":\\\"#/definitions/Gradient\\\"},{\\\"$ref\\\":\\\"#/definitions/ExprRef\\\"}],\\\"description\\\":\\\"Default color.\\\\n\\\\n__Default value:__ <span style=\\\\\\\"color: #4682b4;\\\\\\\">&#9632;</span> `\\\\\\\"#4682b4\\\\\\\"`\\\\n\\\\n__Note:__ - This property cannot be used in a [style config](https://vega.github.io/vega-lite/docs/mark.html#style-config). - The `fill` and `stroke` properties have higher precedence than `color` and will override `color`.\\\"},\\\"continuousBandSize\\\":{\\\"description\\\":\\\"The default size of the bars on continuous scales.\\\\n\\\\n__Default value:__ `5`\\\",\\\"minimum\\\":0,\\\"type\\\":\\\"number\\\"},\\\"cornerRadius\\\":{\\\"anyOf\\\":[{\\\"description\\\":\\\"The radius in pixels of rounded rectangles or arcs' corners.\\\\n\\\\n__Default value:__ `0`\\\",\\\"type\\\":\\\"number\\\"},{\\\"$ref\\\":\\\"#/definitions/ExprRef\\\"}]},\\\"cornerRadiusBottomLeft\\\":{\\\"anyOf\\\":[{\\\"description\\\":\\\"The radius in pixels of rounded rectangles' bottom left corner.\\\\n\\\\n__Default value:__ `0`\\\",\\\"type\\\":\\\"number\\\"},{\\\"$ref\\\":\\\"#/definitions/ExprRef\\\"}]},\\\"cornerRadiusBottomRight\\\":{\\\"anyOf\\\":[{\\\"description\\\":\\\"The radius in pixels of rounded rectangles' bottom right corner.\\\\n\\\\n__Default value:__ `0`\\\",\\\"type\\\":\\\"number\\\"},{\\\"$ref\\\":\\\"#/definitions/ExprRef\\\"}]},\\\"cornerRadiusEnd\\\":{\\\"anyOf\\\":[{\\\"type\\\":\\\"number\\\"},{\\\"$ref\\\":\\\"#/definitions/ExprRef\\\"}],\\\"description\\\":\\\"- For vertical bars, top-left and top-right corner radius. - For horizontal bars, top-right and bottom-right corner radius.\\\"},\\\"cornerRadiusTopLeft\\\":{\\\"anyOf\\\":[{\\\"description\\\":\\\"The radius in pixels of rounded rectangles' top right corner.\\\\n\\\\n__Default value:__ `0`\\\",\\\"type\\\":\\\"number\\\"},{\\\"$ref\\\":\\\"#/definitions/ExprRef\\\"}]},\\\"cornerRadiusTopRight\\\":{\\\"anyOf\\\":[{\\\"description\\\":\\\"The radius in pixels of rounded rectangles' top left corner.\\\\n\\\\n__Default value:__ `0`\\\",\\\"type\\\":\\\"number\\\"},{\\\"$ref\\\":\\\"#/definitions/ExprRef\\\"}]},\\\"cursor\\\":{\\\"anyOf\\\":[{\\\"$ref\\\":\\\"#/definitions/Cursor\\\",\\\"description\\\":\\\"The mouse cursor used over the mark. Any valid [CSS cursor type](https://developer.mozilla.org/en-US/docs/Web/CSS/cursor#Values) can be used.\\\"},{\\\"$ref\\\":\\\"#/definitions/ExprRef\\\"}]},\\\"description\\\":{\\\"anyOf\\\":[{\\\"description\\\":\\\"A text description of the mark item for [ARIA accessibility](https://developer.mozilla.org/en-US/docs/Web/Accessibility/ARIA) (SVG output only). If specified, this property determines the [\\\\\\\"aria-label\\\\\\\" attribute](https://developer.mozilla.org/en-US/docs/Web/Accessibility/ARIA/ARIA_Techniques/Using_the_aria-label_attribute).\\\",\\\"type\\\":\\\"string\\\"},{\\\"$ref\\\":\\\"#/definitions/ExprRef\\\"}]},\\\"dir\\\":{\\\"anyOf\\\":[{\\\"$ref\\\":\\\"#/definitions/TextDirection\\\",\\\"description\\\":\\\"The direction of the text. One of `\\\\\\\"ltr\\\\\\\"` (left-to-right) or `\\\\\\\"rtl\\\\\\\"` (right-to-left). This property determines on which side is truncated in response to the limit parameter.\\\\n\\\\n__Default value:__ `\\\\\\\"ltr\\\\\\\"`\\\"},{\\\"$ref\\\":\\\"#/definitions/ExprRef\\\"}]},\\\"discreteBandSize\\\":{\\\"description\\\":\\\"The default size of the bars with discrete dimensions. If unspecified, the default size is  `step-2`, which provides 2 pixel offset between bars.\\\",\\\"minimum\\\":0,\\\"type\\\":\\\"number\\\"},\\\"dx\\\":{\\\"anyOf\\\":[{\\\"description\\\":\\\"The horizontal offset, in pixels, between the text label and its anchor point. The offset is applied after rotation by the _angle_ property.\\\",\\\"type\\\":\\\"number\\\"},{\\\"$ref\\\":\\\"#/definitions/ExprRef\\\"}]},\\\"dy\\\":{\\\"anyOf\\\":[{\\\"description\\\":\\\"The vertical offset, in pixels, between the text label and its anchor point. The offset is applied after rotation by the _angle_ property.\\\",\\\"type\\\":\\\"number\\\"},{\\\"$ref\\\":\\\"#/definitions/ExprRef\\\"}]},\\\"ellipsis\\\":{\\\"anyOf\\\":[{\\\"description\\\":\\\"The ellipsis string for text truncated in response to the limit parameter.\\\\n\\\\n__Default value:__ `\\\\\\\"…\\\\\\\"`\\\",\\\"type\\\":\\\"string\\\"},{\\\"$ref\\\":\\\"#/definitions/ExprRef\\\"}]},\\\"endAngle\\\":{\\\"anyOf\\\":[{\\\"description\\\":\\\"The end angle in radians for arc marks. A value of `0` indicates up (north), increasing values proceed clockwise.\\\",\\\"type\\\":\\\"number\\\"},{\\\"$ref\\\":\\\"#/definitions/ExprRef\\\"}]},\\\"fill\\\":{\\\"anyOf\\\":[{\\\"$ref\\\":\\\"#/definitions/Color\\\"},{\\\"$ref\\\":\\\"#/definitions/Gradient\\\"},{\\\"type\\\":\\\"null\\\"},{\\\"$ref\\\":\\\"#/definitions/ExprRef\\\"}],\\\"description\\\":\\\"Default fill color. This property has higher precedence than `config.color`. Set to `null` to remove fill.\\\\n\\\\n__Default value:__ (None)\\\"},\\\"fillOpacity\\\":{\\\"anyOf\\\":[{\\\"description\\\":\\\"The fill opacity (value between [0,1]).\\\\n\\\\n__Default value:__ `1`\\\",\\\"maximum\\\":1,\\\"minimum\\\":0,\\\"type\\\":\\\"number\\\"},{\\\"$ref\\\":\\\"#/definitions/ExprRef\\\"}]},\\\"filled\\\":{\\\"description\\\":\\\"Whether the mark's color should be used as fill color instead of stroke color.\\\\n\\\\n__Default value:__ `false` for all `point`, `line`, and `rule` marks as well as `geoshape` marks for [`graticule`](https://vega.github.io/vega-lite/docs/data.html#graticule) data sources; otherwise, `true`.\\\\n\\\\n__Note:__ This property cannot be used in a [style config](https://vega.github.io/vega-lite/docs/mark.html#style-config).\\\",\\\"type\\\":\\\"boolean\\\"},\\\"font\\\":{\\\"anyOf\\\":[{\\\"description\\\":\\\"The typeface to set the text in (e.g., `\\\\\\\"Helvetica Neue\\\\\\\"`).\\\",\\\"type\\\":\\\"string\\\"},{\\\"$ref\\\":\\\"#/definitions/ExprRef\\\"}]},\\\"fontSize\\\":{\\\"anyOf\\\":[{\\\"description\\\":\\\"The font size, in pixels.\\\\n\\\\n__Default value:__ `11`\\\",\\\"minimum\\\":0,\\\"type\\\":\\\"number\\\"},{\\\"$ref\\\":\\\"#/definitions/ExprRef\\\"}]},\\\"fontStyle\\\":{\\\"anyOf\\\":[{\\\"$ref\\\":\\\"#/definitions/FontStyle\\\",\\\"description\\\":\\\"The font style (e.g., `\\\\\\\"italic\\\\\\\"`).\\\"},{\\\"$ref\\\":\\\"#/definitions/ExprRef\\\"}]},\\\"fontWeight\\\":{\\\"anyOf\\\":[{\\\"$ref\\\":\\\"#/definitions/FontWeight\\\",\\\"description\\\":\\\"The font weight. This can be either a string (e.g `\\\\\\\"bold\\\\\\\"`, `\\\\\\\"normal\\\\\\\"`) or a number (`100`, `200`, `300`, ..., `900` where `\\\\\\\"normal\\\\\\\"` = `400` and `\\\\\\\"bold\\\\\\\"` = `700`).\\\"},{\\\"$ref\\\":\\\"#/definitions/ExprRef\\\"}]},\\\"height\\\":{\\\"anyOf\\\":[{\\\"description\\\":\\\"Height of the marks.\\\",\\\"type\\\":\\\"number\\\"},{\\\"$ref\\\":\\\"#/definitions/ExprRef\\\"}]},\\\"href\\\":{\\\"anyOf\\\":[{\\\"$ref\\\":\\\"#/definitions/URI\\\",\\\"description\\\":\\\"A URL to load upon mouse click. If defined, the mark acts as a hyperlink.\\\"},{\\\"$ref\\\":\\\"#/definitions/ExprRef\\\"}]},\\\"innerRadius\\\":{\\\"anyOf\\\":[{\\\"type\\\":\\\"number\\\"},{\\\"$ref\\\":\\\"#/definitions/ExprRef\\\"}],\\\"description\\\":\\\"The inner radius in pixels of arc marks. `innerRadius` is an alias for `radius2`.\\\"},\\\"interpolate\\\":{\\\"anyOf\\\":[{\\\"$ref\\\":\\\"#/definitions/Interpolate\\\",\\\"description\\\":\\\"The line interpolation method to use for line and area marks. One of the following: - `\\\\\\\"linear\\\\\\\"`: piecewise linear segments, as in a polyline. - `\\\\\\\"linear-closed\\\\\\\"`: close the linear segments to form a polygon. - `\\\\\\\"step\\\\\\\"`: alternate between horizontal and vertical segments, as in a step function. - `\\\\\\\"step-before\\\\\\\"`: alternate between vertical and horizontal segments, as in a step function. - `\\\\\\\"step-after\\\\\\\"`: alternate between horizontal and vertical segments, as in a step function. - `\\\\\\\"basis\\\\\\\"`: a B-spline, with control point duplication on the ends. - `\\\\\\\"basis-open\\\\\\\"`: an open B-spline; may not intersect the start or end. - `\\\\\\\"basis-closed\\\\\\\"`: a closed B-spline, as in a loop. - `\\\\\\\"cardinal\\\\\\\"`: a Cardinal spline, with control point duplication on the ends. - `\\\\\\\"cardinal-open\\\\\\\"`: an open Cardinal spline; may not intersect the start or end, but will intersect other control points. - `\\\\\\\"cardinal-closed\\\\\\\"`: a closed Cardinal spline, as in a loop. - `\\\\\\\"bundle\\\\\\\"`: equivalent to basis, except the tension parameter is used to straighten the spline. - `\\\\\\\"monotone\\\\\\\"`: cubic interpolation that preserves monotonicity in y.\\\"},{\\\"$ref\\\":\\\"#/definitions/ExprRef\\\"}]},\\\"invalid\\\":{\\\"description\\\":\\\"Defines how Vega-Lite should handle marks for invalid values (`null` and `NaN`). - If set to `\\\\\\\"filter\\\\\\\"` (default), all data items with null values will be skipped (for line, trail, and area marks) or filtered (for other marks). - If `null`, all data items are included. In this case, invalid values will be interpreted as zeroes.\\\",\\\"enum\\\":[\\\"filter\\\",null],\\\"type\\\":[\\\"string\\\",\\\"null\\\"]},\\\"limit\\\":{\\\"anyOf\\\":[{\\\"description\\\":\\\"The maximum length of the text mark in pixels. The text value will be automatically truncated if the rendered size exceeds the limit.\\\\n\\\\n__Default value:__ `0` -- indicating no limit\\\",\\\"type\\\":\\\"number\\\"},{\\\"$ref\\\":\\\"#/definitions/ExprRef\\\"}]},\\\"lineBreak\\\":{\\\"anyOf\\\":[{\\\"description\\\":\\\"A delimiter, such as a newline character, upon which to break text strings into multiple lines. This property is ignored if the text is array-valued.\\\",\\\"type\\\":\\\"string\\\"},{\\\"$ref\\\":\\\"#/definitions/ExprRef\\\"}]},\\\"lineHeight\\\":{\\\"anyOf\\\":[{\\\"description\\\":\\\"The line height in pixels (the spacing between subsequent lines of text) for multi-line text marks.\\\",\\\"type\\\":\\\"number\\\"},{\\\"$ref\\\":\\\"#/definitions/ExprRef\\\"}]},\\\"opacity\\\":{\\\"anyOf\\\":[{\\\"type\\\":\\\"number\\\"},{\\\"$ref\\\":\\\"#/definitions/ExprRef\\\"}],\\\"description\\\":\\\"The overall opacity (value between [0,1]).\\\\n\\\\n__Default value:__ `0.7` for non-aggregate plots with `point`, `tick`, `circle`, or `square` marks or layered `bar` charts and `1` otherwise.\\\",\\\"maximum\\\":1,\\\"minimum\\\":0},\\\"order\\\":{\\\"description\\\":\\\"For line and trail marks, this `order` property can be set to `null` or `false` to make the lines use the original order in the data sources.\\\",\\\"type\\\":[\\\"null\\\",\\\"boolean\\\"]},\\\"orient\\\":{\\\"$ref\\\":\\\"#/definitions/Orientation\\\",\\\"description\\\":\\\"The orientation of a non-stacked bar, tick, area, and line charts. The value is either horizontal (default) or vertical. - For bar, rule and tick, this determines whether the size of the bar and tick should be applied to x or y dimension. - For area, this property determines the orient property of the Vega output. - For line and trail marks, this property determines the sort order of the points in the line if `config.sortLineBy` is not specified. For stacked charts, this is always determined by the orientation of the stack; therefore explicitly specified value will be ignored.\\\"},\\\"outerRadius\\\":{\\\"anyOf\\\":[{\\\"type\\\":\\\"number\\\"},{\\\"$ref\\\":\\\"#/definitions/ExprRef\\\"}],\\\"description\\\":\\\"The outer radius in pixels of arc marks. `outerRadius` is an alias for `radius`.\\\"},\\\"padAngle\\\":{\\\"anyOf\\\":[{\\\"description\\\":\\\"The angular padding applied to sides of the arc, in radians.\\\",\\\"type\\\":\\\"number\\\"},{\\\"$ref\\\":\\\"#/definitions/ExprRef\\\"}]},\\\"radius\\\":{\\\"anyOf\\\":[{\\\"type\\\":\\\"number\\\"},{\\\"$ref\\\":\\\"#/definitions/ExprRef\\\"}],\\\"description\\\":\\\"For arc mark, the primary (outer) radius in pixels.\\\\n\\\\nFor text marks, polar coordinate radial offset, in pixels, of the text from the origin determined by the `x` and `y` properties.\\\"},\\\"radius2\\\":{\\\"anyOf\\\":[{\\\"type\\\":\\\"number\\\"},{\\\"$ref\\\":\\\"#/definitions/ExprRef\\\"}],\\\"description\\\":\\\"The secondary (inner) radius in pixels of arc marks.\\\"},\\\"shape\\\":{\\\"anyOf\\\":[{\\\"anyOf\\\":[{\\\"$ref\\\":\\\"#/definitions/SymbolShape\\\"},{\\\"type\\\":\\\"string\\\"}],\\\"description\\\":\\\"Shape of the point marks. Supported values include: - plotting shapes: `\\\\\\\"circle\\\\\\\"`, `\\\\\\\"square\\\\\\\"`, `\\\\\\\"cross\\\\\\\"`, `\\\\\\\"diamond\\\\\\\"`, `\\\\\\\"triangle-up\\\\\\\"`, `\\\\\\\"triangle-down\\\\\\\"`, `\\\\\\\"triangle-right\\\\\\\"`, or `\\\\\\\"triangle-left\\\\\\\"`. - the line symbol `\\\\\\\"stroke\\\\\\\"` - centered directional shapes `\\\\\\\"arrow\\\\\\\"`, `\\\\\\\"wedge\\\\\\\"`, or `\\\\\\\"triangle\\\\\\\"` - a custom [SVG path string](https://developer.mozilla.org/en-US/docs/Web/SVG/Tutorial/Paths) (For correct sizing, custom shape paths should be defined within a square bounding box with coordinates ranging from -1 to 1 along both the x and y dimensions.)\\\\n\\\\n__Default value:__ `\\\\\\\"circle\\\\\\\"`\\\"},{\\\"$ref\\\":\\\"#/definitions/ExprRef\\\"}]},\\\"size\\\":{\\\"anyOf\\\":[{\\\"type\\\":\\\"number\\\"},{\\\"$ref\\\":\\\"#/definitions/ExprRef\\\"}],\\\"description\\\":\\\"Default size for marks. - For `point`/`circle`/`square`, this represents the pixel area of the marks. Note that this value sets the area of the symbol; the side lengths will increase with the square root of this value. - For `bar`, this represents the band size of the bar, in pixels. - For `text`, this represents the font size, in pixels.\\\\n\\\\n__Default value:__ - `30` for point, circle, square marks; width/height's `step` - `2` for bar marks with discrete dimensions; - `5` for bar marks with continuous dimensions; - `11` for text marks.\\\",\\\"minimum\\\":0},\\\"smooth\\\":{\\\"anyOf\\\":[{\\\"description\\\":\\\"A boolean flag (default true) indicating if the image should be smoothed when resized. If false, individual pixels should be scaled directly rather than interpolated with smoothing. For SVG rendering, this option may not work in some browsers due to lack of standardization.\\\",\\\"type\\\":\\\"boolean\\\"},{\\\"$ref\\\":\\\"#/definitions/ExprRef\\\"}]},\\\"startAngle\\\":{\\\"anyOf\\\":[{\\\"description\\\":\\\"The start angle in radians for arc marks. A value of `0` indicates up (north), increasing values proceed clockwise.\\\",\\\"type\\\":\\\"number\\\"},{\\\"$ref\\\":\\\"#/definitions/ExprRef\\\"}]},\\\"stroke\\\":{\\\"anyOf\\\":[{\\\"$ref\\\":\\\"#/definitions/Color\\\"},{\\\"$ref\\\":\\\"#/definitions/Gradient\\\"},{\\\"type\\\":\\\"null\\\"},{\\\"$ref\\\":\\\"#/definitions/ExprRef\\\"}],\\\"description\\\":\\\"Default stroke color. This property has higher precedence than `config.color`. Set to `null` to remove stroke.\\\\n\\\\n__Default value:__ (None)\\\"},\\\"strokeCap\\\":{\\\"anyOf\\\":[{\\\"$ref\\\":\\\"#/definitions/StrokeCap\\\",\\\"description\\\":\\\"The stroke cap for line ending style. One of `\\\\\\\"butt\\\\\\\"`, `\\\\\\\"round\\\\\\\"`, or `\\\\\\\"square\\\\\\\"`.\\\\n\\\\n__Default value:__ `\\\\\\\"butt\\\\\\\"`\\\"},{\\\"$ref\\\":\\\"#/definitions/ExprRef\\\"}]},\\\"strokeDash\\\":{\\\"anyOf\\\":[{\\\"description\\\":\\\"An array of alternating stroke, space lengths for creating dashed or dotted lines.\\\",\\\"items\\\":{\\\"type\\\":\\\"number\\\"},\\\"type\\\":\\\"array\\\"},{\\\"$ref\\\":\\\"#/definitions/ExprRef\\\"}]},\\\"strokeDashOffset\\\":{\\\"anyOf\\\":[{\\\"description\\\":\\\"The offset (in pixels) into which to begin drawing with the stroke dash array.\\\",\\\"type\\\":\\\"number\\\"},{\\\"$ref\\\":\\\"#/definitions/ExprRef\\\"}]},\\\"strokeJoin\\\":{\\\"anyOf\\\":[{\\\"$ref\\\":\\\"#/definitions/StrokeJoin\\\",\\\"description\\\":\\\"The stroke line join method. One of `\\\\\\\"miter\\\\\\\"`, `\\\\\\\"round\\\\\\\"` or `\\\\\\\"bevel\\\\\\\"`.\\\\n\\\\n__Default value:__ `\\\\\\\"miter\\\\\\\"`\\\"},{\\\"$ref\\\":\\\"#/definitions/ExprRef\\\"}]},\\\"strokeMiterLimit\\\":{\\\"anyOf\\\":[{\\\"description\\\":\\\"The miter limit at which to bevel a line join.\\\",\\\"type\\\":\\\"number\\\"},{\\\"$ref\\\":\\\"#/definitions/ExprRef\\\"}]},\\\"strokeOffset\\\":{\\\"anyOf\\\":[{\\\"description\\\":\\\"The offset in pixels at which to draw the group stroke and fill. If unspecified, the default behavior is to dynamically offset stroked groups such that 1 pixel stroke widths align with the pixel grid.\\\",\\\"type\\\":\\\"number\\\"},{\\\"$ref\\\":\\\"#/definitions/ExprRef\\\"}]},\\\"strokeOpacity\\\":{\\\"anyOf\\\":[{\\\"description\\\":\\\"The stroke opacity (value between [0,1]).\\\\n\\\\n__Default value:__ `1`\\\",\\\"maximum\\\":1,\\\"minimum\\\":0,\\\"type\\\":\\\"number\\\"},{\\\"$ref\\\":\\\"#/definitions/ExprRef\\\"}]},\\\"strokeWidth\\\":{\\\"anyOf\\\":[{\\\"description\\\":\\\"The stroke width, in pixels.\\\",\\\"minimum\\\":0,\\\"type\\\":\\\"number\\\"},{\\\"$ref\\\":\\\"#/definitions/ExprRef\\\"}]},\\\"tension\\\":{\\\"anyOf\\\":[{\\\"description\\\":\\\"Depending on the interpolation type, sets the tension parameter (for line and area marks).\\\",\\\"type\\\":\\\"number\\\"},{\\\"$ref\\\":\\\"#/definitions/ExprRef\\\"}]},\\\"text\\\":{\\\"anyOf\\\":[{\\\"$ref\\\":\\\"#/definitions/Text\\\",\\\"description\\\":\\\"Placeholder text if the `text` channel is not specified\\\"},{\\\"$ref\\\":\\\"#/definitions/ExprRef\\\"}]},\\\"theta\\\":{\\\"anyOf\\\":[{\\\"type\\\":\\\"number\\\"},{\\\"$ref\\\":\\\"#/definitions/ExprRef\\\"}],\\\"description\\\":\\\"- For arc marks, the arc length in radians if theta2 is not specified, otherwise the start arc angle. (A value of 0 indicates up or “north”, increasing values proceed clockwise.)\\\\n\\\\n- For text marks, polar coordinate angle in radians.\\\",\\\"maximum\\\":360,\\\"minimum\\\":0},\\\"theta2\\\":{\\\"anyOf\\\":[{\\\"type\\\":\\\"number\\\"},{\\\"$ref\\\":\\\"#/definitions/ExprRef\\\"}],\\\"description\\\":\\\"The end angle of arc marks in radians. A value of 0 indicates up or “north”, increasing values proceed clockwise.\\\"},\\\"timeUnitBand\\\":{\\\"description\\\":\\\"Default relative band size for a time unit. If set to `1`, the bandwidth of the marks will be equal to the time unit band step. If set to `0.5`, bandwidth of the marks will be half of the time unit band step.\\\",\\\"type\\\":\\\"number\\\"},\\\"timeUnitBandPosition\\\":{\\\"description\\\":\\\"Default relative band position for a time unit. If set to `0`, the marks will be positioned at the beginning of the time unit band step. If set to `0.5`, the marks will be positioned in the middle of the time unit band step.\\\",\\\"type\\\":\\\"number\\\"},\\\"tooltip\\\":{\\\"anyOf\\\":[{\\\"type\\\":\\\"number\\\"},{\\\"type\\\":\\\"string\\\"},{\\\"type\\\":\\\"boolean\\\"},{\\\"$ref\\\":\\\"#/definitions/TooltipContent\\\"},{\\\"$ref\\\":\\\"#/definitions/ExprRef\\\"},{\\\"type\\\":\\\"null\\\"}],\\\"description\\\":\\\"The tooltip text string to show upon mouse hover or an object defining which fields should the tooltip be derived from.\\\\n\\\\n- If `tooltip` is `true` or `{\\\\\\\"content\\\\\\\": \\\\\\\"encoding\\\\\\\"}`, then all fields from `encoding` will be used. - If `tooltip` is `{\\\\\\\"content\\\\\\\": \\\\\\\"data\\\\\\\"}`, then all fields that appear in the highlighted data point will be used. - If set to `null` or `false`, then no tooltip will be used.\\\\n\\\\nSee the [`tooltip`](https://vega.github.io/vega-lite/docs/tooltip.html) documentation for a detailed discussion about tooltip  in Vega-Lite.\\\\n\\\\n__Default value:__ `null`\\\"},\\\"url\\\":{\\\"anyOf\\\":[{\\\"$ref\\\":\\\"#/definitions/URI\\\",\\\"description\\\":\\\"The URL of the image file for image marks.\\\"},{\\\"$ref\\\":\\\"#/definitions/ExprRef\\\"}]},\\\"width\\\":{\\\"anyOf\\\":[{\\\"description\\\":\\\"Width of the marks.\\\",\\\"type\\\":\\\"number\\\"},{\\\"$ref\\\":\\\"#/definitions/ExprRef\\\"}]},\\\"x\\\":{\\\"anyOf\\\":[{\\\"type\\\":\\\"number\\\"},{\\\"const\\\":\\\"width\\\",\\\"type\\\":\\\"string\\\"},{\\\"$ref\\\":\\\"#/definitions/ExprRef\\\"}],\\\"description\\\":\\\"X coordinates of the marks, or width of horizontal `\\\\\\\"bar\\\\\\\"` and `\\\\\\\"area\\\\\\\"` without specified `x2` or `width`.\\\\n\\\\nThe `value` of this channel can be a number or a string `\\\\\\\"width\\\\\\\"` for the width of the plot.\\\"},\\\"x2\\\":{\\\"anyOf\\\":[{\\\"type\\\":\\\"number\\\"},{\\\"const\\\":\\\"width\\\",\\\"type\\\":\\\"string\\\"},{\\\"$ref\\\":\\\"#/definitions/ExprRef\\\"}],\\\"description\\\":\\\"X2 coordinates for ranged `\\\\\\\"area\\\\\\\"`, `\\\\\\\"bar\\\\\\\"`, `\\\\\\\"rect\\\\\\\"`, and  `\\\\\\\"rule\\\\\\\"`.\\\\n\\\\nThe `value` of this channel can be a number or a string `\\\\\\\"width\\\\\\\"` for the width of the plot.\\\"},\\\"y\\\":{\\\"anyOf\\\":[{\\\"type\\\":\\\"number\\\"},{\\\"const\\\":\\\"height\\\",\\\"type\\\":\\\"string\\\"},{\\\"$ref\\\":\\\"#/definitions/ExprRef\\\"}],\\\"description\\\":\\\"Y coordinates of the marks, or height of vertical `\\\\\\\"bar\\\\\\\"` and `\\\\\\\"area\\\\\\\"` without specified `y2` or `height`.\\\\n\\\\nThe `value` of this channel can be a number or a string `\\\\\\\"height\\\\\\\"` for the height of the plot.\\\"},\\\"y2\\\":{\\\"anyOf\\\":[{\\\"type\\\":\\\"number\\\"},{\\\"const\\\":\\\"height\\\",\\\"type\\\":\\\"string\\\"},{\\\"$ref\\\":\\\"#/definitions/ExprRef\\\"}],\\\"description\\\":\\\"Y2 coordinates for ranged `\\\\\\\"area\\\\\\\"`, `\\\\\\\"bar\\\\\\\"`, `\\\\\\\"rect\\\\\\\"`, and  `\\\\\\\"rule\\\\\\\"`.\\\\n\\\\nThe `value` of this channel can be a number or a string `\\\\\\\"height\\\\\\\"` for the height of the plot.\\\"}},\\\"type\\\":\\\"object\\\"},\\\"BaseTitleNoValueRefs\\\":{\\\"additionalProperties\\\":false,\\\"properties\\\":{\\\"align\\\":{\\\"$ref\\\":\\\"#/definitions/Align\\\",\\\"description\\\":\\\"Horizontal text alignment for title text. One of `\\\\\\\"left\\\\\\\"`, `\\\\\\\"center\\\\\\\"`, or `\\\\\\\"right\\\\\\\"`.\\\"},\\\"anchor\\\":{\\\"anyOf\\\":[{\\\"$ref\\\":\\\"#/definitions/TitleAnchor\\\",\\\"description\\\":\\\"The anchor position for placing the title and subtitle text. One of `\\\\\\\"start\\\\\\\"`, `\\\\\\\"middle\\\\\\\"`, or `\\\\\\\"end\\\\\\\"`. For example, with an orientation of top these anchor positions map to a left-, center-, or right-aligned title.\\\"},{\\\"$ref\\\":\\\"#/definitions/ExprRef\\\"}]},\\\"angle\\\":{\\\"anyOf\\\":[{\\\"description\\\":\\\"Angle in degrees of title and subtitle text.\\\",\\\"type\\\":\\\"number\\\"},{\\\"$ref\\\":\\\"#/definitions/ExprRef\\\"}]},\\\"aria\\\":{\\\"anyOf\\\":[{\\\"description\\\":\\\"A boolean flag indicating if [ARIA attributes](https://developer.mozilla.org/en-US/docs/Web/Accessibility/ARIA) should be included (SVG output only). If `false`, the \\\\\\\"aria-hidden\\\\\\\" attribute will be set on the output SVG group, removing the title from the ARIA accessibility tree.\\\\n\\\\n__Default value:__ `true`\\\",\\\"type\\\":\\\"boolean\\\"},{\\\"$ref\\\":\\\"#/definitions/ExprRef\\\"}]},\\\"baseline\\\":{\\\"$ref\\\":\\\"#/definitions/TextBaseline\\\",\\\"description\\\":\\\"Vertical text baseline for title and subtitle text. One of `\\\\\\\"alphabetic\\\\\\\"` (default), `\\\\\\\"top\\\\\\\"`, `\\\\\\\"middle\\\\\\\"`, `\\\\\\\"bottom\\\\\\\"`, `\\\\\\\"line-top\\\\\\\"`, or `\\\\\\\"line-bottom\\\\\\\"`. The `\\\\\\\"line-top\\\\\\\"` and `\\\\\\\"line-bottom\\\\\\\"` values operate similarly to `\\\\\\\"top\\\\\\\"` and `\\\\\\\"bottom\\\\\\\"`, but are calculated relative to the *lineHeight* rather than *fontSize* alone.\\\"},\\\"color\\\":{\\\"anyOf\\\":[{\\\"anyOf\\\":[{\\\"type\\\":\\\"null\\\"},{\\\"$ref\\\":\\\"#/definitions/Color\\\"}],\\\"description\\\":\\\"Text color for title text.\\\"},{\\\"$ref\\\":\\\"#/definitions/ExprRef\\\"}]},\\\"dx\\\":{\\\"anyOf\\\":[{\\\"description\\\":\\\"Delta offset for title and subtitle text x-coordinate.\\\",\\\"type\\\":\\\"number\\\"},{\\\"$ref\\\":\\\"#/definitions/ExprRef\\\"}]},\\\"dy\\\":{\\\"anyOf\\\":[{\\\"description\\\":\\\"Delta offset for title and subtitle text y-coordinate.\\\",\\\"type\\\":\\\"number\\\"},{\\\"$ref\\\":\\\"#/definitions/ExprRef\\\"}]},\\\"font\\\":{\\\"anyOf\\\":[{\\\"description\\\":\\\"Font name for title text.\\\",\\\"type\\\":\\\"string\\\"},{\\\"$ref\\\":\\\"#/definitions/ExprRef\\\"}]},\\\"fontSize\\\":{\\\"anyOf\\\":[{\\\"description\\\":\\\"Font size in pixels for title text.\\\",\\\"minimum\\\":0,\\\"type\\\":\\\"number\\\"},{\\\"$ref\\\":\\\"#/definitions/ExprRef\\\"}]},\\\"fontStyle\\\":{\\\"anyOf\\\":[{\\\"$ref\\\":\\\"#/definitions/FontStyle\\\",\\\"description\\\":\\\"Font style for title text.\\\"},{\\\"$ref\\\":\\\"#/definitions/ExprRef\\\"}]},\\\"fontWeight\\\":{\\\"anyOf\\\":[{\\\"$ref\\\":\\\"#/definitions/FontWeight\\\",\\\"description\\\":\\\"Font weight for title text. This can be either a string (e.g `\\\\\\\"bold\\\\\\\"`, `\\\\\\\"normal\\\\\\\"`) or a number (`100`, `200`, `300`, ..., `900` where `\\\\\\\"normal\\\\\\\"` = `400` and `\\\\\\\"bold\\\\\\\"` = `700`).\\\"},{\\\"$ref\\\":\\\"#/definitions/ExprRef\\\"}]},\\\"frame\\\":{\\\"anyOf\\\":[{\\\"anyOf\\\":[{\\\"$ref\\\":\\\"#/definitions/TitleFrame\\\"},{\\\"type\\\":\\\"string\\\"}],\\\"description\\\":\\\"The reference frame for the anchor position, one of `\\\\\\\"bounds\\\\\\\"` (to anchor relative to the full bounding box) or `\\\\\\\"group\\\\\\\"` (to anchor relative to the group width or height).\\\"},{\\\"$ref\\\":\\\"#/definitions/ExprRef\\\"}]},\\\"limit\\\":{\\\"anyOf\\\":[{\\\"description\\\":\\\"The maximum allowed length in pixels of title and subtitle text.\\\",\\\"minimum\\\":0,\\\"type\\\":\\\"number\\\"},{\\\"$ref\\\":\\\"#/definitions/ExprRef\\\"}]},\\\"lineHeight\\\":{\\\"anyOf\\\":[{\\\"description\\\":\\\"Line height in pixels for multi-line title text or title text with `\\\\\\\"line-top\\\\\\\"` or `\\\\\\\"line-bottom\\\\\\\"` baseline.\\\",\\\"type\\\":\\\"number\\\"},{\\\"$ref\\\":\\\"#/definitions/ExprRef\\\"}]},\\\"offset\\\":{\\\"anyOf\\\":[{\\\"description\\\":\\\"The orthogonal offset in pixels by which to displace the title group from its position along the edge of the chart.\\\",\\\"type\\\":\\\"number\\\"},{\\\"$ref\\\":\\\"#/definitions/ExprRef\\\"}]},\\\"orient\\\":{\\\"anyOf\\\":[{\\\"$ref\\\":\\\"#/definitions/TitleOrient\\\",\\\"description\\\":\\\"Default title orientation (`\\\\\\\"top\\\\\\\"`, `\\\\\\\"bottom\\\\\\\"`, `\\\\\\\"left\\\\\\\"`, or `\\\\\\\"right\\\\\\\"`)\\\"},{\\\"$ref\\\":\\\"#/definitions/ExprRef\\\"}]},\\\"subtitleColor\\\":{\\\"anyOf\\\":[{\\\"anyOf\\\":[{\\\"type\\\":\\\"null\\\"},{\\\"$ref\\\":\\\"#/definitions/Color\\\"}],\\\"description\\\":\\\"Text color for subtitle text.\\\"},{\\\"$ref\\\":\\\"#/definitions/ExprRef\\\"}]},\\\"subtitleFont\\\":{\\\"anyOf\\\":[{\\\"description\\\":\\\"Font name for subtitle text.\\\",\\\"type\\\":\\\"string\\\"},{\\\"$ref\\\":\\\"#/definitions/ExprRef\\\"}]},\\\"subtitleFontSize\\\":{\\\"anyOf\\\":[{\\\"description\\\":\\\"Font size in pixels for subtitle text.\\\",\\\"minimum\\\":0,\\\"type\\\":\\\"number\\\"},{\\\"$ref\\\":\\\"#/definitions/ExprRef\\\"}]},\\\"subtitleFontStyle\\\":{\\\"anyOf\\\":[{\\\"$ref\\\":\\\"#/definitions/FontStyle\\\",\\\"description\\\":\\\"Font style for subtitle text.\\\"},{\\\"$ref\\\":\\\"#/definitions/ExprRef\\\"}]},\\\"subtitleFontWeight\\\":{\\\"anyOf\\\":[{\\\"$ref\\\":\\\"#/definitions/FontWeight\\\",\\\"description\\\":\\\"Font weight for subtitle text. This can be either a string (e.g `\\\\\\\"bold\\\\\\\"`, `\\\\\\\"normal\\\\\\\"`) or a number (`100`, `200`, `300`, ..., `900` where `\\\\\\\"normal\\\\\\\"` = `400` and `\\\\\\\"bold\\\\\\\"` = `700`).\\\"},{\\\"$ref\\\":\\\"#/definitions/ExprRef\\\"}]},\\\"subtitleLineHeight\\\":{\\\"anyOf\\\":[{\\\"description\\\":\\\"Line height in pixels for multi-line subtitle text.\\\",\\\"type\\\":\\\"number\\\"},{\\\"$ref\\\":\\\"#/definitions/ExprRef\\\"}]},\\\"subtitlePadding\\\":{\\\"anyOf\\\":[{\\\"description\\\":\\\"The padding in pixels between title and subtitle text.\\\",\\\"type\\\":\\\"number\\\"},{\\\"$ref\\\":\\\"#/definitions/ExprRef\\\"}]},\\\"zindex\\\":{\\\"anyOf\\\":[{\\\"description\\\":\\\"The integer z-index indicating the layering of the title group relative to other axis, mark, and legend groups.\\\\n\\\\n__Default value:__ `0`.\\\",\\\"minimum\\\":0,\\\"type\\\":\\\"number\\\"},{\\\"$ref\\\":\\\"#/definitions/ExprRef\\\"}]}},\\\"type\\\":\\\"object\\\"},\\\"Baseline\\\":{\\\"enum\\\":[\\\"top\\\",\\\"middle\\\",\\\"bottom\\\"],\\\"type\\\":\\\"string\\\"},\\\"BinExtent\\\":{\\\"anyOf\\\":[{\\\"items\\\":[{\\\"type\\\":\\\"number\\\"},{\\\"type\\\":\\\"number\\\"}],\\\"maxItems\\\":2,\\\"minItems\\\":2,\\\"type\\\":\\\"array\\\"},{\\\"$ref\\\":\\\"#/definitions/SelectionExtent\\\"}]},\\\"BinParams\\\":{\\\"additionalProperties\\\":false,\\\"description\\\":\\\"Binning properties or boolean flag for determining whether to bin data or not.\\\",\\\"properties\\\":{\\\"anchor\\\":{\\\"description\\\":\\\"A value in the binned domain at which to anchor the bins, shifting the bin boundaries if necessary to ensure that a boundary aligns with the anchor value.\\\\n\\\\n__Default value:__ the minimum bin extent value\\\",\\\"type\\\":\\\"number\\\"},\\\"base\\\":{\\\"description\\\":\\\"The number base to use for automatic bin determination (default is base 10).\\\\n\\\\n__Default value:__ `10`\\\",\\\"type\\\":\\\"number\\\"},\\\"binned\\\":{\\\"description\\\":\\\"When set to `true`, Vega-Lite treats the input data as already binned.\\\",\\\"type\\\":\\\"boolean\\\"},\\\"divide\\\":{\\\"description\\\":\\\"Scale factors indicating allowable subdivisions. The default value is [5, 2], which indicates that for base 10 numbers (the default base), the method may consider dividing bin sizes by 5 and/or 2. For example, for an initial step size of 10, the method can check if bin sizes of 2 (= 10/5), 5 (= 10/2), or 1 (= 10/(5*2)) might also satisfy the given constraints.\\\\n\\\\n__Default value:__ `[5, 2]`\\\",\\\"items\\\":[{\\\"type\\\":\\\"number\\\"},{\\\"type\\\":\\\"number\\\"}],\\\"maxItems\\\":2,\\\"minItems\\\":1,\\\"type\\\":\\\"array\\\"},\\\"extent\\\":{\\\"$ref\\\":\\\"#/definitions/BinExtent\\\",\\\"description\\\":\\\"A two-element (`[min, max]`) array indicating the range of desired bin values.\\\"},\\\"maxbins\\\":{\\\"description\\\":\\\"Maximum number of bins.\\\\n\\\\n__Default value:__ `6` for `row`, `column` and `shape` channels; `10` for other channels\\\",\\\"minimum\\\":2,\\\"type\\\":\\\"number\\\"},\\\"minstep\\\":{\\\"description\\\":\\\"A minimum allowable step size (particularly useful for integer values).\\\",\\\"type\\\":\\\"number\\\"},\\\"nice\\\":{\\\"description\\\":\\\"If true, attempts to make the bin boundaries use human-friendly boundaries, such as multiples of ten.\\\\n\\\\n__Default value:__ `true`\\\",\\\"type\\\":\\\"boolean\\\"},\\\"step\\\":{\\\"description\\\":\\\"An exact step size to use between bins.\\\\n\\\\n__Note:__ If provided, options such as maxbins will be ignored.\\\",\\\"type\\\":\\\"number\\\"},\\\"steps\\\":{\\\"description\\\":\\\"An array of allowable step sizes to choose from.\\\",\\\"items\\\":{\\\"type\\\":\\\"number\\\"},\\\"minItems\\\":1,\\\"type\\\":\\\"array\\\"}},\\\"type\\\":\\\"object\\\"},\\\"BinTransform\\\":{\\\"additionalProperties\\\":false,\\\"properties\\\":{\\\"as\\\":{\\\"anyOf\\\":[{\\\"$ref\\\":\\\"#/definitions/FieldName\\\"},{\\\"items\\\":{\\\"$ref\\\":\\\"#/definitions/FieldName\\\"},\\\"type\\\":\\\"array\\\"}],\\\"description\\\":\\\"The output fields at which to write the start and end bin values. This can be either a string or an array of strings with two elements denoting the name for the fields for bin start and bin end respectively. If a single string (e.g., `\\\\\\\"val\\\\\\\"`) is provided, the end field will be `\\\\\\\"val_end\\\\\\\"`.\\\"},\\\"bin\\\":{\\\"anyOf\\\":[{\\\"const\\\":true,\\\"type\\\":\\\"boolean\\\"},{\\\"$ref\\\":\\\"#/definitions/BinParams\\\"}],\\\"description\\\":\\\"An object indicating bin properties, or simply `true` for using default bin parameters.\\\"},\\\"field\\\":{\\\"$ref\\\":\\\"#/definitions/FieldName\\\",\\\"description\\\":\\\"The data field to bin.\\\"}},\\\"required\\\":[\\\"bin\\\",\\\"field\\\",\\\"as\\\"],\\\"type\\\":\\\"object\\\"},\\\"BindCheckbox\\\":{\\\"additionalProperties\\\":false,\\\"properties\\\":{\\\"debounce\\\":{\\\"type\\\":\\\"number\\\"},\\\"element\\\":{\\\"$ref\\\":\\\"#/definitions/Element\\\"},\\\"input\\\":{\\\"const\\\":\\\"checkbox\\\",\\\"type\\\":\\\"string\\\"},\\\"name\\\":{\\\"type\\\":\\\"string\\\"},\\\"type\\\":{\\\"type\\\":\\\"string\\\"}},\\\"required\\\":[\\\"input\\\"],\\\"type\\\":\\\"object\\\"},\\\"BindRadioSelect\\\":{\\\"additionalProperties\\\":false,\\\"properties\\\":{\\\"debounce\\\":{\\\"type\\\":\\\"number\\\"},\\\"element\\\":{\\\"$ref\\\":\\\"#/definitions/Element\\\"},\\\"input\\\":{\\\"enum\\\":[\\\"radio\\\",\\\"select\\\"],\\\"type\\\":\\\"string\\\"},\\\"labels\\\":{\\\"items\\\":{\\\"type\\\":\\\"string\\\"},\\\"type\\\":\\\"array\\\"},\\\"name\\\":{\\\"type\\\":\\\"string\\\"},\\\"options\\\":{\\\"items\\\":{},\\\"type\\\":\\\"array\\\"},\\\"type\\\":{\\\"type\\\":\\\"string\\\"}},\\\"required\\\":[\\\"input\\\",\\\"options\\\"],\\\"type\\\":\\\"object\\\"},\\\"BindRange\\\":{\\\"additionalProperties\\\":false,\\\"properties\\\":{\\\"debounce\\\":{\\\"type\\\":\\\"number\\\"},\\\"element\\\":{\\\"$ref\\\":\\\"#/definitions/Element\\\"},\\\"input\\\":{\\\"const\\\":\\\"range\\\",\\\"type\\\":\\\"string\\\"},\\\"max\\\":{\\\"type\\\":\\\"number\\\"},\\\"min\\\":{\\\"type\\\":\\\"number\\\"},\\\"name\\\":{\\\"type\\\":\\\"string\\\"},\\\"step\\\":{\\\"type\\\":\\\"number\\\"},\\\"type\\\":{\\\"type\\\":\\\"string\\\"}},\\\"required\\\":[\\\"input\\\"],\\\"type\\\":\\\"object\\\"},\\\"Binding\\\":{\\\"anyOf\\\":[{\\\"$ref\\\":\\\"#/definitions/BindCheckbox\\\"},{\\\"$ref\\\":\\\"#/definitions/BindRadioSelect\\\"},{\\\"$ref\\\":\\\"#/definitions/BindRange\\\"},{\\\"$ref\\\":\\\"#/definitions/InputBinding\\\"}]},\\\"Blend\\\":{\\\"enum\\\":[null,\\\"multiply\\\",\\\"screen\\\",\\\"overlay\\\",\\\"darken\\\",\\\"lighten\\\",\\\"color-dodge\\\",\\\"color-burn\\\",\\\"hard-light\\\",\\\"soft-light\\\",\\\"difference\\\",\\\"exclusion\\\",\\\"hue\\\",\\\"saturation\\\",\\\"color\\\",\\\"luminosity\\\"],\\\"type\\\":[\\\"null\\\",\\\"string\\\"]},\\\"BoxPlot\\\":{\\\"const\\\":\\\"boxplot\\\",\\\"type\\\":\\\"string\\\"},\\\"BoxPlotConfig\\\":{\\\"additionalProperties\\\":false,\\\"properties\\\":{\\\"box\\\":{\\\"anyOf\\\":[{\\\"type\\\":\\\"boolean\\\"},{\\\"$ref\\\":\\\"#/definitions/MarkConfig<ExprOrSignalRef>\\\"}]},\\\"extent\\\":{\\\"anyOf\\\":[{\\\"const\\\":\\\"min-max\\\",\\\"type\\\":\\\"string\\\"},{\\\"type\\\":\\\"number\\\"}],\\\"description\\\":\\\"The extent of the whiskers. Available options include: - `\\\\\\\"min-max\\\\\\\"`: min and max are the lower and upper whiskers respectively. - A number representing multiple of the interquartile range. This number will be multiplied by the IQR to determine whisker boundary, which spans from the smallest data to the largest data within the range _[Q1 - k * IQR, Q3 + k * IQR]_ where _Q1_ and _Q3_ are the first and third quartiles while _IQR_ is the interquartile range (_Q3-Q1_).\\\\n\\\\n__Default value:__ `1.5`.\\\"},\\\"median\\\":{\\\"anyOf\\\":[{\\\"type\\\":\\\"boolean\\\"},{\\\"$ref\\\":\\\"#/definitions/MarkConfig<ExprOrSignalRef>\\\"}]},\\\"outliers\\\":{\\\"anyOf\\\":[{\\\"type\\\":\\\"boolean\\\"},{\\\"$ref\\\":\\\"#/definitions/MarkConfig<ExprOrSignalRef>\\\"}]},\\\"rule\\\":{\\\"anyOf\\\":[{\\\"type\\\":\\\"boolean\\\"},{\\\"$ref\\\":\\\"#/definitions/MarkConfig<ExprOrSignalRef>\\\"}]},\\\"size\\\":{\\\"description\\\":\\\"Size of the box and median tick of a box plot\\\",\\\"type\\\":\\\"number\\\"},\\\"ticks\\\":{\\\"anyOf\\\":[{\\\"type\\\":\\\"boolean\\\"},{\\\"$ref\\\":\\\"#/definitions/MarkConfig<ExprOrSignalRef>\\\"}]}},\\\"type\\\":\\\"object\\\"},\\\"BoxPlotDef\\\":{\\\"additionalProperties\\\":false,\\\"properties\\\":{\\\"box\\\":{\\\"anyOf\\\":[{\\\"type\\\":\\\"boolean\\\"},{\\\"$ref\\\":\\\"#/definitions/MarkConfig<ExprOrSignalRef>\\\"}]},\\\"clip\\\":{\\\"description\\\":\\\"Whether a composite mark be clipped to the enclosing group’s width and height.\\\",\\\"type\\\":\\\"boolean\\\"},\\\"color\\\":{\\\"anyOf\\\":[{\\\"$ref\\\":\\\"#/definitions/Color\\\"},{\\\"$ref\\\":\\\"#/definitions/Gradient\\\"},{\\\"$ref\\\":\\\"#/definitions/ExprRef\\\"}],\\\"description\\\":\\\"Default color.\\\\n\\\\n__Default value:__ <span style=\\\\\\\"color: #4682b4;\\\\\\\">&#9632;</span> `\\\\\\\"#4682b4\\\\\\\"`\\\\n\\\\n__Note:__ - This property cannot be used in a [style config](https://vega.github.io/vega-lite/docs/mark.html#style-config). - The `fill` and `stroke` properties have higher precedence than `color` and will override `color`.\\\"},\\\"extent\\\":{\\\"anyOf\\\":[{\\\"const\\\":\\\"min-max\\\",\\\"type\\\":\\\"string\\\"},{\\\"type\\\":\\\"number\\\"}],\\\"description\\\":\\\"The extent of the whiskers. Available options include: - `\\\\\\\"min-max\\\\\\\"`: min and max are the lower and upper whiskers respectively. - A number representing multiple of the interquartile range. This number will be multiplied by the IQR to determine whisker boundary, which spans from the smallest data to the largest data within the range _[Q1 - k * IQR, Q3 + k * IQR]_ where _Q1_ and _Q3_ are the first and third quartiles while _IQR_ is the interquartile range (_Q3-Q1_).\\\\n\\\\n__Default value:__ `1.5`.\\\"},\\\"median\\\":{\\\"anyOf\\\":[{\\\"type\\\":\\\"boolean\\\"},{\\\"$ref\\\":\\\"#/definitions/MarkConfig<ExprOrSignalRef>\\\"}]},\\\"opacity\\\":{\\\"description\\\":\\\"The opacity (value between [0,1]) of the mark.\\\",\\\"type\\\":\\\"number\\\"},\\\"orient\\\":{\\\"$ref\\\":\\\"#/definitions/Orientation\\\",\\\"description\\\":\\\"Orientation of the box plot. This is normally automatically determined based on types of fields on x and y channels. However, an explicit `orient` be specified when the orientation is ambiguous.\\\\n\\\\n__Default value:__ `\\\\\\\"vertical\\\\\\\"`.\\\"},\\\"outliers\\\":{\\\"anyOf\\\":[{\\\"type\\\":\\\"boolean\\\"},{\\\"$ref\\\":\\\"#/definitions/MarkConfig<ExprOrSignalRef>\\\"}]},\\\"rule\\\":{\\\"anyOf\\\":[{\\\"type\\\":\\\"boolean\\\"},{\\\"$ref\\\":\\\"#/definitions/MarkConfig<ExprOrSignalRef>\\\"}]},\\\"size\\\":{\\\"description\\\":\\\"Size of the box and median tick of a box plot\\\",\\\"type\\\":\\\"number\\\"},\\\"ticks\\\":{\\\"anyOf\\\":[{\\\"type\\\":\\\"boolean\\\"},{\\\"$ref\\\":\\\"#/definitions/MarkConfig<ExprOrSignalRef>\\\"}]},\\\"type\\\":{\\\"$ref\\\":\\\"#/definitions/BoxPlot\\\",\\\"description\\\":\\\"The mark type. This could a primitive mark type (one of `\\\\\\\"bar\\\\\\\"`, `\\\\\\\"circle\\\\\\\"`, `\\\\\\\"square\\\\\\\"`, `\\\\\\\"tick\\\\\\\"`, `\\\\\\\"line\\\\\\\"`, `\\\\\\\"area\\\\\\\"`, `\\\\\\\"point\\\\\\\"`, `\\\\\\\"geoshape\\\\\\\"`, `\\\\\\\"rule\\\\\\\"`, and `\\\\\\\"text\\\\\\\"`) or a composite mark type (`\\\\\\\"boxplot\\\\\\\"`, `\\\\\\\"errorband\\\\\\\"`, `\\\\\\\"errorbar\\\\\\\"`).\\\"}},\\\"required\\\":[\\\"type\\\"],\\\"type\\\":\\\"object\\\"},\\\"BrushConfig\\\":{\\\"additionalProperties\\\":false,\\\"properties\\\":{\\\"cursor\\\":{\\\"$ref\\\":\\\"#/definitions/Cursor\\\",\\\"description\\\":\\\"The mouse cursor used over the interval mark. Any valid [CSS cursor type](https://developer.mozilla.org/en-US/docs/Web/CSS/cursor#Values) can be used.\\\"},\\\"fill\\\":{\\\"$ref\\\":\\\"#/definitions/Color\\\",\\\"description\\\":\\\"The fill color of the interval mark.\\\\n\\\\n__Default value:__ `\\\\\\\"#333333\\\\\\\"`\\\"},\\\"fillOpacity\\\":{\\\"description\\\":\\\"The fill opacity of the interval mark (a value between `0` and `1`).\\\\n\\\\n__Default value:__ `0.125`\\\",\\\"type\\\":\\\"number\\\"},\\\"stroke\\\":{\\\"$ref\\\":\\\"#/definitions/Color\\\",\\\"description\\\":\\\"The stroke color of the interval mark.\\\\n\\\\n__Default value:__ `\\\\\\\"#ffffff\\\\\\\"`\\\"},\\\"strokeDash\\\":{\\\"description\\\":\\\"An array of alternating stroke and space lengths, for creating dashed or dotted lines.\\\",\\\"items\\\":{\\\"type\\\":\\\"number\\\"},\\\"type\\\":\\\"array\\\"},\\\"strokeDashOffset\\\":{\\\"description\\\":\\\"The offset (in pixels) with which to begin drawing the stroke dash array.\\\",\\\"type\\\":\\\"number\\\"},\\\"strokeOpacity\\\":{\\\"description\\\":\\\"The stroke opacity of the interval mark (a value between `0` and `1`).\\\",\\\"type\\\":\\\"number\\\"},\\\"strokeWidth\\\":{\\\"description\\\":\\\"The stroke width of the interval mark.\\\",\\\"type\\\":\\\"number\\\"}},\\\"type\\\":\\\"object\\\"},\\\"CalculateTransform\\\":{\\\"additionalProperties\\\":false,\\\"properties\\\":{\\\"as\\\":{\\\"$ref\\\":\\\"#/definitions/FieldName\\\",\\\"description\\\":\\\"The field for storing the computed formula value.\\\"},\\\"calculate\\\":{\\\"description\\\":\\\"A [expression](https://vega.github.io/vega-lite/docs/types.html#expression) string. Use the variable `datum` to refer to the current data object.\\\",\\\"type\\\":\\\"string\\\"}},\\\"required\\\":[\\\"calculate\\\",\\\"as\\\"],\\\"type\\\":\\\"object\\\"},\\\"Categorical\\\":{\\\"enum\\\":[\\\"accent\\\",\\\"category10\\\",\\\"category20\\\",\\\"category20b\\\",\\\"category20c\\\",\\\"dark2\\\",\\\"paired\\\",\\\"pastel1\\\",\\\"pastel2\\\",\\\"set1\\\",\\\"set2\\\",\\\"set3\\\",\\\"tableau10\\\",\\\"tableau20\\\"],\\\"type\\\":\\\"string\\\"},\\\"Color\\\":{\\\"anyOf\\\":[{\\\"$ref\\\":\\\"#/definitions/ColorName\\\"},{\\\"$ref\\\":\\\"#/definitions/HexColor\\\"},{\\\"type\\\":\\\"string\\\"}]},\\\"ColorDef\\\":{\\\"$ref\\\":\\\"#/definitions/MarkPropDef<(Gradient|string|null)>\\\"},\\\"ColorName\\\":{\\\"enum\\\":[\\\"black\\\",\\\"silver\\\",\\\"gray\\\",\\\"white\\\",\\\"maroon\\\",\\\"red\\\",\\\"purple\\\",\\\"fuchsia\\\",\\\"green\\\",\\\"lime\\\",\\\"olive\\\",\\\"yellow\\\",\\\"navy\\\",\\\"blue\\\",\\\"teal\\\",\\\"aqua\\\",\\\"orange\\\",\\\"aliceblue\\\",\\\"antiquewhite\\\",\\\"aquamarine\\\",\\\"azure\\\",\\\"beige\\\",\\\"bisque\\\",\\\"blanchedalmond\\\",\\\"blueviolet\\\",\\\"brown\\\",\\\"burlywood\\\",\\\"cadetblue\\\",\\\"chartreuse\\\",\\\"chocolate\\\",\\\"coral\\\",\\\"cornflowerblue\\\",\\\"cornsilk\\\",\\\"crimson\\\",\\\"cyan\\\",\\\"darkblue\\\",\\\"darkcyan\\\",\\\"darkgoldenrod\\\",\\\"darkgray\\\",\\\"darkgreen\\\",\\\"darkgrey\\\",\\\"darkkhaki\\\",\\\"darkmagenta\\\",\\\"darkolivegreen\\\",\\\"darkorange\\\",\\\"darkorchid\\\",\\\"darkred\\\",\\\"darksalmon\\\",\\\"darkseagreen\\\",\\\"darkslateblue\\\",\\\"darkslategray\\\",\\\"darkslategrey\\\",\\\"darkturquoise\\\",\\\"darkviolet\\\",\\\"deeppink\\\",\\\"deepskyblue\\\",\\\"dimgray\\\",\\\"dimgrey\\\",\\\"dodgerblue\\\",\\\"firebrick\\\",\\\"floralwhite\\\",\\\"forestgreen\\\",\\\"gainsboro\\\",\\\"ghostwhite\\\",\\\"gold\\\",\\\"goldenrod\\\",\\\"greenyellow\\\",\\\"grey\\\",\\\"honeydew\\\",\\\"hotpink\\\",\\\"indianred\\\",\\\"indigo\\\",\\\"ivory\\\",\\\"khaki\\\",\\\"lavender\\\",\\\"lavenderblush\\\",\\\"lawngreen\\\",\\\"lemonchiffon\\\",\\\"lightblue\\\",\\\"lightcoral\\\",\\\"lightcyan\\\",\\\"lightgoldenrodyellow\\\",\\\"lightgray\\\",\\\"lightgreen\\\",\\\"lightgrey\\\",\\\"lightpink\\\",\\\"lightsalmon\\\",\\\"lightseagreen\\\",\\\"lightskyblue\\\",\\\"lightslategray\\\",\\\"lightslategrey\\\",\\\"lightsteelblue\\\",\\\"lightyellow\\\",\\\"limegreen\\\",\\\"linen\\\",\\\"magenta\\\",\\\"mediumaquamarine\\\",\\\"mediumblue\\\",\\\"mediumorchid\\\",\\\"mediumpurple\\\",\\\"mediumseagreen\\\",\\\"mediumslateblue\\\",\\\"mediumspringgreen\\\",\\\"mediumturquoise\\\",\\\"mediumvioletred\\\",\\\"midnightblue\\\",\\\"mintcream\\\",\\\"mistyrose\\\",\\\"moccasin\\\",\\\"navajowhite\\\",\\\"oldlace\\\",\\\"olivedrab\\\",\\\"orangered\\\",\\\"orchid\\\",\\\"palegoldenrod\\\",\\\"palegreen\\\",\\\"paleturquoise\\\",\\\"palevioletred\\\",\\\"papayawhip\\\",\\\"peachpuff\\\",\\\"peru\\\",\\\"pink\\\",\\\"plum\\\",\\\"powderblue\\\",\\\"rosybrown\\\",\\\"royalblue\\\",\\\"saddlebrown\\\",\\\"salmon\\\",\\\"sandybrown\\\",\\\"seagreen\\\",\\\"seashell\\\",\\\"sienna\\\",\\\"skyblue\\\",\\\"slateblue\\\",\\\"slategray\\\",\\\"slategrey\\\",\\\"snow\\\",\\\"springgreen\\\",\\\"steelblue\\\",\\\"tan\\\",\\\"thistle\\\",\\\"tomato\\\",\\\"turquoise\\\",\\\"violet\\\",\\\"wheat\\\",\\\"whitesmoke\\\",\\\"yellowgreen\\\",\\\"rebeccapurple\\\"],\\\"type\\\":\\\"string\\\"},\\\"ColorScheme\\\":{\\\"anyOf\\\":[{\\\"$ref\\\":\\\"#/definitions/Categorical\\\"},{\\\"$ref\\\":\\\"#/definitions/SequentialSingleHue\\\"},{\\\"$ref\\\":\\\"#/definitions/SequentialMultiHue\\\"},{\\\"$ref\\\":\\\"#/definitions/Diverging\\\"},{\\\"$ref\\\":\\\"#/definitions/Cyclical\\\"}]},\\\"Encoding\\\":{\\\"additionalProperties\\\":false,\\\"properties\\\":{\\\"angle\\\":{\\\"$ref\\\":\\\"#/definitions/NumericMarkPropDef\\\",\\\"description\\\":\\\"Rotation angle of point and text marks.\\\"},\\\"color\\\":{\\\"$ref\\\":\\\"#/definitions/ColorDef\\\",\\\"description\\\":\\\"Color of the marks – either fill or stroke color based on  the `filled` property of mark definition. By default, `color` represents fill color for `\\\\\\\"area\\\\\\\"`, `\\\\\\\"bar\\\\\\\"`, `\\\\\\\"tick\\\\\\\"`, `\\\\\\\"text\\\\\\\"`, `\\\\\\\"trail\\\\\\\"`, `\\\\\\\"circle\\\\\\\"`, and `\\\\\\\"square\\\\\\\"` / stroke color for `\\\\\\\"line\\\\\\\"` and `\\\\\\\"point\\\\\\\"`.\\\\n\\\\n__Default value:__ If undefined, the default color depends on [mark config](https://vega.github.io/vega-lite/docs/config.html#mark-config)'s `color` property.\\\\n\\\\n_Note:_ 1) For fine-grained control over both fill and stroke colors of the marks, please use the `fill` and `stroke` channels. The `fill` or `stroke` encodings have higher precedence than `color`, thus may override the `color` encoding if conflicting encodings are specified. 2) See the scale documentation for more information about customizing [color scheme](https://vega.github.io/vega-lite/docs/scale.html#scheme).\\\"},\\\"description\\\":{\\\"anyOf\\\":[{\\\"$ref\\\":\\\"#/definitions/StringFieldDefWithCondition\\\"},{\\\"$ref\\\":\\\"#/definitions/StringValueDefWithCondition\\\"}],\\\"description\\\":\\\"A text description of this mark for ARIA accessibility (SVG output only). For SVG output the `\\\\\\\"aria-label\\\\\\\"` attribute will be set to this description.\\\"},\\\"detail\\\":{\\\"anyOf\\\":[{\\\"$ref\\\":\\\"#/definitions/FieldDefWithoutScale\\\"},{\\\"items\\\":{\\\"$ref\\\":\\\"#/definitions/FieldDefWithoutScale\\\"},\\\"type\\\":\\\"array\\\"}],\\\"description\\\":\\\"Additional levels of detail for grouping data in aggregate views and in line, trail, and area marks without mapping data to a specific visual channel.\\\"},\\\"fill\\\":{\\\"$ref\\\":\\\"#/definitions/ColorDef\\\",\\\"description\\\":\\\"Fill color of the marks. __Default value:__ If undefined, the default color depends on [mark config](https://vega.github.io/vega-lite/docs/config.html#mark-config)'s `color` property.\\\\n\\\\n_Note:_ The `fill` encoding has higher precedence than `color`, thus may override the `color` encoding if conflicting encodings are specified.\\\"},\\\"fillOpacity\\\":{\\\"$ref\\\":\\\"#/definitions/NumericMarkPropDef\\\",\\\"description\\\":\\\"Fill opacity of the marks.\\\\n\\\\n__Default value:__ If undefined, the default opacity depends on [mark config](https://vega.github.io/vega-lite/docs/config.html#mark-config)'s `fillOpacity` property.\\\"},\\\"href\\\":{\\\"anyOf\\\":[{\\\"$ref\\\":\\\"#/definitions/StringFieldDefWithCondition\\\"},{\\\"$ref\\\":\\\"#/definitions/StringValueDefWithCondition\\\"}],\\\"description\\\":\\\"A URL to load upon mouse click.\\\"},\\\"key\\\":{\\\"$ref\\\":\\\"#/definitions/FieldDefWithoutScale\\\",\\\"description\\\":\\\"A data field to use as a unique key for data binding. When a visualization’s data is updated, the key value will be used to match data elements to existing mark instances. Use a key channel to enable object constancy for transitions over dynamic data.\\\"},\\\"latitude\\\":{\\\"$ref\\\":\\\"#/definitions/LatLongDef\\\",\\\"description\\\":\\\"Latitude position of geographically projected marks.\\\"},\\\"latitude2\\\":{\\\"$ref\\\":\\\"#/definitions/Position2Def\\\",\\\"description\\\":\\\"Latitude-2 position for geographically projected ranged `\\\\\\\"area\\\\\\\"`, `\\\\\\\"bar\\\\\\\"`, `\\\\\\\"rect\\\\\\\"`, and  `\\\\\\\"rule\\\\\\\"`.\\\"},\\\"longitude\\\":{\\\"$ref\\\":\\\"#/definitions/LatLongDef\\\",\\\"description\\\":\\\"Longitude position of geographically projected marks.\\\"},\\\"longitude2\\\":{\\\"$ref\\\":\\\"#/definitions/Position2Def\\\",\\\"description\\\":\\\"Longitude-2 position for geographically projected ranged `\\\\\\\"area\\\\\\\"`, `\\\\\\\"bar\\\\\\\"`, `\\\\\\\"rect\\\\\\\"`, and  `\\\\\\\"rule\\\\\\\"`.\\\"},\\\"opacity\\\":{\\\"$ref\\\":\\\"#/definitions/NumericMarkPropDef\\\",\\\"description\\\":\\\"Opacity of the marks.\\\\n\\\\n__Default value:__ If undefined, the default opacity depends on [mark config](https://vega.github.io/vega-lite/docs/config.html#mark-config)'s `opacity` property.\\\"},\\\"order\\\":{\\\"anyOf\\\":[{\\\"$ref\\\":\\\"#/definitions/OrderFieldDef\\\"},{\\\"items\\\":{\\\"$ref\\\":\\\"#/definitions/OrderFieldDef\\\"},\\\"type\\\":\\\"array\\\"},{\\\"$ref\\\":\\\"#/definitions/OrderValueDef\\\"}],\\\"description\\\":\\\"Order of the marks. - For stacked marks, this `order` channel encodes [stack order](https://vega.github.io/vega-lite/docs/stack.html#order). - For line and trail marks, this `order` channel encodes order of data points in the lines. This can be useful for creating [a connected scatterplot](https://vega.github.io/vega-lite/examples/connected_scatterplot.html). Setting `order` to `{\\\\\\\"value\\\\\\\": null}` makes the line marks use the original order in the data sources. - Otherwise, this `order` channel encodes layer order of the marks.\\\\n\\\\n__Note__: In aggregate plots, `order` field should be `aggregate`d to avoid creating additional aggregation grouping.\\\"},\\\"radius\\\":{\\\"$ref\\\":\\\"#/definitions/PolarDef\\\",\\\"description\\\":\\\"The outer radius in pixels of arc marks.\\\"},\\\"radius2\\\":{\\\"$ref\\\":\\\"#/definitions/Position2Def\\\",\\\"description\\\":\\\"The inner radius in pixels of arc marks.\\\"},\\\"shape\\\":{\\\"$ref\\\":\\\"#/definitions/ShapeDef\\\",\\\"description\\\":\\\"Shape of the mark.\\\\n\\\\n1. For `point` marks the supported values include:    - plotting shapes: `\\\\\\\"circle\\\\\\\"`, `\\\\\\\"square\\\\\\\"`, `\\\\\\\"cross\\\\\\\"`, `\\\\\\\"diamond\\\\\\\"`, `\\\\\\\"triangle-up\\\\\\\"`, `\\\\\\\"triangle-down\\\\\\\"`, `\\\\\\\"triangle-right\\\\\\\"`, or `\\\\\\\"triangle-left\\\\\\\"`.    - the line symbol `\\\\\\\"stroke\\\\\\\"`    - centered directional shapes `\\\\\\\"arrow\\\\\\\"`, `\\\\\\\"wedge\\\\\\\"`, or `\\\\\\\"triangle\\\\\\\"`    - a custom [SVG path string](https://developer.mozilla.org/en-US/docs/Web/SVG/Tutorial/Paths) (For correct sizing, custom shape paths should be defined within a square bounding box with coordinates ranging from -1 to 1 along both the x and y dimensions.)\\\\n\\\\n2. For `geoshape` marks it should be a field definition of the geojson data\\\\n\\\\n__Default value:__ If undefined, the default shape depends on [mark config](https://vega.github.io/vega-lite/docs/config.html#point-config)'s `shape` property. (`\\\\\\\"circle\\\\\\\"` if unset.)\\\"},\\\"size\\\":{\\\"$ref\\\":\\\"#/definitions/NumericMarkPropDef\\\",\\\"description\\\":\\\"Size of the mark. - For `\\\\\\\"point\\\\\\\"`, `\\\\\\\"square\\\\\\\"` and `\\\\\\\"circle\\\\\\\"`, – the symbol size, or pixel area of the mark. - For `\\\\\\\"bar\\\\\\\"` and `\\\\\\\"tick\\\\\\\"` – the bar and tick's size. - For `\\\\\\\"text\\\\\\\"` – the text's font size. - Size is unsupported for `\\\\\\\"line\\\\\\\"`, `\\\\\\\"area\\\\\\\"`, and `\\\\\\\"rect\\\\\\\"`. (Use `\\\\\\\"trail\\\\\\\"` instead of line with varying size)\\\"},\\\"stroke\\\":{\\\"$ref\\\":\\\"#/definitions/ColorDef\\\",\\\"description\\\":\\\"Stroke color of the marks. __Default value:__ If undefined, the default color depends on [mark config](https://vega.github.io/vega-lite/docs/config.html#mark-config)'s `color` property.\\\\n\\\\n_Note:_ The `stroke` encoding has higher precedence than `color`, thus may override the `color` encoding if conflicting encodings are specified.\\\"},\\\"strokeDash\\\":{\\\"$ref\\\":\\\"#/definitions/NumericArrayMarkPropDef\\\",\\\"description\\\":\\\"Stroke dash of the marks.\\\\n\\\\n__Default value:__ `[1,0]` (No dash).\\\"},\\\"strokeOpacity\\\":{\\\"$ref\\\":\\\"#/definitions/NumericMarkPropDef\\\",\\\"description\\\":\\\"Stroke opacity of the marks.\\\\n\\\\n__Default value:__ If undefined, the default opacity depends on [mark config](https://vega.github.io/vega-lite/docs/config.html#mark-config)'s `strokeOpacity` property.\\\"},\\\"strokeWidth\\\":{\\\"$ref\\\":\\\"#/definitions/NumericMarkPropDef\\\",\\\"description\\\":\\\"Stroke width of the marks.\\\\n\\\\n__Default value:__ If undefined, the default stroke width depends on [mark config](https://vega.github.io/vega-lite/docs/config.html#mark-config)'s `strokeWidth` property.\\\"},\\\"text\\\":{\\\"$ref\\\":\\\"#/definitions/TextDef\\\",\\\"description\\\":\\\"Text of the `text` mark.\\\"},\\\"theta\\\":{\\\"$ref\\\":\\\"#/definitions/PolarDef\\\",\\\"description\\\":\\\"- For arc marks, the arc length in radians if theta2 is not specified, otherwise the start arc angle. (A value of 0 indicates up or “north”, increasing values proceed clockwise.)\\\\n\\\\n- For text marks, polar coordinate angle in radians.\\\"},\\\"theta2\\\":{\\\"$ref\\\":\\\"#/definitions/Position2Def\\\",\\\"description\\\":\\\"The end angle of arc marks in radians. A value of 0 indicates up or “north”, increasing values proceed clockwise.\\\"},\\\"tooltip\\\":{\\\"anyOf\\\":[{\\\"$ref\\\":\\\"#/definitions/StringFieldDefWithCondition\\\"},{\\\"$ref\\\":\\\"#/definitions/StringValueDefWithCondition\\\"},{\\\"items\\\":{\\\"$ref\\\":\\\"#/definitions/StringFieldDef\\\"},\\\"type\\\":\\\"array\\\"},{\\\"type\\\":\\\"null\\\"}],\\\"description\\\":\\\"The tooltip text to show upon mouse hover. Specifying `tooltip` encoding overrides [the `tooltip` property in the mark definition](https://vega.github.io/vega-lite/docs/mark.html#mark-def).\\\\n\\\\nSee the [`tooltip`](https://vega.github.io/vega-lite/docs/tooltip.html) documentation for a detailed discussion about tooltip in Vega-Lite.\\\"},\\\"url\\\":{\\\"anyOf\\\":[{\\\"$ref\\\":\\\"#/definitions/StringFieldDefWithCondition\\\"},{\\\"$ref\\\":\\\"#/definitions/StringValueDefWithCondition\\\"}],\\\"description\\\":\\\"The URL of an image mark.\\\"},\\\"x\\\":{\\\"$ref\\\":\\\"#/definitions/PositionDef\\\",\\\"description\\\":\\\"X coordinates of the marks, or width of horizontal `\\\\\\\"bar\\\\\\\"` and `\\\\\\\"area\\\\\\\"` without specified `x2` or `width`.\\\\n\\\\nThe `value` of this channel can be a number or a string `\\\\\\\"width\\\\\\\"` for the width of the plot.\\\"},\\\"x2\\\":{\\\"$ref\\\":\\\"#/definitions/Position2Def\\\",\\\"description\\\":\\\"X2 coordinates for ranged `\\\\\\\"area\\\\\\\"`, `\\\\\\\"bar\\\\\\\"`, `\\\\\\\"rect\\\\\\\"`, and  `\\\\\\\"rule\\\\\\\"`.\\\\n\\\\nThe `value` of this channel can be a number or a string `\\\\\\\"width\\\\\\\"` for the width of the plot.\\\"},\\\"xError\\\":{\\\"anyOf\\\":[{\\\"$ref\\\":\\\"#/definitions/SecondaryFieldDef\\\"},{\\\"$ref\\\":\\\"#/definitions/ValueDef<number>\\\"}],\\\"description\\\":\\\"Error value of x coordinates for error specified `\\\\\\\"errorbar\\\\\\\"` and `\\\\\\\"errorband\\\\\\\"`.\\\"},\\\"xError2\\\":{\\\"anyOf\\\":[{\\\"$ref\\\":\\\"#/definitions/SecondaryFieldDef\\\"},{\\\"$ref\\\":\\\"#/definitions/ValueDef<number>\\\"}],\\\"description\\\":\\\"Secondary error value of x coordinates for error specified `\\\\\\\"errorbar\\\\\\\"` and `\\\\\\\"errorband\\\\\\\"`.\\\"},\\\"y\\\":{\\\"$ref\\\":\\\"#/definitions/PositionDef\\\",\\\"description\\\":\\\"Y coordinates of the marks, or height of vertical `\\\\\\\"bar\\\\\\\"` and `\\\\\\\"area\\\\\\\"` without specified `y2` or `height`.\\\\n\\\\nThe `value` of this channel can be a number or a string `\\\\\\\"height\\\\\\\"` for the height of the plot.\\\"},\\\"y2\\\":{\\\"$ref\\\":\\\"#/definitions/Position2Def\\\",\\\"description\\\":\\\"Y2 coordinates for ranged `\\\\\\\"area\\\\\\\"`, `\\\\\\\"bar\\\\\\\"`, `\\\\\\\"rect\\\\\\\"`, and  `\\\\\\\"rule\\\\\\\"`.\\\\n\\\\nThe `value` of this channel can be a number or a string `\\\\\\\"height\\\\\\\"` for the height of the plot.\\\"},\\\"yError\\\":{\\\"anyOf\\\":[{\\\"$ref\\\":\\\"#/definitions/SecondaryFieldDef\\\"},{\\\"$ref\\\":\\\"#/definitions/ValueDef<number>\\\"}],\\\"description\\\":\\\"Error value of y coordinates for error specified `\\\\\\\"errorbar\\\\\\\"` and `\\\\\\\"errorband\\\\\\\"`.\\\"},\\\"yError2\\\":{\\\"anyOf\\\":[{\\\"$ref\\\":\\\"#/definitions/SecondaryFieldDef\\\"},{\\\"$ref\\\":\\\"#/definitions/ValueDef<number>\\\"}],\\\"description\\\":\\\"Secondary error value of y coordinates for error specified `\\\\\\\"errorbar\\\\\\\"` and `\\\\\\\"errorband\\\\\\\"`.\\\"}},\\\"type\\\":\\\"object\\\"},\\\"CompositeMark\\\":{\\\"anyOf\\\":[{\\\"$ref\\\":\\\"#/definitions/BoxPlot\\\"},{\\\"$ref\\\":\\\"#/definitions/ErrorBar\\\"},{\\\"$ref\\\":\\\"#/definitions/ErrorBand\\\"}]},\\\"CompositeMarkDef\\\":{\\\"anyOf\\\":[{\\\"$ref\\\":\\\"#/definitions/BoxPlotDef\\\"},{\\\"$ref\\\":\\\"#/definitions/ErrorBarDef\\\"},{\\\"$ref\\\":\\\"#/definitions/ErrorBandDef\\\"}]},\\\"CompositionConfig\\\":{\\\"additionalProperties\\\":false,\\\"properties\\\":{\\\"columns\\\":{\\\"description\\\":\\\"The number of columns to include in the view composition layout.\\\\n\\\\n__Default value__: `undefined` -- An infinite number of columns (a single row) will be assumed. This is equivalent to `hconcat` (for `concat`) and to using the `column` channel (for `facet` and `repeat`).\\\\n\\\\n__Note__:\\\\n\\\\n1) This property is only for: - the general (wrappable) `concat` operator (not `hconcat`/`vconcat`) - the `facet` and `repeat` operator with one field/repetition definition (without row/column nesting)\\\\n\\\\n2) Setting the `columns` to `1` is equivalent to `vconcat` (for `concat`) and to using the `row` channel (for `facet` and `repeat`).\\\",\\\"type\\\":\\\"number\\\"},\\\"spacing\\\":{\\\"description\\\":\\\"The default spacing in pixels between composed sub-views.\\\\n\\\\n__Default value__: `20`\\\",\\\"type\\\":\\\"number\\\"}},\\\"type\\\":\\\"object\\\"},\\\"ConditionalMarkPropFieldOrDatumDef\\\":{\\\"anyOf\\\":[{\\\"$ref\\\":\\\"#/definitions/ConditionalPredicate<MarkPropFieldOrDatumDef>\\\"},{\\\"$ref\\\":\\\"#/definitions/ConditionalSelection<MarkPropFieldOrDatumDef>\\\"}]},\\\"ConditionalMarkPropFieldOrDatumDef<TypeForShape>\\\":{\\\"anyOf\\\":[{\\\"$ref\\\":\\\"#/definitions/ConditionalPredicate<MarkPropFieldOrDatumDef<TypeForShape>>\\\"},{\\\"$ref\\\":\\\"#/definitions/ConditionalSelection<MarkPropFieldOrDatumDef<TypeForShape>>\\\"}]},\\\"ConditionalStringFieldDef\\\":{\\\"anyOf\\\":[{\\\"$ref\\\":\\\"#/definitions/ConditionalPredicate<StringFieldDef>\\\"},{\\\"$ref\\\":\\\"#/definitions/ConditionalSelection<StringFieldDef>\\\"}]},\\\"ConditionalValueDef<(Gradient|string|null|ExprRef)>\\\":{\\\"anyOf\\\":[{\\\"$ref\\\":\\\"#/definitions/ConditionalPredicate<ValueDef<(Gradient|string|null|ExprRef)>>\\\"},{\\\"$ref\\\":\\\"#/definitions/ConditionalSelection<ValueDef<(Gradient|string|null|ExprRef)>>\\\"}]},\\\"ConditionalValueDef<(Text|ExprRef)>\\\":{\\\"anyOf\\\":[{\\\"$ref\\\":\\\"#/definitions/ConditionalPredicate<ValueDef<(Text|ExprRef)>>\\\"},{\\\"$ref\\\":\\\"#/definitions/ConditionalSelection<ValueDef<(Text|ExprRef)>>\\\"}]},\\\"ConditionalValueDef<(number[]|ExprRef)>\\\":{\\\"anyOf\\\":[{\\\"$ref\\\":\\\"#/definitions/ConditionalPredicate<ValueDef<(number[]|ExprRef)>>\\\"},{\\\"$ref\\\":\\\"#/definitions/ConditionalSelection<ValueDef<(number[]|ExprRef)>>\\\"}]},\\\"ConditionalValueDef<(number|ExprRef)>\\\":{\\\"anyOf\\\":[{\\\"$ref\\\":\\\"#/definitions/ConditionalPredicate<ValueDef<(number|ExprRef)>>\\\"},{\\\"$ref\\\":\\\"#/definitions/ConditionalSelection<ValueDef<(number|ExprRef)>>\\\"}]},\\\"ConditionalValueDef<(string|ExprRef)>\\\":{\\\"anyOf\\\":[{\\\"$ref\\\":\\\"#/definitions/ConditionalPredicate<ValueDef<(string|ExprRef)>>\\\"},{\\\"$ref\\\":\\\"#/definitions/ConditionalSelection<ValueDef<(string|ExprRef)>>\\\"}]},\\\"ConditionalValueDef<(string|null|ExprRef)>\\\":{\\\"anyOf\\\":[{\\\"$ref\\\":\\\"#/definitions/ConditionalPredicate<ValueDef<(string|null|ExprRef)>>\\\"},{\\\"$ref\\\":\\\"#/definitions/ConditionalSelection<ValueDef<(string|null|ExprRef)>>\\\"}]},\\\"ConditionalValueDef<number>\\\":{\\\"anyOf\\\":[{\\\"$ref\\\":\\\"#/definitions/ConditionalPredicate<ValueDef<number>>\\\"},{\\\"$ref\\\":\\\"#/definitions/ConditionalSelection<ValueDef<number>>\\\"}]},\\\"ConditionalAxisColor\\\":{\\\"$ref\\\":\\\"#/definitions/ConditionalAxisProperty<(Color|null)>\\\"},\\\"ConditionalAxisLabelAlign\\\":{\\\"$ref\\\":\\\"#/definitions/ConditionalAxisProperty<(Align|null)>\\\"},\\\"ConditionalAxisLabelBaseline\\\":{\\\"$ref\\\":\\\"#/definitions/ConditionalAxisProperty<(TextBaseline|null)>\\\"},\\\"ConditionalAxisLabelFontStyle\\\":{\\\"$ref\\\":\\\"#/definitions/ConditionalAxisProperty<(FontStyle|null)>\\\"},\\\"ConditionalAxisLabelFontWeight\\\":{\\\"$ref\\\":\\\"#/definitions/ConditionalAxisProperty<(FontWeight|null)>\\\"},\\\"ConditionalAxisNumber\\\":{\\\"$ref\\\":\\\"#/definitions/ConditionalAxisProperty<(number|null)>\\\"},\\\"ConditionalAxisNumberArray\\\":{\\\"$ref\\\":\\\"#/definitions/ConditionalAxisProperty<(number[]|null)>\\\"},\\\"ConditionalAxisProperty<(Align|null)>\\\":{\\\"anyOf\\\":[{\\\"additionalProperties\\\":false,\\\"properties\\\":{\\\"condition\\\":{\\\"anyOf\\\":[{\\\"$ref\\\":\\\"#/definitions/ConditionalPredicate<(ValueDef<(Align|null)>|ExprRef)>\\\"},{\\\"items\\\":{\\\"$ref\\\":\\\"#/definitions/ConditionalPredicate<(ValueDef<(Align|null)>|ExprRef)>\\\"},\\\"type\\\":\\\"array\\\"}]},\\\"value\\\":{\\\"anyOf\\\":[{\\\"$ref\\\":\\\"#/definitions/Align\\\"},{\\\"type\\\":\\\"null\\\"}],\\\"description\\\":\\\"A constant value in visual domain (e.g., `\\\\\\\"red\\\\\\\"` / `\\\\\\\"#0099ff\\\\\\\"` / [gradient definition](https://vega.github.io/vega-lite/docs/types.html#gradient) for color, values between `0` to `1` for opacity).\\\"}},\\\"required\\\":[\\\"condition\\\",\\\"value\\\"],\\\"type\\\":\\\"object\\\"},{\\\"additionalProperties\\\":false,\\\"properties\\\":{\\\"condition\\\":{\\\"anyOf\\\":[{\\\"$ref\\\":\\\"#/definitions/ConditionalPredicate<(ValueDef<(Align|null)>|ExprRef)>\\\"},{\\\"items\\\":{\\\"$ref\\\":\\\"#/definitions/ConditionalPredicate<(ValueDef<(Align|null)>|ExprRef)>\\\"},\\\"type\\\":\\\"array\\\"}]},\\\"expr\\\":{\\\"description\\\":\\\"Vega expression (which can refer to Vega-Lite parameters).\\\",\\\"type\\\":\\\"string\\\"}},\\\"required\\\":[\\\"condition\\\",\\\"expr\\\"],\\\"type\\\":\\\"object\\\"}]},\\\"ConditionalAxisProperty<(Color|null)>\\\":{\\\"anyOf\\\":[{\\\"additionalProperties\\\":false,\\\"properties\\\":{\\\"condition\\\":{\\\"anyOf\\\":[{\\\"$ref\\\":\\\"#/definitions/ConditionalPredicate<(ValueDef<(Color|null)>|ExprRef)>\\\"},{\\\"items\\\":{\\\"$ref\\\":\\\"#/definitions/ConditionalPredicate<(ValueDef<(Color|null)>|ExprRef)>\\\"},\\\"type\\\":\\\"array\\\"}]},\\\"value\\\":{\\\"anyOf\\\":[{\\\"$ref\\\":\\\"#/definitions/Color\\\"},{\\\"type\\\":\\\"null\\\"}],\\\"description\\\":\\\"A constant value in visual domain (e.g., `\\\\\\\"red\\\\\\\"` / `\\\\\\\"#0099ff\\\\\\\"` / [gradient definition](https://vega.github.io/vega-lite/docs/types.html#gradient) for color, values between `0` to `1` for opacity).\\\"}},\\\"required\\\":[\\\"condition\\\",\\\"value\\\"],\\\"type\\\":\\\"object\\\"},{\\\"additionalProperties\\\":false,\\\"properties\\\":{\\\"condition\\\":{\\\"anyOf\\\":[{\\\"$ref\\\":\\\"#/definitions/ConditionalPredicate<(ValueDef<(Color|null)>|ExprRef)>\\\"},{\\\"items\\\":{\\\"$ref\\\":\\\"#/definitions/ConditionalPredicate<(ValueDef<(Color|null)>|ExprRef)>\\\"},\\\"type\\\":\\\"array\\\"}]},\\\"expr\\\":{\\\"description\\\":\\\"Vega expression (which can refer to Vega-Lite parameters).\\\",\\\"type\\\":\\\"string\\\"}},\\\"required\\\":[\\\"condition\\\",\\\"expr\\\"],\\\"type\\\":\\\"object\\\"}]},\\\"ConditionalAxisProperty<(FontStyle|null)>\\\":{\\\"anyOf\\\":[{\\\"additionalProperties\\\":false,\\\"properties\\\":{\\\"condition\\\":{\\\"anyOf\\\":[{\\\"$ref\\\":\\\"#/definitions/ConditionalPredicate<(ValueDef<(FontStyle|null)>|ExprRef)>\\\"},{\\\"items\\\":{\\\"$ref\\\":\\\"#/definitions/ConditionalPredicate<(ValueDef<(FontStyle|null)>|ExprRef)>\\\"},\\\"type\\\":\\\"array\\\"}]},\\\"value\\\":{\\\"anyOf\\\":[{\\\"$ref\\\":\\\"#/definitions/FontStyle\\\"},{\\\"type\\\":\\\"null\\\"}],\\\"description\\\":\\\"A constant value in visual domain (e.g., `\\\\\\\"red\\\\\\\"` / `\\\\\\\"#0099ff\\\\\\\"` / [gradient definition](https://vega.github.io/vega-lite/docs/types.html#gradient) for color, values between `0` to `1` for opacity).\\\"}},\\\"required\\\":[\\\"condition\\\",\\\"value\\\"],\\\"type\\\":\\\"object\\\"},{\\\"additionalProperties\\\":false,\\\"properties\\\":{\\\"condition\\\":{\\\"anyOf\\\":[{\\\"$ref\\\":\\\"#/definitions/ConditionalPredicate<(ValueDef<(FontStyle|null)>|ExprRef)>\\\"},{\\\"items\\\":{\\\"$ref\\\":\\\"#/definitions/ConditionalPredicate<(ValueDef<(FontStyle|null)>|ExprRef)>\\\"},\\\"type\\\":\\\"array\\\"}]},\\\"expr\\\":{\\\"description\\\":\\\"Vega expression (which can refer to Vega-Lite parameters).\\\",\\\"type\\\":\\\"string\\\"}},\\\"required\\\":[\\\"condition\\\",\\\"expr\\\"],\\\"type\\\":\\\"object\\\"}]},\\\"ConditionalAxisProperty<(FontWeight|null)>\\\":{\\\"anyOf\\\":[{\\\"additionalProperties\\\":false,\\\"properties\\\":{\\\"condition\\\":{\\\"anyOf\\\":[{\\\"$ref\\\":\\\"#/definitions/ConditionalPredicate<(ValueDef<(FontWeight|null)>|ExprRef)>\\\"},{\\\"items\\\":{\\\"$ref\\\":\\\"#/definitions/ConditionalPredicate<(ValueDef<(FontWeight|null)>|ExprRef)>\\\"},\\\"type\\\":\\\"array\\\"}]},\\\"value\\\":{\\\"anyOf\\\":[{\\\"$ref\\\":\\\"#/definitions/FontWeight\\\"},{\\\"type\\\":\\\"null\\\"}],\\\"description\\\":\\\"A constant value in visual domain (e.g., `\\\\\\\"red\\\\\\\"` / `\\\\\\\"#0099ff\\\\\\\"` / [gradient definition](https://vega.github.io/vega-lite/docs/types.html#gradient) for color, values between `0` to `1` for opacity).\\\"}},\\\"required\\\":[\\\"condition\\\",\\\"value\\\"],\\\"type\\\":\\\"object\\\"},{\\\"additionalProperties\\\":false,\\\"properties\\\":{\\\"condition\\\":{\\\"anyOf\\\":[{\\\"$ref\\\":\\\"#/definitions/ConditionalPredicate<(ValueDef<(FontWeight|null)>|ExprRef)>\\\"},{\\\"items\\\":{\\\"$ref\\\":\\\"#/definitions/ConditionalPredicate<(ValueDef<(FontWeight|null)>|ExprRef)>\\\"},\\\"type\\\":\\\"array\\\"}]},\\\"expr\\\":{\\\"description\\\":\\\"Vega expression (which can refer to Vega-Lite parameters).\\\",\\\"type\\\":\\\"string\\\"}},\\\"required\\\":[\\\"condition\\\",\\\"expr\\\"],\\\"type\\\":\\\"object\\\"}]},\\\"ConditionalAxisProperty<(TextBaseline|null)>\\\":{\\\"anyOf\\\":[{\\\"additionalProperties\\\":false,\\\"properties\\\":{\\\"condition\\\":{\\\"anyOf\\\":[{\\\"$ref\\\":\\\"#/definitions/ConditionalPredicate<(ValueDef<(TextBaseline|null)>|ExprRef)>\\\"},{\\\"items\\\":{\\\"$ref\\\":\\\"#/definitions/ConditionalPredicate<(ValueDef<(TextBaseline|null)>|ExprRef)>\\\"},\\\"type\\\":\\\"array\\\"}]},\\\"value\\\":{\\\"anyOf\\\":[{\\\"$ref\\\":\\\"#/definitions/TextBaseline\\\"},{\\\"type\\\":\\\"null\\\"}],\\\"description\\\":\\\"A constant value in visual domain (e.g., `\\\\\\\"red\\\\\\\"` / `\\\\\\\"#0099ff\\\\\\\"` / [gradient definition](https://vega.github.io/vega-lite/docs/types.html#gradient) for color, values between `0` to `1` for opacity).\\\"}},\\\"required\\\":[\\\"condition\\\",\\\"value\\\"],\\\"type\\\":\\\"object\\\"},{\\\"additionalProperties\\\":false,\\\"properties\\\":{\\\"condition\\\":{\\\"anyOf\\\":[{\\\"$ref\\\":\\\"#/definitions/ConditionalPredicate<(ValueDef<(TextBaseline|null)>|ExprRef)>\\\"},{\\\"items\\\":{\\\"$ref\\\":\\\"#/definitions/ConditionalPredicate<(ValueDef<(TextBaseline|null)>|ExprRef)>\\\"},\\\"type\\\":\\\"array\\\"}]},\\\"expr\\\":{\\\"description\\\":\\\"Vega expression (which can refer to Vega-Lite parameters).\\\",\\\"type\\\":\\\"string\\\"}},\\\"required\\\":[\\\"condition\\\",\\\"expr\\\"],\\\"type\\\":\\\"object\\\"}]},\\\"ConditionalAxisProperty<(number[]|null)>\\\":{\\\"anyOf\\\":[{\\\"additionalProperties\\\":false,\\\"properties\\\":{\\\"condition\\\":{\\\"anyOf\\\":[{\\\"$ref\\\":\\\"#/definitions/ConditionalPredicate<(ValueDef<(number[]|null)>|ExprRef)>\\\"},{\\\"items\\\":{\\\"$ref\\\":\\\"#/definitions/ConditionalPredicate<(ValueDef<(number[]|null)>|ExprRef)>\\\"},\\\"type\\\":\\\"array\\\"}]},\\\"value\\\":{\\\"anyOf\\\":[{\\\"items\\\":{\\\"type\\\":\\\"number\\\"},\\\"type\\\":\\\"array\\\"},{\\\"type\\\":\\\"null\\\"}],\\\"description\\\":\\\"A constant value in visual domain (e.g., `\\\\\\\"red\\\\\\\"` / `\\\\\\\"#0099ff\\\\\\\"` / [gradient definition](https://vega.github.io/vega-lite/docs/types.html#gradient) for color, values between `0` to `1` for opacity).\\\"}},\\\"required\\\":[\\\"condition\\\",\\\"value\\\"],\\\"type\\\":\\\"object\\\"},{\\\"additionalProperties\\\":false,\\\"properties\\\":{\\\"condition\\\":{\\\"anyOf\\\":[{\\\"$ref\\\":\\\"#/definitions/ConditionalPredicate<(ValueDef<(number[]|null)>|ExprRef)>\\\"},{\\\"items\\\":{\\\"$ref\\\":\\\"#/definitions/ConditionalPredicate<(ValueDef<(number[]|null)>|ExprRef)>\\\"},\\\"type\\\":\\\"array\\\"}]},\\\"expr\\\":{\\\"description\\\":\\\"Vega expression (which can refer to Vega-Lite parameters).\\\",\\\"type\\\":\\\"string\\\"}},\\\"required\\\":[\\\"condition\\\",\\\"expr\\\"],\\\"type\\\":\\\"object\\\"}]},\\\"ConditionalAxisProperty<(number|null)>\\\":{\\\"anyOf\\\":[{\\\"additionalProperties\\\":false,\\\"properties\\\":{\\\"condition\\\":{\\\"anyOf\\\":[{\\\"$ref\\\":\\\"#/definitions/ConditionalPredicate<(ValueDef<(number|null)>|ExprRef)>\\\"},{\\\"items\\\":{\\\"$ref\\\":\\\"#/definitions/ConditionalPredicate<(ValueDef<(number|null)>|ExprRef)>\\\"},\\\"type\\\":\\\"array\\\"}]},\\\"value\\\":{\\\"description\\\":\\\"A constant value in visual domain (e.g., `\\\\\\\"red\\\\\\\"` / `\\\\\\\"#0099ff\\\\\\\"` / [gradient definition](https://vega.github.io/vega-lite/docs/types.html#gradient) for color, values between `0` to `1` for opacity).\\\",\\\"type\\\":[\\\"number\\\",\\\"null\\\"]}},\\\"required\\\":[\\\"condition\\\",\\\"value\\\"],\\\"type\\\":\\\"object\\\"},{\\\"additionalProperties\\\":false,\\\"properties\\\":{\\\"condition\\\":{\\\"anyOf\\\":[{\\\"$ref\\\":\\\"#/definitions/ConditionalPredicate<(ValueDef<(number|null)>|ExprRef)>\\\"},{\\\"items\\\":{\\\"$ref\\\":\\\"#/definitions/ConditionalPredicate<(ValueDef<(number|null)>|ExprRef)>\\\"},\\\"type\\\":\\\"array\\\"}]},\\\"expr\\\":{\\\"description\\\":\\\"Vega expression (which can refer to Vega-Lite parameters).\\\",\\\"type\\\":\\\"string\\\"}},\\\"required\\\":[\\\"condition\\\",\\\"expr\\\"],\\\"type\\\":\\\"object\\\"}]},\\\"ConditionalAxisProperty<(string|null)>\\\":{\\\"anyOf\\\":[{\\\"additionalProperties\\\":false,\\\"properties\\\":{\\\"condition\\\":{\\\"anyOf\\\":[{\\\"$ref\\\":\\\"#/definitions/ConditionalPredicate<(ValueDef<(string|null)>|ExprRef)>\\\"},{\\\"items\\\":{\\\"$ref\\\":\\\"#/definitions/ConditionalPredicate<(ValueDef<(string|null)>|ExprRef)>\\\"},\\\"type\\\":\\\"array\\\"}]},\\\"value\\\":{\\\"description\\\":\\\"A constant value in visual domain (e.g., `\\\\\\\"red\\\\\\\"` / `\\\\\\\"#0099ff\\\\\\\"` / [gradient definition](https://vega.github.io/vega-lite/docs/types.html#gradient) for color, values between `0` to `1` for opacity).\\\",\\\"type\\\":[\\\"string\\\",\\\"null\\\"]}},\\\"required\\\":[\\\"condition\\\",\\\"value\\\"],\\\"type\\\":\\\"object\\\"},{\\\"additionalProperties\\\":false,\\\"properties\\\":{\\\"condition\\\":{\\\"anyOf\\\":[{\\\"$ref\\\":\\\"#/definitions/ConditionalPredicate<(ValueDef<(string|null)>|ExprRef)>\\\"},{\\\"items\\\":{\\\"$ref\\\":\\\"#/definitions/ConditionalPredicate<(ValueDef<(string|null)>|ExprRef)>\\\"},\\\"type\\\":\\\"array\\\"}]},\\\"expr\\\":{\\\"description\\\":\\\"Vega expression (which can refer to Vega-Lite parameters).\\\",\\\"type\\\":\\\"string\\\"}},\\\"required\\\":[\\\"condition\\\",\\\"expr\\\"],\\\"type\\\":\\\"object\\\"}]},\\\"ConditionalAxisString\\\":{\\\"$ref\\\":\\\"#/definitions/ConditionalAxisProperty<(string|null)>\\\"},\\\"ConditionalPredicate<(ValueDef<(Align|null)>|ExprRef)>\\\":{\\\"anyOf\\\":[{\\\"additionalProperties\\\":false,\\\"properties\\\":{\\\"test\\\":{\\\"$ref\\\":\\\"#/definitions/PredicateComposition\\\",\\\"description\\\":\\\"Predicate for triggering the condition\\\"},\\\"value\\\":{\\\"anyOf\\\":[{\\\"$ref\\\":\\\"#/definitions/Align\\\"},{\\\"type\\\":\\\"null\\\"}],\\\"description\\\":\\\"A constant value in visual domain (e.g., `\\\\\\\"red\\\\\\\"` / `\\\\\\\"#0099ff\\\\\\\"` / [gradient definition](https://vega.github.io/vega-lite/docs/types.html#gradient) for color, values between `0` to `1` for opacity).\\\"}},\\\"required\\\":[\\\"test\\\",\\\"value\\\"],\\\"type\\\":\\\"object\\\"},{\\\"additionalProperties\\\":false,\\\"properties\\\":{\\\"expr\\\":{\\\"description\\\":\\\"Vega expression (which can refer to Vega-Lite parameters).\\\",\\\"type\\\":\\\"string\\\"},\\\"test\\\":{\\\"$ref\\\":\\\"#/definitions/PredicateComposition\\\",\\\"description\\\":\\\"Predicate for triggering the condition\\\"}},\\\"required\\\":[\\\"expr\\\",\\\"test\\\"],\\\"type\\\":\\\"object\\\"}]},\\\"ConditionalPredicate<(ValueDef<(Color|null)>|ExprRef)>\\\":{\\\"anyOf\\\":[{\\\"additionalProperties\\\":false,\\\"properties\\\":{\\\"test\\\":{\\\"$ref\\\":\\\"#/definitions/PredicateComposition\\\",\\\"description\\\":\\\"Predicate for triggering the condition\\\"},\\\"value\\\":{\\\"anyOf\\\":[{\\\"$ref\\\":\\\"#/definitions/Color\\\"},{\\\"type\\\":\\\"null\\\"}],\\\"description\\\":\\\"A constant value in visual domain (e.g., `\\\\\\\"red\\\\\\\"` / `\\\\\\\"#0099ff\\\\\\\"` / [gradient definition](https://vega.github.io/vega-lite/docs/types.html#gradient) for color, values between `0` to `1` for opacity).\\\"}},\\\"required\\\":[\\\"test\\\",\\\"value\\\"],\\\"type\\\":\\\"object\\\"},{\\\"additionalProperties\\\":false,\\\"properties\\\":{\\\"expr\\\":{\\\"description\\\":\\\"Vega expression (which can refer to Vega-Lite parameters).\\\",\\\"type\\\":\\\"string\\\"},\\\"test\\\":{\\\"$ref\\\":\\\"#/definitions/PredicateComposition\\\",\\\"description\\\":\\\"Predicate for triggering the condition\\\"}},\\\"required\\\":[\\\"expr\\\",\\\"test\\\"],\\\"type\\\":\\\"object\\\"}]},\\\"ConditionalPredicate<(ValueDef<(FontStyle|null)>|ExprRef)>\\\":{\\\"anyOf\\\":[{\\\"additionalProperties\\\":false,\\\"properties\\\":{\\\"test\\\":{\\\"$ref\\\":\\\"#/definitions/PredicateComposition\\\",\\\"description\\\":\\\"Predicate for triggering the condition\\\"},\\\"value\\\":{\\\"anyOf\\\":[{\\\"$ref\\\":\\\"#/definitions/FontStyle\\\"},{\\\"type\\\":\\\"null\\\"}],\\\"description\\\":\\\"A constant value in visual domain (e.g., `\\\\\\\"red\\\\\\\"` / `\\\\\\\"#0099ff\\\\\\\"` / [gradient definition](https://vega.github.io/vega-lite/docs/types.html#gradient) for color, values between `0` to `1` for opacity).\\\"}},\\\"required\\\":[\\\"test\\\",\\\"value\\\"],\\\"type\\\":\\\"object\\\"},{\\\"additionalProperties\\\":false,\\\"properties\\\":{\\\"expr\\\":{\\\"description\\\":\\\"Vega expression (which can refer to Vega-Lite parameters).\\\",\\\"type\\\":\\\"string\\\"},\\\"test\\\":{\\\"$ref\\\":\\\"#/definitions/PredicateComposition\\\",\\\"description\\\":\\\"Predicate for triggering the condition\\\"}},\\\"required\\\":[\\\"expr\\\",\\\"test\\\"],\\\"type\\\":\\\"object\\\"}]},\\\"ConditionalPredicate<(ValueDef<(FontWeight|null)>|ExprRef)>\\\":{\\\"anyOf\\\":[{\\\"additionalProperties\\\":false,\\\"properties\\\":{\\\"test\\\":{\\\"$ref\\\":\\\"#/definitions/PredicateComposition\\\",\\\"description\\\":\\\"Predicate for triggering the condition\\\"},\\\"value\\\":{\\\"anyOf\\\":[{\\\"$ref\\\":\\\"#/definitions/FontWeight\\\"},{\\\"type\\\":\\\"null\\\"}],\\\"description\\\":\\\"A constant value in visual domain (e.g., `\\\\\\\"red\\\\\\\"` / `\\\\\\\"#0099ff\\\\\\\"` / [gradient definition](https://vega.github.io/vega-lite/docs/types.html#gradient) for color, values between `0` to `1` for opacity).\\\"}},\\\"required\\\":[\\\"test\\\",\\\"value\\\"],\\\"type\\\":\\\"object\\\"},{\\\"additionalProperties\\\":false,\\\"properties\\\":{\\\"expr\\\":{\\\"description\\\":\\\"Vega expression (which can refer to Vega-Lite parameters).\\\",\\\"type\\\":\\\"string\\\"},\\\"test\\\":{\\\"$ref\\\":\\\"#/definitions/PredicateComposition\\\",\\\"description\\\":\\\"Predicate for triggering the condition\\\"}},\\\"required\\\":[\\\"expr\\\",\\\"test\\\"],\\\"type\\\":\\\"object\\\"}]},\\\"ConditionalPredicate<(ValueDef<(TextBaseline|null)>|ExprRef)>\\\":{\\\"anyOf\\\":[{\\\"additionalProperties\\\":false,\\\"properties\\\":{\\\"test\\\":{\\\"$ref\\\":\\\"#/definitions/PredicateComposition\\\",\\\"description\\\":\\\"Predicate for triggering the condition\\\"},\\\"value\\\":{\\\"anyOf\\\":[{\\\"$ref\\\":\\\"#/definitions/TextBaseline\\\"},{\\\"type\\\":\\\"null\\\"}],\\\"description\\\":\\\"A constant value in visual domain (e.g., `\\\\\\\"red\\\\\\\"` / `\\\\\\\"#0099ff\\\\\\\"` / [gradient definition](https://vega.github.io/vega-lite/docs/types.html#gradient) for color, values between `0` to `1` for opacity).\\\"}},\\\"required\\\":[\\\"test\\\",\\\"value\\\"],\\\"type\\\":\\\"object\\\"},{\\\"additionalProperties\\\":false,\\\"properties\\\":{\\\"expr\\\":{\\\"description\\\":\\\"Vega expression (which can refer to Vega-Lite parameters).\\\",\\\"type\\\":\\\"string\\\"},\\\"test\\\":{\\\"$ref\\\":\\\"#/definitions/PredicateComposition\\\",\\\"description\\\":\\\"Predicate for triggering the condition\\\"}},\\\"required\\\":[\\\"expr\\\",\\\"test\\\"],\\\"type\\\":\\\"object\\\"}]},\\\"ConditionalPredicate<(ValueDef<(number[]|null)>|ExprRef)>\\\":{\\\"anyOf\\\":[{\\\"additionalProperties\\\":false,\\\"properties\\\":{\\\"test\\\":{\\\"$ref\\\":\\\"#/definitions/PredicateComposition\\\",\\\"description\\\":\\\"Predicate for triggering the condition\\\"},\\\"value\\\":{\\\"anyOf\\\":[{\\\"items\\\":{\\\"type\\\":\\\"number\\\"},\\\"type\\\":\\\"array\\\"},{\\\"type\\\":\\\"null\\\"}],\\\"description\\\":\\\"A constant value in visual domain (e.g., `\\\\\\\"red\\\\\\\"` / `\\\\\\\"#0099ff\\\\\\\"` / [gradient definition](https://vega.github.io/vega-lite/docs/types.html#gradient) for color, values between `0` to `1` for opacity).\\\"}},\\\"required\\\":[\\\"test\\\",\\\"value\\\"],\\\"type\\\":\\\"object\\\"},{\\\"additionalProperties\\\":false,\\\"properties\\\":{\\\"expr\\\":{\\\"description\\\":\\\"Vega expression (which can refer to Vega-Lite parameters).\\\",\\\"type\\\":\\\"string\\\"},\\\"test\\\":{\\\"$ref\\\":\\\"#/definitions/PredicateComposition\\\",\\\"description\\\":\\\"Predicate for triggering the condition\\\"}},\\\"required\\\":[\\\"expr\\\",\\\"test\\\"],\\\"type\\\":\\\"object\\\"}]},\\\"ConditionalPredicate<(ValueDef<(number|null)>|ExprRef)>\\\":{\\\"anyOf\\\":[{\\\"additionalProperties\\\":false,\\\"properties\\\":{\\\"test\\\":{\\\"$ref\\\":\\\"#/definitions/PredicateComposition\\\",\\\"description\\\":\\\"Predicate for triggering the condition\\\"},\\\"value\\\":{\\\"description\\\":\\\"A constant value in visual domain (e.g., `\\\\\\\"red\\\\\\\"` / `\\\\\\\"#0099ff\\\\\\\"` / [gradient definition](https://vega.github.io/vega-lite/docs/types.html#gradient) for color, values between `0` to `1` for opacity).\\\",\\\"type\\\":[\\\"number\\\",\\\"null\\\"]}},\\\"required\\\":[\\\"test\\\",\\\"value\\\"],\\\"type\\\":\\\"object\\\"},{\\\"additionalProperties\\\":false,\\\"properties\\\":{\\\"expr\\\":{\\\"description\\\":\\\"Vega expression (which can refer to Vega-Lite parameters).\\\",\\\"type\\\":\\\"string\\\"},\\\"test\\\":{\\\"$ref\\\":\\\"#/definitions/PredicateComposition\\\",\\\"description\\\":\\\"Predicate for triggering the condition\\\"}},\\\"required\\\":[\\\"expr\\\",\\\"test\\\"],\\\"type\\\":\\\"object\\\"}]},\\\"ConditionalPredicate<(ValueDef<(string|null)>|ExprRef)>\\\":{\\\"anyOf\\\":[{\\\"additionalProperties\\\":false,\\\"properties\\\":{\\\"test\\\":{\\\"$ref\\\":\\\"#/definitions/PredicateComposition\\\",\\\"description\\\":\\\"Predicate for triggering the condition\\\"},\\\"value\\\":{\\\"description\\\":\\\"A constant value in visual domain (e.g., `\\\\\\\"red\\\\\\\"` / `\\\\\\\"#0099ff\\\\\\\"` / [gradient definition](https://vega.github.io/vega-lite/docs/types.html#gradient) for color, values between `0` to `1` for opacity).\\\",\\\"type\\\":[\\\"string\\\",\\\"null\\\"]}},\\\"required\\\":[\\\"test\\\",\\\"value\\\"],\\\"type\\\":\\\"object\\\"},{\\\"additionalProperties\\\":false,\\\"properties\\\":{\\\"expr\\\":{\\\"description\\\":\\\"Vega expression (which can refer to Vega-Lite parameters).\\\",\\\"type\\\":\\\"string\\\"},\\\"test\\\":{\\\"$ref\\\":\\\"#/definitions/PredicateComposition\\\",\\\"description\\\":\\\"Predicate for triggering the condition\\\"}},\\\"required\\\":[\\\"expr\\\",\\\"test\\\"],\\\"type\\\":\\\"object\\\"}]},\\\"ConditionalPredicate<MarkPropFieldOrDatumDef>\\\":{\\\"anyOf\\\":[{\\\"additionalProperties\\\":false,\\\"properties\\\":{\\\"aggregate\\\":{\\\"$ref\\\":\\\"#/definitions/Aggregate\\\",\\\"description\\\":\\\"Aggregation function for the field (e.g., `\\\\\\\"mean\\\\\\\"`, `\\\\\\\"sum\\\\\\\"`, `\\\\\\\"median\\\\\\\"`, `\\\\\\\"min\\\\\\\"`, `\\\\\\\"max\\\\\\\"`, `\\\\\\\"count\\\\\\\"`).\\\\n\\\\n__Default value:__ `undefined` (None)\\\\n\\\\n__See also:__ [`aggregate`](https://vega.github.io/vega-lite/docs/aggregate.html) documentation.\\\"},\\\"band\\\":{\\\"description\\\":\\\"For rect-based marks (`rect`, `bar`, and `image`), mark size relative to bandwidth of [band scales](https://vega.github.io/vega-lite/docs/scale.html#band), bins or time units. If set to `1`, the mark size is set to the bandwidth, the bin interval, or the time unit interval. If set to `0.5`, the mark size is half of the bandwidth or the time unit interval.\\\\n\\\\nFor other marks, relative position on a band of a stacked, binned, time unit or band scale. If set to `0`, the marks will be positioned at the beginning of the band. If set to `0.5`, the marks will be positioned in the middle of the band.\\\",\\\"maximum\\\":1,\\\"minimum\\\":0,\\\"type\\\":\\\"number\\\"},\\\"bin\\\":{\\\"anyOf\\\":[{\\\"type\\\":\\\"boolean\\\"},{\\\"$ref\\\":\\\"#/definitions/BinParams\\\"},{\\\"type\\\":\\\"null\\\"}],\\\"description\\\":\\\"A flag for binning a `quantitative` field, [an object defining binning parameters](https://vega.github.io/vega-lite/docs/bin.html#params), or indicating that the data for `x` or `y` channel are binned before they are imported into Vega-Lite (`\\\\\\\"binned\\\\\\\"`).\\\\n\\\\n- If `true`, default [binning parameters](https://vega.github.io/vega-lite/docs/bin.html) will be applied.\\\\n\\\\n- If `\\\\\\\"binned\\\\\\\"`, this indicates that the data for the `x` (or `y`) channel are already binned. You can map the bin-start field to `x` (or `y`) and the bin-end field to `x2` (or `y2`). The scale and axis will be formatted similar to binning in Vega-Lite.  To adjust the axis ticks based on the bin step, you can also set the axis's [`tickMinStep`](https://vega.github.io/vega-lite/docs/axis.html#ticks) property.\\\\n\\\\n__Default value:__ `false`\\\\n\\\\n__See also:__ [`bin`](https://vega.github.io/vega-lite/docs/bin.html) documentation.\\\"},\\\"field\\\":{\\\"$ref\\\":\\\"#/definitions/Field\\\",\\\"description\\\":\\\"__Required.__ A string defining the name of the field from which to pull a data value or an object defining iterated values from the [`repeat`](https://vega.github.io/vega-lite/docs/repeat.html) operator.\\\\n\\\\n__See also:__ [`field`](https://vega.github.io/vega-lite/docs/field.html) documentation.\\\\n\\\\n__Notes:__ 1)  Dots (`.`) and brackets (`[` and `]`) can be used to access nested objects (e.g., `\\\\\\\"field\\\\\\\": \\\\\\\"foo.bar\\\\\\\"` and `\\\\\\\"field\\\\\\\": \\\\\\\"foo['bar']\\\\\\\"`). If field names contain dots or brackets but are not nested, you can use `\\\\\\\\\\\\\\\\` to escape dots and brackets (e.g., `\\\\\\\"a\\\\\\\\\\\\\\\\.b\\\\\\\"` and `\\\\\\\"a\\\\\\\\\\\\\\\\[0\\\\\\\\\\\\\\\\]\\\\\\\"`). See more details about escaping in the [field documentation](https://vega.github.io/vega-lite/docs/field.html). 2) `field` is not required if `aggregate` is `count`.\\\"},\\\"legend\\\":{\\\"anyOf\\\":[{\\\"$ref\\\":\\\"#/definitions/Legend\\\"},{\\\"type\\\":\\\"null\\\"}],\\\"description\\\":\\\"An object defining properties of the legend. If `null`, the legend for the encoding channel will be removed.\\\\n\\\\n__Default value:__ If undefined, default [legend properties](https://vega.github.io/vega-lite/docs/legend.html) are applied.\\\\n\\\\n__See also:__ [`legend`](https://vega.github.io/vega-lite/docs/legend.html) documentation.\\\"},\\\"scale\\\":{\\\"anyOf\\\":[{\\\"$ref\\\":\\\"#/definitions/Scale\\\"},{\\\"type\\\":\\\"null\\\"}],\\\"description\\\":\\\"An object defining properties of the channel's scale, which is the function that transforms values in the data domain (numbers, dates, strings, etc) to visual values (pixels, colors, sizes) of the encoding channels.\\\\n\\\\nIf `null`, the scale will be [disabled and the data value will be directly encoded](https://vega.github.io/vega-lite/docs/scale.html#disable).\\\\n\\\\n__Default value:__ If undefined, default [scale properties](https://vega.github.io/vega-lite/docs/scale.html) are applied.\\\\n\\\\n__See also:__ [`scale`](https://vega.github.io/vega-lite/docs/scale.html) documentation.\\\"},\\\"sort\\\":{\\\"$ref\\\":\\\"#/definitions/Sort\\\",\\\"description\\\":\\\"Sort order for the encoded field.\\\\n\\\\nFor continuous fields (quantitative or temporal), `sort` can be either `\\\\\\\"ascending\\\\\\\"` or `\\\\\\\"descending\\\\\\\"`.\\\\n\\\\nFor discrete fields, `sort` can be one of the following: - `\\\\\\\"ascending\\\\\\\"` or `\\\\\\\"descending\\\\\\\"` -- for sorting by the values' natural order in JavaScript. - [A string indicating an encoding channel name to sort by](https://vega.github.io/vega-lite/docs/sort.html#sort-by-encoding) (e.g., `\\\\\\\"x\\\\\\\"` or `\\\\\\\"y\\\\\\\"`) with an optional minus prefix for descending sort (e.g., `\\\\\\\"-x\\\\\\\"` to sort by x-field, descending). This channel string is short-form of [a sort-by-encoding definition](https://vega.github.io/vega-lite/docs/sort.html#sort-by-encoding). For example, `\\\\\\\"sort\\\\\\\": \\\\\\\"-x\\\\\\\"` is equivalent to `\\\\\\\"sort\\\\\\\": {\\\\\\\"encoding\\\\\\\": \\\\\\\"x\\\\\\\", \\\\\\\"order\\\\\\\": \\\\\\\"descending\\\\\\\"}`. - [A sort field definition](https://vega.github.io/vega-lite/docs/sort.html#sort-field) for sorting by another field. - [An array specifying the field values in preferred order](https://vega.github.io/vega-lite/docs/sort.html#sort-array). In this case, the sort order will obey the values in the array, followed by any unspecified values in their original order. For discrete time field, values in the sort array can be [date-time definition objects](types#datetime). In addition, for time units `\\\\\\\"month\\\\\\\"` and `\\\\\\\"day\\\\\\\"`, the values can be the month or day names (case insensitive) or their 3-letter initials (e.g., `\\\\\\\"Mon\\\\\\\"`, `\\\\\\\"Tue\\\\\\\"`). - `null` indicating no sort.\\\\n\\\\n__Default value:__ `\\\\\\\"ascending\\\\\\\"`\\\\n\\\\n__Note:__ `null` and sorting by another channel is not supported for `row` and `column`.\\\\n\\\\n__See also:__ [`sort`](https://vega.github.io/vega-lite/docs/sort.html) documentation.\\\"},\\\"test\\\":{\\\"$ref\\\":\\\"#/definitions/PredicateComposition\\\",\\\"description\\\":\\\"Predicate for triggering the condition\\\"},\\\"timeUnit\\\":{\\\"anyOf\\\":[{\\\"$ref\\\":\\\"#/definitions/TimeUnit\\\"},{\\\"$ref\\\":\\\"#/definitions/TimeUnitParams\\\"}],\\\"description\\\":\\\"Time unit (e.g., `year`, `yearmonth`, `month`, `hours`) for a temporal field. or [a temporal field that gets casted as ordinal](https://vega.github.io/vega-lite/docs/type.html#cast).\\\\n\\\\n__Default value:__ `undefined` (None)\\\\n\\\\n__See also:__ [`timeUnit`](https://vega.github.io/vega-lite/docs/timeunit.html) documentation.\\\"},\\\"title\\\":{\\\"anyOf\\\":[{\\\"$ref\\\":\\\"#/definitions/Text\\\"},{\\\"type\\\":\\\"null\\\"}],\\\"description\\\":\\\"A title for the field. If `null`, the title will be removed.\\\\n\\\\n__Default value:__  derived from the field's name and transformation function (`aggregate`, `bin` and `timeUnit`). If the field has an aggregate function, the function is displayed as part of the title (e.g., `\\\\\\\"Sum of Profit\\\\\\\"`). If the field is binned or has a time unit applied, the applied function is shown in parentheses (e.g., `\\\\\\\"Profit (binned)\\\\\\\"`, `\\\\\\\"Transaction Date (year-month)\\\\\\\"`). Otherwise, the title is simply the field name.\\\\n\\\\n__Notes__:\\\\n\\\\n1) You can customize the default field title format by providing the [`fieldTitle`](https://vega.github.io/vega-lite/docs/config.html#top-level-config) property in the [config](https://vega.github.io/vega-lite/docs/config.html) or [`fieldTitle` function via the `compile` function's options](https://vega.github.io/vega-lite/docs/compile.html#field-title).\\\\n\\\\n2) If both field definition's `title` and axis, header, or legend `title` are defined, axis/header/legend title will be used.\\\"},\\\"type\\\":{\\\"$ref\\\":\\\"#/definitions/StandardType\\\",\\\"description\\\":\\\"The type of measurement (`\\\\\\\"quantitative\\\\\\\"`, `\\\\\\\"temporal\\\\\\\"`, `\\\\\\\"ordinal\\\\\\\"`, or `\\\\\\\"nominal\\\\\\\"`) for the encoded field or constant value (`datum`). It can also be a `\\\\\\\"geojson\\\\\\\"` type for encoding ['geoshape'](https://vega.github.io/vega-lite/docs/geoshape.html).\\\\n\\\\nVega-Lite automatically infers data types in many cases as discussed below. However, type is required for a field if: (1) the field is not nominal and the field encoding has no specified `aggregate` (except `argmin` and `argmax`), `bin`, scale type, custom `sort` order, nor `timeUnit` or (2) if you wish to use an ordinal scale for a field with `bin` or `timeUnit`.\\\\n\\\\n__Default value:__\\\\n\\\\n1) For a data `field`, `\\\\\\\"nominal\\\\\\\"` is the default data type unless the field encoding has `aggregate`, `channel`, `bin`, scale type, `sort`, or `timeUnit` that satisfies the following criteria: - `\\\\\\\"quantitative\\\\\\\"` is the default type if (1) the encoded field contains `bin` or `aggregate` except `\\\\\\\"argmin\\\\\\\"` and `\\\\\\\"argmax\\\\\\\"`, (2) the encoding channel is `latitude` or `longitude` channel or (3) if the specified scale type is [a quantitative scale](https://vega.github.io/vega-lite/docs/scale.html#type). - `\\\\\\\"temporal\\\\\\\"` is the default type if (1) the encoded field contains `timeUnit` or (2) the specified scale type is a time or utc scale - `ordinal\\\\\\\"\\\\\\\"` is the default type if (1) the encoded field contains a [custom `sort` order](https://vega.github.io/vega-lite/docs/sort.html#specifying-custom-sort-order), (2) the specified scale type is an ordinal/point/band scale, or (3) the encoding channel is `order`.\\\\n\\\\n2) For a constant value in data domain (`datum`): - `\\\\\\\"quantitative\\\\\\\"` if the datum is a number - `\\\\\\\"nominal\\\\\\\"` if the datum is a string - `\\\\\\\"temporal\\\\\\\"` if the datum is [a date time object](https://vega.github.io/vega-lite/docs/datetime.html)\\\\n\\\\n__Note:__ - Data `type` describes the semantics of the data rather than the primitive data types (number, string, etc.). The same primitive data type can have different types of measurement. For example, numeric data can represent quantitative, ordinal, or nominal data. - Data values for a temporal field can be either a date-time string (e.g., `\\\\\\\"2015-03-07 12:32:17\\\\\\\"`, `\\\\\\\"17:01\\\\\\\"`, `\\\\\\\"2015-03-16\\\\\\\"`. `\\\\\\\"2015\\\\\\\"`) or a timestamp number (e.g., `1552199579097`). - When using with [`bin`](https://vega.github.io/vega-lite/docs/bin.html), the `type` property can be either `\\\\\\\"quantitative\\\\\\\"` (for using a linear bin scale) or [`\\\\\\\"ordinal\\\\\\\"` (for using an ordinal bin scale)](https://vega.github.io/vega-lite/docs/type.html#cast-bin). - When using with [`timeUnit`](https://vega.github.io/vega-lite/docs/timeunit.html), the `type` property can be either `\\\\\\\"temporal\\\\\\\"` (default, for using a temporal scale) or [`\\\\\\\"ordinal\\\\\\\"` (for using an ordinal scale)](https://vega.github.io/vega-lite/docs/type.html#cast-bin). - When using with [`aggregate`](https://vega.github.io/vega-lite/docs/aggregate.html), the `type` property refers to the post-aggregation data type. For example, we can calculate count `distinct` of a categorical field `\\\\\\\"cat\\\\\\\"` using `{\\\\\\\"aggregate\\\\\\\": \\\\\\\"distinct\\\\\\\", \\\\\\\"field\\\\\\\": \\\\\\\"cat\\\\\\\"}`. The `\\\\\\\"type\\\\\\\"` of the aggregate output is `\\\\\\\"quantitative\\\\\\\"`. - Secondary channels (e.g., `x2`, `y2`, `xError`, `yError`) do not have `type` as they must have exactly the same type as their primary channels (e.g., `x`, `y`).\\\\n\\\\n__See also:__ [`type`](https://vega.github.io/vega-lite/docs/type.html) documentation.\\\"}},\\\"required\\\":[\\\"test\\\"],\\\"type\\\":\\\"object\\\"},{\\\"additionalProperties\\\":false,\\\"properties\\\":{\\\"band\\\":{\\\"description\\\":\\\"For rect-based marks (`rect`, `bar`, and `image`), mark size relative to bandwidth of [band scales](https://vega.github.io/vega-lite/docs/scale.html#band), bins or time units. If set to `1`, the mark size is set to the bandwidth, the bin interval, or the time unit interval. If set to `0.5`, the mark size is half of the bandwidth or the time unit interval.\\\\n\\\\nFor other marks, relative position on a band of a stacked, binned, time unit or band scale. If set to `0`, the marks will be positioned at the beginning of the band. If set to `0.5`, the marks will be positioned in the middle of the band.\\\",\\\"maximum\\\":1,\\\"minimum\\\":0,\\\"type\\\":\\\"number\\\"},\\\"datum\\\":{\\\"anyOf\\\":[{\\\"$ref\\\":\\\"#/definitions/PrimitiveValue\\\"},{\\\"$ref\\\":\\\"#/definitions/DateTime\\\"},{\\\"$ref\\\":\\\"#/definitions/ExprRef\\\"},{\\\"$ref\\\":\\\"#/definitions/RepeatRef\\\"}],\\\"description\\\":\\\"A constant value in data domain.\\\"},\\\"legend\\\":{\\\"anyOf\\\":[{\\\"$ref\\\":\\\"#/definitions/Legend\\\"},{\\\"type\\\":\\\"null\\\"}],\\\"description\\\":\\\"An object defining properties of the legend. If `null`, the legend for the encoding channel will be removed.\\\\n\\\\n__Default value:__ If undefined, default [legend properties](https://vega.github.io/vega-lite/docs/legend.html) are applied.\\\\n\\\\n__See also:__ [`legend`](https://vega.github.io/vega-lite/docs/legend.html) documentation.\\\"},\\\"scale\\\":{\\\"anyOf\\\":[{\\\"$ref\\\":\\\"#/definitions/Scale\\\"},{\\\"type\\\":\\\"null\\\"}],\\\"description\\\":\\\"An object defining properties of the channel's scale, which is the function that transforms values in the data domain (numbers, dates, strings, etc) to visual values (pixels, colors, sizes) of the encoding channels.\\\\n\\\\nIf `null`, the scale will be [disabled and the data value will be directly encoded](https://vega.github.io/vega-lite/docs/scale.html#disable).\\\\n\\\\n__Default value:__ If undefined, default [scale properties](https://vega.github.io/vega-lite/docs/scale.html) are applied.\\\\n\\\\n__See also:__ [`scale`](https://vega.github.io/vega-lite/docs/scale.html) documentation.\\\"},\\\"test\\\":{\\\"$ref\\\":\\\"#/definitions/PredicateComposition\\\",\\\"description\\\":\\\"Predicate for triggering the condition\\\"},\\\"type\\\":{\\\"$ref\\\":\\\"#/definitions/Type\\\",\\\"description\\\":\\\"The type of measurement (`\\\\\\\"quantitative\\\\\\\"`, `\\\\\\\"temporal\\\\\\\"`, `\\\\\\\"ordinal\\\\\\\"`, or `\\\\\\\"nominal\\\\\\\"`) for the encoded field or constant value (`datum`). It can also be a `\\\\\\\"geojson\\\\\\\"` type for encoding ['geoshape'](https://vega.github.io/vega-lite/docs/geoshape.html).\\\\n\\\\nVega-Lite automatically infers data types in many cases as discussed below. However, type is required for a field if: (1) the field is not nominal and the field encoding has no specified `aggregate` (except `argmin` and `argmax`), `bin`, scale type, custom `sort` order, nor `timeUnit` or (2) if you wish to use an ordinal scale for a field with `bin` or `timeUnit`.\\\\n\\\\n__Default value:__\\\\n\\\\n1) For a data `field`, `\\\\\\\"nominal\\\\\\\"` is the default data type unless the field encoding has `aggregate`, `channel`, `bin`, scale type, `sort`, or `timeUnit` that satisfies the following criteria: - `\\\\\\\"quantitative\\\\\\\"` is the default type if (1) the encoded field contains `bin` or `aggregate` except `\\\\\\\"argmin\\\\\\\"` and `\\\\\\\"argmax\\\\\\\"`, (2) the encoding channel is `latitude` or `longitude` channel or (3) if the specified scale type is [a quantitative scale](https://vega.github.io/vega-lite/docs/scale.html#type). - `\\\\\\\"temporal\\\\\\\"` is the default type if (1) the encoded field contains `timeUnit` or (2) the specified scale type is a time or utc scale - `ordinal\\\\\\\"\\\\\\\"` is the default type if (1) the encoded field contains a [custom `sort` order](https://vega.github.io/vega-lite/docs/sort.html#specifying-custom-sort-order), (2) the specified scale type is an ordinal/point/band scale, or (3) the encoding channel is `order`.\\\\n\\\\n2) For a constant value in data domain (`datum`): - `\\\\\\\"quantitative\\\\\\\"` if the datum is a number - `\\\\\\\"nominal\\\\\\\"` if the datum is a string - `\\\\\\\"temporal\\\\\\\"` if the datum is [a date time object](https://vega.github.io/vega-lite/docs/datetime.html)\\\\n\\\\n__Note:__ - Data `type` describes the semantics of the data rather than the primitive data types (number, string, etc.). The same primitive data type can have different types of measurement. For example, numeric data can represent quantitative, ordinal, or nominal data. - Data values for a temporal field can be either a date-time string (e.g., `\\\\\\\"2015-03-07 12:32:17\\\\\\\"`, `\\\\\\\"17:01\\\\\\\"`, `\\\\\\\"2015-03-16\\\\\\\"`. `\\\\\\\"2015\\\\\\\"`) or a timestamp number (e.g., `1552199579097`). - When using with [`bin`](https://vega.github.io/vega-lite/docs/bin.html), the `type` property can be either `\\\\\\\"quantitative\\\\\\\"` (for using a linear bin scale) or [`\\\\\\\"ordinal\\\\\\\"` (for using an ordinal bin scale)](https://vega.github.io/vega-lite/docs/type.html#cast-bin). - When using with [`timeUnit`](https://vega.github.io/vega-lite/docs/timeunit.html), the `type` property can be either `\\\\\\\"temporal\\\\\\\"` (default, for using a temporal scale) or [`\\\\\\\"ordinal\\\\\\\"` (for using an ordinal scale)](https://vega.github.io/vega-lite/docs/type.html#cast-bin). - When using with [`aggregate`](https://vega.github.io/vega-lite/docs/aggregate.html), the `type` property refers to the post-aggregation data type. For example, we can calculate count `distinct` of a categorical field `\\\\\\\"cat\\\\\\\"` using `{\\\\\\\"aggregate\\\\\\\": \\\\\\\"distinct\\\\\\\", \\\\\\\"field\\\\\\\": \\\\\\\"cat\\\\\\\"}`. The `\\\\\\\"type\\\\\\\"` of the aggregate output is `\\\\\\\"quantitative\\\\\\\"`. - Secondary channels (e.g., `x2`, `y2`, `xError`, `yError`) do not have `type` as they must have exactly the same type as their primary channels (e.g., `x`, `y`).\\\\n\\\\n__See also:__ [`type`](https://vega.github.io/vega-lite/docs/type.html) documentation.\\\"}},\\\"required\\\":[\\\"test\\\"],\\\"type\\\":\\\"object\\\"}]},\\\"ConditionalPredicate<MarkPropFieldOrDatumDef<TypeForShape>>\\\":{\\\"anyOf\\\":[{\\\"additionalProperties\\\":false,\\\"properties\\\":{\\\"aggregate\\\":{\\\"$ref\\\":\\\"#/definitions/Aggregate\\\",\\\"description\\\":\\\"Aggregation function for the field (e.g., `\\\\\\\"mean\\\\\\\"`, `\\\\\\\"sum\\\\\\\"`, `\\\\\\\"median\\\\\\\"`, `\\\\\\\"min\\\\\\\"`, `\\\\\\\"max\\\\\\\"`, `\\\\\\\"count\\\\\\\"`).\\\\n\\\\n__Default value:__ `undefined` (None)\\\\n\\\\n__See also:__ [`aggregate`](https://vega.github.io/vega-lite/docs/aggregate.html) documentation.\\\"},\\\"band\\\":{\\\"description\\\":\\\"For rect-based marks (`rect`, `bar`, and `image`), mark size relative to bandwidth of [band scales](https://vega.github.io/vega-lite/docs/scale.html#band), bins or time units. If set to `1`, the mark size is set to the bandwidth, the bin interval, or the time unit interval. If set to `0.5`, the mark size is half of the bandwidth or the time unit interval.\\\\n\\\\nFor other marks, relative position on a band of a stacked, binned, time unit or band scale. If set to `0`, the marks will be positioned at the beginning of the band. If set to `0.5`, the marks will be positioned in the middle of the band.\\\",\\\"maximum\\\":1,\\\"minimum\\\":0,\\\"type\\\":\\\"number\\\"},\\\"bin\\\":{\\\"anyOf\\\":[{\\\"type\\\":\\\"boolean\\\"},{\\\"$ref\\\":\\\"#/definitions/BinParams\\\"},{\\\"type\\\":\\\"null\\\"}],\\\"description\\\":\\\"A flag for binning a `quantitative` field, [an object defining binning parameters](https://vega.github.io/vega-lite/docs/bin.html#params), or indicating that the data for `x` or `y` channel are binned before they are imported into Vega-Lite (`\\\\\\\"binned\\\\\\\"`).\\\\n\\\\n- If `true`, default [binning parameters](https://vega.github.io/vega-lite/docs/bin.html) will be applied.\\\\n\\\\n- If `\\\\\\\"binned\\\\\\\"`, this indicates that the data for the `x` (or `y`) channel are already binned. You can map the bin-start field to `x` (or `y`) and the bin-end field to `x2` (or `y2`). The scale and axis will be formatted similar to binning in Vega-Lite.  To adjust the axis ticks based on the bin step, you can also set the axis's [`tickMinStep`](https://vega.github.io/vega-lite/docs/axis.html#ticks) property.\\\\n\\\\n__Default value:__ `false`\\\\n\\\\n__See also:__ [`bin`](https://vega.github.io/vega-lite/docs/bin.html) documentation.\\\"},\\\"field\\\":{\\\"$ref\\\":\\\"#/definitions/Field\\\",\\\"description\\\":\\\"__Required.__ A string defining the name of the field from which to pull a data value or an object defining iterated values from the [`repeat`](https://vega.github.io/vega-lite/docs/repeat.html) operator.\\\\n\\\\n__See also:__ [`field`](https://vega.github.io/vega-lite/docs/field.html) documentation.\\\\n\\\\n__Notes:__ 1)  Dots (`.`) and brackets (`[` and `]`) can be used to access nested objects (e.g., `\\\\\\\"field\\\\\\\": \\\\\\\"foo.bar\\\\\\\"` and `\\\\\\\"field\\\\\\\": \\\\\\\"foo['bar']\\\\\\\"`). If field names contain dots or brackets but are not nested, you can use `\\\\\\\\\\\\\\\\` to escape dots and brackets (e.g., `\\\\\\\"a\\\\\\\\\\\\\\\\.b\\\\\\\"` and `\\\\\\\"a\\\\\\\\\\\\\\\\[0\\\\\\\\\\\\\\\\]\\\\\\\"`). See more details about escaping in the [field documentation](https://vega.github.io/vega-lite/docs/field.html). 2) `field` is not required if `aggregate` is `count`.\\\"},\\\"legend\\\":{\\\"anyOf\\\":[{\\\"$ref\\\":\\\"#/definitions/Legend\\\"},{\\\"type\\\":\\\"null\\\"}],\\\"description\\\":\\\"An object defining properties of the legend. If `null`, the legend for the encoding channel will be removed.\\\\n\\\\n__Default value:__ If undefined, default [legend properties](https://vega.github.io/vega-lite/docs/legend.html) are applied.\\\\n\\\\n__See also:__ [`legend`](https://vega.github.io/vega-lite/docs/legend.html) documentation.\\\"},\\\"scale\\\":{\\\"anyOf\\\":[{\\\"$ref\\\":\\\"#/definitions/Scale\\\"},{\\\"type\\\":\\\"null\\\"}],\\\"description\\\":\\\"An object defining properties of the channel's scale, which is the function that transforms values in the data domain (numbers, dates, strings, etc) to visual values (pixels, colors, sizes) of the encoding channels.\\\\n\\\\nIf `null`, the scale will be [disabled and the data value will be directly encoded](https://vega.github.io/vega-lite/docs/scale.html#disable).\\\\n\\\\n__Default value:__ If undefined, default [scale properties](https://vega.github.io/vega-lite/docs/scale.html) are applied.\\\\n\\\\n__See also:__ [`scale`](https://vega.github.io/vega-lite/docs/scale.html) documentation.\\\"},\\\"sort\\\":{\\\"$ref\\\":\\\"#/definitions/Sort\\\",\\\"description\\\":\\\"Sort order for the encoded field.\\\\n\\\\nFor continuous fields (quantitative or temporal), `sort` can be either `\\\\\\\"ascending\\\\\\\"` or `\\\\\\\"descending\\\\\\\"`.\\\\n\\\\nFor discrete fields, `sort` can be one of the following: - `\\\\\\\"ascending\\\\\\\"` or `\\\\\\\"descending\\\\\\\"` -- for sorting by the values' natural order in JavaScript. - [A string indicating an encoding channel name to sort by](https://vega.github.io/vega-lite/docs/sort.html#sort-by-encoding) (e.g., `\\\\\\\"x\\\\\\\"` or `\\\\\\\"y\\\\\\\"`) with an optional minus prefix for descending sort (e.g., `\\\\\\\"-x\\\\\\\"` to sort by x-field, descending). This channel string is short-form of [a sort-by-encoding definition](https://vega.github.io/vega-lite/docs/sort.html#sort-by-encoding). For example, `\\\\\\\"sort\\\\\\\": \\\\\\\"-x\\\\\\\"` is equivalent to `\\\\\\\"sort\\\\\\\": {\\\\\\\"encoding\\\\\\\": \\\\\\\"x\\\\\\\", \\\\\\\"order\\\\\\\": \\\\\\\"descending\\\\\\\"}`. - [A sort field definition](https://vega.github.io/vega-lite/docs/sort.html#sort-field) for sorting by another field. - [An array specifying the field values in preferred order](https://vega.github.io/vega-lite/docs/sort.html#sort-array). In this case, the sort order will obey the values in the array, followed by any unspecified values in their original order. For discrete time field, values in the sort array can be [date-time definition objects](types#datetime). In addition, for time units `\\\\\\\"month\\\\\\\"` and `\\\\\\\"day\\\\\\\"`, the values can be the month or day names (case insensitive) or their 3-letter initials (e.g., `\\\\\\\"Mon\\\\\\\"`, `\\\\\\\"Tue\\\\\\\"`). - `null` indicating no sort.\\\\n\\\\n__Default value:__ `\\\\\\\"ascending\\\\\\\"`\\\\n\\\\n__Note:__ `null` and sorting by another channel is not supported for `row` and `column`.\\\\n\\\\n__See also:__ [`sort`](https://vega.github.io/vega-lite/docs/sort.html) documentation.\\\"},\\\"test\\\":{\\\"$ref\\\":\\\"#/definitions/PredicateComposition\\\",\\\"description\\\":\\\"Predicate for triggering the condition\\\"},\\\"timeUnit\\\":{\\\"anyOf\\\":[{\\\"$ref\\\":\\\"#/definitions/TimeUnit\\\"},{\\\"$ref\\\":\\\"#/definitions/TimeUnitParams\\\"}],\\\"description\\\":\\\"Time unit (e.g., `year`, `yearmonth`, `month`, `hours`) for a temporal field. or [a temporal field that gets casted as ordinal](https://vega.github.io/vega-lite/docs/type.html#cast).\\\\n\\\\n__Default value:__ `undefined` (None)\\\\n\\\\n__See also:__ [`timeUnit`](https://vega.github.io/vega-lite/docs/timeunit.html) documentation.\\\"},\\\"title\\\":{\\\"anyOf\\\":[{\\\"$ref\\\":\\\"#/definitions/Text\\\"},{\\\"type\\\":\\\"null\\\"}],\\\"description\\\":\\\"A title for the field. If `null`, the title will be removed.\\\\n\\\\n__Default value:__  derived from the field's name and transformation function (`aggregate`, `bin` and `timeUnit`). If the field has an aggregate function, the function is displayed as part of the title (e.g., `\\\\\\\"Sum of Profit\\\\\\\"`). If the field is binned or has a time unit applied, the applied function is shown in parentheses (e.g., `\\\\\\\"Profit (binned)\\\\\\\"`, `\\\\\\\"Transaction Date (year-month)\\\\\\\"`). Otherwise, the title is simply the field name.\\\\n\\\\n__Notes__:\\\\n\\\\n1) You can customize the default field title format by providing the [`fieldTitle`](https://vega.github.io/vega-lite/docs/config.html#top-level-config) property in the [config](https://vega.github.io/vega-lite/docs/config.html) or [`fieldTitle` function via the `compile` function's options](https://vega.github.io/vega-lite/docs/compile.html#field-title).\\\\n\\\\n2) If both field definition's `title` and axis, header, or legend `title` are defined, axis/header/legend title will be used.\\\"},\\\"type\\\":{\\\"$ref\\\":\\\"#/definitions/TypeForShape\\\",\\\"description\\\":\\\"The type of measurement (`\\\\\\\"quantitative\\\\\\\"`, `\\\\\\\"temporal\\\\\\\"`, `\\\\\\\"ordinal\\\\\\\"`, or `\\\\\\\"nominal\\\\\\\"`) for the encoded field or constant value (`datum`). It can also be a `\\\\\\\"geojson\\\\\\\"` type for encoding ['geoshape'](https://vega.github.io/vega-lite/docs/geoshape.html).\\\\n\\\\nVega-Lite automatically infers data types in many cases as discussed below. However, type is required for a field if: (1) the field is not nominal and the field encoding has no specified `aggregate` (except `argmin` and `argmax`), `bin`, scale type, custom `sort` order, nor `timeUnit` or (2) if you wish to use an ordinal scale for a field with `bin` or `timeUnit`.\\\\n\\\\n__Default value:__\\\\n\\\\n1) For a data `field`, `\\\\\\\"nominal\\\\\\\"` is the default data type unless the field encoding has `aggregate`, `channel`, `bin`, scale type, `sort`, or `timeUnit` that satisfies the following criteria: - `\\\\\\\"quantitative\\\\\\\"` is the default type if (1) the encoded field contains `bin` or `aggregate` except `\\\\\\\"argmin\\\\\\\"` and `\\\\\\\"argmax\\\\\\\"`, (2) the encoding channel is `latitude` or `longitude` channel or (3) if the specified scale type is [a quantitative scale](https://vega.github.io/vega-lite/docs/scale.html#type). - `\\\\\\\"temporal\\\\\\\"` is the default type if (1) the encoded field contains `timeUnit` or (2) the specified scale type is a time or utc scale - `ordinal\\\\\\\"\\\\\\\"` is the default type if (1) the encoded field contains a [custom `sort` order](https://vega.github.io/vega-lite/docs/sort.html#specifying-custom-sort-order), (2) the specified scale type is an ordinal/point/band scale, or (3) the encoding channel is `order`.\\\\n\\\\n2) For a constant value in data domain (`datum`): - `\\\\\\\"quantitative\\\\\\\"` if the datum is a number - `\\\\\\\"nominal\\\\\\\"` if the datum is a string - `\\\\\\\"temporal\\\\\\\"` if the datum is [a date time object](https://vega.github.io/vega-lite/docs/datetime.html)\\\\n\\\\n__Note:__ - Data `type` describes the semantics of the data rather than the primitive data types (number, string, etc.). The same primitive data type can have different types of measurement. For example, numeric data can represent quantitative, ordinal, or nominal data. - Data values for a temporal field can be either a date-time string (e.g., `\\\\\\\"2015-03-07 12:32:17\\\\\\\"`, `\\\\\\\"17:01\\\\\\\"`, `\\\\\\\"2015-03-16\\\\\\\"`. `\\\\\\\"2015\\\\\\\"`) or a timestamp number (e.g., `1552199579097`). - When using with [`bin`](https://vega.github.io/vega-lite/docs/bin.html), the `type` property can be either `\\\\\\\"quantitative\\\\\\\"` (for using a linear bin scale) or [`\\\\\\\"ordinal\\\\\\\"` (for using an ordinal bin scale)](https://vega.github.io/vega-lite/docs/type.html#cast-bin). - When using with [`timeUnit`](https://vega.github.io/vega-lite/docs/timeunit.html), the `type` property can be either `\\\\\\\"temporal\\\\\\\"` (default, for using a temporal scale) or [`\\\\\\\"ordinal\\\\\\\"` (for using an ordinal scale)](https://vega.github.io/vega-lite/docs/type.html#cast-bin). - When using with [`aggregate`](https://vega.github.io/vega-lite/docs/aggregate.html), the `type` property refers to the post-aggregation data type. For example, we can calculate count `distinct` of a categorical field `\\\\\\\"cat\\\\\\\"` using `{\\\\\\\"aggregate\\\\\\\": \\\\\\\"distinct\\\\\\\", \\\\\\\"field\\\\\\\": \\\\\\\"cat\\\\\\\"}`. The `\\\\\\\"type\\\\\\\"` of the aggregate output is `\\\\\\\"quantitative\\\\\\\"`. - Secondary channels (e.g., `x2`, `y2`, `xError`, `yError`) do not have `type` as they must have exactly the same type as their primary channels (e.g., `x`, `y`).\\\\n\\\\n__See also:__ [`type`](https://vega.github.io/vega-lite/docs/type.html) documentation.\\\"}},\\\"required\\\":[\\\"test\\\"],\\\"type\\\":\\\"object\\\"},{\\\"additionalProperties\\\":false,\\\"properties\\\":{\\\"band\\\":{\\\"description\\\":\\\"For rect-based marks (`rect`, `bar`, and `image`), mark size relative to bandwidth of [band scales](https://vega.github.io/vega-lite/docs/scale.html#band), bins or time units. If set to `1`, the mark size is set to the bandwidth, the bin interval, or the time unit interval. If set to `0.5`, the mark size is half of the bandwidth or the time unit interval.\\\\n\\\\nFor other marks, relative position on a band of a stacked, binned, time unit or band scale. If set to `0`, the marks will be positioned at the beginning of the band. If set to `0.5`, the marks will be positioned in the middle of the band.\\\",\\\"maximum\\\":1,\\\"minimum\\\":0,\\\"type\\\":\\\"number\\\"},\\\"datum\\\":{\\\"anyOf\\\":[{\\\"$ref\\\":\\\"#/definitions/PrimitiveValue\\\"},{\\\"$ref\\\":\\\"#/definitions/DateTime\\\"},{\\\"$ref\\\":\\\"#/definitions/ExprRef\\\"},{\\\"$ref\\\":\\\"#/definitions/RepeatRef\\\"}],\\\"description\\\":\\\"A constant value in data domain.\\\"},\\\"legend\\\":{\\\"anyOf\\\":[{\\\"$ref\\\":\\\"#/definitions/Legend\\\"},{\\\"type\\\":\\\"null\\\"}],\\\"description\\\":\\\"An object defining properties of the legend. If `null`, the legend for the encoding channel will be removed.\\\\n\\\\n__Default value:__ If undefined, default [legend properties](https://vega.github.io/vega-lite/docs/legend.html) are applied.\\\\n\\\\n__See also:__ [`legend`](https://vega.github.io/vega-lite/docs/legend.html) documentation.\\\"},\\\"scale\\\":{\\\"anyOf\\\":[{\\\"$ref\\\":\\\"#/definitions/Scale\\\"},{\\\"type\\\":\\\"null\\\"}],\\\"description\\\":\\\"An object defining properties of the channel's scale, which is the function that transforms values in the data domain (numbers, dates, strings, etc) to visual values (pixels, colors, sizes) of the encoding channels.\\\\n\\\\nIf `null`, the scale will be [disabled and the data value will be directly encoded](https://vega.github.io/vega-lite/docs/scale.html#disable).\\\\n\\\\n__Default value:__ If undefined, default [scale properties](https://vega.github.io/vega-lite/docs/scale.html) are applied.\\\\n\\\\n__See also:__ [`scale`](https://vega.github.io/vega-lite/docs/scale.html) documentation.\\\"},\\\"test\\\":{\\\"$ref\\\":\\\"#/definitions/PredicateComposition\\\",\\\"description\\\":\\\"Predicate for triggering the condition\\\"},\\\"type\\\":{\\\"$ref\\\":\\\"#/definitions/Type\\\",\\\"description\\\":\\\"The type of measurement (`\\\\\\\"quantitative\\\\\\\"`, `\\\\\\\"temporal\\\\\\\"`, `\\\\\\\"ordinal\\\\\\\"`, or `\\\\\\\"nominal\\\\\\\"`) for the encoded field or constant value (`datum`). It can also be a `\\\\\\\"geojson\\\\\\\"` type for encoding ['geoshape'](https://vega.github.io/vega-lite/docs/geoshape.html).\\\\n\\\\nVega-Lite automatically infers data types in many cases as discussed below. However, type is required for a field if: (1) the field is not nominal and the field encoding has no specified `aggregate` (except `argmin` and `argmax`), `bin`, scale type, custom `sort` order, nor `timeUnit` or (2) if you wish to use an ordinal scale for a field with `bin` or `timeUnit`.\\\\n\\\\n__Default value:__\\\\n\\\\n1) For a data `field`, `\\\\\\\"nominal\\\\\\\"` is the default data type unless the field encoding has `aggregate`, `channel`, `bin`, scale type, `sort`, or `timeUnit` that satisfies the following criteria: - `\\\\\\\"quantitative\\\\\\\"` is the default type if (1) the encoded field contains `bin` or `aggregate` except `\\\\\\\"argmin\\\\\\\"` and `\\\\\\\"argmax\\\\\\\"`, (2) the encoding channel is `latitude` or `longitude` channel or (3) if the specified scale type is [a quantitative scale](https://vega.github.io/vega-lite/docs/scale.html#type). - `\\\\\\\"temporal\\\\\\\"` is the default type if (1) the encoded field contains `timeUnit` or (2) the specified scale type is a time or utc scale - `ordinal\\\\\\\"\\\\\\\"` is the default type if (1) the encoded field contains a [custom `sort` order](https://vega.github.io/vega-lite/docs/sort.html#specifying-custom-sort-order), (2) the specified scale type is an ordinal/point/band scale, or (3) the encoding channel is `order`.\\\\n\\\\n2) For a constant value in data domain (`datum`): - `\\\\\\\"quantitative\\\\\\\"` if the datum is a number - `\\\\\\\"nominal\\\\\\\"` if the datum is a string - `\\\\\\\"temporal\\\\\\\"` if the datum is [a date time object](https://vega.github.io/vega-lite/docs/datetime.html)\\\\n\\\\n__Note:__ - Data `type` describes the semantics of the data rather than the primitive data types (number, string, etc.). The same primitive data type can have different types of measurement. For example, numeric data can represent quantitative, ordinal, or nominal data. - Data values for a temporal field can be either a date-time string (e.g., `\\\\\\\"2015-03-07 12:32:17\\\\\\\"`, `\\\\\\\"17:01\\\\\\\"`, `\\\\\\\"2015-03-16\\\\\\\"`. `\\\\\\\"2015\\\\\\\"`) or a timestamp number (e.g., `1552199579097`). - When using with [`bin`](https://vega.github.io/vega-lite/docs/bin.html), the `type` property can be either `\\\\\\\"quantitative\\\\\\\"` (for using a linear bin scale) or [`\\\\\\\"ordinal\\\\\\\"` (for using an ordinal bin scale)](https://vega.github.io/vega-lite/docs/type.html#cast-bin). - When using with [`timeUnit`](https://vega.github.io/vega-lite/docs/timeunit.html), the `type` property can be either `\\\\\\\"temporal\\\\\\\"` (default, for using a temporal scale) or [`\\\\\\\"ordinal\\\\\\\"` (for using an ordinal scale)](https://vega.github.io/vega-lite/docs/type.html#cast-bin). - When using with [`aggregate`](https://vega.github.io/vega-lite/docs/aggregate.html), the `type` property refers to the post-aggregation data type. For example, we can calculate count `distinct` of a categorical field `\\\\\\\"cat\\\\\\\"` using `{\\\\\\\"aggregate\\\\\\\": \\\\\\\"distinct\\\\\\\", \\\\\\\"field\\\\\\\": \\\\\\\"cat\\\\\\\"}`. The `\\\\\\\"type\\\\\\\"` of the aggregate output is `\\\\\\\"quantitative\\\\\\\"`. - Secondary channels (e.g., `x2`, `y2`, `xError`, `yError`) do not have `type` as they must have exactly the same type as their primary channels (e.g., `x`, `y`).\\\\n\\\\n__See also:__ [`type`](https://vega.github.io/vega-lite/docs/type.html) documentation.\\\"}},\\\"required\\\":[\\\"test\\\"],\\\"type\\\":\\\"object\\\"}]},\\\"ConditionalPredicate<StringFieldDef>\\\":{\\\"additionalProperties\\\":false,\\\"properties\\\":{\\\"aggregate\\\":{\\\"$ref\\\":\\\"#/definitions/Aggregate\\\",\\\"description\\\":\\\"Aggregation function for the field (e.g., `\\\\\\\"mean\\\\\\\"`, `\\\\\\\"sum\\\\\\\"`, `\\\\\\\"median\\\\\\\"`, `\\\\\\\"min\\\\\\\"`, `\\\\\\\"max\\\\\\\"`, `\\\\\\\"count\\\\\\\"`).\\\\n\\\\n__Default value:__ `undefined` (None)\\\\n\\\\n__See also:__ [`aggregate`](https://vega.github.io/vega-lite/docs/aggregate.html) documentation.\\\"},\\\"band\\\":{\\\"description\\\":\\\"For rect-based marks (`rect`, `bar`, and `image`), mark size relative to bandwidth of [band scales](https://vega.github.io/vega-lite/docs/scale.html#band), bins or time units. If set to `1`, the mark size is set to the bandwidth, the bin interval, or the time unit interval. If set to `0.5`, the mark size is half of the bandwidth or the time unit interval.\\\\n\\\\nFor other marks, relative position on a band of a stacked, binned, time unit or band scale. If set to `0`, the marks will be positioned at the beginning of the band. If set to `0.5`, the marks will be positioned in the middle of the band.\\\",\\\"maximum\\\":1,\\\"minimum\\\":0,\\\"type\\\":\\\"number\\\"},\\\"bin\\\":{\\\"anyOf\\\":[{\\\"type\\\":\\\"boolean\\\"},{\\\"$ref\\\":\\\"#/definitions/BinParams\\\"},{\\\"const\\\":\\\"binned\\\",\\\"type\\\":\\\"string\\\"},{\\\"type\\\":\\\"null\\\"}],\\\"description\\\":\\\"A flag for binning a `quantitative` field, [an object defining binning parameters](https://vega.github.io/vega-lite/docs/bin.html#params), or indicating that the data for `x` or `y` channel are binned before they are imported into Vega-Lite (`\\\\\\\"binned\\\\\\\"`).\\\\n\\\\n- If `true`, default [binning parameters](https://vega.github.io/vega-lite/docs/bin.html) will be applied.\\\\n\\\\n- If `\\\\\\\"binned\\\\\\\"`, this indicates that the data for the `x` (or `y`) channel are already binned. You can map the bin-start field to `x` (or `y`) and the bin-end field to `x2` (or `y2`). The scale and axis will be formatted similar to binning in Vega-Lite.  To adjust the axis ticks based on the bin step, you can also set the axis's [`tickMinStep`](https://vega.github.io/vega-lite/docs/axis.html#ticks) property.\\\\n\\\\n__Default value:__ `false`\\\\n\\\\n__See also:__ [`bin`](https://vega.github.io/vega-lite/docs/bin.html) documentation.\\\"},\\\"field\\\":{\\\"$ref\\\":\\\"#/definitions/Field\\\",\\\"description\\\":\\\"__Required.__ A string defining the name of the field from which to pull a data value or an object defining iterated values from the [`repeat`](https://vega.github.io/vega-lite/docs/repeat.html) operator.\\\\n\\\\n__See also:__ [`field`](https://vega.github.io/vega-lite/docs/field.html) documentation.\\\\n\\\\n__Notes:__ 1)  Dots (`.`) and brackets (`[` and `]`) can be used to access nested objects (e.g., `\\\\\\\"field\\\\\\\": \\\\\\\"foo.bar\\\\\\\"` and `\\\\\\\"field\\\\\\\": \\\\\\\"foo['bar']\\\\\\\"`). If field names contain dots or brackets but are not nested, you can use `\\\\\\\\\\\\\\\\` to escape dots and brackets (e.g., `\\\\\\\"a\\\\\\\\\\\\\\\\.b\\\\\\\"` and `\\\\\\\"a\\\\\\\\\\\\\\\\[0\\\\\\\\\\\\\\\\]\\\\\\\"`). See more details about escaping in the [field documentation](https://vega.github.io/vega-lite/docs/field.html). 2) `field` is not required if `aggregate` is `count`.\\\"},\\\"format\\\":{\\\"anyOf\\\":[{\\\"type\\\":\\\"string\\\"},{\\\"$ref\\\":\\\"#/definitions/Dict<unknown>\\\"}],\\\"description\\\":\\\"When used with the default `\\\\\\\"number\\\\\\\"` and `\\\\\\\"time\\\\\\\"` format type, the text formatting pattern for labels of guides (axes, legends, headers) and text marks.\\\\n\\\\n- If the format type is `\\\\\\\"number\\\\\\\"` (e.g., for quantitative fields), this is D3's [number format pattern](https://github.com/d3/d3-format#locale_format). - If the format type is `\\\\\\\"time\\\\\\\"` (e.g., for temporal fields), this is D3's [time format pattern](https://github.com/d3/d3-time-format#locale_format).\\\\n\\\\nSee the [format documentation](https://vega.github.io/vega-lite/docs/format.html) for more examples.\\\\n\\\\nWhen used with a [custom `formatType`](https://vega.github.io/vega-lite/docs/config.html#custom-format-type), this value will be passed as `format` alongside `datum.value` to the registered function.\\\\n\\\\n__Default value:__  Derived from [numberFormat](https://vega.github.io/vega-lite/docs/config.html#format) config for number format and from [timeFormat](https://vega.github.io/vega-lite/docs/config.html#format) config for time format.\\\"},\\\"formatType\\\":{\\\"description\\\":\\\"The format type for labels. One of `\\\\\\\"number\\\\\\\"`, `\\\\\\\"time\\\\\\\"`, or a [registered custom format type](https://vega.github.io/vega-lite/docs/config.html#custom-format-type).\\\\n\\\\n__Default value:__ - `\\\\\\\"time\\\\\\\"` for temporal fields and ordinal and nominal fields with `timeUnit`. - `\\\\\\\"number\\\\\\\"` for quantitative fields as well as ordinal and nominal fields without `timeUnit`.\\\",\\\"type\\\":\\\"string\\\"},\\\"labelExpr\\\":{\\\"description\\\":\\\"[Vega expression](https://vega.github.io/vega/docs/expressions/) for customizing labels text.\\\\n\\\\n__Note:__ The label text and value can be assessed via the `label` and `value` properties of the axis's backing `datum` object.\\\",\\\"type\\\":\\\"string\\\"},\\\"test\\\":{\\\"$ref\\\":\\\"#/definitions/PredicateComposition\\\",\\\"description\\\":\\\"Predicate for triggering the condition\\\"},\\\"timeUnit\\\":{\\\"anyOf\\\":[{\\\"$ref\\\":\\\"#/definitions/TimeUnit\\\"},{\\\"$ref\\\":\\\"#/definitions/TimeUnitParams\\\"}],\\\"description\\\":\\\"Time unit (e.g., `year`, `yearmonth`, `month`, `hours`) for a temporal field. or [a temporal field that gets casted as ordinal](https://vega.github.io/vega-lite/docs/type.html#cast).\\\\n\\\\n__Default value:__ `undefined` (None)\\\\n\\\\n__See also:__ [`timeUnit`](https://vega.github.io/vega-lite/docs/timeunit.html) documentation.\\\"},\\\"title\\\":{\\\"anyOf\\\":[{\\\"$ref\\\":\\\"#/definitions/Text\\\"},{\\\"type\\\":\\\"null\\\"}],\\\"description\\\":\\\"A title for the field. If `null`, the title will be removed.\\\\n\\\\n__Default value:__  derived from the field's name and transformation function (`aggregate`, `bin` and `timeUnit`). If the field has an aggregate function, the function is displayed as part of the title (e.g., `\\\\\\\"Sum of Profit\\\\\\\"`). If the field is binned or has a time unit applied, the applied function is shown in parentheses (e.g., `\\\\\\\"Profit (binned)\\\\\\\"`, `\\\\\\\"Transaction Date (year-month)\\\\\\\"`). Otherwise, the title is simply the field name.\\\\n\\\\n__Notes__:\\\\n\\\\n1) You can customize the default field title format by providing the [`fieldTitle`](https://vega.github.io/vega-lite/docs/config.html#top-level-config) property in the [config](https://vega.github.io/vega-lite/docs/config.html) or [`fieldTitle` function via the `compile` function's options](https://vega.github.io/vega-lite/docs/compile.html#field-title).\\\\n\\\\n2) If both field definition's `title` and axis, header, or legend `title` are defined, axis/header/legend title will be used.\\\"},\\\"type\\\":{\\\"$ref\\\":\\\"#/definitions/StandardType\\\",\\\"description\\\":\\\"The type of measurement (`\\\\\\\"quantitative\\\\\\\"`, `\\\\\\\"temporal\\\\\\\"`, `\\\\\\\"ordinal\\\\\\\"`, or `\\\\\\\"nominal\\\\\\\"`) for the encoded field or constant value (`datum`). It can also be a `\\\\\\\"geojson\\\\\\\"` type for encoding ['geoshape'](https://vega.github.io/vega-lite/docs/geoshape.html).\\\\n\\\\nVega-Lite automatically infers data types in many cases as discussed below. However, type is required for a field if: (1) the field is not nominal and the field encoding has no specified `aggregate` (except `argmin` and `argmax`), `bin`, scale type, custom `sort` order, nor `timeUnit` or (2) if you wish to use an ordinal scale for a field with `bin` or `timeUnit`.\\\\n\\\\n__Default value:__\\\\n\\\\n1) For a data `field`, `\\\\\\\"nominal\\\\\\\"` is the default data type unless the field encoding has `aggregate`, `channel`, `bin`, scale type, `sort`, or `timeUnit` that satisfies the following criteria: - `\\\\\\\"quantitative\\\\\\\"` is the default type if (1) the encoded field contains `bin` or `aggregate` except `\\\\\\\"argmin\\\\\\\"` and `\\\\\\\"argmax\\\\\\\"`, (2) the encoding channel is `latitude` or `longitude` channel or (3) if the specified scale type is [a quantitative scale](https://vega.github.io/vega-lite/docs/scale.html#type). - `\\\\\\\"temporal\\\\\\\"` is the default type if (1) the encoded field contains `timeUnit` or (2) the specified scale type is a time or utc scale - `ordinal\\\\\\\"\\\\\\\"` is the default type if (1) the encoded field contains a [custom `sort` order](https://vega.github.io/vega-lite/docs/sort.html#specifying-custom-sort-order), (2) the specified scale type is an ordinal/point/band scale, or (3) the encoding channel is `order`.\\\\n\\\\n2) For a constant value in data domain (`datum`): - `\\\\\\\"quantitative\\\\\\\"` if the datum is a number - `\\\\\\\"nominal\\\\\\\"` if the datum is a string - `\\\\\\\"temporal\\\\\\\"` if the datum is [a date time object](https://vega.github.io/vega-lite/docs/datetime.html)\\\\n\\\\n__Note:__ - Data `type` describes the semantics of the data rather than the primitive data types (number, string, etc.). The same primitive data type can have different types of measurement. For example, numeric data can represent quantitative, ordinal, or nominal data. - Data values for a temporal field can be either a date-time string (e.g., `\\\\\\\"2015-03-07 12:32:17\\\\\\\"`, `\\\\\\\"17:01\\\\\\\"`, `\\\\\\\"2015-03-16\\\\\\\"`. `\\\\\\\"2015\\\\\\\"`) or a timestamp number (e.g., `1552199579097`). - When using with [`bin`](https://vega.github.io/vega-lite/docs/bin.html), the `type` property can be either `\\\\\\\"quantitative\\\\\\\"` (for using a linear bin scale) or [`\\\\\\\"ordinal\\\\\\\"` (for using an ordinal bin scale)](https://vega.github.io/vega-lite/docs/type.html#cast-bin). - When using with [`timeUnit`](https://vega.github.io/vega-lite/docs/timeunit.html), the `type` property can be either `\\\\\\\"temporal\\\\\\\"` (default, for using a temporal scale) or [`\\\\\\\"ordinal\\\\\\\"` (for using an ordinal scale)](https://vega.github.io/vega-lite/docs/type.html#cast-bin). - When using with [`aggregate`](https://vega.github.io/vega-lite/docs/aggregate.html), the `type` property refers to the post-aggregation data type. For example, we can calculate count `distinct` of a categorical field `\\\\\\\"cat\\\\\\\"` using `{\\\\\\\"aggregate\\\\\\\": \\\\\\\"distinct\\\\\\\", \\\\\\\"field\\\\\\\": \\\\\\\"cat\\\\\\\"}`. The `\\\\\\\"type\\\\\\\"` of the aggregate output is `\\\\\\\"quantitative\\\\\\\"`. - Secondary channels (e.g., `x2`, `y2`, `xError`, `yError`) do not have `type` as they must have exactly the same type as their primary channels (e.g., `x`, `y`).\\\\n\\\\n__See also:__ [`type`](https://vega.github.io/vega-lite/docs/type.html) documentation.\\\"}},\\\"required\\\":[\\\"test\\\"],\\\"type\\\":\\\"object\\\"},\\\"ConditionalPredicate<ValueDef<(Gradient|string|null|ExprRef)>>\\\":{\\\"additionalProperties\\\":false,\\\"properties\\\":{\\\"test\\\":{\\\"$ref\\\":\\\"#/definitions/PredicateComposition\\\",\\\"description\\\":\\\"Predicate for triggering the condition\\\"},\\\"value\\\":{\\\"anyOf\\\":[{\\\"$ref\\\":\\\"#/definitions/Gradient\\\"},{\\\"type\\\":\\\"string\\\"},{\\\"type\\\":\\\"null\\\"},{\\\"$ref\\\":\\\"#/definitions/ExprRef\\\"}],\\\"description\\\":\\\"A constant value in visual domain (e.g., `\\\\\\\"red\\\\\\\"` / `\\\\\\\"#0099ff\\\\\\\"` / [gradient definition](https://vega.github.io/vega-lite/docs/types.html#gradient) for color, values between `0` to `1` for opacity).\\\"}},\\\"required\\\":[\\\"test\\\",\\\"value\\\"],\\\"type\\\":\\\"object\\\"},\\\"ConditionalPredicate<ValueDef<(Text|ExprRef)>>\\\":{\\\"additionalProperties\\\":false,\\\"properties\\\":{\\\"test\\\":{\\\"$ref\\\":\\\"#/definitions/PredicateComposition\\\",\\\"description\\\":\\\"Predicate for triggering the condition\\\"},\\\"value\\\":{\\\"anyOf\\\":[{\\\"$ref\\\":\\\"#/definitions/Text\\\"},{\\\"$ref\\\":\\\"#/definitions/ExprRef\\\"}],\\\"description\\\":\\\"A constant value in visual domain (e.g., `\\\\\\\"red\\\\\\\"` / `\\\\\\\"#0099ff\\\\\\\"` / [gradient definition](https://vega.github.io/vega-lite/docs/types.html#gradient) for color, values between `0` to `1` for opacity).\\\"}},\\\"required\\\":[\\\"test\\\",\\\"value\\\"],\\\"type\\\":\\\"object\\\"},\\\"ConditionalPredicate<ValueDef<(number[]|ExprRef)>>\\\":{\\\"additionalProperties\\\":false,\\\"properties\\\":{\\\"test\\\":{\\\"$ref\\\":\\\"#/definitions/PredicateComposition\\\",\\\"description\\\":\\\"Predicate for triggering the condition\\\"},\\\"value\\\":{\\\"anyOf\\\":[{\\\"items\\\":{\\\"type\\\":\\\"number\\\"},\\\"type\\\":\\\"array\\\"},{\\\"$ref\\\":\\\"#/definitions/ExprRef\\\"}],\\\"description\\\":\\\"A constant value in visual domain (e.g., `\\\\\\\"red\\\\\\\"` / `\\\\\\\"#0099ff\\\\\\\"` / [gradient definition](https://vega.github.io/vega-lite/docs/types.html#gradient) for color, values between `0` to `1` for opacity).\\\"}},\\\"required\\\":[\\\"test\\\",\\\"value\\\"],\\\"type\\\":\\\"object\\\"},\\\"ConditionalPredicate<ValueDef<(number|ExprRef)>>\\\":{\\\"additionalProperties\\\":false,\\\"properties\\\":{\\\"test\\\":{\\\"$ref\\\":\\\"#/definitions/PredicateComposition\\\",\\\"description\\\":\\\"Predicate for triggering the condition\\\"},\\\"value\\\":{\\\"anyOf\\\":[{\\\"type\\\":\\\"number\\\"},{\\\"$ref\\\":\\\"#/definitions/ExprRef\\\"}],\\\"description\\\":\\\"A constant value in visual domain (e.g., `\\\\\\\"red\\\\\\\"` / `\\\\\\\"#0099ff\\\\\\\"` / [gradient definition](https://vega.github.io/vega-lite/docs/types.html#gradient) for color, values between `0` to `1` for opacity).\\\"}},\\\"required\\\":[\\\"test\\\",\\\"value\\\"],\\\"type\\\":\\\"object\\\"},\\\"ConditionalPredicate<ValueDef<(string|ExprRef)>>\\\":{\\\"additionalProperties\\\":false,\\\"properties\\\":{\\\"test\\\":{\\\"$ref\\\":\\\"#/definitions/PredicateComposition\\\",\\\"description\\\":\\\"Predicate for triggering the condition\\\"},\\\"value\\\":{\\\"anyOf\\\":[{\\\"type\\\":\\\"string\\\"},{\\\"$ref\\\":\\\"#/definitions/ExprRef\\\"}],\\\"description\\\":\\\"A constant value in visual domain (e.g., `\\\\\\\"red\\\\\\\"` / `\\\\\\\"#0099ff\\\\\\\"` / [gradient definition](https://vega.github.io/vega-lite/docs/types.html#gradient) for color, values between `0` to `1` for opacity).\\\"}},\\\"required\\\":[\\\"test\\\",\\\"value\\\"],\\\"type\\\":\\\"object\\\"},\\\"ConditionalPredicate<ValueDef<(string|null|ExprRef)>>\\\":{\\\"additionalProperties\\\":false,\\\"properties\\\":{\\\"test\\\":{\\\"$ref\\\":\\\"#/definitions/PredicateComposition\\\",\\\"description\\\":\\\"Predicate for triggering the condition\\\"},\\\"value\\\":{\\\"anyOf\\\":[{\\\"type\\\":\\\"string\\\"},{\\\"type\\\":\\\"null\\\"},{\\\"$ref\\\":\\\"#/definitions/ExprRef\\\"}],\\\"description\\\":\\\"A constant value in visual domain (e.g., `\\\\\\\"red\\\\\\\"` / `\\\\\\\"#0099ff\\\\\\\"` / [gradient definition](https://vega.github.io/vega-lite/docs/types.html#gradient) for color, values between `0` to `1` for opacity).\\\"}},\\\"required\\\":[\\\"test\\\",\\\"value\\\"],\\\"type\\\":\\\"object\\\"},\\\"ConditionalPredicate<ValueDef<number>>\\\":{\\\"additionalProperties\\\":false,\\\"properties\\\":{\\\"test\\\":{\\\"$ref\\\":\\\"#/definitions/PredicateComposition\\\",\\\"description\\\":\\\"Predicate for triggering the condition\\\"},\\\"value\\\":{\\\"description\\\":\\\"A constant value in visual domain (e.g., `\\\\\\\"red\\\\\\\"` / `\\\\\\\"#0099ff\\\\\\\"` / [gradient definition](https://vega.github.io/vega-lite/docs/types.html#gradient) for color, values between `0` to `1` for opacity).\\\",\\\"type\\\":\\\"number\\\"}},\\\"required\\\":[\\\"test\\\",\\\"value\\\"],\\\"type\\\":\\\"object\\\"},\\\"ConditionalSelection<MarkPropFieldOrDatumDef>\\\":{\\\"anyOf\\\":[{\\\"additionalProperties\\\":false,\\\"properties\\\":{\\\"aggregate\\\":{\\\"$ref\\\":\\\"#/definitions/Aggregate\\\",\\\"description\\\":\\\"Aggregation function for the field (e.g., `\\\\\\\"mean\\\\\\\"`, `\\\\\\\"sum\\\\\\\"`, `\\\\\\\"median\\\\\\\"`, `\\\\\\\"min\\\\\\\"`, `\\\\\\\"max\\\\\\\"`, `\\\\\\\"count\\\\\\\"`).\\\\n\\\\n__Default value:__ `undefined` (None)\\\\n\\\\n__See also:__ [`aggregate`](https://vega.github.io/vega-lite/docs/aggregate.html) documentation.\\\"},\\\"band\\\":{\\\"description\\\":\\\"For rect-based marks (`rect`, `bar`, and `image`), mark size relative to bandwidth of [band scales](https://vega.github.io/vega-lite/docs/scale.html#band), bins or time units. If set to `1`, the mark size is set to the bandwidth, the bin interval, or the time unit interval. If set to `0.5`, the mark size is half of the bandwidth or the time unit interval.\\\\n\\\\nFor other marks, relative position on a band of a stacked, binned, time unit or band scale. If set to `0`, the marks will be positioned at the beginning of the band. If set to `0.5`, the marks will be positioned in the middle of the band.\\\",\\\"maximum\\\":1,\\\"minimum\\\":0,\\\"type\\\":\\\"number\\\"},\\\"bin\\\":{\\\"anyOf\\\":[{\\\"type\\\":\\\"boolean\\\"},{\\\"$ref\\\":\\\"#/definitions/BinParams\\\"},{\\\"type\\\":\\\"null\\\"}],\\\"description\\\":\\\"A flag for binning a `quantitative` field, [an object defining binning parameters](https://vega.github.io/vega-lite/docs/bin.html#params), or indicating that the data for `x` or `y` channel are binned before they are imported into Vega-Lite (`\\\\\\\"binned\\\\\\\"`).\\\\n\\\\n- If `true`, default [binning parameters](https://vega.github.io/vega-lite/docs/bin.html) will be applied.\\\\n\\\\n- If `\\\\\\\"binned\\\\\\\"`, this indicates that the data for the `x` (or `y`) channel are already binned. You can map the bin-start field to `x` (or `y`) and the bin-end field to `x2` (or `y2`). The scale and axis will be formatted similar to binning in Vega-Lite.  To adjust the axis ticks based on the bin step, you can also set the axis's [`tickMinStep`](https://vega.github.io/vega-lite/docs/axis.html#ticks) property.\\\\n\\\\n__Default value:__ `false`\\\\n\\\\n__See also:__ [`bin`](https://vega.github.io/vega-lite/docs/bin.html) documentation.\\\"},\\\"field\\\":{\\\"$ref\\\":\\\"#/definitions/Field\\\",\\\"description\\\":\\\"__Required.__ A string defining the name of the field from which to pull a data value or an object defining iterated values from the [`repeat`](https://vega.github.io/vega-lite/docs/repeat.html) operator.\\\\n\\\\n__See also:__ [`field`](https://vega.github.io/vega-lite/docs/field.html) documentation.\\\\n\\\\n__Notes:__ 1)  Dots (`.`) and brackets (`[` and `]`) can be used to access nested objects (e.g., `\\\\\\\"field\\\\\\\": \\\\\\\"foo.bar\\\\\\\"` and `\\\\\\\"field\\\\\\\": \\\\\\\"foo['bar']\\\\\\\"`). If field names contain dots or brackets but are not nested, you can use `\\\\\\\\\\\\\\\\` to escape dots and brackets (e.g., `\\\\\\\"a\\\\\\\\\\\\\\\\.b\\\\\\\"` and `\\\\\\\"a\\\\\\\\\\\\\\\\[0\\\\\\\\\\\\\\\\]\\\\\\\"`). See more details about escaping in the [field documentation](https://vega.github.io/vega-lite/docs/field.html). 2) `field` is not required if `aggregate` is `count`.\\\"},\\\"legend\\\":{\\\"anyOf\\\":[{\\\"$ref\\\":\\\"#/definitions/Legend\\\"},{\\\"type\\\":\\\"null\\\"}],\\\"description\\\":\\\"An object defining properties of the legend. If `null`, the legend for the encoding channel will be removed.\\\\n\\\\n__Default value:__ If undefined, default [legend properties](https://vega.github.io/vega-lite/docs/legend.html) are applied.\\\\n\\\\n__See also:__ [`legend`](https://vega.github.io/vega-lite/docs/legend.html) documentation.\\\"},\\\"scale\\\":{\\\"anyOf\\\":[{\\\"$ref\\\":\\\"#/definitions/Scale\\\"},{\\\"type\\\":\\\"null\\\"}],\\\"description\\\":\\\"An object defining properties of the channel's scale, which is the function that transforms values in the data domain (numbers, dates, strings, etc) to visual values (pixels, colors, sizes) of the encoding channels.\\\\n\\\\nIf `null`, the scale will be [disabled and the data value will be directly encoded](https://vega.github.io/vega-lite/docs/scale.html#disable).\\\\n\\\\n__Default value:__ If undefined, default [scale properties](https://vega.github.io/vega-lite/docs/scale.html) are applied.\\\\n\\\\n__See also:__ [`scale`](https://vega.github.io/vega-lite/docs/scale.html) documentation.\\\"},\\\"selection\\\":{\\\"$ref\\\":\\\"#/definitions/SelectionComposition\\\",\\\"description\\\":\\\"A [selection name](https://vega.github.io/vega-lite/docs/selection.html), or a series of [composed selections](https://vega.github.io/vega-lite/docs/selection.html#compose).\\\"},\\\"sort\\\":{\\\"$ref\\\":\\\"#/definitions/Sort\\\",\\\"description\\\":\\\"Sort order for the encoded field.\\\\n\\\\nFor continuous fields (quantitative or temporal), `sort` can be either `\\\\\\\"ascending\\\\\\\"` or `\\\\\\\"descending\\\\\\\"`.\\\\n\\\\nFor discrete fields, `sort` can be one of the following: - `\\\\\\\"ascending\\\\\\\"` or `\\\\\\\"descending\\\\\\\"` -- for sorting by the values' natural order in JavaScript. - [A string indicating an encoding channel name to sort by](https://vega.github.io/vega-lite/docs/sort.html#sort-by-encoding) (e.g., `\\\\\\\"x\\\\\\\"` or `\\\\\\\"y\\\\\\\"`) with an optional minus prefix for descending sort (e.g., `\\\\\\\"-x\\\\\\\"` to sort by x-field, descending). This channel string is short-form of [a sort-by-encoding definition](https://vega.github.io/vega-lite/docs/sort.html#sort-by-encoding). For example, `\\\\\\\"sort\\\\\\\": \\\\\\\"-x\\\\\\\"` is equivalent to `\\\\\\\"sort\\\\\\\": {\\\\\\\"encoding\\\\\\\": \\\\\\\"x\\\\\\\", \\\\\\\"order\\\\\\\": \\\\\\\"descending\\\\\\\"}`. - [A sort field definition](https://vega.github.io/vega-lite/docs/sort.html#sort-field) for sorting by another field. - [An array specifying the field values in preferred order](https://vega.github.io/vega-lite/docs/sort.html#sort-array). In this case, the sort order will obey the values in the array, followed by any unspecified values in their original order. For discrete time field, values in the sort array can be [date-time definition objects](types#datetime). In addition, for time units `\\\\\\\"month\\\\\\\"` and `\\\\\\\"day\\\\\\\"`, the values can be the month or day names (case insensitive) or their 3-letter initials (e.g., `\\\\\\\"Mon\\\\\\\"`, `\\\\\\\"Tue\\\\\\\"`). - `null` indicating no sort.\\\\n\\\\n__Default value:__ `\\\\\\\"ascending\\\\\\\"`\\\\n\\\\n__Note:__ `null` and sorting by another channel is not supported for `row` and `column`.\\\\n\\\\n__See also:__ [`sort`](https://vega.github.io/vega-lite/docs/sort.html) documentation.\\\"},\\\"timeUnit\\\":{\\\"anyOf\\\":[{\\\"$ref\\\":\\\"#/definitions/TimeUnit\\\"},{\\\"$ref\\\":\\\"#/definitions/TimeUnitParams\\\"}],\\\"description\\\":\\\"Time unit (e.g., `year`, `yearmonth`, `month`, `hours`) for a temporal field. or [a temporal field that gets casted as ordinal](https://vega.github.io/vega-lite/docs/type.html#cast).\\\\n\\\\n__Default value:__ `undefined` (None)\\\\n\\\\n__See also:__ [`timeUnit`](https://vega.github.io/vega-lite/docs/timeunit.html) documentation.\\\"},\\\"title\\\":{\\\"anyOf\\\":[{\\\"$ref\\\":\\\"#/definitions/Text\\\"},{\\\"type\\\":\\\"null\\\"}],\\\"description\\\":\\\"A title for the field. If `null`, the title will be removed.\\\\n\\\\n__Default value:__  derived from the field's name and transformation function (`aggregate`, `bin` and `timeUnit`). If the field has an aggregate function, the function is displayed as part of the title (e.g., `\\\\\\\"Sum of Profit\\\\\\\"`). If the field is binned or has a time unit applied, the applied function is shown in parentheses (e.g., `\\\\\\\"Profit (binned)\\\\\\\"`, `\\\\\\\"Transaction Date (year-month)\\\\\\\"`). Otherwise, the title is simply the field name.\\\\n\\\\n__Notes__:\\\\n\\\\n1) You can customize the default field title format by providing the [`fieldTitle`](https://vega.github.io/vega-lite/docs/config.html#top-level-config) property in the [config](https://vega.github.io/vega-lite/docs/config.html) or [`fieldTitle` function via the `compile` function's options](https://vega.github.io/vega-lite/docs/compile.html#field-title).\\\\n\\\\n2) If both field definition's `title` and axis, header, or legend `title` are defined, axis/header/legend title will be used.\\\"},\\\"type\\\":{\\\"$ref\\\":\\\"#/definitions/StandardType\\\",\\\"description\\\":\\\"The type of measurement (`\\\\\\\"quantitative\\\\\\\"`, `\\\\\\\"temporal\\\\\\\"`, `\\\\\\\"ordinal\\\\\\\"`, or `\\\\\\\"nominal\\\\\\\"`) for the encoded field or constant value (`datum`). It can also be a `\\\\\\\"geojson\\\\\\\"` type for encoding ['geoshape'](https://vega.github.io/vega-lite/docs/geoshape.html).\\\\n\\\\nVega-Lite automatically infers data types in many cases as discussed below. However, type is required for a field if: (1) the field is not nominal and the field encoding has no specified `aggregate` (except `argmin` and `argmax`), `bin`, scale type, custom `sort` order, nor `timeUnit` or (2) if you wish to use an ordinal scale for a field with `bin` or `timeUnit`.\\\\n\\\\n__Default value:__\\\\n\\\\n1) For a data `field`, `\\\\\\\"nominal\\\\\\\"` is the default data type unless the field encoding has `aggregate`, `channel`, `bin`, scale type, `sort`, or `timeUnit` that satisfies the following criteria: - `\\\\\\\"quantitative\\\\\\\"` is the default type if (1) the encoded field contains `bin` or `aggregate` except `\\\\\\\"argmin\\\\\\\"` and `\\\\\\\"argmax\\\\\\\"`, (2) the encoding channel is `latitude` or `longitude` channel or (3) if the specified scale type is [a quantitative scale](https://vega.github.io/vega-lite/docs/scale.html#type). - `\\\\\\\"temporal\\\\\\\"` is the default type if (1) the encoded field contains `timeUnit` or (2) the specified scale type is a time or utc scale - `ordinal\\\\\\\"\\\\\\\"` is the default type if (1) the encoded field contains a [custom `sort` order](https://vega.github.io/vega-lite/docs/sort.html#specifying-custom-sort-order), (2) the specified scale type is an ordinal/point/band scale, or (3) the encoding channel is `order`.\\\\n\\\\n2) For a constant value in data domain (`datum`): - `\\\\\\\"quantitative\\\\\\\"` if the datum is a number - `\\\\\\\"nominal\\\\\\\"` if the datum is a string - `\\\\\\\"temporal\\\\\\\"` if the datum is [a date time object](https://vega.github.io/vega-lite/docs/datetime.html)\\\\n\\\\n__Note:__ - Data `type` describes the semantics of the data rather than the primitive data types (number, string, etc.). The same primitive data type can have different types of measurement. For example, numeric data can represent quantitative, ordinal, or nominal data. - Data values for a temporal field can be either a date-time string (e.g., `\\\\\\\"2015-03-07 12:32:17\\\\\\\"`, `\\\\\\\"17:01\\\\\\\"`, `\\\\\\\"2015-03-16\\\\\\\"`. `\\\\\\\"2015\\\\\\\"`) or a timestamp number (e.g., `1552199579097`). - When using with [`bin`](https://vega.github.io/vega-lite/docs/bin.html), the `type` property can be either `\\\\\\\"quantitative\\\\\\\"` (for using a linear bin scale) or [`\\\\\\\"ordinal\\\\\\\"` (for using an ordinal bin scale)](https://vega.github.io/vega-lite/docs/type.html#cast-bin). - When using with [`timeUnit`](https://vega.github.io/vega-lite/docs/timeunit.html), the `type` property can be either `\\\\\\\"temporal\\\\\\\"` (default, for using a temporal scale) or [`\\\\\\\"ordinal\\\\\\\"` (for using an ordinal scale)](https://vega.github.io/vega-lite/docs/type.html#cast-bin). - When using with [`aggregate`](https://vega.github.io/vega-lite/docs/aggregate.html), the `type` property refers to the post-aggregation data type. For example, we can calculate count `distinct` of a categorical field `\\\\\\\"cat\\\\\\\"` using `{\\\\\\\"aggregate\\\\\\\": \\\\\\\"distinct\\\\\\\", \\\\\\\"field\\\\\\\": \\\\\\\"cat\\\\\\\"}`. The `\\\\\\\"type\\\\\\\"` of the aggregate output is `\\\\\\\"quantitative\\\\\\\"`. - Secondary channels (e.g., `x2`, `y2`, `xError`, `yError`) do not have `type` as they must have exactly the same type as their primary channels (e.g., `x`, `y`).\\\\n\\\\n__See also:__ [`type`](https://vega.github.io/vega-lite/docs/type.html) documentation.\\\"}},\\\"required\\\":[\\\"selection\\\"],\\\"type\\\":\\\"object\\\"},{\\\"additionalProperties\\\":false,\\\"properties\\\":{\\\"band\\\":{\\\"description\\\":\\\"For rect-based marks (`rect`, `bar`, and `image`), mark size relative to bandwidth of [band scales](https://vega.github.io/vega-lite/docs/scale.html#band), bins or time units. If set to `1`, the mark size is set to the bandwidth, the bin interval, or the time unit interval. If set to `0.5`, the mark size is half of the bandwidth or the time unit interval.\\\\n\\\\nFor other marks, relative position on a band of a stacked, binned, time unit or band scale. If set to `0`, the marks will be positioned at the beginning of the band. If set to `0.5`, the marks will be positioned in the middle of the band.\\\",\\\"maximum\\\":1,\\\"minimum\\\":0,\\\"type\\\":\\\"number\\\"},\\\"datum\\\":{\\\"anyOf\\\":[{\\\"$ref\\\":\\\"#/definitions/PrimitiveValue\\\"},{\\\"$ref\\\":\\\"#/definitions/DateTime\\\"},{\\\"$ref\\\":\\\"#/definitions/ExprRef\\\"},{\\\"$ref\\\":\\\"#/definitions/RepeatRef\\\"}],\\\"description\\\":\\\"A constant value in data domain.\\\"},\\\"legend\\\":{\\\"anyOf\\\":[{\\\"$ref\\\":\\\"#/definitions/Legend\\\"},{\\\"type\\\":\\\"null\\\"}],\\\"description\\\":\\\"An object defining properties of the legend. If `null`, the legend for the encoding channel will be removed.\\\\n\\\\n__Default value:__ If undefined, default [legend properties](https://vega.github.io/vega-lite/docs/legend.html) are applied.\\\\n\\\\n__See also:__ [`legend`](https://vega.github.io/vega-lite/docs/legend.html) documentation.\\\"},\\\"scale\\\":{\\\"anyOf\\\":[{\\\"$ref\\\":\\\"#/definitions/Scale\\\"},{\\\"type\\\":\\\"null\\\"}],\\\"description\\\":\\\"An object defining properties of the channel's scale, which is the function that transforms values in the data domain (numbers, dates, strings, etc) to visual values (pixels, colors, sizes) of the encoding channels.\\\\n\\\\nIf `null`, the scale will be [disabled and the data value will be directly encoded](https://vega.github.io/vega-lite/docs/scale.html#disable).\\\\n\\\\n__Default value:__ If undefined, default [scale properties](https://vega.github.io/vega-lite/docs/scale.html) are applied.\\\\n\\\\n__See also:__ [`scale`](https://vega.github.io/vega-lite/docs/scale.html) documentation.\\\"},\\\"selection\\\":{\\\"$ref\\\":\\\"#/definitions/SelectionComposition\\\",\\\"description\\\":\\\"A [selection name](https://vega.github.io/vega-lite/docs/selection.html), or a series of [composed selections](https://vega.github.io/vega-lite/docs/selection.html#compose).\\\"},\\\"type\\\":{\\\"$ref\\\":\\\"#/definitions/Type\\\",\\\"description\\\":\\\"The type of measurement (`\\\\\\\"quantitative\\\\\\\"`, `\\\\\\\"temporal\\\\\\\"`, `\\\\\\\"ordinal\\\\\\\"`, or `\\\\\\\"nominal\\\\\\\"`) for the encoded field or constant value (`datum`). It can also be a `\\\\\\\"geojson\\\\\\\"` type for encoding ['geoshape'](https://vega.github.io/vega-lite/docs/geoshape.html).\\\\n\\\\nVega-Lite automatically infers data types in many cases as discussed below. However, type is required for a field if: (1) the field is not nominal and the field encoding has no specified `aggregate` (except `argmin` and `argmax`), `bin`, scale type, custom `sort` order, nor `timeUnit` or (2) if you wish to use an ordinal scale for a field with `bin` or `timeUnit`.\\\\n\\\\n__Default value:__\\\\n\\\\n1) For a data `field`, `\\\\\\\"nominal\\\\\\\"` is the default data type unless the field encoding has `aggregate`, `channel`, `bin`, scale type, `sort`, or `timeUnit` that satisfies the following criteria: - `\\\\\\\"quantitative\\\\\\\"` is the default type if (1) the encoded field contains `bin` or `aggregate` except `\\\\\\\"argmin\\\\\\\"` and `\\\\\\\"argmax\\\\\\\"`, (2) the encoding channel is `latitude` or `longitude` channel or (3) if the specified scale type is [a quantitative scale](https://vega.github.io/vega-lite/docs/scale.html#type). - `\\\\\\\"temporal\\\\\\\"` is the default type if (1) the encoded field contains `timeUnit` or (2) the specified scale type is a time or utc scale - `ordinal\\\\\\\"\\\\\\\"` is the default type if (1) the encoded field contains a [custom `sort` order](https://vega.github.io/vega-lite/docs/sort.html#specifying-custom-sort-order), (2) the specified scale type is an ordinal/point/band scale, or (3) the encoding channel is `order`.\\\\n\\\\n2) For a constant value in data domain (`datum`): - `\\\\\\\"quantitative\\\\\\\"` if the datum is a number - `\\\\\\\"nominal\\\\\\\"` if the datum is a string - `\\\\\\\"temporal\\\\\\\"` if the datum is [a date time object](https://vega.github.io/vega-lite/docs/datetime.html)\\\\n\\\\n__Note:__ - Data `type` describes the semantics of the data rather than the primitive data types (number, string, etc.). The same primitive data type can have different types of measurement. For example, numeric data can represent quantitative, ordinal, or nominal data. - Data values for a temporal field can be either a date-time string (e.g., `\\\\\\\"2015-03-07 12:32:17\\\\\\\"`, `\\\\\\\"17:01\\\\\\\"`, `\\\\\\\"2015-03-16\\\\\\\"`. `\\\\\\\"2015\\\\\\\"`) or a timestamp number (e.g., `1552199579097`). - When using with [`bin`](https://vega.github.io/vega-lite/docs/bin.html), the `type` property can be either `\\\\\\\"quantitative\\\\\\\"` (for using a linear bin scale) or [`\\\\\\\"ordinal\\\\\\\"` (for using an ordinal bin scale)](https://vega.github.io/vega-lite/docs/type.html#cast-bin). - When using with [`timeUnit`](https://vega.github.io/vega-lite/docs/timeunit.html), the `type` property can be either `\\\\\\\"temporal\\\\\\\"` (default, for using a temporal scale) or [`\\\\\\\"ordinal\\\\\\\"` (for using an ordinal scale)](https://vega.github.io/vega-lite/docs/type.html#cast-bin). - When using with [`aggregate`](https://vega.github.io/vega-lite/docs/aggregate.html), the `type` property refers to the post-aggregation data type. For example, we can calculate count `distinct` of a categorical field `\\\\\\\"cat\\\\\\\"` using `{\\\\\\\"aggregate\\\\\\\": \\\\\\\"distinct\\\\\\\", \\\\\\\"field\\\\\\\": \\\\\\\"cat\\\\\\\"}`. The `\\\\\\\"type\\\\\\\"` of the aggregate output is `\\\\\\\"quantitative\\\\\\\"`. - Secondary channels (e.g., `x2`, `y2`, `xError`, `yError`) do not have `type` as they must have exactly the same type as their primary channels (e.g., `x`, `y`).\\\\n\\\\n__See also:__ [`type`](https://vega.github.io/vega-lite/docs/type.html) documentation.\\\"}},\\\"required\\\":[\\\"selection\\\"],\\\"type\\\":\\\"object\\\"}]},\\\"ConditionalSelection<MarkPropFieldOrDatumDef<TypeForShape>>\\\":{\\\"anyOf\\\":[{\\\"additionalProperties\\\":false,\\\"properties\\\":{\\\"aggregate\\\":{\\\"$ref\\\":\\\"#/definitions/Aggregate\\\",\\\"description\\\":\\\"Aggregation function for the field (e.g., `\\\\\\\"mean\\\\\\\"`, `\\\\\\\"sum\\\\\\\"`, `\\\\\\\"median\\\\\\\"`, `\\\\\\\"min\\\\\\\"`, `\\\\\\\"max\\\\\\\"`, `\\\\\\\"count\\\\\\\"`).\\\\n\\\\n__Default value:__ `undefined` (None)\\\\n\\\\n__See also:__ [`aggregate`](https://vega.github.io/vega-lite/docs/aggregate.html) documentation.\\\"},\\\"band\\\":{\\\"description\\\":\\\"For rect-based marks (`rect`, `bar`, and `image`), mark size relative to bandwidth of [band scales](https://vega.github.io/vega-lite/docs/scale.html#band), bins or time units. If set to `1`, the mark size is set to the bandwidth, the bin interval, or the time unit interval. If set to `0.5`, the mark size is half of the bandwidth or the time unit interval.\\\\n\\\\nFor other marks, relative position on a band of a stacked, binned, time unit or band scale. If set to `0`, the marks will be positioned at the beginning of the band. If set to `0.5`, the marks will be positioned in the middle of the band.\\\",\\\"maximum\\\":1,\\\"minimum\\\":0,\\\"type\\\":\\\"number\\\"},\\\"bin\\\":{\\\"anyOf\\\":[{\\\"type\\\":\\\"boolean\\\"},{\\\"$ref\\\":\\\"#/definitions/BinParams\\\"},{\\\"type\\\":\\\"null\\\"}],\\\"description\\\":\\\"A flag for binning a `quantitative` field, [an object defining binning parameters](https://vega.github.io/vega-lite/docs/bin.html#params), or indicating that the data for `x` or `y` channel are binned before they are imported into Vega-Lite (`\\\\\\\"binned\\\\\\\"`).\\\\n\\\\n- If `true`, default [binning parameters](https://vega.github.io/vega-lite/docs/bin.html) will be applied.\\\\n\\\\n- If `\\\\\\\"binned\\\\\\\"`, this indicates that the data for the `x` (or `y`) channel are already binned. You can map the bin-start field to `x` (or `y`) and the bin-end field to `x2` (or `y2`). The scale and axis will be formatted similar to binning in Vega-Lite.  To adjust the axis ticks based on the bin step, you can also set the axis's [`tickMinStep`](https://vega.github.io/vega-lite/docs/axis.html#ticks) property.\\\\n\\\\n__Default value:__ `false`\\\\n\\\\n__See also:__ [`bin`](https://vega.github.io/vega-lite/docs/bin.html) documentation.\\\"},\\\"field\\\":{\\\"$ref\\\":\\\"#/definitions/Field\\\",\\\"description\\\":\\\"__Required.__ A string defining the name of the field from which to pull a data value or an object defining iterated values from the [`repeat`](https://vega.github.io/vega-lite/docs/repeat.html) operator.\\\\n\\\\n__See also:__ [`field`](https://vega.github.io/vega-lite/docs/field.html) documentation.\\\\n\\\\n__Notes:__ 1)  Dots (`.`) and brackets (`[` and `]`) can be used to access nested objects (e.g., `\\\\\\\"field\\\\\\\": \\\\\\\"foo.bar\\\\\\\"` and `\\\\\\\"field\\\\\\\": \\\\\\\"foo['bar']\\\\\\\"`). If field names contain dots or brackets but are not nested, you can use `\\\\\\\\\\\\\\\\` to escape dots and brackets (e.g., `\\\\\\\"a\\\\\\\\\\\\\\\\.b\\\\\\\"` and `\\\\\\\"a\\\\\\\\\\\\\\\\[0\\\\\\\\\\\\\\\\]\\\\\\\"`). See more details about escaping in the [field documentation](https://vega.github.io/vega-lite/docs/field.html). 2) `field` is not required if `aggregate` is `count`.\\\"},\\\"legend\\\":{\\\"anyOf\\\":[{\\\"$ref\\\":\\\"#/definitions/Legend\\\"},{\\\"type\\\":\\\"null\\\"}],\\\"description\\\":\\\"An object defining properties of the legend. If `null`, the legend for the encoding channel will be removed.\\\\n\\\\n__Default value:__ If undefined, default [legend properties](https://vega.github.io/vega-lite/docs/legend.html) are applied.\\\\n\\\\n__See also:__ [`legend`](https://vega.github.io/vega-lite/docs/legend.html) documentation.\\\"},\\\"scale\\\":{\\\"anyOf\\\":[{\\\"$ref\\\":\\\"#/definitions/Scale\\\"},{\\\"type\\\":\\\"null\\\"}],\\\"description\\\":\\\"An object defining properties of the channel's scale, which is the function that transforms values in the data domain (numbers, dates, strings, etc) to visual values (pixels, colors, sizes) of the encoding channels.\\\\n\\\\nIf `null`, the scale will be [disabled and the data value will be directly encoded](https://vega.github.io/vega-lite/docs/scale.html#disable).\\\\n\\\\n__Default value:__ If undefined, default [scale properties](https://vega.github.io/vega-lite/docs/scale.html) are applied.\\\\n\\\\n__See also:__ [`scale`](https://vega.github.io/vega-lite/docs/scale.html) documentation.\\\"},\\\"selection\\\":{\\\"$ref\\\":\\\"#/definitions/SelectionComposition\\\",\\\"description\\\":\\\"A [selection name](https://vega.github.io/vega-lite/docs/selection.html), or a series of [composed selections](https://vega.github.io/vega-lite/docs/selection.html#compose).\\\"},\\\"sort\\\":{\\\"$ref\\\":\\\"#/definitions/Sort\\\",\\\"description\\\":\\\"Sort order for the encoded field.\\\\n\\\\nFor continuous fields (quantitative or temporal), `sort` can be either `\\\\\\\"ascending\\\\\\\"` or `\\\\\\\"descending\\\\\\\"`.\\\\n\\\\nFor discrete fields, `sort` can be one of the following: - `\\\\\\\"ascending\\\\\\\"` or `\\\\\\\"descending\\\\\\\"` -- for sorting by the values' natural order in JavaScript. - [A string indicating an encoding channel name to sort by](https://vega.github.io/vega-lite/docs/sort.html#sort-by-encoding) (e.g., `\\\\\\\"x\\\\\\\"` or `\\\\\\\"y\\\\\\\"`) with an optional minus prefix for descending sort (e.g., `\\\\\\\"-x\\\\\\\"` to sort by x-field, descending). This channel string is short-form of [a sort-by-encoding definition](https://vega.github.io/vega-lite/docs/sort.html#sort-by-encoding). For example, `\\\\\\\"sort\\\\\\\": \\\\\\\"-x\\\\\\\"` is equivalent to `\\\\\\\"sort\\\\\\\": {\\\\\\\"encoding\\\\\\\": \\\\\\\"x\\\\\\\", \\\\\\\"order\\\\\\\": \\\\\\\"descending\\\\\\\"}`. - [A sort field definition](https://vega.github.io/vega-lite/docs/sort.html#sort-field) for sorting by another field. - [An array specifying the field values in preferred order](https://vega.github.io/vega-lite/docs/sort.html#sort-array). In this case, the sort order will obey the values in the array, followed by any unspecified values in their original order. For discrete time field, values in the sort array can be [date-time definition objects](types#datetime). In addition, for time units `\\\\\\\"month\\\\\\\"` and `\\\\\\\"day\\\\\\\"`, the values can be the month or day names (case insensitive) or their 3-letter initials (e.g., `\\\\\\\"Mon\\\\\\\"`, `\\\\\\\"Tue\\\\\\\"`). - `null` indicating no sort.\\\\n\\\\n__Default value:__ `\\\\\\\"ascending\\\\\\\"`\\\\n\\\\n__Note:__ `null` and sorting by another channel is not supported for `row` and `column`.\\\\n\\\\n__See also:__ [`sort`](https://vega.github.io/vega-lite/docs/sort.html) documentation.\\\"},\\\"timeUnit\\\":{\\\"anyOf\\\":[{\\\"$ref\\\":\\\"#/definitions/TimeUnit\\\"},{\\\"$ref\\\":\\\"#/definitions/TimeUnitParams\\\"}],\\\"description\\\":\\\"Time unit (e.g., `year`, `yearmonth`, `month`, `hours`) for a temporal field. or [a temporal field that gets casted as ordinal](https://vega.github.io/vega-lite/docs/type.html#cast).\\\\n\\\\n__Default value:__ `undefined` (None)\\\\n\\\\n__See also:__ [`timeUnit`](https://vega.github.io/vega-lite/docs/timeunit.html) documentation.\\\"},\\\"title\\\":{\\\"anyOf\\\":[{\\\"$ref\\\":\\\"#/definitions/Text\\\"},{\\\"type\\\":\\\"null\\\"}],\\\"description\\\":\\\"A title for the field. If `null`, the title will be removed.\\\\n\\\\n__Default value:__  derived from the field's name and transformation function (`aggregate`, `bin` and `timeUnit`). If the field has an aggregate function, the function is displayed as part of the title (e.g., `\\\\\\\"Sum of Profit\\\\\\\"`). If the field is binned or has a time unit applied, the applied function is shown in parentheses (e.g., `\\\\\\\"Profit (binned)\\\\\\\"`, `\\\\\\\"Transaction Date (year-month)\\\\\\\"`). Otherwise, the title is simply the field name.\\\\n\\\\n__Notes__:\\\\n\\\\n1) You can customize the default field title format by providing the [`fieldTitle`](https://vega.github.io/vega-lite/docs/config.html#top-level-config) property in the [config](https://vega.github.io/vega-lite/docs/config.html) or [`fieldTitle` function via the `compile` function's options](https://vega.github.io/vega-lite/docs/compile.html#field-title).\\\\n\\\\n2) If both field definition's `title` and axis, header, or legend `title` are defined, axis/header/legend title will be used.\\\"},\\\"type\\\":{\\\"$ref\\\":\\\"#/definitions/TypeForShape\\\",\\\"description\\\":\\\"The type of measurement (`\\\\\\\"quantitative\\\\\\\"`, `\\\\\\\"temporal\\\\\\\"`, `\\\\\\\"ordinal\\\\\\\"`, or `\\\\\\\"nominal\\\\\\\"`) for the encoded field or constant value (`datum`). It can also be a `\\\\\\\"geojson\\\\\\\"` type for encoding ['geoshape'](https://vega.github.io/vega-lite/docs/geoshape.html).\\\\n\\\\nVega-Lite automatically infers data types in many cases as discussed below. However, type is required for a field if: (1) the field is not nominal and the field encoding has no specified `aggregate` (except `argmin` and `argmax`), `bin`, scale type, custom `sort` order, nor `timeUnit` or (2) if you wish to use an ordinal scale for a field with `bin` or `timeUnit`.\\\\n\\\\n__Default value:__\\\\n\\\\n1) For a data `field`, `\\\\\\\"nominal\\\\\\\"` is the default data type unless the field encoding has `aggregate`, `channel`, `bin`, scale type, `sort`, or `timeUnit` that satisfies the following criteria: - `\\\\\\\"quantitative\\\\\\\"` is the default type if (1) the encoded field contains `bin` or `aggregate` except `\\\\\\\"argmin\\\\\\\"` and `\\\\\\\"argmax\\\\\\\"`, (2) the encoding channel is `latitude` or `longitude` channel or (3) if the specified scale type is [a quantitative scale](https://vega.github.io/vega-lite/docs/scale.html#type). - `\\\\\\\"temporal\\\\\\\"` is the default type if (1) the encoded field contains `timeUnit` or (2) the specified scale type is a time or utc scale - `ordinal\\\\\\\"\\\\\\\"` is the default type if (1) the encoded field contains a [custom `sort` order](https://vega.github.io/vega-lite/docs/sort.html#specifying-custom-sort-order), (2) the specified scale type is an ordinal/point/band scale, or (3) the encoding channel is `order`.\\\\n\\\\n2) For a constant value in data domain (`datum`): - `\\\\\\\"quantitative\\\\\\\"` if the datum is a number - `\\\\\\\"nominal\\\\\\\"` if the datum is a string - `\\\\\\\"temporal\\\\\\\"` if the datum is [a date time object](https://vega.github.io/vega-lite/docs/datetime.html)\\\\n\\\\n__Note:__ - Data `type` describes the semantics of the data rather than the primitive data types (number, string, etc.). The same primitive data type can have different types of measurement. For example, numeric data can represent quantitative, ordinal, or nominal data. - Data values for a temporal field can be either a date-time string (e.g., `\\\\\\\"2015-03-07 12:32:17\\\\\\\"`, `\\\\\\\"17:01\\\\\\\"`, `\\\\\\\"2015-03-16\\\\\\\"`. `\\\\\\\"2015\\\\\\\"`) or a timestamp number (e.g., `1552199579097`). - When using with [`bin`](https://vega.github.io/vega-lite/docs/bin.html), the `type` property can be either `\\\\\\\"quantitative\\\\\\\"` (for using a linear bin scale) or [`\\\\\\\"ordinal\\\\\\\"` (for using an ordinal bin scale)](https://vega.github.io/vega-lite/docs/type.html#cast-bin). - When using with [`timeUnit`](https://vega.github.io/vega-lite/docs/timeunit.html), the `type` property can be either `\\\\\\\"temporal\\\\\\\"` (default, for using a temporal scale) or [`\\\\\\\"ordinal\\\\\\\"` (for using an ordinal scale)](https://vega.github.io/vega-lite/docs/type.html#cast-bin). - When using with [`aggregate`](https://vega.github.io/vega-lite/docs/aggregate.html), the `type` property refers to the post-aggregation data type. For example, we can calculate count `distinct` of a categorical field `\\\\\\\"cat\\\\\\\"` using `{\\\\\\\"aggregate\\\\\\\": \\\\\\\"distinct\\\\\\\", \\\\\\\"field\\\\\\\": \\\\\\\"cat\\\\\\\"}`. The `\\\\\\\"type\\\\\\\"` of the aggregate output is `\\\\\\\"quantitative\\\\\\\"`. - Secondary channels (e.g., `x2`, `y2`, `xError`, `yError`) do not have `type` as they must have exactly the same type as their primary channels (e.g., `x`, `y`).\\\\n\\\\n__See also:__ [`type`](https://vega.github.io/vega-lite/docs/type.html) documentation.\\\"}},\\\"required\\\":[\\\"selection\\\"],\\\"type\\\":\\\"object\\\"},{\\\"additionalProperties\\\":false,\\\"properties\\\":{\\\"band\\\":{\\\"description\\\":\\\"For rect-based marks (`rect`, `bar`, and `image`), mark size relative to bandwidth of [band scales](https://vega.github.io/vega-lite/docs/scale.html#band), bins or time units. If set to `1`, the mark size is set to the bandwidth, the bin interval, or the time unit interval. If set to `0.5`, the mark size is half of the bandwidth or the time unit interval.\\\\n\\\\nFor other marks, relative position on a band of a stacked, binned, time unit or band scale. If set to `0`, the marks will be positioned at the beginning of the band. If set to `0.5`, the marks will be positioned in the middle of the band.\\\",\\\"maximum\\\":1,\\\"minimum\\\":0,\\\"type\\\":\\\"number\\\"},\\\"datum\\\":{\\\"anyOf\\\":[{\\\"$ref\\\":\\\"#/definitions/PrimitiveValue\\\"},{\\\"$ref\\\":\\\"#/definitions/DateTime\\\"},{\\\"$ref\\\":\\\"#/definitions/ExprRef\\\"},{\\\"$ref\\\":\\\"#/definitions/RepeatRef\\\"}],\\\"description\\\":\\\"A constant value in data domain.\\\"},\\\"legend\\\":{\\\"anyOf\\\":[{\\\"$ref\\\":\\\"#/definitions/Legend\\\"},{\\\"type\\\":\\\"null\\\"}],\\\"description\\\":\\\"An object defining properties of the legend. If `null`, the legend for the encoding channel will be removed.\\\\n\\\\n__Default value:__ If undefined, default [legend properties](https://vega.github.io/vega-lite/docs/legend.html) are applied.\\\\n\\\\n__See also:__ [`legend`](https://vega.github.io/vega-lite/docs/legend.html) documentation.\\\"},\\\"scale\\\":{\\\"anyOf\\\":[{\\\"$ref\\\":\\\"#/definitions/Scale\\\"},{\\\"type\\\":\\\"null\\\"}],\\\"description\\\":\\\"An object defining properties of the channel's scale, which is the function that transforms values in the data domain (numbers, dates, strings, etc) to visual values (pixels, colors, sizes) of the encoding channels.\\\\n\\\\nIf `null`, the scale will be [disabled and the data value will be directly encoded](https://vega.github.io/vega-lite/docs/scale.html#disable).\\\\n\\\\n__Default value:__ If undefined, default [scale properties](https://vega.github.io/vega-lite/docs/scale.html) are applied.\\\\n\\\\n__See also:__ [`scale`](https://vega.github.io/vega-lite/docs/scale.html) documentation.\\\"},\\\"selection\\\":{\\\"$ref\\\":\\\"#/definitions/SelectionComposition\\\",\\\"description\\\":\\\"A [selection name](https://vega.github.io/vega-lite/docs/selection.html), or a series of [composed selections](https://vega.github.io/vega-lite/docs/selection.html#compose).\\\"},\\\"type\\\":{\\\"$ref\\\":\\\"#/definitions/Type\\\",\\\"description\\\":\\\"The type of measurement (`\\\\\\\"quantitative\\\\\\\"`, `\\\\\\\"temporal\\\\\\\"`, `\\\\\\\"ordinal\\\\\\\"`, or `\\\\\\\"nominal\\\\\\\"`) for the encoded field or constant value (`datum`). It can also be a `\\\\\\\"geojson\\\\\\\"` type for encoding ['geoshape'](https://vega.github.io/vega-lite/docs/geoshape.html).\\\\n\\\\nVega-Lite automatically infers data types in many cases as discussed below. However, type is required for a field if: (1) the field is not nominal and the field encoding has no specified `aggregate` (except `argmin` and `argmax`), `bin`, scale type, custom `sort` order, nor `timeUnit` or (2) if you wish to use an ordinal scale for a field with `bin` or `timeUnit`.\\\\n\\\\n__Default value:__\\\\n\\\\n1) For a data `field`, `\\\\\\\"nominal\\\\\\\"` is the default data type unless the field encoding has `aggregate`, `channel`, `bin`, scale type, `sort`, or `timeUnit` that satisfies the following criteria: - `\\\\\\\"quantitative\\\\\\\"` is the default type if (1) the encoded field contains `bin` or `aggregate` except `\\\\\\\"argmin\\\\\\\"` and `\\\\\\\"argmax\\\\\\\"`, (2) the encoding channel is `latitude` or `longitude` channel or (3) if the specified scale type is [a quantitative scale](https://vega.github.io/vega-lite/docs/scale.html#type). - `\\\\\\\"temporal\\\\\\\"` is the default type if (1) the encoded field contains `timeUnit` or (2) the specified scale type is a time or utc scale - `ordinal\\\\\\\"\\\\\\\"` is the default type if (1) the encoded field contains a [custom `sort` order](https://vega.github.io/vega-lite/docs/sort.html#specifying-custom-sort-order), (2) the specified scale type is an ordinal/point/band scale, or (3) the encoding channel is `order`.\\\\n\\\\n2) For a constant value in data domain (`datum`): - `\\\\\\\"quantitative\\\\\\\"` if the datum is a number - `\\\\\\\"nominal\\\\\\\"` if the datum is a string - `\\\\\\\"temporal\\\\\\\"` if the datum is [a date time object](https://vega.github.io/vega-lite/docs/datetime.html)\\\\n\\\\n__Note:__ - Data `type` describes the semantics of the data rather than the primitive data types (number, string, etc.). The same primitive data type can have different types of measurement. For example, numeric data can represent quantitative, ordinal, or nominal data. - Data values for a temporal field can be either a date-time string (e.g., `\\\\\\\"2015-03-07 12:32:17\\\\\\\"`, `\\\\\\\"17:01\\\\\\\"`, `\\\\\\\"2015-03-16\\\\\\\"`. `\\\\\\\"2015\\\\\\\"`) or a timestamp number (e.g., `1552199579097`). - When using with [`bin`](https://vega.github.io/vega-lite/docs/bin.html), the `type` property can be either `\\\\\\\"quantitative\\\\\\\"` (for using a linear bin scale) or [`\\\\\\\"ordinal\\\\\\\"` (for using an ordinal bin scale)](https://vega.github.io/vega-lite/docs/type.html#cast-bin). - When using with [`timeUnit`](https://vega.github.io/vega-lite/docs/timeunit.html), the `type` property can be either `\\\\\\\"temporal\\\\\\\"` (default, for using a temporal scale) or [`\\\\\\\"ordinal\\\\\\\"` (for using an ordinal scale)](https://vega.github.io/vega-lite/docs/type.html#cast-bin). - When using with [`aggregate`](https://vega.github.io/vega-lite/docs/aggregate.html), the `type` property refers to the post-aggregation data type. For example, we can calculate count `distinct` of a categorical field `\\\\\\\"cat\\\\\\\"` using `{\\\\\\\"aggregate\\\\\\\": \\\\\\\"distinct\\\\\\\", \\\\\\\"field\\\\\\\": \\\\\\\"cat\\\\\\\"}`. The `\\\\\\\"type\\\\\\\"` of the aggregate output is `\\\\\\\"quantitative\\\\\\\"`. - Secondary channels (e.g., `x2`, `y2`, `xError`, `yError`) do not have `type` as they must have exactly the same type as their primary channels (e.g., `x`, `y`).\\\\n\\\\n__See also:__ [`type`](https://vega.github.io/vega-lite/docs/type.html) documentation.\\\"}},\\\"required\\\":[\\\"selection\\\"],\\\"type\\\":\\\"object\\\"}]},\\\"ConditionalSelection<StringFieldDef>\\\":{\\\"additionalProperties\\\":false,\\\"properties\\\":{\\\"aggregate\\\":{\\\"$ref\\\":\\\"#/definitions/Aggregate\\\",\\\"description\\\":\\\"Aggregation function for the field (e.g., `\\\\\\\"mean\\\\\\\"`, `\\\\\\\"sum\\\\\\\"`, `\\\\\\\"median\\\\\\\"`, `\\\\\\\"min\\\\\\\"`, `\\\\\\\"max\\\\\\\"`, `\\\\\\\"count\\\\\\\"`).\\\\n\\\\n__Default value:__ `undefined` (None)\\\\n\\\\n__See also:__ [`aggregate`](https://vega.github.io/vega-lite/docs/aggregate.html) documentation.\\\"},\\\"band\\\":{\\\"description\\\":\\\"For rect-based marks (`rect`, `bar`, and `image`), mark size relative to bandwidth of [band scales](https://vega.github.io/vega-lite/docs/scale.html#band), bins or time units. If set to `1`, the mark size is set to the bandwidth, the bin interval, or the time unit interval. If set to `0.5`, the mark size is half of the bandwidth or the time unit interval.\\\\n\\\\nFor other marks, relative position on a band of a stacked, binned, time unit or band scale. If set to `0`, the marks will be positioned at the beginning of the band. If set to `0.5`, the marks will be positioned in the middle of the band.\\\",\\\"maximum\\\":1,\\\"minimum\\\":0,\\\"type\\\":\\\"number\\\"},\\\"bin\\\":{\\\"anyOf\\\":[{\\\"type\\\":\\\"boolean\\\"},{\\\"$ref\\\":\\\"#/definitions/BinParams\\\"},{\\\"const\\\":\\\"binned\\\",\\\"type\\\":\\\"string\\\"},{\\\"type\\\":\\\"null\\\"}],\\\"description\\\":\\\"A flag for binning a `quantitative` field, [an object defining binning parameters](https://vega.github.io/vega-lite/docs/bin.html#params), or indicating that the data for `x` or `y` channel are binned before they are imported into Vega-Lite (`\\\\\\\"binned\\\\\\\"`).\\\\n\\\\n- If `true`, default [binning parameters](https://vega.github.io/vega-lite/docs/bin.html) will be applied.\\\\n\\\\n- If `\\\\\\\"binned\\\\\\\"`, this indicates that the data for the `x` (or `y`) channel are already binned. You can map the bin-start field to `x` (or `y`) and the bin-end field to `x2` (or `y2`). The scale and axis will be formatted similar to binning in Vega-Lite.  To adjust the axis ticks based on the bin step, you can also set the axis's [`tickMinStep`](https://vega.github.io/vega-lite/docs/axis.html#ticks) property.\\\\n\\\\n__Default value:__ `false`\\\\n\\\\n__See also:__ [`bin`](https://vega.github.io/vega-lite/docs/bin.html) documentation.\\\"},\\\"field\\\":{\\\"$ref\\\":\\\"#/definitions/Field\\\",\\\"description\\\":\\\"__Required.__ A string defining the name of the field from which to pull a data value or an object defining iterated values from the [`repeat`](https://vega.github.io/vega-lite/docs/repeat.html) operator.\\\\n\\\\n__See also:__ [`field`](https://vega.github.io/vega-lite/docs/field.html) documentation.\\\\n\\\\n__Notes:__ 1)  Dots (`.`) and brackets (`[` and `]`) can be used to access nested objects (e.g., `\\\\\\\"field\\\\\\\": \\\\\\\"foo.bar\\\\\\\"` and `\\\\\\\"field\\\\\\\": \\\\\\\"foo['bar']\\\\\\\"`). If field names contain dots or brackets but are not nested, you can use `\\\\\\\\\\\\\\\\` to escape dots and brackets (e.g., `\\\\\\\"a\\\\\\\\\\\\\\\\.b\\\\\\\"` and `\\\\\\\"a\\\\\\\\\\\\\\\\[0\\\\\\\\\\\\\\\\]\\\\\\\"`). See more details about escaping in the [field documentation](https://vega.github.io/vega-lite/docs/field.html). 2) `field` is not required if `aggregate` is `count`.\\\"},\\\"format\\\":{\\\"anyOf\\\":[{\\\"type\\\":\\\"string\\\"},{\\\"$ref\\\":\\\"#/definitions/Dict<unknown>\\\"}],\\\"description\\\":\\\"When used with the default `\\\\\\\"number\\\\\\\"` and `\\\\\\\"time\\\\\\\"` format type, the text formatting pattern for labels of guides (axes, legends, headers) and text marks.\\\\n\\\\n- If the format type is `\\\\\\\"number\\\\\\\"` (e.g., for quantitative fields), this is D3's [number format pattern](https://github.com/d3/d3-format#locale_format). - If the format type is `\\\\\\\"time\\\\\\\"` (e.g., for temporal fields), this is D3's [time format pattern](https://github.com/d3/d3-time-format#locale_format).\\\\n\\\\nSee the [format documentation](https://vega.github.io/vega-lite/docs/format.html) for more examples.\\\\n\\\\nWhen used with a [custom `formatType`](https://vega.github.io/vega-lite/docs/config.html#custom-format-type), this value will be passed as `format` alongside `datum.value` to the registered function.\\\\n\\\\n__Default value:__  Derived from [numberFormat](https://vega.github.io/vega-lite/docs/config.html#format) config for number format and from [timeFormat](https://vega.github.io/vega-lite/docs/config.html#format) config for time format.\\\"},\\\"formatType\\\":{\\\"description\\\":\\\"The format type for labels. One of `\\\\\\\"number\\\\\\\"`, `\\\\\\\"time\\\\\\\"`, or a [registered custom format type](https://vega.github.io/vega-lite/docs/config.html#custom-format-type).\\\\n\\\\n__Default value:__ - `\\\\\\\"time\\\\\\\"` for temporal fields and ordinal and nominal fields with `timeUnit`. - `\\\\\\\"number\\\\\\\"` for quantitative fields as well as ordinal and nominal fields without `timeUnit`.\\\",\\\"type\\\":\\\"string\\\"},\\\"labelExpr\\\":{\\\"description\\\":\\\"[Vega expression](https://vega.github.io/vega/docs/expressions/) for customizing labels text.\\\\n\\\\n__Note:__ The label text and value can be assessed via the `label` and `value` properties of the axis's backing `datum` object.\\\",\\\"type\\\":\\\"string\\\"},\\\"selection\\\":{\\\"$ref\\\":\\\"#/definitions/SelectionComposition\\\",\\\"description\\\":\\\"A [selection name](https://vega.github.io/vega-lite/docs/selection.html), or a series of [composed selections](https://vega.github.io/vega-lite/docs/selection.html#compose).\\\"},\\\"timeUnit\\\":{\\\"anyOf\\\":[{\\\"$ref\\\":\\\"#/definitions/TimeUnit\\\"},{\\\"$ref\\\":\\\"#/definitions/TimeUnitParams\\\"}],\\\"description\\\":\\\"Time unit (e.g., `year`, `yearmonth`, `month`, `hours`) for a temporal field. or [a temporal field that gets casted as ordinal](https://vega.github.io/vega-lite/docs/type.html#cast).\\\\n\\\\n__Default value:__ `undefined` (None)\\\\n\\\\n__See also:__ [`timeUnit`](https://vega.github.io/vega-lite/docs/timeunit.html) documentation.\\\"},\\\"title\\\":{\\\"anyOf\\\":[{\\\"$ref\\\":\\\"#/definitions/Text\\\"},{\\\"type\\\":\\\"null\\\"}],\\\"description\\\":\\\"A title for the field. If `null`, the title will be removed.\\\\n\\\\n__Default value:__  derived from the field's name and transformation function (`aggregate`, `bin` and `timeUnit`). If the field has an aggregate function, the function is displayed as part of the title (e.g., `\\\\\\\"Sum of Profit\\\\\\\"`). If the field is binned or has a time unit applied, the applied function is shown in parentheses (e.g., `\\\\\\\"Profit (binned)\\\\\\\"`, `\\\\\\\"Transaction Date (year-month)\\\\\\\"`). Otherwise, the title is simply the field name.\\\\n\\\\n__Notes__:\\\\n\\\\n1) You can customize the default field title format by providing the [`fieldTitle`](https://vega.github.io/vega-lite/docs/config.html#top-level-config) property in the [config](https://vega.github.io/vega-lite/docs/config.html) or [`fieldTitle` function via the `compile` function's options](https://vega.github.io/vega-lite/docs/compile.html#field-title).\\\\n\\\\n2) If both field definition's `title` and axis, header, or legend `title` are defined, axis/header/legend title will be used.\\\"},\\\"type\\\":{\\\"$ref\\\":\\\"#/definitions/StandardType\\\",\\\"description\\\":\\\"The type of measurement (`\\\\\\\"quantitative\\\\\\\"`, `\\\\\\\"temporal\\\\\\\"`, `\\\\\\\"ordinal\\\\\\\"`, or `\\\\\\\"nominal\\\\\\\"`) for the encoded field or constant value (`datum`). It can also be a `\\\\\\\"geojson\\\\\\\"` type for encoding ['geoshape'](https://vega.github.io/vega-lite/docs/geoshape.html).\\\\n\\\\nVega-Lite automatically infers data types in many cases as discussed below. However, type is required for a field if: (1) the field is not nominal and the field encoding has no specified `aggregate` (except `argmin` and `argmax`), `bin`, scale type, custom `sort` order, nor `timeUnit` or (2) if you wish to use an ordinal scale for a field with `bin` or `timeUnit`.\\\\n\\\\n__Default value:__\\\\n\\\\n1) For a data `field`, `\\\\\\\"nominal\\\\\\\"` is the default data type unless the field encoding has `aggregate`, `channel`, `bin`, scale type, `sort`, or `timeUnit` that satisfies the following criteria: - `\\\\\\\"quantitative\\\\\\\"` is the default type if (1) the encoded field contains `bin` or `aggregate` except `\\\\\\\"argmin\\\\\\\"` and `\\\\\\\"argmax\\\\\\\"`, (2) the encoding channel is `latitude` or `longitude` channel or (3) if the specified scale type is [a quantitative scale](https://vega.github.io/vega-lite/docs/scale.html#type). - `\\\\\\\"temporal\\\\\\\"` is the default type if (1) the encoded field contains `timeUnit` or (2) the specified scale type is a time or utc scale - `ordinal\\\\\\\"\\\\\\\"` is the default type if (1) the encoded field contains a [custom `sort` order](https://vega.github.io/vega-lite/docs/sort.html#specifying-custom-sort-order), (2) the specified scale type is an ordinal/point/band scale, or (3) the encoding channel is `order`.\\\\n\\\\n2) For a constant value in data domain (`datum`): - `\\\\\\\"quantitative\\\\\\\"` if the datum is a number - `\\\\\\\"nominal\\\\\\\"` if the datum is a string - `\\\\\\\"temporal\\\\\\\"` if the datum is [a date time object](https://vega.github.io/vega-lite/docs/datetime.html)\\\\n\\\\n__Note:__ - Data `type` describes the semantics of the data rather than the primitive data types (number, string, etc.). The same primitive data type can have different types of measurement. For example, numeric data can represent quantitative, ordinal, or nominal data. - Data values for a temporal field can be either a date-time string (e.g., `\\\\\\\"2015-03-07 12:32:17\\\\\\\"`, `\\\\\\\"17:01\\\\\\\"`, `\\\\\\\"2015-03-16\\\\\\\"`. `\\\\\\\"2015\\\\\\\"`) or a timestamp number (e.g., `1552199579097`). - When using with [`bin`](https://vega.github.io/vega-lite/docs/bin.html), the `type` property can be either `\\\\\\\"quantitative\\\\\\\"` (for using a linear bin scale) or [`\\\\\\\"ordinal\\\\\\\"` (for using an ordinal bin scale)](https://vega.github.io/vega-lite/docs/type.html#cast-bin). - When using with [`timeUnit`](https://vega.github.io/vega-lite/docs/timeunit.html), the `type` property can be either `\\\\\\\"temporal\\\\\\\"` (default, for using a temporal scale) or [`\\\\\\\"ordinal\\\\\\\"` (for using an ordinal scale)](https://vega.github.io/vega-lite/docs/type.html#cast-bin). - When using with [`aggregate`](https://vega.github.io/vega-lite/docs/aggregate.html), the `type` property refers to the post-aggregation data type. For example, we can calculate count `distinct` of a categorical field `\\\\\\\"cat\\\\\\\"` using `{\\\\\\\"aggregate\\\\\\\": \\\\\\\"distinct\\\\\\\", \\\\\\\"field\\\\\\\": \\\\\\\"cat\\\\\\\"}`. The `\\\\\\\"type\\\\\\\"` of the aggregate output is `\\\\\\\"quantitative\\\\\\\"`. - Secondary channels (e.g., `x2`, `y2`, `xError`, `yError`) do not have `type` as they must have exactly the same type as their primary channels (e.g., `x`, `y`).\\\\n\\\\n__See also:__ [`type`](https://vega.github.io/vega-lite/docs/type.html) documentation.\\\"}},\\\"required\\\":[\\\"selection\\\"],\\\"type\\\":\\\"object\\\"},\\\"ConditionalSelection<ValueDef<(Gradient|string|null|ExprRef)>>\\\":{\\\"additionalProperties\\\":false,\\\"properties\\\":{\\\"selection\\\":{\\\"$ref\\\":\\\"#/definitions/SelectionComposition\\\",\\\"description\\\":\\\"A [selection name](https://vega.github.io/vega-lite/docs/selection.html), or a series of [composed selections](https://vega.github.io/vega-lite/docs/selection.html#compose).\\\"},\\\"value\\\":{\\\"anyOf\\\":[{\\\"$ref\\\":\\\"#/definitions/Gradient\\\"},{\\\"type\\\":\\\"string\\\"},{\\\"type\\\":\\\"null\\\"},{\\\"$ref\\\":\\\"#/definitions/ExprRef\\\"}],\\\"description\\\":\\\"A constant value in visual domain (e.g., `\\\\\\\"red\\\\\\\"` / `\\\\\\\"#0099ff\\\\\\\"` / [gradient definition](https://vega.github.io/vega-lite/docs/types.html#gradient) for color, values between `0` to `1` for opacity).\\\"}},\\\"required\\\":[\\\"selection\\\",\\\"value\\\"],\\\"type\\\":\\\"object\\\"},\\\"ConditionalSelection<ValueDef<(Text|ExprRef)>>\\\":{\\\"additionalProperties\\\":false,\\\"properties\\\":{\\\"selection\\\":{\\\"$ref\\\":\\\"#/definitions/SelectionComposition\\\",\\\"description\\\":\\\"A [selection name](https://vega.github.io/vega-lite/docs/selection.html), or a series of [composed selections](https://vega.github.io/vega-lite/docs/selection.html#compose).\\\"},\\\"value\\\":{\\\"anyOf\\\":[{\\\"$ref\\\":\\\"#/definitions/Text\\\"},{\\\"$ref\\\":\\\"#/definitions/ExprRef\\\"}],\\\"description\\\":\\\"A constant value in visual domain (e.g., `\\\\\\\"red\\\\\\\"` / `\\\\\\\"#0099ff\\\\\\\"` / [gradient definition](https://vega.github.io/vega-lite/docs/types.html#gradient) for color, values between `0` to `1` for opacity).\\\"}},\\\"required\\\":[\\\"selection\\\",\\\"value\\\"],\\\"type\\\":\\\"object\\\"},\\\"ConditionalSelection<ValueDef<(number[]|ExprRef)>>\\\":{\\\"additionalProperties\\\":false,\\\"properties\\\":{\\\"selection\\\":{\\\"$ref\\\":\\\"#/definitions/SelectionComposition\\\",\\\"description\\\":\\\"A [selection name](https://vega.github.io/vega-lite/docs/selection.html), or a series of [composed selections](https://vega.github.io/vega-lite/docs/selection.html#compose).\\\"},\\\"value\\\":{\\\"anyOf\\\":[{\\\"items\\\":{\\\"type\\\":\\\"number\\\"},\\\"type\\\":\\\"array\\\"},{\\\"$ref\\\":\\\"#/definitions/ExprRef\\\"}],\\\"description\\\":\\\"A constant value in visual domain (e.g., `\\\\\\\"red\\\\\\\"` / `\\\\\\\"#0099ff\\\\\\\"` / [gradient definition](https://vega.github.io/vega-lite/docs/types.html#gradient) for color, values between `0` to `1` for opacity).\\\"}},\\\"required\\\":[\\\"selection\\\",\\\"value\\\"],\\\"type\\\":\\\"object\\\"},\\\"ConditionalSelection<ValueDef<(number|ExprRef)>>\\\":{\\\"additionalProperties\\\":false,\\\"properties\\\":{\\\"selection\\\":{\\\"$ref\\\":\\\"#/definitions/SelectionComposition\\\",\\\"description\\\":\\\"A [selection name](https://vega.github.io/vega-lite/docs/selection.html), or a series of [composed selections](https://vega.github.io/vega-lite/docs/selection.html#compose).\\\"},\\\"value\\\":{\\\"anyOf\\\":[{\\\"type\\\":\\\"number\\\"},{\\\"$ref\\\":\\\"#/definitions/ExprRef\\\"}],\\\"description\\\":\\\"A constant value in visual domain (e.g., `\\\\\\\"red\\\\\\\"` / `\\\\\\\"#0099ff\\\\\\\"` / [gradient definition](https://vega.github.io/vega-lite/docs/types.html#gradient) for color, values between `0` to `1` for opacity).\\\"}},\\\"required\\\":[\\\"selection\\\",\\\"value\\\"],\\\"type\\\":\\\"object\\\"},\\\"ConditionalSelection<ValueDef<(string|ExprRef)>>\\\":{\\\"additionalProperties\\\":false,\\\"properties\\\":{\\\"selection\\\":{\\\"$ref\\\":\\\"#/definitions/SelectionComposition\\\",\\\"description\\\":\\\"A [selection name](https://vega.github.io/vega-lite/docs/selection.html), or a series of [composed selections](https://vega.github.io/vega-lite/docs/selection.html#compose).\\\"},\\\"value\\\":{\\\"anyOf\\\":[{\\\"type\\\":\\\"string\\\"},{\\\"$ref\\\":\\\"#/definitions/ExprRef\\\"}],\\\"description\\\":\\\"A constant value in visual domain (e.g., `\\\\\\\"red\\\\\\\"` / `\\\\\\\"#0099ff\\\\\\\"` / [gradient definition](https://vega.github.io/vega-lite/docs/types.html#gradient) for color, values between `0` to `1` for opacity).\\\"}},\\\"required\\\":[\\\"selection\\\",\\\"value\\\"],\\\"type\\\":\\\"object\\\"},\\\"ConditionalSelection<ValueDef<(string|null|ExprRef)>>\\\":{\\\"additionalProperties\\\":false,\\\"properties\\\":{\\\"selection\\\":{\\\"$ref\\\":\\\"#/definitions/SelectionComposition\\\",\\\"description\\\":\\\"A [selection name](https://vega.github.io/vega-lite/docs/selection.html), or a series of [composed selections](https://vega.github.io/vega-lite/docs/selection.html#compose).\\\"},\\\"value\\\":{\\\"anyOf\\\":[{\\\"type\\\":\\\"string\\\"},{\\\"type\\\":\\\"null\\\"},{\\\"$ref\\\":\\\"#/definitions/ExprRef\\\"}],\\\"description\\\":\\\"A constant value in visual domain (e.g., `\\\\\\\"red\\\\\\\"` / `\\\\\\\"#0099ff\\\\\\\"` / [gradient definition](https://vega.github.io/vega-lite/docs/types.html#gradient) for color, values between `0` to `1` for opacity).\\\"}},\\\"required\\\":[\\\"selection\\\",\\\"value\\\"],\\\"type\\\":\\\"object\\\"},\\\"ConditionalSelection<ValueDef<number>>\\\":{\\\"additionalProperties\\\":false,\\\"properties\\\":{\\\"selection\\\":{\\\"$ref\\\":\\\"#/definitions/SelectionComposition\\\",\\\"description\\\":\\\"A [selection name](https://vega.github.io/vega-lite/docs/selection.html), or a series of [composed selections](https://vega.github.io/vega-lite/docs/selection.html#compose).\\\"},\\\"value\\\":{\\\"description\\\":\\\"A constant value in visual domain (e.g., `\\\\\\\"red\\\\\\\"` / `\\\\\\\"#0099ff\\\\\\\"` / [gradient definition](https://vega.github.io/vega-lite/docs/types.html#gradient) for color, values between `0` to `1` for opacity).\\\",\\\"type\\\":\\\"number\\\"}},\\\"required\\\":[\\\"selection\\\",\\\"value\\\"],\\\"type\\\":\\\"object\\\"},\\\"Config\\\":{\\\"additionalProperties\\\":false,\\\"properties\\\":{\\\"arc\\\":{\\\"$ref\\\":\\\"#/definitions/RectConfig\\\",\\\"description\\\":\\\"Arc-specific Config\\\"},\\\"area\\\":{\\\"$ref\\\":\\\"#/definitions/AreaConfig\\\",\\\"description\\\":\\\"Area-Specific Config\\\"},\\\"aria\\\":{\\\"description\\\":\\\"A boolean flag indicating if ARIA default attributes should be included for marks and guides (SVG output only). If false, the `\\\\\\\"aria-hidden\\\\\\\"` attribute will be set for all guides, removing them from the ARIA accessibility tree and Vega-Lite will not generate default descriptions for marks.\\\\n\\\\n__Default value:__ `true`.\\\",\\\"type\\\":\\\"boolean\\\"},\\\"autosize\\\":{\\\"anyOf\\\":[{\\\"$ref\\\":\\\"#/definitions/AutosizeType\\\"},{\\\"$ref\\\":\\\"#/definitions/AutoSizeParams\\\"}],\\\"description\\\":\\\"How the visualization size should be determined. If a string, should be one of `\\\\\\\"pad\\\\\\\"`, `\\\\\\\"fit\\\\\\\"` or `\\\\\\\"none\\\\\\\"`. Object values can additionally specify parameters for content sizing and automatic resizing.\\\\n\\\\n__Default value__: `pad`\\\"},\\\"axis\\\":{\\\"$ref\\\":\\\"#/definitions/AxisConfig\\\",\\\"description\\\":\\\"Axis configuration, which determines default properties for all `x` and `y` [axes](https://vega.github.io/vega-lite/docs/axis.html). For a full list of axis configuration options, please see the [corresponding section of the axis documentation](https://vega.github.io/vega-lite/docs/axis.html#config).\\\"},\\\"axisBand\\\":{\\\"$ref\\\":\\\"#/definitions/AxisConfig\\\",\\\"description\\\":\\\"Config for axes with \\\\\\\"band\\\\\\\" scales.\\\"},\\\"axisBottom\\\":{\\\"$ref\\\":\\\"#/definitions/AxisConfig\\\",\\\"description\\\":\\\"Config for x-axis along the bottom edge of the chart.\\\"},\\\"axisDiscrete\\\":{\\\"$ref\\\":\\\"#/definitions/AxisConfig\\\",\\\"description\\\":\\\"Config for axes with \\\\\\\"point\\\\\\\" or \\\\\\\"band\\\\\\\" scales.\\\"},\\\"axisLeft\\\":{\\\"$ref\\\":\\\"#/definitions/AxisConfig\\\",\\\"description\\\":\\\"Config for y-axis along the left edge of the chart.\\\"},\\\"axisPoint\\\":{\\\"$ref\\\":\\\"#/definitions/AxisConfig\\\",\\\"description\\\":\\\"Config for axes with \\\\\\\"point\\\\\\\" scales.\\\"},\\\"axisQuantitative\\\":{\\\"$ref\\\":\\\"#/definitions/AxisConfig\\\",\\\"description\\\":\\\"Config for quantitative axes.\\\"},\\\"axisRight\\\":{\\\"$ref\\\":\\\"#/definitions/AxisConfig\\\",\\\"description\\\":\\\"Config for y-axis along the right edge of the chart.\\\"},\\\"axisTemporal\\\":{\\\"$ref\\\":\\\"#/definitions/AxisConfig\\\",\\\"description\\\":\\\"Config for temporal axes.\\\"},\\\"axisTop\\\":{\\\"$ref\\\":\\\"#/definitions/AxisConfig\\\",\\\"description\\\":\\\"Config for x-axis along the top edge of the chart.\\\"},\\\"axisX\\\":{\\\"$ref\\\":\\\"#/definitions/AxisConfig\\\",\\\"description\\\":\\\"X-axis specific config.\\\"},\\\"axisXBand\\\":{\\\"$ref\\\":\\\"#/definitions/AxisConfig\\\",\\\"description\\\":\\\"Config for x-axes with \\\\\\\"band\\\\\\\" scales.\\\"},\\\"axisXDiscrete\\\":{\\\"$ref\\\":\\\"#/definitions/AxisConfig\\\",\\\"description\\\":\\\"Config for x-axes with \\\\\\\"point\\\\\\\" or \\\\\\\"band\\\\\\\" scales.\\\"},\\\"axisXPoint\\\":{\\\"$ref\\\":\\\"#/definitions/AxisConfig\\\",\\\"description\\\":\\\"Config for x-axes with \\\\\\\"point\\\\\\\" scales.\\\"},\\\"axisXQuantitative\\\":{\\\"$ref\\\":\\\"#/definitions/AxisConfig\\\",\\\"description\\\":\\\"Config for x-quantitative axes.\\\"},\\\"axisXTemporal\\\":{\\\"$ref\\\":\\\"#/definitions/AxisConfig\\\",\\\"description\\\":\\\"Config for x-temporal axes.\\\"},\\\"axisY\\\":{\\\"$ref\\\":\\\"#/definitions/AxisConfig\\\",\\\"description\\\":\\\"Y-axis specific config.\\\"},\\\"axisYBand\\\":{\\\"$ref\\\":\\\"#/definitions/AxisConfig\\\",\\\"description\\\":\\\"Config for y-axes with \\\\\\\"band\\\\\\\" scales.\\\"},\\\"axisYDiscrete\\\":{\\\"$ref\\\":\\\"#/definitions/AxisConfig\\\",\\\"description\\\":\\\"Config for y-axes with \\\\\\\"point\\\\\\\" or \\\\\\\"band\\\\\\\" scales.\\\"},\\\"axisYPoint\\\":{\\\"$ref\\\":\\\"#/definitions/AxisConfig\\\",\\\"description\\\":\\\"Config for y-axes with \\\\\\\"point\\\\\\\" scales.\\\"},\\\"axisYQuantitative\\\":{\\\"$ref\\\":\\\"#/definitions/AxisConfig\\\",\\\"description\\\":\\\"Config for y-quantitative axes.\\\"},\\\"axisYTemporal\\\":{\\\"$ref\\\":\\\"#/definitions/AxisConfig\\\",\\\"description\\\":\\\"Config for y-temporal axes.\\\"},\\\"background\\\":{\\\"anyOf\\\":[{\\\"$ref\\\":\\\"#/definitions/Color\\\"},{\\\"$ref\\\":\\\"#/definitions/ExprRef\\\"}],\\\"description\\\":\\\"CSS color property to use as the background of the entire view.\\\\n\\\\n__Default value:__ `\\\\\\\"white\\\\\\\"`\\\"},\\\"bar\\\":{\\\"$ref\\\":\\\"#/definitions/BarConfig\\\",\\\"description\\\":\\\"Bar-Specific Config\\\"},\\\"boxplot\\\":{\\\"$ref\\\":\\\"#/definitions/BoxPlotConfig\\\",\\\"description\\\":\\\"Box Config\\\"},\\\"circle\\\":{\\\"$ref\\\":\\\"#/definitions/MarkConfig\\\",\\\"description\\\":\\\"Circle-Specific Config\\\"},\\\"concat\\\":{\\\"$ref\\\":\\\"#/definitions/CompositionConfig\\\",\\\"description\\\":\\\"Default configuration for all concatenation and repeat view composition operators (`concat`, `hconcat`, `vconcat`, and `repeat`)\\\"},\\\"countTitle\\\":{\\\"description\\\":\\\"Default axis and legend title for count fields.\\\\n\\\\n__Default value:__ `'Count of Records`.\\\",\\\"type\\\":\\\"string\\\"},\\\"customFormatTypes\\\":{\\\"description\\\":\\\"Allow the `formatType` property for text marks and guides to accept a custom formatter function [registered as a Vega expression](https://vega.github.io/vega-lite/usage/compile.html#format-type).\\\",\\\"type\\\":\\\"boolean\\\"},\\\"errorband\\\":{\\\"$ref\\\":\\\"#/definitions/ErrorBandConfig\\\",\\\"description\\\":\\\"ErrorBand Config\\\"},\\\"errorbar\\\":{\\\"$ref\\\":\\\"#/definitions/ErrorBarConfig\\\",\\\"description\\\":\\\"ErrorBar Config\\\"},\\\"facet\\\":{\\\"$ref\\\":\\\"#/definitions/CompositionConfig\\\",\\\"description\\\":\\\"Default configuration for the `facet` view composition operator\\\"},\\\"fieldTitle\\\":{\\\"description\\\":\\\"Defines how Vega-Lite generates title for fields. There are three possible styles: - `\\\\\\\"verbal\\\\\\\"` (Default) - displays function in a verbal style (e.g., \\\\\\\"Sum of field\\\\\\\", \\\\\\\"Year-month of date\\\\\\\", \\\\\\\"field (binned)\\\\\\\"). - `\\\\\\\"function\\\\\\\"` - displays function using parentheses and capitalized texts (e.g., \\\\\\\"SUM(field)\\\\\\\", \\\\\\\"YEARMONTH(date)\\\\\\\", \\\\\\\"BIN(field)\\\\\\\"). - `\\\\\\\"plain\\\\\\\"` - displays only the field name without functions (e.g., \\\\\\\"field\\\\\\\", \\\\\\\"date\\\\\\\", \\\\\\\"field\\\\\\\").\\\",\\\"enum\\\":[\\\"verbal\\\",\\\"functional\\\",\\\"plain\\\"],\\\"type\\\":\\\"string\\\"},\\\"font\\\":{\\\"description\\\":\\\"Default font for all text marks, titles, and labels.\\\",\\\"type\\\":\\\"string\\\"},\\\"geoshape\\\":{\\\"$ref\\\":\\\"#/definitions/MarkConfig\\\",\\\"description\\\":\\\"Geoshape-Specific Config\\\"},\\\"header\\\":{\\\"$ref\\\":\\\"#/definitions/HeaderConfig\\\",\\\"description\\\":\\\"Header configuration, which determines default properties for all [headers](https://vega.github.io/vega-lite/docs/header.html).\\\\n\\\\nFor a full list of header configuration options, please see the [corresponding section of in the header documentation](https://vega.github.io/vega-lite/docs/header.html#config).\\\"},\\\"headerColumn\\\":{\\\"$ref\\\":\\\"#/definitions/HeaderConfig\\\",\\\"description\\\":\\\"Header configuration, which determines default properties for column [headers](https://vega.github.io/vega-lite/docs/header.html).\\\\n\\\\nFor a full list of header configuration options, please see the [corresponding section of in the header documentation](https://vega.github.io/vega-lite/docs/header.html#config).\\\"},\\\"headerFacet\\\":{\\\"$ref\\\":\\\"#/definitions/HeaderConfig\\\",\\\"description\\\":\\\"Header configuration, which determines default properties for non-row/column facet [headers](https://vega.github.io/vega-lite/docs/header.html).\\\\n\\\\nFor a full list of header configuration options, please see the [corresponding section of in the header documentation](https://vega.github.io/vega-lite/docs/header.html#config).\\\"},\\\"headerRow\\\":{\\\"$ref\\\":\\\"#/definitions/HeaderConfig\\\",\\\"description\\\":\\\"Header configuration, which determines default properties for row [headers](https://vega.github.io/vega-lite/docs/header.html).\\\\n\\\\nFor a full list of header configuration options, please see the [corresponding section of in the header documentation](https://vega.github.io/vega-lite/docs/header.html#config).\\\"},\\\"image\\\":{\\\"$ref\\\":\\\"#/definitions/RectConfig\\\",\\\"description\\\":\\\"Image-specific Config\\\"},\\\"legend\\\":{\\\"$ref\\\":\\\"#/definitions/LegendConfig\\\",\\\"description\\\":\\\"Legend configuration, which determines default properties for all [legends](https://vega.github.io/vega-lite/docs/legend.html). For a full list of legend configuration options, please see the [corresponding section of in the legend documentation](https://vega.github.io/vega-lite/docs/legend.html#config).\\\"},\\\"line\\\":{\\\"$ref\\\":\\\"#/definitions/LineConfig\\\",\\\"description\\\":\\\"Line-Specific Config\\\"},\\\"lineBreak\\\":{\\\"anyOf\\\":[{\\\"type\\\":\\\"string\\\"},{\\\"$ref\\\":\\\"#/definitions/ExprRef\\\"}],\\\"description\\\":\\\"A delimiter, such as a newline character, upon which to break text strings into multiple lines. This property provides a global default for text marks, which is overridden by mark or style config settings, and by the lineBreak mark encoding channel. If signal-valued, either string or regular expression (regexp) values are valid.\\\"},\\\"mark\\\":{\\\"$ref\\\":\\\"#/definitions/MarkConfig\\\",\\\"description\\\":\\\"Mark Config\\\"},\\\"numberFormat\\\":{\\\"description\\\":\\\"D3 Number format for guide labels and text marks. For example `\\\\\\\"s\\\\\\\"` for SI units. Use [D3's number format pattern](https://github.com/d3/d3-format#locale_format).\\\",\\\"type\\\":\\\"string\\\"},\\\"padding\\\":{\\\"anyOf\\\":[{\\\"$ref\\\":\\\"#/definitions/Padding\\\"},{\\\"$ref\\\":\\\"#/definitions/ExprRef\\\"}],\\\"description\\\":\\\"The default visualization padding, in pixels, from the edge of the visualization canvas to the data rectangle. If a number, specifies padding for all sides. If an object, the value should have the format `{\\\\\\\"left\\\\\\\": 5, \\\\\\\"top\\\\\\\": 5, \\\\\\\"right\\\\\\\": 5, \\\\\\\"bottom\\\\\\\": 5}` to specify padding for each side of the visualization.\\\\n\\\\n__Default value__: `5`\\\"},\\\"params\\\":{\\\"description\\\":\\\"Dynamic variables that parameterize a visualization.\\\",\\\"items\\\":{\\\"$ref\\\":\\\"#/definitions/Parameter\\\"},\\\"type\\\":\\\"array\\\"},\\\"point\\\":{\\\"$ref\\\":\\\"#/definitions/MarkConfig\\\",\\\"description\\\":\\\"Point-Specific Config\\\"},\\\"projection\\\":{\\\"$ref\\\":\\\"#/definitions/ProjectionConfig\\\",\\\"description\\\":\\\"Projection configuration, which determines default properties for all [projections](https://vega.github.io/vega-lite/docs/projection.html). For a full list of projection configuration options, please see the [corresponding section of the projection documentation](https://vega.github.io/vega-lite/docs/projection.html#config).\\\"},\\\"range\\\":{\\\"$ref\\\":\\\"#/definitions/RangeConfig\\\",\\\"description\\\":\\\"An object hash that defines default range arrays or schemes for using with scales. For a full list of scale range configuration options, please see the [corresponding section of the scale documentation](https://vega.github.io/vega-lite/docs/scale.html#config).\\\"},\\\"rect\\\":{\\\"$ref\\\":\\\"#/definitions/RectConfig\\\",\\\"description\\\":\\\"Rect-Specific Config\\\"},\\\"rule\\\":{\\\"$ref\\\":\\\"#/definitions/MarkConfig\\\",\\\"description\\\":\\\"Rule-Specific Config\\\"},\\\"scale\\\":{\\\"$ref\\\":\\\"#/definitions/ScaleConfig\\\",\\\"description\\\":\\\"Scale configuration determines default properties for all [scales](https://vega.github.io/vega-lite/docs/scale.html). For a full list of scale configuration options, please see the [corresponding section of the scale documentation](https://vega.github.io/vega-lite/docs/scale.html#config).\\\"},\\\"selection\\\":{\\\"$ref\\\":\\\"#/definitions/SelectionConfig\\\",\\\"description\\\":\\\"An object hash for defining default properties for each type of selections.\\\"},\\\"square\\\":{\\\"$ref\\\":\\\"#/definitions/MarkConfig\\\",\\\"description\\\":\\\"Square-Specific Config\\\"},\\\"style\\\":{\\\"$ref\\\":\\\"#/definitions/StyleConfigIndex\\\",\\\"description\\\":\\\"An object hash that defines key-value mappings to determine default properties for marks with a given [style](https://vega.github.io/vega-lite/docs/mark.html#mark-def). The keys represent styles names; the values have to be valid [mark configuration objects](https://vega.github.io/vega-lite/docs/mark.html#config).\\\"},\\\"text\\\":{\\\"$ref\\\":\\\"#/definitions/MarkConfig\\\",\\\"description\\\":\\\"Text-Specific Config\\\"},\\\"tick\\\":{\\\"$ref\\\":\\\"#/definitions/TickConfig\\\",\\\"description\\\":\\\"Tick-Specific Config\\\"},\\\"timeFormat\\\":{\\\"description\\\":\\\"Default time format for raw time values (without time units) in text marks, legend labels and header labels.\\\\n\\\\n__Default value:__ `\\\\\\\"%b %d, %Y\\\\\\\"` __Note:__ Axes automatically determine the format for each label automatically so this config does not affect axes.\\\",\\\"type\\\":\\\"string\\\"},\\\"title\\\":{\\\"$ref\\\":\\\"#/definitions/TitleConfig\\\",\\\"description\\\":\\\"Title configuration, which determines default properties for all [titles](https://vega.github.io/vega-lite/docs/title.html). For a full list of title configuration options, please see the [corresponding section of the title documentation](https://vega.github.io/vega-lite/docs/title.html#config).\\\"},\\\"trail\\\":{\\\"$ref\\\":\\\"#/definitions/LineConfig\\\",\\\"description\\\":\\\"Trail-Specific Config\\\"},\\\"view\\\":{\\\"$ref\\\":\\\"#/definitions/ViewConfig\\\",\\\"description\\\":\\\"Default properties for [single view plots](https://vega.github.io/vega-lite/docs/spec.html#single).\\\"}},\\\"type\\\":\\\"object\\\"},\\\"CsvDataFormat\\\":{\\\"additionalProperties\\\":false,\\\"properties\\\":{\\\"parse\\\":{\\\"anyOf\\\":[{\\\"$ref\\\":\\\"#/definitions/Parse\\\"},{\\\"type\\\":\\\"null\\\"}],\\\"description\\\":\\\"If set to `null`, disable type inference based on the spec and only use type inference based on the data. Alternatively, a parsing directive object can be provided for explicit data types. Each property of the object corresponds to a field name, and the value to the desired data type (one of `\\\\\\\"number\\\\\\\"`, `\\\\\\\"boolean\\\\\\\"`, `\\\\\\\"date\\\\\\\"`, or null (do not parse the field)). For example, `\\\\\\\"parse\\\\\\\": {\\\\\\\"modified_on\\\\\\\": \\\\\\\"date\\\\\\\"}` parses the `modified_on` field in each input record a Date value.\\\\n\\\\nFor `\\\\\\\"date\\\\\\\"`, we parse data based using Javascript's [`Date.parse()`](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Date/parse). For Specific date formats can be provided (e.g., `{foo: \\\\\\\"date:'%m%d%Y'\\\\\\\"}`), using the [d3-time-format syntax](https://github.com/d3/d3-time-format#locale_format). UTC date format parsing is supported similarly (e.g., `{foo: \\\\\\\"utc:'%m%d%Y'\\\\\\\"}`). See more about [UTC time](https://vega.github.io/vega-lite/docs/timeunit.html#utc)\\\"},\\\"type\\\":{\\\"description\\\":\\\"Type of input data: `\\\\\\\"json\\\\\\\"`, `\\\\\\\"csv\\\\\\\"`, `\\\\\\\"tsv\\\\\\\"`, `\\\\\\\"dsv\\\\\\\"`.\\\\n\\\\n__Default value:__  The default format type is determined by the extension of the file URL. If no extension is detected, `\\\\\\\"json\\\\\\\"` will be used by default.\\\",\\\"enum\\\":[\\\"csv\\\",\\\"tsv\\\"],\\\"type\\\":\\\"string\\\"}},\\\"type\\\":\\\"object\\\"},\\\"Cursor\\\":{\\\"enum\\\":[\\\"auto\\\",\\\"default\\\",\\\"none\\\",\\\"context-menu\\\",\\\"help\\\",\\\"pointer\\\",\\\"progress\\\",\\\"wait\\\",\\\"cell\\\",\\\"crosshair\\\",\\\"text\\\",\\\"vertical-text\\\",\\\"alias\\\",\\\"copy\\\",\\\"move\\\",\\\"no-drop\\\",\\\"not-allowed\\\",\\\"e-resize\\\",\\\"n-resize\\\",\\\"ne-resize\\\",\\\"nw-resize\\\",\\\"s-resize\\\",\\\"se-resize\\\",\\\"sw-resize\\\",\\\"w-resize\\\",\\\"ew-resize\\\",\\\"ns-resize\\\",\\\"nesw-resize\\\",\\\"nwse-resize\\\",\\\"col-resize\\\",\\\"row-resize\\\",\\\"all-scroll\\\",\\\"zoom-in\\\",\\\"zoom-out\\\",\\\"grab\\\",\\\"grabbing\\\"],\\\"type\\\":\\\"string\\\"},\\\"Cyclical\\\":{\\\"enum\\\":[\\\"rainbow\\\",\\\"sinebow\\\"],\\\"type\\\":\\\"string\\\"},\\\"Data\\\":{\\\"anyOf\\\":[{\\\"$ref\\\":\\\"#/definitions/DataSource\\\"},{\\\"$ref\\\":\\\"#/definitions/Generator\\\"}]},\\\"DataFormat\\\":{\\\"anyOf\\\":[{\\\"$ref\\\":\\\"#/definitions/CsvDataFormat\\\"},{\\\"$ref\\\":\\\"#/definitions/DsvDataFormat\\\"},{\\\"$ref\\\":\\\"#/definitions/JsonDataFormat\\\"},{\\\"$ref\\\":\\\"#/definitions/TopoDataFormat\\\"}]},\\\"DataSource\\\":{\\\"anyOf\\\":[{\\\"$ref\\\":\\\"#/definitions/UrlData\\\"},{\\\"$ref\\\":\\\"#/definitions/InlineData\\\"},{\\\"$ref\\\":\\\"#/definitions/NamedData\\\"}]},\\\"Datasets\\\":{\\\"$ref\\\":\\\"#/definitions/Dict<InlineDataset>\\\"},\\\"DateTime\\\":{\\\"additionalProperties\\\":false,\\\"description\\\":\\\"Object for defining datetime in Vega-Lite Filter. If both month and quarter are provided, month has higher precedence. `day` cannot be combined with other date. We accept string for month and day names.\\\",\\\"properties\\\":{\\\"date\\\":{\\\"description\\\":\\\"Integer value representing the date (day of the month) from 1-31.\\\",\\\"maximum\\\":31,\\\"minimum\\\":1,\\\"type\\\":\\\"number\\\"},\\\"day\\\":{\\\"anyOf\\\":[{\\\"$ref\\\":\\\"#/definitions/Day\\\"},{\\\"type\\\":\\\"string\\\"}],\\\"description\\\":\\\"Value representing the day of a week. This can be one of: (1) integer value -- `1` represents Monday; (2) case-insensitive day name (e.g., `\\\\\\\"Monday\\\\\\\"`); (3) case-insensitive, 3-character short day name (e.g., `\\\\\\\"Mon\\\\\\\"`).\\\\n\\\\n**Warning:** A DateTime definition object with `day`** should not be combined with `year`, `quarter`, `month`, or `date`.\\\"},\\\"hours\\\":{\\\"description\\\":\\\"Integer value representing the hour of a day from 0-23.\\\",\\\"maximum\\\":24,\\\"minimum\\\":0,\\\"type\\\":\\\"number\\\"},\\\"milliseconds\\\":{\\\"description\\\":\\\"Integer value representing the millisecond segment of time.\\\",\\\"maximum\\\":1000,\\\"minimum\\\":0,\\\"type\\\":\\\"number\\\"},\\\"minutes\\\":{\\\"description\\\":\\\"Integer value representing the minute segment of time from 0-59.\\\",\\\"maximum\\\":60,\\\"minimum\\\":0,\\\"type\\\":\\\"number\\\"},\\\"month\\\":{\\\"anyOf\\\":[{\\\"$ref\\\":\\\"#/definitions/Month\\\"},{\\\"type\\\":\\\"string\\\"}],\\\"description\\\":\\\"One of: (1) integer value representing the month from `1`-`12`. `1` represents January; (2) case-insensitive month name (e.g., `\\\\\\\"January\\\\\\\"`); (3) case-insensitive, 3-character short month name (e.g., `\\\\\\\"Jan\\\\\\\"`).\\\"},\\\"quarter\\\":{\\\"description\\\":\\\"Integer value representing the quarter of the year (from 1-4).\\\",\\\"maximum\\\":4,\\\"minimum\\\":1,\\\"type\\\":\\\"number\\\"},\\\"seconds\\\":{\\\"description\\\":\\\"Integer value representing the second segment (0-59) of a time value\\\",\\\"maximum\\\":60,\\\"minimum\\\":0,\\\"type\\\":\\\"number\\\"},\\\"utc\\\":{\\\"description\\\":\\\"A boolean flag indicating if date time is in utc time. If false, the date time is in local time\\\",\\\"type\\\":\\\"boolean\\\"},\\\"year\\\":{\\\"description\\\":\\\"Integer value representing the year.\\\",\\\"type\\\":\\\"number\\\"}},\\\"type\\\":\\\"object\\\"},\\\"DatumDef\\\":{\\\"additionalProperties\\\":false,\\\"properties\\\":{\\\"band\\\":{\\\"description\\\":\\\"For rect-based marks (`rect`, `bar`, and `image`), mark size relative to bandwidth of [band scales](https://vega.github.io/vega-lite/docs/scale.html#band), bins or time units. If set to `1`, the mark size is set to the bandwidth, the bin interval, or the time unit interval. If set to `0.5`, the mark size is half of the bandwidth or the time unit interval.\\\\n\\\\nFor other marks, relative position on a band of a stacked, binned, time unit or band scale. If set to `0`, the marks will be positioned at the beginning of the band. If set to `0.5`, the marks will be positioned in the middle of the band.\\\",\\\"maximum\\\":1,\\\"minimum\\\":0,\\\"type\\\":\\\"number\\\"},\\\"datum\\\":{\\\"anyOf\\\":[{\\\"$ref\\\":\\\"#/definitions/PrimitiveValue\\\"},{\\\"$ref\\\":\\\"#/definitions/DateTime\\\"},{\\\"$ref\\\":\\\"#/definitions/ExprRef\\\"},{\\\"$ref\\\":\\\"#/definitions/RepeatRef\\\"}],\\\"description\\\":\\\"A constant value in data domain.\\\"},\\\"type\\\":{\\\"$ref\\\":\\\"#/definitions/Type\\\",\\\"description\\\":\\\"The type of measurement (`\\\\\\\"quantitative\\\\\\\"`, `\\\\\\\"temporal\\\\\\\"`, `\\\\\\\"ordinal\\\\\\\"`, or `\\\\\\\"nominal\\\\\\\"`) for the encoded field or constant value (`datum`). It can also be a `\\\\\\\"geojson\\\\\\\"` type for encoding ['geoshape'](https://vega.github.io/vega-lite/docs/geoshape.html).\\\\n\\\\nVega-Lite automatically infers data types in many cases as discussed below. However, type is required for a field if: (1) the field is not nominal and the field encoding has no specified `aggregate` (except `argmin` and `argmax`), `bin`, scale type, custom `sort` order, nor `timeUnit` or (2) if you wish to use an ordinal scale for a field with `bin` or `timeUnit`.\\\\n\\\\n__Default value:__\\\\n\\\\n1) For a data `field`, `\\\\\\\"nominal\\\\\\\"` is the default data type unless the field encoding has `aggregate`, `channel`, `bin`, scale type, `sort`, or `timeUnit` that satisfies the following criteria: - `\\\\\\\"quantitative\\\\\\\"` is the default type if (1) the encoded field contains `bin` or `aggregate` except `\\\\\\\"argmin\\\\\\\"` and `\\\\\\\"argmax\\\\\\\"`, (2) the encoding channel is `latitude` or `longitude` channel or (3) if the specified scale type is [a quantitative scale](https://vega.github.io/vega-lite/docs/scale.html#type). - `\\\\\\\"temporal\\\\\\\"` is the default type if (1) the encoded field contains `timeUnit` or (2) the specified scale type is a time or utc scale - `ordinal\\\\\\\"\\\\\\\"` is the default type if (1) the encoded field contains a [custom `sort` order](https://vega.github.io/vega-lite/docs/sort.html#specifying-custom-sort-order), (2) the specified scale type is an ordinal/point/band scale, or (3) the encoding channel is `order`.\\\\n\\\\n2) For a constant value in data domain (`datum`): - `\\\\\\\"quantitative\\\\\\\"` if the datum is a number - `\\\\\\\"nominal\\\\\\\"` if the datum is a string - `\\\\\\\"temporal\\\\\\\"` if the datum is [a date time object](https://vega.github.io/vega-lite/docs/datetime.html)\\\\n\\\\n__Note:__ - Data `type` describes the semantics of the data rather than the primitive data types (number, string, etc.). The same primitive data type can have different types of measurement. For example, numeric data can represent quantitative, ordinal, or nominal data. - Data values for a temporal field can be either a date-time string (e.g., `\\\\\\\"2015-03-07 12:32:17\\\\\\\"`, `\\\\\\\"17:01\\\\\\\"`, `\\\\\\\"2015-03-16\\\\\\\"`. `\\\\\\\"2015\\\\\\\"`) or a timestamp number (e.g., `1552199579097`). - When using with [`bin`](https://vega.github.io/vega-lite/docs/bin.html), the `type` property can be either `\\\\\\\"quantitative\\\\\\\"` (for using a linear bin scale) or [`\\\\\\\"ordinal\\\\\\\"` (for using an ordinal bin scale)](https://vega.github.io/vega-lite/docs/type.html#cast-bin). - When using with [`timeUnit`](https://vega.github.io/vega-lite/docs/timeunit.html), the `type` property can be either `\\\\\\\"temporal\\\\\\\"` (default, for using a temporal scale) or [`\\\\\\\"ordinal\\\\\\\"` (for using an ordinal scale)](https://vega.github.io/vega-lite/docs/type.html#cast-bin). - When using with [`aggregate`](https://vega.github.io/vega-lite/docs/aggregate.html), the `type` property refers to the post-aggregation data type. For example, we can calculate count `distinct` of a categorical field `\\\\\\\"cat\\\\\\\"` using `{\\\\\\\"aggregate\\\\\\\": \\\\\\\"distinct\\\\\\\", \\\\\\\"field\\\\\\\": \\\\\\\"cat\\\\\\\"}`. The `\\\\\\\"type\\\\\\\"` of the aggregate output is `\\\\\\\"quantitative\\\\\\\"`. - Secondary channels (e.g., `x2`, `y2`, `xError`, `yError`) do not have `type` as they must have exactly the same type as their primary channels (e.g., `x`, `y`).\\\\n\\\\n__See also:__ [`type`](https://vega.github.io/vega-lite/docs/type.html) documentation.\\\"}},\\\"type\\\":\\\"object\\\"},\\\"Day\\\":{\\\"maximum\\\":7,\\\"minimum\\\":1,\\\"type\\\":\\\"number\\\"},\\\"DensityTransform\\\":{\\\"additionalProperties\\\":false,\\\"properties\\\":{\\\"as\\\":{\\\"description\\\":\\\"The output fields for the sample value and corresponding density estimate.\\\\n\\\\n__Default value:__ `[\\\\\\\"value\\\\\\\", \\\\\\\"density\\\\\\\"]`\\\",\\\"items\\\":[{\\\"$ref\\\":\\\"#/definitions/FieldName\\\"},{\\\"$ref\\\":\\\"#/definitions/FieldName\\\"}],\\\"maxItems\\\":2,\\\"minItems\\\":2,\\\"type\\\":\\\"array\\\"},\\\"bandwidth\\\":{\\\"description\\\":\\\"The bandwidth (standard deviation) of the Gaussian kernel. If unspecified or set to zero, the bandwidth value is automatically estimated from the input data using Scott’s rule.\\\",\\\"type\\\":\\\"number\\\"},\\\"counts\\\":{\\\"description\\\":\\\"A boolean flag indicating if the output values should be probability estimates (false) or smoothed counts (true).\\\\n\\\\n__Default value:__ `false`\\\",\\\"type\\\":\\\"boolean\\\"},\\\"cumulative\\\":{\\\"description\\\":\\\"A boolean flag indicating whether to produce density estimates (false) or cumulative density estimates (true).\\\\n\\\\n__Default value:__ `false`\\\",\\\"type\\\":\\\"boolean\\\"},\\\"density\\\":{\\\"$ref\\\":\\\"#/definitions/FieldName\\\",\\\"description\\\":\\\"The data field for which to perform density estimation.\\\"},\\\"extent\\\":{\\\"description\\\":\\\"A [min, max] domain from which to sample the distribution. If unspecified, the extent will be determined by the observed minimum and maximum values of the density value field.\\\",\\\"items\\\":[{\\\"type\\\":\\\"number\\\"},{\\\"type\\\":\\\"number\\\"}],\\\"maxItems\\\":2,\\\"minItems\\\":2,\\\"type\\\":\\\"array\\\"},\\\"groupby\\\":{\\\"description\\\":\\\"The data fields to group by. If not specified, a single group containing all data objects will be used.\\\",\\\"items\\\":{\\\"$ref\\\":\\\"#/definitions/FieldName\\\"},\\\"type\\\":\\\"array\\\"},\\\"maxsteps\\\":{\\\"description\\\":\\\"The maximum number of samples to take along the extent domain for plotting the density.\\\\n\\\\n__Default value:__ `200`\\\",\\\"type\\\":\\\"number\\\"},\\\"minsteps\\\":{\\\"description\\\":\\\"The minimum number of samples to take along the extent domain for plotting the density.\\\\n\\\\n__Default value:__ `25`\\\",\\\"type\\\":\\\"number\\\"},\\\"steps\\\":{\\\"description\\\":\\\"The exact number of samples to take along the extent domain for plotting the density. If specified, overrides both minsteps and maxsteps to set an exact number of uniform samples. Potentially useful in conjunction with a fixed extent to ensure consistent sample points for stacked densities.\\\",\\\"type\\\":\\\"number\\\"}},\\\"required\\\":[\\\"density\\\"],\\\"type\\\":\\\"object\\\"},\\\"DerivedStream\\\":{\\\"additionalProperties\\\":false,\\\"properties\\\":{\\\"between\\\":{\\\"items\\\":{\\\"$ref\\\":\\\"#/definitions/Stream\\\"},\\\"type\\\":\\\"array\\\"},\\\"consume\\\":{\\\"type\\\":\\\"boolean\\\"},\\\"debounce\\\":{\\\"type\\\":\\\"number\\\"},\\\"filter\\\":{\\\"anyOf\\\":[{\\\"$ref\\\":\\\"#/definitions/Expr\\\"},{\\\"items\\\":{\\\"$ref\\\":\\\"#/definitions/Expr\\\"},\\\"type\\\":\\\"array\\\"}]},\\\"markname\\\":{\\\"type\\\":\\\"string\\\"},\\\"marktype\\\":{\\\"$ref\\\":\\\"#/definitions/MarkType\\\"},\\\"stream\\\":{\\\"$ref\\\":\\\"#/definitions/Stream\\\"},\\\"throttle\\\":{\\\"type\\\":\\\"number\\\"}},\\\"required\\\":[\\\"stream\\\"],\\\"type\\\":\\\"object\\\"},\\\"Dict<InlineDataset>\\\":{\\\"additionalProperties\\\":{\\\"$ref\\\":\\\"#/definitions/InlineDataset\\\"},\\\"type\\\":\\\"object\\\"},\\\"Dict<SelectionInit>\\\":{\\\"additionalProperties\\\":{\\\"$ref\\\":\\\"#/definitions/SelectionInit\\\"},\\\"type\\\":\\\"object\\\"},\\\"Dict<SelectionInitInterval>\\\":{\\\"additionalProperties\\\":{\\\"$ref\\\":\\\"#/definitions/SelectionInitInterval\\\"},\\\"type\\\":\\\"object\\\"},\\\"Dict<unknown>\\\":{\\\"additionalProperties\\\":{},\\\"type\\\":\\\"object\\\"},\\\"Diverging\\\":{\\\"enum\\\":[\\\"blueorange\\\",\\\"blueorange-3\\\",\\\"blueorange-4\\\",\\\"blueorange-5\\\",\\\"blueorange-6\\\",\\\"blueorange-7\\\",\\\"blueorange-8\\\",\\\"blueorange-9\\\",\\\"blueorange-10\\\",\\\"blueorange-11\\\",\\\"brownbluegreen\\\",\\\"brownbluegreen-3\\\",\\\"brownbluegreen-4\\\",\\\"brownbluegreen-5\\\",\\\"brownbluegreen-6\\\",\\\"brownbluegreen-7\\\",\\\"brownbluegreen-8\\\",\\\"brownbluegreen-9\\\",\\\"brownbluegreen-10\\\",\\\"brownbluegreen-11\\\",\\\"purplegreen\\\",\\\"purplegreen-3\\\",\\\"purplegreen-4\\\",\\\"purplegreen-5\\\",\\\"purplegreen-6\\\",\\\"purplegreen-7\\\",\\\"purplegreen-8\\\",\\\"purplegreen-9\\\",\\\"purplegreen-10\\\",\\\"purplegreen-11\\\",\\\"pinkyellowgreen\\\",\\\"pinkyellowgreen-3\\\",\\\"pinkyellowgreen-4\\\",\\\"pinkyellowgreen-5\\\",\\\"pinkyellowgreen-6\\\",\\\"pinkyellowgreen-7\\\",\\\"pinkyellowgreen-8\\\",\\\"pinkyellowgreen-9\\\",\\\"pinkyellowgreen-10\\\",\\\"pinkyellowgreen-11\\\",\\\"purpleorange\\\",\\\"purpleorange-3\\\",\\\"purpleorange-4\\\",\\\"purpleorange-5\\\",\\\"purpleorange-6\\\",\\\"purpleorange-7\\\",\\\"purpleorange-8\\\",\\\"purpleorange-9\\\",\\\"purpleorange-10\\\",\\\"purpleorange-11\\\",\\\"redblue\\\",\\\"redblue-3\\\",\\\"redblue-4\\\",\\\"redblue-5\\\",\\\"redblue-6\\\",\\\"redblue-7\\\",\\\"redblue-8\\\",\\\"redblue-9\\\",\\\"redblue-10\\\",\\\"redblue-11\\\",\\\"redgrey\\\",\\\"redgrey-3\\\",\\\"redgrey-4\\\",\\\"redgrey-5\\\",\\\"redgrey-6\\\",\\\"redgrey-7\\\",\\\"redgrey-8\\\",\\\"redgrey-9\\\",\\\"redgrey-10\\\",\\\"redgrey-11\\\",\\\"redyellowblue\\\",\\\"redyellowblue-3\\\",\\\"redyellowblue-4\\\",\\\"redyellowblue-5\\\",\\\"redyellowblue-6\\\",\\\"redyellowblue-7\\\",\\\"redyellowblue-8\\\",\\\"redyellowblue-9\\\",\\\"redyellowblue-10\\\",\\\"redyellowblue-11\\\",\\\"redyellowgreen\\\",\\\"redyellowgreen-3\\\",\\\"redyellowgreen-4\\\",\\\"redyellowgreen-5\\\",\\\"redyellowgreen-6\\\",\\\"redyellowgreen-7\\\",\\\"redyellowgreen-8\\\",\\\"redyellowgreen-9\\\",\\\"redyellowgreen-10\\\",\\\"redyellowgreen-11\\\",\\\"spectral\\\",\\\"spectral-3\\\",\\\"spectral-4\\\",\\\"spectral-5\\\",\\\"spectral-6\\\",\\\"spectral-7\\\",\\\"spectral-8\\\",\\\"spectral-9\\\",\\\"spectral-10\\\",\\\"spectral-11\\\"],\\\"type\\\":\\\"string\\\"},\\\"DomainUnionWith\\\":{\\\"additionalProperties\\\":false,\\\"properties\\\":{\\\"unionWith\\\":{\\\"anyOf\\\":[{\\\"items\\\":{\\\"type\\\":\\\"number\\\"},\\\"type\\\":\\\"array\\\"},{\\\"items\\\":{\\\"type\\\":\\\"string\\\"},\\\"type\\\":\\\"array\\\"},{\\\"items\\\":{\\\"type\\\":\\\"boolean\\\"},\\\"type\\\":\\\"array\\\"},{\\\"items\\\":{\\\"$ref\\\":\\\"#/definitions/DateTime\\\"},\\\"type\\\":\\\"array\\\"}],\\\"description\\\":\\\"Customized domain values to be union with the field's values.\\\\n\\\\n1) `domain` for _quantitative_ fields can take one of the following forms:\\\\n\\\\n- a two-element array with minimum and maximum values. - an array with more than two entries, for [Piecewise  quantitative scales](https://vega.github.io/vega-lite/docs/scale.html#piecewise). (Alternatively, the `domainMid` property can be set for a diverging scale.) - a string value `\\\\\\\"unaggregated\\\\\\\"`, if the input field is aggregated, to indicate that the domain should include the raw data values prior to the aggregation.\\\\n\\\\n2) `domain` for _temporal_ fields can be a two-element array minimum and maximum values, in the form of either timestamps or the [DateTime definition objects](https://vega.github.io/vega-lite/docs/types.html#datetime).\\\\n\\\\n3) `domain` for _ordinal_ and _nominal_ fields can be an array that lists valid input values.\\\"}},\\\"required\\\":[\\\"unionWith\\\"],\\\"type\\\":\\\"object\\\"},\\\"DsvDataFormat\\\":{\\\"additionalProperties\\\":false,\\\"properties\\\":{\\\"delimiter\\\":{\\\"description\\\":\\\"The delimiter between records. The delimiter must be a single character (i.e., a single 16-bit code unit); so, ASCII delimiters are fine, but emoji delimiters are not.\\\",\\\"maxLength\\\":1,\\\"minLength\\\":1,\\\"type\\\":\\\"string\\\"},\\\"parse\\\":{\\\"anyOf\\\":[{\\\"$ref\\\":\\\"#/definitions/Parse\\\"},{\\\"type\\\":\\\"null\\\"}],\\\"description\\\":\\\"If set to `null`, disable type inference based on the spec and only use type inference based on the data. Alternatively, a parsing directive object can be provided for explicit data types. Each property of the object corresponds to a field name, and the value to the desired data type (one of `\\\\\\\"number\\\\\\\"`, `\\\\\\\"boolean\\\\\\\"`, `\\\\\\\"date\\\\\\\"`, or null (do not parse the field)). For example, `\\\\\\\"parse\\\\\\\": {\\\\\\\"modified_on\\\\\\\": \\\\\\\"date\\\\\\\"}` parses the `modified_on` field in each input record a Date value.\\\\n\\\\nFor `\\\\\\\"date\\\\\\\"`, we parse data based using Javascript's [`Date.parse()`](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Date/parse). For Specific date formats can be provided (e.g., `{foo: \\\\\\\"date:'%m%d%Y'\\\\\\\"}`), using the [d3-time-format syntax](https://github.com/d3/d3-time-format#locale_format). UTC date format parsing is supported similarly (e.g., `{foo: \\\\\\\"utc:'%m%d%Y'\\\\\\\"}`). See more about [UTC time](https://vega.github.io/vega-lite/docs/timeunit.html#utc)\\\"},\\\"type\\\":{\\\"const\\\":\\\"dsv\\\",\\\"description\\\":\\\"Type of input data: `\\\\\\\"json\\\\\\\"`, `\\\\\\\"csv\\\\\\\"`, `\\\\\\\"tsv\\\\\\\"`, `\\\\\\\"dsv\\\\\\\"`.\\\\n\\\\n__Default value:__  The default format type is determined by the extension of the file URL. If no extension is detected, `\\\\\\\"json\\\\\\\"` will be used by default.\\\",\\\"type\\\":\\\"string\\\"}},\\\"required\\\":[\\\"delimiter\\\"],\\\"type\\\":\\\"object\\\"},\\\"Element\\\":{\\\"type\\\":\\\"string\\\"},\\\"EncodingSortField\\\":{\\\"additionalProperties\\\":false,\\\"description\\\":\\\"A sort definition for sorting a discrete scale in an encoding field definition.\\\",\\\"properties\\\":{\\\"field\\\":{\\\"$ref\\\":\\\"#/definitions/Field\\\",\\\"description\\\":\\\"The data [field](https://vega.github.io/vega-lite/docs/field.html) to sort by.\\\\n\\\\n__Default value:__ If unspecified, defaults to the field specified in the outer data reference.\\\"},\\\"op\\\":{\\\"$ref\\\":\\\"#/definitions/NonArgAggregateOp\\\",\\\"description\\\":\\\"An [aggregate operation](https://vega.github.io/vega-lite/docs/aggregate.html#ops) to perform on the field prior to sorting (e.g., `\\\\\\\"count\\\\\\\"`, `\\\\\\\"mean\\\\\\\"` and `\\\\\\\"median\\\\\\\"`). An aggregation is required when there are multiple values of the sort field for each encoded data field. The input data objects will be aggregated, grouped by the encoded data field.\\\\n\\\\nFor a full list of operations, please see the documentation for [aggregate](https://vega.github.io/vega-lite/docs/aggregate.html#ops).\\\\n\\\\n__Default value:__ `\\\\\\\"sum\\\\\\\"` for stacked plots. Otherwise, `\\\\\\\"min\\\\\\\"`.\\\"},\\\"order\\\":{\\\"anyOf\\\":[{\\\"$ref\\\":\\\"#/definitions/SortOrder\\\"},{\\\"type\\\":\\\"null\\\"}],\\\"description\\\":\\\"The sort order. One of `\\\\\\\"ascending\\\\\\\"` (default), `\\\\\\\"descending\\\\\\\"`, or `null` (no not sort).\\\"}},\\\"type\\\":\\\"object\\\"},\\\"EncodingSortField<FieldName>\\\":{\\\"additionalProperties\\\":false,\\\"description\\\":\\\"A sort definition for sorting a discrete scale in an encoding field definition.\\\",\\\"properties\\\":{\\\"field\\\":{\\\"$ref\\\":\\\"#/definitions/FieldName\\\",\\\"description\\\":\\\"The data [field](https://vega.github.io/vega-lite/docs/field.html) to sort by.\\\\n\\\\n__Default value:__ If unspecified, defaults to the field specified in the outer data reference.\\\"},\\\"op\\\":{\\\"$ref\\\":\\\"#/definitions/NonArgAggregateOp\\\",\\\"description\\\":\\\"An [aggregate operation](https://vega.github.io/vega-lite/docs/aggregate.html#ops) to perform on the field prior to sorting (e.g., `\\\\\\\"count\\\\\\\"`, `\\\\\\\"mean\\\\\\\"` and `\\\\\\\"median\\\\\\\"`). An aggregation is required when there are multiple values of the sort field for each encoded data field. The input data objects will be aggregated, grouped by the encoded data field.\\\\n\\\\nFor a full list of operations, please see the documentation for [aggregate](https://vega.github.io/vega-lite/docs/aggregate.html#ops).\\\\n\\\\n__Default value:__ `\\\\\\\"sum\\\\\\\"` for stacked plots. Otherwise, `\\\\\\\"min\\\\\\\"`.\\\"},\\\"order\\\":{\\\"anyOf\\\":[{\\\"$ref\\\":\\\"#/definitions/SortOrder\\\"},{\\\"type\\\":\\\"null\\\"}],\\\"description\\\":\\\"The sort order. One of `\\\\\\\"ascending\\\\\\\"` (default), `\\\\\\\"descending\\\\\\\"`, or `null` (no not sort).\\\"}},\\\"type\\\":\\\"object\\\"},\\\"ErrorBand\\\":{\\\"const\\\":\\\"errorband\\\",\\\"type\\\":\\\"string\\\"},\\\"ErrorBandConfig\\\":{\\\"additionalProperties\\\":false,\\\"properties\\\":{\\\"band\\\":{\\\"anyOf\\\":[{\\\"type\\\":\\\"boolean\\\"},{\\\"$ref\\\":\\\"#/definitions/MarkConfig<ExprOrSignalRef>\\\"}]},\\\"borders\\\":{\\\"anyOf\\\":[{\\\"type\\\":\\\"boolean\\\"},{\\\"$ref\\\":\\\"#/definitions/MarkConfig<ExprOrSignalRef>\\\"}]},\\\"extent\\\":{\\\"$ref\\\":\\\"#/definitions/ErrorBarExtent\\\",\\\"description\\\":\\\"The extent of the band. Available options include: - `\\\\\\\"ci\\\\\\\"`: Extend the band to the confidence interval of the mean. - `\\\\\\\"stderr\\\\\\\"`: The size of band are set to the value of standard error, extending from the mean. - `\\\\\\\"stdev\\\\\\\"`: The size of band are set to the value of standard deviation, extending from the mean. - `\\\\\\\"iqr\\\\\\\"`: Extend the band to the q1 and q3.\\\\n\\\\n__Default value:__ `\\\\\\\"stderr\\\\\\\"`.\\\"},\\\"interpolate\\\":{\\\"$ref\\\":\\\"#/definitions/Interpolate\\\",\\\"description\\\":\\\"The line interpolation method for the error band. One of the following: - `\\\\\\\"linear\\\\\\\"`: piecewise linear segments, as in a polyline. - `\\\\\\\"linear-closed\\\\\\\"`: close the linear segments to form a polygon. - `\\\\\\\"step\\\\\\\"`: a piecewise constant function (a step function) consisting of alternating horizontal and vertical lines. The y-value changes at the midpoint of each pair of adjacent x-values. - `\\\\\\\"step-before\\\\\\\"`: a piecewise constant function (a step function) consisting of alternating horizontal and vertical lines. The y-value changes before the x-value. - `\\\\\\\"step-after\\\\\\\"`: a piecewise constant function (a step function) consisting of alternating horizontal and vertical lines. The y-value changes after the x-value. - `\\\\\\\"basis\\\\\\\"`: a B-spline, with control point duplication on the ends. - `\\\\\\\"basis-open\\\\\\\"`: an open B-spline; may not intersect the start or end. - `\\\\\\\"basis-closed\\\\\\\"`: a closed B-spline, as in a loop. - `\\\\\\\"cardinal\\\\\\\"`: a Cardinal spline, with control point duplication on the ends. - `\\\\\\\"cardinal-open\\\\\\\"`: an open Cardinal spline; may not intersect the start or end, but will intersect other control points. - `\\\\\\\"cardinal-closed\\\\\\\"`: a closed Cardinal spline, as in a loop. - `\\\\\\\"bundle\\\\\\\"`: equivalent to basis, except the tension parameter is used to straighten the spline. - `\\\\\\\"monotone\\\\\\\"`: cubic interpolation that preserves monotonicity in y.\\\"},\\\"tension\\\":{\\\"description\\\":\\\"The tension parameter for the interpolation type of the error band.\\\",\\\"maximum\\\":1,\\\"minimum\\\":0,\\\"type\\\":\\\"number\\\"}},\\\"type\\\":\\\"object\\\"},\\\"ErrorBandDef\\\":{\\\"additionalProperties\\\":false,\\\"properties\\\":{\\\"band\\\":{\\\"anyOf\\\":[{\\\"type\\\":\\\"boolean\\\"},{\\\"$ref\\\":\\\"#/definitions/MarkConfig<ExprOrSignalRef>\\\"}]},\\\"borders\\\":{\\\"anyOf\\\":[{\\\"type\\\":\\\"boolean\\\"},{\\\"$ref\\\":\\\"#/definitions/MarkConfig<ExprOrSignalRef>\\\"}]},\\\"clip\\\":{\\\"description\\\":\\\"Whether a composite mark be clipped to the enclosing group’s width and height.\\\",\\\"type\\\":\\\"boolean\\\"},\\\"color\\\":{\\\"anyOf\\\":[{\\\"$ref\\\":\\\"#/definitions/Color\\\"},{\\\"$ref\\\":\\\"#/definitions/Gradient\\\"},{\\\"$ref\\\":\\\"#/definitions/ExprRef\\\"}],\\\"description\\\":\\\"Default color.\\\\n\\\\n__Default value:__ <span style=\\\\\\\"color: #4682b4;\\\\\\\">&#9632;</span> `\\\\\\\"#4682b4\\\\\\\"`\\\\n\\\\n__Note:__ - This property cannot be used in a [style config](https://vega.github.io/vega-lite/docs/mark.html#style-config). - The `fill` and `stroke` properties have higher precedence than `color` and will override `color`.\\\"},\\\"extent\\\":{\\\"$ref\\\":\\\"#/definitions/ErrorBarExtent\\\",\\\"description\\\":\\\"The extent of the band. Available options include: - `\\\\\\\"ci\\\\\\\"`: Extend the band to the confidence interval of the mean. - `\\\\\\\"stderr\\\\\\\"`: The size of band are set to the value of standard error, extending from the mean. - `\\\\\\\"stdev\\\\\\\"`: The size of band are set to the value of standard deviation, extending from the mean. - `\\\\\\\"iqr\\\\\\\"`: Extend the band to the q1 and q3.\\\\n\\\\n__Default value:__ `\\\\\\\"stderr\\\\\\\"`.\\\"},\\\"interpolate\\\":{\\\"$ref\\\":\\\"#/definitions/Interpolate\\\",\\\"description\\\":\\\"The line interpolation method for the error band. One of the following: - `\\\\\\\"linear\\\\\\\"`: piecewise linear segments, as in a polyline. - `\\\\\\\"linear-closed\\\\\\\"`: close the linear segments to form a polygon. - `\\\\\\\"step\\\\\\\"`: a piecewise constant function (a step function) consisting of alternating horizontal and vertical lines. The y-value changes at the midpoint of each pair of adjacent x-values. - `\\\\\\\"step-before\\\\\\\"`: a piecewise constant function (a step function) consisting of alternating horizontal and vertical lines. The y-value changes before the x-value. - `\\\\\\\"step-after\\\\\\\"`: a piecewise constant function (a step function) consisting of alternating horizontal and vertical lines. The y-value changes after the x-value. - `\\\\\\\"basis\\\\\\\"`: a B-spline, with control point duplication on the ends. - `\\\\\\\"basis-open\\\\\\\"`: an open B-spline; may not intersect the start or end. - `\\\\\\\"basis-closed\\\\\\\"`: a closed B-spline, as in a loop. - `\\\\\\\"cardinal\\\\\\\"`: a Cardinal spline, with control point duplication on the ends. - `\\\\\\\"cardinal-open\\\\\\\"`: an open Cardinal spline; may not intersect the start or end, but will intersect other control points. - `\\\\\\\"cardinal-closed\\\\\\\"`: a closed Cardinal spline, as in a loop. - `\\\\\\\"bundle\\\\\\\"`: equivalent to basis, except the tension parameter is used to straighten the spline. - `\\\\\\\"monotone\\\\\\\"`: cubic interpolation that preserves monotonicity in y.\\\"},\\\"opacity\\\":{\\\"description\\\":\\\"The opacity (value between [0,1]) of the mark.\\\",\\\"type\\\":\\\"number\\\"},\\\"orient\\\":{\\\"$ref\\\":\\\"#/definitions/Orientation\\\",\\\"description\\\":\\\"Orientation of the error band. This is normally automatically determined, but can be specified when the orientation is ambiguous and cannot be automatically determined.\\\"},\\\"tension\\\":{\\\"description\\\":\\\"The tension parameter for the interpolation type of the error band.\\\",\\\"maximum\\\":1,\\\"minimum\\\":0,\\\"type\\\":\\\"number\\\"},\\\"type\\\":{\\\"$ref\\\":\\\"#/definitions/ErrorBand\\\",\\\"description\\\":\\\"The mark type. This could a primitive mark type (one of `\\\\\\\"bar\\\\\\\"`, `\\\\\\\"circle\\\\\\\"`, `\\\\\\\"square\\\\\\\"`, `\\\\\\\"tick\\\\\\\"`, `\\\\\\\"line\\\\\\\"`, `\\\\\\\"area\\\\\\\"`, `\\\\\\\"point\\\\\\\"`, `\\\\\\\"geoshape\\\\\\\"`, `\\\\\\\"rule\\\\\\\"`, and `\\\\\\\"text\\\\\\\"`) or a composite mark type (`\\\\\\\"boxplot\\\\\\\"`, `\\\\\\\"errorband\\\\\\\"`, `\\\\\\\"errorbar\\\\\\\"`).\\\"}},\\\"required\\\":[\\\"type\\\"],\\\"type\\\":\\\"object\\\"},\\\"ErrorBar\\\":{\\\"const\\\":\\\"errorbar\\\",\\\"type\\\":\\\"string\\\"},\\\"ErrorBarConfig\\\":{\\\"additionalProperties\\\":false,\\\"properties\\\":{\\\"extent\\\":{\\\"$ref\\\":\\\"#/definitions/ErrorBarExtent\\\",\\\"description\\\":\\\"The extent of the rule. Available options include: - `\\\\\\\"ci\\\\\\\"`: Extend the rule to the confidence interval of the mean. - `\\\\\\\"stderr\\\\\\\"`: The size of rule are set to the value of standard error, extending from the mean. - `\\\\\\\"stdev\\\\\\\"`: The size of rule are set to the value of standard deviation, extending from the mean. - `\\\\\\\"iqr\\\\\\\"`: Extend the rule to the q1 and q3.\\\\n\\\\n__Default value:__ `\\\\\\\"stderr\\\\\\\"`.\\\"},\\\"rule\\\":{\\\"anyOf\\\":[{\\\"type\\\":\\\"boolean\\\"},{\\\"$ref\\\":\\\"#/definitions/MarkConfig<ExprOrSignalRef>\\\"}]},\\\"size\\\":{\\\"description\\\":\\\"Size of the ticks of an error bar\\\",\\\"type\\\":\\\"number\\\"},\\\"thickness\\\":{\\\"description\\\":\\\"Thickness of the ticks and the bar of an error bar\\\",\\\"type\\\":\\\"number\\\"},\\\"ticks\\\":{\\\"anyOf\\\":[{\\\"type\\\":\\\"boolean\\\"},{\\\"$ref\\\":\\\"#/definitions/MarkConfig<ExprOrSignalRef>\\\"}]}},\\\"type\\\":\\\"object\\\"},\\\"ErrorBarDef\\\":{\\\"additionalProperties\\\":false,\\\"properties\\\":{\\\"clip\\\":{\\\"description\\\":\\\"Whether a composite mark be clipped to the enclosing group’s width and height.\\\",\\\"type\\\":\\\"boolean\\\"},\\\"color\\\":{\\\"anyOf\\\":[{\\\"$ref\\\":\\\"#/definitions/Color\\\"},{\\\"$ref\\\":\\\"#/definitions/Gradient\\\"},{\\\"$ref\\\":\\\"#/definitions/ExprRef\\\"}],\\\"description\\\":\\\"Default color.\\\\n\\\\n__Default value:__ <span style=\\\\\\\"color: #4682b4;\\\\\\\">&#9632;</span> `\\\\\\\"#4682b4\\\\\\\"`\\\\n\\\\n__Note:__ - This property cannot be used in a [style config](https://vega.github.io/vega-lite/docs/mark.html#style-config). - The `fill` and `stroke` properties have higher precedence than `color` and will override `color`.\\\"},\\\"extent\\\":{\\\"$ref\\\":\\\"#/definitions/ErrorBarExtent\\\",\\\"description\\\":\\\"The extent of the rule. Available options include: - `\\\\\\\"ci\\\\\\\"`: Extend the rule to the confidence interval of the mean. - `\\\\\\\"stderr\\\\\\\"`: The size of rule are set to the value of standard error, extending from the mean. - `\\\\\\\"stdev\\\\\\\"`: The size of rule are set to the value of standard deviation, extending from the mean. - `\\\\\\\"iqr\\\\\\\"`: Extend the rule to the q1 and q3.\\\\n\\\\n__Default value:__ `\\\\\\\"stderr\\\\\\\"`.\\\"},\\\"opacity\\\":{\\\"description\\\":\\\"The opacity (value between [0,1]) of the mark.\\\",\\\"type\\\":\\\"number\\\"},\\\"orient\\\":{\\\"$ref\\\":\\\"#/definitions/Orientation\\\",\\\"description\\\":\\\"Orientation of the error bar. This is normally automatically determined, but can be specified when the orientation is ambiguous and cannot be automatically determined.\\\"},\\\"rule\\\":{\\\"anyOf\\\":[{\\\"type\\\":\\\"boolean\\\"},{\\\"$ref\\\":\\\"#/definitions/MarkConfig<ExprOrSignalRef>\\\"}]},\\\"size\\\":{\\\"description\\\":\\\"Size of the ticks of an error bar\\\",\\\"type\\\":\\\"number\\\"},\\\"thickness\\\":{\\\"description\\\":\\\"Thickness of the ticks and the bar of an error bar\\\",\\\"type\\\":\\\"number\\\"},\\\"ticks\\\":{\\\"anyOf\\\":[{\\\"type\\\":\\\"boolean\\\"},{\\\"$ref\\\":\\\"#/definitions/MarkConfig<ExprOrSignalRef>\\\"}]},\\\"type\\\":{\\\"$ref\\\":\\\"#/definitions/ErrorBar\\\",\\\"description\\\":\\\"The mark type. This could a primitive mark type (one of `\\\\\\\"bar\\\\\\\"`, `\\\\\\\"circle\\\\\\\"`, `\\\\\\\"square\\\\\\\"`, `\\\\\\\"tick\\\\\\\"`, `\\\\\\\"line\\\\\\\"`, `\\\\\\\"area\\\\\\\"`, `\\\\\\\"point\\\\\\\"`, `\\\\\\\"geoshape\\\\\\\"`, `\\\\\\\"rule\\\\\\\"`, and `\\\\\\\"text\\\\\\\"`) or a composite mark type (`\\\\\\\"boxplot\\\\\\\"`, `\\\\\\\"errorband\\\\\\\"`, `\\\\\\\"errorbar\\\\\\\"`).\\\"}},\\\"required\\\":[\\\"type\\\"],\\\"type\\\":\\\"object\\\"},\\\"ErrorBarExtent\\\":{\\\"enum\\\":[\\\"ci\\\",\\\"iqr\\\",\\\"stderr\\\",\\\"stdev\\\"],\\\"type\\\":\\\"string\\\"},\\\"EventStream\\\":{\\\"anyOf\\\":[{\\\"additionalProperties\\\":false,\\\"properties\\\":{\\\"between\\\":{\\\"items\\\":{\\\"$ref\\\":\\\"#/definitions/Stream\\\"},\\\"type\\\":\\\"array\\\"},\\\"consume\\\":{\\\"type\\\":\\\"boolean\\\"},\\\"debounce\\\":{\\\"type\\\":\\\"number\\\"},\\\"filter\\\":{\\\"anyOf\\\":[{\\\"$ref\\\":\\\"#/definitions/Expr\\\"},{\\\"items\\\":{\\\"$ref\\\":\\\"#/definitions/Expr\\\"},\\\"type\\\":\\\"array\\\"}]},\\\"markname\\\":{\\\"type\\\":\\\"string\\\"},\\\"marktype\\\":{\\\"$ref\\\":\\\"#/definitions/MarkType\\\"},\\\"source\\\":{\\\"enum\\\":[\\\"view\\\",\\\"scope\\\"],\\\"type\\\":\\\"string\\\"},\\\"throttle\\\":{\\\"type\\\":\\\"number\\\"},\\\"type\\\":{\\\"$ref\\\":\\\"#/definitions/EventType\\\"}},\\\"required\\\":[\\\"type\\\"],\\\"type\\\":\\\"object\\\"},{\\\"additionalProperties\\\":false,\\\"properties\\\":{\\\"between\\\":{\\\"items\\\":{\\\"$ref\\\":\\\"#/definitions/Stream\\\"},\\\"type\\\":\\\"array\\\"},\\\"consume\\\":{\\\"type\\\":\\\"boolean\\\"},\\\"debounce\\\":{\\\"type\\\":\\\"number\\\"},\\\"filter\\\":{\\\"anyOf\\\":[{\\\"$ref\\\":\\\"#/definitions/Expr\\\"},{\\\"items\\\":{\\\"$ref\\\":\\\"#/definitions/Expr\\\"},\\\"type\\\":\\\"array\\\"}]},\\\"markname\\\":{\\\"type\\\":\\\"string\\\"},\\\"marktype\\\":{\\\"$ref\\\":\\\"#/definitions/MarkType\\\"},\\\"source\\\":{\\\"const\\\":\\\"window\\\",\\\"type\\\":\\\"string\\\"},\\\"throttle\\\":{\\\"type\\\":\\\"number\\\"},\\\"type\\\":{\\\"$ref\\\":\\\"#/definitions/WindowEventType\\\"}},\\\"required\\\":[\\\"source\\\",\\\"type\\\"],\\\"type\\\":\\\"object\\\"}]},\\\"EventType\\\":{\\\"enum\\\":[\\\"click\\\",\\\"dblclick\\\",\\\"dragenter\\\",\\\"dragleave\\\",\\\"dragover\\\",\\\"keydown\\\",\\\"keypress\\\",\\\"keyup\\\",\\\"mousedown\\\",\\\"mousemove\\\",\\\"mouseout\\\",\\\"mouseover\\\",\\\"mouseup\\\",\\\"mousewheel\\\",\\\"timer\\\",\\\"touchend\\\",\\\"touchmove\\\",\\\"touchstart\\\",\\\"wheel\\\"],\\\"type\\\":\\\"string\\\"},\\\"Expr\\\":{\\\"type\\\":\\\"string\\\"},\\\"ExprOrSignalRef\\\":{\\\"$ref\\\":\\\"#/definitions/ExprRef\\\"},\\\"ExprRef\\\":{\\\"additionalProperties\\\":false,\\\"properties\\\":{\\\"expr\\\":{\\\"description\\\":\\\"Vega expression (which can refer to Vega-Lite parameters).\\\",\\\"type\\\":\\\"string\\\"}},\\\"required\\\":[\\\"expr\\\"],\\\"type\\\":\\\"object\\\"},\\\"FacetEncodingFieldDef\\\":{\\\"additionalProperties\\\":false,\\\"properties\\\":{\\\"aggregate\\\":{\\\"$ref\\\":\\\"#/definitions/Aggregate\\\",\\\"description\\\":\\\"Aggregation function for the field (e.g., `\\\\\\\"mean\\\\\\\"`, `\\\\\\\"sum\\\\\\\"`, `\\\\\\\"median\\\\\\\"`, `\\\\\\\"min\\\\\\\"`, `\\\\\\\"max\\\\\\\"`, `\\\\\\\"count\\\\\\\"`).\\\\n\\\\n__Default value:__ `undefined` (None)\\\\n\\\\n__See also:__ [`aggregate`](https://vega.github.io/vega-lite/docs/aggregate.html) documentation.\\\"},\\\"align\\\":{\\\"anyOf\\\":[{\\\"$ref\\\":\\\"#/definitions/LayoutAlign\\\"},{\\\"$ref\\\":\\\"#/definitions/RowCol<LayoutAlign>\\\"}],\\\"description\\\":\\\"The alignment to apply to grid rows and columns. The supported string values are `\\\\\\\"all\\\\\\\"`, `\\\\\\\"each\\\\\\\"`, and `\\\\\\\"none\\\\\\\"`.\\\\n\\\\n- For `\\\\\\\"none\\\\\\\"`, a flow layout will be used, in which adjacent subviews are simply placed one after the other. - For `\\\\\\\"each\\\\\\\"`, subviews will be aligned into a clean grid structure, but each row or column may be of variable size. - For `\\\\\\\"all\\\\\\\"`, subviews will be aligned and each row or column will be sized identically based on the maximum observed size. String values for this property will be applied to both grid rows and columns.\\\\n\\\\nAlternatively, an object value of the form `{\\\\\\\"row\\\\\\\": string, \\\\\\\"column\\\\\\\": string}` can be used to supply different alignments for rows and columns.\\\\n\\\\n__Default value:__ `\\\\\\\"all\\\\\\\"`.\\\"},\\\"band\\\":{\\\"description\\\":\\\"For rect-based marks (`rect`, `bar`, and `image`), mark size relative to bandwidth of [band scales](https://vega.github.io/vega-lite/docs/scale.html#band), bins or time units. If set to `1`, the mark size is set to the bandwidth, the bin interval, or the time unit interval. If set to `0.5`, the mark size is half of the bandwidth or the time unit interval.\\\\n\\\\nFor other marks, relative position on a band of a stacked, binned, time unit or band scale. If set to `0`, the marks will be positioned at the beginning of the band. If set to `0.5`, the marks will be positioned in the middle of the band.\\\",\\\"maximum\\\":1,\\\"minimum\\\":0,\\\"type\\\":\\\"number\\\"},\\\"bin\\\":{\\\"anyOf\\\":[{\\\"type\\\":\\\"boolean\\\"},{\\\"$ref\\\":\\\"#/definitions/BinParams\\\"},{\\\"type\\\":\\\"null\\\"}],\\\"description\\\":\\\"A flag for binning a `quantitative` field, [an object defining binning parameters](https://vega.github.io/vega-lite/docs/bin.html#params), or indicating that the data for `x` or `y` channel are binned before they are imported into Vega-Lite (`\\\\\\\"binned\\\\\\\"`).\\\\n\\\\n- If `true`, default [binning parameters](https://vega.github.io/vega-lite/docs/bin.html) will be applied.\\\\n\\\\n- If `\\\\\\\"binned\\\\\\\"`, this indicates that the data for the `x` (or `y`) channel are already binned. You can map the bin-start field to `x` (or `y`) and the bin-end field to `x2` (or `y2`). The scale and axis will be formatted similar to binning in Vega-Lite.  To adjust the axis ticks based on the bin step, you can also set the axis's [`tickMinStep`](https://vega.github.io/vega-lite/docs/axis.html#ticks) property.\\\\n\\\\n__Default value:__ `false`\\\\n\\\\n__See also:__ [`bin`](https://vega.github.io/vega-lite/docs/bin.html) documentation.\\\"},\\\"bounds\\\":{\\\"description\\\":\\\"The bounds calculation method to use for determining the extent of a sub-plot. One of `full` (the default) or `flush`.\\\\n\\\\n- If set to `full`, the entire calculated bounds (including axes, title, and legend) will be used. - If set to `flush`, only the specified width and height values for the sub-view will be used. The `flush` setting can be useful when attempting to place sub-plots without axes or legends into a uniform grid structure.\\\\n\\\\n__Default value:__ `\\\\\\\"full\\\\\\\"`\\\",\\\"enum\\\":[\\\"full\\\",\\\"flush\\\"],\\\"type\\\":\\\"string\\\"},\\\"center\\\":{\\\"anyOf\\\":[{\\\"type\\\":\\\"boolean\\\"},{\\\"$ref\\\":\\\"#/definitions/RowCol<boolean>\\\"}],\\\"description\\\":\\\"Boolean flag indicating if subviews should be centered relative to their respective rows or columns.\\\\n\\\\nAn object value of the form `{\\\\\\\"row\\\\\\\": boolean, \\\\\\\"column\\\\\\\": boolean}` can be used to supply different centering values for rows and columns.\\\\n\\\\n__Default value:__ `false`\\\"},\\\"columns\\\":{\\\"description\\\":\\\"The number of columns to include in the view composition layout.\\\\n\\\\n__Default value__: `undefined` -- An infinite number of columns (a single row) will be assumed. This is equivalent to `hconcat` (for `concat`) and to using the `column` channel (for `facet` and `repeat`).\\\\n\\\\n__Note__:\\\\n\\\\n1) This property is only for: - the general (wrappable) `concat` operator (not `hconcat`/`vconcat`) - the `facet` and `repeat` operator with one field/repetition definition (without row/column nesting)\\\\n\\\\n2) Setting the `columns` to `1` is equivalent to `vconcat` (for `concat`) and to using the `row` channel (for `facet` and `repeat`).\\\",\\\"type\\\":\\\"number\\\"},\\\"field\\\":{\\\"$ref\\\":\\\"#/definitions/Field\\\",\\\"description\\\":\\\"__Required.__ A string defining the name of the field from which to pull a data value or an object defining iterated values from the [`repeat`](https://vega.github.io/vega-lite/docs/repeat.html) operator.\\\\n\\\\n__See also:__ [`field`](https://vega.github.io/vega-lite/docs/field.html) documentation.\\\\n\\\\n__Notes:__ 1)  Dots (`.`) and brackets (`[` and `]`) can be used to access nested objects (e.g., `\\\\\\\"field\\\\\\\": \\\\\\\"foo.bar\\\\\\\"` and `\\\\\\\"field\\\\\\\": \\\\\\\"foo['bar']\\\\\\\"`). If field names contain dots or brackets but are not nested, you can use `\\\\\\\\\\\\\\\\` to escape dots and brackets (e.g., `\\\\\\\"a\\\\\\\\\\\\\\\\.b\\\\\\\"` and `\\\\\\\"a\\\\\\\\\\\\\\\\[0\\\\\\\\\\\\\\\\]\\\\\\\"`). See more details about escaping in the [field documentation](https://vega.github.io/vega-lite/docs/field.html). 2) `field` is not required if `aggregate` is `count`.\\\"},\\\"header\\\":{\\\"$ref\\\":\\\"#/definitions/Header\\\",\\\"description\\\":\\\"An object defining properties of a facet's header.\\\"},\\\"sort\\\":{\\\"anyOf\\\":[{\\\"$ref\\\":\\\"#/definitions/SortArray\\\"},{\\\"$ref\\\":\\\"#/definitions/SortOrder\\\"},{\\\"$ref\\\":\\\"#/definitions/EncodingSortField\\\"},{\\\"type\\\":\\\"null\\\"}],\\\"description\\\":\\\"Sort order for the encoded field.\\\\n\\\\nFor continuous fields (quantitative or temporal), `sort` can be either `\\\\\\\"ascending\\\\\\\"` or `\\\\\\\"descending\\\\\\\"`.\\\\n\\\\nFor discrete fields, `sort` can be one of the following: - `\\\\\\\"ascending\\\\\\\"` or `\\\\\\\"descending\\\\\\\"` -- for sorting by the values' natural order in JavaScript. - [A sort field definition](https://vega.github.io/vega-lite/docs/sort.html#sort-field) for sorting by another field. - [An array specifying the field values in preferred order](https://vega.github.io/vega-lite/docs/sort.html#sort-array). In this case, the sort order will obey the values in the array, followed by any unspecified values in their original order. For discrete time field, values in the sort array can be [date-time definition objects](types#datetime). In addition, for time units `\\\\\\\"month\\\\\\\"` and `\\\\\\\"day\\\\\\\"`, the values can be the month or day names (case insensitive) or their 3-letter initials (e.g., `\\\\\\\"Mon\\\\\\\"`, `\\\\\\\"Tue\\\\\\\"`). - `null` indicating no sort.\\\\n\\\\n__Default value:__ `\\\\\\\"ascending\\\\\\\"`\\\\n\\\\n__Note:__ `null` is not supported for `row` and `column`.\\\"},\\\"spacing\\\":{\\\"anyOf\\\":[{\\\"type\\\":\\\"number\\\"},{\\\"$ref\\\":\\\"#/definitions/RowCol<number>\\\"}],\\\"description\\\":\\\"The spacing in pixels between sub-views of the composition operator. An object of the form `{\\\\\\\"row\\\\\\\": number, \\\\\\\"column\\\\\\\": number}` can be used to set different spacing values for rows and columns.\\\\n\\\\n__Default value__: Depends on `\\\\\\\"spacing\\\\\\\"` property of [the view composition configuration](https://vega.github.io/vega-lite/docs/config.html#view-config) (`20` by default)\\\"},\\\"timeUnit\\\":{\\\"anyOf\\\":[{\\\"$ref\\\":\\\"#/definitions/TimeUnit\\\"},{\\\"$ref\\\":\\\"#/definitions/TimeUnitParams\\\"}],\\\"description\\\":\\\"Time unit (e.g., `year`, `yearmonth`, `month`, `hours`) for a temporal field. or [a temporal field that gets casted as ordinal](https://vega.github.io/vega-lite/docs/type.html#cast).\\\\n\\\\n__Default value:__ `undefined` (None)\\\\n\\\\n__See also:__ [`timeUnit`](https://vega.github.io/vega-lite/docs/timeunit.html) documentation.\\\"},\\\"title\\\":{\\\"anyOf\\\":[{\\\"$ref\\\":\\\"#/definitions/Text\\\"},{\\\"type\\\":\\\"null\\\"}],\\\"description\\\":\\\"A title for the field. If `null`, the title will be removed.\\\\n\\\\n__Default value:__  derived from the field's name and transformation function (`aggregate`, `bin` and `timeUnit`). If the field has an aggregate function, the function is displayed as part of the title (e.g., `\\\\\\\"Sum of Profit\\\\\\\"`). If the field is binned or has a time unit applied, the applied function is shown in parentheses (e.g., `\\\\\\\"Profit (binned)\\\\\\\"`, `\\\\\\\"Transaction Date (year-month)\\\\\\\"`). Otherwise, the title is simply the field name.\\\\n\\\\n__Notes__:\\\\n\\\\n1) You can customize the default field title format by providing the [`fieldTitle`](https://vega.github.io/vega-lite/docs/config.html#top-level-config) property in the [config](https://vega.github.io/vega-lite/docs/config.html) or [`fieldTitle` function via the `compile` function's options](https://vega.github.io/vega-lite/docs/compile.html#field-title).\\\\n\\\\n2) If both field definition's `title` and axis, header, or legend `title` are defined, axis/header/legend title will be used.\\\"},\\\"type\\\":{\\\"$ref\\\":\\\"#/definitions/StandardType\\\",\\\"description\\\":\\\"The type of measurement (`\\\\\\\"quantitative\\\\\\\"`, `\\\\\\\"temporal\\\\\\\"`, `\\\\\\\"ordinal\\\\\\\"`, or `\\\\\\\"nominal\\\\\\\"`) for the encoded field or constant value (`datum`). It can also be a `\\\\\\\"geojson\\\\\\\"` type for encoding ['geoshape'](https://vega.github.io/vega-lite/docs/geoshape.html).\\\\n\\\\nVega-Lite automatically infers data types in many cases as discussed below. However, type is required for a field if: (1) the field is not nominal and the field encoding has no specified `aggregate` (except `argmin` and `argmax`), `bin`, scale type, custom `sort` order, nor `timeUnit` or (2) if you wish to use an ordinal scale for a field with `bin` or `timeUnit`.\\\\n\\\\n__Default value:__\\\\n\\\\n1) For a data `field`, `\\\\\\\"nominal\\\\\\\"` is the default data type unless the field encoding has `aggregate`, `channel`, `bin`, scale type, `sort`, or `timeUnit` that satisfies the following criteria: - `\\\\\\\"quantitative\\\\\\\"` is the default type if (1) the encoded field contains `bin` or `aggregate` except `\\\\\\\"argmin\\\\\\\"` and `\\\\\\\"argmax\\\\\\\"`, (2) the encoding channel is `latitude` or `longitude` channel or (3) if the specified scale type is [a quantitative scale](https://vega.github.io/vega-lite/docs/scale.html#type). - `\\\\\\\"temporal\\\\\\\"` is the default type if (1) the encoded field contains `timeUnit` or (2) the specified scale type is a time or utc scale - `ordinal\\\\\\\"\\\\\\\"` is the default type if (1) the encoded field contains a [custom `sort` order](https://vega.github.io/vega-lite/docs/sort.html#specifying-custom-sort-order), (2) the specified scale type is an ordinal/point/band scale, or (3) the encoding channel is `order`.\\\\n\\\\n2) For a constant value in data domain (`datum`): - `\\\\\\\"quantitative\\\\\\\"` if the datum is a number - `\\\\\\\"nominal\\\\\\\"` if the datum is a string - `\\\\\\\"temporal\\\\\\\"` if the datum is [a date time object](https://vega.github.io/vega-lite/docs/datetime.html)\\\\n\\\\n__Note:__ - Data `type` describes the semantics of the data rather than the primitive data types (number, string, etc.). The same primitive data type can have different types of measurement. For example, numeric data can represent quantitative, ordinal, or nominal data. - Data values for a temporal field can be either a date-time string (e.g., `\\\\\\\"2015-03-07 12:32:17\\\\\\\"`, `\\\\\\\"17:01\\\\\\\"`, `\\\\\\\"2015-03-16\\\\\\\"`. `\\\\\\\"2015\\\\\\\"`) or a timestamp number (e.g., `1552199579097`). - When using with [`bin`](https://vega.github.io/vega-lite/docs/bin.html), the `type` property can be either `\\\\\\\"quantitative\\\\\\\"` (for using a linear bin scale) or [`\\\\\\\"ordinal\\\\\\\"` (for using an ordinal bin scale)](https://vega.github.io/vega-lite/docs/type.html#cast-bin). - When using with [`timeUnit`](https://vega.github.io/vega-lite/docs/timeunit.html), the `type` property can be either `\\\\\\\"temporal\\\\\\\"` (default, for using a temporal scale) or [`\\\\\\\"ordinal\\\\\\\"` (for using an ordinal scale)](https://vega.github.io/vega-lite/docs/type.html#cast-bin). - When using with [`aggregate`](https://vega.github.io/vega-lite/docs/aggregate.html), the `type` property refers to the post-aggregation data type. For example, we can calculate count `distinct` of a categorical field `\\\\\\\"cat\\\\\\\"` using `{\\\\\\\"aggregate\\\\\\\": \\\\\\\"distinct\\\\\\\", \\\\\\\"field\\\\\\\": \\\\\\\"cat\\\\\\\"}`. The `\\\\\\\"type\\\\\\\"` of the aggregate output is `\\\\\\\"quantitative\\\\\\\"`. - Secondary channels (e.g., `x2`, `y2`, `xError`, `yError`) do not have `type` as they must have exactly the same type as their primary channels (e.g., `x`, `y`).\\\\n\\\\n__See also:__ [`type`](https://vega.github.io/vega-lite/docs/type.html) documentation.\\\"}},\\\"type\\\":\\\"object\\\"},\\\"FacetFieldDef\\\":{\\\"additionalProperties\\\":false,\\\"properties\\\":{\\\"aggregate\\\":{\\\"$ref\\\":\\\"#/definitions/Aggregate\\\",\\\"description\\\":\\\"Aggregation function for the field (e.g., `\\\\\\\"mean\\\\\\\"`, `\\\\\\\"sum\\\\\\\"`, `\\\\\\\"median\\\\\\\"`, `\\\\\\\"min\\\\\\\"`, `\\\\\\\"max\\\\\\\"`, `\\\\\\\"count\\\\\\\"`).\\\\n\\\\n__Default value:__ `undefined` (None)\\\\n\\\\n__See also:__ [`aggregate`](https://vega.github.io/vega-lite/docs/aggregate.html) documentation.\\\"},\\\"band\\\":{\\\"description\\\":\\\"For rect-based marks (`rect`, `bar`, and `image`), mark size relative to bandwidth of [band scales](https://vega.github.io/vega-lite/docs/scale.html#band), bins or time units. If set to `1`, the mark size is set to the bandwidth, the bin interval, or the time unit interval. If set to `0.5`, the mark size is half of the bandwidth or the time unit interval.\\\\n\\\\nFor other marks, relative position on a band of a stacked, binned, time unit or band scale. If set to `0`, the marks will be positioned at the beginning of the band. If set to `0.5`, the marks will be positioned in the middle of the band.\\\",\\\"maximum\\\":1,\\\"minimum\\\":0,\\\"type\\\":\\\"number\\\"},\\\"bin\\\":{\\\"anyOf\\\":[{\\\"type\\\":\\\"boolean\\\"},{\\\"$ref\\\":\\\"#/definitions/BinParams\\\"},{\\\"type\\\":\\\"null\\\"}],\\\"description\\\":\\\"A flag for binning a `quantitative` field, [an object defining binning parameters](https://vega.github.io/vega-lite/docs/bin.html#params), or indicating that the data for `x` or `y` channel are binned before they are imported into Vega-Lite (`\\\\\\\"binned\\\\\\\"`).\\\\n\\\\n- If `true`, default [binning parameters](https://vega.github.io/vega-lite/docs/bin.html) will be applied.\\\\n\\\\n- If `\\\\\\\"binned\\\\\\\"`, this indicates that the data for the `x` (or `y`) channel are already binned. You can map the bin-start field to `x` (or `y`) and the bin-end field to `x2` (or `y2`). The scale and axis will be formatted similar to binning in Vega-Lite.  To adjust the axis ticks based on the bin step, you can also set the axis's [`tickMinStep`](https://vega.github.io/vega-lite/docs/axis.html#ticks) property.\\\\n\\\\n__Default value:__ `false`\\\\n\\\\n__See also:__ [`bin`](https://vega.github.io/vega-lite/docs/bin.html) documentation.\\\"},\\\"field\\\":{\\\"$ref\\\":\\\"#/definitions/Field\\\",\\\"description\\\":\\\"__Required.__ A string defining the name of the field from which to pull a data value or an object defining iterated values from the [`repeat`](https://vega.github.io/vega-lite/docs/repeat.html) operator.\\\\n\\\\n__See also:__ [`field`](https://vega.github.io/vega-lite/docs/field.html) documentation.\\\\n\\\\n__Notes:__ 1)  Dots (`.`) and brackets (`[` and `]`) can be used to access nested objects (e.g., `\\\\\\\"field\\\\\\\": \\\\\\\"foo.bar\\\\\\\"` and `\\\\\\\"field\\\\\\\": \\\\\\\"foo['bar']\\\\\\\"`). If field names contain dots or brackets but are not nested, you can use `\\\\\\\\\\\\\\\\` to escape dots and brackets (e.g., `\\\\\\\"a\\\\\\\\\\\\\\\\.b\\\\\\\"` and `\\\\\\\"a\\\\\\\\\\\\\\\\[0\\\\\\\\\\\\\\\\]\\\\\\\"`). See more details about escaping in the [field documentation](https://vega.github.io/vega-lite/docs/field.html). 2) `field` is not required if `aggregate` is `count`.\\\"},\\\"header\\\":{\\\"$ref\\\":\\\"#/definitions/Header\\\",\\\"description\\\":\\\"An object defining properties of a facet's header.\\\"},\\\"sort\\\":{\\\"anyOf\\\":[{\\\"$ref\\\":\\\"#/definitions/SortArray\\\"},{\\\"$ref\\\":\\\"#/definitions/SortOrder\\\"},{\\\"$ref\\\":\\\"#/definitions/EncodingSortField\\\"},{\\\"type\\\":\\\"null\\\"}],\\\"description\\\":\\\"Sort order for the encoded field.\\\\n\\\\nFor continuous fields (quantitative or temporal), `sort` can be either `\\\\\\\"ascending\\\\\\\"` or `\\\\\\\"descending\\\\\\\"`.\\\\n\\\\nFor discrete fields, `sort` can be one of the following: - `\\\\\\\"ascending\\\\\\\"` or `\\\\\\\"descending\\\\\\\"` -- for sorting by the values' natural order in JavaScript. - [A sort field definition](https://vega.github.io/vega-lite/docs/sort.html#sort-field) for sorting by another field. - [An array specifying the field values in preferred order](https://vega.github.io/vega-lite/docs/sort.html#sort-array). In this case, the sort order will obey the values in the array, followed by any unspecified values in their original order. For discrete time field, values in the sort array can be [date-time definition objects](types#datetime). In addition, for time units `\\\\\\\"month\\\\\\\"` and `\\\\\\\"day\\\\\\\"`, the values can be the month or day names (case insensitive) or their 3-letter initials (e.g., `\\\\\\\"Mon\\\\\\\"`, `\\\\\\\"Tue\\\\\\\"`). - `null` indicating no sort.\\\\n\\\\n__Default value:__ `\\\\\\\"ascending\\\\\\\"`\\\\n\\\\n__Note:__ `null` is not supported for `row` and `column`.\\\"},\\\"timeUnit\\\":{\\\"anyOf\\\":[{\\\"$ref\\\":\\\"#/definitions/TimeUnit\\\"},{\\\"$ref\\\":\\\"#/definitions/TimeUnitParams\\\"}],\\\"description\\\":\\\"Time unit (e.g., `year`, `yearmonth`, `month`, `hours`) for a temporal field. or [a temporal field that gets casted as ordinal](https://vega.github.io/vega-lite/docs/type.html#cast).\\\\n\\\\n__Default value:__ `undefined` (None)\\\\n\\\\n__See also:__ [`timeUnit`](https://vega.github.io/vega-lite/docs/timeunit.html) documentation.\\\"},\\\"title\\\":{\\\"anyOf\\\":[{\\\"$ref\\\":\\\"#/definitions/Text\\\"},{\\\"type\\\":\\\"null\\\"}],\\\"description\\\":\\\"A title for the field. If `null`, the title will be removed.\\\\n\\\\n__Default value:__  derived from the field's name and transformation function (`aggregate`, `bin` and `timeUnit`). If the field has an aggregate function, the function is displayed as part of the title (e.g., `\\\\\\\"Sum of Profit\\\\\\\"`). If the field is binned or has a time unit applied, the applied function is shown in parentheses (e.g., `\\\\\\\"Profit (binned)\\\\\\\"`, `\\\\\\\"Transaction Date (year-month)\\\\\\\"`). Otherwise, the title is simply the field name.\\\\n\\\\n__Notes__:\\\\n\\\\n1) You can customize the default field title format by providing the [`fieldTitle`](https://vega.github.io/vega-lite/docs/config.html#top-level-config) property in the [config](https://vega.github.io/vega-lite/docs/config.html) or [`fieldTitle` function via the `compile` function's options](https://vega.github.io/vega-lite/docs/compile.html#field-title).\\\\n\\\\n2) If both field definition's `title` and axis, header, or legend `title` are defined, axis/header/legend title will be used.\\\"},\\\"type\\\":{\\\"$ref\\\":\\\"#/definitions/StandardType\\\",\\\"description\\\":\\\"The type of measurement (`\\\\\\\"quantitative\\\\\\\"`, `\\\\\\\"temporal\\\\\\\"`, `\\\\\\\"ordinal\\\\\\\"`, or `\\\\\\\"nominal\\\\\\\"`) for the encoded field or constant value (`datum`). It can also be a `\\\\\\\"geojson\\\\\\\"` type for encoding ['geoshape'](https://vega.github.io/vega-lite/docs/geoshape.html).\\\\n\\\\nVega-Lite automatically infers data types in many cases as discussed below. However, type is required for a field if: (1) the field is not nominal and the field encoding has no specified `aggregate` (except `argmin` and `argmax`), `bin`, scale type, custom `sort` order, nor `timeUnit` or (2) if you wish to use an ordinal scale for a field with `bin` or `timeUnit`.\\\\n\\\\n__Default value:__\\\\n\\\\n1) For a data `field`, `\\\\\\\"nominal\\\\\\\"` is the default data type unless the field encoding has `aggregate`, `channel`, `bin`, scale type, `sort`, or `timeUnit` that satisfies the following criteria: - `\\\\\\\"quantitative\\\\\\\"` is the default type if (1) the encoded field contains `bin` or `aggregate` except `\\\\\\\"argmin\\\\\\\"` and `\\\\\\\"argmax\\\\\\\"`, (2) the encoding channel is `latitude` or `longitude` channel or (3) if the specified scale type is [a quantitative scale](https://vega.github.io/vega-lite/docs/scale.html#type). - `\\\\\\\"temporal\\\\\\\"` is the default type if (1) the encoded field contains `timeUnit` or (2) the specified scale type is a time or utc scale - `ordinal\\\\\\\"\\\\\\\"` is the default type if (1) the encoded field contains a [custom `sort` order](https://vega.github.io/vega-lite/docs/sort.html#specifying-custom-sort-order), (2) the specified scale type is an ordinal/point/band scale, or (3) the encoding channel is `order`.\\\\n\\\\n2) For a constant value in data domain (`datum`): - `\\\\\\\"quantitative\\\\\\\"` if the datum is a number - `\\\\\\\"nominal\\\\\\\"` if the datum is a string - `\\\\\\\"temporal\\\\\\\"` if the datum is [a date time object](https://vega.github.io/vega-lite/docs/datetime.html)\\\\n\\\\n__Note:__ - Data `type` describes the semantics of the data rather than the primitive data types (number, string, etc.). The same primitive data type can have different types of measurement. For example, numeric data can represent quantitative, ordinal, or nominal data. - Data values for a temporal field can be either a date-time string (e.g., `\\\\\\\"2015-03-07 12:32:17\\\\\\\"`, `\\\\\\\"17:01\\\\\\\"`, `\\\\\\\"2015-03-16\\\\\\\"`. `\\\\\\\"2015\\\\\\\"`) or a timestamp number (e.g., `1552199579097`). - When using with [`bin`](https://vega.github.io/vega-lite/docs/bin.html), the `type` property can be either `\\\\\\\"quantitative\\\\\\\"` (for using a linear bin scale) or [`\\\\\\\"ordinal\\\\\\\"` (for using an ordinal bin scale)](https://vega.github.io/vega-lite/docs/type.html#cast-bin). - When using with [`timeUnit`](https://vega.github.io/vega-lite/docs/timeunit.html), the `type` property can be either `\\\\\\\"temporal\\\\\\\"` (default, for using a temporal scale) or [`\\\\\\\"ordinal\\\\\\\"` (for using an ordinal scale)](https://vega.github.io/vega-lite/docs/type.html#cast-bin). - When using with [`aggregate`](https://vega.github.io/vega-lite/docs/aggregate.html), the `type` property refers to the post-aggregation data type. For example, we can calculate count `distinct` of a categorical field `\\\\\\\"cat\\\\\\\"` using `{\\\\\\\"aggregate\\\\\\\": \\\\\\\"distinct\\\\\\\", \\\\\\\"field\\\\\\\": \\\\\\\"cat\\\\\\\"}`. The `\\\\\\\"type\\\\\\\"` of the aggregate output is `\\\\\\\"quantitative\\\\\\\"`. - Secondary channels (e.g., `x2`, `y2`, `xError`, `yError`) do not have `type` as they must have exactly the same type as their primary channels (e.g., `x`, `y`).\\\\n\\\\n__See also:__ [`type`](https://vega.github.io/vega-lite/docs/type.html) documentation.\\\"}},\\\"type\\\":\\\"object\\\"},\\\"FacetFieldDef<FieldName>\\\":{\\\"additionalProperties\\\":false,\\\"properties\\\":{\\\"aggregate\\\":{\\\"$ref\\\":\\\"#/definitions/Aggregate\\\",\\\"description\\\":\\\"Aggregation function for the field (e.g., `\\\\\\\"mean\\\\\\\"`, `\\\\\\\"sum\\\\\\\"`, `\\\\\\\"median\\\\\\\"`, `\\\\\\\"min\\\\\\\"`, `\\\\\\\"max\\\\\\\"`, `\\\\\\\"count\\\\\\\"`).\\\\n\\\\n__Default value:__ `undefined` (None)\\\\n\\\\n__See also:__ [`aggregate`](https://vega.github.io/vega-lite/docs/aggregate.html) documentation.\\\"},\\\"band\\\":{\\\"description\\\":\\\"For rect-based marks (`rect`, `bar`, and `image`), mark size relative to bandwidth of [band scales](https://vega.github.io/vega-lite/docs/scale.html#band), bins or time units. If set to `1`, the mark size is set to the bandwidth, the bin interval, or the time unit interval. If set to `0.5`, the mark size is half of the bandwidth or the time unit interval.\\\\n\\\\nFor other marks, relative position on a band of a stacked, binned, time unit or band scale. If set to `0`, the marks will be positioned at the beginning of the band. If set to `0.5`, the marks will be positioned in the middle of the band.\\\",\\\"maximum\\\":1,\\\"minimum\\\":0,\\\"type\\\":\\\"number\\\"},\\\"bin\\\":{\\\"anyOf\\\":[{\\\"type\\\":\\\"boolean\\\"},{\\\"$ref\\\":\\\"#/definitions/BinParams\\\"},{\\\"type\\\":\\\"null\\\"}],\\\"description\\\":\\\"A flag for binning a `quantitative` field, [an object defining binning parameters](https://vega.github.io/vega-lite/docs/bin.html#params), or indicating that the data for `x` or `y` channel are binned before they are imported into Vega-Lite (`\\\\\\\"binned\\\\\\\"`).\\\\n\\\\n- If `true`, default [binning parameters](https://vega.github.io/vega-lite/docs/bin.html) will be applied.\\\\n\\\\n- If `\\\\\\\"binned\\\\\\\"`, this indicates that the data for the `x` (or `y`) channel are already binned. You can map the bin-start field to `x` (or `y`) and the bin-end field to `x2` (or `y2`). The scale and axis will be formatted similar to binning in Vega-Lite.  To adjust the axis ticks based on the bin step, you can also set the axis's [`tickMinStep`](https://vega.github.io/vega-lite/docs/axis.html#ticks) property.\\\\n\\\\n__Default value:__ `false`\\\\n\\\\n__See also:__ [`bin`](https://vega.github.io/vega-lite/docs/bin.html) documentation.\\\"},\\\"field\\\":{\\\"$ref\\\":\\\"#/definitions/FieldName\\\",\\\"description\\\":\\\"__Required.__ A string defining the name of the field from which to pull a data value or an object defining iterated values from the [`repeat`](https://vega.github.io/vega-lite/docs/repeat.html) operator.\\\\n\\\\n__See also:__ [`field`](https://vega.github.io/vega-lite/docs/field.html) documentation.\\\\n\\\\n__Notes:__ 1)  Dots (`.`) and brackets (`[` and `]`) can be used to access nested objects (e.g., `\\\\\\\"field\\\\\\\": \\\\\\\"foo.bar\\\\\\\"` and `\\\\\\\"field\\\\\\\": \\\\\\\"foo['bar']\\\\\\\"`). If field names contain dots or brackets but are not nested, you can use `\\\\\\\\\\\\\\\\` to escape dots and brackets (e.g., `\\\\\\\"a\\\\\\\\\\\\\\\\.b\\\\\\\"` and `\\\\\\\"a\\\\\\\\\\\\\\\\[0\\\\\\\\\\\\\\\\]\\\\\\\"`). See more details about escaping in the [field documentation](https://vega.github.io/vega-lite/docs/field.html). 2) `field` is not required if `aggregate` is `count`.\\\"},\\\"header\\\":{\\\"$ref\\\":\\\"#/definitions/Header\\\",\\\"description\\\":\\\"An object defining properties of a facet's header.\\\"},\\\"sort\\\":{\\\"anyOf\\\":[{\\\"$ref\\\":\\\"#/definitions/SortArray\\\"},{\\\"$ref\\\":\\\"#/definitions/SortOrder\\\"},{\\\"$ref\\\":\\\"#/definitions/EncodingSortField<FieldName>\\\"},{\\\"type\\\":\\\"null\\\"}],\\\"description\\\":\\\"Sort order for the encoded field.\\\\n\\\\nFor continuous fields (quantitative or temporal), `sort` can be either `\\\\\\\"ascending\\\\\\\"` or `\\\\\\\"descending\\\\\\\"`.\\\\n\\\\nFor discrete fields, `sort` can be one of the following: - `\\\\\\\"ascending\\\\\\\"` or `\\\\\\\"descending\\\\\\\"` -- for sorting by the values' natural order in JavaScript. - [A sort field definition](https://vega.github.io/vega-lite/docs/sort.html#sort-field) for sorting by another field. - [An array specifying the field values in preferred order](https://vega.github.io/vega-lite/docs/sort.html#sort-array). In this case, the sort order will obey the values in the array, followed by any unspecified values in their original order. For discrete time field, values in the sort array can be [date-time definition objects](types#datetime). In addition, for time units `\\\\\\\"month\\\\\\\"` and `\\\\\\\"day\\\\\\\"`, the values can be the month or day names (case insensitive) or their 3-letter initials (e.g., `\\\\\\\"Mon\\\\\\\"`, `\\\\\\\"Tue\\\\\\\"`). - `null` indicating no sort.\\\\n\\\\n__Default value:__ `\\\\\\\"ascending\\\\\\\"`\\\\n\\\\n__Note:__ `null` is not supported for `row` and `column`.\\\"},\\\"timeUnit\\\":{\\\"anyOf\\\":[{\\\"$ref\\\":\\\"#/definitions/TimeUnit\\\"},{\\\"$ref\\\":\\\"#/definitions/TimeUnitParams\\\"}],\\\"description\\\":\\\"Time unit (e.g., `year`, `yearmonth`, `month`, `hours`) for a temporal field. or [a temporal field that gets casted as ordinal](https://vega.github.io/vega-lite/docs/type.html#cast).\\\\n\\\\n__Default value:__ `undefined` (None)\\\\n\\\\n__See also:__ [`timeUnit`](https://vega.github.io/vega-lite/docs/timeunit.html) documentation.\\\"},\\\"title\\\":{\\\"anyOf\\\":[{\\\"$ref\\\":\\\"#/definitions/Text\\\"},{\\\"type\\\":\\\"null\\\"}],\\\"description\\\":\\\"A title for the field. If `null`, the title will be removed.\\\\n\\\\n__Default value:__  derived from the field's name and transformation function (`aggregate`, `bin` and `timeUnit`). If the field has an aggregate function, the function is displayed as part of the title (e.g., `\\\\\\\"Sum of Profit\\\\\\\"`). If the field is binned or has a time unit applied, the applied function is shown in parentheses (e.g., `\\\\\\\"Profit (binned)\\\\\\\"`, `\\\\\\\"Transaction Date (year-month)\\\\\\\"`). Otherwise, the title is simply the field name.\\\\n\\\\n__Notes__:\\\\n\\\\n1) You can customize the default field title format by providing the [`fieldTitle`](https://vega.github.io/vega-lite/docs/config.html#top-level-config) property in the [config](https://vega.github.io/vega-lite/docs/config.html) or [`fieldTitle` function via the `compile` function's options](https://vega.github.io/vega-lite/docs/compile.html#field-title).\\\\n\\\\n2) If both field definition's `title` and axis, header, or legend `title` are defined, axis/header/legend title will be used.\\\"},\\\"type\\\":{\\\"$ref\\\":\\\"#/definitions/StandardType\\\",\\\"description\\\":\\\"The type of measurement (`\\\\\\\"quantitative\\\\\\\"`, `\\\\\\\"temporal\\\\\\\"`, `\\\\\\\"ordinal\\\\\\\"`, or `\\\\\\\"nominal\\\\\\\"`) for the encoded field or constant value (`datum`). It can also be a `\\\\\\\"geojson\\\\\\\"` type for encoding ['geoshape'](https://vega.github.io/vega-lite/docs/geoshape.html).\\\\n\\\\nVega-Lite automatically infers data types in many cases as discussed below. However, type is required for a field if: (1) the field is not nominal and the field encoding has no specified `aggregate` (except `argmin` and `argmax`), `bin`, scale type, custom `sort` order, nor `timeUnit` or (2) if you wish to use an ordinal scale for a field with `bin` or `timeUnit`.\\\\n\\\\n__Default value:__\\\\n\\\\n1) For a data `field`, `\\\\\\\"nominal\\\\\\\"` is the default data type unless the field encoding has `aggregate`, `channel`, `bin`, scale type, `sort`, or `timeUnit` that satisfies the following criteria: - `\\\\\\\"quantitative\\\\\\\"` is the default type if (1) the encoded field contains `bin` or `aggregate` except `\\\\\\\"argmin\\\\\\\"` and `\\\\\\\"argmax\\\\\\\"`, (2) the encoding channel is `latitude` or `longitude` channel or (3) if the specified scale type is [a quantitative scale](https://vega.github.io/vega-lite/docs/scale.html#type). - `\\\\\\\"temporal\\\\\\\"` is the default type if (1) the encoded field contains `timeUnit` or (2) the specified scale type is a time or utc scale - `ordinal\\\\\\\"\\\\\\\"` is the default type if (1) the encoded field contains a [custom `sort` order](https://vega.github.io/vega-lite/docs/sort.html#specifying-custom-sort-order), (2) the specified scale type is an ordinal/point/band scale, or (3) the encoding channel is `order`.\\\\n\\\\n2) For a constant value in data domain (`datum`): - `\\\\\\\"quantitative\\\\\\\"` if the datum is a number - `\\\\\\\"nominal\\\\\\\"` if the datum is a string - `\\\\\\\"temporal\\\\\\\"` if the datum is [a date time object](https://vega.github.io/vega-lite/docs/datetime.html)\\\\n\\\\n__Note:__ - Data `type` describes the semantics of the data rather than the primitive data types (number, string, etc.). The same primitive data type can have different types of measurement. For example, numeric data can represent quantitative, ordinal, or nominal data. - Data values for a temporal field can be either a date-time string (e.g., `\\\\\\\"2015-03-07 12:32:17\\\\\\\"`, `\\\\\\\"17:01\\\\\\\"`, `\\\\\\\"2015-03-16\\\\\\\"`. `\\\\\\\"2015\\\\\\\"`) or a timestamp number (e.g., `1552199579097`). - When using with [`bin`](https://vega.github.io/vega-lite/docs/bin.html), the `type` property can be either `\\\\\\\"quantitative\\\\\\\"` (for using a linear bin scale) or [`\\\\\\\"ordinal\\\\\\\"` (for using an ordinal bin scale)](https://vega.github.io/vega-lite/docs/type.html#cast-bin). - When using with [`timeUnit`](https://vega.github.io/vega-lite/docs/timeunit.html), the `type` property can be either `\\\\\\\"temporal\\\\\\\"` (default, for using a temporal scale) or [`\\\\\\\"ordinal\\\\\\\"` (for using an ordinal scale)](https://vega.github.io/vega-lite/docs/type.html#cast-bin). - When using with [`aggregate`](https://vega.github.io/vega-lite/docs/aggregate.html), the `type` property refers to the post-aggregation data type. For example, we can calculate count `distinct` of a categorical field `\\\\\\\"cat\\\\\\\"` using `{\\\\\\\"aggregate\\\\\\\": \\\\\\\"distinct\\\\\\\", \\\\\\\"field\\\\\\\": \\\\\\\"cat\\\\\\\"}`. The `\\\\\\\"type\\\\\\\"` of the aggregate output is `\\\\\\\"quantitative\\\\\\\"`. - Secondary channels (e.g., `x2`, `y2`, `xError`, `yError`) do not have `type` as they must have exactly the same type as their primary channels (e.g., `x`, `y`).\\\\n\\\\n__See also:__ [`type`](https://vega.github.io/vega-lite/docs/type.html) documentation.\\\"}},\\\"type\\\":\\\"object\\\"},\\\"FacetMapping\\\":{\\\"additionalProperties\\\":false,\\\"properties\\\":{\\\"column\\\":{\\\"$ref\\\":\\\"#/definitions/FacetFieldDef\\\",\\\"description\\\":\\\"A field definition for the horizontal facet of trellis plots.\\\"},\\\"row\\\":{\\\"$ref\\\":\\\"#/definitions/FacetFieldDef\\\",\\\"description\\\":\\\"A field definition for the vertical facet of trellis plots.\\\"}},\\\"type\\\":\\\"object\\\"},\\\"FacetMapping<FieldName>\\\":{\\\"additionalProperties\\\":false,\\\"properties\\\":{\\\"column\\\":{\\\"$ref\\\":\\\"#/definitions/FacetFieldDef<FieldName>\\\",\\\"description\\\":\\\"A field definition for the horizontal facet of trellis plots.\\\"},\\\"row\\\":{\\\"$ref\\\":\\\"#/definitions/FacetFieldDef<FieldName>\\\",\\\"description\\\":\\\"A field definition for the vertical facet of trellis plots.\\\"}},\\\"type\\\":\\\"object\\\"},\\\"FacetedEncoding\\\":{\\\"additionalProperties\\\":false,\\\"properties\\\":{\\\"angle\\\":{\\\"$ref\\\":\\\"#/definitions/NumericMarkPropDef\\\",\\\"description\\\":\\\"Rotation angle of point and text marks.\\\"},\\\"color\\\":{\\\"$ref\\\":\\\"#/definitions/ColorDef\\\",\\\"description\\\":\\\"Color of the marks – either fill or stroke color based on  the `filled` property of mark definition. By default, `color` represents fill color for `\\\\\\\"area\\\\\\\"`, `\\\\\\\"bar\\\\\\\"`, `\\\\\\\"tick\\\\\\\"`, `\\\\\\\"text\\\\\\\"`, `\\\\\\\"trail\\\\\\\"`, `\\\\\\\"circle\\\\\\\"`, and `\\\\\\\"square\\\\\\\"` / stroke color for `\\\\\\\"line\\\\\\\"` and `\\\\\\\"point\\\\\\\"`.\\\\n\\\\n__Default value:__ If undefined, the default color depends on [mark config](https://vega.github.io/vega-lite/docs/config.html#mark-config)'s `color` property.\\\\n\\\\n_Note:_ 1) For fine-grained control over both fill and stroke colors of the marks, please use the `fill` and `stroke` channels. The `fill` or `stroke` encodings have higher precedence than `color`, thus may override the `color` encoding if conflicting encodings are specified. 2) See the scale documentation for more information about customizing [color scheme](https://vega.github.io/vega-lite/docs/scale.html#scheme).\\\"},\\\"column\\\":{\\\"$ref\\\":\\\"#/definitions/RowColumnEncodingFieldDef\\\",\\\"description\\\":\\\"A field definition for the horizontal facet of trellis plots.\\\"},\\\"description\\\":{\\\"anyOf\\\":[{\\\"$ref\\\":\\\"#/definitions/StringFieldDefWithCondition\\\"},{\\\"$ref\\\":\\\"#/definitions/StringValueDefWithCondition\\\"}],\\\"description\\\":\\\"A text description of this mark for ARIA accessibility (SVG output only). For SVG output the `\\\\\\\"aria-label\\\\\\\"` attribute will be set to this description.\\\"},\\\"detail\\\":{\\\"anyOf\\\":[{\\\"$ref\\\":\\\"#/definitions/FieldDefWithoutScale\\\"},{\\\"items\\\":{\\\"$ref\\\":\\\"#/definitions/FieldDefWithoutScale\\\"},\\\"type\\\":\\\"array\\\"}],\\\"description\\\":\\\"Additional levels of detail for grouping data in aggregate views and in line, trail, and area marks without mapping data to a specific visual channel.\\\"},\\\"facet\\\":{\\\"$ref\\\":\\\"#/definitions/FacetEncodingFieldDef\\\",\\\"description\\\":\\\"A field definition for the (flexible) facet of trellis plots.\\\\n\\\\nIf either `row` or `column` is specified, this channel will be ignored.\\\"},\\\"fill\\\":{\\\"$ref\\\":\\\"#/definitions/ColorDef\\\",\\\"description\\\":\\\"Fill color of the marks. __Default value:__ If undefined, the default color depends on [mark config](https://vega.github.io/vega-lite/docs/config.html#mark-config)'s `color` property.\\\\n\\\\n_Note:_ The `fill` encoding has higher precedence than `color`, thus may override the `color` encoding if conflicting encodings are specified.\\\"},\\\"fillOpacity\\\":{\\\"$ref\\\":\\\"#/definitions/NumericMarkPropDef\\\",\\\"description\\\":\\\"Fill opacity of the marks.\\\\n\\\\n__Default value:__ If undefined, the default opacity depends on [mark config](https://vega.github.io/vega-lite/docs/config.html#mark-config)'s `fillOpacity` property.\\\"},\\\"href\\\":{\\\"anyOf\\\":[{\\\"$ref\\\":\\\"#/definitions/StringFieldDefWithCondition\\\"},{\\\"$ref\\\":\\\"#/definitions/StringValueDefWithCondition\\\"}],\\\"description\\\":\\\"A URL to load upon mouse click.\\\"},\\\"key\\\":{\\\"$ref\\\":\\\"#/definitions/FieldDefWithoutScale\\\",\\\"description\\\":\\\"A data field to use as a unique key for data binding. When a visualization’s data is updated, the key value will be used to match data elements to existing mark instances. Use a key channel to enable object constancy for transitions over dynamic data.\\\"},\\\"latitude\\\":{\\\"$ref\\\":\\\"#/definitions/LatLongDef\\\",\\\"description\\\":\\\"Latitude position of geographically projected marks.\\\"},\\\"latitude2\\\":{\\\"$ref\\\":\\\"#/definitions/Position2Def\\\",\\\"description\\\":\\\"Latitude-2 position for geographically projected ranged `\\\\\\\"area\\\\\\\"`, `\\\\\\\"bar\\\\\\\"`, `\\\\\\\"rect\\\\\\\"`, and  `\\\\\\\"rule\\\\\\\"`.\\\"},\\\"longitude\\\":{\\\"$ref\\\":\\\"#/definitions/LatLongDef\\\",\\\"description\\\":\\\"Longitude position of geographically projected marks.\\\"},\\\"longitude2\\\":{\\\"$ref\\\":\\\"#/definitions/Position2Def\\\",\\\"description\\\":\\\"Longitude-2 position for geographically projected ranged `\\\\\\\"area\\\\\\\"`, `\\\\\\\"bar\\\\\\\"`, `\\\\\\\"rect\\\\\\\"`, and  `\\\\\\\"rule\\\\\\\"`.\\\"},\\\"opacity\\\":{\\\"$ref\\\":\\\"#/definitions/NumericMarkPropDef\\\",\\\"description\\\":\\\"Opacity of the marks.\\\\n\\\\n__Default value:__ If undefined, the default opacity depends on [mark config](https://vega.github.io/vega-lite/docs/config.html#mark-config)'s `opacity` property.\\\"},\\\"order\\\":{\\\"anyOf\\\":[{\\\"$ref\\\":\\\"#/definitions/OrderFieldDef\\\"},{\\\"items\\\":{\\\"$ref\\\":\\\"#/definitions/OrderFieldDef\\\"},\\\"type\\\":\\\"array\\\"},{\\\"$ref\\\":\\\"#/definitions/OrderValueDef\\\"}],\\\"description\\\":\\\"Order of the marks. - For stacked marks, this `order` channel encodes [stack order](https://vega.github.io/vega-lite/docs/stack.html#order). - For line and trail marks, this `order` channel encodes order of data points in the lines. This can be useful for creating [a connected scatterplot](https://vega.github.io/vega-lite/examples/connected_scatterplot.html). Setting `order` to `{\\\\\\\"value\\\\\\\": null}` makes the line marks use the original order in the data sources. - Otherwise, this `order` channel encodes layer order of the marks.\\\\n\\\\n__Note__: In aggregate plots, `order` field should be `aggregate`d to avoid creating additional aggregation grouping.\\\"},\\\"radius\\\":{\\\"$ref\\\":\\\"#/definitions/PolarDef\\\",\\\"description\\\":\\\"The outer radius in pixels of arc marks.\\\"},\\\"radius2\\\":{\\\"$ref\\\":\\\"#/definitions/Position2Def\\\",\\\"description\\\":\\\"The inner radius in pixels of arc marks.\\\"},\\\"row\\\":{\\\"$ref\\\":\\\"#/definitions/RowColumnEncodingFieldDef\\\",\\\"description\\\":\\\"A field definition for the vertical facet of trellis plots.\\\"},\\\"shape\\\":{\\\"$ref\\\":\\\"#/definitions/ShapeDef\\\",\\\"description\\\":\\\"Shape of the mark.\\\\n\\\\n1. For `point` marks the supported values include:    - plotting shapes: `\\\\\\\"circle\\\\\\\"`, `\\\\\\\"square\\\\\\\"`, `\\\\\\\"cross\\\\\\\"`, `\\\\\\\"diamond\\\\\\\"`, `\\\\\\\"triangle-up\\\\\\\"`, `\\\\\\\"triangle-down\\\\\\\"`, `\\\\\\\"triangle-right\\\\\\\"`, or `\\\\\\\"triangle-left\\\\\\\"`.    - the line symbol `\\\\\\\"stroke\\\\\\\"`    - centered directional shapes `\\\\\\\"arrow\\\\\\\"`, `\\\\\\\"wedge\\\\\\\"`, or `\\\\\\\"triangle\\\\\\\"`    - a custom [SVG path string](https://developer.mozilla.org/en-US/docs/Web/SVG/Tutorial/Paths) (For correct sizing, custom shape paths should be defined within a square bounding box with coordinates ranging from -1 to 1 along both the x and y dimensions.)\\\\n\\\\n2. For `geoshape` marks it should be a field definition of the geojson data\\\\n\\\\n__Default value:__ If undefined, the default shape depends on [mark config](https://vega.github.io/vega-lite/docs/config.html#point-config)'s `shape` property. (`\\\\\\\"circle\\\\\\\"` if unset.)\\\"},\\\"size\\\":{\\\"$ref\\\":\\\"#/definitions/NumericMarkPropDef\\\",\\\"description\\\":\\\"Size of the mark. - For `\\\\\\\"point\\\\\\\"`, `\\\\\\\"square\\\\\\\"` and `\\\\\\\"circle\\\\\\\"`, – the symbol size, or pixel area of the mark. - For `\\\\\\\"bar\\\\\\\"` and `\\\\\\\"tick\\\\\\\"` – the bar and tick's size. - For `\\\\\\\"text\\\\\\\"` – the text's font size. - Size is unsupported for `\\\\\\\"line\\\\\\\"`, `\\\\\\\"area\\\\\\\"`, and `\\\\\\\"rect\\\\\\\"`. (Use `\\\\\\\"trail\\\\\\\"` instead of line with varying size)\\\"},\\\"stroke\\\":{\\\"$ref\\\":\\\"#/definitions/ColorDef\\\",\\\"description\\\":\\\"Stroke color of the marks. __Default value:__ If undefined, the default color depends on [mark config](https://vega.github.io/vega-lite/docs/config.html#mark-config)'s `color` property.\\\\n\\\\n_Note:_ The `stroke` encoding has higher precedence than `color`, thus may override the `color` encoding if conflicting encodings are specified.\\\"},\\\"strokeDash\\\":{\\\"$ref\\\":\\\"#/definitions/NumericArrayMarkPropDef\\\",\\\"description\\\":\\\"Stroke dash of the marks.\\\\n\\\\n__Default value:__ `[1,0]` (No dash).\\\"},\\\"strokeOpacity\\\":{\\\"$ref\\\":\\\"#/definitions/NumericMarkPropDef\\\",\\\"description\\\":\\\"Stroke opacity of the marks.\\\\n\\\\n__Default value:__ If undefined, the default opacity depends on [mark config](https://vega.github.io/vega-lite/docs/config.html#mark-config)'s `strokeOpacity` property.\\\"},\\\"strokeWidth\\\":{\\\"$ref\\\":\\\"#/definitions/NumericMarkPropDef\\\",\\\"description\\\":\\\"Stroke width of the marks.\\\\n\\\\n__Default value:__ If undefined, the default stroke width depends on [mark config](https://vega.github.io/vega-lite/docs/config.html#mark-config)'s `strokeWidth` property.\\\"},\\\"text\\\":{\\\"$ref\\\":\\\"#/definitions/TextDef\\\",\\\"description\\\":\\\"Text of the `text` mark.\\\"},\\\"theta\\\":{\\\"$ref\\\":\\\"#/definitions/PolarDef\\\",\\\"description\\\":\\\"- For arc marks, the arc length in radians if theta2 is not specified, otherwise the start arc angle. (A value of 0 indicates up or “north”, increasing values proceed clockwise.)\\\\n\\\\n- For text marks, polar coordinate angle in radians.\\\"},\\\"theta2\\\":{\\\"$ref\\\":\\\"#/definitions/Position2Def\\\",\\\"description\\\":\\\"The end angle of arc marks in radians. A value of 0 indicates up or “north”, increasing values proceed clockwise.\\\"},\\\"tooltip\\\":{\\\"anyOf\\\":[{\\\"$ref\\\":\\\"#/definitions/StringFieldDefWithCondition\\\"},{\\\"$ref\\\":\\\"#/definitions/StringValueDefWithCondition\\\"},{\\\"items\\\":{\\\"$ref\\\":\\\"#/definitions/StringFieldDef\\\"},\\\"type\\\":\\\"array\\\"},{\\\"type\\\":\\\"null\\\"}],\\\"description\\\":\\\"The tooltip text to show upon mouse hover. Specifying `tooltip` encoding overrides [the `tooltip` property in the mark definition](https://vega.github.io/vega-lite/docs/mark.html#mark-def).\\\\n\\\\nSee the [`tooltip`](https://vega.github.io/vega-lite/docs/tooltip.html) documentation for a detailed discussion about tooltip in Vega-Lite.\\\"},\\\"url\\\":{\\\"anyOf\\\":[{\\\"$ref\\\":\\\"#/definitions/StringFieldDefWithCondition\\\"},{\\\"$ref\\\":\\\"#/definitions/StringValueDefWithCondition\\\"}],\\\"description\\\":\\\"The URL of an image mark.\\\"},\\\"x\\\":{\\\"$ref\\\":\\\"#/definitions/PositionDef\\\",\\\"description\\\":\\\"X coordinates of the marks, or width of horizontal `\\\\\\\"bar\\\\\\\"` and `\\\\\\\"area\\\\\\\"` without specified `x2` or `width`.\\\\n\\\\nThe `value` of this channel can be a number or a string `\\\\\\\"width\\\\\\\"` for the width of the plot.\\\"},\\\"x2\\\":{\\\"$ref\\\":\\\"#/definitions/Position2Def\\\",\\\"description\\\":\\\"X2 coordinates for ranged `\\\\\\\"area\\\\\\\"`, `\\\\\\\"bar\\\\\\\"`, `\\\\\\\"rect\\\\\\\"`, and  `\\\\\\\"rule\\\\\\\"`.\\\\n\\\\nThe `value` of this channel can be a number or a string `\\\\\\\"width\\\\\\\"` for the width of the plot.\\\"},\\\"xError\\\":{\\\"anyOf\\\":[{\\\"$ref\\\":\\\"#/definitions/SecondaryFieldDef\\\"},{\\\"$ref\\\":\\\"#/definitions/ValueDef<number>\\\"}],\\\"description\\\":\\\"Error value of x coordinates for error specified `\\\\\\\"errorbar\\\\\\\"` and `\\\\\\\"errorband\\\\\\\"`.\\\"},\\\"xError2\\\":{\\\"anyOf\\\":[{\\\"$ref\\\":\\\"#/definitions/SecondaryFieldDef\\\"},{\\\"$ref\\\":\\\"#/definitions/ValueDef<number>\\\"}],\\\"description\\\":\\\"Secondary error value of x coordinates for error specified `\\\\\\\"errorbar\\\\\\\"` and `\\\\\\\"errorband\\\\\\\"`.\\\"},\\\"y\\\":{\\\"$ref\\\":\\\"#/definitions/PositionDef\\\",\\\"description\\\":\\\"Y coordinates of the marks, or height of vertical `\\\\\\\"bar\\\\\\\"` and `\\\\\\\"area\\\\\\\"` without specified `y2` or `height`.\\\\n\\\\nThe `value` of this channel can be a number or a string `\\\\\\\"height\\\\\\\"` for the height of the plot.\\\"},\\\"y2\\\":{\\\"$ref\\\":\\\"#/definitions/Position2Def\\\",\\\"description\\\":\\\"Y2 coordinates for ranged `\\\\\\\"area\\\\\\\"`, `\\\\\\\"bar\\\\\\\"`, `\\\\\\\"rect\\\\\\\"`, and  `\\\\\\\"rule\\\\\\\"`.\\\\n\\\\nThe `value` of this channel can be a number or a string `\\\\\\\"height\\\\\\\"` for the height of the plot.\\\"},\\\"yError\\\":{\\\"anyOf\\\":[{\\\"$ref\\\":\\\"#/definitions/SecondaryFieldDef\\\"},{\\\"$ref\\\":\\\"#/definitions/ValueDef<number>\\\"}],\\\"description\\\":\\\"Error value of y coordinates for error specified `\\\\\\\"errorbar\\\\\\\"` and `\\\\\\\"errorband\\\\\\\"`.\\\"},\\\"yError2\\\":{\\\"anyOf\\\":[{\\\"$ref\\\":\\\"#/definitions/SecondaryFieldDef\\\"},{\\\"$ref\\\":\\\"#/definitions/ValueDef<number>\\\"}],\\\"description\\\":\\\"Secondary error value of y coordinates for error specified `\\\\\\\"errorbar\\\\\\\"` and `\\\\\\\"errorband\\\\\\\"`.\\\"}},\\\"type\\\":\\\"object\\\"},\\\"FacetedUnitSpec\\\":{\\\"additionalProperties\\\":false,\\\"description\\\":\\\"Unit spec that can have a composite mark and row or column channels (shorthand for a facet spec).\\\",\\\"properties\\\":{\\\"align\\\":{\\\"anyOf\\\":[{\\\"$ref\\\":\\\"#/definitions/LayoutAlign\\\"},{\\\"$ref\\\":\\\"#/definitions/RowCol<LayoutAlign>\\\"}],\\\"description\\\":\\\"The alignment to apply to grid rows and columns. The supported string values are `\\\\\\\"all\\\\\\\"`, `\\\\\\\"each\\\\\\\"`, and `\\\\\\\"none\\\\\\\"`.\\\\n\\\\n- For `\\\\\\\"none\\\\\\\"`, a flow layout will be used, in which adjacent subviews are simply placed one after the other. - For `\\\\\\\"each\\\\\\\"`, subviews will be aligned into a clean grid structure, but each row or column may be of variable size. - For `\\\\\\\"all\\\\\\\"`, subviews will be aligned and each row or column will be sized identically based on the maximum observed size. String values for this property will be applied to both grid rows and columns.\\\\n\\\\nAlternatively, an object value of the form `{\\\\\\\"row\\\\\\\": string, \\\\\\\"column\\\\\\\": string}` can be used to supply different alignments for rows and columns.\\\\n\\\\n__Default value:__ `\\\\\\\"all\\\\\\\"`.\\\"},\\\"bounds\\\":{\\\"description\\\":\\\"The bounds calculation method to use for determining the extent of a sub-plot. One of `full` (the default) or `flush`.\\\\n\\\\n- If set to `full`, the entire calculated bounds (including axes, title, and legend) will be used. - If set to `flush`, only the specified width and height values for the sub-view will be used. The `flush` setting can be useful when attempting to place sub-plots without axes or legends into a uniform grid structure.\\\\n\\\\n__Default value:__ `\\\\\\\"full\\\\\\\"`\\\",\\\"enum\\\":[\\\"full\\\",\\\"flush\\\"],\\\"type\\\":\\\"string\\\"},\\\"center\\\":{\\\"anyOf\\\":[{\\\"type\\\":\\\"boolean\\\"},{\\\"$ref\\\":\\\"#/definitions/RowCol<boolean>\\\"}],\\\"description\\\":\\\"Boolean flag indicating if subviews should be centered relative to their respective rows or columns.\\\\n\\\\nAn object value of the form `{\\\\\\\"row\\\\\\\": boolean, \\\\\\\"column\\\\\\\": boolean}` can be used to supply different centering values for rows and columns.\\\\n\\\\n__Default value:__ `false`\\\"},\\\"data\\\":{\\\"anyOf\\\":[{\\\"$ref\\\":\\\"#/definitions/Data\\\"},{\\\"type\\\":\\\"null\\\"}],\\\"description\\\":\\\"An object describing the data source. Set to `null` to ignore the parent's data source. If no data is set, it is derived from the parent.\\\"},\\\"description\\\":{\\\"description\\\":\\\"Description of this mark for commenting purpose.\\\",\\\"type\\\":\\\"string\\\"},\\\"encoding\\\":{\\\"$ref\\\":\\\"#/definitions/FacetedEncoding\\\",\\\"description\\\":\\\"A key-value mapping between encoding channels and definition of fields.\\\"},\\\"height\\\":{\\\"anyOf\\\":[{\\\"type\\\":\\\"number\\\"},{\\\"const\\\":\\\"container\\\",\\\"type\\\":\\\"string\\\"},{\\\"$ref\\\":\\\"#/definitions/Step\\\"}],\\\"description\\\":\\\"The height of a visualization.\\\\n\\\\n- For a plot with a continuous y-field, height should be a number. - For a plot with either a discrete y-field or no y-field, height can be either a number indicating a fixed height or an object in the form of `{step: number}` defining the height per discrete step. (No y-field is equivalent to having one discrete step.) - To enable responsive sizing on height, it should be set to `\\\\\\\"container\\\\\\\"`.\\\\n\\\\n__Default value:__ Based on `config.view.continuousHeight` for a plot with a continuous y-field and `config.view.discreteHeight` otherwise.\\\\n\\\\n__Note:__ For plots with [`row` and `column` channels](https://vega.github.io/vega-lite/docs/encoding.html#facet), this represents the height of a single view and the `\\\\\\\"container\\\\\\\"` option cannot be used.\\\\n\\\\n__See also:__ [`height`](https://vega.github.io/vega-lite/docs/size.html) documentation.\\\"},\\\"mark\\\":{\\\"$ref\\\":\\\"#/definitions/AnyMark\\\",\\\"description\\\":\\\"A string describing the mark type (one of `\\\\\\\"bar\\\\\\\"`, `\\\\\\\"circle\\\\\\\"`, `\\\\\\\"square\\\\\\\"`, `\\\\\\\"tick\\\\\\\"`, `\\\\\\\"line\\\\\\\"`, `\\\\\\\"area\\\\\\\"`, `\\\\\\\"point\\\\\\\"`, `\\\\\\\"rule\\\\\\\"`, `\\\\\\\"geoshape\\\\\\\"`, and `\\\\\\\"text\\\\\\\"`) or a [mark definition object](https://vega.github.io/vega-lite/docs/mark.html#mark-def).\\\"},\\\"name\\\":{\\\"description\\\":\\\"Name of the visualization for later reference.\\\",\\\"type\\\":\\\"string\\\"},\\\"projection\\\":{\\\"$ref\\\":\\\"#/definitions/Projection\\\",\\\"description\\\":\\\"An object defining properties of geographic projection, which will be applied to `shape` path for `\\\\\\\"geoshape\\\\\\\"` marks and to `latitude` and `\\\\\\\"longitude\\\\\\\"` channels for other marks.\\\"},\\\"resolve\\\":{\\\"$ref\\\":\\\"#/definitions/Resolve\\\",\\\"description\\\":\\\"Scale, axis, and legend resolutions for view composition specifications.\\\"},\\\"selection\\\":{\\\"additionalProperties\\\":{\\\"$ref\\\":\\\"#/definitions/SelectionDef\\\"},\\\"description\\\":\\\"A key-value mapping between selection names and definitions.\\\",\\\"type\\\":\\\"object\\\"},\\\"spacing\\\":{\\\"anyOf\\\":[{\\\"type\\\":\\\"number\\\"},{\\\"$ref\\\":\\\"#/definitions/RowCol<number>\\\"}],\\\"description\\\":\\\"The spacing in pixels between sub-views of the composition operator. An object of the form `{\\\\\\\"row\\\\\\\": number, \\\\\\\"column\\\\\\\": number}` can be used to set different spacing values for rows and columns.\\\\n\\\\n__Default value__: Depends on `\\\\\\\"spacing\\\\\\\"` property of [the view composition configuration](https://vega.github.io/vega-lite/docs/config.html#view-config) (`20` by default)\\\"},\\\"title\\\":{\\\"anyOf\\\":[{\\\"$ref\\\":\\\"#/definitions/Text\\\"},{\\\"$ref\\\":\\\"#/definitions/TitleParams\\\"}],\\\"description\\\":\\\"Title for the plot.\\\"},\\\"transform\\\":{\\\"description\\\":\\\"An array of data transformations such as filter and new field calculation.\\\",\\\"items\\\":{\\\"$ref\\\":\\\"#/definitions/Transform\\\"},\\\"type\\\":\\\"array\\\"},\\\"view\\\":{\\\"$ref\\\":\\\"#/definitions/ViewBackground\\\",\\\"description\\\":\\\"An object defining the view background's fill and stroke.\\\\n\\\\n__Default value:__ none (transparent)\\\"},\\\"width\\\":{\\\"anyOf\\\":[{\\\"type\\\":\\\"number\\\"},{\\\"const\\\":\\\"container\\\",\\\"type\\\":\\\"string\\\"},{\\\"$ref\\\":\\\"#/definitions/Step\\\"}],\\\"description\\\":\\\"The width of a visualization.\\\\n\\\\n- For a plot with a continuous x-field, width should be a number. - For a plot with either a discrete x-field or no x-field, width can be either a number indicating a fixed width or an object in the form of `{step: number}` defining the width per discrete step. (No x-field is equivalent to having one discrete step.) - To enable responsive sizing on width, it should be set to `\\\\\\\"container\\\\\\\"`.\\\\n\\\\n__Default value:__ Based on `config.view.continuousWidth` for a plot with a continuous x-field and `config.view.discreteWidth` otherwise.\\\\n\\\\n__Note:__ For plots with [`row` and `column` channels](https://vega.github.io/vega-lite/docs/encoding.html#facet), this represents the width of a single view and the `\\\\\\\"container\\\\\\\"` option cannot be used.\\\\n\\\\n__See also:__ [`width`](https://vega.github.io/vega-lite/docs/size.html) documentation.\\\"}},\\\"required\\\":[\\\"mark\\\"],\\\"type\\\":\\\"object\\\"},\\\"Field\\\":{\\\"anyOf\\\":[{\\\"$ref\\\":\\\"#/definitions/FieldName\\\"},{\\\"$ref\\\":\\\"#/definitions/RepeatRef\\\"}]},\\\"FieldDefWithoutScale\\\":{\\\"$ref\\\":\\\"#/definitions/TypedFieldDef\\\",\\\"description\\\":\\\"Field Def without scale (and without bin: \\\\\\\"binned\\\\\\\" support).\\\"},\\\"FieldEqualPredicate\\\":{\\\"additionalProperties\\\":false,\\\"properties\\\":{\\\"equal\\\":{\\\"anyOf\\\":[{\\\"type\\\":\\\"string\\\"},{\\\"type\\\":\\\"number\\\"},{\\\"type\\\":\\\"boolean\\\"},{\\\"$ref\\\":\\\"#/definitions/DateTime\\\"},{\\\"$ref\\\":\\\"#/definitions/ExprRef\\\"}],\\\"description\\\":\\\"The value that the field should be equal to.\\\"},\\\"field\\\":{\\\"$ref\\\":\\\"#/definitions/FieldName\\\",\\\"description\\\":\\\"Field to be tested.\\\"},\\\"timeUnit\\\":{\\\"anyOf\\\":[{\\\"$ref\\\":\\\"#/definitions/TimeUnit\\\"},{\\\"$ref\\\":\\\"#/definitions/TimeUnitParams\\\"}],\\\"description\\\":\\\"Time unit for the field to be tested.\\\"}},\\\"required\\\":[\\\"equal\\\",\\\"field\\\"],\\\"type\\\":\\\"object\\\"},\\\"FieldGTEPredicate\\\":{\\\"additionalProperties\\\":false,\\\"properties\\\":{\\\"field\\\":{\\\"$ref\\\":\\\"#/definitions/FieldName\\\",\\\"description\\\":\\\"Field to be tested.\\\"},\\\"gte\\\":{\\\"anyOf\\\":[{\\\"type\\\":\\\"string\\\"},{\\\"type\\\":\\\"number\\\"},{\\\"$ref\\\":\\\"#/definitions/DateTime\\\"},{\\\"$ref\\\":\\\"#/definitions/ExprRef\\\"}],\\\"description\\\":\\\"The value that the field should be greater than or equals to.\\\"},\\\"timeUnit\\\":{\\\"anyOf\\\":[{\\\"$ref\\\":\\\"#/definitions/TimeUnit\\\"},{\\\"$ref\\\":\\\"#/definitions/TimeUnitParams\\\"}],\\\"description\\\":\\\"Time unit for the field to be tested.\\\"}},\\\"required\\\":[\\\"field\\\",\\\"gte\\\"],\\\"type\\\":\\\"object\\\"},\\\"FieldGTPredicate\\\":{\\\"additionalProperties\\\":false,\\\"properties\\\":{\\\"field\\\":{\\\"$ref\\\":\\\"#/definitions/FieldName\\\",\\\"description\\\":\\\"Field to be tested.\\\"},\\\"gt\\\":{\\\"anyOf\\\":[{\\\"type\\\":\\\"string\\\"},{\\\"type\\\":\\\"number\\\"},{\\\"$ref\\\":\\\"#/definitions/DateTime\\\"},{\\\"$ref\\\":\\\"#/definitions/ExprRef\\\"}],\\\"description\\\":\\\"The value that the field should be greater than.\\\"},\\\"timeUnit\\\":{\\\"anyOf\\\":[{\\\"$ref\\\":\\\"#/definitions/TimeUnit\\\"},{\\\"$ref\\\":\\\"#/definitions/TimeUnitParams\\\"}],\\\"description\\\":\\\"Time unit for the field to be tested.\\\"}},\\\"required\\\":[\\\"field\\\",\\\"gt\\\"],\\\"type\\\":\\\"object\\\"},\\\"FieldLTEPredicate\\\":{\\\"additionalProperties\\\":false,\\\"properties\\\":{\\\"field\\\":{\\\"$ref\\\":\\\"#/definitions/FieldName\\\",\\\"description\\\":\\\"Field to be tested.\\\"},\\\"lte\\\":{\\\"anyOf\\\":[{\\\"type\\\":\\\"string\\\"},{\\\"type\\\":\\\"number\\\"},{\\\"$ref\\\":\\\"#/definitions/DateTime\\\"},{\\\"$ref\\\":\\\"#/definitions/ExprRef\\\"}],\\\"description\\\":\\\"The value that the field should be less than or equals to.\\\"},\\\"timeUnit\\\":{\\\"anyOf\\\":[{\\\"$ref\\\":\\\"#/definitions/TimeUnit\\\"},{\\\"$ref\\\":\\\"#/definitions/TimeUnitParams\\\"}],\\\"description\\\":\\\"Time unit for the field to be tested.\\\"}},\\\"required\\\":[\\\"field\\\",\\\"lte\\\"],\\\"type\\\":\\\"object\\\"},\\\"FieldLTPredicate\\\":{\\\"additionalProperties\\\":false,\\\"properties\\\":{\\\"field\\\":{\\\"$ref\\\":\\\"#/definitions/FieldName\\\",\\\"description\\\":\\\"Field to be tested.\\\"},\\\"lt\\\":{\\\"anyOf\\\":[{\\\"type\\\":\\\"string\\\"},{\\\"type\\\":\\\"number\\\"},{\\\"$ref\\\":\\\"#/definitions/DateTime\\\"},{\\\"$ref\\\":\\\"#/definitions/ExprRef\\\"}],\\\"description\\\":\\\"The value that the field should be less than.\\\"},\\\"timeUnit\\\":{\\\"anyOf\\\":[{\\\"$ref\\\":\\\"#/definitions/TimeUnit\\\"},{\\\"$ref\\\":\\\"#/definitions/TimeUnitParams\\\"}],\\\"description\\\":\\\"Time unit for the field to be tested.\\\"}},\\\"required\\\":[\\\"field\\\",\\\"lt\\\"],\\\"type\\\":\\\"object\\\"},\\\"FieldName\\\":{\\\"type\\\":\\\"string\\\"},\\\"FieldOneOfPredicate\\\":{\\\"additionalProperties\\\":false,\\\"properties\\\":{\\\"field\\\":{\\\"$ref\\\":\\\"#/definitions/FieldName\\\",\\\"description\\\":\\\"Field to be tested.\\\"},\\\"oneOf\\\":{\\\"anyOf\\\":[{\\\"items\\\":{\\\"type\\\":\\\"string\\\"},\\\"type\\\":\\\"array\\\"},{\\\"items\\\":{\\\"type\\\":\\\"number\\\"},\\\"type\\\":\\\"array\\\"},{\\\"items\\\":{\\\"type\\\":\\\"boolean\\\"},\\\"type\\\":\\\"array\\\"},{\\\"items\\\":{\\\"$ref\\\":\\\"#/definitions/DateTime\\\"},\\\"type\\\":\\\"array\\\"}],\\\"description\\\":\\\"A set of values that the `field`'s value should be a member of, for a data item included in the filtered data.\\\"},\\\"timeUnit\\\":{\\\"anyOf\\\":[{\\\"$ref\\\":\\\"#/definitions/TimeUnit\\\"},{\\\"$ref\\\":\\\"#/definitions/TimeUnitParams\\\"}],\\\"description\\\":\\\"Time unit for the field to be tested.\\\"}},\\\"required\\\":[\\\"field\\\",\\\"oneOf\\\"],\\\"type\\\":\\\"object\\\"},\\\"FieldOrDatumDefWithCondition<DatumDef,(Gradient|string|null)>\\\":{\\\"additionalProperties\\\":false,\\\"description\\\":\\\"A FieldDef with Condition<ValueDef> {    condition: {value: ...},    field: ...,    ... }\\\",\\\"properties\\\":{\\\"band\\\":{\\\"description\\\":\\\"For rect-based marks (`rect`, `bar`, and `image`), mark size relative to bandwidth of [band scales](https://vega.github.io/vega-lite/docs/scale.html#band), bins or time units. If set to `1`, the mark size is set to the bandwidth, the bin interval, or the time unit interval. If set to `0.5`, the mark size is half of the bandwidth or the time unit interval.\\\\n\\\\nFor other marks, relative position on a band of a stacked, binned, time unit or band scale. If set to `0`, the marks will be positioned at the beginning of the band. If set to `0.5`, the marks will be positioned in the middle of the band.\\\",\\\"maximum\\\":1,\\\"minimum\\\":0,\\\"type\\\":\\\"number\\\"},\\\"condition\\\":{\\\"anyOf\\\":[{\\\"$ref\\\":\\\"#/definitions/ConditionalValueDef<(Gradient|string|null|ExprRef)>\\\"},{\\\"items\\\":{\\\"$ref\\\":\\\"#/definitions/ConditionalValueDef<(Gradient|string|null|ExprRef)>\\\"},\\\"type\\\":\\\"array\\\"}],\\\"description\\\":\\\"One or more value definition(s) with [a selection or a test predicate](https://vega.github.io/vega-lite/docs/condition.html).\\\\n\\\\n__Note:__ A field definition's `condition` property can only contain [conditional value definitions](https://vega.github.io/vega-lite/docs/condition.html#value) since Vega-Lite only allows at most one encoded field per encoding channel.\\\"},\\\"datum\\\":{\\\"anyOf\\\":[{\\\"$ref\\\":\\\"#/definitions/PrimitiveValue\\\"},{\\\"$ref\\\":\\\"#/definitions/DateTime\\\"},{\\\"$ref\\\":\\\"#/definitions/ExprRef\\\"},{\\\"$ref\\\":\\\"#/definitions/RepeatRef\\\"}],\\\"description\\\":\\\"A constant value in data domain.\\\"},\\\"type\\\":{\\\"$ref\\\":\\\"#/definitions/Type\\\",\\\"description\\\":\\\"The type of measurement (`\\\\\\\"quantitative\\\\\\\"`, `\\\\\\\"temporal\\\\\\\"`, `\\\\\\\"ordinal\\\\\\\"`, or `\\\\\\\"nominal\\\\\\\"`) for the encoded field or constant value (`datum`). It can also be a `\\\\\\\"geojson\\\\\\\"` type for encoding ['geoshape'](https://vega.github.io/vega-lite/docs/geoshape.html).\\\\n\\\\nVega-Lite automatically infers data types in many cases as discussed below. However, type is required for a field if: (1) the field is not nominal and the field encoding has no specified `aggregate` (except `argmin` and `argmax`), `bin`, scale type, custom `sort` order, nor `timeUnit` or (2) if you wish to use an ordinal scale for a field with `bin` or `timeUnit`.\\\\n\\\\n__Default value:__\\\\n\\\\n1) For a data `field`, `\\\\\\\"nominal\\\\\\\"` is the default data type unless the field encoding has `aggregate`, `channel`, `bin`, scale type, `sort`, or `timeUnit` that satisfies the following criteria: - `\\\\\\\"quantitative\\\\\\\"` is the default type if (1) the encoded field contains `bin` or `aggregate` except `\\\\\\\"argmin\\\\\\\"` and `\\\\\\\"argmax\\\\\\\"`, (2) the encoding channel is `latitude` or `longitude` channel or (3) if the specified scale type is [a quantitative scale](https://vega.github.io/vega-lite/docs/scale.html#type). - `\\\\\\\"temporal\\\\\\\"` is the default type if (1) the encoded field contains `timeUnit` or (2) the specified scale type is a time or utc scale - `ordinal\\\\\\\"\\\\\\\"` is the default type if (1) the encoded field contains a [custom `sort` order](https://vega.github.io/vega-lite/docs/sort.html#specifying-custom-sort-order), (2) the specified scale type is an ordinal/point/band scale, or (3) the encoding channel is `order`.\\\\n\\\\n2) For a constant value in data domain (`datum`): - `\\\\\\\"quantitative\\\\\\\"` if the datum is a number - `\\\\\\\"nominal\\\\\\\"` if the datum is a string - `\\\\\\\"temporal\\\\\\\"` if the datum is [a date time object](https://vega.github.io/vega-lite/docs/datetime.html)\\\\n\\\\n__Note:__ - Data `type` describes the semantics of the data rather than the primitive data types (number, string, etc.). The same primitive data type can have different types of measurement. For example, numeric data can represent quantitative, ordinal, or nominal data. - Data values for a temporal field can be either a date-time string (e.g., `\\\\\\\"2015-03-07 12:32:17\\\\\\\"`, `\\\\\\\"17:01\\\\\\\"`, `\\\\\\\"2015-03-16\\\\\\\"`. `\\\\\\\"2015\\\\\\\"`) or a timestamp number (e.g., `1552199579097`). - When using with [`bin`](https://vega.github.io/vega-lite/docs/bin.html), the `type` property can be either `\\\\\\\"quantitative\\\\\\\"` (for using a linear bin scale) or [`\\\\\\\"ordinal\\\\\\\"` (for using an ordinal bin scale)](https://vega.github.io/vega-lite/docs/type.html#cast-bin). - When using with [`timeUnit`](https://vega.github.io/vega-lite/docs/timeunit.html), the `type` property can be either `\\\\\\\"temporal\\\\\\\"` (default, for using a temporal scale) or [`\\\\\\\"ordinal\\\\\\\"` (for using an ordinal scale)](https://vega.github.io/vega-lite/docs/type.html#cast-bin). - When using with [`aggregate`](https://vega.github.io/vega-lite/docs/aggregate.html), the `type` property refers to the post-aggregation data type. For example, we can calculate count `distinct` of a categorical field `\\\\\\\"cat\\\\\\\"` using `{\\\\\\\"aggregate\\\\\\\": \\\\\\\"distinct\\\\\\\", \\\\\\\"field\\\\\\\": \\\\\\\"cat\\\\\\\"}`. The `\\\\\\\"type\\\\\\\"` of the aggregate output is `\\\\\\\"quantitative\\\\\\\"`. - Secondary channels (e.g., `x2`, `y2`, `xError`, `yError`) do not have `type` as they must have exactly the same type as their primary channels (e.g., `x`, `y`).\\\\n\\\\n__See also:__ [`type`](https://vega.github.io/vega-lite/docs/type.html) documentation.\\\"}},\\\"type\\\":\\\"object\\\"},\\\"FieldOrDatumDefWithCondition<DatumDef,(string|null)>\\\":{\\\"additionalProperties\\\":false,\\\"description\\\":\\\"A FieldDef with Condition<ValueDef> {    condition: {value: ...},    field: ...,    ... }\\\",\\\"properties\\\":{\\\"band\\\":{\\\"description\\\":\\\"For rect-based marks (`rect`, `bar`, and `image`), mark size relative to bandwidth of [band scales](https://vega.github.io/vega-lite/docs/scale.html#band), bins or time units. If set to `1`, the mark size is set to the bandwidth, the bin interval, or the time unit interval. If set to `0.5`, the mark size is half of the bandwidth or the time unit interval.\\\\n\\\\nFor other marks, relative position on a band of a stacked, binned, time unit or band scale. If set to `0`, the marks will be positioned at the beginning of the band. If set to `0.5`, the marks will be positioned in the middle of the band.\\\",\\\"maximum\\\":1,\\\"minimum\\\":0,\\\"type\\\":\\\"number\\\"},\\\"condition\\\":{\\\"anyOf\\\":[{\\\"$ref\\\":\\\"#/definitions/ConditionalValueDef<(string|null|ExprRef)>\\\"},{\\\"items\\\":{\\\"$ref\\\":\\\"#/definitions/ConditionalValueDef<(string|null|ExprRef)>\\\"},\\\"type\\\":\\\"array\\\"}],\\\"description\\\":\\\"One or more value definition(s) with [a selection or a test predicate](https://vega.github.io/vega-lite/docs/condition.html).\\\\n\\\\n__Note:__ A field definition's `condition` property can only contain [conditional value definitions](https://vega.github.io/vega-lite/docs/condition.html#value) since Vega-Lite only allows at most one encoded field per encoding channel.\\\"},\\\"datum\\\":{\\\"anyOf\\\":[{\\\"$ref\\\":\\\"#/definitions/PrimitiveValue\\\"},{\\\"$ref\\\":\\\"#/definitions/DateTime\\\"},{\\\"$ref\\\":\\\"#/definitions/ExprRef\\\"},{\\\"$ref\\\":\\\"#/definitions/RepeatRef\\\"}],\\\"description\\\":\\\"A constant value in data domain.\\\"},\\\"type\\\":{\\\"$ref\\\":\\\"#/definitions/Type\\\",\\\"description\\\":\\\"The type of measurement (`\\\\\\\"quantitative\\\\\\\"`, `\\\\\\\"temporal\\\\\\\"`, `\\\\\\\"ordinal\\\\\\\"`, or `\\\\\\\"nominal\\\\\\\"`) for the encoded field or constant value (`datum`). It can also be a `\\\\\\\"geojson\\\\\\\"` type for encoding ['geoshape'](https://vega.github.io/vega-lite/docs/geoshape.html).\\\\n\\\\nVega-Lite automatically infers data types in many cases as discussed below. However, type is required for a field if: (1) the field is not nominal and the field encoding has no specified `aggregate` (except `argmin` and `argmax`), `bin`, scale type, custom `sort` order, nor `timeUnit` or (2) if you wish to use an ordinal scale for a field with `bin` or `timeUnit`.\\\\n\\\\n__Default value:__\\\\n\\\\n1) For a data `field`, `\\\\\\\"nominal\\\\\\\"` is the default data type unless the field encoding has `aggregate`, `channel`, `bin`, scale type, `sort`, or `timeUnit` that satisfies the following criteria: - `\\\\\\\"quantitative\\\\\\\"` is the default type if (1) the encoded field contains `bin` or `aggregate` except `\\\\\\\"argmin\\\\\\\"` and `\\\\\\\"argmax\\\\\\\"`, (2) the encoding channel is `latitude` or `longitude` channel or (3) if the specified scale type is [a quantitative scale](https://vega.github.io/vega-lite/docs/scale.html#type). - `\\\\\\\"temporal\\\\\\\"` is the default type if (1) the encoded field contains `timeUnit` or (2) the specified scale type is a time or utc scale - `ordinal\\\\\\\"\\\\\\\"` is the default type if (1) the encoded field contains a [custom `sort` order](https://vega.github.io/vega-lite/docs/sort.html#specifying-custom-sort-order), (2) the specified scale type is an ordinal/point/band scale, or (3) the encoding channel is `order`.\\\\n\\\\n2) For a constant value in data domain (`datum`): - `\\\\\\\"quantitative\\\\\\\"` if the datum is a number - `\\\\\\\"nominal\\\\\\\"` if the datum is a string - `\\\\\\\"temporal\\\\\\\"` if the datum is [a date time object](https://vega.github.io/vega-lite/docs/datetime.html)\\\\n\\\\n__Note:__ - Data `type` describes the semantics of the data rather than the primitive data types (number, string, etc.). The same primitive data type can have different types of measurement. For example, numeric data can represent quantitative, ordinal, or nominal data. - Data values for a temporal field can be either a date-time string (e.g., `\\\\\\\"2015-03-07 12:32:17\\\\\\\"`, `\\\\\\\"17:01\\\\\\\"`, `\\\\\\\"2015-03-16\\\\\\\"`. `\\\\\\\"2015\\\\\\\"`) or a timestamp number (e.g., `1552199579097`). - When using with [`bin`](https://vega.github.io/vega-lite/docs/bin.html), the `type` property can be either `\\\\\\\"quantitative\\\\\\\"` (for using a linear bin scale) or [`\\\\\\\"ordinal\\\\\\\"` (for using an ordinal bin scale)](https://vega.github.io/vega-lite/docs/type.html#cast-bin). - When using with [`timeUnit`](https://vega.github.io/vega-lite/docs/timeunit.html), the `type` property can be either `\\\\\\\"temporal\\\\\\\"` (default, for using a temporal scale) or [`\\\\\\\"ordinal\\\\\\\"` (for using an ordinal scale)](https://vega.github.io/vega-lite/docs/type.html#cast-bin). - When using with [`aggregate`](https://vega.github.io/vega-lite/docs/aggregate.html), the `type` property refers to the post-aggregation data type. For example, we can calculate count `distinct` of a categorical field `\\\\\\\"cat\\\\\\\"` using `{\\\\\\\"aggregate\\\\\\\": \\\\\\\"distinct\\\\\\\", \\\\\\\"field\\\\\\\": \\\\\\\"cat\\\\\\\"}`. The `\\\\\\\"type\\\\\\\"` of the aggregate output is `\\\\\\\"quantitative\\\\\\\"`. - Secondary channels (e.g., `x2`, `y2`, `xError`, `yError`) do not have `type` as they must have exactly the same type as their primary channels (e.g., `x`, `y`).\\\\n\\\\n__See also:__ [`type`](https://vega.github.io/vega-lite/docs/type.html) documentation.\\\"}},\\\"type\\\":\\\"object\\\"},\\\"FieldOrDatumDefWithCondition<DatumDef,number>\\\":{\\\"additionalProperties\\\":false,\\\"description\\\":\\\"A FieldDef with Condition<ValueDef> {    condition: {value: ...},    field: ...,    ... }\\\",\\\"properties\\\":{\\\"band\\\":{\\\"description\\\":\\\"For rect-based marks (`rect`, `bar`, and `image`), mark size relative to bandwidth of [band scales](https://vega.github.io/vega-lite/docs/scale.html#band), bins or time units. If set to `1`, the mark size is set to the bandwidth, the bin interval, or the time unit interval. If set to `0.5`, the mark size is half of the bandwidth or the time unit interval.\\\\n\\\\nFor other marks, relative position on a band of a stacked, binned, time unit or band scale. If set to `0`, the marks will be positioned at the beginning of the band. If set to `0.5`, the marks will be positioned in the middle of the band.\\\",\\\"maximum\\\":1,\\\"minimum\\\":0,\\\"type\\\":\\\"number\\\"},\\\"condition\\\":{\\\"anyOf\\\":[{\\\"$ref\\\":\\\"#/definitions/ConditionalValueDef<(number|ExprRef)>\\\"},{\\\"items\\\":{\\\"$ref\\\":\\\"#/definitions/ConditionalValueDef<(number|ExprRef)>\\\"},\\\"type\\\":\\\"array\\\"}],\\\"description\\\":\\\"One or more value definition(s) with [a selection or a test predicate](https://vega.github.io/vega-lite/docs/condition.html).\\\\n\\\\n__Note:__ A field definition's `condition` property can only contain [conditional value definitions](https://vega.github.io/vega-lite/docs/condition.html#value) since Vega-Lite only allows at most one encoded field per encoding channel.\\\"},\\\"datum\\\":{\\\"anyOf\\\":[{\\\"$ref\\\":\\\"#/definitions/PrimitiveValue\\\"},{\\\"$ref\\\":\\\"#/definitions/DateTime\\\"},{\\\"$ref\\\":\\\"#/definitions/ExprRef\\\"},{\\\"$ref\\\":\\\"#/definitions/RepeatRef\\\"}],\\\"description\\\":\\\"A constant value in data domain.\\\"},\\\"type\\\":{\\\"$ref\\\":\\\"#/definitions/Type\\\",\\\"description\\\":\\\"The type of measurement (`\\\\\\\"quantitative\\\\\\\"`, `\\\\\\\"temporal\\\\\\\"`, `\\\\\\\"ordinal\\\\\\\"`, or `\\\\\\\"nominal\\\\\\\"`) for the encoded field or constant value (`datum`). It can also be a `\\\\\\\"geojson\\\\\\\"` type for encoding ['geoshape'](https://vega.github.io/vega-lite/docs/geoshape.html).\\\\n\\\\nVega-Lite automatically infers data types in many cases as discussed below. However, type is required for a field if: (1) the field is not nominal and the field encoding has no specified `aggregate` (except `argmin` and `argmax`), `bin`, scale type, custom `sort` order, nor `timeUnit` or (2) if you wish to use an ordinal scale for a field with `bin` or `timeUnit`.\\\\n\\\\n__Default value:__\\\\n\\\\n1) For a data `field`, `\\\\\\\"nominal\\\\\\\"` is the default data type unless the field encoding has `aggregate`, `channel`, `bin`, scale type, `sort`, or `timeUnit` that satisfies the following criteria: - `\\\\\\\"quantitative\\\\\\\"` is the default type if (1) the encoded field contains `bin` or `aggregate` except `\\\\\\\"argmin\\\\\\\"` and `\\\\\\\"argmax\\\\\\\"`, (2) the encoding channel is `latitude` or `longitude` channel or (3) if the specified scale type is [a quantitative scale](https://vega.github.io/vega-lite/docs/scale.html#type). - `\\\\\\\"temporal\\\\\\\"` is the default type if (1) the encoded field contains `timeUnit` or (2) the specified scale type is a time or utc scale - `ordinal\\\\\\\"\\\\\\\"` is the default type if (1) the encoded field contains a [custom `sort` order](https://vega.github.io/vega-lite/docs/sort.html#specifying-custom-sort-order), (2) the specified scale type is an ordinal/point/band scale, or (3) the encoding channel is `order`.\\\\n\\\\n2) For a constant value in data domain (`datum`): - `\\\\\\\"quantitative\\\\\\\"` if the datum is a number - `\\\\\\\"nominal\\\\\\\"` if the datum is a string - `\\\\\\\"temporal\\\\\\\"` if the datum is [a date time object](https://vega.github.io/vega-lite/docs/datetime.html)\\\\n\\\\n__Note:__ - Data `type` describes the semantics of the data rather than the primitive data types (number, string, etc.). The same primitive data type can have different types of measurement. For example, numeric data can represent quantitative, ordinal, or nominal data. - Data values for a temporal field can be either a date-time string (e.g., `\\\\\\\"2015-03-07 12:32:17\\\\\\\"`, `\\\\\\\"17:01\\\\\\\"`, `\\\\\\\"2015-03-16\\\\\\\"`. `\\\\\\\"2015\\\\\\\"`) or a timestamp number (e.g., `1552199579097`). - When using with [`bin`](https://vega.github.io/vega-lite/docs/bin.html), the `type` property can be either `\\\\\\\"quantitative\\\\\\\"` (for using a linear bin scale) or [`\\\\\\\"ordinal\\\\\\\"` (for using an ordinal bin scale)](https://vega.github.io/vega-lite/docs/type.html#cast-bin). - When using with [`timeUnit`](https://vega.github.io/vega-lite/docs/timeunit.html), the `type` property can be either `\\\\\\\"temporal\\\\\\\"` (default, for using a temporal scale) or [`\\\\\\\"ordinal\\\\\\\"` (for using an ordinal scale)](https://vega.github.io/vega-lite/docs/type.html#cast-bin). - When using with [`aggregate`](https://vega.github.io/vega-lite/docs/aggregate.html), the `type` property refers to the post-aggregation data type. For example, we can calculate count `distinct` of a categorical field `\\\\\\\"cat\\\\\\\"` using `{\\\\\\\"aggregate\\\\\\\": \\\\\\\"distinct\\\\\\\", \\\\\\\"field\\\\\\\": \\\\\\\"cat\\\\\\\"}`. The `\\\\\\\"type\\\\\\\"` of the aggregate output is `\\\\\\\"quantitative\\\\\\\"`. - Secondary channels (e.g., `x2`, `y2`, `xError`, `yError`) do not have `type` as they must have exactly the same type as their primary channels (e.g., `x`, `y`).\\\\n\\\\n__See also:__ [`type`](https://vega.github.io/vega-lite/docs/type.html) documentation.\\\"}},\\\"type\\\":\\\"object\\\"},\\\"FieldOrDatumDefWithCondition<DatumDef,number[]>\\\":{\\\"additionalProperties\\\":false,\\\"description\\\":\\\"A FieldDef with Condition<ValueDef> {    condition: {value: ...},    field: ...,    ... }\\\",\\\"properties\\\":{\\\"band\\\":{\\\"description\\\":\\\"For rect-based marks (`rect`, `bar`, and `image`), mark size relative to bandwidth of [band scales](https://vega.github.io/vega-lite/docs/scale.html#band), bins or time units. If set to `1`, the mark size is set to the bandwidth, the bin interval, or the time unit interval. If set to `0.5`, the mark size is half of the bandwidth or the time unit interval.\\\\n\\\\nFor other marks, relative position on a band of a stacked, binned, time unit or band scale. If set to `0`, the marks will be positioned at the beginning of the band. If set to `0.5`, the marks will be positioned in the middle of the band.\\\",\\\"maximum\\\":1,\\\"minimum\\\":0,\\\"type\\\":\\\"number\\\"},\\\"condition\\\":{\\\"anyOf\\\":[{\\\"$ref\\\":\\\"#/definitions/ConditionalValueDef<(number[]|ExprRef)>\\\"},{\\\"items\\\":{\\\"$ref\\\":\\\"#/definitions/ConditionalValueDef<(number[]|ExprRef)>\\\"},\\\"type\\\":\\\"array\\\"}],\\\"description\\\":\\\"One or more value definition(s) with [a selection or a test predicate](https://vega.github.io/vega-lite/docs/condition.html).\\\\n\\\\n__Note:__ A field definition's `condition` property can only contain [conditional value definitions](https://vega.github.io/vega-lite/docs/condition.html#value) since Vega-Lite only allows at most one encoded field per encoding channel.\\\"},\\\"datum\\\":{\\\"anyOf\\\":[{\\\"$ref\\\":\\\"#/definitions/PrimitiveValue\\\"},{\\\"$ref\\\":\\\"#/definitions/DateTime\\\"},{\\\"$ref\\\":\\\"#/definitions/ExprRef\\\"},{\\\"$ref\\\":\\\"#/definitions/RepeatRef\\\"}],\\\"description\\\":\\\"A constant value in data domain.\\\"},\\\"type\\\":{\\\"$ref\\\":\\\"#/definitions/Type\\\",\\\"description\\\":\\\"The type of measurement (`\\\\\\\"quantitative\\\\\\\"`, `\\\\\\\"temporal\\\\\\\"`, `\\\\\\\"ordinal\\\\\\\"`, or `\\\\\\\"nominal\\\\\\\"`) for the encoded field or constant value (`datum`). It can also be a `\\\\\\\"geojson\\\\\\\"` type for encoding ['geoshape'](https://vega.github.io/vega-lite/docs/geoshape.html).\\\\n\\\\nVega-Lite automatically infers data types in many cases as discussed below. However, type is required for a field if: (1) the field is not nominal and the field encoding has no specified `aggregate` (except `argmin` and `argmax`), `bin`, scale type, custom `sort` order, nor `timeUnit` or (2) if you wish to use an ordinal scale for a field with `bin` or `timeUnit`.\\\\n\\\\n__Default value:__\\\\n\\\\n1) For a data `field`, `\\\\\\\"nominal\\\\\\\"` is the default data type unless the field encoding has `aggregate`, `channel`, `bin`, scale type, `sort`, or `timeUnit` that satisfies the following criteria: - `\\\\\\\"quantitative\\\\\\\"` is the default type if (1) the encoded field contains `bin` or `aggregate` except `\\\\\\\"argmin\\\\\\\"` and `\\\\\\\"argmax\\\\\\\"`, (2) the encoding channel is `latitude` or `longitude` channel or (3) if the specified scale type is [a quantitative scale](https://vega.github.io/vega-lite/docs/scale.html#type). - `\\\\\\\"temporal\\\\\\\"` is the default type if (1) the encoded field contains `timeUnit` or (2) the specified scale type is a time or utc scale - `ordinal\\\\\\\"\\\\\\\"` is the default type if (1) the encoded field contains a [custom `sort` order](https://vega.github.io/vega-lite/docs/sort.html#specifying-custom-sort-order), (2) the specified scale type is an ordinal/point/band scale, or (3) the encoding channel is `order`.\\\\n\\\\n2) For a constant value in data domain (`datum`): - `\\\\\\\"quantitative\\\\\\\"` if the datum is a number - `\\\\\\\"nominal\\\\\\\"` if the datum is a string - `\\\\\\\"temporal\\\\\\\"` if the datum is [a date time object](https://vega.github.io/vega-lite/docs/datetime.html)\\\\n\\\\n__Note:__ - Data `type` describes the semantics of the data rather than the primitive data types (number, string, etc.). The same primitive data type can have different types of measurement. For example, numeric data can represent quantitative, ordinal, or nominal data. - Data values for a temporal field can be either a date-time string (e.g., `\\\\\\\"2015-03-07 12:32:17\\\\\\\"`, `\\\\\\\"17:01\\\\\\\"`, `\\\\\\\"2015-03-16\\\\\\\"`. `\\\\\\\"2015\\\\\\\"`) or a timestamp number (e.g., `1552199579097`). - When using with [`bin`](https://vega.github.io/vega-lite/docs/bin.html), the `type` property can be either `\\\\\\\"quantitative\\\\\\\"` (for using a linear bin scale) or [`\\\\\\\"ordinal\\\\\\\"` (for using an ordinal bin scale)](https://vega.github.io/vega-lite/docs/type.html#cast-bin). - When using with [`timeUnit`](https://vega.github.io/vega-lite/docs/timeunit.html), the `type` property can be either `\\\\\\\"temporal\\\\\\\"` (default, for using a temporal scale) or [`\\\\\\\"ordinal\\\\\\\"` (for using an ordinal scale)](https://vega.github.io/vega-lite/docs/type.html#cast-bin). - When using with [`aggregate`](https://vega.github.io/vega-lite/docs/aggregate.html), the `type` property refers to the post-aggregation data type. For example, we can calculate count `distinct` of a categorical field `\\\\\\\"cat\\\\\\\"` using `{\\\\\\\"aggregate\\\\\\\": \\\\\\\"distinct\\\\\\\", \\\\\\\"field\\\\\\\": \\\\\\\"cat\\\\\\\"}`. The `\\\\\\\"type\\\\\\\"` of the aggregate output is `\\\\\\\"quantitative\\\\\\\"`. - Secondary channels (e.g., `x2`, `y2`, `xError`, `yError`) do not have `type` as they must have exactly the same type as their primary channels (e.g., `x`, `y`).\\\\n\\\\n__See also:__ [`type`](https://vega.github.io/vega-lite/docs/type.html) documentation.\\\"}},\\\"type\\\":\\\"object\\\"},\\\"FieldOrDatumDefWithCondition<MarkPropFieldDef,(Gradient|string|null)>\\\":{\\\"additionalProperties\\\":false,\\\"description\\\":\\\"A FieldDef with Condition<ValueDef> {    condition: {value: ...},    field: ...,    ... }\\\",\\\"properties\\\":{\\\"aggregate\\\":{\\\"$ref\\\":\\\"#/definitions/Aggregate\\\",\\\"description\\\":\\\"Aggregation function for the field (e.g., `\\\\\\\"mean\\\\\\\"`, `\\\\\\\"sum\\\\\\\"`, `\\\\\\\"median\\\\\\\"`, `\\\\\\\"min\\\\\\\"`, `\\\\\\\"max\\\\\\\"`, `\\\\\\\"count\\\\\\\"`).\\\\n\\\\n__Default value:__ `undefined` (None)\\\\n\\\\n__See also:__ [`aggregate`](https://vega.github.io/vega-lite/docs/aggregate.html) documentation.\\\"},\\\"band\\\":{\\\"description\\\":\\\"For rect-based marks (`rect`, `bar`, and `image`), mark size relative to bandwidth of [band scales](https://vega.github.io/vega-lite/docs/scale.html#band), bins or time units. If set to `1`, the mark size is set to the bandwidth, the bin interval, or the time unit interval. If set to `0.5`, the mark size is half of the bandwidth or the time unit interval.\\\\n\\\\nFor other marks, relative position on a band of a stacked, binned, time unit or band scale. If set to `0`, the marks will be positioned at the beginning of the band. If set to `0.5`, the marks will be positioned in the middle of the band.\\\",\\\"maximum\\\":1,\\\"minimum\\\":0,\\\"type\\\":\\\"number\\\"},\\\"bin\\\":{\\\"anyOf\\\":[{\\\"type\\\":\\\"boolean\\\"},{\\\"$ref\\\":\\\"#/definitions/BinParams\\\"},{\\\"type\\\":\\\"null\\\"}],\\\"description\\\":\\\"A flag for binning a `quantitative` field, [an object defining binning parameters](https://vega.github.io/vega-lite/docs/bin.html#params), or indicating that the data for `x` or `y` channel are binned before they are imported into Vega-Lite (`\\\\\\\"binned\\\\\\\"`).\\\\n\\\\n- If `true`, default [binning parameters](https://vega.github.io/vega-lite/docs/bin.html) will be applied.\\\\n\\\\n- If `\\\\\\\"binned\\\\\\\"`, this indicates that the data for the `x` (or `y`) channel are already binned. You can map the bin-start field to `x` (or `y`) and the bin-end field to `x2` (or `y2`). The scale and axis will be formatted similar to binning in Vega-Lite.  To adjust the axis ticks based on the bin step, you can also set the axis's [`tickMinStep`](https://vega.github.io/vega-lite/docs/axis.html#ticks) property.\\\\n\\\\n__Default value:__ `false`\\\\n\\\\n__See also:__ [`bin`](https://vega.github.io/vega-lite/docs/bin.html) documentation.\\\"},\\\"condition\\\":{\\\"anyOf\\\":[{\\\"$ref\\\":\\\"#/definitions/ConditionalValueDef<(Gradient|string|null|ExprRef)>\\\"},{\\\"items\\\":{\\\"$ref\\\":\\\"#/definitions/ConditionalValueDef<(Gradient|string|null|ExprRef)>\\\"},\\\"type\\\":\\\"array\\\"}],\\\"description\\\":\\\"One or more value definition(s) with [a selection or a test predicate](https://vega.github.io/vega-lite/docs/condition.html).\\\\n\\\\n__Note:__ A field definition's `condition` property can only contain [conditional value definitions](https://vega.github.io/vega-lite/docs/condition.html#value) since Vega-Lite only allows at most one encoded field per encoding channel.\\\"},\\\"field\\\":{\\\"$ref\\\":\\\"#/definitions/Field\\\",\\\"description\\\":\\\"__Required.__ A string defining the name of the field from which to pull a data value or an object defining iterated values from the [`repeat`](https://vega.github.io/vega-lite/docs/repeat.html) operator.\\\\n\\\\n__See also:__ [`field`](https://vega.github.io/vega-lite/docs/field.html) documentation.\\\\n\\\\n__Notes:__ 1)  Dots (`.`) and brackets (`[` and `]`) can be used to access nested objects (e.g., `\\\\\\\"field\\\\\\\": \\\\\\\"foo.bar\\\\\\\"` and `\\\\\\\"field\\\\\\\": \\\\\\\"foo['bar']\\\\\\\"`). If field names contain dots or brackets but are not nested, you can use `\\\\\\\\\\\\\\\\` to escape dots and brackets (e.g., `\\\\\\\"a\\\\\\\\\\\\\\\\.b\\\\\\\"` and `\\\\\\\"a\\\\\\\\\\\\\\\\[0\\\\\\\\\\\\\\\\]\\\\\\\"`). See more details about escaping in the [field documentation](https://vega.github.io/vega-lite/docs/field.html). 2) `field` is not required if `aggregate` is `count`.\\\"},\\\"legend\\\":{\\\"anyOf\\\":[{\\\"$ref\\\":\\\"#/definitions/Legend\\\"},{\\\"type\\\":\\\"null\\\"}],\\\"description\\\":\\\"An object defining properties of the legend. If `null`, the legend for the encoding channel will be removed.\\\\n\\\\n__Default value:__ If undefined, default [legend properties](https://vega.github.io/vega-lite/docs/legend.html) are applied.\\\\n\\\\n__See also:__ [`legend`](https://vega.github.io/vega-lite/docs/legend.html) documentation.\\\"},\\\"scale\\\":{\\\"anyOf\\\":[{\\\"$ref\\\":\\\"#/definitions/Scale\\\"},{\\\"type\\\":\\\"null\\\"}],\\\"description\\\":\\\"An object defining properties of the channel's scale, which is the function that transforms values in the data domain (numbers, dates, strings, etc) to visual values (pixels, colors, sizes) of the encoding channels.\\\\n\\\\nIf `null`, the scale will be [disabled and the data value will be directly encoded](https://vega.github.io/vega-lite/docs/scale.html#disable).\\\\n\\\\n__Default value:__ If undefined, default [scale properties](https://vega.github.io/vega-lite/docs/scale.html) are applied.\\\\n\\\\n__See also:__ [`scale`](https://vega.github.io/vega-lite/docs/scale.html) documentation.\\\"},\\\"sort\\\":{\\\"$ref\\\":\\\"#/definitions/Sort\\\",\\\"description\\\":\\\"Sort order for the encoded field.\\\\n\\\\nFor continuous fields (quantitative or temporal), `sort` can be either `\\\\\\\"ascending\\\\\\\"` or `\\\\\\\"descending\\\\\\\"`.\\\\n\\\\nFor discrete fields, `sort` can be one of the following: - `\\\\\\\"ascending\\\\\\\"` or `\\\\\\\"descending\\\\\\\"` -- for sorting by the values' natural order in JavaScript. - [A string indicating an encoding channel name to sort by](https://vega.github.io/vega-lite/docs/sort.html#sort-by-encoding) (e.g., `\\\\\\\"x\\\\\\\"` or `\\\\\\\"y\\\\\\\"`) with an optional minus prefix for descending sort (e.g., `\\\\\\\"-x\\\\\\\"` to sort by x-field, descending). This channel string is short-form of [a sort-by-encoding definition](https://vega.github.io/vega-lite/docs/sort.html#sort-by-encoding). For example, `\\\\\\\"sort\\\\\\\": \\\\\\\"-x\\\\\\\"` is equivalent to `\\\\\\\"sort\\\\\\\": {\\\\\\\"encoding\\\\\\\": \\\\\\\"x\\\\\\\", \\\\\\\"order\\\\\\\": \\\\\\\"descending\\\\\\\"}`. - [A sort field definition](https://vega.github.io/vega-lite/docs/sort.html#sort-field) for sorting by another field. - [An array specifying the field values in preferred order](https://vega.github.io/vega-lite/docs/sort.html#sort-array). In this case, the sort order will obey the values in the array, followed by any unspecified values in their original order. For discrete time field, values in the sort array can be [date-time definition objects](types#datetime). In addition, for time units `\\\\\\\"month\\\\\\\"` and `\\\\\\\"day\\\\\\\"`, the values can be the month or day names (case insensitive) or their 3-letter initials (e.g., `\\\\\\\"Mon\\\\\\\"`, `\\\\\\\"Tue\\\\\\\"`). - `null` indicating no sort.\\\\n\\\\n__Default value:__ `\\\\\\\"ascending\\\\\\\"`\\\\n\\\\n__Note:__ `null` and sorting by another channel is not supported for `row` and `column`.\\\\n\\\\n__See also:__ [`sort`](https://vega.github.io/vega-lite/docs/sort.html) documentation.\\\"},\\\"timeUnit\\\":{\\\"anyOf\\\":[{\\\"$ref\\\":\\\"#/definitions/TimeUnit\\\"},{\\\"$ref\\\":\\\"#/definitions/TimeUnitParams\\\"}],\\\"description\\\":\\\"Time unit (e.g., `year`, `yearmonth`, `month`, `hours`) for a temporal field. or [a temporal field that gets casted as ordinal](https://vega.github.io/vega-lite/docs/type.html#cast).\\\\n\\\\n__Default value:__ `undefined` (None)\\\\n\\\\n__See also:__ [`timeUnit`](https://vega.github.io/vega-lite/docs/timeunit.html) documentation.\\\"},\\\"title\\\":{\\\"anyOf\\\":[{\\\"$ref\\\":\\\"#/definitions/Text\\\"},{\\\"type\\\":\\\"null\\\"}],\\\"description\\\":\\\"A title for the field. If `null`, the title will be removed.\\\\n\\\\n__Default value:__  derived from the field's name and transformation function (`aggregate`, `bin` and `timeUnit`). If the field has an aggregate function, the function is displayed as part of the title (e.g., `\\\\\\\"Sum of Profit\\\\\\\"`). If the field is binned or has a time unit applied, the applied function is shown in parentheses (e.g., `\\\\\\\"Profit (binned)\\\\\\\"`, `\\\\\\\"Transaction Date (year-month)\\\\\\\"`). Otherwise, the title is simply the field name.\\\\n\\\\n__Notes__:\\\\n\\\\n1) You can customize the default field title format by providing the [`fieldTitle`](https://vega.github.io/vega-lite/docs/config.html#top-level-config) property in the [config](https://vega.github.io/vega-lite/docs/config.html) or [`fieldTitle` function via the `compile` function's options](https://vega.github.io/vega-lite/docs/compile.html#field-title).\\\\n\\\\n2) If both field definition's `title` and axis, header, or legend `title` are defined, axis/header/legend title will be used.\\\"},\\\"type\\\":{\\\"$ref\\\":\\\"#/definitions/StandardType\\\",\\\"description\\\":\\\"The type of measurement (`\\\\\\\"quantitative\\\\\\\"`, `\\\\\\\"temporal\\\\\\\"`, `\\\\\\\"ordinal\\\\\\\"`, or `\\\\\\\"nominal\\\\\\\"`) for the encoded field or constant value (`datum`). It can also be a `\\\\\\\"geojson\\\\\\\"` type for encoding ['geoshape'](https://vega.github.io/vega-lite/docs/geoshape.html).\\\\n\\\\nVega-Lite automatically infers data types in many cases as discussed below. However, type is required for a field if: (1) the field is not nominal and the field encoding has no specified `aggregate` (except `argmin` and `argmax`), `bin`, scale type, custom `sort` order, nor `timeUnit` or (2) if you wish to use an ordinal scale for a field with `bin` or `timeUnit`.\\\\n\\\\n__Default value:__\\\\n\\\\n1) For a data `field`, `\\\\\\\"nominal\\\\\\\"` is the default data type unless the field encoding has `aggregate`, `channel`, `bin`, scale type, `sort`, or `timeUnit` that satisfies the following criteria: - `\\\\\\\"quantitative\\\\\\\"` is the default type if (1) the encoded field contains `bin` or `aggregate` except `\\\\\\\"argmin\\\\\\\"` and `\\\\\\\"argmax\\\\\\\"`, (2) the encoding channel is `latitude` or `longitude` channel or (3) if the specified scale type is [a quantitative scale](https://vega.github.io/vega-lite/docs/scale.html#type). - `\\\\\\\"temporal\\\\\\\"` is the default type if (1) the encoded field contains `timeUnit` or (2) the specified scale type is a time or utc scale - `ordinal\\\\\\\"\\\\\\\"` is the default type if (1) the encoded field contains a [custom `sort` order](https://vega.github.io/vega-lite/docs/sort.html#specifying-custom-sort-order), (2) the specified scale type is an ordinal/point/band scale, or (3) the encoding channel is `order`.\\\\n\\\\n2) For a constant value in data domain (`datum`): - `\\\\\\\"quantitative\\\\\\\"` if the datum is a number - `\\\\\\\"nominal\\\\\\\"` if the datum is a string - `\\\\\\\"temporal\\\\\\\"` if the datum is [a date time object](https://vega.github.io/vega-lite/docs/datetime.html)\\\\n\\\\n__Note:__ - Data `type` describes the semantics of the data rather than the primitive data types (number, string, etc.). The same primitive data type can have different types of measurement. For example, numeric data can represent quantitative, ordinal, or nominal data. - Data values for a temporal field can be either a date-time string (e.g., `\\\\\\\"2015-03-07 12:32:17\\\\\\\"`, `\\\\\\\"17:01\\\\\\\"`, `\\\\\\\"2015-03-16\\\\\\\"`. `\\\\\\\"2015\\\\\\\"`) or a timestamp number (e.g., `1552199579097`). - When using with [`bin`](https://vega.github.io/vega-lite/docs/bin.html), the `type` property can be either `\\\\\\\"quantitative\\\\\\\"` (for using a linear bin scale) or [`\\\\\\\"ordinal\\\\\\\"` (for using an ordinal bin scale)](https://vega.github.io/vega-lite/docs/type.html#cast-bin). - When using with [`timeUnit`](https://vega.github.io/vega-lite/docs/timeunit.html), the `type` property can be either `\\\\\\\"temporal\\\\\\\"` (default, for using a temporal scale) or [`\\\\\\\"ordinal\\\\\\\"` (for using an ordinal scale)](https://vega.github.io/vega-lite/docs/type.html#cast-bin). - When using with [`aggregate`](https://vega.github.io/vega-lite/docs/aggregate.html), the `type` property refers to the post-aggregation data type. For example, we can calculate count `distinct` of a categorical field `\\\\\\\"cat\\\\\\\"` using `{\\\\\\\"aggregate\\\\\\\": \\\\\\\"distinct\\\\\\\", \\\\\\\"field\\\\\\\": \\\\\\\"cat\\\\\\\"}`. The `\\\\\\\"type\\\\\\\"` of the aggregate output is `\\\\\\\"quantitative\\\\\\\"`. - Secondary channels (e.g., `x2`, `y2`, `xError`, `yError`) do not have `type` as they must have exactly the same type as their primary channels (e.g., `x`, `y`).\\\\n\\\\n__See also:__ [`type`](https://vega.github.io/vega-lite/docs/type.html) documentation.\\\"}},\\\"type\\\":\\\"object\\\"},\\\"FieldOrDatumDefWithCondition<MarkPropFieldDef,number>\\\":{\\\"additionalProperties\\\":false,\\\"description\\\":\\\"A FieldDef with Condition<ValueDef> {    condition: {value: ...},    field: ...,    ... }\\\",\\\"properties\\\":{\\\"aggregate\\\":{\\\"$ref\\\":\\\"#/definitions/Aggregate\\\",\\\"description\\\":\\\"Aggregation function for the field (e.g., `\\\\\\\"mean\\\\\\\"`, `\\\\\\\"sum\\\\\\\"`, `\\\\\\\"median\\\\\\\"`, `\\\\\\\"min\\\\\\\"`, `\\\\\\\"max\\\\\\\"`, `\\\\\\\"count\\\\\\\"`).\\\\n\\\\n__Default value:__ `undefined` (None)\\\\n\\\\n__See also:__ [`aggregate`](https://vega.github.io/vega-lite/docs/aggregate.html) documentation.\\\"},\\\"band\\\":{\\\"description\\\":\\\"For rect-based marks (`rect`, `bar`, and `image`), mark size relative to bandwidth of [band scales](https://vega.github.io/vega-lite/docs/scale.html#band), bins or time units. If set to `1`, the mark size is set to the bandwidth, the bin interval, or the time unit interval. If set to `0.5`, the mark size is half of the bandwidth or the time unit interval.\\\\n\\\\nFor other marks, relative position on a band of a stacked, binned, time unit or band scale. If set to `0`, the marks will be positioned at the beginning of the band. If set to `0.5`, the marks will be positioned in the middle of the band.\\\",\\\"maximum\\\":1,\\\"minimum\\\":0,\\\"type\\\":\\\"number\\\"},\\\"bin\\\":{\\\"anyOf\\\":[{\\\"type\\\":\\\"boolean\\\"},{\\\"$ref\\\":\\\"#/definitions/BinParams\\\"},{\\\"type\\\":\\\"null\\\"}],\\\"description\\\":\\\"A flag for binning a `quantitative` field, [an object defining binning parameters](https://vega.github.io/vega-lite/docs/bin.html#params), or indicating that the data for `x` or `y` channel are binned before they are imported into Vega-Lite (`\\\\\\\"binned\\\\\\\"`).\\\\n\\\\n- If `true`, default [binning parameters](https://vega.github.io/vega-lite/docs/bin.html) will be applied.\\\\n\\\\n- If `\\\\\\\"binned\\\\\\\"`, this indicates that the data for the `x` (or `y`) channel are already binned. You can map the bin-start field to `x` (or `y`) and the bin-end field to `x2` (or `y2`). The scale and axis will be formatted similar to binning in Vega-Lite.  To adjust the axis ticks based on the bin step, you can also set the axis's [`tickMinStep`](https://vega.github.io/vega-lite/docs/axis.html#ticks) property.\\\\n\\\\n__Default value:__ `false`\\\\n\\\\n__See also:__ [`bin`](https://vega.github.io/vega-lite/docs/bin.html) documentation.\\\"},\\\"condition\\\":{\\\"anyOf\\\":[{\\\"$ref\\\":\\\"#/definitions/ConditionalValueDef<(number|ExprRef)>\\\"},{\\\"items\\\":{\\\"$ref\\\":\\\"#/definitions/ConditionalValueDef<(number|ExprRef)>\\\"},\\\"type\\\":\\\"array\\\"}],\\\"description\\\":\\\"One or more value definition(s) with [a selection or a test predicate](https://vega.github.io/vega-lite/docs/condition.html).\\\\n\\\\n__Note:__ A field definition's `condition` property can only contain [conditional value definitions](https://vega.github.io/vega-lite/docs/condition.html#value) since Vega-Lite only allows at most one encoded field per encoding channel.\\\"},\\\"field\\\":{\\\"$ref\\\":\\\"#/definitions/Field\\\",\\\"description\\\":\\\"__Required.__ A string defining the name of the field from which to pull a data value or an object defining iterated values from the [`repeat`](https://vega.github.io/vega-lite/docs/repeat.html) operator.\\\\n\\\\n__See also:__ [`field`](https://vega.github.io/vega-lite/docs/field.html) documentation.\\\\n\\\\n__Notes:__ 1)  Dots (`.`) and brackets (`[` and `]`) can be used to access nested objects (e.g., `\\\\\\\"field\\\\\\\": \\\\\\\"foo.bar\\\\\\\"` and `\\\\\\\"field\\\\\\\": \\\\\\\"foo['bar']\\\\\\\"`). If field names contain dots or brackets but are not nested, you can use `\\\\\\\\\\\\\\\\` to escape dots and brackets (e.g., `\\\\\\\"a\\\\\\\\\\\\\\\\.b\\\\\\\"` and `\\\\\\\"a\\\\\\\\\\\\\\\\[0\\\\\\\\\\\\\\\\]\\\\\\\"`). See more details about escaping in the [field documentation](https://vega.github.io/vega-lite/docs/field.html). 2) `field` is not required if `aggregate` is `count`.\\\"},\\\"legend\\\":{\\\"anyOf\\\":[{\\\"$ref\\\":\\\"#/definitions/Legend\\\"},{\\\"type\\\":\\\"null\\\"}],\\\"description\\\":\\\"An object defining properties of the legend. If `null`, the legend for the encoding channel will be removed.\\\\n\\\\n__Default value:__ If undefined, default [legend properties](https://vega.github.io/vega-lite/docs/legend.html) are applied.\\\\n\\\\n__See also:__ [`legend`](https://vega.github.io/vega-lite/docs/legend.html) documentation.\\\"},\\\"scale\\\":{\\\"anyOf\\\":[{\\\"$ref\\\":\\\"#/definitions/Scale\\\"},{\\\"type\\\":\\\"null\\\"}],\\\"description\\\":\\\"An object defining properties of the channel's scale, which is the function that transforms values in the data domain (numbers, dates, strings, etc) to visual values (pixels, colors, sizes) of the encoding channels.\\\\n\\\\nIf `null`, the scale will be [disabled and the data value will be directly encoded](https://vega.github.io/vega-lite/docs/scale.html#disable).\\\\n\\\\n__Default value:__ If undefined, default [scale properties](https://vega.github.io/vega-lite/docs/scale.html) are applied.\\\\n\\\\n__See also:__ [`scale`](https://vega.github.io/vega-lite/docs/scale.html) documentation.\\\"},\\\"sort\\\":{\\\"$ref\\\":\\\"#/definitions/Sort\\\",\\\"description\\\":\\\"Sort order for the encoded field.\\\\n\\\\nFor continuous fields (quantitative or temporal), `sort` can be either `\\\\\\\"ascending\\\\\\\"` or `\\\\\\\"descending\\\\\\\"`.\\\\n\\\\nFor discrete fields, `sort` can be one of the following: - `\\\\\\\"ascending\\\\\\\"` or `\\\\\\\"descending\\\\\\\"` -- for sorting by the values' natural order in JavaScript. - [A string indicating an encoding channel name to sort by](https://vega.github.io/vega-lite/docs/sort.html#sort-by-encoding) (e.g., `\\\\\\\"x\\\\\\\"` or `\\\\\\\"y\\\\\\\"`) with an optional minus prefix for descending sort (e.g., `\\\\\\\"-x\\\\\\\"` to sort by x-field, descending). This channel string is short-form of [a sort-by-encoding definition](https://vega.github.io/vega-lite/docs/sort.html#sort-by-encoding). For example, `\\\\\\\"sort\\\\\\\": \\\\\\\"-x\\\\\\\"` is equivalent to `\\\\\\\"sort\\\\\\\": {\\\\\\\"encoding\\\\\\\": \\\\\\\"x\\\\\\\", \\\\\\\"order\\\\\\\": \\\\\\\"descending\\\\\\\"}`. - [A sort field definition](https://vega.github.io/vega-lite/docs/sort.html#sort-field) for sorting by another field. - [An array specifying the field values in preferred order](https://vega.github.io/vega-lite/docs/sort.html#sort-array). In this case, the sort order will obey the values in the array, followed by any unspecified values in their original order. For discrete time field, values in the sort array can be [date-time definition objects](types#datetime). In addition, for time units `\\\\\\\"month\\\\\\\"` and `\\\\\\\"day\\\\\\\"`, the values can be the month or day names (case insensitive) or their 3-letter initials (e.g., `\\\\\\\"Mon\\\\\\\"`, `\\\\\\\"Tue\\\\\\\"`). - `null` indicating no sort.\\\\n\\\\n__Default value:__ `\\\\\\\"ascending\\\\\\\"`\\\\n\\\\n__Note:__ `null` and sorting by another channel is not supported for `row` and `column`.\\\\n\\\\n__See also:__ [`sort`](https://vega.github.io/vega-lite/docs/sort.html) documentation.\\\"},\\\"timeUnit\\\":{\\\"anyOf\\\":[{\\\"$ref\\\":\\\"#/definitions/TimeUnit\\\"},{\\\"$ref\\\":\\\"#/definitions/TimeUnitParams\\\"}],\\\"description\\\":\\\"Time unit (e.g., `year`, `yearmonth`, `month`, `hours`) for a temporal field. or [a temporal field that gets casted as ordinal](https://vega.github.io/vega-lite/docs/type.html#cast).\\\\n\\\\n__Default value:__ `undefined` (None)\\\\n\\\\n__See also:__ [`timeUnit`](https://vega.github.io/vega-lite/docs/timeunit.html) documentation.\\\"},\\\"title\\\":{\\\"anyOf\\\":[{\\\"$ref\\\":\\\"#/definitions/Text\\\"},{\\\"type\\\":\\\"null\\\"}],\\\"description\\\":\\\"A title for the field. If `null`, the title will be removed.\\\\n\\\\n__Default value:__  derived from the field's name and transformation function (`aggregate`, `bin` and `timeUnit`). If the field has an aggregate function, the function is displayed as part of the title (e.g., `\\\\\\\"Sum of Profit\\\\\\\"`). If the field is binned or has a time unit applied, the applied function is shown in parentheses (e.g., `\\\\\\\"Profit (binned)\\\\\\\"`, `\\\\\\\"Transaction Date (year-month)\\\\\\\"`). Otherwise, the title is simply the field name.\\\\n\\\\n__Notes__:\\\\n\\\\n1) You can customize the default field title format by providing the [`fieldTitle`](https://vega.github.io/vega-lite/docs/config.html#top-level-config) property in the [config](https://vega.github.io/vega-lite/docs/config.html) or [`fieldTitle` function via the `compile` function's options](https://vega.github.io/vega-lite/docs/compile.html#field-title).\\\\n\\\\n2) If both field definition's `title` and axis, header, or legend `title` are defined, axis/header/legend title will be used.\\\"},\\\"type\\\":{\\\"$ref\\\":\\\"#/definitions/StandardType\\\",\\\"description\\\":\\\"The type of measurement (`\\\\\\\"quantitative\\\\\\\"`, `\\\\\\\"temporal\\\\\\\"`, `\\\\\\\"ordinal\\\\\\\"`, or `\\\\\\\"nominal\\\\\\\"`) for the encoded field or constant value (`datum`). It can also be a `\\\\\\\"geojson\\\\\\\"` type for encoding ['geoshape'](https://vega.github.io/vega-lite/docs/geoshape.html).\\\\n\\\\nVega-Lite automatically infers data types in many cases as discussed below. However, type is required for a field if: (1) the field is not nominal and the field encoding has no specified `aggregate` (except `argmin` and `argmax`), `bin`, scale type, custom `sort` order, nor `timeUnit` or (2) if you wish to use an ordinal scale for a field with `bin` or `timeUnit`.\\\\n\\\\n__Default value:__\\\\n\\\\n1) For a data `field`, `\\\\\\\"nominal\\\\\\\"` is the default data type unless the field encoding has `aggregate`, `channel`, `bin`, scale type, `sort`, or `timeUnit` that satisfies the following criteria: - `\\\\\\\"quantitative\\\\\\\"` is the default type if (1) the encoded field contains `bin` or `aggregate` except `\\\\\\\"argmin\\\\\\\"` and `\\\\\\\"argmax\\\\\\\"`, (2) the encoding channel is `latitude` or `longitude` channel or (3) if the specified scale type is [a quantitative scale](https://vega.github.io/vega-lite/docs/scale.html#type). - `\\\\\\\"temporal\\\\\\\"` is the default type if (1) the encoded field contains `timeUnit` or (2) the specified scale type is a time or utc scale - `ordinal\\\\\\\"\\\\\\\"` is the default type if (1) the encoded field contains a [custom `sort` order](https://vega.github.io/vega-lite/docs/sort.html#specifying-custom-sort-order), (2) the specified scale type is an ordinal/point/band scale, or (3) the encoding channel is `order`.\\\\n\\\\n2) For a constant value in data domain (`datum`): - `\\\\\\\"quantitative\\\\\\\"` if the datum is a number - `\\\\\\\"nominal\\\\\\\"` if the datum is a string - `\\\\\\\"temporal\\\\\\\"` if the datum is [a date time object](https://vega.github.io/vega-lite/docs/datetime.html)\\\\n\\\\n__Note:__ - Data `type` describes the semantics of the data rather than the primitive data types (number, string, etc.). The same primitive data type can have different types of measurement. For example, numeric data can represent quantitative, ordinal, or nominal data. - Data values for a temporal field can be either a date-time string (e.g., `\\\\\\\"2015-03-07 12:32:17\\\\\\\"`, `\\\\\\\"17:01\\\\\\\"`, `\\\\\\\"2015-03-16\\\\\\\"`. `\\\\\\\"2015\\\\\\\"`) or a timestamp number (e.g., `1552199579097`). - When using with [`bin`](https://vega.github.io/vega-lite/docs/bin.html), the `type` property can be either `\\\\\\\"quantitative\\\\\\\"` (for using a linear bin scale) or [`\\\\\\\"ordinal\\\\\\\"` (for using an ordinal bin scale)](https://vega.github.io/vega-lite/docs/type.html#cast-bin). - When using with [`timeUnit`](https://vega.github.io/vega-lite/docs/timeunit.html), the `type` property can be either `\\\\\\\"temporal\\\\\\\"` (default, for using a temporal scale) or [`\\\\\\\"ordinal\\\\\\\"` (for using an ordinal scale)](https://vega.github.io/vega-lite/docs/type.html#cast-bin). - When using with [`aggregate`](https://vega.github.io/vega-lite/docs/aggregate.html), the `type` property refers to the post-aggregation data type. For example, we can calculate count `distinct` of a categorical field `\\\\\\\"cat\\\\\\\"` using `{\\\\\\\"aggregate\\\\\\\": \\\\\\\"distinct\\\\\\\", \\\\\\\"field\\\\\\\": \\\\\\\"cat\\\\\\\"}`. The `\\\\\\\"type\\\\\\\"` of the aggregate output is `\\\\\\\"quantitative\\\\\\\"`. - Secondary channels (e.g., `x2`, `y2`, `xError`, `yError`) do not have `type` as they must have exactly the same type as their primary channels (e.g., `x`, `y`).\\\\n\\\\n__See also:__ [`type`](https://vega.github.io/vega-lite/docs/type.html) documentation.\\\"}},\\\"type\\\":\\\"object\\\"},\\\"FieldOrDatumDefWithCondition<MarkPropFieldDef,number[]>\\\":{\\\"additionalProperties\\\":false,\\\"description\\\":\\\"A FieldDef with Condition<ValueDef> {    condition: {value: ...},    field: ...,    ... }\\\",\\\"properties\\\":{\\\"aggregate\\\":{\\\"$ref\\\":\\\"#/definitions/Aggregate\\\",\\\"description\\\":\\\"Aggregation function for the field (e.g., `\\\\\\\"mean\\\\\\\"`, `\\\\\\\"sum\\\\\\\"`, `\\\\\\\"median\\\\\\\"`, `\\\\\\\"min\\\\\\\"`, `\\\\\\\"max\\\\\\\"`, `\\\\\\\"count\\\\\\\"`).\\\\n\\\\n__Default value:__ `undefined` (None)\\\\n\\\\n__See also:__ [`aggregate`](https://vega.github.io/vega-lite/docs/aggregate.html) documentation.\\\"},\\\"band\\\":{\\\"description\\\":\\\"For rect-based marks (`rect`, `bar`, and `image`), mark size relative to bandwidth of [band scales](https://vega.github.io/vega-lite/docs/scale.html#band), bins or time units. If set to `1`, the mark size is set to the bandwidth, the bin interval, or the time unit interval. If set to `0.5`, the mark size is half of the bandwidth or the time unit interval.\\\\n\\\\nFor other marks, relative position on a band of a stacked, binned, time unit or band scale. If set to `0`, the marks will be positioned at the beginning of the band. If set to `0.5`, the marks will be positioned in the middle of the band.\\\",\\\"maximum\\\":1,\\\"minimum\\\":0,\\\"type\\\":\\\"number\\\"},\\\"bin\\\":{\\\"anyOf\\\":[{\\\"type\\\":\\\"boolean\\\"},{\\\"$ref\\\":\\\"#/definitions/BinParams\\\"},{\\\"type\\\":\\\"null\\\"}],\\\"description\\\":\\\"A flag for binning a `quantitative` field, [an object defining binning parameters](https://vega.github.io/vega-lite/docs/bin.html#params), or indicating that the data for `x` or `y` channel are binned before they are imported into Vega-Lite (`\\\\\\\"binned\\\\\\\"`).\\\\n\\\\n- If `true`, default [binning parameters](https://vega.github.io/vega-lite/docs/bin.html) will be applied.\\\\n\\\\n- If `\\\\\\\"binned\\\\\\\"`, this indicates that the data for the `x` (or `y`) channel are already binned. You can map the bin-start field to `x` (or `y`) and the bin-end field to `x2` (or `y2`). The scale and axis will be formatted similar to binning in Vega-Lite.  To adjust the axis ticks based on the bin step, you can also set the axis's [`tickMinStep`](https://vega.github.io/vega-lite/docs/axis.html#ticks) property.\\\\n\\\\n__Default value:__ `false`\\\\n\\\\n__See also:__ [`bin`](https://vega.github.io/vega-lite/docs/bin.html) documentation.\\\"},\\\"condition\\\":{\\\"anyOf\\\":[{\\\"$ref\\\":\\\"#/definitions/ConditionalValueDef<(number[]|ExprRef)>\\\"},{\\\"items\\\":{\\\"$ref\\\":\\\"#/definitions/ConditionalValueDef<(number[]|ExprRef)>\\\"},\\\"type\\\":\\\"array\\\"}],\\\"description\\\":\\\"One or more value definition(s) with [a selection or a test predicate](https://vega.github.io/vega-lite/docs/condition.html).\\\\n\\\\n__Note:__ A field definition's `condition` property can only contain [conditional value definitions](https://vega.github.io/vega-lite/docs/condition.html#value) since Vega-Lite only allows at most one encoded field per encoding channel.\\\"},\\\"field\\\":{\\\"$ref\\\":\\\"#/definitions/Field\\\",\\\"description\\\":\\\"__Required.__ A string defining the name of the field from which to pull a data value or an object defining iterated values from the [`repeat`](https://vega.github.io/vega-lite/docs/repeat.html) operator.\\\\n\\\\n__See also:__ [`field`](https://vega.github.io/vega-lite/docs/field.html) documentation.\\\\n\\\\n__Notes:__ 1)  Dots (`.`) and brackets (`[` and `]`) can be used to access nested objects (e.g., `\\\\\\\"field\\\\\\\": \\\\\\\"foo.bar\\\\\\\"` and `\\\\\\\"field\\\\\\\": \\\\\\\"foo['bar']\\\\\\\"`). If field names contain dots or brackets but are not nested, you can use `\\\\\\\\\\\\\\\\` to escape dots and brackets (e.g., `\\\\\\\"a\\\\\\\\\\\\\\\\.b\\\\\\\"` and `\\\\\\\"a\\\\\\\\\\\\\\\\[0\\\\\\\\\\\\\\\\]\\\\\\\"`). See more details about escaping in the [field documentation](https://vega.github.io/vega-lite/docs/field.html). 2) `field` is not required if `aggregate` is `count`.\\\"},\\\"legend\\\":{\\\"anyOf\\\":[{\\\"$ref\\\":\\\"#/definitions/Legend\\\"},{\\\"type\\\":\\\"null\\\"}],\\\"description\\\":\\\"An object defining properties of the legend. If `null`, the legend for the encoding channel will be removed.\\\\n\\\\n__Default value:__ If undefined, default [legend properties](https://vega.github.io/vega-lite/docs/legend.html) are applied.\\\\n\\\\n__See also:__ [`legend`](https://vega.github.io/vega-lite/docs/legend.html) documentation.\\\"},\\\"scale\\\":{\\\"anyOf\\\":[{\\\"$ref\\\":\\\"#/definitions/Scale\\\"},{\\\"type\\\":\\\"null\\\"}],\\\"description\\\":\\\"An object defining properties of the channel's scale, which is the function that transforms values in the data domain (numbers, dates, strings, etc) to visual values (pixels, colors, sizes) of the encoding channels.\\\\n\\\\nIf `null`, the scale will be [disabled and the data value will be directly encoded](https://vega.github.io/vega-lite/docs/scale.html#disable).\\\\n\\\\n__Default value:__ If undefined, default [scale properties](https://vega.github.io/vega-lite/docs/scale.html) are applied.\\\\n\\\\n__See also:__ [`scale`](https://vega.github.io/vega-lite/docs/scale.html) documentation.\\\"},\\\"sort\\\":{\\\"$ref\\\":\\\"#/definitions/Sort\\\",\\\"description\\\":\\\"Sort order for the encoded field.\\\\n\\\\nFor continuous fields (quantitative or temporal), `sort` can be either `\\\\\\\"ascending\\\\\\\"` or `\\\\\\\"descending\\\\\\\"`.\\\\n\\\\nFor discrete fields, `sort` can be one of the following: - `\\\\\\\"ascending\\\\\\\"` or `\\\\\\\"descending\\\\\\\"` -- for sorting by the values' natural order in JavaScript. - [A string indicating an encoding channel name to sort by](https://vega.github.io/vega-lite/docs/sort.html#sort-by-encoding) (e.g., `\\\\\\\"x\\\\\\\"` or `\\\\\\\"y\\\\\\\"`) with an optional minus prefix for descending sort (e.g., `\\\\\\\"-x\\\\\\\"` to sort by x-field, descending). This channel string is short-form of [a sort-by-encoding definition](https://vega.github.io/vega-lite/docs/sort.html#sort-by-encoding). For example, `\\\\\\\"sort\\\\\\\": \\\\\\\"-x\\\\\\\"` is equivalent to `\\\\\\\"sort\\\\\\\": {\\\\\\\"encoding\\\\\\\": \\\\\\\"x\\\\\\\", \\\\\\\"order\\\\\\\": \\\\\\\"descending\\\\\\\"}`. - [A sort field definition](https://vega.github.io/vega-lite/docs/sort.html#sort-field) for sorting by another field. - [An array specifying the field values in preferred order](https://vega.github.io/vega-lite/docs/sort.html#sort-array). In this case, the sort order will obey the values in the array, followed by any unspecified values in their original order. For discrete time field, values in the sort array can be [date-time definition objects](types#datetime). In addition, for time units `\\\\\\\"month\\\\\\\"` and `\\\\\\\"day\\\\\\\"`, the values can be the month or day names (case insensitive) or their 3-letter initials (e.g., `\\\\\\\"Mon\\\\\\\"`, `\\\\\\\"Tue\\\\\\\"`). - `null` indicating no sort.\\\\n\\\\n__Default value:__ `\\\\\\\"ascending\\\\\\\"`\\\\n\\\\n__Note:__ `null` and sorting by another channel is not supported for `row` and `column`.\\\\n\\\\n__See also:__ [`sort`](https://vega.github.io/vega-lite/docs/sort.html) documentation.\\\"},\\\"timeUnit\\\":{\\\"anyOf\\\":[{\\\"$ref\\\":\\\"#/definitions/TimeUnit\\\"},{\\\"$ref\\\":\\\"#/definitions/TimeUnitParams\\\"}],\\\"description\\\":\\\"Time unit (e.g., `year`, `yearmonth`, `month`, `hours`) for a temporal field. or [a temporal field that gets casted as ordinal](https://vega.github.io/vega-lite/docs/type.html#cast).\\\\n\\\\n__Default value:__ `undefined` (None)\\\\n\\\\n__See also:__ [`timeUnit`](https://vega.github.io/vega-lite/docs/timeunit.html) documentation.\\\"},\\\"title\\\":{\\\"anyOf\\\":[{\\\"$ref\\\":\\\"#/definitions/Text\\\"},{\\\"type\\\":\\\"null\\\"}],\\\"description\\\":\\\"A title for the field. If `null`, the title will be removed.\\\\n\\\\n__Default value:__  derived from the field's name and transformation function (`aggregate`, `bin` and `timeUnit`). If the field has an aggregate function, the function is displayed as part of the title (e.g., `\\\\\\\"Sum of Profit\\\\\\\"`). If the field is binned or has a time unit applied, the applied function is shown in parentheses (e.g., `\\\\\\\"Profit (binned)\\\\\\\"`, `\\\\\\\"Transaction Date (year-month)\\\\\\\"`). Otherwise, the title is simply the field name.\\\\n\\\\n__Notes__:\\\\n\\\\n1) You can customize the default field title format by providing the [`fieldTitle`](https://vega.github.io/vega-lite/docs/config.html#top-level-config) property in the [config](https://vega.github.io/vega-lite/docs/config.html) or [`fieldTitle` function via the `compile` function's options](https://vega.github.io/vega-lite/docs/compile.html#field-title).\\\\n\\\\n2) If both field definition's `title` and axis, header, or legend `title` are defined, axis/header/legend title will be used.\\\"},\\\"type\\\":{\\\"$ref\\\":\\\"#/definitions/StandardType\\\",\\\"description\\\":\\\"The type of measurement (`\\\\\\\"quantitative\\\\\\\"`, `\\\\\\\"temporal\\\\\\\"`, `\\\\\\\"ordinal\\\\\\\"`, or `\\\\\\\"nominal\\\\\\\"`) for the encoded field or constant value (`datum`). It can also be a `\\\\\\\"geojson\\\\\\\"` type for encoding ['geoshape'](https://vega.github.io/vega-lite/docs/geoshape.html).\\\\n\\\\nVega-Lite automatically infers data types in many cases as discussed below. However, type is required for a field if: (1) the field is not nominal and the field encoding has no specified `aggregate` (except `argmin` and `argmax`), `bin`, scale type, custom `sort` order, nor `timeUnit` or (2) if you wish to use an ordinal scale for a field with `bin` or `timeUnit`.\\\\n\\\\n__Default value:__\\\\n\\\\n1) For a data `field`, `\\\\\\\"nominal\\\\\\\"` is the default data type unless the field encoding has `aggregate`, `channel`, `bin`, scale type, `sort`, or `timeUnit` that satisfies the following criteria: - `\\\\\\\"quantitative\\\\\\\"` is the default type if (1) the encoded field contains `bin` or `aggregate` except `\\\\\\\"argmin\\\\\\\"` and `\\\\\\\"argmax\\\\\\\"`, (2) the encoding channel is `latitude` or `longitude` channel or (3) if the specified scale type is [a quantitative scale](https://vega.github.io/vega-lite/docs/scale.html#type). - `\\\\\\\"temporal\\\\\\\"` is the default type if (1) the encoded field contains `timeUnit` or (2) the specified scale type is a time or utc scale - `ordinal\\\\\\\"\\\\\\\"` is the default type if (1) the encoded field contains a [custom `sort` order](https://vega.github.io/vega-lite/docs/sort.html#specifying-custom-sort-order), (2) the specified scale type is an ordinal/point/band scale, or (3) the encoding channel is `order`.\\\\n\\\\n2) For a constant value in data domain (`datum`): - `\\\\\\\"quantitative\\\\\\\"` if the datum is a number - `\\\\\\\"nominal\\\\\\\"` if the datum is a string - `\\\\\\\"temporal\\\\\\\"` if the datum is [a date time object](https://vega.github.io/vega-lite/docs/datetime.html)\\\\n\\\\n__Note:__ - Data `type` describes the semantics of the data rather than the primitive data types (number, string, etc.). The same primitive data type can have different types of measurement. For example, numeric data can represent quantitative, ordinal, or nominal data. - Data values for a temporal field can be either a date-time string (e.g., `\\\\\\\"2015-03-07 12:32:17\\\\\\\"`, `\\\\\\\"17:01\\\\\\\"`, `\\\\\\\"2015-03-16\\\\\\\"`. `\\\\\\\"2015\\\\\\\"`) or a timestamp number (e.g., `1552199579097`). - When using with [`bin`](https://vega.github.io/vega-lite/docs/bin.html), the `type` property can be either `\\\\\\\"quantitative\\\\\\\"` (for using a linear bin scale) or [`\\\\\\\"ordinal\\\\\\\"` (for using an ordinal bin scale)](https://vega.github.io/vega-lite/docs/type.html#cast-bin). - When using with [`timeUnit`](https://vega.github.io/vega-lite/docs/timeunit.html), the `type` property can be either `\\\\\\\"temporal\\\\\\\"` (default, for using a temporal scale) or [`\\\\\\\"ordinal\\\\\\\"` (for using an ordinal scale)](https://vega.github.io/vega-lite/docs/type.html#cast-bin). - When using with [`aggregate`](https://vega.github.io/vega-lite/docs/aggregate.html), the `type` property refers to the post-aggregation data type. For example, we can calculate count `distinct` of a categorical field `\\\\\\\"cat\\\\\\\"` using `{\\\\\\\"aggregate\\\\\\\": \\\\\\\"distinct\\\\\\\", \\\\\\\"field\\\\\\\": \\\\\\\"cat\\\\\\\"}`. The `\\\\\\\"type\\\\\\\"` of the aggregate output is `\\\\\\\"quantitative\\\\\\\"`. - Secondary channels (e.g., `x2`, `y2`, `xError`, `yError`) do not have `type` as they must have exactly the same type as their primary channels (e.g., `x`, `y`).\\\\n\\\\n__See also:__ [`type`](https://vega.github.io/vega-lite/docs/type.html) documentation.\\\"}},\\\"type\\\":\\\"object\\\"},\\\"FieldOrDatumDefWithCondition<MarkPropFieldDef<TypeForShape>,(string|null)>\\\":{\\\"additionalProperties\\\":false,\\\"description\\\":\\\"A FieldDef with Condition<ValueDef> {    condition: {value: ...},    field: ...,    ... }\\\",\\\"properties\\\":{\\\"aggregate\\\":{\\\"$ref\\\":\\\"#/definitions/Aggregate\\\",\\\"description\\\":\\\"Aggregation function for the field (e.g., `\\\\\\\"mean\\\\\\\"`, `\\\\\\\"sum\\\\\\\"`, `\\\\\\\"median\\\\\\\"`, `\\\\\\\"min\\\\\\\"`, `\\\\\\\"max\\\\\\\"`, `\\\\\\\"count\\\\\\\"`).\\\\n\\\\n__Default value:__ `undefined` (None)\\\\n\\\\n__See also:__ [`aggregate`](https://vega.github.io/vega-lite/docs/aggregate.html) documentation.\\\"},\\\"band\\\":{\\\"description\\\":\\\"For rect-based marks (`rect`, `bar`, and `image`), mark size relative to bandwidth of [band scales](https://vega.github.io/vega-lite/docs/scale.html#band), bins or time units. If set to `1`, the mark size is set to the bandwidth, the bin interval, or the time unit interval. If set to `0.5`, the mark size is half of the bandwidth or the time unit interval.\\\\n\\\\nFor other marks, relative position on a band of a stacked, binned, time unit or band scale. If set to `0`, the marks will be positioned at the beginning of the band. If set to `0.5`, the marks will be positioned in the middle of the band.\\\",\\\"maximum\\\":1,\\\"minimum\\\":0,\\\"type\\\":\\\"number\\\"},\\\"bin\\\":{\\\"anyOf\\\":[{\\\"type\\\":\\\"boolean\\\"},{\\\"$ref\\\":\\\"#/definitions/BinParams\\\"},{\\\"type\\\":\\\"null\\\"}],\\\"description\\\":\\\"A flag for binning a `quantitative` field, [an object defining binning parameters](https://vega.github.io/vega-lite/docs/bin.html#params), or indicating that the data for `x` or `y` channel are binned before they are imported into Vega-Lite (`\\\\\\\"binned\\\\\\\"`).\\\\n\\\\n- If `true`, default [binning parameters](https://vega.github.io/vega-lite/docs/bin.html) will be applied.\\\\n\\\\n- If `\\\\\\\"binned\\\\\\\"`, this indicates that the data for the `x` (or `y`) channel are already binned. You can map the bin-start field to `x` (or `y`) and the bin-end field to `x2` (or `y2`). The scale and axis will be formatted similar to binning in Vega-Lite.  To adjust the axis ticks based on the bin step, you can also set the axis's [`tickMinStep`](https://vega.github.io/vega-lite/docs/axis.html#ticks) property.\\\\n\\\\n__Default value:__ `false`\\\\n\\\\n__See also:__ [`bin`](https://vega.github.io/vega-lite/docs/bin.html) documentation.\\\"},\\\"condition\\\":{\\\"anyOf\\\":[{\\\"$ref\\\":\\\"#/definitions/ConditionalValueDef<(string|null|ExprRef)>\\\"},{\\\"items\\\":{\\\"$ref\\\":\\\"#/definitions/ConditionalValueDef<(string|null|ExprRef)>\\\"},\\\"type\\\":\\\"array\\\"}],\\\"description\\\":\\\"One or more value definition(s) with [a selection or a test predicate](https://vega.github.io/vega-lite/docs/condition.html).\\\\n\\\\n__Note:__ A field definition's `condition` property can only contain [conditional value definitions](https://vega.github.io/vega-lite/docs/condition.html#value) since Vega-Lite only allows at most one encoded field per encoding channel.\\\"},\\\"field\\\":{\\\"$ref\\\":\\\"#/definitions/Field\\\",\\\"description\\\":\\\"__Required.__ A string defining the name of the field from which to pull a data value or an object defining iterated values from the [`repeat`](https://vega.github.io/vega-lite/docs/repeat.html) operator.\\\\n\\\\n__See also:__ [`field`](https://vega.github.io/vega-lite/docs/field.html) documentation.\\\\n\\\\n__Notes:__ 1)  Dots (`.`) and brackets (`[` and `]`) can be used to access nested objects (e.g., `\\\\\\\"field\\\\\\\": \\\\\\\"foo.bar\\\\\\\"` and `\\\\\\\"field\\\\\\\": \\\\\\\"foo['bar']\\\\\\\"`). If field names contain dots or brackets but are not nested, you can use `\\\\\\\\\\\\\\\\` to escape dots and brackets (e.g., `\\\\\\\"a\\\\\\\\\\\\\\\\.b\\\\\\\"` and `\\\\\\\"a\\\\\\\\\\\\\\\\[0\\\\\\\\\\\\\\\\]\\\\\\\"`). See more details about escaping in the [field documentation](https://vega.github.io/vega-lite/docs/field.html). 2) `field` is not required if `aggregate` is `count`.\\\"},\\\"legend\\\":{\\\"anyOf\\\":[{\\\"$ref\\\":\\\"#/definitions/Legend\\\"},{\\\"type\\\":\\\"null\\\"}],\\\"description\\\":\\\"An object defining properties of the legend. If `null`, the legend for the encoding channel will be removed.\\\\n\\\\n__Default value:__ If undefined, default [legend properties](https://vega.github.io/vega-lite/docs/legend.html) are applied.\\\\n\\\\n__See also:__ [`legend`](https://vega.github.io/vega-lite/docs/legend.html) documentation.\\\"},\\\"scale\\\":{\\\"anyOf\\\":[{\\\"$ref\\\":\\\"#/definitions/Scale\\\"},{\\\"type\\\":\\\"null\\\"}],\\\"description\\\":\\\"An object defining properties of the channel's scale, which is the function that transforms values in the data domain (numbers, dates, strings, etc) to visual values (pixels, colors, sizes) of the encoding channels.\\\\n\\\\nIf `null`, the scale will be [disabled and the data value will be directly encoded](https://vega.github.io/vega-lite/docs/scale.html#disable).\\\\n\\\\n__Default value:__ If undefined, default [scale properties](https://vega.github.io/vega-lite/docs/scale.html) are applied.\\\\n\\\\n__See also:__ [`scale`](https://vega.github.io/vega-lite/docs/scale.html) documentation.\\\"},\\\"sort\\\":{\\\"$ref\\\":\\\"#/definitions/Sort\\\",\\\"description\\\":\\\"Sort order for the encoded field.\\\\n\\\\nFor continuous fields (quantitative or temporal), `sort` can be either `\\\\\\\"ascending\\\\\\\"` or `\\\\\\\"descending\\\\\\\"`.\\\\n\\\\nFor discrete fields, `sort` can be one of the following: - `\\\\\\\"ascending\\\\\\\"` or `\\\\\\\"descending\\\\\\\"` -- for sorting by the values' natural order in JavaScript. - [A string indicating an encoding channel name to sort by](https://vega.github.io/vega-lite/docs/sort.html#sort-by-encoding) (e.g., `\\\\\\\"x\\\\\\\"` or `\\\\\\\"y\\\\\\\"`) with an optional minus prefix for descending sort (e.g., `\\\\\\\"-x\\\\\\\"` to sort by x-field, descending). This channel string is short-form of [a sort-by-encoding definition](https://vega.github.io/vega-lite/docs/sort.html#sort-by-encoding). For example, `\\\\\\\"sort\\\\\\\": \\\\\\\"-x\\\\\\\"` is equivalent to `\\\\\\\"sort\\\\\\\": {\\\\\\\"encoding\\\\\\\": \\\\\\\"x\\\\\\\", \\\\\\\"order\\\\\\\": \\\\\\\"descending\\\\\\\"}`. - [A sort field definition](https://vega.github.io/vega-lite/docs/sort.html#sort-field) for sorting by another field. - [An array specifying the field values in preferred order](https://vega.github.io/vega-lite/docs/sort.html#sort-array). In this case, the sort order will obey the values in the array, followed by any unspecified values in their original order. For discrete time field, values in the sort array can be [date-time definition objects](types#datetime). In addition, for time units `\\\\\\\"month\\\\\\\"` and `\\\\\\\"day\\\\\\\"`, the values can be the month or day names (case insensitive) or their 3-letter initials (e.g., `\\\\\\\"Mon\\\\\\\"`, `\\\\\\\"Tue\\\\\\\"`). - `null` indicating no sort.\\\\n\\\\n__Default value:__ `\\\\\\\"ascending\\\\\\\"`\\\\n\\\\n__Note:__ `null` and sorting by another channel is not supported for `row` and `column`.\\\\n\\\\n__See also:__ [`sort`](https://vega.github.io/vega-lite/docs/sort.html) documentation.\\\"},\\\"timeUnit\\\":{\\\"anyOf\\\":[{\\\"$ref\\\":\\\"#/definitions/TimeUnit\\\"},{\\\"$ref\\\":\\\"#/definitions/TimeUnitParams\\\"}],\\\"description\\\":\\\"Time unit (e.g., `year`, `yearmonth`, `month`, `hours`) for a temporal field. or [a temporal field that gets casted as ordinal](https://vega.github.io/vega-lite/docs/type.html#cast).\\\\n\\\\n__Default value:__ `undefined` (None)\\\\n\\\\n__See also:__ [`timeUnit`](https://vega.github.io/vega-lite/docs/timeunit.html) documentation.\\\"},\\\"title\\\":{\\\"anyOf\\\":[{\\\"$ref\\\":\\\"#/definitions/Text\\\"},{\\\"type\\\":\\\"null\\\"}],\\\"description\\\":\\\"A title for the field. If `null`, the title will be removed.\\\\n\\\\n__Default value:__  derived from the field's name and transformation function (`aggregate`, `bin` and `timeUnit`). If the field has an aggregate function, the function is displayed as part of the title (e.g., `\\\\\\\"Sum of Profit\\\\\\\"`). If the field is binned or has a time unit applied, the applied function is shown in parentheses (e.g., `\\\\\\\"Profit (binned)\\\\\\\"`, `\\\\\\\"Transaction Date (year-month)\\\\\\\"`). Otherwise, the title is simply the field name.\\\\n\\\\n__Notes__:\\\\n\\\\n1) You can customize the default field title format by providing the [`fieldTitle`](https://vega.github.io/vega-lite/docs/config.html#top-level-config) property in the [config](https://vega.github.io/vega-lite/docs/config.html) or [`fieldTitle` function via the `compile` function's options](https://vega.github.io/vega-lite/docs/compile.html#field-title).\\\\n\\\\n2) If both field definition's `title` and axis, header, or legend `title` are defined, axis/header/legend title will be used.\\\"},\\\"type\\\":{\\\"$ref\\\":\\\"#/definitions/TypeForShape\\\",\\\"description\\\":\\\"The type of measurement (`\\\\\\\"quantitative\\\\\\\"`, `\\\\\\\"temporal\\\\\\\"`, `\\\\\\\"ordinal\\\\\\\"`, or `\\\\\\\"nominal\\\\\\\"`) for the encoded field or constant value (`datum`). It can also be a `\\\\\\\"geojson\\\\\\\"` type for encoding ['geoshape'](https://vega.github.io/vega-lite/docs/geoshape.html).\\\\n\\\\nVega-Lite automatically infers data types in many cases as discussed below. However, type is required for a field if: (1) the field is not nominal and the field encoding has no specified `aggregate` (except `argmin` and `argmax`), `bin`, scale type, custom `sort` order, nor `timeUnit` or (2) if you wish to use an ordinal scale for a field with `bin` or `timeUnit`.\\\\n\\\\n__Default value:__\\\\n\\\\n1) For a data `field`, `\\\\\\\"nominal\\\\\\\"` is the default data type unless the field encoding has `aggregate`, `channel`, `bin`, scale type, `sort`, or `timeUnit` that satisfies the following criteria: - `\\\\\\\"quantitative\\\\\\\"` is the default type if (1) the encoded field contains `bin` or `aggregate` except `\\\\\\\"argmin\\\\\\\"` and `\\\\\\\"argmax\\\\\\\"`, (2) the encoding channel is `latitude` or `longitude` channel or (3) if the specified scale type is [a quantitative scale](https://vega.github.io/vega-lite/docs/scale.html#type). - `\\\\\\\"temporal\\\\\\\"` is the default type if (1) the encoded field contains `timeUnit` or (2) the specified scale type is a time or utc scale - `ordinal\\\\\\\"\\\\\\\"` is the default type if (1) the encoded field contains a [custom `sort` order](https://vega.github.io/vega-lite/docs/sort.html#specifying-custom-sort-order), (2) the specified scale type is an ordinal/point/band scale, or (3) the encoding channel is `order`.\\\\n\\\\n2) For a constant value in data domain (`datum`): - `\\\\\\\"quantitative\\\\\\\"` if the datum is a number - `\\\\\\\"nominal\\\\\\\"` if the datum is a string - `\\\\\\\"temporal\\\\\\\"` if the datum is [a date time object](https://vega.github.io/vega-lite/docs/datetime.html)\\\\n\\\\n__Note:__ - Data `type` describes the semantics of the data rather than the primitive data types (number, string, etc.). The same primitive data type can have different types of measurement. For example, numeric data can represent quantitative, ordinal, or nominal data. - Data values for a temporal field can be either a date-time string (e.g., `\\\\\\\"2015-03-07 12:32:17\\\\\\\"`, `\\\\\\\"17:01\\\\\\\"`, `\\\\\\\"2015-03-16\\\\\\\"`. `\\\\\\\"2015\\\\\\\"`) or a timestamp number (e.g., `1552199579097`). - When using with [`bin`](https://vega.github.io/vega-lite/docs/bin.html), the `type` property can be either `\\\\\\\"quantitative\\\\\\\"` (for using a linear bin scale) or [`\\\\\\\"ordinal\\\\\\\"` (for using an ordinal bin scale)](https://vega.github.io/vega-lite/docs/type.html#cast-bin). - When using with [`timeUnit`](https://vega.github.io/vega-lite/docs/timeunit.html), the `type` property can be either `\\\\\\\"temporal\\\\\\\"` (default, for using a temporal scale) or [`\\\\\\\"ordinal\\\\\\\"` (for using an ordinal scale)](https://vega.github.io/vega-lite/docs/type.html#cast-bin). - When using with [`aggregate`](https://vega.github.io/vega-lite/docs/aggregate.html), the `type` property refers to the post-aggregation data type. For example, we can calculate count `distinct` of a categorical field `\\\\\\\"cat\\\\\\\"` using `{\\\\\\\"aggregate\\\\\\\": \\\\\\\"distinct\\\\\\\", \\\\\\\"field\\\\\\\": \\\\\\\"cat\\\\\\\"}`. The `\\\\\\\"type\\\\\\\"` of the aggregate output is `\\\\\\\"quantitative\\\\\\\"`. - Secondary channels (e.g., `x2`, `y2`, `xError`, `yError`) do not have `type` as they must have exactly the same type as their primary channels (e.g., `x`, `y`).\\\\n\\\\n__See also:__ [`type`](https://vega.github.io/vega-lite/docs/type.html) documentation.\\\"}},\\\"type\\\":\\\"object\\\"},\\\"FieldOrDatumDefWithCondition<StringDatumDef,Text>\\\":{\\\"additionalProperties\\\":false,\\\"description\\\":\\\"A FieldDef with Condition<ValueDef> {    condition: {value: ...},    field: ...,    ... }\\\",\\\"properties\\\":{\\\"band\\\":{\\\"description\\\":\\\"For rect-based marks (`rect`, `bar`, and `image`), mark size relative to bandwidth of [band scales](https://vega.github.io/vega-lite/docs/scale.html#band), bins or time units. If set to `1`, the mark size is set to the bandwidth, the bin interval, or the time unit interval. If set to `0.5`, the mark size is half of the bandwidth or the time unit interval.\\\\n\\\\nFor other marks, relative position on a band of a stacked, binned, time unit or band scale. If set to `0`, the marks will be positioned at the beginning of the band. If set to `0.5`, the marks will be positioned in the middle of the band.\\\",\\\"maximum\\\":1,\\\"minimum\\\":0,\\\"type\\\":\\\"number\\\"},\\\"condition\\\":{\\\"anyOf\\\":[{\\\"$ref\\\":\\\"#/definitions/ConditionalValueDef<(Text|ExprRef)>\\\"},{\\\"items\\\":{\\\"$ref\\\":\\\"#/definitions/ConditionalValueDef<(Text|ExprRef)>\\\"},\\\"type\\\":\\\"array\\\"}],\\\"description\\\":\\\"One or more value definition(s) with [a selection or a test predicate](https://vega.github.io/vega-lite/docs/condition.html).\\\\n\\\\n__Note:__ A field definition's `condition` property can only contain [conditional value definitions](https://vega.github.io/vega-lite/docs/condition.html#value) since Vega-Lite only allows at most one encoded field per encoding channel.\\\"},\\\"datum\\\":{\\\"anyOf\\\":[{\\\"$ref\\\":\\\"#/definitions/PrimitiveValue\\\"},{\\\"$ref\\\":\\\"#/definitions/DateTime\\\"},{\\\"$ref\\\":\\\"#/definitions/ExprRef\\\"},{\\\"$ref\\\":\\\"#/definitions/RepeatRef\\\"}],\\\"description\\\":\\\"A constant value in data domain.\\\"},\\\"format\\\":{\\\"anyOf\\\":[{\\\"type\\\":\\\"string\\\"},{\\\"$ref\\\":\\\"#/definitions/Dict<unknown>\\\"}],\\\"description\\\":\\\"When used with the default `\\\\\\\"number\\\\\\\"` and `\\\\\\\"time\\\\\\\"` format type, the text formatting pattern for labels of guides (axes, legends, headers) and text marks.\\\\n\\\\n- If the format type is `\\\\\\\"number\\\\\\\"` (e.g., for quantitative fields), this is D3's [number format pattern](https://github.com/d3/d3-format#locale_format). - If the format type is `\\\\\\\"time\\\\\\\"` (e.g., for temporal fields), this is D3's [time format pattern](https://github.com/d3/d3-time-format#locale_format).\\\\n\\\\nSee the [format documentation](https://vega.github.io/vega-lite/docs/format.html) for more examples.\\\\n\\\\nWhen used with a [custom `formatType`](https://vega.github.io/vega-lite/docs/config.html#custom-format-type), this value will be passed as `format` alongside `datum.value` to the registered function.\\\\n\\\\n__Default value:__  Derived from [numberFormat](https://vega.github.io/vega-lite/docs/config.html#format) config for number format and from [timeFormat](https://vega.github.io/vega-lite/docs/config.html#format) config for time format.\\\"},\\\"formatType\\\":{\\\"description\\\":\\\"The format type for labels. One of `\\\\\\\"number\\\\\\\"`, `\\\\\\\"time\\\\\\\"`, or a [registered custom format type](https://vega.github.io/vega-lite/docs/config.html#custom-format-type).\\\\n\\\\n__Default value:__ - `\\\\\\\"time\\\\\\\"` for temporal fields and ordinal and nominal fields with `timeUnit`. - `\\\\\\\"number\\\\\\\"` for quantitative fields as well as ordinal and nominal fields without `timeUnit`.\\\",\\\"type\\\":\\\"string\\\"},\\\"labelExpr\\\":{\\\"description\\\":\\\"[Vega expression](https://vega.github.io/vega/docs/expressions/) for customizing labels text.\\\\n\\\\n__Note:__ The label text and value can be assessed via the `label` and `value` properties of the axis's backing `datum` object.\\\",\\\"type\\\":\\\"string\\\"},\\\"type\\\":{\\\"$ref\\\":\\\"#/definitions/Type\\\",\\\"description\\\":\\\"The type of measurement (`\\\\\\\"quantitative\\\\\\\"`, `\\\\\\\"temporal\\\\\\\"`, `\\\\\\\"ordinal\\\\\\\"`, or `\\\\\\\"nominal\\\\\\\"`) for the encoded field or constant value (`datum`). It can also be a `\\\\\\\"geojson\\\\\\\"` type for encoding ['geoshape'](https://vega.github.io/vega-lite/docs/geoshape.html).\\\\n\\\\nVega-Lite automatically infers data types in many cases as discussed below. However, type is required for a field if: (1) the field is not nominal and the field encoding has no specified `aggregate` (except `argmin` and `argmax`), `bin`, scale type, custom `sort` order, nor `timeUnit` or (2) if you wish to use an ordinal scale for a field with `bin` or `timeUnit`.\\\\n\\\\n__Default value:__\\\\n\\\\n1) For a data `field`, `\\\\\\\"nominal\\\\\\\"` is the default data type unless the field encoding has `aggregate`, `channel`, `bin`, scale type, `sort`, or `timeUnit` that satisfies the following criteria: - `\\\\\\\"quantitative\\\\\\\"` is the default type if (1) the encoded field contains `bin` or `aggregate` except `\\\\\\\"argmin\\\\\\\"` and `\\\\\\\"argmax\\\\\\\"`, (2) the encoding channel is `latitude` or `longitude` channel or (3) if the specified scale type is [a quantitative scale](https://vega.github.io/vega-lite/docs/scale.html#type). - `\\\\\\\"temporal\\\\\\\"` is the default type if (1) the encoded field contains `timeUnit` or (2) the specified scale type is a time or utc scale - `ordinal\\\\\\\"\\\\\\\"` is the default type if (1) the encoded field contains a [custom `sort` order](https://vega.github.io/vega-lite/docs/sort.html#specifying-custom-sort-order), (2) the specified scale type is an ordinal/point/band scale, or (3) the encoding channel is `order`.\\\\n\\\\n2) For a constant value in data domain (`datum`): - `\\\\\\\"quantitative\\\\\\\"` if the datum is a number - `\\\\\\\"nominal\\\\\\\"` if the datum is a string - `\\\\\\\"temporal\\\\\\\"` if the datum is [a date time object](https://vega.github.io/vega-lite/docs/datetime.html)\\\\n\\\\n__Note:__ - Data `type` describes the semantics of the data rather than the primitive data types (number, string, etc.). The same primitive data type can have different types of measurement. For example, numeric data can represent quantitative, ordinal, or nominal data. - Data values for a temporal field can be either a date-time string (e.g., `\\\\\\\"2015-03-07 12:32:17\\\\\\\"`, `\\\\\\\"17:01\\\\\\\"`, `\\\\\\\"2015-03-16\\\\\\\"`. `\\\\\\\"2015\\\\\\\"`) or a timestamp number (e.g., `1552199579097`). - When using with [`bin`](https://vega.github.io/vega-lite/docs/bin.html), the `type` property can be either `\\\\\\\"quantitative\\\\\\\"` (for using a linear bin scale) or [`\\\\\\\"ordinal\\\\\\\"` (for using an ordinal bin scale)](https://vega.github.io/vega-lite/docs/type.html#cast-bin). - When using with [`timeUnit`](https://vega.github.io/vega-lite/docs/timeunit.html), the `type` property can be either `\\\\\\\"temporal\\\\\\\"` (default, for using a temporal scale) or [`\\\\\\\"ordinal\\\\\\\"` (for using an ordinal scale)](https://vega.github.io/vega-lite/docs/type.html#cast-bin). - When using with [`aggregate`](https://vega.github.io/vega-lite/docs/aggregate.html), the `type` property refers to the post-aggregation data type. For example, we can calculate count `distinct` of a categorical field `\\\\\\\"cat\\\\\\\"` using `{\\\\\\\"aggregate\\\\\\\": \\\\\\\"distinct\\\\\\\", \\\\\\\"field\\\\\\\": \\\\\\\"cat\\\\\\\"}`. The `\\\\\\\"type\\\\\\\"` of the aggregate output is `\\\\\\\"quantitative\\\\\\\"`. - Secondary channels (e.g., `x2`, `y2`, `xError`, `yError`) do not have `type` as they must have exactly the same type as their primary channels (e.g., `x`, `y`).\\\\n\\\\n__See also:__ [`type`](https://vega.github.io/vega-lite/docs/type.html) documentation.\\\"}},\\\"type\\\":\\\"object\\\"},\\\"FieldOrDatumDefWithCondition<StringFieldDef,Text>\\\":{\\\"additionalProperties\\\":false,\\\"description\\\":\\\"A FieldDef with Condition<ValueDef> {    condition: {value: ...},    field: ...,    ... }\\\",\\\"properties\\\":{\\\"aggregate\\\":{\\\"$ref\\\":\\\"#/definitions/Aggregate\\\",\\\"description\\\":\\\"Aggregation function for the field (e.g., `\\\\\\\"mean\\\\\\\"`, `\\\\\\\"sum\\\\\\\"`, `\\\\\\\"median\\\\\\\"`, `\\\\\\\"min\\\\\\\"`, `\\\\\\\"max\\\\\\\"`, `\\\\\\\"count\\\\\\\"`).\\\\n\\\\n__Default value:__ `undefined` (None)\\\\n\\\\n__See also:__ [`aggregate`](https://vega.github.io/vega-lite/docs/aggregate.html) documentation.\\\"},\\\"band\\\":{\\\"description\\\":\\\"For rect-based marks (`rect`, `bar`, and `image`), mark size relative to bandwidth of [band scales](https://vega.github.io/vega-lite/docs/scale.html#band), bins or time units. If set to `1`, the mark size is set to the bandwidth, the bin interval, or the time unit interval. If set to `0.5`, the mark size is half of the bandwidth or the time unit interval.\\\\n\\\\nFor other marks, relative position on a band of a stacked, binned, time unit or band scale. If set to `0`, the marks will be positioned at the beginning of the band. If set to `0.5`, the marks will be positioned in the middle of the band.\\\",\\\"maximum\\\":1,\\\"minimum\\\":0,\\\"type\\\":\\\"number\\\"},\\\"bin\\\":{\\\"anyOf\\\":[{\\\"type\\\":\\\"boolean\\\"},{\\\"$ref\\\":\\\"#/definitions/BinParams\\\"},{\\\"const\\\":\\\"binned\\\",\\\"type\\\":\\\"string\\\"},{\\\"type\\\":\\\"null\\\"}],\\\"description\\\":\\\"A flag for binning a `quantitative` field, [an object defining binning parameters](https://vega.github.io/vega-lite/docs/bin.html#params), or indicating that the data for `x` or `y` channel are binned before they are imported into Vega-Lite (`\\\\\\\"binned\\\\\\\"`).\\\\n\\\\n- If `true`, default [binning parameters](https://vega.github.io/vega-lite/docs/bin.html) will be applied.\\\\n\\\\n- If `\\\\\\\"binned\\\\\\\"`, this indicates that the data for the `x` (or `y`) channel are already binned. You can map the bin-start field to `x` (or `y`) and the bin-end field to `x2` (or `y2`). The scale and axis will be formatted similar to binning in Vega-Lite.  To adjust the axis ticks based on the bin step, you can also set the axis's [`tickMinStep`](https://vega.github.io/vega-lite/docs/axis.html#ticks) property.\\\\n\\\\n__Default value:__ `false`\\\\n\\\\n__See also:__ [`bin`](https://vega.github.io/vega-lite/docs/bin.html) documentation.\\\"},\\\"condition\\\":{\\\"anyOf\\\":[{\\\"$ref\\\":\\\"#/definitions/ConditionalValueDef<(Text|ExprRef)>\\\"},{\\\"items\\\":{\\\"$ref\\\":\\\"#/definitions/ConditionalValueDef<(Text|ExprRef)>\\\"},\\\"type\\\":\\\"array\\\"}],\\\"description\\\":\\\"One or more value definition(s) with [a selection or a test predicate](https://vega.github.io/vega-lite/docs/condition.html).\\\\n\\\\n__Note:__ A field definition's `condition` property can only contain [conditional value definitions](https://vega.github.io/vega-lite/docs/condition.html#value) since Vega-Lite only allows at most one encoded field per encoding channel.\\\"},\\\"field\\\":{\\\"$ref\\\":\\\"#/definitions/Field\\\",\\\"description\\\":\\\"__Required.__ A string defining the name of the field from which to pull a data value or an object defining iterated values from the [`repeat`](https://vega.github.io/vega-lite/docs/repeat.html) operator.\\\\n\\\\n__See also:__ [`field`](https://vega.github.io/vega-lite/docs/field.html) documentation.\\\\n\\\\n__Notes:__ 1)  Dots (`.`) and brackets (`[` and `]`) can be used to access nested objects (e.g., `\\\\\\\"field\\\\\\\": \\\\\\\"foo.bar\\\\\\\"` and `\\\\\\\"field\\\\\\\": \\\\\\\"foo['bar']\\\\\\\"`). If field names contain dots or brackets but are not nested, you can use `\\\\\\\\\\\\\\\\` to escape dots and brackets (e.g., `\\\\\\\"a\\\\\\\\\\\\\\\\.b\\\\\\\"` and `\\\\\\\"a\\\\\\\\\\\\\\\\[0\\\\\\\\\\\\\\\\]\\\\\\\"`). See more details about escaping in the [field documentation](https://vega.github.io/vega-lite/docs/field.html). 2) `field` is not required if `aggregate` is `count`.\\\"},\\\"format\\\":{\\\"anyOf\\\":[{\\\"type\\\":\\\"string\\\"},{\\\"$ref\\\":\\\"#/definitions/Dict<unknown>\\\"}],\\\"description\\\":\\\"When used with the default `\\\\\\\"number\\\\\\\"` and `\\\\\\\"time\\\\\\\"` format type, the text formatting pattern for labels of guides (axes, legends, headers) and text marks.\\\\n\\\\n- If the format type is `\\\\\\\"number\\\\\\\"` (e.g., for quantitative fields), this is D3's [number format pattern](https://github.com/d3/d3-format#locale_format). - If the format type is `\\\\\\\"time\\\\\\\"` (e.g., for temporal fields), this is D3's [time format pattern](https://github.com/d3/d3-time-format#locale_format).\\\\n\\\\nSee the [format documentation](https://vega.github.io/vega-lite/docs/format.html) for more examples.\\\\n\\\\nWhen used with a [custom `formatType`](https://vega.github.io/vega-lite/docs/config.html#custom-format-type), this value will be passed as `format` alongside `datum.value` to the registered function.\\\\n\\\\n__Default value:__  Derived from [numberFormat](https://vega.github.io/vega-lite/docs/config.html#format) config for number format and from [timeFormat](https://vega.github.io/vega-lite/docs/config.html#format) config for time format.\\\"},\\\"formatType\\\":{\\\"description\\\":\\\"The format type for labels. One of `\\\\\\\"number\\\\\\\"`, `\\\\\\\"time\\\\\\\"`, or a [registered custom format type](https://vega.github.io/vega-lite/docs/config.html#custom-format-type).\\\\n\\\\n__Default value:__ - `\\\\\\\"time\\\\\\\"` for temporal fields and ordinal and nominal fields with `timeUnit`. - `\\\\\\\"number\\\\\\\"` for quantitative fields as well as ordinal and nominal fields without `timeUnit`.\\\",\\\"type\\\":\\\"string\\\"},\\\"labelExpr\\\":{\\\"description\\\":\\\"[Vega expression](https://vega.github.io/vega/docs/expressions/) for customizing labels text.\\\\n\\\\n__Note:__ The label text and value can be assessed via the `label` and `value` properties of the axis's backing `datum` object.\\\",\\\"type\\\":\\\"string\\\"},\\\"timeUnit\\\":{\\\"anyOf\\\":[{\\\"$ref\\\":\\\"#/definitions/TimeUnit\\\"},{\\\"$ref\\\":\\\"#/definitions/TimeUnitParams\\\"}],\\\"description\\\":\\\"Time unit (e.g., `year`, `yearmonth`, `month`, `hours`) for a temporal field. or [a temporal field that gets casted as ordinal](https://vega.github.io/vega-lite/docs/type.html#cast).\\\\n\\\\n__Default value:__ `undefined` (None)\\\\n\\\\n__See also:__ [`timeUnit`](https://vega.github.io/vega-lite/docs/timeunit.html) documentation.\\\"},\\\"title\\\":{\\\"anyOf\\\":[{\\\"$ref\\\":\\\"#/definitions/Text\\\"},{\\\"type\\\":\\\"null\\\"}],\\\"description\\\":\\\"A title for the field. If `null`, the title will be removed.\\\\n\\\\n__Default value:__  derived from the field's name and transformation function (`aggregate`, `bin` and `timeUnit`). If the field has an aggregate function, the function is displayed as part of the title (e.g., `\\\\\\\"Sum of Profit\\\\\\\"`). If the field is binned or has a time unit applied, the applied function is shown in parentheses (e.g., `\\\\\\\"Profit (binned)\\\\\\\"`, `\\\\\\\"Transaction Date (year-month)\\\\\\\"`). Otherwise, the title is simply the field name.\\\\n\\\\n__Notes__:\\\\n\\\\n1) You can customize the default field title format by providing the [`fieldTitle`](https://vega.github.io/vega-lite/docs/config.html#top-level-config) property in the [config](https://vega.github.io/vega-lite/docs/config.html) or [`fieldTitle` function via the `compile` function's options](https://vega.github.io/vega-lite/docs/compile.html#field-title).\\\\n\\\\n2) If both field definition's `title` and axis, header, or legend `title` are defined, axis/header/legend title will be used.\\\"},\\\"type\\\":{\\\"$ref\\\":\\\"#/definitions/StandardType\\\",\\\"description\\\":\\\"The type of measurement (`\\\\\\\"quantitative\\\\\\\"`, `\\\\\\\"temporal\\\\\\\"`, `\\\\\\\"ordinal\\\\\\\"`, or `\\\\\\\"nominal\\\\\\\"`) for the encoded field or constant value (`datum`). It can also be a `\\\\\\\"geojson\\\\\\\"` type for encoding ['geoshape'](https://vega.github.io/vega-lite/docs/geoshape.html).\\\\n\\\\nVega-Lite automatically infers data types in many cases as discussed below. However, type is required for a field if: (1) the field is not nominal and the field encoding has no specified `aggregate` (except `argmin` and `argmax`), `bin`, scale type, custom `sort` order, nor `timeUnit` or (2) if you wish to use an ordinal scale for a field with `bin` or `timeUnit`.\\\\n\\\\n__Default value:__\\\\n\\\\n1) For a data `field`, `\\\\\\\"nominal\\\\\\\"` is the default data type unless the field encoding has `aggregate`, `channel`, `bin`, scale type, `sort`, or `timeUnit` that satisfies the following criteria: - `\\\\\\\"quantitative\\\\\\\"` is the default type if (1) the encoded field contains `bin` or `aggregate` except `\\\\\\\"argmin\\\\\\\"` and `\\\\\\\"argmax\\\\\\\"`, (2) the encoding channel is `latitude` or `longitude` channel or (3) if the specified scale type is [a quantitative scale](https://vega.github.io/vega-lite/docs/scale.html#type). - `\\\\\\\"temporal\\\\\\\"` is the default type if (1) the encoded field contains `timeUnit` or (2) the specified scale type is a time or utc scale - `ordinal\\\\\\\"\\\\\\\"` is the default type if (1) the encoded field contains a [custom `sort` order](https://vega.github.io/vega-lite/docs/sort.html#specifying-custom-sort-order), (2) the specified scale type is an ordinal/point/band scale, or (3) the encoding channel is `order`.\\\\n\\\\n2) For a constant value in data domain (`datum`): - `\\\\\\\"quantitative\\\\\\\"` if the datum is a number - `\\\\\\\"nominal\\\\\\\"` if the datum is a string - `\\\\\\\"temporal\\\\\\\"` if the datum is [a date time object](https://vega.github.io/vega-lite/docs/datetime.html)\\\\n\\\\n__Note:__ - Data `type` describes the semantics of the data rather than the primitive data types (number, string, etc.). The same primitive data type can have different types of measurement. For example, numeric data can represent quantitative, ordinal, or nominal data. - Data values for a temporal field can be either a date-time string (e.g., `\\\\\\\"2015-03-07 12:32:17\\\\\\\"`, `\\\\\\\"17:01\\\\\\\"`, `\\\\\\\"2015-03-16\\\\\\\"`. `\\\\\\\"2015\\\\\\\"`) or a timestamp number (e.g., `1552199579097`). - When using with [`bin`](https://vega.github.io/vega-lite/docs/bin.html), the `type` property can be either `\\\\\\\"quantitative\\\\\\\"` (for using a linear bin scale) or [`\\\\\\\"ordinal\\\\\\\"` (for using an ordinal bin scale)](https://vega.github.io/vega-lite/docs/type.html#cast-bin). - When using with [`timeUnit`](https://vega.github.io/vega-lite/docs/timeunit.html), the `type` property can be either `\\\\\\\"temporal\\\\\\\"` (default, for using a temporal scale) or [`\\\\\\\"ordinal\\\\\\\"` (for using an ordinal scale)](https://vega.github.io/vega-lite/docs/type.html#cast-bin). - When using with [`aggregate`](https://vega.github.io/vega-lite/docs/aggregate.html), the `type` property refers to the post-aggregation data type. For example, we can calculate count `distinct` of a categorical field `\\\\\\\"cat\\\\\\\"` using `{\\\\\\\"aggregate\\\\\\\": \\\\\\\"distinct\\\\\\\", \\\\\\\"field\\\\\\\": \\\\\\\"cat\\\\\\\"}`. The `\\\\\\\"type\\\\\\\"` of the aggregate output is `\\\\\\\"quantitative\\\\\\\"`. - Secondary channels (e.g., `x2`, `y2`, `xError`, `yError`) do not have `type` as they must have exactly the same type as their primary channels (e.g., `x`, `y`).\\\\n\\\\n__See also:__ [`type`](https://vega.github.io/vega-lite/docs/type.html) documentation.\\\"}},\\\"type\\\":\\\"object\\\"},\\\"FieldOrDatumDefWithCondition<StringFieldDef,string>\\\":{\\\"additionalProperties\\\":false,\\\"description\\\":\\\"A FieldDef with Condition<ValueDef> {    condition: {value: ...},    field: ...,    ... }\\\",\\\"properties\\\":{\\\"aggregate\\\":{\\\"$ref\\\":\\\"#/definitions/Aggregate\\\",\\\"description\\\":\\\"Aggregation function for the field (e.g., `\\\\\\\"mean\\\\\\\"`, `\\\\\\\"sum\\\\\\\"`, `\\\\\\\"median\\\\\\\"`, `\\\\\\\"min\\\\\\\"`, `\\\\\\\"max\\\\\\\"`, `\\\\\\\"count\\\\\\\"`).\\\\n\\\\n__Default value:__ `undefined` (None)\\\\n\\\\n__See also:__ [`aggregate`](https://vega.github.io/vega-lite/docs/aggregate.html) documentation.\\\"},\\\"band\\\":{\\\"description\\\":\\\"For rect-based marks (`rect`, `bar`, and `image`), mark size relative to bandwidth of [band scales](https://vega.github.io/vega-lite/docs/scale.html#band), bins or time units. If set to `1`, the mark size is set to the bandwidth, the bin interval, or the time unit interval. If set to `0.5`, the mark size is half of the bandwidth or the time unit interval.\\\\n\\\\nFor other marks, relative position on a band of a stacked, binned, time unit or band scale. If set to `0`, the marks will be positioned at the beginning of the band. If set to `0.5`, the marks will be positioned in the middle of the band.\\\",\\\"maximum\\\":1,\\\"minimum\\\":0,\\\"type\\\":\\\"number\\\"},\\\"bin\\\":{\\\"anyOf\\\":[{\\\"type\\\":\\\"boolean\\\"},{\\\"$ref\\\":\\\"#/definitions/BinParams\\\"},{\\\"const\\\":\\\"binned\\\",\\\"type\\\":\\\"string\\\"},{\\\"type\\\":\\\"null\\\"}],\\\"description\\\":\\\"A flag for binning a `quantitative` field, [an object defining binning parameters](https://vega.github.io/vega-lite/docs/bin.html#params), or indicating that the data for `x` or `y` channel are binned before they are imported into Vega-Lite (`\\\\\\\"binned\\\\\\\"`).\\\\n\\\\n- If `true`, default [binning parameters](https://vega.github.io/vega-lite/docs/bin.html) will be applied.\\\\n\\\\n- If `\\\\\\\"binned\\\\\\\"`, this indicates that the data for the `x` (or `y`) channel are already binned. You can map the bin-start field to `x` (or `y`) and the bin-end field to `x2` (or `y2`). The scale and axis will be formatted similar to binning in Vega-Lite.  To adjust the axis ticks based on the bin step, you can also set the axis's [`tickMinStep`](https://vega.github.io/vega-lite/docs/axis.html#ticks) property.\\\\n\\\\n__Default value:__ `false`\\\\n\\\\n__See also:__ [`bin`](https://vega.github.io/vega-lite/docs/bin.html) documentation.\\\"},\\\"condition\\\":{\\\"anyOf\\\":[{\\\"$ref\\\":\\\"#/definitions/ConditionalValueDef<(string|ExprRef)>\\\"},{\\\"items\\\":{\\\"$ref\\\":\\\"#/definitions/ConditionalValueDef<(string|ExprRef)>\\\"},\\\"type\\\":\\\"array\\\"}],\\\"description\\\":\\\"One or more value definition(s) with [a selection or a test predicate](https://vega.github.io/vega-lite/docs/condition.html).\\\\n\\\\n__Note:__ A field definition's `condition` property can only contain [conditional value definitions](https://vega.github.io/vega-lite/docs/condition.html#value) since Vega-Lite only allows at most one encoded field per encoding channel.\\\"},\\\"field\\\":{\\\"$ref\\\":\\\"#/definitions/Field\\\",\\\"description\\\":\\\"__Required.__ A string defining the name of the field from which to pull a data value or an object defining iterated values from the [`repeat`](https://vega.github.io/vega-lite/docs/repeat.html) operator.\\\\n\\\\n__See also:__ [`field`](https://vega.github.io/vega-lite/docs/field.html) documentation.\\\\n\\\\n__Notes:__ 1)  Dots (`.`) and brackets (`[` and `]`) can be used to access nested objects (e.g., `\\\\\\\"field\\\\\\\": \\\\\\\"foo.bar\\\\\\\"` and `\\\\\\\"field\\\\\\\": \\\\\\\"foo['bar']\\\\\\\"`). If field names contain dots or brackets but are not nested, you can use `\\\\\\\\\\\\\\\\` to escape dots and brackets (e.g., `\\\\\\\"a\\\\\\\\\\\\\\\\.b\\\\\\\"` and `\\\\\\\"a\\\\\\\\\\\\\\\\[0\\\\\\\\\\\\\\\\]\\\\\\\"`). See more details about escaping in the [field documentation](https://vega.github.io/vega-lite/docs/field.html). 2) `field` is not required if `aggregate` is `count`.\\\"},\\\"format\\\":{\\\"anyOf\\\":[{\\\"type\\\":\\\"string\\\"},{\\\"$ref\\\":\\\"#/definitions/Dict<unknown>\\\"}],\\\"description\\\":\\\"When used with the default `\\\\\\\"number\\\\\\\"` and `\\\\\\\"time\\\\\\\"` format type, the text formatting pattern for labels of guides (axes, legends, headers) and text marks.\\\\n\\\\n- If the format type is `\\\\\\\"number\\\\\\\"` (e.g., for quantitative fields), this is D3's [number format pattern](https://github.com/d3/d3-format#locale_format). - If the format type is `\\\\\\\"time\\\\\\\"` (e.g., for temporal fields), this is D3's [time format pattern](https://github.com/d3/d3-time-format#locale_format).\\\\n\\\\nSee the [format documentation](https://vega.github.io/vega-lite/docs/format.html) for more examples.\\\\n\\\\nWhen used with a [custom `formatType`](https://vega.github.io/vega-lite/docs/config.html#custom-format-type), this value will be passed as `format` alongside `datum.value` to the registered function.\\\\n\\\\n__Default value:__  Derived from [numberFormat](https://vega.github.io/vega-lite/docs/config.html#format) config for number format and from [timeFormat](https://vega.github.io/vega-lite/docs/config.html#format) config for time format.\\\"},\\\"formatType\\\":{\\\"description\\\":\\\"The format type for labels. One of `\\\\\\\"number\\\\\\\"`, `\\\\\\\"time\\\\\\\"`, or a [registered custom format type](https://vega.github.io/vega-lite/docs/config.html#custom-format-type).\\\\n\\\\n__Default value:__ - `\\\\\\\"time\\\\\\\"` for temporal fields and ordinal and nominal fields with `timeUnit`. - `\\\\\\\"number\\\\\\\"` for quantitative fields as well as ordinal and nominal fields without `timeUnit`.\\\",\\\"type\\\":\\\"string\\\"},\\\"labelExpr\\\":{\\\"description\\\":\\\"[Vega expression](https://vega.github.io/vega/docs/expressions/) for customizing labels text.\\\\n\\\\n__Note:__ The label text and value can be assessed via the `label` and `value` properties of the axis's backing `datum` object.\\\",\\\"type\\\":\\\"string\\\"},\\\"timeUnit\\\":{\\\"anyOf\\\":[{\\\"$ref\\\":\\\"#/definitions/TimeUnit\\\"},{\\\"$ref\\\":\\\"#/definitions/TimeUnitParams\\\"}],\\\"description\\\":\\\"Time unit (e.g., `year`, `yearmonth`, `month`, `hours`) for a temporal field. or [a temporal field that gets casted as ordinal](https://vega.github.io/vega-lite/docs/type.html#cast).\\\\n\\\\n__Default value:__ `undefined` (None)\\\\n\\\\n__See also:__ [`timeUnit`](https://vega.github.io/vega-lite/docs/timeunit.html) documentation.\\\"},\\\"title\\\":{\\\"anyOf\\\":[{\\\"$ref\\\":\\\"#/definitions/Text\\\"},{\\\"type\\\":\\\"null\\\"}],\\\"description\\\":\\\"A title for the field. If `null`, the title will be removed.\\\\n\\\\n__Default value:__  derived from the field's name and transformation function (`aggregate`, `bin` and `timeUnit`). If the field has an aggregate function, the function is displayed as part of the title (e.g., `\\\\\\\"Sum of Profit\\\\\\\"`). If the field is binned or has a time unit applied, the applied function is shown in parentheses (e.g., `\\\\\\\"Profit (binned)\\\\\\\"`, `\\\\\\\"Transaction Date (year-month)\\\\\\\"`). Otherwise, the title is simply the field name.\\\\n\\\\n__Notes__:\\\\n\\\\n1) You can customize the default field title format by providing the [`fieldTitle`](https://vega.github.io/vega-lite/docs/config.html#top-level-config) property in the [config](https://vega.github.io/vega-lite/docs/config.html) or [`fieldTitle` function via the `compile` function's options](https://vega.github.io/vega-lite/docs/compile.html#field-title).\\\\n\\\\n2) If both field definition's `title` and axis, header, or legend `title` are defined, axis/header/legend title will be used.\\\"},\\\"type\\\":{\\\"$ref\\\":\\\"#/definitions/StandardType\\\",\\\"description\\\":\\\"The type of measurement (`\\\\\\\"quantitative\\\\\\\"`, `\\\\\\\"temporal\\\\\\\"`, `\\\\\\\"ordinal\\\\\\\"`, or `\\\\\\\"nominal\\\\\\\"`) for the encoded field or constant value (`datum`). It can also be a `\\\\\\\"geojson\\\\\\\"` type for encoding ['geoshape'](https://vega.github.io/vega-lite/docs/geoshape.html).\\\\n\\\\nVega-Lite automatically infers data types in many cases as discussed below. However, type is required for a field if: (1) the field is not nominal and the field encoding has no specified `aggregate` (except `argmin` and `argmax`), `bin`, scale type, custom `sort` order, nor `timeUnit` or (2) if you wish to use an ordinal scale for a field with `bin` or `timeUnit`.\\\\n\\\\n__Default value:__\\\\n\\\\n1) For a data `field`, `\\\\\\\"nominal\\\\\\\"` is the default data type unless the field encoding has `aggregate`, `channel`, `bin`, scale type, `sort`, or `timeUnit` that satisfies the following criteria: - `\\\\\\\"quantitative\\\\\\\"` is the default type if (1) the encoded field contains `bin` or `aggregate` except `\\\\\\\"argmin\\\\\\\"` and `\\\\\\\"argmax\\\\\\\"`, (2) the encoding channel is `latitude` or `longitude` channel or (3) if the specified scale type is [a quantitative scale](https://vega.github.io/vega-lite/docs/scale.html#type). - `\\\\\\\"temporal\\\\\\\"` is the default type if (1) the encoded field contains `timeUnit` or (2) the specified scale type is a time or utc scale - `ordinal\\\\\\\"\\\\\\\"` is the default type if (1) the encoded field contains a [custom `sort` order](https://vega.github.io/vega-lite/docs/sort.html#specifying-custom-sort-order), (2) the specified scale type is an ordinal/point/band scale, or (3) the encoding channel is `order`.\\\\n\\\\n2) For a constant value in data domain (`datum`): - `\\\\\\\"quantitative\\\\\\\"` if the datum is a number - `\\\\\\\"nominal\\\\\\\"` if the datum is a string - `\\\\\\\"temporal\\\\\\\"` if the datum is [a date time object](https://vega.github.io/vega-lite/docs/datetime.html)\\\\n\\\\n__Note:__ - Data `type` describes the semantics of the data rather than the primitive data types (number, string, etc.). The same primitive data type can have different types of measurement. For example, numeric data can represent quantitative, ordinal, or nominal data. - Data values for a temporal field can be either a date-time string (e.g., `\\\\\\\"2015-03-07 12:32:17\\\\\\\"`, `\\\\\\\"17:01\\\\\\\"`, `\\\\\\\"2015-03-16\\\\\\\"`. `\\\\\\\"2015\\\\\\\"`) or a timestamp number (e.g., `1552199579097`). - When using with [`bin`](https://vega.github.io/vega-lite/docs/bin.html), the `type` property can be either `\\\\\\\"quantitative\\\\\\\"` (for using a linear bin scale) or [`\\\\\\\"ordinal\\\\\\\"` (for using an ordinal bin scale)](https://vega.github.io/vega-lite/docs/type.html#cast-bin). - When using with [`timeUnit`](https://vega.github.io/vega-lite/docs/timeunit.html), the `type` property can be either `\\\\\\\"temporal\\\\\\\"` (default, for using a temporal scale) or [`\\\\\\\"ordinal\\\\\\\"` (for using an ordinal scale)](https://vega.github.io/vega-lite/docs/type.html#cast-bin). - When using with [`aggregate`](https://vega.github.io/vega-lite/docs/aggregate.html), the `type` property refers to the post-aggregation data type. For example, we can calculate count `distinct` of a categorical field `\\\\\\\"cat\\\\\\\"` using `{\\\\\\\"aggregate\\\\\\\": \\\\\\\"distinct\\\\\\\", \\\\\\\"field\\\\\\\": \\\\\\\"cat\\\\\\\"}`. The `\\\\\\\"type\\\\\\\"` of the aggregate output is `\\\\\\\"quantitative\\\\\\\"`. - Secondary channels (e.g., `x2`, `y2`, `xError`, `yError`) do not have `type` as they must have exactly the same type as their primary channels (e.g., `x`, `y`).\\\\n\\\\n__See also:__ [`type`](https://vega.github.io/vega-lite/docs/type.html) documentation.\\\"}},\\\"type\\\":\\\"object\\\"},\\\"FieldRangePredicate\\\":{\\\"additionalProperties\\\":false,\\\"properties\\\":{\\\"field\\\":{\\\"$ref\\\":\\\"#/definitions/FieldName\\\",\\\"description\\\":\\\"Field to be tested.\\\"},\\\"range\\\":{\\\"anyOf\\\":[{\\\"items\\\":{\\\"anyOf\\\":[{\\\"type\\\":\\\"number\\\"},{\\\"$ref\\\":\\\"#/definitions/DateTime\\\"},{\\\"type\\\":\\\"null\\\"},{\\\"$ref\\\":\\\"#/definitions/ExprRef\\\"}]},\\\"type\\\":\\\"array\\\"},{\\\"$ref\\\":\\\"#/definitions/ExprRef\\\"}],\\\"description\\\":\\\"An array of inclusive minimum and maximum values for a field value of a data item to be included in the filtered data.\\\",\\\"maxItems\\\":2,\\\"minItems\\\":2},\\\"timeUnit\\\":{\\\"anyOf\\\":[{\\\"$ref\\\":\\\"#/definitions/TimeUnit\\\"},{\\\"$ref\\\":\\\"#/definitions/TimeUnitParams\\\"}],\\\"description\\\":\\\"Time unit for the field to be tested.\\\"}},\\\"required\\\":[\\\"field\\\",\\\"range\\\"],\\\"type\\\":\\\"object\\\"},\\\"FieldValidPredicate\\\":{\\\"additionalProperties\\\":false,\\\"properties\\\":{\\\"field\\\":{\\\"$ref\\\":\\\"#/definitions/FieldName\\\",\\\"description\\\":\\\"Field to be tested.\\\"},\\\"timeUnit\\\":{\\\"anyOf\\\":[{\\\"$ref\\\":\\\"#/definitions/TimeUnit\\\"},{\\\"$ref\\\":\\\"#/definitions/TimeUnitParams\\\"}],\\\"description\\\":\\\"Time unit for the field to be tested.\\\"},\\\"valid\\\":{\\\"description\\\":\\\"If set to true the field's value has to be valid, meaning both not `null` and not [`NaN`](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/NaN).\\\",\\\"type\\\":\\\"boolean\\\"}},\\\"required\\\":[\\\"field\\\",\\\"valid\\\"],\\\"type\\\":\\\"object\\\"},\\\"FilterTransform\\\":{\\\"additionalProperties\\\":false,\\\"properties\\\":{\\\"filter\\\":{\\\"$ref\\\":\\\"#/definitions/PredicateComposition\\\",\\\"description\\\":\\\"The `filter` property must be a predication definition, which can take one of the following forms:\\\\n\\\\n1) an [expression](https://vega.github.io/vega-lite/docs/types.html#expression) string, where `datum` can be used to refer to the current data object. For example, `{filter: \\\\\\\"datum.b2 > 60\\\\\\\"}` would make the output data includes only items that have values in the field `b2` over 60.\\\\n\\\\n2) one of the [field predicates](https://vega.github.io/vega-lite/docs/predicate.html#field-predicate):  [`equal`](https://vega.github.io/vega-lite/docs/predicate.html#field-equal-predicate), [`lt`](https://vega.github.io/vega-lite/docs/predicate.html#lt-predicate), [`lte`](https://vega.github.io/vega-lite/docs/predicate.html#lte-predicate), [`gt`](https://vega.github.io/vega-lite/docs/predicate.html#gt-predicate), [`gte`](https://vega.github.io/vega-lite/docs/predicate.html#gte-predicate), [`range`](https://vega.github.io/vega-lite/docs/predicate.html#range-predicate), [`oneOf`](https://vega.github.io/vega-lite/docs/predicate.html#one-of-predicate), or [`valid`](https://vega.github.io/vega-lite/docs/predicate.html#valid-predicate),\\\\n\\\\n3) a [selection predicate](https://vega.github.io/vega-lite/docs/predicate.html#selection-predicate), which define the names of a selection that the data point should belong to (or a logical composition of selections).\\\\n\\\\n4) a [logical composition](https://vega.github.io/vega-lite/docs/predicate.html#composition) of (1), (2), or (3).\\\"}},\\\"required\\\":[\\\"filter\\\"],\\\"type\\\":\\\"object\\\"},\\\"Fit\\\":{\\\"anyOf\\\":[{\\\"$ref\\\":\\\"#/definitions/GeoJsonFeature\\\"},{\\\"$ref\\\":\\\"#/definitions/GeoJsonFeatureCollection\\\"},{\\\"items\\\":{\\\"$ref\\\":\\\"#/definitions/GeoJsonFeature\\\"},\\\"type\\\":\\\"array\\\"}]},\\\"FlattenTransform\\\":{\\\"additionalProperties\\\":false,\\\"properties\\\":{\\\"as\\\":{\\\"description\\\":\\\"The output field names for extracted array values.\\\\n\\\\n__Default value:__ The field name of the corresponding array field\\\",\\\"items\\\":{\\\"$ref\\\":\\\"#/definitions/FieldName\\\"},\\\"type\\\":\\\"array\\\"},\\\"flatten\\\":{\\\"description\\\":\\\"An array of one or more data fields containing arrays to flatten. If multiple fields are specified, their array values should have a parallel structure, ideally with the same length. If the lengths of parallel arrays do not match, the longest array will be used with `null` values added for missing entries.\\\",\\\"items\\\":{\\\"$ref\\\":\\\"#/definitions/FieldName\\\"},\\\"type\\\":\\\"array\\\"}},\\\"required\\\":[\\\"flatten\\\"],\\\"type\\\":\\\"object\\\"},\\\"FoldTransform\\\":{\\\"additionalProperties\\\":false,\\\"properties\\\":{\\\"as\\\":{\\\"description\\\":\\\"The output field names for the key and value properties produced by the fold transform. __Default value:__ `[\\\\\\\"key\\\\\\\", \\\\\\\"value\\\\\\\"]`\\\",\\\"items\\\":[{\\\"$ref\\\":\\\"#/definitions/FieldName\\\"},{\\\"$ref\\\":\\\"#/definitions/FieldName\\\"}],\\\"maxItems\\\":2,\\\"minItems\\\":2,\\\"type\\\":\\\"array\\\"},\\\"fold\\\":{\\\"description\\\":\\\"An array of data fields indicating the properties to fold.\\\",\\\"items\\\":{\\\"$ref\\\":\\\"#/definitions/FieldName\\\"},\\\"type\\\":\\\"array\\\"}},\\\"required\\\":[\\\"fold\\\"],\\\"type\\\":\\\"object\\\"},\\\"FontStyle\\\":{\\\"type\\\":\\\"string\\\"},\\\"FontWeight\\\":{\\\"enum\\\":[\\\"normal\\\",\\\"bold\\\",\\\"lighter\\\",\\\"bolder\\\",100,200,300,400,500,600,700,800,900],\\\"type\\\":[\\\"string\\\",\\\"number\\\"]},\\\"Generator\\\":{\\\"anyOf\\\":[{\\\"$ref\\\":\\\"#/definitions/SequenceGenerator\\\"},{\\\"$ref\\\":\\\"#/definitions/SphereGenerator\\\"},{\\\"$ref\\\":\\\"#/definitions/GraticuleGenerator\\\"}]},\\\"NormalizedConcatSpec<GenericSpec>\\\":{\\\"additionalProperties\\\":false,\\\"description\\\":\\\"Base interface for a generalized concatenation specification.\\\",\\\"properties\\\":{\\\"align\\\":{\\\"anyOf\\\":[{\\\"$ref\\\":\\\"#/definitions/LayoutAlign\\\"},{\\\"$ref\\\":\\\"#/definitions/RowCol<LayoutAlign>\\\"}],\\\"description\\\":\\\"The alignment to apply to grid rows and columns. The supported string values are `\\\\\\\"all\\\\\\\"`, `\\\\\\\"each\\\\\\\"`, and `\\\\\\\"none\\\\\\\"`.\\\\n\\\\n- For `\\\\\\\"none\\\\\\\"`, a flow layout will be used, in which adjacent subviews are simply placed one after the other. - For `\\\\\\\"each\\\\\\\"`, subviews will be aligned into a clean grid structure, but each row or column may be of variable size. - For `\\\\\\\"all\\\\\\\"`, subviews will be aligned and each row or column will be sized identically based on the maximum observed size. String values for this property will be applied to both grid rows and columns.\\\\n\\\\nAlternatively, an object value of the form `{\\\\\\\"row\\\\\\\": string, \\\\\\\"column\\\\\\\": string}` can be used to supply different alignments for rows and columns.\\\\n\\\\n__Default value:__ `\\\\\\\"all\\\\\\\"`.\\\"},\\\"bounds\\\":{\\\"description\\\":\\\"The bounds calculation method to use for determining the extent of a sub-plot. One of `full` (the default) or `flush`.\\\\n\\\\n- If set to `full`, the entire calculated bounds (including axes, title, and legend) will be used. - If set to `flush`, only the specified width and height values for the sub-view will be used. The `flush` setting can be useful when attempting to place sub-plots without axes or legends into a uniform grid structure.\\\\n\\\\n__Default value:__ `\\\\\\\"full\\\\\\\"`\\\",\\\"enum\\\":[\\\"full\\\",\\\"flush\\\"],\\\"type\\\":\\\"string\\\"},\\\"center\\\":{\\\"anyOf\\\":[{\\\"type\\\":\\\"boolean\\\"},{\\\"$ref\\\":\\\"#/definitions/RowCol<boolean>\\\"}],\\\"description\\\":\\\"Boolean flag indicating if subviews should be centered relative to their respective rows or columns.\\\\n\\\\nAn object value of the form `{\\\\\\\"row\\\\\\\": boolean, \\\\\\\"column\\\\\\\": boolean}` can be used to supply different centering values for rows and columns.\\\\n\\\\n__Default value:__ `false`\\\"},\\\"columns\\\":{\\\"description\\\":\\\"The number of columns to include in the view composition layout.\\\\n\\\\n__Default value__: `undefined` -- An infinite number of columns (a single row) will be assumed. This is equivalent to `hconcat` (for `concat`) and to using the `column` channel (for `facet` and `repeat`).\\\\n\\\\n__Note__:\\\\n\\\\n1) This property is only for: - the general (wrappable) `concat` operator (not `hconcat`/`vconcat`) - the `facet` and `repeat` operator with one field/repetition definition (without row/column nesting)\\\\n\\\\n2) Setting the `columns` to `1` is equivalent to `vconcat` (for `concat`) and to using the `row` channel (for `facet` and `repeat`).\\\",\\\"type\\\":\\\"number\\\"},\\\"concat\\\":{\\\"description\\\":\\\"A list of views to be concatenated.\\\",\\\"items\\\":{\\\"$ref\\\":\\\"#/definitions/NormalizedSpec\\\"},\\\"type\\\":\\\"array\\\"},\\\"data\\\":{\\\"anyOf\\\":[{\\\"$ref\\\":\\\"#/definitions/Data\\\"},{\\\"type\\\":\\\"null\\\"}],\\\"description\\\":\\\"An object describing the data source. Set to `null` to ignore the parent's data source. If no data is set, it is derived from the parent.\\\"},\\\"description\\\":{\\\"description\\\":\\\"Description of this mark for commenting purpose.\\\",\\\"type\\\":\\\"string\\\"},\\\"name\\\":{\\\"description\\\":\\\"Name of the visualization for later reference.\\\",\\\"type\\\":\\\"string\\\"},\\\"resolve\\\":{\\\"$ref\\\":\\\"#/definitions/Resolve\\\",\\\"description\\\":\\\"Scale, axis, and legend resolutions for view composition specifications.\\\"},\\\"spacing\\\":{\\\"anyOf\\\":[{\\\"type\\\":\\\"number\\\"},{\\\"$ref\\\":\\\"#/definitions/RowCol<number>\\\"}],\\\"description\\\":\\\"The spacing in pixels between sub-views of the composition operator. An object of the form `{\\\\\\\"row\\\\\\\": number, \\\\\\\"column\\\\\\\": number}` can be used to set different spacing values for rows and columns.\\\\n\\\\n__Default value__: Depends on `\\\\\\\"spacing\\\\\\\"` property of [the view composition configuration](https://vega.github.io/vega-lite/docs/config.html#view-config) (`20` by default)\\\"},\\\"title\\\":{\\\"anyOf\\\":[{\\\"$ref\\\":\\\"#/definitions/Text\\\"},{\\\"$ref\\\":\\\"#/definitions/TitleParams\\\"}],\\\"description\\\":\\\"Title for the plot.\\\"},\\\"transform\\\":{\\\"description\\\":\\\"An array of data transformations such as filter and new field calculation.\\\",\\\"items\\\":{\\\"$ref\\\":\\\"#/definitions/Transform\\\"},\\\"type\\\":\\\"array\\\"}},\\\"required\\\":[\\\"concat\\\"],\\\"type\\\":\\\"object\\\"},\\\"ConcatSpec<GenericSpec>\\\":{\\\"additionalProperties\\\":false,\\\"description\\\":\\\"Base interface for a generalized concatenation specification.\\\",\\\"properties\\\":{\\\"align\\\":{\\\"anyOf\\\":[{\\\"$ref\\\":\\\"#/definitions/LayoutAlign\\\"},{\\\"$ref\\\":\\\"#/definitions/RowCol<LayoutAlign>\\\"}],\\\"description\\\":\\\"The alignment to apply to grid rows and columns. The supported string values are `\\\\\\\"all\\\\\\\"`, `\\\\\\\"each\\\\\\\"`, and `\\\\\\\"none\\\\\\\"`.\\\\n\\\\n- For `\\\\\\\"none\\\\\\\"`, a flow layout will be used, in which adjacent subviews are simply placed one after the other. - For `\\\\\\\"each\\\\\\\"`, subviews will be aligned into a clean grid structure, but each row or column may be of variable size. - For `\\\\\\\"all\\\\\\\"`, subviews will be aligned and each row or column will be sized identically based on the maximum observed size. String values for this property will be applied to both grid rows and columns.\\\\n\\\\nAlternatively, an object value of the form `{\\\\\\\"row\\\\\\\": string, \\\\\\\"column\\\\\\\": string}` can be used to supply different alignments for rows and columns.\\\\n\\\\n__Default value:__ `\\\\\\\"all\\\\\\\"`.\\\"},\\\"bounds\\\":{\\\"description\\\":\\\"The bounds calculation method to use for determining the extent of a sub-plot. One of `full` (the default) or `flush`.\\\\n\\\\n- If set to `full`, the entire calculated bounds (including axes, title, and legend) will be used. - If set to `flush`, only the specified width and height values for the sub-view will be used. The `flush` setting can be useful when attempting to place sub-plots without axes or legends into a uniform grid structure.\\\\n\\\\n__Default value:__ `\\\\\\\"full\\\\\\\"`\\\",\\\"enum\\\":[\\\"full\\\",\\\"flush\\\"],\\\"type\\\":\\\"string\\\"},\\\"center\\\":{\\\"anyOf\\\":[{\\\"type\\\":\\\"boolean\\\"},{\\\"$ref\\\":\\\"#/definitions/RowCol<boolean>\\\"}],\\\"description\\\":\\\"Boolean flag indicating if subviews should be centered relative to their respective rows or columns.\\\\n\\\\nAn object value of the form `{\\\\\\\"row\\\\\\\": boolean, \\\\\\\"column\\\\\\\": boolean}` can be used to supply different centering values for rows and columns.\\\\n\\\\n__Default value:__ `false`\\\"},\\\"columns\\\":{\\\"description\\\":\\\"The number of columns to include in the view composition layout.\\\\n\\\\n__Default value__: `undefined` -- An infinite number of columns (a single row) will be assumed. This is equivalent to `hconcat` (for `concat`) and to using the `column` channel (for `facet` and `repeat`).\\\\n\\\\n__Note__:\\\\n\\\\n1) This property is only for: - the general (wrappable) `concat` operator (not `hconcat`/`vconcat`) - the `facet` and `repeat` operator with one field/repetition definition (without row/column nesting)\\\\n\\\\n2) Setting the `columns` to `1` is equivalent to `vconcat` (for `concat`) and to using the `row` channel (for `facet` and `repeat`).\\\",\\\"type\\\":\\\"number\\\"},\\\"concat\\\":{\\\"description\\\":\\\"A list of views to be concatenated.\\\",\\\"items\\\":{\\\"$ref\\\":\\\"#/definitions/Spec\\\"},\\\"type\\\":\\\"array\\\"},\\\"data\\\":{\\\"anyOf\\\":[{\\\"$ref\\\":\\\"#/definitions/Data\\\"},{\\\"type\\\":\\\"null\\\"}],\\\"description\\\":\\\"An object describing the data source. Set to `null` to ignore the parent's data source. If no data is set, it is derived from the parent.\\\"},\\\"description\\\":{\\\"description\\\":\\\"Description of this mark for commenting purpose.\\\",\\\"type\\\":\\\"string\\\"},\\\"name\\\":{\\\"description\\\":\\\"Name of the visualization for later reference.\\\",\\\"type\\\":\\\"string\\\"},\\\"resolve\\\":{\\\"$ref\\\":\\\"#/definitions/Resolve\\\",\\\"description\\\":\\\"Scale, axis, and legend resolutions for view composition specifications.\\\"},\\\"spacing\\\":{\\\"anyOf\\\":[{\\\"type\\\":\\\"number\\\"},{\\\"$ref\\\":\\\"#/definitions/RowCol<number>\\\"}],\\\"description\\\":\\\"The spacing in pixels between sub-views of the composition operator. An object of the form `{\\\\\\\"row\\\\\\\": number, \\\\\\\"column\\\\\\\": number}` can be used to set different spacing values for rows and columns.\\\\n\\\\n__Default value__: Depends on `\\\\\\\"spacing\\\\\\\"` property of [the view composition configuration](https://vega.github.io/vega-lite/docs/config.html#view-config) (`20` by default)\\\"},\\\"title\\\":{\\\"anyOf\\\":[{\\\"$ref\\\":\\\"#/definitions/Text\\\"},{\\\"$ref\\\":\\\"#/definitions/TitleParams\\\"}],\\\"description\\\":\\\"Title for the plot.\\\"},\\\"transform\\\":{\\\"description\\\":\\\"An array of data transformations such as filter and new field calculation.\\\",\\\"items\\\":{\\\"$ref\\\":\\\"#/definitions/Transform\\\"},\\\"type\\\":\\\"array\\\"}},\\\"required\\\":[\\\"concat\\\"],\\\"type\\\":\\\"object\\\"},\\\"NormalizedFacetSpec\\\":{\\\"additionalProperties\\\":false,\\\"description\\\":\\\"Base interface for a facet specification.\\\",\\\"properties\\\":{\\\"align\\\":{\\\"anyOf\\\":[{\\\"$ref\\\":\\\"#/definitions/LayoutAlign\\\"},{\\\"$ref\\\":\\\"#/definitions/RowCol<LayoutAlign>\\\"}],\\\"description\\\":\\\"The alignment to apply to grid rows and columns. The supported string values are `\\\\\\\"all\\\\\\\"`, `\\\\\\\"each\\\\\\\"`, and `\\\\\\\"none\\\\\\\"`.\\\\n\\\\n- For `\\\\\\\"none\\\\\\\"`, a flow layout will be used, in which adjacent subviews are simply placed one after the other. - For `\\\\\\\"each\\\\\\\"`, subviews will be aligned into a clean grid structure, but each row or column may be of variable size. - For `\\\\\\\"all\\\\\\\"`, subviews will be aligned and each row or column will be sized identically based on the maximum observed size. String values for this property will be applied to both grid rows and columns.\\\\n\\\\nAlternatively, an object value of the form `{\\\\\\\"row\\\\\\\": string, \\\\\\\"column\\\\\\\": string}` can be used to supply different alignments for rows and columns.\\\\n\\\\n__Default value:__ `\\\\\\\"all\\\\\\\"`.\\\"},\\\"bounds\\\":{\\\"description\\\":\\\"The bounds calculation method to use for determining the extent of a sub-plot. One of `full` (the default) or `flush`.\\\\n\\\\n- If set to `full`, the entire calculated bounds (including axes, title, and legend) will be used. - If set to `flush`, only the specified width and height values for the sub-view will be used. The `flush` setting can be useful when attempting to place sub-plots without axes or legends into a uniform grid structure.\\\\n\\\\n__Default value:__ `\\\\\\\"full\\\\\\\"`\\\",\\\"enum\\\":[\\\"full\\\",\\\"flush\\\"],\\\"type\\\":\\\"string\\\"},\\\"center\\\":{\\\"anyOf\\\":[{\\\"type\\\":\\\"boolean\\\"},{\\\"$ref\\\":\\\"#/definitions/RowCol<boolean>\\\"}],\\\"description\\\":\\\"Boolean flag indicating if subviews should be centered relative to their respective rows or columns.\\\\n\\\\nAn object value of the form `{\\\\\\\"row\\\\\\\": boolean, \\\\\\\"column\\\\\\\": boolean}` can be used to supply different centering values for rows and columns.\\\\n\\\\n__Default value:__ `false`\\\"},\\\"columns\\\":{\\\"description\\\":\\\"The number of columns to include in the view composition layout.\\\\n\\\\n__Default value__: `undefined` -- An infinite number of columns (a single row) will be assumed. This is equivalent to `hconcat` (for `concat`) and to using the `column` channel (for `facet` and `repeat`).\\\\n\\\\n__Note__:\\\\n\\\\n1) This property is only for: - the general (wrappable) `concat` operator (not `hconcat`/`vconcat`) - the `facet` and `repeat` operator with one field/repetition definition (without row/column nesting)\\\\n\\\\n2) Setting the `columns` to `1` is equivalent to `vconcat` (for `concat`) and to using the `row` channel (for `facet` and `repeat`).\\\",\\\"type\\\":\\\"number\\\"},\\\"data\\\":{\\\"anyOf\\\":[{\\\"$ref\\\":\\\"#/definitions/Data\\\"},{\\\"type\\\":\\\"null\\\"}],\\\"description\\\":\\\"An object describing the data source. Set to `null` to ignore the parent's data source. If no data is set, it is derived from the parent.\\\"},\\\"description\\\":{\\\"description\\\":\\\"Description of this mark for commenting purpose.\\\",\\\"type\\\":\\\"string\\\"},\\\"facet\\\":{\\\"anyOf\\\":[{\\\"$ref\\\":\\\"#/definitions/FacetFieldDef\\\"},{\\\"$ref\\\":\\\"#/definitions/FacetMapping\\\"}],\\\"description\\\":\\\"Definition for how to facet the data. One of: 1) [a field definition for faceting the plot by one field](https://vega.github.io/vega-lite/docs/facet.html#field-def) 2) [An object that maps `row` and `column` channels to their field definitions](https://vega.github.io/vega-lite/docs/facet.html#mapping)\\\"},\\\"name\\\":{\\\"description\\\":\\\"Name of the visualization for later reference.\\\",\\\"type\\\":\\\"string\\\"},\\\"resolve\\\":{\\\"$ref\\\":\\\"#/definitions/Resolve\\\",\\\"description\\\":\\\"Scale, axis, and legend resolutions for view composition specifications.\\\"},\\\"spacing\\\":{\\\"anyOf\\\":[{\\\"type\\\":\\\"number\\\"},{\\\"$ref\\\":\\\"#/definitions/RowCol<number>\\\"}],\\\"description\\\":\\\"The spacing in pixels between sub-views of the composition operator. An object of the form `{\\\\\\\"row\\\\\\\": number, \\\\\\\"column\\\\\\\": number}` can be used to set different spacing values for rows and columns.\\\\n\\\\n__Default value__: Depends on `\\\\\\\"spacing\\\\\\\"` property of [the view composition configuration](https://vega.github.io/vega-lite/docs/config.html#view-config) (`20` by default)\\\"},\\\"spec\\\":{\\\"anyOf\\\":[{\\\"$ref\\\":\\\"#/definitions/LayerSpec\\\"},{\\\"$ref\\\":\\\"#/definitions/FacetedUnitSpec\\\"}],\\\"description\\\":\\\"A specification of the view that gets faceted.\\\"},\\\"title\\\":{\\\"anyOf\\\":[{\\\"$ref\\\":\\\"#/definitions/Text\\\"},{\\\"$ref\\\":\\\"#/definitions/TitleParams\\\"}],\\\"description\\\":\\\"Title for the plot.\\\"},\\\"transform\\\":{\\\"description\\\":\\\"An array of data transformations such as filter and new field calculation.\\\",\\\"items\\\":{\\\"$ref\\\":\\\"#/definitions/Transform\\\"},\\\"type\\\":\\\"array\\\"}},\\\"required\\\":[\\\"facet\\\",\\\"spec\\\"],\\\"type\\\":\\\"object\\\"},\\\"FacetSpec\\\":{\\\"additionalProperties\\\":false,\\\"description\\\":\\\"Base interface for a facet specification.\\\",\\\"properties\\\":{\\\"align\\\":{\\\"anyOf\\\":[{\\\"$ref\\\":\\\"#/definitions/LayoutAlign\\\"},{\\\"$ref\\\":\\\"#/definitions/RowCol<LayoutAlign>\\\"}],\\\"description\\\":\\\"The alignment to apply to grid rows and columns. The supported string values are `\\\\\\\"all\\\\\\\"`, `\\\\\\\"each\\\\\\\"`, and `\\\\\\\"none\\\\\\\"`.\\\\n\\\\n- For `\\\\\\\"none\\\\\\\"`, a flow layout will be used, in which adjacent subviews are simply placed one after the other. - For `\\\\\\\"each\\\\\\\"`, subviews will be aligned into a clean grid structure, but each row or column may be of variable size. - For `\\\\\\\"all\\\\\\\"`, subviews will be aligned and each row or column will be sized identically based on the maximum observed size. String values for this property will be applied to both grid rows and columns.\\\\n\\\\nAlternatively, an object value of the form `{\\\\\\\"row\\\\\\\": string, \\\\\\\"column\\\\\\\": string}` can be used to supply different alignments for rows and columns.\\\\n\\\\n__Default value:__ `\\\\\\\"all\\\\\\\"`.\\\"},\\\"bounds\\\":{\\\"description\\\":\\\"The bounds calculation method to use for determining the extent of a sub-plot. One of `full` (the default) or `flush`.\\\\n\\\\n- If set to `full`, the entire calculated bounds (including axes, title, and legend) will be used. - If set to `flush`, only the specified width and height values for the sub-view will be used. The `flush` setting can be useful when attempting to place sub-plots without axes or legends into a uniform grid structure.\\\\n\\\\n__Default value:__ `\\\\\\\"full\\\\\\\"`\\\",\\\"enum\\\":[\\\"full\\\",\\\"flush\\\"],\\\"type\\\":\\\"string\\\"},\\\"center\\\":{\\\"anyOf\\\":[{\\\"type\\\":\\\"boolean\\\"},{\\\"$ref\\\":\\\"#/definitions/RowCol<boolean>\\\"}],\\\"description\\\":\\\"Boolean flag indicating if subviews should be centered relative to their respective rows or columns.\\\\n\\\\nAn object value of the form `{\\\\\\\"row\\\\\\\": boolean, \\\\\\\"column\\\\\\\": boolean}` can be used to supply different centering values for rows and columns.\\\\n\\\\n__Default value:__ `false`\\\"},\\\"columns\\\":{\\\"description\\\":\\\"The number of columns to include in the view composition layout.\\\\n\\\\n__Default value__: `undefined` -- An infinite number of columns (a single row) will be assumed. This is equivalent to `hconcat` (for `concat`) and to using the `column` channel (for `facet` and `repeat`).\\\\n\\\\n__Note__:\\\\n\\\\n1) This property is only for: - the general (wrappable) `concat` operator (not `hconcat`/`vconcat`) - the `facet` and `repeat` operator with one field/repetition definition (without row/column nesting)\\\\n\\\\n2) Setting the `columns` to `1` is equivalent to `vconcat` (for `concat`) and to using the `row` channel (for `facet` and `repeat`).\\\",\\\"type\\\":\\\"number\\\"},\\\"data\\\":{\\\"anyOf\\\":[{\\\"$ref\\\":\\\"#/definitions/Data\\\"},{\\\"type\\\":\\\"null\\\"}],\\\"description\\\":\\\"An object describing the data source. Set to `null` to ignore the parent's data source. If no data is set, it is derived from the parent.\\\"},\\\"description\\\":{\\\"description\\\":\\\"Description of this mark for commenting purpose.\\\",\\\"type\\\":\\\"string\\\"},\\\"facet\\\":{\\\"anyOf\\\":[{\\\"$ref\\\":\\\"#/definitions/FacetFieldDef<FieldName>\\\"},{\\\"$ref\\\":\\\"#/definitions/FacetMapping<FieldName>\\\"}],\\\"description\\\":\\\"Definition for how to facet the data. One of: 1) [a field definition for faceting the plot by one field](https://vega.github.io/vega-lite/docs/facet.html#field-def) 2) [An object that maps `row` and `column` channels to their field definitions](https://vega.github.io/vega-lite/docs/facet.html#mapping)\\\"},\\\"name\\\":{\\\"description\\\":\\\"Name of the visualization for later reference.\\\",\\\"type\\\":\\\"string\\\"},\\\"resolve\\\":{\\\"$ref\\\":\\\"#/definitions/Resolve\\\",\\\"description\\\":\\\"Scale, axis, and legend resolutions for view composition specifications.\\\"},\\\"spacing\\\":{\\\"anyOf\\\":[{\\\"type\\\":\\\"number\\\"},{\\\"$ref\\\":\\\"#/definitions/RowCol<number>\\\"}],\\\"description\\\":\\\"The spacing in pixels between sub-views of the composition operator. An object of the form `{\\\\\\\"row\\\\\\\": number, \\\\\\\"column\\\\\\\": number}` can be used to set different spacing values for rows and columns.\\\\n\\\\n__Default value__: Depends on `\\\\\\\"spacing\\\\\\\"` property of [the view composition configuration](https://vega.github.io/vega-lite/docs/config.html#view-config) (`20` by default)\\\"},\\\"spec\\\":{\\\"anyOf\\\":[{\\\"$ref\\\":\\\"#/definitions/LayerSpec\\\"},{\\\"$ref\\\":\\\"#/definitions/FacetedUnitSpec\\\"}],\\\"description\\\":\\\"A specification of the view that gets faceted.\\\"},\\\"title\\\":{\\\"anyOf\\\":[{\\\"$ref\\\":\\\"#/definitions/Text\\\"},{\\\"$ref\\\":\\\"#/definitions/TitleParams\\\"}],\\\"description\\\":\\\"Title for the plot.\\\"},\\\"transform\\\":{\\\"description\\\":\\\"An array of data transformations such as filter and new field calculation.\\\",\\\"items\\\":{\\\"$ref\\\":\\\"#/definitions/Transform\\\"},\\\"type\\\":\\\"array\\\"}},\\\"required\\\":[\\\"facet\\\",\\\"spec\\\"],\\\"type\\\":\\\"object\\\"},\\\"NormalizedHConcatSpec<GenericSpec>\\\":{\\\"additionalProperties\\\":false,\\\"description\\\":\\\"Base interface for a horizontal concatenation specification.\\\",\\\"properties\\\":{\\\"bounds\\\":{\\\"description\\\":\\\"The bounds calculation method to use for determining the extent of a sub-plot. One of `full` (the default) or `flush`.\\\\n\\\\n- If set to `full`, the entire calculated bounds (including axes, title, and legend) will be used. - If set to `flush`, only the specified width and height values for the sub-view will be used. The `flush` setting can be useful when attempting to place sub-plots without axes or legends into a uniform grid structure.\\\\n\\\\n__Default value:__ `\\\\\\\"full\\\\\\\"`\\\",\\\"enum\\\":[\\\"full\\\",\\\"flush\\\"],\\\"type\\\":\\\"string\\\"},\\\"center\\\":{\\\"description\\\":\\\"Boolean flag indicating if subviews should be centered relative to their respective rows or columns.\\\\n\\\\n__Default value:__ `false`\\\",\\\"type\\\":\\\"boolean\\\"},\\\"data\\\":{\\\"anyOf\\\":[{\\\"$ref\\\":\\\"#/definitions/Data\\\"},{\\\"type\\\":\\\"null\\\"}],\\\"description\\\":\\\"An object describing the data source. Set to `null` to ignore the parent's data source. If no data is set, it is derived from the parent.\\\"},\\\"description\\\":{\\\"description\\\":\\\"Description of this mark for commenting purpose.\\\",\\\"type\\\":\\\"string\\\"},\\\"hconcat\\\":{\\\"description\\\":\\\"A list of views to be concatenated and put into a row.\\\",\\\"items\\\":{\\\"$ref\\\":\\\"#/definitions/NormalizedSpec\\\"},\\\"type\\\":\\\"array\\\"},\\\"name\\\":{\\\"description\\\":\\\"Name of the visualization for later reference.\\\",\\\"type\\\":\\\"string\\\"},\\\"resolve\\\":{\\\"$ref\\\":\\\"#/definitions/Resolve\\\",\\\"description\\\":\\\"Scale, axis, and legend resolutions for view composition specifications.\\\"},\\\"spacing\\\":{\\\"description\\\":\\\"The spacing in pixels between sub-views of the concat operator.\\\\n\\\\n__Default value__: `10`\\\",\\\"type\\\":\\\"number\\\"},\\\"title\\\":{\\\"anyOf\\\":[{\\\"$ref\\\":\\\"#/definitions/Text\\\"},{\\\"$ref\\\":\\\"#/definitions/TitleParams\\\"}],\\\"description\\\":\\\"Title for the plot.\\\"},\\\"transform\\\":{\\\"description\\\":\\\"An array of data transformations such as filter and new field calculation.\\\",\\\"items\\\":{\\\"$ref\\\":\\\"#/definitions/Transform\\\"},\\\"type\\\":\\\"array\\\"}},\\\"required\\\":[\\\"hconcat\\\"],\\\"type\\\":\\\"object\\\"},\\\"HConcatSpec<GenericSpec>\\\":{\\\"additionalProperties\\\":false,\\\"description\\\":\\\"Base interface for a horizontal concatenation specification.\\\",\\\"properties\\\":{\\\"bounds\\\":{\\\"description\\\":\\\"The bounds calculation method to use for determining the extent of a sub-plot. One of `full` (the default) or `flush`.\\\\n\\\\n- If set to `full`, the entire calculated bounds (including axes, title, and legend) will be used. - If set to `flush`, only the specified width and height values for the sub-view will be used. The `flush` setting can be useful when attempting to place sub-plots without axes or legends into a uniform grid structure.\\\\n\\\\n__Default value:__ `\\\\\\\"full\\\\\\\"`\\\",\\\"enum\\\":[\\\"full\\\",\\\"flush\\\"],\\\"type\\\":\\\"string\\\"},\\\"center\\\":{\\\"description\\\":\\\"Boolean flag indicating if subviews should be centered relative to their respective rows or columns.\\\\n\\\\n__Default value:__ `false`\\\",\\\"type\\\":\\\"boolean\\\"},\\\"data\\\":{\\\"anyOf\\\":[{\\\"$ref\\\":\\\"#/definitions/Data\\\"},{\\\"type\\\":\\\"null\\\"}],\\\"description\\\":\\\"An object describing the data source. Set to `null` to ignore the parent's data source. If no data is set, it is derived from the parent.\\\"},\\\"description\\\":{\\\"description\\\":\\\"Description of this mark for commenting purpose.\\\",\\\"type\\\":\\\"string\\\"},\\\"hconcat\\\":{\\\"description\\\":\\\"A list of views to be concatenated and put into a row.\\\",\\\"items\\\":{\\\"$ref\\\":\\\"#/definitions/Spec\\\"},\\\"type\\\":\\\"array\\\"},\\\"name\\\":{\\\"description\\\":\\\"Name of the visualization for later reference.\\\",\\\"type\\\":\\\"string\\\"},\\\"resolve\\\":{\\\"$ref\\\":\\\"#/definitions/Resolve\\\",\\\"description\\\":\\\"Scale, axis, and legend resolutions for view composition specifications.\\\"},\\\"spacing\\\":{\\\"description\\\":\\\"The spacing in pixels between sub-views of the concat operator.\\\\n\\\\n__Default value__: `10`\\\",\\\"type\\\":\\\"number\\\"},\\\"title\\\":{\\\"anyOf\\\":[{\\\"$ref\\\":\\\"#/definitions/Text\\\"},{\\\"$ref\\\":\\\"#/definitions/TitleParams\\\"}],\\\"description\\\":\\\"Title for the plot.\\\"},\\\"transform\\\":{\\\"description\\\":\\\"An array of data transformations such as filter and new field calculation.\\\",\\\"items\\\":{\\\"$ref\\\":\\\"#/definitions/Transform\\\"},\\\"type\\\":\\\"array\\\"}},\\\"required\\\":[\\\"hconcat\\\"],\\\"type\\\":\\\"object\\\"},\\\"NormalizedSpec\\\":{\\\"anyOf\\\":[{\\\"$ref\\\":\\\"#/definitions/FacetedUnitSpec\\\"},{\\\"$ref\\\":\\\"#/definitions/LayerSpec\\\"},{\\\"$ref\\\":\\\"#/definitions/RepeatSpec\\\"},{\\\"$ref\\\":\\\"#/definitions/NormalizedFacetSpec\\\"},{\\\"$ref\\\":\\\"#/definitions/NormalizedConcatSpec<GenericSpec>\\\"},{\\\"$ref\\\":\\\"#/definitions/NormalizedVConcatSpec<GenericSpec>\\\"},{\\\"$ref\\\":\\\"#/definitions/NormalizedHConcatSpec<GenericSpec>\\\"}],\\\"description\\\":\\\"Any specification in Vega-Lite.\\\"},\\\"Spec\\\":{\\\"anyOf\\\":[{\\\"$ref\\\":\\\"#/definitions/FacetedUnitSpec\\\"},{\\\"$ref\\\":\\\"#/definitions/LayerSpec\\\"},{\\\"$ref\\\":\\\"#/definitions/RepeatSpec\\\"},{\\\"$ref\\\":\\\"#/definitions/FacetSpec\\\"},{\\\"$ref\\\":\\\"#/definitions/ConcatSpec<GenericSpec>\\\"},{\\\"$ref\\\":\\\"#/definitions/VConcatSpec<GenericSpec>\\\"},{\\\"$ref\\\":\\\"#/definitions/HConcatSpec<GenericSpec>\\\"}],\\\"description\\\":\\\"Any specification in Vega-Lite.\\\"},\\\"NormalizedVConcatSpec<GenericSpec>\\\":{\\\"additionalProperties\\\":false,\\\"description\\\":\\\"Base interface for a vertical concatenation specification.\\\",\\\"properties\\\":{\\\"bounds\\\":{\\\"description\\\":\\\"The bounds calculation method to use for determining the extent of a sub-plot. One of `full` (the default) or `flush`.\\\\n\\\\n- If set to `full`, the entire calculated bounds (including axes, title, and legend) will be used. - If set to `flush`, only the specified width and height values for the sub-view will be used. The `flush` setting can be useful when attempting to place sub-plots without axes or legends into a uniform grid structure.\\\\n\\\\n__Default value:__ `\\\\\\\"full\\\\\\\"`\\\",\\\"enum\\\":[\\\"full\\\",\\\"flush\\\"],\\\"type\\\":\\\"string\\\"},\\\"center\\\":{\\\"description\\\":\\\"Boolean flag indicating if subviews should be centered relative to their respective rows or columns.\\\\n\\\\n__Default value:__ `false`\\\",\\\"type\\\":\\\"boolean\\\"},\\\"data\\\":{\\\"anyOf\\\":[{\\\"$ref\\\":\\\"#/definitions/Data\\\"},{\\\"type\\\":\\\"null\\\"}],\\\"description\\\":\\\"An object describing the data source. Set to `null` to ignore the parent's data source. If no data is set, it is derived from the parent.\\\"},\\\"description\\\":{\\\"description\\\":\\\"Description of this mark for commenting purpose.\\\",\\\"type\\\":\\\"string\\\"},\\\"name\\\":{\\\"description\\\":\\\"Name of the visualization for later reference.\\\",\\\"type\\\":\\\"string\\\"},\\\"resolve\\\":{\\\"$ref\\\":\\\"#/definitions/Resolve\\\",\\\"description\\\":\\\"Scale, axis, and legend resolutions for view composition specifications.\\\"},\\\"spacing\\\":{\\\"description\\\":\\\"The spacing in pixels between sub-views of the concat operator.\\\\n\\\\n__Default value__: `10`\\\",\\\"type\\\":\\\"number\\\"},\\\"title\\\":{\\\"anyOf\\\":[{\\\"$ref\\\":\\\"#/definitions/Text\\\"},{\\\"$ref\\\":\\\"#/definitions/TitleParams\\\"}],\\\"description\\\":\\\"Title for the plot.\\\"},\\\"transform\\\":{\\\"description\\\":\\\"An array of data transformations such as filter and new field calculation.\\\",\\\"items\\\":{\\\"$ref\\\":\\\"#/definitions/Transform\\\"},\\\"type\\\":\\\"array\\\"},\\\"vconcat\\\":{\\\"description\\\":\\\"A list of views to be concatenated and put into a column.\\\",\\\"items\\\":{\\\"$ref\\\":\\\"#/definitions/NormalizedSpec\\\"},\\\"type\\\":\\\"array\\\"}},\\\"required\\\":[\\\"vconcat\\\"],\\\"type\\\":\\\"object\\\"},\\\"VConcatSpec<GenericSpec>\\\":{\\\"additionalProperties\\\":false,\\\"description\\\":\\\"Base interface for a vertical concatenation specification.\\\",\\\"properties\\\":{\\\"bounds\\\":{\\\"description\\\":\\\"The bounds calculation method to use for determining the extent of a sub-plot. One of `full` (the default) or `flush`.\\\\n\\\\n- If set to `full`, the entire calculated bounds (including axes, title, and legend) will be used. - If set to `flush`, only the specified width and height values for the sub-view will be used. The `flush` setting can be useful when attempting to place sub-plots without axes or legends into a uniform grid structure.\\\\n\\\\n__Default value:__ `\\\\\\\"full\\\\\\\"`\\\",\\\"enum\\\":[\\\"full\\\",\\\"flush\\\"],\\\"type\\\":\\\"string\\\"},\\\"center\\\":{\\\"description\\\":\\\"Boolean flag indicating if subviews should be centered relative to their respective rows or columns.\\\\n\\\\n__Default value:__ `false`\\\",\\\"type\\\":\\\"boolean\\\"},\\\"data\\\":{\\\"anyOf\\\":[{\\\"$ref\\\":\\\"#/definitions/Data\\\"},{\\\"type\\\":\\\"null\\\"}],\\\"description\\\":\\\"An object describing the data source. Set to `null` to ignore the parent's data source. If no data is set, it is derived from the parent.\\\"},\\\"description\\\":{\\\"description\\\":\\\"Description of this mark for commenting purpose.\\\",\\\"type\\\":\\\"string\\\"},\\\"name\\\":{\\\"description\\\":\\\"Name of the visualization for later reference.\\\",\\\"type\\\":\\\"string\\\"},\\\"resolve\\\":{\\\"$ref\\\":\\\"#/definitions/Resolve\\\",\\\"description\\\":\\\"Scale, axis, and legend resolutions for view composition specifications.\\\"},\\\"spacing\\\":{\\\"description\\\":\\\"The spacing in pixels between sub-views of the concat operator.\\\\n\\\\n__Default value__: `10`\\\",\\\"type\\\":\\\"number\\\"},\\\"title\\\":{\\\"anyOf\\\":[{\\\"$ref\\\":\\\"#/definitions/Text\\\"},{\\\"$ref\\\":\\\"#/definitions/TitleParams\\\"}],\\\"description\\\":\\\"Title for the plot.\\\"},\\\"transform\\\":{\\\"description\\\":\\\"An array of data transformations such as filter and new field calculation.\\\",\\\"items\\\":{\\\"$ref\\\":\\\"#/definitions/Transform\\\"},\\\"type\\\":\\\"array\\\"},\\\"vconcat\\\":{\\\"description\\\":\\\"A list of views to be concatenated and put into a column.\\\",\\\"items\\\":{\\\"$ref\\\":\\\"#/definitions/Spec\\\"},\\\"type\\\":\\\"array\\\"}},\\\"required\\\":[\\\"vconcat\\\"],\\\"type\\\":\\\"object\\\"},\\\"GeoJsonFeature\\\":{},\\\"GeoJsonFeatureCollection\\\":{},\\\"Gradient\\\":{\\\"anyOf\\\":[{\\\"$ref\\\":\\\"#/definitions/LinearGradient\\\"},{\\\"$ref\\\":\\\"#/definitions/RadialGradient\\\"}]},\\\"GradientStop\\\":{\\\"additionalProperties\\\":false,\\\"properties\\\":{\\\"color\\\":{\\\"$ref\\\":\\\"#/definitions/Color\\\",\\\"description\\\":\\\"The color value at this point in the gradient.\\\"},\\\"offset\\\":{\\\"description\\\":\\\"The offset fraction for the color stop, indicating its position within the gradient.\\\",\\\"type\\\":\\\"number\\\"}},\\\"required\\\":[\\\"offset\\\",\\\"color\\\"],\\\"type\\\":\\\"object\\\"},\\\"GraticuleGenerator\\\":{\\\"additionalProperties\\\":false,\\\"properties\\\":{\\\"graticule\\\":{\\\"anyOf\\\":[{\\\"const\\\":true,\\\"type\\\":\\\"boolean\\\"},{\\\"$ref\\\":\\\"#/definitions/GraticuleParams\\\"}],\\\"description\\\":\\\"Generate graticule GeoJSON data for geographic reference lines.\\\"},\\\"name\\\":{\\\"description\\\":\\\"Provide a placeholder name and bind data at runtime.\\\",\\\"type\\\":\\\"string\\\"}},\\\"required\\\":[\\\"graticule\\\"],\\\"type\\\":\\\"object\\\"},\\\"GraticuleParams\\\":{\\\"additionalProperties\\\":false,\\\"properties\\\":{\\\"extent\\\":{\\\"$ref\\\":\\\"#/definitions/Vector2<Vector2<number>>\\\",\\\"description\\\":\\\"Sets both the major and minor extents to the same values.\\\"},\\\"extentMajor\\\":{\\\"$ref\\\":\\\"#/definitions/Vector2<Vector2<number>>\\\",\\\"description\\\":\\\"The major extent of the graticule as a two-element array of coordinates.\\\"},\\\"extentMinor\\\":{\\\"$ref\\\":\\\"#/definitions/Vector2<Vector2<number>>\\\",\\\"description\\\":\\\"The minor extent of the graticule as a two-element array of coordinates.\\\"},\\\"precision\\\":{\\\"description\\\":\\\"The precision of the graticule in degrees.\\\\n\\\\n__Default value:__ `2.5`\\\",\\\"type\\\":\\\"number\\\"},\\\"step\\\":{\\\"$ref\\\":\\\"#/definitions/Vector2<number>\\\",\\\"description\\\":\\\"Sets both the major and minor step angles to the same values.\\\"},\\\"stepMajor\\\":{\\\"$ref\\\":\\\"#/definitions/Vector2<number>\\\",\\\"description\\\":\\\"The major step angles of the graticule.\\\\n\\\\n\\\\n__Default value:__ `[90, 360]`\\\"},\\\"stepMinor\\\":{\\\"$ref\\\":\\\"#/definitions/Vector2<number>\\\",\\\"description\\\":\\\"The minor step angles of the graticule.\\\\n\\\\n__Default value:__ `[10, 10]`\\\"}},\\\"type\\\":\\\"object\\\"},\\\"Header\\\":{\\\"additionalProperties\\\":false,\\\"description\\\":\\\"Headers of row / column channels for faceted plots.\\\",\\\"properties\\\":{\\\"format\\\":{\\\"anyOf\\\":[{\\\"type\\\":\\\"string\\\"},{\\\"$ref\\\":\\\"#/definitions/Dict<unknown>\\\"}],\\\"description\\\":\\\"When used with the default `\\\\\\\"number\\\\\\\"` and `\\\\\\\"time\\\\\\\"` format type, the text formatting pattern for labels of guides (axes, legends, headers) and text marks.\\\\n\\\\n- If the format type is `\\\\\\\"number\\\\\\\"` (e.g., for quantitative fields), this is D3's [number format pattern](https://github.com/d3/d3-format#locale_format). - If the format type is `\\\\\\\"time\\\\\\\"` (e.g., for temporal fields), this is D3's [time format pattern](https://github.com/d3/d3-time-format#locale_format).\\\\n\\\\nSee the [format documentation](https://vega.github.io/vega-lite/docs/format.html) for more examples.\\\\n\\\\nWhen used with a [custom `formatType`](https://vega.github.io/vega-lite/docs/config.html#custom-format-type), this value will be passed as `format` alongside `datum.value` to the registered function.\\\\n\\\\n__Default value:__  Derived from [numberFormat](https://vega.github.io/vega-lite/docs/config.html#format) config for number format and from [timeFormat](https://vega.github.io/vega-lite/docs/config.html#format) config for time format.\\\"},\\\"formatType\\\":{\\\"description\\\":\\\"The format type for labels. One of `\\\\\\\"number\\\\\\\"`, `\\\\\\\"time\\\\\\\"`, or a [registered custom format type](https://vega.github.io/vega-lite/docs/config.html#custom-format-type).\\\\n\\\\n__Default value:__ - `\\\\\\\"time\\\\\\\"` for temporal fields and ordinal and nominal fields with `timeUnit`. - `\\\\\\\"number\\\\\\\"` for quantitative fields as well as ordinal and nominal fields without `timeUnit`.\\\",\\\"type\\\":\\\"string\\\"},\\\"labelAlign\\\":{\\\"anyOf\\\":[{\\\"$ref\\\":\\\"#/definitions/Align\\\"},{\\\"$ref\\\":\\\"#/definitions/ExprRef\\\"}],\\\"description\\\":\\\"Horizontal text alignment of header labels. One of `\\\\\\\"left\\\\\\\"`, `\\\\\\\"center\\\\\\\"`, or `\\\\\\\"right\\\\\\\"`.\\\"},\\\"labelAnchor\\\":{\\\"$ref\\\":\\\"#/definitions/TitleAnchor\\\",\\\"description\\\":\\\"The anchor position for placing the labels. One of `\\\\\\\"start\\\\\\\"`, `\\\\\\\"middle\\\\\\\"`, or `\\\\\\\"end\\\\\\\"`. For example, with a label orientation of top these anchor positions map to a left-, center-, or right-aligned label.\\\"},\\\"labelAngle\\\":{\\\"description\\\":\\\"The rotation angle of the header labels.\\\\n\\\\n__Default value:__ `0` for column header, `-90` for row header.\\\",\\\"maximum\\\":360,\\\"minimum\\\":-360,\\\"type\\\":\\\"number\\\"},\\\"labelBaseline\\\":{\\\"anyOf\\\":[{\\\"$ref\\\":\\\"#/definitions/TextBaseline\\\"},{\\\"$ref\\\":\\\"#/definitions/ExprRef\\\"}],\\\"description\\\":\\\"The vertical text baseline for the header labels. One of `\\\\\\\"alphabetic\\\\\\\"` (default), `\\\\\\\"top\\\\\\\"`, `\\\\\\\"middle\\\\\\\"`, `\\\\\\\"bottom\\\\\\\"`, `\\\\\\\"line-top\\\\\\\"`, or `\\\\\\\"line-bottom\\\\\\\"`. The `\\\\\\\"line-top\\\\\\\"` and `\\\\\\\"line-bottom\\\\\\\"` values operate similarly to `\\\\\\\"top\\\\\\\"` and `\\\\\\\"bottom\\\\\\\"`, but are calculated relative to the `titleLineHeight` rather than `titleFontSize` alone.\\\"},\\\"labelColor\\\":{\\\"anyOf\\\":[{\\\"$ref\\\":\\\"#/definitions/Color\\\"},{\\\"$ref\\\":\\\"#/definitions/ExprRef\\\"}],\\\"description\\\":\\\"The color of the header label, can be in hex color code or regular color name.\\\"},\\\"labelExpr\\\":{\\\"description\\\":\\\"[Vega expression](https://vega.github.io/vega/docs/expressions/) for customizing labels.\\\\n\\\\n__Note:__ The label text and value can be assessed via the `label` and `value` properties of the header's backing `datum` object.\\\",\\\"type\\\":\\\"string\\\"},\\\"labelFont\\\":{\\\"anyOf\\\":[{\\\"type\\\":\\\"string\\\"},{\\\"$ref\\\":\\\"#/definitions/ExprRef\\\"}],\\\"description\\\":\\\"The font of the header label.\\\"},\\\"labelFontSize\\\":{\\\"anyOf\\\":[{\\\"type\\\":\\\"number\\\"},{\\\"$ref\\\":\\\"#/definitions/ExprRef\\\"}],\\\"description\\\":\\\"The font size of the header label, in pixels.\\\",\\\"minimum\\\":0},\\\"labelFontStyle\\\":{\\\"anyOf\\\":[{\\\"$ref\\\":\\\"#/definitions/FontStyle\\\"},{\\\"$ref\\\":\\\"#/definitions/ExprRef\\\"}],\\\"description\\\":\\\"The font style of the header label.\\\"},\\\"labelFontWeight\\\":{\\\"anyOf\\\":[{\\\"$ref\\\":\\\"#/definitions/FontWeight\\\"},{\\\"$ref\\\":\\\"#/definitions/ExprRef\\\"}],\\\"description\\\":\\\"The font weight of the header label.\\\"},\\\"labelLimit\\\":{\\\"anyOf\\\":[{\\\"type\\\":\\\"number\\\"},{\\\"$ref\\\":\\\"#/definitions/ExprRef\\\"}],\\\"description\\\":\\\"The maximum length of the header label in pixels. The text value will be automatically truncated if the rendered size exceeds the limit.\\\\n\\\\n__Default value:__ `0`, indicating no limit\\\"},\\\"labelLineHeight\\\":{\\\"anyOf\\\":[{\\\"type\\\":\\\"number\\\"},{\\\"$ref\\\":\\\"#/definitions/ExprRef\\\"}],\\\"description\\\":\\\"Line height in pixels for multi-line header labels or title text with `\\\\\\\"line-top\\\\\\\"` or `\\\\\\\"line-bottom\\\\\\\"` baseline.\\\"},\\\"labelOrient\\\":{\\\"$ref\\\":\\\"#/definitions/Orient\\\",\\\"description\\\":\\\"The orientation of the header label. One of `\\\\\\\"top\\\\\\\"`, `\\\\\\\"bottom\\\\\\\"`, `\\\\\\\"left\\\\\\\"` or `\\\\\\\"right\\\\\\\"`.\\\"},\\\"labelPadding\\\":{\\\"anyOf\\\":[{\\\"type\\\":\\\"number\\\"},{\\\"$ref\\\":\\\"#/definitions/ExprRef\\\"}],\\\"description\\\":\\\"The padding, in pixel, between facet header's label and the plot.\\\\n\\\\n__Default value:__ `10`\\\"},\\\"labels\\\":{\\\"description\\\":\\\"A boolean flag indicating if labels should be included as part of the header.\\\\n\\\\n__Default value:__ `true`.\\\",\\\"type\\\":\\\"boolean\\\"},\\\"orient\\\":{\\\"$ref\\\":\\\"#/definitions/Orient\\\",\\\"description\\\":\\\"Shortcut for setting both labelOrient and titleOrient.\\\"},\\\"title\\\":{\\\"anyOf\\\":[{\\\"$ref\\\":\\\"#/definitions/Text\\\"},{\\\"type\\\":\\\"null\\\"}],\\\"description\\\":\\\"A title for the field. If `null`, the title will be removed.\\\\n\\\\n__Default value:__  derived from the field's name and transformation function (`aggregate`, `bin` and `timeUnit`). If the field has an aggregate function, the function is displayed as part of the title (e.g., `\\\\\\\"Sum of Profit\\\\\\\"`). If the field is binned or has a time unit applied, the applied function is shown in parentheses (e.g., `\\\\\\\"Profit (binned)\\\\\\\"`, `\\\\\\\"Transaction Date (year-month)\\\\\\\"`). Otherwise, the title is simply the field name.\\\\n\\\\n__Notes__:\\\\n\\\\n1) You can customize the default field title format by providing the [`fieldTitle`](https://vega.github.io/vega-lite/docs/config.html#top-level-config) property in the [config](https://vega.github.io/vega-lite/docs/config.html) or [`fieldTitle` function via the `compile` function's options](https://vega.github.io/vega-lite/docs/compile.html#field-title).\\\\n\\\\n2) If both field definition's `title` and axis, header, or legend `title` are defined, axis/header/legend title will be used.\\\"},\\\"titleAlign\\\":{\\\"anyOf\\\":[{\\\"$ref\\\":\\\"#/definitions/Align\\\"},{\\\"$ref\\\":\\\"#/definitions/ExprRef\\\"}],\\\"description\\\":\\\"Horizontal text alignment (to the anchor) of header titles.\\\"},\\\"titleAnchor\\\":{\\\"$ref\\\":\\\"#/definitions/TitleAnchor\\\",\\\"description\\\":\\\"The anchor position for placing the title. One of `\\\\\\\"start\\\\\\\"`, `\\\\\\\"middle\\\\\\\"`, or `\\\\\\\"end\\\\\\\"`. For example, with an orientation of top these anchor positions map to a left-, center-, or right-aligned title.\\\"},\\\"titleAngle\\\":{\\\"description\\\":\\\"The rotation angle of the header title.\\\\n\\\\n__Default value:__ `0`.\\\",\\\"maximum\\\":360,\\\"minimum\\\":-360,\\\"type\\\":\\\"number\\\"},\\\"titleBaseline\\\":{\\\"anyOf\\\":[{\\\"$ref\\\":\\\"#/definitions/TextBaseline\\\"},{\\\"$ref\\\":\\\"#/definitions/ExprRef\\\"}],\\\"description\\\":\\\"The vertical text baseline for the header title. One of `\\\\\\\"alphabetic\\\\\\\"` (default), `\\\\\\\"top\\\\\\\"`, `\\\\\\\"middle\\\\\\\"`, `\\\\\\\"bottom\\\\\\\"`, `\\\\\\\"line-top\\\\\\\"`, or `\\\\\\\"line-bottom\\\\\\\"`. The `\\\\\\\"line-top\\\\\\\"` and `\\\\\\\"line-bottom\\\\\\\"` values operate similarly to `\\\\\\\"top\\\\\\\"` and `\\\\\\\"bottom\\\\\\\"`, but are calculated relative to the `titleLineHeight` rather than `titleFontSize` alone.\\\\n\\\\n__Default value:__ `\\\\\\\"middle\\\\\\\"`\\\"},\\\"titleColor\\\":{\\\"anyOf\\\":[{\\\"$ref\\\":\\\"#/definitions/Color\\\"},{\\\"$ref\\\":\\\"#/definitions/ExprRef\\\"}],\\\"description\\\":\\\"Color of the header title, can be in hex color code or regular color name.\\\"},\\\"titleFont\\\":{\\\"anyOf\\\":[{\\\"type\\\":\\\"string\\\"},{\\\"$ref\\\":\\\"#/definitions/ExprRef\\\"}],\\\"description\\\":\\\"Font of the header title. (e.g., `\\\\\\\"Helvetica Neue\\\\\\\"`).\\\"},\\\"titleFontSize\\\":{\\\"anyOf\\\":[{\\\"type\\\":\\\"number\\\"},{\\\"$ref\\\":\\\"#/definitions/ExprRef\\\"}],\\\"description\\\":\\\"Font size of the header title.\\\",\\\"minimum\\\":0},\\\"titleFontStyle\\\":{\\\"anyOf\\\":[{\\\"$ref\\\":\\\"#/definitions/FontStyle\\\"},{\\\"$ref\\\":\\\"#/definitions/ExprRef\\\"}],\\\"description\\\":\\\"The font style of the header title.\\\"},\\\"titleFontWeight\\\":{\\\"anyOf\\\":[{\\\"$ref\\\":\\\"#/definitions/FontWeight\\\"},{\\\"$ref\\\":\\\"#/definitions/ExprRef\\\"}],\\\"description\\\":\\\"Font weight of the header title. This can be either a string (e.g `\\\\\\\"bold\\\\\\\"`, `\\\\\\\"normal\\\\\\\"`) or a number (`100`, `200`, `300`, ..., `900` where `\\\\\\\"normal\\\\\\\"` = `400` and `\\\\\\\"bold\\\\\\\"` = `700`).\\\"},\\\"titleLimit\\\":{\\\"anyOf\\\":[{\\\"type\\\":\\\"number\\\"},{\\\"$ref\\\":\\\"#/definitions/ExprRef\\\"}],\\\"description\\\":\\\"The maximum length of the header title in pixels. The text value will be automatically truncated if the rendered size exceeds the limit.\\\\n\\\\n__Default value:__ `0`, indicating no limit\\\"},\\\"titleLineHeight\\\":{\\\"anyOf\\\":[{\\\"type\\\":\\\"number\\\"},{\\\"$ref\\\":\\\"#/definitions/ExprRef\\\"}],\\\"description\\\":\\\"Line height in pixels for multi-line header title text or title text with `\\\\\\\"line-top\\\\\\\"` or `\\\\\\\"line-bottom\\\\\\\"` baseline.\\\"},\\\"titleOrient\\\":{\\\"$ref\\\":\\\"#/definitions/Orient\\\",\\\"description\\\":\\\"The orientation of the header title. One of `\\\\\\\"top\\\\\\\"`, `\\\\\\\"bottom\\\\\\\"`, `\\\\\\\"left\\\\\\\"` or `\\\\\\\"right\\\\\\\"`.\\\"},\\\"titlePadding\\\":{\\\"anyOf\\\":[{\\\"type\\\":\\\"number\\\"},{\\\"$ref\\\":\\\"#/definitions/ExprRef\\\"}],\\\"description\\\":\\\"The padding, in pixel, between facet header's title and the label.\\\\n\\\\n__Default value:__ `10`\\\"}},\\\"type\\\":\\\"object\\\"},\\\"HeaderConfig\\\":{\\\"additionalProperties\\\":false,\\\"properties\\\":{\\\"format\\\":{\\\"anyOf\\\":[{\\\"type\\\":\\\"string\\\"},{\\\"$ref\\\":\\\"#/definitions/Dict<unknown>\\\"}],\\\"description\\\":\\\"When used with the default `\\\\\\\"number\\\\\\\"` and `\\\\\\\"time\\\\\\\"` format type, the text formatting pattern for labels of guides (axes, legends, headers) and text marks.\\\\n\\\\n- If the format type is `\\\\\\\"number\\\\\\\"` (e.g., for quantitative fields), this is D3's [number format pattern](https://github.com/d3/d3-format#locale_format). - If the format type is `\\\\\\\"time\\\\\\\"` (e.g., for temporal fields), this is D3's [time format pattern](https://github.com/d3/d3-time-format#locale_format).\\\\n\\\\nSee the [format documentation](https://vega.github.io/vega-lite/docs/format.html) for more examples.\\\\n\\\\nWhen used with a [custom `formatType`](https://vega.github.io/vega-lite/docs/config.html#custom-format-type), this value will be passed as `format` alongside `datum.value` to the registered function.\\\\n\\\\n__Default value:__  Derived from [numberFormat](https://vega.github.io/vega-lite/docs/config.html#format) config for number format and from [timeFormat](https://vega.github.io/vega-lite/docs/config.html#format) config for time format.\\\"},\\\"formatType\\\":{\\\"description\\\":\\\"The format type for labels. One of `\\\\\\\"number\\\\\\\"`, `\\\\\\\"time\\\\\\\"`, or a [registered custom format type](https://vega.github.io/vega-lite/docs/config.html#custom-format-type).\\\\n\\\\n__Default value:__ - `\\\\\\\"time\\\\\\\"` for temporal fields and ordinal and nominal fields with `timeUnit`. - `\\\\\\\"number\\\\\\\"` for quantitative fields as well as ordinal and nominal fields without `timeUnit`.\\\",\\\"type\\\":\\\"string\\\"},\\\"labelAlign\\\":{\\\"anyOf\\\":[{\\\"$ref\\\":\\\"#/definitions/Align\\\"},{\\\"$ref\\\":\\\"#/definitions/ExprRef\\\"}],\\\"description\\\":\\\"Horizontal text alignment of header labels. One of `\\\\\\\"left\\\\\\\"`, `\\\\\\\"center\\\\\\\"`, or `\\\\\\\"right\\\\\\\"`.\\\"},\\\"labelAnchor\\\":{\\\"$ref\\\":\\\"#/definitions/TitleAnchor\\\",\\\"description\\\":\\\"The anchor position for placing the labels. One of `\\\\\\\"start\\\\\\\"`, `\\\\\\\"middle\\\\\\\"`, or `\\\\\\\"end\\\\\\\"`. For example, with a label orientation of top these anchor positions map to a left-, center-, or right-aligned label.\\\"},\\\"labelAngle\\\":{\\\"description\\\":\\\"The rotation angle of the header labels.\\\\n\\\\n__Default value:__ `0` for column header, `-90` for row header.\\\",\\\"maximum\\\":360,\\\"minimum\\\":-360,\\\"type\\\":\\\"number\\\"},\\\"labelBaseline\\\":{\\\"anyOf\\\":[{\\\"$ref\\\":\\\"#/definitions/TextBaseline\\\"},{\\\"$ref\\\":\\\"#/definitions/ExprRef\\\"}],\\\"description\\\":\\\"The vertical text baseline for the header labels. One of `\\\\\\\"alphabetic\\\\\\\"` (default), `\\\\\\\"top\\\\\\\"`, `\\\\\\\"middle\\\\\\\"`, `\\\\\\\"bottom\\\\\\\"`, `\\\\\\\"line-top\\\\\\\"`, or `\\\\\\\"line-bottom\\\\\\\"`. The `\\\\\\\"line-top\\\\\\\"` and `\\\\\\\"line-bottom\\\\\\\"` values operate similarly to `\\\\\\\"top\\\\\\\"` and `\\\\\\\"bottom\\\\\\\"`, but are calculated relative to the `titleLineHeight` rather than `titleFontSize` alone.\\\"},\\\"labelColor\\\":{\\\"anyOf\\\":[{\\\"$ref\\\":\\\"#/definitions/Color\\\"},{\\\"$ref\\\":\\\"#/definitions/ExprRef\\\"}],\\\"description\\\":\\\"The color of the header label, can be in hex color code or regular color name.\\\"},\\\"labelExpr\\\":{\\\"description\\\":\\\"[Vega expression](https://vega.github.io/vega/docs/expressions/) for customizing labels.\\\\n\\\\n__Note:__ The label text and value can be assessed via the `label` and `value` properties of the header's backing `datum` object.\\\",\\\"type\\\":\\\"string\\\"},\\\"labelFont\\\":{\\\"anyOf\\\":[{\\\"type\\\":\\\"string\\\"},{\\\"$ref\\\":\\\"#/definitions/ExprRef\\\"}],\\\"description\\\":\\\"The font of the header label.\\\"},\\\"labelFontSize\\\":{\\\"anyOf\\\":[{\\\"type\\\":\\\"number\\\"},{\\\"$ref\\\":\\\"#/definitions/ExprRef\\\"}],\\\"description\\\":\\\"The font size of the header label, in pixels.\\\",\\\"minimum\\\":0},\\\"labelFontStyle\\\":{\\\"anyOf\\\":[{\\\"$ref\\\":\\\"#/definitions/FontStyle\\\"},{\\\"$ref\\\":\\\"#/definitions/ExprRef\\\"}],\\\"description\\\":\\\"The font style of the header label.\\\"},\\\"labelFontWeight\\\":{\\\"anyOf\\\":[{\\\"$ref\\\":\\\"#/definitions/FontWeight\\\"},{\\\"$ref\\\":\\\"#/definitions/ExprRef\\\"}],\\\"description\\\":\\\"The font weight of the header label.\\\"},\\\"labelLimit\\\":{\\\"anyOf\\\":[{\\\"type\\\":\\\"number\\\"},{\\\"$ref\\\":\\\"#/definitions/ExprRef\\\"}],\\\"description\\\":\\\"The maximum length of the header label in pixels. The text value will be automatically truncated if the rendered size exceeds the limit.\\\\n\\\\n__Default value:__ `0`, indicating no limit\\\"},\\\"labelLineHeight\\\":{\\\"anyOf\\\":[{\\\"type\\\":\\\"number\\\"},{\\\"$ref\\\":\\\"#/definitions/ExprRef\\\"}],\\\"description\\\":\\\"Line height in pixels for multi-line header labels or title text with `\\\\\\\"line-top\\\\\\\"` or `\\\\\\\"line-bottom\\\\\\\"` baseline.\\\"},\\\"labelOrient\\\":{\\\"$ref\\\":\\\"#/definitions/Orient\\\",\\\"description\\\":\\\"The orientation of the header label. One of `\\\\\\\"top\\\\\\\"`, `\\\\\\\"bottom\\\\\\\"`, `\\\\\\\"left\\\\\\\"` or `\\\\\\\"right\\\\\\\"`.\\\"},\\\"labelPadding\\\":{\\\"anyOf\\\":[{\\\"type\\\":\\\"number\\\"},{\\\"$ref\\\":\\\"#/definitions/ExprRef\\\"}],\\\"description\\\":\\\"The padding, in pixel, between facet header's label and the plot.\\\\n\\\\n__Default value:__ `10`\\\"},\\\"labels\\\":{\\\"description\\\":\\\"A boolean flag indicating if labels should be included as part of the header.\\\\n\\\\n__Default value:__ `true`.\\\",\\\"type\\\":\\\"boolean\\\"},\\\"orient\\\":{\\\"$ref\\\":\\\"#/definitions/Orient\\\",\\\"description\\\":\\\"Shortcut for setting both labelOrient and titleOrient.\\\"},\\\"title\\\":{\\\"description\\\":\\\"Set to null to disable title for the axis, legend, or header.\\\",\\\"type\\\":\\\"null\\\"},\\\"titleAlign\\\":{\\\"anyOf\\\":[{\\\"$ref\\\":\\\"#/definitions/Align\\\"},{\\\"$ref\\\":\\\"#/definitions/ExprRef\\\"}],\\\"description\\\":\\\"Horizontal text alignment (to the anchor) of header titles.\\\"},\\\"titleAnchor\\\":{\\\"$ref\\\":\\\"#/definitions/TitleAnchor\\\",\\\"description\\\":\\\"The anchor position for placing the title. One of `\\\\\\\"start\\\\\\\"`, `\\\\\\\"middle\\\\\\\"`, or `\\\\\\\"end\\\\\\\"`. For example, with an orientation of top these anchor positions map to a left-, center-, or right-aligned title.\\\"},\\\"titleAngle\\\":{\\\"description\\\":\\\"The rotation angle of the header title.\\\\n\\\\n__Default value:__ `0`.\\\",\\\"maximum\\\":360,\\\"minimum\\\":-360,\\\"type\\\":\\\"number\\\"},\\\"titleBaseline\\\":{\\\"anyOf\\\":[{\\\"$ref\\\":\\\"#/definitions/TextBaseline\\\"},{\\\"$ref\\\":\\\"#/definitions/ExprRef\\\"}],\\\"description\\\":\\\"The vertical text baseline for the header title. One of `\\\\\\\"alphabetic\\\\\\\"` (default), `\\\\\\\"top\\\\\\\"`, `\\\\\\\"middle\\\\\\\"`, `\\\\\\\"bottom\\\\\\\"`, `\\\\\\\"line-top\\\\\\\"`, or `\\\\\\\"line-bottom\\\\\\\"`. The `\\\\\\\"line-top\\\\\\\"` and `\\\\\\\"line-bottom\\\\\\\"` values operate similarly to `\\\\\\\"top\\\\\\\"` and `\\\\\\\"bottom\\\\\\\"`, but are calculated relative to the `titleLineHeight` rather than `titleFontSize` alone.\\\\n\\\\n__Default value:__ `\\\\\\\"middle\\\\\\\"`\\\"},\\\"titleColor\\\":{\\\"anyOf\\\":[{\\\"$ref\\\":\\\"#/definitions/Color\\\"},{\\\"$ref\\\":\\\"#/definitions/ExprRef\\\"}],\\\"description\\\":\\\"Color of the header title, can be in hex color code or regular color name.\\\"},\\\"titleFont\\\":{\\\"anyOf\\\":[{\\\"type\\\":\\\"string\\\"},{\\\"$ref\\\":\\\"#/definitions/ExprRef\\\"}],\\\"description\\\":\\\"Font of the header title. (e.g., `\\\\\\\"Helvetica Neue\\\\\\\"`).\\\"},\\\"titleFontSize\\\":{\\\"anyOf\\\":[{\\\"type\\\":\\\"number\\\"},{\\\"$ref\\\":\\\"#/definitions/ExprRef\\\"}],\\\"description\\\":\\\"Font size of the header title.\\\",\\\"minimum\\\":0},\\\"titleFontStyle\\\":{\\\"anyOf\\\":[{\\\"$ref\\\":\\\"#/definitions/FontStyle\\\"},{\\\"$ref\\\":\\\"#/definitions/ExprRef\\\"}],\\\"description\\\":\\\"The font style of the header title.\\\"},\\\"titleFontWeight\\\":{\\\"anyOf\\\":[{\\\"$ref\\\":\\\"#/definitions/FontWeight\\\"},{\\\"$ref\\\":\\\"#/definitions/ExprRef\\\"}],\\\"description\\\":\\\"Font weight of the header title. This can be either a string (e.g `\\\\\\\"bold\\\\\\\"`, `\\\\\\\"normal\\\\\\\"`) or a number (`100`, `200`, `300`, ..., `900` where `\\\\\\\"normal\\\\\\\"` = `400` and `\\\\\\\"bold\\\\\\\"` = `700`).\\\"},\\\"titleLimit\\\":{\\\"anyOf\\\":[{\\\"type\\\":\\\"number\\\"},{\\\"$ref\\\":\\\"#/definitions/ExprRef\\\"}],\\\"description\\\":\\\"The maximum length of the header title in pixels. The text value will be automatically truncated if the rendered size exceeds the limit.\\\\n\\\\n__Default value:__ `0`, indicating no limit\\\"},\\\"titleLineHeight\\\":{\\\"anyOf\\\":[{\\\"type\\\":\\\"number\\\"},{\\\"$ref\\\":\\\"#/definitions/ExprRef\\\"}],\\\"description\\\":\\\"Line height in pixels for multi-line header title text or title text with `\\\\\\\"line-top\\\\\\\"` or `\\\\\\\"line-bottom\\\\\\\"` baseline.\\\"},\\\"titleOrient\\\":{\\\"$ref\\\":\\\"#/definitions/Orient\\\",\\\"description\\\":\\\"The orientation of the header title. One of `\\\\\\\"top\\\\\\\"`, `\\\\\\\"bottom\\\\\\\"`, `\\\\\\\"left\\\\\\\"` or `\\\\\\\"right\\\\\\\"`.\\\"},\\\"titlePadding\\\":{\\\"anyOf\\\":[{\\\"type\\\":\\\"number\\\"},{\\\"$ref\\\":\\\"#/definitions/ExprRef\\\"}],\\\"description\\\":\\\"The padding, in pixel, between facet header's title and the label.\\\\n\\\\n__Default value:__ `10`\\\"}},\\\"type\\\":\\\"object\\\"},\\\"HexColor\\\":{\\\"format\\\":\\\"color-hex\\\",\\\"type\\\":\\\"string\\\"},\\\"ImputeMethod\\\":{\\\"enum\\\":[\\\"value\\\",\\\"median\\\",\\\"max\\\",\\\"min\\\",\\\"mean\\\"],\\\"type\\\":\\\"string\\\"},\\\"ImputeParams\\\":{\\\"additionalProperties\\\":false,\\\"properties\\\":{\\\"frame\\\":{\\\"description\\\":\\\"A frame specification as a two-element array used to control the window over which the specified method is applied. The array entries should either be a number indicating the offset from the current data object, or null to indicate unbounded rows preceding or following the current data object. For example, the value `[-5, 5]` indicates that the window should include five objects preceding and five objects following the current object.\\\\n\\\\n__Default value:__:  `[null, null]` indicating that the window includes all objects.\\\",\\\"items\\\":[{\\\"type\\\":[\\\"null\\\",\\\"number\\\"]},{\\\"type\\\":[\\\"null\\\",\\\"number\\\"]}],\\\"maxItems\\\":2,\\\"minItems\\\":2,\\\"type\\\":\\\"array\\\"},\\\"keyvals\\\":{\\\"anyOf\\\":[{\\\"items\\\":{},\\\"type\\\":\\\"array\\\"},{\\\"$ref\\\":\\\"#/definitions/ImputeSequence\\\"}],\\\"description\\\":\\\"Defines the key values that should be considered for imputation. An array of key values or an object defining a [number sequence](https://vega.github.io/vega-lite/docs/impute.html#sequence-def).\\\\n\\\\nIf provided, this will be used in addition to the key values observed within the input data. If not provided, the values will be derived from all unique values of the `key` field. For `impute` in `encoding`, the key field is the x-field if the y-field is imputed, or vice versa.\\\\n\\\\nIf there is no impute grouping, this property _must_ be specified.\\\"},\\\"method\\\":{\\\"$ref\\\":\\\"#/definitions/ImputeMethod\\\",\\\"description\\\":\\\"The imputation method to use for the field value of imputed data objects. One of `\\\\\\\"value\\\\\\\"`, `\\\\\\\"mean\\\\\\\"`, `\\\\\\\"median\\\\\\\"`, `\\\\\\\"max\\\\\\\"` or `\\\\\\\"min\\\\\\\"`.\\\\n\\\\n__Default value:__  `\\\\\\\"value\\\\\\\"`\\\"},\\\"value\\\":{\\\"description\\\":\\\"The field value to use when the imputation `method` is `\\\\\\\"value\\\\\\\"`.\\\"}},\\\"type\\\":\\\"object\\\"},\\\"ImputeSequence\\\":{\\\"additionalProperties\\\":false,\\\"properties\\\":{\\\"start\\\":{\\\"description\\\":\\\"The starting value of the sequence. __Default value:__ `0`\\\",\\\"type\\\":\\\"number\\\"},\\\"step\\\":{\\\"description\\\":\\\"The step value between sequence entries. __Default value:__ `1` or `-1` if `stop < start`\\\",\\\"type\\\":\\\"number\\\"},\\\"stop\\\":{\\\"description\\\":\\\"The ending value(exclusive) of the sequence.\\\",\\\"type\\\":\\\"number\\\"}},\\\"required\\\":[\\\"stop\\\"],\\\"type\\\":\\\"object\\\"},\\\"ImputeTransform\\\":{\\\"additionalProperties\\\":false,\\\"properties\\\":{\\\"frame\\\":{\\\"description\\\":\\\"A frame specification as a two-element array used to control the window over which the specified method is applied. The array entries should either be a number indicating the offset from the current data object, or null to indicate unbounded rows preceding or following the current data object. For example, the value `[-5, 5]` indicates that the window should include five objects preceding and five objects following the current object.\\\\n\\\\n__Default value:__:  `[null, null]` indicating that the window includes all objects.\\\",\\\"items\\\":[{\\\"type\\\":[\\\"null\\\",\\\"number\\\"]},{\\\"type\\\":[\\\"null\\\",\\\"number\\\"]}],\\\"maxItems\\\":2,\\\"minItems\\\":2,\\\"type\\\":\\\"array\\\"},\\\"groupby\\\":{\\\"description\\\":\\\"An optional array of fields by which to group the values. Imputation will then be performed on a per-group basis.\\\",\\\"items\\\":{\\\"$ref\\\":\\\"#/definitions/FieldName\\\"},\\\"type\\\":\\\"array\\\"},\\\"impute\\\":{\\\"$ref\\\":\\\"#/definitions/FieldName\\\",\\\"description\\\":\\\"The data field for which the missing values should be imputed.\\\"},\\\"key\\\":{\\\"$ref\\\":\\\"#/definitions/FieldName\\\",\\\"description\\\":\\\"A key field that uniquely identifies data objects within a group. Missing key values (those occurring in the data but not in the current group) will be imputed.\\\"},\\\"keyvals\\\":{\\\"anyOf\\\":[{\\\"items\\\":{},\\\"type\\\":\\\"array\\\"},{\\\"$ref\\\":\\\"#/definitions/ImputeSequence\\\"}],\\\"description\\\":\\\"Defines the key values that should be considered for imputation. An array of key values or an object defining a [number sequence](https://vega.github.io/vega-lite/docs/impute.html#sequence-def).\\\\n\\\\nIf provided, this will be used in addition to the key values observed within the input data. If not provided, the values will be derived from all unique values of the `key` field. For `impute` in `encoding`, the key field is the x-field if the y-field is imputed, or vice versa.\\\\n\\\\nIf there is no impute grouping, this property _must_ be specified.\\\"},\\\"method\\\":{\\\"$ref\\\":\\\"#/definitions/ImputeMethod\\\",\\\"description\\\":\\\"The imputation method to use for the field value of imputed data objects. One of `\\\\\\\"value\\\\\\\"`, `\\\\\\\"mean\\\\\\\"`, `\\\\\\\"median\\\\\\\"`, `\\\\\\\"max\\\\\\\"` or `\\\\\\\"min\\\\\\\"`.\\\\n\\\\n__Default value:__  `\\\\\\\"value\\\\\\\"`\\\"},\\\"value\\\":{\\\"description\\\":\\\"The field value to use when the imputation `method` is `\\\\\\\"value\\\\\\\"`.\\\"}},\\\"required\\\":[\\\"impute\\\",\\\"key\\\"],\\\"type\\\":\\\"object\\\"},\\\"InlineData\\\":{\\\"additionalProperties\\\":false,\\\"properties\\\":{\\\"format\\\":{\\\"$ref\\\":\\\"#/definitions/DataFormat\\\",\\\"description\\\":\\\"An object that specifies the format for parsing the data.\\\"},\\\"name\\\":{\\\"description\\\":\\\"Provide a placeholder name and bind data at runtime.\\\",\\\"type\\\":\\\"string\\\"},\\\"values\\\":{\\\"$ref\\\":\\\"#/definitions/InlineDataset\\\",\\\"description\\\":\\\"The full data set, included inline. This can be an array of objects or primitive values, an object, or a string. Arrays of primitive values are ingested as objects with a `data` property. Strings are parsed according to the specified format type.\\\"}},\\\"required\\\":[\\\"values\\\"],\\\"type\\\":\\\"object\\\"},\\\"InlineDataset\\\":{\\\"anyOf\\\":[{\\\"items\\\":{\\\"type\\\":\\\"number\\\"},\\\"type\\\":\\\"array\\\"},{\\\"items\\\":{\\\"type\\\":\\\"string\\\"},\\\"type\\\":\\\"array\\\"},{\\\"items\\\":{\\\"type\\\":\\\"boolean\\\"},\\\"type\\\":\\\"array\\\"},{\\\"items\\\":{\\\"type\\\":\\\"object\\\"},\\\"type\\\":\\\"array\\\"},{\\\"type\\\":\\\"string\\\"},{\\\"type\\\":\\\"object\\\"}]},\\\"InputBinding\\\":{\\\"additionalProperties\\\":false,\\\"properties\\\":{\\\"autocomplete\\\":{\\\"type\\\":\\\"string\\\"},\\\"debounce\\\":{\\\"type\\\":\\\"number\\\"},\\\"element\\\":{\\\"$ref\\\":\\\"#/definitions/Element\\\"},\\\"input\\\":{\\\"type\\\":\\\"string\\\"},\\\"name\\\":{\\\"type\\\":\\\"string\\\"},\\\"placeholder\\\":{\\\"type\\\":\\\"string\\\"},\\\"type\\\":{\\\"type\\\":\\\"string\\\"}},\\\"type\\\":\\\"object\\\"},\\\"Interpolate\\\":{\\\"enum\\\":[\\\"basis\\\",\\\"basis-open\\\",\\\"basis-closed\\\",\\\"bundle\\\",\\\"cardinal\\\",\\\"cardinal-open\\\",\\\"cardinal-closed\\\",\\\"catmull-rom\\\",\\\"linear\\\",\\\"linear-closed\\\",\\\"monotone\\\",\\\"natural\\\",\\\"step\\\",\\\"step-before\\\",\\\"step-after\\\"],\\\"maximum\\\":900,\\\"minimum\\\":100,\\\"type\\\":\\\"string\\\"},\\\"IntervalSelection\\\":{\\\"additionalProperties\\\":false,\\\"properties\\\":{\\\"bind\\\":{\\\"const\\\":\\\"scales\\\",\\\"description\\\":\\\"Establishes a two-way binding between the interval selection and the scales used within the same view. This allows a user to interactively pan and zoom the view.\\\\n\\\\n__See also:__ [`bind`](https://vega.github.io/vega-lite/docs/bind.html) documentation.\\\",\\\"type\\\":\\\"string\\\"},\\\"clear\\\":{\\\"anyOf\\\":[{\\\"$ref\\\":\\\"#/definitions/Stream\\\"},{\\\"type\\\":\\\"string\\\"},{\\\"type\\\":\\\"boolean\\\"}],\\\"description\\\":\\\"Clears the selection, emptying it of all values. Can be a [Event Stream](https://vega.github.io/vega/docs/event-streams/) or `false` to disable.\\\\n\\\\n__Default value:__ `dblclick`.\\\\n\\\\n__See also:__ [`clear`](https://vega.github.io/vega-lite/docs/clear.html) documentation.\\\"},\\\"empty\\\":{\\\"description\\\":\\\"By default, `all` data values are considered to lie within an empty selection. When set to `none`, empty selections contain no data values.\\\",\\\"enum\\\":[\\\"all\\\",\\\"none\\\"],\\\"type\\\":\\\"string\\\"},\\\"encodings\\\":{\\\"description\\\":\\\"An array of encoding channels. The corresponding data field values must match for a data tuple to fall within the selection.\\\\n\\\\n__See also:__ [`encodings`](https://vega.github.io/vega-lite/docs/project.html) documentation.\\\",\\\"items\\\":{\\\"$ref\\\":\\\"#/definitions/SingleDefUnitChannel\\\"},\\\"type\\\":\\\"array\\\"},\\\"fields\\\":{\\\"description\\\":\\\"An array of field names whose values must match for a data tuple to fall within the selection.\\\\n\\\\n__See also:__ [`fields`](https://vega.github.io/vega-lite/docs/project.html) documentation.\\\",\\\"items\\\":{\\\"$ref\\\":\\\"#/definitions/FieldName\\\"},\\\"type\\\":\\\"array\\\"},\\\"init\\\":{\\\"$ref\\\":\\\"#/definitions/SelectionInitIntervalMapping\\\",\\\"description\\\":\\\"Initialize the selection with a mapping between [projected channels or field names](https://vega.github.io/vega-lite/docs/project.html) and arrays of initial values.\\\\n\\\\n__See also:__ [`init`](https://vega.github.io/vega-lite/docs/init.html) documentation.\\\"},\\\"mark\\\":{\\\"$ref\\\":\\\"#/definitions/BrushConfig\\\",\\\"description\\\":\\\"An interval selection also adds a rectangle mark to depict the extents of the interval. The `mark` property can be used to customize the appearance of the mark.\\\\n\\\\n__See also:__ [`mark`](https://vega.github.io/vega-lite/docs/selection-mark.html) documentation.\\\"},\\\"on\\\":{\\\"anyOf\\\":[{\\\"$ref\\\":\\\"#/definitions/Stream\\\"},{\\\"type\\\":\\\"string\\\"}],\\\"description\\\":\\\"A [Vega event stream](https://vega.github.io/vega/docs/event-streams/) (object or selector) that triggers the selection. For interval selections, the event stream must specify a [start and end](https://vega.github.io/vega/docs/event-streams/#between-filters).\\\"},\\\"resolve\\\":{\\\"$ref\\\":\\\"#/definitions/SelectionResolution\\\",\\\"description\\\":\\\"With layered and multi-view displays, a strategy that determines how selections' data queries are resolved when applied in a filter transform, conditional encoding rule, or scale domain.\\\\n\\\\n__See also:__ [`resolve`](https://vega.github.io/vega-lite/docs/selection-resolve.html) documentation.\\\"},\\\"translate\\\":{\\\"description\\\":\\\"When truthy, allows a user to interactively move an interval selection back-and-forth. Can be `true`, `false` (to disable panning), or a [Vega event stream definition](https://vega.github.io/vega/docs/event-streams/) which must include a start and end event to trigger continuous panning.\\\\n\\\\n__Default value:__ `true`, which corresponds to `[mousedown, window:mouseup] > window:mousemove!` which corresponds to clicks and dragging within an interval selection to reposition it.\\\\n\\\\n__See also:__ [`translate`](https://vega.github.io/vega-lite/docs/translate.html) documentation.\\\",\\\"type\\\":[\\\"string\\\",\\\"boolean\\\"]},\\\"type\\\":{\\\"const\\\":\\\"interval\\\",\\\"description\\\":\\\"Determines the default event processing and data query for the selection. Vega-Lite currently supports three selection types:\\\\n\\\\n- `\\\\\\\"single\\\\\\\"` -- to select a single discrete data value on `click`. - `\\\\\\\"multi\\\\\\\"` -- to select multiple discrete data value; the first value is selected on `click` and additional values toggled on shift-`click`. - `\\\\\\\"interval\\\\\\\"` -- to select a continuous range of data values on `drag`.\\\",\\\"type\\\":\\\"string\\\"},\\\"zoom\\\":{\\\"description\\\":\\\"When truthy, allows a user to interactively resize an interval selection. Can be `true`, `false` (to disable zooming), or a [Vega event stream definition](https://vega.github.io/vega/docs/event-streams/). Currently, only `wheel` events are supported.\\\\n\\\\n__Default value:__ `true`, which corresponds to `wheel!`.\\\\n\\\\n__See also:__ [`zoom`](https://vega.github.io/vega-lite/docs/zoom.html) documentation.\\\",\\\"type\\\":[\\\"string\\\",\\\"boolean\\\"]}},\\\"required\\\":[\\\"type\\\"],\\\"type\\\":\\\"object\\\"},\\\"IntervalSelectionConfig\\\":{\\\"additionalProperties\\\":false,\\\"properties\\\":{\\\"bind\\\":{\\\"const\\\":\\\"scales\\\",\\\"description\\\":\\\"Establishes a two-way binding between the interval selection and the scales used within the same view. This allows a user to interactively pan and zoom the view.\\\\n\\\\n__See also:__ [`bind`](https://vega.github.io/vega-lite/docs/bind.html) documentation.\\\",\\\"type\\\":\\\"string\\\"},\\\"clear\\\":{\\\"anyOf\\\":[{\\\"$ref\\\":\\\"#/definitions/Stream\\\"},{\\\"type\\\":\\\"string\\\"},{\\\"type\\\":\\\"boolean\\\"}],\\\"description\\\":\\\"Clears the selection, emptying it of all values. Can be a [Event Stream](https://vega.github.io/vega/docs/event-streams/) or `false` to disable.\\\\n\\\\n__Default value:__ `dblclick`.\\\\n\\\\n__See also:__ [`clear`](https://vega.github.io/vega-lite/docs/clear.html) documentation.\\\"},\\\"empty\\\":{\\\"description\\\":\\\"By default, `all` data values are considered to lie within an empty selection. When set to `none`, empty selections contain no data values.\\\",\\\"enum\\\":[\\\"all\\\",\\\"none\\\"],\\\"type\\\":\\\"string\\\"},\\\"encodings\\\":{\\\"description\\\":\\\"An array of encoding channels. The corresponding data field values must match for a data tuple to fall within the selection.\\\\n\\\\n__See also:__ [`encodings`](https://vega.github.io/vega-lite/docs/project.html) documentation.\\\",\\\"items\\\":{\\\"$ref\\\":\\\"#/definitions/SingleDefUnitChannel\\\"},\\\"type\\\":\\\"array\\\"},\\\"fields\\\":{\\\"description\\\":\\\"An array of field names whose values must match for a data tuple to fall within the selection.\\\\n\\\\n__See also:__ [`fields`](https://vega.github.io/vega-lite/docs/project.html) documentation.\\\",\\\"items\\\":{\\\"$ref\\\":\\\"#/definitions/FieldName\\\"},\\\"type\\\":\\\"array\\\"},\\\"init\\\":{\\\"$ref\\\":\\\"#/definitions/SelectionInitIntervalMapping\\\",\\\"description\\\":\\\"Initialize the selection with a mapping between [projected channels or field names](https://vega.github.io/vega-lite/docs/project.html) and arrays of initial values.\\\\n\\\\n__See also:__ [`init`](https://vega.github.io/vega-lite/docs/init.html) documentation.\\\"},\\\"mark\\\":{\\\"$ref\\\":\\\"#/definitions/BrushConfig\\\",\\\"description\\\":\\\"An interval selection also adds a rectangle mark to depict the extents of the interval. The `mark` property can be used to customize the appearance of the mark.\\\\n\\\\n__See also:__ [`mark`](https://vega.github.io/vega-lite/docs/selection-mark.html) documentation.\\\"},\\\"on\\\":{\\\"anyOf\\\":[{\\\"$ref\\\":\\\"#/definitions/Stream\\\"},{\\\"type\\\":\\\"string\\\"}],\\\"description\\\":\\\"A [Vega event stream](https://vega.github.io/vega/docs/event-streams/) (object or selector) that triggers the selection. For interval selections, the event stream must specify a [start and end](https://vega.github.io/vega/docs/event-streams/#between-filters).\\\"},\\\"resolve\\\":{\\\"$ref\\\":\\\"#/definitions/SelectionResolution\\\",\\\"description\\\":\\\"With layered and multi-view displays, a strategy that determines how selections' data queries are resolved when applied in a filter transform, conditional encoding rule, or scale domain.\\\\n\\\\n__See also:__ [`resolve`](https://vega.github.io/vega-lite/docs/selection-resolve.html) documentation.\\\"},\\\"translate\\\":{\\\"description\\\":\\\"When truthy, allows a user to interactively move an interval selection back-and-forth. Can be `true`, `false` (to disable panning), or a [Vega event stream definition](https://vega.github.io/vega/docs/event-streams/) which must include a start and end event to trigger continuous panning.\\\\n\\\\n__Default value:__ `true`, which corresponds to `[mousedown, window:mouseup] > window:mousemove!` which corresponds to clicks and dragging within an interval selection to reposition it.\\\\n\\\\n__See also:__ [`translate`](https://vega.github.io/vega-lite/docs/translate.html) documentation.\\\",\\\"type\\\":[\\\"string\\\",\\\"boolean\\\"]},\\\"zoom\\\":{\\\"description\\\":\\\"When truthy, allows a user to interactively resize an interval selection. Can be `true`, `false` (to disable zooming), or a [Vega event stream definition](https://vega.github.io/vega/docs/event-streams/). Currently, only `wheel` events are supported.\\\\n\\\\n__Default value:__ `true`, which corresponds to `wheel!`.\\\\n\\\\n__See also:__ [`zoom`](https://vega.github.io/vega-lite/docs/zoom.html) documentation.\\\",\\\"type\\\":[\\\"string\\\",\\\"boolean\\\"]}},\\\"type\\\":\\\"object\\\"},\\\"JoinAggregateFieldDef\\\":{\\\"additionalProperties\\\":false,\\\"properties\\\":{\\\"as\\\":{\\\"$ref\\\":\\\"#/definitions/FieldName\\\",\\\"description\\\":\\\"The output name for the join aggregate operation.\\\"},\\\"field\\\":{\\\"$ref\\\":\\\"#/definitions/FieldName\\\",\\\"description\\\":\\\"The data field for which to compute the aggregate function. This can be omitted for functions that do not operate over a field such as `\\\\\\\"count\\\\\\\"`.\\\"},\\\"op\\\":{\\\"$ref\\\":\\\"#/definitions/AggregateOp\\\",\\\"description\\\":\\\"The aggregation operation to apply (e.g., `\\\\\\\"sum\\\\\\\"`, `\\\\\\\"average\\\\\\\"` or `\\\\\\\"count\\\\\\\"`). See the list of all supported operations [here](https://vega.github.io/vega-lite/docs/aggregate.html#ops).\\\"}},\\\"required\\\":[\\\"op\\\",\\\"as\\\"],\\\"type\\\":\\\"object\\\"},\\\"JoinAggregateTransform\\\":{\\\"additionalProperties\\\":false,\\\"properties\\\":{\\\"groupby\\\":{\\\"description\\\":\\\"The data fields for partitioning the data objects into separate groups. If unspecified, all data points will be in a single group.\\\",\\\"items\\\":{\\\"$ref\\\":\\\"#/definitions/FieldName\\\"},\\\"type\\\":\\\"array\\\"},\\\"joinaggregate\\\":{\\\"description\\\":\\\"The definition of the fields in the join aggregate, and what calculations to use.\\\",\\\"items\\\":{\\\"$ref\\\":\\\"#/definitions/JoinAggregateFieldDef\\\"},\\\"type\\\":\\\"array\\\"}},\\\"required\\\":[\\\"joinaggregate\\\"],\\\"type\\\":\\\"object\\\"},\\\"JsonDataFormat\\\":{\\\"additionalProperties\\\":false,\\\"properties\\\":{\\\"parse\\\":{\\\"anyOf\\\":[{\\\"$ref\\\":\\\"#/definitions/Parse\\\"},{\\\"type\\\":\\\"null\\\"}],\\\"description\\\":\\\"If set to `null`, disable type inference based on the spec and only use type inference based on the data. Alternatively, a parsing directive object can be provided for explicit data types. Each property of the object corresponds to a field name, and the value to the desired data type (one of `\\\\\\\"number\\\\\\\"`, `\\\\\\\"boolean\\\\\\\"`, `\\\\\\\"date\\\\\\\"`, or null (do not parse the field)). For example, `\\\\\\\"parse\\\\\\\": {\\\\\\\"modified_on\\\\\\\": \\\\\\\"date\\\\\\\"}` parses the `modified_on` field in each input record a Date value.\\\\n\\\\nFor `\\\\\\\"date\\\\\\\"`, we parse data based using Javascript's [`Date.parse()`](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Date/parse). For Specific date formats can be provided (e.g., `{foo: \\\\\\\"date:'%m%d%Y'\\\\\\\"}`), using the [d3-time-format syntax](https://github.com/d3/d3-time-format#locale_format). UTC date format parsing is supported similarly (e.g., `{foo: \\\\\\\"utc:'%m%d%Y'\\\\\\\"}`). See more about [UTC time](https://vega.github.io/vega-lite/docs/timeunit.html#utc)\\\"},\\\"property\\\":{\\\"description\\\":\\\"The JSON property containing the desired data. This parameter can be used when the loaded JSON file may have surrounding structure or meta-data. For example `\\\\\\\"property\\\\\\\": \\\\\\\"values.features\\\\\\\"` is equivalent to retrieving `json.values.features` from the loaded JSON object.\\\",\\\"type\\\":\\\"string\\\"},\\\"type\\\":{\\\"const\\\":\\\"json\\\",\\\"description\\\":\\\"Type of input data: `\\\\\\\"json\\\\\\\"`, `\\\\\\\"csv\\\\\\\"`, `\\\\\\\"tsv\\\\\\\"`, `\\\\\\\"dsv\\\\\\\"`.\\\\n\\\\n__Default value:__  The default format type is determined by the extension of the file URL. If no extension is detected, `\\\\\\\"json\\\\\\\"` will be used by default.\\\",\\\"type\\\":\\\"string\\\"}},\\\"type\\\":\\\"object\\\"},\\\"LabelOverlap\\\":{\\\"anyOf\\\":[{\\\"type\\\":\\\"boolean\\\"},{\\\"const\\\":\\\"parity\\\",\\\"type\\\":\\\"string\\\"},{\\\"const\\\":\\\"greedy\\\",\\\"type\\\":\\\"string\\\"}]},\\\"LatLongDef\\\":{\\\"anyOf\\\":[{\\\"$ref\\\":\\\"#/definitions/LatLongFieldDef\\\"},{\\\"$ref\\\":\\\"#/definitions/DatumDef\\\"},{\\\"$ref\\\":\\\"#/definitions/NumericValueDef\\\"}]},\\\"LatLongFieldDef\\\":{\\\"additionalProperties\\\":false,\\\"properties\\\":{\\\"aggregate\\\":{\\\"$ref\\\":\\\"#/definitions/Aggregate\\\",\\\"description\\\":\\\"Aggregation function for the field (e.g., `\\\\\\\"mean\\\\\\\"`, `\\\\\\\"sum\\\\\\\"`, `\\\\\\\"median\\\\\\\"`, `\\\\\\\"min\\\\\\\"`, `\\\\\\\"max\\\\\\\"`, `\\\\\\\"count\\\\\\\"`).\\\\n\\\\n__Default value:__ `undefined` (None)\\\\n\\\\n__See also:__ [`aggregate`](https://vega.github.io/vega-lite/docs/aggregate.html) documentation.\\\"},\\\"band\\\":{\\\"description\\\":\\\"For rect-based marks (`rect`, `bar`, and `image`), mark size relative to bandwidth of [band scales](https://vega.github.io/vega-lite/docs/scale.html#band), bins or time units. If set to `1`, the mark size is set to the bandwidth, the bin interval, or the time unit interval. If set to `0.5`, the mark size is half of the bandwidth or the time unit interval.\\\\n\\\\nFor other marks, relative position on a band of a stacked, binned, time unit or band scale. If set to `0`, the marks will be positioned at the beginning of the band. If set to `0.5`, the marks will be positioned in the middle of the band.\\\",\\\"maximum\\\":1,\\\"minimum\\\":0,\\\"type\\\":\\\"number\\\"},\\\"bin\\\":{\\\"description\\\":\\\"A flag for binning a `quantitative` field, [an object defining binning parameters](https://vega.github.io/vega-lite/docs/bin.html#params), or indicating that the data for `x` or `y` channel are binned before they are imported into Vega-Lite (`\\\\\\\"binned\\\\\\\"`).\\\\n\\\\n- If `true`, default [binning parameters](https://vega.github.io/vega-lite/docs/bin.html) will be applied.\\\\n\\\\n- If `\\\\\\\"binned\\\\\\\"`, this indicates that the data for the `x` (or `y`) channel are already binned. You can map the bin-start field to `x` (or `y`) and the bin-end field to `x2` (or `y2`). The scale and axis will be formatted similar to binning in Vega-Lite.  To adjust the axis ticks based on the bin step, you can also set the axis's [`tickMinStep`](https://vega.github.io/vega-lite/docs/axis.html#ticks) property.\\\\n\\\\n__Default value:__ `false`\\\\n\\\\n__See also:__ [`bin`](https://vega.github.io/vega-lite/docs/bin.html) documentation.\\\",\\\"type\\\":\\\"null\\\"},\\\"field\\\":{\\\"$ref\\\":\\\"#/definitions/Field\\\",\\\"description\\\":\\\"__Required.__ A string defining the name of the field from which to pull a data value or an object defining iterated values from the [`repeat`](https://vega.github.io/vega-lite/docs/repeat.html) operator.\\\\n\\\\n__See also:__ [`field`](https://vega.github.io/vega-lite/docs/field.html) documentation.\\\\n\\\\n__Notes:__ 1)  Dots (`.`) and brackets (`[` and `]`) can be used to access nested objects (e.g., `\\\\\\\"field\\\\\\\": \\\\\\\"foo.bar\\\\\\\"` and `\\\\\\\"field\\\\\\\": \\\\\\\"foo['bar']\\\\\\\"`). If field names contain dots or brackets but are not nested, you can use `\\\\\\\\\\\\\\\\` to escape dots and brackets (e.g., `\\\\\\\"a\\\\\\\\\\\\\\\\.b\\\\\\\"` and `\\\\\\\"a\\\\\\\\\\\\\\\\[0\\\\\\\\\\\\\\\\]\\\\\\\"`). See more details about escaping in the [field documentation](https://vega.github.io/vega-lite/docs/field.html). 2) `field` is not required if `aggregate` is `count`.\\\"},\\\"timeUnit\\\":{\\\"anyOf\\\":[{\\\"$ref\\\":\\\"#/definitions/TimeUnit\\\"},{\\\"$ref\\\":\\\"#/definitions/TimeUnitParams\\\"}],\\\"description\\\":\\\"Time unit (e.g., `year`, `yearmonth`, `month`, `hours`) for a temporal field. or [a temporal field that gets casted as ordinal](https://vega.github.io/vega-lite/docs/type.html#cast).\\\\n\\\\n__Default value:__ `undefined` (None)\\\\n\\\\n__See also:__ [`timeUnit`](https://vega.github.io/vega-lite/docs/timeunit.html) documentation.\\\"},\\\"title\\\":{\\\"anyOf\\\":[{\\\"$ref\\\":\\\"#/definitions/Text\\\"},{\\\"type\\\":\\\"null\\\"}],\\\"description\\\":\\\"A title for the field. If `null`, the title will be removed.\\\\n\\\\n__Default value:__  derived from the field's name and transformation function (`aggregate`, `bin` and `timeUnit`). If the field has an aggregate function, the function is displayed as part of the title (e.g., `\\\\\\\"Sum of Profit\\\\\\\"`). If the field is binned or has a time unit applied, the applied function is shown in parentheses (e.g., `\\\\\\\"Profit (binned)\\\\\\\"`, `\\\\\\\"Transaction Date (year-month)\\\\\\\"`). Otherwise, the title is simply the field name.\\\\n\\\\n__Notes__:\\\\n\\\\n1) You can customize the default field title format by providing the [`fieldTitle`](https://vega.github.io/vega-lite/docs/config.html#top-level-config) property in the [config](https://vega.github.io/vega-lite/docs/config.html) or [`fieldTitle` function via the `compile` function's options](https://vega.github.io/vega-lite/docs/compile.html#field-title).\\\\n\\\\n2) If both field definition's `title` and axis, header, or legend `title` are defined, axis/header/legend title will be used.\\\"},\\\"type\\\":{\\\"const\\\":\\\"quantitative\\\",\\\"description\\\":\\\"The type of measurement (`\\\\\\\"quantitative\\\\\\\"`, `\\\\\\\"temporal\\\\\\\"`, `\\\\\\\"ordinal\\\\\\\"`, or `\\\\\\\"nominal\\\\\\\"`) for the encoded field or constant value (`datum`). It can also be a `\\\\\\\"geojson\\\\\\\"` type for encoding ['geoshape'](https://vega.github.io/vega-lite/docs/geoshape.html).\\\\n\\\\nVega-Lite automatically infers data types in many cases as discussed below. However, type is required for a field if: (1) the field is not nominal and the field encoding has no specified `aggregate` (except `argmin` and `argmax`), `bin`, scale type, custom `sort` order, nor `timeUnit` or (2) if you wish to use an ordinal scale for a field with `bin` or `timeUnit`.\\\\n\\\\n__Default value:__\\\\n\\\\n1) For a data `field`, `\\\\\\\"nominal\\\\\\\"` is the default data type unless the field encoding has `aggregate`, `channel`, `bin`, scale type, `sort`, or `timeUnit` that satisfies the following criteria: - `\\\\\\\"quantitative\\\\\\\"` is the default type if (1) the encoded field contains `bin` or `aggregate` except `\\\\\\\"argmin\\\\\\\"` and `\\\\\\\"argmax\\\\\\\"`, (2) the encoding channel is `latitude` or `longitude` channel or (3) if the specified scale type is [a quantitative scale](https://vega.github.io/vega-lite/docs/scale.html#type). - `\\\\\\\"temporal\\\\\\\"` is the default type if (1) the encoded field contains `timeUnit` or (2) the specified scale type is a time or utc scale - `ordinal\\\\\\\"\\\\\\\"` is the default type if (1) the encoded field contains a [custom `sort` order](https://vega.github.io/vega-lite/docs/sort.html#specifying-custom-sort-order), (2) the specified scale type is an ordinal/point/band scale, or (3) the encoding channel is `order`.\\\\n\\\\n2) For a constant value in data domain (`datum`): - `\\\\\\\"quantitative\\\\\\\"` if the datum is a number - `\\\\\\\"nominal\\\\\\\"` if the datum is a string - `\\\\\\\"temporal\\\\\\\"` if the datum is [a date time object](https://vega.github.io/vega-lite/docs/datetime.html)\\\\n\\\\n__Note:__ - Data `type` describes the semantics of the data rather than the primitive data types (number, string, etc.). The same primitive data type can have different types of measurement. For example, numeric data can represent quantitative, ordinal, or nominal data. - Data values for a temporal field can be either a date-time string (e.g., `\\\\\\\"2015-03-07 12:32:17\\\\\\\"`, `\\\\\\\"17:01\\\\\\\"`, `\\\\\\\"2015-03-16\\\\\\\"`. `\\\\\\\"2015\\\\\\\"`) or a timestamp number (e.g., `1552199579097`). - When using with [`bin`](https://vega.github.io/vega-lite/docs/bin.html), the `type` property can be either `\\\\\\\"quantitative\\\\\\\"` (for using a linear bin scale) or [`\\\\\\\"ordinal\\\\\\\"` (for using an ordinal bin scale)](https://vega.github.io/vega-lite/docs/type.html#cast-bin). - When using with [`timeUnit`](https://vega.github.io/vega-lite/docs/timeunit.html), the `type` property can be either `\\\\\\\"temporal\\\\\\\"` (default, for using a temporal scale) or [`\\\\\\\"ordinal\\\\\\\"` (for using an ordinal scale)](https://vega.github.io/vega-lite/docs/type.html#cast-bin). - When using with [`aggregate`](https://vega.github.io/vega-lite/docs/aggregate.html), the `type` property refers to the post-aggregation data type. For example, we can calculate count `distinct` of a categorical field `\\\\\\\"cat\\\\\\\"` using `{\\\\\\\"aggregate\\\\\\\": \\\\\\\"distinct\\\\\\\", \\\\\\\"field\\\\\\\": \\\\\\\"cat\\\\\\\"}`. The `\\\\\\\"type\\\\\\\"` of the aggregate output is `\\\\\\\"quantitative\\\\\\\"`. - Secondary channels (e.g., `x2`, `y2`, `xError`, `yError`) do not have `type` as they must have exactly the same type as their primary channels (e.g., `x`, `y`).\\\\n\\\\n__See also:__ [`type`](https://vega.github.io/vega-lite/docs/type.html) documentation.\\\",\\\"type\\\":\\\"string\\\"}},\\\"type\\\":\\\"object\\\"},\\\"LayerRepeatMapping\\\":{\\\"additionalProperties\\\":false,\\\"properties\\\":{\\\"column\\\":{\\\"description\\\":\\\"An array of fields to be repeated horizontally.\\\",\\\"items\\\":{\\\"type\\\":\\\"string\\\"},\\\"type\\\":\\\"array\\\"},\\\"layer\\\":{\\\"description\\\":\\\"An array of fields to be repeated as layers.\\\",\\\"items\\\":{\\\"type\\\":\\\"string\\\"},\\\"type\\\":\\\"array\\\"},\\\"row\\\":{\\\"description\\\":\\\"An array of fields to be repeated vertically.\\\",\\\"items\\\":{\\\"type\\\":\\\"string\\\"},\\\"type\\\":\\\"array\\\"}},\\\"required\\\":[\\\"layer\\\"],\\\"type\\\":\\\"object\\\"},\\\"LayerRepeatSpec\\\":{\\\"additionalProperties\\\":false,\\\"properties\\\":{\\\"align\\\":{\\\"anyOf\\\":[{\\\"$ref\\\":\\\"#/definitions/LayoutAlign\\\"},{\\\"$ref\\\":\\\"#/definitions/RowCol<LayoutAlign>\\\"}],\\\"description\\\":\\\"The alignment to apply to grid rows and columns. The supported string values are `\\\\\\\"all\\\\\\\"`, `\\\\\\\"each\\\\\\\"`, and `\\\\\\\"none\\\\\\\"`.\\\\n\\\\n- For `\\\\\\\"none\\\\\\\"`, a flow layout will be used, in which adjacent subviews are simply placed one after the other. - For `\\\\\\\"each\\\\\\\"`, subviews will be aligned into a clean grid structure, but each row or column may be of variable size. - For `\\\\\\\"all\\\\\\\"`, subviews will be aligned and each row or column will be sized identically based on the maximum observed size. String values for this property will be applied to both grid rows and columns.\\\\n\\\\nAlternatively, an object value of the form `{\\\\\\\"row\\\\\\\": string, \\\\\\\"column\\\\\\\": string}` can be used to supply different alignments for rows and columns.\\\\n\\\\n__Default value:__ `\\\\\\\"all\\\\\\\"`.\\\"},\\\"bounds\\\":{\\\"description\\\":\\\"The bounds calculation method to use for determining the extent of a sub-plot. One of `full` (the default) or `flush`.\\\\n\\\\n- If set to `full`, the entire calculated bounds (including axes, title, and legend) will be used. - If set to `flush`, only the specified width and height values for the sub-view will be used. The `flush` setting can be useful when attempting to place sub-plots without axes or legends into a uniform grid structure.\\\\n\\\\n__Default value:__ `\\\\\\\"full\\\\\\\"`\\\",\\\"enum\\\":[\\\"full\\\",\\\"flush\\\"],\\\"type\\\":\\\"string\\\"},\\\"center\\\":{\\\"anyOf\\\":[{\\\"type\\\":\\\"boolean\\\"},{\\\"$ref\\\":\\\"#/definitions/RowCol<boolean>\\\"}],\\\"description\\\":\\\"Boolean flag indicating if subviews should be centered relative to their respective rows or columns.\\\\n\\\\nAn object value of the form `{\\\\\\\"row\\\\\\\": boolean, \\\\\\\"column\\\\\\\": boolean}` can be used to supply different centering values for rows and columns.\\\\n\\\\n__Default value:__ `false`\\\"},\\\"columns\\\":{\\\"description\\\":\\\"The number of columns to include in the view composition layout.\\\\n\\\\n__Default value__: `undefined` -- An infinite number of columns (a single row) will be assumed. This is equivalent to `hconcat` (for `concat`) and to using the `column` channel (for `facet` and `repeat`).\\\\n\\\\n__Note__:\\\\n\\\\n1) This property is only for: - the general (wrappable) `concat` operator (not `hconcat`/`vconcat`) - the `facet` and `repeat` operator with one field/repetition definition (without row/column nesting)\\\\n\\\\n2) Setting the `columns` to `1` is equivalent to `vconcat` (for `concat`) and to using the `row` channel (for `facet` and `repeat`).\\\",\\\"type\\\":\\\"number\\\"},\\\"data\\\":{\\\"anyOf\\\":[{\\\"$ref\\\":\\\"#/definitions/Data\\\"},{\\\"type\\\":\\\"null\\\"}],\\\"description\\\":\\\"An object describing the data source. Set to `null` to ignore the parent's data source. If no data is set, it is derived from the parent.\\\"},\\\"description\\\":{\\\"description\\\":\\\"Description of this mark for commenting purpose.\\\",\\\"type\\\":\\\"string\\\"},\\\"name\\\":{\\\"description\\\":\\\"Name of the visualization for later reference.\\\",\\\"type\\\":\\\"string\\\"},\\\"repeat\\\":{\\\"$ref\\\":\\\"#/definitions/LayerRepeatMapping\\\",\\\"description\\\":\\\"Definition for fields to be repeated. One of: 1) An array of fields to be repeated. If `\\\\\\\"repeat\\\\\\\"` is an array, the field can be referred to as `{\\\\\\\"repeat\\\\\\\": \\\\\\\"repeat\\\\\\\"}`. The repeated views are laid out in a wrapped row. You can set the number of columns to control the wrapping. 2) An object that maps `\\\\\\\"row\\\\\\\"` and/or `\\\\\\\"column\\\\\\\"` to the listed fields to be repeated along the particular orientations. The objects `{\\\\\\\"repeat\\\\\\\": \\\\\\\"row\\\\\\\"}` and `{\\\\\\\"repeat\\\\\\\": \\\\\\\"column\\\\\\\"}` can be used to refer to the repeated field respectively.\\\"},\\\"resolve\\\":{\\\"$ref\\\":\\\"#/definitions/Resolve\\\",\\\"description\\\":\\\"Scale, axis, and legend resolutions for view composition specifications.\\\"},\\\"spacing\\\":{\\\"anyOf\\\":[{\\\"type\\\":\\\"number\\\"},{\\\"$ref\\\":\\\"#/definitions/RowCol<number>\\\"}],\\\"description\\\":\\\"The spacing in pixels between sub-views of the composition operator. An object of the form `{\\\\\\\"row\\\\\\\": number, \\\\\\\"column\\\\\\\": number}` can be used to set different spacing values for rows and columns.\\\\n\\\\n__Default value__: Depends on `\\\\\\\"spacing\\\\\\\"` property of [the view composition configuration](https://vega.github.io/vega-lite/docs/config.html#view-config) (`20` by default)\\\"},\\\"spec\\\":{\\\"anyOf\\\":[{\\\"$ref\\\":\\\"#/definitions/LayerSpec\\\"},{\\\"$ref\\\":\\\"#/definitions/UnitSpec\\\"}],\\\"description\\\":\\\"A specification of the view that gets repeated.\\\"},\\\"title\\\":{\\\"anyOf\\\":[{\\\"$ref\\\":\\\"#/definitions/Text\\\"},{\\\"$ref\\\":\\\"#/definitions/TitleParams\\\"}],\\\"description\\\":\\\"Title for the plot.\\\"},\\\"transform\\\":{\\\"description\\\":\\\"An array of data transformations such as filter and new field calculation.\\\",\\\"items\\\":{\\\"$ref\\\":\\\"#/definitions/Transform\\\"},\\\"type\\\":\\\"array\\\"}},\\\"required\\\":[\\\"repeat\\\",\\\"spec\\\"],\\\"type\\\":\\\"object\\\"},\\\"LayerSpec\\\":{\\\"additionalProperties\\\":false,\\\"description\\\":\\\"A full layered plot specification, which may contains `encoding` and `projection` properties that will be applied to underlying unit (single-view) specifications.\\\",\\\"properties\\\":{\\\"data\\\":{\\\"anyOf\\\":[{\\\"$ref\\\":\\\"#/definitions/Data\\\"},{\\\"type\\\":\\\"null\\\"}],\\\"description\\\":\\\"An object describing the data source. Set to `null` to ignore the parent's data source. If no data is set, it is derived from the parent.\\\"},\\\"description\\\":{\\\"description\\\":\\\"Description of this mark for commenting purpose.\\\",\\\"type\\\":\\\"string\\\"},\\\"encoding\\\":{\\\"$ref\\\":\\\"#/definitions/SharedEncoding\\\",\\\"description\\\":\\\"A shared key-value mapping between encoding channels and definition of fields in the underlying layers.\\\"},\\\"height\\\":{\\\"anyOf\\\":[{\\\"type\\\":\\\"number\\\"},{\\\"const\\\":\\\"container\\\",\\\"type\\\":\\\"string\\\"},{\\\"$ref\\\":\\\"#/definitions/Step\\\"}],\\\"description\\\":\\\"The height of a visualization.\\\\n\\\\n- For a plot with a continuous y-field, height should be a number. - For a plot with either a discrete y-field or no y-field, height can be either a number indicating a fixed height or an object in the form of `{step: number}` defining the height per discrete step. (No y-field is equivalent to having one discrete step.) - To enable responsive sizing on height, it should be set to `\\\\\\\"container\\\\\\\"`.\\\\n\\\\n__Default value:__ Based on `config.view.continuousHeight` for a plot with a continuous y-field and `config.view.discreteHeight` otherwise.\\\\n\\\\n__Note:__ For plots with [`row` and `column` channels](https://vega.github.io/vega-lite/docs/encoding.html#facet), this represents the height of a single view and the `\\\\\\\"container\\\\\\\"` option cannot be used.\\\\n\\\\n__See also:__ [`height`](https://vega.github.io/vega-lite/docs/size.html) documentation.\\\"},\\\"layer\\\":{\\\"description\\\":\\\"Layer or single view specifications to be layered.\\\\n\\\\n__Note__: Specifications inside `layer` cannot use `row` and `column` channels as layering facet specifications is not allowed. Instead, use the [facet operator](https://vega.github.io/vega-lite/docs/facet.html) and place a layer inside a facet.\\\",\\\"items\\\":{\\\"anyOf\\\":[{\\\"$ref\\\":\\\"#/definitions/LayerSpec\\\"},{\\\"$ref\\\":\\\"#/definitions/UnitSpec\\\"}]},\\\"type\\\":\\\"array\\\"},\\\"name\\\":{\\\"description\\\":\\\"Name of the visualization for later reference.\\\",\\\"type\\\":\\\"string\\\"},\\\"projection\\\":{\\\"$ref\\\":\\\"#/definitions/Projection\\\",\\\"description\\\":\\\"An object defining properties of the geographic projection shared by underlying layers.\\\"},\\\"resolve\\\":{\\\"$ref\\\":\\\"#/definitions/Resolve\\\",\\\"description\\\":\\\"Scale, axis, and legend resolutions for view composition specifications.\\\"},\\\"title\\\":{\\\"anyOf\\\":[{\\\"$ref\\\":\\\"#/definitions/Text\\\"},{\\\"$ref\\\":\\\"#/definitions/TitleParams\\\"}],\\\"description\\\":\\\"Title for the plot.\\\"},\\\"transform\\\":{\\\"description\\\":\\\"An array of data transformations such as filter and new field calculation.\\\",\\\"items\\\":{\\\"$ref\\\":\\\"#/definitions/Transform\\\"},\\\"type\\\":\\\"array\\\"},\\\"view\\\":{\\\"$ref\\\":\\\"#/definitions/ViewBackground\\\",\\\"description\\\":\\\"An object defining the view background's fill and stroke.\\\\n\\\\n__Default value:__ none (transparent)\\\"},\\\"width\\\":{\\\"anyOf\\\":[{\\\"type\\\":\\\"number\\\"},{\\\"const\\\":\\\"container\\\",\\\"type\\\":\\\"string\\\"},{\\\"$ref\\\":\\\"#/definitions/Step\\\"}],\\\"description\\\":\\\"The width of a visualization.\\\\n\\\\n- For a plot with a continuous x-field, width should be a number. - For a plot with either a discrete x-field or no x-field, width can be either a number indicating a fixed width or an object in the form of `{step: number}` defining the width per discrete step. (No x-field is equivalent to having one discrete step.) - To enable responsive sizing on width, it should be set to `\\\\\\\"container\\\\\\\"`.\\\\n\\\\n__Default value:__ Based on `config.view.continuousWidth` for a plot with a continuous x-field and `config.view.discreteWidth` otherwise.\\\\n\\\\n__Note:__ For plots with [`row` and `column` channels](https://vega.github.io/vega-lite/docs/encoding.html#facet), this represents the width of a single view and the `\\\\\\\"container\\\\\\\"` option cannot be used.\\\\n\\\\n__See also:__ [`width`](https://vega.github.io/vega-lite/docs/size.html) documentation.\\\"}},\\\"required\\\":[\\\"layer\\\"],\\\"type\\\":\\\"object\\\"},\\\"LayoutAlign\\\":{\\\"enum\\\":[\\\"all\\\",\\\"each\\\",\\\"none\\\"],\\\"type\\\":\\\"string\\\"},\\\"Legend\\\":{\\\"additionalProperties\\\":false,\\\"description\\\":\\\"Properties of a legend or boolean flag for determining whether to show it.\\\",\\\"properties\\\":{\\\"aria\\\":{\\\"anyOf\\\":[{\\\"description\\\":\\\"A boolean flag indicating if [ARIA attributes](https://developer.mozilla.org/en-US/docs/Web/Accessibility/ARIA) should be included (SVG output only). If `false`, the \\\\\\\"aria-hidden\\\\\\\" attribute will be set on the output SVG group, removing the legend from the ARIA accessibility tree.\\\\n\\\\n__Default value:__ `true`\\\",\\\"type\\\":\\\"boolean\\\"},{\\\"$ref\\\":\\\"#/definitions/ExprRef\\\"}]},\\\"clipHeight\\\":{\\\"anyOf\\\":[{\\\"description\\\":\\\"The height in pixels to clip symbol legend entries and limit their size.\\\",\\\"type\\\":\\\"number\\\"},{\\\"$ref\\\":\\\"#/definitions/ExprRef\\\"}]},\\\"columnPadding\\\":{\\\"anyOf\\\":[{\\\"description\\\":\\\"The horizontal padding in pixels between symbol legend entries.\\\\n\\\\n__Default value:__ `10`.\\\",\\\"type\\\":\\\"number\\\"},{\\\"$ref\\\":\\\"#/definitions/ExprRef\\\"}]},\\\"columns\\\":{\\\"anyOf\\\":[{\\\"description\\\":\\\"The number of columns in which to arrange symbol legend entries. A value of `0` or lower indicates a single row with one column per entry.\\\",\\\"type\\\":\\\"number\\\"},{\\\"$ref\\\":\\\"#/definitions/ExprRef\\\"}]},\\\"cornerRadius\\\":{\\\"anyOf\\\":[{\\\"description\\\":\\\"Corner radius for the full legend.\\\",\\\"type\\\":\\\"number\\\"},{\\\"$ref\\\":\\\"#/definitions/ExprRef\\\"}]},\\\"description\\\":{\\\"anyOf\\\":[{\\\"description\\\":\\\"A text description of this legend for [ARIA accessibility](https://developer.mozilla.org/en-US/docs/Web/Accessibility/ARIA) (SVG output only). If the `aria` property is true, for SVG output the [\\\\\\\"aria-label\\\\\\\" attribute](https://developer.mozilla.org/en-US/docs/Web/Accessibility/ARIA/ARIA_Techniques/Using_the_aria-label_attribute) will be set to this description. If the description is unspecified it will be automatically generated.\\\",\\\"type\\\":\\\"string\\\"},{\\\"$ref\\\":\\\"#/definitions/ExprRef\\\"}]},\\\"direction\\\":{\\\"$ref\\\":\\\"#/definitions/Orientation\\\",\\\"description\\\":\\\"The direction of the legend, one of `\\\\\\\"vertical\\\\\\\"` or `\\\\\\\"horizontal\\\\\\\"`.\\\\n\\\\n__Default value:__ - For top-/bottom-`orient`ed legends, `\\\\\\\"horizontal\\\\\\\"` - For left-/right-`orient`ed legends, `\\\\\\\"vertical\\\\\\\"` - For top/bottom-left/right-`orient`ed legends, `\\\\\\\"horizontal\\\\\\\"` for gradient legends and `\\\\\\\"vertical\\\\\\\"` for symbol legends.\\\"},\\\"fillColor\\\":{\\\"anyOf\\\":[{\\\"anyOf\\\":[{\\\"type\\\":\\\"null\\\"},{\\\"$ref\\\":\\\"#/definitions/Color\\\"}],\\\"description\\\":\\\"Background fill color for the full legend.\\\"},{\\\"$ref\\\":\\\"#/definitions/ExprRef\\\"}]},\\\"format\\\":{\\\"anyOf\\\":[{\\\"type\\\":\\\"string\\\"},{\\\"$ref\\\":\\\"#/definitions/Dict<unknown>\\\"}],\\\"description\\\":\\\"When used with the default `\\\\\\\"number\\\\\\\"` and `\\\\\\\"time\\\\\\\"` format type, the text formatting pattern for labels of guides (axes, legends, headers) and text marks.\\\\n\\\\n- If the format type is `\\\\\\\"number\\\\\\\"` (e.g., for quantitative fields), this is D3's [number format pattern](https://github.com/d3/d3-format#locale_format). - If the format type is `\\\\\\\"time\\\\\\\"` (e.g., for temporal fields), this is D3's [time format pattern](https://github.com/d3/d3-time-format#locale_format).\\\\n\\\\nSee the [format documentation](https://vega.github.io/vega-lite/docs/format.html) for more examples.\\\\n\\\\nWhen used with a [custom `formatType`](https://vega.github.io/vega-lite/docs/config.html#custom-format-type), this value will be passed as `format` alongside `datum.value` to the registered function.\\\\n\\\\n__Default value:__  Derived from [numberFormat](https://vega.github.io/vega-lite/docs/config.html#format) config for number format and from [timeFormat](https://vega.github.io/vega-lite/docs/config.html#format) config for time format.\\\"},\\\"formatType\\\":{\\\"description\\\":\\\"The format type for labels. One of `\\\\\\\"number\\\\\\\"`, `\\\\\\\"time\\\\\\\"`, or a [registered custom format type](https://vega.github.io/vega-lite/docs/config.html#custom-format-type).\\\\n\\\\n__Default value:__ - `\\\\\\\"time\\\\\\\"` for temporal fields and ordinal and nominal fields with `timeUnit`. - `\\\\\\\"number\\\\\\\"` for quantitative fields as well as ordinal and nominal fields without `timeUnit`.\\\",\\\"type\\\":\\\"string\\\"},\\\"gradientLength\\\":{\\\"anyOf\\\":[{\\\"description\\\":\\\"The length in pixels of the primary axis of a color gradient. This value corresponds to the height of a vertical gradient or the width of a horizontal gradient.\\\\n\\\\n__Default value:__ `200`.\\\",\\\"minimum\\\":0,\\\"type\\\":\\\"number\\\"},{\\\"$ref\\\":\\\"#/definitions/ExprRef\\\"}]},\\\"gradientOpacity\\\":{\\\"anyOf\\\":[{\\\"description\\\":\\\"Opacity of the color gradient.\\\",\\\"type\\\":\\\"number\\\"},{\\\"$ref\\\":\\\"#/definitions/ExprRef\\\"}]},\\\"gradientStrokeColor\\\":{\\\"anyOf\\\":[{\\\"anyOf\\\":[{\\\"type\\\":\\\"null\\\"},{\\\"$ref\\\":\\\"#/definitions/Color\\\"}],\\\"description\\\":\\\"The color of the gradient stroke, can be in hex color code or regular color name.\\\\n\\\\n__Default value:__ `\\\\\\\"lightGray\\\\\\\"`.\\\"},{\\\"$ref\\\":\\\"#/definitions/ExprRef\\\"}]},\\\"gradientStrokeWidth\\\":{\\\"anyOf\\\":[{\\\"description\\\":\\\"The width of the gradient stroke, in pixels.\\\\n\\\\n__Default value:__ `0`.\\\",\\\"minimum\\\":0,\\\"type\\\":\\\"number\\\"},{\\\"$ref\\\":\\\"#/definitions/ExprRef\\\"}]},\\\"gradientThickness\\\":{\\\"anyOf\\\":[{\\\"description\\\":\\\"The thickness in pixels of the color gradient. This value corresponds to the width of a vertical gradient or the height of a horizontal gradient.\\\\n\\\\n__Default value:__ `16`.\\\",\\\"minimum\\\":0,\\\"type\\\":\\\"number\\\"},{\\\"$ref\\\":\\\"#/definitions/ExprRef\\\"}]},\\\"gridAlign\\\":{\\\"anyOf\\\":[{\\\"$ref\\\":\\\"#/definitions/LayoutAlign\\\",\\\"description\\\":\\\"The alignment to apply to symbol legends rows and columns. The supported string values are `\\\\\\\"all\\\\\\\"`, `\\\\\\\"each\\\\\\\"` (the default), and `none`. For more information, see the [grid layout documentation](https://vega.github.io/vega/docs/layout).\\\\n\\\\n__Default value:__ `\\\\\\\"each\\\\\\\"`.\\\"},{\\\"$ref\\\":\\\"#/definitions/ExprRef\\\"}]},\\\"labelAlign\\\":{\\\"anyOf\\\":[{\\\"$ref\\\":\\\"#/definitions/Align\\\",\\\"description\\\":\\\"The alignment of the legend label, can be left, center, or right.\\\"},{\\\"$ref\\\":\\\"#/definitions/ExprRef\\\"}]},\\\"labelBaseline\\\":{\\\"anyOf\\\":[{\\\"$ref\\\":\\\"#/definitions/TextBaseline\\\",\\\"description\\\":\\\"The position of the baseline of legend label, can be `\\\\\\\"top\\\\\\\"`, `\\\\\\\"middle\\\\\\\"`, `\\\\\\\"bottom\\\\\\\"`, or `\\\\\\\"alphabetic\\\\\\\"`.\\\\n\\\\n__Default value:__ `\\\\\\\"middle\\\\\\\"`.\\\"},{\\\"$ref\\\":\\\"#/definitions/ExprRef\\\"}]},\\\"labelColor\\\":{\\\"anyOf\\\":[{\\\"anyOf\\\":[{\\\"type\\\":\\\"null\\\"},{\\\"$ref\\\":\\\"#/definitions/Color\\\"}],\\\"description\\\":\\\"The color of the legend label, can be in hex color code or regular color name.\\\"},{\\\"$ref\\\":\\\"#/definitions/ExprRef\\\"}]},\\\"labelExpr\\\":{\\\"description\\\":\\\"[Vega expression](https://vega.github.io/vega/docs/expressions/) for customizing labels.\\\\n\\\\n__Note:__ The label text and value can be assessed via the `label` and `value` properties of the legend's backing `datum` object.\\\",\\\"type\\\":\\\"string\\\"},\\\"labelFont\\\":{\\\"anyOf\\\":[{\\\"description\\\":\\\"The font of the legend label.\\\",\\\"type\\\":\\\"string\\\"},{\\\"$ref\\\":\\\"#/definitions/ExprRef\\\"}]},\\\"labelFontSize\\\":{\\\"anyOf\\\":[{\\\"description\\\":\\\"The font size of legend label.\\\\n\\\\n__Default value:__ `10`.\\\",\\\"minimum\\\":0,\\\"type\\\":\\\"number\\\"},{\\\"$ref\\\":\\\"#/definitions/ExprRef\\\"}]},\\\"labelFontStyle\\\":{\\\"anyOf\\\":[{\\\"$ref\\\":\\\"#/definitions/FontStyle\\\",\\\"description\\\":\\\"The font style of legend label.\\\"},{\\\"$ref\\\":\\\"#/definitions/ExprRef\\\"}]},\\\"labelFontWeight\\\":{\\\"anyOf\\\":[{\\\"$ref\\\":\\\"#/definitions/FontWeight\\\",\\\"description\\\":\\\"The font weight of legend label.\\\"},{\\\"$ref\\\":\\\"#/definitions/ExprRef\\\"}]},\\\"labelLimit\\\":{\\\"anyOf\\\":[{\\\"description\\\":\\\"Maximum allowed pixel width of legend tick labels.\\\\n\\\\n__Default value:__ `160`.\\\",\\\"type\\\":\\\"number\\\"},{\\\"$ref\\\":\\\"#/definitions/ExprRef\\\"}]},\\\"labelOffset\\\":{\\\"anyOf\\\":[{\\\"description\\\":\\\"The offset of the legend label.\\\",\\\"type\\\":\\\"number\\\"},{\\\"$ref\\\":\\\"#/definitions/ExprRef\\\"}]},\\\"labelOpacity\\\":{\\\"anyOf\\\":[{\\\"description\\\":\\\"Opacity of labels.\\\",\\\"type\\\":\\\"number\\\"},{\\\"$ref\\\":\\\"#/definitions/ExprRef\\\"}]},\\\"labelOverlap\\\":{\\\"anyOf\\\":[{\\\"$ref\\\":\\\"#/definitions/LabelOverlap\\\",\\\"description\\\":\\\"The strategy to use for resolving overlap of labels in gradient legends. If `false`, no overlap reduction is attempted. If set to `true` (default) or `\\\\\\\"parity\\\\\\\"`, a strategy of removing every other label is used. If set to `\\\\\\\"greedy\\\\\\\"`, a linear scan of the labels is performed, removing any label that overlaps with the last visible label (this often works better for log-scaled axes).\\\\n\\\\n__Default value:__ `true`.\\\"},{\\\"$ref\\\":\\\"#/definitions/ExprRef\\\"}]},\\\"labelPadding\\\":{\\\"anyOf\\\":[{\\\"description\\\":\\\"Padding in pixels between the legend and legend labels.\\\",\\\"type\\\":\\\"number\\\"},{\\\"$ref\\\":\\\"#/definitions/ExprRef\\\"}]},\\\"labelSeparation\\\":{\\\"anyOf\\\":[{\\\"description\\\":\\\"The minimum separation that must be between label bounding boxes for them to be considered non-overlapping (default `0`). This property is ignored if *labelOverlap* resolution is not enabled.\\\",\\\"type\\\":\\\"number\\\"},{\\\"$ref\\\":\\\"#/definitions/ExprRef\\\"}]},\\\"legendX\\\":{\\\"anyOf\\\":[{\\\"description\\\":\\\"Custom x-position for legend with orient \\\\\\\"none\\\\\\\".\\\",\\\"type\\\":\\\"number\\\"},{\\\"$ref\\\":\\\"#/definitions/ExprRef\\\"}]},\\\"legendY\\\":{\\\"anyOf\\\":[{\\\"description\\\":\\\"Custom y-position for legend with orient \\\\\\\"none\\\\\\\".\\\",\\\"type\\\":\\\"number\\\"},{\\\"$ref\\\":\\\"#/definitions/ExprRef\\\"}]},\\\"offset\\\":{\\\"anyOf\\\":[{\\\"description\\\":\\\"The offset in pixels by which to displace the legend from the data rectangle and axes.\\\\n\\\\n__Default value:__ `18`.\\\",\\\"type\\\":\\\"number\\\"},{\\\"$ref\\\":\\\"#/definitions/ExprRef\\\"}]},\\\"orient\\\":{\\\"$ref\\\":\\\"#/definitions/LegendOrient\\\",\\\"description\\\":\\\"The orientation of the legend, which determines how the legend is positioned within the scene. One of `\\\\\\\"left\\\\\\\"`, `\\\\\\\"right\\\\\\\"`, `\\\\\\\"top\\\\\\\"`, `\\\\\\\"bottom\\\\\\\"`, `\\\\\\\"top-left\\\\\\\"`, `\\\\\\\"top-right\\\\\\\"`, `\\\\\\\"bottom-left\\\\\\\"`, `\\\\\\\"bottom-right\\\\\\\"`, `\\\\\\\"none\\\\\\\"`.\\\\n\\\\n__Default value:__ `\\\\\\\"right\\\\\\\"`\\\"},\\\"padding\\\":{\\\"anyOf\\\":[{\\\"description\\\":\\\"The padding between the border and content of the legend group.\\\\n\\\\n__Default value:__ `0`.\\\",\\\"type\\\":\\\"number\\\"},{\\\"$ref\\\":\\\"#/definitions/ExprRef\\\"}]},\\\"rowPadding\\\":{\\\"anyOf\\\":[{\\\"description\\\":\\\"The vertical padding in pixels between symbol legend entries.\\\\n\\\\n__Default value:__ `2`.\\\",\\\"type\\\":\\\"number\\\"},{\\\"$ref\\\":\\\"#/definitions/ExprRef\\\"}]},\\\"strokeColor\\\":{\\\"anyOf\\\":[{\\\"anyOf\\\":[{\\\"type\\\":\\\"null\\\"},{\\\"$ref\\\":\\\"#/definitions/Color\\\"}],\\\"description\\\":\\\"Border stroke color for the full legend.\\\"},{\\\"$ref\\\":\\\"#/definitions/ExprRef\\\"}]},\\\"symbolDash\\\":{\\\"anyOf\\\":[{\\\"description\\\":\\\"An array of alternating [stroke, space] lengths for dashed symbol strokes.\\\",\\\"items\\\":{\\\"type\\\":\\\"number\\\"},\\\"type\\\":\\\"array\\\"},{\\\"$ref\\\":\\\"#/definitions/ExprRef\\\"}]},\\\"symbolDashOffset\\\":{\\\"anyOf\\\":[{\\\"description\\\":\\\"The pixel offset at which to start drawing with the symbol stroke dash array.\\\",\\\"type\\\":\\\"number\\\"},{\\\"$ref\\\":\\\"#/definitions/ExprRef\\\"}]},\\\"symbolFillColor\\\":{\\\"anyOf\\\":[{\\\"anyOf\\\":[{\\\"type\\\":\\\"null\\\"},{\\\"$ref\\\":\\\"#/definitions/Color\\\"}],\\\"description\\\":\\\"The color of the legend symbol,\\\"},{\\\"$ref\\\":\\\"#/definitions/ExprRef\\\"}]},\\\"symbolLimit\\\":{\\\"anyOf\\\":[{\\\"description\\\":\\\"The maximum number of allowed entries for a symbol legend. Additional entries will be dropped.\\\",\\\"type\\\":\\\"number\\\"},{\\\"$ref\\\":\\\"#/definitions/ExprRef\\\"}]},\\\"symbolOffset\\\":{\\\"anyOf\\\":[{\\\"description\\\":\\\"Horizontal pixel offset for legend symbols.\\\\n\\\\n__Default value:__ `0`.\\\",\\\"type\\\":\\\"number\\\"},{\\\"$ref\\\":\\\"#/definitions/ExprRef\\\"}]},\\\"symbolOpacity\\\":{\\\"anyOf\\\":[{\\\"description\\\":\\\"Opacity of the legend symbols.\\\",\\\"type\\\":\\\"number\\\"},{\\\"$ref\\\":\\\"#/definitions/ExprRef\\\"}]},\\\"symbolSize\\\":{\\\"anyOf\\\":[{\\\"description\\\":\\\"The size of the legend symbol, in pixels.\\\\n\\\\n__Default value:__ `100`.\\\",\\\"minimum\\\":0,\\\"type\\\":\\\"number\\\"},{\\\"$ref\\\":\\\"#/definitions/ExprRef\\\"}]},\\\"symbolStrokeColor\\\":{\\\"anyOf\\\":[{\\\"anyOf\\\":[{\\\"type\\\":\\\"null\\\"},{\\\"$ref\\\":\\\"#/definitions/Color\\\"}],\\\"description\\\":\\\"Stroke color for legend symbols.\\\"},{\\\"$ref\\\":\\\"#/definitions/ExprRef\\\"}]},\\\"symbolStrokeWidth\\\":{\\\"anyOf\\\":[{\\\"description\\\":\\\"The width of the symbol's stroke.\\\\n\\\\n__Default value:__ `1.5`.\\\",\\\"minimum\\\":0,\\\"type\\\":\\\"number\\\"},{\\\"$ref\\\":\\\"#/definitions/ExprRef\\\"}]},\\\"symbolType\\\":{\\\"anyOf\\\":[{\\\"$ref\\\":\\\"#/definitions/SymbolShape\\\",\\\"description\\\":\\\"The symbol shape. One of the plotting shapes `circle` (default), `square`, `cross`, `diamond`, `triangle-up`, `triangle-down`, `triangle-right`, or `triangle-left`, the line symbol `stroke`, or one of the centered directional shapes `arrow`, `wedge`, or `triangle`. Alternatively, a custom [SVG path string](https://developer.mozilla.org/en-US/docs/Web/SVG/Tutorial/Paths) can be provided. For correct sizing, custom shape paths should be defined within a square bounding box with coordinates ranging from -1 to 1 along both the x and y dimensions.\\\\n\\\\n__Default value:__ `\\\\\\\"circle\\\\\\\"`.\\\"},{\\\"$ref\\\":\\\"#/definitions/ExprRef\\\"}]},\\\"tickCount\\\":{\\\"anyOf\\\":[{\\\"$ref\\\":\\\"#/definitions/TickCount\\\",\\\"description\\\":\\\"The desired number of tick values for quantitative legends.\\\"},{\\\"$ref\\\":\\\"#/definitions/ExprRef\\\"}]},\\\"tickMinStep\\\":{\\\"anyOf\\\":[{\\\"type\\\":\\\"number\\\"},{\\\"$ref\\\":\\\"#/definitions/ExprRef\\\"}],\\\"description\\\":\\\"The minimum desired step between legend ticks, in terms of scale domain values. For example, a value of `1` indicates that ticks should not be less than 1 unit apart. If `tickMinStep` is specified, the `tickCount` value will be adjusted, if necessary, to enforce the minimum step value.\\\\n\\\\n__Default value__: `undefined`\\\"},\\\"title\\\":{\\\"anyOf\\\":[{\\\"$ref\\\":\\\"#/definitions/Text\\\"},{\\\"type\\\":\\\"null\\\"}],\\\"description\\\":\\\"A title for the field. If `null`, the title will be removed.\\\\n\\\\n__Default value:__  derived from the field's name and transformation function (`aggregate`, `bin` and `timeUnit`). If the field has an aggregate function, the function is displayed as part of the title (e.g., `\\\\\\\"Sum of Profit\\\\\\\"`). If the field is binned or has a time unit applied, the applied function is shown in parentheses (e.g., `\\\\\\\"Profit (binned)\\\\\\\"`, `\\\\\\\"Transaction Date (year-month)\\\\\\\"`). Otherwise, the title is simply the field name.\\\\n\\\\n__Notes__:\\\\n\\\\n1) You can customize the default field title format by providing the [`fieldTitle`](https://vega.github.io/vega-lite/docs/config.html#top-level-config) property in the [config](https://vega.github.io/vega-lite/docs/config.html) or [`fieldTitle` function via the `compile` function's options](https://vega.github.io/vega-lite/docs/compile.html#field-title).\\\\n\\\\n2) If both field definition's `title` and axis, header, or legend `title` are defined, axis/header/legend title will be used.\\\"},\\\"titleAlign\\\":{\\\"anyOf\\\":[{\\\"$ref\\\":\\\"#/definitions/Align\\\",\\\"description\\\":\\\"Horizontal text alignment for legend titles.\\\\n\\\\n__Default value:__ `\\\\\\\"left\\\\\\\"`.\\\"},{\\\"$ref\\\":\\\"#/definitions/ExprRef\\\"}]},\\\"titleAnchor\\\":{\\\"anyOf\\\":[{\\\"$ref\\\":\\\"#/definitions/TitleAnchor\\\",\\\"description\\\":\\\"Text anchor position for placing legend titles.\\\"},{\\\"$ref\\\":\\\"#/definitions/ExprRef\\\"}]},\\\"titleBaseline\\\":{\\\"anyOf\\\":[{\\\"$ref\\\":\\\"#/definitions/TextBaseline\\\",\\\"description\\\":\\\"Vertical text baseline for legend titles.  One of `\\\\\\\"alphabetic\\\\\\\"` (default), `\\\\\\\"top\\\\\\\"`, `\\\\\\\"middle\\\\\\\"`, `\\\\\\\"bottom\\\\\\\"`, `\\\\\\\"line-top\\\\\\\"`, or `\\\\\\\"line-bottom\\\\\\\"`. The `\\\\\\\"line-top\\\\\\\"` and `\\\\\\\"line-bottom\\\\\\\"` values operate similarly to `\\\\\\\"top\\\\\\\"` and `\\\\\\\"bottom\\\\\\\"`, but are calculated relative to the *lineHeight* rather than *fontSize* alone.\\\\n\\\\n__Default value:__ `\\\\\\\"top\\\\\\\"`.\\\"},{\\\"$ref\\\":\\\"#/definitions/ExprRef\\\"}]},\\\"titleColor\\\":{\\\"anyOf\\\":[{\\\"anyOf\\\":[{\\\"type\\\":\\\"null\\\"},{\\\"$ref\\\":\\\"#/definitions/Color\\\"}],\\\"description\\\":\\\"The color of the legend title, can be in hex color code or regular color name.\\\"},{\\\"$ref\\\":\\\"#/definitions/ExprRef\\\"}]},\\\"titleFont\\\":{\\\"anyOf\\\":[{\\\"description\\\":\\\"The font of the legend title.\\\",\\\"type\\\":\\\"string\\\"},{\\\"$ref\\\":\\\"#/definitions/ExprRef\\\"}]},\\\"titleFontSize\\\":{\\\"anyOf\\\":[{\\\"description\\\":\\\"The font size of the legend title.\\\",\\\"type\\\":\\\"number\\\"},{\\\"$ref\\\":\\\"#/definitions/ExprRef\\\"}]},\\\"titleFontStyle\\\":{\\\"anyOf\\\":[{\\\"$ref\\\":\\\"#/definitions/FontStyle\\\",\\\"description\\\":\\\"The font style of the legend title.\\\"},{\\\"$ref\\\":\\\"#/definitions/ExprRef\\\"}]},\\\"titleFontWeight\\\":{\\\"anyOf\\\":[{\\\"$ref\\\":\\\"#/definitions/FontWeight\\\",\\\"description\\\":\\\"The font weight of the legend title. This can be either a string (e.g `\\\\\\\"bold\\\\\\\"`, `\\\\\\\"normal\\\\\\\"`) or a number (`100`, `200`, `300`, ..., `900` where `\\\\\\\"normal\\\\\\\"` = `400` and `\\\\\\\"bold\\\\\\\"` = `700`).\\\"},{\\\"$ref\\\":\\\"#/definitions/ExprRef\\\"}]},\\\"titleLimit\\\":{\\\"anyOf\\\":[{\\\"description\\\":\\\"Maximum allowed pixel width of legend titles.\\\\n\\\\n__Default value:__ `180`.\\\",\\\"minimum\\\":0,\\\"type\\\":\\\"number\\\"},{\\\"$ref\\\":\\\"#/definitions/ExprRef\\\"}]},\\\"titleLineHeight\\\":{\\\"anyOf\\\":[{\\\"description\\\":\\\"Line height in pixels for multi-line title text or title text with `\\\\\\\"line-top\\\\\\\"` or `\\\\\\\"line-bottom\\\\\\\"` baseline.\\\",\\\"type\\\":\\\"number\\\"},{\\\"$ref\\\":\\\"#/definitions/ExprRef\\\"}]},\\\"titleOpacity\\\":{\\\"anyOf\\\":[{\\\"description\\\":\\\"Opacity of the legend title.\\\",\\\"type\\\":\\\"number\\\"},{\\\"$ref\\\":\\\"#/definitions/ExprRef\\\"}]},\\\"titleOrient\\\":{\\\"anyOf\\\":[{\\\"$ref\\\":\\\"#/definitions/Orient\\\",\\\"description\\\":\\\"Orientation of the legend title.\\\"},{\\\"$ref\\\":\\\"#/definitions/ExprRef\\\"}]},\\\"titlePadding\\\":{\\\"anyOf\\\":[{\\\"description\\\":\\\"The padding, in pixels, between title and legend.\\\\n\\\\n__Default value:__ `5`.\\\",\\\"type\\\":\\\"number\\\"},{\\\"$ref\\\":\\\"#/definitions/ExprRef\\\"}]},\\\"type\\\":{\\\"description\\\":\\\"The type of the legend. Use `\\\\\\\"symbol\\\\\\\"` to create a discrete legend and `\\\\\\\"gradient\\\\\\\"` for a continuous color gradient.\\\\n\\\\n__Default value:__ `\\\\\\\"gradient\\\\\\\"` for non-binned quantitative fields and temporal fields; `\\\\\\\"symbol\\\\\\\"` otherwise.\\\",\\\"enum\\\":[\\\"symbol\\\",\\\"gradient\\\"],\\\"type\\\":\\\"string\\\"},\\\"values\\\":{\\\"anyOf\\\":[{\\\"items\\\":{\\\"type\\\":\\\"number\\\"},\\\"type\\\":\\\"array\\\"},{\\\"items\\\":{\\\"type\\\":\\\"string\\\"},\\\"type\\\":\\\"array\\\"},{\\\"items\\\":{\\\"type\\\":\\\"boolean\\\"},\\\"type\\\":\\\"array\\\"},{\\\"items\\\":{\\\"$ref\\\":\\\"#/definitions/DateTime\\\"},\\\"type\\\":\\\"array\\\"},{\\\"$ref\\\":\\\"#/definitions/ExprRef\\\"}],\\\"description\\\":\\\"Explicitly set the visible legend values.\\\"},\\\"zindex\\\":{\\\"description\\\":\\\"A non-negative integer indicating the z-index of the legend. If zindex is 0, legend should be drawn behind all chart elements. To put them in front, use zindex = 1.\\\",\\\"minimum\\\":0,\\\"type\\\":\\\"number\\\"}},\\\"type\\\":\\\"object\\\"},\\\"LegendBinding\\\":{\\\"anyOf\\\":[{\\\"const\\\":\\\"legend\\\",\\\"type\\\":\\\"string\\\"},{\\\"$ref\\\":\\\"#/definitions/LegendStreamBinding\\\"}]},\\\"LegendConfig\\\":{\\\"additionalProperties\\\":false,\\\"properties\\\":{\\\"aria\\\":{\\\"anyOf\\\":[{\\\"description\\\":\\\"A boolean flag indicating if [ARIA attributes](https://developer.mozilla.org/en-US/docs/Web/Accessibility/ARIA) should be included (SVG output only). If `false`, the \\\\\\\"aria-hidden\\\\\\\" attribute will be set on the output SVG group, removing the legend from the ARIA accessibility tree.\\\\n\\\\n__Default value:__ `true`\\\",\\\"type\\\":\\\"boolean\\\"},{\\\"$ref\\\":\\\"#/definitions/ExprRef\\\"}]},\\\"clipHeight\\\":{\\\"anyOf\\\":[{\\\"description\\\":\\\"The height in pixels to clip symbol legend entries and limit their size.\\\",\\\"type\\\":\\\"number\\\"},{\\\"$ref\\\":\\\"#/definitions/ExprRef\\\"}]},\\\"columnPadding\\\":{\\\"anyOf\\\":[{\\\"description\\\":\\\"The horizontal padding in pixels between symbol legend entries.\\\\n\\\\n__Default value:__ `10`.\\\",\\\"type\\\":\\\"number\\\"},{\\\"$ref\\\":\\\"#/definitions/ExprRef\\\"}]},\\\"columns\\\":{\\\"anyOf\\\":[{\\\"description\\\":\\\"The number of columns in which to arrange symbol legend entries. A value of `0` or lower indicates a single row with one column per entry.\\\",\\\"type\\\":\\\"number\\\"},{\\\"$ref\\\":\\\"#/definitions/ExprRef\\\"}]},\\\"cornerRadius\\\":{\\\"anyOf\\\":[{\\\"description\\\":\\\"Corner radius for the full legend.\\\",\\\"type\\\":\\\"number\\\"},{\\\"$ref\\\":\\\"#/definitions/ExprRef\\\"}]},\\\"description\\\":{\\\"anyOf\\\":[{\\\"description\\\":\\\"A text description of this legend for [ARIA accessibility](https://developer.mozilla.org/en-US/docs/Web/Accessibility/ARIA) (SVG output only). If the `aria` property is true, for SVG output the [\\\\\\\"aria-label\\\\\\\" attribute](https://developer.mozilla.org/en-US/docs/Web/Accessibility/ARIA/ARIA_Techniques/Using_the_aria-label_attribute) will be set to this description. If the description is unspecified it will be automatically generated.\\\",\\\"type\\\":\\\"string\\\"},{\\\"$ref\\\":\\\"#/definitions/ExprRef\\\"}]},\\\"direction\\\":{\\\"$ref\\\":\\\"#/definitions/Orientation\\\",\\\"description\\\":\\\"The direction of the legend, one of `\\\\\\\"vertical\\\\\\\"` or `\\\\\\\"horizontal\\\\\\\"`.\\\\n\\\\n__Default value:__ - For top-/bottom-`orient`ed legends, `\\\\\\\"horizontal\\\\\\\"` - For left-/right-`orient`ed legends, `\\\\\\\"vertical\\\\\\\"` - For top/bottom-left/right-`orient`ed legends, `\\\\\\\"horizontal\\\\\\\"` for gradient legends and `\\\\\\\"vertical\\\\\\\"` for symbol legends.\\\"},\\\"disable\\\":{\\\"description\\\":\\\"Disable legend by default\\\",\\\"type\\\":\\\"boolean\\\"},\\\"fillColor\\\":{\\\"anyOf\\\":[{\\\"anyOf\\\":[{\\\"type\\\":\\\"null\\\"},{\\\"$ref\\\":\\\"#/definitions/Color\\\"}],\\\"description\\\":\\\"Background fill color for the full legend.\\\"},{\\\"$ref\\\":\\\"#/definitions/ExprRef\\\"}]},\\\"gradientDirection\\\":{\\\"anyOf\\\":[{\\\"$ref\\\":\\\"#/definitions/Orientation\\\",\\\"description\\\":\\\"The default direction (`\\\\\\\"horizontal\\\\\\\"` or `\\\\\\\"vertical\\\\\\\"`) for gradient legends.\\\\n\\\\n__Default value:__ `\\\\\\\"vertical\\\\\\\"`.\\\"},{\\\"$ref\\\":\\\"#/definitions/ExprRef\\\"}]},\\\"gradientHorizontalMaxLength\\\":{\\\"description\\\":\\\"Max legend length for a horizontal gradient when `config.legend.gradientLength` is undefined.\\\\n\\\\n__Default value:__ `200`\\\",\\\"type\\\":\\\"number\\\"},\\\"gradientHorizontalMinLength\\\":{\\\"description\\\":\\\"Min legend length for a horizontal gradient when `config.legend.gradientLength` is undefined.\\\\n\\\\n__Default value:__ `100`\\\",\\\"type\\\":\\\"number\\\"},\\\"gradientLabelLimit\\\":{\\\"anyOf\\\":[{\\\"description\\\":\\\"The maximum allowed length in pixels of color ramp gradient labels.\\\",\\\"type\\\":\\\"number\\\"},{\\\"$ref\\\":\\\"#/definitions/ExprRef\\\"}]},\\\"gradientLabelOffset\\\":{\\\"anyOf\\\":[{\\\"description\\\":\\\"Vertical offset in pixels for color ramp gradient labels.\\\\n\\\\n__Default value:__ `2`.\\\",\\\"type\\\":\\\"number\\\"},{\\\"$ref\\\":\\\"#/definitions/ExprRef\\\"}]},\\\"gradientLength\\\":{\\\"anyOf\\\":[{\\\"description\\\":\\\"The length in pixels of the primary axis of a color gradient. This value corresponds to the height of a vertical gradient or the width of a horizontal gradient.\\\\n\\\\n__Default value:__ `200`.\\\",\\\"minimum\\\":0,\\\"type\\\":\\\"number\\\"},{\\\"$ref\\\":\\\"#/definitions/ExprRef\\\"}]},\\\"gradientOpacity\\\":{\\\"anyOf\\\":[{\\\"description\\\":\\\"Opacity of the color gradient.\\\",\\\"type\\\":\\\"number\\\"},{\\\"$ref\\\":\\\"#/definitions/ExprRef\\\"}]},\\\"gradientStrokeColor\\\":{\\\"anyOf\\\":[{\\\"anyOf\\\":[{\\\"type\\\":\\\"null\\\"},{\\\"$ref\\\":\\\"#/definitions/Color\\\"}],\\\"description\\\":\\\"The color of the gradient stroke, can be in hex color code or regular color name.\\\\n\\\\n__Default value:__ `\\\\\\\"lightGray\\\\\\\"`.\\\"},{\\\"$ref\\\":\\\"#/definitions/ExprRef\\\"}]},\\\"gradientStrokeWidth\\\":{\\\"anyOf\\\":[{\\\"description\\\":\\\"The width of the gradient stroke, in pixels.\\\\n\\\\n__Default value:__ `0`.\\\",\\\"minimum\\\":0,\\\"type\\\":\\\"number\\\"},{\\\"$ref\\\":\\\"#/definitions/ExprRef\\\"}]},\\\"gradientThickness\\\":{\\\"anyOf\\\":[{\\\"description\\\":\\\"The thickness in pixels of the color gradient. This value corresponds to the width of a vertical gradient or the height of a horizontal gradient.\\\\n\\\\n__Default value:__ `16`.\\\",\\\"minimum\\\":0,\\\"type\\\":\\\"number\\\"},{\\\"$ref\\\":\\\"#/definitions/ExprRef\\\"}]},\\\"gradientVerticalMaxLength\\\":{\\\"description\\\":\\\"Max legend length for a vertical gradient when `config.legend.gradientLength` is undefined.\\\\n\\\\n__Default value:__ `200`\\\",\\\"type\\\":\\\"number\\\"},\\\"gradientVerticalMinLength\\\":{\\\"description\\\":\\\"Min legend length for a vertical gradient when `config.legend.gradientLength` is undefined.\\\\n\\\\n__Default value:__ `100`\\\",\\\"type\\\":\\\"number\\\"},\\\"gridAlign\\\":{\\\"anyOf\\\":[{\\\"$ref\\\":\\\"#/definitions/LayoutAlign\\\",\\\"description\\\":\\\"The alignment to apply to symbol legends rows and columns. The supported string values are `\\\\\\\"all\\\\\\\"`, `\\\\\\\"each\\\\\\\"` (the default), and `none`. For more information, see the [grid layout documentation](https://vega.github.io/vega/docs/layout).\\\\n\\\\n__Default value:__ `\\\\\\\"each\\\\\\\"`.\\\"},{\\\"$ref\\\":\\\"#/definitions/ExprRef\\\"}]},\\\"labelAlign\\\":{\\\"anyOf\\\":[{\\\"$ref\\\":\\\"#/definitions/Align\\\",\\\"description\\\":\\\"The alignment of the legend label, can be left, center, or right.\\\"},{\\\"$ref\\\":\\\"#/definitions/ExprRef\\\"}]},\\\"labelBaseline\\\":{\\\"anyOf\\\":[{\\\"$ref\\\":\\\"#/definitions/TextBaseline\\\",\\\"description\\\":\\\"The position of the baseline of legend label, can be `\\\\\\\"top\\\\\\\"`, `\\\\\\\"middle\\\\\\\"`, `\\\\\\\"bottom\\\\\\\"`, or `\\\\\\\"alphabetic\\\\\\\"`.\\\\n\\\\n__Default value:__ `\\\\\\\"middle\\\\\\\"`.\\\"},{\\\"$ref\\\":\\\"#/definitions/ExprRef\\\"}]},\\\"labelColor\\\":{\\\"anyOf\\\":[{\\\"anyOf\\\":[{\\\"type\\\":\\\"null\\\"},{\\\"$ref\\\":\\\"#/definitions/Color\\\"}],\\\"description\\\":\\\"The color of the legend label, can be in hex color code or regular color name.\\\"},{\\\"$ref\\\":\\\"#/definitions/ExprRef\\\"}]},\\\"labelFont\\\":{\\\"anyOf\\\":[{\\\"description\\\":\\\"The font of the legend label.\\\",\\\"type\\\":\\\"string\\\"},{\\\"$ref\\\":\\\"#/definitions/ExprRef\\\"}]},\\\"labelFontSize\\\":{\\\"anyOf\\\":[{\\\"description\\\":\\\"The font size of legend label.\\\\n\\\\n__Default value:__ `10`.\\\",\\\"minimum\\\":0,\\\"type\\\":\\\"number\\\"},{\\\"$ref\\\":\\\"#/definitions/ExprRef\\\"}]},\\\"labelFontStyle\\\":{\\\"anyOf\\\":[{\\\"$ref\\\":\\\"#/definitions/FontStyle\\\",\\\"description\\\":\\\"The font style of legend label.\\\"},{\\\"$ref\\\":\\\"#/definitions/ExprRef\\\"}]},\\\"labelFontWeight\\\":{\\\"anyOf\\\":[{\\\"$ref\\\":\\\"#/definitions/FontWeight\\\",\\\"description\\\":\\\"The font weight of legend label.\\\"},{\\\"$ref\\\":\\\"#/definitions/ExprRef\\\"}]},\\\"labelLimit\\\":{\\\"anyOf\\\":[{\\\"description\\\":\\\"Maximum allowed pixel width of legend tick labels.\\\\n\\\\n__Default value:__ `160`.\\\",\\\"type\\\":\\\"number\\\"},{\\\"$ref\\\":\\\"#/definitions/ExprRef\\\"}]},\\\"labelOffset\\\":{\\\"anyOf\\\":[{\\\"description\\\":\\\"The offset of the legend label.\\\",\\\"type\\\":\\\"number\\\"},{\\\"$ref\\\":\\\"#/definitions/ExprRef\\\"}]},\\\"labelOpacity\\\":{\\\"anyOf\\\":[{\\\"description\\\":\\\"Opacity of labels.\\\",\\\"type\\\":\\\"number\\\"},{\\\"$ref\\\":\\\"#/definitions/ExprRef\\\"}]},\\\"labelOverlap\\\":{\\\"anyOf\\\":[{\\\"$ref\\\":\\\"#/definitions/LabelOverlap\\\"},{\\\"$ref\\\":\\\"#/definitions/ExprRef\\\"}],\\\"description\\\":\\\"The strategy to use for resolving overlap of labels in gradient legends. If `false`, no overlap reduction is attempted. If set to `true` or `\\\\\\\"parity\\\\\\\"`, a strategy of removing every other label is used. If set to `\\\\\\\"greedy\\\\\\\"`, a linear scan of the labels is performed, removing any label that overlaps with the last visible label (this often works better for log-scaled axes).\\\\n\\\\n__Default value:__ `\\\\\\\"greedy\\\\\\\"` for `log scales otherwise `true`.\\\"},\\\"labelPadding\\\":{\\\"anyOf\\\":[{\\\"description\\\":\\\"Padding in pixels between the legend and legend labels.\\\",\\\"type\\\":\\\"number\\\"},{\\\"$ref\\\":\\\"#/definitions/ExprRef\\\"}]},\\\"labelSeparation\\\":{\\\"anyOf\\\":[{\\\"description\\\":\\\"The minimum separation that must be between label bounding boxes for them to be considered non-overlapping (default `0`). This property is ignored if *labelOverlap* resolution is not enabled.\\\",\\\"type\\\":\\\"number\\\"},{\\\"$ref\\\":\\\"#/definitions/ExprRef\\\"}]},\\\"layout\\\":{\\\"$ref\\\":\\\"#/definitions/ExprRef\\\"},\\\"legendX\\\":{\\\"anyOf\\\":[{\\\"description\\\":\\\"Custom x-position for legend with orient \\\\\\\"none\\\\\\\".\\\",\\\"type\\\":\\\"number\\\"},{\\\"$ref\\\":\\\"#/definitions/ExprRef\\\"}]},\\\"legendY\\\":{\\\"anyOf\\\":[{\\\"description\\\":\\\"Custom y-position for legend with orient \\\\\\\"none\\\\\\\".\\\",\\\"type\\\":\\\"number\\\"},{\\\"$ref\\\":\\\"#/definitions/ExprRef\\\"}]},\\\"offset\\\":{\\\"anyOf\\\":[{\\\"description\\\":\\\"The offset in pixels by which to displace the legend from the data rectangle and axes.\\\\n\\\\n__Default value:__ `18`.\\\",\\\"type\\\":\\\"number\\\"},{\\\"$ref\\\":\\\"#/definitions/ExprRef\\\"}]},\\\"orient\\\":{\\\"$ref\\\":\\\"#/definitions/LegendOrient\\\",\\\"description\\\":\\\"The orientation of the legend, which determines how the legend is positioned within the scene. One of `\\\\\\\"left\\\\\\\"`, `\\\\\\\"right\\\\\\\"`, `\\\\\\\"top\\\\\\\"`, `\\\\\\\"bottom\\\\\\\"`, `\\\\\\\"top-left\\\\\\\"`, `\\\\\\\"top-right\\\\\\\"`, `\\\\\\\"bottom-left\\\\\\\"`, `\\\\\\\"bottom-right\\\\\\\"`, `\\\\\\\"none\\\\\\\"`.\\\\n\\\\n__Default value:__ `\\\\\\\"right\\\\\\\"`\\\"},\\\"padding\\\":{\\\"anyOf\\\":[{\\\"description\\\":\\\"The padding between the border and content of the legend group.\\\\n\\\\n__Default value:__ `0`.\\\",\\\"type\\\":\\\"number\\\"},{\\\"$ref\\\":\\\"#/definitions/ExprRef\\\"}]},\\\"rowPadding\\\":{\\\"anyOf\\\":[{\\\"description\\\":\\\"The vertical padding in pixels between symbol legend entries.\\\\n\\\\n__Default value:__ `2`.\\\",\\\"type\\\":\\\"number\\\"},{\\\"$ref\\\":\\\"#/definitions/ExprRef\\\"}]},\\\"strokeColor\\\":{\\\"anyOf\\\":[{\\\"anyOf\\\":[{\\\"type\\\":\\\"null\\\"},{\\\"$ref\\\":\\\"#/definitions/Color\\\"}],\\\"description\\\":\\\"Border stroke color for the full legend.\\\"},{\\\"$ref\\\":\\\"#/definitions/ExprRef\\\"}]},\\\"strokeDash\\\":{\\\"anyOf\\\":[{\\\"description\\\":\\\"Border stroke dash pattern for the full legend.\\\",\\\"items\\\":{\\\"type\\\":\\\"number\\\"},\\\"type\\\":\\\"array\\\"},{\\\"$ref\\\":\\\"#/definitions/ExprRef\\\"}]},\\\"strokeWidth\\\":{\\\"anyOf\\\":[{\\\"description\\\":\\\"Border stroke width for the full legend.\\\",\\\"type\\\":\\\"number\\\"},{\\\"$ref\\\":\\\"#/definitions/ExprRef\\\"}]},\\\"symbolBaseFillColor\\\":{\\\"anyOf\\\":[{\\\"anyOf\\\":[{\\\"type\\\":\\\"null\\\"},{\\\"$ref\\\":\\\"#/definitions/Color\\\"}],\\\"description\\\":\\\"Default fill color for legend symbols. Only applied if there is no `\\\\\\\"fill\\\\\\\"` scale color encoding for the legend.\\\\n\\\\n__Default value:__ `\\\\\\\"transparent\\\\\\\"`.\\\"},{\\\"$ref\\\":\\\"#/definitions/ExprRef\\\"}]},\\\"symbolBaseStrokeColor\\\":{\\\"anyOf\\\":[{\\\"anyOf\\\":[{\\\"type\\\":\\\"null\\\"},{\\\"$ref\\\":\\\"#/definitions/Color\\\"}],\\\"description\\\":\\\"Default stroke color for legend symbols. Only applied if there is no `\\\\\\\"fill\\\\\\\"` scale color encoding for the legend.\\\\n\\\\n__Default value:__ `\\\\\\\"gray\\\\\\\"`.\\\"},{\\\"$ref\\\":\\\"#/definitions/ExprRef\\\"}]},\\\"symbolDash\\\":{\\\"anyOf\\\":[{\\\"description\\\":\\\"An array of alternating [stroke, space] lengths for dashed symbol strokes.\\\",\\\"items\\\":{\\\"type\\\":\\\"number\\\"},\\\"type\\\":\\\"array\\\"},{\\\"$ref\\\":\\\"#/definitions/ExprRef\\\"}]},\\\"symbolDashOffset\\\":{\\\"anyOf\\\":[{\\\"description\\\":\\\"The pixel offset at which to start drawing with the symbol stroke dash array.\\\",\\\"type\\\":\\\"number\\\"},{\\\"$ref\\\":\\\"#/definitions/ExprRef\\\"}]},\\\"symbolDirection\\\":{\\\"anyOf\\\":[{\\\"$ref\\\":\\\"#/definitions/Orientation\\\",\\\"description\\\":\\\"The default direction (`\\\\\\\"horizontal\\\\\\\"` or `\\\\\\\"vertical\\\\\\\"`) for symbol legends.\\\\n\\\\n__Default value:__ `\\\\\\\"vertical\\\\\\\"`.\\\"},{\\\"$ref\\\":\\\"#/definitions/ExprRef\\\"}]},\\\"symbolFillColor\\\":{\\\"anyOf\\\":[{\\\"anyOf\\\":[{\\\"type\\\":\\\"null\\\"},{\\\"$ref\\\":\\\"#/definitions/Color\\\"}],\\\"description\\\":\\\"The color of the legend symbol,\\\"},{\\\"$ref\\\":\\\"#/definitions/ExprRef\\\"}]},\\\"symbolLimit\\\":{\\\"anyOf\\\":[{\\\"description\\\":\\\"The maximum number of allowed entries for a symbol legend. Additional entries will be dropped.\\\",\\\"type\\\":\\\"number\\\"},{\\\"$ref\\\":\\\"#/definitions/ExprRef\\\"}]},\\\"symbolOffset\\\":{\\\"anyOf\\\":[{\\\"description\\\":\\\"Horizontal pixel offset for legend symbols.\\\\n\\\\n__Default value:__ `0`.\\\",\\\"type\\\":\\\"number\\\"},{\\\"$ref\\\":\\\"#/definitions/ExprRef\\\"}]},\\\"symbolOpacity\\\":{\\\"anyOf\\\":[{\\\"description\\\":\\\"Opacity of the legend symbols.\\\",\\\"type\\\":\\\"number\\\"},{\\\"$ref\\\":\\\"#/definitions/ExprRef\\\"}]},\\\"symbolSize\\\":{\\\"anyOf\\\":[{\\\"description\\\":\\\"The size of the legend symbol, in pixels.\\\\n\\\\n__Default value:__ `100`.\\\",\\\"minimum\\\":0,\\\"type\\\":\\\"number\\\"},{\\\"$ref\\\":\\\"#/definitions/ExprRef\\\"}]},\\\"symbolStrokeColor\\\":{\\\"anyOf\\\":[{\\\"anyOf\\\":[{\\\"type\\\":\\\"null\\\"},{\\\"$ref\\\":\\\"#/definitions/Color\\\"}],\\\"description\\\":\\\"Stroke color for legend symbols.\\\"},{\\\"$ref\\\":\\\"#/definitions/ExprRef\\\"}]},\\\"symbolStrokeWidth\\\":{\\\"anyOf\\\":[{\\\"description\\\":\\\"The width of the symbol's stroke.\\\\n\\\\n__Default value:__ `1.5`.\\\",\\\"minimum\\\":0,\\\"type\\\":\\\"number\\\"},{\\\"$ref\\\":\\\"#/definitions/ExprRef\\\"}]},\\\"symbolType\\\":{\\\"anyOf\\\":[{\\\"$ref\\\":\\\"#/definitions/SymbolShape\\\",\\\"description\\\":\\\"The symbol shape. One of the plotting shapes `circle` (default), `square`, `cross`, `diamond`, `triangle-up`, `triangle-down`, `triangle-right`, or `triangle-left`, the line symbol `stroke`, or one of the centered directional shapes `arrow`, `wedge`, or `triangle`. Alternatively, a custom [SVG path string](https://developer.mozilla.org/en-US/docs/Web/SVG/Tutorial/Paths) can be provided. For correct sizing, custom shape paths should be defined within a square bounding box with coordinates ranging from -1 to 1 along both the x and y dimensions.\\\\n\\\\n__Default value:__ `\\\\\\\"circle\\\\\\\"`.\\\"},{\\\"$ref\\\":\\\"#/definitions/ExprRef\\\"}]},\\\"tickCount\\\":{\\\"anyOf\\\":[{\\\"$ref\\\":\\\"#/definitions/TickCount\\\",\\\"description\\\":\\\"The desired number of tick values for quantitative legends.\\\"},{\\\"$ref\\\":\\\"#/definitions/ExprRef\\\"}]},\\\"title\\\":{\\\"description\\\":\\\"Set to null to disable title for the axis, legend, or header.\\\",\\\"type\\\":\\\"null\\\"},\\\"titleAlign\\\":{\\\"anyOf\\\":[{\\\"$ref\\\":\\\"#/definitions/Align\\\",\\\"description\\\":\\\"Horizontal text alignment for legend titles.\\\\n\\\\n__Default value:__ `\\\\\\\"left\\\\\\\"`.\\\"},{\\\"$ref\\\":\\\"#/definitions/ExprRef\\\"}]},\\\"titleAnchor\\\":{\\\"anyOf\\\":[{\\\"$ref\\\":\\\"#/definitions/TitleAnchor\\\",\\\"description\\\":\\\"Text anchor position for placing legend titles.\\\"},{\\\"$ref\\\":\\\"#/definitions/ExprRef\\\"}]},\\\"titleBaseline\\\":{\\\"anyOf\\\":[{\\\"$ref\\\":\\\"#/definitions/TextBaseline\\\",\\\"description\\\":\\\"Vertical text baseline for legend titles.  One of `\\\\\\\"alphabetic\\\\\\\"` (default), `\\\\\\\"top\\\\\\\"`, `\\\\\\\"middle\\\\\\\"`, `\\\\\\\"bottom\\\\\\\"`, `\\\\\\\"line-top\\\\\\\"`, or `\\\\\\\"line-bottom\\\\\\\"`. The `\\\\\\\"line-top\\\\\\\"` and `\\\\\\\"line-bottom\\\\\\\"` values operate similarly to `\\\\\\\"top\\\\\\\"` and `\\\\\\\"bottom\\\\\\\"`, but are calculated relative to the *lineHeight* rather than *fontSize* alone.\\\\n\\\\n__Default value:__ `\\\\\\\"top\\\\\\\"`.\\\"},{\\\"$ref\\\":\\\"#/definitions/ExprRef\\\"}]},\\\"titleColor\\\":{\\\"anyOf\\\":[{\\\"anyOf\\\":[{\\\"type\\\":\\\"null\\\"},{\\\"$ref\\\":\\\"#/definitions/Color\\\"}],\\\"description\\\":\\\"The color of the legend title, can be in hex color code or regular color name.\\\"},{\\\"$ref\\\":\\\"#/definitions/ExprRef\\\"}]},\\\"titleFont\\\":{\\\"anyOf\\\":[{\\\"description\\\":\\\"The font of the legend title.\\\",\\\"type\\\":\\\"string\\\"},{\\\"$ref\\\":\\\"#/definitions/ExprRef\\\"}]},\\\"titleFontSize\\\":{\\\"anyOf\\\":[{\\\"description\\\":\\\"The font size of the legend title.\\\",\\\"type\\\":\\\"number\\\"},{\\\"$ref\\\":\\\"#/definitions/ExprRef\\\"}]},\\\"titleFontStyle\\\":{\\\"anyOf\\\":[{\\\"$ref\\\":\\\"#/definitions/FontStyle\\\",\\\"description\\\":\\\"The font style of the legend title.\\\"},{\\\"$ref\\\":\\\"#/definitions/ExprRef\\\"}]},\\\"titleFontWeight\\\":{\\\"anyOf\\\":[{\\\"$ref\\\":\\\"#/definitions/FontWeight\\\",\\\"description\\\":\\\"The font weight of the legend title. This can be either a string (e.g `\\\\\\\"bold\\\\\\\"`, `\\\\\\\"normal\\\\\\\"`) or a number (`100`, `200`, `300`, ..., `900` where `\\\\\\\"normal\\\\\\\"` = `400` and `\\\\\\\"bold\\\\\\\"` = `700`).\\\"},{\\\"$ref\\\":\\\"#/definitions/ExprRef\\\"}]},\\\"titleLimit\\\":{\\\"anyOf\\\":[{\\\"description\\\":\\\"Maximum allowed pixel width of legend titles.\\\\n\\\\n__Default value:__ `180`.\\\",\\\"minimum\\\":0,\\\"type\\\":\\\"number\\\"},{\\\"$ref\\\":\\\"#/definitions/ExprRef\\\"}]},\\\"titleLineHeight\\\":{\\\"anyOf\\\":[{\\\"description\\\":\\\"Line height in pixels for multi-line title text or title text with `\\\\\\\"line-top\\\\\\\"` or `\\\\\\\"line-bottom\\\\\\\"` baseline.\\\",\\\"type\\\":\\\"number\\\"},{\\\"$ref\\\":\\\"#/definitions/ExprRef\\\"}]},\\\"titleOpacity\\\":{\\\"anyOf\\\":[{\\\"description\\\":\\\"Opacity of the legend title.\\\",\\\"type\\\":\\\"number\\\"},{\\\"$ref\\\":\\\"#/definitions/ExprRef\\\"}]},\\\"titleOrient\\\":{\\\"anyOf\\\":[{\\\"$ref\\\":\\\"#/definitions/Orient\\\",\\\"description\\\":\\\"Orientation of the legend title.\\\"},{\\\"$ref\\\":\\\"#/definitions/ExprRef\\\"}]},\\\"titlePadding\\\":{\\\"anyOf\\\":[{\\\"description\\\":\\\"The padding, in pixels, between title and legend.\\\\n\\\\n__Default value:__ `5`.\\\",\\\"type\\\":\\\"number\\\"},{\\\"$ref\\\":\\\"#/definitions/ExprRef\\\"}]},\\\"unselectedOpacity\\\":{\\\"description\\\":\\\"The opacity of unselected legend entries.\\\\n\\\\n__Default value:__ 0.35.\\\",\\\"type\\\":\\\"number\\\"},\\\"zindex\\\":{\\\"anyOf\\\":[{\\\"description\\\":\\\"The integer z-index indicating the layering of the legend group relative to other axis, mark, and legend groups.\\\",\\\"minimum\\\":0,\\\"type\\\":\\\"number\\\"},{\\\"$ref\\\":\\\"#/definitions/ExprRef\\\"}]}},\\\"type\\\":\\\"object\\\"},\\\"LegendOrient\\\":{\\\"enum\\\":[\\\"none\\\",\\\"left\\\",\\\"right\\\",\\\"top\\\",\\\"bottom\\\",\\\"top-left\\\",\\\"top-right\\\",\\\"bottom-left\\\",\\\"bottom-right\\\"],\\\"type\\\":\\\"string\\\"},\\\"LegendResolveMap\\\":{\\\"additionalProperties\\\":false,\\\"properties\\\":{\\\"angle\\\":{\\\"$ref\\\":\\\"#/definitions/ResolveMode\\\"},\\\"color\\\":{\\\"$ref\\\":\\\"#/definitions/ResolveMode\\\"},\\\"fill\\\":{\\\"$ref\\\":\\\"#/definitions/ResolveMode\\\"},\\\"fillOpacity\\\":{\\\"$ref\\\":\\\"#/definitions/ResolveMode\\\"},\\\"opacity\\\":{\\\"$ref\\\":\\\"#/definitions/ResolveMode\\\"},\\\"shape\\\":{\\\"$ref\\\":\\\"#/definitions/ResolveMode\\\"},\\\"size\\\":{\\\"$ref\\\":\\\"#/definitions/ResolveMode\\\"},\\\"stroke\\\":{\\\"$ref\\\":\\\"#/definitions/ResolveMode\\\"},\\\"strokeDash\\\":{\\\"$ref\\\":\\\"#/definitions/ResolveMode\\\"},\\\"strokeOpacity\\\":{\\\"$ref\\\":\\\"#/definitions/ResolveMode\\\"},\\\"strokeWidth\\\":{\\\"$ref\\\":\\\"#/definitions/ResolveMode\\\"}},\\\"type\\\":\\\"object\\\"},\\\"LegendStreamBinding\\\":{\\\"additionalProperties\\\":false,\\\"properties\\\":{\\\"legend\\\":{\\\"anyOf\\\":[{\\\"type\\\":\\\"string\\\"},{\\\"$ref\\\":\\\"#/definitions/Stream\\\"}]}},\\\"required\\\":[\\\"legend\\\"],\\\"type\\\":\\\"object\\\"},\\\"LineConfig\\\":{\\\"additionalProperties\\\":false,\\\"properties\\\":{\\\"align\\\":{\\\"anyOf\\\":[{\\\"$ref\\\":\\\"#/definitions/Align\\\"},{\\\"$ref\\\":\\\"#/definitions/ExprRef\\\"}],\\\"description\\\":\\\"The horizontal alignment of the text or ranged marks (area, bar, image, rect, rule). One of `\\\\\\\"left\\\\\\\"`, `\\\\\\\"right\\\\\\\"`, `\\\\\\\"center\\\\\\\"`.\\\\n\\\\n__Note:__ Expression reference is *not* supported for range marks.\\\"},\\\"angle\\\":{\\\"anyOf\\\":[{\\\"description\\\":\\\"The rotation angle of the text, in degrees.\\\",\\\"maximum\\\":360,\\\"minimum\\\":0,\\\"type\\\":\\\"number\\\"},{\\\"$ref\\\":\\\"#/definitions/ExprRef\\\"}]},\\\"aria\\\":{\\\"anyOf\\\":[{\\\"description\\\":\\\"A boolean flag indicating if [ARIA attributes](https://developer.mozilla.org/en-US/docs/Web/Accessibility/ARIA) should be included (SVG output only). If `false`, the \\\\\\\"aria-hidden\\\\\\\" attribute will be set on the output SVG element, removing the mark item from the ARIA accessibility tree.\\\",\\\"type\\\":\\\"boolean\\\"},{\\\"$ref\\\":\\\"#/definitions/ExprRef\\\"}]},\\\"ariaRole\\\":{\\\"anyOf\\\":[{\\\"description\\\":\\\"Sets the type of user interface element of the mark item for [ARIA accessibility](https://developer.mozilla.org/en-US/docs/Web/Accessibility/ARIA) (SVG output only). If specified, this property determines the \\\\\\\"role\\\\\\\" attribute. Warning: this property is experimental and may be changed in the future.\\\",\\\"type\\\":\\\"string\\\"},{\\\"$ref\\\":\\\"#/definitions/ExprRef\\\"}]},\\\"ariaRoleDescription\\\":{\\\"anyOf\\\":[{\\\"description\\\":\\\"A human-readable, author-localized description for the role of the mark item for [ARIA accessibility](https://developer.mozilla.org/en-US/docs/Web/Accessibility/ARIA) (SVG output only). If specified, this property determines the \\\\\\\"aria-roledescription\\\\\\\" attribute. Warning: this property is experimental and may be changed in the future.\\\",\\\"type\\\":\\\"string\\\"},{\\\"$ref\\\":\\\"#/definitions/ExprRef\\\"}]},\\\"aspect\\\":{\\\"anyOf\\\":[{\\\"description\\\":\\\"Whether to keep aspect ratio of image marks.\\\",\\\"type\\\":\\\"boolean\\\"},{\\\"$ref\\\":\\\"#/definitions/ExprRef\\\"}]},\\\"baseline\\\":{\\\"anyOf\\\":[{\\\"$ref\\\":\\\"#/definitions/TextBaseline\\\"},{\\\"$ref\\\":\\\"#/definitions/ExprRef\\\"}],\\\"description\\\":\\\"For text marks, the vertical text baseline. One of `\\\\\\\"alphabetic\\\\\\\"` (default), `\\\\\\\"top\\\\\\\"`, `\\\\\\\"middle\\\\\\\"`, `\\\\\\\"bottom\\\\\\\"`, `\\\\\\\"line-top\\\\\\\"`, `\\\\\\\"line-bottom\\\\\\\"`, or an expression reference that provides one of the valid values. The `\\\\\\\"line-top\\\\\\\"` and `\\\\\\\"line-bottom\\\\\\\"` values operate similarly to `\\\\\\\"top\\\\\\\"` and `\\\\\\\"bottom\\\\\\\"`, but are calculated relative to the `lineHeight` rather than `fontSize` alone.\\\\n\\\\nFor range marks, the vertical alignment of the marks. One of `\\\\\\\"top\\\\\\\"`, `\\\\\\\"middle\\\\\\\"`, `\\\\\\\"bottom\\\\\\\"`.\\\\n\\\\n__Note:__ Expression reference is *not* supported for range marks.\\\"},\\\"blend\\\":{\\\"anyOf\\\":[{\\\"$ref\\\":\\\"#/definitions/Blend\\\",\\\"description\\\":\\\"The color blend mode for drawing an item on its current background. Any valid [CSS mix-blend-mode](https://developer.mozilla.org/en-US/docs/Web/CSS/mix-blend-mode) value can be used.\\\\n\\\\n__Default value: `\\\\\\\"source-over\\\\\\\"`\\\"},{\\\"$ref\\\":\\\"#/definitions/ExprRef\\\"}]},\\\"color\\\":{\\\"anyOf\\\":[{\\\"$ref\\\":\\\"#/definitions/Color\\\"},{\\\"$ref\\\":\\\"#/definitions/Gradient\\\"},{\\\"$ref\\\":\\\"#/definitions/ExprRef\\\"}],\\\"description\\\":\\\"Default color.\\\\n\\\\n__Default value:__ <span style=\\\\\\\"color: #4682b4;\\\\\\\">&#9632;</span> `\\\\\\\"#4682b4\\\\\\\"`\\\\n\\\\n__Note:__ - This property cannot be used in a [style config](https://vega.github.io/vega-lite/docs/mark.html#style-config). - The `fill` and `stroke` properties have higher precedence than `color` and will override `color`.\\\"},\\\"cornerRadius\\\":{\\\"anyOf\\\":[{\\\"description\\\":\\\"The radius in pixels of rounded rectangles or arcs' corners.\\\\n\\\\n__Default value:__ `0`\\\",\\\"type\\\":\\\"number\\\"},{\\\"$ref\\\":\\\"#/definitions/ExprRef\\\"}]},\\\"cornerRadiusBottomLeft\\\":{\\\"anyOf\\\":[{\\\"description\\\":\\\"The radius in pixels of rounded rectangles' bottom left corner.\\\\n\\\\n__Default value:__ `0`\\\",\\\"type\\\":\\\"number\\\"},{\\\"$ref\\\":\\\"#/definitions/ExprRef\\\"}]},\\\"cornerRadiusBottomRight\\\":{\\\"anyOf\\\":[{\\\"description\\\":\\\"The radius in pixels of rounded rectangles' bottom right corner.\\\\n\\\\n__Default value:__ `0`\\\",\\\"type\\\":\\\"number\\\"},{\\\"$ref\\\":\\\"#/definitions/ExprRef\\\"}]},\\\"cornerRadiusTopLeft\\\":{\\\"anyOf\\\":[{\\\"description\\\":\\\"The radius in pixels of rounded rectangles' top right corner.\\\\n\\\\n__Default value:__ `0`\\\",\\\"type\\\":\\\"number\\\"},{\\\"$ref\\\":\\\"#/definitions/ExprRef\\\"}]},\\\"cornerRadiusTopRight\\\":{\\\"anyOf\\\":[{\\\"description\\\":\\\"The radius in pixels of rounded rectangles' top left corner.\\\\n\\\\n__Default value:__ `0`\\\",\\\"type\\\":\\\"number\\\"},{\\\"$ref\\\":\\\"#/definitions/ExprRef\\\"}]},\\\"cursor\\\":{\\\"anyOf\\\":[{\\\"$ref\\\":\\\"#/definitions/Cursor\\\",\\\"description\\\":\\\"The mouse cursor used over the mark. Any valid [CSS cursor type](https://developer.mozilla.org/en-US/docs/Web/CSS/cursor#Values) can be used.\\\"},{\\\"$ref\\\":\\\"#/definitions/ExprRef\\\"}]},\\\"description\\\":{\\\"anyOf\\\":[{\\\"description\\\":\\\"A text description of the mark item for [ARIA accessibility](https://developer.mozilla.org/en-US/docs/Web/Accessibility/ARIA) (SVG output only). If specified, this property determines the [\\\\\\\"aria-label\\\\\\\" attribute](https://developer.mozilla.org/en-US/docs/Web/Accessibility/ARIA/ARIA_Techniques/Using_the_aria-label_attribute).\\\",\\\"type\\\":\\\"string\\\"},{\\\"$ref\\\":\\\"#/definitions/ExprRef\\\"}]},\\\"dir\\\":{\\\"anyOf\\\":[{\\\"$ref\\\":\\\"#/definitions/TextDirection\\\",\\\"description\\\":\\\"The direction of the text. One of `\\\\\\\"ltr\\\\\\\"` (left-to-right) or `\\\\\\\"rtl\\\\\\\"` (right-to-left). This property determines on which side is truncated in response to the limit parameter.\\\\n\\\\n__Default value:__ `\\\\\\\"ltr\\\\\\\"`\\\"},{\\\"$ref\\\":\\\"#/definitions/ExprRef\\\"}]},\\\"dx\\\":{\\\"anyOf\\\":[{\\\"description\\\":\\\"The horizontal offset, in pixels, between the text label and its anchor point. The offset is applied after rotation by the _angle_ property.\\\",\\\"type\\\":\\\"number\\\"},{\\\"$ref\\\":\\\"#/definitions/ExprRef\\\"}]},\\\"dy\\\":{\\\"anyOf\\\":[{\\\"description\\\":\\\"The vertical offset, in pixels, between the text label and its anchor point. The offset is applied after rotation by the _angle_ property.\\\",\\\"type\\\":\\\"number\\\"},{\\\"$ref\\\":\\\"#/definitions/ExprRef\\\"}]},\\\"ellipsis\\\":{\\\"anyOf\\\":[{\\\"description\\\":\\\"The ellipsis string for text truncated in response to the limit parameter.\\\\n\\\\n__Default value:__ `\\\\\\\"…\\\\\\\"`\\\",\\\"type\\\":\\\"string\\\"},{\\\"$ref\\\":\\\"#/definitions/ExprRef\\\"}]},\\\"endAngle\\\":{\\\"anyOf\\\":[{\\\"description\\\":\\\"The end angle in radians for arc marks. A value of `0` indicates up (north), increasing values proceed clockwise.\\\",\\\"type\\\":\\\"number\\\"},{\\\"$ref\\\":\\\"#/definitions/ExprRef\\\"}]},\\\"fill\\\":{\\\"anyOf\\\":[{\\\"$ref\\\":\\\"#/definitions/Color\\\"},{\\\"$ref\\\":\\\"#/definitions/Gradient\\\"},{\\\"type\\\":\\\"null\\\"},{\\\"$ref\\\":\\\"#/definitions/ExprRef\\\"}],\\\"description\\\":\\\"Default fill color. This property has higher precedence than `config.color`. Set to `null` to remove fill.\\\\n\\\\n__Default value:__ (None)\\\"},\\\"fillOpacity\\\":{\\\"anyOf\\\":[{\\\"description\\\":\\\"The fill opacity (value between [0,1]).\\\\n\\\\n__Default value:__ `1`\\\",\\\"maximum\\\":1,\\\"minimum\\\":0,\\\"type\\\":\\\"number\\\"},{\\\"$ref\\\":\\\"#/definitions/ExprRef\\\"}]},\\\"filled\\\":{\\\"description\\\":\\\"Whether the mark's color should be used as fill color instead of stroke color.\\\\n\\\\n__Default value:__ `false` for all `point`, `line`, and `rule` marks as well as `geoshape` marks for [`graticule`](https://vega.github.io/vega-lite/docs/data.html#graticule) data sources; otherwise, `true`.\\\\n\\\\n__Note:__ This property cannot be used in a [style config](https://vega.github.io/vega-lite/docs/mark.html#style-config).\\\",\\\"type\\\":\\\"boolean\\\"},\\\"font\\\":{\\\"anyOf\\\":[{\\\"description\\\":\\\"The typeface to set the text in (e.g., `\\\\\\\"Helvetica Neue\\\\\\\"`).\\\",\\\"type\\\":\\\"string\\\"},{\\\"$ref\\\":\\\"#/definitions/ExprRef\\\"}]},\\\"fontSize\\\":{\\\"anyOf\\\":[{\\\"description\\\":\\\"The font size, in pixels.\\\\n\\\\n__Default value:__ `11`\\\",\\\"minimum\\\":0,\\\"type\\\":\\\"number\\\"},{\\\"$ref\\\":\\\"#/definitions/ExprRef\\\"}]},\\\"fontStyle\\\":{\\\"anyOf\\\":[{\\\"$ref\\\":\\\"#/definitions/FontStyle\\\",\\\"description\\\":\\\"The font style (e.g., `\\\\\\\"italic\\\\\\\"`).\\\"},{\\\"$ref\\\":\\\"#/definitions/ExprRef\\\"}]},\\\"fontWeight\\\":{\\\"anyOf\\\":[{\\\"$ref\\\":\\\"#/definitions/FontWeight\\\",\\\"description\\\":\\\"The font weight. This can be either a string (e.g `\\\\\\\"bold\\\\\\\"`, `\\\\\\\"normal\\\\\\\"`) or a number (`100`, `200`, `300`, ..., `900` where `\\\\\\\"normal\\\\\\\"` = `400` and `\\\\\\\"bold\\\\\\\"` = `700`).\\\"},{\\\"$ref\\\":\\\"#/definitions/ExprRef\\\"}]},\\\"height\\\":{\\\"anyOf\\\":[{\\\"description\\\":\\\"Height of the marks.\\\",\\\"type\\\":\\\"number\\\"},{\\\"$ref\\\":\\\"#/definitions/ExprRef\\\"}]},\\\"href\\\":{\\\"anyOf\\\":[{\\\"$ref\\\":\\\"#/definitions/URI\\\",\\\"description\\\":\\\"A URL to load upon mouse click. If defined, the mark acts as a hyperlink.\\\"},{\\\"$ref\\\":\\\"#/definitions/ExprRef\\\"}]},\\\"innerRadius\\\":{\\\"anyOf\\\":[{\\\"type\\\":\\\"number\\\"},{\\\"$ref\\\":\\\"#/definitions/ExprRef\\\"}],\\\"description\\\":\\\"The inner radius in pixels of arc marks. `innerRadius` is an alias for `radius2`.\\\"},\\\"interpolate\\\":{\\\"anyOf\\\":[{\\\"$ref\\\":\\\"#/definitions/Interpolate\\\",\\\"description\\\":\\\"The line interpolation method to use for line and area marks. One of the following: - `\\\\\\\"linear\\\\\\\"`: piecewise linear segments, as in a polyline. - `\\\\\\\"linear-closed\\\\\\\"`: close the linear segments to form a polygon. - `\\\\\\\"step\\\\\\\"`: alternate between horizontal and vertical segments, as in a step function. - `\\\\\\\"step-before\\\\\\\"`: alternate between vertical and horizontal segments, as in a step function. - `\\\\\\\"step-after\\\\\\\"`: alternate between horizontal and vertical segments, as in a step function. - `\\\\\\\"basis\\\\\\\"`: a B-spline, with control point duplication on the ends. - `\\\\\\\"basis-open\\\\\\\"`: an open B-spline; may not intersect the start or end. - `\\\\\\\"basis-closed\\\\\\\"`: a closed B-spline, as in a loop. - `\\\\\\\"cardinal\\\\\\\"`: a Cardinal spline, with control point duplication on the ends. - `\\\\\\\"cardinal-open\\\\\\\"`: an open Cardinal spline; may not intersect the start or end, but will intersect other control points. - `\\\\\\\"cardinal-closed\\\\\\\"`: a closed Cardinal spline, as in a loop. - `\\\\\\\"bundle\\\\\\\"`: equivalent to basis, except the tension parameter is used to straighten the spline. - `\\\\\\\"monotone\\\\\\\"`: cubic interpolation that preserves monotonicity in y.\\\"},{\\\"$ref\\\":\\\"#/definitions/ExprRef\\\"}]},\\\"invalid\\\":{\\\"description\\\":\\\"Defines how Vega-Lite should handle marks for invalid values (`null` and `NaN`). - If set to `\\\\\\\"filter\\\\\\\"` (default), all data items with null values will be skipped (for line, trail, and area marks) or filtered (for other marks). - If `null`, all data items are included. In this case, invalid values will be interpreted as zeroes.\\\",\\\"enum\\\":[\\\"filter\\\",null],\\\"type\\\":[\\\"string\\\",\\\"null\\\"]},\\\"limit\\\":{\\\"anyOf\\\":[{\\\"description\\\":\\\"The maximum length of the text mark in pixels. The text value will be automatically truncated if the rendered size exceeds the limit.\\\\n\\\\n__Default value:__ `0` -- indicating no limit\\\",\\\"type\\\":\\\"number\\\"},{\\\"$ref\\\":\\\"#/definitions/ExprRef\\\"}]},\\\"lineBreak\\\":{\\\"anyOf\\\":[{\\\"description\\\":\\\"A delimiter, such as a newline character, upon which to break text strings into multiple lines. This property is ignored if the text is array-valued.\\\",\\\"type\\\":\\\"string\\\"},{\\\"$ref\\\":\\\"#/definitions/ExprRef\\\"}]},\\\"lineHeight\\\":{\\\"anyOf\\\":[{\\\"description\\\":\\\"The line height in pixels (the spacing between subsequent lines of text) for multi-line text marks.\\\",\\\"type\\\":\\\"number\\\"},{\\\"$ref\\\":\\\"#/definitions/ExprRef\\\"}]},\\\"opacity\\\":{\\\"anyOf\\\":[{\\\"type\\\":\\\"number\\\"},{\\\"$ref\\\":\\\"#/definitions/ExprRef\\\"}],\\\"description\\\":\\\"The overall opacity (value between [0,1]).\\\\n\\\\n__Default value:__ `0.7` for non-aggregate plots with `point`, `tick`, `circle`, or `square` marks or layered `bar` charts and `1` otherwise.\\\",\\\"maximum\\\":1,\\\"minimum\\\":0},\\\"order\\\":{\\\"description\\\":\\\"For line and trail marks, this `order` property can be set to `null` or `false` to make the lines use the original order in the data sources.\\\",\\\"type\\\":[\\\"null\\\",\\\"boolean\\\"]},\\\"orient\\\":{\\\"$ref\\\":\\\"#/definitions/Orientation\\\",\\\"description\\\":\\\"The orientation of a non-stacked bar, tick, area, and line charts. The value is either horizontal (default) or vertical. - For bar, rule and tick, this determines whether the size of the bar and tick should be applied to x or y dimension. - For area, this property determines the orient property of the Vega output. - For line and trail marks, this property determines the sort order of the points in the line if `config.sortLineBy` is not specified. For stacked charts, this is always determined by the orientation of the stack; therefore explicitly specified value will be ignored.\\\"},\\\"outerRadius\\\":{\\\"anyOf\\\":[{\\\"type\\\":\\\"number\\\"},{\\\"$ref\\\":\\\"#/definitions/ExprRef\\\"}],\\\"description\\\":\\\"The outer radius in pixels of arc marks. `outerRadius` is an alias for `radius`.\\\"},\\\"padAngle\\\":{\\\"anyOf\\\":[{\\\"description\\\":\\\"The angular padding applied to sides of the arc, in radians.\\\",\\\"type\\\":\\\"number\\\"},{\\\"$ref\\\":\\\"#/definitions/ExprRef\\\"}]},\\\"point\\\":{\\\"anyOf\\\":[{\\\"type\\\":\\\"boolean\\\"},{\\\"$ref\\\":\\\"#/definitions/OverlayMarkDef\\\"},{\\\"const\\\":\\\"transparent\\\",\\\"type\\\":\\\"string\\\"}],\\\"description\\\":\\\"A flag for overlaying points on top of line or area marks, or an object defining the properties of the overlayed points.\\\\n\\\\n- If this property is `\\\\\\\"transparent\\\\\\\"`, transparent points will be used (for enhancing tooltips and selections).\\\\n\\\\n- If this property is an empty object (`{}`) or `true`, filled points with default properties will be used.\\\\n\\\\n- If this property is `false`, no points would be automatically added to line or area marks.\\\\n\\\\n__Default value:__ `false`.\\\"},\\\"radius\\\":{\\\"anyOf\\\":[{\\\"type\\\":\\\"number\\\"},{\\\"$ref\\\":\\\"#/definitions/ExprRef\\\"}],\\\"description\\\":\\\"For arc mark, the primary (outer) radius in pixels.\\\\n\\\\nFor text marks, polar coordinate radial offset, in pixels, of the text from the origin determined by the `x` and `y` properties.\\\"},\\\"radius2\\\":{\\\"anyOf\\\":[{\\\"type\\\":\\\"number\\\"},{\\\"$ref\\\":\\\"#/definitions/ExprRef\\\"}],\\\"description\\\":\\\"The secondary (inner) radius in pixels of arc marks.\\\"},\\\"shape\\\":{\\\"anyOf\\\":[{\\\"anyOf\\\":[{\\\"$ref\\\":\\\"#/definitions/SymbolShape\\\"},{\\\"type\\\":\\\"string\\\"}],\\\"description\\\":\\\"Shape of the point marks. Supported values include: - plotting shapes: `\\\\\\\"circle\\\\\\\"`, `\\\\\\\"square\\\\\\\"`, `\\\\\\\"cross\\\\\\\"`, `\\\\\\\"diamond\\\\\\\"`, `\\\\\\\"triangle-up\\\\\\\"`, `\\\\\\\"triangle-down\\\\\\\"`, `\\\\\\\"triangle-right\\\\\\\"`, or `\\\\\\\"triangle-left\\\\\\\"`. - the line symbol `\\\\\\\"stroke\\\\\\\"` - centered directional shapes `\\\\\\\"arrow\\\\\\\"`, `\\\\\\\"wedge\\\\\\\"`, or `\\\\\\\"triangle\\\\\\\"` - a custom [SVG path string](https://developer.mozilla.org/en-US/docs/Web/SVG/Tutorial/Paths) (For correct sizing, custom shape paths should be defined within a square bounding box with coordinates ranging from -1 to 1 along both the x and y dimensions.)\\\\n\\\\n__Default value:__ `\\\\\\\"circle\\\\\\\"`\\\"},{\\\"$ref\\\":\\\"#/definitions/ExprRef\\\"}]},\\\"size\\\":{\\\"anyOf\\\":[{\\\"type\\\":\\\"number\\\"},{\\\"$ref\\\":\\\"#/definitions/ExprRef\\\"}],\\\"description\\\":\\\"Default size for marks. - For `point`/`circle`/`square`, this represents the pixel area of the marks. Note that this value sets the area of the symbol; the side lengths will increase with the square root of this value. - For `bar`, this represents the band size of the bar, in pixels. - For `text`, this represents the font size, in pixels.\\\\n\\\\n__Default value:__ - `30` for point, circle, square marks; width/height's `step` - `2` for bar marks with discrete dimensions; - `5` for bar marks with continuous dimensions; - `11` for text marks.\\\",\\\"minimum\\\":0},\\\"smooth\\\":{\\\"anyOf\\\":[{\\\"description\\\":\\\"A boolean flag (default true) indicating if the image should be smoothed when resized. If false, individual pixels should be scaled directly rather than interpolated with smoothing. For SVG rendering, this option may not work in some browsers due to lack of standardization.\\\",\\\"type\\\":\\\"boolean\\\"},{\\\"$ref\\\":\\\"#/definitions/ExprRef\\\"}]},\\\"startAngle\\\":{\\\"anyOf\\\":[{\\\"description\\\":\\\"The start angle in radians for arc marks. A value of `0` indicates up (north), increasing values proceed clockwise.\\\",\\\"type\\\":\\\"number\\\"},{\\\"$ref\\\":\\\"#/definitions/ExprRef\\\"}]},\\\"stroke\\\":{\\\"anyOf\\\":[{\\\"$ref\\\":\\\"#/definitions/Color\\\"},{\\\"$ref\\\":\\\"#/definitions/Gradient\\\"},{\\\"type\\\":\\\"null\\\"},{\\\"$ref\\\":\\\"#/definitions/ExprRef\\\"}],\\\"description\\\":\\\"Default stroke color. This property has higher precedence than `config.color`. Set to `null` to remove stroke.\\\\n\\\\n__Default value:__ (None)\\\"},\\\"strokeCap\\\":{\\\"anyOf\\\":[{\\\"$ref\\\":\\\"#/definitions/StrokeCap\\\",\\\"description\\\":\\\"The stroke cap for line ending style. One of `\\\\\\\"butt\\\\\\\"`, `\\\\\\\"round\\\\\\\"`, or `\\\\\\\"square\\\\\\\"`.\\\\n\\\\n__Default value:__ `\\\\\\\"butt\\\\\\\"`\\\"},{\\\"$ref\\\":\\\"#/definitions/ExprRef\\\"}]},\\\"strokeDash\\\":{\\\"anyOf\\\":[{\\\"description\\\":\\\"An array of alternating stroke, space lengths for creating dashed or dotted lines.\\\",\\\"items\\\":{\\\"type\\\":\\\"number\\\"},\\\"type\\\":\\\"array\\\"},{\\\"$ref\\\":\\\"#/definitions/ExprRef\\\"}]},\\\"strokeDashOffset\\\":{\\\"anyOf\\\":[{\\\"description\\\":\\\"The offset (in pixels) into which to begin drawing with the stroke dash array.\\\",\\\"type\\\":\\\"number\\\"},{\\\"$ref\\\":\\\"#/definitions/ExprRef\\\"}]},\\\"strokeJoin\\\":{\\\"anyOf\\\":[{\\\"$ref\\\":\\\"#/definitions/StrokeJoin\\\",\\\"description\\\":\\\"The stroke line join method. One of `\\\\\\\"miter\\\\\\\"`, `\\\\\\\"round\\\\\\\"` or `\\\\\\\"bevel\\\\\\\"`.\\\\n\\\\n__Default value:__ `\\\\\\\"miter\\\\\\\"`\\\"},{\\\"$ref\\\":\\\"#/definitions/ExprRef\\\"}]},\\\"strokeMiterLimit\\\":{\\\"anyOf\\\":[{\\\"description\\\":\\\"The miter limit at which to bevel a line join.\\\",\\\"type\\\":\\\"number\\\"},{\\\"$ref\\\":\\\"#/definitions/ExprRef\\\"}]},\\\"strokeOffset\\\":{\\\"anyOf\\\":[{\\\"description\\\":\\\"The offset in pixels at which to draw the group stroke and fill. If unspecified, the default behavior is to dynamically offset stroked groups such that 1 pixel stroke widths align with the pixel grid.\\\",\\\"type\\\":\\\"number\\\"},{\\\"$ref\\\":\\\"#/definitions/ExprRef\\\"}]},\\\"strokeOpacity\\\":{\\\"anyOf\\\":[{\\\"description\\\":\\\"The stroke opacity (value between [0,1]).\\\\n\\\\n__Default value:__ `1`\\\",\\\"maximum\\\":1,\\\"minimum\\\":0,\\\"type\\\":\\\"number\\\"},{\\\"$ref\\\":\\\"#/definitions/ExprRef\\\"}]},\\\"strokeWidth\\\":{\\\"anyOf\\\":[{\\\"description\\\":\\\"The stroke width, in pixels.\\\",\\\"minimum\\\":0,\\\"type\\\":\\\"number\\\"},{\\\"$ref\\\":\\\"#/definitions/ExprRef\\\"}]},\\\"tension\\\":{\\\"anyOf\\\":[{\\\"description\\\":\\\"Depending on the interpolation type, sets the tension parameter (for line and area marks).\\\",\\\"type\\\":\\\"number\\\"},{\\\"$ref\\\":\\\"#/definitions/ExprRef\\\"}]},\\\"text\\\":{\\\"anyOf\\\":[{\\\"$ref\\\":\\\"#/definitions/Text\\\",\\\"description\\\":\\\"Placeholder text if the `text` channel is not specified\\\"},{\\\"$ref\\\":\\\"#/definitions/ExprRef\\\"}]},\\\"theta\\\":{\\\"anyOf\\\":[{\\\"type\\\":\\\"number\\\"},{\\\"$ref\\\":\\\"#/definitions/ExprRef\\\"}],\\\"description\\\":\\\"- For arc marks, the arc length in radians if theta2 is not specified, otherwise the start arc angle. (A value of 0 indicates up or “north”, increasing values proceed clockwise.)\\\\n\\\\n- For text marks, polar coordinate angle in radians.\\\",\\\"maximum\\\":360,\\\"minimum\\\":0},\\\"theta2\\\":{\\\"anyOf\\\":[{\\\"type\\\":\\\"number\\\"},{\\\"$ref\\\":\\\"#/definitions/ExprRef\\\"}],\\\"description\\\":\\\"The end angle of arc marks in radians. A value of 0 indicates up or “north”, increasing values proceed clockwise.\\\"},\\\"timeUnitBand\\\":{\\\"description\\\":\\\"Default relative band size for a time unit. If set to `1`, the bandwidth of the marks will be equal to the time unit band step. If set to `0.5`, bandwidth of the marks will be half of the time unit band step.\\\",\\\"type\\\":\\\"number\\\"},\\\"timeUnitBandPosition\\\":{\\\"description\\\":\\\"Default relative band position for a time unit. If set to `0`, the marks will be positioned at the beginning of the time unit band step. If set to `0.5`, the marks will be positioned in the middle of the time unit band step.\\\",\\\"type\\\":\\\"number\\\"},\\\"tooltip\\\":{\\\"anyOf\\\":[{\\\"type\\\":\\\"number\\\"},{\\\"type\\\":\\\"string\\\"},{\\\"type\\\":\\\"boolean\\\"},{\\\"$ref\\\":\\\"#/definitions/TooltipContent\\\"},{\\\"$ref\\\":\\\"#/definitions/ExprRef\\\"},{\\\"type\\\":\\\"null\\\"}],\\\"description\\\":\\\"The tooltip text string to show upon mouse hover or an object defining which fields should the tooltip be derived from.\\\\n\\\\n- If `tooltip` is `true` or `{\\\\\\\"content\\\\\\\": \\\\\\\"encoding\\\\\\\"}`, then all fields from `encoding` will be used. - If `tooltip` is `{\\\\\\\"content\\\\\\\": \\\\\\\"data\\\\\\\"}`, then all fields that appear in the highlighted data point will be used. - If set to `null` or `false`, then no tooltip will be used.\\\\n\\\\nSee the [`tooltip`](https://vega.github.io/vega-lite/docs/tooltip.html) documentation for a detailed discussion about tooltip  in Vega-Lite.\\\\n\\\\n__Default value:__ `null`\\\"},\\\"url\\\":{\\\"anyOf\\\":[{\\\"$ref\\\":\\\"#/definitions/URI\\\",\\\"description\\\":\\\"The URL of the image file for image marks.\\\"},{\\\"$ref\\\":\\\"#/definitions/ExprRef\\\"}]},\\\"width\\\":{\\\"anyOf\\\":[{\\\"description\\\":\\\"Width of the marks.\\\",\\\"type\\\":\\\"number\\\"},{\\\"$ref\\\":\\\"#/definitions/ExprRef\\\"}]},\\\"x\\\":{\\\"anyOf\\\":[{\\\"type\\\":\\\"number\\\"},{\\\"const\\\":\\\"width\\\",\\\"type\\\":\\\"string\\\"},{\\\"$ref\\\":\\\"#/definitions/ExprRef\\\"}],\\\"description\\\":\\\"X coordinates of the marks, or width of horizontal `\\\\\\\"bar\\\\\\\"` and `\\\\\\\"area\\\\\\\"` without specified `x2` or `width`.\\\\n\\\\nThe `value` of this channel can be a number or a string `\\\\\\\"width\\\\\\\"` for the width of the plot.\\\"},\\\"x2\\\":{\\\"anyOf\\\":[{\\\"type\\\":\\\"number\\\"},{\\\"const\\\":\\\"width\\\",\\\"type\\\":\\\"string\\\"},{\\\"$ref\\\":\\\"#/definitions/ExprRef\\\"}],\\\"description\\\":\\\"X2 coordinates for ranged `\\\\\\\"area\\\\\\\"`, `\\\\\\\"bar\\\\\\\"`, `\\\\\\\"rect\\\\\\\"`, and  `\\\\\\\"rule\\\\\\\"`.\\\\n\\\\nThe `value` of this channel can be a number or a string `\\\\\\\"width\\\\\\\"` for the width of the plot.\\\"},\\\"y\\\":{\\\"anyOf\\\":[{\\\"type\\\":\\\"number\\\"},{\\\"const\\\":\\\"height\\\",\\\"type\\\":\\\"string\\\"},{\\\"$ref\\\":\\\"#/definitions/ExprRef\\\"}],\\\"description\\\":\\\"Y coordinates of the marks, or height of vertical `\\\\\\\"bar\\\\\\\"` and `\\\\\\\"area\\\\\\\"` without specified `y2` or `height`.\\\\n\\\\nThe `value` of this channel can be a number or a string `\\\\\\\"height\\\\\\\"` for the height of the plot.\\\"},\\\"y2\\\":{\\\"anyOf\\\":[{\\\"type\\\":\\\"number\\\"},{\\\"const\\\":\\\"height\\\",\\\"type\\\":\\\"string\\\"},{\\\"$ref\\\":\\\"#/definitions/ExprRef\\\"}],\\\"description\\\":\\\"Y2 coordinates for ranged `\\\\\\\"area\\\\\\\"`, `\\\\\\\"bar\\\\\\\"`, `\\\\\\\"rect\\\\\\\"`, and  `\\\\\\\"rule\\\\\\\"`.\\\\n\\\\nThe `value` of this channel can be a number or a string `\\\\\\\"height\\\\\\\"` for the height of the plot.\\\"}},\\\"type\\\":\\\"object\\\"},\\\"LinearGradient\\\":{\\\"additionalProperties\\\":false,\\\"properties\\\":{\\\"gradient\\\":{\\\"const\\\":\\\"linear\\\",\\\"description\\\":\\\"The type of gradient. Use `\\\\\\\"linear\\\\\\\"` for a linear gradient.\\\",\\\"type\\\":\\\"string\\\"},\\\"id\\\":{\\\"type\\\":\\\"string\\\"},\\\"stops\\\":{\\\"description\\\":\\\"An array of gradient stops defining the gradient color sequence.\\\",\\\"items\\\":{\\\"$ref\\\":\\\"#/definitions/GradientStop\\\"},\\\"type\\\":\\\"array\\\"},\\\"x1\\\":{\\\"description\\\":\\\"The starting x-coordinate, in normalized [0, 1] coordinates, of the linear gradient.\\\\n\\\\n__Default value:__ `0`\\\",\\\"type\\\":\\\"number\\\"},\\\"x2\\\":{\\\"description\\\":\\\"The ending x-coordinate, in normalized [0, 1] coordinates, of the linear gradient.\\\\n\\\\n__Default value:__ `1`\\\",\\\"type\\\":\\\"number\\\"},\\\"y1\\\":{\\\"description\\\":\\\"The starting y-coordinate, in normalized [0, 1] coordinates, of the linear gradient.\\\\n\\\\n__Default value:__ `0`\\\",\\\"type\\\":\\\"number\\\"},\\\"y2\\\":{\\\"description\\\":\\\"The ending y-coordinate, in normalized [0, 1] coordinates, of the linear gradient.\\\\n\\\\n__Default value:__ `0`\\\",\\\"type\\\":\\\"number\\\"}},\\\"required\\\":[\\\"gradient\\\",\\\"stops\\\"],\\\"type\\\":\\\"object\\\"},\\\"LocalMultiTimeUnit\\\":{\\\"enum\\\":[\\\"yearquarter\\\",\\\"yearquartermonth\\\",\\\"yearmonth\\\",\\\"yearmonthdate\\\",\\\"yearmonthdatehours\\\",\\\"yearmonthdatehoursminutes\\\",\\\"yearmonthdatehoursminutesseconds\\\",\\\"yearweek\\\",\\\"yearweekday\\\",\\\"yearweekdayhours\\\",\\\"yearweekdayhoursminutes\\\",\\\"yearweekdayhoursminutesseconds\\\",\\\"yeardayofyear\\\",\\\"quartermonth\\\",\\\"monthdate\\\",\\\"monthdatehours\\\",\\\"monthdatehoursminutes\\\",\\\"monthdatehoursminutesseconds\\\",\\\"weekday\\\",\\\"weeksdayhours\\\",\\\"weekdayhoursminutes\\\",\\\"weekdayhoursminutesseconds\\\",\\\"dayhours\\\",\\\"dayhoursminutes\\\",\\\"dayhoursminutesseconds\\\",\\\"hoursminutes\\\",\\\"hoursminutesseconds\\\",\\\"minutesseconds\\\",\\\"secondsmilliseconds\\\"],\\\"type\\\":\\\"string\\\"},\\\"LocalSingleTimeUnit\\\":{\\\"enum\\\":[\\\"year\\\",\\\"quarter\\\",\\\"month\\\",\\\"week\\\",\\\"day\\\",\\\"dayofyear\\\",\\\"date\\\",\\\"hours\\\",\\\"minutes\\\",\\\"seconds\\\",\\\"milliseconds\\\"],\\\"type\\\":\\\"string\\\"},\\\"LoessTransform\\\":{\\\"additionalProperties\\\":false,\\\"properties\\\":{\\\"as\\\":{\\\"description\\\":\\\"The output field names for the smoothed points generated by the loess transform.\\\\n\\\\n__Default value:__ The field names of the input x and y values.\\\",\\\"items\\\":[{\\\"$ref\\\":\\\"#/definitions/FieldName\\\"},{\\\"$ref\\\":\\\"#/definitions/FieldName\\\"}],\\\"maxItems\\\":2,\\\"minItems\\\":2,\\\"type\\\":\\\"array\\\"},\\\"bandwidth\\\":{\\\"description\\\":\\\"A bandwidth parameter in the range `[0, 1]` that determines the amount of smoothing.\\\\n\\\\n__Default value:__ `0.3`\\\",\\\"type\\\":\\\"number\\\"},\\\"groupby\\\":{\\\"description\\\":\\\"The data fields to group by. If not specified, a single group containing all data objects will be used.\\\",\\\"items\\\":{\\\"$ref\\\":\\\"#/definitions/FieldName\\\"},\\\"type\\\":\\\"array\\\"},\\\"loess\\\":{\\\"$ref\\\":\\\"#/definitions/FieldName\\\",\\\"description\\\":\\\"The data field of the dependent variable to smooth.\\\"},\\\"on\\\":{\\\"$ref\\\":\\\"#/definitions/FieldName\\\",\\\"description\\\":\\\"The data field of the independent variable to use a predictor.\\\"}},\\\"required\\\":[\\\"loess\\\",\\\"on\\\"],\\\"type\\\":\\\"object\\\"},\\\"LogicalAnd<Predicate>\\\":{\\\"additionalProperties\\\":false,\\\"properties\\\":{\\\"and\\\":{\\\"items\\\":{\\\"$ref\\\":\\\"#/definitions/PredicateComposition\\\"},\\\"type\\\":\\\"array\\\"}},\\\"required\\\":[\\\"and\\\"],\\\"type\\\":\\\"object\\\"},\\\"SelectionAnd\\\":{\\\"additionalProperties\\\":false,\\\"properties\\\":{\\\"and\\\":{\\\"items\\\":{\\\"$ref\\\":\\\"#/definitions/SelectionComposition\\\"},\\\"type\\\":\\\"array\\\"}},\\\"required\\\":[\\\"and\\\"],\\\"type\\\":\\\"object\\\"},\\\"PredicateComposition\\\":{\\\"anyOf\\\":[{\\\"$ref\\\":\\\"#/definitions/LogicalNot<Predicate>\\\"},{\\\"$ref\\\":\\\"#/definitions/LogicalAnd<Predicate>\\\"},{\\\"$ref\\\":\\\"#/definitions/LogicalOr<Predicate>\\\"},{\\\"$ref\\\":\\\"#/definitions/Predicate\\\"}]},\\\"SelectionComposition\\\":{\\\"anyOf\\\":[{\\\"$ref\\\":\\\"#/definitions/SelectionNot\\\"},{\\\"$ref\\\":\\\"#/definitions/SelectionAnd\\\"},{\\\"$ref\\\":\\\"#/definitions/SelectionOr\\\"},{\\\"type\\\":\\\"string\\\"}]},\\\"LogicalNot<Predicate>\\\":{\\\"additionalProperties\\\":false,\\\"properties\\\":{\\\"not\\\":{\\\"$ref\\\":\\\"#/definitions/PredicateComposition\\\"}},\\\"required\\\":[\\\"not\\\"],\\\"type\\\":\\\"object\\\"},\\\"SelectionNot\\\":{\\\"additionalProperties\\\":false,\\\"properties\\\":{\\\"not\\\":{\\\"$ref\\\":\\\"#/definitions/SelectionComposition\\\"}},\\\"required\\\":[\\\"not\\\"],\\\"type\\\":\\\"object\\\"},\\\"LogicalOr<Predicate>\\\":{\\\"additionalProperties\\\":false,\\\"properties\\\":{\\\"or\\\":{\\\"items\\\":{\\\"$ref\\\":\\\"#/definitions/PredicateComposition\\\"},\\\"type\\\":\\\"array\\\"}},\\\"required\\\":[\\\"or\\\"],\\\"type\\\":\\\"object\\\"},\\\"SelectionOr\\\":{\\\"additionalProperties\\\":false,\\\"properties\\\":{\\\"or\\\":{\\\"items\\\":{\\\"$ref\\\":\\\"#/definitions/SelectionComposition\\\"},\\\"type\\\":\\\"array\\\"}},\\\"required\\\":[\\\"or\\\"],\\\"type\\\":\\\"object\\\"},\\\"LookupData\\\":{\\\"additionalProperties\\\":false,\\\"properties\\\":{\\\"data\\\":{\\\"$ref\\\":\\\"#/definitions/Data\\\",\\\"description\\\":\\\"Secondary data source to lookup in.\\\"},\\\"fields\\\":{\\\"description\\\":\\\"Fields in foreign data or selection to lookup. If not specified, the entire object is queried.\\\",\\\"items\\\":{\\\"$ref\\\":\\\"#/definitions/FieldName\\\"},\\\"type\\\":\\\"array\\\"},\\\"key\\\":{\\\"$ref\\\":\\\"#/definitions/FieldName\\\",\\\"description\\\":\\\"Key in data to lookup.\\\"}},\\\"required\\\":[\\\"data\\\",\\\"key\\\"],\\\"type\\\":\\\"object\\\"},\\\"LookupSelection\\\":{\\\"additionalProperties\\\":false,\\\"properties\\\":{\\\"fields\\\":{\\\"description\\\":\\\"Fields in foreign data or selection to lookup. If not specified, the entire object is queried.\\\",\\\"items\\\":{\\\"$ref\\\":\\\"#/definitions/FieldName\\\"},\\\"type\\\":\\\"array\\\"},\\\"key\\\":{\\\"$ref\\\":\\\"#/definitions/FieldName\\\",\\\"description\\\":\\\"Key in data to lookup.\\\"},\\\"selection\\\":{\\\"description\\\":\\\"Selection name to look up.\\\",\\\"type\\\":\\\"string\\\"}},\\\"required\\\":[\\\"key\\\",\\\"selection\\\"],\\\"type\\\":\\\"object\\\"},\\\"LookupTransform\\\":{\\\"additionalProperties\\\":false,\\\"properties\\\":{\\\"as\\\":{\\\"anyOf\\\":[{\\\"$ref\\\":\\\"#/definitions/FieldName\\\"},{\\\"items\\\":{\\\"$ref\\\":\\\"#/definitions/FieldName\\\"},\\\"type\\\":\\\"array\\\"}],\\\"description\\\":\\\"The output fields on which to store the looked up data values.\\\\n\\\\nFor data lookups, this property may be left blank if `from.fields` has been specified (those field names will be used); if `from.fields` has not been specified, `as` must be a string.\\\\n\\\\nFor selection lookups, this property is optional: if unspecified, looked up values will be stored under a property named for the selection; and if specified, it must correspond to `from.fields`.\\\"},\\\"default\\\":{\\\"description\\\":\\\"The default value to use if lookup fails.\\\\n\\\\n__Default value:__ `null`\\\",\\\"type\\\":\\\"string\\\"},\\\"from\\\":{\\\"anyOf\\\":[{\\\"$ref\\\":\\\"#/definitions/LookupData\\\"},{\\\"$ref\\\":\\\"#/definitions/LookupSelection\\\"}],\\\"description\\\":\\\"Data source or selection for secondary data reference.\\\"},\\\"lookup\\\":{\\\"description\\\":\\\"Key in primary data source.\\\",\\\"type\\\":\\\"string\\\"}},\\\"required\\\":[\\\"lookup\\\",\\\"from\\\"],\\\"type\\\":\\\"object\\\"},\\\"Mark\\\":{\\\"description\\\":\\\"All types of primitive marks.\\\",\\\"enum\\\":[\\\"arc\\\",\\\"area\\\",\\\"bar\\\",\\\"image\\\",\\\"line\\\",\\\"point\\\",\\\"rect\\\",\\\"rule\\\",\\\"text\\\",\\\"tick\\\",\\\"trail\\\",\\\"circle\\\",\\\"square\\\",\\\"geoshape\\\"],\\\"type\\\":\\\"string\\\"},\\\"MarkConfig<>\\\":{\\\"additionalProperties\\\":false,\\\"properties\\\":{\\\"align\\\":{\\\"$ref\\\":\\\"#/definitions/Align\\\",\\\"description\\\":\\\"The horizontal alignment of the text or ranged marks (area, bar, image, rect, rule). One of `\\\\\\\"left\\\\\\\"`, `\\\\\\\"right\\\\\\\"`, `\\\\\\\"center\\\\\\\"`.\\\\n\\\\n__Note:__ Expression reference is *not* supported for range marks.\\\"},\\\"angle\\\":{\\\"description\\\":\\\"The rotation angle of the text, in degrees.\\\",\\\"maximum\\\":360,\\\"minimum\\\":0,\\\"type\\\":\\\"number\\\"},\\\"aria\\\":{\\\"description\\\":\\\"A boolean flag indicating if [ARIA attributes](https://developer.mozilla.org/en-US/docs/Web/Accessibility/ARIA) should be included (SVG output only). If `false`, the \\\\\\\"aria-hidden\\\\\\\" attribute will be set on the output SVG element, removing the mark item from the ARIA accessibility tree.\\\",\\\"type\\\":\\\"boolean\\\"},\\\"ariaRole\\\":{\\\"description\\\":\\\"Sets the type of user interface element of the mark item for [ARIA accessibility](https://developer.mozilla.org/en-US/docs/Web/Accessibility/ARIA) (SVG output only). If specified, this property determines the \\\\\\\"role\\\\\\\" attribute. Warning: this property is experimental and may be changed in the future.\\\",\\\"type\\\":\\\"string\\\"},\\\"ariaRoleDescription\\\":{\\\"description\\\":\\\"A human-readable, author-localized description for the role of the mark item for [ARIA accessibility](https://developer.mozilla.org/en-US/docs/Web/Accessibility/ARIA) (SVG output only). If specified, this property determines the \\\\\\\"aria-roledescription\\\\\\\" attribute. Warning: this property is experimental and may be changed in the future.\\\",\\\"type\\\":\\\"string\\\"},\\\"aspect\\\":{\\\"description\\\":\\\"Whether to keep aspect ratio of image marks.\\\",\\\"type\\\":\\\"boolean\\\"},\\\"baseline\\\":{\\\"$ref\\\":\\\"#/definitions/TextBaseline\\\",\\\"description\\\":\\\"For text marks, the vertical text baseline. One of `\\\\\\\"alphabetic\\\\\\\"` (default), `\\\\\\\"top\\\\\\\"`, `\\\\\\\"middle\\\\\\\"`, `\\\\\\\"bottom\\\\\\\"`, `\\\\\\\"line-top\\\\\\\"`, `\\\\\\\"line-bottom\\\\\\\"`, or an expression reference that provides one of the valid values. The `\\\\\\\"line-top\\\\\\\"` and `\\\\\\\"line-bottom\\\\\\\"` values operate similarly to `\\\\\\\"top\\\\\\\"` and `\\\\\\\"bottom\\\\\\\"`, but are calculated relative to the `lineHeight` rather than `fontSize` alone.\\\\n\\\\nFor range marks, the vertical alignment of the marks. One of `\\\\\\\"top\\\\\\\"`, `\\\\\\\"middle\\\\\\\"`, `\\\\\\\"bottom\\\\\\\"`.\\\\n\\\\n__Note:__ Expression reference is *not* supported for range marks.\\\"},\\\"blend\\\":{\\\"$ref\\\":\\\"#/definitions/Blend\\\",\\\"description\\\":\\\"The color blend mode for drawing an item on its current background. Any valid [CSS mix-blend-mode](https://developer.mozilla.org/en-US/docs/Web/CSS/mix-blend-mode) value can be used.\\\\n\\\\n__Default value: `\\\\\\\"source-over\\\\\\\"`\\\"},\\\"color\\\":{\\\"anyOf\\\":[{\\\"$ref\\\":\\\"#/definitions/Color\\\"},{\\\"$ref\\\":\\\"#/definitions/Gradient\\\"}],\\\"description\\\":\\\"Default color.\\\\n\\\\n__Default value:__ <span style=\\\\\\\"color: #4682b4;\\\\\\\">&#9632;</span> `\\\\\\\"#4682b4\\\\\\\"`\\\\n\\\\n__Note:__ - This property cannot be used in a [style config](https://vega.github.io/vega-lite/docs/mark.html#style-config). - The `fill` and `stroke` properties have higher precedence than `color` and will override `color`.\\\"},\\\"cornerRadius\\\":{\\\"description\\\":\\\"The radius in pixels of rounded rectangles or arcs' corners.\\\\n\\\\n__Default value:__ `0`\\\",\\\"type\\\":\\\"number\\\"},\\\"cornerRadiusBottomLeft\\\":{\\\"description\\\":\\\"The radius in pixels of rounded rectangles' bottom left corner.\\\\n\\\\n__Default value:__ `0`\\\",\\\"type\\\":\\\"number\\\"},\\\"cornerRadiusBottomRight\\\":{\\\"description\\\":\\\"The radius in pixels of rounded rectangles' bottom right corner.\\\\n\\\\n__Default value:__ `0`\\\",\\\"type\\\":\\\"number\\\"},\\\"cornerRadiusTopLeft\\\":{\\\"description\\\":\\\"The radius in pixels of rounded rectangles' top right corner.\\\\n\\\\n__Default value:__ `0`\\\",\\\"type\\\":\\\"number\\\"},\\\"cornerRadiusTopRight\\\":{\\\"description\\\":\\\"The radius in pixels of rounded rectangles' top left corner.\\\\n\\\\n__Default value:__ `0`\\\",\\\"type\\\":\\\"number\\\"},\\\"cursor\\\":{\\\"$ref\\\":\\\"#/definitions/Cursor\\\",\\\"description\\\":\\\"The mouse cursor used over the mark. Any valid [CSS cursor type](https://developer.mozilla.org/en-US/docs/Web/CSS/cursor#Values) can be used.\\\"},\\\"description\\\":{\\\"description\\\":\\\"A text description of the mark item for [ARIA accessibility](https://developer.mozilla.org/en-US/docs/Web/Accessibility/ARIA) (SVG output only). If specified, this property determines the [\\\\\\\"aria-label\\\\\\\" attribute](https://developer.mozilla.org/en-US/docs/Web/Accessibility/ARIA/ARIA_Techniques/Using_the_aria-label_attribute).\\\",\\\"type\\\":\\\"string\\\"},\\\"dir\\\":{\\\"$ref\\\":\\\"#/definitions/TextDirection\\\",\\\"description\\\":\\\"The direction of the text. One of `\\\\\\\"ltr\\\\\\\"` (left-to-right) or `\\\\\\\"rtl\\\\\\\"` (right-to-left). This property determines on which side is truncated in response to the limit parameter.\\\\n\\\\n__Default value:__ `\\\\\\\"ltr\\\\\\\"`\\\"},\\\"dx\\\":{\\\"description\\\":\\\"The horizontal offset, in pixels, between the text label and its anchor point. The offset is applied after rotation by the _angle_ property.\\\",\\\"type\\\":\\\"number\\\"},\\\"dy\\\":{\\\"description\\\":\\\"The vertical offset, in pixels, between the text label and its anchor point. The offset is applied after rotation by the _angle_ property.\\\",\\\"type\\\":\\\"number\\\"},\\\"ellipsis\\\":{\\\"description\\\":\\\"The ellipsis string for text truncated in response to the limit parameter.\\\\n\\\\n__Default value:__ `\\\\\\\"…\\\\\\\"`\\\",\\\"type\\\":\\\"string\\\"},\\\"endAngle\\\":{\\\"description\\\":\\\"The end angle in radians for arc marks. A value of `0` indicates up (north), increasing values proceed clockwise.\\\",\\\"type\\\":\\\"number\\\"},\\\"fill\\\":{\\\"anyOf\\\":[{\\\"$ref\\\":\\\"#/definitions/Color\\\"},{\\\"$ref\\\":\\\"#/definitions/Gradient\\\"},{\\\"type\\\":\\\"null\\\"}],\\\"description\\\":\\\"Default fill color. This property has higher precedence than `config.color`. Set to `null` to remove fill.\\\\n\\\\n__Default value:__ (None)\\\"},\\\"fillOpacity\\\":{\\\"description\\\":\\\"The fill opacity (value between [0,1]).\\\\n\\\\n__Default value:__ `1`\\\",\\\"maximum\\\":1,\\\"minimum\\\":0,\\\"type\\\":\\\"number\\\"},\\\"filled\\\":{\\\"description\\\":\\\"Whether the mark's color should be used as fill color instead of stroke color.\\\\n\\\\n__Default value:__ `false` for all `point`, `line`, and `rule` marks as well as `geoshape` marks for [`graticule`](https://vega.github.io/vega-lite/docs/data.html#graticule) data sources; otherwise, `true`.\\\\n\\\\n__Note:__ This property cannot be used in a [style config](https://vega.github.io/vega-lite/docs/mark.html#style-config).\\\",\\\"type\\\":\\\"boolean\\\"},\\\"font\\\":{\\\"description\\\":\\\"The typeface to set the text in (e.g., `\\\\\\\"Helvetica Neue\\\\\\\"`).\\\",\\\"type\\\":\\\"string\\\"},\\\"fontSize\\\":{\\\"description\\\":\\\"The font size, in pixels.\\\\n\\\\n__Default value:__ `11`\\\",\\\"minimum\\\":0,\\\"type\\\":\\\"number\\\"},\\\"fontStyle\\\":{\\\"$ref\\\":\\\"#/definitions/FontStyle\\\",\\\"description\\\":\\\"The font style (e.g., `\\\\\\\"italic\\\\\\\"`).\\\"},\\\"fontWeight\\\":{\\\"$ref\\\":\\\"#/definitions/FontWeight\\\",\\\"description\\\":\\\"The font weight. This can be either a string (e.g `\\\\\\\"bold\\\\\\\"`, `\\\\\\\"normal\\\\\\\"`) or a number (`100`, `200`, `300`, ..., `900` where `\\\\\\\"normal\\\\\\\"` = `400` and `\\\\\\\"bold\\\\\\\"` = `700`).\\\"},\\\"height\\\":{\\\"description\\\":\\\"Height of the marks.\\\",\\\"type\\\":\\\"number\\\"},\\\"href\\\":{\\\"$ref\\\":\\\"#/definitions/URI\\\",\\\"description\\\":\\\"A URL to load upon mouse click. If defined, the mark acts as a hyperlink.\\\"},\\\"innerRadius\\\":{\\\"description\\\":\\\"The inner radius in pixels of arc marks. `innerRadius` is an alias for `radius2`.\\\",\\\"type\\\":\\\"number\\\"},\\\"interpolate\\\":{\\\"$ref\\\":\\\"#/definitions/Interpolate\\\",\\\"description\\\":\\\"The line interpolation method to use for line and area marks. One of the following: - `\\\\\\\"linear\\\\\\\"`: piecewise linear segments, as in a polyline. - `\\\\\\\"linear-closed\\\\\\\"`: close the linear segments to form a polygon. - `\\\\\\\"step\\\\\\\"`: alternate between horizontal and vertical segments, as in a step function. - `\\\\\\\"step-before\\\\\\\"`: alternate between vertical and horizontal segments, as in a step function. - `\\\\\\\"step-after\\\\\\\"`: alternate between horizontal and vertical segments, as in a step function. - `\\\\\\\"basis\\\\\\\"`: a B-spline, with control point duplication on the ends. - `\\\\\\\"basis-open\\\\\\\"`: an open B-spline; may not intersect the start or end. - `\\\\\\\"basis-closed\\\\\\\"`: a closed B-spline, as in a loop. - `\\\\\\\"cardinal\\\\\\\"`: a Cardinal spline, with control point duplication on the ends. - `\\\\\\\"cardinal-open\\\\\\\"`: an open Cardinal spline; may not intersect the start or end, but will intersect other control points. - `\\\\\\\"cardinal-closed\\\\\\\"`: a closed Cardinal spline, as in a loop. - `\\\\\\\"bundle\\\\\\\"`: equivalent to basis, except the tension parameter is used to straighten the spline. - `\\\\\\\"monotone\\\\\\\"`: cubic interpolation that preserves monotonicity in y.\\\"},\\\"invalid\\\":{\\\"description\\\":\\\"Defines how Vega-Lite should handle marks for invalid values (`null` and `NaN`). - If set to `\\\\\\\"filter\\\\\\\"` (default), all data items with null values will be skipped (for line, trail, and area marks) or filtered (for other marks). - If `null`, all data items are included. In this case, invalid values will be interpreted as zeroes.\\\",\\\"enum\\\":[\\\"filter\\\",null],\\\"type\\\":[\\\"string\\\",\\\"null\\\"]},\\\"limit\\\":{\\\"description\\\":\\\"The maximum length of the text mark in pixels. The text value will be automatically truncated if the rendered size exceeds the limit.\\\\n\\\\n__Default value:__ `0` -- indicating no limit\\\",\\\"type\\\":\\\"number\\\"},\\\"lineBreak\\\":{\\\"description\\\":\\\"A delimiter, such as a newline character, upon which to break text strings into multiple lines. This property is ignored if the text is array-valued.\\\",\\\"type\\\":\\\"string\\\"},\\\"lineHeight\\\":{\\\"description\\\":\\\"The line height in pixels (the spacing between subsequent lines of text) for multi-line text marks.\\\",\\\"type\\\":\\\"number\\\"},\\\"opacity\\\":{\\\"description\\\":\\\"The overall opacity (value between [0,1]).\\\\n\\\\n__Default value:__ `0.7` for non-aggregate plots with `point`, `tick`, `circle`, or `square` marks or layered `bar` charts and `1` otherwise.\\\",\\\"maximum\\\":1,\\\"minimum\\\":0,\\\"type\\\":\\\"number\\\"},\\\"order\\\":{\\\"description\\\":\\\"For line and trail marks, this `order` property can be set to `null` or `false` to make the lines use the original order in the data sources.\\\",\\\"type\\\":[\\\"null\\\",\\\"boolean\\\"]},\\\"orient\\\":{\\\"$ref\\\":\\\"#/definitions/Orientation\\\",\\\"description\\\":\\\"The orientation of a non-stacked bar, tick, area, and line charts. The value is either horizontal (default) or vertical. - For bar, rule and tick, this determines whether the size of the bar and tick should be applied to x or y dimension. - For area, this property determines the orient property of the Vega output. - For line and trail marks, this property determines the sort order of the points in the line if `config.sortLineBy` is not specified. For stacked charts, this is always determined by the orientation of the stack; therefore explicitly specified value will be ignored.\\\"},\\\"outerRadius\\\":{\\\"description\\\":\\\"The outer radius in pixels of arc marks. `outerRadius` is an alias for `radius`.\\\",\\\"type\\\":\\\"number\\\"},\\\"padAngle\\\":{\\\"description\\\":\\\"The angular padding applied to sides of the arc, in radians.\\\",\\\"type\\\":\\\"number\\\"},\\\"radius\\\":{\\\"description\\\":\\\"For arc mark, the primary (outer) radius in pixels.\\\\n\\\\nFor text marks, polar coordinate radial offset, in pixels, of the text from the origin determined by the `x` and `y` properties.\\\",\\\"type\\\":\\\"number\\\"},\\\"radius2\\\":{\\\"description\\\":\\\"The secondary (inner) radius in pixels of arc marks.\\\",\\\"type\\\":\\\"number\\\"},\\\"shape\\\":{\\\"anyOf\\\":[{\\\"$ref\\\":\\\"#/definitions/SymbolShape\\\"},{\\\"type\\\":\\\"string\\\"}],\\\"description\\\":\\\"Shape of the point marks. Supported values include: - plotting shapes: `\\\\\\\"circle\\\\\\\"`, `\\\\\\\"square\\\\\\\"`, `\\\\\\\"cross\\\\\\\"`, `\\\\\\\"diamond\\\\\\\"`, `\\\\\\\"triangle-up\\\\\\\"`, `\\\\\\\"triangle-down\\\\\\\"`, `\\\\\\\"triangle-right\\\\\\\"`, or `\\\\\\\"triangle-left\\\\\\\"`. - the line symbol `\\\\\\\"stroke\\\\\\\"` - centered directional shapes `\\\\\\\"arrow\\\\\\\"`, `\\\\\\\"wedge\\\\\\\"`, or `\\\\\\\"triangle\\\\\\\"` - a custom [SVG path string](https://developer.mozilla.org/en-US/docs/Web/SVG/Tutorial/Paths) (For correct sizing, custom shape paths should be defined within a square bounding box with coordinates ranging from -1 to 1 along both the x and y dimensions.)\\\\n\\\\n__Default value:__ `\\\\\\\"circle\\\\\\\"`\\\"},\\\"size\\\":{\\\"description\\\":\\\"Default size for marks. - For `point`/`circle`/`square`, this represents the pixel area of the marks. Note that this value sets the area of the symbol; the side lengths will increase with the square root of this value. - For `bar`, this represents the band size of the bar, in pixels. - For `text`, this represents the font size, in pixels.\\\\n\\\\n__Default value:__ - `30` for point, circle, square marks; width/height's `step` - `2` for bar marks with discrete dimensions; - `5` for bar marks with continuous dimensions; - `11` for text marks.\\\",\\\"minimum\\\":0,\\\"type\\\":\\\"number\\\"},\\\"smooth\\\":{\\\"description\\\":\\\"A boolean flag (default true) indicating if the image should be smoothed when resized. If false, individual pixels should be scaled directly rather than interpolated with smoothing. For SVG rendering, this option may not work in some browsers due to lack of standardization.\\\",\\\"type\\\":\\\"boolean\\\"},\\\"startAngle\\\":{\\\"description\\\":\\\"The start angle in radians for arc marks. A value of `0` indicates up (north), increasing values proceed clockwise.\\\",\\\"type\\\":\\\"number\\\"},\\\"stroke\\\":{\\\"anyOf\\\":[{\\\"$ref\\\":\\\"#/definitions/Color\\\"},{\\\"$ref\\\":\\\"#/definitions/Gradient\\\"},{\\\"type\\\":\\\"null\\\"}],\\\"description\\\":\\\"Default stroke color. This property has higher precedence than `config.color`. Set to `null` to remove stroke.\\\\n\\\\n__Default value:__ (None)\\\"},\\\"strokeCap\\\":{\\\"$ref\\\":\\\"#/definitions/StrokeCap\\\",\\\"description\\\":\\\"The stroke cap for line ending style. One of `\\\\\\\"butt\\\\\\\"`, `\\\\\\\"round\\\\\\\"`, or `\\\\\\\"square\\\\\\\"`.\\\\n\\\\n__Default value:__ `\\\\\\\"butt\\\\\\\"`\\\"},\\\"strokeDash\\\":{\\\"description\\\":\\\"An array of alternating stroke, space lengths for creating dashed or dotted lines.\\\",\\\"items\\\":{\\\"type\\\":\\\"number\\\"},\\\"type\\\":\\\"array\\\"},\\\"strokeDashOffset\\\":{\\\"description\\\":\\\"The offset (in pixels) into which to begin drawing with the stroke dash array.\\\",\\\"type\\\":\\\"number\\\"},\\\"strokeJoin\\\":{\\\"$ref\\\":\\\"#/definitions/StrokeJoin\\\",\\\"description\\\":\\\"The stroke line join method. One of `\\\\\\\"miter\\\\\\\"`, `\\\\\\\"round\\\\\\\"` or `\\\\\\\"bevel\\\\\\\"`.\\\\n\\\\n__Default value:__ `\\\\\\\"miter\\\\\\\"`\\\"},\\\"strokeMiterLimit\\\":{\\\"description\\\":\\\"The miter limit at which to bevel a line join.\\\",\\\"type\\\":\\\"number\\\"},\\\"strokeOffset\\\":{\\\"description\\\":\\\"The offset in pixels at which to draw the group stroke and fill. If unspecified, the default behavior is to dynamically offset stroked groups such that 1 pixel stroke widths align with the pixel grid.\\\",\\\"type\\\":\\\"number\\\"},\\\"strokeOpacity\\\":{\\\"description\\\":\\\"The stroke opacity (value between [0,1]).\\\\n\\\\n__Default value:__ `1`\\\",\\\"maximum\\\":1,\\\"minimum\\\":0,\\\"type\\\":\\\"number\\\"},\\\"strokeWidth\\\":{\\\"description\\\":\\\"The stroke width, in pixels.\\\",\\\"minimum\\\":0,\\\"type\\\":\\\"number\\\"},\\\"tension\\\":{\\\"description\\\":\\\"Depending on the interpolation type, sets the tension parameter (for line and area marks).\\\",\\\"type\\\":\\\"number\\\"},\\\"text\\\":{\\\"$ref\\\":\\\"#/definitions/Text\\\",\\\"description\\\":\\\"Placeholder text if the `text` channel is not specified\\\"},\\\"theta\\\":{\\\"description\\\":\\\"- For arc marks, the arc length in radians if theta2 is not specified, otherwise the start arc angle. (A value of 0 indicates up or “north”, increasing values proceed clockwise.)\\\\n\\\\n- For text marks, polar coordinate angle in radians.\\\",\\\"maximum\\\":360,\\\"minimum\\\":0,\\\"type\\\":\\\"number\\\"},\\\"theta2\\\":{\\\"description\\\":\\\"The end angle of arc marks in radians. A value of 0 indicates up or “north”, increasing values proceed clockwise.\\\",\\\"type\\\":\\\"number\\\"},\\\"timeUnitBand\\\":{\\\"description\\\":\\\"Default relative band size for a time unit. If set to `1`, the bandwidth of the marks will be equal to the time unit band step. If set to `0.5`, bandwidth of the marks will be half of the time unit band step.\\\",\\\"type\\\":\\\"number\\\"},\\\"timeUnitBandPosition\\\":{\\\"description\\\":\\\"Default relative band position for a time unit. If set to `0`, the marks will be positioned at the beginning of the time unit band step. If set to `0.5`, the marks will be positioned in the middle of the time unit band step.\\\",\\\"type\\\":\\\"number\\\"},\\\"tooltip\\\":{\\\"anyOf\\\":[{\\\"type\\\":\\\"number\\\"},{\\\"type\\\":\\\"string\\\"},{\\\"type\\\":\\\"boolean\\\"},{\\\"$ref\\\":\\\"#/definitions/TooltipContent\\\"},{\\\"type\\\":\\\"null\\\"}],\\\"description\\\":\\\"The tooltip text string to show upon mouse hover or an object defining which fields should the tooltip be derived from.\\\\n\\\\n- If `tooltip` is `true` or `{\\\\\\\"content\\\\\\\": \\\\\\\"encoding\\\\\\\"}`, then all fields from `encoding` will be used. - If `tooltip` is `{\\\\\\\"content\\\\\\\": \\\\\\\"data\\\\\\\"}`, then all fields that appear in the highlighted data point will be used. - If set to `null` or `false`, then no tooltip will be used.\\\\n\\\\nSee the [`tooltip`](https://vega.github.io/vega-lite/docs/tooltip.html) documentation for a detailed discussion about tooltip  in Vega-Lite.\\\\n\\\\n__Default value:__ `null`\\\"},\\\"url\\\":{\\\"$ref\\\":\\\"#/definitions/URI\\\",\\\"description\\\":\\\"The URL of the image file for image marks.\\\"},\\\"width\\\":{\\\"description\\\":\\\"Width of the marks.\\\",\\\"type\\\":\\\"number\\\"},\\\"x\\\":{\\\"anyOf\\\":[{\\\"type\\\":\\\"number\\\"},{\\\"const\\\":\\\"width\\\",\\\"type\\\":\\\"string\\\"}],\\\"description\\\":\\\"X coordinates of the marks, or width of horizontal `\\\\\\\"bar\\\\\\\"` and `\\\\\\\"area\\\\\\\"` without specified `x2` or `width`.\\\\n\\\\nThe `value` of this channel can be a number or a string `\\\\\\\"width\\\\\\\"` for the width of the plot.\\\"},\\\"x2\\\":{\\\"anyOf\\\":[{\\\"type\\\":\\\"number\\\"},{\\\"const\\\":\\\"width\\\",\\\"type\\\":\\\"string\\\"}],\\\"description\\\":\\\"X2 coordinates for ranged `\\\\\\\"area\\\\\\\"`, `\\\\\\\"bar\\\\\\\"`, `\\\\\\\"rect\\\\\\\"`, and  `\\\\\\\"rule\\\\\\\"`.\\\\n\\\\nThe `value` of this channel can be a number or a string `\\\\\\\"width\\\\\\\"` for the width of the plot.\\\"},\\\"y\\\":{\\\"anyOf\\\":[{\\\"type\\\":\\\"number\\\"},{\\\"const\\\":\\\"height\\\",\\\"type\\\":\\\"string\\\"}],\\\"description\\\":\\\"Y coordinates of the marks, or height of vertical `\\\\\\\"bar\\\\\\\"` and `\\\\\\\"area\\\\\\\"` without specified `y2` or `height`.\\\\n\\\\nThe `value` of this channel can be a number or a string `\\\\\\\"height\\\\\\\"` for the height of the plot.\\\"},\\\"y2\\\":{\\\"anyOf\\\":[{\\\"type\\\":\\\"number\\\"},{\\\"const\\\":\\\"height\\\",\\\"type\\\":\\\"string\\\"}],\\\"description\\\":\\\"Y2 coordinates for ranged `\\\\\\\"area\\\\\\\"`, `\\\\\\\"bar\\\\\\\"`, `\\\\\\\"rect\\\\\\\"`, and  `\\\\\\\"rule\\\\\\\"`.\\\\n\\\\nThe `value` of this channel can be a number or a string `\\\\\\\"height\\\\\\\"` for the height of the plot.\\\"}},\\\"type\\\":\\\"object\\\"},\\\"MarkConfig<ExprOrSignalRef>\\\":{\\\"additionalProperties\\\":false,\\\"properties\\\":{\\\"align\\\":{\\\"anyOf\\\":[{\\\"$ref\\\":\\\"#/definitions/Align\\\"},{\\\"$ref\\\":\\\"#/definitions/ExprOrSignalRef\\\"}],\\\"description\\\":\\\"The horizontal alignment of the text or ranged marks (area, bar, image, rect, rule). One of `\\\\\\\"left\\\\\\\"`, `\\\\\\\"right\\\\\\\"`, `\\\\\\\"center\\\\\\\"`.\\\\n\\\\n__Note:__ Expression reference is *not* supported for range marks.\\\"},\\\"angle\\\":{\\\"anyOf\\\":[{\\\"description\\\":\\\"The rotation angle of the text, in degrees.\\\",\\\"maximum\\\":360,\\\"minimum\\\":0,\\\"type\\\":\\\"number\\\"},{\\\"$ref\\\":\\\"#/definitions/ExprOrSignalRef\\\"}]},\\\"aria\\\":{\\\"anyOf\\\":[{\\\"description\\\":\\\"A boolean flag indicating if [ARIA attributes](https://developer.mozilla.org/en-US/docs/Web/Accessibility/ARIA) should be included (SVG output only). If `false`, the \\\\\\\"aria-hidden\\\\\\\" attribute will be set on the output SVG element, removing the mark item from the ARIA accessibility tree.\\\",\\\"type\\\":\\\"boolean\\\"},{\\\"$ref\\\":\\\"#/definitions/ExprOrSignalRef\\\"}]},\\\"ariaRole\\\":{\\\"anyOf\\\":[{\\\"description\\\":\\\"Sets the type of user interface element of the mark item for [ARIA accessibility](https://developer.mozilla.org/en-US/docs/Web/Accessibility/ARIA) (SVG output only). If specified, this property determines the \\\\\\\"role\\\\\\\" attribute. Warning: this property is experimental and may be changed in the future.\\\",\\\"type\\\":\\\"string\\\"},{\\\"$ref\\\":\\\"#/definitions/ExprOrSignalRef\\\"}]},\\\"ariaRoleDescription\\\":{\\\"anyOf\\\":[{\\\"description\\\":\\\"A human-readable, author-localized description for the role of the mark item for [ARIA accessibility](https://developer.mozilla.org/en-US/docs/Web/Accessibility/ARIA) (SVG output only). If specified, this property determines the \\\\\\\"aria-roledescription\\\\\\\" attribute. Warning: this property is experimental and may be changed in the future.\\\",\\\"type\\\":\\\"string\\\"},{\\\"$ref\\\":\\\"#/definitions/ExprOrSignalRef\\\"}]},\\\"aspect\\\":{\\\"anyOf\\\":[{\\\"description\\\":\\\"Whether to keep aspect ratio of image marks.\\\",\\\"type\\\":\\\"boolean\\\"},{\\\"$ref\\\":\\\"#/definitions/ExprOrSignalRef\\\"}]},\\\"baseline\\\":{\\\"anyOf\\\":[{\\\"$ref\\\":\\\"#/definitions/TextBaseline\\\"},{\\\"$ref\\\":\\\"#/definitions/ExprOrSignalRef\\\"}],\\\"description\\\":\\\"For text marks, the vertical text baseline. One of `\\\\\\\"alphabetic\\\\\\\"` (default), `\\\\\\\"top\\\\\\\"`, `\\\\\\\"middle\\\\\\\"`, `\\\\\\\"bottom\\\\\\\"`, `\\\\\\\"line-top\\\\\\\"`, `\\\\\\\"line-bottom\\\\\\\"`, or an expression reference that provides one of the valid values. The `\\\\\\\"line-top\\\\\\\"` and `\\\\\\\"line-bottom\\\\\\\"` values operate similarly to `\\\\\\\"top\\\\\\\"` and `\\\\\\\"bottom\\\\\\\"`, but are calculated relative to the `lineHeight` rather than `fontSize` alone.\\\\n\\\\nFor range marks, the vertical alignment of the marks. One of `\\\\\\\"top\\\\\\\"`, `\\\\\\\"middle\\\\\\\"`, `\\\\\\\"bottom\\\\\\\"`.\\\\n\\\\n__Note:__ Expression reference is *not* supported for range marks.\\\"},\\\"blend\\\":{\\\"anyOf\\\":[{\\\"$ref\\\":\\\"#/definitions/Blend\\\",\\\"description\\\":\\\"The color blend mode for drawing an item on its current background. Any valid [CSS mix-blend-mode](https://developer.mozilla.org/en-US/docs/Web/CSS/mix-blend-mode) value can be used.\\\\n\\\\n__Default value: `\\\\\\\"source-over\\\\\\\"`\\\"},{\\\"$ref\\\":\\\"#/definitions/ExprOrSignalRef\\\"}]},\\\"color\\\":{\\\"anyOf\\\":[{\\\"$ref\\\":\\\"#/definitions/Color\\\"},{\\\"$ref\\\":\\\"#/definitions/Gradient\\\"},{\\\"$ref\\\":\\\"#/definitions/ExprOrSignalRef\\\"}],\\\"description\\\":\\\"Default color.\\\\n\\\\n__Default value:__ <span style=\\\\\\\"color: #4682b4;\\\\\\\">&#9632;</span> `\\\\\\\"#4682b4\\\\\\\"`\\\\n\\\\n__Note:__ - This property cannot be used in a [style config](https://vega.github.io/vega-lite/docs/mark.html#style-config). - The `fill` and `stroke` properties have higher precedence than `color` and will override `color`.\\\"},\\\"cornerRadius\\\":{\\\"anyOf\\\":[{\\\"description\\\":\\\"The radius in pixels of rounded rectangles or arcs' corners.\\\\n\\\\n__Default value:__ `0`\\\",\\\"type\\\":\\\"number\\\"},{\\\"$ref\\\":\\\"#/definitions/ExprOrSignalRef\\\"}]},\\\"cornerRadiusBottomLeft\\\":{\\\"anyOf\\\":[{\\\"description\\\":\\\"The radius in pixels of rounded rectangles' bottom left corner.\\\\n\\\\n__Default value:__ `0`\\\",\\\"type\\\":\\\"number\\\"},{\\\"$ref\\\":\\\"#/definitions/ExprOrSignalRef\\\"}]},\\\"cornerRadiusBottomRight\\\":{\\\"anyOf\\\":[{\\\"description\\\":\\\"The radius in pixels of rounded rectangles' bottom right corner.\\\\n\\\\n__Default value:__ `0`\\\",\\\"type\\\":\\\"number\\\"},{\\\"$ref\\\":\\\"#/definitions/ExprOrSignalRef\\\"}]},\\\"cornerRadiusTopLeft\\\":{\\\"anyOf\\\":[{\\\"description\\\":\\\"The radius in pixels of rounded rectangles' top right corner.\\\\n\\\\n__Default value:__ `0`\\\",\\\"type\\\":\\\"number\\\"},{\\\"$ref\\\":\\\"#/definitions/ExprOrSignalRef\\\"}]},\\\"cornerRadiusTopRight\\\":{\\\"anyOf\\\":[{\\\"description\\\":\\\"The radius in pixels of rounded rectangles' top left corner.\\\\n\\\\n__Default value:__ `0`\\\",\\\"type\\\":\\\"number\\\"},{\\\"$ref\\\":\\\"#/definitions/ExprOrSignalRef\\\"}]},\\\"cursor\\\":{\\\"anyOf\\\":[{\\\"$ref\\\":\\\"#/definitions/Cursor\\\",\\\"description\\\":\\\"The mouse cursor used over the mark. Any valid [CSS cursor type](https://developer.mozilla.org/en-US/docs/Web/CSS/cursor#Values) can be used.\\\"},{\\\"$ref\\\":\\\"#/definitions/ExprOrSignalRef\\\"}]},\\\"description\\\":{\\\"anyOf\\\":[{\\\"description\\\":\\\"A text description of the mark item for [ARIA accessibility](https://developer.mozilla.org/en-US/docs/Web/Accessibility/ARIA) (SVG output only). If specified, this property determines the [\\\\\\\"aria-label\\\\\\\" attribute](https://developer.mozilla.org/en-US/docs/Web/Accessibility/ARIA/ARIA_Techniques/Using_the_aria-label_attribute).\\\",\\\"type\\\":\\\"string\\\"},{\\\"$ref\\\":\\\"#/definitions/ExprOrSignalRef\\\"}]},\\\"dir\\\":{\\\"anyOf\\\":[{\\\"$ref\\\":\\\"#/definitions/TextDirection\\\",\\\"description\\\":\\\"The direction of the text. One of `\\\\\\\"ltr\\\\\\\"` (left-to-right) or `\\\\\\\"rtl\\\\\\\"` (right-to-left). This property determines on which side is truncated in response to the limit parameter.\\\\n\\\\n__Default value:__ `\\\\\\\"ltr\\\\\\\"`\\\"},{\\\"$ref\\\":\\\"#/definitions/ExprOrSignalRef\\\"}]},\\\"dx\\\":{\\\"anyOf\\\":[{\\\"description\\\":\\\"The horizontal offset, in pixels, between the text label and its anchor point. The offset is applied after rotation by the _angle_ property.\\\",\\\"type\\\":\\\"number\\\"},{\\\"$ref\\\":\\\"#/definitions/ExprOrSignalRef\\\"}]},\\\"dy\\\":{\\\"anyOf\\\":[{\\\"description\\\":\\\"The vertical offset, in pixels, between the text label and its anchor point. The offset is applied after rotation by the _angle_ property.\\\",\\\"type\\\":\\\"number\\\"},{\\\"$ref\\\":\\\"#/definitions/ExprOrSignalRef\\\"}]},\\\"ellipsis\\\":{\\\"anyOf\\\":[{\\\"description\\\":\\\"The ellipsis string for text truncated in response to the limit parameter.\\\\n\\\\n__Default value:__ `\\\\\\\"…\\\\\\\"`\\\",\\\"type\\\":\\\"string\\\"},{\\\"$ref\\\":\\\"#/definitions/ExprOrSignalRef\\\"}]},\\\"endAngle\\\":{\\\"anyOf\\\":[{\\\"description\\\":\\\"The end angle in radians for arc marks. A value of `0` indicates up (north), increasing values proceed clockwise.\\\",\\\"type\\\":\\\"number\\\"},{\\\"$ref\\\":\\\"#/definitions/ExprOrSignalRef\\\"}]},\\\"fill\\\":{\\\"anyOf\\\":[{\\\"$ref\\\":\\\"#/definitions/Color\\\"},{\\\"$ref\\\":\\\"#/definitions/Gradient\\\"},{\\\"type\\\":\\\"null\\\"},{\\\"$ref\\\":\\\"#/definitions/ExprOrSignalRef\\\"}],\\\"description\\\":\\\"Default fill color. This property has higher precedence than `config.color`. Set to `null` to remove fill.\\\\n\\\\n__Default value:__ (None)\\\"},\\\"fillOpacity\\\":{\\\"anyOf\\\":[{\\\"description\\\":\\\"The fill opacity (value between [0,1]).\\\\n\\\\n__Default value:__ `1`\\\",\\\"maximum\\\":1,\\\"minimum\\\":0,\\\"type\\\":\\\"number\\\"},{\\\"$ref\\\":\\\"#/definitions/ExprOrSignalRef\\\"}]},\\\"filled\\\":{\\\"description\\\":\\\"Whether the mark's color should be used as fill color instead of stroke color.\\\\n\\\\n__Default value:__ `false` for all `point`, `line`, and `rule` marks as well as `geoshape` marks for [`graticule`](https://vega.github.io/vega-lite/docs/data.html#graticule) data sources; otherwise, `true`.\\\\n\\\\n__Note:__ This property cannot be used in a [style config](https://vega.github.io/vega-lite/docs/mark.html#style-config).\\\",\\\"type\\\":\\\"boolean\\\"},\\\"font\\\":{\\\"anyOf\\\":[{\\\"description\\\":\\\"The typeface to set the text in (e.g., `\\\\\\\"Helvetica Neue\\\\\\\"`).\\\",\\\"type\\\":\\\"string\\\"},{\\\"$ref\\\":\\\"#/definitions/ExprOrSignalRef\\\"}]},\\\"fontSize\\\":{\\\"anyOf\\\":[{\\\"description\\\":\\\"The font size, in pixels.\\\\n\\\\n__Default value:__ `11`\\\",\\\"minimum\\\":0,\\\"type\\\":\\\"number\\\"},{\\\"$ref\\\":\\\"#/definitions/ExprOrSignalRef\\\"}]},\\\"fontStyle\\\":{\\\"anyOf\\\":[{\\\"$ref\\\":\\\"#/definitions/FontStyle\\\",\\\"description\\\":\\\"The font style (e.g., `\\\\\\\"italic\\\\\\\"`).\\\"},{\\\"$ref\\\":\\\"#/definitions/ExprOrSignalRef\\\"}]},\\\"fontWeight\\\":{\\\"anyOf\\\":[{\\\"$ref\\\":\\\"#/definitions/FontWeight\\\",\\\"description\\\":\\\"The font weight. This can be either a string (e.g `\\\\\\\"bold\\\\\\\"`, `\\\\\\\"normal\\\\\\\"`) or a number (`100`, `200`, `300`, ..., `900` where `\\\\\\\"normal\\\\\\\"` = `400` and `\\\\\\\"bold\\\\\\\"` = `700`).\\\"},{\\\"$ref\\\":\\\"#/definitions/ExprOrSignalRef\\\"}]},\\\"height\\\":{\\\"anyOf\\\":[{\\\"description\\\":\\\"Height of the marks.\\\",\\\"type\\\":\\\"number\\\"},{\\\"$ref\\\":\\\"#/definitions/ExprOrSignalRef\\\"}]},\\\"href\\\":{\\\"anyOf\\\":[{\\\"$ref\\\":\\\"#/definitions/URI\\\",\\\"description\\\":\\\"A URL to load upon mouse click. If defined, the mark acts as a hyperlink.\\\"},{\\\"$ref\\\":\\\"#/definitions/ExprOrSignalRef\\\"}]},\\\"innerRadius\\\":{\\\"anyOf\\\":[{\\\"type\\\":\\\"number\\\"},{\\\"$ref\\\":\\\"#/definitions/ExprOrSignalRef\\\"}],\\\"description\\\":\\\"The inner radius in pixels of arc marks. `innerRadius` is an alias for `radius2`.\\\"},\\\"interpolate\\\":{\\\"anyOf\\\":[{\\\"$ref\\\":\\\"#/definitions/Interpolate\\\",\\\"description\\\":\\\"The line interpolation method to use for line and area marks. One of the following: - `\\\\\\\"linear\\\\\\\"`: piecewise linear segments, as in a polyline. - `\\\\\\\"linear-closed\\\\\\\"`: close the linear segments to form a polygon. - `\\\\\\\"step\\\\\\\"`: alternate between horizontal and vertical segments, as in a step function. - `\\\\\\\"step-before\\\\\\\"`: alternate between vertical and horizontal segments, as in a step function. - `\\\\\\\"step-after\\\\\\\"`: alternate between horizontal and vertical segments, as in a step function. - `\\\\\\\"basis\\\\\\\"`: a B-spline, with control point duplication on the ends. - `\\\\\\\"basis-open\\\\\\\"`: an open B-spline; may not intersect the start or end. - `\\\\\\\"basis-closed\\\\\\\"`: a closed B-spline, as in a loop. - `\\\\\\\"cardinal\\\\\\\"`: a Cardinal spline, with control point duplication on the ends. - `\\\\\\\"cardinal-open\\\\\\\"`: an open Cardinal spline; may not intersect the start or end, but will intersect other control points. - `\\\\\\\"cardinal-closed\\\\\\\"`: a closed Cardinal spline, as in a loop. - `\\\\\\\"bundle\\\\\\\"`: equivalent to basis, except the tension parameter is used to straighten the spline. - `\\\\\\\"monotone\\\\\\\"`: cubic interpolation that preserves monotonicity in y.\\\"},{\\\"$ref\\\":\\\"#/definitions/ExprOrSignalRef\\\"}]},\\\"invalid\\\":{\\\"description\\\":\\\"Defines how Vega-Lite should handle marks for invalid values (`null` and `NaN`). - If set to `\\\\\\\"filter\\\\\\\"` (default), all data items with null values will be skipped (for line, trail, and area marks) or filtered (for other marks). - If `null`, all data items are included. In this case, invalid values will be interpreted as zeroes.\\\",\\\"enum\\\":[\\\"filter\\\",null],\\\"type\\\":[\\\"string\\\",\\\"null\\\"]},\\\"limit\\\":{\\\"anyOf\\\":[{\\\"description\\\":\\\"The maximum length of the text mark in pixels. The text value will be automatically truncated if the rendered size exceeds the limit.\\\\n\\\\n__Default value:__ `0` -- indicating no limit\\\",\\\"type\\\":\\\"number\\\"},{\\\"$ref\\\":\\\"#/definitions/ExprOrSignalRef\\\"}]},\\\"lineBreak\\\":{\\\"anyOf\\\":[{\\\"description\\\":\\\"A delimiter, such as a newline character, upon which to break text strings into multiple lines. This property is ignored if the text is array-valued.\\\",\\\"type\\\":\\\"string\\\"},{\\\"$ref\\\":\\\"#/definitions/ExprOrSignalRef\\\"}]},\\\"lineHeight\\\":{\\\"anyOf\\\":[{\\\"description\\\":\\\"The line height in pixels (the spacing between subsequent lines of text) for multi-line text marks.\\\",\\\"type\\\":\\\"number\\\"},{\\\"$ref\\\":\\\"#/definitions/ExprOrSignalRef\\\"}]},\\\"opacity\\\":{\\\"anyOf\\\":[{\\\"type\\\":\\\"number\\\"},{\\\"$ref\\\":\\\"#/definitions/ExprOrSignalRef\\\"}],\\\"description\\\":\\\"The overall opacity (value between [0,1]).\\\\n\\\\n__Default value:__ `0.7` for non-aggregate plots with `point`, `tick`, `circle`, or `square` marks or layered `bar` charts and `1` otherwise.\\\",\\\"maximum\\\":1,\\\"minimum\\\":0},\\\"order\\\":{\\\"description\\\":\\\"For line and trail marks, this `order` property can be set to `null` or `false` to make the lines use the original order in the data sources.\\\",\\\"type\\\":[\\\"null\\\",\\\"boolean\\\"]},\\\"orient\\\":{\\\"$ref\\\":\\\"#/definitions/Orientation\\\",\\\"description\\\":\\\"The orientation of a non-stacked bar, tick, area, and line charts. The value is either horizontal (default) or vertical. - For bar, rule and tick, this determines whether the size of the bar and tick should be applied to x or y dimension. - For area, this property determines the orient property of the Vega output. - For line and trail marks, this property determines the sort order of the points in the line if `config.sortLineBy` is not specified. For stacked charts, this is always determined by the orientation of the stack; therefore explicitly specified value will be ignored.\\\"},\\\"outerRadius\\\":{\\\"anyOf\\\":[{\\\"type\\\":\\\"number\\\"},{\\\"$ref\\\":\\\"#/definitions/ExprOrSignalRef\\\"}],\\\"description\\\":\\\"The outer radius in pixels of arc marks. `outerRadius` is an alias for `radius`.\\\"},\\\"padAngle\\\":{\\\"anyOf\\\":[{\\\"description\\\":\\\"The angular padding applied to sides of the arc, in radians.\\\",\\\"type\\\":\\\"number\\\"},{\\\"$ref\\\":\\\"#/definitions/ExprOrSignalRef\\\"}]},\\\"radius\\\":{\\\"anyOf\\\":[{\\\"type\\\":\\\"number\\\"},{\\\"$ref\\\":\\\"#/definitions/ExprOrSignalRef\\\"}],\\\"description\\\":\\\"For arc mark, the primary (outer) radius in pixels.\\\\n\\\\nFor text marks, polar coordinate radial offset, in pixels, of the text from the origin determined by the `x` and `y` properties.\\\"},\\\"radius2\\\":{\\\"anyOf\\\":[{\\\"type\\\":\\\"number\\\"},{\\\"$ref\\\":\\\"#/definitions/ExprOrSignalRef\\\"}],\\\"description\\\":\\\"The secondary (inner) radius in pixels of arc marks.\\\"},\\\"shape\\\":{\\\"anyOf\\\":[{\\\"anyOf\\\":[{\\\"$ref\\\":\\\"#/definitions/SymbolShape\\\"},{\\\"type\\\":\\\"string\\\"}],\\\"description\\\":\\\"Shape of the point marks. Supported values include: - plotting shapes: `\\\\\\\"circle\\\\\\\"`, `\\\\\\\"square\\\\\\\"`, `\\\\\\\"cross\\\\\\\"`, `\\\\\\\"diamond\\\\\\\"`, `\\\\\\\"triangle-up\\\\\\\"`, `\\\\\\\"triangle-down\\\\\\\"`, `\\\\\\\"triangle-right\\\\\\\"`, or `\\\\\\\"triangle-left\\\\\\\"`. - the line symbol `\\\\\\\"stroke\\\\\\\"` - centered directional shapes `\\\\\\\"arrow\\\\\\\"`, `\\\\\\\"wedge\\\\\\\"`, or `\\\\\\\"triangle\\\\\\\"` - a custom [SVG path string](https://developer.mozilla.org/en-US/docs/Web/SVG/Tutorial/Paths) (For correct sizing, custom shape paths should be defined within a square bounding box with coordinates ranging from -1 to 1 along both the x and y dimensions.)\\\\n\\\\n__Default value:__ `\\\\\\\"circle\\\\\\\"`\\\"},{\\\"$ref\\\":\\\"#/definitions/ExprOrSignalRef\\\"}]},\\\"size\\\":{\\\"anyOf\\\":[{\\\"type\\\":\\\"number\\\"},{\\\"$ref\\\":\\\"#/definitions/ExprOrSignalRef\\\"}],\\\"description\\\":\\\"Default size for marks. - For `point`/`circle`/`square`, this represents the pixel area of the marks. Note that this value sets the area of the symbol; the side lengths will increase with the square root of this value. - For `bar`, this represents the band size of the bar, in pixels. - For `text`, this represents the font size, in pixels.\\\\n\\\\n__Default value:__ - `30` for point, circle, square marks; width/height's `step` - `2` for bar marks with discrete dimensions; - `5` for bar marks with continuous dimensions; - `11` for text marks.\\\",\\\"minimum\\\":0},\\\"smooth\\\":{\\\"anyOf\\\":[{\\\"description\\\":\\\"A boolean flag (default true) indicating if the image should be smoothed when resized. If false, individual pixels should be scaled directly rather than interpolated with smoothing. For SVG rendering, this option may not work in some browsers due to lack of standardization.\\\",\\\"type\\\":\\\"boolean\\\"},{\\\"$ref\\\":\\\"#/definitions/ExprOrSignalRef\\\"}]},\\\"startAngle\\\":{\\\"anyOf\\\":[{\\\"description\\\":\\\"The start angle in radians for arc marks. A value of `0` indicates up (north), increasing values proceed clockwise.\\\",\\\"type\\\":\\\"number\\\"},{\\\"$ref\\\":\\\"#/definitions/ExprOrSignalRef\\\"}]},\\\"stroke\\\":{\\\"anyOf\\\":[{\\\"$ref\\\":\\\"#/definitions/Color\\\"},{\\\"$ref\\\":\\\"#/definitions/Gradient\\\"},{\\\"type\\\":\\\"null\\\"},{\\\"$ref\\\":\\\"#/definitions/ExprOrSignalRef\\\"}],\\\"description\\\":\\\"Default stroke color. This property has higher precedence than `config.color`. Set to `null` to remove stroke.\\\\n\\\\n__Default value:__ (None)\\\"},\\\"strokeCap\\\":{\\\"anyOf\\\":[{\\\"$ref\\\":\\\"#/definitions/StrokeCap\\\",\\\"description\\\":\\\"The stroke cap for line ending style. One of `\\\\\\\"butt\\\\\\\"`, `\\\\\\\"round\\\\\\\"`, or `\\\\\\\"square\\\\\\\"`.\\\\n\\\\n__Default value:__ `\\\\\\\"butt\\\\\\\"`\\\"},{\\\"$ref\\\":\\\"#/definitions/ExprOrSignalRef\\\"}]},\\\"strokeDash\\\":{\\\"anyOf\\\":[{\\\"description\\\":\\\"An array of alternating stroke, space lengths for creating dashed or dotted lines.\\\",\\\"items\\\":{\\\"type\\\":\\\"number\\\"},\\\"type\\\":\\\"array\\\"},{\\\"$ref\\\":\\\"#/definitions/ExprOrSignalRef\\\"}]},\\\"strokeDashOffset\\\":{\\\"anyOf\\\":[{\\\"description\\\":\\\"The offset (in pixels) into which to begin drawing with the stroke dash array.\\\",\\\"type\\\":\\\"number\\\"},{\\\"$ref\\\":\\\"#/definitions/ExprOrSignalRef\\\"}]},\\\"strokeJoin\\\":{\\\"anyOf\\\":[{\\\"$ref\\\":\\\"#/definitions/StrokeJoin\\\",\\\"description\\\":\\\"The stroke line join method. One of `\\\\\\\"miter\\\\\\\"`, `\\\\\\\"round\\\\\\\"` or `\\\\\\\"bevel\\\\\\\"`.\\\\n\\\\n__Default value:__ `\\\\\\\"miter\\\\\\\"`\\\"},{\\\"$ref\\\":\\\"#/definitions/ExprOrSignalRef\\\"}]},\\\"strokeMiterLimit\\\":{\\\"anyOf\\\":[{\\\"description\\\":\\\"The miter limit at which to bevel a line join.\\\",\\\"type\\\":\\\"number\\\"},{\\\"$ref\\\":\\\"#/definitions/ExprOrSignalRef\\\"}]},\\\"strokeOffset\\\":{\\\"anyOf\\\":[{\\\"description\\\":\\\"The offset in pixels at which to draw the group stroke and fill. If unspecified, the default behavior is to dynamically offset stroked groups such that 1 pixel stroke widths align with the pixel grid.\\\",\\\"type\\\":\\\"number\\\"},{\\\"$ref\\\":\\\"#/definitions/ExprOrSignalRef\\\"}]},\\\"strokeOpacity\\\":{\\\"anyOf\\\":[{\\\"description\\\":\\\"The stroke opacity (value between [0,1]).\\\\n\\\\n__Default value:__ `1`\\\",\\\"maximum\\\":1,\\\"minimum\\\":0,\\\"type\\\":\\\"number\\\"},{\\\"$ref\\\":\\\"#/definitions/ExprOrSignalRef\\\"}]},\\\"strokeWidth\\\":{\\\"anyOf\\\":[{\\\"description\\\":\\\"The stroke width, in pixels.\\\",\\\"minimum\\\":0,\\\"type\\\":\\\"number\\\"},{\\\"$ref\\\":\\\"#/definitions/ExprOrSignalRef\\\"}]},\\\"tension\\\":{\\\"anyOf\\\":[{\\\"description\\\":\\\"Depending on the interpolation type, sets the tension parameter (for line and area marks).\\\",\\\"type\\\":\\\"number\\\"},{\\\"$ref\\\":\\\"#/definitions/ExprOrSignalRef\\\"}]},\\\"text\\\":{\\\"anyOf\\\":[{\\\"$ref\\\":\\\"#/definitions/Text\\\",\\\"description\\\":\\\"Placeholder text if the `text` channel is not specified\\\"},{\\\"$ref\\\":\\\"#/definitions/ExprOrSignalRef\\\"}]},\\\"theta\\\":{\\\"anyOf\\\":[{\\\"type\\\":\\\"number\\\"},{\\\"$ref\\\":\\\"#/definitions/ExprOrSignalRef\\\"}],\\\"description\\\":\\\"- For arc marks, the arc length in radians if theta2 is not specified, otherwise the start arc angle. (A value of 0 indicates up or “north”, increasing values proceed clockwise.)\\\\n\\\\n- For text marks, polar coordinate angle in radians.\\\",\\\"maximum\\\":360,\\\"minimum\\\":0},\\\"theta2\\\":{\\\"anyOf\\\":[{\\\"type\\\":\\\"number\\\"},{\\\"$ref\\\":\\\"#/definitions/ExprOrSignalRef\\\"}],\\\"description\\\":\\\"The end angle of arc marks in radians. A value of 0 indicates up or “north”, increasing values proceed clockwise.\\\"},\\\"timeUnitBand\\\":{\\\"description\\\":\\\"Default relative band size for a time unit. If set to `1`, the bandwidth of the marks will be equal to the time unit band step. If set to `0.5`, bandwidth of the marks will be half of the time unit band step.\\\",\\\"type\\\":\\\"number\\\"},\\\"timeUnitBandPosition\\\":{\\\"description\\\":\\\"Default relative band position for a time unit. If set to `0`, the marks will be positioned at the beginning of the time unit band step. If set to `0.5`, the marks will be positioned in the middle of the time unit band step.\\\",\\\"type\\\":\\\"number\\\"},\\\"tooltip\\\":{\\\"anyOf\\\":[{\\\"type\\\":\\\"number\\\"},{\\\"type\\\":\\\"string\\\"},{\\\"type\\\":\\\"boolean\\\"},{\\\"$ref\\\":\\\"#/definitions/TooltipContent\\\"},{\\\"$ref\\\":\\\"#/definitions/ExprOrSignalRef\\\"},{\\\"type\\\":\\\"null\\\"}],\\\"description\\\":\\\"The tooltip text string to show upon mouse hover or an object defining which fields should the tooltip be derived from.\\\\n\\\\n- If `tooltip` is `true` or `{\\\\\\\"content\\\\\\\": \\\\\\\"encoding\\\\\\\"}`, then all fields from `encoding` will be used. - If `tooltip` is `{\\\\\\\"content\\\\\\\": \\\\\\\"data\\\\\\\"}`, then all fields that appear in the highlighted data point will be used. - If set to `null` or `false`, then no tooltip will be used.\\\\n\\\\nSee the [`tooltip`](https://vega.github.io/vega-lite/docs/tooltip.html) documentation for a detailed discussion about tooltip  in Vega-Lite.\\\\n\\\\n__Default value:__ `null`\\\"},\\\"url\\\":{\\\"anyOf\\\":[{\\\"$ref\\\":\\\"#/definitions/URI\\\",\\\"description\\\":\\\"The URL of the image file for image marks.\\\"},{\\\"$ref\\\":\\\"#/definitions/ExprOrSignalRef\\\"}]},\\\"width\\\":{\\\"anyOf\\\":[{\\\"description\\\":\\\"Width of the marks.\\\",\\\"type\\\":\\\"number\\\"},{\\\"$ref\\\":\\\"#/definitions/ExprOrSignalRef\\\"}]},\\\"x\\\":{\\\"anyOf\\\":[{\\\"type\\\":\\\"number\\\"},{\\\"const\\\":\\\"width\\\",\\\"type\\\":\\\"string\\\"},{\\\"$ref\\\":\\\"#/definitions/ExprOrSignalRef\\\"}],\\\"description\\\":\\\"X coordinates of the marks, or width of horizontal `\\\\\\\"bar\\\\\\\"` and `\\\\\\\"area\\\\\\\"` without specified `x2` or `width`.\\\\n\\\\nThe `value` of this channel can be a number or a string `\\\\\\\"width\\\\\\\"` for the width of the plot.\\\"},\\\"x2\\\":{\\\"anyOf\\\":[{\\\"type\\\":\\\"number\\\"},{\\\"const\\\":\\\"width\\\",\\\"type\\\":\\\"string\\\"},{\\\"$ref\\\":\\\"#/definitions/ExprOrSignalRef\\\"}],\\\"description\\\":\\\"X2 coordinates for ranged `\\\\\\\"area\\\\\\\"`, `\\\\\\\"bar\\\\\\\"`, `\\\\\\\"rect\\\\\\\"`, and  `\\\\\\\"rule\\\\\\\"`.\\\\n\\\\nThe `value` of this channel can be a number or a string `\\\\\\\"width\\\\\\\"` for the width of the plot.\\\"},\\\"y\\\":{\\\"anyOf\\\":[{\\\"type\\\":\\\"number\\\"},{\\\"const\\\":\\\"height\\\",\\\"type\\\":\\\"string\\\"},{\\\"$ref\\\":\\\"#/definitions/ExprOrSignalRef\\\"}],\\\"description\\\":\\\"Y coordinates of the marks, or height of vertical `\\\\\\\"bar\\\\\\\"` and `\\\\\\\"area\\\\\\\"` without specified `y2` or `height`.\\\\n\\\\nThe `value` of this channel can be a number or a string `\\\\\\\"height\\\\\\\"` for the height of the plot.\\\"},\\\"y2\\\":{\\\"anyOf\\\":[{\\\"type\\\":\\\"number\\\"},{\\\"const\\\":\\\"height\\\",\\\"type\\\":\\\"string\\\"},{\\\"$ref\\\":\\\"#/definitions/ExprOrSignalRef\\\"}],\\\"description\\\":\\\"Y2 coordinates for ranged `\\\\\\\"area\\\\\\\"`, `\\\\\\\"bar\\\\\\\"`, `\\\\\\\"rect\\\\\\\"`, and  `\\\\\\\"rule\\\\\\\"`.\\\\n\\\\nThe `value` of this channel can be a number or a string `\\\\\\\"height\\\\\\\"` for the height of the plot.\\\"}},\\\"type\\\":\\\"object\\\"},\\\"MarkConfig\\\":{\\\"additionalProperties\\\":false,\\\"properties\\\":{\\\"align\\\":{\\\"anyOf\\\":[{\\\"$ref\\\":\\\"#/definitions/Align\\\"},{\\\"$ref\\\":\\\"#/definitions/ExprRef\\\"}],\\\"description\\\":\\\"The horizontal alignment of the text or ranged marks (area, bar, image, rect, rule). One of `\\\\\\\"left\\\\\\\"`, `\\\\\\\"right\\\\\\\"`, `\\\\\\\"center\\\\\\\"`.\\\\n\\\\n__Note:__ Expression reference is *not* supported for range marks.\\\"},\\\"angle\\\":{\\\"anyOf\\\":[{\\\"description\\\":\\\"The rotation angle of the text, in degrees.\\\",\\\"maximum\\\":360,\\\"minimum\\\":0,\\\"type\\\":\\\"number\\\"},{\\\"$ref\\\":\\\"#/definitions/ExprRef\\\"}]},\\\"aria\\\":{\\\"anyOf\\\":[{\\\"description\\\":\\\"A boolean flag indicating if [ARIA attributes](https://developer.mozilla.org/en-US/docs/Web/Accessibility/ARIA) should be included (SVG output only). If `false`, the \\\\\\\"aria-hidden\\\\\\\" attribute will be set on the output SVG element, removing the mark item from the ARIA accessibility tree.\\\",\\\"type\\\":\\\"boolean\\\"},{\\\"$ref\\\":\\\"#/definitions/ExprRef\\\"}]},\\\"ariaRole\\\":{\\\"anyOf\\\":[{\\\"description\\\":\\\"Sets the type of user interface element of the mark item for [ARIA accessibility](https://developer.mozilla.org/en-US/docs/Web/Accessibility/ARIA) (SVG output only). If specified, this property determines the \\\\\\\"role\\\\\\\" attribute. Warning: this property is experimental and may be changed in the future.\\\",\\\"type\\\":\\\"string\\\"},{\\\"$ref\\\":\\\"#/definitions/ExprRef\\\"}]},\\\"ariaRoleDescription\\\":{\\\"anyOf\\\":[{\\\"description\\\":\\\"A human-readable, author-localized description for the role of the mark item for [ARIA accessibility](https://developer.mozilla.org/en-US/docs/Web/Accessibility/ARIA) (SVG output only). If specified, this property determines the \\\\\\\"aria-roledescription\\\\\\\" attribute. Warning: this property is experimental and may be changed in the future.\\\",\\\"type\\\":\\\"string\\\"},{\\\"$ref\\\":\\\"#/definitions/ExprRef\\\"}]},\\\"aspect\\\":{\\\"anyOf\\\":[{\\\"description\\\":\\\"Whether to keep aspect ratio of image marks.\\\",\\\"type\\\":\\\"boolean\\\"},{\\\"$ref\\\":\\\"#/definitions/ExprRef\\\"}]},\\\"baseline\\\":{\\\"anyOf\\\":[{\\\"$ref\\\":\\\"#/definitions/TextBaseline\\\"},{\\\"$ref\\\":\\\"#/definitions/ExprRef\\\"}],\\\"description\\\":\\\"For text marks, the vertical text baseline. One of `\\\\\\\"alphabetic\\\\\\\"` (default), `\\\\\\\"top\\\\\\\"`, `\\\\\\\"middle\\\\\\\"`, `\\\\\\\"bottom\\\\\\\"`, `\\\\\\\"line-top\\\\\\\"`, `\\\\\\\"line-bottom\\\\\\\"`, or an expression reference that provides one of the valid values. The `\\\\\\\"line-top\\\\\\\"` and `\\\\\\\"line-bottom\\\\\\\"` values operate similarly to `\\\\\\\"top\\\\\\\"` and `\\\\\\\"bottom\\\\\\\"`, but are calculated relative to the `lineHeight` rather than `fontSize` alone.\\\\n\\\\nFor range marks, the vertical alignment of the marks. One of `\\\\\\\"top\\\\\\\"`, `\\\\\\\"middle\\\\\\\"`, `\\\\\\\"bottom\\\\\\\"`.\\\\n\\\\n__Note:__ Expression reference is *not* supported for range marks.\\\"},\\\"blend\\\":{\\\"anyOf\\\":[{\\\"$ref\\\":\\\"#/definitions/Blend\\\",\\\"description\\\":\\\"The color blend mode for drawing an item on its current background. Any valid [CSS mix-blend-mode](https://developer.mozilla.org/en-US/docs/Web/CSS/mix-blend-mode) value can be used.\\\\n\\\\n__Default value: `\\\\\\\"source-over\\\\\\\"`\\\"},{\\\"$ref\\\":\\\"#/definitions/ExprRef\\\"}]},\\\"color\\\":{\\\"anyOf\\\":[{\\\"$ref\\\":\\\"#/definitions/Color\\\"},{\\\"$ref\\\":\\\"#/definitions/Gradient\\\"},{\\\"$ref\\\":\\\"#/definitions/ExprRef\\\"}],\\\"description\\\":\\\"Default color.\\\\n\\\\n__Default value:__ <span style=\\\\\\\"color: #4682b4;\\\\\\\">&#9632;</span> `\\\\\\\"#4682b4\\\\\\\"`\\\\n\\\\n__Note:__ - This property cannot be used in a [style config](https://vega.github.io/vega-lite/docs/mark.html#style-config). - The `fill` and `stroke` properties have higher precedence than `color` and will override `color`.\\\"},\\\"cornerRadius\\\":{\\\"anyOf\\\":[{\\\"description\\\":\\\"The radius in pixels of rounded rectangles or arcs' corners.\\\\n\\\\n__Default value:__ `0`\\\",\\\"type\\\":\\\"number\\\"},{\\\"$ref\\\":\\\"#/definitions/ExprRef\\\"}]},\\\"cornerRadiusBottomLeft\\\":{\\\"anyOf\\\":[{\\\"description\\\":\\\"The radius in pixels of rounded rectangles' bottom left corner.\\\\n\\\\n__Default value:__ `0`\\\",\\\"type\\\":\\\"number\\\"},{\\\"$ref\\\":\\\"#/definitions/ExprRef\\\"}]},\\\"cornerRadiusBottomRight\\\":{\\\"anyOf\\\":[{\\\"description\\\":\\\"The radius in pixels of rounded rectangles' bottom right corner.\\\\n\\\\n__Default value:__ `0`\\\",\\\"type\\\":\\\"number\\\"},{\\\"$ref\\\":\\\"#/definitions/ExprRef\\\"}]},\\\"cornerRadiusTopLeft\\\":{\\\"anyOf\\\":[{\\\"description\\\":\\\"The radius in pixels of rounded rectangles' top right corner.\\\\n\\\\n__Default value:__ `0`\\\",\\\"type\\\":\\\"number\\\"},{\\\"$ref\\\":\\\"#/definitions/ExprRef\\\"}]},\\\"cornerRadiusTopRight\\\":{\\\"anyOf\\\":[{\\\"description\\\":\\\"The radius in pixels of rounded rectangles' top left corner.\\\\n\\\\n__Default value:__ `0`\\\",\\\"type\\\":\\\"number\\\"},{\\\"$ref\\\":\\\"#/definitions/ExprRef\\\"}]},\\\"cursor\\\":{\\\"anyOf\\\":[{\\\"$ref\\\":\\\"#/definitions/Cursor\\\",\\\"description\\\":\\\"The mouse cursor used over the mark. Any valid [CSS cursor type](https://developer.mozilla.org/en-US/docs/Web/CSS/cursor#Values) can be used.\\\"},{\\\"$ref\\\":\\\"#/definitions/ExprRef\\\"}]},\\\"description\\\":{\\\"anyOf\\\":[{\\\"description\\\":\\\"A text description of the mark item for [ARIA accessibility](https://developer.mozilla.org/en-US/docs/Web/Accessibility/ARIA) (SVG output only). If specified, this property determines the [\\\\\\\"aria-label\\\\\\\" attribute](https://developer.mozilla.org/en-US/docs/Web/Accessibility/ARIA/ARIA_Techniques/Using_the_aria-label_attribute).\\\",\\\"type\\\":\\\"string\\\"},{\\\"$ref\\\":\\\"#/definitions/ExprRef\\\"}]},\\\"dir\\\":{\\\"anyOf\\\":[{\\\"$ref\\\":\\\"#/definitions/TextDirection\\\",\\\"description\\\":\\\"The direction of the text. One of `\\\\\\\"ltr\\\\\\\"` (left-to-right) or `\\\\\\\"rtl\\\\\\\"` (right-to-left). This property determines on which side is truncated in response to the limit parameter.\\\\n\\\\n__Default value:__ `\\\\\\\"ltr\\\\\\\"`\\\"},{\\\"$ref\\\":\\\"#/definitions/ExprRef\\\"}]},\\\"dx\\\":{\\\"anyOf\\\":[{\\\"description\\\":\\\"The horizontal offset, in pixels, between the text label and its anchor point. The offset is applied after rotation by the _angle_ property.\\\",\\\"type\\\":\\\"number\\\"},{\\\"$ref\\\":\\\"#/definitions/ExprRef\\\"}]},\\\"dy\\\":{\\\"anyOf\\\":[{\\\"description\\\":\\\"The vertical offset, in pixels, between the text label and its anchor point. The offset is applied after rotation by the _angle_ property.\\\",\\\"type\\\":\\\"number\\\"},{\\\"$ref\\\":\\\"#/definitions/ExprRef\\\"}]},\\\"ellipsis\\\":{\\\"anyOf\\\":[{\\\"description\\\":\\\"The ellipsis string for text truncated in response to the limit parameter.\\\\n\\\\n__Default value:__ `\\\\\\\"…\\\\\\\"`\\\",\\\"type\\\":\\\"string\\\"},{\\\"$ref\\\":\\\"#/definitions/ExprRef\\\"}]},\\\"endAngle\\\":{\\\"anyOf\\\":[{\\\"description\\\":\\\"The end angle in radians for arc marks. A value of `0` indicates up (north), increasing values proceed clockwise.\\\",\\\"type\\\":\\\"number\\\"},{\\\"$ref\\\":\\\"#/definitions/ExprRef\\\"}]},\\\"fill\\\":{\\\"anyOf\\\":[{\\\"$ref\\\":\\\"#/definitions/Color\\\"},{\\\"$ref\\\":\\\"#/definitions/Gradient\\\"},{\\\"type\\\":\\\"null\\\"},{\\\"$ref\\\":\\\"#/definitions/ExprRef\\\"}],\\\"description\\\":\\\"Default fill color. This property has higher precedence than `config.color`. Set to `null` to remove fill.\\\\n\\\\n__Default value:__ (None)\\\"},\\\"fillOpacity\\\":{\\\"anyOf\\\":[{\\\"description\\\":\\\"The fill opacity (value between [0,1]).\\\\n\\\\n__Default value:__ `1`\\\",\\\"maximum\\\":1,\\\"minimum\\\":0,\\\"type\\\":\\\"number\\\"},{\\\"$ref\\\":\\\"#/definitions/ExprRef\\\"}]},\\\"filled\\\":{\\\"description\\\":\\\"Whether the mark's color should be used as fill color instead of stroke color.\\\\n\\\\n__Default value:__ `false` for all `point`, `line`, and `rule` marks as well as `geoshape` marks for [`graticule`](https://vega.github.io/vega-lite/docs/data.html#graticule) data sources; otherwise, `true`.\\\\n\\\\n__Note:__ This property cannot be used in a [style config](https://vega.github.io/vega-lite/docs/mark.html#style-config).\\\",\\\"type\\\":\\\"boolean\\\"},\\\"font\\\":{\\\"anyOf\\\":[{\\\"description\\\":\\\"The typeface to set the text in (e.g., `\\\\\\\"Helvetica Neue\\\\\\\"`).\\\",\\\"type\\\":\\\"string\\\"},{\\\"$ref\\\":\\\"#/definitions/ExprRef\\\"}]},\\\"fontSize\\\":{\\\"anyOf\\\":[{\\\"description\\\":\\\"The font size, in pixels.\\\\n\\\\n__Default value:__ `11`\\\",\\\"minimum\\\":0,\\\"type\\\":\\\"number\\\"},{\\\"$ref\\\":\\\"#/definitions/ExprRef\\\"}]},\\\"fontStyle\\\":{\\\"anyOf\\\":[{\\\"$ref\\\":\\\"#/definitions/FontStyle\\\",\\\"description\\\":\\\"The font style (e.g., `\\\\\\\"italic\\\\\\\"`).\\\"},{\\\"$ref\\\":\\\"#/definitions/ExprRef\\\"}]},\\\"fontWeight\\\":{\\\"anyOf\\\":[{\\\"$ref\\\":\\\"#/definitions/FontWeight\\\",\\\"description\\\":\\\"The font weight. This can be either a string (e.g `\\\\\\\"bold\\\\\\\"`, `\\\\\\\"normal\\\\\\\"`) or a number (`100`, `200`, `300`, ..., `900` where `\\\\\\\"normal\\\\\\\"` = `400` and `\\\\\\\"bold\\\\\\\"` = `700`).\\\"},{\\\"$ref\\\":\\\"#/definitions/ExprRef\\\"}]},\\\"height\\\":{\\\"anyOf\\\":[{\\\"description\\\":\\\"Height of the marks.\\\",\\\"type\\\":\\\"number\\\"},{\\\"$ref\\\":\\\"#/definitions/ExprRef\\\"}]},\\\"href\\\":{\\\"anyOf\\\":[{\\\"$ref\\\":\\\"#/definitions/URI\\\",\\\"description\\\":\\\"A URL to load upon mouse click. If defined, the mark acts as a hyperlink.\\\"},{\\\"$ref\\\":\\\"#/definitions/ExprRef\\\"}]},\\\"innerRadius\\\":{\\\"anyOf\\\":[{\\\"type\\\":\\\"number\\\"},{\\\"$ref\\\":\\\"#/definitions/ExprRef\\\"}],\\\"description\\\":\\\"The inner radius in pixels of arc marks. `innerRadius` is an alias for `radius2`.\\\"},\\\"interpolate\\\":{\\\"anyOf\\\":[{\\\"$ref\\\":\\\"#/definitions/Interpolate\\\",\\\"description\\\":\\\"The line interpolation method to use for line and area marks. One of the following: - `\\\\\\\"linear\\\\\\\"`: piecewise linear segments, as in a polyline. - `\\\\\\\"linear-closed\\\\\\\"`: close the linear segments to form a polygon. - `\\\\\\\"step\\\\\\\"`: alternate between horizontal and vertical segments, as in a step function. - `\\\\\\\"step-before\\\\\\\"`: alternate between vertical and horizontal segments, as in a step function. - `\\\\\\\"step-after\\\\\\\"`: alternate between horizontal and vertical segments, as in a step function. - `\\\\\\\"basis\\\\\\\"`: a B-spline, with control point duplication on the ends. - `\\\\\\\"basis-open\\\\\\\"`: an open B-spline; may not intersect the start or end. - `\\\\\\\"basis-closed\\\\\\\"`: a closed B-spline, as in a loop. - `\\\\\\\"cardinal\\\\\\\"`: a Cardinal spline, with control point duplication on the ends. - `\\\\\\\"cardinal-open\\\\\\\"`: an open Cardinal spline; may not intersect the start or end, but will intersect other control points. - `\\\\\\\"cardinal-closed\\\\\\\"`: a closed Cardinal spline, as in a loop. - `\\\\\\\"bundle\\\\\\\"`: equivalent to basis, except the tension parameter is used to straighten the spline. - `\\\\\\\"monotone\\\\\\\"`: cubic interpolation that preserves monotonicity in y.\\\"},{\\\"$ref\\\":\\\"#/definitions/ExprRef\\\"}]},\\\"invalid\\\":{\\\"description\\\":\\\"Defines how Vega-Lite should handle marks for invalid values (`null` and `NaN`). - If set to `\\\\\\\"filter\\\\\\\"` (default), all data items with null values will be skipped (for line, trail, and area marks) or filtered (for other marks). - If `null`, all data items are included. In this case, invalid values will be interpreted as zeroes.\\\",\\\"enum\\\":[\\\"filter\\\",null],\\\"type\\\":[\\\"string\\\",\\\"null\\\"]},\\\"limit\\\":{\\\"anyOf\\\":[{\\\"description\\\":\\\"The maximum length of the text mark in pixels. The text value will be automatically truncated if the rendered size exceeds the limit.\\\\n\\\\n__Default value:__ `0` -- indicating no limit\\\",\\\"type\\\":\\\"number\\\"},{\\\"$ref\\\":\\\"#/definitions/ExprRef\\\"}]},\\\"lineBreak\\\":{\\\"anyOf\\\":[{\\\"description\\\":\\\"A delimiter, such as a newline character, upon which to break text strings into multiple lines. This property is ignored if the text is array-valued.\\\",\\\"type\\\":\\\"string\\\"},{\\\"$ref\\\":\\\"#/definitions/ExprRef\\\"}]},\\\"lineHeight\\\":{\\\"anyOf\\\":[{\\\"description\\\":\\\"The line height in pixels (the spacing between subsequent lines of text) for multi-line text marks.\\\",\\\"type\\\":\\\"number\\\"},{\\\"$ref\\\":\\\"#/definitions/ExprRef\\\"}]},\\\"opacity\\\":{\\\"anyOf\\\":[{\\\"type\\\":\\\"number\\\"},{\\\"$ref\\\":\\\"#/definitions/ExprRef\\\"}],\\\"description\\\":\\\"The overall opacity (value between [0,1]).\\\\n\\\\n__Default value:__ `0.7` for non-aggregate plots with `point`, `tick`, `circle`, or `square` marks or layered `bar` charts and `1` otherwise.\\\",\\\"maximum\\\":1,\\\"minimum\\\":0},\\\"order\\\":{\\\"description\\\":\\\"For line and trail marks, this `order` property can be set to `null` or `false` to make the lines use the original order in the data sources.\\\",\\\"type\\\":[\\\"null\\\",\\\"boolean\\\"]},\\\"orient\\\":{\\\"$ref\\\":\\\"#/definitions/Orientation\\\",\\\"description\\\":\\\"The orientation of a non-stacked bar, tick, area, and line charts. The value is either horizontal (default) or vertical. - For bar, rule and tick, this determines whether the size of the bar and tick should be applied to x or y dimension. - For area, this property determines the orient property of the Vega output. - For line and trail marks, this property determines the sort order of the points in the line if `config.sortLineBy` is not specified. For stacked charts, this is always determined by the orientation of the stack; therefore explicitly specified value will be ignored.\\\"},\\\"outerRadius\\\":{\\\"anyOf\\\":[{\\\"type\\\":\\\"number\\\"},{\\\"$ref\\\":\\\"#/definitions/ExprRef\\\"}],\\\"description\\\":\\\"The outer radius in pixels of arc marks. `outerRadius` is an alias for `radius`.\\\"},\\\"padAngle\\\":{\\\"anyOf\\\":[{\\\"description\\\":\\\"The angular padding applied to sides of the arc, in radians.\\\",\\\"type\\\":\\\"number\\\"},{\\\"$ref\\\":\\\"#/definitions/ExprRef\\\"}]},\\\"radius\\\":{\\\"anyOf\\\":[{\\\"type\\\":\\\"number\\\"},{\\\"$ref\\\":\\\"#/definitions/ExprRef\\\"}],\\\"description\\\":\\\"For arc mark, the primary (outer) radius in pixels.\\\\n\\\\nFor text marks, polar coordinate radial offset, in pixels, of the text from the origin determined by the `x` and `y` properties.\\\"},\\\"radius2\\\":{\\\"anyOf\\\":[{\\\"type\\\":\\\"number\\\"},{\\\"$ref\\\":\\\"#/definitions/ExprRef\\\"}],\\\"description\\\":\\\"The secondary (inner) radius in pixels of arc marks.\\\"},\\\"shape\\\":{\\\"anyOf\\\":[{\\\"anyOf\\\":[{\\\"$ref\\\":\\\"#/definitions/SymbolShape\\\"},{\\\"type\\\":\\\"string\\\"}],\\\"description\\\":\\\"Shape of the point marks. Supported values include: - plotting shapes: `\\\\\\\"circle\\\\\\\"`, `\\\\\\\"square\\\\\\\"`, `\\\\\\\"cross\\\\\\\"`, `\\\\\\\"diamond\\\\\\\"`, `\\\\\\\"triangle-up\\\\\\\"`, `\\\\\\\"triangle-down\\\\\\\"`, `\\\\\\\"triangle-right\\\\\\\"`, or `\\\\\\\"triangle-left\\\\\\\"`. - the line symbol `\\\\\\\"stroke\\\\\\\"` - centered directional shapes `\\\\\\\"arrow\\\\\\\"`, `\\\\\\\"wedge\\\\\\\"`, or `\\\\\\\"triangle\\\\\\\"` - a custom [SVG path string](https://developer.mozilla.org/en-US/docs/Web/SVG/Tutorial/Paths) (For correct sizing, custom shape paths should be defined within a square bounding box with coordinates ranging from -1 to 1 along both the x and y dimensions.)\\\\n\\\\n__Default value:__ `\\\\\\\"circle\\\\\\\"`\\\"},{\\\"$ref\\\":\\\"#/definitions/ExprRef\\\"}]},\\\"size\\\":{\\\"anyOf\\\":[{\\\"type\\\":\\\"number\\\"},{\\\"$ref\\\":\\\"#/definitions/ExprRef\\\"}],\\\"description\\\":\\\"Default size for marks. - For `point`/`circle`/`square`, this represents the pixel area of the marks. Note that this value sets the area of the symbol; the side lengths will increase with the square root of this value. - For `bar`, this represents the band size of the bar, in pixels. - For `text`, this represents the font size, in pixels.\\\\n\\\\n__Default value:__ - `30` for point, circle, square marks; width/height's `step` - `2` for bar marks with discrete dimensions; - `5` for bar marks with continuous dimensions; - `11` for text marks.\\\",\\\"minimum\\\":0},\\\"smooth\\\":{\\\"anyOf\\\":[{\\\"description\\\":\\\"A boolean flag (default true) indicating if the image should be smoothed when resized. If false, individual pixels should be scaled directly rather than interpolated with smoothing. For SVG rendering, this option may not work in some browsers due to lack of standardization.\\\",\\\"type\\\":\\\"boolean\\\"},{\\\"$ref\\\":\\\"#/definitions/ExprRef\\\"}]},\\\"startAngle\\\":{\\\"anyOf\\\":[{\\\"description\\\":\\\"The start angle in radians for arc marks. A value of `0` indicates up (north), increasing values proceed clockwise.\\\",\\\"type\\\":\\\"number\\\"},{\\\"$ref\\\":\\\"#/definitions/ExprRef\\\"}]},\\\"stroke\\\":{\\\"anyOf\\\":[{\\\"$ref\\\":\\\"#/definitions/Color\\\"},{\\\"$ref\\\":\\\"#/definitions/Gradient\\\"},{\\\"type\\\":\\\"null\\\"},{\\\"$ref\\\":\\\"#/definitions/ExprRef\\\"}],\\\"description\\\":\\\"Default stroke color. This property has higher precedence than `config.color`. Set to `null` to remove stroke.\\\\n\\\\n__Default value:__ (None)\\\"},\\\"strokeCap\\\":{\\\"anyOf\\\":[{\\\"$ref\\\":\\\"#/definitions/StrokeCap\\\",\\\"description\\\":\\\"The stroke cap for line ending style. One of `\\\\\\\"butt\\\\\\\"`, `\\\\\\\"round\\\\\\\"`, or `\\\\\\\"square\\\\\\\"`.\\\\n\\\\n__Default value:__ `\\\\\\\"butt\\\\\\\"`\\\"},{\\\"$ref\\\":\\\"#/definitions/ExprRef\\\"}]},\\\"strokeDash\\\":{\\\"anyOf\\\":[{\\\"description\\\":\\\"An array of alternating stroke, space lengths for creating dashed or dotted lines.\\\",\\\"items\\\":{\\\"type\\\":\\\"number\\\"},\\\"type\\\":\\\"array\\\"},{\\\"$ref\\\":\\\"#/definitions/ExprRef\\\"}]},\\\"strokeDashOffset\\\":{\\\"anyOf\\\":[{\\\"description\\\":\\\"The offset (in pixels) into which to begin drawing with the stroke dash array.\\\",\\\"type\\\":\\\"number\\\"},{\\\"$ref\\\":\\\"#/definitions/ExprRef\\\"}]},\\\"strokeJoin\\\":{\\\"anyOf\\\":[{\\\"$ref\\\":\\\"#/definitions/StrokeJoin\\\",\\\"description\\\":\\\"The stroke line join method. One of `\\\\\\\"miter\\\\\\\"`, `\\\\\\\"round\\\\\\\"` or `\\\\\\\"bevel\\\\\\\"`.\\\\n\\\\n__Default value:__ `\\\\\\\"miter\\\\\\\"`\\\"},{\\\"$ref\\\":\\\"#/definitions/ExprRef\\\"}]},\\\"strokeMiterLimit\\\":{\\\"anyOf\\\":[{\\\"description\\\":\\\"The miter limit at which to bevel a line join.\\\",\\\"type\\\":\\\"number\\\"},{\\\"$ref\\\":\\\"#/definitions/ExprRef\\\"}]},\\\"strokeOffset\\\":{\\\"anyOf\\\":[{\\\"description\\\":\\\"The offset in pixels at which to draw the group stroke and fill. If unspecified, the default behavior is to dynamically offset stroked groups such that 1 pixel stroke widths align with the pixel grid.\\\",\\\"type\\\":\\\"number\\\"},{\\\"$ref\\\":\\\"#/definitions/ExprRef\\\"}]},\\\"strokeOpacity\\\":{\\\"anyOf\\\":[{\\\"description\\\":\\\"The stroke opacity (value between [0,1]).\\\\n\\\\n__Default value:__ `1`\\\",\\\"maximum\\\":1,\\\"minimum\\\":0,\\\"type\\\":\\\"number\\\"},{\\\"$ref\\\":\\\"#/definitions/ExprRef\\\"}]},\\\"strokeWidth\\\":{\\\"anyOf\\\":[{\\\"description\\\":\\\"The stroke width, in pixels.\\\",\\\"minimum\\\":0,\\\"type\\\":\\\"number\\\"},{\\\"$ref\\\":\\\"#/definitions/ExprRef\\\"}]},\\\"tension\\\":{\\\"anyOf\\\":[{\\\"description\\\":\\\"Depending on the interpolation type, sets the tension parameter (for line and area marks).\\\",\\\"type\\\":\\\"number\\\"},{\\\"$ref\\\":\\\"#/definitions/ExprRef\\\"}]},\\\"text\\\":{\\\"anyOf\\\":[{\\\"$ref\\\":\\\"#/definitions/Text\\\",\\\"description\\\":\\\"Placeholder text if the `text` channel is not specified\\\"},{\\\"$ref\\\":\\\"#/definitions/ExprRef\\\"}]},\\\"theta\\\":{\\\"anyOf\\\":[{\\\"type\\\":\\\"number\\\"},{\\\"$ref\\\":\\\"#/definitions/ExprRef\\\"}],\\\"description\\\":\\\"- For arc marks, the arc length in radians if theta2 is not specified, otherwise the start arc angle. (A value of 0 indicates up or “north”, increasing values proceed clockwise.)\\\\n\\\\n- For text marks, polar coordinate angle in radians.\\\",\\\"maximum\\\":360,\\\"minimum\\\":0},\\\"theta2\\\":{\\\"anyOf\\\":[{\\\"type\\\":\\\"number\\\"},{\\\"$ref\\\":\\\"#/definitions/ExprRef\\\"}],\\\"description\\\":\\\"The end angle of arc marks in radians. A value of 0 indicates up or “north”, increasing values proceed clockwise.\\\"},\\\"timeUnitBand\\\":{\\\"description\\\":\\\"Default relative band size for a time unit. If set to `1`, the bandwidth of the marks will be equal to the time unit band step. If set to `0.5`, bandwidth of the marks will be half of the time unit band step.\\\",\\\"type\\\":\\\"number\\\"},\\\"timeUnitBandPosition\\\":{\\\"description\\\":\\\"Default relative band position for a time unit. If set to `0`, the marks will be positioned at the beginning of the time unit band step. If set to `0.5`, the marks will be positioned in the middle of the time unit band step.\\\",\\\"type\\\":\\\"number\\\"},\\\"tooltip\\\":{\\\"anyOf\\\":[{\\\"type\\\":\\\"number\\\"},{\\\"type\\\":\\\"string\\\"},{\\\"type\\\":\\\"boolean\\\"},{\\\"$ref\\\":\\\"#/definitions/TooltipContent\\\"},{\\\"$ref\\\":\\\"#/definitions/ExprRef\\\"},{\\\"type\\\":\\\"null\\\"}],\\\"description\\\":\\\"The tooltip text string to show upon mouse hover or an object defining which fields should the tooltip be derived from.\\\\n\\\\n- If `tooltip` is `true` or `{\\\\\\\"content\\\\\\\": \\\\\\\"encoding\\\\\\\"}`, then all fields from `encoding` will be used. - If `tooltip` is `{\\\\\\\"content\\\\\\\": \\\\\\\"data\\\\\\\"}`, then all fields that appear in the highlighted data point will be used. - If set to `null` or `false`, then no tooltip will be used.\\\\n\\\\nSee the [`tooltip`](https://vega.github.io/vega-lite/docs/tooltip.html) documentation for a detailed discussion about tooltip  in Vega-Lite.\\\\n\\\\n__Default value:__ `null`\\\"},\\\"url\\\":{\\\"anyOf\\\":[{\\\"$ref\\\":\\\"#/definitions/URI\\\",\\\"description\\\":\\\"The URL of the image file for image marks.\\\"},{\\\"$ref\\\":\\\"#/definitions/ExprRef\\\"}]},\\\"width\\\":{\\\"anyOf\\\":[{\\\"description\\\":\\\"Width of the marks.\\\",\\\"type\\\":\\\"number\\\"},{\\\"$ref\\\":\\\"#/definitions/ExprRef\\\"}]},\\\"x\\\":{\\\"anyOf\\\":[{\\\"type\\\":\\\"number\\\"},{\\\"const\\\":\\\"width\\\",\\\"type\\\":\\\"string\\\"},{\\\"$ref\\\":\\\"#/definitions/ExprRef\\\"}],\\\"description\\\":\\\"X coordinates of the marks, or width of horizontal `\\\\\\\"bar\\\\\\\"` and `\\\\\\\"area\\\\\\\"` without specified `x2` or `width`.\\\\n\\\\nThe `value` of this channel can be a number or a string `\\\\\\\"width\\\\\\\"` for the width of the plot.\\\"},\\\"x2\\\":{\\\"anyOf\\\":[{\\\"type\\\":\\\"number\\\"},{\\\"const\\\":\\\"width\\\",\\\"type\\\":\\\"string\\\"},{\\\"$ref\\\":\\\"#/definitions/ExprRef\\\"}],\\\"description\\\":\\\"X2 coordinates for ranged `\\\\\\\"area\\\\\\\"`, `\\\\\\\"bar\\\\\\\"`, `\\\\\\\"rect\\\\\\\"`, and  `\\\\\\\"rule\\\\\\\"`.\\\\n\\\\nThe `value` of this channel can be a number or a string `\\\\\\\"width\\\\\\\"` for the width of the plot.\\\"},\\\"y\\\":{\\\"anyOf\\\":[{\\\"type\\\":\\\"number\\\"},{\\\"const\\\":\\\"height\\\",\\\"type\\\":\\\"string\\\"},{\\\"$ref\\\":\\\"#/definitions/ExprRef\\\"}],\\\"description\\\":\\\"Y coordinates of the marks, or height of vertical `\\\\\\\"bar\\\\\\\"` and `\\\\\\\"area\\\\\\\"` without specified `y2` or `height`.\\\\n\\\\nThe `value` of this channel can be a number or a string `\\\\\\\"height\\\\\\\"` for the height of the plot.\\\"},\\\"y2\\\":{\\\"anyOf\\\":[{\\\"type\\\":\\\"number\\\"},{\\\"const\\\":\\\"height\\\",\\\"type\\\":\\\"string\\\"},{\\\"$ref\\\":\\\"#/definitions/ExprRef\\\"}],\\\"description\\\":\\\"Y2 coordinates for ranged `\\\\\\\"area\\\\\\\"`, `\\\\\\\"bar\\\\\\\"`, `\\\\\\\"rect\\\\\\\"`, and  `\\\\\\\"rule\\\\\\\"`.\\\\n\\\\nThe `value` of this channel can be a number or a string `\\\\\\\"height\\\\\\\"` for the height of the plot.\\\"}},\\\"type\\\":\\\"object\\\"},\\\"MarkDef\\\":{\\\"additionalProperties\\\":false,\\\"properties\\\":{\\\"align\\\":{\\\"anyOf\\\":[{\\\"$ref\\\":\\\"#/definitions/Align\\\"},{\\\"$ref\\\":\\\"#/definitions/ExprRef\\\"}],\\\"description\\\":\\\"The horizontal alignment of the text or ranged marks (area, bar, image, rect, rule). One of `\\\\\\\"left\\\\\\\"`, `\\\\\\\"right\\\\\\\"`, `\\\\\\\"center\\\\\\\"`.\\\\n\\\\n__Note:__ Expression reference is *not* supported for range marks.\\\"},\\\"angle\\\":{\\\"anyOf\\\":[{\\\"description\\\":\\\"The rotation angle of the text, in degrees.\\\",\\\"maximum\\\":360,\\\"minimum\\\":0,\\\"type\\\":\\\"number\\\"},{\\\"$ref\\\":\\\"#/definitions/ExprRef\\\"}]},\\\"aria\\\":{\\\"anyOf\\\":[{\\\"description\\\":\\\"A boolean flag indicating if [ARIA attributes](https://developer.mozilla.org/en-US/docs/Web/Accessibility/ARIA) should be included (SVG output only). If `false`, the \\\\\\\"aria-hidden\\\\\\\" attribute will be set on the output SVG element, removing the mark item from the ARIA accessibility tree.\\\",\\\"type\\\":\\\"boolean\\\"},{\\\"$ref\\\":\\\"#/definitions/ExprRef\\\"}]},\\\"ariaRole\\\":{\\\"anyOf\\\":[{\\\"description\\\":\\\"Sets the type of user interface element of the mark item for [ARIA accessibility](https://developer.mozilla.org/en-US/docs/Web/Accessibility/ARIA) (SVG output only). If specified, this property determines the \\\\\\\"role\\\\\\\" attribute. Warning: this property is experimental and may be changed in the future.\\\",\\\"type\\\":\\\"string\\\"},{\\\"$ref\\\":\\\"#/definitions/ExprRef\\\"}]},\\\"ariaRoleDescription\\\":{\\\"anyOf\\\":[{\\\"description\\\":\\\"A human-readable, author-localized description for the role of the mark item for [ARIA accessibility](https://developer.mozilla.org/en-US/docs/Web/Accessibility/ARIA) (SVG output only). If specified, this property determines the \\\\\\\"aria-roledescription\\\\\\\" attribute. Warning: this property is experimental and may be changed in the future.\\\",\\\"type\\\":\\\"string\\\"},{\\\"$ref\\\":\\\"#/definitions/ExprRef\\\"}]},\\\"aspect\\\":{\\\"anyOf\\\":[{\\\"description\\\":\\\"Whether to keep aspect ratio of image marks.\\\",\\\"type\\\":\\\"boolean\\\"},{\\\"$ref\\\":\\\"#/definitions/ExprRef\\\"}]},\\\"bandSize\\\":{\\\"description\\\":\\\"The width of the ticks.\\\\n\\\\n__Default value:__  3/4 of step (width step for horizontal ticks and height step for vertical ticks).\\\",\\\"minimum\\\":0,\\\"type\\\":\\\"number\\\"},\\\"baseline\\\":{\\\"anyOf\\\":[{\\\"$ref\\\":\\\"#/definitions/TextBaseline\\\"},{\\\"$ref\\\":\\\"#/definitions/ExprRef\\\"}],\\\"description\\\":\\\"For text marks, the vertical text baseline. One of `\\\\\\\"alphabetic\\\\\\\"` (default), `\\\\\\\"top\\\\\\\"`, `\\\\\\\"middle\\\\\\\"`, `\\\\\\\"bottom\\\\\\\"`, `\\\\\\\"line-top\\\\\\\"`, `\\\\\\\"line-bottom\\\\\\\"`, or an expression reference that provides one of the valid values. The `\\\\\\\"line-top\\\\\\\"` and `\\\\\\\"line-bottom\\\\\\\"` values operate similarly to `\\\\\\\"top\\\\\\\"` and `\\\\\\\"bottom\\\\\\\"`, but are calculated relative to the `lineHeight` rather than `fontSize` alone.\\\\n\\\\nFor range marks, the vertical alignment of the marks. One of `\\\\\\\"top\\\\\\\"`, `\\\\\\\"middle\\\\\\\"`, `\\\\\\\"bottom\\\\\\\"`.\\\\n\\\\n__Note:__ Expression reference is *not* supported for range marks.\\\"},\\\"binSpacing\\\":{\\\"description\\\":\\\"Offset between bars for binned field. The ideal value for this is either 0 (preferred by statisticians) or 1 (Vega-Lite default, D3 example style).\\\\n\\\\n__Default value:__ `1`\\\",\\\"minimum\\\":0,\\\"type\\\":\\\"number\\\"},\\\"blend\\\":{\\\"anyOf\\\":[{\\\"$ref\\\":\\\"#/definitions/Blend\\\",\\\"description\\\":\\\"The color blend mode for drawing an item on its current background. Any valid [CSS mix-blend-mode](https://developer.mozilla.org/en-US/docs/Web/CSS/mix-blend-mode) value can be used.\\\\n\\\\n__Default value: `\\\\\\\"source-over\\\\\\\"`\\\"},{\\\"$ref\\\":\\\"#/definitions/ExprRef\\\"}]},\\\"clip\\\":{\\\"description\\\":\\\"Whether a mark be clipped to the enclosing group’s width and height.\\\",\\\"type\\\":\\\"boolean\\\"},\\\"color\\\":{\\\"anyOf\\\":[{\\\"$ref\\\":\\\"#/definitions/Color\\\"},{\\\"$ref\\\":\\\"#/definitions/Gradient\\\"},{\\\"$ref\\\":\\\"#/definitions/ExprRef\\\"}],\\\"description\\\":\\\"Default color.\\\\n\\\\n__Default value:__ <span style=\\\\\\\"color: #4682b4;\\\\\\\">&#9632;</span> `\\\\\\\"#4682b4\\\\\\\"`\\\\n\\\\n__Note:__ - This property cannot be used in a [style config](https://vega.github.io/vega-lite/docs/mark.html#style-config). - The `fill` and `stroke` properties have higher precedence than `color` and will override `color`.\\\"},\\\"continuousBandSize\\\":{\\\"description\\\":\\\"The default size of the bars on continuous scales.\\\\n\\\\n__Default value:__ `5`\\\",\\\"minimum\\\":0,\\\"type\\\":\\\"number\\\"},\\\"cornerRadius\\\":{\\\"anyOf\\\":[{\\\"description\\\":\\\"The radius in pixels of rounded rectangles or arcs' corners.\\\\n\\\\n__Default value:__ `0`\\\",\\\"type\\\":\\\"number\\\"},{\\\"$ref\\\":\\\"#/definitions/ExprRef\\\"}]},\\\"cornerRadiusBottomLeft\\\":{\\\"anyOf\\\":[{\\\"description\\\":\\\"The radius in pixels of rounded rectangles' bottom left corner.\\\\n\\\\n__Default value:__ `0`\\\",\\\"type\\\":\\\"number\\\"},{\\\"$ref\\\":\\\"#/definitions/ExprRef\\\"}]},\\\"cornerRadiusBottomRight\\\":{\\\"anyOf\\\":[{\\\"description\\\":\\\"The radius in pixels of rounded rectangles' bottom right corner.\\\\n\\\\n__Default value:__ `0`\\\",\\\"type\\\":\\\"number\\\"},{\\\"$ref\\\":\\\"#/definitions/ExprRef\\\"}]},\\\"cornerRadiusEnd\\\":{\\\"anyOf\\\":[{\\\"type\\\":\\\"number\\\"},{\\\"$ref\\\":\\\"#/definitions/ExprRef\\\"}],\\\"description\\\":\\\"- For vertical bars, top-left and top-right corner radius. - For horizontal bars, top-right and bottom-right corner radius.\\\"},\\\"cornerRadiusTopLeft\\\":{\\\"anyOf\\\":[{\\\"description\\\":\\\"The radius in pixels of rounded rectangles' top right corner.\\\\n\\\\n__Default value:__ `0`\\\",\\\"type\\\":\\\"number\\\"},{\\\"$ref\\\":\\\"#/definitions/ExprRef\\\"}]},\\\"cornerRadiusTopRight\\\":{\\\"anyOf\\\":[{\\\"description\\\":\\\"The radius in pixels of rounded rectangles' top left corner.\\\\n\\\\n__Default value:__ `0`\\\",\\\"type\\\":\\\"number\\\"},{\\\"$ref\\\":\\\"#/definitions/ExprRef\\\"}]},\\\"cursor\\\":{\\\"anyOf\\\":[{\\\"$ref\\\":\\\"#/definitions/Cursor\\\",\\\"description\\\":\\\"The mouse cursor used over the mark. Any valid [CSS cursor type](https://developer.mozilla.org/en-US/docs/Web/CSS/cursor#Values) can be used.\\\"},{\\\"$ref\\\":\\\"#/definitions/ExprRef\\\"}]},\\\"description\\\":{\\\"anyOf\\\":[{\\\"description\\\":\\\"A text description of the mark item for [ARIA accessibility](https://developer.mozilla.org/en-US/docs/Web/Accessibility/ARIA) (SVG output only). If specified, this property determines the [\\\\\\\"aria-label\\\\\\\" attribute](https://developer.mozilla.org/en-US/docs/Web/Accessibility/ARIA/ARIA_Techniques/Using_the_aria-label_attribute).\\\",\\\"type\\\":\\\"string\\\"},{\\\"$ref\\\":\\\"#/definitions/ExprRef\\\"}]},\\\"dir\\\":{\\\"anyOf\\\":[{\\\"$ref\\\":\\\"#/definitions/TextDirection\\\",\\\"description\\\":\\\"The direction of the text. One of `\\\\\\\"ltr\\\\\\\"` (left-to-right) or `\\\\\\\"rtl\\\\\\\"` (right-to-left). This property determines on which side is truncated in response to the limit parameter.\\\\n\\\\n__Default value:__ `\\\\\\\"ltr\\\\\\\"`\\\"},{\\\"$ref\\\":\\\"#/definitions/ExprRef\\\"}]},\\\"discreteBandSize\\\":{\\\"description\\\":\\\"The default size of the bars with discrete dimensions. If unspecified, the default size is  `step-2`, which provides 2 pixel offset between bars.\\\",\\\"minimum\\\":0,\\\"type\\\":\\\"number\\\"},\\\"dx\\\":{\\\"anyOf\\\":[{\\\"description\\\":\\\"The horizontal offset, in pixels, between the text label and its anchor point. The offset is applied after rotation by the _angle_ property.\\\",\\\"type\\\":\\\"number\\\"},{\\\"$ref\\\":\\\"#/definitions/ExprRef\\\"}]},\\\"dy\\\":{\\\"anyOf\\\":[{\\\"description\\\":\\\"The vertical offset, in pixels, between the text label and its anchor point. The offset is applied after rotation by the _angle_ property.\\\",\\\"type\\\":\\\"number\\\"},{\\\"$ref\\\":\\\"#/definitions/ExprRef\\\"}]},\\\"ellipsis\\\":{\\\"anyOf\\\":[{\\\"description\\\":\\\"The ellipsis string for text truncated in response to the limit parameter.\\\\n\\\\n__Default value:__ `\\\\\\\"…\\\\\\\"`\\\",\\\"type\\\":\\\"string\\\"},{\\\"$ref\\\":\\\"#/definitions/ExprRef\\\"}]},\\\"fill\\\":{\\\"anyOf\\\":[{\\\"$ref\\\":\\\"#/definitions/Color\\\"},{\\\"$ref\\\":\\\"#/definitions/Gradient\\\"},{\\\"type\\\":\\\"null\\\"},{\\\"$ref\\\":\\\"#/definitions/ExprRef\\\"}],\\\"description\\\":\\\"Default fill color. This property has higher precedence than `config.color`. Set to `null` to remove fill.\\\\n\\\\n__Default value:__ (None)\\\"},\\\"fillOpacity\\\":{\\\"anyOf\\\":[{\\\"description\\\":\\\"The fill opacity (value between [0,1]).\\\\n\\\\n__Default value:__ `1`\\\",\\\"maximum\\\":1,\\\"minimum\\\":0,\\\"type\\\":\\\"number\\\"},{\\\"$ref\\\":\\\"#/definitions/ExprRef\\\"}]},\\\"filled\\\":{\\\"description\\\":\\\"Whether the mark's color should be used as fill color instead of stroke color.\\\\n\\\\n__Default value:__ `false` for all `point`, `line`, and `rule` marks as well as `geoshape` marks for [`graticule`](https://vega.github.io/vega-lite/docs/data.html#graticule) data sources; otherwise, `true`.\\\\n\\\\n__Note:__ This property cannot be used in a [style config](https://vega.github.io/vega-lite/docs/mark.html#style-config).\\\",\\\"type\\\":\\\"boolean\\\"},\\\"font\\\":{\\\"anyOf\\\":[{\\\"description\\\":\\\"The typeface to set the text in (e.g., `\\\\\\\"Helvetica Neue\\\\\\\"`).\\\",\\\"type\\\":\\\"string\\\"},{\\\"$ref\\\":\\\"#/definitions/ExprRef\\\"}]},\\\"fontSize\\\":{\\\"anyOf\\\":[{\\\"description\\\":\\\"The font size, in pixels.\\\\n\\\\n__Default value:__ `11`\\\",\\\"minimum\\\":0,\\\"type\\\":\\\"number\\\"},{\\\"$ref\\\":\\\"#/definitions/ExprRef\\\"}]},\\\"fontStyle\\\":{\\\"anyOf\\\":[{\\\"$ref\\\":\\\"#/definitions/FontStyle\\\",\\\"description\\\":\\\"The font style (e.g., `\\\\\\\"italic\\\\\\\"`).\\\"},{\\\"$ref\\\":\\\"#/definitions/ExprRef\\\"}]},\\\"fontWeight\\\":{\\\"anyOf\\\":[{\\\"$ref\\\":\\\"#/definitions/FontWeight\\\",\\\"description\\\":\\\"The font weight. This can be either a string (e.g `\\\\\\\"bold\\\\\\\"`, `\\\\\\\"normal\\\\\\\"`) or a number (`100`, `200`, `300`, ..., `900` where `\\\\\\\"normal\\\\\\\"` = `400` and `\\\\\\\"bold\\\\\\\"` = `700`).\\\"},{\\\"$ref\\\":\\\"#/definitions/ExprRef\\\"}]},\\\"height\\\":{\\\"anyOf\\\":[{\\\"description\\\":\\\"Height of the marks.\\\",\\\"type\\\":\\\"number\\\"},{\\\"$ref\\\":\\\"#/definitions/ExprRef\\\"}]},\\\"href\\\":{\\\"anyOf\\\":[{\\\"$ref\\\":\\\"#/definitions/URI\\\",\\\"description\\\":\\\"A URL to load upon mouse click. If defined, the mark acts as a hyperlink.\\\"},{\\\"$ref\\\":\\\"#/definitions/ExprRef\\\"}]},\\\"innerRadius\\\":{\\\"anyOf\\\":[{\\\"type\\\":\\\"number\\\"},{\\\"$ref\\\":\\\"#/definitions/ExprRef\\\"}],\\\"description\\\":\\\"The inner radius in pixels of arc marks. `innerRadius` is an alias for `radius2`.\\\"},\\\"interpolate\\\":{\\\"anyOf\\\":[{\\\"$ref\\\":\\\"#/definitions/Interpolate\\\",\\\"description\\\":\\\"The line interpolation method to use for line and area marks. One of the following: - `\\\\\\\"linear\\\\\\\"`: piecewise linear segments, as in a polyline. - `\\\\\\\"linear-closed\\\\\\\"`: close the linear segments to form a polygon. - `\\\\\\\"step\\\\\\\"`: alternate between horizontal and vertical segments, as in a step function. - `\\\\\\\"step-before\\\\\\\"`: alternate between vertical and horizontal segments, as in a step function. - `\\\\\\\"step-after\\\\\\\"`: alternate between horizontal and vertical segments, as in a step function. - `\\\\\\\"basis\\\\\\\"`: a B-spline, with control point duplication on the ends. - `\\\\\\\"basis-open\\\\\\\"`: an open B-spline; may not intersect the start or end. - `\\\\\\\"basis-closed\\\\\\\"`: a closed B-spline, as in a loop. - `\\\\\\\"cardinal\\\\\\\"`: a Cardinal spline, with control point duplication on the ends. - `\\\\\\\"cardinal-open\\\\\\\"`: an open Cardinal spline; may not intersect the start or end, but will intersect other control points. - `\\\\\\\"cardinal-closed\\\\\\\"`: a closed Cardinal spline, as in a loop. - `\\\\\\\"bundle\\\\\\\"`: equivalent to basis, except the tension parameter is used to straighten the spline. - `\\\\\\\"monotone\\\\\\\"`: cubic interpolation that preserves monotonicity in y.\\\"},{\\\"$ref\\\":\\\"#/definitions/ExprRef\\\"}]},\\\"invalid\\\":{\\\"description\\\":\\\"Defines how Vega-Lite should handle marks for invalid values (`null` and `NaN`). - If set to `\\\\\\\"filter\\\\\\\"` (default), all data items with null values will be skipped (for line, trail, and area marks) or filtered (for other marks). - If `null`, all data items are included. In this case, invalid values will be interpreted as zeroes.\\\",\\\"enum\\\":[\\\"filter\\\",null],\\\"type\\\":[\\\"string\\\",\\\"null\\\"]},\\\"limit\\\":{\\\"anyOf\\\":[{\\\"description\\\":\\\"The maximum length of the text mark in pixels. The text value will be automatically truncated if the rendered size exceeds the limit.\\\\n\\\\n__Default value:__ `0` -- indicating no limit\\\",\\\"type\\\":\\\"number\\\"},{\\\"$ref\\\":\\\"#/definitions/ExprRef\\\"}]},\\\"line\\\":{\\\"anyOf\\\":[{\\\"type\\\":\\\"boolean\\\"},{\\\"$ref\\\":\\\"#/definitions/OverlayMarkDef\\\"}],\\\"description\\\":\\\"A flag for overlaying line on top of area marks, or an object defining the properties of the overlayed lines.\\\\n\\\\n- If this value is an empty object (`{}`) or `true`, lines with default properties will be used.\\\\n\\\\n- If this value is `false`, no lines would be automatically added to area marks.\\\\n\\\\n__Default value:__ `false`.\\\"},\\\"lineBreak\\\":{\\\"anyOf\\\":[{\\\"description\\\":\\\"A delimiter, such as a newline character, upon which to break text strings into multiple lines. This property is ignored if the text is array-valued.\\\",\\\"type\\\":\\\"string\\\"},{\\\"$ref\\\":\\\"#/definitions/ExprRef\\\"}]},\\\"lineHeight\\\":{\\\"anyOf\\\":[{\\\"description\\\":\\\"The line height in pixels (the spacing between subsequent lines of text) for multi-line text marks.\\\",\\\"type\\\":\\\"number\\\"},{\\\"$ref\\\":\\\"#/definitions/ExprRef\\\"}]},\\\"opacity\\\":{\\\"anyOf\\\":[{\\\"type\\\":\\\"number\\\"},{\\\"$ref\\\":\\\"#/definitions/ExprRef\\\"}],\\\"description\\\":\\\"The overall opacity (value between [0,1]).\\\\n\\\\n__Default value:__ `0.7` for non-aggregate plots with `point`, `tick`, `circle`, or `square` marks or layered `bar` charts and `1` otherwise.\\\",\\\"maximum\\\":1,\\\"minimum\\\":0},\\\"order\\\":{\\\"description\\\":\\\"For line and trail marks, this `order` property can be set to `null` or `false` to make the lines use the original order in the data sources.\\\",\\\"type\\\":[\\\"null\\\",\\\"boolean\\\"]},\\\"orient\\\":{\\\"$ref\\\":\\\"#/definitions/Orientation\\\",\\\"description\\\":\\\"The orientation of a non-stacked bar, tick, area, and line charts. The value is either horizontal (default) or vertical. - For bar, rule and tick, this determines whether the size of the bar and tick should be applied to x or y dimension. - For area, this property determines the orient property of the Vega output. - For line and trail marks, this property determines the sort order of the points in the line if `config.sortLineBy` is not specified. For stacked charts, this is always determined by the orientation of the stack; therefore explicitly specified value will be ignored.\\\"},\\\"outerRadius\\\":{\\\"anyOf\\\":[{\\\"type\\\":\\\"number\\\"},{\\\"$ref\\\":\\\"#/definitions/ExprRef\\\"}],\\\"description\\\":\\\"The outer radius in pixels of arc marks. `outerRadius` is an alias for `radius`.\\\"},\\\"padAngle\\\":{\\\"anyOf\\\":[{\\\"description\\\":\\\"The angular padding applied to sides of the arc, in radians.\\\",\\\"type\\\":\\\"number\\\"},{\\\"$ref\\\":\\\"#/definitions/ExprRef\\\"}]},\\\"point\\\":{\\\"anyOf\\\":[{\\\"type\\\":\\\"boolean\\\"},{\\\"$ref\\\":\\\"#/definitions/OverlayMarkDef\\\"},{\\\"const\\\":\\\"transparent\\\",\\\"type\\\":\\\"string\\\"}],\\\"description\\\":\\\"A flag for overlaying points on top of line or area marks, or an object defining the properties of the overlayed points.\\\\n\\\\n- If this property is `\\\\\\\"transparent\\\\\\\"`, transparent points will be used (for enhancing tooltips and selections).\\\\n\\\\n- If this property is an empty object (`{}`) or `true`, filled points with default properties will be used.\\\\n\\\\n- If this property is `false`, no points would be automatically added to line or area marks.\\\\n\\\\n__Default value:__ `false`.\\\"},\\\"radius\\\":{\\\"anyOf\\\":[{\\\"type\\\":\\\"number\\\"},{\\\"$ref\\\":\\\"#/definitions/ExprRef\\\"}],\\\"description\\\":\\\"For arc mark, the primary (outer) radius in pixels.\\\\n\\\\nFor text marks, polar coordinate radial offset, in pixels, of the text from the origin determined by the `x` and `y` properties.\\\"},\\\"radius2\\\":{\\\"anyOf\\\":[{\\\"type\\\":\\\"number\\\"},{\\\"$ref\\\":\\\"#/definitions/ExprRef\\\"}],\\\"description\\\":\\\"The secondary (inner) radius in pixels of arc marks.\\\"},\\\"radius2Offset\\\":{\\\"anyOf\\\":[{\\\"type\\\":\\\"number\\\"},{\\\"$ref\\\":\\\"#/definitions/ExprRef\\\"}],\\\"description\\\":\\\"Offset for radius2.\\\"},\\\"radiusOffset\\\":{\\\"anyOf\\\":[{\\\"type\\\":\\\"number\\\"},{\\\"$ref\\\":\\\"#/definitions/ExprRef\\\"}],\\\"description\\\":\\\"Offset for radius.\\\"},\\\"shape\\\":{\\\"anyOf\\\":[{\\\"anyOf\\\":[{\\\"$ref\\\":\\\"#/definitions/SymbolShape\\\"},{\\\"type\\\":\\\"string\\\"}],\\\"description\\\":\\\"Shape of the point marks. Supported values include: - plotting shapes: `\\\\\\\"circle\\\\\\\"`, `\\\\\\\"square\\\\\\\"`, `\\\\\\\"cross\\\\\\\"`, `\\\\\\\"diamond\\\\\\\"`, `\\\\\\\"triangle-up\\\\\\\"`, `\\\\\\\"triangle-down\\\\\\\"`, `\\\\\\\"triangle-right\\\\\\\"`, or `\\\\\\\"triangle-left\\\\\\\"`. - the line symbol `\\\\\\\"stroke\\\\\\\"` - centered directional shapes `\\\\\\\"arrow\\\\\\\"`, `\\\\\\\"wedge\\\\\\\"`, or `\\\\\\\"triangle\\\\\\\"` - a custom [SVG path string](https://developer.mozilla.org/en-US/docs/Web/SVG/Tutorial/Paths) (For correct sizing, custom shape paths should be defined within a square bounding box with coordinates ranging from -1 to 1 along both the x and y dimensions.)\\\\n\\\\n__Default value:__ `\\\\\\\"circle\\\\\\\"`\\\"},{\\\"$ref\\\":\\\"#/definitions/ExprRef\\\"}]},\\\"size\\\":{\\\"anyOf\\\":[{\\\"type\\\":\\\"number\\\"},{\\\"$ref\\\":\\\"#/definitions/ExprRef\\\"}],\\\"description\\\":\\\"Default size for marks. - For `point`/`circle`/`square`, this represents the pixel area of the marks. Note that this value sets the area of the symbol; the side lengths will increase with the square root of this value. - For `bar`, this represents the band size of the bar, in pixels. - For `text`, this represents the font size, in pixels.\\\\n\\\\n__Default value:__ - `30` for point, circle, square marks; width/height's `step` - `2` for bar marks with discrete dimensions; - `5` for bar marks with continuous dimensions; - `11` for text marks.\\\",\\\"minimum\\\":0},\\\"smooth\\\":{\\\"anyOf\\\":[{\\\"description\\\":\\\"A boolean flag (default true) indicating if the image should be smoothed when resized. If false, individual pixels should be scaled directly rather than interpolated with smoothing. For SVG rendering, this option may not work in some browsers due to lack of standardization.\\\",\\\"type\\\":\\\"boolean\\\"},{\\\"$ref\\\":\\\"#/definitions/ExprRef\\\"}]},\\\"stroke\\\":{\\\"anyOf\\\":[{\\\"$ref\\\":\\\"#/definitions/Color\\\"},{\\\"$ref\\\":\\\"#/definitions/Gradient\\\"},{\\\"type\\\":\\\"null\\\"},{\\\"$ref\\\":\\\"#/definitions/ExprRef\\\"}],\\\"description\\\":\\\"Default stroke color. This property has higher precedence than `config.color`. Set to `null` to remove stroke.\\\\n\\\\n__Default value:__ (None)\\\"},\\\"strokeCap\\\":{\\\"anyOf\\\":[{\\\"$ref\\\":\\\"#/definitions/StrokeCap\\\",\\\"description\\\":\\\"The stroke cap for line ending style. One of `\\\\\\\"butt\\\\\\\"`, `\\\\\\\"round\\\\\\\"`, or `\\\\\\\"square\\\\\\\"`.\\\\n\\\\n__Default value:__ `\\\\\\\"butt\\\\\\\"`\\\"},{\\\"$ref\\\":\\\"#/definitions/ExprRef\\\"}]},\\\"strokeDash\\\":{\\\"anyOf\\\":[{\\\"description\\\":\\\"An array of alternating stroke, space lengths for creating dashed or dotted lines.\\\",\\\"items\\\":{\\\"type\\\":\\\"number\\\"},\\\"type\\\":\\\"array\\\"},{\\\"$ref\\\":\\\"#/definitions/ExprRef\\\"}]},\\\"strokeDashOffset\\\":{\\\"anyOf\\\":[{\\\"description\\\":\\\"The offset (in pixels) into which to begin drawing with the stroke dash array.\\\",\\\"type\\\":\\\"number\\\"},{\\\"$ref\\\":\\\"#/definitions/ExprRef\\\"}]},\\\"strokeJoin\\\":{\\\"anyOf\\\":[{\\\"$ref\\\":\\\"#/definitions/StrokeJoin\\\",\\\"description\\\":\\\"The stroke line join method. One of `\\\\\\\"miter\\\\\\\"`, `\\\\\\\"round\\\\\\\"` or `\\\\\\\"bevel\\\\\\\"`.\\\\n\\\\n__Default value:__ `\\\\\\\"miter\\\\\\\"`\\\"},{\\\"$ref\\\":\\\"#/definitions/ExprRef\\\"}]},\\\"strokeMiterLimit\\\":{\\\"anyOf\\\":[{\\\"description\\\":\\\"The miter limit at which to bevel a line join.\\\",\\\"type\\\":\\\"number\\\"},{\\\"$ref\\\":\\\"#/definitions/ExprRef\\\"}]},\\\"strokeOffset\\\":{\\\"anyOf\\\":[{\\\"description\\\":\\\"The offset in pixels at which to draw the group stroke and fill. If unspecified, the default behavior is to dynamically offset stroked groups such that 1 pixel stroke widths align with the pixel grid.\\\",\\\"type\\\":\\\"number\\\"},{\\\"$ref\\\":\\\"#/definitions/ExprRef\\\"}]},\\\"strokeOpacity\\\":{\\\"anyOf\\\":[{\\\"description\\\":\\\"The stroke opacity (value between [0,1]).\\\\n\\\\n__Default value:__ `1`\\\",\\\"maximum\\\":1,\\\"minimum\\\":0,\\\"type\\\":\\\"number\\\"},{\\\"$ref\\\":\\\"#/definitions/ExprRef\\\"}]},\\\"strokeWidth\\\":{\\\"anyOf\\\":[{\\\"description\\\":\\\"The stroke width, in pixels.\\\",\\\"minimum\\\":0,\\\"type\\\":\\\"number\\\"},{\\\"$ref\\\":\\\"#/definitions/ExprRef\\\"}]},\\\"style\\\":{\\\"anyOf\\\":[{\\\"type\\\":\\\"string\\\"},{\\\"items\\\":{\\\"type\\\":\\\"string\\\"},\\\"type\\\":\\\"array\\\"}],\\\"description\\\":\\\"A string or array of strings indicating the name of custom styles to apply to the mark. A style is a named collection of mark property defaults defined within the [style configuration](https://vega.github.io/vega-lite/docs/mark.html#style-config). If style is an array, later styles will override earlier styles. Any [mark properties](https://vega.github.io/vega-lite/docs/encoding.html#mark-prop) explicitly defined within the `encoding` will override a style default.\\\\n\\\\n__Default value:__ The mark's name. For example, a bar mark will have style `\\\\\\\"bar\\\\\\\"` by default. __Note:__ Any specified style will augment the default style. For example, a bar mark with `\\\\\\\"style\\\\\\\": \\\\\\\"foo\\\\\\\"` will receive from `config.style.bar` and `config.style.foo` (the specified style `\\\\\\\"foo\\\\\\\"` has higher precedence).\\\"},\\\"tension\\\":{\\\"anyOf\\\":[{\\\"description\\\":\\\"Depending on the interpolation type, sets the tension parameter (for line and area marks).\\\",\\\"type\\\":\\\"number\\\"},{\\\"$ref\\\":\\\"#/definitions/ExprRef\\\"}]},\\\"text\\\":{\\\"anyOf\\\":[{\\\"$ref\\\":\\\"#/definitions/Text\\\",\\\"description\\\":\\\"Placeholder text if the `text` channel is not specified\\\"},{\\\"$ref\\\":\\\"#/definitions/ExprRef\\\"}]},\\\"theta\\\":{\\\"anyOf\\\":[{\\\"type\\\":\\\"number\\\"},{\\\"$ref\\\":\\\"#/definitions/ExprRef\\\"}],\\\"description\\\":\\\"- For arc marks, the arc length in radians if theta2 is not specified, otherwise the start arc angle. (A value of 0 indicates up or “north”, increasing values proceed clockwise.)\\\\n\\\\n- For text marks, polar coordinate angle in radians.\\\",\\\"maximum\\\":360,\\\"minimum\\\":0},\\\"theta2\\\":{\\\"anyOf\\\":[{\\\"type\\\":\\\"number\\\"},{\\\"$ref\\\":\\\"#/definitions/ExprRef\\\"}],\\\"description\\\":\\\"The end angle of arc marks in radians. A value of 0 indicates up or “north”, increasing values proceed clockwise.\\\"},\\\"theta2Offset\\\":{\\\"anyOf\\\":[{\\\"type\\\":\\\"number\\\"},{\\\"$ref\\\":\\\"#/definitions/ExprRef\\\"}],\\\"description\\\":\\\"Offset for theta2.\\\"},\\\"thetaOffset\\\":{\\\"anyOf\\\":[{\\\"type\\\":\\\"number\\\"},{\\\"$ref\\\":\\\"#/definitions/ExprRef\\\"}],\\\"description\\\":\\\"Offset for theta.\\\"},\\\"thickness\\\":{\\\"description\\\":\\\"Thickness of the tick mark.\\\\n\\\\n__Default value:__  `1`\\\",\\\"minimum\\\":0,\\\"type\\\":\\\"number\\\"},\\\"timeUnitBand\\\":{\\\"description\\\":\\\"Default relative band size for a time unit. If set to `1`, the bandwidth of the marks will be equal to the time unit band step. If set to `0.5`, bandwidth of the marks will be half of the time unit band step.\\\",\\\"type\\\":\\\"number\\\"},\\\"timeUnitBandPosition\\\":{\\\"description\\\":\\\"Default relative band position for a time unit. If set to `0`, the marks will be positioned at the beginning of the time unit band step. If set to `0.5`, the marks will be positioned in the middle of the time unit band step.\\\",\\\"type\\\":\\\"number\\\"},\\\"tooltip\\\":{\\\"anyOf\\\":[{\\\"type\\\":\\\"number\\\"},{\\\"type\\\":\\\"string\\\"},{\\\"type\\\":\\\"boolean\\\"},{\\\"$ref\\\":\\\"#/definitions/TooltipContent\\\"},{\\\"$ref\\\":\\\"#/definitions/ExprRef\\\"},{\\\"type\\\":\\\"null\\\"}],\\\"description\\\":\\\"The tooltip text string to show upon mouse hover or an object defining which fields should the tooltip be derived from.\\\\n\\\\n- If `tooltip` is `true` or `{\\\\\\\"content\\\\\\\": \\\\\\\"encoding\\\\\\\"}`, then all fields from `encoding` will be used. - If `tooltip` is `{\\\\\\\"content\\\\\\\": \\\\\\\"data\\\\\\\"}`, then all fields that appear in the highlighted data point will be used. - If set to `null` or `false`, then no tooltip will be used.\\\\n\\\\nSee the [`tooltip`](https://vega.github.io/vega-lite/docs/tooltip.html) documentation for a detailed discussion about tooltip  in Vega-Lite.\\\\n\\\\n__Default value:__ `null`\\\"},\\\"type\\\":{\\\"$ref\\\":\\\"#/definitions/Mark\\\",\\\"description\\\":\\\"The mark type. This could a primitive mark type (one of `\\\\\\\"bar\\\\\\\"`, `\\\\\\\"circle\\\\\\\"`, `\\\\\\\"square\\\\\\\"`, `\\\\\\\"tick\\\\\\\"`, `\\\\\\\"line\\\\\\\"`, `\\\\\\\"area\\\\\\\"`, `\\\\\\\"point\\\\\\\"`, `\\\\\\\"geoshape\\\\\\\"`, `\\\\\\\"rule\\\\\\\"`, and `\\\\\\\"text\\\\\\\"`) or a composite mark type (`\\\\\\\"boxplot\\\\\\\"`, `\\\\\\\"errorband\\\\\\\"`, `\\\\\\\"errorbar\\\\\\\"`).\\\"},\\\"url\\\":{\\\"anyOf\\\":[{\\\"$ref\\\":\\\"#/definitions/URI\\\",\\\"description\\\":\\\"The URL of the image file for image marks.\\\"},{\\\"$ref\\\":\\\"#/definitions/ExprRef\\\"}]},\\\"width\\\":{\\\"anyOf\\\":[{\\\"description\\\":\\\"Width of the marks.\\\",\\\"type\\\":\\\"number\\\"},{\\\"$ref\\\":\\\"#/definitions/ExprRef\\\"}]},\\\"x\\\":{\\\"anyOf\\\":[{\\\"type\\\":\\\"number\\\"},{\\\"const\\\":\\\"width\\\",\\\"type\\\":\\\"string\\\"},{\\\"$ref\\\":\\\"#/definitions/ExprRef\\\"}],\\\"description\\\":\\\"X coordinates of the marks, or width of horizontal `\\\\\\\"bar\\\\\\\"` and `\\\\\\\"area\\\\\\\"` without specified `x2` or `width`.\\\\n\\\\nThe `value` of this channel can be a number or a string `\\\\\\\"width\\\\\\\"` for the width of the plot.\\\"},\\\"x2\\\":{\\\"anyOf\\\":[{\\\"type\\\":\\\"number\\\"},{\\\"const\\\":\\\"width\\\",\\\"type\\\":\\\"string\\\"},{\\\"$ref\\\":\\\"#/definitions/ExprRef\\\"}],\\\"description\\\":\\\"X2 coordinates for ranged `\\\\\\\"area\\\\\\\"`, `\\\\\\\"bar\\\\\\\"`, `\\\\\\\"rect\\\\\\\"`, and  `\\\\\\\"rule\\\\\\\"`.\\\\n\\\\nThe `value` of this channel can be a number or a string `\\\\\\\"width\\\\\\\"` for the width of the plot.\\\"},\\\"x2Offset\\\":{\\\"anyOf\\\":[{\\\"type\\\":\\\"number\\\"},{\\\"$ref\\\":\\\"#/definitions/ExprRef\\\"}],\\\"description\\\":\\\"Offset for x2-position.\\\"},\\\"xOffset\\\":{\\\"anyOf\\\":[{\\\"type\\\":\\\"number\\\"},{\\\"$ref\\\":\\\"#/definitions/ExprRef\\\"}],\\\"description\\\":\\\"Offset for x-position.\\\"},\\\"y\\\":{\\\"anyOf\\\":[{\\\"type\\\":\\\"number\\\"},{\\\"const\\\":\\\"height\\\",\\\"type\\\":\\\"string\\\"},{\\\"$ref\\\":\\\"#/definitions/ExprRef\\\"}],\\\"description\\\":\\\"Y coordinates of the marks, or height of vertical `\\\\\\\"bar\\\\\\\"` and `\\\\\\\"area\\\\\\\"` without specified `y2` or `height`.\\\\n\\\\nThe `value` of this channel can be a number or a string `\\\\\\\"height\\\\\\\"` for the height of the plot.\\\"},\\\"y2\\\":{\\\"anyOf\\\":[{\\\"type\\\":\\\"number\\\"},{\\\"const\\\":\\\"height\\\",\\\"type\\\":\\\"string\\\"},{\\\"$ref\\\":\\\"#/definitions/ExprRef\\\"}],\\\"description\\\":\\\"Y2 coordinates for ranged `\\\\\\\"area\\\\\\\"`, `\\\\\\\"bar\\\\\\\"`, `\\\\\\\"rect\\\\\\\"`, and  `\\\\\\\"rule\\\\\\\"`.\\\\n\\\\nThe `value` of this channel can be a number or a string `\\\\\\\"height\\\\\\\"` for the height of the plot.\\\"},\\\"y2Offset\\\":{\\\"anyOf\\\":[{\\\"type\\\":\\\"number\\\"},{\\\"$ref\\\":\\\"#/definitions/ExprRef\\\"}],\\\"description\\\":\\\"Offset for y2-position.\\\"},\\\"yOffset\\\":{\\\"anyOf\\\":[{\\\"type\\\":\\\"number\\\"},{\\\"$ref\\\":\\\"#/definitions/ExprRef\\\"}],\\\"description\\\":\\\"Offset for y-position.\\\"}},\\\"required\\\":[\\\"type\\\"],\\\"type\\\":\\\"object\\\"},\\\"MarkPropDef<(Gradient|string|null)>\\\":{\\\"anyOf\\\":[{\\\"$ref\\\":\\\"#/definitions/FieldOrDatumDefWithCondition<MarkPropFieldDef,(Gradient|string|null)>\\\"},{\\\"$ref\\\":\\\"#/definitions/FieldOrDatumDefWithCondition<DatumDef,(Gradient|string|null)>\\\"},{\\\"$ref\\\":\\\"#/definitions/ValueDefWithCondition<MarkPropFieldOrDatumDef,(Gradient|string|null)>\\\"}]},\\\"MarkPropDef<(string|null),TypeForShape>\\\":{\\\"anyOf\\\":[{\\\"$ref\\\":\\\"#/definitions/FieldOrDatumDefWithCondition<MarkPropFieldDef<TypeForShape>,(string|null)>\\\"},{\\\"$ref\\\":\\\"#/definitions/FieldOrDatumDefWithCondition<DatumDef,(string|null)>\\\"},{\\\"$ref\\\":\\\"#/definitions/ValueDefWithCondition<MarkPropFieldOrDatumDef<TypeForShape>,(string|null)>\\\"}]},\\\"MarkPropDef<number>\\\":{\\\"anyOf\\\":[{\\\"$ref\\\":\\\"#/definitions/FieldOrDatumDefWithCondition<MarkPropFieldDef,number>\\\"},{\\\"$ref\\\":\\\"#/definitions/FieldOrDatumDefWithCondition<DatumDef,number>\\\"},{\\\"$ref\\\":\\\"#/definitions/ValueDefWithCondition<MarkPropFieldOrDatumDef,number>\\\"}]},\\\"MarkPropDef<number[]>\\\":{\\\"anyOf\\\":[{\\\"$ref\\\":\\\"#/definitions/FieldOrDatumDefWithCondition<MarkPropFieldDef,number[]>\\\"},{\\\"$ref\\\":\\\"#/definitions/FieldOrDatumDefWithCondition<DatumDef,number[]>\\\"},{\\\"$ref\\\":\\\"#/definitions/ValueDefWithCondition<MarkPropFieldOrDatumDef,number[]>\\\"}]},\\\"MarkType\\\":{\\\"enum\\\":[\\\"arc\\\",\\\"area\\\",\\\"image\\\",\\\"group\\\",\\\"line\\\",\\\"path\\\",\\\"rect\\\",\\\"rule\\\",\\\"shape\\\",\\\"symbol\\\",\\\"text\\\",\\\"trail\\\"],\\\"type\\\":\\\"string\\\"},\\\"MergedStream\\\":{\\\"additionalProperties\\\":false,\\\"properties\\\":{\\\"between\\\":{\\\"items\\\":{\\\"$ref\\\":\\\"#/definitions/Stream\\\"},\\\"type\\\":\\\"array\\\"},\\\"consume\\\":{\\\"type\\\":\\\"boolean\\\"},\\\"debounce\\\":{\\\"type\\\":\\\"number\\\"},\\\"filter\\\":{\\\"anyOf\\\":[{\\\"$ref\\\":\\\"#/definitions/Expr\\\"},{\\\"items\\\":{\\\"$ref\\\":\\\"#/definitions/Expr\\\"},\\\"type\\\":\\\"array\\\"}]},\\\"markname\\\":{\\\"type\\\":\\\"string\\\"},\\\"marktype\\\":{\\\"$ref\\\":\\\"#/definitions/MarkType\\\"},\\\"merge\\\":{\\\"items\\\":{\\\"$ref\\\":\\\"#/definitions/Stream\\\"},\\\"type\\\":\\\"array\\\"},\\\"throttle\\\":{\\\"type\\\":\\\"number\\\"}},\\\"required\\\":[\\\"merge\\\"],\\\"type\\\":\\\"object\\\"},\\\"Month\\\":{\\\"maximum\\\":12,\\\"minimum\\\":1,\\\"type\\\":\\\"number\\\"},\\\"MultiSelection\\\":{\\\"additionalProperties\\\":false,\\\"properties\\\":{\\\"bind\\\":{\\\"$ref\\\":\\\"#/definitions/LegendBinding\\\",\\\"description\\\":\\\"When set, a selection is populated by interacting with the corresponding legend. Direct manipulation interaction is disabled by default; to re-enable it, set the selection's [`on`](https://vega.github.io/vega-lite/docs/selection.html#common-selection-properties) property.\\\\n\\\\nLegend bindings are restricted to selections that only specify a single field or encoding.\\\"},\\\"clear\\\":{\\\"anyOf\\\":[{\\\"$ref\\\":\\\"#/definitions/Stream\\\"},{\\\"type\\\":\\\"string\\\"},{\\\"type\\\":\\\"boolean\\\"}],\\\"description\\\":\\\"Clears the selection, emptying it of all values. Can be a [Event Stream](https://vega.github.io/vega/docs/event-streams/) or `false` to disable.\\\\n\\\\n__Default value:__ `dblclick`.\\\\n\\\\n__See also:__ [`clear`](https://vega.github.io/vega-lite/docs/clear.html) documentation.\\\"},\\\"empty\\\":{\\\"description\\\":\\\"By default, `all` data values are considered to lie within an empty selection. When set to `none`, empty selections contain no data values.\\\",\\\"enum\\\":[\\\"all\\\",\\\"none\\\"],\\\"type\\\":\\\"string\\\"},\\\"encodings\\\":{\\\"description\\\":\\\"An array of encoding channels. The corresponding data field values must match for a data tuple to fall within the selection.\\\\n\\\\n__See also:__ [`encodings`](https://vega.github.io/vega-lite/docs/project.html) documentation.\\\",\\\"items\\\":{\\\"$ref\\\":\\\"#/definitions/SingleDefUnitChannel\\\"},\\\"type\\\":\\\"array\\\"},\\\"fields\\\":{\\\"description\\\":\\\"An array of field names whose values must match for a data tuple to fall within the selection.\\\\n\\\\n__See also:__ [`fields`](https://vega.github.io/vega-lite/docs/project.html) documentation.\\\",\\\"items\\\":{\\\"$ref\\\":\\\"#/definitions/FieldName\\\"},\\\"type\\\":\\\"array\\\"},\\\"init\\\":{\\\"description\\\":\\\"Initialize the selection with a mapping between [projected channels or field names](https://vega.github.io/vega-lite/docs/project.html) and an initial value (or array of values).\\\\n\\\\n__See also:__ [`init`](https://vega.github.io/vega-lite/docs/init.html) documentation.\\\",\\\"items\\\":{\\\"$ref\\\":\\\"#/definitions/SelectionInitMapping\\\"},\\\"type\\\":\\\"array\\\"},\\\"nearest\\\":{\\\"description\\\":\\\"When true, an invisible voronoi diagram is computed to accelerate discrete selection. The data value _nearest_ the mouse cursor is added to the selection.\\\\n\\\\n__See also:__ [`nearest`](https://vega.github.io/vega-lite/docs/nearest.html) documentation.\\\",\\\"type\\\":\\\"boolean\\\"},\\\"on\\\":{\\\"anyOf\\\":[{\\\"$ref\\\":\\\"#/definitions/Stream\\\"},{\\\"type\\\":\\\"string\\\"}],\\\"description\\\":\\\"A [Vega event stream](https://vega.github.io/vega/docs/event-streams/) (object or selector) that triggers the selection. For interval selections, the event stream must specify a [start and end](https://vega.github.io/vega/docs/event-streams/#between-filters).\\\"},\\\"resolve\\\":{\\\"$ref\\\":\\\"#/definitions/SelectionResolution\\\",\\\"description\\\":\\\"With layered and multi-view displays, a strategy that determines how selections' data queries are resolved when applied in a filter transform, conditional encoding rule, or scale domain.\\\\n\\\\n__See also:__ [`resolve`](https://vega.github.io/vega-lite/docs/selection-resolve.html) documentation.\\\"},\\\"toggle\\\":{\\\"description\\\":\\\"Controls whether data values should be toggled or only ever inserted into multi selections. Can be `true`, `false` (for insertion only), or a [Vega expression](https://vega.github.io/vega/docs/expressions/).\\\\n\\\\n__Default value:__ `true`, which corresponds to `event.shiftKey` (i.e., data values are toggled when a user interacts with the shift-key pressed).\\\\n\\\\nSetting the value to the Vega expression `\\\\\\\"true\\\\\\\"` will toggle data values without the user pressing the shift-key.\\\\n\\\\n__See also:__ [`toggle`](https://vega.github.io/vega-lite/docs/toggle.html) documentation.\\\",\\\"type\\\":[\\\"string\\\",\\\"boolean\\\"]},\\\"type\\\":{\\\"const\\\":\\\"multi\\\",\\\"description\\\":\\\"Determines the default event processing and data query for the selection. Vega-Lite currently supports three selection types:\\\\n\\\\n- `\\\\\\\"single\\\\\\\"` -- to select a single discrete data value on `click`. - `\\\\\\\"multi\\\\\\\"` -- to select multiple discrete data value; the first value is selected on `click` and additional values toggled on shift-`click`. - `\\\\\\\"interval\\\\\\\"` -- to select a continuous range of data values on `drag`.\\\",\\\"type\\\":\\\"string\\\"}},\\\"required\\\":[\\\"type\\\"],\\\"type\\\":\\\"object\\\"},\\\"MultiSelectionConfig\\\":{\\\"additionalProperties\\\":false,\\\"properties\\\":{\\\"bind\\\":{\\\"$ref\\\":\\\"#/definitions/LegendBinding\\\",\\\"description\\\":\\\"When set, a selection is populated by interacting with the corresponding legend. Direct manipulation interaction is disabled by default; to re-enable it, set the selection's [`on`](https://vega.github.io/vega-lite/docs/selection.html#common-selection-properties) property.\\\\n\\\\nLegend bindings are restricted to selections that only specify a single field or encoding.\\\"},\\\"clear\\\":{\\\"anyOf\\\":[{\\\"$ref\\\":\\\"#/definitions/Stream\\\"},{\\\"type\\\":\\\"string\\\"},{\\\"type\\\":\\\"boolean\\\"}],\\\"description\\\":\\\"Clears the selection, emptying it of all values. Can be a [Event Stream](https://vega.github.io/vega/docs/event-streams/) or `false` to disable.\\\\n\\\\n__Default value:__ `dblclick`.\\\\n\\\\n__See also:__ [`clear`](https://vega.github.io/vega-lite/docs/clear.html) documentation.\\\"},\\\"empty\\\":{\\\"description\\\":\\\"By default, `all` data values are considered to lie within an empty selection. When set to `none`, empty selections contain no data values.\\\",\\\"enum\\\":[\\\"all\\\",\\\"none\\\"],\\\"type\\\":\\\"string\\\"},\\\"encodings\\\":{\\\"description\\\":\\\"An array of encoding channels. The corresponding data field values must match for a data tuple to fall within the selection.\\\\n\\\\n__See also:__ [`encodings`](https://vega.github.io/vega-lite/docs/project.html) documentation.\\\",\\\"items\\\":{\\\"$ref\\\":\\\"#/definitions/SingleDefUnitChannel\\\"},\\\"type\\\":\\\"array\\\"},\\\"fields\\\":{\\\"description\\\":\\\"An array of field names whose values must match for a data tuple to fall within the selection.\\\\n\\\\n__See also:__ [`fields`](https://vega.github.io/vega-lite/docs/project.html) documentation.\\\",\\\"items\\\":{\\\"$ref\\\":\\\"#/definitions/FieldName\\\"},\\\"type\\\":\\\"array\\\"},\\\"init\\\":{\\\"description\\\":\\\"Initialize the selection with a mapping between [projected channels or field names](https://vega.github.io/vega-lite/docs/project.html) and an initial value (or array of values).\\\\n\\\\n__See also:__ [`init`](https://vega.github.io/vega-lite/docs/init.html) documentation.\\\",\\\"items\\\":{\\\"$ref\\\":\\\"#/definitions/SelectionInitMapping\\\"},\\\"type\\\":\\\"array\\\"},\\\"nearest\\\":{\\\"description\\\":\\\"When true, an invisible voronoi diagram is computed to accelerate discrete selection. The data value _nearest_ the mouse cursor is added to the selection.\\\\n\\\\n__See also:__ [`nearest`](https://vega.github.io/vega-lite/docs/nearest.html) documentation.\\\",\\\"type\\\":\\\"boolean\\\"},\\\"on\\\":{\\\"anyOf\\\":[{\\\"$ref\\\":\\\"#/definitions/Stream\\\"},{\\\"type\\\":\\\"string\\\"}],\\\"description\\\":\\\"A [Vega event stream](https://vega.github.io/vega/docs/event-streams/) (object or selector) that triggers the selection. For interval selections, the event stream must specify a [start and end](https://vega.github.io/vega/docs/event-streams/#between-filters).\\\"},\\\"resolve\\\":{\\\"$ref\\\":\\\"#/definitions/SelectionResolution\\\",\\\"description\\\":\\\"With layered and multi-view displays, a strategy that determines how selections' data queries are resolved when applied in a filter transform, conditional encoding rule, or scale domain.\\\\n\\\\n__See also:__ [`resolve`](https://vega.github.io/vega-lite/docs/selection-resolve.html) documentation.\\\"},\\\"toggle\\\":{\\\"description\\\":\\\"Controls whether data values should be toggled or only ever inserted into multi selections. Can be `true`, `false` (for insertion only), or a [Vega expression](https://vega.github.io/vega/docs/expressions/).\\\\n\\\\n__Default value:__ `true`, which corresponds to `event.shiftKey` (i.e., data values are toggled when a user interacts with the shift-key pressed).\\\\n\\\\nSetting the value to the Vega expression `\\\\\\\"true\\\\\\\"` will toggle data values without the user pressing the shift-key.\\\\n\\\\n__See also:__ [`toggle`](https://vega.github.io/vega-lite/docs/toggle.html) documentation.\\\",\\\"type\\\":[\\\"string\\\",\\\"boolean\\\"]}},\\\"type\\\":\\\"object\\\"},\\\"MultiTimeUnit\\\":{\\\"anyOf\\\":[{\\\"$ref\\\":\\\"#/definitions/LocalMultiTimeUnit\\\"},{\\\"$ref\\\":\\\"#/definitions/UtcMultiTimeUnit\\\"}]},\\\"NamedData\\\":{\\\"additionalProperties\\\":false,\\\"properties\\\":{\\\"format\\\":{\\\"$ref\\\":\\\"#/definitions/DataFormat\\\",\\\"description\\\":\\\"An object that specifies the format for parsing the data.\\\"},\\\"name\\\":{\\\"description\\\":\\\"Provide a placeholder name and bind data at runtime.\\\",\\\"type\\\":\\\"string\\\"}},\\\"required\\\":[\\\"name\\\"],\\\"type\\\":\\\"object\\\"},\\\"NonArgAggregateOp\\\":{\\\"enum\\\":[\\\"average\\\",\\\"count\\\",\\\"distinct\\\",\\\"max\\\",\\\"mean\\\",\\\"median\\\",\\\"min\\\",\\\"missing\\\",\\\"product\\\",\\\"q1\\\",\\\"q3\\\",\\\"ci0\\\",\\\"ci1\\\",\\\"stderr\\\",\\\"stdev\\\",\\\"stdevp\\\",\\\"sum\\\",\\\"valid\\\",\\\"values\\\",\\\"variance\\\",\\\"variancep\\\"],\\\"type\\\":\\\"string\\\"},\\\"NonLayerRepeatSpec\\\":{\\\"additionalProperties\\\":false,\\\"description\\\":\\\"Base interface for a repeat specification.\\\",\\\"properties\\\":{\\\"align\\\":{\\\"anyOf\\\":[{\\\"$ref\\\":\\\"#/definitions/LayoutAlign\\\"},{\\\"$ref\\\":\\\"#/definitions/RowCol<LayoutAlign>\\\"}],\\\"description\\\":\\\"The alignment to apply to grid rows and columns. The supported string values are `\\\\\\\"all\\\\\\\"`, `\\\\\\\"each\\\\\\\"`, and `\\\\\\\"none\\\\\\\"`.\\\\n\\\\n- For `\\\\\\\"none\\\\\\\"`, a flow layout will be used, in which adjacent subviews are simply placed one after the other. - For `\\\\\\\"each\\\\\\\"`, subviews will be aligned into a clean grid structure, but each row or column may be of variable size. - For `\\\\\\\"all\\\\\\\"`, subviews will be aligned and each row or column will be sized identically based on the maximum observed size. String values for this property will be applied to both grid rows and columns.\\\\n\\\\nAlternatively, an object value of the form `{\\\\\\\"row\\\\\\\": string, \\\\\\\"column\\\\\\\": string}` can be used to supply different alignments for rows and columns.\\\\n\\\\n__Default value:__ `\\\\\\\"all\\\\\\\"`.\\\"},\\\"bounds\\\":{\\\"description\\\":\\\"The bounds calculation method to use for determining the extent of a sub-plot. One of `full` (the default) or `flush`.\\\\n\\\\n- If set to `full`, the entire calculated bounds (including axes, title, and legend) will be used. - If set to `flush`, only the specified width and height values for the sub-view will be used. The `flush` setting can be useful when attempting to place sub-plots without axes or legends into a uniform grid structure.\\\\n\\\\n__Default value:__ `\\\\\\\"full\\\\\\\"`\\\",\\\"enum\\\":[\\\"full\\\",\\\"flush\\\"],\\\"type\\\":\\\"string\\\"},\\\"center\\\":{\\\"anyOf\\\":[{\\\"type\\\":\\\"boolean\\\"},{\\\"$ref\\\":\\\"#/definitions/RowCol<boolean>\\\"}],\\\"description\\\":\\\"Boolean flag indicating if subviews should be centered relative to their respective rows or columns.\\\\n\\\\nAn object value of the form `{\\\\\\\"row\\\\\\\": boolean, \\\\\\\"column\\\\\\\": boolean}` can be used to supply different centering values for rows and columns.\\\\n\\\\n__Default value:__ `false`\\\"},\\\"columns\\\":{\\\"description\\\":\\\"The number of columns to include in the view composition layout.\\\\n\\\\n__Default value__: `undefined` -- An infinite number of columns (a single row) will be assumed. This is equivalent to `hconcat` (for `concat`) and to using the `column` channel (for `facet` and `repeat`).\\\\n\\\\n__Note__:\\\\n\\\\n1) This property is only for: - the general (wrappable) `concat` operator (not `hconcat`/`vconcat`) - the `facet` and `repeat` operator with one field/repetition definition (without row/column nesting)\\\\n\\\\n2) Setting the `columns` to `1` is equivalent to `vconcat` (for `concat`) and to using the `row` channel (for `facet` and `repeat`).\\\",\\\"type\\\":\\\"number\\\"},\\\"data\\\":{\\\"anyOf\\\":[{\\\"$ref\\\":\\\"#/definitions/Data\\\"},{\\\"type\\\":\\\"null\\\"}],\\\"description\\\":\\\"An object describing the data source. Set to `null` to ignore the parent's data source. If no data is set, it is derived from the parent.\\\"},\\\"description\\\":{\\\"description\\\":\\\"Description of this mark for commenting purpose.\\\",\\\"type\\\":\\\"string\\\"},\\\"name\\\":{\\\"description\\\":\\\"Name of the visualization for later reference.\\\",\\\"type\\\":\\\"string\\\"},\\\"repeat\\\":{\\\"anyOf\\\":[{\\\"items\\\":{\\\"type\\\":\\\"string\\\"},\\\"type\\\":\\\"array\\\"},{\\\"$ref\\\":\\\"#/definitions/RepeatMapping\\\"}],\\\"description\\\":\\\"Definition for fields to be repeated. One of: 1) An array of fields to be repeated. If `\\\\\\\"repeat\\\\\\\"` is an array, the field can be referred to as `{\\\\\\\"repeat\\\\\\\": \\\\\\\"repeat\\\\\\\"}`. The repeated views are laid out in a wrapped row. You can set the number of columns to control the wrapping. 2) An object that maps `\\\\\\\"row\\\\\\\"` and/or `\\\\\\\"column\\\\\\\"` to the listed fields to be repeated along the particular orientations. The objects `{\\\\\\\"repeat\\\\\\\": \\\\\\\"row\\\\\\\"}` and `{\\\\\\\"repeat\\\\\\\": \\\\\\\"column\\\\\\\"}` can be used to refer to the repeated field respectively.\\\"},\\\"resolve\\\":{\\\"$ref\\\":\\\"#/definitions/Resolve\\\",\\\"description\\\":\\\"Scale, axis, and legend resolutions for view composition specifications.\\\"},\\\"spacing\\\":{\\\"anyOf\\\":[{\\\"type\\\":\\\"number\\\"},{\\\"$ref\\\":\\\"#/definitions/RowCol<number>\\\"}],\\\"description\\\":\\\"The spacing in pixels between sub-views of the composition operator. An object of the form `{\\\\\\\"row\\\\\\\": number, \\\\\\\"column\\\\\\\": number}` can be used to set different spacing values for rows and columns.\\\\n\\\\n__Default value__: Depends on `\\\\\\\"spacing\\\\\\\"` property of [the view composition configuration](https://vega.github.io/vega-lite/docs/config.html#view-config) (`20` by default)\\\"},\\\"spec\\\":{\\\"$ref\\\":\\\"#/definitions/Spec\\\",\\\"description\\\":\\\"A specification of the view that gets repeated.\\\"},\\\"title\\\":{\\\"anyOf\\\":[{\\\"$ref\\\":\\\"#/definitions/Text\\\"},{\\\"$ref\\\":\\\"#/definitions/TitleParams\\\"}],\\\"description\\\":\\\"Title for the plot.\\\"},\\\"transform\\\":{\\\"description\\\":\\\"An array of data transformations such as filter and new field calculation.\\\",\\\"items\\\":{\\\"$ref\\\":\\\"#/definitions/Transform\\\"},\\\"type\\\":\\\"array\\\"}},\\\"required\\\":[\\\"repeat\\\",\\\"spec\\\"],\\\"type\\\":\\\"object\\\"},\\\"NumericArrayMarkPropDef\\\":{\\\"$ref\\\":\\\"#/definitions/MarkPropDef<number[]>\\\"},\\\"NumericMarkPropDef\\\":{\\\"$ref\\\":\\\"#/definitions/MarkPropDef<number>\\\"},\\\"NumericValueDef\\\":{\\\"$ref\\\":\\\"#/definitions/ValueDef<(number|ExprRef)>\\\"},\\\"OrderFieldDef\\\":{\\\"additionalProperties\\\":false,\\\"properties\\\":{\\\"aggregate\\\":{\\\"$ref\\\":\\\"#/definitions/Aggregate\\\",\\\"description\\\":\\\"Aggregation function for the field (e.g., `\\\\\\\"mean\\\\\\\"`, `\\\\\\\"sum\\\\\\\"`, `\\\\\\\"median\\\\\\\"`, `\\\\\\\"min\\\\\\\"`, `\\\\\\\"max\\\\\\\"`, `\\\\\\\"count\\\\\\\"`).\\\\n\\\\n__Default value:__ `undefined` (None)\\\\n\\\\n__See also:__ [`aggregate`](https://vega.github.io/vega-lite/docs/aggregate.html) documentation.\\\"},\\\"band\\\":{\\\"description\\\":\\\"For rect-based marks (`rect`, `bar`, and `image`), mark size relative to bandwidth of [band scales](https://vega.github.io/vega-lite/docs/scale.html#band), bins or time units. If set to `1`, the mark size is set to the bandwidth, the bin interval, or the time unit interval. If set to `0.5`, the mark size is half of the bandwidth or the time unit interval.\\\\n\\\\nFor other marks, relative position on a band of a stacked, binned, time unit or band scale. If set to `0`, the marks will be positioned at the beginning of the band. If set to `0.5`, the marks will be positioned in the middle of the band.\\\",\\\"maximum\\\":1,\\\"minimum\\\":0,\\\"type\\\":\\\"number\\\"},\\\"bin\\\":{\\\"anyOf\\\":[{\\\"type\\\":\\\"boolean\\\"},{\\\"$ref\\\":\\\"#/definitions/BinParams\\\"},{\\\"const\\\":\\\"binned\\\",\\\"type\\\":\\\"string\\\"},{\\\"type\\\":\\\"null\\\"}],\\\"description\\\":\\\"A flag for binning a `quantitative` field, [an object defining binning parameters](https://vega.github.io/vega-lite/docs/bin.html#params), or indicating that the data for `x` or `y` channel are binned before they are imported into Vega-Lite (`\\\\\\\"binned\\\\\\\"`).\\\\n\\\\n- If `true`, default [binning parameters](https://vega.github.io/vega-lite/docs/bin.html) will be applied.\\\\n\\\\n- If `\\\\\\\"binned\\\\\\\"`, this indicates that the data for the `x` (or `y`) channel are already binned. You can map the bin-start field to `x` (or `y`) and the bin-end field to `x2` (or `y2`). The scale and axis will be formatted similar to binning in Vega-Lite.  To adjust the axis ticks based on the bin step, you can also set the axis's [`tickMinStep`](https://vega.github.io/vega-lite/docs/axis.html#ticks) property.\\\\n\\\\n__Default value:__ `false`\\\\n\\\\n__See also:__ [`bin`](https://vega.github.io/vega-lite/docs/bin.html) documentation.\\\"},\\\"field\\\":{\\\"$ref\\\":\\\"#/definitions/Field\\\",\\\"description\\\":\\\"__Required.__ A string defining the name of the field from which to pull a data value or an object defining iterated values from the [`repeat`](https://vega.github.io/vega-lite/docs/repeat.html) operator.\\\\n\\\\n__See also:__ [`field`](https://vega.github.io/vega-lite/docs/field.html) documentation.\\\\n\\\\n__Notes:__ 1)  Dots (`.`) and brackets (`[` and `]`) can be used to access nested objects (e.g., `\\\\\\\"field\\\\\\\": \\\\\\\"foo.bar\\\\\\\"` and `\\\\\\\"field\\\\\\\": \\\\\\\"foo['bar']\\\\\\\"`). If field names contain dots or brackets but are not nested, you can use `\\\\\\\\\\\\\\\\` to escape dots and brackets (e.g., `\\\\\\\"a\\\\\\\\\\\\\\\\.b\\\\\\\"` and `\\\\\\\"a\\\\\\\\\\\\\\\\[0\\\\\\\\\\\\\\\\]\\\\\\\"`). See more details about escaping in the [field documentation](https://vega.github.io/vega-lite/docs/field.html). 2) `field` is not required if `aggregate` is `count`.\\\"},\\\"sort\\\":{\\\"$ref\\\":\\\"#/definitions/SortOrder\\\",\\\"description\\\":\\\"The sort order. One of `\\\\\\\"ascending\\\\\\\"` (default) or `\\\\\\\"descending\\\\\\\"`.\\\"},\\\"timeUnit\\\":{\\\"anyOf\\\":[{\\\"$ref\\\":\\\"#/definitions/TimeUnit\\\"},{\\\"$ref\\\":\\\"#/definitions/TimeUnitParams\\\"}],\\\"description\\\":\\\"Time unit (e.g., `year`, `yearmonth`, `month`, `hours`) for a temporal field. or [a temporal field that gets casted as ordinal](https://vega.github.io/vega-lite/docs/type.html#cast).\\\\n\\\\n__Default value:__ `undefined` (None)\\\\n\\\\n__See also:__ [`timeUnit`](https://vega.github.io/vega-lite/docs/timeunit.html) documentation.\\\"},\\\"title\\\":{\\\"anyOf\\\":[{\\\"$ref\\\":\\\"#/definitions/Text\\\"},{\\\"type\\\":\\\"null\\\"}],\\\"description\\\":\\\"A title for the field. If `null`, the title will be removed.\\\\n\\\\n__Default value:__  derived from the field's name and transformation function (`aggregate`, `bin` and `timeUnit`). If the field has an aggregate function, the function is displayed as part of the title (e.g., `\\\\\\\"Sum of Profit\\\\\\\"`). If the field is binned or has a time unit applied, the applied function is shown in parentheses (e.g., `\\\\\\\"Profit (binned)\\\\\\\"`, `\\\\\\\"Transaction Date (year-month)\\\\\\\"`). Otherwise, the title is simply the field name.\\\\n\\\\n__Notes__:\\\\n\\\\n1) You can customize the default field title format by providing the [`fieldTitle`](https://vega.github.io/vega-lite/docs/config.html#top-level-config) property in the [config](https://vega.github.io/vega-lite/docs/config.html) or [`fieldTitle` function via the `compile` function's options](https://vega.github.io/vega-lite/docs/compile.html#field-title).\\\\n\\\\n2) If both field definition's `title` and axis, header, or legend `title` are defined, axis/header/legend title will be used.\\\"},\\\"type\\\":{\\\"$ref\\\":\\\"#/definitions/StandardType\\\",\\\"description\\\":\\\"The type of measurement (`\\\\\\\"quantitative\\\\\\\"`, `\\\\\\\"temporal\\\\\\\"`, `\\\\\\\"ordinal\\\\\\\"`, or `\\\\\\\"nominal\\\\\\\"`) for the encoded field or constant value (`datum`). It can also be a `\\\\\\\"geojson\\\\\\\"` type for encoding ['geoshape'](https://vega.github.io/vega-lite/docs/geoshape.html).\\\\n\\\\nVega-Lite automatically infers data types in many cases as discussed below. However, type is required for a field if: (1) the field is not nominal and the field encoding has no specified `aggregate` (except `argmin` and `argmax`), `bin`, scale type, custom `sort` order, nor `timeUnit` or (2) if you wish to use an ordinal scale for a field with `bin` or `timeUnit`.\\\\n\\\\n__Default value:__\\\\n\\\\n1) For a data `field`, `\\\\\\\"nominal\\\\\\\"` is the default data type unless the field encoding has `aggregate`, `channel`, `bin`, scale type, `sort`, or `timeUnit` that satisfies the following criteria: - `\\\\\\\"quantitative\\\\\\\"` is the default type if (1) the encoded field contains `bin` or `aggregate` except `\\\\\\\"argmin\\\\\\\"` and `\\\\\\\"argmax\\\\\\\"`, (2) the encoding channel is `latitude` or `longitude` channel or (3) if the specified scale type is [a quantitative scale](https://vega.github.io/vega-lite/docs/scale.html#type). - `\\\\\\\"temporal\\\\\\\"` is the default type if (1) the encoded field contains `timeUnit` or (2) the specified scale type is a time or utc scale - `ordinal\\\\\\\"\\\\\\\"` is the default type if (1) the encoded field contains a [custom `sort` order](https://vega.github.io/vega-lite/docs/sort.html#specifying-custom-sort-order), (2) the specified scale type is an ordinal/point/band scale, or (3) the encoding channel is `order`.\\\\n\\\\n2) For a constant value in data domain (`datum`): - `\\\\\\\"quantitative\\\\\\\"` if the datum is a number - `\\\\\\\"nominal\\\\\\\"` if the datum is a string - `\\\\\\\"temporal\\\\\\\"` if the datum is [a date time object](https://vega.github.io/vega-lite/docs/datetime.html)\\\\n\\\\n__Note:__ - Data `type` describes the semantics of the data rather than the primitive data types (number, string, etc.). The same primitive data type can have different types of measurement. For example, numeric data can represent quantitative, ordinal, or nominal data. - Data values for a temporal field can be either a date-time string (e.g., `\\\\\\\"2015-03-07 12:32:17\\\\\\\"`, `\\\\\\\"17:01\\\\\\\"`, `\\\\\\\"2015-03-16\\\\\\\"`. `\\\\\\\"2015\\\\\\\"`) or a timestamp number (e.g., `1552199579097`). - When using with [`bin`](https://vega.github.io/vega-lite/docs/bin.html), the `type` property can be either `\\\\\\\"quantitative\\\\\\\"` (for using a linear bin scale) or [`\\\\\\\"ordinal\\\\\\\"` (for using an ordinal bin scale)](https://vega.github.io/vega-lite/docs/type.html#cast-bin). - When using with [`timeUnit`](https://vega.github.io/vega-lite/docs/timeunit.html), the `type` property can be either `\\\\\\\"temporal\\\\\\\"` (default, for using a temporal scale) or [`\\\\\\\"ordinal\\\\\\\"` (for using an ordinal scale)](https://vega.github.io/vega-lite/docs/type.html#cast-bin). - When using with [`aggregate`](https://vega.github.io/vega-lite/docs/aggregate.html), the `type` property refers to the post-aggregation data type. For example, we can calculate count `distinct` of a categorical field `\\\\\\\"cat\\\\\\\"` using `{\\\\\\\"aggregate\\\\\\\": \\\\\\\"distinct\\\\\\\", \\\\\\\"field\\\\\\\": \\\\\\\"cat\\\\\\\"}`. The `\\\\\\\"type\\\\\\\"` of the aggregate output is `\\\\\\\"quantitative\\\\\\\"`. - Secondary channels (e.g., `x2`, `y2`, `xError`, `yError`) do not have `type` as they must have exactly the same type as their primary channels (e.g., `x`, `y`).\\\\n\\\\n__See also:__ [`type`](https://vega.github.io/vega-lite/docs/type.html) documentation.\\\"}},\\\"type\\\":\\\"object\\\"},\\\"OrderValueDef\\\":{\\\"additionalProperties\\\":false,\\\"properties\\\":{\\\"condition\\\":{\\\"anyOf\\\":[{\\\"$ref\\\":\\\"#/definitions/ConditionalValueDef<number>\\\"},{\\\"items\\\":{\\\"$ref\\\":\\\"#/definitions/ConditionalValueDef<number>\\\"},\\\"type\\\":\\\"array\\\"}],\\\"description\\\":\\\"One or more value definition(s) with [a selection or a test predicate](https://vega.github.io/vega-lite/docs/condition.html).\\\\n\\\\n__Note:__ A field definition's `condition` property can only contain [conditional value definitions](https://vega.github.io/vega-lite/docs/condition.html#value) since Vega-Lite only allows at most one encoded field per encoding channel.\\\"},\\\"value\\\":{\\\"anyOf\\\":[{\\\"type\\\":\\\"number\\\"},{\\\"$ref\\\":\\\"#/definitions/ExprRef\\\"}],\\\"description\\\":\\\"A constant value in visual domain (e.g., `\\\\\\\"red\\\\\\\"` / `\\\\\\\"#0099ff\\\\\\\"` / [gradient definition](https://vega.github.io/vega-lite/docs/types.html#gradient) for color, values between `0` to `1` for opacity).\\\"}},\\\"required\\\":[\\\"value\\\"],\\\"type\\\":\\\"object\\\"},\\\"Orient\\\":{\\\"enum\\\":[\\\"left\\\",\\\"right\\\",\\\"top\\\",\\\"bottom\\\"],\\\"type\\\":\\\"string\\\"},\\\"Orientation\\\":{\\\"enum\\\":[\\\"horizontal\\\",\\\"vertical\\\"],\\\"type\\\":\\\"string\\\"},\\\"OverlayMarkDef\\\":{\\\"additionalProperties\\\":false,\\\"properties\\\":{\\\"align\\\":{\\\"anyOf\\\":[{\\\"$ref\\\":\\\"#/definitions/Align\\\"},{\\\"$ref\\\":\\\"#/definitions/ExprRef\\\"}],\\\"description\\\":\\\"The horizontal alignment of the text or ranged marks (area, bar, image, rect, rule). One of `\\\\\\\"left\\\\\\\"`, `\\\\\\\"right\\\\\\\"`, `\\\\\\\"center\\\\\\\"`.\\\\n\\\\n__Note:__ Expression reference is *not* supported for range marks.\\\"},\\\"angle\\\":{\\\"anyOf\\\":[{\\\"description\\\":\\\"The rotation angle of the text, in degrees.\\\",\\\"maximum\\\":360,\\\"minimum\\\":0,\\\"type\\\":\\\"number\\\"},{\\\"$ref\\\":\\\"#/definitions/ExprRef\\\"}]},\\\"aria\\\":{\\\"anyOf\\\":[{\\\"description\\\":\\\"A boolean flag indicating if [ARIA attributes](https://developer.mozilla.org/en-US/docs/Web/Accessibility/ARIA) should be included (SVG output only). If `false`, the \\\\\\\"aria-hidden\\\\\\\" attribute will be set on the output SVG element, removing the mark item from the ARIA accessibility tree.\\\",\\\"type\\\":\\\"boolean\\\"},{\\\"$ref\\\":\\\"#/definitions/ExprRef\\\"}]},\\\"ariaRole\\\":{\\\"anyOf\\\":[{\\\"description\\\":\\\"Sets the type of user interface element of the mark item for [ARIA accessibility](https://developer.mozilla.org/en-US/docs/Web/Accessibility/ARIA) (SVG output only). If specified, this property determines the \\\\\\\"role\\\\\\\" attribute. Warning: this property is experimental and may be changed in the future.\\\",\\\"type\\\":\\\"string\\\"},{\\\"$ref\\\":\\\"#/definitions/ExprRef\\\"}]},\\\"ariaRoleDescription\\\":{\\\"anyOf\\\":[{\\\"description\\\":\\\"A human-readable, author-localized description for the role of the mark item for [ARIA accessibility](https://developer.mozilla.org/en-US/docs/Web/Accessibility/ARIA) (SVG output only). If specified, this property determines the \\\\\\\"aria-roledescription\\\\\\\" attribute. Warning: this property is experimental and may be changed in the future.\\\",\\\"type\\\":\\\"string\\\"},{\\\"$ref\\\":\\\"#/definitions/ExprRef\\\"}]},\\\"aspect\\\":{\\\"anyOf\\\":[{\\\"description\\\":\\\"Whether to keep aspect ratio of image marks.\\\",\\\"type\\\":\\\"boolean\\\"},{\\\"$ref\\\":\\\"#/definitions/ExprRef\\\"}]},\\\"baseline\\\":{\\\"anyOf\\\":[{\\\"$ref\\\":\\\"#/definitions/TextBaseline\\\"},{\\\"$ref\\\":\\\"#/definitions/ExprRef\\\"}],\\\"description\\\":\\\"For text marks, the vertical text baseline. One of `\\\\\\\"alphabetic\\\\\\\"` (default), `\\\\\\\"top\\\\\\\"`, `\\\\\\\"middle\\\\\\\"`, `\\\\\\\"bottom\\\\\\\"`, `\\\\\\\"line-top\\\\\\\"`, `\\\\\\\"line-bottom\\\\\\\"`, or an expression reference that provides one of the valid values. The `\\\\\\\"line-top\\\\\\\"` and `\\\\\\\"line-bottom\\\\\\\"` values operate similarly to `\\\\\\\"top\\\\\\\"` and `\\\\\\\"bottom\\\\\\\"`, but are calculated relative to the `lineHeight` rather than `fontSize` alone.\\\\n\\\\nFor range marks, the vertical alignment of the marks. One of `\\\\\\\"top\\\\\\\"`, `\\\\\\\"middle\\\\\\\"`, `\\\\\\\"bottom\\\\\\\"`.\\\\n\\\\n__Note:__ Expression reference is *not* supported for range marks.\\\"},\\\"blend\\\":{\\\"anyOf\\\":[{\\\"$ref\\\":\\\"#/definitions/Blend\\\",\\\"description\\\":\\\"The color blend mode for drawing an item on its current background. Any valid [CSS mix-blend-mode](https://developer.mozilla.org/en-US/docs/Web/CSS/mix-blend-mode) value can be used.\\\\n\\\\n__Default value: `\\\\\\\"source-over\\\\\\\"`\\\"},{\\\"$ref\\\":\\\"#/definitions/ExprRef\\\"}]},\\\"clip\\\":{\\\"description\\\":\\\"Whether a mark be clipped to the enclosing group’s width and height.\\\",\\\"type\\\":\\\"boolean\\\"},\\\"color\\\":{\\\"anyOf\\\":[{\\\"$ref\\\":\\\"#/definitions/Color\\\"},{\\\"$ref\\\":\\\"#/definitions/Gradient\\\"},{\\\"$ref\\\":\\\"#/definitions/ExprRef\\\"}],\\\"description\\\":\\\"Default color.\\\\n\\\\n__Default value:__ <span style=\\\\\\\"color: #4682b4;\\\\\\\">&#9632;</span> `\\\\\\\"#4682b4\\\\\\\"`\\\\n\\\\n__Note:__ - This property cannot be used in a [style config](https://vega.github.io/vega-lite/docs/mark.html#style-config). - The `fill` and `stroke` properties have higher precedence than `color` and will override `color`.\\\"},\\\"cornerRadius\\\":{\\\"anyOf\\\":[{\\\"description\\\":\\\"The radius in pixels of rounded rectangles or arcs' corners.\\\\n\\\\n__Default value:__ `0`\\\",\\\"type\\\":\\\"number\\\"},{\\\"$ref\\\":\\\"#/definitions/ExprRef\\\"}]},\\\"cornerRadiusBottomLeft\\\":{\\\"anyOf\\\":[{\\\"description\\\":\\\"The radius in pixels of rounded rectangles' bottom left corner.\\\\n\\\\n__Default value:__ `0`\\\",\\\"type\\\":\\\"number\\\"},{\\\"$ref\\\":\\\"#/definitions/ExprRef\\\"}]},\\\"cornerRadiusBottomRight\\\":{\\\"anyOf\\\":[{\\\"description\\\":\\\"The radius in pixels of rounded rectangles' bottom right corner.\\\\n\\\\n__Default value:__ `0`\\\",\\\"type\\\":\\\"number\\\"},{\\\"$ref\\\":\\\"#/definitions/ExprRef\\\"}]},\\\"cornerRadiusTopLeft\\\":{\\\"anyOf\\\":[{\\\"description\\\":\\\"The radius in pixels of rounded rectangles' top right corner.\\\\n\\\\n__Default value:__ `0`\\\",\\\"type\\\":\\\"number\\\"},{\\\"$ref\\\":\\\"#/definitions/ExprRef\\\"}]},\\\"cornerRadiusTopRight\\\":{\\\"anyOf\\\":[{\\\"description\\\":\\\"The radius in pixels of rounded rectangles' top left corner.\\\\n\\\\n__Default value:__ `0`\\\",\\\"type\\\":\\\"number\\\"},{\\\"$ref\\\":\\\"#/definitions/ExprRef\\\"}]},\\\"cursor\\\":{\\\"anyOf\\\":[{\\\"$ref\\\":\\\"#/definitions/Cursor\\\",\\\"description\\\":\\\"The mouse cursor used over the mark. Any valid [CSS cursor type](https://developer.mozilla.org/en-US/docs/Web/CSS/cursor#Values) can be used.\\\"},{\\\"$ref\\\":\\\"#/definitions/ExprRef\\\"}]},\\\"description\\\":{\\\"anyOf\\\":[{\\\"description\\\":\\\"A text description of the mark item for [ARIA accessibility](https://developer.mozilla.org/en-US/docs/Web/Accessibility/ARIA) (SVG output only). If specified, this property determines the [\\\\\\\"aria-label\\\\\\\" attribute](https://developer.mozilla.org/en-US/docs/Web/Accessibility/ARIA/ARIA_Techniques/Using_the_aria-label_attribute).\\\",\\\"type\\\":\\\"string\\\"},{\\\"$ref\\\":\\\"#/definitions/ExprRef\\\"}]},\\\"dir\\\":{\\\"anyOf\\\":[{\\\"$ref\\\":\\\"#/definitions/TextDirection\\\",\\\"description\\\":\\\"The direction of the text. One of `\\\\\\\"ltr\\\\\\\"` (left-to-right) or `\\\\\\\"rtl\\\\\\\"` (right-to-left). This property determines on which side is truncated in response to the limit parameter.\\\\n\\\\n__Default value:__ `\\\\\\\"ltr\\\\\\\"`\\\"},{\\\"$ref\\\":\\\"#/definitions/ExprRef\\\"}]},\\\"dx\\\":{\\\"anyOf\\\":[{\\\"description\\\":\\\"The horizontal offset, in pixels, between the text label and its anchor point. The offset is applied after rotation by the _angle_ property.\\\",\\\"type\\\":\\\"number\\\"},{\\\"$ref\\\":\\\"#/definitions/ExprRef\\\"}]},\\\"dy\\\":{\\\"anyOf\\\":[{\\\"description\\\":\\\"The vertical offset, in pixels, between the text label and its anchor point. The offset is applied after rotation by the _angle_ property.\\\",\\\"type\\\":\\\"number\\\"},{\\\"$ref\\\":\\\"#/definitions/ExprRef\\\"}]},\\\"ellipsis\\\":{\\\"anyOf\\\":[{\\\"description\\\":\\\"The ellipsis string for text truncated in response to the limit parameter.\\\\n\\\\n__Default value:__ `\\\\\\\"…\\\\\\\"`\\\",\\\"type\\\":\\\"string\\\"},{\\\"$ref\\\":\\\"#/definitions/ExprRef\\\"}]},\\\"endAngle\\\":{\\\"anyOf\\\":[{\\\"description\\\":\\\"The end angle in radians for arc marks. A value of `0` indicates up (north), increasing values proceed clockwise.\\\",\\\"type\\\":\\\"number\\\"},{\\\"$ref\\\":\\\"#/definitions/ExprRef\\\"}]},\\\"fill\\\":{\\\"anyOf\\\":[{\\\"$ref\\\":\\\"#/definitions/Color\\\"},{\\\"$ref\\\":\\\"#/definitions/Gradient\\\"},{\\\"type\\\":\\\"null\\\"},{\\\"$ref\\\":\\\"#/definitions/ExprRef\\\"}],\\\"description\\\":\\\"Default fill color. This property has higher precedence than `config.color`. Set to `null` to remove fill.\\\\n\\\\n__Default value:__ (None)\\\"},\\\"fillOpacity\\\":{\\\"anyOf\\\":[{\\\"description\\\":\\\"The fill opacity (value between [0,1]).\\\\n\\\\n__Default value:__ `1`\\\",\\\"maximum\\\":1,\\\"minimum\\\":0,\\\"type\\\":\\\"number\\\"},{\\\"$ref\\\":\\\"#/definitions/ExprRef\\\"}]},\\\"filled\\\":{\\\"description\\\":\\\"Whether the mark's color should be used as fill color instead of stroke color.\\\\n\\\\n__Default value:__ `false` for all `point`, `line`, and `rule` marks as well as `geoshape` marks for [`graticule`](https://vega.github.io/vega-lite/docs/data.html#graticule) data sources; otherwise, `true`.\\\\n\\\\n__Note:__ This property cannot be used in a [style config](https://vega.github.io/vega-lite/docs/mark.html#style-config).\\\",\\\"type\\\":\\\"boolean\\\"},\\\"font\\\":{\\\"anyOf\\\":[{\\\"description\\\":\\\"The typeface to set the text in (e.g., `\\\\\\\"Helvetica Neue\\\\\\\"`).\\\",\\\"type\\\":\\\"string\\\"},{\\\"$ref\\\":\\\"#/definitions/ExprRef\\\"}]},\\\"fontSize\\\":{\\\"anyOf\\\":[{\\\"description\\\":\\\"The font size, in pixels.\\\\n\\\\n__Default value:__ `11`\\\",\\\"minimum\\\":0,\\\"type\\\":\\\"number\\\"},{\\\"$ref\\\":\\\"#/definitions/ExprRef\\\"}]},\\\"fontStyle\\\":{\\\"anyOf\\\":[{\\\"$ref\\\":\\\"#/definitions/FontStyle\\\",\\\"description\\\":\\\"The font style (e.g., `\\\\\\\"italic\\\\\\\"`).\\\"},{\\\"$ref\\\":\\\"#/definitions/ExprRef\\\"}]},\\\"fontWeight\\\":{\\\"anyOf\\\":[{\\\"$ref\\\":\\\"#/definitions/FontWeight\\\",\\\"description\\\":\\\"The font weight. This can be either a string (e.g `\\\\\\\"bold\\\\\\\"`, `\\\\\\\"normal\\\\\\\"`) or a number (`100`, `200`, `300`, ..., `900` where `\\\\\\\"normal\\\\\\\"` = `400` and `\\\\\\\"bold\\\\\\\"` = `700`).\\\"},{\\\"$ref\\\":\\\"#/definitions/ExprRef\\\"}]},\\\"height\\\":{\\\"anyOf\\\":[{\\\"description\\\":\\\"Height of the marks.\\\",\\\"type\\\":\\\"number\\\"},{\\\"$ref\\\":\\\"#/definitions/ExprRef\\\"}]},\\\"href\\\":{\\\"anyOf\\\":[{\\\"$ref\\\":\\\"#/definitions/URI\\\",\\\"description\\\":\\\"A URL to load upon mouse click. If defined, the mark acts as a hyperlink.\\\"},{\\\"$ref\\\":\\\"#/definitions/ExprRef\\\"}]},\\\"innerRadius\\\":{\\\"anyOf\\\":[{\\\"type\\\":\\\"number\\\"},{\\\"$ref\\\":\\\"#/definitions/ExprRef\\\"}],\\\"description\\\":\\\"The inner radius in pixels of arc marks. `innerRadius` is an alias for `radius2`.\\\"},\\\"interpolate\\\":{\\\"anyOf\\\":[{\\\"$ref\\\":\\\"#/definitions/Interpolate\\\",\\\"description\\\":\\\"The line interpolation method to use for line and area marks. One of the following: - `\\\\\\\"linear\\\\\\\"`: piecewise linear segments, as in a polyline. - `\\\\\\\"linear-closed\\\\\\\"`: close the linear segments to form a polygon. - `\\\\\\\"step\\\\\\\"`: alternate between horizontal and vertical segments, as in a step function. - `\\\\\\\"step-before\\\\\\\"`: alternate between vertical and horizontal segments, as in a step function. - `\\\\\\\"step-after\\\\\\\"`: alternate between horizontal and vertical segments, as in a step function. - `\\\\\\\"basis\\\\\\\"`: a B-spline, with control point duplication on the ends. - `\\\\\\\"basis-open\\\\\\\"`: an open B-spline; may not intersect the start or end. - `\\\\\\\"basis-closed\\\\\\\"`: a closed B-spline, as in a loop. - `\\\\\\\"cardinal\\\\\\\"`: a Cardinal spline, with control point duplication on the ends. - `\\\\\\\"cardinal-open\\\\\\\"`: an open Cardinal spline; may not intersect the start or end, but will intersect other control points. - `\\\\\\\"cardinal-closed\\\\\\\"`: a closed Cardinal spline, as in a loop. - `\\\\\\\"bundle\\\\\\\"`: equivalent to basis, except the tension parameter is used to straighten the spline. - `\\\\\\\"monotone\\\\\\\"`: cubic interpolation that preserves monotonicity in y.\\\"},{\\\"$ref\\\":\\\"#/definitions/ExprRef\\\"}]},\\\"invalid\\\":{\\\"description\\\":\\\"Defines how Vega-Lite should handle marks for invalid values (`null` and `NaN`). - If set to `\\\\\\\"filter\\\\\\\"` (default), all data items with null values will be skipped (for line, trail, and area marks) or filtered (for other marks). - If `null`, all data items are included. In this case, invalid values will be interpreted as zeroes.\\\",\\\"enum\\\":[\\\"filter\\\",null],\\\"type\\\":[\\\"string\\\",\\\"null\\\"]},\\\"limit\\\":{\\\"anyOf\\\":[{\\\"description\\\":\\\"The maximum length of the text mark in pixels. The text value will be automatically truncated if the rendered size exceeds the limit.\\\\n\\\\n__Default value:__ `0` -- indicating no limit\\\",\\\"type\\\":\\\"number\\\"},{\\\"$ref\\\":\\\"#/definitions/ExprRef\\\"}]},\\\"lineBreak\\\":{\\\"anyOf\\\":[{\\\"description\\\":\\\"A delimiter, such as a newline character, upon which to break text strings into multiple lines. This property is ignored if the text is array-valued.\\\",\\\"type\\\":\\\"string\\\"},{\\\"$ref\\\":\\\"#/definitions/ExprRef\\\"}]},\\\"lineHeight\\\":{\\\"anyOf\\\":[{\\\"description\\\":\\\"The line height in pixels (the spacing between subsequent lines of text) for multi-line text marks.\\\",\\\"type\\\":\\\"number\\\"},{\\\"$ref\\\":\\\"#/definitions/ExprRef\\\"}]},\\\"opacity\\\":{\\\"anyOf\\\":[{\\\"type\\\":\\\"number\\\"},{\\\"$ref\\\":\\\"#/definitions/ExprRef\\\"}],\\\"description\\\":\\\"The overall opacity (value between [0,1]).\\\\n\\\\n__Default value:__ `0.7` for non-aggregate plots with `point`, `tick`, `circle`, or `square` marks or layered `bar` charts and `1` otherwise.\\\",\\\"maximum\\\":1,\\\"minimum\\\":0},\\\"order\\\":{\\\"description\\\":\\\"For line and trail marks, this `order` property can be set to `null` or `false` to make the lines use the original order in the data sources.\\\",\\\"type\\\":[\\\"null\\\",\\\"boolean\\\"]},\\\"orient\\\":{\\\"$ref\\\":\\\"#/definitions/Orientation\\\",\\\"description\\\":\\\"The orientation of a non-stacked bar, tick, area, and line charts. The value is either horizontal (default) or vertical. - For bar, rule and tick, this determines whether the size of the bar and tick should be applied to x or y dimension. - For area, this property determines the orient property of the Vega output. - For line and trail marks, this property determines the sort order of the points in the line if `config.sortLineBy` is not specified. For stacked charts, this is always determined by the orientation of the stack; therefore explicitly specified value will be ignored.\\\"},\\\"outerRadius\\\":{\\\"anyOf\\\":[{\\\"type\\\":\\\"number\\\"},{\\\"$ref\\\":\\\"#/definitions/ExprRef\\\"}],\\\"description\\\":\\\"The outer radius in pixels of arc marks. `outerRadius` is an alias for `radius`.\\\"},\\\"padAngle\\\":{\\\"anyOf\\\":[{\\\"description\\\":\\\"The angular padding applied to sides of the arc, in radians.\\\",\\\"type\\\":\\\"number\\\"},{\\\"$ref\\\":\\\"#/definitions/ExprRef\\\"}]},\\\"radius\\\":{\\\"anyOf\\\":[{\\\"type\\\":\\\"number\\\"},{\\\"$ref\\\":\\\"#/definitions/ExprRef\\\"}],\\\"description\\\":\\\"For arc mark, the primary (outer) radius in pixels.\\\\n\\\\nFor text marks, polar coordinate radial offset, in pixels, of the text from the origin determined by the `x` and `y` properties.\\\"},\\\"radius2\\\":{\\\"anyOf\\\":[{\\\"type\\\":\\\"number\\\"},{\\\"$ref\\\":\\\"#/definitions/ExprRef\\\"}],\\\"description\\\":\\\"The secondary (inner) radius in pixels of arc marks.\\\"},\\\"radius2Offset\\\":{\\\"anyOf\\\":[{\\\"type\\\":\\\"number\\\"},{\\\"$ref\\\":\\\"#/definitions/ExprRef\\\"}],\\\"description\\\":\\\"Offset for radius2.\\\"},\\\"radiusOffset\\\":{\\\"anyOf\\\":[{\\\"type\\\":\\\"number\\\"},{\\\"$ref\\\":\\\"#/definitions/ExprRef\\\"}],\\\"description\\\":\\\"Offset for radius.\\\"},\\\"shape\\\":{\\\"anyOf\\\":[{\\\"anyOf\\\":[{\\\"$ref\\\":\\\"#/definitions/SymbolShape\\\"},{\\\"type\\\":\\\"string\\\"}],\\\"description\\\":\\\"Shape of the point marks. Supported values include: - plotting shapes: `\\\\\\\"circle\\\\\\\"`, `\\\\\\\"square\\\\\\\"`, `\\\\\\\"cross\\\\\\\"`, `\\\\\\\"diamond\\\\\\\"`, `\\\\\\\"triangle-up\\\\\\\"`, `\\\\\\\"triangle-down\\\\\\\"`, `\\\\\\\"triangle-right\\\\\\\"`, or `\\\\\\\"triangle-left\\\\\\\"`. - the line symbol `\\\\\\\"stroke\\\\\\\"` - centered directional shapes `\\\\\\\"arrow\\\\\\\"`, `\\\\\\\"wedge\\\\\\\"`, or `\\\\\\\"triangle\\\\\\\"` - a custom [SVG path string](https://developer.mozilla.org/en-US/docs/Web/SVG/Tutorial/Paths) (For correct sizing, custom shape paths should be defined within a square bounding box with coordinates ranging from -1 to 1 along both the x and y dimensions.)\\\\n\\\\n__Default value:__ `\\\\\\\"circle\\\\\\\"`\\\"},{\\\"$ref\\\":\\\"#/definitions/ExprRef\\\"}]},\\\"size\\\":{\\\"anyOf\\\":[{\\\"type\\\":\\\"number\\\"},{\\\"$ref\\\":\\\"#/definitions/ExprRef\\\"}],\\\"description\\\":\\\"Default size for marks. - For `point`/`circle`/`square`, this represents the pixel area of the marks. Note that this value sets the area of the symbol; the side lengths will increase with the square root of this value. - For `bar`, this represents the band size of the bar, in pixels. - For `text`, this represents the font size, in pixels.\\\\n\\\\n__Default value:__ - `30` for point, circle, square marks; width/height's `step` - `2` for bar marks with discrete dimensions; - `5` for bar marks with continuous dimensions; - `11` for text marks.\\\",\\\"minimum\\\":0},\\\"smooth\\\":{\\\"anyOf\\\":[{\\\"description\\\":\\\"A boolean flag (default true) indicating if the image should be smoothed when resized. If false, individual pixels should be scaled directly rather than interpolated with smoothing. For SVG rendering, this option may not work in some browsers due to lack of standardization.\\\",\\\"type\\\":\\\"boolean\\\"},{\\\"$ref\\\":\\\"#/definitions/ExprRef\\\"}]},\\\"startAngle\\\":{\\\"anyOf\\\":[{\\\"description\\\":\\\"The start angle in radians for arc marks. A value of `0` indicates up (north), increasing values proceed clockwise.\\\",\\\"type\\\":\\\"number\\\"},{\\\"$ref\\\":\\\"#/definitions/ExprRef\\\"}]},\\\"stroke\\\":{\\\"anyOf\\\":[{\\\"$ref\\\":\\\"#/definitions/Color\\\"},{\\\"$ref\\\":\\\"#/definitions/Gradient\\\"},{\\\"type\\\":\\\"null\\\"},{\\\"$ref\\\":\\\"#/definitions/ExprRef\\\"}],\\\"description\\\":\\\"Default stroke color. This property has higher precedence than `config.color`. Set to `null` to remove stroke.\\\\n\\\\n__Default value:__ (None)\\\"},\\\"strokeCap\\\":{\\\"anyOf\\\":[{\\\"$ref\\\":\\\"#/definitions/StrokeCap\\\",\\\"description\\\":\\\"The stroke cap for line ending style. One of `\\\\\\\"butt\\\\\\\"`, `\\\\\\\"round\\\\\\\"`, or `\\\\\\\"square\\\\\\\"`.\\\\n\\\\n__Default value:__ `\\\\\\\"butt\\\\\\\"`\\\"},{\\\"$ref\\\":\\\"#/definitions/ExprRef\\\"}]},\\\"strokeDash\\\":{\\\"anyOf\\\":[{\\\"description\\\":\\\"An array of alternating stroke, space lengths for creating dashed or dotted lines.\\\",\\\"items\\\":{\\\"type\\\":\\\"number\\\"},\\\"type\\\":\\\"array\\\"},{\\\"$ref\\\":\\\"#/definitions/ExprRef\\\"}]},\\\"strokeDashOffset\\\":{\\\"anyOf\\\":[{\\\"description\\\":\\\"The offset (in pixels) into which to begin drawing with the stroke dash array.\\\",\\\"type\\\":\\\"number\\\"},{\\\"$ref\\\":\\\"#/definitions/ExprRef\\\"}]},\\\"strokeJoin\\\":{\\\"anyOf\\\":[{\\\"$ref\\\":\\\"#/definitions/StrokeJoin\\\",\\\"description\\\":\\\"The stroke line join method. One of `\\\\\\\"miter\\\\\\\"`, `\\\\\\\"round\\\\\\\"` or `\\\\\\\"bevel\\\\\\\"`.\\\\n\\\\n__Default value:__ `\\\\\\\"miter\\\\\\\"`\\\"},{\\\"$ref\\\":\\\"#/definitions/ExprRef\\\"}]},\\\"strokeMiterLimit\\\":{\\\"anyOf\\\":[{\\\"description\\\":\\\"The miter limit at which to bevel a line join.\\\",\\\"type\\\":\\\"number\\\"},{\\\"$ref\\\":\\\"#/definitions/ExprRef\\\"}]},\\\"strokeOffset\\\":{\\\"anyOf\\\":[{\\\"description\\\":\\\"The offset in pixels at which to draw the group stroke and fill. If unspecified, the default behavior is to dynamically offset stroked groups such that 1 pixel stroke widths align with the pixel grid.\\\",\\\"type\\\":\\\"number\\\"},{\\\"$ref\\\":\\\"#/definitions/ExprRef\\\"}]},\\\"strokeOpacity\\\":{\\\"anyOf\\\":[{\\\"description\\\":\\\"The stroke opacity (value between [0,1]).\\\\n\\\\n__Default value:__ `1`\\\",\\\"maximum\\\":1,\\\"minimum\\\":0,\\\"type\\\":\\\"number\\\"},{\\\"$ref\\\":\\\"#/definitions/ExprRef\\\"}]},\\\"strokeWidth\\\":{\\\"anyOf\\\":[{\\\"description\\\":\\\"The stroke width, in pixels.\\\",\\\"minimum\\\":0,\\\"type\\\":\\\"number\\\"},{\\\"$ref\\\":\\\"#/definitions/ExprRef\\\"}]},\\\"style\\\":{\\\"anyOf\\\":[{\\\"type\\\":\\\"string\\\"},{\\\"items\\\":{\\\"type\\\":\\\"string\\\"},\\\"type\\\":\\\"array\\\"}],\\\"description\\\":\\\"A string or array of strings indicating the name of custom styles to apply to the mark. A style is a named collection of mark property defaults defined within the [style configuration](https://vega.github.io/vega-lite/docs/mark.html#style-config). If style is an array, later styles will override earlier styles. Any [mark properties](https://vega.github.io/vega-lite/docs/encoding.html#mark-prop) explicitly defined within the `encoding` will override a style default.\\\\n\\\\n__Default value:__ The mark's name. For example, a bar mark will have style `\\\\\\\"bar\\\\\\\"` by default. __Note:__ Any specified style will augment the default style. For example, a bar mark with `\\\\\\\"style\\\\\\\": \\\\\\\"foo\\\\\\\"` will receive from `config.style.bar` and `config.style.foo` (the specified style `\\\\\\\"foo\\\\\\\"` has higher precedence).\\\"},\\\"tension\\\":{\\\"anyOf\\\":[{\\\"description\\\":\\\"Depending on the interpolation type, sets the tension parameter (for line and area marks).\\\",\\\"type\\\":\\\"number\\\"},{\\\"$ref\\\":\\\"#/definitions/ExprRef\\\"}]},\\\"text\\\":{\\\"anyOf\\\":[{\\\"$ref\\\":\\\"#/definitions/Text\\\",\\\"description\\\":\\\"Placeholder text if the `text` channel is not specified\\\"},{\\\"$ref\\\":\\\"#/definitions/ExprRef\\\"}]},\\\"theta\\\":{\\\"anyOf\\\":[{\\\"type\\\":\\\"number\\\"},{\\\"$ref\\\":\\\"#/definitions/ExprRef\\\"}],\\\"description\\\":\\\"- For arc marks, the arc length in radians if theta2 is not specified, otherwise the start arc angle. (A value of 0 indicates up or “north”, increasing values proceed clockwise.)\\\\n\\\\n- For text marks, polar coordinate angle in radians.\\\",\\\"maximum\\\":360,\\\"minimum\\\":0},\\\"theta2\\\":{\\\"anyOf\\\":[{\\\"type\\\":\\\"number\\\"},{\\\"$ref\\\":\\\"#/definitions/ExprRef\\\"}],\\\"description\\\":\\\"The end angle of arc marks in radians. A value of 0 indicates up or “north”, increasing values proceed clockwise.\\\"},\\\"theta2Offset\\\":{\\\"anyOf\\\":[{\\\"type\\\":\\\"number\\\"},{\\\"$ref\\\":\\\"#/definitions/ExprRef\\\"}],\\\"description\\\":\\\"Offset for theta2.\\\"},\\\"thetaOffset\\\":{\\\"anyOf\\\":[{\\\"type\\\":\\\"number\\\"},{\\\"$ref\\\":\\\"#/definitions/ExprRef\\\"}],\\\"description\\\":\\\"Offset for theta.\\\"},\\\"timeUnitBand\\\":{\\\"description\\\":\\\"Default relative band size for a time unit. If set to `1`, the bandwidth of the marks will be equal to the time unit band step. If set to `0.5`, bandwidth of the marks will be half of the time unit band step.\\\",\\\"type\\\":\\\"number\\\"},\\\"timeUnitBandPosition\\\":{\\\"description\\\":\\\"Default relative band position for a time unit. If set to `0`, the marks will be positioned at the beginning of the time unit band step. If set to `0.5`, the marks will be positioned in the middle of the time unit band step.\\\",\\\"type\\\":\\\"number\\\"},\\\"tooltip\\\":{\\\"anyOf\\\":[{\\\"type\\\":\\\"number\\\"},{\\\"type\\\":\\\"string\\\"},{\\\"type\\\":\\\"boolean\\\"},{\\\"$ref\\\":\\\"#/definitions/TooltipContent\\\"},{\\\"$ref\\\":\\\"#/definitions/ExprRef\\\"},{\\\"type\\\":\\\"null\\\"}],\\\"description\\\":\\\"The tooltip text string to show upon mouse hover or an object defining which fields should the tooltip be derived from.\\\\n\\\\n- If `tooltip` is `true` or `{\\\\\\\"content\\\\\\\": \\\\\\\"encoding\\\\\\\"}`, then all fields from `encoding` will be used. - If `tooltip` is `{\\\\\\\"content\\\\\\\": \\\\\\\"data\\\\\\\"}`, then all fields that appear in the highlighted data point will be used. - If set to `null` or `false`, then no tooltip will be used.\\\\n\\\\nSee the [`tooltip`](https://vega.github.io/vega-lite/docs/tooltip.html) documentation for a detailed discussion about tooltip  in Vega-Lite.\\\\n\\\\n__Default value:__ `null`\\\"},\\\"url\\\":{\\\"anyOf\\\":[{\\\"$ref\\\":\\\"#/definitions/URI\\\",\\\"description\\\":\\\"The URL of the image file for image marks.\\\"},{\\\"$ref\\\":\\\"#/definitions/ExprRef\\\"}]},\\\"width\\\":{\\\"anyOf\\\":[{\\\"description\\\":\\\"Width of the marks.\\\",\\\"type\\\":\\\"number\\\"},{\\\"$ref\\\":\\\"#/definitions/ExprRef\\\"}]},\\\"x\\\":{\\\"anyOf\\\":[{\\\"type\\\":\\\"number\\\"},{\\\"const\\\":\\\"width\\\",\\\"type\\\":\\\"string\\\"},{\\\"$ref\\\":\\\"#/definitions/ExprRef\\\"}],\\\"description\\\":\\\"X coordinates of the marks, or width of horizontal `\\\\\\\"bar\\\\\\\"` and `\\\\\\\"area\\\\\\\"` without specified `x2` or `width`.\\\\n\\\\nThe `value` of this channel can be a number or a string `\\\\\\\"width\\\\\\\"` for the width of the plot.\\\"},\\\"x2\\\":{\\\"anyOf\\\":[{\\\"type\\\":\\\"number\\\"},{\\\"const\\\":\\\"width\\\",\\\"type\\\":\\\"string\\\"},{\\\"$ref\\\":\\\"#/definitions/ExprRef\\\"}],\\\"description\\\":\\\"X2 coordinates for ranged `\\\\\\\"area\\\\\\\"`, `\\\\\\\"bar\\\\\\\"`, `\\\\\\\"rect\\\\\\\"`, and  `\\\\\\\"rule\\\\\\\"`.\\\\n\\\\nThe `value` of this channel can be a number or a string `\\\\\\\"width\\\\\\\"` for the width of the plot.\\\"},\\\"x2Offset\\\":{\\\"anyOf\\\":[{\\\"type\\\":\\\"number\\\"},{\\\"$ref\\\":\\\"#/definitions/ExprRef\\\"}],\\\"description\\\":\\\"Offset for x2-position.\\\"},\\\"xOffset\\\":{\\\"anyOf\\\":[{\\\"type\\\":\\\"number\\\"},{\\\"$ref\\\":\\\"#/definitions/ExprRef\\\"}],\\\"description\\\":\\\"Offset for x-position.\\\"},\\\"y\\\":{\\\"anyOf\\\":[{\\\"type\\\":\\\"number\\\"},{\\\"const\\\":\\\"height\\\",\\\"type\\\":\\\"string\\\"},{\\\"$ref\\\":\\\"#/definitions/ExprRef\\\"}],\\\"description\\\":\\\"Y coordinates of the marks, or height of vertical `\\\\\\\"bar\\\\\\\"` and `\\\\\\\"area\\\\\\\"` without specified `y2` or `height`.\\\\n\\\\nThe `value` of this channel can be a number or a string `\\\\\\\"height\\\\\\\"` for the height of the plot.\\\"},\\\"y2\\\":{\\\"anyOf\\\":[{\\\"type\\\":\\\"number\\\"},{\\\"const\\\":\\\"height\\\",\\\"type\\\":\\\"string\\\"},{\\\"$ref\\\":\\\"#/definitions/ExprRef\\\"}],\\\"description\\\":\\\"Y2 coordinates for ranged `\\\\\\\"area\\\\\\\"`, `\\\\\\\"bar\\\\\\\"`, `\\\\\\\"rect\\\\\\\"`, and  `\\\\\\\"rule\\\\\\\"`.\\\\n\\\\nThe `value` of this channel can be a number or a string `\\\\\\\"height\\\\\\\"` for the height of the plot.\\\"},\\\"y2Offset\\\":{\\\"anyOf\\\":[{\\\"type\\\":\\\"number\\\"},{\\\"$ref\\\":\\\"#/definitions/ExprRef\\\"}],\\\"description\\\":\\\"Offset for y2-position.\\\"},\\\"yOffset\\\":{\\\"anyOf\\\":[{\\\"type\\\":\\\"number\\\"},{\\\"$ref\\\":\\\"#/definitions/ExprRef\\\"}],\\\"description\\\":\\\"Offset for y-position.\\\"}},\\\"type\\\":\\\"object\\\"},\\\"Padding\\\":{\\\"anyOf\\\":[{\\\"type\\\":\\\"number\\\"},{\\\"additionalProperties\\\":false,\\\"properties\\\":{\\\"bottom\\\":{\\\"type\\\":\\\"number\\\"},\\\"left\\\":{\\\"type\\\":\\\"number\\\"},\\\"right\\\":{\\\"type\\\":\\\"number\\\"},\\\"top\\\":{\\\"type\\\":\\\"number\\\"}},\\\"type\\\":\\\"object\\\"}],\\\"minimum\\\":0},\\\"Parameter\\\":{\\\"additionalProperties\\\":false,\\\"properties\\\":{\\\"bind\\\":{\\\"$ref\\\":\\\"#/definitions/Binding\\\",\\\"description\\\":\\\"Binds the parameter to an external input element such as a slider, selection list or radio button group.\\\"},\\\"description\\\":{\\\"description\\\":\\\"A text description of the parameter, useful for inline documentation.\\\",\\\"type\\\":\\\"string\\\"},\\\"expr\\\":{\\\"$ref\\\":\\\"#/definitions/Expr\\\",\\\"description\\\":\\\"An expression for the value of the parameter. This expression may include other parameters, in which case the parameter will automatically update in response to upstream parameter changes.\\\"},\\\"name\\\":{\\\"description\\\":\\\"Required. A unique name for the parameter. Parameter names should be valid JavaScript identifiers: they should contain only alphanumeric characters (or “$”, or “_”) and may not start with a digit. Reserved keywords that may not be used as parameter names are \\\\\\\"datum\\\\\\\", \\\\\\\"event\\\\\\\", \\\\\\\"item\\\\\\\", and \\\\\\\"parent\\\\\\\".\\\",\\\"type\\\":\\\"string\\\"},\\\"value\\\":{\\\"description\\\":\\\"The initial value of the parameter.\\\\n\\\\n__Default value:__ `undefined`\\\"}},\\\"required\\\":[\\\"name\\\"],\\\"type\\\":\\\"object\\\"},\\\"Parse\\\":{\\\"additionalProperties\\\":{\\\"$ref\\\":\\\"#/definitions/ParseValue\\\"},\\\"type\\\":\\\"object\\\"},\\\"ParseValue\\\":{\\\"anyOf\\\":[{\\\"type\\\":\\\"null\\\"},{\\\"type\\\":\\\"string\\\"},{\\\"const\\\":\\\"string\\\",\\\"type\\\":\\\"string\\\"},{\\\"const\\\":\\\"boolean\\\",\\\"type\\\":\\\"string\\\"},{\\\"const\\\":\\\"date\\\",\\\"type\\\":\\\"string\\\"},{\\\"const\\\":\\\"number\\\",\\\"type\\\":\\\"string\\\"}]},\\\"PivotTransform\\\":{\\\"additionalProperties\\\":false,\\\"properties\\\":{\\\"groupby\\\":{\\\"description\\\":\\\"The optional data fields to group by. If not specified, a single group containing all data objects will be used.\\\",\\\"items\\\":{\\\"$ref\\\":\\\"#/definitions/FieldName\\\"},\\\"type\\\":\\\"array\\\"},\\\"limit\\\":{\\\"description\\\":\\\"An optional parameter indicating the maximum number of pivoted fields to generate. The default (`0`) applies no limit. The pivoted `pivot` names are sorted in ascending order prior to enforcing the limit. __Default value:__ `0`\\\",\\\"type\\\":\\\"number\\\"},\\\"op\\\":{\\\"description\\\":\\\"The aggregation operation to apply to grouped `value` field values. __Default value:__ `sum`\\\",\\\"type\\\":\\\"string\\\"},\\\"pivot\\\":{\\\"$ref\\\":\\\"#/definitions/FieldName\\\",\\\"description\\\":\\\"The data field to pivot on. The unique values of this field become new field names in the output stream.\\\"},\\\"value\\\":{\\\"$ref\\\":\\\"#/definitions/FieldName\\\",\\\"description\\\":\\\"The data field to populate pivoted fields. The aggregate values of this field become the values of the new pivoted fields.\\\"}},\\\"required\\\":[\\\"pivot\\\",\\\"value\\\"],\\\"type\\\":\\\"object\\\"},\\\"PolarDef\\\":{\\\"anyOf\\\":[{\\\"$ref\\\":\\\"#/definitions/PositionFieldDefBase\\\"},{\\\"$ref\\\":\\\"#/definitions/PositionDatumDefBase\\\"},{\\\"$ref\\\":\\\"#/definitions/PositionValueDef\\\"}]},\\\"Position2Def\\\":{\\\"anyOf\\\":[{\\\"$ref\\\":\\\"#/definitions/SecondaryFieldDef\\\"},{\\\"$ref\\\":\\\"#/definitions/DatumDef\\\"},{\\\"$ref\\\":\\\"#/definitions/PositionValueDef\\\"}]},\\\"PositionDatumDef\\\":{\\\"additionalProperties\\\":false,\\\"properties\\\":{\\\"axis\\\":{\\\"anyOf\\\":[{\\\"$ref\\\":\\\"#/definitions/Axis\\\"},{\\\"type\\\":\\\"null\\\"}],\\\"description\\\":\\\"An object defining properties of axis's gridlines, ticks and labels. If `null`, the axis for the encoding channel will be removed.\\\\n\\\\n__Default value:__ If undefined, default [axis properties](https://vega.github.io/vega-lite/docs/axis.html) are applied.\\\\n\\\\n__See also:__ [`axis`](https://vega.github.io/vega-lite/docs/axis.html) documentation.\\\"},\\\"band\\\":{\\\"description\\\":\\\"For rect-based marks (`rect`, `bar`, and `image`), mark size relative to bandwidth of [band scales](https://vega.github.io/vega-lite/docs/scale.html#band), bins or time units. If set to `1`, the mark size is set to the bandwidth, the bin interval, or the time unit interval. If set to `0.5`, the mark size is half of the bandwidth or the time unit interval.\\\\n\\\\nFor other marks, relative position on a band of a stacked, binned, time unit or band scale. If set to `0`, the marks will be positioned at the beginning of the band. If set to `0.5`, the marks will be positioned in the middle of the band.\\\",\\\"maximum\\\":1,\\\"minimum\\\":0,\\\"type\\\":\\\"number\\\"},\\\"datum\\\":{\\\"anyOf\\\":[{\\\"$ref\\\":\\\"#/definitions/PrimitiveValue\\\"},{\\\"$ref\\\":\\\"#/definitions/DateTime\\\"},{\\\"$ref\\\":\\\"#/definitions/ExprRef\\\"},{\\\"$ref\\\":\\\"#/definitions/RepeatRef\\\"}],\\\"description\\\":\\\"A constant value in data domain.\\\"},\\\"impute\\\":{\\\"anyOf\\\":[{\\\"$ref\\\":\\\"#/definitions/ImputeParams\\\"},{\\\"type\\\":\\\"null\\\"}],\\\"description\\\":\\\"An object defining the properties of the Impute Operation to be applied. The field value of the other positional channel is taken as `key` of the `Impute` Operation. The field of the `color` channel if specified is used as `groupby` of the `Impute` Operation.\\\\n\\\\n__See also:__ [`impute`](https://vega.github.io/vega-lite/docs/impute.html) documentation.\\\"},\\\"scale\\\":{\\\"anyOf\\\":[{\\\"$ref\\\":\\\"#/definitions/Scale\\\"},{\\\"type\\\":\\\"null\\\"}],\\\"description\\\":\\\"An object defining properties of the channel's scale, which is the function that transforms values in the data domain (numbers, dates, strings, etc) to visual values (pixels, colors, sizes) of the encoding channels.\\\\n\\\\nIf `null`, the scale will be [disabled and the data value will be directly encoded](https://vega.github.io/vega-lite/docs/scale.html#disable).\\\\n\\\\n__Default value:__ If undefined, default [scale properties](https://vega.github.io/vega-lite/docs/scale.html) are applied.\\\\n\\\\n__See also:__ [`scale`](https://vega.github.io/vega-lite/docs/scale.html) documentation.\\\"},\\\"stack\\\":{\\\"anyOf\\\":[{\\\"$ref\\\":\\\"#/definitions/StackOffset\\\"},{\\\"type\\\":\\\"null\\\"},{\\\"type\\\":\\\"boolean\\\"}],\\\"description\\\":\\\"Type of stacking offset if the field should be stacked. `stack` is only applicable for `x`, `y`, `theta`, and `radius` channels with continuous domains. For example, `stack` of `y` can be used to customize stacking for a vertical bar chart.\\\\n\\\\n`stack` can be one of the following values: - `\\\\\\\"zero\\\\\\\"` or `true`: stacking with baseline offset at zero value of the scale (for creating typical stacked [bar](https://vega.github.io/vega-lite/docs/stack.html#bar) and [area](https://vega.github.io/vega-lite/docs/stack.html#area) chart). - `\\\\\\\"normalize\\\\\\\"` - stacking with normalized domain (for creating [normalized stacked bar and area charts](https://vega.github.io/vega-lite/docs/stack.html#normalized). <br/> -`\\\\\\\"center\\\\\\\"` - stacking with center baseline (for [streamgraph](https://vega.github.io/vega-lite/docs/stack.html#streamgraph)). - `null` or `false` - No-stacking. This will produce layered [bar](https://vega.github.io/vega-lite/docs/stack.html#layered-bar-chart) and area chart.\\\\n\\\\n__Default value:__ `zero` for plots with all of the following conditions are true: (1) the mark is `bar`, `area`, or `arc`; (2) the stacked measure channel (x or y) has a linear scale; (3) At least one of non-position channels mapped to an unaggregated field that is different from x and y. Otherwise, `null` by default.\\\\n\\\\n__See also:__ [`stack`](https://vega.github.io/vega-lite/docs/stack.html) documentation.\\\"},\\\"type\\\":{\\\"$ref\\\":\\\"#/definitions/Type\\\",\\\"description\\\":\\\"The type of measurement (`\\\\\\\"quantitative\\\\\\\"`, `\\\\\\\"temporal\\\\\\\"`, `\\\\\\\"ordinal\\\\\\\"`, or `\\\\\\\"nominal\\\\\\\"`) for the encoded field or constant value (`datum`). It can also be a `\\\\\\\"geojson\\\\\\\"` type for encoding ['geoshape'](https://vega.github.io/vega-lite/docs/geoshape.html).\\\\n\\\\nVega-Lite automatically infers data types in many cases as discussed below. However, type is required for a field if: (1) the field is not nominal and the field encoding has no specified `aggregate` (except `argmin` and `argmax`), `bin`, scale type, custom `sort` order, nor `timeUnit` or (2) if you wish to use an ordinal scale for a field with `bin` or `timeUnit`.\\\\n\\\\n__Default value:__\\\\n\\\\n1) For a data `field`, `\\\\\\\"nominal\\\\\\\"` is the default data type unless the field encoding has `aggregate`, `channel`, `bin`, scale type, `sort`, or `timeUnit` that satisfies the following criteria: - `\\\\\\\"quantitative\\\\\\\"` is the default type if (1) the encoded field contains `bin` or `aggregate` except `\\\\\\\"argmin\\\\\\\"` and `\\\\\\\"argmax\\\\\\\"`, (2) the encoding channel is `latitude` or `longitude` channel or (3) if the specified scale type is [a quantitative scale](https://vega.github.io/vega-lite/docs/scale.html#type). - `\\\\\\\"temporal\\\\\\\"` is the default type if (1) the encoded field contains `timeUnit` or (2) the specified scale type is a time or utc scale - `ordinal\\\\\\\"\\\\\\\"` is the default type if (1) the encoded field contains a [custom `sort` order](https://vega.github.io/vega-lite/docs/sort.html#specifying-custom-sort-order), (2) the specified scale type is an ordinal/point/band scale, or (3) the encoding channel is `order`.\\\\n\\\\n2) For a constant value in data domain (`datum`): - `\\\\\\\"quantitative\\\\\\\"` if the datum is a number - `\\\\\\\"nominal\\\\\\\"` if the datum is a string - `\\\\\\\"temporal\\\\\\\"` if the datum is [a date time object](https://vega.github.io/vega-lite/docs/datetime.html)\\\\n\\\\n__Note:__ - Data `type` describes the semantics of the data rather than the primitive data types (number, string, etc.). The same primitive data type can have different types of measurement. For example, numeric data can represent quantitative, ordinal, or nominal data. - Data values for a temporal field can be either a date-time string (e.g., `\\\\\\\"2015-03-07 12:32:17\\\\\\\"`, `\\\\\\\"17:01\\\\\\\"`, `\\\\\\\"2015-03-16\\\\\\\"`. `\\\\\\\"2015\\\\\\\"`) or a timestamp number (e.g., `1552199579097`). - When using with [`bin`](https://vega.github.io/vega-lite/docs/bin.html), the `type` property can be either `\\\\\\\"quantitative\\\\\\\"` (for using a linear bin scale) or [`\\\\\\\"ordinal\\\\\\\"` (for using an ordinal bin scale)](https://vega.github.io/vega-lite/docs/type.html#cast-bin). - When using with [`timeUnit`](https://vega.github.io/vega-lite/docs/timeunit.html), the `type` property can be either `\\\\\\\"temporal\\\\\\\"` (default, for using a temporal scale) or [`\\\\\\\"ordinal\\\\\\\"` (for using an ordinal scale)](https://vega.github.io/vega-lite/docs/type.html#cast-bin). - When using with [`aggregate`](https://vega.github.io/vega-lite/docs/aggregate.html), the `type` property refers to the post-aggregation data type. For example, we can calculate count `distinct` of a categorical field `\\\\\\\"cat\\\\\\\"` using `{\\\\\\\"aggregate\\\\\\\": \\\\\\\"distinct\\\\\\\", \\\\\\\"field\\\\\\\": \\\\\\\"cat\\\\\\\"}`. The `\\\\\\\"type\\\\\\\"` of the aggregate output is `\\\\\\\"quantitative\\\\\\\"`. - Secondary channels (e.g., `x2`, `y2`, `xError`, `yError`) do not have `type` as they must have exactly the same type as their primary channels (e.g., `x`, `y`).\\\\n\\\\n__See also:__ [`type`](https://vega.github.io/vega-lite/docs/type.html) documentation.\\\"}},\\\"type\\\":\\\"object\\\"},\\\"PositionDatumDefBase\\\":{\\\"additionalProperties\\\":false,\\\"properties\\\":{\\\"band\\\":{\\\"description\\\":\\\"For rect-based marks (`rect`, `bar`, and `image`), mark size relative to bandwidth of [band scales](https://vega.github.io/vega-lite/docs/scale.html#band), bins or time units. If set to `1`, the mark size is set to the bandwidth, the bin interval, or the time unit interval. If set to `0.5`, the mark size is half of the bandwidth or the time unit interval.\\\\n\\\\nFor other marks, relative position on a band of a stacked, binned, time unit or band scale. If set to `0`, the marks will be positioned at the beginning of the band. If set to `0.5`, the marks will be positioned in the middle of the band.\\\",\\\"maximum\\\":1,\\\"minimum\\\":0,\\\"type\\\":\\\"number\\\"},\\\"datum\\\":{\\\"anyOf\\\":[{\\\"$ref\\\":\\\"#/definitions/PrimitiveValue\\\"},{\\\"$ref\\\":\\\"#/definitions/DateTime\\\"},{\\\"$ref\\\":\\\"#/definitions/ExprRef\\\"},{\\\"$ref\\\":\\\"#/definitions/RepeatRef\\\"}],\\\"description\\\":\\\"A constant value in data domain.\\\"},\\\"scale\\\":{\\\"anyOf\\\":[{\\\"$ref\\\":\\\"#/definitions/Scale\\\"},{\\\"type\\\":\\\"null\\\"}],\\\"description\\\":\\\"An object defining properties of the channel's scale, which is the function that transforms values in the data domain (numbers, dates, strings, etc) to visual values (pixels, colors, sizes) of the encoding channels.\\\\n\\\\nIf `null`, the scale will be [disabled and the data value will be directly encoded](https://vega.github.io/vega-lite/docs/scale.html#disable).\\\\n\\\\n__Default value:__ If undefined, default [scale properties](https://vega.github.io/vega-lite/docs/scale.html) are applied.\\\\n\\\\n__See also:__ [`scale`](https://vega.github.io/vega-lite/docs/scale.html) documentation.\\\"},\\\"stack\\\":{\\\"anyOf\\\":[{\\\"$ref\\\":\\\"#/definitions/StackOffset\\\"},{\\\"type\\\":\\\"null\\\"},{\\\"type\\\":\\\"boolean\\\"}],\\\"description\\\":\\\"Type of stacking offset if the field should be stacked. `stack` is only applicable for `x`, `y`, `theta`, and `radius` channels with continuous domains. For example, `stack` of `y` can be used to customize stacking for a vertical bar chart.\\\\n\\\\n`stack` can be one of the following values: - `\\\\\\\"zero\\\\\\\"` or `true`: stacking with baseline offset at zero value of the scale (for creating typical stacked [bar](https://vega.github.io/vega-lite/docs/stack.html#bar) and [area](https://vega.github.io/vega-lite/docs/stack.html#area) chart). - `\\\\\\\"normalize\\\\\\\"` - stacking with normalized domain (for creating [normalized stacked bar and area charts](https://vega.github.io/vega-lite/docs/stack.html#normalized). <br/> -`\\\\\\\"center\\\\\\\"` - stacking with center baseline (for [streamgraph](https://vega.github.io/vega-lite/docs/stack.html#streamgraph)). - `null` or `false` - No-stacking. This will produce layered [bar](https://vega.github.io/vega-lite/docs/stack.html#layered-bar-chart) and area chart.\\\\n\\\\n__Default value:__ `zero` for plots with all of the following conditions are true: (1) the mark is `bar`, `area`, or `arc`; (2) the stacked measure channel (x or y) has a linear scale; (3) At least one of non-position channels mapped to an unaggregated field that is different from x and y. Otherwise, `null` by default.\\\\n\\\\n__See also:__ [`stack`](https://vega.github.io/vega-lite/docs/stack.html) documentation.\\\"},\\\"type\\\":{\\\"$ref\\\":\\\"#/definitions/Type\\\",\\\"description\\\":\\\"The type of measurement (`\\\\\\\"quantitative\\\\\\\"`, `\\\\\\\"temporal\\\\\\\"`, `\\\\\\\"ordinal\\\\\\\"`, or `\\\\\\\"nominal\\\\\\\"`) for the encoded field or constant value (`datum`). It can also be a `\\\\\\\"geojson\\\\\\\"` type for encoding ['geoshape'](https://vega.github.io/vega-lite/docs/geoshape.html).\\\\n\\\\nVega-Lite automatically infers data types in many cases as discussed below. However, type is required for a field if: (1) the field is not nominal and the field encoding has no specified `aggregate` (except `argmin` and `argmax`), `bin`, scale type, custom `sort` order, nor `timeUnit` or (2) if you wish to use an ordinal scale for a field with `bin` or `timeUnit`.\\\\n\\\\n__Default value:__\\\\n\\\\n1) For a data `field`, `\\\\\\\"nominal\\\\\\\"` is the default data type unless the field encoding has `aggregate`, `channel`, `bin`, scale type, `sort`, or `timeUnit` that satisfies the following criteria: - `\\\\\\\"quantitative\\\\\\\"` is the default type if (1) the encoded field contains `bin` or `aggregate` except `\\\\\\\"argmin\\\\\\\"` and `\\\\\\\"argmax\\\\\\\"`, (2) the encoding channel is `latitude` or `longitude` channel or (3) if the specified scale type is [a quantitative scale](https://vega.github.io/vega-lite/docs/scale.html#type). - `\\\\\\\"temporal\\\\\\\"` is the default type if (1) the encoded field contains `timeUnit` or (2) the specified scale type is a time or utc scale - `ordinal\\\\\\\"\\\\\\\"` is the default type if (1) the encoded field contains a [custom `sort` order](https://vega.github.io/vega-lite/docs/sort.html#specifying-custom-sort-order), (2) the specified scale type is an ordinal/point/band scale, or (3) the encoding channel is `order`.\\\\n\\\\n2) For a constant value in data domain (`datum`): - `\\\\\\\"quantitative\\\\\\\"` if the datum is a number - `\\\\\\\"nominal\\\\\\\"` if the datum is a string - `\\\\\\\"temporal\\\\\\\"` if the datum is [a date time object](https://vega.github.io/vega-lite/docs/datetime.html)\\\\n\\\\n__Note:__ - Data `type` describes the semantics of the data rather than the primitive data types (number, string, etc.). The same primitive data type can have different types of measurement. For example, numeric data can represent quantitative, ordinal, or nominal data. - Data values for a temporal field can be either a date-time string (e.g., `\\\\\\\"2015-03-07 12:32:17\\\\\\\"`, `\\\\\\\"17:01\\\\\\\"`, `\\\\\\\"2015-03-16\\\\\\\"`. `\\\\\\\"2015\\\\\\\"`) or a timestamp number (e.g., `1552199579097`). - When using with [`bin`](https://vega.github.io/vega-lite/docs/bin.html), the `type` property can be either `\\\\\\\"quantitative\\\\\\\"` (for using a linear bin scale) or [`\\\\\\\"ordinal\\\\\\\"` (for using an ordinal bin scale)](https://vega.github.io/vega-lite/docs/type.html#cast-bin). - When using with [`timeUnit`](https://vega.github.io/vega-lite/docs/timeunit.html), the `type` property can be either `\\\\\\\"temporal\\\\\\\"` (default, for using a temporal scale) or [`\\\\\\\"ordinal\\\\\\\"` (for using an ordinal scale)](https://vega.github.io/vega-lite/docs/type.html#cast-bin). - When using with [`aggregate`](https://vega.github.io/vega-lite/docs/aggregate.html), the `type` property refers to the post-aggregation data type. For example, we can calculate count `distinct` of a categorical field `\\\\\\\"cat\\\\\\\"` using `{\\\\\\\"aggregate\\\\\\\": \\\\\\\"distinct\\\\\\\", \\\\\\\"field\\\\\\\": \\\\\\\"cat\\\\\\\"}`. The `\\\\\\\"type\\\\\\\"` of the aggregate output is `\\\\\\\"quantitative\\\\\\\"`. - Secondary channels (e.g., `x2`, `y2`, `xError`, `yError`) do not have `type` as they must have exactly the same type as their primary channels (e.g., `x`, `y`).\\\\n\\\\n__See also:__ [`type`](https://vega.github.io/vega-lite/docs/type.html) documentation.\\\"}},\\\"type\\\":\\\"object\\\"},\\\"PositionDef\\\":{\\\"anyOf\\\":[{\\\"$ref\\\":\\\"#/definitions/PositionFieldDef\\\"},{\\\"$ref\\\":\\\"#/definitions/PositionDatumDef\\\"},{\\\"$ref\\\":\\\"#/definitions/PositionValueDef\\\"}]},\\\"PositionFieldDef\\\":{\\\"additionalProperties\\\":false,\\\"properties\\\":{\\\"aggregate\\\":{\\\"$ref\\\":\\\"#/definitions/Aggregate\\\",\\\"description\\\":\\\"Aggregation function for the field (e.g., `\\\\\\\"mean\\\\\\\"`, `\\\\\\\"sum\\\\\\\"`, `\\\\\\\"median\\\\\\\"`, `\\\\\\\"min\\\\\\\"`, `\\\\\\\"max\\\\\\\"`, `\\\\\\\"count\\\\\\\"`).\\\\n\\\\n__Default value:__ `undefined` (None)\\\\n\\\\n__See also:__ [`aggregate`](https://vega.github.io/vega-lite/docs/aggregate.html) documentation.\\\"},\\\"axis\\\":{\\\"anyOf\\\":[{\\\"$ref\\\":\\\"#/definitions/Axis\\\"},{\\\"type\\\":\\\"null\\\"}],\\\"description\\\":\\\"An object defining properties of axis's gridlines, ticks and labels. If `null`, the axis for the encoding channel will be removed.\\\\n\\\\n__Default value:__ If undefined, default [axis properties](https://vega.github.io/vega-lite/docs/axis.html) are applied.\\\\n\\\\n__See also:__ [`axis`](https://vega.github.io/vega-lite/docs/axis.html) documentation.\\\"},\\\"band\\\":{\\\"description\\\":\\\"For rect-based marks (`rect`, `bar`, and `image`), mark size relative to bandwidth of [band scales](https://vega.github.io/vega-lite/docs/scale.html#band), bins or time units. If set to `1`, the mark size is set to the bandwidth, the bin interval, or the time unit interval. If set to `0.5`, the mark size is half of the bandwidth or the time unit interval.\\\\n\\\\nFor other marks, relative position on a band of a stacked, binned, time unit or band scale. If set to `0`, the marks will be positioned at the beginning of the band. If set to `0.5`, the marks will be positioned in the middle of the band.\\\",\\\"maximum\\\":1,\\\"minimum\\\":0,\\\"type\\\":\\\"number\\\"},\\\"bin\\\":{\\\"anyOf\\\":[{\\\"type\\\":\\\"boolean\\\"},{\\\"$ref\\\":\\\"#/definitions/BinParams\\\"},{\\\"const\\\":\\\"binned\\\",\\\"type\\\":\\\"string\\\"},{\\\"type\\\":\\\"null\\\"}],\\\"description\\\":\\\"A flag for binning a `quantitative` field, [an object defining binning parameters](https://vega.github.io/vega-lite/docs/bin.html#params), or indicating that the data for `x` or `y` channel are binned before they are imported into Vega-Lite (`\\\\\\\"binned\\\\\\\"`).\\\\n\\\\n- If `true`, default [binning parameters](https://vega.github.io/vega-lite/docs/bin.html) will be applied.\\\\n\\\\n- If `\\\\\\\"binned\\\\\\\"`, this indicates that the data for the `x` (or `y`) channel are already binned. You can map the bin-start field to `x` (or `y`) and the bin-end field to `x2` (or `y2`). The scale and axis will be formatted similar to binning in Vega-Lite.  To adjust the axis ticks based on the bin step, you can also set the axis's [`tickMinStep`](https://vega.github.io/vega-lite/docs/axis.html#ticks) property.\\\\n\\\\n__Default value:__ `false`\\\\n\\\\n__See also:__ [`bin`](https://vega.github.io/vega-lite/docs/bin.html) documentation.\\\"},\\\"field\\\":{\\\"$ref\\\":\\\"#/definitions/Field\\\",\\\"description\\\":\\\"__Required.__ A string defining the name of the field from which to pull a data value or an object defining iterated values from the [`repeat`](https://vega.github.io/vega-lite/docs/repeat.html) operator.\\\\n\\\\n__See also:__ [`field`](https://vega.github.io/vega-lite/docs/field.html) documentation.\\\\n\\\\n__Notes:__ 1)  Dots (`.`) and brackets (`[` and `]`) can be used to access nested objects (e.g., `\\\\\\\"field\\\\\\\": \\\\\\\"foo.bar\\\\\\\"` and `\\\\\\\"field\\\\\\\": \\\\\\\"foo['bar']\\\\\\\"`). If field names contain dots or brackets but are not nested, you can use `\\\\\\\\\\\\\\\\` to escape dots and brackets (e.g., `\\\\\\\"a\\\\\\\\\\\\\\\\.b\\\\\\\"` and `\\\\\\\"a\\\\\\\\\\\\\\\\[0\\\\\\\\\\\\\\\\]\\\\\\\"`). See more details about escaping in the [field documentation](https://vega.github.io/vega-lite/docs/field.html). 2) `field` is not required if `aggregate` is `count`.\\\"},\\\"impute\\\":{\\\"anyOf\\\":[{\\\"$ref\\\":\\\"#/definitions/ImputeParams\\\"},{\\\"type\\\":\\\"null\\\"}],\\\"description\\\":\\\"An object defining the properties of the Impute Operation to be applied. The field value of the other positional channel is taken as `key` of the `Impute` Operation. The field of the `color` channel if specified is used as `groupby` of the `Impute` Operation.\\\\n\\\\n__See also:__ [`impute`](https://vega.github.io/vega-lite/docs/impute.html) documentation.\\\"},\\\"scale\\\":{\\\"anyOf\\\":[{\\\"$ref\\\":\\\"#/definitions/Scale\\\"},{\\\"type\\\":\\\"null\\\"}],\\\"description\\\":\\\"An object defining properties of the channel's scale, which is the function that transforms values in the data domain (numbers, dates, strings, etc) to visual values (pixels, colors, sizes) of the encoding channels.\\\\n\\\\nIf `null`, the scale will be [disabled and the data value will be directly encoded](https://vega.github.io/vega-lite/docs/scale.html#disable).\\\\n\\\\n__Default value:__ If undefined, default [scale properties](https://vega.github.io/vega-lite/docs/scale.html) are applied.\\\\n\\\\n__See also:__ [`scale`](https://vega.github.io/vega-lite/docs/scale.html) documentation.\\\"},\\\"sort\\\":{\\\"$ref\\\":\\\"#/definitions/Sort\\\",\\\"description\\\":\\\"Sort order for the encoded field.\\\\n\\\\nFor continuous fields (quantitative or temporal), `sort` can be either `\\\\\\\"ascending\\\\\\\"` or `\\\\\\\"descending\\\\\\\"`.\\\\n\\\\nFor discrete fields, `sort` can be one of the following: - `\\\\\\\"ascending\\\\\\\"` or `\\\\\\\"descending\\\\\\\"` -- for sorting by the values' natural order in JavaScript. - [A string indicating an encoding channel name to sort by](https://vega.github.io/vega-lite/docs/sort.html#sort-by-encoding) (e.g., `\\\\\\\"x\\\\\\\"` or `\\\\\\\"y\\\\\\\"`) with an optional minus prefix for descending sort (e.g., `\\\\\\\"-x\\\\\\\"` to sort by x-field, descending). This channel string is short-form of [a sort-by-encoding definition](https://vega.github.io/vega-lite/docs/sort.html#sort-by-encoding). For example, `\\\\\\\"sort\\\\\\\": \\\\\\\"-x\\\\\\\"` is equivalent to `\\\\\\\"sort\\\\\\\": {\\\\\\\"encoding\\\\\\\": \\\\\\\"x\\\\\\\", \\\\\\\"order\\\\\\\": \\\\\\\"descending\\\\\\\"}`. - [A sort field definition](https://vega.github.io/vega-lite/docs/sort.html#sort-field) for sorting by another field. - [An array specifying the field values in preferred order](https://vega.github.io/vega-lite/docs/sort.html#sort-array). In this case, the sort order will obey the values in the array, followed by any unspecified values in their original order. For discrete time field, values in the sort array can be [date-time definition objects](types#datetime). In addition, for time units `\\\\\\\"month\\\\\\\"` and `\\\\\\\"day\\\\\\\"`, the values can be the month or day names (case insensitive) or their 3-letter initials (e.g., `\\\\\\\"Mon\\\\\\\"`, `\\\\\\\"Tue\\\\\\\"`). - `null` indicating no sort.\\\\n\\\\n__Default value:__ `\\\\\\\"ascending\\\\\\\"`\\\\n\\\\n__Note:__ `null` and sorting by another channel is not supported for `row` and `column`.\\\\n\\\\n__See also:__ [`sort`](https://vega.github.io/vega-lite/docs/sort.html) documentation.\\\"},\\\"stack\\\":{\\\"anyOf\\\":[{\\\"$ref\\\":\\\"#/definitions/StackOffset\\\"},{\\\"type\\\":\\\"null\\\"},{\\\"type\\\":\\\"boolean\\\"}],\\\"description\\\":\\\"Type of stacking offset if the field should be stacked. `stack` is only applicable for `x`, `y`, `theta`, and `radius` channels with continuous domains. For example, `stack` of `y` can be used to customize stacking for a vertical bar chart.\\\\n\\\\n`stack` can be one of the following values: - `\\\\\\\"zero\\\\\\\"` or `true`: stacking with baseline offset at zero value of the scale (for creating typical stacked [bar](https://vega.github.io/vega-lite/docs/stack.html#bar) and [area](https://vega.github.io/vega-lite/docs/stack.html#area) chart). - `\\\\\\\"normalize\\\\\\\"` - stacking with normalized domain (for creating [normalized stacked bar and area charts](https://vega.github.io/vega-lite/docs/stack.html#normalized). <br/> -`\\\\\\\"center\\\\\\\"` - stacking with center baseline (for [streamgraph](https://vega.github.io/vega-lite/docs/stack.html#streamgraph)). - `null` or `false` - No-stacking. This will produce layered [bar](https://vega.github.io/vega-lite/docs/stack.html#layered-bar-chart) and area chart.\\\\n\\\\n__Default value:__ `zero` for plots with all of the following conditions are true: (1) the mark is `bar`, `area`, or `arc`; (2) the stacked measure channel (x or y) has a linear scale; (3) At least one of non-position channels mapped to an unaggregated field that is different from x and y. Otherwise, `null` by default.\\\\n\\\\n__See also:__ [`stack`](https://vega.github.io/vega-lite/docs/stack.html) documentation.\\\"},\\\"timeUnit\\\":{\\\"anyOf\\\":[{\\\"$ref\\\":\\\"#/definitions/TimeUnit\\\"},{\\\"$ref\\\":\\\"#/definitions/TimeUnitParams\\\"}],\\\"description\\\":\\\"Time unit (e.g., `year`, `yearmonth`, `month`, `hours`) for a temporal field. or [a temporal field that gets casted as ordinal](https://vega.github.io/vega-lite/docs/type.html#cast).\\\\n\\\\n__Default value:__ `undefined` (None)\\\\n\\\\n__See also:__ [`timeUnit`](https://vega.github.io/vega-lite/docs/timeunit.html) documentation.\\\"},\\\"title\\\":{\\\"anyOf\\\":[{\\\"$ref\\\":\\\"#/definitions/Text\\\"},{\\\"type\\\":\\\"null\\\"}],\\\"description\\\":\\\"A title for the field. If `null`, the title will be removed.\\\\n\\\\n__Default value:__  derived from the field's name and transformation function (`aggregate`, `bin` and `timeUnit`). If the field has an aggregate function, the function is displayed as part of the title (e.g., `\\\\\\\"Sum of Profit\\\\\\\"`). If the field is binned or has a time unit applied, the applied function is shown in parentheses (e.g., `\\\\\\\"Profit (binned)\\\\\\\"`, `\\\\\\\"Transaction Date (year-month)\\\\\\\"`). Otherwise, the title is simply the field name.\\\\n\\\\n__Notes__:\\\\n\\\\n1) You can customize the default field title format by providing the [`fieldTitle`](https://vega.github.io/vega-lite/docs/config.html#top-level-config) property in the [config](https://vega.github.io/vega-lite/docs/config.html) or [`fieldTitle` function via the `compile` function's options](https://vega.github.io/vega-lite/docs/compile.html#field-title).\\\\n\\\\n2) If both field definition's `title` and axis, header, or legend `title` are defined, axis/header/legend title will be used.\\\"},\\\"type\\\":{\\\"$ref\\\":\\\"#/definitions/StandardType\\\",\\\"description\\\":\\\"The type of measurement (`\\\\\\\"quantitative\\\\\\\"`, `\\\\\\\"temporal\\\\\\\"`, `\\\\\\\"ordinal\\\\\\\"`, or `\\\\\\\"nominal\\\\\\\"`) for the encoded field or constant value (`datum`). It can also be a `\\\\\\\"geojson\\\\\\\"` type for encoding ['geoshape'](https://vega.github.io/vega-lite/docs/geoshape.html).\\\\n\\\\nVega-Lite automatically infers data types in many cases as discussed below. However, type is required for a field if: (1) the field is not nominal and the field encoding has no specified `aggregate` (except `argmin` and `argmax`), `bin`, scale type, custom `sort` order, nor `timeUnit` or (2) if you wish to use an ordinal scale for a field with `bin` or `timeUnit`.\\\\n\\\\n__Default value:__\\\\n\\\\n1) For a data `field`, `\\\\\\\"nominal\\\\\\\"` is the default data type unless the field encoding has `aggregate`, `channel`, `bin`, scale type, `sort`, or `timeUnit` that satisfies the following criteria: - `\\\\\\\"quantitative\\\\\\\"` is the default type if (1) the encoded field contains `bin` or `aggregate` except `\\\\\\\"argmin\\\\\\\"` and `\\\\\\\"argmax\\\\\\\"`, (2) the encoding channel is `latitude` or `longitude` channel or (3) if the specified scale type is [a quantitative scale](https://vega.github.io/vega-lite/docs/scale.html#type). - `\\\\\\\"temporal\\\\\\\"` is the default type if (1) the encoded field contains `timeUnit` or (2) the specified scale type is a time or utc scale - `ordinal\\\\\\\"\\\\\\\"` is the default type if (1) the encoded field contains a [custom `sort` order](https://vega.github.io/vega-lite/docs/sort.html#specifying-custom-sort-order), (2) the specified scale type is an ordinal/point/band scale, or (3) the encoding channel is `order`.\\\\n\\\\n2) For a constant value in data domain (`datum`): - `\\\\\\\"quantitative\\\\\\\"` if the datum is a number - `\\\\\\\"nominal\\\\\\\"` if the datum is a string - `\\\\\\\"temporal\\\\\\\"` if the datum is [a date time object](https://vega.github.io/vega-lite/docs/datetime.html)\\\\n\\\\n__Note:__ - Data `type` describes the semantics of the data rather than the primitive data types (number, string, etc.). The same primitive data type can have different types of measurement. For example, numeric data can represent quantitative, ordinal, or nominal data. - Data values for a temporal field can be either a date-time string (e.g., `\\\\\\\"2015-03-07 12:32:17\\\\\\\"`, `\\\\\\\"17:01\\\\\\\"`, `\\\\\\\"2015-03-16\\\\\\\"`. `\\\\\\\"2015\\\\\\\"`) or a timestamp number (e.g., `1552199579097`). - When using with [`bin`](https://vega.github.io/vega-lite/docs/bin.html), the `type` property can be either `\\\\\\\"quantitative\\\\\\\"` (for using a linear bin scale) or [`\\\\\\\"ordinal\\\\\\\"` (for using an ordinal bin scale)](https://vega.github.io/vega-lite/docs/type.html#cast-bin). - When using with [`timeUnit`](https://vega.github.io/vega-lite/docs/timeunit.html), the `type` property can be either `\\\\\\\"temporal\\\\\\\"` (default, for using a temporal scale) or [`\\\\\\\"ordinal\\\\\\\"` (for using an ordinal scale)](https://vega.github.io/vega-lite/docs/type.html#cast-bin). - When using with [`aggregate`](https://vega.github.io/vega-lite/docs/aggregate.html), the `type` property refers to the post-aggregation data type. For example, we can calculate count `distinct` of a categorical field `\\\\\\\"cat\\\\\\\"` using `{\\\\\\\"aggregate\\\\\\\": \\\\\\\"distinct\\\\\\\", \\\\\\\"field\\\\\\\": \\\\\\\"cat\\\\\\\"}`. The `\\\\\\\"type\\\\\\\"` of the aggregate output is `\\\\\\\"quantitative\\\\\\\"`. - Secondary channels (e.g., `x2`, `y2`, `xError`, `yError`) do not have `type` as they must have exactly the same type as their primary channels (e.g., `x`, `y`).\\\\n\\\\n__See also:__ [`type`](https://vega.github.io/vega-lite/docs/type.html) documentation.\\\"}},\\\"type\\\":\\\"object\\\"},\\\"PositionFieldDefBase\\\":{\\\"additionalProperties\\\":false,\\\"properties\\\":{\\\"aggregate\\\":{\\\"$ref\\\":\\\"#/definitions/Aggregate\\\",\\\"description\\\":\\\"Aggregation function for the field (e.g., `\\\\\\\"mean\\\\\\\"`, `\\\\\\\"sum\\\\\\\"`, `\\\\\\\"median\\\\\\\"`, `\\\\\\\"min\\\\\\\"`, `\\\\\\\"max\\\\\\\"`, `\\\\\\\"count\\\\\\\"`).\\\\n\\\\n__Default value:__ `undefined` (None)\\\\n\\\\n__See also:__ [`aggregate`](https://vega.github.io/vega-lite/docs/aggregate.html) documentation.\\\"},\\\"band\\\":{\\\"description\\\":\\\"For rect-based marks (`rect`, `bar`, and `image`), mark size relative to bandwidth of [band scales](https://vega.github.io/vega-lite/docs/scale.html#band), bins or time units. If set to `1`, the mark size is set to the bandwidth, the bin interval, or the time unit interval. If set to `0.5`, the mark size is half of the bandwidth or the time unit interval.\\\\n\\\\nFor other marks, relative position on a band of a stacked, binned, time unit or band scale. If set to `0`, the marks will be positioned at the beginning of the band. If set to `0.5`, the marks will be positioned in the middle of the band.\\\",\\\"maximum\\\":1,\\\"minimum\\\":0,\\\"type\\\":\\\"number\\\"},\\\"bin\\\":{\\\"anyOf\\\":[{\\\"type\\\":\\\"boolean\\\"},{\\\"$ref\\\":\\\"#/definitions/BinParams\\\"},{\\\"const\\\":\\\"binned\\\",\\\"type\\\":\\\"string\\\"},{\\\"type\\\":\\\"null\\\"}],\\\"description\\\":\\\"A flag for binning a `quantitative` field, [an object defining binning parameters](https://vega.github.io/vega-lite/docs/bin.html#params), or indicating that the data for `x` or `y` channel are binned before they are imported into Vega-Lite (`\\\\\\\"binned\\\\\\\"`).\\\\n\\\\n- If `true`, default [binning parameters](https://vega.github.io/vega-lite/docs/bin.html) will be applied.\\\\n\\\\n- If `\\\\\\\"binned\\\\\\\"`, this indicates that the data for the `x` (or `y`) channel are already binned. You can map the bin-start field to `x` (or `y`) and the bin-end field to `x2` (or `y2`). The scale and axis will be formatted similar to binning in Vega-Lite.  To adjust the axis ticks based on the bin step, you can also set the axis's [`tickMinStep`](https://vega.github.io/vega-lite/docs/axis.html#ticks) property.\\\\n\\\\n__Default value:__ `false`\\\\n\\\\n__See also:__ [`bin`](https://vega.github.io/vega-lite/docs/bin.html) documentation.\\\"},\\\"field\\\":{\\\"$ref\\\":\\\"#/definitions/Field\\\",\\\"description\\\":\\\"__Required.__ A string defining the name of the field from which to pull a data value or an object defining iterated values from the [`repeat`](https://vega.github.io/vega-lite/docs/repeat.html) operator.\\\\n\\\\n__See also:__ [`field`](https://vega.github.io/vega-lite/docs/field.html) documentation.\\\\n\\\\n__Notes:__ 1)  Dots (`.`) and brackets (`[` and `]`) can be used to access nested objects (e.g., `\\\\\\\"field\\\\\\\": \\\\\\\"foo.bar\\\\\\\"` and `\\\\\\\"field\\\\\\\": \\\\\\\"foo['bar']\\\\\\\"`). If field names contain dots or brackets but are not nested, you can use `\\\\\\\\\\\\\\\\` to escape dots and brackets (e.g., `\\\\\\\"a\\\\\\\\\\\\\\\\.b\\\\\\\"` and `\\\\\\\"a\\\\\\\\\\\\\\\\[0\\\\\\\\\\\\\\\\]\\\\\\\"`). See more details about escaping in the [field documentation](https://vega.github.io/vega-lite/docs/field.html). 2) `field` is not required if `aggregate` is `count`.\\\"},\\\"scale\\\":{\\\"anyOf\\\":[{\\\"$ref\\\":\\\"#/definitions/Scale\\\"},{\\\"type\\\":\\\"null\\\"}],\\\"description\\\":\\\"An object defining properties of the channel's scale, which is the function that transforms values in the data domain (numbers, dates, strings, etc) to visual values (pixels, colors, sizes) of the encoding channels.\\\\n\\\\nIf `null`, the scale will be [disabled and the data value will be directly encoded](https://vega.github.io/vega-lite/docs/scale.html#disable).\\\\n\\\\n__Default value:__ If undefined, default [scale properties](https://vega.github.io/vega-lite/docs/scale.html) are applied.\\\\n\\\\n__See also:__ [`scale`](https://vega.github.io/vega-lite/docs/scale.html) documentation.\\\"},\\\"sort\\\":{\\\"$ref\\\":\\\"#/definitions/Sort\\\",\\\"description\\\":\\\"Sort order for the encoded field.\\\\n\\\\nFor continuous fields (quantitative or temporal), `sort` can be either `\\\\\\\"ascending\\\\\\\"` or `\\\\\\\"descending\\\\\\\"`.\\\\n\\\\nFor discrete fields, `sort` can be one of the following: - `\\\\\\\"ascending\\\\\\\"` or `\\\\\\\"descending\\\\\\\"` -- for sorting by the values' natural order in JavaScript. - [A string indicating an encoding channel name to sort by](https://vega.github.io/vega-lite/docs/sort.html#sort-by-encoding) (e.g., `\\\\\\\"x\\\\\\\"` or `\\\\\\\"y\\\\\\\"`) with an optional minus prefix for descending sort (e.g., `\\\\\\\"-x\\\\\\\"` to sort by x-field, descending). This channel string is short-form of [a sort-by-encoding definition](https://vega.github.io/vega-lite/docs/sort.html#sort-by-encoding). For example, `\\\\\\\"sort\\\\\\\": \\\\\\\"-x\\\\\\\"` is equivalent to `\\\\\\\"sort\\\\\\\": {\\\\\\\"encoding\\\\\\\": \\\\\\\"x\\\\\\\", \\\\\\\"order\\\\\\\": \\\\\\\"descending\\\\\\\"}`. - [A sort field definition](https://vega.github.io/vega-lite/docs/sort.html#sort-field) for sorting by another field. - [An array specifying the field values in preferred order](https://vega.github.io/vega-lite/docs/sort.html#sort-array). In this case, the sort order will obey the values in the array, followed by any unspecified values in their original order. For discrete time field, values in the sort array can be [date-time definition objects](types#datetime). In addition, for time units `\\\\\\\"month\\\\\\\"` and `\\\\\\\"day\\\\\\\"`, the values can be the month or day names (case insensitive) or their 3-letter initials (e.g., `\\\\\\\"Mon\\\\\\\"`, `\\\\\\\"Tue\\\\\\\"`). - `null` indicating no sort.\\\\n\\\\n__Default value:__ `\\\\\\\"ascending\\\\\\\"`\\\\n\\\\n__Note:__ `null` and sorting by another channel is not supported for `row` and `column`.\\\\n\\\\n__See also:__ [`sort`](https://vega.github.io/vega-lite/docs/sort.html) documentation.\\\"},\\\"stack\\\":{\\\"anyOf\\\":[{\\\"$ref\\\":\\\"#/definitions/StackOffset\\\"},{\\\"type\\\":\\\"null\\\"},{\\\"type\\\":\\\"boolean\\\"}],\\\"description\\\":\\\"Type of stacking offset if the field should be stacked. `stack` is only applicable for `x`, `y`, `theta`, and `radius` channels with continuous domains. For example, `stack` of `y` can be used to customize stacking for a vertical bar chart.\\\\n\\\\n`stack` can be one of the following values: - `\\\\\\\"zero\\\\\\\"` or `true`: stacking with baseline offset at zero value of the scale (for creating typical stacked [bar](https://vega.github.io/vega-lite/docs/stack.html#bar) and [area](https://vega.github.io/vega-lite/docs/stack.html#area) chart). - `\\\\\\\"normalize\\\\\\\"` - stacking with normalized domain (for creating [normalized stacked bar and area charts](https://vega.github.io/vega-lite/docs/stack.html#normalized). <br/> -`\\\\\\\"center\\\\\\\"` - stacking with center baseline (for [streamgraph](https://vega.github.io/vega-lite/docs/stack.html#streamgraph)). - `null` or `false` - No-stacking. This will produce layered [bar](https://vega.github.io/vega-lite/docs/stack.html#layered-bar-chart) and area chart.\\\\n\\\\n__Default value:__ `zero` for plots with all of the following conditions are true: (1) the mark is `bar`, `area`, or `arc`; (2) the stacked measure channel (x or y) has a linear scale; (3) At least one of non-position channels mapped to an unaggregated field that is different from x and y. Otherwise, `null` by default.\\\\n\\\\n__See also:__ [`stack`](https://vega.github.io/vega-lite/docs/stack.html) documentation.\\\"},\\\"timeUnit\\\":{\\\"anyOf\\\":[{\\\"$ref\\\":\\\"#/definitions/TimeUnit\\\"},{\\\"$ref\\\":\\\"#/definitions/TimeUnitParams\\\"}],\\\"description\\\":\\\"Time unit (e.g., `year`, `yearmonth`, `month`, `hours`) for a temporal field. or [a temporal field that gets casted as ordinal](https://vega.github.io/vega-lite/docs/type.html#cast).\\\\n\\\\n__Default value:__ `undefined` (None)\\\\n\\\\n__See also:__ [`timeUnit`](https://vega.github.io/vega-lite/docs/timeunit.html) documentation.\\\"},\\\"title\\\":{\\\"anyOf\\\":[{\\\"$ref\\\":\\\"#/definitions/Text\\\"},{\\\"type\\\":\\\"null\\\"}],\\\"description\\\":\\\"A title for the field. If `null`, the title will be removed.\\\\n\\\\n__Default value:__  derived from the field's name and transformation function (`aggregate`, `bin` and `timeUnit`). If the field has an aggregate function, the function is displayed as part of the title (e.g., `\\\\\\\"Sum of Profit\\\\\\\"`). If the field is binned or has a time unit applied, the applied function is shown in parentheses (e.g., `\\\\\\\"Profit (binned)\\\\\\\"`, `\\\\\\\"Transaction Date (year-month)\\\\\\\"`). Otherwise, the title is simply the field name.\\\\n\\\\n__Notes__:\\\\n\\\\n1) You can customize the default field title format by providing the [`fieldTitle`](https://vega.github.io/vega-lite/docs/config.html#top-level-config) property in the [config](https://vega.github.io/vega-lite/docs/config.html) or [`fieldTitle` function via the `compile` function's options](https://vega.github.io/vega-lite/docs/compile.html#field-title).\\\\n\\\\n2) If both field definition's `title` and axis, header, or legend `title` are defined, axis/header/legend title will be used.\\\"},\\\"type\\\":{\\\"$ref\\\":\\\"#/definitions/StandardType\\\",\\\"description\\\":\\\"The type of measurement (`\\\\\\\"quantitative\\\\\\\"`, `\\\\\\\"temporal\\\\\\\"`, `\\\\\\\"ordinal\\\\\\\"`, or `\\\\\\\"nominal\\\\\\\"`) for the encoded field or constant value (`datum`). It can also be a `\\\\\\\"geojson\\\\\\\"` type for encoding ['geoshape'](https://vega.github.io/vega-lite/docs/geoshape.html).\\\\n\\\\nVega-Lite automatically infers data types in many cases as discussed below. However, type is required for a field if: (1) the field is not nominal and the field encoding has no specified `aggregate` (except `argmin` and `argmax`), `bin`, scale type, custom `sort` order, nor `timeUnit` or (2) if you wish to use an ordinal scale for a field with `bin` or `timeUnit`.\\\\n\\\\n__Default value:__\\\\n\\\\n1) For a data `field`, `\\\\\\\"nominal\\\\\\\"` is the default data type unless the field encoding has `aggregate`, `channel`, `bin`, scale type, `sort`, or `timeUnit` that satisfies the following criteria: - `\\\\\\\"quantitative\\\\\\\"` is the default type if (1) the encoded field contains `bin` or `aggregate` except `\\\\\\\"argmin\\\\\\\"` and `\\\\\\\"argmax\\\\\\\"`, (2) the encoding channel is `latitude` or `longitude` channel or (3) if the specified scale type is [a quantitative scale](https://vega.github.io/vega-lite/docs/scale.html#type). - `\\\\\\\"temporal\\\\\\\"` is the default type if (1) the encoded field contains `timeUnit` or (2) the specified scale type is a time or utc scale - `ordinal\\\\\\\"\\\\\\\"` is the default type if (1) the encoded field contains a [custom `sort` order](https://vega.github.io/vega-lite/docs/sort.html#specifying-custom-sort-order), (2) the specified scale type is an ordinal/point/band scale, or (3) the encoding channel is `order`.\\\\n\\\\n2) For a constant value in data domain (`datum`): - `\\\\\\\"quantitative\\\\\\\"` if the datum is a number - `\\\\\\\"nominal\\\\\\\"` if the datum is a string - `\\\\\\\"temporal\\\\\\\"` if the datum is [a date time object](https://vega.github.io/vega-lite/docs/datetime.html)\\\\n\\\\n__Note:__ - Data `type` describes the semantics of the data rather than the primitive data types (number, string, etc.). The same primitive data type can have different types of measurement. For example, numeric data can represent quantitative, ordinal, or nominal data. - Data values for a temporal field can be either a date-time string (e.g., `\\\\\\\"2015-03-07 12:32:17\\\\\\\"`, `\\\\\\\"17:01\\\\\\\"`, `\\\\\\\"2015-03-16\\\\\\\"`. `\\\\\\\"2015\\\\\\\"`) or a timestamp number (e.g., `1552199579097`). - When using with [`bin`](https://vega.github.io/vega-lite/docs/bin.html), the `type` property can be either `\\\\\\\"quantitative\\\\\\\"` (for using a linear bin scale) or [`\\\\\\\"ordinal\\\\\\\"` (for using an ordinal bin scale)](https://vega.github.io/vega-lite/docs/type.html#cast-bin). - When using with [`timeUnit`](https://vega.github.io/vega-lite/docs/timeunit.html), the `type` property can be either `\\\\\\\"temporal\\\\\\\"` (default, for using a temporal scale) or [`\\\\\\\"ordinal\\\\\\\"` (for using an ordinal scale)](https://vega.github.io/vega-lite/docs/type.html#cast-bin). - When using with [`aggregate`](https://vega.github.io/vega-lite/docs/aggregate.html), the `type` property refers to the post-aggregation data type. For example, we can calculate count `distinct` of a categorical field `\\\\\\\"cat\\\\\\\"` using `{\\\\\\\"aggregate\\\\\\\": \\\\\\\"distinct\\\\\\\", \\\\\\\"field\\\\\\\": \\\\\\\"cat\\\\\\\"}`. The `\\\\\\\"type\\\\\\\"` of the aggregate output is `\\\\\\\"quantitative\\\\\\\"`. - Secondary channels (e.g., `x2`, `y2`, `xError`, `yError`) do not have `type` as they must have exactly the same type as their primary channels (e.g., `x`, `y`).\\\\n\\\\n__See also:__ [`type`](https://vega.github.io/vega-lite/docs/type.html) documentation.\\\"}},\\\"type\\\":\\\"object\\\"},\\\"PositionValueDef\\\":{\\\"$ref\\\":\\\"#/definitions/ValueDef<(number|\\\\\\\"width\\\\\\\"|\\\\\\\"height\\\\\\\"|ExprRef)>\\\"},\\\"Predicate\\\":{\\\"anyOf\\\":[{\\\"$ref\\\":\\\"#/definitions/FieldEqualPredicate\\\"},{\\\"$ref\\\":\\\"#/definitions/FieldRangePredicate\\\"},{\\\"$ref\\\":\\\"#/definitions/FieldOneOfPredicate\\\"},{\\\"$ref\\\":\\\"#/definitions/FieldLTPredicate\\\"},{\\\"$ref\\\":\\\"#/definitions/FieldGTPredicate\\\"},{\\\"$ref\\\":\\\"#/definitions/FieldLTEPredicate\\\"},{\\\"$ref\\\":\\\"#/definitions/FieldGTEPredicate\\\"},{\\\"$ref\\\":\\\"#/definitions/FieldValidPredicate\\\"},{\\\"$ref\\\":\\\"#/definitions/SelectionPredicate\\\"},{\\\"type\\\":\\\"string\\\"}]},\\\"PrimitiveValue\\\":{\\\"type\\\":[\\\"number\\\",\\\"string\\\",\\\"boolean\\\",\\\"null\\\"]},\\\"Projection\\\":{\\\"additionalProperties\\\":false,\\\"properties\\\":{\\\"center\\\":{\\\"$ref\\\":\\\"#/definitions/Vector2<number>\\\",\\\"description\\\":\\\"The projection's center, a two-element array of longitude and latitude in degrees.\\\\n\\\\n__Default value:__ `[0, 0]`\\\"},\\\"clipAngle\\\":{\\\"description\\\":\\\"The projection's clipping circle radius to the specified angle in degrees. If `null`, switches to [antimeridian](http://bl.ocks.org/mbostock/3788999) cutting rather than small-circle clipping.\\\",\\\"type\\\":\\\"number\\\"},\\\"clipExtent\\\":{\\\"$ref\\\":\\\"#/definitions/Vector2<Vector2<number>>\\\",\\\"description\\\":\\\"The projection's viewport clip extent to the specified bounds in pixels. The extent bounds are specified as an array `[[x0, y0], [x1, y1]]`, where `x0` is the left-side of the viewport, `y0` is the top, `x1` is the right and `y1` is the bottom. If `null`, no viewport clipping is performed.\\\"},\\\"coefficient\\\":{\\\"type\\\":\\\"number\\\"},\\\"distance\\\":{\\\"type\\\":\\\"number\\\"},\\\"extent\\\":{\\\"$ref\\\":\\\"#/definitions/Vector2<Vector2<number>>\\\"},\\\"fit\\\":{\\\"anyOf\\\":[{\\\"$ref\\\":\\\"#/definitions/Fit\\\"},{\\\"items\\\":{\\\"$ref\\\":\\\"#/definitions/Fit\\\"},\\\"type\\\":\\\"array\\\"}]},\\\"fraction\\\":{\\\"type\\\":\\\"number\\\"},\\\"lobes\\\":{\\\"type\\\":\\\"number\\\"},\\\"parallel\\\":{\\\"type\\\":\\\"number\\\"},\\\"parallels\\\":{\\\"description\\\":\\\"For conic projections, the [two standard parallels](https://en.wikipedia.org/wiki/Map_projection#Conic) that define the map layout. The default depends on the specific conic projection used.\\\",\\\"items\\\":{\\\"type\\\":\\\"number\\\"},\\\"type\\\":\\\"array\\\"},\\\"pointRadius\\\":{\\\"description\\\":\\\"The default radius (in pixels) to use when drawing GeoJSON `Point` and `MultiPoint` geometries. This parameter sets a constant default value. To modify the point radius in response to data, see the corresponding parameter of the GeoPath and GeoShape transforms.\\\\n\\\\n__Default value:__ `4.5`\\\",\\\"type\\\":\\\"number\\\"},\\\"precision\\\":{\\\"description\\\":\\\"The threshold for the projection's [adaptive resampling](http://bl.ocks.org/mbostock/3795544) to the specified value in pixels. This value corresponds to the [Douglas–Peucker distance](http://en.wikipedia.org/wiki/Ramer%E2%80%93Douglas%E2%80%93Peucker_algorithm). If precision is not specified, returns the projection's current resampling precision which defaults to `√0.5 ≅ 0.70710…`.\\\",\\\"type\\\":\\\"number\\\"},\\\"radius\\\":{\\\"type\\\":\\\"number\\\"},\\\"ratio\\\":{\\\"type\\\":\\\"number\\\"},\\\"reflectX\\\":{\\\"type\\\":\\\"boolean\\\"},\\\"reflectY\\\":{\\\"type\\\":\\\"boolean\\\"},\\\"rotate\\\":{\\\"anyOf\\\":[{\\\"$ref\\\":\\\"#/definitions/Vector2<number>\\\"},{\\\"$ref\\\":\\\"#/definitions/Vector3<number>\\\"}],\\\"description\\\":\\\"The projection's three-axis rotation to the specified angles, which must be a two- or three-element array of numbers [`lambda`, `phi`, `gamma`] specifying the rotation angles in degrees about each spherical axis. (These correspond to yaw, pitch and roll.)\\\\n\\\\n__Default value:__ `[0, 0, 0]`\\\"},\\\"scale\\\":{\\\"description\\\":\\\"The projection’s scale (zoom) factor, overriding automatic fitting. The default scale is projection-specific. The scale factor corresponds linearly to the distance between projected points; however, scale factor values are not equivalent across projections.\\\",\\\"type\\\":\\\"number\\\"},\\\"size\\\":{\\\"$ref\\\":\\\"#/definitions/Vector2<number>\\\"},\\\"spacing\\\":{\\\"type\\\":\\\"number\\\"},\\\"tilt\\\":{\\\"type\\\":\\\"number\\\"},\\\"translate\\\":{\\\"$ref\\\":\\\"#/definitions/Vector2<number>\\\",\\\"description\\\":\\\"The projection’s translation offset as a two-element array `[tx, ty]`.\\\"},\\\"type\\\":{\\\"$ref\\\":\\\"#/definitions/ProjectionType\\\",\\\"description\\\":\\\"The cartographic projection to use. This value is case-insensitive, for example `\\\\\\\"albers\\\\\\\"` and `\\\\\\\"Albers\\\\\\\"` indicate the same projection type. You can find all valid projection types [in the documentation](https://vega.github.io/vega-lite/docs/projection.html#projection-types).\\\\n\\\\n__Default value:__ `mercator`\\\"}},\\\"type\\\":\\\"object\\\"},\\\"ProjectionConfig\\\":{\\\"$ref\\\":\\\"#/definitions/Projection\\\",\\\"description\\\":\\\"Any property of Projection can be in config\\\"},\\\"ProjectionType\\\":{\\\"enum\\\":[\\\"albers\\\",\\\"albersUsa\\\",\\\"azimuthalEqualArea\\\",\\\"azimuthalEquidistant\\\",\\\"conicConformal\\\",\\\"conicEqualArea\\\",\\\"conicEquidistant\\\",\\\"equalEarth\\\",\\\"equirectangular\\\",\\\"gnomonic\\\",\\\"identity\\\",\\\"mercator\\\",\\\"naturalEarth1\\\",\\\"orthographic\\\",\\\"stereographic\\\",\\\"transverseMercator\\\"],\\\"type\\\":\\\"string\\\"},\\\"QuantileTransform\\\":{\\\"additionalProperties\\\":false,\\\"properties\\\":{\\\"as\\\":{\\\"description\\\":\\\"The output field names for the probability and quantile values.\\\\n\\\\n__Default value:__ `[\\\\\\\"prob\\\\\\\", \\\\\\\"value\\\\\\\"]`\\\",\\\"items\\\":[{\\\"$ref\\\":\\\"#/definitions/FieldName\\\"},{\\\"$ref\\\":\\\"#/definitions/FieldName\\\"}],\\\"maxItems\\\":2,\\\"minItems\\\":2,\\\"type\\\":\\\"array\\\"},\\\"groupby\\\":{\\\"description\\\":\\\"The data fields to group by. If not specified, a single group containing all data objects will be used.\\\",\\\"items\\\":{\\\"$ref\\\":\\\"#/definitions/FieldName\\\"},\\\"type\\\":\\\"array\\\"},\\\"probs\\\":{\\\"description\\\":\\\"An array of probabilities in the range (0, 1) for which to compute quantile values. If not specified, the *step* parameter will be used.\\\",\\\"items\\\":{\\\"type\\\":\\\"number\\\"},\\\"type\\\":\\\"array\\\"},\\\"quantile\\\":{\\\"$ref\\\":\\\"#/definitions/FieldName\\\",\\\"description\\\":\\\"The data field for which to perform quantile estimation.\\\"},\\\"step\\\":{\\\"description\\\":\\\"A probability step size (default 0.01) for sampling quantile values. All values from one-half the step size up to 1 (exclusive) will be sampled. This parameter is only used if the *probs* parameter is not provided.\\\",\\\"type\\\":\\\"number\\\"}},\\\"required\\\":[\\\"quantile\\\"],\\\"type\\\":\\\"object\\\"},\\\"RadialGradient\\\":{\\\"additionalProperties\\\":false,\\\"properties\\\":{\\\"gradient\\\":{\\\"const\\\":\\\"radial\\\",\\\"description\\\":\\\"The type of gradient. Use `\\\\\\\"radial\\\\\\\"` for a radial gradient.\\\",\\\"type\\\":\\\"string\\\"},\\\"id\\\":{\\\"type\\\":\\\"string\\\"},\\\"r1\\\":{\\\"description\\\":\\\"The radius length, in normalized [0, 1] coordinates, of the inner circle for the gradient.\\\\n\\\\n__Default value:__ `0`\\\",\\\"type\\\":\\\"number\\\"},\\\"r2\\\":{\\\"description\\\":\\\"The radius length, in normalized [0, 1] coordinates, of the outer circle for the gradient.\\\\n\\\\n__Default value:__ `0.5`\\\",\\\"type\\\":\\\"number\\\"},\\\"stops\\\":{\\\"description\\\":\\\"An array of gradient stops defining the gradient color sequence.\\\",\\\"items\\\":{\\\"$ref\\\":\\\"#/definitions/GradientStop\\\"},\\\"type\\\":\\\"array\\\"},\\\"x1\\\":{\\\"description\\\":\\\"The x-coordinate, in normalized [0, 1] coordinates, for the center of the inner circle for the gradient.\\\\n\\\\n__Default value:__ `0.5`\\\",\\\"type\\\":\\\"number\\\"},\\\"x2\\\":{\\\"description\\\":\\\"The x-coordinate, in normalized [0, 1] coordinates, for the center of the outer circle for the gradient.\\\\n\\\\n__Default value:__ `0.5`\\\",\\\"type\\\":\\\"number\\\"},\\\"y1\\\":{\\\"description\\\":\\\"The y-coordinate, in normalized [0, 1] coordinates, for the center of the inner circle for the gradient.\\\\n\\\\n__Default value:__ `0.5`\\\",\\\"type\\\":\\\"number\\\"},\\\"y2\\\":{\\\"description\\\":\\\"The y-coordinate, in normalized [0, 1] coordinates, for the center of the outer circle for the gradient.\\\\n\\\\n__Default value:__ `0.5`\\\",\\\"type\\\":\\\"number\\\"}},\\\"required\\\":[\\\"gradient\\\",\\\"stops\\\"],\\\"type\\\":\\\"object\\\"},\\\"RangeConfig\\\":{\\\"additionalProperties\\\":{\\\"anyOf\\\":[{\\\"$ref\\\":\\\"#/definitions/RangeScheme\\\"},{\\\"type\\\":\\\"array\\\"}]},\\\"properties\\\":{\\\"category\\\":{\\\"anyOf\\\":[{\\\"$ref\\\":\\\"#/definitions/RangeScheme\\\"},{\\\"items\\\":{\\\"$ref\\\":\\\"#/definitions/Color\\\"},\\\"type\\\":\\\"array\\\"}],\\\"description\\\":\\\"Default [color scheme](https://vega.github.io/vega/docs/schemes/) for categorical data.\\\"},\\\"diverging\\\":{\\\"anyOf\\\":[{\\\"$ref\\\":\\\"#/definitions/RangeScheme\\\"},{\\\"items\\\":{\\\"$ref\\\":\\\"#/definitions/Color\\\"},\\\"type\\\":\\\"array\\\"}],\\\"description\\\":\\\"Default [color scheme](https://vega.github.io/vega/docs/schemes/) for diverging quantitative ramps.\\\"},\\\"heatmap\\\":{\\\"anyOf\\\":[{\\\"$ref\\\":\\\"#/definitions/RangeScheme\\\"},{\\\"items\\\":{\\\"$ref\\\":\\\"#/definitions/Color\\\"},\\\"type\\\":\\\"array\\\"}],\\\"description\\\":\\\"Default [color scheme](https://vega.github.io/vega/docs/schemes/) for quantitative heatmaps.\\\"},\\\"ordinal\\\":{\\\"anyOf\\\":[{\\\"$ref\\\":\\\"#/definitions/RangeScheme\\\"},{\\\"items\\\":{\\\"$ref\\\":\\\"#/definitions/Color\\\"},\\\"type\\\":\\\"array\\\"}],\\\"description\\\":\\\"Default [color scheme](https://vega.github.io/vega/docs/schemes/) for rank-ordered data.\\\"},\\\"ramp\\\":{\\\"anyOf\\\":[{\\\"$ref\\\":\\\"#/definitions/RangeScheme\\\"},{\\\"items\\\":{\\\"$ref\\\":\\\"#/definitions/Color\\\"},\\\"type\\\":\\\"array\\\"}],\\\"description\\\":\\\"Default [color scheme](https://vega.github.io/vega/docs/schemes/) for sequential quantitative ramps.\\\"},\\\"symbol\\\":{\\\"description\\\":\\\"Array of [symbol](https://vega.github.io/vega/docs/marks/symbol/) names or paths for the default shape palette.\\\",\\\"items\\\":{\\\"$ref\\\":\\\"#/definitions/SymbolShape\\\"},\\\"type\\\":\\\"array\\\"}},\\\"type\\\":\\\"object\\\"},\\\"RangeEnum\\\":{\\\"enum\\\":[\\\"width\\\",\\\"height\\\",\\\"symbol\\\",\\\"category\\\",\\\"ordinal\\\",\\\"ramp\\\",\\\"diverging\\\",\\\"heatmap\\\"],\\\"type\\\":\\\"string\\\"},\\\"RangeRaw\\\":{\\\"items\\\":{\\\"anyOf\\\":[{\\\"type\\\":\\\"null\\\"},{\\\"type\\\":\\\"boolean\\\"},{\\\"type\\\":\\\"string\\\"},{\\\"type\\\":\\\"number\\\"},{\\\"$ref\\\":\\\"#/definitions/RangeRawArray\\\"}]},\\\"type\\\":\\\"array\\\"},\\\"RangeRawArray\\\":{\\\"items\\\":{\\\"type\\\":\\\"number\\\"},\\\"type\\\":\\\"array\\\"},\\\"RangeScheme\\\":{\\\"anyOf\\\":[{\\\"$ref\\\":\\\"#/definitions/RangeEnum\\\"},{\\\"$ref\\\":\\\"#/definitions/RangeRaw\\\"},{\\\"additionalProperties\\\":false,\\\"properties\\\":{\\\"count\\\":{\\\"type\\\":\\\"number\\\"},\\\"extent\\\":{\\\"items\\\":{\\\"type\\\":\\\"number\\\"},\\\"type\\\":\\\"array\\\"},\\\"scheme\\\":{\\\"anyOf\\\":[{\\\"type\\\":\\\"string\\\"},{\\\"items\\\":{\\\"type\\\":\\\"string\\\"},\\\"type\\\":\\\"array\\\"},{\\\"$ref\\\":\\\"#/definitions/ColorScheme\\\"}]}},\\\"required\\\":[\\\"scheme\\\"],\\\"type\\\":\\\"object\\\"}]},\\\"RectConfig\\\":{\\\"additionalProperties\\\":false,\\\"properties\\\":{\\\"align\\\":{\\\"anyOf\\\":[{\\\"$ref\\\":\\\"#/definitions/Align\\\"},{\\\"$ref\\\":\\\"#/definitions/ExprRef\\\"}],\\\"description\\\":\\\"The horizontal alignment of the text or ranged marks (area, bar, image, rect, rule). One of `\\\\\\\"left\\\\\\\"`, `\\\\\\\"right\\\\\\\"`, `\\\\\\\"center\\\\\\\"`.\\\\n\\\\n__Note:__ Expression reference is *not* supported for range marks.\\\"},\\\"angle\\\":{\\\"anyOf\\\":[{\\\"description\\\":\\\"The rotation angle of the text, in degrees.\\\",\\\"maximum\\\":360,\\\"minimum\\\":0,\\\"type\\\":\\\"number\\\"},{\\\"$ref\\\":\\\"#/definitions/ExprRef\\\"}]},\\\"aria\\\":{\\\"anyOf\\\":[{\\\"description\\\":\\\"A boolean flag indicating if [ARIA attributes](https://developer.mozilla.org/en-US/docs/Web/Accessibility/ARIA) should be included (SVG output only). If `false`, the \\\\\\\"aria-hidden\\\\\\\" attribute will be set on the output SVG element, removing the mark item from the ARIA accessibility tree.\\\",\\\"type\\\":\\\"boolean\\\"},{\\\"$ref\\\":\\\"#/definitions/ExprRef\\\"}]},\\\"ariaRole\\\":{\\\"anyOf\\\":[{\\\"description\\\":\\\"Sets the type of user interface element of the mark item for [ARIA accessibility](https://developer.mozilla.org/en-US/docs/Web/Accessibility/ARIA) (SVG output only). If specified, this property determines the \\\\\\\"role\\\\\\\" attribute. Warning: this property is experimental and may be changed in the future.\\\",\\\"type\\\":\\\"string\\\"},{\\\"$ref\\\":\\\"#/definitions/ExprRef\\\"}]},\\\"ariaRoleDescription\\\":{\\\"anyOf\\\":[{\\\"description\\\":\\\"A human-readable, author-localized description for the role of the mark item for [ARIA accessibility](https://developer.mozilla.org/en-US/docs/Web/Accessibility/ARIA) (SVG output only). If specified, this property determines the \\\\\\\"aria-roledescription\\\\\\\" attribute. Warning: this property is experimental and may be changed in the future.\\\",\\\"type\\\":\\\"string\\\"},{\\\"$ref\\\":\\\"#/definitions/ExprRef\\\"}]},\\\"aspect\\\":{\\\"anyOf\\\":[{\\\"description\\\":\\\"Whether to keep aspect ratio of image marks.\\\",\\\"type\\\":\\\"boolean\\\"},{\\\"$ref\\\":\\\"#/definitions/ExprRef\\\"}]},\\\"baseline\\\":{\\\"anyOf\\\":[{\\\"$ref\\\":\\\"#/definitions/TextBaseline\\\"},{\\\"$ref\\\":\\\"#/definitions/ExprRef\\\"}],\\\"description\\\":\\\"For text marks, the vertical text baseline. One of `\\\\\\\"alphabetic\\\\\\\"` (default), `\\\\\\\"top\\\\\\\"`, `\\\\\\\"middle\\\\\\\"`, `\\\\\\\"bottom\\\\\\\"`, `\\\\\\\"line-top\\\\\\\"`, `\\\\\\\"line-bottom\\\\\\\"`, or an expression reference that provides one of the valid values. The `\\\\\\\"line-top\\\\\\\"` and `\\\\\\\"line-bottom\\\\\\\"` values operate similarly to `\\\\\\\"top\\\\\\\"` and `\\\\\\\"bottom\\\\\\\"`, but are calculated relative to the `lineHeight` rather than `fontSize` alone.\\\\n\\\\nFor range marks, the vertical alignment of the marks. One of `\\\\\\\"top\\\\\\\"`, `\\\\\\\"middle\\\\\\\"`, `\\\\\\\"bottom\\\\\\\"`.\\\\n\\\\n__Note:__ Expression reference is *not* supported for range marks.\\\"},\\\"binSpacing\\\":{\\\"description\\\":\\\"Offset between bars for binned field. The ideal value for this is either 0 (preferred by statisticians) or 1 (Vega-Lite default, D3 example style).\\\\n\\\\n__Default value:__ `1`\\\",\\\"minimum\\\":0,\\\"type\\\":\\\"number\\\"},\\\"blend\\\":{\\\"anyOf\\\":[{\\\"$ref\\\":\\\"#/definitions/Blend\\\",\\\"description\\\":\\\"The color blend mode for drawing an item on its current background. Any valid [CSS mix-blend-mode](https://developer.mozilla.org/en-US/docs/Web/CSS/mix-blend-mode) value can be used.\\\\n\\\\n__Default value: `\\\\\\\"source-over\\\\\\\"`\\\"},{\\\"$ref\\\":\\\"#/definitions/ExprRef\\\"}]},\\\"color\\\":{\\\"anyOf\\\":[{\\\"$ref\\\":\\\"#/definitions/Color\\\"},{\\\"$ref\\\":\\\"#/definitions/Gradient\\\"},{\\\"$ref\\\":\\\"#/definitions/ExprRef\\\"}],\\\"description\\\":\\\"Default color.\\\\n\\\\n__Default value:__ <span style=\\\\\\\"color: #4682b4;\\\\\\\">&#9632;</span> `\\\\\\\"#4682b4\\\\\\\"`\\\\n\\\\n__Note:__ - This property cannot be used in a [style config](https://vega.github.io/vega-lite/docs/mark.html#style-config). - The `fill` and `stroke` properties have higher precedence than `color` and will override `color`.\\\"},\\\"continuousBandSize\\\":{\\\"description\\\":\\\"The default size of the bars on continuous scales.\\\\n\\\\n__Default value:__ `5`\\\",\\\"minimum\\\":0,\\\"type\\\":\\\"number\\\"},\\\"cornerRadius\\\":{\\\"anyOf\\\":[{\\\"description\\\":\\\"The radius in pixels of rounded rectangles or arcs' corners.\\\\n\\\\n__Default value:__ `0`\\\",\\\"type\\\":\\\"number\\\"},{\\\"$ref\\\":\\\"#/definitions/ExprRef\\\"}]},\\\"cornerRadiusBottomLeft\\\":{\\\"anyOf\\\":[{\\\"description\\\":\\\"The radius in pixels of rounded rectangles' bottom left corner.\\\\n\\\\n__Default value:__ `0`\\\",\\\"type\\\":\\\"number\\\"},{\\\"$ref\\\":\\\"#/definitions/ExprRef\\\"}]},\\\"cornerRadiusBottomRight\\\":{\\\"anyOf\\\":[{\\\"description\\\":\\\"The radius in pixels of rounded rectangles' bottom right corner.\\\\n\\\\n__Default value:__ `0`\\\",\\\"type\\\":\\\"number\\\"},{\\\"$ref\\\":\\\"#/definitions/ExprRef\\\"}]},\\\"cornerRadiusTopLeft\\\":{\\\"anyOf\\\":[{\\\"description\\\":\\\"The radius in pixels of rounded rectangles' top right corner.\\\\n\\\\n__Default value:__ `0`\\\",\\\"type\\\":\\\"number\\\"},{\\\"$ref\\\":\\\"#/definitions/ExprRef\\\"}]},\\\"cornerRadiusTopRight\\\":{\\\"anyOf\\\":[{\\\"description\\\":\\\"The radius in pixels of rounded rectangles' top left corner.\\\\n\\\\n__Default value:__ `0`\\\",\\\"type\\\":\\\"number\\\"},{\\\"$ref\\\":\\\"#/definitions/ExprRef\\\"}]},\\\"cursor\\\":{\\\"anyOf\\\":[{\\\"$ref\\\":\\\"#/definitions/Cursor\\\",\\\"description\\\":\\\"The mouse cursor used over the mark. Any valid [CSS cursor type](https://developer.mozilla.org/en-US/docs/Web/CSS/cursor#Values) can be used.\\\"},{\\\"$ref\\\":\\\"#/definitions/ExprRef\\\"}]},\\\"description\\\":{\\\"anyOf\\\":[{\\\"description\\\":\\\"A text description of the mark item for [ARIA accessibility](https://developer.mozilla.org/en-US/docs/Web/Accessibility/ARIA) (SVG output only). If specified, this property determines the [\\\\\\\"aria-label\\\\\\\" attribute](https://developer.mozilla.org/en-US/docs/Web/Accessibility/ARIA/ARIA_Techniques/Using_the_aria-label_attribute).\\\",\\\"type\\\":\\\"string\\\"},{\\\"$ref\\\":\\\"#/definitions/ExprRef\\\"}]},\\\"dir\\\":{\\\"anyOf\\\":[{\\\"$ref\\\":\\\"#/definitions/TextDirection\\\",\\\"description\\\":\\\"The direction of the text. One of `\\\\\\\"ltr\\\\\\\"` (left-to-right) or `\\\\\\\"rtl\\\\\\\"` (right-to-left). This property determines on which side is truncated in response to the limit parameter.\\\\n\\\\n__Default value:__ `\\\\\\\"ltr\\\\\\\"`\\\"},{\\\"$ref\\\":\\\"#/definitions/ExprRef\\\"}]},\\\"discreteBandSize\\\":{\\\"description\\\":\\\"The default size of the bars with discrete dimensions. If unspecified, the default size is  `step-2`, which provides 2 pixel offset between bars.\\\",\\\"minimum\\\":0,\\\"type\\\":\\\"number\\\"},\\\"dx\\\":{\\\"anyOf\\\":[{\\\"description\\\":\\\"The horizontal offset, in pixels, between the text label and its anchor point. The offset is applied after rotation by the _angle_ property.\\\",\\\"type\\\":\\\"number\\\"},{\\\"$ref\\\":\\\"#/definitions/ExprRef\\\"}]},\\\"dy\\\":{\\\"anyOf\\\":[{\\\"description\\\":\\\"The vertical offset, in pixels, between the text label and its anchor point. The offset is applied after rotation by the _angle_ property.\\\",\\\"type\\\":\\\"number\\\"},{\\\"$ref\\\":\\\"#/definitions/ExprRef\\\"}]},\\\"ellipsis\\\":{\\\"anyOf\\\":[{\\\"description\\\":\\\"The ellipsis string for text truncated in response to the limit parameter.\\\\n\\\\n__Default value:__ `\\\\\\\"…\\\\\\\"`\\\",\\\"type\\\":\\\"string\\\"},{\\\"$ref\\\":\\\"#/definitions/ExprRef\\\"}]},\\\"endAngle\\\":{\\\"anyOf\\\":[{\\\"description\\\":\\\"The end angle in radians for arc marks. A value of `0` indicates up (north), increasing values proceed clockwise.\\\",\\\"type\\\":\\\"number\\\"},{\\\"$ref\\\":\\\"#/definitions/ExprRef\\\"}]},\\\"fill\\\":{\\\"anyOf\\\":[{\\\"$ref\\\":\\\"#/definitions/Color\\\"},{\\\"$ref\\\":\\\"#/definitions/Gradient\\\"},{\\\"type\\\":\\\"null\\\"},{\\\"$ref\\\":\\\"#/definitions/ExprRef\\\"}],\\\"description\\\":\\\"Default fill color. This property has higher precedence than `config.color`. Set to `null` to remove fill.\\\\n\\\\n__Default value:__ (None)\\\"},\\\"fillOpacity\\\":{\\\"anyOf\\\":[{\\\"description\\\":\\\"The fill opacity (value between [0,1]).\\\\n\\\\n__Default value:__ `1`\\\",\\\"maximum\\\":1,\\\"minimum\\\":0,\\\"type\\\":\\\"number\\\"},{\\\"$ref\\\":\\\"#/definitions/ExprRef\\\"}]},\\\"filled\\\":{\\\"description\\\":\\\"Whether the mark's color should be used as fill color instead of stroke color.\\\\n\\\\n__Default value:__ `false` for all `point`, `line`, and `rule` marks as well as `geoshape` marks for [`graticule`](https://vega.github.io/vega-lite/docs/data.html#graticule) data sources; otherwise, `true`.\\\\n\\\\n__Note:__ This property cannot be used in a [style config](https://vega.github.io/vega-lite/docs/mark.html#style-config).\\\",\\\"type\\\":\\\"boolean\\\"},\\\"font\\\":{\\\"anyOf\\\":[{\\\"description\\\":\\\"The typeface to set the text in (e.g., `\\\\\\\"Helvetica Neue\\\\\\\"`).\\\",\\\"type\\\":\\\"string\\\"},{\\\"$ref\\\":\\\"#/definitions/ExprRef\\\"}]},\\\"fontSize\\\":{\\\"anyOf\\\":[{\\\"description\\\":\\\"The font size, in pixels.\\\\n\\\\n__Default value:__ `11`\\\",\\\"minimum\\\":0,\\\"type\\\":\\\"number\\\"},{\\\"$ref\\\":\\\"#/definitions/ExprRef\\\"}]},\\\"fontStyle\\\":{\\\"anyOf\\\":[{\\\"$ref\\\":\\\"#/definitions/FontStyle\\\",\\\"description\\\":\\\"The font style (e.g., `\\\\\\\"italic\\\\\\\"`).\\\"},{\\\"$ref\\\":\\\"#/definitions/ExprRef\\\"}]},\\\"fontWeight\\\":{\\\"anyOf\\\":[{\\\"$ref\\\":\\\"#/definitions/FontWeight\\\",\\\"description\\\":\\\"The font weight. This can be either a string (e.g `\\\\\\\"bold\\\\\\\"`, `\\\\\\\"normal\\\\\\\"`) or a number (`100`, `200`, `300`, ..., `900` where `\\\\\\\"normal\\\\\\\"` = `400` and `\\\\\\\"bold\\\\\\\"` = `700`).\\\"},{\\\"$ref\\\":\\\"#/definitions/ExprRef\\\"}]},\\\"height\\\":{\\\"anyOf\\\":[{\\\"description\\\":\\\"Height of the marks.\\\",\\\"type\\\":\\\"number\\\"},{\\\"$ref\\\":\\\"#/definitions/ExprRef\\\"}]},\\\"href\\\":{\\\"anyOf\\\":[{\\\"$ref\\\":\\\"#/definitions/URI\\\",\\\"description\\\":\\\"A URL to load upon mouse click. If defined, the mark acts as a hyperlink.\\\"},{\\\"$ref\\\":\\\"#/definitions/ExprRef\\\"}]},\\\"innerRadius\\\":{\\\"anyOf\\\":[{\\\"type\\\":\\\"number\\\"},{\\\"$ref\\\":\\\"#/definitions/ExprRef\\\"}],\\\"description\\\":\\\"The inner radius in pixels of arc marks. `innerRadius` is an alias for `radius2`.\\\"},\\\"interpolate\\\":{\\\"anyOf\\\":[{\\\"$ref\\\":\\\"#/definitions/Interpolate\\\",\\\"description\\\":\\\"The line interpolation method to use for line and area marks. One of the following: - `\\\\\\\"linear\\\\\\\"`: piecewise linear segments, as in a polyline. - `\\\\\\\"linear-closed\\\\\\\"`: close the linear segments to form a polygon. - `\\\\\\\"step\\\\\\\"`: alternate between horizontal and vertical segments, as in a step function. - `\\\\\\\"step-before\\\\\\\"`: alternate between vertical and horizontal segments, as in a step function. - `\\\\\\\"step-after\\\\\\\"`: alternate between horizontal and vertical segments, as in a step function. - `\\\\\\\"basis\\\\\\\"`: a B-spline, with control point duplication on the ends. - `\\\\\\\"basis-open\\\\\\\"`: an open B-spline; may not intersect the start or end. - `\\\\\\\"basis-closed\\\\\\\"`: a closed B-spline, as in a loop. - `\\\\\\\"cardinal\\\\\\\"`: a Cardinal spline, with control point duplication on the ends. - `\\\\\\\"cardinal-open\\\\\\\"`: an open Cardinal spline; may not intersect the start or end, but will intersect other control points. - `\\\\\\\"cardinal-closed\\\\\\\"`: a closed Cardinal spline, as in a loop. - `\\\\\\\"bundle\\\\\\\"`: equivalent to basis, except the tension parameter is used to straighten the spline. - `\\\\\\\"monotone\\\\\\\"`: cubic interpolation that preserves monotonicity in y.\\\"},{\\\"$ref\\\":\\\"#/definitions/ExprRef\\\"}]},\\\"invalid\\\":{\\\"description\\\":\\\"Defines how Vega-Lite should handle marks for invalid values (`null` and `NaN`). - If set to `\\\\\\\"filter\\\\\\\"` (default), all data items with null values will be skipped (for line, trail, and area marks) or filtered (for other marks). - If `null`, all data items are included. In this case, invalid values will be interpreted as zeroes.\\\",\\\"enum\\\":[\\\"filter\\\",null],\\\"type\\\":[\\\"string\\\",\\\"null\\\"]},\\\"limit\\\":{\\\"anyOf\\\":[{\\\"description\\\":\\\"The maximum length of the text mark in pixels. The text value will be automatically truncated if the rendered size exceeds the limit.\\\\n\\\\n__Default value:__ `0` -- indicating no limit\\\",\\\"type\\\":\\\"number\\\"},{\\\"$ref\\\":\\\"#/definitions/ExprRef\\\"}]},\\\"lineBreak\\\":{\\\"anyOf\\\":[{\\\"description\\\":\\\"A delimiter, such as a newline character, upon which to break text strings into multiple lines. This property is ignored if the text is array-valued.\\\",\\\"type\\\":\\\"string\\\"},{\\\"$ref\\\":\\\"#/definitions/ExprRef\\\"}]},\\\"lineHeight\\\":{\\\"anyOf\\\":[{\\\"description\\\":\\\"The line height in pixels (the spacing between subsequent lines of text) for multi-line text marks.\\\",\\\"type\\\":\\\"number\\\"},{\\\"$ref\\\":\\\"#/definitions/ExprRef\\\"}]},\\\"opacity\\\":{\\\"anyOf\\\":[{\\\"type\\\":\\\"number\\\"},{\\\"$ref\\\":\\\"#/definitions/ExprRef\\\"}],\\\"description\\\":\\\"The overall opacity (value between [0,1]).\\\\n\\\\n__Default value:__ `0.7` for non-aggregate plots with `point`, `tick`, `circle`, or `square` marks or layered `bar` charts and `1` otherwise.\\\",\\\"maximum\\\":1,\\\"minimum\\\":0},\\\"order\\\":{\\\"description\\\":\\\"For line and trail marks, this `order` property can be set to `null` or `false` to make the lines use the original order in the data sources.\\\",\\\"type\\\":[\\\"null\\\",\\\"boolean\\\"]},\\\"orient\\\":{\\\"$ref\\\":\\\"#/definitions/Orientation\\\",\\\"description\\\":\\\"The orientation of a non-stacked bar, tick, area, and line charts. The value is either horizontal (default) or vertical. - For bar, rule and tick, this determines whether the size of the bar and tick should be applied to x or y dimension. - For area, this property determines the orient property of the Vega output. - For line and trail marks, this property determines the sort order of the points in the line if `config.sortLineBy` is not specified. For stacked charts, this is always determined by the orientation of the stack; therefore explicitly specified value will be ignored.\\\"},\\\"outerRadius\\\":{\\\"anyOf\\\":[{\\\"type\\\":\\\"number\\\"},{\\\"$ref\\\":\\\"#/definitions/ExprRef\\\"}],\\\"description\\\":\\\"The outer radius in pixels of arc marks. `outerRadius` is an alias for `radius`.\\\"},\\\"padAngle\\\":{\\\"anyOf\\\":[{\\\"description\\\":\\\"The angular padding applied to sides of the arc, in radians.\\\",\\\"type\\\":\\\"number\\\"},{\\\"$ref\\\":\\\"#/definitions/ExprRef\\\"}]},\\\"radius\\\":{\\\"anyOf\\\":[{\\\"type\\\":\\\"number\\\"},{\\\"$ref\\\":\\\"#/definitions/ExprRef\\\"}],\\\"description\\\":\\\"For arc mark, the primary (outer) radius in pixels.\\\\n\\\\nFor text marks, polar coordinate radial offset, in pixels, of the text from the origin determined by the `x` and `y` properties.\\\"},\\\"radius2\\\":{\\\"anyOf\\\":[{\\\"type\\\":\\\"number\\\"},{\\\"$ref\\\":\\\"#/definitions/ExprRef\\\"}],\\\"description\\\":\\\"The secondary (inner) radius in pixels of arc marks.\\\"},\\\"shape\\\":{\\\"anyOf\\\":[{\\\"anyOf\\\":[{\\\"$ref\\\":\\\"#/definitions/SymbolShape\\\"},{\\\"type\\\":\\\"string\\\"}],\\\"description\\\":\\\"Shape of the point marks. Supported values include: - plotting shapes: `\\\\\\\"circle\\\\\\\"`, `\\\\\\\"square\\\\\\\"`, `\\\\\\\"cross\\\\\\\"`, `\\\\\\\"diamond\\\\\\\"`, `\\\\\\\"triangle-up\\\\\\\"`, `\\\\\\\"triangle-down\\\\\\\"`, `\\\\\\\"triangle-right\\\\\\\"`, or `\\\\\\\"triangle-left\\\\\\\"`. - the line symbol `\\\\\\\"stroke\\\\\\\"` - centered directional shapes `\\\\\\\"arrow\\\\\\\"`, `\\\\\\\"wedge\\\\\\\"`, or `\\\\\\\"triangle\\\\\\\"` - a custom [SVG path string](https://developer.mozilla.org/en-US/docs/Web/SVG/Tutorial/Paths) (For correct sizing, custom shape paths should be defined within a square bounding box with coordinates ranging from -1 to 1 along both the x and y dimensions.)\\\\n\\\\n__Default value:__ `\\\\\\\"circle\\\\\\\"`\\\"},{\\\"$ref\\\":\\\"#/definitions/ExprRef\\\"}]},\\\"size\\\":{\\\"anyOf\\\":[{\\\"type\\\":\\\"number\\\"},{\\\"$ref\\\":\\\"#/definitions/ExprRef\\\"}],\\\"description\\\":\\\"Default size for marks. - For `point`/`circle`/`square`, this represents the pixel area of the marks. Note that this value sets the area of the symbol; the side lengths will increase with the square root of this value. - For `bar`, this represents the band size of the bar, in pixels. - For `text`, this represents the font size, in pixels.\\\\n\\\\n__Default value:__ - `30` for point, circle, square marks; width/height's `step` - `2` for bar marks with discrete dimensions; - `5` for bar marks with continuous dimensions; - `11` for text marks.\\\",\\\"minimum\\\":0},\\\"smooth\\\":{\\\"anyOf\\\":[{\\\"description\\\":\\\"A boolean flag (default true) indicating if the image should be smoothed when resized. If false, individual pixels should be scaled directly rather than interpolated with smoothing. For SVG rendering, this option may not work in some browsers due to lack of standardization.\\\",\\\"type\\\":\\\"boolean\\\"},{\\\"$ref\\\":\\\"#/definitions/ExprRef\\\"}]},\\\"startAngle\\\":{\\\"anyOf\\\":[{\\\"description\\\":\\\"The start angle in radians for arc marks. A value of `0` indicates up (north), increasing values proceed clockwise.\\\",\\\"type\\\":\\\"number\\\"},{\\\"$ref\\\":\\\"#/definitions/ExprRef\\\"}]},\\\"stroke\\\":{\\\"anyOf\\\":[{\\\"$ref\\\":\\\"#/definitions/Color\\\"},{\\\"$ref\\\":\\\"#/definitions/Gradient\\\"},{\\\"type\\\":\\\"null\\\"},{\\\"$ref\\\":\\\"#/definitions/ExprRef\\\"}],\\\"description\\\":\\\"Default stroke color. This property has higher precedence than `config.color`. Set to `null` to remove stroke.\\\\n\\\\n__Default value:__ (None)\\\"},\\\"strokeCap\\\":{\\\"anyOf\\\":[{\\\"$ref\\\":\\\"#/definitions/StrokeCap\\\",\\\"description\\\":\\\"The stroke cap for line ending style. One of `\\\\\\\"butt\\\\\\\"`, `\\\\\\\"round\\\\\\\"`, or `\\\\\\\"square\\\\\\\"`.\\\\n\\\\n__Default value:__ `\\\\\\\"butt\\\\\\\"`\\\"},{\\\"$ref\\\":\\\"#/definitions/ExprRef\\\"}]},\\\"strokeDash\\\":{\\\"anyOf\\\":[{\\\"description\\\":\\\"An array of alternating stroke, space lengths for creating dashed or dotted lines.\\\",\\\"items\\\":{\\\"type\\\":\\\"number\\\"},\\\"type\\\":\\\"array\\\"},{\\\"$ref\\\":\\\"#/definitions/ExprRef\\\"}]},\\\"strokeDashOffset\\\":{\\\"anyOf\\\":[{\\\"description\\\":\\\"The offset (in pixels) into which to begin drawing with the stroke dash array.\\\",\\\"type\\\":\\\"number\\\"},{\\\"$ref\\\":\\\"#/definitions/ExprRef\\\"}]},\\\"strokeJoin\\\":{\\\"anyOf\\\":[{\\\"$ref\\\":\\\"#/definitions/StrokeJoin\\\",\\\"description\\\":\\\"The stroke line join method. One of `\\\\\\\"miter\\\\\\\"`, `\\\\\\\"round\\\\\\\"` or `\\\\\\\"bevel\\\\\\\"`.\\\\n\\\\n__Default value:__ `\\\\\\\"miter\\\\\\\"`\\\"},{\\\"$ref\\\":\\\"#/definitions/ExprRef\\\"}]},\\\"strokeMiterLimit\\\":{\\\"anyOf\\\":[{\\\"description\\\":\\\"The miter limit at which to bevel a line join.\\\",\\\"type\\\":\\\"number\\\"},{\\\"$ref\\\":\\\"#/definitions/ExprRef\\\"}]},\\\"strokeOffset\\\":{\\\"anyOf\\\":[{\\\"description\\\":\\\"The offset in pixels at which to draw the group stroke and fill. If unspecified, the default behavior is to dynamically offset stroked groups such that 1 pixel stroke widths align with the pixel grid.\\\",\\\"type\\\":\\\"number\\\"},{\\\"$ref\\\":\\\"#/definitions/ExprRef\\\"}]},\\\"strokeOpacity\\\":{\\\"anyOf\\\":[{\\\"description\\\":\\\"The stroke opacity (value between [0,1]).\\\\n\\\\n__Default value:__ `1`\\\",\\\"maximum\\\":1,\\\"minimum\\\":0,\\\"type\\\":\\\"number\\\"},{\\\"$ref\\\":\\\"#/definitions/ExprRef\\\"}]},\\\"strokeWidth\\\":{\\\"anyOf\\\":[{\\\"description\\\":\\\"The stroke width, in pixels.\\\",\\\"minimum\\\":0,\\\"type\\\":\\\"number\\\"},{\\\"$ref\\\":\\\"#/definitions/ExprRef\\\"}]},\\\"tension\\\":{\\\"anyOf\\\":[{\\\"description\\\":\\\"Depending on the interpolation type, sets the tension parameter (for line and area marks).\\\",\\\"type\\\":\\\"number\\\"},{\\\"$ref\\\":\\\"#/definitions/ExprRef\\\"}]},\\\"text\\\":{\\\"anyOf\\\":[{\\\"$ref\\\":\\\"#/definitions/Text\\\",\\\"description\\\":\\\"Placeholder text if the `text` channel is not specified\\\"},{\\\"$ref\\\":\\\"#/definitions/ExprRef\\\"}]},\\\"theta\\\":{\\\"anyOf\\\":[{\\\"type\\\":\\\"number\\\"},{\\\"$ref\\\":\\\"#/definitions/ExprRef\\\"}],\\\"description\\\":\\\"- For arc marks, the arc length in radians if theta2 is not specified, otherwise the start arc angle. (A value of 0 indicates up or “north”, increasing values proceed clockwise.)\\\\n\\\\n- For text marks, polar coordinate angle in radians.\\\",\\\"maximum\\\":360,\\\"minimum\\\":0},\\\"theta2\\\":{\\\"anyOf\\\":[{\\\"type\\\":\\\"number\\\"},{\\\"$ref\\\":\\\"#/definitions/ExprRef\\\"}],\\\"description\\\":\\\"The end angle of arc marks in radians. A value of 0 indicates up or “north”, increasing values proceed clockwise.\\\"},\\\"timeUnitBand\\\":{\\\"description\\\":\\\"Default relative band size for a time unit. If set to `1`, the bandwidth of the marks will be equal to the time unit band step. If set to `0.5`, bandwidth of the marks will be half of the time unit band step.\\\",\\\"type\\\":\\\"number\\\"},\\\"timeUnitBandPosition\\\":{\\\"description\\\":\\\"Default relative band position for a time unit. If set to `0`, the marks will be positioned at the beginning of the time unit band step. If set to `0.5`, the marks will be positioned in the middle of the time unit band step.\\\",\\\"type\\\":\\\"number\\\"},\\\"tooltip\\\":{\\\"anyOf\\\":[{\\\"type\\\":\\\"number\\\"},{\\\"type\\\":\\\"string\\\"},{\\\"type\\\":\\\"boolean\\\"},{\\\"$ref\\\":\\\"#/definitions/TooltipContent\\\"},{\\\"$ref\\\":\\\"#/definitions/ExprRef\\\"},{\\\"type\\\":\\\"null\\\"}],\\\"description\\\":\\\"The tooltip text string to show upon mouse hover or an object defining which fields should the tooltip be derived from.\\\\n\\\\n- If `tooltip` is `true` or `{\\\\\\\"content\\\\\\\": \\\\\\\"encoding\\\\\\\"}`, then all fields from `encoding` will be used. - If `tooltip` is `{\\\\\\\"content\\\\\\\": \\\\\\\"data\\\\\\\"}`, then all fields that appear in the highlighted data point will be used. - If set to `null` or `false`, then no tooltip will be used.\\\\n\\\\nSee the [`tooltip`](https://vega.github.io/vega-lite/docs/tooltip.html) documentation for a detailed discussion about tooltip  in Vega-Lite.\\\\n\\\\n__Default value:__ `null`\\\"},\\\"url\\\":{\\\"anyOf\\\":[{\\\"$ref\\\":\\\"#/definitions/URI\\\",\\\"description\\\":\\\"The URL of the image file for image marks.\\\"},{\\\"$ref\\\":\\\"#/definitions/ExprRef\\\"}]},\\\"width\\\":{\\\"anyOf\\\":[{\\\"description\\\":\\\"Width of the marks.\\\",\\\"type\\\":\\\"number\\\"},{\\\"$ref\\\":\\\"#/definitions/ExprRef\\\"}]},\\\"x\\\":{\\\"anyOf\\\":[{\\\"type\\\":\\\"number\\\"},{\\\"const\\\":\\\"width\\\",\\\"type\\\":\\\"string\\\"},{\\\"$ref\\\":\\\"#/definitions/ExprRef\\\"}],\\\"description\\\":\\\"X coordinates of the marks, or width of horizontal `\\\\\\\"bar\\\\\\\"` and `\\\\\\\"area\\\\\\\"` without specified `x2` or `width`.\\\\n\\\\nThe `value` of this channel can be a number or a string `\\\\\\\"width\\\\\\\"` for the width of the plot.\\\"},\\\"x2\\\":{\\\"anyOf\\\":[{\\\"type\\\":\\\"number\\\"},{\\\"const\\\":\\\"width\\\",\\\"type\\\":\\\"string\\\"},{\\\"$ref\\\":\\\"#/definitions/ExprRef\\\"}],\\\"description\\\":\\\"X2 coordinates for ranged `\\\\\\\"area\\\\\\\"`, `\\\\\\\"bar\\\\\\\"`, `\\\\\\\"rect\\\\\\\"`, and  `\\\\\\\"rule\\\\\\\"`.\\\\n\\\\nThe `value` of this channel can be a number or a string `\\\\\\\"width\\\\\\\"` for the width of the plot.\\\"},\\\"y\\\":{\\\"anyOf\\\":[{\\\"type\\\":\\\"number\\\"},{\\\"const\\\":\\\"height\\\",\\\"type\\\":\\\"string\\\"},{\\\"$ref\\\":\\\"#/definitions/ExprRef\\\"}],\\\"description\\\":\\\"Y coordinates of the marks, or height of vertical `\\\\\\\"bar\\\\\\\"` and `\\\\\\\"area\\\\\\\"` without specified `y2` or `height`.\\\\n\\\\nThe `value` of this channel can be a number or a string `\\\\\\\"height\\\\\\\"` for the height of the plot.\\\"},\\\"y2\\\":{\\\"anyOf\\\":[{\\\"type\\\":\\\"number\\\"},{\\\"const\\\":\\\"height\\\",\\\"type\\\":\\\"string\\\"},{\\\"$ref\\\":\\\"#/definitions/ExprRef\\\"}],\\\"description\\\":\\\"Y2 coordinates for ranged `\\\\\\\"area\\\\\\\"`, `\\\\\\\"bar\\\\\\\"`, `\\\\\\\"rect\\\\\\\"`, and  `\\\\\\\"rule\\\\\\\"`.\\\\n\\\\nThe `value` of this channel can be a number or a string `\\\\\\\"height\\\\\\\"` for the height of the plot.\\\"}},\\\"type\\\":\\\"object\\\"},\\\"RegressionTransform\\\":{\\\"additionalProperties\\\":false,\\\"properties\\\":{\\\"as\\\":{\\\"description\\\":\\\"The output field names for the smoothed points generated by the regression transform.\\\\n\\\\n__Default value:__ The field names of the input x and y values.\\\",\\\"items\\\":[{\\\"$ref\\\":\\\"#/definitions/FieldName\\\"},{\\\"$ref\\\":\\\"#/definitions/FieldName\\\"}],\\\"maxItems\\\":2,\\\"minItems\\\":2,\\\"type\\\":\\\"array\\\"},\\\"extent\\\":{\\\"description\\\":\\\"A [min, max] domain over the independent (x) field for the starting and ending points of the generated trend line.\\\",\\\"items\\\":[{\\\"type\\\":\\\"number\\\"},{\\\"type\\\":\\\"number\\\"}],\\\"maxItems\\\":2,\\\"minItems\\\":2,\\\"type\\\":\\\"array\\\"},\\\"groupby\\\":{\\\"description\\\":\\\"The data fields to group by. If not specified, a single group containing all data objects will be used.\\\",\\\"items\\\":{\\\"$ref\\\":\\\"#/definitions/FieldName\\\"},\\\"type\\\":\\\"array\\\"},\\\"method\\\":{\\\"description\\\":\\\"The functional form of the regression model. One of `\\\\\\\"linear\\\\\\\"`, `\\\\\\\"log\\\\\\\"`, `\\\\\\\"exp\\\\\\\"`, `\\\\\\\"pow\\\\\\\"`, `\\\\\\\"quad\\\\\\\"`, or `\\\\\\\"poly\\\\\\\"`.\\\\n\\\\n__Default value:__ `\\\\\\\"linear\\\\\\\"`\\\",\\\"enum\\\":[\\\"linear\\\",\\\"log\\\",\\\"exp\\\",\\\"pow\\\",\\\"quad\\\",\\\"poly\\\"],\\\"type\\\":\\\"string\\\"},\\\"on\\\":{\\\"$ref\\\":\\\"#/definitions/FieldName\\\",\\\"description\\\":\\\"The data field of the independent variable to use a predictor.\\\"},\\\"order\\\":{\\\"description\\\":\\\"The polynomial order (number of coefficients) for the 'poly' method.\\\\n\\\\n__Default value:__ `3`\\\",\\\"type\\\":\\\"number\\\"},\\\"params\\\":{\\\"description\\\":\\\"A boolean flag indicating if the transform should return the regression model parameters (one object per group), rather than trend line points. The resulting objects include a `coef` array of fitted coefficient values (starting with the intercept term and then including terms of increasing order) and an `rSquared` value (indicating the total variance explained by the model).\\\\n\\\\n__Default value:__ `false`\\\",\\\"type\\\":\\\"boolean\\\"},\\\"regression\\\":{\\\"$ref\\\":\\\"#/definitions/FieldName\\\",\\\"description\\\":\\\"The data field of the dependent variable to predict.\\\"}},\\\"required\\\":[\\\"regression\\\",\\\"on\\\"],\\\"type\\\":\\\"object\\\"},\\\"RepeatMapping\\\":{\\\"additionalProperties\\\":false,\\\"properties\\\":{\\\"column\\\":{\\\"description\\\":\\\"An array of fields to be repeated horizontally.\\\",\\\"items\\\":{\\\"type\\\":\\\"string\\\"},\\\"type\\\":\\\"array\\\"},\\\"row\\\":{\\\"description\\\":\\\"An array of fields to be repeated vertically.\\\",\\\"items\\\":{\\\"type\\\":\\\"string\\\"},\\\"type\\\":\\\"array\\\"}},\\\"type\\\":\\\"object\\\"},\\\"RepeatRef\\\":{\\\"additionalProperties\\\":false,\\\"description\\\":\\\"Reference to a repeated value.\\\",\\\"properties\\\":{\\\"repeat\\\":{\\\"enum\\\":[\\\"row\\\",\\\"column\\\",\\\"repeat\\\",\\\"layer\\\"],\\\"type\\\":\\\"string\\\"}},\\\"required\\\":[\\\"repeat\\\"],\\\"type\\\":\\\"object\\\"},\\\"RepeatSpec\\\":{\\\"anyOf\\\":[{\\\"$ref\\\":\\\"#/definitions/NonLayerRepeatSpec\\\"},{\\\"$ref\\\":\\\"#/definitions/LayerRepeatSpec\\\"}]},\\\"Resolve\\\":{\\\"additionalProperties\\\":false,\\\"description\\\":\\\"Defines how scales, axes, and legends from different specs should be combined. Resolve is a mapping from `scale`, `axis`, and `legend` to a mapping from channels to resolutions. Scales and guides can be resolved to be `\\\\\\\"independent\\\\\\\"` or `\\\\\\\"shared\\\\\\\"`.\\\",\\\"properties\\\":{\\\"axis\\\":{\\\"$ref\\\":\\\"#/definitions/AxisResolveMap\\\"},\\\"legend\\\":{\\\"$ref\\\":\\\"#/definitions/LegendResolveMap\\\"},\\\"scale\\\":{\\\"$ref\\\":\\\"#/definitions/ScaleResolveMap\\\"}},\\\"type\\\":\\\"object\\\"},\\\"ResolveMode\\\":{\\\"enum\\\":[\\\"independent\\\",\\\"shared\\\"],\\\"type\\\":\\\"string\\\"},\\\"RowCol<LayoutAlign>\\\":{\\\"additionalProperties\\\":false,\\\"properties\\\":{\\\"column\\\":{\\\"$ref\\\":\\\"#/definitions/LayoutAlign\\\"},\\\"row\\\":{\\\"$ref\\\":\\\"#/definitions/LayoutAlign\\\"}},\\\"type\\\":\\\"object\\\"},\\\"RowCol<boolean>\\\":{\\\"additionalProperties\\\":false,\\\"properties\\\":{\\\"column\\\":{\\\"type\\\":\\\"boolean\\\"},\\\"row\\\":{\\\"type\\\":\\\"boolean\\\"}},\\\"type\\\":\\\"object\\\"},\\\"RowCol<number>\\\":{\\\"additionalProperties\\\":false,\\\"properties\\\":{\\\"column\\\":{\\\"type\\\":\\\"number\\\"},\\\"row\\\":{\\\"type\\\":\\\"number\\\"}},\\\"type\\\":\\\"object\\\"},\\\"RowColumnEncodingFieldDef\\\":{\\\"additionalProperties\\\":false,\\\"properties\\\":{\\\"aggregate\\\":{\\\"$ref\\\":\\\"#/definitions/Aggregate\\\",\\\"description\\\":\\\"Aggregation function for the field (e.g., `\\\\\\\"mean\\\\\\\"`, `\\\\\\\"sum\\\\\\\"`, `\\\\\\\"median\\\\\\\"`, `\\\\\\\"min\\\\\\\"`, `\\\\\\\"max\\\\\\\"`, `\\\\\\\"count\\\\\\\"`).\\\\n\\\\n__Default value:__ `undefined` (None)\\\\n\\\\n__See also:__ [`aggregate`](https://vega.github.io/vega-lite/docs/aggregate.html) documentation.\\\"},\\\"align\\\":{\\\"$ref\\\":\\\"#/definitions/LayoutAlign\\\",\\\"description\\\":\\\"The alignment to apply to row/column facet's subplot. The supported string values are `\\\\\\\"all\\\\\\\"`, `\\\\\\\"each\\\\\\\"`, and `\\\\\\\"none\\\\\\\"`.\\\\n\\\\n- For `\\\\\\\"none\\\\\\\"`, a flow layout will be used, in which adjacent subviews are simply placed one after the other. - For `\\\\\\\"each\\\\\\\"`, subviews will be aligned into a clean grid structure, but each row or column may be of variable size. - For `\\\\\\\"all\\\\\\\"`, subviews will be aligned and each row or column will be sized identically based on the maximum observed size. String values for this property will be applied to both grid rows and columns.\\\\n\\\\n__Default value:__ `\\\\\\\"all\\\\\\\"`.\\\"},\\\"band\\\":{\\\"description\\\":\\\"For rect-based marks (`rect`, `bar`, and `image`), mark size relative to bandwidth of [band scales](https://vega.github.io/vega-lite/docs/scale.html#band), bins or time units. If set to `1`, the mark size is set to the bandwidth, the bin interval, or the time unit interval. If set to `0.5`, the mark size is half of the bandwidth or the time unit interval.\\\\n\\\\nFor other marks, relative position on a band of a stacked, binned, time unit or band scale. If set to `0`, the marks will be positioned at the beginning of the band. If set to `0.5`, the marks will be positioned in the middle of the band.\\\",\\\"maximum\\\":1,\\\"minimum\\\":0,\\\"type\\\":\\\"number\\\"},\\\"bin\\\":{\\\"anyOf\\\":[{\\\"type\\\":\\\"boolean\\\"},{\\\"$ref\\\":\\\"#/definitions/BinParams\\\"},{\\\"type\\\":\\\"null\\\"}],\\\"description\\\":\\\"A flag for binning a `quantitative` field, [an object defining binning parameters](https://vega.github.io/vega-lite/docs/bin.html#params), or indicating that the data for `x` or `y` channel are binned before they are imported into Vega-Lite (`\\\\\\\"binned\\\\\\\"`).\\\\n\\\\n- If `true`, default [binning parameters](https://vega.github.io/vega-lite/docs/bin.html) will be applied.\\\\n\\\\n- If `\\\\\\\"binned\\\\\\\"`, this indicates that the data for the `x` (or `y`) channel are already binned. You can map the bin-start field to `x` (or `y`) and the bin-end field to `x2` (or `y2`). The scale and axis will be formatted similar to binning in Vega-Lite.  To adjust the axis ticks based on the bin step, you can also set the axis's [`tickMinStep`](https://vega.github.io/vega-lite/docs/axis.html#ticks) property.\\\\n\\\\n__Default value:__ `false`\\\\n\\\\n__See also:__ [`bin`](https://vega.github.io/vega-lite/docs/bin.html) documentation.\\\"},\\\"center\\\":{\\\"description\\\":\\\"Boolean flag indicating if facet's subviews should be centered relative to their respective rows or columns.\\\\n\\\\n__Default value:__ `false`\\\",\\\"type\\\":\\\"boolean\\\"},\\\"field\\\":{\\\"$ref\\\":\\\"#/definitions/Field\\\",\\\"description\\\":\\\"__Required.__ A string defining the name of the field from which to pull a data value or an object defining iterated values from the [`repeat`](https://vega.github.io/vega-lite/docs/repeat.html) operator.\\\\n\\\\n__See also:__ [`field`](https://vega.github.io/vega-lite/docs/field.html) documentation.\\\\n\\\\n__Notes:__ 1)  Dots (`.`) and brackets (`[` and `]`) can be used to access nested objects (e.g., `\\\\\\\"field\\\\\\\": \\\\\\\"foo.bar\\\\\\\"` and `\\\\\\\"field\\\\\\\": \\\\\\\"foo['bar']\\\\\\\"`). If field names contain dots or brackets but are not nested, you can use `\\\\\\\\\\\\\\\\` to escape dots and brackets (e.g., `\\\\\\\"a\\\\\\\\\\\\\\\\.b\\\\\\\"` and `\\\\\\\"a\\\\\\\\\\\\\\\\[0\\\\\\\\\\\\\\\\]\\\\\\\"`). See more details about escaping in the [field documentation](https://vega.github.io/vega-lite/docs/field.html). 2) `field` is not required if `aggregate` is `count`.\\\"},\\\"header\\\":{\\\"$ref\\\":\\\"#/definitions/Header\\\",\\\"description\\\":\\\"An object defining properties of a facet's header.\\\"},\\\"sort\\\":{\\\"anyOf\\\":[{\\\"$ref\\\":\\\"#/definitions/SortArray\\\"},{\\\"$ref\\\":\\\"#/definitions/SortOrder\\\"},{\\\"$ref\\\":\\\"#/definitions/EncodingSortField\\\"},{\\\"type\\\":\\\"null\\\"}],\\\"description\\\":\\\"Sort order for the encoded field.\\\\n\\\\nFor continuous fields (quantitative or temporal), `sort` can be either `\\\\\\\"ascending\\\\\\\"` or `\\\\\\\"descending\\\\\\\"`.\\\\n\\\\nFor discrete fields, `sort` can be one of the following: - `\\\\\\\"ascending\\\\\\\"` or `\\\\\\\"descending\\\\\\\"` -- for sorting by the values' natural order in JavaScript. - [A sort field definition](https://vega.github.io/vega-lite/docs/sort.html#sort-field) for sorting by another field. - [An array specifying the field values in preferred order](https://vega.github.io/vega-lite/docs/sort.html#sort-array). In this case, the sort order will obey the values in the array, followed by any unspecified values in their original order. For discrete time field, values in the sort array can be [date-time definition objects](types#datetime). In addition, for time units `\\\\\\\"month\\\\\\\"` and `\\\\\\\"day\\\\\\\"`, the values can be the month or day names (case insensitive) or their 3-letter initials (e.g., `\\\\\\\"Mon\\\\\\\"`, `\\\\\\\"Tue\\\\\\\"`). - `null` indicating no sort.\\\\n\\\\n__Default value:__ `\\\\\\\"ascending\\\\\\\"`\\\\n\\\\n__Note:__ `null` is not supported for `row` and `column`.\\\"},\\\"spacing\\\":{\\\"description\\\":\\\"The spacing in pixels between facet's sub-views.\\\\n\\\\n__Default value__: Depends on `\\\\\\\"spacing\\\\\\\"` property of [the view composition configuration](https://vega.github.io/vega-lite/docs/config.html#view-config) (`20` by default)\\\",\\\"type\\\":\\\"number\\\"},\\\"timeUnit\\\":{\\\"anyOf\\\":[{\\\"$ref\\\":\\\"#/definitions/TimeUnit\\\"},{\\\"$ref\\\":\\\"#/definitions/TimeUnitParams\\\"}],\\\"description\\\":\\\"Time unit (e.g., `year`, `yearmonth`, `month`, `hours`) for a temporal field. or [a temporal field that gets casted as ordinal](https://vega.github.io/vega-lite/docs/type.html#cast).\\\\n\\\\n__Default value:__ `undefined` (None)\\\\n\\\\n__See also:__ [`timeUnit`](https://vega.github.io/vega-lite/docs/timeunit.html) documentation.\\\"},\\\"title\\\":{\\\"anyOf\\\":[{\\\"$ref\\\":\\\"#/definitions/Text\\\"},{\\\"type\\\":\\\"null\\\"}],\\\"description\\\":\\\"A title for the field. If `null`, the title will be removed.\\\\n\\\\n__Default value:__  derived from the field's name and transformation function (`aggregate`, `bin` and `timeUnit`). If the field has an aggregate function, the function is displayed as part of the title (e.g., `\\\\\\\"Sum of Profit\\\\\\\"`). If the field is binned or has a time unit applied, the applied function is shown in parentheses (e.g., `\\\\\\\"Profit (binned)\\\\\\\"`, `\\\\\\\"Transaction Date (year-month)\\\\\\\"`). Otherwise, the title is simply the field name.\\\\n\\\\n__Notes__:\\\\n\\\\n1) You can customize the default field title format by providing the [`fieldTitle`](https://vega.github.io/vega-lite/docs/config.html#top-level-config) property in the [config](https://vega.github.io/vega-lite/docs/config.html) or [`fieldTitle` function via the `compile` function's options](https://vega.github.io/vega-lite/docs/compile.html#field-title).\\\\n\\\\n2) If both field definition's `title` and axis, header, or legend `title` are defined, axis/header/legend title will be used.\\\"},\\\"type\\\":{\\\"$ref\\\":\\\"#/definitions/StandardType\\\",\\\"description\\\":\\\"The type of measurement (`\\\\\\\"quantitative\\\\\\\"`, `\\\\\\\"temporal\\\\\\\"`, `\\\\\\\"ordinal\\\\\\\"`, or `\\\\\\\"nominal\\\\\\\"`) for the encoded field or constant value (`datum`). It can also be a `\\\\\\\"geojson\\\\\\\"` type for encoding ['geoshape'](https://vega.github.io/vega-lite/docs/geoshape.html).\\\\n\\\\nVega-Lite automatically infers data types in many cases as discussed below. However, type is required for a field if: (1) the field is not nominal and the field encoding has no specified `aggregate` (except `argmin` and `argmax`), `bin`, scale type, custom `sort` order, nor `timeUnit` or (2) if you wish to use an ordinal scale for a field with `bin` or `timeUnit`.\\\\n\\\\n__Default value:__\\\\n\\\\n1) For a data `field`, `\\\\\\\"nominal\\\\\\\"` is the default data type unless the field encoding has `aggregate`, `channel`, `bin`, scale type, `sort`, or `timeUnit` that satisfies the following criteria: - `\\\\\\\"quantitative\\\\\\\"` is the default type if (1) the encoded field contains `bin` or `aggregate` except `\\\\\\\"argmin\\\\\\\"` and `\\\\\\\"argmax\\\\\\\"`, (2) the encoding channel is `latitude` or `longitude` channel or (3) if the specified scale type is [a quantitative scale](https://vega.github.io/vega-lite/docs/scale.html#type). - `\\\\\\\"temporal\\\\\\\"` is the default type if (1) the encoded field contains `timeUnit` or (2) the specified scale type is a time or utc scale - `ordinal\\\\\\\"\\\\\\\"` is the default type if (1) the encoded field contains a [custom `sort` order](https://vega.github.io/vega-lite/docs/sort.html#specifying-custom-sort-order), (2) the specified scale type is an ordinal/point/band scale, or (3) the encoding channel is `order`.\\\\n\\\\n2) For a constant value in data domain (`datum`): - `\\\\\\\"quantitative\\\\\\\"` if the datum is a number - `\\\\\\\"nominal\\\\\\\"` if the datum is a string - `\\\\\\\"temporal\\\\\\\"` if the datum is [a date time object](https://vega.github.io/vega-lite/docs/datetime.html)\\\\n\\\\n__Note:__ - Data `type` describes the semantics of the data rather than the primitive data types (number, string, etc.). The same primitive data type can have different types of measurement. For example, numeric data can represent quantitative, ordinal, or nominal data. - Data values for a temporal field can be either a date-time string (e.g., `\\\\\\\"2015-03-07 12:32:17\\\\\\\"`, `\\\\\\\"17:01\\\\\\\"`, `\\\\\\\"2015-03-16\\\\\\\"`. `\\\\\\\"2015\\\\\\\"`) or a timestamp number (e.g., `1552199579097`). - When using with [`bin`](https://vega.github.io/vega-lite/docs/bin.html), the `type` property can be either `\\\\\\\"quantitative\\\\\\\"` (for using a linear bin scale) or [`\\\\\\\"ordinal\\\\\\\"` (for using an ordinal bin scale)](https://vega.github.io/vega-lite/docs/type.html#cast-bin). - When using with [`timeUnit`](https://vega.github.io/vega-lite/docs/timeunit.html), the `type` property can be either `\\\\\\\"temporal\\\\\\\"` (default, for using a temporal scale) or [`\\\\\\\"ordinal\\\\\\\"` (for using an ordinal scale)](https://vega.github.io/vega-lite/docs/type.html#cast-bin). - When using with [`aggregate`](https://vega.github.io/vega-lite/docs/aggregate.html), the `type` property refers to the post-aggregation data type. For example, we can calculate count `distinct` of a categorical field `\\\\\\\"cat\\\\\\\"` using `{\\\\\\\"aggregate\\\\\\\": \\\\\\\"distinct\\\\\\\", \\\\\\\"field\\\\\\\": \\\\\\\"cat\\\\\\\"}`. The `\\\\\\\"type\\\\\\\"` of the aggregate output is `\\\\\\\"quantitative\\\\\\\"`. - Secondary channels (e.g., `x2`, `y2`, `xError`, `yError`) do not have `type` as they must have exactly the same type as their primary channels (e.g., `x`, `y`).\\\\n\\\\n__See also:__ [`type`](https://vega.github.io/vega-lite/docs/type.html) documentation.\\\"}},\\\"type\\\":\\\"object\\\"},\\\"SampleTransform\\\":{\\\"additionalProperties\\\":false,\\\"properties\\\":{\\\"sample\\\":{\\\"description\\\":\\\"The maximum number of data objects to include in the sample.\\\\n\\\\n__Default value:__ `1000`\\\",\\\"type\\\":\\\"number\\\"}},\\\"required\\\":[\\\"sample\\\"],\\\"type\\\":\\\"object\\\"},\\\"Scale\\\":{\\\"additionalProperties\\\":false,\\\"properties\\\":{\\\"align\\\":{\\\"anyOf\\\":[{\\\"type\\\":\\\"number\\\"},{\\\"$ref\\\":\\\"#/definitions/ExprRef\\\"}],\\\"description\\\":\\\"The alignment of the steps within the scale range.\\\\n\\\\nThis value must lie in the range `[0,1]`. A value of `0.5` indicates that the steps should be centered within the range. A value of `0` or `1` may be used to shift the bands to one side, say to position them adjacent to an axis.\\\\n\\\\n__Default value:__ `0.5`\\\"},\\\"base\\\":{\\\"anyOf\\\":[{\\\"type\\\":\\\"number\\\"},{\\\"$ref\\\":\\\"#/definitions/ExprRef\\\"}],\\\"description\\\":\\\"The logarithm base of the `log` scale (default `10`).\\\"},\\\"bins\\\":{\\\"$ref\\\":\\\"#/definitions/ScaleBins\\\",\\\"description\\\":\\\"Bin boundaries can be provided to scales as either an explicit array of bin boundaries or as a bin specification object. The legal values are: - An [array](../types/#Array) literal of bin boundary values. For example, `[0, 5, 10, 15, 20]`. The array must include both starting and ending boundaries. The previous example uses five values to indicate a total of four bin intervals: [0-5), [5-10), [10-15), [15-20]. Array literals may include signal references as elements. - A [bin specification object](https://vega.github.io/vega-lite/docs/scale.html#bins) that indicates the bin _step_ size, and optionally the _start_ and _stop_ boundaries. - An array of bin boundaries over the scale domain. If provided, axes and legends will use the bin boundaries to inform the choice of tick marks and text labels.\\\"},\\\"clamp\\\":{\\\"anyOf\\\":[{\\\"type\\\":\\\"boolean\\\"},{\\\"$ref\\\":\\\"#/definitions/ExprRef\\\"}],\\\"description\\\":\\\"If `true`, values that exceed the data domain are clamped to either the minimum or maximum range value\\\\n\\\\n__Default value:__ derived from the [scale config](https://vega.github.io/vega-lite/docs/config.html#scale-config)'s `clamp` (`true` by default).\\\"},\\\"constant\\\":{\\\"anyOf\\\":[{\\\"type\\\":\\\"number\\\"},{\\\"$ref\\\":\\\"#/definitions/ExprRef\\\"}],\\\"description\\\":\\\"A constant determining the slope of the symlog function around zero. Only used for `symlog` scales.\\\\n\\\\n__Default value:__ `1`\\\"},\\\"domain\\\":{\\\"anyOf\\\":[{\\\"items\\\":{\\\"anyOf\\\":[{\\\"type\\\":\\\"null\\\"},{\\\"type\\\":\\\"string\\\"},{\\\"type\\\":\\\"number\\\"},{\\\"type\\\":\\\"boolean\\\"},{\\\"$ref\\\":\\\"#/definitions/DateTime\\\"},{\\\"$ref\\\":\\\"#/definitions/ExprRef\\\"}]},\\\"type\\\":\\\"array\\\"},{\\\"const\\\":\\\"unaggregated\\\",\\\"type\\\":\\\"string\\\"},{\\\"$ref\\\":\\\"#/definitions/SelectionExtent\\\"},{\\\"$ref\\\":\\\"#/definitions/DomainUnionWith\\\"},{\\\"$ref\\\":\\\"#/definitions/ExprRef\\\"}],\\\"description\\\":\\\"Customized domain values in the form of constant values or dynamic values driven by a selection.\\\\n\\\\n1) Constant `domain` for _quantitative_ fields can take one of the following forms:\\\\n\\\\n- A two-element array with minimum and maximum values. To create a diverging scale, this two-element array can be combined with the `domainMid` property. - An array with more than two entries, for [Piecewise quantitative scales](https://vega.github.io/vega-lite/docs/scale.html#piecewise). - A string value `\\\\\\\"unaggregated\\\\\\\"`, if the input field is aggregated, to indicate that the domain should include the raw data values prior to the aggregation.\\\\n\\\\n2) Constant `domain` for _temporal_ fields can be a two-element array with minimum and maximum values, in the form of either timestamps or the [DateTime definition objects](https://vega.github.io/vega-lite/docs/types.html#datetime).\\\\n\\\\n3) Constant `domain` for _ordinal_ and _nominal_ fields can be an array that lists valid input values.\\\\n\\\\n4) To combine (union) specified constant domain with the field's values, `domain` can be an object with a `unionWith` property that specify constant domain to be combined. For example, `domain: {unionWith: [0, 100]}` for a quantitative scale means that the scale domain always includes `[0, 100]`, but will include other values in the fields beyond `[0, 100]`.\\\\n\\\\n5) Domain can also takes an object defining a field or encoding of a selection that [interactively determines](https://vega.github.io/vega-lite/docs/selection.html#scale-domains) the scale domain.\\\"},\\\"domainMax\\\":{\\\"anyOf\\\":[{\\\"type\\\":\\\"number\\\"},{\\\"$ref\\\":\\\"#/definitions/DateTime\\\"},{\\\"$ref\\\":\\\"#/definitions/ExprRef\\\"}],\\\"description\\\":\\\"Sets the maximum value in the scale domain, overriding the `domain` property. This property is only intended for use with scales having continuous domains.\\\"},\\\"domainMid\\\":{\\\"anyOf\\\":[{\\\"type\\\":\\\"number\\\"},{\\\"$ref\\\":\\\"#/definitions/ExprRef\\\"}],\\\"description\\\":\\\"Inserts a single mid-point value into a two-element domain. The mid-point value must lie between the domain minimum and maximum values. This property can be useful for setting a midpoint for [diverging color scales](https://vega.github.io/vega-lite/docs/scale.html#piecewise). The domainMid property is only intended for use with scales supporting continuous, piecewise domains.\\\"},\\\"domainMin\\\":{\\\"anyOf\\\":[{\\\"type\\\":\\\"number\\\"},{\\\"$ref\\\":\\\"#/definitions/DateTime\\\"},{\\\"$ref\\\":\\\"#/definitions/ExprRef\\\"}],\\\"description\\\":\\\"Sets the minimum value in the scale domain, overriding the domain property. This property is only intended for use with scales having continuous domains.\\\"},\\\"exponent\\\":{\\\"anyOf\\\":[{\\\"type\\\":\\\"number\\\"},{\\\"$ref\\\":\\\"#/definitions/ExprRef\\\"}],\\\"description\\\":\\\"The exponent of the `pow` scale.\\\"},\\\"interpolate\\\":{\\\"anyOf\\\":[{\\\"$ref\\\":\\\"#/definitions/ScaleInterpolateEnum\\\"},{\\\"$ref\\\":\\\"#/definitions/ExprRef\\\"},{\\\"$ref\\\":\\\"#/definitions/ScaleInterpolateParams\\\"}],\\\"description\\\":\\\"The interpolation method for range values. By default, a general interpolator for numbers, dates, strings and colors (in HCL space) is used. For color ranges, this property allows interpolation in alternative color spaces. Legal values include `rgb`, `hsl`, `hsl-long`, `lab`, `hcl`, `hcl-long`, `cubehelix` and `cubehelix-long` ('-long' variants use longer paths in polar coordinate spaces). If object-valued, this property accepts an object with a string-valued _type_ property and an optional numeric _gamma_ property applicable to rgb and cubehelix interpolators. For more, see the [d3-interpolate documentation](https://github.com/d3/d3-interpolate).\\\\n\\\\n* __Default value:__ `hcl`\\\"},\\\"nice\\\":{\\\"anyOf\\\":[{\\\"type\\\":\\\"boolean\\\"},{\\\"type\\\":\\\"number\\\"},{\\\"$ref\\\":\\\"#/definitions/TimeInterval\\\"},{\\\"$ref\\\":\\\"#/definitions/TimeIntervalStep\\\"},{\\\"$ref\\\":\\\"#/definitions/ExprRef\\\"}],\\\"description\\\":\\\"Extending the domain so that it starts and ends on nice round values. This method typically modifies the scale’s domain, and may only extend the bounds to the nearest round value. Nicing is useful if the domain is computed from data and may be irregular. For example, for a domain of _[0.201479…, 0.996679…]_, a nice domain might be _[0.2, 1.0]_.\\\\n\\\\nFor quantitative scales such as linear, `nice` can be either a boolean flag or a number. If `nice` is a number, it will represent a desired tick count. This allows greater control over the step size used to extend the bounds, guaranteeing that the returned ticks will exactly cover the domain.\\\\n\\\\nFor temporal fields with time and utc scales, the `nice` value can be a string indicating the desired time interval. Legal values are `\\\\\\\"millisecond\\\\\\\"`, `\\\\\\\"second\\\\\\\"`, `\\\\\\\"minute\\\\\\\"`, `\\\\\\\"hour\\\\\\\"`, `\\\\\\\"day\\\\\\\"`, `\\\\\\\"week\\\\\\\"`, `\\\\\\\"month\\\\\\\"`, and `\\\\\\\"year\\\\\\\"`. Alternatively, `time` and `utc` scales can accept an object-valued interval specifier of the form `{\\\\\\\"interval\\\\\\\": \\\\\\\"month\\\\\\\", \\\\\\\"step\\\\\\\": 3}`, which includes a desired number of interval steps. Here, the domain would snap to quarter (Jan, Apr, Jul, Oct) boundaries.\\\\n\\\\n__Default value:__ `true` for unbinned _quantitative_ fields; `false` otherwise.\\\"},\\\"padding\\\":{\\\"anyOf\\\":[{\\\"type\\\":\\\"number\\\"},{\\\"$ref\\\":\\\"#/definitions/ExprRef\\\"}],\\\"description\\\":\\\"For _[continuous](https://vega.github.io/vega-lite/docs/scale.html#continuous)_ scales, expands the scale domain to accommodate the specified number of pixels on each of the scale range. The scale range must represent pixels for this parameter to function as intended. Padding adjustment is performed prior to all other adjustments, including the effects of the `zero`, `nice`, `domainMin`, and `domainMax` properties.\\\\n\\\\nFor _[band](https://vega.github.io/vega-lite/docs/scale.html#band)_ scales, shortcut for setting `paddingInner` and `paddingOuter` to the same value.\\\\n\\\\nFor _[point](https://vega.github.io/vega-lite/docs/scale.html#point)_ scales, alias for `paddingOuter`.\\\\n\\\\n__Default value:__ For _continuous_ scales, derived from the [scale config](https://vega.github.io/vega-lite/docs/scale.html#config)'s `continuousPadding`. For _band and point_ scales, see `paddingInner` and `paddingOuter`. By default, Vega-Lite sets padding such that _width/height = number of unique values * step_.\\\",\\\"minimum\\\":0},\\\"paddingInner\\\":{\\\"anyOf\\\":[{\\\"type\\\":\\\"number\\\"},{\\\"$ref\\\":\\\"#/definitions/ExprRef\\\"}],\\\"description\\\":\\\"The inner padding (spacing) within each band step of band scales, as a fraction of the step size. This value must lie in the range [0,1].\\\\n\\\\nFor point scale, this property is invalid as point scales do not have internal band widths (only step sizes between bands).\\\\n\\\\n__Default value:__ derived from the [scale config](https://vega.github.io/vega-lite/docs/scale.html#config)'s `bandPaddingInner`.\\\",\\\"maximum\\\":1,\\\"minimum\\\":0},\\\"paddingOuter\\\":{\\\"anyOf\\\":[{\\\"type\\\":\\\"number\\\"},{\\\"$ref\\\":\\\"#/definitions/ExprRef\\\"}],\\\"description\\\":\\\"The outer padding (spacing) at the ends of the range of band and point scales, as a fraction of the step size. This value must lie in the range [0,1].\\\\n\\\\n__Default value:__ derived from the [scale config](https://vega.github.io/vega-lite/docs/scale.html#config)'s `bandPaddingOuter` for band scales and `pointPadding` for point scales. By default, Vega-Lite sets outer padding such that _width/height = number of unique values * step_.\\\",\\\"maximum\\\":1,\\\"minimum\\\":0},\\\"range\\\":{\\\"anyOf\\\":[{\\\"$ref\\\":\\\"#/definitions/RangeEnum\\\"},{\\\"items\\\":{\\\"anyOf\\\":[{\\\"type\\\":\\\"number\\\"},{\\\"type\\\":\\\"string\\\"},{\\\"items\\\":{\\\"type\\\":\\\"number\\\"},\\\"type\\\":\\\"array\\\"},{\\\"$ref\\\":\\\"#/definitions/ExprRef\\\"}]},\\\"type\\\":\\\"array\\\"},{\\\"additionalProperties\\\":false,\\\"properties\\\":{\\\"field\\\":{\\\"type\\\":\\\"string\\\"}},\\\"required\\\":[\\\"field\\\"],\\\"type\\\":\\\"object\\\"}],\\\"description\\\":\\\"The range of the scale. One of:\\\\n\\\\n- A string indicating a [pre-defined named scale range](https://vega.github.io/vega-lite/docs/scale.html#range-config) (e.g., example, `\\\\\\\"symbol\\\\\\\"`, or `\\\\\\\"diverging\\\\\\\"`).\\\\n\\\\n- For [continuous scales](https://vega.github.io/vega-lite/docs/scale.html#continuous), two-element array indicating  minimum and maximum values, or an array with more than two entries for specifying a [piecewise scale](https://vega.github.io/vega-lite/docs/scale.html#piecewise).\\\\n\\\\n- For [discrete](https://vega.github.io/vega-lite/docs/scale.html#discrete) and [discretizing](https://vega.github.io/vega-lite/docs/scale.html#discretizing) scales, an array of desired output values or an object with a `field` property representing the range values.  For example, if a field `color` contains CSS color names, we can set `range` to `{field: \\\\\\\"color\\\\\\\"}`.\\\\n\\\\n__Notes:__\\\\n\\\\n1) For color scales you can also specify a color [`scheme`](https://vega.github.io/vega-lite/docs/scale.html#scheme) instead of `range`.\\\\n\\\\n2) Any directly specified `range` for `x` and `y` channels will be ignored. Range can be customized via the view's corresponding [size](https://vega.github.io/vega-lite/docs/size.html) (`width` and `height`).\\\"},\\\"rangeMax\\\":{\\\"anyOf\\\":[{\\\"type\\\":\\\"number\\\"},{\\\"type\\\":\\\"string\\\"},{\\\"$ref\\\":\\\"#/definitions/ExprRef\\\"}],\\\"description\\\":\\\"Sets the maximum value in the scale range, overriding the `range` property or the default range. This property is only intended for use with scales having continuous ranges.\\\"},\\\"rangeMin\\\":{\\\"anyOf\\\":[{\\\"type\\\":\\\"number\\\"},{\\\"type\\\":\\\"string\\\"},{\\\"$ref\\\":\\\"#/definitions/ExprRef\\\"}],\\\"description\\\":\\\"Sets the minimum value in the scale range, overriding the `range` property or the default range. This property is only intended for use with scales having continuous ranges.\\\"},\\\"reverse\\\":{\\\"anyOf\\\":[{\\\"type\\\":\\\"boolean\\\"},{\\\"$ref\\\":\\\"#/definitions/ExprRef\\\"}],\\\"description\\\":\\\"If true, reverses the order of the scale range. __Default value:__ `false`.\\\"},\\\"round\\\":{\\\"anyOf\\\":[{\\\"type\\\":\\\"boolean\\\"},{\\\"$ref\\\":\\\"#/definitions/ExprRef\\\"}],\\\"description\\\":\\\"If `true`, rounds numeric output values to integers. This can be helpful for snapping to the pixel grid.\\\\n\\\\n__Default value:__ `false`.\\\"},\\\"scheme\\\":{\\\"anyOf\\\":[{\\\"type\\\":\\\"string\\\"},{\\\"$ref\\\":\\\"#/definitions/SchemeParams\\\"},{\\\"$ref\\\":\\\"#/definitions/ExprRef\\\"}],\\\"description\\\":\\\"A string indicating a color [scheme](https://vega.github.io/vega-lite/docs/scale.html#scheme) name (e.g., `\\\\\\\"category10\\\\\\\"` or `\\\\\\\"blues\\\\\\\"`) or a [scheme parameter object](https://vega.github.io/vega-lite/docs/scale.html#scheme-params).\\\\n\\\\nDiscrete color schemes may be used with [discrete](https://vega.github.io/vega-lite/docs/scale.html#discrete) or [discretizing](https://vega.github.io/vega-lite/docs/scale.html#discretizing) scales. Continuous color schemes are intended for use with color scales.\\\\n\\\\nFor the full list of supported schemes, please refer to the [Vega Scheme](https://vega.github.io/vega/docs/schemes/#reference) reference.\\\"},\\\"type\\\":{\\\"$ref\\\":\\\"#/definitions/ScaleType\\\",\\\"description\\\":\\\"The type of scale. Vega-Lite supports the following categories of scale types:\\\\n\\\\n1) [**Continuous Scales**](https://vega.github.io/vega-lite/docs/scale.html#continuous) -- mapping continuous domains to continuous output ranges ([`\\\\\\\"linear\\\\\\\"`](https://vega.github.io/vega-lite/docs/scale.html#linear), [`\\\\\\\"pow\\\\\\\"`](https://vega.github.io/vega-lite/docs/scale.html#pow), [`\\\\\\\"sqrt\\\\\\\"`](https://vega.github.io/vega-lite/docs/scale.html#sqrt), [`\\\\\\\"symlog\\\\\\\"`](https://vega.github.io/vega-lite/docs/scale.html#symlog), [`\\\\\\\"log\\\\\\\"`](https://vega.github.io/vega-lite/docs/scale.html#log), [`\\\\\\\"time\\\\\\\"`](https://vega.github.io/vega-lite/docs/scale.html#time), [`\\\\\\\"utc\\\\\\\"`](https://vega.github.io/vega-lite/docs/scale.html#utc).\\\\n\\\\n2) [**Discrete Scales**](https://vega.github.io/vega-lite/docs/scale.html#discrete) -- mapping discrete domains to discrete ([`\\\\\\\"ordinal\\\\\\\"`](https://vega.github.io/vega-lite/docs/scale.html#ordinal)) or continuous ([`\\\\\\\"band\\\\\\\"`](https://vega.github.io/vega-lite/docs/scale.html#band) and [`\\\\\\\"point\\\\\\\"`](https://vega.github.io/vega-lite/docs/scale.html#point)) output ranges.\\\\n\\\\n3) [**Discretizing Scales**](https://vega.github.io/vega-lite/docs/scale.html#discretizing) -- mapping continuous domains to discrete output ranges [`\\\\\\\"bin-ordinal\\\\\\\"`](https://vega.github.io/vega-lite/docs/scale.html#bin-ordinal), [`\\\\\\\"quantile\\\\\\\"`](https://vega.github.io/vega-lite/docs/scale.html#quantile), [`\\\\\\\"quantize\\\\\\\"`](https://vega.github.io/vega-lite/docs/scale.html#quantize) and [`\\\\\\\"threshold\\\\\\\"`](https://vega.github.io/vega-lite/docs/scale.html#threshold).\\\\n\\\\n__Default value:__ please see the [scale type table](https://vega.github.io/vega-lite/docs/scale.html#type).\\\"},\\\"zero\\\":{\\\"anyOf\\\":[{\\\"type\\\":\\\"boolean\\\"},{\\\"$ref\\\":\\\"#/definitions/ExprRef\\\"}],\\\"description\\\":\\\"If `true`, ensures that a zero baseline value is included in the scale domain.\\\\n\\\\n__Default value:__ `true` for x and y channels if the quantitative field is not binned and no custom `domain` is provided; `false` otherwise.\\\\n\\\\n__Note:__ Log, time, and utc scales do not support `zero`.\\\"}},\\\"type\\\":\\\"object\\\"},\\\"ScaleBinParams\\\":{\\\"additionalProperties\\\":false,\\\"properties\\\":{\\\"start\\\":{\\\"description\\\":\\\"The starting (lowest-valued) bin boundary.\\\\n\\\\n__Default value:__ The lowest value of the scale domain will be used.\\\",\\\"type\\\":\\\"number\\\"},\\\"step\\\":{\\\"description\\\":\\\"The step size defining the bin interval width.\\\",\\\"type\\\":\\\"number\\\"},\\\"stop\\\":{\\\"description\\\":\\\"The stopping (highest-valued) bin boundary.\\\\n\\\\n__Default value:__ The highest value of the scale domain will be used.\\\",\\\"type\\\":\\\"number\\\"}},\\\"required\\\":[\\\"step\\\"],\\\"type\\\":\\\"object\\\"},\\\"ScaleBins\\\":{\\\"anyOf\\\":[{\\\"items\\\":{\\\"type\\\":\\\"number\\\"},\\\"type\\\":\\\"array\\\"},{\\\"$ref\\\":\\\"#/definitions/ScaleBinParams\\\"}]},\\\"ScaleConfig\\\":{\\\"additionalProperties\\\":false,\\\"properties\\\":{\\\"bandPaddingInner\\\":{\\\"anyOf\\\":[{\\\"type\\\":\\\"number\\\"},{\\\"$ref\\\":\\\"#/definitions/ExprRef\\\"}],\\\"description\\\":\\\"Default inner padding for `x` and `y` band-ordinal scales.\\\\n\\\\n__Default value:__ - `barBandPaddingInner` for bar marks (`0.1` by default) - `rectBandPaddingInner` for rect and other marks (`0` by default)\\\",\\\"maximum\\\":1,\\\"minimum\\\":0},\\\"bandPaddingOuter\\\":{\\\"anyOf\\\":[{\\\"type\\\":\\\"number\\\"},{\\\"$ref\\\":\\\"#/definitions/ExprRef\\\"}],\\\"description\\\":\\\"Default outer padding for `x` and `y` band-ordinal scales.\\\\n\\\\n__Default value:__ `paddingInner/2` (which makes _width/height = number of unique values * step_)\\\",\\\"maximum\\\":1,\\\"minimum\\\":0},\\\"barBandPaddingInner\\\":{\\\"anyOf\\\":[{\\\"type\\\":\\\"number\\\"},{\\\"$ref\\\":\\\"#/definitions/ExprRef\\\"}],\\\"description\\\":\\\"Default inner padding for `x` and `y` band-ordinal scales of `\\\\\\\"bar\\\\\\\"` marks.\\\\n\\\\n__Default value:__ `0.1`\\\",\\\"maximum\\\":1,\\\"minimum\\\":0},\\\"clamp\\\":{\\\"anyOf\\\":[{\\\"type\\\":\\\"boolean\\\"},{\\\"$ref\\\":\\\"#/definitions/ExprRef\\\"}],\\\"description\\\":\\\"If true, values that exceed the data domain are clamped to either the minimum or maximum range value\\\"},\\\"continuousPadding\\\":{\\\"anyOf\\\":[{\\\"type\\\":\\\"number\\\"},{\\\"$ref\\\":\\\"#/definitions/ExprRef\\\"}],\\\"description\\\":\\\"Default padding for continuous scales.\\\\n\\\\n__Default:__ `5` for continuous x-scale of a vertical bar and continuous y-scale of a horizontal bar.; `0` otherwise.\\\",\\\"minimum\\\":0},\\\"maxBandSize\\\":{\\\"description\\\":\\\"The default max value for mapping quantitative fields to bar's size/bandSize.\\\\n\\\\nIf undefined (default), we will use the axis's size (width or height) - 1.\\\",\\\"minimum\\\":0,\\\"type\\\":\\\"number\\\"},\\\"maxFontSize\\\":{\\\"description\\\":\\\"The default max value for mapping quantitative fields to text's size/fontSize.\\\\n\\\\n__Default value:__ `40`\\\",\\\"minimum\\\":0,\\\"type\\\":\\\"number\\\"},\\\"maxOpacity\\\":{\\\"description\\\":\\\"Default max opacity for mapping a field to opacity.\\\\n\\\\n__Default value:__ `0.8`\\\",\\\"maximum\\\":1,\\\"minimum\\\":0,\\\"type\\\":\\\"number\\\"},\\\"maxSize\\\":{\\\"description\\\":\\\"Default max value for point size scale.\\\",\\\"minimum\\\":0,\\\"type\\\":\\\"number\\\"},\\\"maxStrokeWidth\\\":{\\\"description\\\":\\\"Default max strokeWidth for the scale of strokeWidth for rule and line marks and of size for trail marks.\\\\n\\\\n__Default value:__ `4`\\\",\\\"minimum\\\":0,\\\"type\\\":\\\"number\\\"},\\\"minBandSize\\\":{\\\"description\\\":\\\"The default min value for mapping quantitative fields to bar and tick's size/bandSize scale with zero=false.\\\\n\\\\n__Default value:__ `2`\\\",\\\"minimum\\\":0,\\\"type\\\":\\\"number\\\"},\\\"minFontSize\\\":{\\\"description\\\":\\\"The default min value for mapping quantitative fields to tick's size/fontSize scale with zero=false\\\\n\\\\n__Default value:__ `8`\\\",\\\"minimum\\\":0,\\\"type\\\":\\\"number\\\"},\\\"minOpacity\\\":{\\\"description\\\":\\\"Default minimum opacity for mapping a field to opacity.\\\\n\\\\n__Default value:__ `0.3`\\\",\\\"maximum\\\":1,\\\"minimum\\\":0,\\\"type\\\":\\\"number\\\"},\\\"minSize\\\":{\\\"description\\\":\\\"Default minimum value for point size scale with zero=false.\\\\n\\\\n__Default value:__ `9`\\\",\\\"minimum\\\":0,\\\"type\\\":\\\"number\\\"},\\\"minStrokeWidth\\\":{\\\"description\\\":\\\"Default minimum strokeWidth for the scale of strokeWidth for rule and line marks and of size for trail marks with zero=false.\\\\n\\\\n__Default value:__ `1`\\\",\\\"minimum\\\":0,\\\"type\\\":\\\"number\\\"},\\\"pointPadding\\\":{\\\"anyOf\\\":[{\\\"type\\\":\\\"number\\\"},{\\\"$ref\\\":\\\"#/definitions/ExprRef\\\"}],\\\"description\\\":\\\"Default outer padding for `x` and `y` point-ordinal scales.\\\\n\\\\n__Default value:__ `0.5` (which makes _width/height = number of unique values * step_)\\\",\\\"maximum\\\":1,\\\"minimum\\\":0},\\\"quantileCount\\\":{\\\"description\\\":\\\"Default range cardinality for [`quantile`](https://vega.github.io/vega-lite/docs/scale.html#quantile) scale.\\\\n\\\\n__Default value:__ `4`\\\",\\\"minimum\\\":0,\\\"type\\\":\\\"number\\\"},\\\"quantizeCount\\\":{\\\"description\\\":\\\"Default range cardinality for [`quantize`](https://vega.github.io/vega-lite/docs/scale.html#quantize) scale.\\\\n\\\\n__Default value:__ `4`\\\",\\\"minimum\\\":0,\\\"type\\\":\\\"number\\\"},\\\"rectBandPaddingInner\\\":{\\\"anyOf\\\":[{\\\"type\\\":\\\"number\\\"},{\\\"$ref\\\":\\\"#/definitions/ExprRef\\\"}],\\\"description\\\":\\\"Default inner padding for `x` and `y` band-ordinal scales of `\\\\\\\"rect\\\\\\\"` marks.\\\\n\\\\n__Default value:__ `0`\\\",\\\"maximum\\\":1,\\\"minimum\\\":0},\\\"round\\\":{\\\"anyOf\\\":[{\\\"type\\\":\\\"boolean\\\"},{\\\"$ref\\\":\\\"#/definitions/ExprRef\\\"}],\\\"description\\\":\\\"If true, rounds numeric output values to integers. This can be helpful for snapping to the pixel grid. (Only available for `x`, `y`, and `size` scales.)\\\"},\\\"useUnaggregatedDomain\\\":{\\\"description\\\":\\\"Use the source data range before aggregation as scale domain instead of aggregated data for aggregate axis.\\\\n\\\\nThis is equivalent to setting `domain` to `\\\\\\\"unaggregate\\\\\\\"` for aggregated _quantitative_ fields by default.\\\\n\\\\nThis property only works with aggregate functions that produce values within the raw data domain (`\\\\\\\"mean\\\\\\\"`, `\\\\\\\"average\\\\\\\"`, `\\\\\\\"median\\\\\\\"`, `\\\\\\\"q1\\\\\\\"`, `\\\\\\\"q3\\\\\\\"`, `\\\\\\\"min\\\\\\\"`, `\\\\\\\"max\\\\\\\"`). For other aggregations that produce values outside of the raw data domain (e.g. `\\\\\\\"count\\\\\\\"`, `\\\\\\\"sum\\\\\\\"`), this property is ignored.\\\\n\\\\n__Default value:__ `false`\\\",\\\"type\\\":\\\"boolean\\\"},\\\"xReverse\\\":{\\\"anyOf\\\":[{\\\"type\\\":\\\"boolean\\\"},{\\\"$ref\\\":\\\"#/definitions/ExprRef\\\"}],\\\"description\\\":\\\"Reverse x-scale by default (useful for right-to-left charts).\\\"}},\\\"type\\\":\\\"object\\\"},\\\"ScaleInterpolateEnum\\\":{\\\"enum\\\":[\\\"rgb\\\",\\\"lab\\\",\\\"hcl\\\",\\\"hsl\\\",\\\"hsl-long\\\",\\\"hcl-long\\\",\\\"cubehelix\\\",\\\"cubehelix-long\\\"],\\\"type\\\":\\\"string\\\"},\\\"ScaleInterpolateParams\\\":{\\\"additionalProperties\\\":false,\\\"properties\\\":{\\\"gamma\\\":{\\\"type\\\":\\\"number\\\"},\\\"type\\\":{\\\"enum\\\":[\\\"rgb\\\",\\\"cubehelix\\\",\\\"cubehelix-long\\\"],\\\"type\\\":\\\"string\\\"}},\\\"required\\\":[\\\"type\\\"],\\\"type\\\":\\\"object\\\"},\\\"ScaleResolveMap\\\":{\\\"additionalProperties\\\":false,\\\"properties\\\":{\\\"angle\\\":{\\\"$ref\\\":\\\"#/definitions/ResolveMode\\\"},\\\"color\\\":{\\\"$ref\\\":\\\"#/definitions/ResolveMode\\\"},\\\"fill\\\":{\\\"$ref\\\":\\\"#/definitions/ResolveMode\\\"},\\\"fillOpacity\\\":{\\\"$ref\\\":\\\"#/definitions/ResolveMode\\\"},\\\"opacity\\\":{\\\"$ref\\\":\\\"#/definitions/ResolveMode\\\"},\\\"radius\\\":{\\\"$ref\\\":\\\"#/definitions/ResolveMode\\\"},\\\"shape\\\":{\\\"$ref\\\":\\\"#/definitions/ResolveMode\\\"},\\\"size\\\":{\\\"$ref\\\":\\\"#/definitions/ResolveMode\\\"},\\\"stroke\\\":{\\\"$ref\\\":\\\"#/definitions/ResolveMode\\\"},\\\"strokeDash\\\":{\\\"$ref\\\":\\\"#/definitions/ResolveMode\\\"},\\\"strokeOpacity\\\":{\\\"$ref\\\":\\\"#/definitions/ResolveMode\\\"},\\\"strokeWidth\\\":{\\\"$ref\\\":\\\"#/definitions/ResolveMode\\\"},\\\"theta\\\":{\\\"$ref\\\":\\\"#/definitions/ResolveMode\\\"},\\\"x\\\":{\\\"$ref\\\":\\\"#/definitions/ResolveMode\\\"},\\\"y\\\":{\\\"$ref\\\":\\\"#/definitions/ResolveMode\\\"}},\\\"type\\\":\\\"object\\\"},\\\"ScaleType\\\":{\\\"enum\\\":[\\\"linear\\\",\\\"log\\\",\\\"pow\\\",\\\"sqrt\\\",\\\"symlog\\\",\\\"identity\\\",\\\"sequential\\\",\\\"time\\\",\\\"utc\\\",\\\"quantile\\\",\\\"quantize\\\",\\\"threshold\\\",\\\"bin-ordinal\\\",\\\"ordinal\\\",\\\"point\\\",\\\"band\\\"],\\\"type\\\":\\\"string\\\"},\\\"SchemeParams\\\":{\\\"additionalProperties\\\":false,\\\"properties\\\":{\\\"count\\\":{\\\"description\\\":\\\"The number of colors to use in the scheme. This can be useful for scale types such as `\\\\\\\"quantize\\\\\\\"`, which use the length of the scale range to determine the number of discrete bins for the scale domain.\\\",\\\"type\\\":\\\"number\\\"},\\\"extent\\\":{\\\"description\\\":\\\"The extent of the color range to use. For example `[0.2, 1]` will rescale the color scheme such that color values in the range _[0, 0.2)_ are excluded from the scheme.\\\",\\\"items\\\":{\\\"type\\\":\\\"number\\\"},\\\"type\\\":\\\"array\\\"},\\\"name\\\":{\\\"description\\\":\\\"A color scheme name for ordinal scales (e.g., `\\\\\\\"category10\\\\\\\"` or `\\\\\\\"blues\\\\\\\"`).\\\\n\\\\nFor the full list of supported schemes, please refer to the [Vega Scheme](https://vega.github.io/vega/docs/schemes/#reference) reference.\\\",\\\"type\\\":\\\"string\\\"}},\\\"required\\\":[\\\"name\\\"],\\\"type\\\":\\\"object\\\"},\\\"SecondaryFieldDef\\\":{\\\"additionalProperties\\\":false,\\\"description\\\":\\\"A field definition of a secondary channel that shares a scale with another primary channel. For example, `x2`, `xError` and `xError2` share the same scale with `x`.\\\",\\\"properties\\\":{\\\"aggregate\\\":{\\\"$ref\\\":\\\"#/definitions/Aggregate\\\",\\\"description\\\":\\\"Aggregation function for the field (e.g., `\\\\\\\"mean\\\\\\\"`, `\\\\\\\"sum\\\\\\\"`, `\\\\\\\"median\\\\\\\"`, `\\\\\\\"min\\\\\\\"`, `\\\\\\\"max\\\\\\\"`, `\\\\\\\"count\\\\\\\"`).\\\\n\\\\n__Default value:__ `undefined` (None)\\\\n\\\\n__See also:__ [`aggregate`](https://vega.github.io/vega-lite/docs/aggregate.html) documentation.\\\"},\\\"band\\\":{\\\"description\\\":\\\"For rect-based marks (`rect`, `bar`, and `image`), mark size relative to bandwidth of [band scales](https://vega.github.io/vega-lite/docs/scale.html#band), bins or time units. If set to `1`, the mark size is set to the bandwidth, the bin interval, or the time unit interval. If set to `0.5`, the mark size is half of the bandwidth or the time unit interval.\\\\n\\\\nFor other marks, relative position on a band of a stacked, binned, time unit or band scale. If set to `0`, the marks will be positioned at the beginning of the band. If set to `0.5`, the marks will be positioned in the middle of the band.\\\",\\\"maximum\\\":1,\\\"minimum\\\":0,\\\"type\\\":\\\"number\\\"},\\\"bin\\\":{\\\"description\\\":\\\"A flag for binning a `quantitative` field, [an object defining binning parameters](https://vega.github.io/vega-lite/docs/bin.html#params), or indicating that the data for `x` or `y` channel are binned before they are imported into Vega-Lite (`\\\\\\\"binned\\\\\\\"`).\\\\n\\\\n- If `true`, default [binning parameters](https://vega.github.io/vega-lite/docs/bin.html) will be applied.\\\\n\\\\n- If `\\\\\\\"binned\\\\\\\"`, this indicates that the data for the `x` (or `y`) channel are already binned. You can map the bin-start field to `x` (or `y`) and the bin-end field to `x2` (or `y2`). The scale and axis will be formatted similar to binning in Vega-Lite.  To adjust the axis ticks based on the bin step, you can also set the axis's [`tickMinStep`](https://vega.github.io/vega-lite/docs/axis.html#ticks) property.\\\\n\\\\n__Default value:__ `false`\\\\n\\\\n__See also:__ [`bin`](https://vega.github.io/vega-lite/docs/bin.html) documentation.\\\",\\\"type\\\":\\\"null\\\"},\\\"field\\\":{\\\"$ref\\\":\\\"#/definitions/Field\\\",\\\"description\\\":\\\"__Required.__ A string defining the name of the field from which to pull a data value or an object defining iterated values from the [`repeat`](https://vega.github.io/vega-lite/docs/repeat.html) operator.\\\\n\\\\n__See also:__ [`field`](https://vega.github.io/vega-lite/docs/field.html) documentation.\\\\n\\\\n__Notes:__ 1)  Dots (`.`) and brackets (`[` and `]`) can be used to access nested objects (e.g., `\\\\\\\"field\\\\\\\": \\\\\\\"foo.bar\\\\\\\"` and `\\\\\\\"field\\\\\\\": \\\\\\\"foo['bar']\\\\\\\"`). If field names contain dots or brackets but are not nested, you can use `\\\\\\\\\\\\\\\\` to escape dots and brackets (e.g., `\\\\\\\"a\\\\\\\\\\\\\\\\.b\\\\\\\"` and `\\\\\\\"a\\\\\\\\\\\\\\\\[0\\\\\\\\\\\\\\\\]\\\\\\\"`). See more details about escaping in the [field documentation](https://vega.github.io/vega-lite/docs/field.html). 2) `field` is not required if `aggregate` is `count`.\\\"},\\\"timeUnit\\\":{\\\"anyOf\\\":[{\\\"$ref\\\":\\\"#/definitions/TimeUnit\\\"},{\\\"$ref\\\":\\\"#/definitions/TimeUnitParams\\\"}],\\\"description\\\":\\\"Time unit (e.g., `year`, `yearmonth`, `month`, `hours`) for a temporal field. or [a temporal field that gets casted as ordinal](https://vega.github.io/vega-lite/docs/type.html#cast).\\\\n\\\\n__Default value:__ `undefined` (None)\\\\n\\\\n__See also:__ [`timeUnit`](https://vega.github.io/vega-lite/docs/timeunit.html) documentation.\\\"},\\\"title\\\":{\\\"anyOf\\\":[{\\\"$ref\\\":\\\"#/definitions/Text\\\"},{\\\"type\\\":\\\"null\\\"}],\\\"description\\\":\\\"A title for the field. If `null`, the title will be removed.\\\\n\\\\n__Default value:__  derived from the field's name and transformation function (`aggregate`, `bin` and `timeUnit`). If the field has an aggregate function, the function is displayed as part of the title (e.g., `\\\\\\\"Sum of Profit\\\\\\\"`). If the field is binned or has a time unit applied, the applied function is shown in parentheses (e.g., `\\\\\\\"Profit (binned)\\\\\\\"`, `\\\\\\\"Transaction Date (year-month)\\\\\\\"`). Otherwise, the title is simply the field name.\\\\n\\\\n__Notes__:\\\\n\\\\n1) You can customize the default field title format by providing the [`fieldTitle`](https://vega.github.io/vega-lite/docs/config.html#top-level-config) property in the [config](https://vega.github.io/vega-lite/docs/config.html) or [`fieldTitle` function via the `compile` function's options](https://vega.github.io/vega-lite/docs/compile.html#field-title).\\\\n\\\\n2) If both field definition's `title` and axis, header, or legend `title` are defined, axis/header/legend title will be used.\\\"}},\\\"type\\\":\\\"object\\\"},\\\"SelectionConfig\\\":{\\\"additionalProperties\\\":false,\\\"properties\\\":{\\\"interval\\\":{\\\"$ref\\\":\\\"#/definitions/IntervalSelectionConfig\\\",\\\"description\\\":\\\"The default definition for an [`interval`](https://vega.github.io/vega-lite/docs/selection.html#type) selection. All properties and transformations for an interval selection definition (except `type`) may be specified here.\\\\n\\\\nFor instance, setting `interval` to `{\\\\\\\"translate\\\\\\\": false}` disables the ability to move interval selections by default.\\\"},\\\"multi\\\":{\\\"$ref\\\":\\\"#/definitions/MultiSelectionConfig\\\",\\\"description\\\":\\\"The default definition for a [`multi`](https://vega.github.io/vega-lite/docs/selection.html#type) selection. All properties and transformations for a multi selection definition (except `type`) may be specified here.\\\\n\\\\nFor instance, setting `multi` to `{\\\\\\\"toggle\\\\\\\": \\\\\\\"event.altKey\\\\\\\"}` adds additional values to multi selections when clicking with the alt-key pressed by default.\\\"},\\\"single\\\":{\\\"$ref\\\":\\\"#/definitions/SingleSelectionConfig\\\",\\\"description\\\":\\\"The default definition for a [`single`](https://vega.github.io/vega-lite/docs/selection.html#type) selection. All properties and transformations   for a single selection definition (except `type`) may be specified here.\\\\n\\\\nFor instance, setting `single` to `{\\\\\\\"on\\\\\\\": \\\\\\\"dblclick\\\\\\\"}` populates single selections on double-click by default.\\\"}},\\\"type\\\":\\\"object\\\"},\\\"SelectionDef\\\":{\\\"anyOf\\\":[{\\\"$ref\\\":\\\"#/definitions/SingleSelection\\\"},{\\\"$ref\\\":\\\"#/definitions/MultiSelection\\\"},{\\\"$ref\\\":\\\"#/definitions/IntervalSelection\\\"}]},\\\"SelectionExtent\\\":{\\\"anyOf\\\":[{\\\"additionalProperties\\\":false,\\\"properties\\\":{\\\"field\\\":{\\\"$ref\\\":\\\"#/definitions/FieldName\\\",\\\"description\\\":\\\"The field name to extract selected values for, when a selection is [projected](https://vega.github.io/vega-lite/docs/project.html) over multiple fields or encodings.\\\"},\\\"selection\\\":{\\\"description\\\":\\\"The name of a selection.\\\",\\\"type\\\":\\\"string\\\"}},\\\"required\\\":[\\\"selection\\\"],\\\"type\\\":\\\"object\\\"},{\\\"additionalProperties\\\":false,\\\"properties\\\":{\\\"encoding\\\":{\\\"$ref\\\":\\\"#/definitions/SingleDefUnitChannel\\\",\\\"description\\\":\\\"The encoding channel to extract selected values for, when a selection is [projected](https://vega.github.io/vega-lite/docs/project.html) over multiple fields or encodings.\\\"},\\\"selection\\\":{\\\"description\\\":\\\"The name of a selection.\\\",\\\"type\\\":\\\"string\\\"}},\\\"required\\\":[\\\"selection\\\"],\\\"type\\\":\\\"object\\\"}]},\\\"SelectionInit\\\":{\\\"anyOf\\\":[{\\\"$ref\\\":\\\"#/definitions/PrimitiveValue\\\"},{\\\"$ref\\\":\\\"#/definitions/DateTime\\\"}]},\\\"SelectionInitInterval\\\":{\\\"anyOf\\\":[{\\\"$ref\\\":\\\"#/definitions/Vector2<boolean>\\\"},{\\\"$ref\\\":\\\"#/definitions/Vector2<number>\\\"},{\\\"$ref\\\":\\\"#/definitions/Vector2<string>\\\"},{\\\"$ref\\\":\\\"#/definitions/Vector2<DateTime>\\\"}]},\\\"SelectionInitIntervalMapping\\\":{\\\"$ref\\\":\\\"#/definitions/Dict<SelectionInitInterval>\\\"},\\\"SelectionInitMapping\\\":{\\\"$ref\\\":\\\"#/definitions/Dict<SelectionInit>\\\"},\\\"SelectionPredicate\\\":{\\\"additionalProperties\\\":false,\\\"properties\\\":{\\\"selection\\\":{\\\"$ref\\\":\\\"#/definitions/SelectionComposition\\\",\\\"description\\\":\\\"Filter using a selection name or a logical composition of selection names.\\\"}},\\\"required\\\":[\\\"selection\\\"],\\\"type\\\":\\\"object\\\"},\\\"SelectionResolution\\\":{\\\"enum\\\":[\\\"global\\\",\\\"union\\\",\\\"intersect\\\"],\\\"type\\\":\\\"string\\\"},\\\"SequenceGenerator\\\":{\\\"additionalProperties\\\":false,\\\"properties\\\":{\\\"name\\\":{\\\"description\\\":\\\"Provide a placeholder name and bind data at runtime.\\\",\\\"type\\\":\\\"string\\\"},\\\"sequence\\\":{\\\"$ref\\\":\\\"#/definitions/SequenceParams\\\",\\\"description\\\":\\\"Generate a sequence of numbers.\\\"}},\\\"required\\\":[\\\"sequence\\\"],\\\"type\\\":\\\"object\\\"},\\\"SequenceParams\\\":{\\\"additionalProperties\\\":false,\\\"properties\\\":{\\\"as\\\":{\\\"$ref\\\":\\\"#/definitions/FieldName\\\",\\\"description\\\":\\\"The name of the generated sequence field.\\\\n\\\\n__Default value:__ `\\\\\\\"data\\\\\\\"`\\\"},\\\"start\\\":{\\\"description\\\":\\\"The starting value of the sequence (inclusive).\\\",\\\"type\\\":\\\"number\\\"},\\\"step\\\":{\\\"description\\\":\\\"The step value between sequence entries.\\\\n\\\\n__Default value:__ `1`\\\",\\\"type\\\":\\\"number\\\"},\\\"stop\\\":{\\\"description\\\":\\\"The ending value of the sequence (exclusive).\\\",\\\"type\\\":\\\"number\\\"}},\\\"required\\\":[\\\"start\\\",\\\"stop\\\"],\\\"type\\\":\\\"object\\\"},\\\"SequentialMultiHue\\\":{\\\"enum\\\":[\\\"turbo\\\",\\\"viridis\\\",\\\"inferno\\\",\\\"magma\\\",\\\"plasma\\\",\\\"cividis\\\",\\\"bluegreen\\\",\\\"bluegreen-3\\\",\\\"bluegreen-4\\\",\\\"bluegreen-5\\\",\\\"bluegreen-6\\\",\\\"bluegreen-7\\\",\\\"bluegreen-8\\\",\\\"bluegreen-9\\\",\\\"bluepurple\\\",\\\"bluepurple-3\\\",\\\"bluepurple-4\\\",\\\"bluepurple-5\\\",\\\"bluepurple-6\\\",\\\"bluepurple-7\\\",\\\"bluepurple-8\\\",\\\"bluepurple-9\\\",\\\"goldgreen\\\",\\\"goldgreen-3\\\",\\\"goldgreen-4\\\",\\\"goldgreen-5\\\",\\\"goldgreen-6\\\",\\\"goldgreen-7\\\",\\\"goldgreen-8\\\",\\\"goldgreen-9\\\",\\\"goldorange\\\",\\\"goldorange-3\\\",\\\"goldorange-4\\\",\\\"goldorange-5\\\",\\\"goldorange-6\\\",\\\"goldorange-7\\\",\\\"goldorange-8\\\",\\\"goldorange-9\\\",\\\"goldred\\\",\\\"goldred-3\\\",\\\"goldred-4\\\",\\\"goldred-5\\\",\\\"goldred-6\\\",\\\"goldred-7\\\",\\\"goldred-8\\\",\\\"goldred-9\\\",\\\"greenblue\\\",\\\"greenblue-3\\\",\\\"greenblue-4\\\",\\\"greenblue-5\\\",\\\"greenblue-6\\\",\\\"greenblue-7\\\",\\\"greenblue-8\\\",\\\"greenblue-9\\\",\\\"orangered\\\",\\\"orangered-3\\\",\\\"orangered-4\\\",\\\"orangered-5\\\",\\\"orangered-6\\\",\\\"orangered-7\\\",\\\"orangered-8\\\",\\\"orangered-9\\\",\\\"purplebluegreen\\\",\\\"purplebluegreen-3\\\",\\\"purplebluegreen-4\\\",\\\"purplebluegreen-5\\\",\\\"purplebluegreen-6\\\",\\\"purplebluegreen-7\\\",\\\"purplebluegreen-8\\\",\\\"purplebluegreen-9\\\",\\\"purpleblue\\\",\\\"purpleblue-3\\\",\\\"purpleblue-4\\\",\\\"purpleblue-5\\\",\\\"purpleblue-6\\\",\\\"purpleblue-7\\\",\\\"purpleblue-8\\\",\\\"purpleblue-9\\\",\\\"purplered\\\",\\\"purplered-3\\\",\\\"purplered-4\\\",\\\"purplered-5\\\",\\\"purplered-6\\\",\\\"purplered-7\\\",\\\"purplered-8\\\",\\\"purplered-9\\\",\\\"redpurple\\\",\\\"redpurple-3\\\",\\\"redpurple-4\\\",\\\"redpurple-5\\\",\\\"redpurple-6\\\",\\\"redpurple-7\\\",\\\"redpurple-8\\\",\\\"redpurple-9\\\",\\\"yellowgreenblue\\\",\\\"yellowgreenblue-3\\\",\\\"yellowgreenblue-4\\\",\\\"yellowgreenblue-5\\\",\\\"yellowgreenblue-6\\\",\\\"yellowgreenblue-7\\\",\\\"yellowgreenblue-8\\\",\\\"yellowgreenblue-9\\\",\\\"yellowgreen\\\",\\\"yellowgreen-3\\\",\\\"yellowgreen-4\\\",\\\"yellowgreen-5\\\",\\\"yellowgreen-6\\\",\\\"yellowgreen-7\\\",\\\"yellowgreen-8\\\",\\\"yellowgreen-9\\\",\\\"yelloworangebrown\\\",\\\"yelloworangebrown-3\\\",\\\"yelloworangebrown-4\\\",\\\"yelloworangebrown-5\\\",\\\"yelloworangebrown-6\\\",\\\"yelloworangebrown-7\\\",\\\"yelloworangebrown-8\\\",\\\"yelloworangebrown-9\\\",\\\"yelloworangered\\\",\\\"yelloworangered-3\\\",\\\"yelloworangered-4\\\",\\\"yelloworangered-5\\\",\\\"yelloworangered-6\\\",\\\"yelloworangered-7\\\",\\\"yelloworangered-8\\\",\\\"yelloworangered-9\\\",\\\"darkblue\\\",\\\"darkblue-3\\\",\\\"darkblue-4\\\",\\\"darkblue-5\\\",\\\"darkblue-6\\\",\\\"darkblue-7\\\",\\\"darkblue-8\\\",\\\"darkblue-9\\\",\\\"darkgold\\\",\\\"darkgold-3\\\",\\\"darkgold-4\\\",\\\"darkgold-5\\\",\\\"darkgold-6\\\",\\\"darkgold-7\\\",\\\"darkgold-8\\\",\\\"darkgold-9\\\",\\\"darkgreen\\\",\\\"darkgreen-3\\\",\\\"darkgreen-4\\\",\\\"darkgreen-5\\\",\\\"darkgreen-6\\\",\\\"darkgreen-7\\\",\\\"darkgreen-8\\\",\\\"darkgreen-9\\\",\\\"darkmulti\\\",\\\"darkmulti-3\\\",\\\"darkmulti-4\\\",\\\"darkmulti-5\\\",\\\"darkmulti-6\\\",\\\"darkmulti-7\\\",\\\"darkmulti-8\\\",\\\"darkmulti-9\\\",\\\"darkred\\\",\\\"darkred-3\\\",\\\"darkred-4\\\",\\\"darkred-5\\\",\\\"darkred-6\\\",\\\"darkred-7\\\",\\\"darkred-8\\\",\\\"darkred-9\\\",\\\"lightgreyred\\\",\\\"lightgreyred-3\\\",\\\"lightgreyred-4\\\",\\\"lightgreyred-5\\\",\\\"lightgreyred-6\\\",\\\"lightgreyred-7\\\",\\\"lightgreyred-8\\\",\\\"lightgreyred-9\\\",\\\"lightgreyteal\\\",\\\"lightgreyteal-3\\\",\\\"lightgreyteal-4\\\",\\\"lightgreyteal-5\\\",\\\"lightgreyteal-6\\\",\\\"lightgreyteal-7\\\",\\\"lightgreyteal-8\\\",\\\"lightgreyteal-9\\\",\\\"lightmulti\\\",\\\"lightmulti-3\\\",\\\"lightmulti-4\\\",\\\"lightmulti-5\\\",\\\"lightmulti-6\\\",\\\"lightmulti-7\\\",\\\"lightmulti-8\\\",\\\"lightmulti-9\\\",\\\"lightorange\\\",\\\"lightorange-3\\\",\\\"lightorange-4\\\",\\\"lightorange-5\\\",\\\"lightorange-6\\\",\\\"lightorange-7\\\",\\\"lightorange-8\\\",\\\"lightorange-9\\\",\\\"lighttealblue\\\",\\\"lighttealblue-3\\\",\\\"lighttealblue-4\\\",\\\"lighttealblue-5\\\",\\\"lighttealblue-6\\\",\\\"lighttealblue-7\\\",\\\"lighttealblue-8\\\",\\\"lighttealblue-9\\\"],\\\"type\\\":\\\"string\\\"},\\\"SequentialSingleHue\\\":{\\\"enum\\\":[\\\"blues\\\",\\\"tealblues\\\",\\\"teals\\\",\\\"greens\\\",\\\"browns\\\",\\\"greys\\\",\\\"purples\\\",\\\"warmgreys\\\",\\\"reds\\\",\\\"oranges\\\"],\\\"type\\\":\\\"string\\\"},\\\"ShapeDef\\\":{\\\"$ref\\\":\\\"#/definitions/MarkPropDef<(string|null),TypeForShape>\\\"},\\\"SharedEncoding\\\":{\\\"additionalProperties\\\":false,\\\"properties\\\":{\\\"angle\\\":{\\\"additionalProperties\\\":false,\\\"properties\\\":{\\\"aggregate\\\":{\\\"$ref\\\":\\\"#/definitions/Aggregate\\\",\\\"description\\\":\\\"Aggregation function for the field (e.g., `\\\\\\\"mean\\\\\\\"`, `\\\\\\\"sum\\\\\\\"`, `\\\\\\\"median\\\\\\\"`, `\\\\\\\"min\\\\\\\"`, `\\\\\\\"max\\\\\\\"`, `\\\\\\\"count\\\\\\\"`).\\\\n\\\\n__Default value:__ `undefined` (None)\\\\n\\\\n__See also:__ [`aggregate`](https://vega.github.io/vega-lite/docs/aggregate.html) documentation.\\\"},\\\"band\\\":{\\\"description\\\":\\\"For rect-based marks (`rect`, `bar`, and `image`), mark size relative to bandwidth of [band scales](https://vega.github.io/vega-lite/docs/scale.html#band), bins or time units. If set to `1`, the mark size is set to the bandwidth, the bin interval, or the time unit interval. If set to `0.5`, the mark size is half of the bandwidth or the time unit interval.\\\\n\\\\nFor other marks, relative position on a band of a stacked, binned, time unit or band scale. If set to `0`, the marks will be positioned at the beginning of the band. If set to `0.5`, the marks will be positioned in the middle of the band.\\\",\\\"maximum\\\":1,\\\"minimum\\\":0,\\\"type\\\":\\\"number\\\"},\\\"bin\\\":{\\\"anyOf\\\":[{\\\"type\\\":\\\"boolean\\\"},{\\\"$ref\\\":\\\"#/definitions/BinParams\\\"},{\\\"type\\\":\\\"null\\\"}],\\\"description\\\":\\\"A flag for binning a `quantitative` field, [an object defining binning parameters](https://vega.github.io/vega-lite/docs/bin.html#params), or indicating that the data for `x` or `y` channel are binned before they are imported into Vega-Lite (`\\\\\\\"binned\\\\\\\"`).\\\\n\\\\n- If `true`, default [binning parameters](https://vega.github.io/vega-lite/docs/bin.html) will be applied.\\\\n\\\\n- If `\\\\\\\"binned\\\\\\\"`, this indicates that the data for the `x` (or `y`) channel are already binned. You can map the bin-start field to `x` (or `y`) and the bin-end field to `x2` (or `y2`). The scale and axis will be formatted similar to binning in Vega-Lite.  To adjust the axis ticks based on the bin step, you can also set the axis's [`tickMinStep`](https://vega.github.io/vega-lite/docs/axis.html#ticks) property.\\\\n\\\\n__Default value:__ `false`\\\\n\\\\n__See also:__ [`bin`](https://vega.github.io/vega-lite/docs/bin.html) documentation.\\\"},\\\"condition\\\":{\\\"anyOf\\\":[{\\\"anyOf\\\":[{\\\"$ref\\\":\\\"#/definitions/ConditionalValueDef<(number|ExprRef)>\\\"},{\\\"items\\\":{\\\"$ref\\\":\\\"#/definitions/ConditionalValueDef<(number|ExprRef)>\\\"},\\\"type\\\":\\\"array\\\"}],\\\"description\\\":\\\"One or more value definition(s) with [a selection or a test predicate](https://vega.github.io/vega-lite/docs/condition.html).\\\\n\\\\n__Note:__ A field definition's `condition` property can only contain [conditional value definitions](https://vega.github.io/vega-lite/docs/condition.html#value) since Vega-Lite only allows at most one encoded field per encoding channel.\\\"},{\\\"anyOf\\\":[{\\\"$ref\\\":\\\"#/definitions/ConditionalMarkPropFieldOrDatumDef\\\"},{\\\"$ref\\\":\\\"#/definitions/ConditionalValueDef<(number|ExprRef)>\\\"},{\\\"items\\\":{\\\"$ref\\\":\\\"#/definitions/ConditionalValueDef<(number|ExprRef)>\\\"},\\\"type\\\":\\\"array\\\"}],\\\"description\\\":\\\"A field definition or one or more value definition(s) with a selection predicate.\\\"}],\\\"description\\\":\\\"One or more value definition(s) with [a selection or a test predicate](https://vega.github.io/vega-lite/docs/condition.html).\\\\n\\\\n__Note:__ A field definition's `condition` property can only contain [conditional value definitions](https://vega.github.io/vega-lite/docs/condition.html#value) since Vega-Lite only allows at most one encoded field per encoding channel.\\\"},\\\"datum\\\":{\\\"anyOf\\\":[{\\\"$ref\\\":\\\"#/definitions/PrimitiveValue\\\"},{\\\"$ref\\\":\\\"#/definitions/DateTime\\\"},{\\\"$ref\\\":\\\"#/definitions/ExprRef\\\"},{\\\"$ref\\\":\\\"#/definitions/RepeatRef\\\"}],\\\"description\\\":\\\"A constant value in data domain.\\\"},\\\"field\\\":{\\\"$ref\\\":\\\"#/definitions/Field\\\",\\\"description\\\":\\\"__Required.__ A string defining the name of the field from which to pull a data value or an object defining iterated values from the [`repeat`](https://vega.github.io/vega-lite/docs/repeat.html) operator.\\\\n\\\\n__See also:__ [`field`](https://vega.github.io/vega-lite/docs/field.html) documentation.\\\\n\\\\n__Notes:__ 1)  Dots (`.`) and brackets (`[` and `]`) can be used to access nested objects (e.g., `\\\\\\\"field\\\\\\\": \\\\\\\"foo.bar\\\\\\\"` and `\\\\\\\"field\\\\\\\": \\\\\\\"foo['bar']\\\\\\\"`). If field names contain dots or brackets but are not nested, you can use `\\\\\\\\\\\\\\\\` to escape dots and brackets (e.g., `\\\\\\\"a\\\\\\\\\\\\\\\\.b\\\\\\\"` and `\\\\\\\"a\\\\\\\\\\\\\\\\[0\\\\\\\\\\\\\\\\]\\\\\\\"`). See more details about escaping in the [field documentation](https://vega.github.io/vega-lite/docs/field.html). 2) `field` is not required if `aggregate` is `count`.\\\"},\\\"legend\\\":{\\\"anyOf\\\":[{\\\"$ref\\\":\\\"#/definitions/Legend\\\"},{\\\"type\\\":\\\"null\\\"}],\\\"description\\\":\\\"An object defining properties of the legend. If `null`, the legend for the encoding channel will be removed.\\\\n\\\\n__Default value:__ If undefined, default [legend properties](https://vega.github.io/vega-lite/docs/legend.html) are applied.\\\\n\\\\n__See also:__ [`legend`](https://vega.github.io/vega-lite/docs/legend.html) documentation.\\\"},\\\"scale\\\":{\\\"anyOf\\\":[{\\\"$ref\\\":\\\"#/definitions/Scale\\\"},{\\\"type\\\":\\\"null\\\"}],\\\"description\\\":\\\"An object defining properties of the channel's scale, which is the function that transforms values in the data domain (numbers, dates, strings, etc) to visual values (pixels, colors, sizes) of the encoding channels.\\\\n\\\\nIf `null`, the scale will be [disabled and the data value will be directly encoded](https://vega.github.io/vega-lite/docs/scale.html#disable).\\\\n\\\\n__Default value:__ If undefined, default [scale properties](https://vega.github.io/vega-lite/docs/scale.html) are applied.\\\\n\\\\n__See also:__ [`scale`](https://vega.github.io/vega-lite/docs/scale.html) documentation.\\\"},\\\"sort\\\":{\\\"$ref\\\":\\\"#/definitions/Sort\\\",\\\"description\\\":\\\"Sort order for the encoded field.\\\\n\\\\nFor continuous fields (quantitative or temporal), `sort` can be either `\\\\\\\"ascending\\\\\\\"` or `\\\\\\\"descending\\\\\\\"`.\\\\n\\\\nFor discrete fields, `sort` can be one of the following: - `\\\\\\\"ascending\\\\\\\"` or `\\\\\\\"descending\\\\\\\"` -- for sorting by the values' natural order in JavaScript. - [A string indicating an encoding channel name to sort by](https://vega.github.io/vega-lite/docs/sort.html#sort-by-encoding) (e.g., `\\\\\\\"x\\\\\\\"` or `\\\\\\\"y\\\\\\\"`) with an optional minus prefix for descending sort (e.g., `\\\\\\\"-x\\\\\\\"` to sort by x-field, descending). This channel string is short-form of [a sort-by-encoding definition](https://vega.github.io/vega-lite/docs/sort.html#sort-by-encoding). For example, `\\\\\\\"sort\\\\\\\": \\\\\\\"-x\\\\\\\"` is equivalent to `\\\\\\\"sort\\\\\\\": {\\\\\\\"encoding\\\\\\\": \\\\\\\"x\\\\\\\", \\\\\\\"order\\\\\\\": \\\\\\\"descending\\\\\\\"}`. - [A sort field definition](https://vega.github.io/vega-lite/docs/sort.html#sort-field) for sorting by another field. - [An array specifying the field values in preferred order](https://vega.github.io/vega-lite/docs/sort.html#sort-array). In this case, the sort order will obey the values in the array, followed by any unspecified values in their original order. For discrete time field, values in the sort array can be [date-time definition objects](types#datetime). In addition, for time units `\\\\\\\"month\\\\\\\"` and `\\\\\\\"day\\\\\\\"`, the values can be the month or day names (case insensitive) or their 3-letter initials (e.g., `\\\\\\\"Mon\\\\\\\"`, `\\\\\\\"Tue\\\\\\\"`). - `null` indicating no sort.\\\\n\\\\n__Default value:__ `\\\\\\\"ascending\\\\\\\"`\\\\n\\\\n__Note:__ `null` and sorting by another channel is not supported for `row` and `column`.\\\\n\\\\n__See also:__ [`sort`](https://vega.github.io/vega-lite/docs/sort.html) documentation.\\\"},\\\"timeUnit\\\":{\\\"anyOf\\\":[{\\\"$ref\\\":\\\"#/definitions/TimeUnit\\\"},{\\\"$ref\\\":\\\"#/definitions/TimeUnitParams\\\"}],\\\"description\\\":\\\"Time unit (e.g., `year`, `yearmonth`, `month`, `hours`) for a temporal field. or [a temporal field that gets casted as ordinal](https://vega.github.io/vega-lite/docs/type.html#cast).\\\\n\\\\n__Default value:__ `undefined` (None)\\\\n\\\\n__See also:__ [`timeUnit`](https://vega.github.io/vega-lite/docs/timeunit.html) documentation.\\\"},\\\"title\\\":{\\\"anyOf\\\":[{\\\"$ref\\\":\\\"#/definitions/Text\\\"},{\\\"type\\\":\\\"null\\\"}],\\\"description\\\":\\\"A title for the field. If `null`, the title will be removed.\\\\n\\\\n__Default value:__  derived from the field's name and transformation function (`aggregate`, `bin` and `timeUnit`). If the field has an aggregate function, the function is displayed as part of the title (e.g., `\\\\\\\"Sum of Profit\\\\\\\"`). If the field is binned or has a time unit applied, the applied function is shown in parentheses (e.g., `\\\\\\\"Profit (binned)\\\\\\\"`, `\\\\\\\"Transaction Date (year-month)\\\\\\\"`). Otherwise, the title is simply the field name.\\\\n\\\\n__Notes__:\\\\n\\\\n1) You can customize the default field title format by providing the [`fieldTitle`](https://vega.github.io/vega-lite/docs/config.html#top-level-config) property in the [config](https://vega.github.io/vega-lite/docs/config.html) or [`fieldTitle` function via the `compile` function's options](https://vega.github.io/vega-lite/docs/compile.html#field-title).\\\\n\\\\n2) If both field definition's `title` and axis, header, or legend `title` are defined, axis/header/legend title will be used.\\\"},\\\"type\\\":{\\\"anyOf\\\":[{\\\"$ref\\\":\\\"#/definitions/StandardType\\\",\\\"description\\\":\\\"The type of measurement (`\\\\\\\"quantitative\\\\\\\"`, `\\\\\\\"temporal\\\\\\\"`, `\\\\\\\"ordinal\\\\\\\"`, or `\\\\\\\"nominal\\\\\\\"`) for the encoded field or constant value (`datum`). It can also be a `\\\\\\\"geojson\\\\\\\"` type for encoding ['geoshape'](https://vega.github.io/vega-lite/docs/geoshape.html).\\\\n\\\\nVega-Lite automatically infers data types in many cases as discussed below. However, type is required for a field if: (1) the field is not nominal and the field encoding has no specified `aggregate` (except `argmin` and `argmax`), `bin`, scale type, custom `sort` order, nor `timeUnit` or (2) if you wish to use an ordinal scale for a field with `bin` or `timeUnit`.\\\\n\\\\n__Default value:__\\\\n\\\\n1) For a data `field`, `\\\\\\\"nominal\\\\\\\"` is the default data type unless the field encoding has `aggregate`, `channel`, `bin`, scale type, `sort`, or `timeUnit` that satisfies the following criteria: - `\\\\\\\"quantitative\\\\\\\"` is the default type if (1) the encoded field contains `bin` or `aggregate` except `\\\\\\\"argmin\\\\\\\"` and `\\\\\\\"argmax\\\\\\\"`, (2) the encoding channel is `latitude` or `longitude` channel or (3) if the specified scale type is [a quantitative scale](https://vega.github.io/vega-lite/docs/scale.html#type). - `\\\\\\\"temporal\\\\\\\"` is the default type if (1) the encoded field contains `timeUnit` or (2) the specified scale type is a time or utc scale - `ordinal\\\\\\\"\\\\\\\"` is the default type if (1) the encoded field contains a [custom `sort` order](https://vega.github.io/vega-lite/docs/sort.html#specifying-custom-sort-order), (2) the specified scale type is an ordinal/point/band scale, or (3) the encoding channel is `order`.\\\\n\\\\n2) For a constant value in data domain (`datum`): - `\\\\\\\"quantitative\\\\\\\"` if the datum is a number - `\\\\\\\"nominal\\\\\\\"` if the datum is a string - `\\\\\\\"temporal\\\\\\\"` if the datum is [a date time object](https://vega.github.io/vega-lite/docs/datetime.html)\\\\n\\\\n__Note:__ - Data `type` describes the semantics of the data rather than the primitive data types (number, string, etc.). The same primitive data type can have different types of measurement. For example, numeric data can represent quantitative, ordinal, or nominal data. - Data values for a temporal field can be either a date-time string (e.g., `\\\\\\\"2015-03-07 12:32:17\\\\\\\"`, `\\\\\\\"17:01\\\\\\\"`, `\\\\\\\"2015-03-16\\\\\\\"`. `\\\\\\\"2015\\\\\\\"`) or a timestamp number (e.g., `1552199579097`). - When using with [`bin`](https://vega.github.io/vega-lite/docs/bin.html), the `type` property can be either `\\\\\\\"quantitative\\\\\\\"` (for using a linear bin scale) or [`\\\\\\\"ordinal\\\\\\\"` (for using an ordinal bin scale)](https://vega.github.io/vega-lite/docs/type.html#cast-bin). - When using with [`timeUnit`](https://vega.github.io/vega-lite/docs/timeunit.html), the `type` property can be either `\\\\\\\"temporal\\\\\\\"` (default, for using a temporal scale) or [`\\\\\\\"ordinal\\\\\\\"` (for using an ordinal scale)](https://vega.github.io/vega-lite/docs/type.html#cast-bin). - When using with [`aggregate`](https://vega.github.io/vega-lite/docs/aggregate.html), the `type` property refers to the post-aggregation data type. For example, we can calculate count `distinct` of a categorical field `\\\\\\\"cat\\\\\\\"` using `{\\\\\\\"aggregate\\\\\\\": \\\\\\\"distinct\\\\\\\", \\\\\\\"field\\\\\\\": \\\\\\\"cat\\\\\\\"}`. The `\\\\\\\"type\\\\\\\"` of the aggregate output is `\\\\\\\"quantitative\\\\\\\"`. - Secondary channels (e.g., `x2`, `y2`, `xError`, `yError`) do not have `type` as they must have exactly the same type as their primary channels (e.g., `x`, `y`).\\\\n\\\\n__See also:__ [`type`](https://vega.github.io/vega-lite/docs/type.html) documentation.\\\"},{\\\"$ref\\\":\\\"#/definitions/Type\\\",\\\"description\\\":\\\"The type of measurement (`\\\\\\\"quantitative\\\\\\\"`, `\\\\\\\"temporal\\\\\\\"`, `\\\\\\\"ordinal\\\\\\\"`, or `\\\\\\\"nominal\\\\\\\"`) for the encoded field or constant value (`datum`). It can also be a `\\\\\\\"geojson\\\\\\\"` type for encoding ['geoshape'](https://vega.github.io/vega-lite/docs/geoshape.html).\\\\n\\\\nVega-Lite automatically infers data types in many cases as discussed below. However, type is required for a field if: (1) the field is not nominal and the field encoding has no specified `aggregate` (except `argmin` and `argmax`), `bin`, scale type, custom `sort` order, nor `timeUnit` or (2) if you wish to use an ordinal scale for a field with `bin` or `timeUnit`.\\\\n\\\\n__Default value:__\\\\n\\\\n1) For a data `field`, `\\\\\\\"nominal\\\\\\\"` is the default data type unless the field encoding has `aggregate`, `channel`, `bin`, scale type, `sort`, or `timeUnit` that satisfies the following criteria: - `\\\\\\\"quantitative\\\\\\\"` is the default type if (1) the encoded field contains `bin` or `aggregate` except `\\\\\\\"argmin\\\\\\\"` and `\\\\\\\"argmax\\\\\\\"`, (2) the encoding channel is `latitude` or `longitude` channel or (3) if the specified scale type is [a quantitative scale](https://vega.github.io/vega-lite/docs/scale.html#type). - `\\\\\\\"temporal\\\\\\\"` is the default type if (1) the encoded field contains `timeUnit` or (2) the specified scale type is a time or utc scale - `ordinal\\\\\\\"\\\\\\\"` is the default type if (1) the encoded field contains a [custom `sort` order](https://vega.github.io/vega-lite/docs/sort.html#specifying-custom-sort-order), (2) the specified scale type is an ordinal/point/band scale, or (3) the encoding channel is `order`.\\\\n\\\\n2) For a constant value in data domain (`datum`): - `\\\\\\\"quantitative\\\\\\\"` if the datum is a number - `\\\\\\\"nominal\\\\\\\"` if the datum is a string - `\\\\\\\"temporal\\\\\\\"` if the datum is [a date time object](https://vega.github.io/vega-lite/docs/datetime.html)\\\\n\\\\n__Note:__ - Data `type` describes the semantics of the data rather than the primitive data types (number, string, etc.). The same primitive data type can have different types of measurement. For example, numeric data can represent quantitative, ordinal, or nominal data. - Data values for a temporal field can be either a date-time string (e.g., `\\\\\\\"2015-03-07 12:32:17\\\\\\\"`, `\\\\\\\"17:01\\\\\\\"`, `\\\\\\\"2015-03-16\\\\\\\"`. `\\\\\\\"2015\\\\\\\"`) or a timestamp number (e.g., `1552199579097`). - When using with [`bin`](https://vega.github.io/vega-lite/docs/bin.html), the `type` property can be either `\\\\\\\"quantitative\\\\\\\"` (for using a linear bin scale) or [`\\\\\\\"ordinal\\\\\\\"` (for using an ordinal bin scale)](https://vega.github.io/vega-lite/docs/type.html#cast-bin). - When using with [`timeUnit`](https://vega.github.io/vega-lite/docs/timeunit.html), the `type` property can be either `\\\\\\\"temporal\\\\\\\"` (default, for using a temporal scale) or [`\\\\\\\"ordinal\\\\\\\"` (for using an ordinal scale)](https://vega.github.io/vega-lite/docs/type.html#cast-bin). - When using with [`aggregate`](https://vega.github.io/vega-lite/docs/aggregate.html), the `type` property refers to the post-aggregation data type. For example, we can calculate count `distinct` of a categorical field `\\\\\\\"cat\\\\\\\"` using `{\\\\\\\"aggregate\\\\\\\": \\\\\\\"distinct\\\\\\\", \\\\\\\"field\\\\\\\": \\\\\\\"cat\\\\\\\"}`. The `\\\\\\\"type\\\\\\\"` of the aggregate output is `\\\\\\\"quantitative\\\\\\\"`. - Secondary channels (e.g., `x2`, `y2`, `xError`, `yError`) do not have `type` as they must have exactly the same type as their primary channels (e.g., `x`, `y`).\\\\n\\\\n__See also:__ [`type`](https://vega.github.io/vega-lite/docs/type.html) documentation.\\\"}],\\\"description\\\":\\\"The type of measurement (`\\\\\\\"quantitative\\\\\\\"`, `\\\\\\\"temporal\\\\\\\"`, `\\\\\\\"ordinal\\\\\\\"`, or `\\\\\\\"nominal\\\\\\\"`) for the encoded field or constant value (`datum`). It can also be a `\\\\\\\"geojson\\\\\\\"` type for encoding ['geoshape'](https://vega.github.io/vega-lite/docs/geoshape.html).\\\\n\\\\nVega-Lite automatically infers data types in many cases as discussed below. However, type is required for a field if: (1) the field is not nominal and the field encoding has no specified `aggregate` (except `argmin` and `argmax`), `bin`, scale type, custom `sort` order, nor `timeUnit` or (2) if you wish to use an ordinal scale for a field with `bin` or `timeUnit`.\\\\n\\\\n__Default value:__\\\\n\\\\n1) For a data `field`, `\\\\\\\"nominal\\\\\\\"` is the default data type unless the field encoding has `aggregate`, `channel`, `bin`, scale type, `sort`, or `timeUnit` that satisfies the following criteria: - `\\\\\\\"quantitative\\\\\\\"` is the default type if (1) the encoded field contains `bin` or `aggregate` except `\\\\\\\"argmin\\\\\\\"` and `\\\\\\\"argmax\\\\\\\"`, (2) the encoding channel is `latitude` or `longitude` channel or (3) if the specified scale type is [a quantitative scale](https://vega.github.io/vega-lite/docs/scale.html#type). - `\\\\\\\"temporal\\\\\\\"` is the default type if (1) the encoded field contains `timeUnit` or (2) the specified scale type is a time or utc scale - `ordinal\\\\\\\"\\\\\\\"` is the default type if (1) the encoded field contains a [custom `sort` order](https://vega.github.io/vega-lite/docs/sort.html#specifying-custom-sort-order), (2) the specified scale type is an ordinal/point/band scale, or (3) the encoding channel is `order`.\\\\n\\\\n2) For a constant value in data domain (`datum`): - `\\\\\\\"quantitative\\\\\\\"` if the datum is a number - `\\\\\\\"nominal\\\\\\\"` if the datum is a string - `\\\\\\\"temporal\\\\\\\"` if the datum is [a date time object](https://vega.github.io/vega-lite/docs/datetime.html)\\\\n\\\\n__Note:__ - Data `type` describes the semantics of the data rather than the primitive data types (number, string, etc.). The same primitive data type can have different types of measurement. For example, numeric data can represent quantitative, ordinal, or nominal data. - Data values for a temporal field can be either a date-time string (e.g., `\\\\\\\"2015-03-07 12:32:17\\\\\\\"`, `\\\\\\\"17:01\\\\\\\"`, `\\\\\\\"2015-03-16\\\\\\\"`. `\\\\\\\"2015\\\\\\\"`) or a timestamp number (e.g., `1552199579097`). - When using with [`bin`](https://vega.github.io/vega-lite/docs/bin.html), the `type` property can be either `\\\\\\\"quantitative\\\\\\\"` (for using a linear bin scale) or [`\\\\\\\"ordinal\\\\\\\"` (for using an ordinal bin scale)](https://vega.github.io/vega-lite/docs/type.html#cast-bin). - When using with [`timeUnit`](https://vega.github.io/vega-lite/docs/timeunit.html), the `type` property can be either `\\\\\\\"temporal\\\\\\\"` (default, for using a temporal scale) or [`\\\\\\\"ordinal\\\\\\\"` (for using an ordinal scale)](https://vega.github.io/vega-lite/docs/type.html#cast-bin). - When using with [`aggregate`](https://vega.github.io/vega-lite/docs/aggregate.html), the `type` property refers to the post-aggregation data type. For example, we can calculate count `distinct` of a categorical field `\\\\\\\"cat\\\\\\\"` using `{\\\\\\\"aggregate\\\\\\\": \\\\\\\"distinct\\\\\\\", \\\\\\\"field\\\\\\\": \\\\\\\"cat\\\\\\\"}`. The `\\\\\\\"type\\\\\\\"` of the aggregate output is `\\\\\\\"quantitative\\\\\\\"`. - Secondary channels (e.g., `x2`, `y2`, `xError`, `yError`) do not have `type` as they must have exactly the same type as their primary channels (e.g., `x`, `y`).\\\\n\\\\n__See also:__ [`type`](https://vega.github.io/vega-lite/docs/type.html) documentation.\\\"},\\\"value\\\":{\\\"anyOf\\\":[{\\\"type\\\":\\\"number\\\"},{\\\"$ref\\\":\\\"#/definitions/ExprRef\\\"}],\\\"description\\\":\\\"A constant value in visual domain (e.g., `\\\\\\\"red\\\\\\\"` / `\\\\\\\"#0099ff\\\\\\\"` / [gradient definition](https://vega.github.io/vega-lite/docs/types.html#gradient) for color, values between `0` to `1` for opacity).\\\"}},\\\"type\\\":\\\"object\\\"},\\\"color\\\":{\\\"additionalProperties\\\":false,\\\"properties\\\":{\\\"aggregate\\\":{\\\"$ref\\\":\\\"#/definitions/Aggregate\\\",\\\"description\\\":\\\"Aggregation function for the field (e.g., `\\\\\\\"mean\\\\\\\"`, `\\\\\\\"sum\\\\\\\"`, `\\\\\\\"median\\\\\\\"`, `\\\\\\\"min\\\\\\\"`, `\\\\\\\"max\\\\\\\"`, `\\\\\\\"count\\\\\\\"`).\\\\n\\\\n__Default value:__ `undefined` (None)\\\\n\\\\n__See also:__ [`aggregate`](https://vega.github.io/vega-lite/docs/aggregate.html) documentation.\\\"},\\\"band\\\":{\\\"description\\\":\\\"For rect-based marks (`rect`, `bar`, and `image`), mark size relative to bandwidth of [band scales](https://vega.github.io/vega-lite/docs/scale.html#band), bins or time units. If set to `1`, the mark size is set to the bandwidth, the bin interval, or the time unit interval. If set to `0.5`, the mark size is half of the bandwidth or the time unit interval.\\\\n\\\\nFor other marks, relative position on a band of a stacked, binned, time unit or band scale. If set to `0`, the marks will be positioned at the beginning of the band. If set to `0.5`, the marks will be positioned in the middle of the band.\\\",\\\"maximum\\\":1,\\\"minimum\\\":0,\\\"type\\\":\\\"number\\\"},\\\"bin\\\":{\\\"anyOf\\\":[{\\\"type\\\":\\\"boolean\\\"},{\\\"$ref\\\":\\\"#/definitions/BinParams\\\"},{\\\"type\\\":\\\"null\\\"}],\\\"description\\\":\\\"A flag for binning a `quantitative` field, [an object defining binning parameters](https://vega.github.io/vega-lite/docs/bin.html#params), or indicating that the data for `x` or `y` channel are binned before they are imported into Vega-Lite (`\\\\\\\"binned\\\\\\\"`).\\\\n\\\\n- If `true`, default [binning parameters](https://vega.github.io/vega-lite/docs/bin.html) will be applied.\\\\n\\\\n- If `\\\\\\\"binned\\\\\\\"`, this indicates that the data for the `x` (or `y`) channel are already binned. You can map the bin-start field to `x` (or `y`) and the bin-end field to `x2` (or `y2`). The scale and axis will be formatted similar to binning in Vega-Lite.  To adjust the axis ticks based on the bin step, you can also set the axis's [`tickMinStep`](https://vega.github.io/vega-lite/docs/axis.html#ticks) property.\\\\n\\\\n__Default value:__ `false`\\\\n\\\\n__See also:__ [`bin`](https://vega.github.io/vega-lite/docs/bin.html) documentation.\\\"},\\\"condition\\\":{\\\"anyOf\\\":[{\\\"anyOf\\\":[{\\\"$ref\\\":\\\"#/definitions/ConditionalValueDef<(Gradient|string|null|ExprRef)>\\\"},{\\\"items\\\":{\\\"$ref\\\":\\\"#/definitions/ConditionalValueDef<(Gradient|string|null|ExprRef)>\\\"},\\\"type\\\":\\\"array\\\"}],\\\"description\\\":\\\"One or more value definition(s) with [a selection or a test predicate](https://vega.github.io/vega-lite/docs/condition.html).\\\\n\\\\n__Note:__ A field definition's `condition` property can only contain [conditional value definitions](https://vega.github.io/vega-lite/docs/condition.html#value) since Vega-Lite only allows at most one encoded field per encoding channel.\\\"},{\\\"anyOf\\\":[{\\\"$ref\\\":\\\"#/definitions/ConditionalMarkPropFieldOrDatumDef\\\"},{\\\"$ref\\\":\\\"#/definitions/ConditionalValueDef<(Gradient|string|null|ExprRef)>\\\"},{\\\"items\\\":{\\\"$ref\\\":\\\"#/definitions/ConditionalValueDef<(Gradient|string|null|ExprRef)>\\\"},\\\"type\\\":\\\"array\\\"}],\\\"description\\\":\\\"A field definition or one or more value definition(s) with a selection predicate.\\\"}],\\\"description\\\":\\\"One or more value definition(s) with [a selection or a test predicate](https://vega.github.io/vega-lite/docs/condition.html).\\\\n\\\\n__Note:__ A field definition's `condition` property can only contain [conditional value definitions](https://vega.github.io/vega-lite/docs/condition.html#value) since Vega-Lite only allows at most one encoded field per encoding channel.\\\"},\\\"datum\\\":{\\\"anyOf\\\":[{\\\"$ref\\\":\\\"#/definitions/PrimitiveValue\\\"},{\\\"$ref\\\":\\\"#/definitions/DateTime\\\"},{\\\"$ref\\\":\\\"#/definitions/ExprRef\\\"},{\\\"$ref\\\":\\\"#/definitions/RepeatRef\\\"}],\\\"description\\\":\\\"A constant value in data domain.\\\"},\\\"field\\\":{\\\"$ref\\\":\\\"#/definitions/Field\\\",\\\"description\\\":\\\"__Required.__ A string defining the name of the field from which to pull a data value or an object defining iterated values from the [`repeat`](https://vega.github.io/vega-lite/docs/repeat.html) operator.\\\\n\\\\n__See also:__ [`field`](https://vega.github.io/vega-lite/docs/field.html) documentation.\\\\n\\\\n__Notes:__ 1)  Dots (`.`) and brackets (`[` and `]`) can be used to access nested objects (e.g., `\\\\\\\"field\\\\\\\": \\\\\\\"foo.bar\\\\\\\"` and `\\\\\\\"field\\\\\\\": \\\\\\\"foo['bar']\\\\\\\"`). If field names contain dots or brackets but are not nested, you can use `\\\\\\\\\\\\\\\\` to escape dots and brackets (e.g., `\\\\\\\"a\\\\\\\\\\\\\\\\.b\\\\\\\"` and `\\\\\\\"a\\\\\\\\\\\\\\\\[0\\\\\\\\\\\\\\\\]\\\\\\\"`). See more details about escaping in the [field documentation](https://vega.github.io/vega-lite/docs/field.html). 2) `field` is not required if `aggregate` is `count`.\\\"},\\\"legend\\\":{\\\"anyOf\\\":[{\\\"$ref\\\":\\\"#/definitions/Legend\\\"},{\\\"type\\\":\\\"null\\\"}],\\\"description\\\":\\\"An object defining properties of the legend. If `null`, the legend for the encoding channel will be removed.\\\\n\\\\n__Default value:__ If undefined, default [legend properties](https://vega.github.io/vega-lite/docs/legend.html) are applied.\\\\n\\\\n__See also:__ [`legend`](https://vega.github.io/vega-lite/docs/legend.html) documentation.\\\"},\\\"scale\\\":{\\\"anyOf\\\":[{\\\"$ref\\\":\\\"#/definitions/Scale\\\"},{\\\"type\\\":\\\"null\\\"}],\\\"description\\\":\\\"An object defining properties of the channel's scale, which is the function that transforms values in the data domain (numbers, dates, strings, etc) to visual values (pixels, colors, sizes) of the encoding channels.\\\\n\\\\nIf `null`, the scale will be [disabled and the data value will be directly encoded](https://vega.github.io/vega-lite/docs/scale.html#disable).\\\\n\\\\n__Default value:__ If undefined, default [scale properties](https://vega.github.io/vega-lite/docs/scale.html) are applied.\\\\n\\\\n__See also:__ [`scale`](https://vega.github.io/vega-lite/docs/scale.html) documentation.\\\"},\\\"sort\\\":{\\\"$ref\\\":\\\"#/definitions/Sort\\\",\\\"description\\\":\\\"Sort order for the encoded field.\\\\n\\\\nFor continuous fields (quantitative or temporal), `sort` can be either `\\\\\\\"ascending\\\\\\\"` or `\\\\\\\"descending\\\\\\\"`.\\\\n\\\\nFor discrete fields, `sort` can be one of the following: - `\\\\\\\"ascending\\\\\\\"` or `\\\\\\\"descending\\\\\\\"` -- for sorting by the values' natural order in JavaScript. - [A string indicating an encoding channel name to sort by](https://vega.github.io/vega-lite/docs/sort.html#sort-by-encoding) (e.g., `\\\\\\\"x\\\\\\\"` or `\\\\\\\"y\\\\\\\"`) with an optional minus prefix for descending sort (e.g., `\\\\\\\"-x\\\\\\\"` to sort by x-field, descending). This channel string is short-form of [a sort-by-encoding definition](https://vega.github.io/vega-lite/docs/sort.html#sort-by-encoding). For example, `\\\\\\\"sort\\\\\\\": \\\\\\\"-x\\\\\\\"` is equivalent to `\\\\\\\"sort\\\\\\\": {\\\\\\\"encoding\\\\\\\": \\\\\\\"x\\\\\\\", \\\\\\\"order\\\\\\\": \\\\\\\"descending\\\\\\\"}`. - [A sort field definition](https://vega.github.io/vega-lite/docs/sort.html#sort-field) for sorting by another field. - [An array specifying the field values in preferred order](https://vega.github.io/vega-lite/docs/sort.html#sort-array). In this case, the sort order will obey the values in the array, followed by any unspecified values in their original order. For discrete time field, values in the sort array can be [date-time definition objects](types#datetime). In addition, for time units `\\\\\\\"month\\\\\\\"` and `\\\\\\\"day\\\\\\\"`, the values can be the month or day names (case insensitive) or their 3-letter initials (e.g., `\\\\\\\"Mon\\\\\\\"`, `\\\\\\\"Tue\\\\\\\"`). - `null` indicating no sort.\\\\n\\\\n__Default value:__ `\\\\\\\"ascending\\\\\\\"`\\\\n\\\\n__Note:__ `null` and sorting by another channel is not supported for `row` and `column`.\\\\n\\\\n__See also:__ [`sort`](https://vega.github.io/vega-lite/docs/sort.html) documentation.\\\"},\\\"timeUnit\\\":{\\\"anyOf\\\":[{\\\"$ref\\\":\\\"#/definitions/TimeUnit\\\"},{\\\"$ref\\\":\\\"#/definitions/TimeUnitParams\\\"}],\\\"description\\\":\\\"Time unit (e.g., `year`, `yearmonth`, `month`, `hours`) for a temporal field. or [a temporal field that gets casted as ordinal](https://vega.github.io/vega-lite/docs/type.html#cast).\\\\n\\\\n__Default value:__ `undefined` (None)\\\\n\\\\n__See also:__ [`timeUnit`](https://vega.github.io/vega-lite/docs/timeunit.html) documentation.\\\"},\\\"title\\\":{\\\"anyOf\\\":[{\\\"$ref\\\":\\\"#/definitions/Text\\\"},{\\\"type\\\":\\\"null\\\"}],\\\"description\\\":\\\"A title for the field. If `null`, the title will be removed.\\\\n\\\\n__Default value:__  derived from the field's name and transformation function (`aggregate`, `bin` and `timeUnit`). If the field has an aggregate function, the function is displayed as part of the title (e.g., `\\\\\\\"Sum of Profit\\\\\\\"`). If the field is binned or has a time unit applied, the applied function is shown in parentheses (e.g., `\\\\\\\"Profit (binned)\\\\\\\"`, `\\\\\\\"Transaction Date (year-month)\\\\\\\"`). Otherwise, the title is simply the field name.\\\\n\\\\n__Notes__:\\\\n\\\\n1) You can customize the default field title format by providing the [`fieldTitle`](https://vega.github.io/vega-lite/docs/config.html#top-level-config) property in the [config](https://vega.github.io/vega-lite/docs/config.html) or [`fieldTitle` function via the `compile` function's options](https://vega.github.io/vega-lite/docs/compile.html#field-title).\\\\n\\\\n2) If both field definition's `title` and axis, header, or legend `title` are defined, axis/header/legend title will be used.\\\"},\\\"type\\\":{\\\"anyOf\\\":[{\\\"$ref\\\":\\\"#/definitions/StandardType\\\",\\\"description\\\":\\\"The type of measurement (`\\\\\\\"quantitative\\\\\\\"`, `\\\\\\\"temporal\\\\\\\"`, `\\\\\\\"ordinal\\\\\\\"`, or `\\\\\\\"nominal\\\\\\\"`) for the encoded field or constant value (`datum`). It can also be a `\\\\\\\"geojson\\\\\\\"` type for encoding ['geoshape'](https://vega.github.io/vega-lite/docs/geoshape.html).\\\\n\\\\nVega-Lite automatically infers data types in many cases as discussed below. However, type is required for a field if: (1) the field is not nominal and the field encoding has no specified `aggregate` (except `argmin` and `argmax`), `bin`, scale type, custom `sort` order, nor `timeUnit` or (2) if you wish to use an ordinal scale for a field with `bin` or `timeUnit`.\\\\n\\\\n__Default value:__\\\\n\\\\n1) For a data `field`, `\\\\\\\"nominal\\\\\\\"` is the default data type unless the field encoding has `aggregate`, `channel`, `bin`, scale type, `sort`, or `timeUnit` that satisfies the following criteria: - `\\\\\\\"quantitative\\\\\\\"` is the default type if (1) the encoded field contains `bin` or `aggregate` except `\\\\\\\"argmin\\\\\\\"` and `\\\\\\\"argmax\\\\\\\"`, (2) the encoding channel is `latitude` or `longitude` channel or (3) if the specified scale type is [a quantitative scale](https://vega.github.io/vega-lite/docs/scale.html#type). - `\\\\\\\"temporal\\\\\\\"` is the default type if (1) the encoded field contains `timeUnit` or (2) the specified scale type is a time or utc scale - `ordinal\\\\\\\"\\\\\\\"` is the default type if (1) the encoded field contains a [custom `sort` order](https://vega.github.io/vega-lite/docs/sort.html#specifying-custom-sort-order), (2) the specified scale type is an ordinal/point/band scale, or (3) the encoding channel is `order`.\\\\n\\\\n2) For a constant value in data domain (`datum`): - `\\\\\\\"quantitative\\\\\\\"` if the datum is a number - `\\\\\\\"nominal\\\\\\\"` if the datum is a string - `\\\\\\\"temporal\\\\\\\"` if the datum is [a date time object](https://vega.github.io/vega-lite/docs/datetime.html)\\\\n\\\\n__Note:__ - Data `type` describes the semantics of the data rather than the primitive data types (number, string, etc.). The same primitive data type can have different types of measurement. For example, numeric data can represent quantitative, ordinal, or nominal data. - Data values for a temporal field can be either a date-time string (e.g., `\\\\\\\"2015-03-07 12:32:17\\\\\\\"`, `\\\\\\\"17:01\\\\\\\"`, `\\\\\\\"2015-03-16\\\\\\\"`. `\\\\\\\"2015\\\\\\\"`) or a timestamp number (e.g., `1552199579097`). - When using with [`bin`](https://vega.github.io/vega-lite/docs/bin.html), the `type` property can be either `\\\\\\\"quantitative\\\\\\\"` (for using a linear bin scale) or [`\\\\\\\"ordinal\\\\\\\"` (for using an ordinal bin scale)](https://vega.github.io/vega-lite/docs/type.html#cast-bin). - When using with [`timeUnit`](https://vega.github.io/vega-lite/docs/timeunit.html), the `type` property can be either `\\\\\\\"temporal\\\\\\\"` (default, for using a temporal scale) or [`\\\\\\\"ordinal\\\\\\\"` (for using an ordinal scale)](https://vega.github.io/vega-lite/docs/type.html#cast-bin). - When using with [`aggregate`](https://vega.github.io/vega-lite/docs/aggregate.html), the `type` property refers to the post-aggregation data type. For example, we can calculate count `distinct` of a categorical field `\\\\\\\"cat\\\\\\\"` using `{\\\\\\\"aggregate\\\\\\\": \\\\\\\"distinct\\\\\\\", \\\\\\\"field\\\\\\\": \\\\\\\"cat\\\\\\\"}`. The `\\\\\\\"type\\\\\\\"` of the aggregate output is `\\\\\\\"quantitative\\\\\\\"`. - Secondary channels (e.g., `x2`, `y2`, `xError`, `yError`) do not have `type` as they must have exactly the same type as their primary channels (e.g., `x`, `y`).\\\\n\\\\n__See also:__ [`type`](https://vega.github.io/vega-lite/docs/type.html) documentation.\\\"},{\\\"$ref\\\":\\\"#/definitions/Type\\\",\\\"description\\\":\\\"The type of measurement (`\\\\\\\"quantitative\\\\\\\"`, `\\\\\\\"temporal\\\\\\\"`, `\\\\\\\"ordinal\\\\\\\"`, or `\\\\\\\"nominal\\\\\\\"`) for the encoded field or constant value (`datum`). It can also be a `\\\\\\\"geojson\\\\\\\"` type for encoding ['geoshape'](https://vega.github.io/vega-lite/docs/geoshape.html).\\\\n\\\\nVega-Lite automatically infers data types in many cases as discussed below. However, type is required for a field if: (1) the field is not nominal and the field encoding has no specified `aggregate` (except `argmin` and `argmax`), `bin`, scale type, custom `sort` order, nor `timeUnit` or (2) if you wish to use an ordinal scale for a field with `bin` or `timeUnit`.\\\\n\\\\n__Default value:__\\\\n\\\\n1) For a data `field`, `\\\\\\\"nominal\\\\\\\"` is the default data type unless the field encoding has `aggregate`, `channel`, `bin`, scale type, `sort`, or `timeUnit` that satisfies the following criteria: - `\\\\\\\"quantitative\\\\\\\"` is the default type if (1) the encoded field contains `bin` or `aggregate` except `\\\\\\\"argmin\\\\\\\"` and `\\\\\\\"argmax\\\\\\\"`, (2) the encoding channel is `latitude` or `longitude` channel or (3) if the specified scale type is [a quantitative scale](https://vega.github.io/vega-lite/docs/scale.html#type). - `\\\\\\\"temporal\\\\\\\"` is the default type if (1) the encoded field contains `timeUnit` or (2) the specified scale type is a time or utc scale - `ordinal\\\\\\\"\\\\\\\"` is the default type if (1) the encoded field contains a [custom `sort` order](https://vega.github.io/vega-lite/docs/sort.html#specifying-custom-sort-order), (2) the specified scale type is an ordinal/point/band scale, or (3) the encoding channel is `order`.\\\\n\\\\n2) For a constant value in data domain (`datum`): - `\\\\\\\"quantitative\\\\\\\"` if the datum is a number - `\\\\\\\"nominal\\\\\\\"` if the datum is a string - `\\\\\\\"temporal\\\\\\\"` if the datum is [a date time object](https://vega.github.io/vega-lite/docs/datetime.html)\\\\n\\\\n__Note:__ - Data `type` describes the semantics of the data rather than the primitive data types (number, string, etc.). The same primitive data type can have different types of measurement. For example, numeric data can represent quantitative, ordinal, or nominal data. - Data values for a temporal field can be either a date-time string (e.g., `\\\\\\\"2015-03-07 12:32:17\\\\\\\"`, `\\\\\\\"17:01\\\\\\\"`, `\\\\\\\"2015-03-16\\\\\\\"`. `\\\\\\\"2015\\\\\\\"`) or a timestamp number (e.g., `1552199579097`). - When using with [`bin`](https://vega.github.io/vega-lite/docs/bin.html), the `type` property can be either `\\\\\\\"quantitative\\\\\\\"` (for using a linear bin scale) or [`\\\\\\\"ordinal\\\\\\\"` (for using an ordinal bin scale)](https://vega.github.io/vega-lite/docs/type.html#cast-bin). - When using with [`timeUnit`](https://vega.github.io/vega-lite/docs/timeunit.html), the `type` property can be either `\\\\\\\"temporal\\\\\\\"` (default, for using a temporal scale) or [`\\\\\\\"ordinal\\\\\\\"` (for using an ordinal scale)](https://vega.github.io/vega-lite/docs/type.html#cast-bin). - When using with [`aggregate`](https://vega.github.io/vega-lite/docs/aggregate.html), the `type` property refers to the post-aggregation data type. For example, we can calculate count `distinct` of a categorical field `\\\\\\\"cat\\\\\\\"` using `{\\\\\\\"aggregate\\\\\\\": \\\\\\\"distinct\\\\\\\", \\\\\\\"field\\\\\\\": \\\\\\\"cat\\\\\\\"}`. The `\\\\\\\"type\\\\\\\"` of the aggregate output is `\\\\\\\"quantitative\\\\\\\"`. - Secondary channels (e.g., `x2`, `y2`, `xError`, `yError`) do not have `type` as they must have exactly the same type as their primary channels (e.g., `x`, `y`).\\\\n\\\\n__See also:__ [`type`](https://vega.github.io/vega-lite/docs/type.html) documentation.\\\"}],\\\"description\\\":\\\"The type of measurement (`\\\\\\\"quantitative\\\\\\\"`, `\\\\\\\"temporal\\\\\\\"`, `\\\\\\\"ordinal\\\\\\\"`, or `\\\\\\\"nominal\\\\\\\"`) for the encoded field or constant value (`datum`). It can also be a `\\\\\\\"geojson\\\\\\\"` type for encoding ['geoshape'](https://vega.github.io/vega-lite/docs/geoshape.html).\\\\n\\\\nVega-Lite automatically infers data types in many cases as discussed below. However, type is required for a field if: (1) the field is not nominal and the field encoding has no specified `aggregate` (except `argmin` and `argmax`), `bin`, scale type, custom `sort` order, nor `timeUnit` or (2) if you wish to use an ordinal scale for a field with `bin` or `timeUnit`.\\\\n\\\\n__Default value:__\\\\n\\\\n1) For a data `field`, `\\\\\\\"nominal\\\\\\\"` is the default data type unless the field encoding has `aggregate`, `channel`, `bin`, scale type, `sort`, or `timeUnit` that satisfies the following criteria: - `\\\\\\\"quantitative\\\\\\\"` is the default type if (1) the encoded field contains `bin` or `aggregate` except `\\\\\\\"argmin\\\\\\\"` and `\\\\\\\"argmax\\\\\\\"`, (2) the encoding channel is `latitude` or `longitude` channel or (3) if the specified scale type is [a quantitative scale](https://vega.github.io/vega-lite/docs/scale.html#type). - `\\\\\\\"temporal\\\\\\\"` is the default type if (1) the encoded field contains `timeUnit` or (2) the specified scale type is a time or utc scale - `ordinal\\\\\\\"\\\\\\\"` is the default type if (1) the encoded field contains a [custom `sort` order](https://vega.github.io/vega-lite/docs/sort.html#specifying-custom-sort-order), (2) the specified scale type is an ordinal/point/band scale, or (3) the encoding channel is `order`.\\\\n\\\\n2) For a constant value in data domain (`datum`): - `\\\\\\\"quantitative\\\\\\\"` if the datum is a number - `\\\\\\\"nominal\\\\\\\"` if the datum is a string - `\\\\\\\"temporal\\\\\\\"` if the datum is [a date time object](https://vega.github.io/vega-lite/docs/datetime.html)\\\\n\\\\n__Note:__ - Data `type` describes the semantics of the data rather than the primitive data types (number, string, etc.). The same primitive data type can have different types of measurement. For example, numeric data can represent quantitative, ordinal, or nominal data. - Data values for a temporal field can be either a date-time string (e.g., `\\\\\\\"2015-03-07 12:32:17\\\\\\\"`, `\\\\\\\"17:01\\\\\\\"`, `\\\\\\\"2015-03-16\\\\\\\"`. `\\\\\\\"2015\\\\\\\"`) or a timestamp number (e.g., `1552199579097`). - When using with [`bin`](https://vega.github.io/vega-lite/docs/bin.html), the `type` property can be either `\\\\\\\"quantitative\\\\\\\"` (for using a linear bin scale) or [`\\\\\\\"ordinal\\\\\\\"` (for using an ordinal bin scale)](https://vega.github.io/vega-lite/docs/type.html#cast-bin). - When using with [`timeUnit`](https://vega.github.io/vega-lite/docs/timeunit.html), the `type` property can be either `\\\\\\\"temporal\\\\\\\"` (default, for using a temporal scale) or [`\\\\\\\"ordinal\\\\\\\"` (for using an ordinal scale)](https://vega.github.io/vega-lite/docs/type.html#cast-bin). - When using with [`aggregate`](https://vega.github.io/vega-lite/docs/aggregate.html), the `type` property refers to the post-aggregation data type. For example, we can calculate count `distinct` of a categorical field `\\\\\\\"cat\\\\\\\"` using `{\\\\\\\"aggregate\\\\\\\": \\\\\\\"distinct\\\\\\\", \\\\\\\"field\\\\\\\": \\\\\\\"cat\\\\\\\"}`. The `\\\\\\\"type\\\\\\\"` of the aggregate output is `\\\\\\\"quantitative\\\\\\\"`. - Secondary channels (e.g., `x2`, `y2`, `xError`, `yError`) do not have `type` as they must have exactly the same type as their primary channels (e.g., `x`, `y`).\\\\n\\\\n__See also:__ [`type`](https://vega.github.io/vega-lite/docs/type.html) documentation.\\\"},\\\"value\\\":{\\\"anyOf\\\":[{\\\"$ref\\\":\\\"#/definitions/Gradient\\\"},{\\\"type\\\":\\\"string\\\"},{\\\"type\\\":\\\"null\\\"},{\\\"$ref\\\":\\\"#/definitions/ExprRef\\\"}],\\\"description\\\":\\\"A constant value in visual domain (e.g., `\\\\\\\"red\\\\\\\"` / `\\\\\\\"#0099ff\\\\\\\"` / [gradient definition](https://vega.github.io/vega-lite/docs/types.html#gradient) for color, values between `0` to `1` for opacity).\\\"}},\\\"type\\\":\\\"object\\\"},\\\"description\\\":{\\\"additionalProperties\\\":false,\\\"properties\\\":{\\\"aggregate\\\":{\\\"$ref\\\":\\\"#/definitions/Aggregate\\\",\\\"description\\\":\\\"Aggregation function for the field (e.g., `\\\\\\\"mean\\\\\\\"`, `\\\\\\\"sum\\\\\\\"`, `\\\\\\\"median\\\\\\\"`, `\\\\\\\"min\\\\\\\"`, `\\\\\\\"max\\\\\\\"`, `\\\\\\\"count\\\\\\\"`).\\\\n\\\\n__Default value:__ `undefined` (None)\\\\n\\\\n__See also:__ [`aggregate`](https://vega.github.io/vega-lite/docs/aggregate.html) documentation.\\\"},\\\"band\\\":{\\\"description\\\":\\\"For rect-based marks (`rect`, `bar`, and `image`), mark size relative to bandwidth of [band scales](https://vega.github.io/vega-lite/docs/scale.html#band), bins or time units. If set to `1`, the mark size is set to the bandwidth, the bin interval, or the time unit interval. If set to `0.5`, the mark size is half of the bandwidth or the time unit interval.\\\\n\\\\nFor other marks, relative position on a band of a stacked, binned, time unit or band scale. If set to `0`, the marks will be positioned at the beginning of the band. If set to `0.5`, the marks will be positioned in the middle of the band.\\\",\\\"maximum\\\":1,\\\"minimum\\\":0,\\\"type\\\":\\\"number\\\"},\\\"bin\\\":{\\\"anyOf\\\":[{\\\"type\\\":\\\"boolean\\\"},{\\\"$ref\\\":\\\"#/definitions/BinParams\\\"},{\\\"const\\\":\\\"binned\\\",\\\"type\\\":\\\"string\\\"},{\\\"type\\\":\\\"null\\\"}],\\\"description\\\":\\\"A flag for binning a `quantitative` field, [an object defining binning parameters](https://vega.github.io/vega-lite/docs/bin.html#params), or indicating that the data for `x` or `y` channel are binned before they are imported into Vega-Lite (`\\\\\\\"binned\\\\\\\"`).\\\\n\\\\n- If `true`, default [binning parameters](https://vega.github.io/vega-lite/docs/bin.html) will be applied.\\\\n\\\\n- If `\\\\\\\"binned\\\\\\\"`, this indicates that the data for the `x` (or `y`) channel are already binned. You can map the bin-start field to `x` (or `y`) and the bin-end field to `x2` (or `y2`). The scale and axis will be formatted similar to binning in Vega-Lite.  To adjust the axis ticks based on the bin step, you can also set the axis's [`tickMinStep`](https://vega.github.io/vega-lite/docs/axis.html#ticks) property.\\\\n\\\\n__Default value:__ `false`\\\\n\\\\n__See also:__ [`bin`](https://vega.github.io/vega-lite/docs/bin.html) documentation.\\\"},\\\"condition\\\":{\\\"anyOf\\\":[{\\\"anyOf\\\":[{\\\"$ref\\\":\\\"#/definitions/ConditionalValueDef<(string|ExprRef)>\\\"},{\\\"items\\\":{\\\"$ref\\\":\\\"#/definitions/ConditionalValueDef<(string|ExprRef)>\\\"},\\\"type\\\":\\\"array\\\"}],\\\"description\\\":\\\"One or more value definition(s) with [a selection or a test predicate](https://vega.github.io/vega-lite/docs/condition.html).\\\\n\\\\n__Note:__ A field definition's `condition` property can only contain [conditional value definitions](https://vega.github.io/vega-lite/docs/condition.html#value) since Vega-Lite only allows at most one encoded field per encoding channel.\\\"},{\\\"anyOf\\\":[{\\\"$ref\\\":\\\"#/definitions/ConditionalMarkPropFieldOrDatumDef\\\"},{\\\"$ref\\\":\\\"#/definitions/ConditionalValueDef<(string|null|ExprRef)>\\\"},{\\\"items\\\":{\\\"$ref\\\":\\\"#/definitions/ConditionalValueDef<(string|null|ExprRef)>\\\"},\\\"type\\\":\\\"array\\\"}],\\\"description\\\":\\\"A field definition or one or more value definition(s) with a selection predicate.\\\"}],\\\"description\\\":\\\"One or more value definition(s) with [a selection or a test predicate](https://vega.github.io/vega-lite/docs/condition.html).\\\\n\\\\n__Note:__ A field definition's `condition` property can only contain [conditional value definitions](https://vega.github.io/vega-lite/docs/condition.html#value) since Vega-Lite only allows at most one encoded field per encoding channel.\\\"},\\\"field\\\":{\\\"$ref\\\":\\\"#/definitions/Field\\\",\\\"description\\\":\\\"__Required.__ A string defining the name of the field from which to pull a data value or an object defining iterated values from the [`repeat`](https://vega.github.io/vega-lite/docs/repeat.html) operator.\\\\n\\\\n__See also:__ [`field`](https://vega.github.io/vega-lite/docs/field.html) documentation.\\\\n\\\\n__Notes:__ 1)  Dots (`.`) and brackets (`[` and `]`) can be used to access nested objects (e.g., `\\\\\\\"field\\\\\\\": \\\\\\\"foo.bar\\\\\\\"` and `\\\\\\\"field\\\\\\\": \\\\\\\"foo['bar']\\\\\\\"`). If field names contain dots or brackets but are not nested, you can use `\\\\\\\\\\\\\\\\` to escape dots and brackets (e.g., `\\\\\\\"a\\\\\\\\\\\\\\\\.b\\\\\\\"` and `\\\\\\\"a\\\\\\\\\\\\\\\\[0\\\\\\\\\\\\\\\\]\\\\\\\"`). See more details about escaping in the [field documentation](https://vega.github.io/vega-lite/docs/field.html). 2) `field` is not required if `aggregate` is `count`.\\\"},\\\"format\\\":{\\\"anyOf\\\":[{\\\"type\\\":\\\"string\\\"},{\\\"$ref\\\":\\\"#/definitions/Dict<unknown>\\\"}],\\\"description\\\":\\\"When used with the default `\\\\\\\"number\\\\\\\"` and `\\\\\\\"time\\\\\\\"` format type, the text formatting pattern for labels of guides (axes, legends, headers) and text marks.\\\\n\\\\n- If the format type is `\\\\\\\"number\\\\\\\"` (e.g., for quantitative fields), this is D3's [number format pattern](https://github.com/d3/d3-format#locale_format). - If the format type is `\\\\\\\"time\\\\\\\"` (e.g., for temporal fields), this is D3's [time format pattern](https://github.com/d3/d3-time-format#locale_format).\\\\n\\\\nSee the [format documentation](https://vega.github.io/vega-lite/docs/format.html) for more examples.\\\\n\\\\nWhen used with a [custom `formatType`](https://vega.github.io/vega-lite/docs/config.html#custom-format-type), this value will be passed as `format` alongside `datum.value` to the registered function.\\\\n\\\\n__Default value:__  Derived from [numberFormat](https://vega.github.io/vega-lite/docs/config.html#format) config for number format and from [timeFormat](https://vega.github.io/vega-lite/docs/config.html#format) config for time format.\\\"},\\\"formatType\\\":{\\\"description\\\":\\\"The format type for labels. One of `\\\\\\\"number\\\\\\\"`, `\\\\\\\"time\\\\\\\"`, or a [registered custom format type](https://vega.github.io/vega-lite/docs/config.html#custom-format-type).\\\\n\\\\n__Default value:__ - `\\\\\\\"time\\\\\\\"` for temporal fields and ordinal and nominal fields with `timeUnit`. - `\\\\\\\"number\\\\\\\"` for quantitative fields as well as ordinal and nominal fields without `timeUnit`.\\\",\\\"type\\\":\\\"string\\\"},\\\"labelExpr\\\":{\\\"description\\\":\\\"[Vega expression](https://vega.github.io/vega/docs/expressions/) for customizing labels text.\\\\n\\\\n__Note:__ The label text and value can be assessed via the `label` and `value` properties of the axis's backing `datum` object.\\\",\\\"type\\\":\\\"string\\\"},\\\"timeUnit\\\":{\\\"anyOf\\\":[{\\\"$ref\\\":\\\"#/definitions/TimeUnit\\\"},{\\\"$ref\\\":\\\"#/definitions/TimeUnitParams\\\"}],\\\"description\\\":\\\"Time unit (e.g., `year`, `yearmonth`, `month`, `hours`) for a temporal field. or [a temporal field that gets casted as ordinal](https://vega.github.io/vega-lite/docs/type.html#cast).\\\\n\\\\n__Default value:__ `undefined` (None)\\\\n\\\\n__See also:__ [`timeUnit`](https://vega.github.io/vega-lite/docs/timeunit.html) documentation.\\\"},\\\"title\\\":{\\\"anyOf\\\":[{\\\"$ref\\\":\\\"#/definitions/Text\\\"},{\\\"type\\\":\\\"null\\\"}],\\\"description\\\":\\\"A title for the field. If `null`, the title will be removed.\\\\n\\\\n__Default value:__  derived from the field's name and transformation function (`aggregate`, `bin` and `timeUnit`). If the field has an aggregate function, the function is displayed as part of the title (e.g., `\\\\\\\"Sum of Profit\\\\\\\"`). If the field is binned or has a time unit applied, the applied function is shown in parentheses (e.g., `\\\\\\\"Profit (binned)\\\\\\\"`, `\\\\\\\"Transaction Date (year-month)\\\\\\\"`). Otherwise, the title is simply the field name.\\\\n\\\\n__Notes__:\\\\n\\\\n1) You can customize the default field title format by providing the [`fieldTitle`](https://vega.github.io/vega-lite/docs/config.html#top-level-config) property in the [config](https://vega.github.io/vega-lite/docs/config.html) or [`fieldTitle` function via the `compile` function's options](https://vega.github.io/vega-lite/docs/compile.html#field-title).\\\\n\\\\n2) If both field definition's `title` and axis, header, or legend `title` are defined, axis/header/legend title will be used.\\\"},\\\"type\\\":{\\\"$ref\\\":\\\"#/definitions/StandardType\\\",\\\"description\\\":\\\"The type of measurement (`\\\\\\\"quantitative\\\\\\\"`, `\\\\\\\"temporal\\\\\\\"`, `\\\\\\\"ordinal\\\\\\\"`, or `\\\\\\\"nominal\\\\\\\"`) for the encoded field or constant value (`datum`). It can also be a `\\\\\\\"geojson\\\\\\\"` type for encoding ['geoshape'](https://vega.github.io/vega-lite/docs/geoshape.html).\\\\n\\\\nVega-Lite automatically infers data types in many cases as discussed below. However, type is required for a field if: (1) the field is not nominal and the field encoding has no specified `aggregate` (except `argmin` and `argmax`), `bin`, scale type, custom `sort` order, nor `timeUnit` or (2) if you wish to use an ordinal scale for a field with `bin` or `timeUnit`.\\\\n\\\\n__Default value:__\\\\n\\\\n1) For a data `field`, `\\\\\\\"nominal\\\\\\\"` is the default data type unless the field encoding has `aggregate`, `channel`, `bin`, scale type, `sort`, or `timeUnit` that satisfies the following criteria: - `\\\\\\\"quantitative\\\\\\\"` is the default type if (1) the encoded field contains `bin` or `aggregate` except `\\\\\\\"argmin\\\\\\\"` and `\\\\\\\"argmax\\\\\\\"`, (2) the encoding channel is `latitude` or `longitude` channel or (3) if the specified scale type is [a quantitative scale](https://vega.github.io/vega-lite/docs/scale.html#type). - `\\\\\\\"temporal\\\\\\\"` is the default type if (1) the encoded field contains `timeUnit` or (2) the specified scale type is a time or utc scale - `ordinal\\\\\\\"\\\\\\\"` is the default type if (1) the encoded field contains a [custom `sort` order](https://vega.github.io/vega-lite/docs/sort.html#specifying-custom-sort-order), (2) the specified scale type is an ordinal/point/band scale, or (3) the encoding channel is `order`.\\\\n\\\\n2) For a constant value in data domain (`datum`): - `\\\\\\\"quantitative\\\\\\\"` if the datum is a number - `\\\\\\\"nominal\\\\\\\"` if the datum is a string - `\\\\\\\"temporal\\\\\\\"` if the datum is [a date time object](https://vega.github.io/vega-lite/docs/datetime.html)\\\\n\\\\n__Note:__ - Data `type` describes the semantics of the data rather than the primitive data types (number, string, etc.). The same primitive data type can have different types of measurement. For example, numeric data can represent quantitative, ordinal, or nominal data. - Data values for a temporal field can be either a date-time string (e.g., `\\\\\\\"2015-03-07 12:32:17\\\\\\\"`, `\\\\\\\"17:01\\\\\\\"`, `\\\\\\\"2015-03-16\\\\\\\"`. `\\\\\\\"2015\\\\\\\"`) or a timestamp number (e.g., `1552199579097`). - When using with [`bin`](https://vega.github.io/vega-lite/docs/bin.html), the `type` property can be either `\\\\\\\"quantitative\\\\\\\"` (for using a linear bin scale) or [`\\\\\\\"ordinal\\\\\\\"` (for using an ordinal bin scale)](https://vega.github.io/vega-lite/docs/type.html#cast-bin). - When using with [`timeUnit`](https://vega.github.io/vega-lite/docs/timeunit.html), the `type` property can be either `\\\\\\\"temporal\\\\\\\"` (default, for using a temporal scale) or [`\\\\\\\"ordinal\\\\\\\"` (for using an ordinal scale)](https://vega.github.io/vega-lite/docs/type.html#cast-bin). - When using with [`aggregate`](https://vega.github.io/vega-lite/docs/aggregate.html), the `type` property refers to the post-aggregation data type. For example, we can calculate count `distinct` of a categorical field `\\\\\\\"cat\\\\\\\"` using `{\\\\\\\"aggregate\\\\\\\": \\\\\\\"distinct\\\\\\\", \\\\\\\"field\\\\\\\": \\\\\\\"cat\\\\\\\"}`. The `\\\\\\\"type\\\\\\\"` of the aggregate output is `\\\\\\\"quantitative\\\\\\\"`. - Secondary channels (e.g., `x2`, `y2`, `xError`, `yError`) do not have `type` as they must have exactly the same type as their primary channels (e.g., `x`, `y`).\\\\n\\\\n__See also:__ [`type`](https://vega.github.io/vega-lite/docs/type.html) documentation.\\\"},\\\"value\\\":{\\\"anyOf\\\":[{\\\"type\\\":\\\"string\\\"},{\\\"type\\\":\\\"null\\\"},{\\\"$ref\\\":\\\"#/definitions/ExprRef\\\"}],\\\"description\\\":\\\"A constant value in visual domain (e.g., `\\\\\\\"red\\\\\\\"` / `\\\\\\\"#0099ff\\\\\\\"` / [gradient definition](https://vega.github.io/vega-lite/docs/types.html#gradient) for color, values between `0` to `1` for opacity).\\\"}},\\\"type\\\":\\\"object\\\"},\\\"detail\\\":{\\\"anyOf\\\":[{\\\"$ref\\\":\\\"#/definitions/FieldDefWithoutScale\\\"},{\\\"items\\\":{\\\"$ref\\\":\\\"#/definitions/FieldDefWithoutScale\\\"},\\\"type\\\":\\\"array\\\"}],\\\"description\\\":\\\"Additional levels of detail for grouping data in aggregate views and in line, trail, and area marks without mapping data to a specific visual channel.\\\"},\\\"fill\\\":{\\\"additionalProperties\\\":false,\\\"properties\\\":{\\\"aggregate\\\":{\\\"$ref\\\":\\\"#/definitions/Aggregate\\\",\\\"description\\\":\\\"Aggregation function for the field (e.g., `\\\\\\\"mean\\\\\\\"`, `\\\\\\\"sum\\\\\\\"`, `\\\\\\\"median\\\\\\\"`, `\\\\\\\"min\\\\\\\"`, `\\\\\\\"max\\\\\\\"`, `\\\\\\\"count\\\\\\\"`).\\\\n\\\\n__Default value:__ `undefined` (None)\\\\n\\\\n__See also:__ [`aggregate`](https://vega.github.io/vega-lite/docs/aggregate.html) documentation.\\\"},\\\"band\\\":{\\\"description\\\":\\\"For rect-based marks (`rect`, `bar`, and `image`), mark size relative to bandwidth of [band scales](https://vega.github.io/vega-lite/docs/scale.html#band), bins or time units. If set to `1`, the mark size is set to the bandwidth, the bin interval, or the time unit interval. If set to `0.5`, the mark size is half of the bandwidth or the time unit interval.\\\\n\\\\nFor other marks, relative position on a band of a stacked, binned, time unit or band scale. If set to `0`, the marks will be positioned at the beginning of the band. If set to `0.5`, the marks will be positioned in the middle of the band.\\\",\\\"maximum\\\":1,\\\"minimum\\\":0,\\\"type\\\":\\\"number\\\"},\\\"bin\\\":{\\\"anyOf\\\":[{\\\"type\\\":\\\"boolean\\\"},{\\\"$ref\\\":\\\"#/definitions/BinParams\\\"},{\\\"type\\\":\\\"null\\\"}],\\\"description\\\":\\\"A flag for binning a `quantitative` field, [an object defining binning parameters](https://vega.github.io/vega-lite/docs/bin.html#params), or indicating that the data for `x` or `y` channel are binned before they are imported into Vega-Lite (`\\\\\\\"binned\\\\\\\"`).\\\\n\\\\n- If `true`, default [binning parameters](https://vega.github.io/vega-lite/docs/bin.html) will be applied.\\\\n\\\\n- If `\\\\\\\"binned\\\\\\\"`, this indicates that the data for the `x` (or `y`) channel are already binned. You can map the bin-start field to `x` (or `y`) and the bin-end field to `x2` (or `y2`). The scale and axis will be formatted similar to binning in Vega-Lite.  To adjust the axis ticks based on the bin step, you can also set the axis's [`tickMinStep`](https://vega.github.io/vega-lite/docs/axis.html#ticks) property.\\\\n\\\\n__Default value:__ `false`\\\\n\\\\n__See also:__ [`bin`](https://vega.github.io/vega-lite/docs/bin.html) documentation.\\\"},\\\"condition\\\":{\\\"anyOf\\\":[{\\\"anyOf\\\":[{\\\"$ref\\\":\\\"#/definitions/ConditionalValueDef<(Gradient|string|null|ExprRef)>\\\"},{\\\"items\\\":{\\\"$ref\\\":\\\"#/definitions/ConditionalValueDef<(Gradient|string|null|ExprRef)>\\\"},\\\"type\\\":\\\"array\\\"}],\\\"description\\\":\\\"One or more value definition(s) with [a selection or a test predicate](https://vega.github.io/vega-lite/docs/condition.html).\\\\n\\\\n__Note:__ A field definition's `condition` property can only contain [conditional value definitions](https://vega.github.io/vega-lite/docs/condition.html#value) since Vega-Lite only allows at most one encoded field per encoding channel.\\\"},{\\\"anyOf\\\":[{\\\"$ref\\\":\\\"#/definitions/ConditionalMarkPropFieldOrDatumDef\\\"},{\\\"$ref\\\":\\\"#/definitions/ConditionalValueDef<(Gradient|string|null|ExprRef)>\\\"},{\\\"items\\\":{\\\"$ref\\\":\\\"#/definitions/ConditionalValueDef<(Gradient|string|null|ExprRef)>\\\"},\\\"type\\\":\\\"array\\\"}],\\\"description\\\":\\\"A field definition or one or more value definition(s) with a selection predicate.\\\"}],\\\"description\\\":\\\"One or more value definition(s) with [a selection or a test predicate](https://vega.github.io/vega-lite/docs/condition.html).\\\\n\\\\n__Note:__ A field definition's `condition` property can only contain [conditional value definitions](https://vega.github.io/vega-lite/docs/condition.html#value) since Vega-Lite only allows at most one encoded field per encoding channel.\\\"},\\\"datum\\\":{\\\"anyOf\\\":[{\\\"$ref\\\":\\\"#/definitions/PrimitiveValue\\\"},{\\\"$ref\\\":\\\"#/definitions/DateTime\\\"},{\\\"$ref\\\":\\\"#/definitions/ExprRef\\\"},{\\\"$ref\\\":\\\"#/definitions/RepeatRef\\\"}],\\\"description\\\":\\\"A constant value in data domain.\\\"},\\\"field\\\":{\\\"$ref\\\":\\\"#/definitions/Field\\\",\\\"description\\\":\\\"__Required.__ A string defining the name of the field from which to pull a data value or an object defining iterated values from the [`repeat`](https://vega.github.io/vega-lite/docs/repeat.html) operator.\\\\n\\\\n__See also:__ [`field`](https://vega.github.io/vega-lite/docs/field.html) documentation.\\\\n\\\\n__Notes:__ 1)  Dots (`.`) and brackets (`[` and `]`) can be used to access nested objects (e.g., `\\\\\\\"field\\\\\\\": \\\\\\\"foo.bar\\\\\\\"` and `\\\\\\\"field\\\\\\\": \\\\\\\"foo['bar']\\\\\\\"`). If field names contain dots or brackets but are not nested, you can use `\\\\\\\\\\\\\\\\` to escape dots and brackets (e.g., `\\\\\\\"a\\\\\\\\\\\\\\\\.b\\\\\\\"` and `\\\\\\\"a\\\\\\\\\\\\\\\\[0\\\\\\\\\\\\\\\\]\\\\\\\"`). See more details about escaping in the [field documentation](https://vega.github.io/vega-lite/docs/field.html). 2) `field` is not required if `aggregate` is `count`.\\\"},\\\"legend\\\":{\\\"anyOf\\\":[{\\\"$ref\\\":\\\"#/definitions/Legend\\\"},{\\\"type\\\":\\\"null\\\"}],\\\"description\\\":\\\"An object defining properties of the legend. If `null`, the legend for the encoding channel will be removed.\\\\n\\\\n__Default value:__ If undefined, default [legend properties](https://vega.github.io/vega-lite/docs/legend.html) are applied.\\\\n\\\\n__See also:__ [`legend`](https://vega.github.io/vega-lite/docs/legend.html) documentation.\\\"},\\\"scale\\\":{\\\"anyOf\\\":[{\\\"$ref\\\":\\\"#/definitions/Scale\\\"},{\\\"type\\\":\\\"null\\\"}],\\\"description\\\":\\\"An object defining properties of the channel's scale, which is the function that transforms values in the data domain (numbers, dates, strings, etc) to visual values (pixels, colors, sizes) of the encoding channels.\\\\n\\\\nIf `null`, the scale will be [disabled and the data value will be directly encoded](https://vega.github.io/vega-lite/docs/scale.html#disable).\\\\n\\\\n__Default value:__ If undefined, default [scale properties](https://vega.github.io/vega-lite/docs/scale.html) are applied.\\\\n\\\\n__See also:__ [`scale`](https://vega.github.io/vega-lite/docs/scale.html) documentation.\\\"},\\\"sort\\\":{\\\"$ref\\\":\\\"#/definitions/Sort\\\",\\\"description\\\":\\\"Sort order for the encoded field.\\\\n\\\\nFor continuous fields (quantitative or temporal), `sort` can be either `\\\\\\\"ascending\\\\\\\"` or `\\\\\\\"descending\\\\\\\"`.\\\\n\\\\nFor discrete fields, `sort` can be one of the following: - `\\\\\\\"ascending\\\\\\\"` or `\\\\\\\"descending\\\\\\\"` -- for sorting by the values' natural order in JavaScript. - [A string indicating an encoding channel name to sort by](https://vega.github.io/vega-lite/docs/sort.html#sort-by-encoding) (e.g., `\\\\\\\"x\\\\\\\"` or `\\\\\\\"y\\\\\\\"`) with an optional minus prefix for descending sort (e.g., `\\\\\\\"-x\\\\\\\"` to sort by x-field, descending). This channel string is short-form of [a sort-by-encoding definition](https://vega.github.io/vega-lite/docs/sort.html#sort-by-encoding). For example, `\\\\\\\"sort\\\\\\\": \\\\\\\"-x\\\\\\\"` is equivalent to `\\\\\\\"sort\\\\\\\": {\\\\\\\"encoding\\\\\\\": \\\\\\\"x\\\\\\\", \\\\\\\"order\\\\\\\": \\\\\\\"descending\\\\\\\"}`. - [A sort field definition](https://vega.github.io/vega-lite/docs/sort.html#sort-field) for sorting by another field. - [An array specifying the field values in preferred order](https://vega.github.io/vega-lite/docs/sort.html#sort-array). In this case, the sort order will obey the values in the array, followed by any unspecified values in their original order. For discrete time field, values in the sort array can be [date-time definition objects](types#datetime). In addition, for time units `\\\\\\\"month\\\\\\\"` and `\\\\\\\"day\\\\\\\"`, the values can be the month or day names (case insensitive) or their 3-letter initials (e.g., `\\\\\\\"Mon\\\\\\\"`, `\\\\\\\"Tue\\\\\\\"`). - `null` indicating no sort.\\\\n\\\\n__Default value:__ `\\\\\\\"ascending\\\\\\\"`\\\\n\\\\n__Note:__ `null` and sorting by another channel is not supported for `row` and `column`.\\\\n\\\\n__See also:__ [`sort`](https://vega.github.io/vega-lite/docs/sort.html) documentation.\\\"},\\\"timeUnit\\\":{\\\"anyOf\\\":[{\\\"$ref\\\":\\\"#/definitions/TimeUnit\\\"},{\\\"$ref\\\":\\\"#/definitions/TimeUnitParams\\\"}],\\\"description\\\":\\\"Time unit (e.g., `year`, `yearmonth`, `month`, `hours`) for a temporal field. or [a temporal field that gets casted as ordinal](https://vega.github.io/vega-lite/docs/type.html#cast).\\\\n\\\\n__Default value:__ `undefined` (None)\\\\n\\\\n__See also:__ [`timeUnit`](https://vega.github.io/vega-lite/docs/timeunit.html) documentation.\\\"},\\\"title\\\":{\\\"anyOf\\\":[{\\\"$ref\\\":\\\"#/definitions/Text\\\"},{\\\"type\\\":\\\"null\\\"}],\\\"description\\\":\\\"A title for the field. If `null`, the title will be removed.\\\\n\\\\n__Default value:__  derived from the field's name and transformation function (`aggregate`, `bin` and `timeUnit`). If the field has an aggregate function, the function is displayed as part of the title (e.g., `\\\\\\\"Sum of Profit\\\\\\\"`). If the field is binned or has a time unit applied, the applied function is shown in parentheses (e.g., `\\\\\\\"Profit (binned)\\\\\\\"`, `\\\\\\\"Transaction Date (year-month)\\\\\\\"`). Otherwise, the title is simply the field name.\\\\n\\\\n__Notes__:\\\\n\\\\n1) You can customize the default field title format by providing the [`fieldTitle`](https://vega.github.io/vega-lite/docs/config.html#top-level-config) property in the [config](https://vega.github.io/vega-lite/docs/config.html) or [`fieldTitle` function via the `compile` function's options](https://vega.github.io/vega-lite/docs/compile.html#field-title).\\\\n\\\\n2) If both field definition's `title` and axis, header, or legend `title` are defined, axis/header/legend title will be used.\\\"},\\\"type\\\":{\\\"anyOf\\\":[{\\\"$ref\\\":\\\"#/definitions/StandardType\\\",\\\"description\\\":\\\"The type of measurement (`\\\\\\\"quantitative\\\\\\\"`, `\\\\\\\"temporal\\\\\\\"`, `\\\\\\\"ordinal\\\\\\\"`, or `\\\\\\\"nominal\\\\\\\"`) for the encoded field or constant value (`datum`). It can also be a `\\\\\\\"geojson\\\\\\\"` type for encoding ['geoshape'](https://vega.github.io/vega-lite/docs/geoshape.html).\\\\n\\\\nVega-Lite automatically infers data types in many cases as discussed below. However, type is required for a field if: (1) the field is not nominal and the field encoding has no specified `aggregate` (except `argmin` and `argmax`), `bin`, scale type, custom `sort` order, nor `timeUnit` or (2) if you wish to use an ordinal scale for a field with `bin` or `timeUnit`.\\\\n\\\\n__Default value:__\\\\n\\\\n1) For a data `field`, `\\\\\\\"nominal\\\\\\\"` is the default data type unless the field encoding has `aggregate`, `channel`, `bin`, scale type, `sort`, or `timeUnit` that satisfies the following criteria: - `\\\\\\\"quantitative\\\\\\\"` is the default type if (1) the encoded field contains `bin` or `aggregate` except `\\\\\\\"argmin\\\\\\\"` and `\\\\\\\"argmax\\\\\\\"`, (2) the encoding channel is `latitude` or `longitude` channel or (3) if the specified scale type is [a quantitative scale](https://vega.github.io/vega-lite/docs/scale.html#type). - `\\\\\\\"temporal\\\\\\\"` is the default type if (1) the encoded field contains `timeUnit` or (2) the specified scale type is a time or utc scale - `ordinal\\\\\\\"\\\\\\\"` is the default type if (1) the encoded field contains a [custom `sort` order](https://vega.github.io/vega-lite/docs/sort.html#specifying-custom-sort-order), (2) the specified scale type is an ordinal/point/band scale, or (3) the encoding channel is `order`.\\\\n\\\\n2) For a constant value in data domain (`datum`): - `\\\\\\\"quantitative\\\\\\\"` if the datum is a number - `\\\\\\\"nominal\\\\\\\"` if the datum is a string - `\\\\\\\"temporal\\\\\\\"` if the datum is [a date time object](https://vega.github.io/vega-lite/docs/datetime.html)\\\\n\\\\n__Note:__ - Data `type` describes the semantics of the data rather than the primitive data types (number, string, etc.). The same primitive data type can have different types of measurement. For example, numeric data can represent quantitative, ordinal, or nominal data. - Data values for a temporal field can be either a date-time string (e.g., `\\\\\\\"2015-03-07 12:32:17\\\\\\\"`, `\\\\\\\"17:01\\\\\\\"`, `\\\\\\\"2015-03-16\\\\\\\"`. `\\\\\\\"2015\\\\\\\"`) or a timestamp number (e.g., `1552199579097`). - When using with [`bin`](https://vega.github.io/vega-lite/docs/bin.html), the `type` property can be either `\\\\\\\"quantitative\\\\\\\"` (for using a linear bin scale) or [`\\\\\\\"ordinal\\\\\\\"` (for using an ordinal bin scale)](https://vega.github.io/vega-lite/docs/type.html#cast-bin). - When using with [`timeUnit`](https://vega.github.io/vega-lite/docs/timeunit.html), the `type` property can be either `\\\\\\\"temporal\\\\\\\"` (default, for using a temporal scale) or [`\\\\\\\"ordinal\\\\\\\"` (for using an ordinal scale)](https://vega.github.io/vega-lite/docs/type.html#cast-bin). - When using with [`aggregate`](https://vega.github.io/vega-lite/docs/aggregate.html), the `type` property refers to the post-aggregation data type. For example, we can calculate count `distinct` of a categorical field `\\\\\\\"cat\\\\\\\"` using `{\\\\\\\"aggregate\\\\\\\": \\\\\\\"distinct\\\\\\\", \\\\\\\"field\\\\\\\": \\\\\\\"cat\\\\\\\"}`. The `\\\\\\\"type\\\\\\\"` of the aggregate output is `\\\\\\\"quantitative\\\\\\\"`. - Secondary channels (e.g., `x2`, `y2`, `xError`, `yError`) do not have `type` as they must have exactly the same type as their primary channels (e.g., `x`, `y`).\\\\n\\\\n__See also:__ [`type`](https://vega.github.io/vega-lite/docs/type.html) documentation.\\\"},{\\\"$ref\\\":\\\"#/definitions/Type\\\",\\\"description\\\":\\\"The type of measurement (`\\\\\\\"quantitative\\\\\\\"`, `\\\\\\\"temporal\\\\\\\"`, `\\\\\\\"ordinal\\\\\\\"`, or `\\\\\\\"nominal\\\\\\\"`) for the encoded field or constant value (`datum`). It can also be a `\\\\\\\"geojson\\\\\\\"` type for encoding ['geoshape'](https://vega.github.io/vega-lite/docs/geoshape.html).\\\\n\\\\nVega-Lite automatically infers data types in many cases as discussed below. However, type is required for a field if: (1) the field is not nominal and the field encoding has no specified `aggregate` (except `argmin` and `argmax`), `bin`, scale type, custom `sort` order, nor `timeUnit` or (2) if you wish to use an ordinal scale for a field with `bin` or `timeUnit`.\\\\n\\\\n__Default value:__\\\\n\\\\n1) For a data `field`, `\\\\\\\"nominal\\\\\\\"` is the default data type unless the field encoding has `aggregate`, `channel`, `bin`, scale type, `sort`, or `timeUnit` that satisfies the following criteria: - `\\\\\\\"quantitative\\\\\\\"` is the default type if (1) the encoded field contains `bin` or `aggregate` except `\\\\\\\"argmin\\\\\\\"` and `\\\\\\\"argmax\\\\\\\"`, (2) the encoding channel is `latitude` or `longitude` channel or (3) if the specified scale type is [a quantitative scale](https://vega.github.io/vega-lite/docs/scale.html#type). - `\\\\\\\"temporal\\\\\\\"` is the default type if (1) the encoded field contains `timeUnit` or (2) the specified scale type is a time or utc scale - `ordinal\\\\\\\"\\\\\\\"` is the default type if (1) the encoded field contains a [custom `sort` order](https://vega.github.io/vega-lite/docs/sort.html#specifying-custom-sort-order), (2) the specified scale type is an ordinal/point/band scale, or (3) the encoding channel is `order`.\\\\n\\\\n2) For a constant value in data domain (`datum`): - `\\\\\\\"quantitative\\\\\\\"` if the datum is a number - `\\\\\\\"nominal\\\\\\\"` if the datum is a string - `\\\\\\\"temporal\\\\\\\"` if the datum is [a date time object](https://vega.github.io/vega-lite/docs/datetime.html)\\\\n\\\\n__Note:__ - Data `type` describes the semantics of the data rather than the primitive data types (number, string, etc.). The same primitive data type can have different types of measurement. For example, numeric data can represent quantitative, ordinal, or nominal data. - Data values for a temporal field can be either a date-time string (e.g., `\\\\\\\"2015-03-07 12:32:17\\\\\\\"`, `\\\\\\\"17:01\\\\\\\"`, `\\\\\\\"2015-03-16\\\\\\\"`. `\\\\\\\"2015\\\\\\\"`) or a timestamp number (e.g., `1552199579097`). - When using with [`bin`](https://vega.github.io/vega-lite/docs/bin.html), the `type` property can be either `\\\\\\\"quantitative\\\\\\\"` (for using a linear bin scale) or [`\\\\\\\"ordinal\\\\\\\"` (for using an ordinal bin scale)](https://vega.github.io/vega-lite/docs/type.html#cast-bin). - When using with [`timeUnit`](https://vega.github.io/vega-lite/docs/timeunit.html), the `type` property can be either `\\\\\\\"temporal\\\\\\\"` (default, for using a temporal scale) or [`\\\\\\\"ordinal\\\\\\\"` (for using an ordinal scale)](https://vega.github.io/vega-lite/docs/type.html#cast-bin). - When using with [`aggregate`](https://vega.github.io/vega-lite/docs/aggregate.html), the `type` property refers to the post-aggregation data type. For example, we can calculate count `distinct` of a categorical field `\\\\\\\"cat\\\\\\\"` using `{\\\\\\\"aggregate\\\\\\\": \\\\\\\"distinct\\\\\\\", \\\\\\\"field\\\\\\\": \\\\\\\"cat\\\\\\\"}`. The `\\\\\\\"type\\\\\\\"` of the aggregate output is `\\\\\\\"quantitative\\\\\\\"`. - Secondary channels (e.g., `x2`, `y2`, `xError`, `yError`) do not have `type` as they must have exactly the same type as their primary channels (e.g., `x`, `y`).\\\\n\\\\n__See also:__ [`type`](https://vega.github.io/vega-lite/docs/type.html) documentation.\\\"}],\\\"description\\\":\\\"The type of measurement (`\\\\\\\"quantitative\\\\\\\"`, `\\\\\\\"temporal\\\\\\\"`, `\\\\\\\"ordinal\\\\\\\"`, or `\\\\\\\"nominal\\\\\\\"`) for the encoded field or constant value (`datum`). It can also be a `\\\\\\\"geojson\\\\\\\"` type for encoding ['geoshape'](https://vega.github.io/vega-lite/docs/geoshape.html).\\\\n\\\\nVega-Lite automatically infers data types in many cases as discussed below. However, type is required for a field if: (1) the field is not nominal and the field encoding has no specified `aggregate` (except `argmin` and `argmax`), `bin`, scale type, custom `sort` order, nor `timeUnit` or (2) if you wish to use an ordinal scale for a field with `bin` or `timeUnit`.\\\\n\\\\n__Default value:__\\\\n\\\\n1) For a data `field`, `\\\\\\\"nominal\\\\\\\"` is the default data type unless the field encoding has `aggregate`, `channel`, `bin`, scale type, `sort`, or `timeUnit` that satisfies the following criteria: - `\\\\\\\"quantitative\\\\\\\"` is the default type if (1) the encoded field contains `bin` or `aggregate` except `\\\\\\\"argmin\\\\\\\"` and `\\\\\\\"argmax\\\\\\\"`, (2) the encoding channel is `latitude` or `longitude` channel or (3) if the specified scale type is [a quantitative scale](https://vega.github.io/vega-lite/docs/scale.html#type). - `\\\\\\\"temporal\\\\\\\"` is the default type if (1) the encoded field contains `timeUnit` or (2) the specified scale type is a time or utc scale - `ordinal\\\\\\\"\\\\\\\"` is the default type if (1) the encoded field contains a [custom `sort` order](https://vega.github.io/vega-lite/docs/sort.html#specifying-custom-sort-order), (2) the specified scale type is an ordinal/point/band scale, or (3) the encoding channel is `order`.\\\\n\\\\n2) For a constant value in data domain (`datum`): - `\\\\\\\"quantitative\\\\\\\"` if the datum is a number - `\\\\\\\"nominal\\\\\\\"` if the datum is a string - `\\\\\\\"temporal\\\\\\\"` if the datum is [a date time object](https://vega.github.io/vega-lite/docs/datetime.html)\\\\n\\\\n__Note:__ - Data `type` describes the semantics of the data rather than the primitive data types (number, string, etc.). The same primitive data type can have different types of measurement. For example, numeric data can represent quantitative, ordinal, or nominal data. - Data values for a temporal field can be either a date-time string (e.g., `\\\\\\\"2015-03-07 12:32:17\\\\\\\"`, `\\\\\\\"17:01\\\\\\\"`, `\\\\\\\"2015-03-16\\\\\\\"`. `\\\\\\\"2015\\\\\\\"`) or a timestamp number (e.g., `1552199579097`). - When using with [`bin`](https://vega.github.io/vega-lite/docs/bin.html), the `type` property can be either `\\\\\\\"quantitative\\\\\\\"` (for using a linear bin scale) or [`\\\\\\\"ordinal\\\\\\\"` (for using an ordinal bin scale)](https://vega.github.io/vega-lite/docs/type.html#cast-bin). - When using with [`timeUnit`](https://vega.github.io/vega-lite/docs/timeunit.html), the `type` property can be either `\\\\\\\"temporal\\\\\\\"` (default, for using a temporal scale) or [`\\\\\\\"ordinal\\\\\\\"` (for using an ordinal scale)](https://vega.github.io/vega-lite/docs/type.html#cast-bin). - When using with [`aggregate`](https://vega.github.io/vega-lite/docs/aggregate.html), the `type` property refers to the post-aggregation data type. For example, we can calculate count `distinct` of a categorical field `\\\\\\\"cat\\\\\\\"` using `{\\\\\\\"aggregate\\\\\\\": \\\\\\\"distinct\\\\\\\", \\\\\\\"field\\\\\\\": \\\\\\\"cat\\\\\\\"}`. The `\\\\\\\"type\\\\\\\"` of the aggregate output is `\\\\\\\"quantitative\\\\\\\"`. - Secondary channels (e.g., `x2`, `y2`, `xError`, `yError`) do not have `type` as they must have exactly the same type as their primary channels (e.g., `x`, `y`).\\\\n\\\\n__See also:__ [`type`](https://vega.github.io/vega-lite/docs/type.html) documentation.\\\"},\\\"value\\\":{\\\"anyOf\\\":[{\\\"$ref\\\":\\\"#/definitions/Gradient\\\"},{\\\"type\\\":\\\"string\\\"},{\\\"type\\\":\\\"null\\\"},{\\\"$ref\\\":\\\"#/definitions/ExprRef\\\"}],\\\"description\\\":\\\"A constant value in visual domain (e.g., `\\\\\\\"red\\\\\\\"` / `\\\\\\\"#0099ff\\\\\\\"` / [gradient definition](https://vega.github.io/vega-lite/docs/types.html#gradient) for color, values between `0` to `1` for opacity).\\\"}},\\\"type\\\":\\\"object\\\"},\\\"fillOpacity\\\":{\\\"additionalProperties\\\":false,\\\"properties\\\":{\\\"aggregate\\\":{\\\"$ref\\\":\\\"#/definitions/Aggregate\\\",\\\"description\\\":\\\"Aggregation function for the field (e.g., `\\\\\\\"mean\\\\\\\"`, `\\\\\\\"sum\\\\\\\"`, `\\\\\\\"median\\\\\\\"`, `\\\\\\\"min\\\\\\\"`, `\\\\\\\"max\\\\\\\"`, `\\\\\\\"count\\\\\\\"`).\\\\n\\\\n__Default value:__ `undefined` (None)\\\\n\\\\n__See also:__ [`aggregate`](https://vega.github.io/vega-lite/docs/aggregate.html) documentation.\\\"},\\\"band\\\":{\\\"description\\\":\\\"For rect-based marks (`rect`, `bar`, and `image`), mark size relative to bandwidth of [band scales](https://vega.github.io/vega-lite/docs/scale.html#band), bins or time units. If set to `1`, the mark size is set to the bandwidth, the bin interval, or the time unit interval. If set to `0.5`, the mark size is half of the bandwidth or the time unit interval.\\\\n\\\\nFor other marks, relative position on a band of a stacked, binned, time unit or band scale. If set to `0`, the marks will be positioned at the beginning of the band. If set to `0.5`, the marks will be positioned in the middle of the band.\\\",\\\"maximum\\\":1,\\\"minimum\\\":0,\\\"type\\\":\\\"number\\\"},\\\"bin\\\":{\\\"anyOf\\\":[{\\\"type\\\":\\\"boolean\\\"},{\\\"$ref\\\":\\\"#/definitions/BinParams\\\"},{\\\"type\\\":\\\"null\\\"}],\\\"description\\\":\\\"A flag for binning a `quantitative` field, [an object defining binning parameters](https://vega.github.io/vega-lite/docs/bin.html#params), or indicating that the data for `x` or `y` channel are binned before they are imported into Vega-Lite (`\\\\\\\"binned\\\\\\\"`).\\\\n\\\\n- If `true`, default [binning parameters](https://vega.github.io/vega-lite/docs/bin.html) will be applied.\\\\n\\\\n- If `\\\\\\\"binned\\\\\\\"`, this indicates that the data for the `x` (or `y`) channel are already binned. You can map the bin-start field to `x` (or `y`) and the bin-end field to `x2` (or `y2`). The scale and axis will be formatted similar to binning in Vega-Lite.  To adjust the axis ticks based on the bin step, you can also set the axis's [`tickMinStep`](https://vega.github.io/vega-lite/docs/axis.html#ticks) property.\\\\n\\\\n__Default value:__ `false`\\\\n\\\\n__See also:__ [`bin`](https://vega.github.io/vega-lite/docs/bin.html) documentation.\\\"},\\\"condition\\\":{\\\"anyOf\\\":[{\\\"anyOf\\\":[{\\\"$ref\\\":\\\"#/definitions/ConditionalValueDef<(number|ExprRef)>\\\"},{\\\"items\\\":{\\\"$ref\\\":\\\"#/definitions/ConditionalValueDef<(number|ExprRef)>\\\"},\\\"type\\\":\\\"array\\\"}],\\\"description\\\":\\\"One or more value definition(s) with [a selection or a test predicate](https://vega.github.io/vega-lite/docs/condition.html).\\\\n\\\\n__Note:__ A field definition's `condition` property can only contain [conditional value definitions](https://vega.github.io/vega-lite/docs/condition.html#value) since Vega-Lite only allows at most one encoded field per encoding channel.\\\"},{\\\"anyOf\\\":[{\\\"$ref\\\":\\\"#/definitions/ConditionalMarkPropFieldOrDatumDef\\\"},{\\\"$ref\\\":\\\"#/definitions/ConditionalValueDef<(number|ExprRef)>\\\"},{\\\"items\\\":{\\\"$ref\\\":\\\"#/definitions/ConditionalValueDef<(number|ExprRef)>\\\"},\\\"type\\\":\\\"array\\\"}],\\\"description\\\":\\\"A field definition or one or more value definition(s) with a selection predicate.\\\"}],\\\"description\\\":\\\"One or more value definition(s) with [a selection or a test predicate](https://vega.github.io/vega-lite/docs/condition.html).\\\\n\\\\n__Note:__ A field definition's `condition` property can only contain [conditional value definitions](https://vega.github.io/vega-lite/docs/condition.html#value) since Vega-Lite only allows at most one encoded field per encoding channel.\\\"},\\\"datum\\\":{\\\"anyOf\\\":[{\\\"$ref\\\":\\\"#/definitions/PrimitiveValue\\\"},{\\\"$ref\\\":\\\"#/definitions/DateTime\\\"},{\\\"$ref\\\":\\\"#/definitions/ExprRef\\\"},{\\\"$ref\\\":\\\"#/definitions/RepeatRef\\\"}],\\\"description\\\":\\\"A constant value in data domain.\\\"},\\\"field\\\":{\\\"$ref\\\":\\\"#/definitions/Field\\\",\\\"description\\\":\\\"__Required.__ A string defining the name of the field from which to pull a data value or an object defining iterated values from the [`repeat`](https://vega.github.io/vega-lite/docs/repeat.html) operator.\\\\n\\\\n__See also:__ [`field`](https://vega.github.io/vega-lite/docs/field.html) documentation.\\\\n\\\\n__Notes:__ 1)  Dots (`.`) and brackets (`[` and `]`) can be used to access nested objects (e.g., `\\\\\\\"field\\\\\\\": \\\\\\\"foo.bar\\\\\\\"` and `\\\\\\\"field\\\\\\\": \\\\\\\"foo['bar']\\\\\\\"`). If field names contain dots or brackets but are not nested, you can use `\\\\\\\\\\\\\\\\` to escape dots and brackets (e.g., `\\\\\\\"a\\\\\\\\\\\\\\\\.b\\\\\\\"` and `\\\\\\\"a\\\\\\\\\\\\\\\\[0\\\\\\\\\\\\\\\\]\\\\\\\"`). See more details about escaping in the [field documentation](https://vega.github.io/vega-lite/docs/field.html). 2) `field` is not required if `aggregate` is `count`.\\\"},\\\"legend\\\":{\\\"anyOf\\\":[{\\\"$ref\\\":\\\"#/definitions/Legend\\\"},{\\\"type\\\":\\\"null\\\"}],\\\"description\\\":\\\"An object defining properties of the legend. If `null`, the legend for the encoding channel will be removed.\\\\n\\\\n__Default value:__ If undefined, default [legend properties](https://vega.github.io/vega-lite/docs/legend.html) are applied.\\\\n\\\\n__See also:__ [`legend`](https://vega.github.io/vega-lite/docs/legend.html) documentation.\\\"},\\\"scale\\\":{\\\"anyOf\\\":[{\\\"$ref\\\":\\\"#/definitions/Scale\\\"},{\\\"type\\\":\\\"null\\\"}],\\\"description\\\":\\\"An object defining properties of the channel's scale, which is the function that transforms values in the data domain (numbers, dates, strings, etc) to visual values (pixels, colors, sizes) of the encoding channels.\\\\n\\\\nIf `null`, the scale will be [disabled and the data value will be directly encoded](https://vega.github.io/vega-lite/docs/scale.html#disable).\\\\n\\\\n__Default value:__ If undefined, default [scale properties](https://vega.github.io/vega-lite/docs/scale.html) are applied.\\\\n\\\\n__See also:__ [`scale`](https://vega.github.io/vega-lite/docs/scale.html) documentation.\\\"},\\\"sort\\\":{\\\"$ref\\\":\\\"#/definitions/Sort\\\",\\\"description\\\":\\\"Sort order for the encoded field.\\\\n\\\\nFor continuous fields (quantitative or temporal), `sort` can be either `\\\\\\\"ascending\\\\\\\"` or `\\\\\\\"descending\\\\\\\"`.\\\\n\\\\nFor discrete fields, `sort` can be one of the following: - `\\\\\\\"ascending\\\\\\\"` or `\\\\\\\"descending\\\\\\\"` -- for sorting by the values' natural order in JavaScript. - [A string indicating an encoding channel name to sort by](https://vega.github.io/vega-lite/docs/sort.html#sort-by-encoding) (e.g., `\\\\\\\"x\\\\\\\"` or `\\\\\\\"y\\\\\\\"`) with an optional minus prefix for descending sort (e.g., `\\\\\\\"-x\\\\\\\"` to sort by x-field, descending). This channel string is short-form of [a sort-by-encoding definition](https://vega.github.io/vega-lite/docs/sort.html#sort-by-encoding). For example, `\\\\\\\"sort\\\\\\\": \\\\\\\"-x\\\\\\\"` is equivalent to `\\\\\\\"sort\\\\\\\": {\\\\\\\"encoding\\\\\\\": \\\\\\\"x\\\\\\\", \\\\\\\"order\\\\\\\": \\\\\\\"descending\\\\\\\"}`. - [A sort field definition](https://vega.github.io/vega-lite/docs/sort.html#sort-field) for sorting by another field. - [An array specifying the field values in preferred order](https://vega.github.io/vega-lite/docs/sort.html#sort-array). In this case, the sort order will obey the values in the array, followed by any unspecified values in their original order. For discrete time field, values in the sort array can be [date-time definition objects](types#datetime). In addition, for time units `\\\\\\\"month\\\\\\\"` and `\\\\\\\"day\\\\\\\"`, the values can be the month or day names (case insensitive) or their 3-letter initials (e.g., `\\\\\\\"Mon\\\\\\\"`, `\\\\\\\"Tue\\\\\\\"`). - `null` indicating no sort.\\\\n\\\\n__Default value:__ `\\\\\\\"ascending\\\\\\\"`\\\\n\\\\n__Note:__ `null` and sorting by another channel is not supported for `row` and `column`.\\\\n\\\\n__See also:__ [`sort`](https://vega.github.io/vega-lite/docs/sort.html) documentation.\\\"},\\\"timeUnit\\\":{\\\"anyOf\\\":[{\\\"$ref\\\":\\\"#/definitions/TimeUnit\\\"},{\\\"$ref\\\":\\\"#/definitions/TimeUnitParams\\\"}],\\\"description\\\":\\\"Time unit (e.g., `year`, `yearmonth`, `month`, `hours`) for a temporal field. or [a temporal field that gets casted as ordinal](https://vega.github.io/vega-lite/docs/type.html#cast).\\\\n\\\\n__Default value:__ `undefined` (None)\\\\n\\\\n__See also:__ [`timeUnit`](https://vega.github.io/vega-lite/docs/timeunit.html) documentation.\\\"},\\\"title\\\":{\\\"anyOf\\\":[{\\\"$ref\\\":\\\"#/definitions/Text\\\"},{\\\"type\\\":\\\"null\\\"}],\\\"description\\\":\\\"A title for the field. If `null`, the title will be removed.\\\\n\\\\n__Default value:__  derived from the field's name and transformation function (`aggregate`, `bin` and `timeUnit`). If the field has an aggregate function, the function is displayed as part of the title (e.g., `\\\\\\\"Sum of Profit\\\\\\\"`). If the field is binned or has a time unit applied, the applied function is shown in parentheses (e.g., `\\\\\\\"Profit (binned)\\\\\\\"`, `\\\\\\\"Transaction Date (year-month)\\\\\\\"`). Otherwise, the title is simply the field name.\\\\n\\\\n__Notes__:\\\\n\\\\n1) You can customize the default field title format by providing the [`fieldTitle`](https://vega.github.io/vega-lite/docs/config.html#top-level-config) property in the [config](https://vega.github.io/vega-lite/docs/config.html) or [`fieldTitle` function via the `compile` function's options](https://vega.github.io/vega-lite/docs/compile.html#field-title).\\\\n\\\\n2) If both field definition's `title` and axis, header, or legend `title` are defined, axis/header/legend title will be used.\\\"},\\\"type\\\":{\\\"anyOf\\\":[{\\\"$ref\\\":\\\"#/definitions/StandardType\\\",\\\"description\\\":\\\"The type of measurement (`\\\\\\\"quantitative\\\\\\\"`, `\\\\\\\"temporal\\\\\\\"`, `\\\\\\\"ordinal\\\\\\\"`, or `\\\\\\\"nominal\\\\\\\"`) for the encoded field or constant value (`datum`). It can also be a `\\\\\\\"geojson\\\\\\\"` type for encoding ['geoshape'](https://vega.github.io/vega-lite/docs/geoshape.html).\\\\n\\\\nVega-Lite automatically infers data types in many cases as discussed below. However, type is required for a field if: (1) the field is not nominal and the field encoding has no specified `aggregate` (except `argmin` and `argmax`), `bin`, scale type, custom `sort` order, nor `timeUnit` or (2) if you wish to use an ordinal scale for a field with `bin` or `timeUnit`.\\\\n\\\\n__Default value:__\\\\n\\\\n1) For a data `field`, `\\\\\\\"nominal\\\\\\\"` is the default data type unless the field encoding has `aggregate`, `channel`, `bin`, scale type, `sort`, or `timeUnit` that satisfies the following criteria: - `\\\\\\\"quantitative\\\\\\\"` is the default type if (1) the encoded field contains `bin` or `aggregate` except `\\\\\\\"argmin\\\\\\\"` and `\\\\\\\"argmax\\\\\\\"`, (2) the encoding channel is `latitude` or `longitude` channel or (3) if the specified scale type is [a quantitative scale](https://vega.github.io/vega-lite/docs/scale.html#type). - `\\\\\\\"temporal\\\\\\\"` is the default type if (1) the encoded field contains `timeUnit` or (2) the specified scale type is a time or utc scale - `ordinal\\\\\\\"\\\\\\\"` is the default type if (1) the encoded field contains a [custom `sort` order](https://vega.github.io/vega-lite/docs/sort.html#specifying-custom-sort-order), (2) the specified scale type is an ordinal/point/band scale, or (3) the encoding channel is `order`.\\\\n\\\\n2) For a constant value in data domain (`datum`): - `\\\\\\\"quantitative\\\\\\\"` if the datum is a number - `\\\\\\\"nominal\\\\\\\"` if the datum is a string - `\\\\\\\"temporal\\\\\\\"` if the datum is [a date time object](https://vega.github.io/vega-lite/docs/datetime.html)\\\\n\\\\n__Note:__ - Data `type` describes the semantics of the data rather than the primitive data types (number, string, etc.). The same primitive data type can have different types of measurement. For example, numeric data can represent quantitative, ordinal, or nominal data. - Data values for a temporal field can be either a date-time string (e.g., `\\\\\\\"2015-03-07 12:32:17\\\\\\\"`, `\\\\\\\"17:01\\\\\\\"`, `\\\\\\\"2015-03-16\\\\\\\"`. `\\\\\\\"2015\\\\\\\"`) or a timestamp number (e.g., `1552199579097`). - When using with [`bin`](https://vega.github.io/vega-lite/docs/bin.html), the `type` property can be either `\\\\\\\"quantitative\\\\\\\"` (for using a linear bin scale) or [`\\\\\\\"ordinal\\\\\\\"` (for using an ordinal bin scale)](https://vega.github.io/vega-lite/docs/type.html#cast-bin). - When using with [`timeUnit`](https://vega.github.io/vega-lite/docs/timeunit.html), the `type` property can be either `\\\\\\\"temporal\\\\\\\"` (default, for using a temporal scale) or [`\\\\\\\"ordinal\\\\\\\"` (for using an ordinal scale)](https://vega.github.io/vega-lite/docs/type.html#cast-bin). - When using with [`aggregate`](https://vega.github.io/vega-lite/docs/aggregate.html), the `type` property refers to the post-aggregation data type. For example, we can calculate count `distinct` of a categorical field `\\\\\\\"cat\\\\\\\"` using `{\\\\\\\"aggregate\\\\\\\": \\\\\\\"distinct\\\\\\\", \\\\\\\"field\\\\\\\": \\\\\\\"cat\\\\\\\"}`. The `\\\\\\\"type\\\\\\\"` of the aggregate output is `\\\\\\\"quantitative\\\\\\\"`. - Secondary channels (e.g., `x2`, `y2`, `xError`, `yError`) do not have `type` as they must have exactly the same type as their primary channels (e.g., `x`, `y`).\\\\n\\\\n__See also:__ [`type`](https://vega.github.io/vega-lite/docs/type.html) documentation.\\\"},{\\\"$ref\\\":\\\"#/definitions/Type\\\",\\\"description\\\":\\\"The type of measurement (`\\\\\\\"quantitative\\\\\\\"`, `\\\\\\\"temporal\\\\\\\"`, `\\\\\\\"ordinal\\\\\\\"`, or `\\\\\\\"nominal\\\\\\\"`) for the encoded field or constant value (`datum`). It can also be a `\\\\\\\"geojson\\\\\\\"` type for encoding ['geoshape'](https://vega.github.io/vega-lite/docs/geoshape.html).\\\\n\\\\nVega-Lite automatically infers data types in many cases as discussed below. However, type is required for a field if: (1) the field is not nominal and the field encoding has no specified `aggregate` (except `argmin` and `argmax`), `bin`, scale type, custom `sort` order, nor `timeUnit` or (2) if you wish to use an ordinal scale for a field with `bin` or `timeUnit`.\\\\n\\\\n__Default value:__\\\\n\\\\n1) For a data `field`, `\\\\\\\"nominal\\\\\\\"` is the default data type unless the field encoding has `aggregate`, `channel`, `bin`, scale type, `sort`, or `timeUnit` that satisfies the following criteria: - `\\\\\\\"quantitative\\\\\\\"` is the default type if (1) the encoded field contains `bin` or `aggregate` except `\\\\\\\"argmin\\\\\\\"` and `\\\\\\\"argmax\\\\\\\"`, (2) the encoding channel is `latitude` or `longitude` channel or (3) if the specified scale type is [a quantitative scale](https://vega.github.io/vega-lite/docs/scale.html#type). - `\\\\\\\"temporal\\\\\\\"` is the default type if (1) the encoded field contains `timeUnit` or (2) the specified scale type is a time or utc scale - `ordinal\\\\\\\"\\\\\\\"` is the default type if (1) the encoded field contains a [custom `sort` order](https://vega.github.io/vega-lite/docs/sort.html#specifying-custom-sort-order), (2) the specified scale type is an ordinal/point/band scale, or (3) the encoding channel is `order`.\\\\n\\\\n2) For a constant value in data domain (`datum`): - `\\\\\\\"quantitative\\\\\\\"` if the datum is a number - `\\\\\\\"nominal\\\\\\\"` if the datum is a string - `\\\\\\\"temporal\\\\\\\"` if the datum is [a date time object](https://vega.github.io/vega-lite/docs/datetime.html)\\\\n\\\\n__Note:__ - Data `type` describes the semantics of the data rather than the primitive data types (number, string, etc.). The same primitive data type can have different types of measurement. For example, numeric data can represent quantitative, ordinal, or nominal data. - Data values for a temporal field can be either a date-time string (e.g., `\\\\\\\"2015-03-07 12:32:17\\\\\\\"`, `\\\\\\\"17:01\\\\\\\"`, `\\\\\\\"2015-03-16\\\\\\\"`. `\\\\\\\"2015\\\\\\\"`) or a timestamp number (e.g., `1552199579097`). - When using with [`bin`](https://vega.github.io/vega-lite/docs/bin.html), the `type` property can be either `\\\\\\\"quantitative\\\\\\\"` (for using a linear bin scale) or [`\\\\\\\"ordinal\\\\\\\"` (for using an ordinal bin scale)](https://vega.github.io/vega-lite/docs/type.html#cast-bin). - When using with [`timeUnit`](https://vega.github.io/vega-lite/docs/timeunit.html), the `type` property can be either `\\\\\\\"temporal\\\\\\\"` (default, for using a temporal scale) or [`\\\\\\\"ordinal\\\\\\\"` (for using an ordinal scale)](https://vega.github.io/vega-lite/docs/type.html#cast-bin). - When using with [`aggregate`](https://vega.github.io/vega-lite/docs/aggregate.html), the `type` property refers to the post-aggregation data type. For example, we can calculate count `distinct` of a categorical field `\\\\\\\"cat\\\\\\\"` using `{\\\\\\\"aggregate\\\\\\\": \\\\\\\"distinct\\\\\\\", \\\\\\\"field\\\\\\\": \\\\\\\"cat\\\\\\\"}`. The `\\\\\\\"type\\\\\\\"` of the aggregate output is `\\\\\\\"quantitative\\\\\\\"`. - Secondary channels (e.g., `x2`, `y2`, `xError`, `yError`) do not have `type` as they must have exactly the same type as their primary channels (e.g., `x`, `y`).\\\\n\\\\n__See also:__ [`type`](https://vega.github.io/vega-lite/docs/type.html) documentation.\\\"}],\\\"description\\\":\\\"The type of measurement (`\\\\\\\"quantitative\\\\\\\"`, `\\\\\\\"temporal\\\\\\\"`, `\\\\\\\"ordinal\\\\\\\"`, or `\\\\\\\"nominal\\\\\\\"`) for the encoded field or constant value (`datum`). It can also be a `\\\\\\\"geojson\\\\\\\"` type for encoding ['geoshape'](https://vega.github.io/vega-lite/docs/geoshape.html).\\\\n\\\\nVega-Lite automatically infers data types in many cases as discussed below. However, type is required for a field if: (1) the field is not nominal and the field encoding has no specified `aggregate` (except `argmin` and `argmax`), `bin`, scale type, custom `sort` order, nor `timeUnit` or (2) if you wish to use an ordinal scale for a field with `bin` or `timeUnit`.\\\\n\\\\n__Default value:__\\\\n\\\\n1) For a data `field`, `\\\\\\\"nominal\\\\\\\"` is the default data type unless the field encoding has `aggregate`, `channel`, `bin`, scale type, `sort`, or `timeUnit` that satisfies the following criteria: - `\\\\\\\"quantitative\\\\\\\"` is the default type if (1) the encoded field contains `bin` or `aggregate` except `\\\\\\\"argmin\\\\\\\"` and `\\\\\\\"argmax\\\\\\\"`, (2) the encoding channel is `latitude` or `longitude` channel or (3) if the specified scale type is [a quantitative scale](https://vega.github.io/vega-lite/docs/scale.html#type). - `\\\\\\\"temporal\\\\\\\"` is the default type if (1) the encoded field contains `timeUnit` or (2) the specified scale type is a time or utc scale - `ordinal\\\\\\\"\\\\\\\"` is the default type if (1) the encoded field contains a [custom `sort` order](https://vega.github.io/vega-lite/docs/sort.html#specifying-custom-sort-order), (2) the specified scale type is an ordinal/point/band scale, or (3) the encoding channel is `order`.\\\\n\\\\n2) For a constant value in data domain (`datum`): - `\\\\\\\"quantitative\\\\\\\"` if the datum is a number - `\\\\\\\"nominal\\\\\\\"` if the datum is a string - `\\\\\\\"temporal\\\\\\\"` if the datum is [a date time object](https://vega.github.io/vega-lite/docs/datetime.html)\\\\n\\\\n__Note:__ - Data `type` describes the semantics of the data rather than the primitive data types (number, string, etc.). The same primitive data type can have different types of measurement. For example, numeric data can represent quantitative, ordinal, or nominal data. - Data values for a temporal field can be either a date-time string (e.g., `\\\\\\\"2015-03-07 12:32:17\\\\\\\"`, `\\\\\\\"17:01\\\\\\\"`, `\\\\\\\"2015-03-16\\\\\\\"`. `\\\\\\\"2015\\\\\\\"`) or a timestamp number (e.g., `1552199579097`). - When using with [`bin`](https://vega.github.io/vega-lite/docs/bin.html), the `type` property can be either `\\\\\\\"quantitative\\\\\\\"` (for using a linear bin scale) or [`\\\\\\\"ordinal\\\\\\\"` (for using an ordinal bin scale)](https://vega.github.io/vega-lite/docs/type.html#cast-bin). - When using with [`timeUnit`](https://vega.github.io/vega-lite/docs/timeunit.html), the `type` property can be either `\\\\\\\"temporal\\\\\\\"` (default, for using a temporal scale) or [`\\\\\\\"ordinal\\\\\\\"` (for using an ordinal scale)](https://vega.github.io/vega-lite/docs/type.html#cast-bin). - When using with [`aggregate`](https://vega.github.io/vega-lite/docs/aggregate.html), the `type` property refers to the post-aggregation data type. For example, we can calculate count `distinct` of a categorical field `\\\\\\\"cat\\\\\\\"` using `{\\\\\\\"aggregate\\\\\\\": \\\\\\\"distinct\\\\\\\", \\\\\\\"field\\\\\\\": \\\\\\\"cat\\\\\\\"}`. The `\\\\\\\"type\\\\\\\"` of the aggregate output is `\\\\\\\"quantitative\\\\\\\"`. - Secondary channels (e.g., `x2`, `y2`, `xError`, `yError`) do not have `type` as they must have exactly the same type as their primary channels (e.g., `x`, `y`).\\\\n\\\\n__See also:__ [`type`](https://vega.github.io/vega-lite/docs/type.html) documentation.\\\"},\\\"value\\\":{\\\"anyOf\\\":[{\\\"type\\\":\\\"number\\\"},{\\\"$ref\\\":\\\"#/definitions/ExprRef\\\"}],\\\"description\\\":\\\"A constant value in visual domain (e.g., `\\\\\\\"red\\\\\\\"` / `\\\\\\\"#0099ff\\\\\\\"` / [gradient definition](https://vega.github.io/vega-lite/docs/types.html#gradient) for color, values between `0` to `1` for opacity).\\\"}},\\\"type\\\":\\\"object\\\"},\\\"href\\\":{\\\"additionalProperties\\\":false,\\\"properties\\\":{\\\"aggregate\\\":{\\\"$ref\\\":\\\"#/definitions/Aggregate\\\",\\\"description\\\":\\\"Aggregation function for the field (e.g., `\\\\\\\"mean\\\\\\\"`, `\\\\\\\"sum\\\\\\\"`, `\\\\\\\"median\\\\\\\"`, `\\\\\\\"min\\\\\\\"`, `\\\\\\\"max\\\\\\\"`, `\\\\\\\"count\\\\\\\"`).\\\\n\\\\n__Default value:__ `undefined` (None)\\\\n\\\\n__See also:__ [`aggregate`](https://vega.github.io/vega-lite/docs/aggregate.html) documentation.\\\"},\\\"band\\\":{\\\"description\\\":\\\"For rect-based marks (`rect`, `bar`, and `image`), mark size relative to bandwidth of [band scales](https://vega.github.io/vega-lite/docs/scale.html#band), bins or time units. If set to `1`, the mark size is set to the bandwidth, the bin interval, or the time unit interval. If set to `0.5`, the mark size is half of the bandwidth or the time unit interval.\\\\n\\\\nFor other marks, relative position on a band of a stacked, binned, time unit or band scale. If set to `0`, the marks will be positioned at the beginning of the band. If set to `0.5`, the marks will be positioned in the middle of the band.\\\",\\\"maximum\\\":1,\\\"minimum\\\":0,\\\"type\\\":\\\"number\\\"},\\\"bin\\\":{\\\"anyOf\\\":[{\\\"type\\\":\\\"boolean\\\"},{\\\"$ref\\\":\\\"#/definitions/BinParams\\\"},{\\\"const\\\":\\\"binned\\\",\\\"type\\\":\\\"string\\\"},{\\\"type\\\":\\\"null\\\"}],\\\"description\\\":\\\"A flag for binning a `quantitative` field, [an object defining binning parameters](https://vega.github.io/vega-lite/docs/bin.html#params), or indicating that the data for `x` or `y` channel are binned before they are imported into Vega-Lite (`\\\\\\\"binned\\\\\\\"`).\\\\n\\\\n- If `true`, default [binning parameters](https://vega.github.io/vega-lite/docs/bin.html) will be applied.\\\\n\\\\n- If `\\\\\\\"binned\\\\\\\"`, this indicates that the data for the `x` (or `y`) channel are already binned. You can map the bin-start field to `x` (or `y`) and the bin-end field to `x2` (or `y2`). The scale and axis will be formatted similar to binning in Vega-Lite.  To adjust the axis ticks based on the bin step, you can also set the axis's [`tickMinStep`](https://vega.github.io/vega-lite/docs/axis.html#ticks) property.\\\\n\\\\n__Default value:__ `false`\\\\n\\\\n__See also:__ [`bin`](https://vega.github.io/vega-lite/docs/bin.html) documentation.\\\"},\\\"condition\\\":{\\\"anyOf\\\":[{\\\"anyOf\\\":[{\\\"$ref\\\":\\\"#/definitions/ConditionalValueDef<(string|ExprRef)>\\\"},{\\\"items\\\":{\\\"$ref\\\":\\\"#/definitions/ConditionalValueDef<(string|ExprRef)>\\\"},\\\"type\\\":\\\"array\\\"}],\\\"description\\\":\\\"One or more value definition(s) with [a selection or a test predicate](https://vega.github.io/vega-lite/docs/condition.html).\\\\n\\\\n__Note:__ A field definition's `condition` property can only contain [conditional value definitions](https://vega.github.io/vega-lite/docs/condition.html#value) since Vega-Lite only allows at most one encoded field per encoding channel.\\\"},{\\\"anyOf\\\":[{\\\"$ref\\\":\\\"#/definitions/ConditionalMarkPropFieldOrDatumDef\\\"},{\\\"$ref\\\":\\\"#/definitions/ConditionalValueDef<(string|null|ExprRef)>\\\"},{\\\"items\\\":{\\\"$ref\\\":\\\"#/definitions/ConditionalValueDef<(string|null|ExprRef)>\\\"},\\\"type\\\":\\\"array\\\"}],\\\"description\\\":\\\"A field definition or one or more value definition(s) with a selection predicate.\\\"}],\\\"description\\\":\\\"One or more value definition(s) with [a selection or a test predicate](https://vega.github.io/vega-lite/docs/condition.html).\\\\n\\\\n__Note:__ A field definition's `condition` property can only contain [conditional value definitions](https://vega.github.io/vega-lite/docs/condition.html#value) since Vega-Lite only allows at most one encoded field per encoding channel.\\\"},\\\"field\\\":{\\\"$ref\\\":\\\"#/definitions/Field\\\",\\\"description\\\":\\\"__Required.__ A string defining the name of the field from which to pull a data value or an object defining iterated values from the [`repeat`](https://vega.github.io/vega-lite/docs/repeat.html) operator.\\\\n\\\\n__See also:__ [`field`](https://vega.github.io/vega-lite/docs/field.html) documentation.\\\\n\\\\n__Notes:__ 1)  Dots (`.`) and brackets (`[` and `]`) can be used to access nested objects (e.g., `\\\\\\\"field\\\\\\\": \\\\\\\"foo.bar\\\\\\\"` and `\\\\\\\"field\\\\\\\": \\\\\\\"foo['bar']\\\\\\\"`). If field names contain dots or brackets but are not nested, you can use `\\\\\\\\\\\\\\\\` to escape dots and brackets (e.g., `\\\\\\\"a\\\\\\\\\\\\\\\\.b\\\\\\\"` and `\\\\\\\"a\\\\\\\\\\\\\\\\[0\\\\\\\\\\\\\\\\]\\\\\\\"`). See more details about escaping in the [field documentation](https://vega.github.io/vega-lite/docs/field.html). 2) `field` is not required if `aggregate` is `count`.\\\"},\\\"format\\\":{\\\"anyOf\\\":[{\\\"type\\\":\\\"string\\\"},{\\\"$ref\\\":\\\"#/definitions/Dict<unknown>\\\"}],\\\"description\\\":\\\"When used with the default `\\\\\\\"number\\\\\\\"` and `\\\\\\\"time\\\\\\\"` format type, the text formatting pattern for labels of guides (axes, legends, headers) and text marks.\\\\n\\\\n- If the format type is `\\\\\\\"number\\\\\\\"` (e.g., for quantitative fields), this is D3's [number format pattern](https://github.com/d3/d3-format#locale_format). - If the format type is `\\\\\\\"time\\\\\\\"` (e.g., for temporal fields), this is D3's [time format pattern](https://github.com/d3/d3-time-format#locale_format).\\\\n\\\\nSee the [format documentation](https://vega.github.io/vega-lite/docs/format.html) for more examples.\\\\n\\\\nWhen used with a [custom `formatType`](https://vega.github.io/vega-lite/docs/config.html#custom-format-type), this value will be passed as `format` alongside `datum.value` to the registered function.\\\\n\\\\n__Default value:__  Derived from [numberFormat](https://vega.github.io/vega-lite/docs/config.html#format) config for number format and from [timeFormat](https://vega.github.io/vega-lite/docs/config.html#format) config for time format.\\\"},\\\"formatType\\\":{\\\"description\\\":\\\"The format type for labels. One of `\\\\\\\"number\\\\\\\"`, `\\\\\\\"time\\\\\\\"`, or a [registered custom format type](https://vega.github.io/vega-lite/docs/config.html#custom-format-type).\\\\n\\\\n__Default value:__ - `\\\\\\\"time\\\\\\\"` for temporal fields and ordinal and nominal fields with `timeUnit`. - `\\\\\\\"number\\\\\\\"` for quantitative fields as well as ordinal and nominal fields without `timeUnit`.\\\",\\\"type\\\":\\\"string\\\"},\\\"labelExpr\\\":{\\\"description\\\":\\\"[Vega expression](https://vega.github.io/vega/docs/expressions/) for customizing labels text.\\\\n\\\\n__Note:__ The label text and value can be assessed via the `label` and `value` properties of the axis's backing `datum` object.\\\",\\\"type\\\":\\\"string\\\"},\\\"timeUnit\\\":{\\\"anyOf\\\":[{\\\"$ref\\\":\\\"#/definitions/TimeUnit\\\"},{\\\"$ref\\\":\\\"#/definitions/TimeUnitParams\\\"}],\\\"description\\\":\\\"Time unit (e.g., `year`, `yearmonth`, `month`, `hours`) for a temporal field. or [a temporal field that gets casted as ordinal](https://vega.github.io/vega-lite/docs/type.html#cast).\\\\n\\\\n__Default value:__ `undefined` (None)\\\\n\\\\n__See also:__ [`timeUnit`](https://vega.github.io/vega-lite/docs/timeunit.html) documentation.\\\"},\\\"title\\\":{\\\"anyOf\\\":[{\\\"$ref\\\":\\\"#/definitions/Text\\\"},{\\\"type\\\":\\\"null\\\"}],\\\"description\\\":\\\"A title for the field. If `null`, the title will be removed.\\\\n\\\\n__Default value:__  derived from the field's name and transformation function (`aggregate`, `bin` and `timeUnit`). If the field has an aggregate function, the function is displayed as part of the title (e.g., `\\\\\\\"Sum of Profit\\\\\\\"`). If the field is binned or has a time unit applied, the applied function is shown in parentheses (e.g., `\\\\\\\"Profit (binned)\\\\\\\"`, `\\\\\\\"Transaction Date (year-month)\\\\\\\"`). Otherwise, the title is simply the field name.\\\\n\\\\n__Notes__:\\\\n\\\\n1) You can customize the default field title format by providing the [`fieldTitle`](https://vega.github.io/vega-lite/docs/config.html#top-level-config) property in the [config](https://vega.github.io/vega-lite/docs/config.html) or [`fieldTitle` function via the `compile` function's options](https://vega.github.io/vega-lite/docs/compile.html#field-title).\\\\n\\\\n2) If both field definition's `title` and axis, header, or legend `title` are defined, axis/header/legend title will be used.\\\"},\\\"type\\\":{\\\"$ref\\\":\\\"#/definitions/StandardType\\\",\\\"description\\\":\\\"The type of measurement (`\\\\\\\"quantitative\\\\\\\"`, `\\\\\\\"temporal\\\\\\\"`, `\\\\\\\"ordinal\\\\\\\"`, or `\\\\\\\"nominal\\\\\\\"`) for the encoded field or constant value (`datum`). It can also be a `\\\\\\\"geojson\\\\\\\"` type for encoding ['geoshape'](https://vega.github.io/vega-lite/docs/geoshape.html).\\\\n\\\\nVega-Lite automatically infers data types in many cases as discussed below. However, type is required for a field if: (1) the field is not nominal and the field encoding has no specified `aggregate` (except `argmin` and `argmax`), `bin`, scale type, custom `sort` order, nor `timeUnit` or (2) if you wish to use an ordinal scale for a field with `bin` or `timeUnit`.\\\\n\\\\n__Default value:__\\\\n\\\\n1) For a data `field`, `\\\\\\\"nominal\\\\\\\"` is the default data type unless the field encoding has `aggregate`, `channel`, `bin`, scale type, `sort`, or `timeUnit` that satisfies the following criteria: - `\\\\\\\"quantitative\\\\\\\"` is the default type if (1) the encoded field contains `bin` or `aggregate` except `\\\\\\\"argmin\\\\\\\"` and `\\\\\\\"argmax\\\\\\\"`, (2) the encoding channel is `latitude` or `longitude` channel or (3) if the specified scale type is [a quantitative scale](https://vega.github.io/vega-lite/docs/scale.html#type). - `\\\\\\\"temporal\\\\\\\"` is the default type if (1) the encoded field contains `timeUnit` or (2) the specified scale type is a time or utc scale - `ordinal\\\\\\\"\\\\\\\"` is the default type if (1) the encoded field contains a [custom `sort` order](https://vega.github.io/vega-lite/docs/sort.html#specifying-custom-sort-order), (2) the specified scale type is an ordinal/point/band scale, or (3) the encoding channel is `order`.\\\\n\\\\n2) For a constant value in data domain (`datum`): - `\\\\\\\"quantitative\\\\\\\"` if the datum is a number - `\\\\\\\"nominal\\\\\\\"` if the datum is a string - `\\\\\\\"temporal\\\\\\\"` if the datum is [a date time object](https://vega.github.io/vega-lite/docs/datetime.html)\\\\n\\\\n__Note:__ - Data `type` describes the semantics of the data rather than the primitive data types (number, string, etc.). The same primitive data type can have different types of measurement. For example, numeric data can represent quantitative, ordinal, or nominal data. - Data values for a temporal field can be either a date-time string (e.g., `\\\\\\\"2015-03-07 12:32:17\\\\\\\"`, `\\\\\\\"17:01\\\\\\\"`, `\\\\\\\"2015-03-16\\\\\\\"`. `\\\\\\\"2015\\\\\\\"`) or a timestamp number (e.g., `1552199579097`). - When using with [`bin`](https://vega.github.io/vega-lite/docs/bin.html), the `type` property can be either `\\\\\\\"quantitative\\\\\\\"` (for using a linear bin scale) or [`\\\\\\\"ordinal\\\\\\\"` (for using an ordinal bin scale)](https://vega.github.io/vega-lite/docs/type.html#cast-bin). - When using with [`timeUnit`](https://vega.github.io/vega-lite/docs/timeunit.html), the `type` property can be either `\\\\\\\"temporal\\\\\\\"` (default, for using a temporal scale) or [`\\\\\\\"ordinal\\\\\\\"` (for using an ordinal scale)](https://vega.github.io/vega-lite/docs/type.html#cast-bin). - When using with [`aggregate`](https://vega.github.io/vega-lite/docs/aggregate.html), the `type` property refers to the post-aggregation data type. For example, we can calculate count `distinct` of a categorical field `\\\\\\\"cat\\\\\\\"` using `{\\\\\\\"aggregate\\\\\\\": \\\\\\\"distinct\\\\\\\", \\\\\\\"field\\\\\\\": \\\\\\\"cat\\\\\\\"}`. The `\\\\\\\"type\\\\\\\"` of the aggregate output is `\\\\\\\"quantitative\\\\\\\"`. - Secondary channels (e.g., `x2`, `y2`, `xError`, `yError`) do not have `type` as they must have exactly the same type as their primary channels (e.g., `x`, `y`).\\\\n\\\\n__See also:__ [`type`](https://vega.github.io/vega-lite/docs/type.html) documentation.\\\"},\\\"value\\\":{\\\"anyOf\\\":[{\\\"type\\\":\\\"string\\\"},{\\\"type\\\":\\\"null\\\"},{\\\"$ref\\\":\\\"#/definitions/ExprRef\\\"}],\\\"description\\\":\\\"A constant value in visual domain (e.g., `\\\\\\\"red\\\\\\\"` / `\\\\\\\"#0099ff\\\\\\\"` / [gradient definition](https://vega.github.io/vega-lite/docs/types.html#gradient) for color, values between `0` to `1` for opacity).\\\"}},\\\"type\\\":\\\"object\\\"},\\\"key\\\":{\\\"additionalProperties\\\":false,\\\"properties\\\":{\\\"aggregate\\\":{\\\"$ref\\\":\\\"#/definitions/Aggregate\\\",\\\"description\\\":\\\"Aggregation function for the field (e.g., `\\\\\\\"mean\\\\\\\"`, `\\\\\\\"sum\\\\\\\"`, `\\\\\\\"median\\\\\\\"`, `\\\\\\\"min\\\\\\\"`, `\\\\\\\"max\\\\\\\"`, `\\\\\\\"count\\\\\\\"`).\\\\n\\\\n__Default value:__ `undefined` (None)\\\\n\\\\n__See also:__ [`aggregate`](https://vega.github.io/vega-lite/docs/aggregate.html) documentation.\\\"},\\\"band\\\":{\\\"description\\\":\\\"For rect-based marks (`rect`, `bar`, and `image`), mark size relative to bandwidth of [band scales](https://vega.github.io/vega-lite/docs/scale.html#band), bins or time units. If set to `1`, the mark size is set to the bandwidth, the bin interval, or the time unit interval. If set to `0.5`, the mark size is half of the bandwidth or the time unit interval.\\\\n\\\\nFor other marks, relative position on a band of a stacked, binned, time unit or band scale. If set to `0`, the marks will be positioned at the beginning of the band. If set to `0.5`, the marks will be positioned in the middle of the band.\\\",\\\"maximum\\\":1,\\\"minimum\\\":0,\\\"type\\\":\\\"number\\\"},\\\"bin\\\":{\\\"anyOf\\\":[{\\\"type\\\":\\\"boolean\\\"},{\\\"$ref\\\":\\\"#/definitions/BinParams\\\"},{\\\"const\\\":\\\"binned\\\",\\\"type\\\":\\\"string\\\"},{\\\"type\\\":\\\"null\\\"}],\\\"description\\\":\\\"A flag for binning a `quantitative` field, [an object defining binning parameters](https://vega.github.io/vega-lite/docs/bin.html#params), or indicating that the data for `x` or `y` channel are binned before they are imported into Vega-Lite (`\\\\\\\"binned\\\\\\\"`).\\\\n\\\\n- If `true`, default [binning parameters](https://vega.github.io/vega-lite/docs/bin.html) will be applied.\\\\n\\\\n- If `\\\\\\\"binned\\\\\\\"`, this indicates that the data for the `x` (or `y`) channel are already binned. You can map the bin-start field to `x` (or `y`) and the bin-end field to `x2` (or `y2`). The scale and axis will be formatted similar to binning in Vega-Lite.  To adjust the axis ticks based on the bin step, you can also set the axis's [`tickMinStep`](https://vega.github.io/vega-lite/docs/axis.html#ticks) property.\\\\n\\\\n__Default value:__ `false`\\\\n\\\\n__See also:__ [`bin`](https://vega.github.io/vega-lite/docs/bin.html) documentation.\\\"},\\\"field\\\":{\\\"$ref\\\":\\\"#/definitions/Field\\\",\\\"description\\\":\\\"__Required.__ A string defining the name of the field from which to pull a data value or an object defining iterated values from the [`repeat`](https://vega.github.io/vega-lite/docs/repeat.html) operator.\\\\n\\\\n__See also:__ [`field`](https://vega.github.io/vega-lite/docs/field.html) documentation.\\\\n\\\\n__Notes:__ 1)  Dots (`.`) and brackets (`[` and `]`) can be used to access nested objects (e.g., `\\\\\\\"field\\\\\\\": \\\\\\\"foo.bar\\\\\\\"` and `\\\\\\\"field\\\\\\\": \\\\\\\"foo['bar']\\\\\\\"`). If field names contain dots or brackets but are not nested, you can use `\\\\\\\\\\\\\\\\` to escape dots and brackets (e.g., `\\\\\\\"a\\\\\\\\\\\\\\\\.b\\\\\\\"` and `\\\\\\\"a\\\\\\\\\\\\\\\\[0\\\\\\\\\\\\\\\\]\\\\\\\"`). See more details about escaping in the [field documentation](https://vega.github.io/vega-lite/docs/field.html). 2) `field` is not required if `aggregate` is `count`.\\\"},\\\"timeUnit\\\":{\\\"anyOf\\\":[{\\\"$ref\\\":\\\"#/definitions/TimeUnit\\\"},{\\\"$ref\\\":\\\"#/definitions/TimeUnitParams\\\"}],\\\"description\\\":\\\"Time unit (e.g., `year`, `yearmonth`, `month`, `hours`) for a temporal field. or [a temporal field that gets casted as ordinal](https://vega.github.io/vega-lite/docs/type.html#cast).\\\\n\\\\n__Default value:__ `undefined` (None)\\\\n\\\\n__See also:__ [`timeUnit`](https://vega.github.io/vega-lite/docs/timeunit.html) documentation.\\\"},\\\"title\\\":{\\\"anyOf\\\":[{\\\"$ref\\\":\\\"#/definitions/Text\\\"},{\\\"type\\\":\\\"null\\\"}],\\\"description\\\":\\\"A title for the field. If `null`, the title will be removed.\\\\n\\\\n__Default value:__  derived from the field's name and transformation function (`aggregate`, `bin` and `timeUnit`). If the field has an aggregate function, the function is displayed as part of the title (e.g., `\\\\\\\"Sum of Profit\\\\\\\"`). If the field is binned or has a time unit applied, the applied function is shown in parentheses (e.g., `\\\\\\\"Profit (binned)\\\\\\\"`, `\\\\\\\"Transaction Date (year-month)\\\\\\\"`). Otherwise, the title is simply the field name.\\\\n\\\\n__Notes__:\\\\n\\\\n1) You can customize the default field title format by providing the [`fieldTitle`](https://vega.github.io/vega-lite/docs/config.html#top-level-config) property in the [config](https://vega.github.io/vega-lite/docs/config.html) or [`fieldTitle` function via the `compile` function's options](https://vega.github.io/vega-lite/docs/compile.html#field-title).\\\\n\\\\n2) If both field definition's `title` and axis, header, or legend `title` are defined, axis/header/legend title will be used.\\\"},\\\"type\\\":{\\\"$ref\\\":\\\"#/definitions/StandardType\\\",\\\"description\\\":\\\"The type of measurement (`\\\\\\\"quantitative\\\\\\\"`, `\\\\\\\"temporal\\\\\\\"`, `\\\\\\\"ordinal\\\\\\\"`, or `\\\\\\\"nominal\\\\\\\"`) for the encoded field or constant value (`datum`). It can also be a `\\\\\\\"geojson\\\\\\\"` type for encoding ['geoshape'](https://vega.github.io/vega-lite/docs/geoshape.html).\\\\n\\\\nVega-Lite automatically infers data types in many cases as discussed below. However, type is required for a field if: (1) the field is not nominal and the field encoding has no specified `aggregate` (except `argmin` and `argmax`), `bin`, scale type, custom `sort` order, nor `timeUnit` or (2) if you wish to use an ordinal scale for a field with `bin` or `timeUnit`.\\\\n\\\\n__Default value:__\\\\n\\\\n1) For a data `field`, `\\\\\\\"nominal\\\\\\\"` is the default data type unless the field encoding has `aggregate`, `channel`, `bin`, scale type, `sort`, or `timeUnit` that satisfies the following criteria: - `\\\\\\\"quantitative\\\\\\\"` is the default type if (1) the encoded field contains `bin` or `aggregate` except `\\\\\\\"argmin\\\\\\\"` and `\\\\\\\"argmax\\\\\\\"`, (2) the encoding channel is `latitude` or `longitude` channel or (3) if the specified scale type is [a quantitative scale](https://vega.github.io/vega-lite/docs/scale.html#type). - `\\\\\\\"temporal\\\\\\\"` is the default type if (1) the encoded field contains `timeUnit` or (2) the specified scale type is a time or utc scale - `ordinal\\\\\\\"\\\\\\\"` is the default type if (1) the encoded field contains a [custom `sort` order](https://vega.github.io/vega-lite/docs/sort.html#specifying-custom-sort-order), (2) the specified scale type is an ordinal/point/band scale, or (3) the encoding channel is `order`.\\\\n\\\\n2) For a constant value in data domain (`datum`): - `\\\\\\\"quantitative\\\\\\\"` if the datum is a number - `\\\\\\\"nominal\\\\\\\"` if the datum is a string - `\\\\\\\"temporal\\\\\\\"` if the datum is [a date time object](https://vega.github.io/vega-lite/docs/datetime.html)\\\\n\\\\n__Note:__ - Data `type` describes the semantics of the data rather than the primitive data types (number, string, etc.). The same primitive data type can have different types of measurement. For example, numeric data can represent quantitative, ordinal, or nominal data. - Data values for a temporal field can be either a date-time string (e.g., `\\\\\\\"2015-03-07 12:32:17\\\\\\\"`, `\\\\\\\"17:01\\\\\\\"`, `\\\\\\\"2015-03-16\\\\\\\"`. `\\\\\\\"2015\\\\\\\"`) or a timestamp number (e.g., `1552199579097`). - When using with [`bin`](https://vega.github.io/vega-lite/docs/bin.html), the `type` property can be either `\\\\\\\"quantitative\\\\\\\"` (for using a linear bin scale) or [`\\\\\\\"ordinal\\\\\\\"` (for using an ordinal bin scale)](https://vega.github.io/vega-lite/docs/type.html#cast-bin). - When using with [`timeUnit`](https://vega.github.io/vega-lite/docs/timeunit.html), the `type` property can be either `\\\\\\\"temporal\\\\\\\"` (default, for using a temporal scale) or [`\\\\\\\"ordinal\\\\\\\"` (for using an ordinal scale)](https://vega.github.io/vega-lite/docs/type.html#cast-bin). - When using with [`aggregate`](https://vega.github.io/vega-lite/docs/aggregate.html), the `type` property refers to the post-aggregation data type. For example, we can calculate count `distinct` of a categorical field `\\\\\\\"cat\\\\\\\"` using `{\\\\\\\"aggregate\\\\\\\": \\\\\\\"distinct\\\\\\\", \\\\\\\"field\\\\\\\": \\\\\\\"cat\\\\\\\"}`. The `\\\\\\\"type\\\\\\\"` of the aggregate output is `\\\\\\\"quantitative\\\\\\\"`. - Secondary channels (e.g., `x2`, `y2`, `xError`, `yError`) do not have `type` as they must have exactly the same type as their primary channels (e.g., `x`, `y`).\\\\n\\\\n__See also:__ [`type`](https://vega.github.io/vega-lite/docs/type.html) documentation.\\\"}},\\\"type\\\":\\\"object\\\"},\\\"latitude\\\":{\\\"additionalProperties\\\":false,\\\"properties\\\":{\\\"aggregate\\\":{\\\"$ref\\\":\\\"#/definitions/Aggregate\\\",\\\"description\\\":\\\"Aggregation function for the field (e.g., `\\\\\\\"mean\\\\\\\"`, `\\\\\\\"sum\\\\\\\"`, `\\\\\\\"median\\\\\\\"`, `\\\\\\\"min\\\\\\\"`, `\\\\\\\"max\\\\\\\"`, `\\\\\\\"count\\\\\\\"`).\\\\n\\\\n__Default value:__ `undefined` (None)\\\\n\\\\n__See also:__ [`aggregate`](https://vega.github.io/vega-lite/docs/aggregate.html) documentation.\\\"},\\\"band\\\":{\\\"description\\\":\\\"For rect-based marks (`rect`, `bar`, and `image`), mark size relative to bandwidth of [band scales](https://vega.github.io/vega-lite/docs/scale.html#band), bins or time units. If set to `1`, the mark size is set to the bandwidth, the bin interval, or the time unit interval. If set to `0.5`, the mark size is half of the bandwidth or the time unit interval.\\\\n\\\\nFor other marks, relative position on a band of a stacked, binned, time unit or band scale. If set to `0`, the marks will be positioned at the beginning of the band. If set to `0.5`, the marks will be positioned in the middle of the band.\\\",\\\"maximum\\\":1,\\\"minimum\\\":0,\\\"type\\\":\\\"number\\\"},\\\"bin\\\":{\\\"description\\\":\\\"A flag for binning a `quantitative` field, [an object defining binning parameters](https://vega.github.io/vega-lite/docs/bin.html#params), or indicating that the data for `x` or `y` channel are binned before they are imported into Vega-Lite (`\\\\\\\"binned\\\\\\\"`).\\\\n\\\\n- If `true`, default [binning parameters](https://vega.github.io/vega-lite/docs/bin.html) will be applied.\\\\n\\\\n- If `\\\\\\\"binned\\\\\\\"`, this indicates that the data for the `x` (or `y`) channel are already binned. You can map the bin-start field to `x` (or `y`) and the bin-end field to `x2` (or `y2`). The scale and axis will be formatted similar to binning in Vega-Lite.  To adjust the axis ticks based on the bin step, you can also set the axis's [`tickMinStep`](https://vega.github.io/vega-lite/docs/axis.html#ticks) property.\\\\n\\\\n__Default value:__ `false`\\\\n\\\\n__See also:__ [`bin`](https://vega.github.io/vega-lite/docs/bin.html) documentation.\\\",\\\"type\\\":\\\"null\\\"},\\\"datum\\\":{\\\"anyOf\\\":[{\\\"$ref\\\":\\\"#/definitions/PrimitiveValue\\\"},{\\\"$ref\\\":\\\"#/definitions/DateTime\\\"},{\\\"$ref\\\":\\\"#/definitions/ExprRef\\\"},{\\\"$ref\\\":\\\"#/definitions/RepeatRef\\\"}],\\\"description\\\":\\\"A constant value in data domain.\\\"},\\\"field\\\":{\\\"$ref\\\":\\\"#/definitions/Field\\\",\\\"description\\\":\\\"__Required.__ A string defining the name of the field from which to pull a data value or an object defining iterated values from the [`repeat`](https://vega.github.io/vega-lite/docs/repeat.html) operator.\\\\n\\\\n__See also:__ [`field`](https://vega.github.io/vega-lite/docs/field.html) documentation.\\\\n\\\\n__Notes:__ 1)  Dots (`.`) and brackets (`[` and `]`) can be used to access nested objects (e.g., `\\\\\\\"field\\\\\\\": \\\\\\\"foo.bar\\\\\\\"` and `\\\\\\\"field\\\\\\\": \\\\\\\"foo['bar']\\\\\\\"`). If field names contain dots or brackets but are not nested, you can use `\\\\\\\\\\\\\\\\` to escape dots and brackets (e.g., `\\\\\\\"a\\\\\\\\\\\\\\\\.b\\\\\\\"` and `\\\\\\\"a\\\\\\\\\\\\\\\\[0\\\\\\\\\\\\\\\\]\\\\\\\"`). See more details about escaping in the [field documentation](https://vega.github.io/vega-lite/docs/field.html). 2) `field` is not required if `aggregate` is `count`.\\\"},\\\"timeUnit\\\":{\\\"anyOf\\\":[{\\\"$ref\\\":\\\"#/definitions/TimeUnit\\\"},{\\\"$ref\\\":\\\"#/definitions/TimeUnitParams\\\"}],\\\"description\\\":\\\"Time unit (e.g., `year`, `yearmonth`, `month`, `hours`) for a temporal field. or [a temporal field that gets casted as ordinal](https://vega.github.io/vega-lite/docs/type.html#cast).\\\\n\\\\n__Default value:__ `undefined` (None)\\\\n\\\\n__See also:__ [`timeUnit`](https://vega.github.io/vega-lite/docs/timeunit.html) documentation.\\\"},\\\"title\\\":{\\\"anyOf\\\":[{\\\"$ref\\\":\\\"#/definitions/Text\\\"},{\\\"type\\\":\\\"null\\\"}],\\\"description\\\":\\\"A title for the field. If `null`, the title will be removed.\\\\n\\\\n__Default value:__  derived from the field's name and transformation function (`aggregate`, `bin` and `timeUnit`). If the field has an aggregate function, the function is displayed as part of the title (e.g., `\\\\\\\"Sum of Profit\\\\\\\"`). If the field is binned or has a time unit applied, the applied function is shown in parentheses (e.g., `\\\\\\\"Profit (binned)\\\\\\\"`, `\\\\\\\"Transaction Date (year-month)\\\\\\\"`). Otherwise, the title is simply the field name.\\\\n\\\\n__Notes__:\\\\n\\\\n1) You can customize the default field title format by providing the [`fieldTitle`](https://vega.github.io/vega-lite/docs/config.html#top-level-config) property in the [config](https://vega.github.io/vega-lite/docs/config.html) or [`fieldTitle` function via the `compile` function's options](https://vega.github.io/vega-lite/docs/compile.html#field-title).\\\\n\\\\n2) If both field definition's `title` and axis, header, or legend `title` are defined, axis/header/legend title will be used.\\\"},\\\"type\\\":{\\\"anyOf\\\":[{\\\"const\\\":\\\"quantitative\\\",\\\"description\\\":\\\"The type of measurement (`\\\\\\\"quantitative\\\\\\\"`, `\\\\\\\"temporal\\\\\\\"`, `\\\\\\\"ordinal\\\\\\\"`, or `\\\\\\\"nominal\\\\\\\"`) for the encoded field or constant value (`datum`). It can also be a `\\\\\\\"geojson\\\\\\\"` type for encoding ['geoshape'](https://vega.github.io/vega-lite/docs/geoshape.html).\\\\n\\\\nVega-Lite automatically infers data types in many cases as discussed below. However, type is required for a field if: (1) the field is not nominal and the field encoding has no specified `aggregate` (except `argmin` and `argmax`), `bin`, scale type, custom `sort` order, nor `timeUnit` or (2) if you wish to use an ordinal scale for a field with `bin` or `timeUnit`.\\\\n\\\\n__Default value:__\\\\n\\\\n1) For a data `field`, `\\\\\\\"nominal\\\\\\\"` is the default data type unless the field encoding has `aggregate`, `channel`, `bin`, scale type, `sort`, or `timeUnit` that satisfies the following criteria: - `\\\\\\\"quantitative\\\\\\\"` is the default type if (1) the encoded field contains `bin` or `aggregate` except `\\\\\\\"argmin\\\\\\\"` and `\\\\\\\"argmax\\\\\\\"`, (2) the encoding channel is `latitude` or `longitude` channel or (3) if the specified scale type is [a quantitative scale](https://vega.github.io/vega-lite/docs/scale.html#type). - `\\\\\\\"temporal\\\\\\\"` is the default type if (1) the encoded field contains `timeUnit` or (2) the specified scale type is a time or utc scale - `ordinal\\\\\\\"\\\\\\\"` is the default type if (1) the encoded field contains a [custom `sort` order](https://vega.github.io/vega-lite/docs/sort.html#specifying-custom-sort-order), (2) the specified scale type is an ordinal/point/band scale, or (3) the encoding channel is `order`.\\\\n\\\\n2) For a constant value in data domain (`datum`): - `\\\\\\\"quantitative\\\\\\\"` if the datum is a number - `\\\\\\\"nominal\\\\\\\"` if the datum is a string - `\\\\\\\"temporal\\\\\\\"` if the datum is [a date time object](https://vega.github.io/vega-lite/docs/datetime.html)\\\\n\\\\n__Note:__ - Data `type` describes the semantics of the data rather than the primitive data types (number, string, etc.). The same primitive data type can have different types of measurement. For example, numeric data can represent quantitative, ordinal, or nominal data. - Data values for a temporal field can be either a date-time string (e.g., `\\\\\\\"2015-03-07 12:32:17\\\\\\\"`, `\\\\\\\"17:01\\\\\\\"`, `\\\\\\\"2015-03-16\\\\\\\"`. `\\\\\\\"2015\\\\\\\"`) or a timestamp number (e.g., `1552199579097`). - When using with [`bin`](https://vega.github.io/vega-lite/docs/bin.html), the `type` property can be either `\\\\\\\"quantitative\\\\\\\"` (for using a linear bin scale) or [`\\\\\\\"ordinal\\\\\\\"` (for using an ordinal bin scale)](https://vega.github.io/vega-lite/docs/type.html#cast-bin). - When using with [`timeUnit`](https://vega.github.io/vega-lite/docs/timeunit.html), the `type` property can be either `\\\\\\\"temporal\\\\\\\"` (default, for using a temporal scale) or [`\\\\\\\"ordinal\\\\\\\"` (for using an ordinal scale)](https://vega.github.io/vega-lite/docs/type.html#cast-bin). - When using with [`aggregate`](https://vega.github.io/vega-lite/docs/aggregate.html), the `type` property refers to the post-aggregation data type. For example, we can calculate count `distinct` of a categorical field `\\\\\\\"cat\\\\\\\"` using `{\\\\\\\"aggregate\\\\\\\": \\\\\\\"distinct\\\\\\\", \\\\\\\"field\\\\\\\": \\\\\\\"cat\\\\\\\"}`. The `\\\\\\\"type\\\\\\\"` of the aggregate output is `\\\\\\\"quantitative\\\\\\\"`. - Secondary channels (e.g., `x2`, `y2`, `xError`, `yError`) do not have `type` as they must have exactly the same type as their primary channels (e.g., `x`, `y`).\\\\n\\\\n__See also:__ [`type`](https://vega.github.io/vega-lite/docs/type.html) documentation.\\\",\\\"type\\\":\\\"string\\\"},{\\\"$ref\\\":\\\"#/definitions/Type\\\",\\\"description\\\":\\\"The type of measurement (`\\\\\\\"quantitative\\\\\\\"`, `\\\\\\\"temporal\\\\\\\"`, `\\\\\\\"ordinal\\\\\\\"`, or `\\\\\\\"nominal\\\\\\\"`) for the encoded field or constant value (`datum`). It can also be a `\\\\\\\"geojson\\\\\\\"` type for encoding ['geoshape'](https://vega.github.io/vega-lite/docs/geoshape.html).\\\\n\\\\nVega-Lite automatically infers data types in many cases as discussed below. However, type is required for a field if: (1) the field is not nominal and the field encoding has no specified `aggregate` (except `argmin` and `argmax`), `bin`, scale type, custom `sort` order, nor `timeUnit` or (2) if you wish to use an ordinal scale for a field with `bin` or `timeUnit`.\\\\n\\\\n__Default value:__\\\\n\\\\n1) For a data `field`, `\\\\\\\"nominal\\\\\\\"` is the default data type unless the field encoding has `aggregate`, `channel`, `bin`, scale type, `sort`, or `timeUnit` that satisfies the following criteria: - `\\\\\\\"quantitative\\\\\\\"` is the default type if (1) the encoded field contains `bin` or `aggregate` except `\\\\\\\"argmin\\\\\\\"` and `\\\\\\\"argmax\\\\\\\"`, (2) the encoding channel is `latitude` or `longitude` channel or (3) if the specified scale type is [a quantitative scale](https://vega.github.io/vega-lite/docs/scale.html#type). - `\\\\\\\"temporal\\\\\\\"` is the default type if (1) the encoded field contains `timeUnit` or (2) the specified scale type is a time or utc scale - `ordinal\\\\\\\"\\\\\\\"` is the default type if (1) the encoded field contains a [custom `sort` order](https://vega.github.io/vega-lite/docs/sort.html#specifying-custom-sort-order), (2) the specified scale type is an ordinal/point/band scale, or (3) the encoding channel is `order`.\\\\n\\\\n2) For a constant value in data domain (`datum`): - `\\\\\\\"quantitative\\\\\\\"` if the datum is a number - `\\\\\\\"nominal\\\\\\\"` if the datum is a string - `\\\\\\\"temporal\\\\\\\"` if the datum is [a date time object](https://vega.github.io/vega-lite/docs/datetime.html)\\\\n\\\\n__Note:__ - Data `type` describes the semantics of the data rather than the primitive data types (number, string, etc.). The same primitive data type can have different types of measurement. For example, numeric data can represent quantitative, ordinal, or nominal data. - Data values for a temporal field can be either a date-time string (e.g., `\\\\\\\"2015-03-07 12:32:17\\\\\\\"`, `\\\\\\\"17:01\\\\\\\"`, `\\\\\\\"2015-03-16\\\\\\\"`. `\\\\\\\"2015\\\\\\\"`) or a timestamp number (e.g., `1552199579097`). - When using with [`bin`](https://vega.github.io/vega-lite/docs/bin.html), the `type` property can be either `\\\\\\\"quantitative\\\\\\\"` (for using a linear bin scale) or [`\\\\\\\"ordinal\\\\\\\"` (for using an ordinal bin scale)](https://vega.github.io/vega-lite/docs/type.html#cast-bin). - When using with [`timeUnit`](https://vega.github.io/vega-lite/docs/timeunit.html), the `type` property can be either `\\\\\\\"temporal\\\\\\\"` (default, for using a temporal scale) or [`\\\\\\\"ordinal\\\\\\\"` (for using an ordinal scale)](https://vega.github.io/vega-lite/docs/type.html#cast-bin). - When using with [`aggregate`](https://vega.github.io/vega-lite/docs/aggregate.html), the `type` property refers to the post-aggregation data type. For example, we can calculate count `distinct` of a categorical field `\\\\\\\"cat\\\\\\\"` using `{\\\\\\\"aggregate\\\\\\\": \\\\\\\"distinct\\\\\\\", \\\\\\\"field\\\\\\\": \\\\\\\"cat\\\\\\\"}`. The `\\\\\\\"type\\\\\\\"` of the aggregate output is `\\\\\\\"quantitative\\\\\\\"`. - Secondary channels (e.g., `x2`, `y2`, `xError`, `yError`) do not have `type` as they must have exactly the same type as their primary channels (e.g., `x`, `y`).\\\\n\\\\n__See also:__ [`type`](https://vega.github.io/vega-lite/docs/type.html) documentation.\\\"}],\\\"description\\\":\\\"The type of measurement (`\\\\\\\"quantitative\\\\\\\"`, `\\\\\\\"temporal\\\\\\\"`, `\\\\\\\"ordinal\\\\\\\"`, or `\\\\\\\"nominal\\\\\\\"`) for the encoded field or constant value (`datum`). It can also be a `\\\\\\\"geojson\\\\\\\"` type for encoding ['geoshape'](https://vega.github.io/vega-lite/docs/geoshape.html).\\\\n\\\\nVega-Lite automatically infers data types in many cases as discussed below. However, type is required for a field if: (1) the field is not nominal and the field encoding has no specified `aggregate` (except `argmin` and `argmax`), `bin`, scale type, custom `sort` order, nor `timeUnit` or (2) if you wish to use an ordinal scale for a field with `bin` or `timeUnit`.\\\\n\\\\n__Default value:__\\\\n\\\\n1) For a data `field`, `\\\\\\\"nominal\\\\\\\"` is the default data type unless the field encoding has `aggregate`, `channel`, `bin`, scale type, `sort`, or `timeUnit` that satisfies the following criteria: - `\\\\\\\"quantitative\\\\\\\"` is the default type if (1) the encoded field contains `bin` or `aggregate` except `\\\\\\\"argmin\\\\\\\"` and `\\\\\\\"argmax\\\\\\\"`, (2) the encoding channel is `latitude` or `longitude` channel or (3) if the specified scale type is [a quantitative scale](https://vega.github.io/vega-lite/docs/scale.html#type). - `\\\\\\\"temporal\\\\\\\"` is the default type if (1) the encoded field contains `timeUnit` or (2) the specified scale type is a time or utc scale - `ordinal\\\\\\\"\\\\\\\"` is the default type if (1) the encoded field contains a [custom `sort` order](https://vega.github.io/vega-lite/docs/sort.html#specifying-custom-sort-order), (2) the specified scale type is an ordinal/point/band scale, or (3) the encoding channel is `order`.\\\\n\\\\n2) For a constant value in data domain (`datum`): - `\\\\\\\"quantitative\\\\\\\"` if the datum is a number - `\\\\\\\"nominal\\\\\\\"` if the datum is a string - `\\\\\\\"temporal\\\\\\\"` if the datum is [a date time object](https://vega.github.io/vega-lite/docs/datetime.html)\\\\n\\\\n__Note:__ - Data `type` describes the semantics of the data rather than the primitive data types (number, string, etc.). The same primitive data type can have different types of measurement. For example, numeric data can represent quantitative, ordinal, or nominal data. - Data values for a temporal field can be either a date-time string (e.g., `\\\\\\\"2015-03-07 12:32:17\\\\\\\"`, `\\\\\\\"17:01\\\\\\\"`, `\\\\\\\"2015-03-16\\\\\\\"`. `\\\\\\\"2015\\\\\\\"`) or a timestamp number (e.g., `1552199579097`). - When using with [`bin`](https://vega.github.io/vega-lite/docs/bin.html), the `type` property can be either `\\\\\\\"quantitative\\\\\\\"` (for using a linear bin scale) or [`\\\\\\\"ordinal\\\\\\\"` (for using an ordinal bin scale)](https://vega.github.io/vega-lite/docs/type.html#cast-bin). - When using with [`timeUnit`](https://vega.github.io/vega-lite/docs/timeunit.html), the `type` property can be either `\\\\\\\"temporal\\\\\\\"` (default, for using a temporal scale) or [`\\\\\\\"ordinal\\\\\\\"` (for using an ordinal scale)](https://vega.github.io/vega-lite/docs/type.html#cast-bin). - When using with [`aggregate`](https://vega.github.io/vega-lite/docs/aggregate.html), the `type` property refers to the post-aggregation data type. For example, we can calculate count `distinct` of a categorical field `\\\\\\\"cat\\\\\\\"` using `{\\\\\\\"aggregate\\\\\\\": \\\\\\\"distinct\\\\\\\", \\\\\\\"field\\\\\\\": \\\\\\\"cat\\\\\\\"}`. The `\\\\\\\"type\\\\\\\"` of the aggregate output is `\\\\\\\"quantitative\\\\\\\"`. - Secondary channels (e.g., `x2`, `y2`, `xError`, `yError`) do not have `type` as they must have exactly the same type as their primary channels (e.g., `x`, `y`).\\\\n\\\\n__See also:__ [`type`](https://vega.github.io/vega-lite/docs/type.html) documentation.\\\"},\\\"value\\\":{\\\"anyOf\\\":[{\\\"type\\\":\\\"number\\\"},{\\\"$ref\\\":\\\"#/definitions/ExprRef\\\"}],\\\"description\\\":\\\"A constant value in visual domain (e.g., `\\\\\\\"red\\\\\\\"` / `\\\\\\\"#0099ff\\\\\\\"` / [gradient definition](https://vega.github.io/vega-lite/docs/types.html#gradient) for color, values between `0` to `1` for opacity).\\\"}},\\\"type\\\":\\\"object\\\"},\\\"latitude2\\\":{\\\"additionalProperties\\\":false,\\\"properties\\\":{\\\"aggregate\\\":{\\\"$ref\\\":\\\"#/definitions/Aggregate\\\",\\\"description\\\":\\\"Aggregation function for the field (e.g., `\\\\\\\"mean\\\\\\\"`, `\\\\\\\"sum\\\\\\\"`, `\\\\\\\"median\\\\\\\"`, `\\\\\\\"min\\\\\\\"`, `\\\\\\\"max\\\\\\\"`, `\\\\\\\"count\\\\\\\"`).\\\\n\\\\n__Default value:__ `undefined` (None)\\\\n\\\\n__See also:__ [`aggregate`](https://vega.github.io/vega-lite/docs/aggregate.html) documentation.\\\"},\\\"band\\\":{\\\"description\\\":\\\"For rect-based marks (`rect`, `bar`, and `image`), mark size relative to bandwidth of [band scales](https://vega.github.io/vega-lite/docs/scale.html#band), bins or time units. If set to `1`, the mark size is set to the bandwidth, the bin interval, or the time unit interval. If set to `0.5`, the mark size is half of the bandwidth or the time unit interval.\\\\n\\\\nFor other marks, relative position on a band of a stacked, binned, time unit or band scale. If set to `0`, the marks will be positioned at the beginning of the band. If set to `0.5`, the marks will be positioned in the middle of the band.\\\",\\\"maximum\\\":1,\\\"minimum\\\":0,\\\"type\\\":\\\"number\\\"},\\\"bin\\\":{\\\"description\\\":\\\"A flag for binning a `quantitative` field, [an object defining binning parameters](https://vega.github.io/vega-lite/docs/bin.html#params), or indicating that the data for `x` or `y` channel are binned before they are imported into Vega-Lite (`\\\\\\\"binned\\\\\\\"`).\\\\n\\\\n- If `true`, default [binning parameters](https://vega.github.io/vega-lite/docs/bin.html) will be applied.\\\\n\\\\n- If `\\\\\\\"binned\\\\\\\"`, this indicates that the data for the `x` (or `y`) channel are already binned. You can map the bin-start field to `x` (or `y`) and the bin-end field to `x2` (or `y2`). The scale and axis will be formatted similar to binning in Vega-Lite.  To adjust the axis ticks based on the bin step, you can also set the axis's [`tickMinStep`](https://vega.github.io/vega-lite/docs/axis.html#ticks) property.\\\\n\\\\n__Default value:__ `false`\\\\n\\\\n__See also:__ [`bin`](https://vega.github.io/vega-lite/docs/bin.html) documentation.\\\",\\\"type\\\":\\\"null\\\"},\\\"datum\\\":{\\\"anyOf\\\":[{\\\"$ref\\\":\\\"#/definitions/PrimitiveValue\\\"},{\\\"$ref\\\":\\\"#/definitions/DateTime\\\"},{\\\"$ref\\\":\\\"#/definitions/ExprRef\\\"},{\\\"$ref\\\":\\\"#/definitions/RepeatRef\\\"}],\\\"description\\\":\\\"A constant value in data domain.\\\"},\\\"field\\\":{\\\"$ref\\\":\\\"#/definitions/Field\\\",\\\"description\\\":\\\"__Required.__ A string defining the name of the field from which to pull a data value or an object defining iterated values from the [`repeat`](https://vega.github.io/vega-lite/docs/repeat.html) operator.\\\\n\\\\n__See also:__ [`field`](https://vega.github.io/vega-lite/docs/field.html) documentation.\\\\n\\\\n__Notes:__ 1)  Dots (`.`) and brackets (`[` and `]`) can be used to access nested objects (e.g., `\\\\\\\"field\\\\\\\": \\\\\\\"foo.bar\\\\\\\"` and `\\\\\\\"field\\\\\\\": \\\\\\\"foo['bar']\\\\\\\"`). If field names contain dots or brackets but are not nested, you can use `\\\\\\\\\\\\\\\\` to escape dots and brackets (e.g., `\\\\\\\"a\\\\\\\\\\\\\\\\.b\\\\\\\"` and `\\\\\\\"a\\\\\\\\\\\\\\\\[0\\\\\\\\\\\\\\\\]\\\\\\\"`). See more details about escaping in the [field documentation](https://vega.github.io/vega-lite/docs/field.html). 2) `field` is not required if `aggregate` is `count`.\\\"},\\\"timeUnit\\\":{\\\"anyOf\\\":[{\\\"$ref\\\":\\\"#/definitions/TimeUnit\\\"},{\\\"$ref\\\":\\\"#/definitions/TimeUnitParams\\\"}],\\\"description\\\":\\\"Time unit (e.g., `year`, `yearmonth`, `month`, `hours`) for a temporal field. or [a temporal field that gets casted as ordinal](https://vega.github.io/vega-lite/docs/type.html#cast).\\\\n\\\\n__Default value:__ `undefined` (None)\\\\n\\\\n__See also:__ [`timeUnit`](https://vega.github.io/vega-lite/docs/timeunit.html) documentation.\\\"},\\\"title\\\":{\\\"anyOf\\\":[{\\\"$ref\\\":\\\"#/definitions/Text\\\"},{\\\"type\\\":\\\"null\\\"}],\\\"description\\\":\\\"A title for the field. If `null`, the title will be removed.\\\\n\\\\n__Default value:__  derived from the field's name and transformation function (`aggregate`, `bin` and `timeUnit`). If the field has an aggregate function, the function is displayed as part of the title (e.g., `\\\\\\\"Sum of Profit\\\\\\\"`). If the field is binned or has a time unit applied, the applied function is shown in parentheses (e.g., `\\\\\\\"Profit (binned)\\\\\\\"`, `\\\\\\\"Transaction Date (year-month)\\\\\\\"`). Otherwise, the title is simply the field name.\\\\n\\\\n__Notes__:\\\\n\\\\n1) You can customize the default field title format by providing the [`fieldTitle`](https://vega.github.io/vega-lite/docs/config.html#top-level-config) property in the [config](https://vega.github.io/vega-lite/docs/config.html) or [`fieldTitle` function via the `compile` function's options](https://vega.github.io/vega-lite/docs/compile.html#field-title).\\\\n\\\\n2) If both field definition's `title` and axis, header, or legend `title` are defined, axis/header/legend title will be used.\\\"},\\\"type\\\":{\\\"$ref\\\":\\\"#/definitions/Type\\\",\\\"description\\\":\\\"The type of measurement (`\\\\\\\"quantitative\\\\\\\"`, `\\\\\\\"temporal\\\\\\\"`, `\\\\\\\"ordinal\\\\\\\"`, or `\\\\\\\"nominal\\\\\\\"`) for the encoded field or constant value (`datum`). It can also be a `\\\\\\\"geojson\\\\\\\"` type for encoding ['geoshape'](https://vega.github.io/vega-lite/docs/geoshape.html).\\\\n\\\\nVega-Lite automatically infers data types in many cases as discussed below. However, type is required for a field if: (1) the field is not nominal and the field encoding has no specified `aggregate` (except `argmin` and `argmax`), `bin`, scale type, custom `sort` order, nor `timeUnit` or (2) if you wish to use an ordinal scale for a field with `bin` or `timeUnit`.\\\\n\\\\n__Default value:__\\\\n\\\\n1) For a data `field`, `\\\\\\\"nominal\\\\\\\"` is the default data type unless the field encoding has `aggregate`, `channel`, `bin`, scale type, `sort`, or `timeUnit` that satisfies the following criteria: - `\\\\\\\"quantitative\\\\\\\"` is the default type if (1) the encoded field contains `bin` or `aggregate` except `\\\\\\\"argmin\\\\\\\"` and `\\\\\\\"argmax\\\\\\\"`, (2) the encoding channel is `latitude` or `longitude` channel or (3) if the specified scale type is [a quantitative scale](https://vega.github.io/vega-lite/docs/scale.html#type). - `\\\\\\\"temporal\\\\\\\"` is the default type if (1) the encoded field contains `timeUnit` or (2) the specified scale type is a time or utc scale - `ordinal\\\\\\\"\\\\\\\"` is the default type if (1) the encoded field contains a [custom `sort` order](https://vega.github.io/vega-lite/docs/sort.html#specifying-custom-sort-order), (2) the specified scale type is an ordinal/point/band scale, or (3) the encoding channel is `order`.\\\\n\\\\n2) For a constant value in data domain (`datum`): - `\\\\\\\"quantitative\\\\\\\"` if the datum is a number - `\\\\\\\"nominal\\\\\\\"` if the datum is a string - `\\\\\\\"temporal\\\\\\\"` if the datum is [a date time object](https://vega.github.io/vega-lite/docs/datetime.html)\\\\n\\\\n__Note:__ - Data `type` describes the semantics of the data rather than the primitive data types (number, string, etc.). The same primitive data type can have different types of measurement. For example, numeric data can represent quantitative, ordinal, or nominal data. - Data values for a temporal field can be either a date-time string (e.g., `\\\\\\\"2015-03-07 12:32:17\\\\\\\"`, `\\\\\\\"17:01\\\\\\\"`, `\\\\\\\"2015-03-16\\\\\\\"`. `\\\\\\\"2015\\\\\\\"`) or a timestamp number (e.g., `1552199579097`). - When using with [`bin`](https://vega.github.io/vega-lite/docs/bin.html), the `type` property can be either `\\\\\\\"quantitative\\\\\\\"` (for using a linear bin scale) or [`\\\\\\\"ordinal\\\\\\\"` (for using an ordinal bin scale)](https://vega.github.io/vega-lite/docs/type.html#cast-bin). - When using with [`timeUnit`](https://vega.github.io/vega-lite/docs/timeunit.html), the `type` property can be either `\\\\\\\"temporal\\\\\\\"` (default, for using a temporal scale) or [`\\\\\\\"ordinal\\\\\\\"` (for using an ordinal scale)](https://vega.github.io/vega-lite/docs/type.html#cast-bin). - When using with [`aggregate`](https://vega.github.io/vega-lite/docs/aggregate.html), the `type` property refers to the post-aggregation data type. For example, we can calculate count `distinct` of a categorical field `\\\\\\\"cat\\\\\\\"` using `{\\\\\\\"aggregate\\\\\\\": \\\\\\\"distinct\\\\\\\", \\\\\\\"field\\\\\\\": \\\\\\\"cat\\\\\\\"}`. The `\\\\\\\"type\\\\\\\"` of the aggregate output is `\\\\\\\"quantitative\\\\\\\"`. - Secondary channels (e.g., `x2`, `y2`, `xError`, `yError`) do not have `type` as they must have exactly the same type as their primary channels (e.g., `x`, `y`).\\\\n\\\\n__See also:__ [`type`](https://vega.github.io/vega-lite/docs/type.html) documentation.\\\"},\\\"value\\\":{\\\"anyOf\\\":[{\\\"type\\\":\\\"number\\\"},{\\\"const\\\":\\\"width\\\",\\\"type\\\":\\\"string\\\"},{\\\"const\\\":\\\"height\\\",\\\"type\\\":\\\"string\\\"},{\\\"$ref\\\":\\\"#/definitions/ExprRef\\\"}],\\\"description\\\":\\\"A constant value in visual domain (e.g., `\\\\\\\"red\\\\\\\"` / `\\\\\\\"#0099ff\\\\\\\"` / [gradient definition](https://vega.github.io/vega-lite/docs/types.html#gradient) for color, values between `0` to `1` for opacity).\\\"}},\\\"type\\\":\\\"object\\\"},\\\"longitude\\\":{\\\"additionalProperties\\\":false,\\\"properties\\\":{\\\"aggregate\\\":{\\\"$ref\\\":\\\"#/definitions/Aggregate\\\",\\\"description\\\":\\\"Aggregation function for the field (e.g., `\\\\\\\"mean\\\\\\\"`, `\\\\\\\"sum\\\\\\\"`, `\\\\\\\"median\\\\\\\"`, `\\\\\\\"min\\\\\\\"`, `\\\\\\\"max\\\\\\\"`, `\\\\\\\"count\\\\\\\"`).\\\\n\\\\n__Default value:__ `undefined` (None)\\\\n\\\\n__See also:__ [`aggregate`](https://vega.github.io/vega-lite/docs/aggregate.html) documentation.\\\"},\\\"band\\\":{\\\"description\\\":\\\"For rect-based marks (`rect`, `bar`, and `image`), mark size relative to bandwidth of [band scales](https://vega.github.io/vega-lite/docs/scale.html#band), bins or time units. If set to `1`, the mark size is set to the bandwidth, the bin interval, or the time unit interval. If set to `0.5`, the mark size is half of the bandwidth or the time unit interval.\\\\n\\\\nFor other marks, relative position on a band of a stacked, binned, time unit or band scale. If set to `0`, the marks will be positioned at the beginning of the band. If set to `0.5`, the marks will be positioned in the middle of the band.\\\",\\\"maximum\\\":1,\\\"minimum\\\":0,\\\"type\\\":\\\"number\\\"},\\\"bin\\\":{\\\"description\\\":\\\"A flag for binning a `quantitative` field, [an object defining binning parameters](https://vega.github.io/vega-lite/docs/bin.html#params), or indicating that the data for `x` or `y` channel are binned before they are imported into Vega-Lite (`\\\\\\\"binned\\\\\\\"`).\\\\n\\\\n- If `true`, default [binning parameters](https://vega.github.io/vega-lite/docs/bin.html) will be applied.\\\\n\\\\n- If `\\\\\\\"binned\\\\\\\"`, this indicates that the data for the `x` (or `y`) channel are already binned. You can map the bin-start field to `x` (or `y`) and the bin-end field to `x2` (or `y2`). The scale and axis will be formatted similar to binning in Vega-Lite.  To adjust the axis ticks based on the bin step, you can also set the axis's [`tickMinStep`](https://vega.github.io/vega-lite/docs/axis.html#ticks) property.\\\\n\\\\n__Default value:__ `false`\\\\n\\\\n__See also:__ [`bin`](https://vega.github.io/vega-lite/docs/bin.html) documentation.\\\",\\\"type\\\":\\\"null\\\"},\\\"datum\\\":{\\\"anyOf\\\":[{\\\"$ref\\\":\\\"#/definitions/PrimitiveValue\\\"},{\\\"$ref\\\":\\\"#/definitions/DateTime\\\"},{\\\"$ref\\\":\\\"#/definitions/ExprRef\\\"},{\\\"$ref\\\":\\\"#/definitions/RepeatRef\\\"}],\\\"description\\\":\\\"A constant value in data domain.\\\"},\\\"field\\\":{\\\"$ref\\\":\\\"#/definitions/Field\\\",\\\"description\\\":\\\"__Required.__ A string defining the name of the field from which to pull a data value or an object defining iterated values from the [`repeat`](https://vega.github.io/vega-lite/docs/repeat.html) operator.\\\\n\\\\n__See also:__ [`field`](https://vega.github.io/vega-lite/docs/field.html) documentation.\\\\n\\\\n__Notes:__ 1)  Dots (`.`) and brackets (`[` and `]`) can be used to access nested objects (e.g., `\\\\\\\"field\\\\\\\": \\\\\\\"foo.bar\\\\\\\"` and `\\\\\\\"field\\\\\\\": \\\\\\\"foo['bar']\\\\\\\"`). If field names contain dots or brackets but are not nested, you can use `\\\\\\\\\\\\\\\\` to escape dots and brackets (e.g., `\\\\\\\"a\\\\\\\\\\\\\\\\.b\\\\\\\"` and `\\\\\\\"a\\\\\\\\\\\\\\\\[0\\\\\\\\\\\\\\\\]\\\\\\\"`). See more details about escaping in the [field documentation](https://vega.github.io/vega-lite/docs/field.html). 2) `field` is not required if `aggregate` is `count`.\\\"},\\\"timeUnit\\\":{\\\"anyOf\\\":[{\\\"$ref\\\":\\\"#/definitions/TimeUnit\\\"},{\\\"$ref\\\":\\\"#/definitions/TimeUnitParams\\\"}],\\\"description\\\":\\\"Time unit (e.g., `year`, `yearmonth`, `month`, `hours`) for a temporal field. or [a temporal field that gets casted as ordinal](https://vega.github.io/vega-lite/docs/type.html#cast).\\\\n\\\\n__Default value:__ `undefined` (None)\\\\n\\\\n__See also:__ [`timeUnit`](https://vega.github.io/vega-lite/docs/timeunit.html) documentation.\\\"},\\\"title\\\":{\\\"anyOf\\\":[{\\\"$ref\\\":\\\"#/definitions/Text\\\"},{\\\"type\\\":\\\"null\\\"}],\\\"description\\\":\\\"A title for the field. If `null`, the title will be removed.\\\\n\\\\n__Default value:__  derived from the field's name and transformation function (`aggregate`, `bin` and `timeUnit`). If the field has an aggregate function, the function is displayed as part of the title (e.g., `\\\\\\\"Sum of Profit\\\\\\\"`). If the field is binned or has a time unit applied, the applied function is shown in parentheses (e.g., `\\\\\\\"Profit (binned)\\\\\\\"`, `\\\\\\\"Transaction Date (year-month)\\\\\\\"`). Otherwise, the title is simply the field name.\\\\n\\\\n__Notes__:\\\\n\\\\n1) You can customize the default field title format by providing the [`fieldTitle`](https://vega.github.io/vega-lite/docs/config.html#top-level-config) property in the [config](https://vega.github.io/vega-lite/docs/config.html) or [`fieldTitle` function via the `compile` function's options](https://vega.github.io/vega-lite/docs/compile.html#field-title).\\\\n\\\\n2) If both field definition's `title` and axis, header, or legend `title` are defined, axis/header/legend title will be used.\\\"},\\\"type\\\":{\\\"anyOf\\\":[{\\\"const\\\":\\\"quantitative\\\",\\\"description\\\":\\\"The type of measurement (`\\\\\\\"quantitative\\\\\\\"`, `\\\\\\\"temporal\\\\\\\"`, `\\\\\\\"ordinal\\\\\\\"`, or `\\\\\\\"nominal\\\\\\\"`) for the encoded field or constant value (`datum`). It can also be a `\\\\\\\"geojson\\\\\\\"` type for encoding ['geoshape'](https://vega.github.io/vega-lite/docs/geoshape.html).\\\\n\\\\nVega-Lite automatically infers data types in many cases as discussed below. However, type is required for a field if: (1) the field is not nominal and the field encoding has no specified `aggregate` (except `argmin` and `argmax`), `bin`, scale type, custom `sort` order, nor `timeUnit` or (2) if you wish to use an ordinal scale for a field with `bin` or `timeUnit`.\\\\n\\\\n__Default value:__\\\\n\\\\n1) For a data `field`, `\\\\\\\"nominal\\\\\\\"` is the default data type unless the field encoding has `aggregate`, `channel`, `bin`, scale type, `sort`, or `timeUnit` that satisfies the following criteria: - `\\\\\\\"quantitative\\\\\\\"` is the default type if (1) the encoded field contains `bin` or `aggregate` except `\\\\\\\"argmin\\\\\\\"` and `\\\\\\\"argmax\\\\\\\"`, (2) the encoding channel is `latitude` or `longitude` channel or (3) if the specified scale type is [a quantitative scale](https://vega.github.io/vega-lite/docs/scale.html#type). - `\\\\\\\"temporal\\\\\\\"` is the default type if (1) the encoded field contains `timeUnit` or (2) the specified scale type is a time or utc scale - `ordinal\\\\\\\"\\\\\\\"` is the default type if (1) the encoded field contains a [custom `sort` order](https://vega.github.io/vega-lite/docs/sort.html#specifying-custom-sort-order), (2) the specified scale type is an ordinal/point/band scale, or (3) the encoding channel is `order`.\\\\n\\\\n2) For a constant value in data domain (`datum`): - `\\\\\\\"quantitative\\\\\\\"` if the datum is a number - `\\\\\\\"nominal\\\\\\\"` if the datum is a string - `\\\\\\\"temporal\\\\\\\"` if the datum is [a date time object](https://vega.github.io/vega-lite/docs/datetime.html)\\\\n\\\\n__Note:__ - Data `type` describes the semantics of the data rather than the primitive data types (number, string, etc.). The same primitive data type can have different types of measurement. For example, numeric data can represent quantitative, ordinal, or nominal data. - Data values for a temporal field can be either a date-time string (e.g., `\\\\\\\"2015-03-07 12:32:17\\\\\\\"`, `\\\\\\\"17:01\\\\\\\"`, `\\\\\\\"2015-03-16\\\\\\\"`. `\\\\\\\"2015\\\\\\\"`) or a timestamp number (e.g., `1552199579097`). - When using with [`bin`](https://vega.github.io/vega-lite/docs/bin.html), the `type` property can be either `\\\\\\\"quantitative\\\\\\\"` (for using a linear bin scale) or [`\\\\\\\"ordinal\\\\\\\"` (for using an ordinal bin scale)](https://vega.github.io/vega-lite/docs/type.html#cast-bin). - When using with [`timeUnit`](https://vega.github.io/vega-lite/docs/timeunit.html), the `type` property can be either `\\\\\\\"temporal\\\\\\\"` (default, for using a temporal scale) or [`\\\\\\\"ordinal\\\\\\\"` (for using an ordinal scale)](https://vega.github.io/vega-lite/docs/type.html#cast-bin). - When using with [`aggregate`](https://vega.github.io/vega-lite/docs/aggregate.html), the `type` property refers to the post-aggregation data type. For example, we can calculate count `distinct` of a categorical field `\\\\\\\"cat\\\\\\\"` using `{\\\\\\\"aggregate\\\\\\\": \\\\\\\"distinct\\\\\\\", \\\\\\\"field\\\\\\\": \\\\\\\"cat\\\\\\\"}`. The `\\\\\\\"type\\\\\\\"` of the aggregate output is `\\\\\\\"quantitative\\\\\\\"`. - Secondary channels (e.g., `x2`, `y2`, `xError`, `yError`) do not have `type` as they must have exactly the same type as their primary channels (e.g., `x`, `y`).\\\\n\\\\n__See also:__ [`type`](https://vega.github.io/vega-lite/docs/type.html) documentation.\\\",\\\"type\\\":\\\"string\\\"},{\\\"$ref\\\":\\\"#/definitions/Type\\\",\\\"description\\\":\\\"The type of measurement (`\\\\\\\"quantitative\\\\\\\"`, `\\\\\\\"temporal\\\\\\\"`, `\\\\\\\"ordinal\\\\\\\"`, or `\\\\\\\"nominal\\\\\\\"`) for the encoded field or constant value (`datum`). It can also be a `\\\\\\\"geojson\\\\\\\"` type for encoding ['geoshape'](https://vega.github.io/vega-lite/docs/geoshape.html).\\\\n\\\\nVega-Lite automatically infers data types in many cases as discussed below. However, type is required for a field if: (1) the field is not nominal and the field encoding has no specified `aggregate` (except `argmin` and `argmax`), `bin`, scale type, custom `sort` order, nor `timeUnit` or (2) if you wish to use an ordinal scale for a field with `bin` or `timeUnit`.\\\\n\\\\n__Default value:__\\\\n\\\\n1) For a data `field`, `\\\\\\\"nominal\\\\\\\"` is the default data type unless the field encoding has `aggregate`, `channel`, `bin`, scale type, `sort`, or `timeUnit` that satisfies the following criteria: - `\\\\\\\"quantitative\\\\\\\"` is the default type if (1) the encoded field contains `bin` or `aggregate` except `\\\\\\\"argmin\\\\\\\"` and `\\\\\\\"argmax\\\\\\\"`, (2) the encoding channel is `latitude` or `longitude` channel or (3) if the specified scale type is [a quantitative scale](https://vega.github.io/vega-lite/docs/scale.html#type). - `\\\\\\\"temporal\\\\\\\"` is the default type if (1) the encoded field contains `timeUnit` or (2) the specified scale type is a time or utc scale - `ordinal\\\\\\\"\\\\\\\"` is the default type if (1) the encoded field contains a [custom `sort` order](https://vega.github.io/vega-lite/docs/sort.html#specifying-custom-sort-order), (2) the specified scale type is an ordinal/point/band scale, or (3) the encoding channel is `order`.\\\\n\\\\n2) For a constant value in data domain (`datum`): - `\\\\\\\"quantitative\\\\\\\"` if the datum is a number - `\\\\\\\"nominal\\\\\\\"` if the datum is a string - `\\\\\\\"temporal\\\\\\\"` if the datum is [a date time object](https://vega.github.io/vega-lite/docs/datetime.html)\\\\n\\\\n__Note:__ - Data `type` describes the semantics of the data rather than the primitive data types (number, string, etc.). The same primitive data type can have different types of measurement. For example, numeric data can represent quantitative, ordinal, or nominal data. - Data values for a temporal field can be either a date-time string (e.g., `\\\\\\\"2015-03-07 12:32:17\\\\\\\"`, `\\\\\\\"17:01\\\\\\\"`, `\\\\\\\"2015-03-16\\\\\\\"`. `\\\\\\\"2015\\\\\\\"`) or a timestamp number (e.g., `1552199579097`). - When using with [`bin`](https://vega.github.io/vega-lite/docs/bin.html), the `type` property can be either `\\\\\\\"quantitative\\\\\\\"` (for using a linear bin scale) or [`\\\\\\\"ordinal\\\\\\\"` (for using an ordinal bin scale)](https://vega.github.io/vega-lite/docs/type.html#cast-bin). - When using with [`timeUnit`](https://vega.github.io/vega-lite/docs/timeunit.html), the `type` property can be either `\\\\\\\"temporal\\\\\\\"` (default, for using a temporal scale) or [`\\\\\\\"ordinal\\\\\\\"` (for using an ordinal scale)](https://vega.github.io/vega-lite/docs/type.html#cast-bin). - When using with [`aggregate`](https://vega.github.io/vega-lite/docs/aggregate.html), the `type` property refers to the post-aggregation data type. For example, we can calculate count `distinct` of a categorical field `\\\\\\\"cat\\\\\\\"` using `{\\\\\\\"aggregate\\\\\\\": \\\\\\\"distinct\\\\\\\", \\\\\\\"field\\\\\\\": \\\\\\\"cat\\\\\\\"}`. The `\\\\\\\"type\\\\\\\"` of the aggregate output is `\\\\\\\"quantitative\\\\\\\"`. - Secondary channels (e.g., `x2`, `y2`, `xError`, `yError`) do not have `type` as they must have exactly the same type as their primary channels (e.g., `x`, `y`).\\\\n\\\\n__See also:__ [`type`](https://vega.github.io/vega-lite/docs/type.html) documentation.\\\"}],\\\"description\\\":\\\"The type of measurement (`\\\\\\\"quantitative\\\\\\\"`, `\\\\\\\"temporal\\\\\\\"`, `\\\\\\\"ordinal\\\\\\\"`, or `\\\\\\\"nominal\\\\\\\"`) for the encoded field or constant value (`datum`). It can also be a `\\\\\\\"geojson\\\\\\\"` type for encoding ['geoshape'](https://vega.github.io/vega-lite/docs/geoshape.html).\\\\n\\\\nVega-Lite automatically infers data types in many cases as discussed below. However, type is required for a field if: (1) the field is not nominal and the field encoding has no specified `aggregate` (except `argmin` and `argmax`), `bin`, scale type, custom `sort` order, nor `timeUnit` or (2) if you wish to use an ordinal scale for a field with `bin` or `timeUnit`.\\\\n\\\\n__Default value:__\\\\n\\\\n1) For a data `field`, `\\\\\\\"nominal\\\\\\\"` is the default data type unless the field encoding has `aggregate`, `channel`, `bin`, scale type, `sort`, or `timeUnit` that satisfies the following criteria: - `\\\\\\\"quantitative\\\\\\\"` is the default type if (1) the encoded field contains `bin` or `aggregate` except `\\\\\\\"argmin\\\\\\\"` and `\\\\\\\"argmax\\\\\\\"`, (2) the encoding channel is `latitude` or `longitude` channel or (3) if the specified scale type is [a quantitative scale](https://vega.github.io/vega-lite/docs/scale.html#type). - `\\\\\\\"temporal\\\\\\\"` is the default type if (1) the encoded field contains `timeUnit` or (2) the specified scale type is a time or utc scale - `ordinal\\\\\\\"\\\\\\\"` is the default type if (1) the encoded field contains a [custom `sort` order](https://vega.github.io/vega-lite/docs/sort.html#specifying-custom-sort-order), (2) the specified scale type is an ordinal/point/band scale, or (3) the encoding channel is `order`.\\\\n\\\\n2) For a constant value in data domain (`datum`): - `\\\\\\\"quantitative\\\\\\\"` if the datum is a number - `\\\\\\\"nominal\\\\\\\"` if the datum is a string - `\\\\\\\"temporal\\\\\\\"` if the datum is [a date time object](https://vega.github.io/vega-lite/docs/datetime.html)\\\\n\\\\n__Note:__ - Data `type` describes the semantics of the data rather than the primitive data types (number, string, etc.). The same primitive data type can have different types of measurement. For example, numeric data can represent quantitative, ordinal, or nominal data. - Data values for a temporal field can be either a date-time string (e.g., `\\\\\\\"2015-03-07 12:32:17\\\\\\\"`, `\\\\\\\"17:01\\\\\\\"`, `\\\\\\\"2015-03-16\\\\\\\"`. `\\\\\\\"2015\\\\\\\"`) or a timestamp number (e.g., `1552199579097`). - When using with [`bin`](https://vega.github.io/vega-lite/docs/bin.html), the `type` property can be either `\\\\\\\"quantitative\\\\\\\"` (for using a linear bin scale) or [`\\\\\\\"ordinal\\\\\\\"` (for using an ordinal bin scale)](https://vega.github.io/vega-lite/docs/type.html#cast-bin). - When using with [`timeUnit`](https://vega.github.io/vega-lite/docs/timeunit.html), the `type` property can be either `\\\\\\\"temporal\\\\\\\"` (default, for using a temporal scale) or [`\\\\\\\"ordinal\\\\\\\"` (for using an ordinal scale)](https://vega.github.io/vega-lite/docs/type.html#cast-bin). - When using with [`aggregate`](https://vega.github.io/vega-lite/docs/aggregate.html), the `type` property refers to the post-aggregation data type. For example, we can calculate count `distinct` of a categorical field `\\\\\\\"cat\\\\\\\"` using `{\\\\\\\"aggregate\\\\\\\": \\\\\\\"distinct\\\\\\\", \\\\\\\"field\\\\\\\": \\\\\\\"cat\\\\\\\"}`. The `\\\\\\\"type\\\\\\\"` of the aggregate output is `\\\\\\\"quantitative\\\\\\\"`. - Secondary channels (e.g., `x2`, `y2`, `xError`, `yError`) do not have `type` as they must have exactly the same type as their primary channels (e.g., `x`, `y`).\\\\n\\\\n__See also:__ [`type`](https://vega.github.io/vega-lite/docs/type.html) documentation.\\\"},\\\"value\\\":{\\\"anyOf\\\":[{\\\"type\\\":\\\"number\\\"},{\\\"$ref\\\":\\\"#/definitions/ExprRef\\\"}],\\\"description\\\":\\\"A constant value in visual domain (e.g., `\\\\\\\"red\\\\\\\"` / `\\\\\\\"#0099ff\\\\\\\"` / [gradient definition](https://vega.github.io/vega-lite/docs/types.html#gradient) for color, values between `0` to `1` for opacity).\\\"}},\\\"type\\\":\\\"object\\\"},\\\"longitude2\\\":{\\\"additionalProperties\\\":false,\\\"properties\\\":{\\\"aggregate\\\":{\\\"$ref\\\":\\\"#/definitions/Aggregate\\\",\\\"description\\\":\\\"Aggregation function for the field (e.g., `\\\\\\\"mean\\\\\\\"`, `\\\\\\\"sum\\\\\\\"`, `\\\\\\\"median\\\\\\\"`, `\\\\\\\"min\\\\\\\"`, `\\\\\\\"max\\\\\\\"`, `\\\\\\\"count\\\\\\\"`).\\\\n\\\\n__Default value:__ `undefined` (None)\\\\n\\\\n__See also:__ [`aggregate`](https://vega.github.io/vega-lite/docs/aggregate.html) documentation.\\\"},\\\"band\\\":{\\\"description\\\":\\\"For rect-based marks (`rect`, `bar`, and `image`), mark size relative to bandwidth of [band scales](https://vega.github.io/vega-lite/docs/scale.html#band), bins or time units. If set to `1`, the mark size is set to the bandwidth, the bin interval, or the time unit interval. If set to `0.5`, the mark size is half of the bandwidth or the time unit interval.\\\\n\\\\nFor other marks, relative position on a band of a stacked, binned, time unit or band scale. If set to `0`, the marks will be positioned at the beginning of the band. If set to `0.5`, the marks will be positioned in the middle of the band.\\\",\\\"maximum\\\":1,\\\"minimum\\\":0,\\\"type\\\":\\\"number\\\"},\\\"bin\\\":{\\\"description\\\":\\\"A flag for binning a `quantitative` field, [an object defining binning parameters](https://vega.github.io/vega-lite/docs/bin.html#params), or indicating that the data for `x` or `y` channel are binned before they are imported into Vega-Lite (`\\\\\\\"binned\\\\\\\"`).\\\\n\\\\n- If `true`, default [binning parameters](https://vega.github.io/vega-lite/docs/bin.html) will be applied.\\\\n\\\\n- If `\\\\\\\"binned\\\\\\\"`, this indicates that the data for the `x` (or `y`) channel are already binned. You can map the bin-start field to `x` (or `y`) and the bin-end field to `x2` (or `y2`). The scale and axis will be formatted similar to binning in Vega-Lite.  To adjust the axis ticks based on the bin step, you can also set the axis's [`tickMinStep`](https://vega.github.io/vega-lite/docs/axis.html#ticks) property.\\\\n\\\\n__Default value:__ `false`\\\\n\\\\n__See also:__ [`bin`](https://vega.github.io/vega-lite/docs/bin.html) documentation.\\\",\\\"type\\\":\\\"null\\\"},\\\"datum\\\":{\\\"anyOf\\\":[{\\\"$ref\\\":\\\"#/definitions/PrimitiveValue\\\"},{\\\"$ref\\\":\\\"#/definitions/DateTime\\\"},{\\\"$ref\\\":\\\"#/definitions/ExprRef\\\"},{\\\"$ref\\\":\\\"#/definitions/RepeatRef\\\"}],\\\"description\\\":\\\"A constant value in data domain.\\\"},\\\"field\\\":{\\\"$ref\\\":\\\"#/definitions/Field\\\",\\\"description\\\":\\\"__Required.__ A string defining the name of the field from which to pull a data value or an object defining iterated values from the [`repeat`](https://vega.github.io/vega-lite/docs/repeat.html) operator.\\\\n\\\\n__See also:__ [`field`](https://vega.github.io/vega-lite/docs/field.html) documentation.\\\\n\\\\n__Notes:__ 1)  Dots (`.`) and brackets (`[` and `]`) can be used to access nested objects (e.g., `\\\\\\\"field\\\\\\\": \\\\\\\"foo.bar\\\\\\\"` and `\\\\\\\"field\\\\\\\": \\\\\\\"foo['bar']\\\\\\\"`). If field names contain dots or brackets but are not nested, you can use `\\\\\\\\\\\\\\\\` to escape dots and brackets (e.g., `\\\\\\\"a\\\\\\\\\\\\\\\\.b\\\\\\\"` and `\\\\\\\"a\\\\\\\\\\\\\\\\[0\\\\\\\\\\\\\\\\]\\\\\\\"`). See more details about escaping in the [field documentation](https://vega.github.io/vega-lite/docs/field.html). 2) `field` is not required if `aggregate` is `count`.\\\"},\\\"timeUnit\\\":{\\\"anyOf\\\":[{\\\"$ref\\\":\\\"#/definitions/TimeUnit\\\"},{\\\"$ref\\\":\\\"#/definitions/TimeUnitParams\\\"}],\\\"description\\\":\\\"Time unit (e.g., `year`, `yearmonth`, `month`, `hours`) for a temporal field. or [a temporal field that gets casted as ordinal](https://vega.github.io/vega-lite/docs/type.html#cast).\\\\n\\\\n__Default value:__ `undefined` (None)\\\\n\\\\n__See also:__ [`timeUnit`](https://vega.github.io/vega-lite/docs/timeunit.html) documentation.\\\"},\\\"title\\\":{\\\"anyOf\\\":[{\\\"$ref\\\":\\\"#/definitions/Text\\\"},{\\\"type\\\":\\\"null\\\"}],\\\"description\\\":\\\"A title for the field. If `null`, the title will be removed.\\\\n\\\\n__Default value:__  derived from the field's name and transformation function (`aggregate`, `bin` and `timeUnit`). If the field has an aggregate function, the function is displayed as part of the title (e.g., `\\\\\\\"Sum of Profit\\\\\\\"`). If the field is binned or has a time unit applied, the applied function is shown in parentheses (e.g., `\\\\\\\"Profit (binned)\\\\\\\"`, `\\\\\\\"Transaction Date (year-month)\\\\\\\"`). Otherwise, the title is simply the field name.\\\\n\\\\n__Notes__:\\\\n\\\\n1) You can customize the default field title format by providing the [`fieldTitle`](https://vega.github.io/vega-lite/docs/config.html#top-level-config) property in the [config](https://vega.github.io/vega-lite/docs/config.html) or [`fieldTitle` function via the `compile` function's options](https://vega.github.io/vega-lite/docs/compile.html#field-title).\\\\n\\\\n2) If both field definition's `title` and axis, header, or legend `title` are defined, axis/header/legend title will be used.\\\"},\\\"type\\\":{\\\"$ref\\\":\\\"#/definitions/Type\\\",\\\"description\\\":\\\"The type of measurement (`\\\\\\\"quantitative\\\\\\\"`, `\\\\\\\"temporal\\\\\\\"`, `\\\\\\\"ordinal\\\\\\\"`, or `\\\\\\\"nominal\\\\\\\"`) for the encoded field or constant value (`datum`). It can also be a `\\\\\\\"geojson\\\\\\\"` type for encoding ['geoshape'](https://vega.github.io/vega-lite/docs/geoshape.html).\\\\n\\\\nVega-Lite automatically infers data types in many cases as discussed below. However, type is required for a field if: (1) the field is not nominal and the field encoding has no specified `aggregate` (except `argmin` and `argmax`), `bin`, scale type, custom `sort` order, nor `timeUnit` or (2) if you wish to use an ordinal scale for a field with `bin` or `timeUnit`.\\\\n\\\\n__Default value:__\\\\n\\\\n1) For a data `field`, `\\\\\\\"nominal\\\\\\\"` is the default data type unless the field encoding has `aggregate`, `channel`, `bin`, scale type, `sort`, or `timeUnit` that satisfies the following criteria: - `\\\\\\\"quantitative\\\\\\\"` is the default type if (1) the encoded field contains `bin` or `aggregate` except `\\\\\\\"argmin\\\\\\\"` and `\\\\\\\"argmax\\\\\\\"`, (2) the encoding channel is `latitude` or `longitude` channel or (3) if the specified scale type is [a quantitative scale](https://vega.github.io/vega-lite/docs/scale.html#type). - `\\\\\\\"temporal\\\\\\\"` is the default type if (1) the encoded field contains `timeUnit` or (2) the specified scale type is a time or utc scale - `ordinal\\\\\\\"\\\\\\\"` is the default type if (1) the encoded field contains a [custom `sort` order](https://vega.github.io/vega-lite/docs/sort.html#specifying-custom-sort-order), (2) the specified scale type is an ordinal/point/band scale, or (3) the encoding channel is `order`.\\\\n\\\\n2) For a constant value in data domain (`datum`): - `\\\\\\\"quantitative\\\\\\\"` if the datum is a number - `\\\\\\\"nominal\\\\\\\"` if the datum is a string - `\\\\\\\"temporal\\\\\\\"` if the datum is [a date time object](https://vega.github.io/vega-lite/docs/datetime.html)\\\\n\\\\n__Note:__ - Data `type` describes the semantics of the data rather than the primitive data types (number, string, etc.). The same primitive data type can have different types of measurement. For example, numeric data can represent quantitative, ordinal, or nominal data. - Data values for a temporal field can be either a date-time string (e.g., `\\\\\\\"2015-03-07 12:32:17\\\\\\\"`, `\\\\\\\"17:01\\\\\\\"`, `\\\\\\\"2015-03-16\\\\\\\"`. `\\\\\\\"2015\\\\\\\"`) or a timestamp number (e.g., `1552199579097`). - When using with [`bin`](https://vega.github.io/vega-lite/docs/bin.html), the `type` property can be either `\\\\\\\"quantitative\\\\\\\"` (for using a linear bin scale) or [`\\\\\\\"ordinal\\\\\\\"` (for using an ordinal bin scale)](https://vega.github.io/vega-lite/docs/type.html#cast-bin). - When using with [`timeUnit`](https://vega.github.io/vega-lite/docs/timeunit.html), the `type` property can be either `\\\\\\\"temporal\\\\\\\"` (default, for using a temporal scale) or [`\\\\\\\"ordinal\\\\\\\"` (for using an ordinal scale)](https://vega.github.io/vega-lite/docs/type.html#cast-bin). - When using with [`aggregate`](https://vega.github.io/vega-lite/docs/aggregate.html), the `type` property refers to the post-aggregation data type. For example, we can calculate count `distinct` of a categorical field `\\\\\\\"cat\\\\\\\"` using `{\\\\\\\"aggregate\\\\\\\": \\\\\\\"distinct\\\\\\\", \\\\\\\"field\\\\\\\": \\\\\\\"cat\\\\\\\"}`. The `\\\\\\\"type\\\\\\\"` of the aggregate output is `\\\\\\\"quantitative\\\\\\\"`. - Secondary channels (e.g., `x2`, `y2`, `xError`, `yError`) do not have `type` as they must have exactly the same type as their primary channels (e.g., `x`, `y`).\\\\n\\\\n__See also:__ [`type`](https://vega.github.io/vega-lite/docs/type.html) documentation.\\\"},\\\"value\\\":{\\\"anyOf\\\":[{\\\"type\\\":\\\"number\\\"},{\\\"const\\\":\\\"width\\\",\\\"type\\\":\\\"string\\\"},{\\\"const\\\":\\\"height\\\",\\\"type\\\":\\\"string\\\"},{\\\"$ref\\\":\\\"#/definitions/ExprRef\\\"}],\\\"description\\\":\\\"A constant value in visual domain (e.g., `\\\\\\\"red\\\\\\\"` / `\\\\\\\"#0099ff\\\\\\\"` / [gradient definition](https://vega.github.io/vega-lite/docs/types.html#gradient) for color, values between `0` to `1` for opacity).\\\"}},\\\"type\\\":\\\"object\\\"},\\\"opacity\\\":{\\\"additionalProperties\\\":false,\\\"properties\\\":{\\\"aggregate\\\":{\\\"$ref\\\":\\\"#/definitions/Aggregate\\\",\\\"description\\\":\\\"Aggregation function for the field (e.g., `\\\\\\\"mean\\\\\\\"`, `\\\\\\\"sum\\\\\\\"`, `\\\\\\\"median\\\\\\\"`, `\\\\\\\"min\\\\\\\"`, `\\\\\\\"max\\\\\\\"`, `\\\\\\\"count\\\\\\\"`).\\\\n\\\\n__Default value:__ `undefined` (None)\\\\n\\\\n__See also:__ [`aggregate`](https://vega.github.io/vega-lite/docs/aggregate.html) documentation.\\\"},\\\"band\\\":{\\\"description\\\":\\\"For rect-based marks (`rect`, `bar`, and `image`), mark size relative to bandwidth of [band scales](https://vega.github.io/vega-lite/docs/scale.html#band), bins or time units. If set to `1`, the mark size is set to the bandwidth, the bin interval, or the time unit interval. If set to `0.5`, the mark size is half of the bandwidth or the time unit interval.\\\\n\\\\nFor other marks, relative position on a band of a stacked, binned, time unit or band scale. If set to `0`, the marks will be positioned at the beginning of the band. If set to `0.5`, the marks will be positioned in the middle of the band.\\\",\\\"maximum\\\":1,\\\"minimum\\\":0,\\\"type\\\":\\\"number\\\"},\\\"bin\\\":{\\\"anyOf\\\":[{\\\"type\\\":\\\"boolean\\\"},{\\\"$ref\\\":\\\"#/definitions/BinParams\\\"},{\\\"type\\\":\\\"null\\\"}],\\\"description\\\":\\\"A flag for binning a `quantitative` field, [an object defining binning parameters](https://vega.github.io/vega-lite/docs/bin.html#params), or indicating that the data for `x` or `y` channel are binned before they are imported into Vega-Lite (`\\\\\\\"binned\\\\\\\"`).\\\\n\\\\n- If `true`, default [binning parameters](https://vega.github.io/vega-lite/docs/bin.html) will be applied.\\\\n\\\\n- If `\\\\\\\"binned\\\\\\\"`, this indicates that the data for the `x` (or `y`) channel are already binned. You can map the bin-start field to `x` (or `y`) and the bin-end field to `x2` (or `y2`). The scale and axis will be formatted similar to binning in Vega-Lite.  To adjust the axis ticks based on the bin step, you can also set the axis's [`tickMinStep`](https://vega.github.io/vega-lite/docs/axis.html#ticks) property.\\\\n\\\\n__Default value:__ `false`\\\\n\\\\n__See also:__ [`bin`](https://vega.github.io/vega-lite/docs/bin.html) documentation.\\\"},\\\"condition\\\":{\\\"anyOf\\\":[{\\\"anyOf\\\":[{\\\"$ref\\\":\\\"#/definitions/ConditionalValueDef<(number|ExprRef)>\\\"},{\\\"items\\\":{\\\"$ref\\\":\\\"#/definitions/ConditionalValueDef<(number|ExprRef)>\\\"},\\\"type\\\":\\\"array\\\"}],\\\"description\\\":\\\"One or more value definition(s) with [a selection or a test predicate](https://vega.github.io/vega-lite/docs/condition.html).\\\\n\\\\n__Note:__ A field definition's `condition` property can only contain [conditional value definitions](https://vega.github.io/vega-lite/docs/condition.html#value) since Vega-Lite only allows at most one encoded field per encoding channel.\\\"},{\\\"anyOf\\\":[{\\\"$ref\\\":\\\"#/definitions/ConditionalMarkPropFieldOrDatumDef\\\"},{\\\"$ref\\\":\\\"#/definitions/ConditionalValueDef<(number|ExprRef)>\\\"},{\\\"items\\\":{\\\"$ref\\\":\\\"#/definitions/ConditionalValueDef<(number|ExprRef)>\\\"},\\\"type\\\":\\\"array\\\"}],\\\"description\\\":\\\"A field definition or one or more value definition(s) with a selection predicate.\\\"}],\\\"description\\\":\\\"One or more value definition(s) with [a selection or a test predicate](https://vega.github.io/vega-lite/docs/condition.html).\\\\n\\\\n__Note:__ A field definition's `condition` property can only contain [conditional value definitions](https://vega.github.io/vega-lite/docs/condition.html#value) since Vega-Lite only allows at most one encoded field per encoding channel.\\\"},\\\"datum\\\":{\\\"anyOf\\\":[{\\\"$ref\\\":\\\"#/definitions/PrimitiveValue\\\"},{\\\"$ref\\\":\\\"#/definitions/DateTime\\\"},{\\\"$ref\\\":\\\"#/definitions/ExprRef\\\"},{\\\"$ref\\\":\\\"#/definitions/RepeatRef\\\"}],\\\"description\\\":\\\"A constant value in data domain.\\\"},\\\"field\\\":{\\\"$ref\\\":\\\"#/definitions/Field\\\",\\\"description\\\":\\\"__Required.__ A string defining the name of the field from which to pull a data value or an object defining iterated values from the [`repeat`](https://vega.github.io/vega-lite/docs/repeat.html) operator.\\\\n\\\\n__See also:__ [`field`](https://vega.github.io/vega-lite/docs/field.html) documentation.\\\\n\\\\n__Notes:__ 1)  Dots (`.`) and brackets (`[` and `]`) can be used to access nested objects (e.g., `\\\\\\\"field\\\\\\\": \\\\\\\"foo.bar\\\\\\\"` and `\\\\\\\"field\\\\\\\": \\\\\\\"foo['bar']\\\\\\\"`). If field names contain dots or brackets but are not nested, you can use `\\\\\\\\\\\\\\\\` to escape dots and brackets (e.g., `\\\\\\\"a\\\\\\\\\\\\\\\\.b\\\\\\\"` and `\\\\\\\"a\\\\\\\\\\\\\\\\[0\\\\\\\\\\\\\\\\]\\\\\\\"`). See more details about escaping in the [field documentation](https://vega.github.io/vega-lite/docs/field.html). 2) `field` is not required if `aggregate` is `count`.\\\"},\\\"legend\\\":{\\\"anyOf\\\":[{\\\"$ref\\\":\\\"#/definitions/Legend\\\"},{\\\"type\\\":\\\"null\\\"}],\\\"description\\\":\\\"An object defining properties of the legend. If `null`, the legend for the encoding channel will be removed.\\\\n\\\\n__Default value:__ If undefined, default [legend properties](https://vega.github.io/vega-lite/docs/legend.html) are applied.\\\\n\\\\n__See also:__ [`legend`](https://vega.github.io/vega-lite/docs/legend.html) documentation.\\\"},\\\"scale\\\":{\\\"anyOf\\\":[{\\\"$ref\\\":\\\"#/definitions/Scale\\\"},{\\\"type\\\":\\\"null\\\"}],\\\"description\\\":\\\"An object defining properties of the channel's scale, which is the function that transforms values in the data domain (numbers, dates, strings, etc) to visual values (pixels, colors, sizes) of the encoding channels.\\\\n\\\\nIf `null`, the scale will be [disabled and the data value will be directly encoded](https://vega.github.io/vega-lite/docs/scale.html#disable).\\\\n\\\\n__Default value:__ If undefined, default [scale properties](https://vega.github.io/vega-lite/docs/scale.html) are applied.\\\\n\\\\n__See also:__ [`scale`](https://vega.github.io/vega-lite/docs/scale.html) documentation.\\\"},\\\"sort\\\":{\\\"$ref\\\":\\\"#/definitions/Sort\\\",\\\"description\\\":\\\"Sort order for the encoded field.\\\\n\\\\nFor continuous fields (quantitative or temporal), `sort` can be either `\\\\\\\"ascending\\\\\\\"` or `\\\\\\\"descending\\\\\\\"`.\\\\n\\\\nFor discrete fields, `sort` can be one of the following: - `\\\\\\\"ascending\\\\\\\"` or `\\\\\\\"descending\\\\\\\"` -- for sorting by the values' natural order in JavaScript. - [A string indicating an encoding channel name to sort by](https://vega.github.io/vega-lite/docs/sort.html#sort-by-encoding) (e.g., `\\\\\\\"x\\\\\\\"` or `\\\\\\\"y\\\\\\\"`) with an optional minus prefix for descending sort (e.g., `\\\\\\\"-x\\\\\\\"` to sort by x-field, descending). This channel string is short-form of [a sort-by-encoding definition](https://vega.github.io/vega-lite/docs/sort.html#sort-by-encoding). For example, `\\\\\\\"sort\\\\\\\": \\\\\\\"-x\\\\\\\"` is equivalent to `\\\\\\\"sort\\\\\\\": {\\\\\\\"encoding\\\\\\\": \\\\\\\"x\\\\\\\", \\\\\\\"order\\\\\\\": \\\\\\\"descending\\\\\\\"}`. - [A sort field definition](https://vega.github.io/vega-lite/docs/sort.html#sort-field) for sorting by another field. - [An array specifying the field values in preferred order](https://vega.github.io/vega-lite/docs/sort.html#sort-array). In this case, the sort order will obey the values in the array, followed by any unspecified values in their original order. For discrete time field, values in the sort array can be [date-time definition objects](types#datetime). In addition, for time units `\\\\\\\"month\\\\\\\"` and `\\\\\\\"day\\\\\\\"`, the values can be the month or day names (case insensitive) or their 3-letter initials (e.g., `\\\\\\\"Mon\\\\\\\"`, `\\\\\\\"Tue\\\\\\\"`). - `null` indicating no sort.\\\\n\\\\n__Default value:__ `\\\\\\\"ascending\\\\\\\"`\\\\n\\\\n__Note:__ `null` and sorting by another channel is not supported for `row` and `column`.\\\\n\\\\n__See also:__ [`sort`](https://vega.github.io/vega-lite/docs/sort.html) documentation.\\\"},\\\"timeUnit\\\":{\\\"anyOf\\\":[{\\\"$ref\\\":\\\"#/definitions/TimeUnit\\\"},{\\\"$ref\\\":\\\"#/definitions/TimeUnitParams\\\"}],\\\"description\\\":\\\"Time unit (e.g., `year`, `yearmonth`, `month`, `hours`) for a temporal field. or [a temporal field that gets casted as ordinal](https://vega.github.io/vega-lite/docs/type.html#cast).\\\\n\\\\n__Default value:__ `undefined` (None)\\\\n\\\\n__See also:__ [`timeUnit`](https://vega.github.io/vega-lite/docs/timeunit.html) documentation.\\\"},\\\"title\\\":{\\\"anyOf\\\":[{\\\"$ref\\\":\\\"#/definitions/Text\\\"},{\\\"type\\\":\\\"null\\\"}],\\\"description\\\":\\\"A title for the field. If `null`, the title will be removed.\\\\n\\\\n__Default value:__  derived from the field's name and transformation function (`aggregate`, `bin` and `timeUnit`). If the field has an aggregate function, the function is displayed as part of the title (e.g., `\\\\\\\"Sum of Profit\\\\\\\"`). If the field is binned or has a time unit applied, the applied function is shown in parentheses (e.g., `\\\\\\\"Profit (binned)\\\\\\\"`, `\\\\\\\"Transaction Date (year-month)\\\\\\\"`). Otherwise, the title is simply the field name.\\\\n\\\\n__Notes__:\\\\n\\\\n1) You can customize the default field title format by providing the [`fieldTitle`](https://vega.github.io/vega-lite/docs/config.html#top-level-config) property in the [config](https://vega.github.io/vega-lite/docs/config.html) or [`fieldTitle` function via the `compile` function's options](https://vega.github.io/vega-lite/docs/compile.html#field-title).\\\\n\\\\n2) If both field definition's `title` and axis, header, or legend `title` are defined, axis/header/legend title will be used.\\\"},\\\"type\\\":{\\\"anyOf\\\":[{\\\"$ref\\\":\\\"#/definitions/StandardType\\\",\\\"description\\\":\\\"The type of measurement (`\\\\\\\"quantitative\\\\\\\"`, `\\\\\\\"temporal\\\\\\\"`, `\\\\\\\"ordinal\\\\\\\"`, or `\\\\\\\"nominal\\\\\\\"`) for the encoded field or constant value (`datum`). It can also be a `\\\\\\\"geojson\\\\\\\"` type for encoding ['geoshape'](https://vega.github.io/vega-lite/docs/geoshape.html).\\\\n\\\\nVega-Lite automatically infers data types in many cases as discussed below. However, type is required for a field if: (1) the field is not nominal and the field encoding has no specified `aggregate` (except `argmin` and `argmax`), `bin`, scale type, custom `sort` order, nor `timeUnit` or (2) if you wish to use an ordinal scale for a field with `bin` or `timeUnit`.\\\\n\\\\n__Default value:__\\\\n\\\\n1) For a data `field`, `\\\\\\\"nominal\\\\\\\"` is the default data type unless the field encoding has `aggregate`, `channel`, `bin`, scale type, `sort`, or `timeUnit` that satisfies the following criteria: - `\\\\\\\"quantitative\\\\\\\"` is the default type if (1) the encoded field contains `bin` or `aggregate` except `\\\\\\\"argmin\\\\\\\"` and `\\\\\\\"argmax\\\\\\\"`, (2) the encoding channel is `latitude` or `longitude` channel or (3) if the specified scale type is [a quantitative scale](https://vega.github.io/vega-lite/docs/scale.html#type). - `\\\\\\\"temporal\\\\\\\"` is the default type if (1) the encoded field contains `timeUnit` or (2) the specified scale type is a time or utc scale - `ordinal\\\\\\\"\\\\\\\"` is the default type if (1) the encoded field contains a [custom `sort` order](https://vega.github.io/vega-lite/docs/sort.html#specifying-custom-sort-order), (2) the specified scale type is an ordinal/point/band scale, or (3) the encoding channel is `order`.\\\\n\\\\n2) For a constant value in data domain (`datum`): - `\\\\\\\"quantitative\\\\\\\"` if the datum is a number - `\\\\\\\"nominal\\\\\\\"` if the datum is a string - `\\\\\\\"temporal\\\\\\\"` if the datum is [a date time object](https://vega.github.io/vega-lite/docs/datetime.html)\\\\n\\\\n__Note:__ - Data `type` describes the semantics of the data rather than the primitive data types (number, string, etc.). The same primitive data type can have different types of measurement. For example, numeric data can represent quantitative, ordinal, or nominal data. - Data values for a temporal field can be either a date-time string (e.g., `\\\\\\\"2015-03-07 12:32:17\\\\\\\"`, `\\\\\\\"17:01\\\\\\\"`, `\\\\\\\"2015-03-16\\\\\\\"`. `\\\\\\\"2015\\\\\\\"`) or a timestamp number (e.g., `1552199579097`). - When using with [`bin`](https://vega.github.io/vega-lite/docs/bin.html), the `type` property can be either `\\\\\\\"quantitative\\\\\\\"` (for using a linear bin scale) or [`\\\\\\\"ordinal\\\\\\\"` (for using an ordinal bin scale)](https://vega.github.io/vega-lite/docs/type.html#cast-bin). - When using with [`timeUnit`](https://vega.github.io/vega-lite/docs/timeunit.html), the `type` property can be either `\\\\\\\"temporal\\\\\\\"` (default, for using a temporal scale) or [`\\\\\\\"ordinal\\\\\\\"` (for using an ordinal scale)](https://vega.github.io/vega-lite/docs/type.html#cast-bin). - When using with [`aggregate`](https://vega.github.io/vega-lite/docs/aggregate.html), the `type` property refers to the post-aggregation data type. For example, we can calculate count `distinct` of a categorical field `\\\\\\\"cat\\\\\\\"` using `{\\\\\\\"aggregate\\\\\\\": \\\\\\\"distinct\\\\\\\", \\\\\\\"field\\\\\\\": \\\\\\\"cat\\\\\\\"}`. The `\\\\\\\"type\\\\\\\"` of the aggregate output is `\\\\\\\"quantitative\\\\\\\"`. - Secondary channels (e.g., `x2`, `y2`, `xError`, `yError`) do not have `type` as they must have exactly the same type as their primary channels (e.g., `x`, `y`).\\\\n\\\\n__See also:__ [`type`](https://vega.github.io/vega-lite/docs/type.html) documentation.\\\"},{\\\"$ref\\\":\\\"#/definitions/Type\\\",\\\"description\\\":\\\"The type of measurement (`\\\\\\\"quantitative\\\\\\\"`, `\\\\\\\"temporal\\\\\\\"`, `\\\\\\\"ordinal\\\\\\\"`, or `\\\\\\\"nominal\\\\\\\"`) for the encoded field or constant value (`datum`). It can also be a `\\\\\\\"geojson\\\\\\\"` type for encoding ['geoshape'](https://vega.github.io/vega-lite/docs/geoshape.html).\\\\n\\\\nVega-Lite automatically infers data types in many cases as discussed below. However, type is required for a field if: (1) the field is not nominal and the field encoding has no specified `aggregate` (except `argmin` and `argmax`), `bin`, scale type, custom `sort` order, nor `timeUnit` or (2) if you wish to use an ordinal scale for a field with `bin` or `timeUnit`.\\\\n\\\\n__Default value:__\\\\n\\\\n1) For a data `field`, `\\\\\\\"nominal\\\\\\\"` is the default data type unless the field encoding has `aggregate`, `channel`, `bin`, scale type, `sort`, or `timeUnit` that satisfies the following criteria: - `\\\\\\\"quantitative\\\\\\\"` is the default type if (1) the encoded field contains `bin` or `aggregate` except `\\\\\\\"argmin\\\\\\\"` and `\\\\\\\"argmax\\\\\\\"`, (2) the encoding channel is `latitude` or `longitude` channel or (3) if the specified scale type is [a quantitative scale](https://vega.github.io/vega-lite/docs/scale.html#type). - `\\\\\\\"temporal\\\\\\\"` is the default type if (1) the encoded field contains `timeUnit` or (2) the specified scale type is a time or utc scale - `ordinal\\\\\\\"\\\\\\\"` is the default type if (1) the encoded field contains a [custom `sort` order](https://vega.github.io/vega-lite/docs/sort.html#specifying-custom-sort-order), (2) the specified scale type is an ordinal/point/band scale, or (3) the encoding channel is `order`.\\\\n\\\\n2) For a constant value in data domain (`datum`): - `\\\\\\\"quantitative\\\\\\\"` if the datum is a number - `\\\\\\\"nominal\\\\\\\"` if the datum is a string - `\\\\\\\"temporal\\\\\\\"` if the datum is [a date time object](https://vega.github.io/vega-lite/docs/datetime.html)\\\\n\\\\n__Note:__ - Data `type` describes the semantics of the data rather than the primitive data types (number, string, etc.). The same primitive data type can have different types of measurement. For example, numeric data can represent quantitative, ordinal, or nominal data. - Data values for a temporal field can be either a date-time string (e.g., `\\\\\\\"2015-03-07 12:32:17\\\\\\\"`, `\\\\\\\"17:01\\\\\\\"`, `\\\\\\\"2015-03-16\\\\\\\"`. `\\\\\\\"2015\\\\\\\"`) or a timestamp number (e.g., `1552199579097`). - When using with [`bin`](https://vega.github.io/vega-lite/docs/bin.html), the `type` property can be either `\\\\\\\"quantitative\\\\\\\"` (for using a linear bin scale) or [`\\\\\\\"ordinal\\\\\\\"` (for using an ordinal bin scale)](https://vega.github.io/vega-lite/docs/type.html#cast-bin). - When using with [`timeUnit`](https://vega.github.io/vega-lite/docs/timeunit.html), the `type` property can be either `\\\\\\\"temporal\\\\\\\"` (default, for using a temporal scale) or [`\\\\\\\"ordinal\\\\\\\"` (for using an ordinal scale)](https://vega.github.io/vega-lite/docs/type.html#cast-bin). - When using with [`aggregate`](https://vega.github.io/vega-lite/docs/aggregate.html), the `type` property refers to the post-aggregation data type. For example, we can calculate count `distinct` of a categorical field `\\\\\\\"cat\\\\\\\"` using `{\\\\\\\"aggregate\\\\\\\": \\\\\\\"distinct\\\\\\\", \\\\\\\"field\\\\\\\": \\\\\\\"cat\\\\\\\"}`. The `\\\\\\\"type\\\\\\\"` of the aggregate output is `\\\\\\\"quantitative\\\\\\\"`. - Secondary channels (e.g., `x2`, `y2`, `xError`, `yError`) do not have `type` as they must have exactly the same type as their primary channels (e.g., `x`, `y`).\\\\n\\\\n__See also:__ [`type`](https://vega.github.io/vega-lite/docs/type.html) documentation.\\\"}],\\\"description\\\":\\\"The type of measurement (`\\\\\\\"quantitative\\\\\\\"`, `\\\\\\\"temporal\\\\\\\"`, `\\\\\\\"ordinal\\\\\\\"`, or `\\\\\\\"nominal\\\\\\\"`) for the encoded field or constant value (`datum`). It can also be a `\\\\\\\"geojson\\\\\\\"` type for encoding ['geoshape'](https://vega.github.io/vega-lite/docs/geoshape.html).\\\\n\\\\nVega-Lite automatically infers data types in many cases as discussed below. However, type is required for a field if: (1) the field is not nominal and the field encoding has no specified `aggregate` (except `argmin` and `argmax`), `bin`, scale type, custom `sort` order, nor `timeUnit` or (2) if you wish to use an ordinal scale for a field with `bin` or `timeUnit`.\\\\n\\\\n__Default value:__\\\\n\\\\n1) For a data `field`, `\\\\\\\"nominal\\\\\\\"` is the default data type unless the field encoding has `aggregate`, `channel`, `bin`, scale type, `sort`, or `timeUnit` that satisfies the following criteria: - `\\\\\\\"quantitative\\\\\\\"` is the default type if (1) the encoded field contains `bin` or `aggregate` except `\\\\\\\"argmin\\\\\\\"` and `\\\\\\\"argmax\\\\\\\"`, (2) the encoding channel is `latitude` or `longitude` channel or (3) if the specified scale type is [a quantitative scale](https://vega.github.io/vega-lite/docs/scale.html#type). - `\\\\\\\"temporal\\\\\\\"` is the default type if (1) the encoded field contains `timeUnit` or (2) the specified scale type is a time or utc scale - `ordinal\\\\\\\"\\\\\\\"` is the default type if (1) the encoded field contains a [custom `sort` order](https://vega.github.io/vega-lite/docs/sort.html#specifying-custom-sort-order), (2) the specified scale type is an ordinal/point/band scale, or (3) the encoding channel is `order`.\\\\n\\\\n2) For a constant value in data domain (`datum`): - `\\\\\\\"quantitative\\\\\\\"` if the datum is a number - `\\\\\\\"nominal\\\\\\\"` if the datum is a string - `\\\\\\\"temporal\\\\\\\"` if the datum is [a date time object](https://vega.github.io/vega-lite/docs/datetime.html)\\\\n\\\\n__Note:__ - Data `type` describes the semantics of the data rather than the primitive data types (number, string, etc.). The same primitive data type can have different types of measurement. For example, numeric data can represent quantitative, ordinal, or nominal data. - Data values for a temporal field can be either a date-time string (e.g., `\\\\\\\"2015-03-07 12:32:17\\\\\\\"`, `\\\\\\\"17:01\\\\\\\"`, `\\\\\\\"2015-03-16\\\\\\\"`. `\\\\\\\"2015\\\\\\\"`) or a timestamp number (e.g., `1552199579097`). - When using with [`bin`](https://vega.github.io/vega-lite/docs/bin.html), the `type` property can be either `\\\\\\\"quantitative\\\\\\\"` (for using a linear bin scale) or [`\\\\\\\"ordinal\\\\\\\"` (for using an ordinal bin scale)](https://vega.github.io/vega-lite/docs/type.html#cast-bin). - When using with [`timeUnit`](https://vega.github.io/vega-lite/docs/timeunit.html), the `type` property can be either `\\\\\\\"temporal\\\\\\\"` (default, for using a temporal scale) or [`\\\\\\\"ordinal\\\\\\\"` (for using an ordinal scale)](https://vega.github.io/vega-lite/docs/type.html#cast-bin). - When using with [`aggregate`](https://vega.github.io/vega-lite/docs/aggregate.html), the `type` property refers to the post-aggregation data type. For example, we can calculate count `distinct` of a categorical field `\\\\\\\"cat\\\\\\\"` using `{\\\\\\\"aggregate\\\\\\\": \\\\\\\"distinct\\\\\\\", \\\\\\\"field\\\\\\\": \\\\\\\"cat\\\\\\\"}`. The `\\\\\\\"type\\\\\\\"` of the aggregate output is `\\\\\\\"quantitative\\\\\\\"`. - Secondary channels (e.g., `x2`, `y2`, `xError`, `yError`) do not have `type` as they must have exactly the same type as their primary channels (e.g., `x`, `y`).\\\\n\\\\n__See also:__ [`type`](https://vega.github.io/vega-lite/docs/type.html) documentation.\\\"},\\\"value\\\":{\\\"anyOf\\\":[{\\\"type\\\":\\\"number\\\"},{\\\"$ref\\\":\\\"#/definitions/ExprRef\\\"}],\\\"description\\\":\\\"A constant value in visual domain (e.g., `\\\\\\\"red\\\\\\\"` / `\\\\\\\"#0099ff\\\\\\\"` / [gradient definition](https://vega.github.io/vega-lite/docs/types.html#gradient) for color, values between `0` to `1` for opacity).\\\"}},\\\"type\\\":\\\"object\\\"},\\\"order\\\":{\\\"anyOf\\\":[{\\\"$ref\\\":\\\"#/definitions/OrderFieldDef\\\"},{\\\"items\\\":{\\\"$ref\\\":\\\"#/definitions/OrderFieldDef\\\"},\\\"type\\\":\\\"array\\\"},{\\\"$ref\\\":\\\"#/definitions/OrderValueDef\\\"}],\\\"description\\\":\\\"Order of the marks. - For stacked marks, this `order` channel encodes [stack order](https://vega.github.io/vega-lite/docs/stack.html#order). - For line and trail marks, this `order` channel encodes order of data points in the lines. This can be useful for creating [a connected scatterplot](https://vega.github.io/vega-lite/examples/connected_scatterplot.html). Setting `order` to `{\\\\\\\"value\\\\\\\": null}` makes the line marks use the original order in the data sources. - Otherwise, this `order` channel encodes layer order of the marks.\\\\n\\\\n__Note__: In aggregate plots, `order` field should be `aggregate`d to avoid creating additional aggregation grouping.\\\"},\\\"radius\\\":{\\\"additionalProperties\\\":false,\\\"properties\\\":{\\\"aggregate\\\":{\\\"$ref\\\":\\\"#/definitions/Aggregate\\\",\\\"description\\\":\\\"Aggregation function for the field (e.g., `\\\\\\\"mean\\\\\\\"`, `\\\\\\\"sum\\\\\\\"`, `\\\\\\\"median\\\\\\\"`, `\\\\\\\"min\\\\\\\"`, `\\\\\\\"max\\\\\\\"`, `\\\\\\\"count\\\\\\\"`).\\\\n\\\\n__Default value:__ `undefined` (None)\\\\n\\\\n__See also:__ [`aggregate`](https://vega.github.io/vega-lite/docs/aggregate.html) documentation.\\\"},\\\"band\\\":{\\\"description\\\":\\\"For rect-based marks (`rect`, `bar`, and `image`), mark size relative to bandwidth of [band scales](https://vega.github.io/vega-lite/docs/scale.html#band), bins or time units. If set to `1`, the mark size is set to the bandwidth, the bin interval, or the time unit interval. If set to `0.5`, the mark size is half of the bandwidth or the time unit interval.\\\\n\\\\nFor other marks, relative position on a band of a stacked, binned, time unit or band scale. If set to `0`, the marks will be positioned at the beginning of the band. If set to `0.5`, the marks will be positioned in the middle of the band.\\\",\\\"maximum\\\":1,\\\"minimum\\\":0,\\\"type\\\":\\\"number\\\"},\\\"bin\\\":{\\\"anyOf\\\":[{\\\"type\\\":\\\"boolean\\\"},{\\\"$ref\\\":\\\"#/definitions/BinParams\\\"},{\\\"const\\\":\\\"binned\\\",\\\"type\\\":\\\"string\\\"},{\\\"type\\\":\\\"null\\\"}],\\\"description\\\":\\\"A flag for binning a `quantitative` field, [an object defining binning parameters](https://vega.github.io/vega-lite/docs/bin.html#params), or indicating that the data for `x` or `y` channel are binned before they are imported into Vega-Lite (`\\\\\\\"binned\\\\\\\"`).\\\\n\\\\n- If `true`, default [binning parameters](https://vega.github.io/vega-lite/docs/bin.html) will be applied.\\\\n\\\\n- If `\\\\\\\"binned\\\\\\\"`, this indicates that the data for the `x` (or `y`) channel are already binned. You can map the bin-start field to `x` (or `y`) and the bin-end field to `x2` (or `y2`). The scale and axis will be formatted similar to binning in Vega-Lite.  To adjust the axis ticks based on the bin step, you can also set the axis's [`tickMinStep`](https://vega.github.io/vega-lite/docs/axis.html#ticks) property.\\\\n\\\\n__Default value:__ `false`\\\\n\\\\n__See also:__ [`bin`](https://vega.github.io/vega-lite/docs/bin.html) documentation.\\\"},\\\"datum\\\":{\\\"anyOf\\\":[{\\\"$ref\\\":\\\"#/definitions/PrimitiveValue\\\"},{\\\"$ref\\\":\\\"#/definitions/DateTime\\\"},{\\\"$ref\\\":\\\"#/definitions/ExprRef\\\"},{\\\"$ref\\\":\\\"#/definitions/RepeatRef\\\"}],\\\"description\\\":\\\"A constant value in data domain.\\\"},\\\"field\\\":{\\\"$ref\\\":\\\"#/definitions/Field\\\",\\\"description\\\":\\\"__Required.__ A string defining the name of the field from which to pull a data value or an object defining iterated values from the [`repeat`](https://vega.github.io/vega-lite/docs/repeat.html) operator.\\\\n\\\\n__See also:__ [`field`](https://vega.github.io/vega-lite/docs/field.html) documentation.\\\\n\\\\n__Notes:__ 1)  Dots (`.`) and brackets (`[` and `]`) can be used to access nested objects (e.g., `\\\\\\\"field\\\\\\\": \\\\\\\"foo.bar\\\\\\\"` and `\\\\\\\"field\\\\\\\": \\\\\\\"foo['bar']\\\\\\\"`). If field names contain dots or brackets but are not nested, you can use `\\\\\\\\\\\\\\\\` to escape dots and brackets (e.g., `\\\\\\\"a\\\\\\\\\\\\\\\\.b\\\\\\\"` and `\\\\\\\"a\\\\\\\\\\\\\\\\[0\\\\\\\\\\\\\\\\]\\\\\\\"`). See more details about escaping in the [field documentation](https://vega.github.io/vega-lite/docs/field.html). 2) `field` is not required if `aggregate` is `count`.\\\"},\\\"scale\\\":{\\\"anyOf\\\":[{\\\"$ref\\\":\\\"#/definitions/Scale\\\"},{\\\"type\\\":\\\"null\\\"}],\\\"description\\\":\\\"An object defining properties of the channel's scale, which is the function that transforms values in the data domain (numbers, dates, strings, etc) to visual values (pixels, colors, sizes) of the encoding channels.\\\\n\\\\nIf `null`, the scale will be [disabled and the data value will be directly encoded](https://vega.github.io/vega-lite/docs/scale.html#disable).\\\\n\\\\n__Default value:__ If undefined, default [scale properties](https://vega.github.io/vega-lite/docs/scale.html) are applied.\\\\n\\\\n__See also:__ [`scale`](https://vega.github.io/vega-lite/docs/scale.html) documentation.\\\"},\\\"sort\\\":{\\\"$ref\\\":\\\"#/definitions/Sort\\\",\\\"description\\\":\\\"Sort order for the encoded field.\\\\n\\\\nFor continuous fields (quantitative or temporal), `sort` can be either `\\\\\\\"ascending\\\\\\\"` or `\\\\\\\"descending\\\\\\\"`.\\\\n\\\\nFor discrete fields, `sort` can be one of the following: - `\\\\\\\"ascending\\\\\\\"` or `\\\\\\\"descending\\\\\\\"` -- for sorting by the values' natural order in JavaScript. - [A string indicating an encoding channel name to sort by](https://vega.github.io/vega-lite/docs/sort.html#sort-by-encoding) (e.g., `\\\\\\\"x\\\\\\\"` or `\\\\\\\"y\\\\\\\"`) with an optional minus prefix for descending sort (e.g., `\\\\\\\"-x\\\\\\\"` to sort by x-field, descending). This channel string is short-form of [a sort-by-encoding definition](https://vega.github.io/vega-lite/docs/sort.html#sort-by-encoding). For example, `\\\\\\\"sort\\\\\\\": \\\\\\\"-x\\\\\\\"` is equivalent to `\\\\\\\"sort\\\\\\\": {\\\\\\\"encoding\\\\\\\": \\\\\\\"x\\\\\\\", \\\\\\\"order\\\\\\\": \\\\\\\"descending\\\\\\\"}`. - [A sort field definition](https://vega.github.io/vega-lite/docs/sort.html#sort-field) for sorting by another field. - [An array specifying the field values in preferred order](https://vega.github.io/vega-lite/docs/sort.html#sort-array). In this case, the sort order will obey the values in the array, followed by any unspecified values in their original order. For discrete time field, values in the sort array can be [date-time definition objects](types#datetime). In addition, for time units `\\\\\\\"month\\\\\\\"` and `\\\\\\\"day\\\\\\\"`, the values can be the month or day names (case insensitive) or their 3-letter initials (e.g., `\\\\\\\"Mon\\\\\\\"`, `\\\\\\\"Tue\\\\\\\"`). - `null` indicating no sort.\\\\n\\\\n__Default value:__ `\\\\\\\"ascending\\\\\\\"`\\\\n\\\\n__Note:__ `null` and sorting by another channel is not supported for `row` and `column`.\\\\n\\\\n__See also:__ [`sort`](https://vega.github.io/vega-lite/docs/sort.html) documentation.\\\"},\\\"stack\\\":{\\\"anyOf\\\":[{\\\"$ref\\\":\\\"#/definitions/StackOffset\\\"},{\\\"type\\\":\\\"null\\\"},{\\\"type\\\":\\\"boolean\\\"}],\\\"description\\\":\\\"Type of stacking offset if the field should be stacked. `stack` is only applicable for `x`, `y`, `theta`, and `radius` channels with continuous domains. For example, `stack` of `y` can be used to customize stacking for a vertical bar chart.\\\\n\\\\n`stack` can be one of the following values: - `\\\\\\\"zero\\\\\\\"` or `true`: stacking with baseline offset at zero value of the scale (for creating typical stacked [bar](https://vega.github.io/vega-lite/docs/stack.html#bar) and [area](https://vega.github.io/vega-lite/docs/stack.html#area) chart). - `\\\\\\\"normalize\\\\\\\"` - stacking with normalized domain (for creating [normalized stacked bar and area charts](https://vega.github.io/vega-lite/docs/stack.html#normalized). <br/> -`\\\\\\\"center\\\\\\\"` - stacking with center baseline (for [streamgraph](https://vega.github.io/vega-lite/docs/stack.html#streamgraph)). - `null` or `false` - No-stacking. This will produce layered [bar](https://vega.github.io/vega-lite/docs/stack.html#layered-bar-chart) and area chart.\\\\n\\\\n__Default value:__ `zero` for plots with all of the following conditions are true: (1) the mark is `bar`, `area`, or `arc`; (2) the stacked measure channel (x or y) has a linear scale; (3) At least one of non-position channels mapped to an unaggregated field that is different from x and y. Otherwise, `null` by default.\\\\n\\\\n__See also:__ [`stack`](https://vega.github.io/vega-lite/docs/stack.html) documentation.\\\"},\\\"timeUnit\\\":{\\\"anyOf\\\":[{\\\"$ref\\\":\\\"#/definitions/TimeUnit\\\"},{\\\"$ref\\\":\\\"#/definitions/TimeUnitParams\\\"}],\\\"description\\\":\\\"Time unit (e.g., `year`, `yearmonth`, `month`, `hours`) for a temporal field. or [a temporal field that gets casted as ordinal](https://vega.github.io/vega-lite/docs/type.html#cast).\\\\n\\\\n__Default value:__ `undefined` (None)\\\\n\\\\n__See also:__ [`timeUnit`](https://vega.github.io/vega-lite/docs/timeunit.html) documentation.\\\"},\\\"title\\\":{\\\"anyOf\\\":[{\\\"$ref\\\":\\\"#/definitions/Text\\\"},{\\\"type\\\":\\\"null\\\"}],\\\"description\\\":\\\"A title for the field. If `null`, the title will be removed.\\\\n\\\\n__Default value:__  derived from the field's name and transformation function (`aggregate`, `bin` and `timeUnit`). If the field has an aggregate function, the function is displayed as part of the title (e.g., `\\\\\\\"Sum of Profit\\\\\\\"`). If the field is binned or has a time unit applied, the applied function is shown in parentheses (e.g., `\\\\\\\"Profit (binned)\\\\\\\"`, `\\\\\\\"Transaction Date (year-month)\\\\\\\"`). Otherwise, the title is simply the field name.\\\\n\\\\n__Notes__:\\\\n\\\\n1) You can customize the default field title format by providing the [`fieldTitle`](https://vega.github.io/vega-lite/docs/config.html#top-level-config) property in the [config](https://vega.github.io/vega-lite/docs/config.html) or [`fieldTitle` function via the `compile` function's options](https://vega.github.io/vega-lite/docs/compile.html#field-title).\\\\n\\\\n2) If both field definition's `title` and axis, header, or legend `title` are defined, axis/header/legend title will be used.\\\"},\\\"type\\\":{\\\"anyOf\\\":[{\\\"$ref\\\":\\\"#/definitions/StandardType\\\",\\\"description\\\":\\\"The type of measurement (`\\\\\\\"quantitative\\\\\\\"`, `\\\\\\\"temporal\\\\\\\"`, `\\\\\\\"ordinal\\\\\\\"`, or `\\\\\\\"nominal\\\\\\\"`) for the encoded field or constant value (`datum`). It can also be a `\\\\\\\"geojson\\\\\\\"` type for encoding ['geoshape'](https://vega.github.io/vega-lite/docs/geoshape.html).\\\\n\\\\nVega-Lite automatically infers data types in many cases as discussed below. However, type is required for a field if: (1) the field is not nominal and the field encoding has no specified `aggregate` (except `argmin` and `argmax`), `bin`, scale type, custom `sort` order, nor `timeUnit` or (2) if you wish to use an ordinal scale for a field with `bin` or `timeUnit`.\\\\n\\\\n__Default value:__\\\\n\\\\n1) For a data `field`, `\\\\\\\"nominal\\\\\\\"` is the default data type unless the field encoding has `aggregate`, `channel`, `bin`, scale type, `sort`, or `timeUnit` that satisfies the following criteria: - `\\\\\\\"quantitative\\\\\\\"` is the default type if (1) the encoded field contains `bin` or `aggregate` except `\\\\\\\"argmin\\\\\\\"` and `\\\\\\\"argmax\\\\\\\"`, (2) the encoding channel is `latitude` or `longitude` channel or (3) if the specified scale type is [a quantitative scale](https://vega.github.io/vega-lite/docs/scale.html#type). - `\\\\\\\"temporal\\\\\\\"` is the default type if (1) the encoded field contains `timeUnit` or (2) the specified scale type is a time or utc scale - `ordinal\\\\\\\"\\\\\\\"` is the default type if (1) the encoded field contains a [custom `sort` order](https://vega.github.io/vega-lite/docs/sort.html#specifying-custom-sort-order), (2) the specified scale type is an ordinal/point/band scale, or (3) the encoding channel is `order`.\\\\n\\\\n2) For a constant value in data domain (`datum`): - `\\\\\\\"quantitative\\\\\\\"` if the datum is a number - `\\\\\\\"nominal\\\\\\\"` if the datum is a string - `\\\\\\\"temporal\\\\\\\"` if the datum is [a date time object](https://vega.github.io/vega-lite/docs/datetime.html)\\\\n\\\\n__Note:__ - Data `type` describes the semantics of the data rather than the primitive data types (number, string, etc.). The same primitive data type can have different types of measurement. For example, numeric data can represent quantitative, ordinal, or nominal data. - Data values for a temporal field can be either a date-time string (e.g., `\\\\\\\"2015-03-07 12:32:17\\\\\\\"`, `\\\\\\\"17:01\\\\\\\"`, `\\\\\\\"2015-03-16\\\\\\\"`. `\\\\\\\"2015\\\\\\\"`) or a timestamp number (e.g., `1552199579097`). - When using with [`bin`](https://vega.github.io/vega-lite/docs/bin.html), the `type` property can be either `\\\\\\\"quantitative\\\\\\\"` (for using a linear bin scale) or [`\\\\\\\"ordinal\\\\\\\"` (for using an ordinal bin scale)](https://vega.github.io/vega-lite/docs/type.html#cast-bin). - When using with [`timeUnit`](https://vega.github.io/vega-lite/docs/timeunit.html), the `type` property can be either `\\\\\\\"temporal\\\\\\\"` (default, for using a temporal scale) or [`\\\\\\\"ordinal\\\\\\\"` (for using an ordinal scale)](https://vega.github.io/vega-lite/docs/type.html#cast-bin). - When using with [`aggregate`](https://vega.github.io/vega-lite/docs/aggregate.html), the `type` property refers to the post-aggregation data type. For example, we can calculate count `distinct` of a categorical field `\\\\\\\"cat\\\\\\\"` using `{\\\\\\\"aggregate\\\\\\\": \\\\\\\"distinct\\\\\\\", \\\\\\\"field\\\\\\\": \\\\\\\"cat\\\\\\\"}`. The `\\\\\\\"type\\\\\\\"` of the aggregate output is `\\\\\\\"quantitative\\\\\\\"`. - Secondary channels (e.g., `x2`, `y2`, `xError`, `yError`) do not have `type` as they must have exactly the same type as their primary channels (e.g., `x`, `y`).\\\\n\\\\n__See also:__ [`type`](https://vega.github.io/vega-lite/docs/type.html) documentation.\\\"},{\\\"$ref\\\":\\\"#/definitions/Type\\\",\\\"description\\\":\\\"The type of measurement (`\\\\\\\"quantitative\\\\\\\"`, `\\\\\\\"temporal\\\\\\\"`, `\\\\\\\"ordinal\\\\\\\"`, or `\\\\\\\"nominal\\\\\\\"`) for the encoded field or constant value (`datum`). It can also be a `\\\\\\\"geojson\\\\\\\"` type for encoding ['geoshape'](https://vega.github.io/vega-lite/docs/geoshape.html).\\\\n\\\\nVega-Lite automatically infers data types in many cases as discussed below. However, type is required for a field if: (1) the field is not nominal and the field encoding has no specified `aggregate` (except `argmin` and `argmax`), `bin`, scale type, custom `sort` order, nor `timeUnit` or (2) if you wish to use an ordinal scale for a field with `bin` or `timeUnit`.\\\\n\\\\n__Default value:__\\\\n\\\\n1) For a data `field`, `\\\\\\\"nominal\\\\\\\"` is the default data type unless the field encoding has `aggregate`, `channel`, `bin`, scale type, `sort`, or `timeUnit` that satisfies the following criteria: - `\\\\\\\"quantitative\\\\\\\"` is the default type if (1) the encoded field contains `bin` or `aggregate` except `\\\\\\\"argmin\\\\\\\"` and `\\\\\\\"argmax\\\\\\\"`, (2) the encoding channel is `latitude` or `longitude` channel or (3) if the specified scale type is [a quantitative scale](https://vega.github.io/vega-lite/docs/scale.html#type). - `\\\\\\\"temporal\\\\\\\"` is the default type if (1) the encoded field contains `timeUnit` or (2) the specified scale type is a time or utc scale - `ordinal\\\\\\\"\\\\\\\"` is the default type if (1) the encoded field contains a [custom `sort` order](https://vega.github.io/vega-lite/docs/sort.html#specifying-custom-sort-order), (2) the specified scale type is an ordinal/point/band scale, or (3) the encoding channel is `order`.\\\\n\\\\n2) For a constant value in data domain (`datum`): - `\\\\\\\"quantitative\\\\\\\"` if the datum is a number - `\\\\\\\"nominal\\\\\\\"` if the datum is a string - `\\\\\\\"temporal\\\\\\\"` if the datum is [a date time object](https://vega.github.io/vega-lite/docs/datetime.html)\\\\n\\\\n__Note:__ - Data `type` describes the semantics of the data rather than the primitive data types (number, string, etc.). The same primitive data type can have different types of measurement. For example, numeric data can represent quantitative, ordinal, or nominal data. - Data values for a temporal field can be either a date-time string (e.g., `\\\\\\\"2015-03-07 12:32:17\\\\\\\"`, `\\\\\\\"17:01\\\\\\\"`, `\\\\\\\"2015-03-16\\\\\\\"`. `\\\\\\\"2015\\\\\\\"`) or a timestamp number (e.g., `1552199579097`). - When using with [`bin`](https://vega.github.io/vega-lite/docs/bin.html), the `type` property can be either `\\\\\\\"quantitative\\\\\\\"` (for using a linear bin scale) or [`\\\\\\\"ordinal\\\\\\\"` (for using an ordinal bin scale)](https://vega.github.io/vega-lite/docs/type.html#cast-bin). - When using with [`timeUnit`](https://vega.github.io/vega-lite/docs/timeunit.html), the `type` property can be either `\\\\\\\"temporal\\\\\\\"` (default, for using a temporal scale) or [`\\\\\\\"ordinal\\\\\\\"` (for using an ordinal scale)](https://vega.github.io/vega-lite/docs/type.html#cast-bin). - When using with [`aggregate`](https://vega.github.io/vega-lite/docs/aggregate.html), the `type` property refers to the post-aggregation data type. For example, we can calculate count `distinct` of a categorical field `\\\\\\\"cat\\\\\\\"` using `{\\\\\\\"aggregate\\\\\\\": \\\\\\\"distinct\\\\\\\", \\\\\\\"field\\\\\\\": \\\\\\\"cat\\\\\\\"}`. The `\\\\\\\"type\\\\\\\"` of the aggregate output is `\\\\\\\"quantitative\\\\\\\"`. - Secondary channels (e.g., `x2`, `y2`, `xError`, `yError`) do not have `type` as they must have exactly the same type as their primary channels (e.g., `x`, `y`).\\\\n\\\\n__See also:__ [`type`](https://vega.github.io/vega-lite/docs/type.html) documentation.\\\"}],\\\"description\\\":\\\"The type of measurement (`\\\\\\\"quantitative\\\\\\\"`, `\\\\\\\"temporal\\\\\\\"`, `\\\\\\\"ordinal\\\\\\\"`, or `\\\\\\\"nominal\\\\\\\"`) for the encoded field or constant value (`datum`). It can also be a `\\\\\\\"geojson\\\\\\\"` type for encoding ['geoshape'](https://vega.github.io/vega-lite/docs/geoshape.html).\\\\n\\\\nVega-Lite automatically infers data types in many cases as discussed below. However, type is required for a field if: (1) the field is not nominal and the field encoding has no specified `aggregate` (except `argmin` and `argmax`), `bin`, scale type, custom `sort` order, nor `timeUnit` or (2) if you wish to use an ordinal scale for a field with `bin` or `timeUnit`.\\\\n\\\\n__Default value:__\\\\n\\\\n1) For a data `field`, `\\\\\\\"nominal\\\\\\\"` is the default data type unless the field encoding has `aggregate`, `channel`, `bin`, scale type, `sort`, or `timeUnit` that satisfies the following criteria: - `\\\\\\\"quantitative\\\\\\\"` is the default type if (1) the encoded field contains `bin` or `aggregate` except `\\\\\\\"argmin\\\\\\\"` and `\\\\\\\"argmax\\\\\\\"`, (2) the encoding channel is `latitude` or `longitude` channel or (3) if the specified scale type is [a quantitative scale](https://vega.github.io/vega-lite/docs/scale.html#type). - `\\\\\\\"temporal\\\\\\\"` is the default type if (1) the encoded field contains `timeUnit` or (2) the specified scale type is a time or utc scale - `ordinal\\\\\\\"\\\\\\\"` is the default type if (1) the encoded field contains a [custom `sort` order](https://vega.github.io/vega-lite/docs/sort.html#specifying-custom-sort-order), (2) the specified scale type is an ordinal/point/band scale, or (3) the encoding channel is `order`.\\\\n\\\\n2) For a constant value in data domain (`datum`): - `\\\\\\\"quantitative\\\\\\\"` if the datum is a number - `\\\\\\\"nominal\\\\\\\"` if the datum is a string - `\\\\\\\"temporal\\\\\\\"` if the datum is [a date time object](https://vega.github.io/vega-lite/docs/datetime.html)\\\\n\\\\n__Note:__ - Data `type` describes the semantics of the data rather than the primitive data types (number, string, etc.). The same primitive data type can have different types of measurement. For example, numeric data can represent quantitative, ordinal, or nominal data. - Data values for a temporal field can be either a date-time string (e.g., `\\\\\\\"2015-03-07 12:32:17\\\\\\\"`, `\\\\\\\"17:01\\\\\\\"`, `\\\\\\\"2015-03-16\\\\\\\"`. `\\\\\\\"2015\\\\\\\"`) or a timestamp number (e.g., `1552199579097`). - When using with [`bin`](https://vega.github.io/vega-lite/docs/bin.html), the `type` property can be either `\\\\\\\"quantitative\\\\\\\"` (for using a linear bin scale) or [`\\\\\\\"ordinal\\\\\\\"` (for using an ordinal bin scale)](https://vega.github.io/vega-lite/docs/type.html#cast-bin). - When using with [`timeUnit`](https://vega.github.io/vega-lite/docs/timeunit.html), the `type` property can be either `\\\\\\\"temporal\\\\\\\"` (default, for using a temporal scale) or [`\\\\\\\"ordinal\\\\\\\"` (for using an ordinal scale)](https://vega.github.io/vega-lite/docs/type.html#cast-bin). - When using with [`aggregate`](https://vega.github.io/vega-lite/docs/aggregate.html), the `type` property refers to the post-aggregation data type. For example, we can calculate count `distinct` of a categorical field `\\\\\\\"cat\\\\\\\"` using `{\\\\\\\"aggregate\\\\\\\": \\\\\\\"distinct\\\\\\\", \\\\\\\"field\\\\\\\": \\\\\\\"cat\\\\\\\"}`. The `\\\\\\\"type\\\\\\\"` of the aggregate output is `\\\\\\\"quantitative\\\\\\\"`. - Secondary channels (e.g., `x2`, `y2`, `xError`, `yError`) do not have `type` as they must have exactly the same type as their primary channels (e.g., `x`, `y`).\\\\n\\\\n__See also:__ [`type`](https://vega.github.io/vega-lite/docs/type.html) documentation.\\\"},\\\"value\\\":{\\\"anyOf\\\":[{\\\"type\\\":\\\"number\\\"},{\\\"const\\\":\\\"width\\\",\\\"type\\\":\\\"string\\\"},{\\\"const\\\":\\\"height\\\",\\\"type\\\":\\\"string\\\"},{\\\"$ref\\\":\\\"#/definitions/ExprRef\\\"}],\\\"description\\\":\\\"A constant value in visual domain (e.g., `\\\\\\\"red\\\\\\\"` / `\\\\\\\"#0099ff\\\\\\\"` / [gradient definition](https://vega.github.io/vega-lite/docs/types.html#gradient) for color, values between `0` to `1` for opacity).\\\"}},\\\"type\\\":\\\"object\\\"},\\\"radius2\\\":{\\\"additionalProperties\\\":false,\\\"properties\\\":{\\\"aggregate\\\":{\\\"$ref\\\":\\\"#/definitions/Aggregate\\\",\\\"description\\\":\\\"Aggregation function for the field (e.g., `\\\\\\\"mean\\\\\\\"`, `\\\\\\\"sum\\\\\\\"`, `\\\\\\\"median\\\\\\\"`, `\\\\\\\"min\\\\\\\"`, `\\\\\\\"max\\\\\\\"`, `\\\\\\\"count\\\\\\\"`).\\\\n\\\\n__Default value:__ `undefined` (None)\\\\n\\\\n__See also:__ [`aggregate`](https://vega.github.io/vega-lite/docs/aggregate.html) documentation.\\\"},\\\"band\\\":{\\\"description\\\":\\\"For rect-based marks (`rect`, `bar`, and `image`), mark size relative to bandwidth of [band scales](https://vega.github.io/vega-lite/docs/scale.html#band), bins or time units. If set to `1`, the mark size is set to the bandwidth, the bin interval, or the time unit interval. If set to `0.5`, the mark size is half of the bandwidth or the time unit interval.\\\\n\\\\nFor other marks, relative position on a band of a stacked, binned, time unit or band scale. If set to `0`, the marks will be positioned at the beginning of the band. If set to `0.5`, the marks will be positioned in the middle of the band.\\\",\\\"maximum\\\":1,\\\"minimum\\\":0,\\\"type\\\":\\\"number\\\"},\\\"bin\\\":{\\\"description\\\":\\\"A flag for binning a `quantitative` field, [an object defining binning parameters](https://vega.github.io/vega-lite/docs/bin.html#params), or indicating that the data for `x` or `y` channel are binned before they are imported into Vega-Lite (`\\\\\\\"binned\\\\\\\"`).\\\\n\\\\n- If `true`, default [binning parameters](https://vega.github.io/vega-lite/docs/bin.html) will be applied.\\\\n\\\\n- If `\\\\\\\"binned\\\\\\\"`, this indicates that the data for the `x` (or `y`) channel are already binned. You can map the bin-start field to `x` (or `y`) and the bin-end field to `x2` (or `y2`). The scale and axis will be formatted similar to binning in Vega-Lite.  To adjust the axis ticks based on the bin step, you can also set the axis's [`tickMinStep`](https://vega.github.io/vega-lite/docs/axis.html#ticks) property.\\\\n\\\\n__Default value:__ `false`\\\\n\\\\n__See also:__ [`bin`](https://vega.github.io/vega-lite/docs/bin.html) documentation.\\\",\\\"type\\\":\\\"null\\\"},\\\"datum\\\":{\\\"anyOf\\\":[{\\\"$ref\\\":\\\"#/definitions/PrimitiveValue\\\"},{\\\"$ref\\\":\\\"#/definitions/DateTime\\\"},{\\\"$ref\\\":\\\"#/definitions/ExprRef\\\"},{\\\"$ref\\\":\\\"#/definitions/RepeatRef\\\"}],\\\"description\\\":\\\"A constant value in data domain.\\\"},\\\"field\\\":{\\\"$ref\\\":\\\"#/definitions/Field\\\",\\\"description\\\":\\\"__Required.__ A string defining the name of the field from which to pull a data value or an object defining iterated values from the [`repeat`](https://vega.github.io/vega-lite/docs/repeat.html) operator.\\\\n\\\\n__See also:__ [`field`](https://vega.github.io/vega-lite/docs/field.html) documentation.\\\\n\\\\n__Notes:__ 1)  Dots (`.`) and brackets (`[` and `]`) can be used to access nested objects (e.g., `\\\\\\\"field\\\\\\\": \\\\\\\"foo.bar\\\\\\\"` and `\\\\\\\"field\\\\\\\": \\\\\\\"foo['bar']\\\\\\\"`). If field names contain dots or brackets but are not nested, you can use `\\\\\\\\\\\\\\\\` to escape dots and brackets (e.g., `\\\\\\\"a\\\\\\\\\\\\\\\\.b\\\\\\\"` and `\\\\\\\"a\\\\\\\\\\\\\\\\[0\\\\\\\\\\\\\\\\]\\\\\\\"`). See more details about escaping in the [field documentation](https://vega.github.io/vega-lite/docs/field.html). 2) `field` is not required if `aggregate` is `count`.\\\"},\\\"timeUnit\\\":{\\\"anyOf\\\":[{\\\"$ref\\\":\\\"#/definitions/TimeUnit\\\"},{\\\"$ref\\\":\\\"#/definitions/TimeUnitParams\\\"}],\\\"description\\\":\\\"Time unit (e.g., `year`, `yearmonth`, `month`, `hours`) for a temporal field. or [a temporal field that gets casted as ordinal](https://vega.github.io/vega-lite/docs/type.html#cast).\\\\n\\\\n__Default value:__ `undefined` (None)\\\\n\\\\n__See also:__ [`timeUnit`](https://vega.github.io/vega-lite/docs/timeunit.html) documentation.\\\"},\\\"title\\\":{\\\"anyOf\\\":[{\\\"$ref\\\":\\\"#/definitions/Text\\\"},{\\\"type\\\":\\\"null\\\"}],\\\"description\\\":\\\"A title for the field. If `null`, the title will be removed.\\\\n\\\\n__Default value:__  derived from the field's name and transformation function (`aggregate`, `bin` and `timeUnit`). If the field has an aggregate function, the function is displayed as part of the title (e.g., `\\\\\\\"Sum of Profit\\\\\\\"`). If the field is binned or has a time unit applied, the applied function is shown in parentheses (e.g., `\\\\\\\"Profit (binned)\\\\\\\"`, `\\\\\\\"Transaction Date (year-month)\\\\\\\"`). Otherwise, the title is simply the field name.\\\\n\\\\n__Notes__:\\\\n\\\\n1) You can customize the default field title format by providing the [`fieldTitle`](https://vega.github.io/vega-lite/docs/config.html#top-level-config) property in the [config](https://vega.github.io/vega-lite/docs/config.html) or [`fieldTitle` function via the `compile` function's options](https://vega.github.io/vega-lite/docs/compile.html#field-title).\\\\n\\\\n2) If both field definition's `title` and axis, header, or legend `title` are defined, axis/header/legend title will be used.\\\"},\\\"type\\\":{\\\"$ref\\\":\\\"#/definitions/Type\\\",\\\"description\\\":\\\"The type of measurement (`\\\\\\\"quantitative\\\\\\\"`, `\\\\\\\"temporal\\\\\\\"`, `\\\\\\\"ordinal\\\\\\\"`, or `\\\\\\\"nominal\\\\\\\"`) for the encoded field or constant value (`datum`). It can also be a `\\\\\\\"geojson\\\\\\\"` type for encoding ['geoshape'](https://vega.github.io/vega-lite/docs/geoshape.html).\\\\n\\\\nVega-Lite automatically infers data types in many cases as discussed below. However, type is required for a field if: (1) the field is not nominal and the field encoding has no specified `aggregate` (except `argmin` and `argmax`), `bin`, scale type, custom `sort` order, nor `timeUnit` or (2) if you wish to use an ordinal scale for a field with `bin` or `timeUnit`.\\\\n\\\\n__Default value:__\\\\n\\\\n1) For a data `field`, `\\\\\\\"nominal\\\\\\\"` is the default data type unless the field encoding has `aggregate`, `channel`, `bin`, scale type, `sort`, or `timeUnit` that satisfies the following criteria: - `\\\\\\\"quantitative\\\\\\\"` is the default type if (1) the encoded field contains `bin` or `aggregate` except `\\\\\\\"argmin\\\\\\\"` and `\\\\\\\"argmax\\\\\\\"`, (2) the encoding channel is `latitude` or `longitude` channel or (3) if the specified scale type is [a quantitative scale](https://vega.github.io/vega-lite/docs/scale.html#type). - `\\\\\\\"temporal\\\\\\\"` is the default type if (1) the encoded field contains `timeUnit` or (2) the specified scale type is a time or utc scale - `ordinal\\\\\\\"\\\\\\\"` is the default type if (1) the encoded field contains a [custom `sort` order](https://vega.github.io/vega-lite/docs/sort.html#specifying-custom-sort-order), (2) the specified scale type is an ordinal/point/band scale, or (3) the encoding channel is `order`.\\\\n\\\\n2) For a constant value in data domain (`datum`): - `\\\\\\\"quantitative\\\\\\\"` if the datum is a number - `\\\\\\\"nominal\\\\\\\"` if the datum is a string - `\\\\\\\"temporal\\\\\\\"` if the datum is [a date time object](https://vega.github.io/vega-lite/docs/datetime.html)\\\\n\\\\n__Note:__ - Data `type` describes the semantics of the data rather than the primitive data types (number, string, etc.). The same primitive data type can have different types of measurement. For example, numeric data can represent quantitative, ordinal, or nominal data. - Data values for a temporal field can be either a date-time string (e.g., `\\\\\\\"2015-03-07 12:32:17\\\\\\\"`, `\\\\\\\"17:01\\\\\\\"`, `\\\\\\\"2015-03-16\\\\\\\"`. `\\\\\\\"2015\\\\\\\"`) or a timestamp number (e.g., `1552199579097`). - When using with [`bin`](https://vega.github.io/vega-lite/docs/bin.html), the `type` property can be either `\\\\\\\"quantitative\\\\\\\"` (for using a linear bin scale) or [`\\\\\\\"ordinal\\\\\\\"` (for using an ordinal bin scale)](https://vega.github.io/vega-lite/docs/type.html#cast-bin). - When using with [`timeUnit`](https://vega.github.io/vega-lite/docs/timeunit.html), the `type` property can be either `\\\\\\\"temporal\\\\\\\"` (default, for using a temporal scale) or [`\\\\\\\"ordinal\\\\\\\"` (for using an ordinal scale)](https://vega.github.io/vega-lite/docs/type.html#cast-bin). - When using with [`aggregate`](https://vega.github.io/vega-lite/docs/aggregate.html), the `type` property refers to the post-aggregation data type. For example, we can calculate count `distinct` of a categorical field `\\\\\\\"cat\\\\\\\"` using `{\\\\\\\"aggregate\\\\\\\": \\\\\\\"distinct\\\\\\\", \\\\\\\"field\\\\\\\": \\\\\\\"cat\\\\\\\"}`. The `\\\\\\\"type\\\\\\\"` of the aggregate output is `\\\\\\\"quantitative\\\\\\\"`. - Secondary channels (e.g., `x2`, `y2`, `xError`, `yError`) do not have `type` as they must have exactly the same type as their primary channels (e.g., `x`, `y`).\\\\n\\\\n__See also:__ [`type`](https://vega.github.io/vega-lite/docs/type.html) documentation.\\\"},\\\"value\\\":{\\\"anyOf\\\":[{\\\"type\\\":\\\"number\\\"},{\\\"const\\\":\\\"width\\\",\\\"type\\\":\\\"string\\\"},{\\\"const\\\":\\\"height\\\",\\\"type\\\":\\\"string\\\"},{\\\"$ref\\\":\\\"#/definitions/ExprRef\\\"}],\\\"description\\\":\\\"A constant value in visual domain (e.g., `\\\\\\\"red\\\\\\\"` / `\\\\\\\"#0099ff\\\\\\\"` / [gradient definition](https://vega.github.io/vega-lite/docs/types.html#gradient) for color, values between `0` to `1` for opacity).\\\"}},\\\"type\\\":\\\"object\\\"},\\\"shape\\\":{\\\"additionalProperties\\\":false,\\\"properties\\\":{\\\"aggregate\\\":{\\\"$ref\\\":\\\"#/definitions/Aggregate\\\",\\\"description\\\":\\\"Aggregation function for the field (e.g., `\\\\\\\"mean\\\\\\\"`, `\\\\\\\"sum\\\\\\\"`, `\\\\\\\"median\\\\\\\"`, `\\\\\\\"min\\\\\\\"`, `\\\\\\\"max\\\\\\\"`, `\\\\\\\"count\\\\\\\"`).\\\\n\\\\n__Default value:__ `undefined` (None)\\\\n\\\\n__See also:__ [`aggregate`](https://vega.github.io/vega-lite/docs/aggregate.html) documentation.\\\"},\\\"band\\\":{\\\"description\\\":\\\"For rect-based marks (`rect`, `bar`, and `image`), mark size relative to bandwidth of [band scales](https://vega.github.io/vega-lite/docs/scale.html#band), bins or time units. If set to `1`, the mark size is set to the bandwidth, the bin interval, or the time unit interval. If set to `0.5`, the mark size is half of the bandwidth or the time unit interval.\\\\n\\\\nFor other marks, relative position on a band of a stacked, binned, time unit or band scale. If set to `0`, the marks will be positioned at the beginning of the band. If set to `0.5`, the marks will be positioned in the middle of the band.\\\",\\\"maximum\\\":1,\\\"minimum\\\":0,\\\"type\\\":\\\"number\\\"},\\\"bin\\\":{\\\"anyOf\\\":[{\\\"type\\\":\\\"boolean\\\"},{\\\"$ref\\\":\\\"#/definitions/BinParams\\\"},{\\\"type\\\":\\\"null\\\"}],\\\"description\\\":\\\"A flag for binning a `quantitative` field, [an object defining binning parameters](https://vega.github.io/vega-lite/docs/bin.html#params), or indicating that the data for `x` or `y` channel are binned before they are imported into Vega-Lite (`\\\\\\\"binned\\\\\\\"`).\\\\n\\\\n- If `true`, default [binning parameters](https://vega.github.io/vega-lite/docs/bin.html) will be applied.\\\\n\\\\n- If `\\\\\\\"binned\\\\\\\"`, this indicates that the data for the `x` (or `y`) channel are already binned. You can map the bin-start field to `x` (or `y`) and the bin-end field to `x2` (or `y2`). The scale and axis will be formatted similar to binning in Vega-Lite.  To adjust the axis ticks based on the bin step, you can also set the axis's [`tickMinStep`](https://vega.github.io/vega-lite/docs/axis.html#ticks) property.\\\\n\\\\n__Default value:__ `false`\\\\n\\\\n__See also:__ [`bin`](https://vega.github.io/vega-lite/docs/bin.html) documentation.\\\"},\\\"condition\\\":{\\\"anyOf\\\":[{\\\"anyOf\\\":[{\\\"$ref\\\":\\\"#/definitions/ConditionalValueDef<(string|null|ExprRef)>\\\"},{\\\"items\\\":{\\\"$ref\\\":\\\"#/definitions/ConditionalValueDef<(string|null|ExprRef)>\\\"},\\\"type\\\":\\\"array\\\"}],\\\"description\\\":\\\"One or more value definition(s) with [a selection or a test predicate](https://vega.github.io/vega-lite/docs/condition.html).\\\\n\\\\n__Note:__ A field definition's `condition` property can only contain [conditional value definitions](https://vega.github.io/vega-lite/docs/condition.html#value) since Vega-Lite only allows at most one encoded field per encoding channel.\\\"},{\\\"anyOf\\\":[{\\\"$ref\\\":\\\"#/definitions/ConditionalMarkPropFieldOrDatumDef<TypeForShape>\\\"},{\\\"$ref\\\":\\\"#/definitions/ConditionalValueDef<(string|null|ExprRef)>\\\"},{\\\"items\\\":{\\\"$ref\\\":\\\"#/definitions/ConditionalValueDef<(string|null|ExprRef)>\\\"},\\\"type\\\":\\\"array\\\"}],\\\"description\\\":\\\"A field definition or one or more value definition(s) with a selection predicate.\\\"}],\\\"description\\\":\\\"One or more value definition(s) with [a selection or a test predicate](https://vega.github.io/vega-lite/docs/condition.html).\\\\n\\\\n__Note:__ A field definition's `condition` property can only contain [conditional value definitions](https://vega.github.io/vega-lite/docs/condition.html#value) since Vega-Lite only allows at most one encoded field per encoding channel.\\\"},\\\"datum\\\":{\\\"anyOf\\\":[{\\\"$ref\\\":\\\"#/definitions/PrimitiveValue\\\"},{\\\"$ref\\\":\\\"#/definitions/DateTime\\\"},{\\\"$ref\\\":\\\"#/definitions/ExprRef\\\"},{\\\"$ref\\\":\\\"#/definitions/RepeatRef\\\"}],\\\"description\\\":\\\"A constant value in data domain.\\\"},\\\"field\\\":{\\\"$ref\\\":\\\"#/definitions/Field\\\",\\\"description\\\":\\\"__Required.__ A string defining the name of the field from which to pull a data value or an object defining iterated values from the [`repeat`](https://vega.github.io/vega-lite/docs/repeat.html) operator.\\\\n\\\\n__See also:__ [`field`](https://vega.github.io/vega-lite/docs/field.html) documentation.\\\\n\\\\n__Notes:__ 1)  Dots (`.`) and brackets (`[` and `]`) can be used to access nested objects (e.g., `\\\\\\\"field\\\\\\\": \\\\\\\"foo.bar\\\\\\\"` and `\\\\\\\"field\\\\\\\": \\\\\\\"foo['bar']\\\\\\\"`). If field names contain dots or brackets but are not nested, you can use `\\\\\\\\\\\\\\\\` to escape dots and brackets (e.g., `\\\\\\\"a\\\\\\\\\\\\\\\\.b\\\\\\\"` and `\\\\\\\"a\\\\\\\\\\\\\\\\[0\\\\\\\\\\\\\\\\]\\\\\\\"`). See more details about escaping in the [field documentation](https://vega.github.io/vega-lite/docs/field.html). 2) `field` is not required if `aggregate` is `count`.\\\"},\\\"legend\\\":{\\\"anyOf\\\":[{\\\"$ref\\\":\\\"#/definitions/Legend\\\"},{\\\"type\\\":\\\"null\\\"}],\\\"description\\\":\\\"An object defining properties of the legend. If `null`, the legend for the encoding channel will be removed.\\\\n\\\\n__Default value:__ If undefined, default [legend properties](https://vega.github.io/vega-lite/docs/legend.html) are applied.\\\\n\\\\n__See also:__ [`legend`](https://vega.github.io/vega-lite/docs/legend.html) documentation.\\\"},\\\"scale\\\":{\\\"anyOf\\\":[{\\\"$ref\\\":\\\"#/definitions/Scale\\\"},{\\\"type\\\":\\\"null\\\"}],\\\"description\\\":\\\"An object defining properties of the channel's scale, which is the function that transforms values in the data domain (numbers, dates, strings, etc) to visual values (pixels, colors, sizes) of the encoding channels.\\\\n\\\\nIf `null`, the scale will be [disabled and the data value will be directly encoded](https://vega.github.io/vega-lite/docs/scale.html#disable).\\\\n\\\\n__Default value:__ If undefined, default [scale properties](https://vega.github.io/vega-lite/docs/scale.html) are applied.\\\\n\\\\n__See also:__ [`scale`](https://vega.github.io/vega-lite/docs/scale.html) documentation.\\\"},\\\"sort\\\":{\\\"$ref\\\":\\\"#/definitions/Sort\\\",\\\"description\\\":\\\"Sort order for the encoded field.\\\\n\\\\nFor continuous fields (quantitative or temporal), `sort` can be either `\\\\\\\"ascending\\\\\\\"` or `\\\\\\\"descending\\\\\\\"`.\\\\n\\\\nFor discrete fields, `sort` can be one of the following: - `\\\\\\\"ascending\\\\\\\"` or `\\\\\\\"descending\\\\\\\"` -- for sorting by the values' natural order in JavaScript. - [A string indicating an encoding channel name to sort by](https://vega.github.io/vega-lite/docs/sort.html#sort-by-encoding) (e.g., `\\\\\\\"x\\\\\\\"` or `\\\\\\\"y\\\\\\\"`) with an optional minus prefix for descending sort (e.g., `\\\\\\\"-x\\\\\\\"` to sort by x-field, descending). This channel string is short-form of [a sort-by-encoding definition](https://vega.github.io/vega-lite/docs/sort.html#sort-by-encoding). For example, `\\\\\\\"sort\\\\\\\": \\\\\\\"-x\\\\\\\"` is equivalent to `\\\\\\\"sort\\\\\\\": {\\\\\\\"encoding\\\\\\\": \\\\\\\"x\\\\\\\", \\\\\\\"order\\\\\\\": \\\\\\\"descending\\\\\\\"}`. - [A sort field definition](https://vega.github.io/vega-lite/docs/sort.html#sort-field) for sorting by another field. - [An array specifying the field values in preferred order](https://vega.github.io/vega-lite/docs/sort.html#sort-array). In this case, the sort order will obey the values in the array, followed by any unspecified values in their original order. For discrete time field, values in the sort array can be [date-time definition objects](types#datetime). In addition, for time units `\\\\\\\"month\\\\\\\"` and `\\\\\\\"day\\\\\\\"`, the values can be the month or day names (case insensitive) or their 3-letter initials (e.g., `\\\\\\\"Mon\\\\\\\"`, `\\\\\\\"Tue\\\\\\\"`). - `null` indicating no sort.\\\\n\\\\n__Default value:__ `\\\\\\\"ascending\\\\\\\"`\\\\n\\\\n__Note:__ `null` and sorting by another channel is not supported for `row` and `column`.\\\\n\\\\n__See also:__ [`sort`](https://vega.github.io/vega-lite/docs/sort.html) documentation.\\\"},\\\"timeUnit\\\":{\\\"anyOf\\\":[{\\\"$ref\\\":\\\"#/definitions/TimeUnit\\\"},{\\\"$ref\\\":\\\"#/definitions/TimeUnitParams\\\"}],\\\"description\\\":\\\"Time unit (e.g., `year`, `yearmonth`, `month`, `hours`) for a temporal field. or [a temporal field that gets casted as ordinal](https://vega.github.io/vega-lite/docs/type.html#cast).\\\\n\\\\n__Default value:__ `undefined` (None)\\\\n\\\\n__See also:__ [`timeUnit`](https://vega.github.io/vega-lite/docs/timeunit.html) documentation.\\\"},\\\"title\\\":{\\\"anyOf\\\":[{\\\"$ref\\\":\\\"#/definitions/Text\\\"},{\\\"type\\\":\\\"null\\\"}],\\\"description\\\":\\\"A title for the field. If `null`, the title will be removed.\\\\n\\\\n__Default value:__  derived from the field's name and transformation function (`aggregate`, `bin` and `timeUnit`). If the field has an aggregate function, the function is displayed as part of the title (e.g., `\\\\\\\"Sum of Profit\\\\\\\"`). If the field is binned or has a time unit applied, the applied function is shown in parentheses (e.g., `\\\\\\\"Profit (binned)\\\\\\\"`, `\\\\\\\"Transaction Date (year-month)\\\\\\\"`). Otherwise, the title is simply the field name.\\\\n\\\\n__Notes__:\\\\n\\\\n1) You can customize the default field title format by providing the [`fieldTitle`](https://vega.github.io/vega-lite/docs/config.html#top-level-config) property in the [config](https://vega.github.io/vega-lite/docs/config.html) or [`fieldTitle` function via the `compile` function's options](https://vega.github.io/vega-lite/docs/compile.html#field-title).\\\\n\\\\n2) If both field definition's `title` and axis, header, or legend `title` are defined, axis/header/legend title will be used.\\\"},\\\"type\\\":{\\\"anyOf\\\":[{\\\"$ref\\\":\\\"#/definitions/TypeForShape\\\",\\\"description\\\":\\\"The type of measurement (`\\\\\\\"quantitative\\\\\\\"`, `\\\\\\\"temporal\\\\\\\"`, `\\\\\\\"ordinal\\\\\\\"`, or `\\\\\\\"nominal\\\\\\\"`) for the encoded field or constant value (`datum`). It can also be a `\\\\\\\"geojson\\\\\\\"` type for encoding ['geoshape'](https://vega.github.io/vega-lite/docs/geoshape.html).\\\\n\\\\nVega-Lite automatically infers data types in many cases as discussed below. However, type is required for a field if: (1) the field is not nominal and the field encoding has no specified `aggregate` (except `argmin` and `argmax`), `bin`, scale type, custom `sort` order, nor `timeUnit` or (2) if you wish to use an ordinal scale for a field with `bin` or `timeUnit`.\\\\n\\\\n__Default value:__\\\\n\\\\n1) For a data `field`, `\\\\\\\"nominal\\\\\\\"` is the default data type unless the field encoding has `aggregate`, `channel`, `bin`, scale type, `sort`, or `timeUnit` that satisfies the following criteria: - `\\\\\\\"quantitative\\\\\\\"` is the default type if (1) the encoded field contains `bin` or `aggregate` except `\\\\\\\"argmin\\\\\\\"` and `\\\\\\\"argmax\\\\\\\"`, (2) the encoding channel is `latitude` or `longitude` channel or (3) if the specified scale type is [a quantitative scale](https://vega.github.io/vega-lite/docs/scale.html#type). - `\\\\\\\"temporal\\\\\\\"` is the default type if (1) the encoded field contains `timeUnit` or (2) the specified scale type is a time or utc scale - `ordinal\\\\\\\"\\\\\\\"` is the default type if (1) the encoded field contains a [custom `sort` order](https://vega.github.io/vega-lite/docs/sort.html#specifying-custom-sort-order), (2) the specified scale type is an ordinal/point/band scale, or (3) the encoding channel is `order`.\\\\n\\\\n2) For a constant value in data domain (`datum`): - `\\\\\\\"quantitative\\\\\\\"` if the datum is a number - `\\\\\\\"nominal\\\\\\\"` if the datum is a string - `\\\\\\\"temporal\\\\\\\"` if the datum is [a date time object](https://vega.github.io/vega-lite/docs/datetime.html)\\\\n\\\\n__Note:__ - Data `type` describes the semantics of the data rather than the primitive data types (number, string, etc.). The same primitive data type can have different types of measurement. For example, numeric data can represent quantitative, ordinal, or nominal data. - Data values for a temporal field can be either a date-time string (e.g., `\\\\\\\"2015-03-07 12:32:17\\\\\\\"`, `\\\\\\\"17:01\\\\\\\"`, `\\\\\\\"2015-03-16\\\\\\\"`. `\\\\\\\"2015\\\\\\\"`) or a timestamp number (e.g., `1552199579097`). - When using with [`bin`](https://vega.github.io/vega-lite/docs/bin.html), the `type` property can be either `\\\\\\\"quantitative\\\\\\\"` (for using a linear bin scale) or [`\\\\\\\"ordinal\\\\\\\"` (for using an ordinal bin scale)](https://vega.github.io/vega-lite/docs/type.html#cast-bin). - When using with [`timeUnit`](https://vega.github.io/vega-lite/docs/timeunit.html), the `type` property can be either `\\\\\\\"temporal\\\\\\\"` (default, for using a temporal scale) or [`\\\\\\\"ordinal\\\\\\\"` (for using an ordinal scale)](https://vega.github.io/vega-lite/docs/type.html#cast-bin). - When using with [`aggregate`](https://vega.github.io/vega-lite/docs/aggregate.html), the `type` property refers to the post-aggregation data type. For example, we can calculate count `distinct` of a categorical field `\\\\\\\"cat\\\\\\\"` using `{\\\\\\\"aggregate\\\\\\\": \\\\\\\"distinct\\\\\\\", \\\\\\\"field\\\\\\\": \\\\\\\"cat\\\\\\\"}`. The `\\\\\\\"type\\\\\\\"` of the aggregate output is `\\\\\\\"quantitative\\\\\\\"`. - Secondary channels (e.g., `x2`, `y2`, `xError`, `yError`) do not have `type` as they must have exactly the same type as their primary channels (e.g., `x`, `y`).\\\\n\\\\n__See also:__ [`type`](https://vega.github.io/vega-lite/docs/type.html) documentation.\\\"},{\\\"$ref\\\":\\\"#/definitions/Type\\\",\\\"description\\\":\\\"The type of measurement (`\\\\\\\"quantitative\\\\\\\"`, `\\\\\\\"temporal\\\\\\\"`, `\\\\\\\"ordinal\\\\\\\"`, or `\\\\\\\"nominal\\\\\\\"`) for the encoded field or constant value (`datum`). It can also be a `\\\\\\\"geojson\\\\\\\"` type for encoding ['geoshape'](https://vega.github.io/vega-lite/docs/geoshape.html).\\\\n\\\\nVega-Lite automatically infers data types in many cases as discussed below. However, type is required for a field if: (1) the field is not nominal and the field encoding has no specified `aggregate` (except `argmin` and `argmax`), `bin`, scale type, custom `sort` order, nor `timeUnit` or (2) if you wish to use an ordinal scale for a field with `bin` or `timeUnit`.\\\\n\\\\n__Default value:__\\\\n\\\\n1) For a data `field`, `\\\\\\\"nominal\\\\\\\"` is the default data type unless the field encoding has `aggregate`, `channel`, `bin`, scale type, `sort`, or `timeUnit` that satisfies the following criteria: - `\\\\\\\"quantitative\\\\\\\"` is the default type if (1) the encoded field contains `bin` or `aggregate` except `\\\\\\\"argmin\\\\\\\"` and `\\\\\\\"argmax\\\\\\\"`, (2) the encoding channel is `latitude` or `longitude` channel or (3) if the specified scale type is [a quantitative scale](https://vega.github.io/vega-lite/docs/scale.html#type). - `\\\\\\\"temporal\\\\\\\"` is the default type if (1) the encoded field contains `timeUnit` or (2) the specified scale type is a time or utc scale - `ordinal\\\\\\\"\\\\\\\"` is the default type if (1) the encoded field contains a [custom `sort` order](https://vega.github.io/vega-lite/docs/sort.html#specifying-custom-sort-order), (2) the specified scale type is an ordinal/point/band scale, or (3) the encoding channel is `order`.\\\\n\\\\n2) For a constant value in data domain (`datum`): - `\\\\\\\"quantitative\\\\\\\"` if the datum is a number - `\\\\\\\"nominal\\\\\\\"` if the datum is a string - `\\\\\\\"temporal\\\\\\\"` if the datum is [a date time object](https://vega.github.io/vega-lite/docs/datetime.html)\\\\n\\\\n__Note:__ - Data `type` describes the semantics of the data rather than the primitive data types (number, string, etc.). The same primitive data type can have different types of measurement. For example, numeric data can represent quantitative, ordinal, or nominal data. - Data values for a temporal field can be either a date-time string (e.g., `\\\\\\\"2015-03-07 12:32:17\\\\\\\"`, `\\\\\\\"17:01\\\\\\\"`, `\\\\\\\"2015-03-16\\\\\\\"`. `\\\\\\\"2015\\\\\\\"`) or a timestamp number (e.g., `1552199579097`). - When using with [`bin`](https://vega.github.io/vega-lite/docs/bin.html), the `type` property can be either `\\\\\\\"quantitative\\\\\\\"` (for using a linear bin scale) or [`\\\\\\\"ordinal\\\\\\\"` (for using an ordinal bin scale)](https://vega.github.io/vega-lite/docs/type.html#cast-bin). - When using with [`timeUnit`](https://vega.github.io/vega-lite/docs/timeunit.html), the `type` property can be either `\\\\\\\"temporal\\\\\\\"` (default, for using a temporal scale) or [`\\\\\\\"ordinal\\\\\\\"` (for using an ordinal scale)](https://vega.github.io/vega-lite/docs/type.html#cast-bin). - When using with [`aggregate`](https://vega.github.io/vega-lite/docs/aggregate.html), the `type` property refers to the post-aggregation data type. For example, we can calculate count `distinct` of a categorical field `\\\\\\\"cat\\\\\\\"` using `{\\\\\\\"aggregate\\\\\\\": \\\\\\\"distinct\\\\\\\", \\\\\\\"field\\\\\\\": \\\\\\\"cat\\\\\\\"}`. The `\\\\\\\"type\\\\\\\"` of the aggregate output is `\\\\\\\"quantitative\\\\\\\"`. - Secondary channels (e.g., `x2`, `y2`, `xError`, `yError`) do not have `type` as they must have exactly the same type as their primary channels (e.g., `x`, `y`).\\\\n\\\\n__See also:__ [`type`](https://vega.github.io/vega-lite/docs/type.html) documentation.\\\"}],\\\"description\\\":\\\"The type of measurement (`\\\\\\\"quantitative\\\\\\\"`, `\\\\\\\"temporal\\\\\\\"`, `\\\\\\\"ordinal\\\\\\\"`, or `\\\\\\\"nominal\\\\\\\"`) for the encoded field or constant value (`datum`). It can also be a `\\\\\\\"geojson\\\\\\\"` type for encoding ['geoshape'](https://vega.github.io/vega-lite/docs/geoshape.html).\\\\n\\\\nVega-Lite automatically infers data types in many cases as discussed below. However, type is required for a field if: (1) the field is not nominal and the field encoding has no specified `aggregate` (except `argmin` and `argmax`), `bin`, scale type, custom `sort` order, nor `timeUnit` or (2) if you wish to use an ordinal scale for a field with `bin` or `timeUnit`.\\\\n\\\\n__Default value:__\\\\n\\\\n1) For a data `field`, `\\\\\\\"nominal\\\\\\\"` is the default data type unless the field encoding has `aggregate`, `channel`, `bin`, scale type, `sort`, or `timeUnit` that satisfies the following criteria: - `\\\\\\\"quantitative\\\\\\\"` is the default type if (1) the encoded field contains `bin` or `aggregate` except `\\\\\\\"argmin\\\\\\\"` and `\\\\\\\"argmax\\\\\\\"`, (2) the encoding channel is `latitude` or `longitude` channel or (3) if the specified scale type is [a quantitative scale](https://vega.github.io/vega-lite/docs/scale.html#type). - `\\\\\\\"temporal\\\\\\\"` is the default type if (1) the encoded field contains `timeUnit` or (2) the specified scale type is a time or utc scale - `ordinal\\\\\\\"\\\\\\\"` is the default type if (1) the encoded field contains a [custom `sort` order](https://vega.github.io/vega-lite/docs/sort.html#specifying-custom-sort-order), (2) the specified scale type is an ordinal/point/band scale, or (3) the encoding channel is `order`.\\\\n\\\\n2) For a constant value in data domain (`datum`): - `\\\\\\\"quantitative\\\\\\\"` if the datum is a number - `\\\\\\\"nominal\\\\\\\"` if the datum is a string - `\\\\\\\"temporal\\\\\\\"` if the datum is [a date time object](https://vega.github.io/vega-lite/docs/datetime.html)\\\\n\\\\n__Note:__ - Data `type` describes the semantics of the data rather than the primitive data types (number, string, etc.). The same primitive data type can have different types of measurement. For example, numeric data can represent quantitative, ordinal, or nominal data. - Data values for a temporal field can be either a date-time string (e.g., `\\\\\\\"2015-03-07 12:32:17\\\\\\\"`, `\\\\\\\"17:01\\\\\\\"`, `\\\\\\\"2015-03-16\\\\\\\"`. `\\\\\\\"2015\\\\\\\"`) or a timestamp number (e.g., `1552199579097`). - When using with [`bin`](https://vega.github.io/vega-lite/docs/bin.html), the `type` property can be either `\\\\\\\"quantitative\\\\\\\"` (for using a linear bin scale) or [`\\\\\\\"ordinal\\\\\\\"` (for using an ordinal bin scale)](https://vega.github.io/vega-lite/docs/type.html#cast-bin). - When using with [`timeUnit`](https://vega.github.io/vega-lite/docs/timeunit.html), the `type` property can be either `\\\\\\\"temporal\\\\\\\"` (default, for using a temporal scale) or [`\\\\\\\"ordinal\\\\\\\"` (for using an ordinal scale)](https://vega.github.io/vega-lite/docs/type.html#cast-bin). - When using with [`aggregate`](https://vega.github.io/vega-lite/docs/aggregate.html), the `type` property refers to the post-aggregation data type. For example, we can calculate count `distinct` of a categorical field `\\\\\\\"cat\\\\\\\"` using `{\\\\\\\"aggregate\\\\\\\": \\\\\\\"distinct\\\\\\\", \\\\\\\"field\\\\\\\": \\\\\\\"cat\\\\\\\"}`. The `\\\\\\\"type\\\\\\\"` of the aggregate output is `\\\\\\\"quantitative\\\\\\\"`. - Secondary channels (e.g., `x2`, `y2`, `xError`, `yError`) do not have `type` as they must have exactly the same type as their primary channels (e.g., `x`, `y`).\\\\n\\\\n__See also:__ [`type`](https://vega.github.io/vega-lite/docs/type.html) documentation.\\\"},\\\"value\\\":{\\\"anyOf\\\":[{\\\"type\\\":\\\"string\\\"},{\\\"type\\\":\\\"null\\\"},{\\\"$ref\\\":\\\"#/definitions/ExprRef\\\"}],\\\"description\\\":\\\"A constant value in visual domain (e.g., `\\\\\\\"red\\\\\\\"` / `\\\\\\\"#0099ff\\\\\\\"` / [gradient definition](https://vega.github.io/vega-lite/docs/types.html#gradient) for color, values between `0` to `1` for opacity).\\\"}},\\\"type\\\":\\\"object\\\"},\\\"size\\\":{\\\"additionalProperties\\\":false,\\\"properties\\\":{\\\"aggregate\\\":{\\\"$ref\\\":\\\"#/definitions/Aggregate\\\",\\\"description\\\":\\\"Aggregation function for the field (e.g., `\\\\\\\"mean\\\\\\\"`, `\\\\\\\"sum\\\\\\\"`, `\\\\\\\"median\\\\\\\"`, `\\\\\\\"min\\\\\\\"`, `\\\\\\\"max\\\\\\\"`, `\\\\\\\"count\\\\\\\"`).\\\\n\\\\n__Default value:__ `undefined` (None)\\\\n\\\\n__See also:__ [`aggregate`](https://vega.github.io/vega-lite/docs/aggregate.html) documentation.\\\"},\\\"band\\\":{\\\"description\\\":\\\"For rect-based marks (`rect`, `bar`, and `image`), mark size relative to bandwidth of [band scales](https://vega.github.io/vega-lite/docs/scale.html#band), bins or time units. If set to `1`, the mark size is set to the bandwidth, the bin interval, or the time unit interval. If set to `0.5`, the mark size is half of the bandwidth or the time unit interval.\\\\n\\\\nFor other marks, relative position on a band of a stacked, binned, time unit or band scale. If set to `0`, the marks will be positioned at the beginning of the band. If set to `0.5`, the marks will be positioned in the middle of the band.\\\",\\\"maximum\\\":1,\\\"minimum\\\":0,\\\"type\\\":\\\"number\\\"},\\\"bin\\\":{\\\"anyOf\\\":[{\\\"type\\\":\\\"boolean\\\"},{\\\"$ref\\\":\\\"#/definitions/BinParams\\\"},{\\\"type\\\":\\\"null\\\"}],\\\"description\\\":\\\"A flag for binning a `quantitative` field, [an object defining binning parameters](https://vega.github.io/vega-lite/docs/bin.html#params), or indicating that the data for `x` or `y` channel are binned before they are imported into Vega-Lite (`\\\\\\\"binned\\\\\\\"`).\\\\n\\\\n- If `true`, default [binning parameters](https://vega.github.io/vega-lite/docs/bin.html) will be applied.\\\\n\\\\n- If `\\\\\\\"binned\\\\\\\"`, this indicates that the data for the `x` (or `y`) channel are already binned. You can map the bin-start field to `x` (or `y`) and the bin-end field to `x2` (or `y2`). The scale and axis will be formatted similar to binning in Vega-Lite.  To adjust the axis ticks based on the bin step, you can also set the axis's [`tickMinStep`](https://vega.github.io/vega-lite/docs/axis.html#ticks) property.\\\\n\\\\n__Default value:__ `false`\\\\n\\\\n__See also:__ [`bin`](https://vega.github.io/vega-lite/docs/bin.html) documentation.\\\"},\\\"condition\\\":{\\\"anyOf\\\":[{\\\"anyOf\\\":[{\\\"$ref\\\":\\\"#/definitions/ConditionalValueDef<(number|ExprRef)>\\\"},{\\\"items\\\":{\\\"$ref\\\":\\\"#/definitions/ConditionalValueDef<(number|ExprRef)>\\\"},\\\"type\\\":\\\"array\\\"}],\\\"description\\\":\\\"One or more value definition(s) with [a selection or a test predicate](https://vega.github.io/vega-lite/docs/condition.html).\\\\n\\\\n__Note:__ A field definition's `condition` property can only contain [conditional value definitions](https://vega.github.io/vega-lite/docs/condition.html#value) since Vega-Lite only allows at most one encoded field per encoding channel.\\\"},{\\\"anyOf\\\":[{\\\"$ref\\\":\\\"#/definitions/ConditionalMarkPropFieldOrDatumDef\\\"},{\\\"$ref\\\":\\\"#/definitions/ConditionalValueDef<(number|ExprRef)>\\\"},{\\\"items\\\":{\\\"$ref\\\":\\\"#/definitions/ConditionalValueDef<(number|ExprRef)>\\\"},\\\"type\\\":\\\"array\\\"}],\\\"description\\\":\\\"A field definition or one or more value definition(s) with a selection predicate.\\\"}],\\\"description\\\":\\\"One or more value definition(s) with [a selection or a test predicate](https://vega.github.io/vega-lite/docs/condition.html).\\\\n\\\\n__Note:__ A field definition's `condition` property can only contain [conditional value definitions](https://vega.github.io/vega-lite/docs/condition.html#value) since Vega-Lite only allows at most one encoded field per encoding channel.\\\"},\\\"datum\\\":{\\\"anyOf\\\":[{\\\"$ref\\\":\\\"#/definitions/PrimitiveValue\\\"},{\\\"$ref\\\":\\\"#/definitions/DateTime\\\"},{\\\"$ref\\\":\\\"#/definitions/ExprRef\\\"},{\\\"$ref\\\":\\\"#/definitions/RepeatRef\\\"}],\\\"description\\\":\\\"A constant value in data domain.\\\"},\\\"field\\\":{\\\"$ref\\\":\\\"#/definitions/Field\\\",\\\"description\\\":\\\"__Required.__ A string defining the name of the field from which to pull a data value or an object defining iterated values from the [`repeat`](https://vega.github.io/vega-lite/docs/repeat.html) operator.\\\\n\\\\n__See also:__ [`field`](https://vega.github.io/vega-lite/docs/field.html) documentation.\\\\n\\\\n__Notes:__ 1)  Dots (`.`) and brackets (`[` and `]`) can be used to access nested objects (e.g., `\\\\\\\"field\\\\\\\": \\\\\\\"foo.bar\\\\\\\"` and `\\\\\\\"field\\\\\\\": \\\\\\\"foo['bar']\\\\\\\"`). If field names contain dots or brackets but are not nested, you can use `\\\\\\\\\\\\\\\\` to escape dots and brackets (e.g., `\\\\\\\"a\\\\\\\\\\\\\\\\.b\\\\\\\"` and `\\\\\\\"a\\\\\\\\\\\\\\\\[0\\\\\\\\\\\\\\\\]\\\\\\\"`). See more details about escaping in the [field documentation](https://vega.github.io/vega-lite/docs/field.html). 2) `field` is not required if `aggregate` is `count`.\\\"},\\\"legend\\\":{\\\"anyOf\\\":[{\\\"$ref\\\":\\\"#/definitions/Legend\\\"},{\\\"type\\\":\\\"null\\\"}],\\\"description\\\":\\\"An object defining properties of the legend. If `null`, the legend for the encoding channel will be removed.\\\\n\\\\n__Default value:__ If undefined, default [legend properties](https://vega.github.io/vega-lite/docs/legend.html) are applied.\\\\n\\\\n__See also:__ [`legend`](https://vega.github.io/vega-lite/docs/legend.html) documentation.\\\"},\\\"scale\\\":{\\\"anyOf\\\":[{\\\"$ref\\\":\\\"#/definitions/Scale\\\"},{\\\"type\\\":\\\"null\\\"}],\\\"description\\\":\\\"An object defining properties of the channel's scale, which is the function that transforms values in the data domain (numbers, dates, strings, etc) to visual values (pixels, colors, sizes) of the encoding channels.\\\\n\\\\nIf `null`, the scale will be [disabled and the data value will be directly encoded](https://vega.github.io/vega-lite/docs/scale.html#disable).\\\\n\\\\n__Default value:__ If undefined, default [scale properties](https://vega.github.io/vega-lite/docs/scale.html) are applied.\\\\n\\\\n__See also:__ [`scale`](https://vega.github.io/vega-lite/docs/scale.html) documentation.\\\"},\\\"sort\\\":{\\\"$ref\\\":\\\"#/definitions/Sort\\\",\\\"description\\\":\\\"Sort order for the encoded field.\\\\n\\\\nFor continuous fields (quantitative or temporal), `sort` can be either `\\\\\\\"ascending\\\\\\\"` or `\\\\\\\"descending\\\\\\\"`.\\\\n\\\\nFor discrete fields, `sort` can be one of the following: - `\\\\\\\"ascending\\\\\\\"` or `\\\\\\\"descending\\\\\\\"` -- for sorting by the values' natural order in JavaScript. - [A string indicating an encoding channel name to sort by](https://vega.github.io/vega-lite/docs/sort.html#sort-by-encoding) (e.g., `\\\\\\\"x\\\\\\\"` or `\\\\\\\"y\\\\\\\"`) with an optional minus prefix for descending sort (e.g., `\\\\\\\"-x\\\\\\\"` to sort by x-field, descending). This channel string is short-form of [a sort-by-encoding definition](https://vega.github.io/vega-lite/docs/sort.html#sort-by-encoding). For example, `\\\\\\\"sort\\\\\\\": \\\\\\\"-x\\\\\\\"` is equivalent to `\\\\\\\"sort\\\\\\\": {\\\\\\\"encoding\\\\\\\": \\\\\\\"x\\\\\\\", \\\\\\\"order\\\\\\\": \\\\\\\"descending\\\\\\\"}`. - [A sort field definition](https://vega.github.io/vega-lite/docs/sort.html#sort-field) for sorting by another field. - [An array specifying the field values in preferred order](https://vega.github.io/vega-lite/docs/sort.html#sort-array). In this case, the sort order will obey the values in the array, followed by any unspecified values in their original order. For discrete time field, values in the sort array can be [date-time definition objects](types#datetime). In addition, for time units `\\\\\\\"month\\\\\\\"` and `\\\\\\\"day\\\\\\\"`, the values can be the month or day names (case insensitive) or their 3-letter initials (e.g., `\\\\\\\"Mon\\\\\\\"`, `\\\\\\\"Tue\\\\\\\"`). - `null` indicating no sort.\\\\n\\\\n__Default value:__ `\\\\\\\"ascending\\\\\\\"`\\\\n\\\\n__Note:__ `null` and sorting by another channel is not supported for `row` and `column`.\\\\n\\\\n__See also:__ [`sort`](https://vega.github.io/vega-lite/docs/sort.html) documentation.\\\"},\\\"timeUnit\\\":{\\\"anyOf\\\":[{\\\"$ref\\\":\\\"#/definitions/TimeUnit\\\"},{\\\"$ref\\\":\\\"#/definitions/TimeUnitParams\\\"}],\\\"description\\\":\\\"Time unit (e.g., `year`, `yearmonth`, `month`, `hours`) for a temporal field. or [a temporal field that gets casted as ordinal](https://vega.github.io/vega-lite/docs/type.html#cast).\\\\n\\\\n__Default value:__ `undefined` (None)\\\\n\\\\n__See also:__ [`timeUnit`](https://vega.github.io/vega-lite/docs/timeunit.html) documentation.\\\"},\\\"title\\\":{\\\"anyOf\\\":[{\\\"$ref\\\":\\\"#/definitions/Text\\\"},{\\\"type\\\":\\\"null\\\"}],\\\"description\\\":\\\"A title for the field. If `null`, the title will be removed.\\\\n\\\\n__Default value:__  derived from the field's name and transformation function (`aggregate`, `bin` and `timeUnit`). If the field has an aggregate function, the function is displayed as part of the title (e.g., `\\\\\\\"Sum of Profit\\\\\\\"`). If the field is binned or has a time unit applied, the applied function is shown in parentheses (e.g., `\\\\\\\"Profit (binned)\\\\\\\"`, `\\\\\\\"Transaction Date (year-month)\\\\\\\"`). Otherwise, the title is simply the field name.\\\\n\\\\n__Notes__:\\\\n\\\\n1) You can customize the default field title format by providing the [`fieldTitle`](https://vega.github.io/vega-lite/docs/config.html#top-level-config) property in the [config](https://vega.github.io/vega-lite/docs/config.html) or [`fieldTitle` function via the `compile` function's options](https://vega.github.io/vega-lite/docs/compile.html#field-title).\\\\n\\\\n2) If both field definition's `title` and axis, header, or legend `title` are defined, axis/header/legend title will be used.\\\"},\\\"type\\\":{\\\"anyOf\\\":[{\\\"$ref\\\":\\\"#/definitions/StandardType\\\",\\\"description\\\":\\\"The type of measurement (`\\\\\\\"quantitative\\\\\\\"`, `\\\\\\\"temporal\\\\\\\"`, `\\\\\\\"ordinal\\\\\\\"`, or `\\\\\\\"nominal\\\\\\\"`) for the encoded field or constant value (`datum`). It can also be a `\\\\\\\"geojson\\\\\\\"` type for encoding ['geoshape'](https://vega.github.io/vega-lite/docs/geoshape.html).\\\\n\\\\nVega-Lite automatically infers data types in many cases as discussed below. However, type is required for a field if: (1) the field is not nominal and the field encoding has no specified `aggregate` (except `argmin` and `argmax`), `bin`, scale type, custom `sort` order, nor `timeUnit` or (2) if you wish to use an ordinal scale for a field with `bin` or `timeUnit`.\\\\n\\\\n__Default value:__\\\\n\\\\n1) For a data `field`, `\\\\\\\"nominal\\\\\\\"` is the default data type unless the field encoding has `aggregate`, `channel`, `bin`, scale type, `sort`, or `timeUnit` that satisfies the following criteria: - `\\\\\\\"quantitative\\\\\\\"` is the default type if (1) the encoded field contains `bin` or `aggregate` except `\\\\\\\"argmin\\\\\\\"` and `\\\\\\\"argmax\\\\\\\"`, (2) the encoding channel is `latitude` or `longitude` channel or (3) if the specified scale type is [a quantitative scale](https://vega.github.io/vega-lite/docs/scale.html#type). - `\\\\\\\"temporal\\\\\\\"` is the default type if (1) the encoded field contains `timeUnit` or (2) the specified scale type is a time or utc scale - `ordinal\\\\\\\"\\\\\\\"` is the default type if (1) the encoded field contains a [custom `sort` order](https://vega.github.io/vega-lite/docs/sort.html#specifying-custom-sort-order), (2) the specified scale type is an ordinal/point/band scale, or (3) the encoding channel is `order`.\\\\n\\\\n2) For a constant value in data domain (`datum`): - `\\\\\\\"quantitative\\\\\\\"` if the datum is a number - `\\\\\\\"nominal\\\\\\\"` if the datum is a string - `\\\\\\\"temporal\\\\\\\"` if the datum is [a date time object](https://vega.github.io/vega-lite/docs/datetime.html)\\\\n\\\\n__Note:__ - Data `type` describes the semantics of the data rather than the primitive data types (number, string, etc.). The same primitive data type can have different types of measurement. For example, numeric data can represent quantitative, ordinal, or nominal data. - Data values for a temporal field can be either a date-time string (e.g., `\\\\\\\"2015-03-07 12:32:17\\\\\\\"`, `\\\\\\\"17:01\\\\\\\"`, `\\\\\\\"2015-03-16\\\\\\\"`. `\\\\\\\"2015\\\\\\\"`) or a timestamp number (e.g., `1552199579097`). - When using with [`bin`](https://vega.github.io/vega-lite/docs/bin.html), the `type` property can be either `\\\\\\\"quantitative\\\\\\\"` (for using a linear bin scale) or [`\\\\\\\"ordinal\\\\\\\"` (for using an ordinal bin scale)](https://vega.github.io/vega-lite/docs/type.html#cast-bin). - When using with [`timeUnit`](https://vega.github.io/vega-lite/docs/timeunit.html), the `type` property can be either `\\\\\\\"temporal\\\\\\\"` (default, for using a temporal scale) or [`\\\\\\\"ordinal\\\\\\\"` (for using an ordinal scale)](https://vega.github.io/vega-lite/docs/type.html#cast-bin). - When using with [`aggregate`](https://vega.github.io/vega-lite/docs/aggregate.html), the `type` property refers to the post-aggregation data type. For example, we can calculate count `distinct` of a categorical field `\\\\\\\"cat\\\\\\\"` using `{\\\\\\\"aggregate\\\\\\\": \\\\\\\"distinct\\\\\\\", \\\\\\\"field\\\\\\\": \\\\\\\"cat\\\\\\\"}`. The `\\\\\\\"type\\\\\\\"` of the aggregate output is `\\\\\\\"quantitative\\\\\\\"`. - Secondary channels (e.g., `x2`, `y2`, `xError`, `yError`) do not have `type` as they must have exactly the same type as their primary channels (e.g., `x`, `y`).\\\\n\\\\n__See also:__ [`type`](https://vega.github.io/vega-lite/docs/type.html) documentation.\\\"},{\\\"$ref\\\":\\\"#/definitions/Type\\\",\\\"description\\\":\\\"The type of measurement (`\\\\\\\"quantitative\\\\\\\"`, `\\\\\\\"temporal\\\\\\\"`, `\\\\\\\"ordinal\\\\\\\"`, or `\\\\\\\"nominal\\\\\\\"`) for the encoded field or constant value (`datum`). It can also be a `\\\\\\\"geojson\\\\\\\"` type for encoding ['geoshape'](https://vega.github.io/vega-lite/docs/geoshape.html).\\\\n\\\\nVega-Lite automatically infers data types in many cases as discussed below. However, type is required for a field if: (1) the field is not nominal and the field encoding has no specified `aggregate` (except `argmin` and `argmax`), `bin`, scale type, custom `sort` order, nor `timeUnit` or (2) if you wish to use an ordinal scale for a field with `bin` or `timeUnit`.\\\\n\\\\n__Default value:__\\\\n\\\\n1) For a data `field`, `\\\\\\\"nominal\\\\\\\"` is the default data type unless the field encoding has `aggregate`, `channel`, `bin`, scale type, `sort`, or `timeUnit` that satisfies the following criteria: - `\\\\\\\"quantitative\\\\\\\"` is the default type if (1) the encoded field contains `bin` or `aggregate` except `\\\\\\\"argmin\\\\\\\"` and `\\\\\\\"argmax\\\\\\\"`, (2) the encoding channel is `latitude` or `longitude` channel or (3) if the specified scale type is [a quantitative scale](https://vega.github.io/vega-lite/docs/scale.html#type). - `\\\\\\\"temporal\\\\\\\"` is the default type if (1) the encoded field contains `timeUnit` or (2) the specified scale type is a time or utc scale - `ordinal\\\\\\\"\\\\\\\"` is the default type if (1) the encoded field contains a [custom `sort` order](https://vega.github.io/vega-lite/docs/sort.html#specifying-custom-sort-order), (2) the specified scale type is an ordinal/point/band scale, or (3) the encoding channel is `order`.\\\\n\\\\n2) For a constant value in data domain (`datum`): - `\\\\\\\"quantitative\\\\\\\"` if the datum is a number - `\\\\\\\"nominal\\\\\\\"` if the datum is a string - `\\\\\\\"temporal\\\\\\\"` if the datum is [a date time object](https://vega.github.io/vega-lite/docs/datetime.html)\\\\n\\\\n__Note:__ - Data `type` describes the semantics of the data rather than the primitive data types (number, string, etc.). The same primitive data type can have different types of measurement. For example, numeric data can represent quantitative, ordinal, or nominal data. - Data values for a temporal field can be either a date-time string (e.g., `\\\\\\\"2015-03-07 12:32:17\\\\\\\"`, `\\\\\\\"17:01\\\\\\\"`, `\\\\\\\"2015-03-16\\\\\\\"`. `\\\\\\\"2015\\\\\\\"`) or a timestamp number (e.g., `1552199579097`). - When using with [`bin`](https://vega.github.io/vega-lite/docs/bin.html), the `type` property can be either `\\\\\\\"quantitative\\\\\\\"` (for using a linear bin scale) or [`\\\\\\\"ordinal\\\\\\\"` (for using an ordinal bin scale)](https://vega.github.io/vega-lite/docs/type.html#cast-bin). - When using with [`timeUnit`](https://vega.github.io/vega-lite/docs/timeunit.html), the `type` property can be either `\\\\\\\"temporal\\\\\\\"` (default, for using a temporal scale) or [`\\\\\\\"ordinal\\\\\\\"` (for using an ordinal scale)](https://vega.github.io/vega-lite/docs/type.html#cast-bin). - When using with [`aggregate`](https://vega.github.io/vega-lite/docs/aggregate.html), the `type` property refers to the post-aggregation data type. For example, we can calculate count `distinct` of a categorical field `\\\\\\\"cat\\\\\\\"` using `{\\\\\\\"aggregate\\\\\\\": \\\\\\\"distinct\\\\\\\", \\\\\\\"field\\\\\\\": \\\\\\\"cat\\\\\\\"}`. The `\\\\\\\"type\\\\\\\"` of the aggregate output is `\\\\\\\"quantitative\\\\\\\"`. - Secondary channels (e.g., `x2`, `y2`, `xError`, `yError`) do not have `type` as they must have exactly the same type as their primary channels (e.g., `x`, `y`).\\\\n\\\\n__See also:__ [`type`](https://vega.github.io/vega-lite/docs/type.html) documentation.\\\"}],\\\"description\\\":\\\"The type of measurement (`\\\\\\\"quantitative\\\\\\\"`, `\\\\\\\"temporal\\\\\\\"`, `\\\\\\\"ordinal\\\\\\\"`, or `\\\\\\\"nominal\\\\\\\"`) for the encoded field or constant value (`datum`). It can also be a `\\\\\\\"geojson\\\\\\\"` type for encoding ['geoshape'](https://vega.github.io/vega-lite/docs/geoshape.html).\\\\n\\\\nVega-Lite automatically infers data types in many cases as discussed below. However, type is required for a field if: (1) the field is not nominal and the field encoding has no specified `aggregate` (except `argmin` and `argmax`), `bin`, scale type, custom `sort` order, nor `timeUnit` or (2) if you wish to use an ordinal scale for a field with `bin` or `timeUnit`.\\\\n\\\\n__Default value:__\\\\n\\\\n1) For a data `field`, `\\\\\\\"nominal\\\\\\\"` is the default data type unless the field encoding has `aggregate`, `channel`, `bin`, scale type, `sort`, or `timeUnit` that satisfies the following criteria: - `\\\\\\\"quantitative\\\\\\\"` is the default type if (1) the encoded field contains `bin` or `aggregate` except `\\\\\\\"argmin\\\\\\\"` and `\\\\\\\"argmax\\\\\\\"`, (2) the encoding channel is `latitude` or `longitude` channel or (3) if the specified scale type is [a quantitative scale](https://vega.github.io/vega-lite/docs/scale.html#type). - `\\\\\\\"temporal\\\\\\\"` is the default type if (1) the encoded field contains `timeUnit` or (2) the specified scale type is a time or utc scale - `ordinal\\\\\\\"\\\\\\\"` is the default type if (1) the encoded field contains a [custom `sort` order](https://vega.github.io/vega-lite/docs/sort.html#specifying-custom-sort-order), (2) the specified scale type is an ordinal/point/band scale, or (3) the encoding channel is `order`.\\\\n\\\\n2) For a constant value in data domain (`datum`): - `\\\\\\\"quantitative\\\\\\\"` if the datum is a number - `\\\\\\\"nominal\\\\\\\"` if the datum is a string - `\\\\\\\"temporal\\\\\\\"` if the datum is [a date time object](https://vega.github.io/vega-lite/docs/datetime.html)\\\\n\\\\n__Note:__ - Data `type` describes the semantics of the data rather than the primitive data types (number, string, etc.). The same primitive data type can have different types of measurement. For example, numeric data can represent quantitative, ordinal, or nominal data. - Data values for a temporal field can be either a date-time string (e.g., `\\\\\\\"2015-03-07 12:32:17\\\\\\\"`, `\\\\\\\"17:01\\\\\\\"`, `\\\\\\\"2015-03-16\\\\\\\"`. `\\\\\\\"2015\\\\\\\"`) or a timestamp number (e.g., `1552199579097`). - When using with [`bin`](https://vega.github.io/vega-lite/docs/bin.html), the `type` property can be either `\\\\\\\"quantitative\\\\\\\"` (for using a linear bin scale) or [`\\\\\\\"ordinal\\\\\\\"` (for using an ordinal bin scale)](https://vega.github.io/vega-lite/docs/type.html#cast-bin). - When using with [`timeUnit`](https://vega.github.io/vega-lite/docs/timeunit.html), the `type` property can be either `\\\\\\\"temporal\\\\\\\"` (default, for using a temporal scale) or [`\\\\\\\"ordinal\\\\\\\"` (for using an ordinal scale)](https://vega.github.io/vega-lite/docs/type.html#cast-bin). - When using with [`aggregate`](https://vega.github.io/vega-lite/docs/aggregate.html), the `type` property refers to the post-aggregation data type. For example, we can calculate count `distinct` of a categorical field `\\\\\\\"cat\\\\\\\"` using `{\\\\\\\"aggregate\\\\\\\": \\\\\\\"distinct\\\\\\\", \\\\\\\"field\\\\\\\": \\\\\\\"cat\\\\\\\"}`. The `\\\\\\\"type\\\\\\\"` of the aggregate output is `\\\\\\\"quantitative\\\\\\\"`. - Secondary channels (e.g., `x2`, `y2`, `xError`, `yError`) do not have `type` as they must have exactly the same type as their primary channels (e.g., `x`, `y`).\\\\n\\\\n__See also:__ [`type`](https://vega.github.io/vega-lite/docs/type.html) documentation.\\\"},\\\"value\\\":{\\\"anyOf\\\":[{\\\"type\\\":\\\"number\\\"},{\\\"$ref\\\":\\\"#/definitions/ExprRef\\\"}],\\\"description\\\":\\\"A constant value in visual domain (e.g., `\\\\\\\"red\\\\\\\"` / `\\\\\\\"#0099ff\\\\\\\"` / [gradient definition](https://vega.github.io/vega-lite/docs/types.html#gradient) for color, values between `0` to `1` for opacity).\\\"}},\\\"type\\\":\\\"object\\\"},\\\"stroke\\\":{\\\"additionalProperties\\\":false,\\\"properties\\\":{\\\"aggregate\\\":{\\\"$ref\\\":\\\"#/definitions/Aggregate\\\",\\\"description\\\":\\\"Aggregation function for the field (e.g., `\\\\\\\"mean\\\\\\\"`, `\\\\\\\"sum\\\\\\\"`, `\\\\\\\"median\\\\\\\"`, `\\\\\\\"min\\\\\\\"`, `\\\\\\\"max\\\\\\\"`, `\\\\\\\"count\\\\\\\"`).\\\\n\\\\n__Default value:__ `undefined` (None)\\\\n\\\\n__See also:__ [`aggregate`](https://vega.github.io/vega-lite/docs/aggregate.html) documentation.\\\"},\\\"band\\\":{\\\"description\\\":\\\"For rect-based marks (`rect`, `bar`, and `image`), mark size relative to bandwidth of [band scales](https://vega.github.io/vega-lite/docs/scale.html#band), bins or time units. If set to `1`, the mark size is set to the bandwidth, the bin interval, or the time unit interval. If set to `0.5`, the mark size is half of the bandwidth or the time unit interval.\\\\n\\\\nFor other marks, relative position on a band of a stacked, binned, time unit or band scale. If set to `0`, the marks will be positioned at the beginning of the band. If set to `0.5`, the marks will be positioned in the middle of the band.\\\",\\\"maximum\\\":1,\\\"minimum\\\":0,\\\"type\\\":\\\"number\\\"},\\\"bin\\\":{\\\"anyOf\\\":[{\\\"type\\\":\\\"boolean\\\"},{\\\"$ref\\\":\\\"#/definitions/BinParams\\\"},{\\\"type\\\":\\\"null\\\"}],\\\"description\\\":\\\"A flag for binning a `quantitative` field, [an object defining binning parameters](https://vega.github.io/vega-lite/docs/bin.html#params), or indicating that the data for `x` or `y` channel are binned before they are imported into Vega-Lite (`\\\\\\\"binned\\\\\\\"`).\\\\n\\\\n- If `true`, default [binning parameters](https://vega.github.io/vega-lite/docs/bin.html) will be applied.\\\\n\\\\n- If `\\\\\\\"binned\\\\\\\"`, this indicates that the data for the `x` (or `y`) channel are already binned. You can map the bin-start field to `x` (or `y`) and the bin-end field to `x2` (or `y2`). The scale and axis will be formatted similar to binning in Vega-Lite.  To adjust the axis ticks based on the bin step, you can also set the axis's [`tickMinStep`](https://vega.github.io/vega-lite/docs/axis.html#ticks) property.\\\\n\\\\n__Default value:__ `false`\\\\n\\\\n__See also:__ [`bin`](https://vega.github.io/vega-lite/docs/bin.html) documentation.\\\"},\\\"condition\\\":{\\\"anyOf\\\":[{\\\"anyOf\\\":[{\\\"$ref\\\":\\\"#/definitions/ConditionalValueDef<(Gradient|string|null|ExprRef)>\\\"},{\\\"items\\\":{\\\"$ref\\\":\\\"#/definitions/ConditionalValueDef<(Gradient|string|null|ExprRef)>\\\"},\\\"type\\\":\\\"array\\\"}],\\\"description\\\":\\\"One or more value definition(s) with [a selection or a test predicate](https://vega.github.io/vega-lite/docs/condition.html).\\\\n\\\\n__Note:__ A field definition's `condition` property can only contain [conditional value definitions](https://vega.github.io/vega-lite/docs/condition.html#value) since Vega-Lite only allows at most one encoded field per encoding channel.\\\"},{\\\"anyOf\\\":[{\\\"$ref\\\":\\\"#/definitions/ConditionalMarkPropFieldOrDatumDef\\\"},{\\\"$ref\\\":\\\"#/definitions/ConditionalValueDef<(Gradient|string|null|ExprRef)>\\\"},{\\\"items\\\":{\\\"$ref\\\":\\\"#/definitions/ConditionalValueDef<(Gradient|string|null|ExprRef)>\\\"},\\\"type\\\":\\\"array\\\"}],\\\"description\\\":\\\"A field definition or one or more value definition(s) with a selection predicate.\\\"}],\\\"description\\\":\\\"One or more value definition(s) with [a selection or a test predicate](https://vega.github.io/vega-lite/docs/condition.html).\\\\n\\\\n__Note:__ A field definition's `condition` property can only contain [conditional value definitions](https://vega.github.io/vega-lite/docs/condition.html#value) since Vega-Lite only allows at most one encoded field per encoding channel.\\\"},\\\"datum\\\":{\\\"anyOf\\\":[{\\\"$ref\\\":\\\"#/definitions/PrimitiveValue\\\"},{\\\"$ref\\\":\\\"#/definitions/DateTime\\\"},{\\\"$ref\\\":\\\"#/definitions/ExprRef\\\"},{\\\"$ref\\\":\\\"#/definitions/RepeatRef\\\"}],\\\"description\\\":\\\"A constant value in data domain.\\\"},\\\"field\\\":{\\\"$ref\\\":\\\"#/definitions/Field\\\",\\\"description\\\":\\\"__Required.__ A string defining the name of the field from which to pull a data value or an object defining iterated values from the [`repeat`](https://vega.github.io/vega-lite/docs/repeat.html) operator.\\\\n\\\\n__See also:__ [`field`](https://vega.github.io/vega-lite/docs/field.html) documentation.\\\\n\\\\n__Notes:__ 1)  Dots (`.`) and brackets (`[` and `]`) can be used to access nested objects (e.g., `\\\\\\\"field\\\\\\\": \\\\\\\"foo.bar\\\\\\\"` and `\\\\\\\"field\\\\\\\": \\\\\\\"foo['bar']\\\\\\\"`). If field names contain dots or brackets but are not nested, you can use `\\\\\\\\\\\\\\\\` to escape dots and brackets (e.g., `\\\\\\\"a\\\\\\\\\\\\\\\\.b\\\\\\\"` and `\\\\\\\"a\\\\\\\\\\\\\\\\[0\\\\\\\\\\\\\\\\]\\\\\\\"`). See more details about escaping in the [field documentation](https://vega.github.io/vega-lite/docs/field.html). 2) `field` is not required if `aggregate` is `count`.\\\"},\\\"legend\\\":{\\\"anyOf\\\":[{\\\"$ref\\\":\\\"#/definitions/Legend\\\"},{\\\"type\\\":\\\"null\\\"}],\\\"description\\\":\\\"An object defining properties of the legend. If `null`, the legend for the encoding channel will be removed.\\\\n\\\\n__Default value:__ If undefined, default [legend properties](https://vega.github.io/vega-lite/docs/legend.html) are applied.\\\\n\\\\n__See also:__ [`legend`](https://vega.github.io/vega-lite/docs/legend.html) documentation.\\\"},\\\"scale\\\":{\\\"anyOf\\\":[{\\\"$ref\\\":\\\"#/definitions/Scale\\\"},{\\\"type\\\":\\\"null\\\"}],\\\"description\\\":\\\"An object defining properties of the channel's scale, which is the function that transforms values in the data domain (numbers, dates, strings, etc) to visual values (pixels, colors, sizes) of the encoding channels.\\\\n\\\\nIf `null`, the scale will be [disabled and the data value will be directly encoded](https://vega.github.io/vega-lite/docs/scale.html#disable).\\\\n\\\\n__Default value:__ If undefined, default [scale properties](https://vega.github.io/vega-lite/docs/scale.html) are applied.\\\\n\\\\n__See also:__ [`scale`](https://vega.github.io/vega-lite/docs/scale.html) documentation.\\\"},\\\"sort\\\":{\\\"$ref\\\":\\\"#/definitions/Sort\\\",\\\"description\\\":\\\"Sort order for the encoded field.\\\\n\\\\nFor continuous fields (quantitative or temporal), `sort` can be either `\\\\\\\"ascending\\\\\\\"` or `\\\\\\\"descending\\\\\\\"`.\\\\n\\\\nFor discrete fields, `sort` can be one of the following: - `\\\\\\\"ascending\\\\\\\"` or `\\\\\\\"descending\\\\\\\"` -- for sorting by the values' natural order in JavaScript. - [A string indicating an encoding channel name to sort by](https://vega.github.io/vega-lite/docs/sort.html#sort-by-encoding) (e.g., `\\\\\\\"x\\\\\\\"` or `\\\\\\\"y\\\\\\\"`) with an optional minus prefix for descending sort (e.g., `\\\\\\\"-x\\\\\\\"` to sort by x-field, descending). This channel string is short-form of [a sort-by-encoding definition](https://vega.github.io/vega-lite/docs/sort.html#sort-by-encoding). For example, `\\\\\\\"sort\\\\\\\": \\\\\\\"-x\\\\\\\"` is equivalent to `\\\\\\\"sort\\\\\\\": {\\\\\\\"encoding\\\\\\\": \\\\\\\"x\\\\\\\", \\\\\\\"order\\\\\\\": \\\\\\\"descending\\\\\\\"}`. - [A sort field definition](https://vega.github.io/vega-lite/docs/sort.html#sort-field) for sorting by another field. - [An array specifying the field values in preferred order](https://vega.github.io/vega-lite/docs/sort.html#sort-array). In this case, the sort order will obey the values in the array, followed by any unspecified values in their original order. For discrete time field, values in the sort array can be [date-time definition objects](types#datetime). In addition, for time units `\\\\\\\"month\\\\\\\"` and `\\\\\\\"day\\\\\\\"`, the values can be the month or day names (case insensitive) or their 3-letter initials (e.g., `\\\\\\\"Mon\\\\\\\"`, `\\\\\\\"Tue\\\\\\\"`). - `null` indicating no sort.\\\\n\\\\n__Default value:__ `\\\\\\\"ascending\\\\\\\"`\\\\n\\\\n__Note:__ `null` and sorting by another channel is not supported for `row` and `column`.\\\\n\\\\n__See also:__ [`sort`](https://vega.github.io/vega-lite/docs/sort.html) documentation.\\\"},\\\"timeUnit\\\":{\\\"anyOf\\\":[{\\\"$ref\\\":\\\"#/definitions/TimeUnit\\\"},{\\\"$ref\\\":\\\"#/definitions/TimeUnitParams\\\"}],\\\"description\\\":\\\"Time unit (e.g., `year`, `yearmonth`, `month`, `hours`) for a temporal field. or [a temporal field that gets casted as ordinal](https://vega.github.io/vega-lite/docs/type.html#cast).\\\\n\\\\n__Default value:__ `undefined` (None)\\\\n\\\\n__See also:__ [`timeUnit`](https://vega.github.io/vega-lite/docs/timeunit.html) documentation.\\\"},\\\"title\\\":{\\\"anyOf\\\":[{\\\"$ref\\\":\\\"#/definitions/Text\\\"},{\\\"type\\\":\\\"null\\\"}],\\\"description\\\":\\\"A title for the field. If `null`, the title will be removed.\\\\n\\\\n__Default value:__  derived from the field's name and transformation function (`aggregate`, `bin` and `timeUnit`). If the field has an aggregate function, the function is displayed as part of the title (e.g., `\\\\\\\"Sum of Profit\\\\\\\"`). If the field is binned or has a time unit applied, the applied function is shown in parentheses (e.g., `\\\\\\\"Profit (binned)\\\\\\\"`, `\\\\\\\"Transaction Date (year-month)\\\\\\\"`). Otherwise, the title is simply the field name.\\\\n\\\\n__Notes__:\\\\n\\\\n1) You can customize the default field title format by providing the [`fieldTitle`](https://vega.github.io/vega-lite/docs/config.html#top-level-config) property in the [config](https://vega.github.io/vega-lite/docs/config.html) or [`fieldTitle` function via the `compile` function's options](https://vega.github.io/vega-lite/docs/compile.html#field-title).\\\\n\\\\n2) If both field definition's `title` and axis, header, or legend `title` are defined, axis/header/legend title will be used.\\\"},\\\"type\\\":{\\\"anyOf\\\":[{\\\"$ref\\\":\\\"#/definitions/StandardType\\\",\\\"description\\\":\\\"The type of measurement (`\\\\\\\"quantitative\\\\\\\"`, `\\\\\\\"temporal\\\\\\\"`, `\\\\\\\"ordinal\\\\\\\"`, or `\\\\\\\"nominal\\\\\\\"`) for the encoded field or constant value (`datum`). It can also be a `\\\\\\\"geojson\\\\\\\"` type for encoding ['geoshape'](https://vega.github.io/vega-lite/docs/geoshape.html).\\\\n\\\\nVega-Lite automatically infers data types in many cases as discussed below. However, type is required for a field if: (1) the field is not nominal and the field encoding has no specified `aggregate` (except `argmin` and `argmax`), `bin`, scale type, custom `sort` order, nor `timeUnit` or (2) if you wish to use an ordinal scale for a field with `bin` or `timeUnit`.\\\\n\\\\n__Default value:__\\\\n\\\\n1) For a data `field`, `\\\\\\\"nominal\\\\\\\"` is the default data type unless the field encoding has `aggregate`, `channel`, `bin`, scale type, `sort`, or `timeUnit` that satisfies the following criteria: - `\\\\\\\"quantitative\\\\\\\"` is the default type if (1) the encoded field contains `bin` or `aggregate` except `\\\\\\\"argmin\\\\\\\"` and `\\\\\\\"argmax\\\\\\\"`, (2) the encoding channel is `latitude` or `longitude` channel or (3) if the specified scale type is [a quantitative scale](https://vega.github.io/vega-lite/docs/scale.html#type). - `\\\\\\\"temporal\\\\\\\"` is the default type if (1) the encoded field contains `timeUnit` or (2) the specified scale type is a time or utc scale - `ordinal\\\\\\\"\\\\\\\"` is the default type if (1) the encoded field contains a [custom `sort` order](https://vega.github.io/vega-lite/docs/sort.html#specifying-custom-sort-order), (2) the specified scale type is an ordinal/point/band scale, or (3) the encoding channel is `order`.\\\\n\\\\n2) For a constant value in data domain (`datum`): - `\\\\\\\"quantitative\\\\\\\"` if the datum is a number - `\\\\\\\"nominal\\\\\\\"` if the datum is a string - `\\\\\\\"temporal\\\\\\\"` if the datum is [a date time object](https://vega.github.io/vega-lite/docs/datetime.html)\\\\n\\\\n__Note:__ - Data `type` describes the semantics of the data rather than the primitive data types (number, string, etc.). The same primitive data type can have different types of measurement. For example, numeric data can represent quantitative, ordinal, or nominal data. - Data values for a temporal field can be either a date-time string (e.g., `\\\\\\\"2015-03-07 12:32:17\\\\\\\"`, `\\\\\\\"17:01\\\\\\\"`, `\\\\\\\"2015-03-16\\\\\\\"`. `\\\\\\\"2015\\\\\\\"`) or a timestamp number (e.g., `1552199579097`). - When using with [`bin`](https://vega.github.io/vega-lite/docs/bin.html), the `type` property can be either `\\\\\\\"quantitative\\\\\\\"` (for using a linear bin scale) or [`\\\\\\\"ordinal\\\\\\\"` (for using an ordinal bin scale)](https://vega.github.io/vega-lite/docs/type.html#cast-bin). - When using with [`timeUnit`](https://vega.github.io/vega-lite/docs/timeunit.html), the `type` property can be either `\\\\\\\"temporal\\\\\\\"` (default, for using a temporal scale) or [`\\\\\\\"ordinal\\\\\\\"` (for using an ordinal scale)](https://vega.github.io/vega-lite/docs/type.html#cast-bin). - When using with [`aggregate`](https://vega.github.io/vega-lite/docs/aggregate.html), the `type` property refers to the post-aggregation data type. For example, we can calculate count `distinct` of a categorical field `\\\\\\\"cat\\\\\\\"` using `{\\\\\\\"aggregate\\\\\\\": \\\\\\\"distinct\\\\\\\", \\\\\\\"field\\\\\\\": \\\\\\\"cat\\\\\\\"}`. The `\\\\\\\"type\\\\\\\"` of the aggregate output is `\\\\\\\"quantitative\\\\\\\"`. - Secondary channels (e.g., `x2`, `y2`, `xError`, `yError`) do not have `type` as they must have exactly the same type as their primary channels (e.g., `x`, `y`).\\\\n\\\\n__See also:__ [`type`](https://vega.github.io/vega-lite/docs/type.html) documentation.\\\"},{\\\"$ref\\\":\\\"#/definitions/Type\\\",\\\"description\\\":\\\"The type of measurement (`\\\\\\\"quantitative\\\\\\\"`, `\\\\\\\"temporal\\\\\\\"`, `\\\\\\\"ordinal\\\\\\\"`, or `\\\\\\\"nominal\\\\\\\"`) for the encoded field or constant value (`datum`). It can also be a `\\\\\\\"geojson\\\\\\\"` type for encoding ['geoshape'](https://vega.github.io/vega-lite/docs/geoshape.html).\\\\n\\\\nVega-Lite automatically infers data types in many cases as discussed below. However, type is required for a field if: (1) the field is not nominal and the field encoding has no specified `aggregate` (except `argmin` and `argmax`), `bin`, scale type, custom `sort` order, nor `timeUnit` or (2) if you wish to use an ordinal scale for a field with `bin` or `timeUnit`.\\\\n\\\\n__Default value:__\\\\n\\\\n1) For a data `field`, `\\\\\\\"nominal\\\\\\\"` is the default data type unless the field encoding has `aggregate`, `channel`, `bin`, scale type, `sort`, or `timeUnit` that satisfies the following criteria: - `\\\\\\\"quantitative\\\\\\\"` is the default type if (1) the encoded field contains `bin` or `aggregate` except `\\\\\\\"argmin\\\\\\\"` and `\\\\\\\"argmax\\\\\\\"`, (2) the encoding channel is `latitude` or `longitude` channel or (3) if the specified scale type is [a quantitative scale](https://vega.github.io/vega-lite/docs/scale.html#type). - `\\\\\\\"temporal\\\\\\\"` is the default type if (1) the encoded field contains `timeUnit` or (2) the specified scale type is a time or utc scale - `ordinal\\\\\\\"\\\\\\\"` is the default type if (1) the encoded field contains a [custom `sort` order](https://vega.github.io/vega-lite/docs/sort.html#specifying-custom-sort-order), (2) the specified scale type is an ordinal/point/band scale, or (3) the encoding channel is `order`.\\\\n\\\\n2) For a constant value in data domain (`datum`): - `\\\\\\\"quantitative\\\\\\\"` if the datum is a number - `\\\\\\\"nominal\\\\\\\"` if the datum is a string - `\\\\\\\"temporal\\\\\\\"` if the datum is [a date time object](https://vega.github.io/vega-lite/docs/datetime.html)\\\\n\\\\n__Note:__ - Data `type` describes the semantics of the data rather than the primitive data types (number, string, etc.). The same primitive data type can have different types of measurement. For example, numeric data can represent quantitative, ordinal, or nominal data. - Data values for a temporal field can be either a date-time string (e.g., `\\\\\\\"2015-03-07 12:32:17\\\\\\\"`, `\\\\\\\"17:01\\\\\\\"`, `\\\\\\\"2015-03-16\\\\\\\"`. `\\\\\\\"2015\\\\\\\"`) or a timestamp number (e.g., `1552199579097`). - When using with [`bin`](https://vega.github.io/vega-lite/docs/bin.html), the `type` property can be either `\\\\\\\"quantitative\\\\\\\"` (for using a linear bin scale) or [`\\\\\\\"ordinal\\\\\\\"` (for using an ordinal bin scale)](https://vega.github.io/vega-lite/docs/type.html#cast-bin). - When using with [`timeUnit`](https://vega.github.io/vega-lite/docs/timeunit.html), the `type` property can be either `\\\\\\\"temporal\\\\\\\"` (default, for using a temporal scale) or [`\\\\\\\"ordinal\\\\\\\"` (for using an ordinal scale)](https://vega.github.io/vega-lite/docs/type.html#cast-bin). - When using with [`aggregate`](https://vega.github.io/vega-lite/docs/aggregate.html), the `type` property refers to the post-aggregation data type. For example, we can calculate count `distinct` of a categorical field `\\\\\\\"cat\\\\\\\"` using `{\\\\\\\"aggregate\\\\\\\": \\\\\\\"distinct\\\\\\\", \\\\\\\"field\\\\\\\": \\\\\\\"cat\\\\\\\"}`. The `\\\\\\\"type\\\\\\\"` of the aggregate output is `\\\\\\\"quantitative\\\\\\\"`. - Secondary channels (e.g., `x2`, `y2`, `xError`, `yError`) do not have `type` as they must have exactly the same type as their primary channels (e.g., `x`, `y`).\\\\n\\\\n__See also:__ [`type`](https://vega.github.io/vega-lite/docs/type.html) documentation.\\\"}],\\\"description\\\":\\\"The type of measurement (`\\\\\\\"quantitative\\\\\\\"`, `\\\\\\\"temporal\\\\\\\"`, `\\\\\\\"ordinal\\\\\\\"`, or `\\\\\\\"nominal\\\\\\\"`) for the encoded field or constant value (`datum`). It can also be a `\\\\\\\"geojson\\\\\\\"` type for encoding ['geoshape'](https://vega.github.io/vega-lite/docs/geoshape.html).\\\\n\\\\nVega-Lite automatically infers data types in many cases as discussed below. However, type is required for a field if: (1) the field is not nominal and the field encoding has no specified `aggregate` (except `argmin` and `argmax`), `bin`, scale type, custom `sort` order, nor `timeUnit` or (2) if you wish to use an ordinal scale for a field with `bin` or `timeUnit`.\\\\n\\\\n__Default value:__\\\\n\\\\n1) For a data `field`, `\\\\\\\"nominal\\\\\\\"` is the default data type unless the field encoding has `aggregate`, `channel`, `bin`, scale type, `sort`, or `timeUnit` that satisfies the following criteria: - `\\\\\\\"quantitative\\\\\\\"` is the default type if (1) the encoded field contains `bin` or `aggregate` except `\\\\\\\"argmin\\\\\\\"` and `\\\\\\\"argmax\\\\\\\"`, (2) the encoding channel is `latitude` or `longitude` channel or (3) if the specified scale type is [a quantitative scale](https://vega.github.io/vega-lite/docs/scale.html#type). - `\\\\\\\"temporal\\\\\\\"` is the default type if (1) the encoded field contains `timeUnit` or (2) the specified scale type is a time or utc scale - `ordinal\\\\\\\"\\\\\\\"` is the default type if (1) the encoded field contains a [custom `sort` order](https://vega.github.io/vega-lite/docs/sort.html#specifying-custom-sort-order), (2) the specified scale type is an ordinal/point/band scale, or (3) the encoding channel is `order`.\\\\n\\\\n2) For a constant value in data domain (`datum`): - `\\\\\\\"quantitative\\\\\\\"` if the datum is a number - `\\\\\\\"nominal\\\\\\\"` if the datum is a string - `\\\\\\\"temporal\\\\\\\"` if the datum is [a date time object](https://vega.github.io/vega-lite/docs/datetime.html)\\\\n\\\\n__Note:__ - Data `type` describes the semantics of the data rather than the primitive data types (number, string, etc.). The same primitive data type can have different types of measurement. For example, numeric data can represent quantitative, ordinal, or nominal data. - Data values for a temporal field can be either a date-time string (e.g., `\\\\\\\"2015-03-07 12:32:17\\\\\\\"`, `\\\\\\\"17:01\\\\\\\"`, `\\\\\\\"2015-03-16\\\\\\\"`. `\\\\\\\"2015\\\\\\\"`) or a timestamp number (e.g., `1552199579097`). - When using with [`bin`](https://vega.github.io/vega-lite/docs/bin.html), the `type` property can be either `\\\\\\\"quantitative\\\\\\\"` (for using a linear bin scale) or [`\\\\\\\"ordinal\\\\\\\"` (for using an ordinal bin scale)](https://vega.github.io/vega-lite/docs/type.html#cast-bin). - When using with [`timeUnit`](https://vega.github.io/vega-lite/docs/timeunit.html), the `type` property can be either `\\\\\\\"temporal\\\\\\\"` (default, for using a temporal scale) or [`\\\\\\\"ordinal\\\\\\\"` (for using an ordinal scale)](https://vega.github.io/vega-lite/docs/type.html#cast-bin). - When using with [`aggregate`](https://vega.github.io/vega-lite/docs/aggregate.html), the `type` property refers to the post-aggregation data type. For example, we can calculate count `distinct` of a categorical field `\\\\\\\"cat\\\\\\\"` using `{\\\\\\\"aggregate\\\\\\\": \\\\\\\"distinct\\\\\\\", \\\\\\\"field\\\\\\\": \\\\\\\"cat\\\\\\\"}`. The `\\\\\\\"type\\\\\\\"` of the aggregate output is `\\\\\\\"quantitative\\\\\\\"`. - Secondary channels (e.g., `x2`, `y2`, `xError`, `yError`) do not have `type` as they must have exactly the same type as their primary channels (e.g., `x`, `y`).\\\\n\\\\n__See also:__ [`type`](https://vega.github.io/vega-lite/docs/type.html) documentation.\\\"},\\\"value\\\":{\\\"anyOf\\\":[{\\\"$ref\\\":\\\"#/definitions/Gradient\\\"},{\\\"type\\\":\\\"string\\\"},{\\\"type\\\":\\\"null\\\"},{\\\"$ref\\\":\\\"#/definitions/ExprRef\\\"}],\\\"description\\\":\\\"A constant value in visual domain (e.g., `\\\\\\\"red\\\\\\\"` / `\\\\\\\"#0099ff\\\\\\\"` / [gradient definition](https://vega.github.io/vega-lite/docs/types.html#gradient) for color, values between `0` to `1` for opacity).\\\"}},\\\"type\\\":\\\"object\\\"},\\\"strokeDash\\\":{\\\"additionalProperties\\\":false,\\\"properties\\\":{\\\"aggregate\\\":{\\\"$ref\\\":\\\"#/definitions/Aggregate\\\",\\\"description\\\":\\\"Aggregation function for the field (e.g., `\\\\\\\"mean\\\\\\\"`, `\\\\\\\"sum\\\\\\\"`, `\\\\\\\"median\\\\\\\"`, `\\\\\\\"min\\\\\\\"`, `\\\\\\\"max\\\\\\\"`, `\\\\\\\"count\\\\\\\"`).\\\\n\\\\n__Default value:__ `undefined` (None)\\\\n\\\\n__See also:__ [`aggregate`](https://vega.github.io/vega-lite/docs/aggregate.html) documentation.\\\"},\\\"band\\\":{\\\"description\\\":\\\"For rect-based marks (`rect`, `bar`, and `image`), mark size relative to bandwidth of [band scales](https://vega.github.io/vega-lite/docs/scale.html#band), bins or time units. If set to `1`, the mark size is set to the bandwidth, the bin interval, or the time unit interval. If set to `0.5`, the mark size is half of the bandwidth or the time unit interval.\\\\n\\\\nFor other marks, relative position on a band of a stacked, binned, time unit or band scale. If set to `0`, the marks will be positioned at the beginning of the band. If set to `0.5`, the marks will be positioned in the middle of the band.\\\",\\\"maximum\\\":1,\\\"minimum\\\":0,\\\"type\\\":\\\"number\\\"},\\\"bin\\\":{\\\"anyOf\\\":[{\\\"type\\\":\\\"boolean\\\"},{\\\"$ref\\\":\\\"#/definitions/BinParams\\\"},{\\\"type\\\":\\\"null\\\"}],\\\"description\\\":\\\"A flag for binning a `quantitative` field, [an object defining binning parameters](https://vega.github.io/vega-lite/docs/bin.html#params), or indicating that the data for `x` or `y` channel are binned before they are imported into Vega-Lite (`\\\\\\\"binned\\\\\\\"`).\\\\n\\\\n- If `true`, default [binning parameters](https://vega.github.io/vega-lite/docs/bin.html) will be applied.\\\\n\\\\n- If `\\\\\\\"binned\\\\\\\"`, this indicates that the data for the `x` (or `y`) channel are already binned. You can map the bin-start field to `x` (or `y`) and the bin-end field to `x2` (or `y2`). The scale and axis will be formatted similar to binning in Vega-Lite.  To adjust the axis ticks based on the bin step, you can also set the axis's [`tickMinStep`](https://vega.github.io/vega-lite/docs/axis.html#ticks) property.\\\\n\\\\n__Default value:__ `false`\\\\n\\\\n__See also:__ [`bin`](https://vega.github.io/vega-lite/docs/bin.html) documentation.\\\"},\\\"condition\\\":{\\\"anyOf\\\":[{\\\"anyOf\\\":[{\\\"$ref\\\":\\\"#/definitions/ConditionalValueDef<(number[]|ExprRef)>\\\"},{\\\"items\\\":{\\\"$ref\\\":\\\"#/definitions/ConditionalValueDef<(number[]|ExprRef)>\\\"},\\\"type\\\":\\\"array\\\"}],\\\"description\\\":\\\"One or more value definition(s) with [a selection or a test predicate](https://vega.github.io/vega-lite/docs/condition.html).\\\\n\\\\n__Note:__ A field definition's `condition` property can only contain [conditional value definitions](https://vega.github.io/vega-lite/docs/condition.html#value) since Vega-Lite only allows at most one encoded field per encoding channel.\\\"},{\\\"anyOf\\\":[{\\\"$ref\\\":\\\"#/definitions/ConditionalMarkPropFieldOrDatumDef\\\"},{\\\"$ref\\\":\\\"#/definitions/ConditionalValueDef<(number[]|ExprRef)>\\\"},{\\\"items\\\":{\\\"$ref\\\":\\\"#/definitions/ConditionalValueDef<(number[]|ExprRef)>\\\"},\\\"type\\\":\\\"array\\\"}],\\\"description\\\":\\\"A field definition or one or more value definition(s) with a selection predicate.\\\"}],\\\"description\\\":\\\"One or more value definition(s) with [a selection or a test predicate](https://vega.github.io/vega-lite/docs/condition.html).\\\\n\\\\n__Note:__ A field definition's `condition` property can only contain [conditional value definitions](https://vega.github.io/vega-lite/docs/condition.html#value) since Vega-Lite only allows at most one encoded field per encoding channel.\\\"},\\\"datum\\\":{\\\"anyOf\\\":[{\\\"$ref\\\":\\\"#/definitions/PrimitiveValue\\\"},{\\\"$ref\\\":\\\"#/definitions/DateTime\\\"},{\\\"$ref\\\":\\\"#/definitions/ExprRef\\\"},{\\\"$ref\\\":\\\"#/definitions/RepeatRef\\\"}],\\\"description\\\":\\\"A constant value in data domain.\\\"},\\\"field\\\":{\\\"$ref\\\":\\\"#/definitions/Field\\\",\\\"description\\\":\\\"__Required.__ A string defining the name of the field from which to pull a data value or an object defining iterated values from the [`repeat`](https://vega.github.io/vega-lite/docs/repeat.html) operator.\\\\n\\\\n__See also:__ [`field`](https://vega.github.io/vega-lite/docs/field.html) documentation.\\\\n\\\\n__Notes:__ 1)  Dots (`.`) and brackets (`[` and `]`) can be used to access nested objects (e.g., `\\\\\\\"field\\\\\\\": \\\\\\\"foo.bar\\\\\\\"` and `\\\\\\\"field\\\\\\\": \\\\\\\"foo['bar']\\\\\\\"`). If field names contain dots or brackets but are not nested, you can use `\\\\\\\\\\\\\\\\` to escape dots and brackets (e.g., `\\\\\\\"a\\\\\\\\\\\\\\\\.b\\\\\\\"` and `\\\\\\\"a\\\\\\\\\\\\\\\\[0\\\\\\\\\\\\\\\\]\\\\\\\"`). See more details about escaping in the [field documentation](https://vega.github.io/vega-lite/docs/field.html). 2) `field` is not required if `aggregate` is `count`.\\\"},\\\"legend\\\":{\\\"anyOf\\\":[{\\\"$ref\\\":\\\"#/definitions/Legend\\\"},{\\\"type\\\":\\\"null\\\"}],\\\"description\\\":\\\"An object defining properties of the legend. If `null`, the legend for the encoding channel will be removed.\\\\n\\\\n__Default value:__ If undefined, default [legend properties](https://vega.github.io/vega-lite/docs/legend.html) are applied.\\\\n\\\\n__See also:__ [`legend`](https://vega.github.io/vega-lite/docs/legend.html) documentation.\\\"},\\\"scale\\\":{\\\"anyOf\\\":[{\\\"$ref\\\":\\\"#/definitions/Scale\\\"},{\\\"type\\\":\\\"null\\\"}],\\\"description\\\":\\\"An object defining properties of the channel's scale, which is the function that transforms values in the data domain (numbers, dates, strings, etc) to visual values (pixels, colors, sizes) of the encoding channels.\\\\n\\\\nIf `null`, the scale will be [disabled and the data value will be directly encoded](https://vega.github.io/vega-lite/docs/scale.html#disable).\\\\n\\\\n__Default value:__ If undefined, default [scale properties](https://vega.github.io/vega-lite/docs/scale.html) are applied.\\\\n\\\\n__See also:__ [`scale`](https://vega.github.io/vega-lite/docs/scale.html) documentation.\\\"},\\\"sort\\\":{\\\"$ref\\\":\\\"#/definitions/Sort\\\",\\\"description\\\":\\\"Sort order for the encoded field.\\\\n\\\\nFor continuous fields (quantitative or temporal), `sort` can be either `\\\\\\\"ascending\\\\\\\"` or `\\\\\\\"descending\\\\\\\"`.\\\\n\\\\nFor discrete fields, `sort` can be one of the following: - `\\\\\\\"ascending\\\\\\\"` or `\\\\\\\"descending\\\\\\\"` -- for sorting by the values' natural order in JavaScript. - [A string indicating an encoding channel name to sort by](https://vega.github.io/vega-lite/docs/sort.html#sort-by-encoding) (e.g., `\\\\\\\"x\\\\\\\"` or `\\\\\\\"y\\\\\\\"`) with an optional minus prefix for descending sort (e.g., `\\\\\\\"-x\\\\\\\"` to sort by x-field, descending). This channel string is short-form of [a sort-by-encoding definition](https://vega.github.io/vega-lite/docs/sort.html#sort-by-encoding). For example, `\\\\\\\"sort\\\\\\\": \\\\\\\"-x\\\\\\\"` is equivalent to `\\\\\\\"sort\\\\\\\": {\\\\\\\"encoding\\\\\\\": \\\\\\\"x\\\\\\\", \\\\\\\"order\\\\\\\": \\\\\\\"descending\\\\\\\"}`. - [A sort field definition](https://vega.github.io/vega-lite/docs/sort.html#sort-field) for sorting by another field. - [An array specifying the field values in preferred order](https://vega.github.io/vega-lite/docs/sort.html#sort-array). In this case, the sort order will obey the values in the array, followed by any unspecified values in their original order. For discrete time field, values in the sort array can be [date-time definition objects](types#datetime). In addition, for time units `\\\\\\\"month\\\\\\\"` and `\\\\\\\"day\\\\\\\"`, the values can be the month or day names (case insensitive) or their 3-letter initials (e.g., `\\\\\\\"Mon\\\\\\\"`, `\\\\\\\"Tue\\\\\\\"`). - `null` indicating no sort.\\\\n\\\\n__Default value:__ `\\\\\\\"ascending\\\\\\\"`\\\\n\\\\n__Note:__ `null` and sorting by another channel is not supported for `row` and `column`.\\\\n\\\\n__See also:__ [`sort`](https://vega.github.io/vega-lite/docs/sort.html) documentation.\\\"},\\\"timeUnit\\\":{\\\"anyOf\\\":[{\\\"$ref\\\":\\\"#/definitions/TimeUnit\\\"},{\\\"$ref\\\":\\\"#/definitions/TimeUnitParams\\\"}],\\\"description\\\":\\\"Time unit (e.g., `year`, `yearmonth`, `month`, `hours`) for a temporal field. or [a temporal field that gets casted as ordinal](https://vega.github.io/vega-lite/docs/type.html#cast).\\\\n\\\\n__Default value:__ `undefined` (None)\\\\n\\\\n__See also:__ [`timeUnit`](https://vega.github.io/vega-lite/docs/timeunit.html) documentation.\\\"},\\\"title\\\":{\\\"anyOf\\\":[{\\\"$ref\\\":\\\"#/definitions/Text\\\"},{\\\"type\\\":\\\"null\\\"}],\\\"description\\\":\\\"A title for the field. If `null`, the title will be removed.\\\\n\\\\n__Default value:__  derived from the field's name and transformation function (`aggregate`, `bin` and `timeUnit`). If the field has an aggregate function, the function is displayed as part of the title (e.g., `\\\\\\\"Sum of Profit\\\\\\\"`). If the field is binned or has a time unit applied, the applied function is shown in parentheses (e.g., `\\\\\\\"Profit (binned)\\\\\\\"`, `\\\\\\\"Transaction Date (year-month)\\\\\\\"`). Otherwise, the title is simply the field name.\\\\n\\\\n__Notes__:\\\\n\\\\n1) You can customize the default field title format by providing the [`fieldTitle`](https://vega.github.io/vega-lite/docs/config.html#top-level-config) property in the [config](https://vega.github.io/vega-lite/docs/config.html) or [`fieldTitle` function via the `compile` function's options](https://vega.github.io/vega-lite/docs/compile.html#field-title).\\\\n\\\\n2) If both field definition's `title` and axis, header, or legend `title` are defined, axis/header/legend title will be used.\\\"},\\\"type\\\":{\\\"anyOf\\\":[{\\\"$ref\\\":\\\"#/definitions/StandardType\\\",\\\"description\\\":\\\"The type of measurement (`\\\\\\\"quantitative\\\\\\\"`, `\\\\\\\"temporal\\\\\\\"`, `\\\\\\\"ordinal\\\\\\\"`, or `\\\\\\\"nominal\\\\\\\"`) for the encoded field or constant value (`datum`). It can also be a `\\\\\\\"geojson\\\\\\\"` type for encoding ['geoshape'](https://vega.github.io/vega-lite/docs/geoshape.html).\\\\n\\\\nVega-Lite automatically infers data types in many cases as discussed below. However, type is required for a field if: (1) the field is not nominal and the field encoding has no specified `aggregate` (except `argmin` and `argmax`), `bin`, scale type, custom `sort` order, nor `timeUnit` or (2) if you wish to use an ordinal scale for a field with `bin` or `timeUnit`.\\\\n\\\\n__Default value:__\\\\n\\\\n1) For a data `field`, `\\\\\\\"nominal\\\\\\\"` is the default data type unless the field encoding has `aggregate`, `channel`, `bin`, scale type, `sort`, or `timeUnit` that satisfies the following criteria: - `\\\\\\\"quantitative\\\\\\\"` is the default type if (1) the encoded field contains `bin` or `aggregate` except `\\\\\\\"argmin\\\\\\\"` and `\\\\\\\"argmax\\\\\\\"`, (2) the encoding channel is `latitude` or `longitude` channel or (3) if the specified scale type is [a quantitative scale](https://vega.github.io/vega-lite/docs/scale.html#type). - `\\\\\\\"temporal\\\\\\\"` is the default type if (1) the encoded field contains `timeUnit` or (2) the specified scale type is a time or utc scale - `ordinal\\\\\\\"\\\\\\\"` is the default type if (1) the encoded field contains a [custom `sort` order](https://vega.github.io/vega-lite/docs/sort.html#specifying-custom-sort-order), (2) the specified scale type is an ordinal/point/band scale, or (3) the encoding channel is `order`.\\\\n\\\\n2) For a constant value in data domain (`datum`): - `\\\\\\\"quantitative\\\\\\\"` if the datum is a number - `\\\\\\\"nominal\\\\\\\"` if the datum is a string - `\\\\\\\"temporal\\\\\\\"` if the datum is [a date time object](https://vega.github.io/vega-lite/docs/datetime.html)\\\\n\\\\n__Note:__ - Data `type` describes the semantics of the data rather than the primitive data types (number, string, etc.). The same primitive data type can have different types of measurement. For example, numeric data can represent quantitative, ordinal, or nominal data. - Data values for a temporal field can be either a date-time string (e.g., `\\\\\\\"2015-03-07 12:32:17\\\\\\\"`, `\\\\\\\"17:01\\\\\\\"`, `\\\\\\\"2015-03-16\\\\\\\"`. `\\\\\\\"2015\\\\\\\"`) or a timestamp number (e.g., `1552199579097`). - When using with [`bin`](https://vega.github.io/vega-lite/docs/bin.html), the `type` property can be either `\\\\\\\"quantitative\\\\\\\"` (for using a linear bin scale) or [`\\\\\\\"ordinal\\\\\\\"` (for using an ordinal bin scale)](https://vega.github.io/vega-lite/docs/type.html#cast-bin). - When using with [`timeUnit`](https://vega.github.io/vega-lite/docs/timeunit.html), the `type` property can be either `\\\\\\\"temporal\\\\\\\"` (default, for using a temporal scale) or [`\\\\\\\"ordinal\\\\\\\"` (for using an ordinal scale)](https://vega.github.io/vega-lite/docs/type.html#cast-bin). - When using with [`aggregate`](https://vega.github.io/vega-lite/docs/aggregate.html), the `type` property refers to the post-aggregation data type. For example, we can calculate count `distinct` of a categorical field `\\\\\\\"cat\\\\\\\"` using `{\\\\\\\"aggregate\\\\\\\": \\\\\\\"distinct\\\\\\\", \\\\\\\"field\\\\\\\": \\\\\\\"cat\\\\\\\"}`. The `\\\\\\\"type\\\\\\\"` of the aggregate output is `\\\\\\\"quantitative\\\\\\\"`. - Secondary channels (e.g., `x2`, `y2`, `xError`, `yError`) do not have `type` as they must have exactly the same type as their primary channels (e.g., `x`, `y`).\\\\n\\\\n__See also:__ [`type`](https://vega.github.io/vega-lite/docs/type.html) documentation.\\\"},{\\\"$ref\\\":\\\"#/definitions/Type\\\",\\\"description\\\":\\\"The type of measurement (`\\\\\\\"quantitative\\\\\\\"`, `\\\\\\\"temporal\\\\\\\"`, `\\\\\\\"ordinal\\\\\\\"`, or `\\\\\\\"nominal\\\\\\\"`) for the encoded field or constant value (`datum`). It can also be a `\\\\\\\"geojson\\\\\\\"` type for encoding ['geoshape'](https://vega.github.io/vega-lite/docs/geoshape.html).\\\\n\\\\nVega-Lite automatically infers data types in many cases as discussed below. However, type is required for a field if: (1) the field is not nominal and the field encoding has no specified `aggregate` (except `argmin` and `argmax`), `bin`, scale type, custom `sort` order, nor `timeUnit` or (2) if you wish to use an ordinal scale for a field with `bin` or `timeUnit`.\\\\n\\\\n__Default value:__\\\\n\\\\n1) For a data `field`, `\\\\\\\"nominal\\\\\\\"` is the default data type unless the field encoding has `aggregate`, `channel`, `bin`, scale type, `sort`, or `timeUnit` that satisfies the following criteria: - `\\\\\\\"quantitative\\\\\\\"` is the default type if (1) the encoded field contains `bin` or `aggregate` except `\\\\\\\"argmin\\\\\\\"` and `\\\\\\\"argmax\\\\\\\"`, (2) the encoding channel is `latitude` or `longitude` channel or (3) if the specified scale type is [a quantitative scale](https://vega.github.io/vega-lite/docs/scale.html#type). - `\\\\\\\"temporal\\\\\\\"` is the default type if (1) the encoded field contains `timeUnit` or (2) the specified scale type is a time or utc scale - `ordinal\\\\\\\"\\\\\\\"` is the default type if (1) the encoded field contains a [custom `sort` order](https://vega.github.io/vega-lite/docs/sort.html#specifying-custom-sort-order), (2) the specified scale type is an ordinal/point/band scale, or (3) the encoding channel is `order`.\\\\n\\\\n2) For a constant value in data domain (`datum`): - `\\\\\\\"quantitative\\\\\\\"` if the datum is a number - `\\\\\\\"nominal\\\\\\\"` if the datum is a string - `\\\\\\\"temporal\\\\\\\"` if the datum is [a date time object](https://vega.github.io/vega-lite/docs/datetime.html)\\\\n\\\\n__Note:__ - Data `type` describes the semantics of the data rather than the primitive data types (number, string, etc.). The same primitive data type can have different types of measurement. For example, numeric data can represent quantitative, ordinal, or nominal data. - Data values for a temporal field can be either a date-time string (e.g., `\\\\\\\"2015-03-07 12:32:17\\\\\\\"`, `\\\\\\\"17:01\\\\\\\"`, `\\\\\\\"2015-03-16\\\\\\\"`. `\\\\\\\"2015\\\\\\\"`) or a timestamp number (e.g., `1552199579097`). - When using with [`bin`](https://vega.github.io/vega-lite/docs/bin.html), the `type` property can be either `\\\\\\\"quantitative\\\\\\\"` (for using a linear bin scale) or [`\\\\\\\"ordinal\\\\\\\"` (for using an ordinal bin scale)](https://vega.github.io/vega-lite/docs/type.html#cast-bin). - When using with [`timeUnit`](https://vega.github.io/vega-lite/docs/timeunit.html), the `type` property can be either `\\\\\\\"temporal\\\\\\\"` (default, for using a temporal scale) or [`\\\\\\\"ordinal\\\\\\\"` (for using an ordinal scale)](https://vega.github.io/vega-lite/docs/type.html#cast-bin). - When using with [`aggregate`](https://vega.github.io/vega-lite/docs/aggregate.html), the `type` property refers to the post-aggregation data type. For example, we can calculate count `distinct` of a categorical field `\\\\\\\"cat\\\\\\\"` using `{\\\\\\\"aggregate\\\\\\\": \\\\\\\"distinct\\\\\\\", \\\\\\\"field\\\\\\\": \\\\\\\"cat\\\\\\\"}`. The `\\\\\\\"type\\\\\\\"` of the aggregate output is `\\\\\\\"quantitative\\\\\\\"`. - Secondary channels (e.g., `x2`, `y2`, `xError`, `yError`) do not have `type` as they must have exactly the same type as their primary channels (e.g., `x`, `y`).\\\\n\\\\n__See also:__ [`type`](https://vega.github.io/vega-lite/docs/type.html) documentation.\\\"}],\\\"description\\\":\\\"The type of measurement (`\\\\\\\"quantitative\\\\\\\"`, `\\\\\\\"temporal\\\\\\\"`, `\\\\\\\"ordinal\\\\\\\"`, or `\\\\\\\"nominal\\\\\\\"`) for the encoded field or constant value (`datum`). It can also be a `\\\\\\\"geojson\\\\\\\"` type for encoding ['geoshape'](https://vega.github.io/vega-lite/docs/geoshape.html).\\\\n\\\\nVega-Lite automatically infers data types in many cases as discussed below. However, type is required for a field if: (1) the field is not nominal and the field encoding has no specified `aggregate` (except `argmin` and `argmax`), `bin`, scale type, custom `sort` order, nor `timeUnit` or (2) if you wish to use an ordinal scale for a field with `bin` or `timeUnit`.\\\\n\\\\n__Default value:__\\\\n\\\\n1) For a data `field`, `\\\\\\\"nominal\\\\\\\"` is the default data type unless the field encoding has `aggregate`, `channel`, `bin`, scale type, `sort`, or `timeUnit` that satisfies the following criteria: - `\\\\\\\"quantitative\\\\\\\"` is the default type if (1) the encoded field contains `bin` or `aggregate` except `\\\\\\\"argmin\\\\\\\"` and `\\\\\\\"argmax\\\\\\\"`, (2) the encoding channel is `latitude` or `longitude` channel or (3) if the specified scale type is [a quantitative scale](https://vega.github.io/vega-lite/docs/scale.html#type). - `\\\\\\\"temporal\\\\\\\"` is the default type if (1) the encoded field contains `timeUnit` or (2) the specified scale type is a time or utc scale - `ordinal\\\\\\\"\\\\\\\"` is the default type if (1) the encoded field contains a [custom `sort` order](https://vega.github.io/vega-lite/docs/sort.html#specifying-custom-sort-order), (2) the specified scale type is an ordinal/point/band scale, or (3) the encoding channel is `order`.\\\\n\\\\n2) For a constant value in data domain (`datum`): - `\\\\\\\"quantitative\\\\\\\"` if the datum is a number - `\\\\\\\"nominal\\\\\\\"` if the datum is a string - `\\\\\\\"temporal\\\\\\\"` if the datum is [a date time object](https://vega.github.io/vega-lite/docs/datetime.html)\\\\n\\\\n__Note:__ - Data `type` describes the semantics of the data rather than the primitive data types (number, string, etc.). The same primitive data type can have different types of measurement. For example, numeric data can represent quantitative, ordinal, or nominal data. - Data values for a temporal field can be either a date-time string (e.g., `\\\\\\\"2015-03-07 12:32:17\\\\\\\"`, `\\\\\\\"17:01\\\\\\\"`, `\\\\\\\"2015-03-16\\\\\\\"`. `\\\\\\\"2015\\\\\\\"`) or a timestamp number (e.g., `1552199579097`). - When using with [`bin`](https://vega.github.io/vega-lite/docs/bin.html), the `type` property can be either `\\\\\\\"quantitative\\\\\\\"` (for using a linear bin scale) or [`\\\\\\\"ordinal\\\\\\\"` (for using an ordinal bin scale)](https://vega.github.io/vega-lite/docs/type.html#cast-bin). - When using with [`timeUnit`](https://vega.github.io/vega-lite/docs/timeunit.html), the `type` property can be either `\\\\\\\"temporal\\\\\\\"` (default, for using a temporal scale) or [`\\\\\\\"ordinal\\\\\\\"` (for using an ordinal scale)](https://vega.github.io/vega-lite/docs/type.html#cast-bin). - When using with [`aggregate`](https://vega.github.io/vega-lite/docs/aggregate.html), the `type` property refers to the post-aggregation data type. For example, we can calculate count `distinct` of a categorical field `\\\\\\\"cat\\\\\\\"` using `{\\\\\\\"aggregate\\\\\\\": \\\\\\\"distinct\\\\\\\", \\\\\\\"field\\\\\\\": \\\\\\\"cat\\\\\\\"}`. The `\\\\\\\"type\\\\\\\"` of the aggregate output is `\\\\\\\"quantitative\\\\\\\"`. - Secondary channels (e.g., `x2`, `y2`, `xError`, `yError`) do not have `type` as they must have exactly the same type as their primary channels (e.g., `x`, `y`).\\\\n\\\\n__See also:__ [`type`](https://vega.github.io/vega-lite/docs/type.html) documentation.\\\"},\\\"value\\\":{\\\"anyOf\\\":[{\\\"items\\\":{\\\"type\\\":\\\"number\\\"},\\\"type\\\":\\\"array\\\"},{\\\"$ref\\\":\\\"#/definitions/ExprRef\\\"}],\\\"description\\\":\\\"A constant value in visual domain (e.g., `\\\\\\\"red\\\\\\\"` / `\\\\\\\"#0099ff\\\\\\\"` / [gradient definition](https://vega.github.io/vega-lite/docs/types.html#gradient) for color, values between `0` to `1` for opacity).\\\"}},\\\"type\\\":\\\"object\\\"},\\\"strokeOpacity\\\":{\\\"additionalProperties\\\":false,\\\"properties\\\":{\\\"aggregate\\\":{\\\"$ref\\\":\\\"#/definitions/Aggregate\\\",\\\"description\\\":\\\"Aggregation function for the field (e.g., `\\\\\\\"mean\\\\\\\"`, `\\\\\\\"sum\\\\\\\"`, `\\\\\\\"median\\\\\\\"`, `\\\\\\\"min\\\\\\\"`, `\\\\\\\"max\\\\\\\"`, `\\\\\\\"count\\\\\\\"`).\\\\n\\\\n__Default value:__ `undefined` (None)\\\\n\\\\n__See also:__ [`aggregate`](https://vega.github.io/vega-lite/docs/aggregate.html) documentation.\\\"},\\\"band\\\":{\\\"description\\\":\\\"For rect-based marks (`rect`, `bar`, and `image`), mark size relative to bandwidth of [band scales](https://vega.github.io/vega-lite/docs/scale.html#band), bins or time units. If set to `1`, the mark size is set to the bandwidth, the bin interval, or the time unit interval. If set to `0.5`, the mark size is half of the bandwidth or the time unit interval.\\\\n\\\\nFor other marks, relative position on a band of a stacked, binned, time unit or band scale. If set to `0`, the marks will be positioned at the beginning of the band. If set to `0.5`, the marks will be positioned in the middle of the band.\\\",\\\"maximum\\\":1,\\\"minimum\\\":0,\\\"type\\\":\\\"number\\\"},\\\"bin\\\":{\\\"anyOf\\\":[{\\\"type\\\":\\\"boolean\\\"},{\\\"$ref\\\":\\\"#/definitions/BinParams\\\"},{\\\"type\\\":\\\"null\\\"}],\\\"description\\\":\\\"A flag for binning a `quantitative` field, [an object defining binning parameters](https://vega.github.io/vega-lite/docs/bin.html#params), or indicating that the data for `x` or `y` channel are binned before they are imported into Vega-Lite (`\\\\\\\"binned\\\\\\\"`).\\\\n\\\\n- If `true`, default [binning parameters](https://vega.github.io/vega-lite/docs/bin.html) will be applied.\\\\n\\\\n- If `\\\\\\\"binned\\\\\\\"`, this indicates that the data for the `x` (or `y`) channel are already binned. You can map the bin-start field to `x` (or `y`) and the bin-end field to `x2` (or `y2`). The scale and axis will be formatted similar to binning in Vega-Lite.  To adjust the axis ticks based on the bin step, you can also set the axis's [`tickMinStep`](https://vega.github.io/vega-lite/docs/axis.html#ticks) property.\\\\n\\\\n__Default value:__ `false`\\\\n\\\\n__See also:__ [`bin`](https://vega.github.io/vega-lite/docs/bin.html) documentation.\\\"},\\\"condition\\\":{\\\"anyOf\\\":[{\\\"anyOf\\\":[{\\\"$ref\\\":\\\"#/definitions/ConditionalValueDef<(number|ExprRef)>\\\"},{\\\"items\\\":{\\\"$ref\\\":\\\"#/definitions/ConditionalValueDef<(number|ExprRef)>\\\"},\\\"type\\\":\\\"array\\\"}],\\\"description\\\":\\\"One or more value definition(s) with [a selection or a test predicate](https://vega.github.io/vega-lite/docs/condition.html).\\\\n\\\\n__Note:__ A field definition's `condition` property can only contain [conditional value definitions](https://vega.github.io/vega-lite/docs/condition.html#value) since Vega-Lite only allows at most one encoded field per encoding channel.\\\"},{\\\"anyOf\\\":[{\\\"$ref\\\":\\\"#/definitions/ConditionalMarkPropFieldOrDatumDef\\\"},{\\\"$ref\\\":\\\"#/definitions/ConditionalValueDef<(number|ExprRef)>\\\"},{\\\"items\\\":{\\\"$ref\\\":\\\"#/definitions/ConditionalValueDef<(number|ExprRef)>\\\"},\\\"type\\\":\\\"array\\\"}],\\\"description\\\":\\\"A field definition or one or more value definition(s) with a selection predicate.\\\"}],\\\"description\\\":\\\"One or more value definition(s) with [a selection or a test predicate](https://vega.github.io/vega-lite/docs/condition.html).\\\\n\\\\n__Note:__ A field definition's `condition` property can only contain [conditional value definitions](https://vega.github.io/vega-lite/docs/condition.html#value) since Vega-Lite only allows at most one encoded field per encoding channel.\\\"},\\\"datum\\\":{\\\"anyOf\\\":[{\\\"$ref\\\":\\\"#/definitions/PrimitiveValue\\\"},{\\\"$ref\\\":\\\"#/definitions/DateTime\\\"},{\\\"$ref\\\":\\\"#/definitions/ExprRef\\\"},{\\\"$ref\\\":\\\"#/definitions/RepeatRef\\\"}],\\\"description\\\":\\\"A constant value in data domain.\\\"},\\\"field\\\":{\\\"$ref\\\":\\\"#/definitions/Field\\\",\\\"description\\\":\\\"__Required.__ A string defining the name of the field from which to pull a data value or an object defining iterated values from the [`repeat`](https://vega.github.io/vega-lite/docs/repeat.html) operator.\\\\n\\\\n__See also:__ [`field`](https://vega.github.io/vega-lite/docs/field.html) documentation.\\\\n\\\\n__Notes:__ 1)  Dots (`.`) and brackets (`[` and `]`) can be used to access nested objects (e.g., `\\\\\\\"field\\\\\\\": \\\\\\\"foo.bar\\\\\\\"` and `\\\\\\\"field\\\\\\\": \\\\\\\"foo['bar']\\\\\\\"`). If field names contain dots or brackets but are not nested, you can use `\\\\\\\\\\\\\\\\` to escape dots and brackets (e.g., `\\\\\\\"a\\\\\\\\\\\\\\\\.b\\\\\\\"` and `\\\\\\\"a\\\\\\\\\\\\\\\\[0\\\\\\\\\\\\\\\\]\\\\\\\"`). See more details about escaping in the [field documentation](https://vega.github.io/vega-lite/docs/field.html). 2) `field` is not required if `aggregate` is `count`.\\\"},\\\"legend\\\":{\\\"anyOf\\\":[{\\\"$ref\\\":\\\"#/definitions/Legend\\\"},{\\\"type\\\":\\\"null\\\"}],\\\"description\\\":\\\"An object defining properties of the legend. If `null`, the legend for the encoding channel will be removed.\\\\n\\\\n__Default value:__ If undefined, default [legend properties](https://vega.github.io/vega-lite/docs/legend.html) are applied.\\\\n\\\\n__See also:__ [`legend`](https://vega.github.io/vega-lite/docs/legend.html) documentation.\\\"},\\\"scale\\\":{\\\"anyOf\\\":[{\\\"$ref\\\":\\\"#/definitions/Scale\\\"},{\\\"type\\\":\\\"null\\\"}],\\\"description\\\":\\\"An object defining properties of the channel's scale, which is the function that transforms values in the data domain (numbers, dates, strings, etc) to visual values (pixels, colors, sizes) of the encoding channels.\\\\n\\\\nIf `null`, the scale will be [disabled and the data value will be directly encoded](https://vega.github.io/vega-lite/docs/scale.html#disable).\\\\n\\\\n__Default value:__ If undefined, default [scale properties](https://vega.github.io/vega-lite/docs/scale.html) are applied.\\\\n\\\\n__See also:__ [`scale`](https://vega.github.io/vega-lite/docs/scale.html) documentation.\\\"},\\\"sort\\\":{\\\"$ref\\\":\\\"#/definitions/Sort\\\",\\\"description\\\":\\\"Sort order for the encoded field.\\\\n\\\\nFor continuous fields (quantitative or temporal), `sort` can be either `\\\\\\\"ascending\\\\\\\"` or `\\\\\\\"descending\\\\\\\"`.\\\\n\\\\nFor discrete fields, `sort` can be one of the following: - `\\\\\\\"ascending\\\\\\\"` or `\\\\\\\"descending\\\\\\\"` -- for sorting by the values' natural order in JavaScript. - [A string indicating an encoding channel name to sort by](https://vega.github.io/vega-lite/docs/sort.html#sort-by-encoding) (e.g., `\\\\\\\"x\\\\\\\"` or `\\\\\\\"y\\\\\\\"`) with an optional minus prefix for descending sort (e.g., `\\\\\\\"-x\\\\\\\"` to sort by x-field, descending). This channel string is short-form of [a sort-by-encoding definition](https://vega.github.io/vega-lite/docs/sort.html#sort-by-encoding). For example, `\\\\\\\"sort\\\\\\\": \\\\\\\"-x\\\\\\\"` is equivalent to `\\\\\\\"sort\\\\\\\": {\\\\\\\"encoding\\\\\\\": \\\\\\\"x\\\\\\\", \\\\\\\"order\\\\\\\": \\\\\\\"descending\\\\\\\"}`. - [A sort field definition](https://vega.github.io/vega-lite/docs/sort.html#sort-field) for sorting by another field. - [An array specifying the field values in preferred order](https://vega.github.io/vega-lite/docs/sort.html#sort-array). In this case, the sort order will obey the values in the array, followed by any unspecified values in their original order. For discrete time field, values in the sort array can be [date-time definition objects](types#datetime). In addition, for time units `\\\\\\\"month\\\\\\\"` and `\\\\\\\"day\\\\\\\"`, the values can be the month or day names (case insensitive) or their 3-letter initials (e.g., `\\\\\\\"Mon\\\\\\\"`, `\\\\\\\"Tue\\\\\\\"`). - `null` indicating no sort.\\\\n\\\\n__Default value:__ `\\\\\\\"ascending\\\\\\\"`\\\\n\\\\n__Note:__ `null` and sorting by another channel is not supported for `row` and `column`.\\\\n\\\\n__See also:__ [`sort`](https://vega.github.io/vega-lite/docs/sort.html) documentation.\\\"},\\\"timeUnit\\\":{\\\"anyOf\\\":[{\\\"$ref\\\":\\\"#/definitions/TimeUnit\\\"},{\\\"$ref\\\":\\\"#/definitions/TimeUnitParams\\\"}],\\\"description\\\":\\\"Time unit (e.g., `year`, `yearmonth`, `month`, `hours`) for a temporal field. or [a temporal field that gets casted as ordinal](https://vega.github.io/vega-lite/docs/type.html#cast).\\\\n\\\\n__Default value:__ `undefined` (None)\\\\n\\\\n__See also:__ [`timeUnit`](https://vega.github.io/vega-lite/docs/timeunit.html) documentation.\\\"},\\\"title\\\":{\\\"anyOf\\\":[{\\\"$ref\\\":\\\"#/definitions/Text\\\"},{\\\"type\\\":\\\"null\\\"}],\\\"description\\\":\\\"A title for the field. If `null`, the title will be removed.\\\\n\\\\n__Default value:__  derived from the field's name and transformation function (`aggregate`, `bin` and `timeUnit`). If the field has an aggregate function, the function is displayed as part of the title (e.g., `\\\\\\\"Sum of Profit\\\\\\\"`). If the field is binned or has a time unit applied, the applied function is shown in parentheses (e.g., `\\\\\\\"Profit (binned)\\\\\\\"`, `\\\\\\\"Transaction Date (year-month)\\\\\\\"`). Otherwise, the title is simply the field name.\\\\n\\\\n__Notes__:\\\\n\\\\n1) You can customize the default field title format by providing the [`fieldTitle`](https://vega.github.io/vega-lite/docs/config.html#top-level-config) property in the [config](https://vega.github.io/vega-lite/docs/config.html) or [`fieldTitle` function via the `compile` function's options](https://vega.github.io/vega-lite/docs/compile.html#field-title).\\\\n\\\\n2) If both field definition's `title` and axis, header, or legend `title` are defined, axis/header/legend title will be used.\\\"},\\\"type\\\":{\\\"anyOf\\\":[{\\\"$ref\\\":\\\"#/definitions/StandardType\\\",\\\"description\\\":\\\"The type of measurement (`\\\\\\\"quantitative\\\\\\\"`, `\\\\\\\"temporal\\\\\\\"`, `\\\\\\\"ordinal\\\\\\\"`, or `\\\\\\\"nominal\\\\\\\"`) for the encoded field or constant value (`datum`). It can also be a `\\\\\\\"geojson\\\\\\\"` type for encoding ['geoshape'](https://vega.github.io/vega-lite/docs/geoshape.html).\\\\n\\\\nVega-Lite automatically infers data types in many cases as discussed below. However, type is required for a field if: (1) the field is not nominal and the field encoding has no specified `aggregate` (except `argmin` and `argmax`), `bin`, scale type, custom `sort` order, nor `timeUnit` or (2) if you wish to use an ordinal scale for a field with `bin` or `timeUnit`.\\\\n\\\\n__Default value:__\\\\n\\\\n1) For a data `field`, `\\\\\\\"nominal\\\\\\\"` is the default data type unless the field encoding has `aggregate`, `channel`, `bin`, scale type, `sort`, or `timeUnit` that satisfies the following criteria: - `\\\\\\\"quantitative\\\\\\\"` is the default type if (1) the encoded field contains `bin` or `aggregate` except `\\\\\\\"argmin\\\\\\\"` and `\\\\\\\"argmax\\\\\\\"`, (2) the encoding channel is `latitude` or `longitude` channel or (3) if the specified scale type is [a quantitative scale](https://vega.github.io/vega-lite/docs/scale.html#type). - `\\\\\\\"temporal\\\\\\\"` is the default type if (1) the encoded field contains `timeUnit` or (2) the specified scale type is a time or utc scale - `ordinal\\\\\\\"\\\\\\\"` is the default type if (1) the encoded field contains a [custom `sort` order](https://vega.github.io/vega-lite/docs/sort.html#specifying-custom-sort-order), (2) the specified scale type is an ordinal/point/band scale, or (3) the encoding channel is `order`.\\\\n\\\\n2) For a constant value in data domain (`datum`): - `\\\\\\\"quantitative\\\\\\\"` if the datum is a number - `\\\\\\\"nominal\\\\\\\"` if the datum is a string - `\\\\\\\"temporal\\\\\\\"` if the datum is [a date time object](https://vega.github.io/vega-lite/docs/datetime.html)\\\\n\\\\n__Note:__ - Data `type` describes the semantics of the data rather than the primitive data types (number, string, etc.). The same primitive data type can have different types of measurement. For example, numeric data can represent quantitative, ordinal, or nominal data. - Data values for a temporal field can be either a date-time string (e.g., `\\\\\\\"2015-03-07 12:32:17\\\\\\\"`, `\\\\\\\"17:01\\\\\\\"`, `\\\\\\\"2015-03-16\\\\\\\"`. `\\\\\\\"2015\\\\\\\"`) or a timestamp number (e.g., `1552199579097`). - When using with [`bin`](https://vega.github.io/vega-lite/docs/bin.html), the `type` property can be either `\\\\\\\"quantitative\\\\\\\"` (for using a linear bin scale) or [`\\\\\\\"ordinal\\\\\\\"` (for using an ordinal bin scale)](https://vega.github.io/vega-lite/docs/type.html#cast-bin). - When using with [`timeUnit`](https://vega.github.io/vega-lite/docs/timeunit.html), the `type` property can be either `\\\\\\\"temporal\\\\\\\"` (default, for using a temporal scale) or [`\\\\\\\"ordinal\\\\\\\"` (for using an ordinal scale)](https://vega.github.io/vega-lite/docs/type.html#cast-bin). - When using with [`aggregate`](https://vega.github.io/vega-lite/docs/aggregate.html), the `type` property refers to the post-aggregation data type. For example, we can calculate count `distinct` of a categorical field `\\\\\\\"cat\\\\\\\"` using `{\\\\\\\"aggregate\\\\\\\": \\\\\\\"distinct\\\\\\\", \\\\\\\"field\\\\\\\": \\\\\\\"cat\\\\\\\"}`. The `\\\\\\\"type\\\\\\\"` of the aggregate output is `\\\\\\\"quantitative\\\\\\\"`. - Secondary channels (e.g., `x2`, `y2`, `xError`, `yError`) do not have `type` as they must have exactly the same type as their primary channels (e.g., `x`, `y`).\\\\n\\\\n__See also:__ [`type`](https://vega.github.io/vega-lite/docs/type.html) documentation.\\\"},{\\\"$ref\\\":\\\"#/definitions/Type\\\",\\\"description\\\":\\\"The type of measurement (`\\\\\\\"quantitative\\\\\\\"`, `\\\\\\\"temporal\\\\\\\"`, `\\\\\\\"ordinal\\\\\\\"`, or `\\\\\\\"nominal\\\\\\\"`) for the encoded field or constant value (`datum`). It can also be a `\\\\\\\"geojson\\\\\\\"` type for encoding ['geoshape'](https://vega.github.io/vega-lite/docs/geoshape.html).\\\\n\\\\nVega-Lite automatically infers data types in many cases as discussed below. However, type is required for a field if: (1) the field is not nominal and the field encoding has no specified `aggregate` (except `argmin` and `argmax`), `bin`, scale type, custom `sort` order, nor `timeUnit` or (2) if you wish to use an ordinal scale for a field with `bin` or `timeUnit`.\\\\n\\\\n__Default value:__\\\\n\\\\n1) For a data `field`, `\\\\\\\"nominal\\\\\\\"` is the default data type unless the field encoding has `aggregate`, `channel`, `bin`, scale type, `sort`, or `timeUnit` that satisfies the following criteria: - `\\\\\\\"quantitative\\\\\\\"` is the default type if (1) the encoded field contains `bin` or `aggregate` except `\\\\\\\"argmin\\\\\\\"` and `\\\\\\\"argmax\\\\\\\"`, (2) the encoding channel is `latitude` or `longitude` channel or (3) if the specified scale type is [a quantitative scale](https://vega.github.io/vega-lite/docs/scale.html#type). - `\\\\\\\"temporal\\\\\\\"` is the default type if (1) the encoded field contains `timeUnit` or (2) the specified scale type is a time or utc scale - `ordinal\\\\\\\"\\\\\\\"` is the default type if (1) the encoded field contains a [custom `sort` order](https://vega.github.io/vega-lite/docs/sort.html#specifying-custom-sort-order), (2) the specified scale type is an ordinal/point/band scale, or (3) the encoding channel is `order`.\\\\n\\\\n2) For a constant value in data domain (`datum`): - `\\\\\\\"quantitative\\\\\\\"` if the datum is a number - `\\\\\\\"nominal\\\\\\\"` if the datum is a string - `\\\\\\\"temporal\\\\\\\"` if the datum is [a date time object](https://vega.github.io/vega-lite/docs/datetime.html)\\\\n\\\\n__Note:__ - Data `type` describes the semantics of the data rather than the primitive data types (number, string, etc.). The same primitive data type can have different types of measurement. For example, numeric data can represent quantitative, ordinal, or nominal data. - Data values for a temporal field can be either a date-time string (e.g., `\\\\\\\"2015-03-07 12:32:17\\\\\\\"`, `\\\\\\\"17:01\\\\\\\"`, `\\\\\\\"2015-03-16\\\\\\\"`. `\\\\\\\"2015\\\\\\\"`) or a timestamp number (e.g., `1552199579097`). - When using with [`bin`](https://vega.github.io/vega-lite/docs/bin.html), the `type` property can be either `\\\\\\\"quantitative\\\\\\\"` (for using a linear bin scale) or [`\\\\\\\"ordinal\\\\\\\"` (for using an ordinal bin scale)](https://vega.github.io/vega-lite/docs/type.html#cast-bin). - When using with [`timeUnit`](https://vega.github.io/vega-lite/docs/timeunit.html), the `type` property can be either `\\\\\\\"temporal\\\\\\\"` (default, for using a temporal scale) or [`\\\\\\\"ordinal\\\\\\\"` (for using an ordinal scale)](https://vega.github.io/vega-lite/docs/type.html#cast-bin). - When using with [`aggregate`](https://vega.github.io/vega-lite/docs/aggregate.html), the `type` property refers to the post-aggregation data type. For example, we can calculate count `distinct` of a categorical field `\\\\\\\"cat\\\\\\\"` using `{\\\\\\\"aggregate\\\\\\\": \\\\\\\"distinct\\\\\\\", \\\\\\\"field\\\\\\\": \\\\\\\"cat\\\\\\\"}`. The `\\\\\\\"type\\\\\\\"` of the aggregate output is `\\\\\\\"quantitative\\\\\\\"`. - Secondary channels (e.g., `x2`, `y2`, `xError`, `yError`) do not have `type` as they must have exactly the same type as their primary channels (e.g., `x`, `y`).\\\\n\\\\n__See also:__ [`type`](https://vega.github.io/vega-lite/docs/type.html) documentation.\\\"}],\\\"description\\\":\\\"The type of measurement (`\\\\\\\"quantitative\\\\\\\"`, `\\\\\\\"temporal\\\\\\\"`, `\\\\\\\"ordinal\\\\\\\"`, or `\\\\\\\"nominal\\\\\\\"`) for the encoded field or constant value (`datum`). It can also be a `\\\\\\\"geojson\\\\\\\"` type for encoding ['geoshape'](https://vega.github.io/vega-lite/docs/geoshape.html).\\\\n\\\\nVega-Lite automatically infers data types in many cases as discussed below. However, type is required for a field if: (1) the field is not nominal and the field encoding has no specified `aggregate` (except `argmin` and `argmax`), `bin`, scale type, custom `sort` order, nor `timeUnit` or (2) if you wish to use an ordinal scale for a field with `bin` or `timeUnit`.\\\\n\\\\n__Default value:__\\\\n\\\\n1) For a data `field`, `\\\\\\\"nominal\\\\\\\"` is the default data type unless the field encoding has `aggregate`, `channel`, `bin`, scale type, `sort`, or `timeUnit` that satisfies the following criteria: - `\\\\\\\"quantitative\\\\\\\"` is the default type if (1) the encoded field contains `bin` or `aggregate` except `\\\\\\\"argmin\\\\\\\"` and `\\\\\\\"argmax\\\\\\\"`, (2) the encoding channel is `latitude` or `longitude` channel or (3) if the specified scale type is [a quantitative scale](https://vega.github.io/vega-lite/docs/scale.html#type). - `\\\\\\\"temporal\\\\\\\"` is the default type if (1) the encoded field contains `timeUnit` or (2) the specified scale type is a time or utc scale - `ordinal\\\\\\\"\\\\\\\"` is the default type if (1) the encoded field contains a [custom `sort` order](https://vega.github.io/vega-lite/docs/sort.html#specifying-custom-sort-order), (2) the specified scale type is an ordinal/point/band scale, or (3) the encoding channel is `order`.\\\\n\\\\n2) For a constant value in data domain (`datum`): - `\\\\\\\"quantitative\\\\\\\"` if the datum is a number - `\\\\\\\"nominal\\\\\\\"` if the datum is a string - `\\\\\\\"temporal\\\\\\\"` if the datum is [a date time object](https://vega.github.io/vega-lite/docs/datetime.html)\\\\n\\\\n__Note:__ - Data `type` describes the semantics of the data rather than the primitive data types (number, string, etc.). The same primitive data type can have different types of measurement. For example, numeric data can represent quantitative, ordinal, or nominal data. - Data values for a temporal field can be either a date-time string (e.g., `\\\\\\\"2015-03-07 12:32:17\\\\\\\"`, `\\\\\\\"17:01\\\\\\\"`, `\\\\\\\"2015-03-16\\\\\\\"`. `\\\\\\\"2015\\\\\\\"`) or a timestamp number (e.g., `1552199579097`). - When using with [`bin`](https://vega.github.io/vega-lite/docs/bin.html), the `type` property can be either `\\\\\\\"quantitative\\\\\\\"` (for using a linear bin scale) or [`\\\\\\\"ordinal\\\\\\\"` (for using an ordinal bin scale)](https://vega.github.io/vega-lite/docs/type.html#cast-bin). - When using with [`timeUnit`](https://vega.github.io/vega-lite/docs/timeunit.html), the `type` property can be either `\\\\\\\"temporal\\\\\\\"` (default, for using a temporal scale) or [`\\\\\\\"ordinal\\\\\\\"` (for using an ordinal scale)](https://vega.github.io/vega-lite/docs/type.html#cast-bin). - When using with [`aggregate`](https://vega.github.io/vega-lite/docs/aggregate.html), the `type` property refers to the post-aggregation data type. For example, we can calculate count `distinct` of a categorical field `\\\\\\\"cat\\\\\\\"` using `{\\\\\\\"aggregate\\\\\\\": \\\\\\\"distinct\\\\\\\", \\\\\\\"field\\\\\\\": \\\\\\\"cat\\\\\\\"}`. The `\\\\\\\"type\\\\\\\"` of the aggregate output is `\\\\\\\"quantitative\\\\\\\"`. - Secondary channels (e.g., `x2`, `y2`, `xError`, `yError`) do not have `type` as they must have exactly the same type as their primary channels (e.g., `x`, `y`).\\\\n\\\\n__See also:__ [`type`](https://vega.github.io/vega-lite/docs/type.html) documentation.\\\"},\\\"value\\\":{\\\"anyOf\\\":[{\\\"type\\\":\\\"number\\\"},{\\\"$ref\\\":\\\"#/definitions/ExprRef\\\"}],\\\"description\\\":\\\"A constant value in visual domain (e.g., `\\\\\\\"red\\\\\\\"` / `\\\\\\\"#0099ff\\\\\\\"` / [gradient definition](https://vega.github.io/vega-lite/docs/types.html#gradient) for color, values between `0` to `1` for opacity).\\\"}},\\\"type\\\":\\\"object\\\"},\\\"strokeWidth\\\":{\\\"additionalProperties\\\":false,\\\"properties\\\":{\\\"aggregate\\\":{\\\"$ref\\\":\\\"#/definitions/Aggregate\\\",\\\"description\\\":\\\"Aggregation function for the field (e.g., `\\\\\\\"mean\\\\\\\"`, `\\\\\\\"sum\\\\\\\"`, `\\\\\\\"median\\\\\\\"`, `\\\\\\\"min\\\\\\\"`, `\\\\\\\"max\\\\\\\"`, `\\\\\\\"count\\\\\\\"`).\\\\n\\\\n__Default value:__ `undefined` (None)\\\\n\\\\n__See also:__ [`aggregate`](https://vega.github.io/vega-lite/docs/aggregate.html) documentation.\\\"},\\\"band\\\":{\\\"description\\\":\\\"For rect-based marks (`rect`, `bar`, and `image`), mark size relative to bandwidth of [band scales](https://vega.github.io/vega-lite/docs/scale.html#band), bins or time units. If set to `1`, the mark size is set to the bandwidth, the bin interval, or the time unit interval. If set to `0.5`, the mark size is half of the bandwidth or the time unit interval.\\\\n\\\\nFor other marks, relative position on a band of a stacked, binned, time unit or band scale. If set to `0`, the marks will be positioned at the beginning of the band. If set to `0.5`, the marks will be positioned in the middle of the band.\\\",\\\"maximum\\\":1,\\\"minimum\\\":0,\\\"type\\\":\\\"number\\\"},\\\"bin\\\":{\\\"anyOf\\\":[{\\\"type\\\":\\\"boolean\\\"},{\\\"$ref\\\":\\\"#/definitions/BinParams\\\"},{\\\"type\\\":\\\"null\\\"}],\\\"description\\\":\\\"A flag for binning a `quantitative` field, [an object defining binning parameters](https://vega.github.io/vega-lite/docs/bin.html#params), or indicating that the data for `x` or `y` channel are binned before they are imported into Vega-Lite (`\\\\\\\"binned\\\\\\\"`).\\\\n\\\\n- If `true`, default [binning parameters](https://vega.github.io/vega-lite/docs/bin.html) will be applied.\\\\n\\\\n- If `\\\\\\\"binned\\\\\\\"`, this indicates that the data for the `x` (or `y`) channel are already binned. You can map the bin-start field to `x` (or `y`) and the bin-end field to `x2` (or `y2`). The scale and axis will be formatted similar to binning in Vega-Lite.  To adjust the axis ticks based on the bin step, you can also set the axis's [`tickMinStep`](https://vega.github.io/vega-lite/docs/axis.html#ticks) property.\\\\n\\\\n__Default value:__ `false`\\\\n\\\\n__See also:__ [`bin`](https://vega.github.io/vega-lite/docs/bin.html) documentation.\\\"},\\\"condition\\\":{\\\"anyOf\\\":[{\\\"anyOf\\\":[{\\\"$ref\\\":\\\"#/definitions/ConditionalValueDef<(number|ExprRef)>\\\"},{\\\"items\\\":{\\\"$ref\\\":\\\"#/definitions/ConditionalValueDef<(number|ExprRef)>\\\"},\\\"type\\\":\\\"array\\\"}],\\\"description\\\":\\\"One or more value definition(s) with [a selection or a test predicate](https://vega.github.io/vega-lite/docs/condition.html).\\\\n\\\\n__Note:__ A field definition's `condition` property can only contain [conditional value definitions](https://vega.github.io/vega-lite/docs/condition.html#value) since Vega-Lite only allows at most one encoded field per encoding channel.\\\"},{\\\"anyOf\\\":[{\\\"$ref\\\":\\\"#/definitions/ConditionalMarkPropFieldOrDatumDef\\\"},{\\\"$ref\\\":\\\"#/definitions/ConditionalValueDef<(number|ExprRef)>\\\"},{\\\"items\\\":{\\\"$ref\\\":\\\"#/definitions/ConditionalValueDef<(number|ExprRef)>\\\"},\\\"type\\\":\\\"array\\\"}],\\\"description\\\":\\\"A field definition or one or more value definition(s) with a selection predicate.\\\"}],\\\"description\\\":\\\"One or more value definition(s) with [a selection or a test predicate](https://vega.github.io/vega-lite/docs/condition.html).\\\\n\\\\n__Note:__ A field definition's `condition` property can only contain [conditional value definitions](https://vega.github.io/vega-lite/docs/condition.html#value) since Vega-Lite only allows at most one encoded field per encoding channel.\\\"},\\\"datum\\\":{\\\"anyOf\\\":[{\\\"$ref\\\":\\\"#/definitions/PrimitiveValue\\\"},{\\\"$ref\\\":\\\"#/definitions/DateTime\\\"},{\\\"$ref\\\":\\\"#/definitions/ExprRef\\\"},{\\\"$ref\\\":\\\"#/definitions/RepeatRef\\\"}],\\\"description\\\":\\\"A constant value in data domain.\\\"},\\\"field\\\":{\\\"$ref\\\":\\\"#/definitions/Field\\\",\\\"description\\\":\\\"__Required.__ A string defining the name of the field from which to pull a data value or an object defining iterated values from the [`repeat`](https://vega.github.io/vega-lite/docs/repeat.html) operator.\\\\n\\\\n__See also:__ [`field`](https://vega.github.io/vega-lite/docs/field.html) documentation.\\\\n\\\\n__Notes:__ 1)  Dots (`.`) and brackets (`[` and `]`) can be used to access nested objects (e.g., `\\\\\\\"field\\\\\\\": \\\\\\\"foo.bar\\\\\\\"` and `\\\\\\\"field\\\\\\\": \\\\\\\"foo['bar']\\\\\\\"`). If field names contain dots or brackets but are not nested, you can use `\\\\\\\\\\\\\\\\` to escape dots and brackets (e.g., `\\\\\\\"a\\\\\\\\\\\\\\\\.b\\\\\\\"` and `\\\\\\\"a\\\\\\\\\\\\\\\\[0\\\\\\\\\\\\\\\\]\\\\\\\"`). See more details about escaping in the [field documentation](https://vega.github.io/vega-lite/docs/field.html). 2) `field` is not required if `aggregate` is `count`.\\\"},\\\"legend\\\":{\\\"anyOf\\\":[{\\\"$ref\\\":\\\"#/definitions/Legend\\\"},{\\\"type\\\":\\\"null\\\"}],\\\"description\\\":\\\"An object defining properties of the legend. If `null`, the legend for the encoding channel will be removed.\\\\n\\\\n__Default value:__ If undefined, default [legend properties](https://vega.github.io/vega-lite/docs/legend.html) are applied.\\\\n\\\\n__See also:__ [`legend`](https://vega.github.io/vega-lite/docs/legend.html) documentation.\\\"},\\\"scale\\\":{\\\"anyOf\\\":[{\\\"$ref\\\":\\\"#/definitions/Scale\\\"},{\\\"type\\\":\\\"null\\\"}],\\\"description\\\":\\\"An object defining properties of the channel's scale, which is the function that transforms values in the data domain (numbers, dates, strings, etc) to visual values (pixels, colors, sizes) of the encoding channels.\\\\n\\\\nIf `null`, the scale will be [disabled and the data value will be directly encoded](https://vega.github.io/vega-lite/docs/scale.html#disable).\\\\n\\\\n__Default value:__ If undefined, default [scale properties](https://vega.github.io/vega-lite/docs/scale.html) are applied.\\\\n\\\\n__See also:__ [`scale`](https://vega.github.io/vega-lite/docs/scale.html) documentation.\\\"},\\\"sort\\\":{\\\"$ref\\\":\\\"#/definitions/Sort\\\",\\\"description\\\":\\\"Sort order for the encoded field.\\\\n\\\\nFor continuous fields (quantitative or temporal), `sort` can be either `\\\\\\\"ascending\\\\\\\"` or `\\\\\\\"descending\\\\\\\"`.\\\\n\\\\nFor discrete fields, `sort` can be one of the following: - `\\\\\\\"ascending\\\\\\\"` or `\\\\\\\"descending\\\\\\\"` -- for sorting by the values' natural order in JavaScript. - [A string indicating an encoding channel name to sort by](https://vega.github.io/vega-lite/docs/sort.html#sort-by-encoding) (e.g., `\\\\\\\"x\\\\\\\"` or `\\\\\\\"y\\\\\\\"`) with an optional minus prefix for descending sort (e.g., `\\\\\\\"-x\\\\\\\"` to sort by x-field, descending). This channel string is short-form of [a sort-by-encoding definition](https://vega.github.io/vega-lite/docs/sort.html#sort-by-encoding). For example, `\\\\\\\"sort\\\\\\\": \\\\\\\"-x\\\\\\\"` is equivalent to `\\\\\\\"sort\\\\\\\": {\\\\\\\"encoding\\\\\\\": \\\\\\\"x\\\\\\\", \\\\\\\"order\\\\\\\": \\\\\\\"descending\\\\\\\"}`. - [A sort field definition](https://vega.github.io/vega-lite/docs/sort.html#sort-field) for sorting by another field. - [An array specifying the field values in preferred order](https://vega.github.io/vega-lite/docs/sort.html#sort-array). In this case, the sort order will obey the values in the array, followed by any unspecified values in their original order. For discrete time field, values in the sort array can be [date-time definition objects](types#datetime). In addition, for time units `\\\\\\\"month\\\\\\\"` and `\\\\\\\"day\\\\\\\"`, the values can be the month or day names (case insensitive) or their 3-letter initials (e.g., `\\\\\\\"Mon\\\\\\\"`, `\\\\\\\"Tue\\\\\\\"`). - `null` indicating no sort.\\\\n\\\\n__Default value:__ `\\\\\\\"ascending\\\\\\\"`\\\\n\\\\n__Note:__ `null` and sorting by another channel is not supported for `row` and `column`.\\\\n\\\\n__See also:__ [`sort`](https://vega.github.io/vega-lite/docs/sort.html) documentation.\\\"},\\\"timeUnit\\\":{\\\"anyOf\\\":[{\\\"$ref\\\":\\\"#/definitions/TimeUnit\\\"},{\\\"$ref\\\":\\\"#/definitions/TimeUnitParams\\\"}],\\\"description\\\":\\\"Time unit (e.g., `year`, `yearmonth`, `month`, `hours`) for a temporal field. or [a temporal field that gets casted as ordinal](https://vega.github.io/vega-lite/docs/type.html#cast).\\\\n\\\\n__Default value:__ `undefined` (None)\\\\n\\\\n__See also:__ [`timeUnit`](https://vega.github.io/vega-lite/docs/timeunit.html) documentation.\\\"},\\\"title\\\":{\\\"anyOf\\\":[{\\\"$ref\\\":\\\"#/definitions/Text\\\"},{\\\"type\\\":\\\"null\\\"}],\\\"description\\\":\\\"A title for the field. If `null`, the title will be removed.\\\\n\\\\n__Default value:__  derived from the field's name and transformation function (`aggregate`, `bin` and `timeUnit`). If the field has an aggregate function, the function is displayed as part of the title (e.g., `\\\\\\\"Sum of Profit\\\\\\\"`). If the field is binned or has a time unit applied, the applied function is shown in parentheses (e.g., `\\\\\\\"Profit (binned)\\\\\\\"`, `\\\\\\\"Transaction Date (year-month)\\\\\\\"`). Otherwise, the title is simply the field name.\\\\n\\\\n__Notes__:\\\\n\\\\n1) You can customize the default field title format by providing the [`fieldTitle`](https://vega.github.io/vega-lite/docs/config.html#top-level-config) property in the [config](https://vega.github.io/vega-lite/docs/config.html) or [`fieldTitle` function via the `compile` function's options](https://vega.github.io/vega-lite/docs/compile.html#field-title).\\\\n\\\\n2) If both field definition's `title` and axis, header, or legend `title` are defined, axis/header/legend title will be used.\\\"},\\\"type\\\":{\\\"anyOf\\\":[{\\\"$ref\\\":\\\"#/definitions/StandardType\\\",\\\"description\\\":\\\"The type of measurement (`\\\\\\\"quantitative\\\\\\\"`, `\\\\\\\"temporal\\\\\\\"`, `\\\\\\\"ordinal\\\\\\\"`, or `\\\\\\\"nominal\\\\\\\"`) for the encoded field or constant value (`datum`). It can also be a `\\\\\\\"geojson\\\\\\\"` type for encoding ['geoshape'](https://vega.github.io/vega-lite/docs/geoshape.html).\\\\n\\\\nVega-Lite automatically infers data types in many cases as discussed below. However, type is required for a field if: (1) the field is not nominal and the field encoding has no specified `aggregate` (except `argmin` and `argmax`), `bin`, scale type, custom `sort` order, nor `timeUnit` or (2) if you wish to use an ordinal scale for a field with `bin` or `timeUnit`.\\\\n\\\\n__Default value:__\\\\n\\\\n1) For a data `field`, `\\\\\\\"nominal\\\\\\\"` is the default data type unless the field encoding has `aggregate`, `channel`, `bin`, scale type, `sort`, or `timeUnit` that satisfies the following criteria: - `\\\\\\\"quantitative\\\\\\\"` is the default type if (1) the encoded field contains `bin` or `aggregate` except `\\\\\\\"argmin\\\\\\\"` and `\\\\\\\"argmax\\\\\\\"`, (2) the encoding channel is `latitude` or `longitude` channel or (3) if the specified scale type is [a quantitative scale](https://vega.github.io/vega-lite/docs/scale.html#type). - `\\\\\\\"temporal\\\\\\\"` is the default type if (1) the encoded field contains `timeUnit` or (2) the specified scale type is a time or utc scale - `ordinal\\\\\\\"\\\\\\\"` is the default type if (1) the encoded field contains a [custom `sort` order](https://vega.github.io/vega-lite/docs/sort.html#specifying-custom-sort-order), (2) the specified scale type is an ordinal/point/band scale, or (3) the encoding channel is `order`.\\\\n\\\\n2) For a constant value in data domain (`datum`): - `\\\\\\\"quantitative\\\\\\\"` if the datum is a number - `\\\\\\\"nominal\\\\\\\"` if the datum is a string - `\\\\\\\"temporal\\\\\\\"` if the datum is [a date time object](https://vega.github.io/vega-lite/docs/datetime.html)\\\\n\\\\n__Note:__ - Data `type` describes the semantics of the data rather than the primitive data types (number, string, etc.). The same primitive data type can have different types of measurement. For example, numeric data can represent quantitative, ordinal, or nominal data. - Data values for a temporal field can be either a date-time string (e.g., `\\\\\\\"2015-03-07 12:32:17\\\\\\\"`, `\\\\\\\"17:01\\\\\\\"`, `\\\\\\\"2015-03-16\\\\\\\"`. `\\\\\\\"2015\\\\\\\"`) or a timestamp number (e.g., `1552199579097`). - When using with [`bin`](https://vega.github.io/vega-lite/docs/bin.html), the `type` property can be either `\\\\\\\"quantitative\\\\\\\"` (for using a linear bin scale) or [`\\\\\\\"ordinal\\\\\\\"` (for using an ordinal bin scale)](https://vega.github.io/vega-lite/docs/type.html#cast-bin). - When using with [`timeUnit`](https://vega.github.io/vega-lite/docs/timeunit.html), the `type` property can be either `\\\\\\\"temporal\\\\\\\"` (default, for using a temporal scale) or [`\\\\\\\"ordinal\\\\\\\"` (for using an ordinal scale)](https://vega.github.io/vega-lite/docs/type.html#cast-bin). - When using with [`aggregate`](https://vega.github.io/vega-lite/docs/aggregate.html), the `type` property refers to the post-aggregation data type. For example, we can calculate count `distinct` of a categorical field `\\\\\\\"cat\\\\\\\"` using `{\\\\\\\"aggregate\\\\\\\": \\\\\\\"distinct\\\\\\\", \\\\\\\"field\\\\\\\": \\\\\\\"cat\\\\\\\"}`. The `\\\\\\\"type\\\\\\\"` of the aggregate output is `\\\\\\\"quantitative\\\\\\\"`. - Secondary channels (e.g., `x2`, `y2`, `xError`, `yError`) do not have `type` as they must have exactly the same type as their primary channels (e.g., `x`, `y`).\\\\n\\\\n__See also:__ [`type`](https://vega.github.io/vega-lite/docs/type.html) documentation.\\\"},{\\\"$ref\\\":\\\"#/definitions/Type\\\",\\\"description\\\":\\\"The type of measurement (`\\\\\\\"quantitative\\\\\\\"`, `\\\\\\\"temporal\\\\\\\"`, `\\\\\\\"ordinal\\\\\\\"`, or `\\\\\\\"nominal\\\\\\\"`) for the encoded field or constant value (`datum`). It can also be a `\\\\\\\"geojson\\\\\\\"` type for encoding ['geoshape'](https://vega.github.io/vega-lite/docs/geoshape.html).\\\\n\\\\nVega-Lite automatically infers data types in many cases as discussed below. However, type is required for a field if: (1) the field is not nominal and the field encoding has no specified `aggregate` (except `argmin` and `argmax`), `bin`, scale type, custom `sort` order, nor `timeUnit` or (2) if you wish to use an ordinal scale for a field with `bin` or `timeUnit`.\\\\n\\\\n__Default value:__\\\\n\\\\n1) For a data `field`, `\\\\\\\"nominal\\\\\\\"` is the default data type unless the field encoding has `aggregate`, `channel`, `bin`, scale type, `sort`, or `timeUnit` that satisfies the following criteria: - `\\\\\\\"quantitative\\\\\\\"` is the default type if (1) the encoded field contains `bin` or `aggregate` except `\\\\\\\"argmin\\\\\\\"` and `\\\\\\\"argmax\\\\\\\"`, (2) the encoding channel is `latitude` or `longitude` channel or (3) if the specified scale type is [a quantitative scale](https://vega.github.io/vega-lite/docs/scale.html#type). - `\\\\\\\"temporal\\\\\\\"` is the default type if (1) the encoded field contains `timeUnit` or (2) the specified scale type is a time or utc scale - `ordinal\\\\\\\"\\\\\\\"` is the default type if (1) the encoded field contains a [custom `sort` order](https://vega.github.io/vega-lite/docs/sort.html#specifying-custom-sort-order), (2) the specified scale type is an ordinal/point/band scale, or (3) the encoding channel is `order`.\\\\n\\\\n2) For a constant value in data domain (`datum`): - `\\\\\\\"quantitative\\\\\\\"` if the datum is a number - `\\\\\\\"nominal\\\\\\\"` if the datum is a string - `\\\\\\\"temporal\\\\\\\"` if the datum is [a date time object](https://vega.github.io/vega-lite/docs/datetime.html)\\\\n\\\\n__Note:__ - Data `type` describes the semantics of the data rather than the primitive data types (number, string, etc.). The same primitive data type can have different types of measurement. For example, numeric data can represent quantitative, ordinal, or nominal data. - Data values for a temporal field can be either a date-time string (e.g., `\\\\\\\"2015-03-07 12:32:17\\\\\\\"`, `\\\\\\\"17:01\\\\\\\"`, `\\\\\\\"2015-03-16\\\\\\\"`. `\\\\\\\"2015\\\\\\\"`) or a timestamp number (e.g., `1552199579097`). - When using with [`bin`](https://vega.github.io/vega-lite/docs/bin.html), the `type` property can be either `\\\\\\\"quantitative\\\\\\\"` (for using a linear bin scale) or [`\\\\\\\"ordinal\\\\\\\"` (for using an ordinal bin scale)](https://vega.github.io/vega-lite/docs/type.html#cast-bin). - When using with [`timeUnit`](https://vega.github.io/vega-lite/docs/timeunit.html), the `type` property can be either `\\\\\\\"temporal\\\\\\\"` (default, for using a temporal scale) or [`\\\\\\\"ordinal\\\\\\\"` (for using an ordinal scale)](https://vega.github.io/vega-lite/docs/type.html#cast-bin). - When using with [`aggregate`](https://vega.github.io/vega-lite/docs/aggregate.html), the `type` property refers to the post-aggregation data type. For example, we can calculate count `distinct` of a categorical field `\\\\\\\"cat\\\\\\\"` using `{\\\\\\\"aggregate\\\\\\\": \\\\\\\"distinct\\\\\\\", \\\\\\\"field\\\\\\\": \\\\\\\"cat\\\\\\\"}`. The `\\\\\\\"type\\\\\\\"` of the aggregate output is `\\\\\\\"quantitative\\\\\\\"`. - Secondary channels (e.g., `x2`, `y2`, `xError`, `yError`) do not have `type` as they must have exactly the same type as their primary channels (e.g., `x`, `y`).\\\\n\\\\n__See also:__ [`type`](https://vega.github.io/vega-lite/docs/type.html) documentation.\\\"}],\\\"description\\\":\\\"The type of measurement (`\\\\\\\"quantitative\\\\\\\"`, `\\\\\\\"temporal\\\\\\\"`, `\\\\\\\"ordinal\\\\\\\"`, or `\\\\\\\"nominal\\\\\\\"`) for the encoded field or constant value (`datum`). It can also be a `\\\\\\\"geojson\\\\\\\"` type for encoding ['geoshape'](https://vega.github.io/vega-lite/docs/geoshape.html).\\\\n\\\\nVega-Lite automatically infers data types in many cases as discussed below. However, type is required for a field if: (1) the field is not nominal and the field encoding has no specified `aggregate` (except `argmin` and `argmax`), `bin`, scale type, custom `sort` order, nor `timeUnit` or (2) if you wish to use an ordinal scale for a field with `bin` or `timeUnit`.\\\\n\\\\n__Default value:__\\\\n\\\\n1) For a data `field`, `\\\\\\\"nominal\\\\\\\"` is the default data type unless the field encoding has `aggregate`, `channel`, `bin`, scale type, `sort`, or `timeUnit` that satisfies the following criteria: - `\\\\\\\"quantitative\\\\\\\"` is the default type if (1) the encoded field contains `bin` or `aggregate` except `\\\\\\\"argmin\\\\\\\"` and `\\\\\\\"argmax\\\\\\\"`, (2) the encoding channel is `latitude` or `longitude` channel or (3) if the specified scale type is [a quantitative scale](https://vega.github.io/vega-lite/docs/scale.html#type). - `\\\\\\\"temporal\\\\\\\"` is the default type if (1) the encoded field contains `timeUnit` or (2) the specified scale type is a time or utc scale - `ordinal\\\\\\\"\\\\\\\"` is the default type if (1) the encoded field contains a [custom `sort` order](https://vega.github.io/vega-lite/docs/sort.html#specifying-custom-sort-order), (2) the specified scale type is an ordinal/point/band scale, or (3) the encoding channel is `order`.\\\\n\\\\n2) For a constant value in data domain (`datum`): - `\\\\\\\"quantitative\\\\\\\"` if the datum is a number - `\\\\\\\"nominal\\\\\\\"` if the datum is a string - `\\\\\\\"temporal\\\\\\\"` if the datum is [a date time object](https://vega.github.io/vega-lite/docs/datetime.html)\\\\n\\\\n__Note:__ - Data `type` describes the semantics of the data rather than the primitive data types (number, string, etc.). The same primitive data type can have different types of measurement. For example, numeric data can represent quantitative, ordinal, or nominal data. - Data values for a temporal field can be either a date-time string (e.g., `\\\\\\\"2015-03-07 12:32:17\\\\\\\"`, `\\\\\\\"17:01\\\\\\\"`, `\\\\\\\"2015-03-16\\\\\\\"`. `\\\\\\\"2015\\\\\\\"`) or a timestamp number (e.g., `1552199579097`). - When using with [`bin`](https://vega.github.io/vega-lite/docs/bin.html), the `type` property can be either `\\\\\\\"quantitative\\\\\\\"` (for using a linear bin scale) or [`\\\\\\\"ordinal\\\\\\\"` (for using an ordinal bin scale)](https://vega.github.io/vega-lite/docs/type.html#cast-bin). - When using with [`timeUnit`](https://vega.github.io/vega-lite/docs/timeunit.html), the `type` property can be either `\\\\\\\"temporal\\\\\\\"` (default, for using a temporal scale) or [`\\\\\\\"ordinal\\\\\\\"` (for using an ordinal scale)](https://vega.github.io/vega-lite/docs/type.html#cast-bin). - When using with [`aggregate`](https://vega.github.io/vega-lite/docs/aggregate.html), the `type` property refers to the post-aggregation data type. For example, we can calculate count `distinct` of a categorical field `\\\\\\\"cat\\\\\\\"` using `{\\\\\\\"aggregate\\\\\\\": \\\\\\\"distinct\\\\\\\", \\\\\\\"field\\\\\\\": \\\\\\\"cat\\\\\\\"}`. The `\\\\\\\"type\\\\\\\"` of the aggregate output is `\\\\\\\"quantitative\\\\\\\"`. - Secondary channels (e.g., `x2`, `y2`, `xError`, `yError`) do not have `type` as they must have exactly the same type as their primary channels (e.g., `x`, `y`).\\\\n\\\\n__See also:__ [`type`](https://vega.github.io/vega-lite/docs/type.html) documentation.\\\"},\\\"value\\\":{\\\"anyOf\\\":[{\\\"type\\\":\\\"number\\\"},{\\\"$ref\\\":\\\"#/definitions/ExprRef\\\"}],\\\"description\\\":\\\"A constant value in visual domain (e.g., `\\\\\\\"red\\\\\\\"` / `\\\\\\\"#0099ff\\\\\\\"` / [gradient definition](https://vega.github.io/vega-lite/docs/types.html#gradient) for color, values between `0` to `1` for opacity).\\\"}},\\\"type\\\":\\\"object\\\"},\\\"text\\\":{\\\"additionalProperties\\\":false,\\\"properties\\\":{\\\"aggregate\\\":{\\\"$ref\\\":\\\"#/definitions/Aggregate\\\",\\\"description\\\":\\\"Aggregation function for the field (e.g., `\\\\\\\"mean\\\\\\\"`, `\\\\\\\"sum\\\\\\\"`, `\\\\\\\"median\\\\\\\"`, `\\\\\\\"min\\\\\\\"`, `\\\\\\\"max\\\\\\\"`, `\\\\\\\"count\\\\\\\"`).\\\\n\\\\n__Default value:__ `undefined` (None)\\\\n\\\\n__See also:__ [`aggregate`](https://vega.github.io/vega-lite/docs/aggregate.html) documentation.\\\"},\\\"band\\\":{\\\"description\\\":\\\"For rect-based marks (`rect`, `bar`, and `image`), mark size relative to bandwidth of [band scales](https://vega.github.io/vega-lite/docs/scale.html#band), bins or time units. If set to `1`, the mark size is set to the bandwidth, the bin interval, or the time unit interval. If set to `0.5`, the mark size is half of the bandwidth or the time unit interval.\\\\n\\\\nFor other marks, relative position on a band of a stacked, binned, time unit or band scale. If set to `0`, the marks will be positioned at the beginning of the band. If set to `0.5`, the marks will be positioned in the middle of the band.\\\",\\\"maximum\\\":1,\\\"minimum\\\":0,\\\"type\\\":\\\"number\\\"},\\\"bin\\\":{\\\"anyOf\\\":[{\\\"type\\\":\\\"boolean\\\"},{\\\"$ref\\\":\\\"#/definitions/BinParams\\\"},{\\\"const\\\":\\\"binned\\\",\\\"type\\\":\\\"string\\\"},{\\\"type\\\":\\\"null\\\"}],\\\"description\\\":\\\"A flag for binning a `quantitative` field, [an object defining binning parameters](https://vega.github.io/vega-lite/docs/bin.html#params), or indicating that the data for `x` or `y` channel are binned before they are imported into Vega-Lite (`\\\\\\\"binned\\\\\\\"`).\\\\n\\\\n- If `true`, default [binning parameters](https://vega.github.io/vega-lite/docs/bin.html) will be applied.\\\\n\\\\n- If `\\\\\\\"binned\\\\\\\"`, this indicates that the data for the `x` (or `y`) channel are already binned. You can map the bin-start field to `x` (or `y`) and the bin-end field to `x2` (or `y2`). The scale and axis will be formatted similar to binning in Vega-Lite.  To adjust the axis ticks based on the bin step, you can also set the axis's [`tickMinStep`](https://vega.github.io/vega-lite/docs/axis.html#ticks) property.\\\\n\\\\n__Default value:__ `false`\\\\n\\\\n__See also:__ [`bin`](https://vega.github.io/vega-lite/docs/bin.html) documentation.\\\"},\\\"condition\\\":{\\\"anyOf\\\":[{\\\"anyOf\\\":[{\\\"$ref\\\":\\\"#/definitions/ConditionalValueDef<(Text|ExprRef)>\\\"},{\\\"items\\\":{\\\"$ref\\\":\\\"#/definitions/ConditionalValueDef<(Text|ExprRef)>\\\"},\\\"type\\\":\\\"array\\\"}],\\\"description\\\":\\\"One or more value definition(s) with [a selection or a test predicate](https://vega.github.io/vega-lite/docs/condition.html).\\\\n\\\\n__Note:__ A field definition's `condition` property can only contain [conditional value definitions](https://vega.github.io/vega-lite/docs/condition.html#value) since Vega-Lite only allows at most one encoded field per encoding channel.\\\"},{\\\"anyOf\\\":[{\\\"$ref\\\":\\\"#/definitions/ConditionalStringFieldDef\\\"},{\\\"$ref\\\":\\\"#/definitions/ConditionalValueDef<(Text|ExprRef)>\\\"},{\\\"items\\\":{\\\"$ref\\\":\\\"#/definitions/ConditionalValueDef<(Text|ExprRef)>\\\"},\\\"type\\\":\\\"array\\\"}],\\\"description\\\":\\\"A field definition or one or more value definition(s) with a selection predicate.\\\"}],\\\"description\\\":\\\"One or more value definition(s) with [a selection or a test predicate](https://vega.github.io/vega-lite/docs/condition.html).\\\\n\\\\n__Note:__ A field definition's `condition` property can only contain [conditional value definitions](https://vega.github.io/vega-lite/docs/condition.html#value) since Vega-Lite only allows at most one encoded field per encoding channel.\\\"},\\\"datum\\\":{\\\"anyOf\\\":[{\\\"$ref\\\":\\\"#/definitions/PrimitiveValue\\\"},{\\\"$ref\\\":\\\"#/definitions/DateTime\\\"},{\\\"$ref\\\":\\\"#/definitions/ExprRef\\\"},{\\\"$ref\\\":\\\"#/definitions/RepeatRef\\\"}],\\\"description\\\":\\\"A constant value in data domain.\\\"},\\\"field\\\":{\\\"$ref\\\":\\\"#/definitions/Field\\\",\\\"description\\\":\\\"__Required.__ A string defining the name of the field from which to pull a data value or an object defining iterated values from the [`repeat`](https://vega.github.io/vega-lite/docs/repeat.html) operator.\\\\n\\\\n__See also:__ [`field`](https://vega.github.io/vega-lite/docs/field.html) documentation.\\\\n\\\\n__Notes:__ 1)  Dots (`.`) and brackets (`[` and `]`) can be used to access nested objects (e.g., `\\\\\\\"field\\\\\\\": \\\\\\\"foo.bar\\\\\\\"` and `\\\\\\\"field\\\\\\\": \\\\\\\"foo['bar']\\\\\\\"`). If field names contain dots or brackets but are not nested, you can use `\\\\\\\\\\\\\\\\` to escape dots and brackets (e.g., `\\\\\\\"a\\\\\\\\\\\\\\\\.b\\\\\\\"` and `\\\\\\\"a\\\\\\\\\\\\\\\\[0\\\\\\\\\\\\\\\\]\\\\\\\"`). See more details about escaping in the [field documentation](https://vega.github.io/vega-lite/docs/field.html). 2) `field` is not required if `aggregate` is `count`.\\\"},\\\"format\\\":{\\\"anyOf\\\":[{\\\"type\\\":\\\"string\\\"},{\\\"$ref\\\":\\\"#/definitions/Dict<unknown>\\\"}],\\\"description\\\":\\\"When used with the default `\\\\\\\"number\\\\\\\"` and `\\\\\\\"time\\\\\\\"` format type, the text formatting pattern for labels of guides (axes, legends, headers) and text marks.\\\\n\\\\n- If the format type is `\\\\\\\"number\\\\\\\"` (e.g., for quantitative fields), this is D3's [number format pattern](https://github.com/d3/d3-format#locale_format). - If the format type is `\\\\\\\"time\\\\\\\"` (e.g., for temporal fields), this is D3's [time format pattern](https://github.com/d3/d3-time-format#locale_format).\\\\n\\\\nSee the [format documentation](https://vega.github.io/vega-lite/docs/format.html) for more examples.\\\\n\\\\nWhen used with a [custom `formatType`](https://vega.github.io/vega-lite/docs/config.html#custom-format-type), this value will be passed as `format` alongside `datum.value` to the registered function.\\\\n\\\\n__Default value:__  Derived from [numberFormat](https://vega.github.io/vega-lite/docs/config.html#format) config for number format and from [timeFormat](https://vega.github.io/vega-lite/docs/config.html#format) config for time format.\\\"},\\\"formatType\\\":{\\\"description\\\":\\\"The format type for labels. One of `\\\\\\\"number\\\\\\\"`, `\\\\\\\"time\\\\\\\"`, or a [registered custom format type](https://vega.github.io/vega-lite/docs/config.html#custom-format-type).\\\\n\\\\n__Default value:__ - `\\\\\\\"time\\\\\\\"` for temporal fields and ordinal and nominal fields with `timeUnit`. - `\\\\\\\"number\\\\\\\"` for quantitative fields as well as ordinal and nominal fields without `timeUnit`.\\\",\\\"type\\\":\\\"string\\\"},\\\"labelExpr\\\":{\\\"description\\\":\\\"[Vega expression](https://vega.github.io/vega/docs/expressions/) for customizing labels text.\\\\n\\\\n__Note:__ The label text and value can be assessed via the `label` and `value` properties of the axis's backing `datum` object.\\\",\\\"type\\\":\\\"string\\\"},\\\"timeUnit\\\":{\\\"anyOf\\\":[{\\\"$ref\\\":\\\"#/definitions/TimeUnit\\\"},{\\\"$ref\\\":\\\"#/definitions/TimeUnitParams\\\"}],\\\"description\\\":\\\"Time unit (e.g., `year`, `yearmonth`, `month`, `hours`) for a temporal field. or [a temporal field that gets casted as ordinal](https://vega.github.io/vega-lite/docs/type.html#cast).\\\\n\\\\n__Default value:__ `undefined` (None)\\\\n\\\\n__See also:__ [`timeUnit`](https://vega.github.io/vega-lite/docs/timeunit.html) documentation.\\\"},\\\"title\\\":{\\\"anyOf\\\":[{\\\"$ref\\\":\\\"#/definitions/Text\\\"},{\\\"type\\\":\\\"null\\\"}],\\\"description\\\":\\\"A title for the field. If `null`, the title will be removed.\\\\n\\\\n__Default value:__  derived from the field's name and transformation function (`aggregate`, `bin` and `timeUnit`). If the field has an aggregate function, the function is displayed as part of the title (e.g., `\\\\\\\"Sum of Profit\\\\\\\"`). If the field is binned or has a time unit applied, the applied function is shown in parentheses (e.g., `\\\\\\\"Profit (binned)\\\\\\\"`, `\\\\\\\"Transaction Date (year-month)\\\\\\\"`). Otherwise, the title is simply the field name.\\\\n\\\\n__Notes__:\\\\n\\\\n1) You can customize the default field title format by providing the [`fieldTitle`](https://vega.github.io/vega-lite/docs/config.html#top-level-config) property in the [config](https://vega.github.io/vega-lite/docs/config.html) or [`fieldTitle` function via the `compile` function's options](https://vega.github.io/vega-lite/docs/compile.html#field-title).\\\\n\\\\n2) If both field definition's `title` and axis, header, or legend `title` are defined, axis/header/legend title will be used.\\\"},\\\"type\\\":{\\\"anyOf\\\":[{\\\"$ref\\\":\\\"#/definitions/StandardType\\\",\\\"description\\\":\\\"The type of measurement (`\\\\\\\"quantitative\\\\\\\"`, `\\\\\\\"temporal\\\\\\\"`, `\\\\\\\"ordinal\\\\\\\"`, or `\\\\\\\"nominal\\\\\\\"`) for the encoded field or constant value (`datum`). It can also be a `\\\\\\\"geojson\\\\\\\"` type for encoding ['geoshape'](https://vega.github.io/vega-lite/docs/geoshape.html).\\\\n\\\\nVega-Lite automatically infers data types in many cases as discussed below. However, type is required for a field if: (1) the field is not nominal and the field encoding has no specified `aggregate` (except `argmin` and `argmax`), `bin`, scale type, custom `sort` order, nor `timeUnit` or (2) if you wish to use an ordinal scale for a field with `bin` or `timeUnit`.\\\\n\\\\n__Default value:__\\\\n\\\\n1) For a data `field`, `\\\\\\\"nominal\\\\\\\"` is the default data type unless the field encoding has `aggregate`, `channel`, `bin`, scale type, `sort`, or `timeUnit` that satisfies the following criteria: - `\\\\\\\"quantitative\\\\\\\"` is the default type if (1) the encoded field contains `bin` or `aggregate` except `\\\\\\\"argmin\\\\\\\"` and `\\\\\\\"argmax\\\\\\\"`, (2) the encoding channel is `latitude` or `longitude` channel or (3) if the specified scale type is [a quantitative scale](https://vega.github.io/vega-lite/docs/scale.html#type). - `\\\\\\\"temporal\\\\\\\"` is the default type if (1) the encoded field contains `timeUnit` or (2) the specified scale type is a time or utc scale - `ordinal\\\\\\\"\\\\\\\"` is the default type if (1) the encoded field contains a [custom `sort` order](https://vega.github.io/vega-lite/docs/sort.html#specifying-custom-sort-order), (2) the specified scale type is an ordinal/point/band scale, or (3) the encoding channel is `order`.\\\\n\\\\n2) For a constant value in data domain (`datum`): - `\\\\\\\"quantitative\\\\\\\"` if the datum is a number - `\\\\\\\"nominal\\\\\\\"` if the datum is a string - `\\\\\\\"temporal\\\\\\\"` if the datum is [a date time object](https://vega.github.io/vega-lite/docs/datetime.html)\\\\n\\\\n__Note:__ - Data `type` describes the semantics of the data rather than the primitive data types (number, string, etc.). The same primitive data type can have different types of measurement. For example, numeric data can represent quantitative, ordinal, or nominal data. - Data values for a temporal field can be either a date-time string (e.g., `\\\\\\\"2015-03-07 12:32:17\\\\\\\"`, `\\\\\\\"17:01\\\\\\\"`, `\\\\\\\"2015-03-16\\\\\\\"`. `\\\\\\\"2015\\\\\\\"`) or a timestamp number (e.g., `1552199579097`). - When using with [`bin`](https://vega.github.io/vega-lite/docs/bin.html), the `type` property can be either `\\\\\\\"quantitative\\\\\\\"` (for using a linear bin scale) or [`\\\\\\\"ordinal\\\\\\\"` (for using an ordinal bin scale)](https://vega.github.io/vega-lite/docs/type.html#cast-bin). - When using with [`timeUnit`](https://vega.github.io/vega-lite/docs/timeunit.html), the `type` property can be either `\\\\\\\"temporal\\\\\\\"` (default, for using a temporal scale) or [`\\\\\\\"ordinal\\\\\\\"` (for using an ordinal scale)](https://vega.github.io/vega-lite/docs/type.html#cast-bin). - When using with [`aggregate`](https://vega.github.io/vega-lite/docs/aggregate.html), the `type` property refers to the post-aggregation data type. For example, we can calculate count `distinct` of a categorical field `\\\\\\\"cat\\\\\\\"` using `{\\\\\\\"aggregate\\\\\\\": \\\\\\\"distinct\\\\\\\", \\\\\\\"field\\\\\\\": \\\\\\\"cat\\\\\\\"}`. The `\\\\\\\"type\\\\\\\"` of the aggregate output is `\\\\\\\"quantitative\\\\\\\"`. - Secondary channels (e.g., `x2`, `y2`, `xError`, `yError`) do not have `type` as they must have exactly the same type as their primary channels (e.g., `x`, `y`).\\\\n\\\\n__See also:__ [`type`](https://vega.github.io/vega-lite/docs/type.html) documentation.\\\"},{\\\"$ref\\\":\\\"#/definitions/Type\\\",\\\"description\\\":\\\"The type of measurement (`\\\\\\\"quantitative\\\\\\\"`, `\\\\\\\"temporal\\\\\\\"`, `\\\\\\\"ordinal\\\\\\\"`, or `\\\\\\\"nominal\\\\\\\"`) for the encoded field or constant value (`datum`). It can also be a `\\\\\\\"geojson\\\\\\\"` type for encoding ['geoshape'](https://vega.github.io/vega-lite/docs/geoshape.html).\\\\n\\\\nVega-Lite automatically infers data types in many cases as discussed below. However, type is required for a field if: (1) the field is not nominal and the field encoding has no specified `aggregate` (except `argmin` and `argmax`), `bin`, scale type, custom `sort` order, nor `timeUnit` or (2) if you wish to use an ordinal scale for a field with `bin` or `timeUnit`.\\\\n\\\\n__Default value:__\\\\n\\\\n1) For a data `field`, `\\\\\\\"nominal\\\\\\\"` is the default data type unless the field encoding has `aggregate`, `channel`, `bin`, scale type, `sort`, or `timeUnit` that satisfies the following criteria: - `\\\\\\\"quantitative\\\\\\\"` is the default type if (1) the encoded field contains `bin` or `aggregate` except `\\\\\\\"argmin\\\\\\\"` and `\\\\\\\"argmax\\\\\\\"`, (2) the encoding channel is `latitude` or `longitude` channel or (3) if the specified scale type is [a quantitative scale](https://vega.github.io/vega-lite/docs/scale.html#type). - `\\\\\\\"temporal\\\\\\\"` is the default type if (1) the encoded field contains `timeUnit` or (2) the specified scale type is a time or utc scale - `ordinal\\\\\\\"\\\\\\\"` is the default type if (1) the encoded field contains a [custom `sort` order](https://vega.github.io/vega-lite/docs/sort.html#specifying-custom-sort-order), (2) the specified scale type is an ordinal/point/band scale, or (3) the encoding channel is `order`.\\\\n\\\\n2) For a constant value in data domain (`datum`): - `\\\\\\\"quantitative\\\\\\\"` if the datum is a number - `\\\\\\\"nominal\\\\\\\"` if the datum is a string - `\\\\\\\"temporal\\\\\\\"` if the datum is [a date time object](https://vega.github.io/vega-lite/docs/datetime.html)\\\\n\\\\n__Note:__ - Data `type` describes the semantics of the data rather than the primitive data types (number, string, etc.). The same primitive data type can have different types of measurement. For example, numeric data can represent quantitative, ordinal, or nominal data. - Data values for a temporal field can be either a date-time string (e.g., `\\\\\\\"2015-03-07 12:32:17\\\\\\\"`, `\\\\\\\"17:01\\\\\\\"`, `\\\\\\\"2015-03-16\\\\\\\"`. `\\\\\\\"2015\\\\\\\"`) or a timestamp number (e.g., `1552199579097`). - When using with [`bin`](https://vega.github.io/vega-lite/docs/bin.html), the `type` property can be either `\\\\\\\"quantitative\\\\\\\"` (for using a linear bin scale) or [`\\\\\\\"ordinal\\\\\\\"` (for using an ordinal bin scale)](https://vega.github.io/vega-lite/docs/type.html#cast-bin). - When using with [`timeUnit`](https://vega.github.io/vega-lite/docs/timeunit.html), the `type` property can be either `\\\\\\\"temporal\\\\\\\"` (default, for using a temporal scale) or [`\\\\\\\"ordinal\\\\\\\"` (for using an ordinal scale)](https://vega.github.io/vega-lite/docs/type.html#cast-bin). - When using with [`aggregate`](https://vega.github.io/vega-lite/docs/aggregate.html), the `type` property refers to the post-aggregation data type. For example, we can calculate count `distinct` of a categorical field `\\\\\\\"cat\\\\\\\"` using `{\\\\\\\"aggregate\\\\\\\": \\\\\\\"distinct\\\\\\\", \\\\\\\"field\\\\\\\": \\\\\\\"cat\\\\\\\"}`. The `\\\\\\\"type\\\\\\\"` of the aggregate output is `\\\\\\\"quantitative\\\\\\\"`. - Secondary channels (e.g., `x2`, `y2`, `xError`, `yError`) do not have `type` as they must have exactly the same type as their primary channels (e.g., `x`, `y`).\\\\n\\\\n__See also:__ [`type`](https://vega.github.io/vega-lite/docs/type.html) documentation.\\\"}],\\\"description\\\":\\\"The type of measurement (`\\\\\\\"quantitative\\\\\\\"`, `\\\\\\\"temporal\\\\\\\"`, `\\\\\\\"ordinal\\\\\\\"`, or `\\\\\\\"nominal\\\\\\\"`) for the encoded field or constant value (`datum`). It can also be a `\\\\\\\"geojson\\\\\\\"` type for encoding ['geoshape'](https://vega.github.io/vega-lite/docs/geoshape.html).\\\\n\\\\nVega-Lite automatically infers data types in many cases as discussed below. However, type is required for a field if: (1) the field is not nominal and the field encoding has no specified `aggregate` (except `argmin` and `argmax`), `bin`, scale type, custom `sort` order, nor `timeUnit` or (2) if you wish to use an ordinal scale for a field with `bin` or `timeUnit`.\\\\n\\\\n__Default value:__\\\\n\\\\n1) For a data `field`, `\\\\\\\"nominal\\\\\\\"` is the default data type unless the field encoding has `aggregate`, `channel`, `bin`, scale type, `sort`, or `timeUnit` that satisfies the following criteria: - `\\\\\\\"quantitative\\\\\\\"` is the default type if (1) the encoded field contains `bin` or `aggregate` except `\\\\\\\"argmin\\\\\\\"` and `\\\\\\\"argmax\\\\\\\"`, (2) the encoding channel is `latitude` or `longitude` channel or (3) if the specified scale type is [a quantitative scale](https://vega.github.io/vega-lite/docs/scale.html#type). - `\\\\\\\"temporal\\\\\\\"` is the default type if (1) the encoded field contains `timeUnit` or (2) the specified scale type is a time or utc scale - `ordinal\\\\\\\"\\\\\\\"` is the default type if (1) the encoded field contains a [custom `sort` order](https://vega.github.io/vega-lite/docs/sort.html#specifying-custom-sort-order), (2) the specified scale type is an ordinal/point/band scale, or (3) the encoding channel is `order`.\\\\n\\\\n2) For a constant value in data domain (`datum`): - `\\\\\\\"quantitative\\\\\\\"` if the datum is a number - `\\\\\\\"nominal\\\\\\\"` if the datum is a string - `\\\\\\\"temporal\\\\\\\"` if the datum is [a date time object](https://vega.github.io/vega-lite/docs/datetime.html)\\\\n\\\\n__Note:__ - Data `type` describes the semantics of the data rather than the primitive data types (number, string, etc.). The same primitive data type can have different types of measurement. For example, numeric data can represent quantitative, ordinal, or nominal data. - Data values for a temporal field can be either a date-time string (e.g., `\\\\\\\"2015-03-07 12:32:17\\\\\\\"`, `\\\\\\\"17:01\\\\\\\"`, `\\\\\\\"2015-03-16\\\\\\\"`. `\\\\\\\"2015\\\\\\\"`) or a timestamp number (e.g., `1552199579097`). - When using with [`bin`](https://vega.github.io/vega-lite/docs/bin.html), the `type` property can be either `\\\\\\\"quantitative\\\\\\\"` (for using a linear bin scale) or [`\\\\\\\"ordinal\\\\\\\"` (for using an ordinal bin scale)](https://vega.github.io/vega-lite/docs/type.html#cast-bin). - When using with [`timeUnit`](https://vega.github.io/vega-lite/docs/timeunit.html), the `type` property can be either `\\\\\\\"temporal\\\\\\\"` (default, for using a temporal scale) or [`\\\\\\\"ordinal\\\\\\\"` (for using an ordinal scale)](https://vega.github.io/vega-lite/docs/type.html#cast-bin). - When using with [`aggregate`](https://vega.github.io/vega-lite/docs/aggregate.html), the `type` property refers to the post-aggregation data type. For example, we can calculate count `distinct` of a categorical field `\\\\\\\"cat\\\\\\\"` using `{\\\\\\\"aggregate\\\\\\\": \\\\\\\"distinct\\\\\\\", \\\\\\\"field\\\\\\\": \\\\\\\"cat\\\\\\\"}`. The `\\\\\\\"type\\\\\\\"` of the aggregate output is `\\\\\\\"quantitative\\\\\\\"`. - Secondary channels (e.g., `x2`, `y2`, `xError`, `yError`) do not have `type` as they must have exactly the same type as their primary channels (e.g., `x`, `y`).\\\\n\\\\n__See also:__ [`type`](https://vega.github.io/vega-lite/docs/type.html) documentation.\\\"},\\\"value\\\":{\\\"anyOf\\\":[{\\\"$ref\\\":\\\"#/definitions/Text\\\"},{\\\"$ref\\\":\\\"#/definitions/ExprRef\\\"}],\\\"description\\\":\\\"A constant value in visual domain (e.g., `\\\\\\\"red\\\\\\\"` / `\\\\\\\"#0099ff\\\\\\\"` / [gradient definition](https://vega.github.io/vega-lite/docs/types.html#gradient) for color, values between `0` to `1` for opacity).\\\"}},\\\"type\\\":\\\"object\\\"},\\\"theta\\\":{\\\"additionalProperties\\\":false,\\\"properties\\\":{\\\"aggregate\\\":{\\\"$ref\\\":\\\"#/definitions/Aggregate\\\",\\\"description\\\":\\\"Aggregation function for the field (e.g., `\\\\\\\"mean\\\\\\\"`, `\\\\\\\"sum\\\\\\\"`, `\\\\\\\"median\\\\\\\"`, `\\\\\\\"min\\\\\\\"`, `\\\\\\\"max\\\\\\\"`, `\\\\\\\"count\\\\\\\"`).\\\\n\\\\n__Default value:__ `undefined` (None)\\\\n\\\\n__See also:__ [`aggregate`](https://vega.github.io/vega-lite/docs/aggregate.html) documentation.\\\"},\\\"band\\\":{\\\"description\\\":\\\"For rect-based marks (`rect`, `bar`, and `image`), mark size relative to bandwidth of [band scales](https://vega.github.io/vega-lite/docs/scale.html#band), bins or time units. If set to `1`, the mark size is set to the bandwidth, the bin interval, or the time unit interval. If set to `0.5`, the mark size is half of the bandwidth or the time unit interval.\\\\n\\\\nFor other marks, relative position on a band of a stacked, binned, time unit or band scale. If set to `0`, the marks will be positioned at the beginning of the band. If set to `0.5`, the marks will be positioned in the middle of the band.\\\",\\\"maximum\\\":1,\\\"minimum\\\":0,\\\"type\\\":\\\"number\\\"},\\\"bin\\\":{\\\"anyOf\\\":[{\\\"type\\\":\\\"boolean\\\"},{\\\"$ref\\\":\\\"#/definitions/BinParams\\\"},{\\\"const\\\":\\\"binned\\\",\\\"type\\\":\\\"string\\\"},{\\\"type\\\":\\\"null\\\"}],\\\"description\\\":\\\"A flag for binning a `quantitative` field, [an object defining binning parameters](https://vega.github.io/vega-lite/docs/bin.html#params), or indicating that the data for `x` or `y` channel are binned before they are imported into Vega-Lite (`\\\\\\\"binned\\\\\\\"`).\\\\n\\\\n- If `true`, default [binning parameters](https://vega.github.io/vega-lite/docs/bin.html) will be applied.\\\\n\\\\n- If `\\\\\\\"binned\\\\\\\"`, this indicates that the data for the `x` (or `y`) channel are already binned. You can map the bin-start field to `x` (or `y`) and the bin-end field to `x2` (or `y2`). The scale and axis will be formatted similar to binning in Vega-Lite.  To adjust the axis ticks based on the bin step, you can also set the axis's [`tickMinStep`](https://vega.github.io/vega-lite/docs/axis.html#ticks) property.\\\\n\\\\n__Default value:__ `false`\\\\n\\\\n__See also:__ [`bin`](https://vega.github.io/vega-lite/docs/bin.html) documentation.\\\"},\\\"datum\\\":{\\\"anyOf\\\":[{\\\"$ref\\\":\\\"#/definitions/PrimitiveValue\\\"},{\\\"$ref\\\":\\\"#/definitions/DateTime\\\"},{\\\"$ref\\\":\\\"#/definitions/ExprRef\\\"},{\\\"$ref\\\":\\\"#/definitions/RepeatRef\\\"}],\\\"description\\\":\\\"A constant value in data domain.\\\"},\\\"field\\\":{\\\"$ref\\\":\\\"#/definitions/Field\\\",\\\"description\\\":\\\"__Required.__ A string defining the name of the field from which to pull a data value or an object defining iterated values from the [`repeat`](https://vega.github.io/vega-lite/docs/repeat.html) operator.\\\\n\\\\n__See also:__ [`field`](https://vega.github.io/vega-lite/docs/field.html) documentation.\\\\n\\\\n__Notes:__ 1)  Dots (`.`) and brackets (`[` and `]`) can be used to access nested objects (e.g., `\\\\\\\"field\\\\\\\": \\\\\\\"foo.bar\\\\\\\"` and `\\\\\\\"field\\\\\\\": \\\\\\\"foo['bar']\\\\\\\"`). If field names contain dots or brackets but are not nested, you can use `\\\\\\\\\\\\\\\\` to escape dots and brackets (e.g., `\\\\\\\"a\\\\\\\\\\\\\\\\.b\\\\\\\"` and `\\\\\\\"a\\\\\\\\\\\\\\\\[0\\\\\\\\\\\\\\\\]\\\\\\\"`). See more details about escaping in the [field documentation](https://vega.github.io/vega-lite/docs/field.html). 2) `field` is not required if `aggregate` is `count`.\\\"},\\\"scale\\\":{\\\"anyOf\\\":[{\\\"$ref\\\":\\\"#/definitions/Scale\\\"},{\\\"type\\\":\\\"null\\\"}],\\\"description\\\":\\\"An object defining properties of the channel's scale, which is the function that transforms values in the data domain (numbers, dates, strings, etc) to visual values (pixels, colors, sizes) of the encoding channels.\\\\n\\\\nIf `null`, the scale will be [disabled and the data value will be directly encoded](https://vega.github.io/vega-lite/docs/scale.html#disable).\\\\n\\\\n__Default value:__ If undefined, default [scale properties](https://vega.github.io/vega-lite/docs/scale.html) are applied.\\\\n\\\\n__See also:__ [`scale`](https://vega.github.io/vega-lite/docs/scale.html) documentation.\\\"},\\\"sort\\\":{\\\"$ref\\\":\\\"#/definitions/Sort\\\",\\\"description\\\":\\\"Sort order for the encoded field.\\\\n\\\\nFor continuous fields (quantitative or temporal), `sort` can be either `\\\\\\\"ascending\\\\\\\"` or `\\\\\\\"descending\\\\\\\"`.\\\\n\\\\nFor discrete fields, `sort` can be one of the following: - `\\\\\\\"ascending\\\\\\\"` or `\\\\\\\"descending\\\\\\\"` -- for sorting by the values' natural order in JavaScript. - [A string indicating an encoding channel name to sort by](https://vega.github.io/vega-lite/docs/sort.html#sort-by-encoding) (e.g., `\\\\\\\"x\\\\\\\"` or `\\\\\\\"y\\\\\\\"`) with an optional minus prefix for descending sort (e.g., `\\\\\\\"-x\\\\\\\"` to sort by x-field, descending). This channel string is short-form of [a sort-by-encoding definition](https://vega.github.io/vega-lite/docs/sort.html#sort-by-encoding). For example, `\\\\\\\"sort\\\\\\\": \\\\\\\"-x\\\\\\\"` is equivalent to `\\\\\\\"sort\\\\\\\": {\\\\\\\"encoding\\\\\\\": \\\\\\\"x\\\\\\\", \\\\\\\"order\\\\\\\": \\\\\\\"descending\\\\\\\"}`. - [A sort field definition](https://vega.github.io/vega-lite/docs/sort.html#sort-field) for sorting by another field. - [An array specifying the field values in preferred order](https://vega.github.io/vega-lite/docs/sort.html#sort-array). In this case, the sort order will obey the values in the array, followed by any unspecified values in their original order. For discrete time field, values in the sort array can be [date-time definition objects](types#datetime). In addition, for time units `\\\\\\\"month\\\\\\\"` and `\\\\\\\"day\\\\\\\"`, the values can be the month or day names (case insensitive) or their 3-letter initials (e.g., `\\\\\\\"Mon\\\\\\\"`, `\\\\\\\"Tue\\\\\\\"`). - `null` indicating no sort.\\\\n\\\\n__Default value:__ `\\\\\\\"ascending\\\\\\\"`\\\\n\\\\n__Note:__ `null` and sorting by another channel is not supported for `row` and `column`.\\\\n\\\\n__See also:__ [`sort`](https://vega.github.io/vega-lite/docs/sort.html) documentation.\\\"},\\\"stack\\\":{\\\"anyOf\\\":[{\\\"$ref\\\":\\\"#/definitions/StackOffset\\\"},{\\\"type\\\":\\\"null\\\"},{\\\"type\\\":\\\"boolean\\\"}],\\\"description\\\":\\\"Type of stacking offset if the field should be stacked. `stack` is only applicable for `x`, `y`, `theta`, and `radius` channels with continuous domains. For example, `stack` of `y` can be used to customize stacking for a vertical bar chart.\\\\n\\\\n`stack` can be one of the following values: - `\\\\\\\"zero\\\\\\\"` or `true`: stacking with baseline offset at zero value of the scale (for creating typical stacked [bar](https://vega.github.io/vega-lite/docs/stack.html#bar) and [area](https://vega.github.io/vega-lite/docs/stack.html#area) chart). - `\\\\\\\"normalize\\\\\\\"` - stacking with normalized domain (for creating [normalized stacked bar and area charts](https://vega.github.io/vega-lite/docs/stack.html#normalized). <br/> -`\\\\\\\"center\\\\\\\"` - stacking with center baseline (for [streamgraph](https://vega.github.io/vega-lite/docs/stack.html#streamgraph)). - `null` or `false` - No-stacking. This will produce layered [bar](https://vega.github.io/vega-lite/docs/stack.html#layered-bar-chart) and area chart.\\\\n\\\\n__Default value:__ `zero` for plots with all of the following conditions are true: (1) the mark is `bar`, `area`, or `arc`; (2) the stacked measure channel (x or y) has a linear scale; (3) At least one of non-position channels mapped to an unaggregated field that is different from x and y. Otherwise, `null` by default.\\\\n\\\\n__See also:__ [`stack`](https://vega.github.io/vega-lite/docs/stack.html) documentation.\\\"},\\\"timeUnit\\\":{\\\"anyOf\\\":[{\\\"$ref\\\":\\\"#/definitions/TimeUnit\\\"},{\\\"$ref\\\":\\\"#/definitions/TimeUnitParams\\\"}],\\\"description\\\":\\\"Time unit (e.g., `year`, `yearmonth`, `month`, `hours`) for a temporal field. or [a temporal field that gets casted as ordinal](https://vega.github.io/vega-lite/docs/type.html#cast).\\\\n\\\\n__Default value:__ `undefined` (None)\\\\n\\\\n__See also:__ [`timeUnit`](https://vega.github.io/vega-lite/docs/timeunit.html) documentation.\\\"},\\\"title\\\":{\\\"anyOf\\\":[{\\\"$ref\\\":\\\"#/definitions/Text\\\"},{\\\"type\\\":\\\"null\\\"}],\\\"description\\\":\\\"A title for the field. If `null`, the title will be removed.\\\\n\\\\n__Default value:__  derived from the field's name and transformation function (`aggregate`, `bin` and `timeUnit`). If the field has an aggregate function, the function is displayed as part of the title (e.g., `\\\\\\\"Sum of Profit\\\\\\\"`). If the field is binned or has a time unit applied, the applied function is shown in parentheses (e.g., `\\\\\\\"Profit (binned)\\\\\\\"`, `\\\\\\\"Transaction Date (year-month)\\\\\\\"`). Otherwise, the title is simply the field name.\\\\n\\\\n__Notes__:\\\\n\\\\n1) You can customize the default field title format by providing the [`fieldTitle`](https://vega.github.io/vega-lite/docs/config.html#top-level-config) property in the [config](https://vega.github.io/vega-lite/docs/config.html) or [`fieldTitle` function via the `compile` function's options](https://vega.github.io/vega-lite/docs/compile.html#field-title).\\\\n\\\\n2) If both field definition's `title` and axis, header, or legend `title` are defined, axis/header/legend title will be used.\\\"},\\\"type\\\":{\\\"anyOf\\\":[{\\\"$ref\\\":\\\"#/definitions/StandardType\\\",\\\"description\\\":\\\"The type of measurement (`\\\\\\\"quantitative\\\\\\\"`, `\\\\\\\"temporal\\\\\\\"`, `\\\\\\\"ordinal\\\\\\\"`, or `\\\\\\\"nominal\\\\\\\"`) for the encoded field or constant value (`datum`). It can also be a `\\\\\\\"geojson\\\\\\\"` type for encoding ['geoshape'](https://vega.github.io/vega-lite/docs/geoshape.html).\\\\n\\\\nVega-Lite automatically infers data types in many cases as discussed below. However, type is required for a field if: (1) the field is not nominal and the field encoding has no specified `aggregate` (except `argmin` and `argmax`), `bin`, scale type, custom `sort` order, nor `timeUnit` or (2) if you wish to use an ordinal scale for a field with `bin` or `timeUnit`.\\\\n\\\\n__Default value:__\\\\n\\\\n1) For a data `field`, `\\\\\\\"nominal\\\\\\\"` is the default data type unless the field encoding has `aggregate`, `channel`, `bin`, scale type, `sort`, or `timeUnit` that satisfies the following criteria: - `\\\\\\\"quantitative\\\\\\\"` is the default type if (1) the encoded field contains `bin` or `aggregate` except `\\\\\\\"argmin\\\\\\\"` and `\\\\\\\"argmax\\\\\\\"`, (2) the encoding channel is `latitude` or `longitude` channel or (3) if the specified scale type is [a quantitative scale](https://vega.github.io/vega-lite/docs/scale.html#type). - `\\\\\\\"temporal\\\\\\\"` is the default type if (1) the encoded field contains `timeUnit` or (2) the specified scale type is a time or utc scale - `ordinal\\\\\\\"\\\\\\\"` is the default type if (1) the encoded field contains a [custom `sort` order](https://vega.github.io/vega-lite/docs/sort.html#specifying-custom-sort-order), (2) the specified scale type is an ordinal/point/band scale, or (3) the encoding channel is `order`.\\\\n\\\\n2) For a constant value in data domain (`datum`): - `\\\\\\\"quantitative\\\\\\\"` if the datum is a number - `\\\\\\\"nominal\\\\\\\"` if the datum is a string - `\\\\\\\"temporal\\\\\\\"` if the datum is [a date time object](https://vega.github.io/vega-lite/docs/datetime.html)\\\\n\\\\n__Note:__ - Data `type` describes the semantics of the data rather than the primitive data types (number, string, etc.). The same primitive data type can have different types of measurement. For example, numeric data can represent quantitative, ordinal, or nominal data. - Data values for a temporal field can be either a date-time string (e.g., `\\\\\\\"2015-03-07 12:32:17\\\\\\\"`, `\\\\\\\"17:01\\\\\\\"`, `\\\\\\\"2015-03-16\\\\\\\"`. `\\\\\\\"2015\\\\\\\"`) or a timestamp number (e.g., `1552199579097`). - When using with [`bin`](https://vega.github.io/vega-lite/docs/bin.html), the `type` property can be either `\\\\\\\"quantitative\\\\\\\"` (for using a linear bin scale) or [`\\\\\\\"ordinal\\\\\\\"` (for using an ordinal bin scale)](https://vega.github.io/vega-lite/docs/type.html#cast-bin). - When using with [`timeUnit`](https://vega.github.io/vega-lite/docs/timeunit.html), the `type` property can be either `\\\\\\\"temporal\\\\\\\"` (default, for using a temporal scale) or [`\\\\\\\"ordinal\\\\\\\"` (for using an ordinal scale)](https://vega.github.io/vega-lite/docs/type.html#cast-bin). - When using with [`aggregate`](https://vega.github.io/vega-lite/docs/aggregate.html), the `type` property refers to the post-aggregation data type. For example, we can calculate count `distinct` of a categorical field `\\\\\\\"cat\\\\\\\"` using `{\\\\\\\"aggregate\\\\\\\": \\\\\\\"distinct\\\\\\\", \\\\\\\"field\\\\\\\": \\\\\\\"cat\\\\\\\"}`. The `\\\\\\\"type\\\\\\\"` of the aggregate output is `\\\\\\\"quantitative\\\\\\\"`. - Secondary channels (e.g., `x2`, `y2`, `xError`, `yError`) do not have `type` as they must have exactly the same type as their primary channels (e.g., `x`, `y`).\\\\n\\\\n__See also:__ [`type`](https://vega.github.io/vega-lite/docs/type.html) documentation.\\\"},{\\\"$ref\\\":\\\"#/definitions/Type\\\",\\\"description\\\":\\\"The type of measurement (`\\\\\\\"quantitative\\\\\\\"`, `\\\\\\\"temporal\\\\\\\"`, `\\\\\\\"ordinal\\\\\\\"`, or `\\\\\\\"nominal\\\\\\\"`) for the encoded field or constant value (`datum`). It can also be a `\\\\\\\"geojson\\\\\\\"` type for encoding ['geoshape'](https://vega.github.io/vega-lite/docs/geoshape.html).\\\\n\\\\nVega-Lite automatically infers data types in many cases as discussed below. However, type is required for a field if: (1) the field is not nominal and the field encoding has no specified `aggregate` (except `argmin` and `argmax`), `bin`, scale type, custom `sort` order, nor `timeUnit` or (2) if you wish to use an ordinal scale for a field with `bin` or `timeUnit`.\\\\n\\\\n__Default value:__\\\\n\\\\n1) For a data `field`, `\\\\\\\"nominal\\\\\\\"` is the default data type unless the field encoding has `aggregate`, `channel`, `bin`, scale type, `sort`, or `timeUnit` that satisfies the following criteria: - `\\\\\\\"quantitative\\\\\\\"` is the default type if (1) the encoded field contains `bin` or `aggregate` except `\\\\\\\"argmin\\\\\\\"` and `\\\\\\\"argmax\\\\\\\"`, (2) the encoding channel is `latitude` or `longitude` channel or (3) if the specified scale type is [a quantitative scale](https://vega.github.io/vega-lite/docs/scale.html#type). - `\\\\\\\"temporal\\\\\\\"` is the default type if (1) the encoded field contains `timeUnit` or (2) the specified scale type is a time or utc scale - `ordinal\\\\\\\"\\\\\\\"` is the default type if (1) the encoded field contains a [custom `sort` order](https://vega.github.io/vega-lite/docs/sort.html#specifying-custom-sort-order), (2) the specified scale type is an ordinal/point/band scale, or (3) the encoding channel is `order`.\\\\n\\\\n2) For a constant value in data domain (`datum`): - `\\\\\\\"quantitative\\\\\\\"` if the datum is a number - `\\\\\\\"nominal\\\\\\\"` if the datum is a string - `\\\\\\\"temporal\\\\\\\"` if the datum is [a date time object](https://vega.github.io/vega-lite/docs/datetime.html)\\\\n\\\\n__Note:__ - Data `type` describes the semantics of the data rather than the primitive data types (number, string, etc.). The same primitive data type can have different types of measurement. For example, numeric data can represent quantitative, ordinal, or nominal data. - Data values for a temporal field can be either a date-time string (e.g., `\\\\\\\"2015-03-07 12:32:17\\\\\\\"`, `\\\\\\\"17:01\\\\\\\"`, `\\\\\\\"2015-03-16\\\\\\\"`. `\\\\\\\"2015\\\\\\\"`) or a timestamp number (e.g., `1552199579097`). - When using with [`bin`](https://vega.github.io/vega-lite/docs/bin.html), the `type` property can be either `\\\\\\\"quantitative\\\\\\\"` (for using a linear bin scale) or [`\\\\\\\"ordinal\\\\\\\"` (for using an ordinal bin scale)](https://vega.github.io/vega-lite/docs/type.html#cast-bin). - When using with [`timeUnit`](https://vega.github.io/vega-lite/docs/timeunit.html), the `type` property can be either `\\\\\\\"temporal\\\\\\\"` (default, for using a temporal scale) or [`\\\\\\\"ordinal\\\\\\\"` (for using an ordinal scale)](https://vega.github.io/vega-lite/docs/type.html#cast-bin). - When using with [`aggregate`](https://vega.github.io/vega-lite/docs/aggregate.html), the `type` property refers to the post-aggregation data type. For example, we can calculate count `distinct` of a categorical field `\\\\\\\"cat\\\\\\\"` using `{\\\\\\\"aggregate\\\\\\\": \\\\\\\"distinct\\\\\\\", \\\\\\\"field\\\\\\\": \\\\\\\"cat\\\\\\\"}`. The `\\\\\\\"type\\\\\\\"` of the aggregate output is `\\\\\\\"quantitative\\\\\\\"`. - Secondary channels (e.g., `x2`, `y2`, `xError`, `yError`) do not have `type` as they must have exactly the same type as their primary channels (e.g., `x`, `y`).\\\\n\\\\n__See also:__ [`type`](https://vega.github.io/vega-lite/docs/type.html) documentation.\\\"}],\\\"description\\\":\\\"The type of measurement (`\\\\\\\"quantitative\\\\\\\"`, `\\\\\\\"temporal\\\\\\\"`, `\\\\\\\"ordinal\\\\\\\"`, or `\\\\\\\"nominal\\\\\\\"`) for the encoded field or constant value (`datum`). It can also be a `\\\\\\\"geojson\\\\\\\"` type for encoding ['geoshape'](https://vega.github.io/vega-lite/docs/geoshape.html).\\\\n\\\\nVega-Lite automatically infers data types in many cases as discussed below. However, type is required for a field if: (1) the field is not nominal and the field encoding has no specified `aggregate` (except `argmin` and `argmax`), `bin`, scale type, custom `sort` order, nor `timeUnit` or (2) if you wish to use an ordinal scale for a field with `bin` or `timeUnit`.\\\\n\\\\n__Default value:__\\\\n\\\\n1) For a data `field`, `\\\\\\\"nominal\\\\\\\"` is the default data type unless the field encoding has `aggregate`, `channel`, `bin`, scale type, `sort`, or `timeUnit` that satisfies the following criteria: - `\\\\\\\"quantitative\\\\\\\"` is the default type if (1) the encoded field contains `bin` or `aggregate` except `\\\\\\\"argmin\\\\\\\"` and `\\\\\\\"argmax\\\\\\\"`, (2) the encoding channel is `latitude` or `longitude` channel or (3) if the specified scale type is [a quantitative scale](https://vega.github.io/vega-lite/docs/scale.html#type). - `\\\\\\\"temporal\\\\\\\"` is the default type if (1) the encoded field contains `timeUnit` or (2) the specified scale type is a time or utc scale - `ordinal\\\\\\\"\\\\\\\"` is the default type if (1) the encoded field contains a [custom `sort` order](https://vega.github.io/vega-lite/docs/sort.html#specifying-custom-sort-order), (2) the specified scale type is an ordinal/point/band scale, or (3) the encoding channel is `order`.\\\\n\\\\n2) For a constant value in data domain (`datum`): - `\\\\\\\"quantitative\\\\\\\"` if the datum is a number - `\\\\\\\"nominal\\\\\\\"` if the datum is a string - `\\\\\\\"temporal\\\\\\\"` if the datum is [a date time object](https://vega.github.io/vega-lite/docs/datetime.html)\\\\n\\\\n__Note:__ - Data `type` describes the semantics of the data rather than the primitive data types (number, string, etc.). The same primitive data type can have different types of measurement. For example, numeric data can represent quantitative, ordinal, or nominal data. - Data values for a temporal field can be either a date-time string (e.g., `\\\\\\\"2015-03-07 12:32:17\\\\\\\"`, `\\\\\\\"17:01\\\\\\\"`, `\\\\\\\"2015-03-16\\\\\\\"`. `\\\\\\\"2015\\\\\\\"`) or a timestamp number (e.g., `1552199579097`). - When using with [`bin`](https://vega.github.io/vega-lite/docs/bin.html), the `type` property can be either `\\\\\\\"quantitative\\\\\\\"` (for using a linear bin scale) or [`\\\\\\\"ordinal\\\\\\\"` (for using an ordinal bin scale)](https://vega.github.io/vega-lite/docs/type.html#cast-bin). - When using with [`timeUnit`](https://vega.github.io/vega-lite/docs/timeunit.html), the `type` property can be either `\\\\\\\"temporal\\\\\\\"` (default, for using a temporal scale) or [`\\\\\\\"ordinal\\\\\\\"` (for using an ordinal scale)](https://vega.github.io/vega-lite/docs/type.html#cast-bin). - When using with [`aggregate`](https://vega.github.io/vega-lite/docs/aggregate.html), the `type` property refers to the post-aggregation data type. For example, we can calculate count `distinct` of a categorical field `\\\\\\\"cat\\\\\\\"` using `{\\\\\\\"aggregate\\\\\\\": \\\\\\\"distinct\\\\\\\", \\\\\\\"field\\\\\\\": \\\\\\\"cat\\\\\\\"}`. The `\\\\\\\"type\\\\\\\"` of the aggregate output is `\\\\\\\"quantitative\\\\\\\"`. - Secondary channels (e.g., `x2`, `y2`, `xError`, `yError`) do not have `type` as they must have exactly the same type as their primary channels (e.g., `x`, `y`).\\\\n\\\\n__See also:__ [`type`](https://vega.github.io/vega-lite/docs/type.html) documentation.\\\"},\\\"value\\\":{\\\"anyOf\\\":[{\\\"type\\\":\\\"number\\\"},{\\\"const\\\":\\\"width\\\",\\\"type\\\":\\\"string\\\"},{\\\"const\\\":\\\"height\\\",\\\"type\\\":\\\"string\\\"},{\\\"$ref\\\":\\\"#/definitions/ExprRef\\\"}],\\\"description\\\":\\\"A constant value in visual domain (e.g., `\\\\\\\"red\\\\\\\"` / `\\\\\\\"#0099ff\\\\\\\"` / [gradient definition](https://vega.github.io/vega-lite/docs/types.html#gradient) for color, values between `0` to `1` for opacity).\\\"}},\\\"type\\\":\\\"object\\\"},\\\"theta2\\\":{\\\"additionalProperties\\\":false,\\\"properties\\\":{\\\"aggregate\\\":{\\\"$ref\\\":\\\"#/definitions/Aggregate\\\",\\\"description\\\":\\\"Aggregation function for the field (e.g., `\\\\\\\"mean\\\\\\\"`, `\\\\\\\"sum\\\\\\\"`, `\\\\\\\"median\\\\\\\"`, `\\\\\\\"min\\\\\\\"`, `\\\\\\\"max\\\\\\\"`, `\\\\\\\"count\\\\\\\"`).\\\\n\\\\n__Default value:__ `undefined` (None)\\\\n\\\\n__See also:__ [`aggregate`](https://vega.github.io/vega-lite/docs/aggregate.html) documentation.\\\"},\\\"band\\\":{\\\"description\\\":\\\"For rect-based marks (`rect`, `bar`, and `image`), mark size relative to bandwidth of [band scales](https://vega.github.io/vega-lite/docs/scale.html#band), bins or time units. If set to `1`, the mark size is set to the bandwidth, the bin interval, or the time unit interval. If set to `0.5`, the mark size is half of the bandwidth or the time unit interval.\\\\n\\\\nFor other marks, relative position on a band of a stacked, binned, time unit or band scale. If set to `0`, the marks will be positioned at the beginning of the band. If set to `0.5`, the marks will be positioned in the middle of the band.\\\",\\\"maximum\\\":1,\\\"minimum\\\":0,\\\"type\\\":\\\"number\\\"},\\\"bin\\\":{\\\"description\\\":\\\"A flag for binning a `quantitative` field, [an object defining binning parameters](https://vega.github.io/vega-lite/docs/bin.html#params), or indicating that the data for `x` or `y` channel are binned before they are imported into Vega-Lite (`\\\\\\\"binned\\\\\\\"`).\\\\n\\\\n- If `true`, default [binning parameters](https://vega.github.io/vega-lite/docs/bin.html) will be applied.\\\\n\\\\n- If `\\\\\\\"binned\\\\\\\"`, this indicates that the data for the `x` (or `y`) channel are already binned. You can map the bin-start field to `x` (or `y`) and the bin-end field to `x2` (or `y2`). The scale and axis will be formatted similar to binning in Vega-Lite.  To adjust the axis ticks based on the bin step, you can also set the axis's [`tickMinStep`](https://vega.github.io/vega-lite/docs/axis.html#ticks) property.\\\\n\\\\n__Default value:__ `false`\\\\n\\\\n__See also:__ [`bin`](https://vega.github.io/vega-lite/docs/bin.html) documentation.\\\",\\\"type\\\":\\\"null\\\"},\\\"datum\\\":{\\\"anyOf\\\":[{\\\"$ref\\\":\\\"#/definitions/PrimitiveValue\\\"},{\\\"$ref\\\":\\\"#/definitions/DateTime\\\"},{\\\"$ref\\\":\\\"#/definitions/ExprRef\\\"},{\\\"$ref\\\":\\\"#/definitions/RepeatRef\\\"}],\\\"description\\\":\\\"A constant value in data domain.\\\"},\\\"field\\\":{\\\"$ref\\\":\\\"#/definitions/Field\\\",\\\"description\\\":\\\"__Required.__ A string defining the name of the field from which to pull a data value or an object defining iterated values from the [`repeat`](https://vega.github.io/vega-lite/docs/repeat.html) operator.\\\\n\\\\n__See also:__ [`field`](https://vega.github.io/vega-lite/docs/field.html) documentation.\\\\n\\\\n__Notes:__ 1)  Dots (`.`) and brackets (`[` and `]`) can be used to access nested objects (e.g., `\\\\\\\"field\\\\\\\": \\\\\\\"foo.bar\\\\\\\"` and `\\\\\\\"field\\\\\\\": \\\\\\\"foo['bar']\\\\\\\"`). If field names contain dots or brackets but are not nested, you can use `\\\\\\\\\\\\\\\\` to escape dots and brackets (e.g., `\\\\\\\"a\\\\\\\\\\\\\\\\.b\\\\\\\"` and `\\\\\\\"a\\\\\\\\\\\\\\\\[0\\\\\\\\\\\\\\\\]\\\\\\\"`). See more details about escaping in the [field documentation](https://vega.github.io/vega-lite/docs/field.html). 2) `field` is not required if `aggregate` is `count`.\\\"},\\\"timeUnit\\\":{\\\"anyOf\\\":[{\\\"$ref\\\":\\\"#/definitions/TimeUnit\\\"},{\\\"$ref\\\":\\\"#/definitions/TimeUnitParams\\\"}],\\\"description\\\":\\\"Time unit (e.g., `year`, `yearmonth`, `month`, `hours`) for a temporal field. or [a temporal field that gets casted as ordinal](https://vega.github.io/vega-lite/docs/type.html#cast).\\\\n\\\\n__Default value:__ `undefined` (None)\\\\n\\\\n__See also:__ [`timeUnit`](https://vega.github.io/vega-lite/docs/timeunit.html) documentation.\\\"},\\\"title\\\":{\\\"anyOf\\\":[{\\\"$ref\\\":\\\"#/definitions/Text\\\"},{\\\"type\\\":\\\"null\\\"}],\\\"description\\\":\\\"A title for the field. If `null`, the title will be removed.\\\\n\\\\n__Default value:__  derived from the field's name and transformation function (`aggregate`, `bin` and `timeUnit`). If the field has an aggregate function, the function is displayed as part of the title (e.g., `\\\\\\\"Sum of Profit\\\\\\\"`). If the field is binned or has a time unit applied, the applied function is shown in parentheses (e.g., `\\\\\\\"Profit (binned)\\\\\\\"`, `\\\\\\\"Transaction Date (year-month)\\\\\\\"`). Otherwise, the title is simply the field name.\\\\n\\\\n__Notes__:\\\\n\\\\n1) You can customize the default field title format by providing the [`fieldTitle`](https://vega.github.io/vega-lite/docs/config.html#top-level-config) property in the [config](https://vega.github.io/vega-lite/docs/config.html) or [`fieldTitle` function via the `compile` function's options](https://vega.github.io/vega-lite/docs/compile.html#field-title).\\\\n\\\\n2) If both field definition's `title` and axis, header, or legend `title` are defined, axis/header/legend title will be used.\\\"},\\\"type\\\":{\\\"$ref\\\":\\\"#/definitions/Type\\\",\\\"description\\\":\\\"The type of measurement (`\\\\\\\"quantitative\\\\\\\"`, `\\\\\\\"temporal\\\\\\\"`, `\\\\\\\"ordinal\\\\\\\"`, or `\\\\\\\"nominal\\\\\\\"`) for the encoded field or constant value (`datum`). It can also be a `\\\\\\\"geojson\\\\\\\"` type for encoding ['geoshape'](https://vega.github.io/vega-lite/docs/geoshape.html).\\\\n\\\\nVega-Lite automatically infers data types in many cases as discussed below. However, type is required for a field if: (1) the field is not nominal and the field encoding has no specified `aggregate` (except `argmin` and `argmax`), `bin`, scale type, custom `sort` order, nor `timeUnit` or (2) if you wish to use an ordinal scale for a field with `bin` or `timeUnit`.\\\\n\\\\n__Default value:__\\\\n\\\\n1) For a data `field`, `\\\\\\\"nominal\\\\\\\"` is the default data type unless the field encoding has `aggregate`, `channel`, `bin`, scale type, `sort`, or `timeUnit` that satisfies the following criteria: - `\\\\\\\"quantitative\\\\\\\"` is the default type if (1) the encoded field contains `bin` or `aggregate` except `\\\\\\\"argmin\\\\\\\"` and `\\\\\\\"argmax\\\\\\\"`, (2) the encoding channel is `latitude` or `longitude` channel or (3) if the specified scale type is [a quantitative scale](https://vega.github.io/vega-lite/docs/scale.html#type). - `\\\\\\\"temporal\\\\\\\"` is the default type if (1) the encoded field contains `timeUnit` or (2) the specified scale type is a time or utc scale - `ordinal\\\\\\\"\\\\\\\"` is the default type if (1) the encoded field contains a [custom `sort` order](https://vega.github.io/vega-lite/docs/sort.html#specifying-custom-sort-order), (2) the specified scale type is an ordinal/point/band scale, or (3) the encoding channel is `order`.\\\\n\\\\n2) For a constant value in data domain (`datum`): - `\\\\\\\"quantitative\\\\\\\"` if the datum is a number - `\\\\\\\"nominal\\\\\\\"` if the datum is a string - `\\\\\\\"temporal\\\\\\\"` if the datum is [a date time object](https://vega.github.io/vega-lite/docs/datetime.html)\\\\n\\\\n__Note:__ - Data `type` describes the semantics of the data rather than the primitive data types (number, string, etc.). The same primitive data type can have different types of measurement. For example, numeric data can represent quantitative, ordinal, or nominal data. - Data values for a temporal field can be either a date-time string (e.g., `\\\\\\\"2015-03-07 12:32:17\\\\\\\"`, `\\\\\\\"17:01\\\\\\\"`, `\\\\\\\"2015-03-16\\\\\\\"`. `\\\\\\\"2015\\\\\\\"`) or a timestamp number (e.g., `1552199579097`). - When using with [`bin`](https://vega.github.io/vega-lite/docs/bin.html), the `type` property can be either `\\\\\\\"quantitative\\\\\\\"` (for using a linear bin scale) or [`\\\\\\\"ordinal\\\\\\\"` (for using an ordinal bin scale)](https://vega.github.io/vega-lite/docs/type.html#cast-bin). - When using with [`timeUnit`](https://vega.github.io/vega-lite/docs/timeunit.html), the `type` property can be either `\\\\\\\"temporal\\\\\\\"` (default, for using a temporal scale) or [`\\\\\\\"ordinal\\\\\\\"` (for using an ordinal scale)](https://vega.github.io/vega-lite/docs/type.html#cast-bin). - When using with [`aggregate`](https://vega.github.io/vega-lite/docs/aggregate.html), the `type` property refers to the post-aggregation data type. For example, we can calculate count `distinct` of a categorical field `\\\\\\\"cat\\\\\\\"` using `{\\\\\\\"aggregate\\\\\\\": \\\\\\\"distinct\\\\\\\", \\\\\\\"field\\\\\\\": \\\\\\\"cat\\\\\\\"}`. The `\\\\\\\"type\\\\\\\"` of the aggregate output is `\\\\\\\"quantitative\\\\\\\"`. - Secondary channels (e.g., `x2`, `y2`, `xError`, `yError`) do not have `type` as they must have exactly the same type as their primary channels (e.g., `x`, `y`).\\\\n\\\\n__See also:__ [`type`](https://vega.github.io/vega-lite/docs/type.html) documentation.\\\"},\\\"value\\\":{\\\"anyOf\\\":[{\\\"type\\\":\\\"number\\\"},{\\\"const\\\":\\\"width\\\",\\\"type\\\":\\\"string\\\"},{\\\"const\\\":\\\"height\\\",\\\"type\\\":\\\"string\\\"},{\\\"$ref\\\":\\\"#/definitions/ExprRef\\\"}],\\\"description\\\":\\\"A constant value in visual domain (e.g., `\\\\\\\"red\\\\\\\"` / `\\\\\\\"#0099ff\\\\\\\"` / [gradient definition](https://vega.github.io/vega-lite/docs/types.html#gradient) for color, values between `0` to `1` for opacity).\\\"}},\\\"type\\\":\\\"object\\\"},\\\"tooltip\\\":{\\\"anyOf\\\":[{\\\"$ref\\\":\\\"#/definitions/StringFieldDefWithCondition\\\"},{\\\"$ref\\\":\\\"#/definitions/StringValueDefWithCondition\\\"},{\\\"items\\\":{\\\"$ref\\\":\\\"#/definitions/StringFieldDef\\\"},\\\"type\\\":\\\"array\\\"},{\\\"type\\\":\\\"null\\\"}],\\\"description\\\":\\\"The tooltip text to show upon mouse hover. Specifying `tooltip` encoding overrides [the `tooltip` property in the mark definition](https://vega.github.io/vega-lite/docs/mark.html#mark-def).\\\\n\\\\nSee the [`tooltip`](https://vega.github.io/vega-lite/docs/tooltip.html) documentation for a detailed discussion about tooltip in Vega-Lite.\\\"},\\\"url\\\":{\\\"additionalProperties\\\":false,\\\"properties\\\":{\\\"aggregate\\\":{\\\"$ref\\\":\\\"#/definitions/Aggregate\\\",\\\"description\\\":\\\"Aggregation function for the field (e.g., `\\\\\\\"mean\\\\\\\"`, `\\\\\\\"sum\\\\\\\"`, `\\\\\\\"median\\\\\\\"`, `\\\\\\\"min\\\\\\\"`, `\\\\\\\"max\\\\\\\"`, `\\\\\\\"count\\\\\\\"`).\\\\n\\\\n__Default value:__ `undefined` (None)\\\\n\\\\n__See also:__ [`aggregate`](https://vega.github.io/vega-lite/docs/aggregate.html) documentation.\\\"},\\\"band\\\":{\\\"description\\\":\\\"For rect-based marks (`rect`, `bar`, and `image`), mark size relative to bandwidth of [band scales](https://vega.github.io/vega-lite/docs/scale.html#band), bins or time units. If set to `1`, the mark size is set to the bandwidth, the bin interval, or the time unit interval. If set to `0.5`, the mark size is half of the bandwidth or the time unit interval.\\\\n\\\\nFor other marks, relative position on a band of a stacked, binned, time unit or band scale. If set to `0`, the marks will be positioned at the beginning of the band. If set to `0.5`, the marks will be positioned in the middle of the band.\\\",\\\"maximum\\\":1,\\\"minimum\\\":0,\\\"type\\\":\\\"number\\\"},\\\"bin\\\":{\\\"anyOf\\\":[{\\\"type\\\":\\\"boolean\\\"},{\\\"$ref\\\":\\\"#/definitions/BinParams\\\"},{\\\"const\\\":\\\"binned\\\",\\\"type\\\":\\\"string\\\"},{\\\"type\\\":\\\"null\\\"}],\\\"description\\\":\\\"A flag for binning a `quantitative` field, [an object defining binning parameters](https://vega.github.io/vega-lite/docs/bin.html#params), or indicating that the data for `x` or `y` channel are binned before they are imported into Vega-Lite (`\\\\\\\"binned\\\\\\\"`).\\\\n\\\\n- If `true`, default [binning parameters](https://vega.github.io/vega-lite/docs/bin.html) will be applied.\\\\n\\\\n- If `\\\\\\\"binned\\\\\\\"`, this indicates that the data for the `x` (or `y`) channel are already binned. You can map the bin-start field to `x` (or `y`) and the bin-end field to `x2` (or `y2`). The scale and axis will be formatted similar to binning in Vega-Lite.  To adjust the axis ticks based on the bin step, you can also set the axis's [`tickMinStep`](https://vega.github.io/vega-lite/docs/axis.html#ticks) property.\\\\n\\\\n__Default value:__ `false`\\\\n\\\\n__See also:__ [`bin`](https://vega.github.io/vega-lite/docs/bin.html) documentation.\\\"},\\\"condition\\\":{\\\"anyOf\\\":[{\\\"anyOf\\\":[{\\\"$ref\\\":\\\"#/definitions/ConditionalValueDef<(string|ExprRef)>\\\"},{\\\"items\\\":{\\\"$ref\\\":\\\"#/definitions/ConditionalValueDef<(string|ExprRef)>\\\"},\\\"type\\\":\\\"array\\\"}],\\\"description\\\":\\\"One or more value definition(s) with [a selection or a test predicate](https://vega.github.io/vega-lite/docs/condition.html).\\\\n\\\\n__Note:__ A field definition's `condition` property can only contain [conditional value definitions](https://vega.github.io/vega-lite/docs/condition.html#value) since Vega-Lite only allows at most one encoded field per encoding channel.\\\"},{\\\"anyOf\\\":[{\\\"$ref\\\":\\\"#/definitions/ConditionalMarkPropFieldOrDatumDef\\\"},{\\\"$ref\\\":\\\"#/definitions/ConditionalValueDef<(string|null|ExprRef)>\\\"},{\\\"items\\\":{\\\"$ref\\\":\\\"#/definitions/ConditionalValueDef<(string|null|ExprRef)>\\\"},\\\"type\\\":\\\"array\\\"}],\\\"description\\\":\\\"A field definition or one or more value definition(s) with a selection predicate.\\\"}],\\\"description\\\":\\\"One or more value definition(s) with [a selection or a test predicate](https://vega.github.io/vega-lite/docs/condition.html).\\\\n\\\\n__Note:__ A field definition's `condition` property can only contain [conditional value definitions](https://vega.github.io/vega-lite/docs/condition.html#value) since Vega-Lite only allows at most one encoded field per encoding channel.\\\"},\\\"field\\\":{\\\"$ref\\\":\\\"#/definitions/Field\\\",\\\"description\\\":\\\"__Required.__ A string defining the name of the field from which to pull a data value or an object defining iterated values from the [`repeat`](https://vega.github.io/vega-lite/docs/repeat.html) operator.\\\\n\\\\n__See also:__ [`field`](https://vega.github.io/vega-lite/docs/field.html) documentation.\\\\n\\\\n__Notes:__ 1)  Dots (`.`) and brackets (`[` and `]`) can be used to access nested objects (e.g., `\\\\\\\"field\\\\\\\": \\\\\\\"foo.bar\\\\\\\"` and `\\\\\\\"field\\\\\\\": \\\\\\\"foo['bar']\\\\\\\"`). If field names contain dots or brackets but are not nested, you can use `\\\\\\\\\\\\\\\\` to escape dots and brackets (e.g., `\\\\\\\"a\\\\\\\\\\\\\\\\.b\\\\\\\"` and `\\\\\\\"a\\\\\\\\\\\\\\\\[0\\\\\\\\\\\\\\\\]\\\\\\\"`). See more details about escaping in the [field documentation](https://vega.github.io/vega-lite/docs/field.html). 2) `field` is not required if `aggregate` is `count`.\\\"},\\\"format\\\":{\\\"anyOf\\\":[{\\\"type\\\":\\\"string\\\"},{\\\"$ref\\\":\\\"#/definitions/Dict<unknown>\\\"}],\\\"description\\\":\\\"When used with the default `\\\\\\\"number\\\\\\\"` and `\\\\\\\"time\\\\\\\"` format type, the text formatting pattern for labels of guides (axes, legends, headers) and text marks.\\\\n\\\\n- If the format type is `\\\\\\\"number\\\\\\\"` (e.g., for quantitative fields), this is D3's [number format pattern](https://github.com/d3/d3-format#locale_format). - If the format type is `\\\\\\\"time\\\\\\\"` (e.g., for temporal fields), this is D3's [time format pattern](https://github.com/d3/d3-time-format#locale_format).\\\\n\\\\nSee the [format documentation](https://vega.github.io/vega-lite/docs/format.html) for more examples.\\\\n\\\\nWhen used with a [custom `formatType`](https://vega.github.io/vega-lite/docs/config.html#custom-format-type), this value will be passed as `format` alongside `datum.value` to the registered function.\\\\n\\\\n__Default value:__  Derived from [numberFormat](https://vega.github.io/vega-lite/docs/config.html#format) config for number format and from [timeFormat](https://vega.github.io/vega-lite/docs/config.html#format) config for time format.\\\"},\\\"formatType\\\":{\\\"description\\\":\\\"The format type for labels. One of `\\\\\\\"number\\\\\\\"`, `\\\\\\\"time\\\\\\\"`, or a [registered custom format type](https://vega.github.io/vega-lite/docs/config.html#custom-format-type).\\\\n\\\\n__Default value:__ - `\\\\\\\"time\\\\\\\"` for temporal fields and ordinal and nominal fields with `timeUnit`. - `\\\\\\\"number\\\\\\\"` for quantitative fields as well as ordinal and nominal fields without `timeUnit`.\\\",\\\"type\\\":\\\"string\\\"},\\\"labelExpr\\\":{\\\"description\\\":\\\"[Vega expression](https://vega.github.io/vega/docs/expressions/) for customizing labels text.\\\\n\\\\n__Note:__ The label text and value can be assessed via the `label` and `value` properties of the axis's backing `datum` object.\\\",\\\"type\\\":\\\"string\\\"},\\\"timeUnit\\\":{\\\"anyOf\\\":[{\\\"$ref\\\":\\\"#/definitions/TimeUnit\\\"},{\\\"$ref\\\":\\\"#/definitions/TimeUnitParams\\\"}],\\\"description\\\":\\\"Time unit (e.g., `year`, `yearmonth`, `month`, `hours`) for a temporal field. or [a temporal field that gets casted as ordinal](https://vega.github.io/vega-lite/docs/type.html#cast).\\\\n\\\\n__Default value:__ `undefined` (None)\\\\n\\\\n__See also:__ [`timeUnit`](https://vega.github.io/vega-lite/docs/timeunit.html) documentation.\\\"},\\\"title\\\":{\\\"anyOf\\\":[{\\\"$ref\\\":\\\"#/definitions/Text\\\"},{\\\"type\\\":\\\"null\\\"}],\\\"description\\\":\\\"A title for the field. If `null`, the title will be removed.\\\\n\\\\n__Default value:__  derived from the field's name and transformation function (`aggregate`, `bin` and `timeUnit`). If the field has an aggregate function, the function is displayed as part of the title (e.g., `\\\\\\\"Sum of Profit\\\\\\\"`). If the field is binned or has a time unit applied, the applied function is shown in parentheses (e.g., `\\\\\\\"Profit (binned)\\\\\\\"`, `\\\\\\\"Transaction Date (year-month)\\\\\\\"`). Otherwise, the title is simply the field name.\\\\n\\\\n__Notes__:\\\\n\\\\n1) You can customize the default field title format by providing the [`fieldTitle`](https://vega.github.io/vega-lite/docs/config.html#top-level-config) property in the [config](https://vega.github.io/vega-lite/docs/config.html) or [`fieldTitle` function via the `compile` function's options](https://vega.github.io/vega-lite/docs/compile.html#field-title).\\\\n\\\\n2) If both field definition's `title` and axis, header, or legend `title` are defined, axis/header/legend title will be used.\\\"},\\\"type\\\":{\\\"$ref\\\":\\\"#/definitions/StandardType\\\",\\\"description\\\":\\\"The type of measurement (`\\\\\\\"quantitative\\\\\\\"`, `\\\\\\\"temporal\\\\\\\"`, `\\\\\\\"ordinal\\\\\\\"`, or `\\\\\\\"nominal\\\\\\\"`) for the encoded field or constant value (`datum`). It can also be a `\\\\\\\"geojson\\\\\\\"` type for encoding ['geoshape'](https://vega.github.io/vega-lite/docs/geoshape.html).\\\\n\\\\nVega-Lite automatically infers data types in many cases as discussed below. However, type is required for a field if: (1) the field is not nominal and the field encoding has no specified `aggregate` (except `argmin` and `argmax`), `bin`, scale type, custom `sort` order, nor `timeUnit` or (2) if you wish to use an ordinal scale for a field with `bin` or `timeUnit`.\\\\n\\\\n__Default value:__\\\\n\\\\n1) For a data `field`, `\\\\\\\"nominal\\\\\\\"` is the default data type unless the field encoding has `aggregate`, `channel`, `bin`, scale type, `sort`, or `timeUnit` that satisfies the following criteria: - `\\\\\\\"quantitative\\\\\\\"` is the default type if (1) the encoded field contains `bin` or `aggregate` except `\\\\\\\"argmin\\\\\\\"` and `\\\\\\\"argmax\\\\\\\"`, (2) the encoding channel is `latitude` or `longitude` channel or (3) if the specified scale type is [a quantitative scale](https://vega.github.io/vega-lite/docs/scale.html#type). - `\\\\\\\"temporal\\\\\\\"` is the default type if (1) the encoded field contains `timeUnit` or (2) the specified scale type is a time or utc scale - `ordinal\\\\\\\"\\\\\\\"` is the default type if (1) the encoded field contains a [custom `sort` order](https://vega.github.io/vega-lite/docs/sort.html#specifying-custom-sort-order), (2) the specified scale type is an ordinal/point/band scale, or (3) the encoding channel is `order`.\\\\n\\\\n2) For a constant value in data domain (`datum`): - `\\\\\\\"quantitative\\\\\\\"` if the datum is a number - `\\\\\\\"nominal\\\\\\\"` if the datum is a string - `\\\\\\\"temporal\\\\\\\"` if the datum is [a date time object](https://vega.github.io/vega-lite/docs/datetime.html)\\\\n\\\\n__Note:__ - Data `type` describes the semantics of the data rather than the primitive data types (number, string, etc.). The same primitive data type can have different types of measurement. For example, numeric data can represent quantitative, ordinal, or nominal data. - Data values for a temporal field can be either a date-time string (e.g., `\\\\\\\"2015-03-07 12:32:17\\\\\\\"`, `\\\\\\\"17:01\\\\\\\"`, `\\\\\\\"2015-03-16\\\\\\\"`. `\\\\\\\"2015\\\\\\\"`) or a timestamp number (e.g., `1552199579097`). - When using with [`bin`](https://vega.github.io/vega-lite/docs/bin.html), the `type` property can be either `\\\\\\\"quantitative\\\\\\\"` (for using a linear bin scale) or [`\\\\\\\"ordinal\\\\\\\"` (for using an ordinal bin scale)](https://vega.github.io/vega-lite/docs/type.html#cast-bin). - When using with [`timeUnit`](https://vega.github.io/vega-lite/docs/timeunit.html), the `type` property can be either `\\\\\\\"temporal\\\\\\\"` (default, for using a temporal scale) or [`\\\\\\\"ordinal\\\\\\\"` (for using an ordinal scale)](https://vega.github.io/vega-lite/docs/type.html#cast-bin). - When using with [`aggregate`](https://vega.github.io/vega-lite/docs/aggregate.html), the `type` property refers to the post-aggregation data type. For example, we can calculate count `distinct` of a categorical field `\\\\\\\"cat\\\\\\\"` using `{\\\\\\\"aggregate\\\\\\\": \\\\\\\"distinct\\\\\\\", \\\\\\\"field\\\\\\\": \\\\\\\"cat\\\\\\\"}`. The `\\\\\\\"type\\\\\\\"` of the aggregate output is `\\\\\\\"quantitative\\\\\\\"`. - Secondary channels (e.g., `x2`, `y2`, `xError`, `yError`) do not have `type` as they must have exactly the same type as their primary channels (e.g., `x`, `y`).\\\\n\\\\n__See also:__ [`type`](https://vega.github.io/vega-lite/docs/type.html) documentation.\\\"},\\\"value\\\":{\\\"anyOf\\\":[{\\\"type\\\":\\\"string\\\"},{\\\"type\\\":\\\"null\\\"},{\\\"$ref\\\":\\\"#/definitions/ExprRef\\\"}],\\\"description\\\":\\\"A constant value in visual domain (e.g., `\\\\\\\"red\\\\\\\"` / `\\\\\\\"#0099ff\\\\\\\"` / [gradient definition](https://vega.github.io/vega-lite/docs/types.html#gradient) for color, values between `0` to `1` for opacity).\\\"}},\\\"type\\\":\\\"object\\\"},\\\"x\\\":{\\\"additionalProperties\\\":false,\\\"properties\\\":{\\\"aggregate\\\":{\\\"$ref\\\":\\\"#/definitions/Aggregate\\\",\\\"description\\\":\\\"Aggregation function for the field (e.g., `\\\\\\\"mean\\\\\\\"`, `\\\\\\\"sum\\\\\\\"`, `\\\\\\\"median\\\\\\\"`, `\\\\\\\"min\\\\\\\"`, `\\\\\\\"max\\\\\\\"`, `\\\\\\\"count\\\\\\\"`).\\\\n\\\\n__Default value:__ `undefined` (None)\\\\n\\\\n__See also:__ [`aggregate`](https://vega.github.io/vega-lite/docs/aggregate.html) documentation.\\\"},\\\"axis\\\":{\\\"anyOf\\\":[{\\\"$ref\\\":\\\"#/definitions/Axis\\\"},{\\\"type\\\":\\\"null\\\"}],\\\"description\\\":\\\"An object defining properties of axis's gridlines, ticks and labels. If `null`, the axis for the encoding channel will be removed.\\\\n\\\\n__Default value:__ If undefined, default [axis properties](https://vega.github.io/vega-lite/docs/axis.html) are applied.\\\\n\\\\n__See also:__ [`axis`](https://vega.github.io/vega-lite/docs/axis.html) documentation.\\\"},\\\"band\\\":{\\\"description\\\":\\\"For rect-based marks (`rect`, `bar`, and `image`), mark size relative to bandwidth of [band scales](https://vega.github.io/vega-lite/docs/scale.html#band), bins or time units. If set to `1`, the mark size is set to the bandwidth, the bin interval, or the time unit interval. If set to `0.5`, the mark size is half of the bandwidth or the time unit interval.\\\\n\\\\nFor other marks, relative position on a band of a stacked, binned, time unit or band scale. If set to `0`, the marks will be positioned at the beginning of the band. If set to `0.5`, the marks will be positioned in the middle of the band.\\\",\\\"maximum\\\":1,\\\"minimum\\\":0,\\\"type\\\":\\\"number\\\"},\\\"bin\\\":{\\\"anyOf\\\":[{\\\"type\\\":\\\"boolean\\\"},{\\\"$ref\\\":\\\"#/definitions/BinParams\\\"},{\\\"const\\\":\\\"binned\\\",\\\"type\\\":\\\"string\\\"},{\\\"type\\\":\\\"null\\\"}],\\\"description\\\":\\\"A flag for binning a `quantitative` field, [an object defining binning parameters](https://vega.github.io/vega-lite/docs/bin.html#params), or indicating that the data for `x` or `y` channel are binned before they are imported into Vega-Lite (`\\\\\\\"binned\\\\\\\"`).\\\\n\\\\n- If `true`, default [binning parameters](https://vega.github.io/vega-lite/docs/bin.html) will be applied.\\\\n\\\\n- If `\\\\\\\"binned\\\\\\\"`, this indicates that the data for the `x` (or `y`) channel are already binned. You can map the bin-start field to `x` (or `y`) and the bin-end field to `x2` (or `y2`). The scale and axis will be formatted similar to binning in Vega-Lite.  To adjust the axis ticks based on the bin step, you can also set the axis's [`tickMinStep`](https://vega.github.io/vega-lite/docs/axis.html#ticks) property.\\\\n\\\\n__Default value:__ `false`\\\\n\\\\n__See also:__ [`bin`](https://vega.github.io/vega-lite/docs/bin.html) documentation.\\\"},\\\"datum\\\":{\\\"anyOf\\\":[{\\\"$ref\\\":\\\"#/definitions/PrimitiveValue\\\"},{\\\"$ref\\\":\\\"#/definitions/DateTime\\\"},{\\\"$ref\\\":\\\"#/definitions/ExprRef\\\"},{\\\"$ref\\\":\\\"#/definitions/RepeatRef\\\"}],\\\"description\\\":\\\"A constant value in data domain.\\\"},\\\"field\\\":{\\\"$ref\\\":\\\"#/definitions/Field\\\",\\\"description\\\":\\\"__Required.__ A string defining the name of the field from which to pull a data value or an object defining iterated values from the [`repeat`](https://vega.github.io/vega-lite/docs/repeat.html) operator.\\\\n\\\\n__See also:__ [`field`](https://vega.github.io/vega-lite/docs/field.html) documentation.\\\\n\\\\n__Notes:__ 1)  Dots (`.`) and brackets (`[` and `]`) can be used to access nested objects (e.g., `\\\\\\\"field\\\\\\\": \\\\\\\"foo.bar\\\\\\\"` and `\\\\\\\"field\\\\\\\": \\\\\\\"foo['bar']\\\\\\\"`). If field names contain dots or brackets but are not nested, you can use `\\\\\\\\\\\\\\\\` to escape dots and brackets (e.g., `\\\\\\\"a\\\\\\\\\\\\\\\\.b\\\\\\\"` and `\\\\\\\"a\\\\\\\\\\\\\\\\[0\\\\\\\\\\\\\\\\]\\\\\\\"`). See more details about escaping in the [field documentation](https://vega.github.io/vega-lite/docs/field.html). 2) `field` is not required if `aggregate` is `count`.\\\"},\\\"impute\\\":{\\\"anyOf\\\":[{\\\"$ref\\\":\\\"#/definitions/ImputeParams\\\"},{\\\"type\\\":\\\"null\\\"}],\\\"description\\\":\\\"An object defining the properties of the Impute Operation to be applied. The field value of the other positional channel is taken as `key` of the `Impute` Operation. The field of the `color` channel if specified is used as `groupby` of the `Impute` Operation.\\\\n\\\\n__See also:__ [`impute`](https://vega.github.io/vega-lite/docs/impute.html) documentation.\\\"},\\\"scale\\\":{\\\"anyOf\\\":[{\\\"$ref\\\":\\\"#/definitions/Scale\\\"},{\\\"type\\\":\\\"null\\\"}],\\\"description\\\":\\\"An object defining properties of the channel's scale, which is the function that transforms values in the data domain (numbers, dates, strings, etc) to visual values (pixels, colors, sizes) of the encoding channels.\\\\n\\\\nIf `null`, the scale will be [disabled and the data value will be directly encoded](https://vega.github.io/vega-lite/docs/scale.html#disable).\\\\n\\\\n__Default value:__ If undefined, default [scale properties](https://vega.github.io/vega-lite/docs/scale.html) are applied.\\\\n\\\\n__See also:__ [`scale`](https://vega.github.io/vega-lite/docs/scale.html) documentation.\\\"},\\\"sort\\\":{\\\"$ref\\\":\\\"#/definitions/Sort\\\",\\\"description\\\":\\\"Sort order for the encoded field.\\\\n\\\\nFor continuous fields (quantitative or temporal), `sort` can be either `\\\\\\\"ascending\\\\\\\"` or `\\\\\\\"descending\\\\\\\"`.\\\\n\\\\nFor discrete fields, `sort` can be one of the following: - `\\\\\\\"ascending\\\\\\\"` or `\\\\\\\"descending\\\\\\\"` -- for sorting by the values' natural order in JavaScript. - [A string indicating an encoding channel name to sort by](https://vega.github.io/vega-lite/docs/sort.html#sort-by-encoding) (e.g., `\\\\\\\"x\\\\\\\"` or `\\\\\\\"y\\\\\\\"`) with an optional minus prefix for descending sort (e.g., `\\\\\\\"-x\\\\\\\"` to sort by x-field, descending). This channel string is short-form of [a sort-by-encoding definition](https://vega.github.io/vega-lite/docs/sort.html#sort-by-encoding). For example, `\\\\\\\"sort\\\\\\\": \\\\\\\"-x\\\\\\\"` is equivalent to `\\\\\\\"sort\\\\\\\": {\\\\\\\"encoding\\\\\\\": \\\\\\\"x\\\\\\\", \\\\\\\"order\\\\\\\": \\\\\\\"descending\\\\\\\"}`. - [A sort field definition](https://vega.github.io/vega-lite/docs/sort.html#sort-field) for sorting by another field. - [An array specifying the field values in preferred order](https://vega.github.io/vega-lite/docs/sort.html#sort-array). In this case, the sort order will obey the values in the array, followed by any unspecified values in their original order. For discrete time field, values in the sort array can be [date-time definition objects](types#datetime). In addition, for time units `\\\\\\\"month\\\\\\\"` and `\\\\\\\"day\\\\\\\"`, the values can be the month or day names (case insensitive) or their 3-letter initials (e.g., `\\\\\\\"Mon\\\\\\\"`, `\\\\\\\"Tue\\\\\\\"`). - `null` indicating no sort.\\\\n\\\\n__Default value:__ `\\\\\\\"ascending\\\\\\\"`\\\\n\\\\n__Note:__ `null` and sorting by another channel is not supported for `row` and `column`.\\\\n\\\\n__See also:__ [`sort`](https://vega.github.io/vega-lite/docs/sort.html) documentation.\\\"},\\\"stack\\\":{\\\"anyOf\\\":[{\\\"$ref\\\":\\\"#/definitions/StackOffset\\\"},{\\\"type\\\":\\\"null\\\"},{\\\"type\\\":\\\"boolean\\\"}],\\\"description\\\":\\\"Type of stacking offset if the field should be stacked. `stack` is only applicable for `x`, `y`, `theta`, and `radius` channels with continuous domains. For example, `stack` of `y` can be used to customize stacking for a vertical bar chart.\\\\n\\\\n`stack` can be one of the following values: - `\\\\\\\"zero\\\\\\\"` or `true`: stacking with baseline offset at zero value of the scale (for creating typical stacked [bar](https://vega.github.io/vega-lite/docs/stack.html#bar) and [area](https://vega.github.io/vega-lite/docs/stack.html#area) chart). - `\\\\\\\"normalize\\\\\\\"` - stacking with normalized domain (for creating [normalized stacked bar and area charts](https://vega.github.io/vega-lite/docs/stack.html#normalized). <br/> -`\\\\\\\"center\\\\\\\"` - stacking with center baseline (for [streamgraph](https://vega.github.io/vega-lite/docs/stack.html#streamgraph)). - `null` or `false` - No-stacking. This will produce layered [bar](https://vega.github.io/vega-lite/docs/stack.html#layered-bar-chart) and area chart.\\\\n\\\\n__Default value:__ `zero` for plots with all of the following conditions are true: (1) the mark is `bar`, `area`, or `arc`; (2) the stacked measure channel (x or y) has a linear scale; (3) At least one of non-position channels mapped to an unaggregated field that is different from x and y. Otherwise, `null` by default.\\\\n\\\\n__See also:__ [`stack`](https://vega.github.io/vega-lite/docs/stack.html) documentation.\\\"},\\\"timeUnit\\\":{\\\"anyOf\\\":[{\\\"$ref\\\":\\\"#/definitions/TimeUnit\\\"},{\\\"$ref\\\":\\\"#/definitions/TimeUnitParams\\\"}],\\\"description\\\":\\\"Time unit (e.g., `year`, `yearmonth`, `month`, `hours`) for a temporal field. or [a temporal field that gets casted as ordinal](https://vega.github.io/vega-lite/docs/type.html#cast).\\\\n\\\\n__Default value:__ `undefined` (None)\\\\n\\\\n__See also:__ [`timeUnit`](https://vega.github.io/vega-lite/docs/timeunit.html) documentation.\\\"},\\\"title\\\":{\\\"anyOf\\\":[{\\\"$ref\\\":\\\"#/definitions/Text\\\"},{\\\"type\\\":\\\"null\\\"}],\\\"description\\\":\\\"A title for the field. If `null`, the title will be removed.\\\\n\\\\n__Default value:__  derived from the field's name and transformation function (`aggregate`, `bin` and `timeUnit`). If the field has an aggregate function, the function is displayed as part of the title (e.g., `\\\\\\\"Sum of Profit\\\\\\\"`). If the field is binned or has a time unit applied, the applied function is shown in parentheses (e.g., `\\\\\\\"Profit (binned)\\\\\\\"`, `\\\\\\\"Transaction Date (year-month)\\\\\\\"`). Otherwise, the title is simply the field name.\\\\n\\\\n__Notes__:\\\\n\\\\n1) You can customize the default field title format by providing the [`fieldTitle`](https://vega.github.io/vega-lite/docs/config.html#top-level-config) property in the [config](https://vega.github.io/vega-lite/docs/config.html) or [`fieldTitle` function via the `compile` function's options](https://vega.github.io/vega-lite/docs/compile.html#field-title).\\\\n\\\\n2) If both field definition's `title` and axis, header, or legend `title` are defined, axis/header/legend title will be used.\\\"},\\\"type\\\":{\\\"anyOf\\\":[{\\\"$ref\\\":\\\"#/definitions/StandardType\\\",\\\"description\\\":\\\"The type of measurement (`\\\\\\\"quantitative\\\\\\\"`, `\\\\\\\"temporal\\\\\\\"`, `\\\\\\\"ordinal\\\\\\\"`, or `\\\\\\\"nominal\\\\\\\"`) for the encoded field or constant value (`datum`). It can also be a `\\\\\\\"geojson\\\\\\\"` type for encoding ['geoshape'](https://vega.github.io/vega-lite/docs/geoshape.html).\\\\n\\\\nVega-Lite automatically infers data types in many cases as discussed below. However, type is required for a field if: (1) the field is not nominal and the field encoding has no specified `aggregate` (except `argmin` and `argmax`), `bin`, scale type, custom `sort` order, nor `timeUnit` or (2) if you wish to use an ordinal scale for a field with `bin` or `timeUnit`.\\\\n\\\\n__Default value:__\\\\n\\\\n1) For a data `field`, `\\\\\\\"nominal\\\\\\\"` is the default data type unless the field encoding has `aggregate`, `channel`, `bin`, scale type, `sort`, or `timeUnit` that satisfies the following criteria: - `\\\\\\\"quantitative\\\\\\\"` is the default type if (1) the encoded field contains `bin` or `aggregate` except `\\\\\\\"argmin\\\\\\\"` and `\\\\\\\"argmax\\\\\\\"`, (2) the encoding channel is `latitude` or `longitude` channel or (3) if the specified scale type is [a quantitative scale](https://vega.github.io/vega-lite/docs/scale.html#type). - `\\\\\\\"temporal\\\\\\\"` is the default type if (1) the encoded field contains `timeUnit` or (2) the specified scale type is a time or utc scale - `ordinal\\\\\\\"\\\\\\\"` is the default type if (1) the encoded field contains a [custom `sort` order](https://vega.github.io/vega-lite/docs/sort.html#specifying-custom-sort-order), (2) the specified scale type is an ordinal/point/band scale, or (3) the encoding channel is `order`.\\\\n\\\\n2) For a constant value in data domain (`datum`): - `\\\\\\\"quantitative\\\\\\\"` if the datum is a number - `\\\\\\\"nominal\\\\\\\"` if the datum is a string - `\\\\\\\"temporal\\\\\\\"` if the datum is [a date time object](https://vega.github.io/vega-lite/docs/datetime.html)\\\\n\\\\n__Note:__ - Data `type` describes the semantics of the data rather than the primitive data types (number, string, etc.). The same primitive data type can have different types of measurement. For example, numeric data can represent quantitative, ordinal, or nominal data. - Data values for a temporal field can be either a date-time string (e.g., `\\\\\\\"2015-03-07 12:32:17\\\\\\\"`, `\\\\\\\"17:01\\\\\\\"`, `\\\\\\\"2015-03-16\\\\\\\"`. `\\\\\\\"2015\\\\\\\"`) or a timestamp number (e.g., `1552199579097`). - When using with [`bin`](https://vega.github.io/vega-lite/docs/bin.html), the `type` property can be either `\\\\\\\"quantitative\\\\\\\"` (for using a linear bin scale) or [`\\\\\\\"ordinal\\\\\\\"` (for using an ordinal bin scale)](https://vega.github.io/vega-lite/docs/type.html#cast-bin). - When using with [`timeUnit`](https://vega.github.io/vega-lite/docs/timeunit.html), the `type` property can be either `\\\\\\\"temporal\\\\\\\"` (default, for using a temporal scale) or [`\\\\\\\"ordinal\\\\\\\"` (for using an ordinal scale)](https://vega.github.io/vega-lite/docs/type.html#cast-bin). - When using with [`aggregate`](https://vega.github.io/vega-lite/docs/aggregate.html), the `type` property refers to the post-aggregation data type. For example, we can calculate count `distinct` of a categorical field `\\\\\\\"cat\\\\\\\"` using `{\\\\\\\"aggregate\\\\\\\": \\\\\\\"distinct\\\\\\\", \\\\\\\"field\\\\\\\": \\\\\\\"cat\\\\\\\"}`. The `\\\\\\\"type\\\\\\\"` of the aggregate output is `\\\\\\\"quantitative\\\\\\\"`. - Secondary channels (e.g., `x2`, `y2`, `xError`, `yError`) do not have `type` as they must have exactly the same type as their primary channels (e.g., `x`, `y`).\\\\n\\\\n__See also:__ [`type`](https://vega.github.io/vega-lite/docs/type.html) documentation.\\\"},{\\\"$ref\\\":\\\"#/definitions/Type\\\",\\\"description\\\":\\\"The type of measurement (`\\\\\\\"quantitative\\\\\\\"`, `\\\\\\\"temporal\\\\\\\"`, `\\\\\\\"ordinal\\\\\\\"`, or `\\\\\\\"nominal\\\\\\\"`) for the encoded field or constant value (`datum`). It can also be a `\\\\\\\"geojson\\\\\\\"` type for encoding ['geoshape'](https://vega.github.io/vega-lite/docs/geoshape.html).\\\\n\\\\nVega-Lite automatically infers data types in many cases as discussed below. However, type is required for a field if: (1) the field is not nominal and the field encoding has no specified `aggregate` (except `argmin` and `argmax`), `bin`, scale type, custom `sort` order, nor `timeUnit` or (2) if you wish to use an ordinal scale for a field with `bin` or `timeUnit`.\\\\n\\\\n__Default value:__\\\\n\\\\n1) For a data `field`, `\\\\\\\"nominal\\\\\\\"` is the default data type unless the field encoding has `aggregate`, `channel`, `bin`, scale type, `sort`, or `timeUnit` that satisfies the following criteria: - `\\\\\\\"quantitative\\\\\\\"` is the default type if (1) the encoded field contains `bin` or `aggregate` except `\\\\\\\"argmin\\\\\\\"` and `\\\\\\\"argmax\\\\\\\"`, (2) the encoding channel is `latitude` or `longitude` channel or (3) if the specified scale type is [a quantitative scale](https://vega.github.io/vega-lite/docs/scale.html#type). - `\\\\\\\"temporal\\\\\\\"` is the default type if (1) the encoded field contains `timeUnit` or (2) the specified scale type is a time or utc scale - `ordinal\\\\\\\"\\\\\\\"` is the default type if (1) the encoded field contains a [custom `sort` order](https://vega.github.io/vega-lite/docs/sort.html#specifying-custom-sort-order), (2) the specified scale type is an ordinal/point/band scale, or (3) the encoding channel is `order`.\\\\n\\\\n2) For a constant value in data domain (`datum`): - `\\\\\\\"quantitative\\\\\\\"` if the datum is a number - `\\\\\\\"nominal\\\\\\\"` if the datum is a string - `\\\\\\\"temporal\\\\\\\"` if the datum is [a date time object](https://vega.github.io/vega-lite/docs/datetime.html)\\\\n\\\\n__Note:__ - Data `type` describes the semantics of the data rather than the primitive data types (number, string, etc.). The same primitive data type can have different types of measurement. For example, numeric data can represent quantitative, ordinal, or nominal data. - Data values for a temporal field can be either a date-time string (e.g., `\\\\\\\"2015-03-07 12:32:17\\\\\\\"`, `\\\\\\\"17:01\\\\\\\"`, `\\\\\\\"2015-03-16\\\\\\\"`. `\\\\\\\"2015\\\\\\\"`) or a timestamp number (e.g., `1552199579097`). - When using with [`bin`](https://vega.github.io/vega-lite/docs/bin.html), the `type` property can be either `\\\\\\\"quantitative\\\\\\\"` (for using a linear bin scale) or [`\\\\\\\"ordinal\\\\\\\"` (for using an ordinal bin scale)](https://vega.github.io/vega-lite/docs/type.html#cast-bin). - When using with [`timeUnit`](https://vega.github.io/vega-lite/docs/timeunit.html), the `type` property can be either `\\\\\\\"temporal\\\\\\\"` (default, for using a temporal scale) or [`\\\\\\\"ordinal\\\\\\\"` (for using an ordinal scale)](https://vega.github.io/vega-lite/docs/type.html#cast-bin). - When using with [`aggregate`](https://vega.github.io/vega-lite/docs/aggregate.html), the `type` property refers to the post-aggregation data type. For example, we can calculate count `distinct` of a categorical field `\\\\\\\"cat\\\\\\\"` using `{\\\\\\\"aggregate\\\\\\\": \\\\\\\"distinct\\\\\\\", \\\\\\\"field\\\\\\\": \\\\\\\"cat\\\\\\\"}`. The `\\\\\\\"type\\\\\\\"` of the aggregate output is `\\\\\\\"quantitative\\\\\\\"`. - Secondary channels (e.g., `x2`, `y2`, `xError`, `yError`) do not have `type` as they must have exactly the same type as their primary channels (e.g., `x`, `y`).\\\\n\\\\n__See also:__ [`type`](https://vega.github.io/vega-lite/docs/type.html) documentation.\\\"}],\\\"description\\\":\\\"The type of measurement (`\\\\\\\"quantitative\\\\\\\"`, `\\\\\\\"temporal\\\\\\\"`, `\\\\\\\"ordinal\\\\\\\"`, or `\\\\\\\"nominal\\\\\\\"`) for the encoded field or constant value (`datum`). It can also be a `\\\\\\\"geojson\\\\\\\"` type for encoding ['geoshape'](https://vega.github.io/vega-lite/docs/geoshape.html).\\\\n\\\\nVega-Lite automatically infers data types in many cases as discussed below. However, type is required for a field if: (1) the field is not nominal and the field encoding has no specified `aggregate` (except `argmin` and `argmax`), `bin`, scale type, custom `sort` order, nor `timeUnit` or (2) if you wish to use an ordinal scale for a field with `bin` or `timeUnit`.\\\\n\\\\n__Default value:__\\\\n\\\\n1) For a data `field`, `\\\\\\\"nominal\\\\\\\"` is the default data type unless the field encoding has `aggregate`, `channel`, `bin`, scale type, `sort`, or `timeUnit` that satisfies the following criteria: - `\\\\\\\"quantitative\\\\\\\"` is the default type if (1) the encoded field contains `bin` or `aggregate` except `\\\\\\\"argmin\\\\\\\"` and `\\\\\\\"argmax\\\\\\\"`, (2) the encoding channel is `latitude` or `longitude` channel or (3) if the specified scale type is [a quantitative scale](https://vega.github.io/vega-lite/docs/scale.html#type). - `\\\\\\\"temporal\\\\\\\"` is the default type if (1) the encoded field contains `timeUnit` or (2) the specified scale type is a time or utc scale - `ordinal\\\\\\\"\\\\\\\"` is the default type if (1) the encoded field contains a [custom `sort` order](https://vega.github.io/vega-lite/docs/sort.html#specifying-custom-sort-order), (2) the specified scale type is an ordinal/point/band scale, or (3) the encoding channel is `order`.\\\\n\\\\n2) For a constant value in data domain (`datum`): - `\\\\\\\"quantitative\\\\\\\"` if the datum is a number - `\\\\\\\"nominal\\\\\\\"` if the datum is a string - `\\\\\\\"temporal\\\\\\\"` if the datum is [a date time object](https://vega.github.io/vega-lite/docs/datetime.html)\\\\n\\\\n__Note:__ - Data `type` describes the semantics of the data rather than the primitive data types (number, string, etc.). The same primitive data type can have different types of measurement. For example, numeric data can represent quantitative, ordinal, or nominal data. - Data values for a temporal field can be either a date-time string (e.g., `\\\\\\\"2015-03-07 12:32:17\\\\\\\"`, `\\\\\\\"17:01\\\\\\\"`, `\\\\\\\"2015-03-16\\\\\\\"`. `\\\\\\\"2015\\\\\\\"`) or a timestamp number (e.g., `1552199579097`). - When using with [`bin`](https://vega.github.io/vega-lite/docs/bin.html), the `type` property can be either `\\\\\\\"quantitative\\\\\\\"` (for using a linear bin scale) or [`\\\\\\\"ordinal\\\\\\\"` (for using an ordinal bin scale)](https://vega.github.io/vega-lite/docs/type.html#cast-bin). - When using with [`timeUnit`](https://vega.github.io/vega-lite/docs/timeunit.html), the `type` property can be either `\\\\\\\"temporal\\\\\\\"` (default, for using a temporal scale) or [`\\\\\\\"ordinal\\\\\\\"` (for using an ordinal scale)](https://vega.github.io/vega-lite/docs/type.html#cast-bin). - When using with [`aggregate`](https://vega.github.io/vega-lite/docs/aggregate.html), the `type` property refers to the post-aggregation data type. For example, we can calculate count `distinct` of a categorical field `\\\\\\\"cat\\\\\\\"` using `{\\\\\\\"aggregate\\\\\\\": \\\\\\\"distinct\\\\\\\", \\\\\\\"field\\\\\\\": \\\\\\\"cat\\\\\\\"}`. The `\\\\\\\"type\\\\\\\"` of the aggregate output is `\\\\\\\"quantitative\\\\\\\"`. - Secondary channels (e.g., `x2`, `y2`, `xError`, `yError`) do not have `type` as they must have exactly the same type as their primary channels (e.g., `x`, `y`).\\\\n\\\\n__See also:__ [`type`](https://vega.github.io/vega-lite/docs/type.html) documentation.\\\"},\\\"value\\\":{\\\"anyOf\\\":[{\\\"type\\\":\\\"number\\\"},{\\\"const\\\":\\\"width\\\",\\\"type\\\":\\\"string\\\"},{\\\"const\\\":\\\"height\\\",\\\"type\\\":\\\"string\\\"},{\\\"$ref\\\":\\\"#/definitions/ExprRef\\\"}],\\\"description\\\":\\\"A constant value in visual domain (e.g., `\\\\\\\"red\\\\\\\"` / `\\\\\\\"#0099ff\\\\\\\"` / [gradient definition](https://vega.github.io/vega-lite/docs/types.html#gradient) for color, values between `0` to `1` for opacity).\\\"}},\\\"type\\\":\\\"object\\\"},\\\"x2\\\":{\\\"additionalProperties\\\":false,\\\"properties\\\":{\\\"aggregate\\\":{\\\"$ref\\\":\\\"#/definitions/Aggregate\\\",\\\"description\\\":\\\"Aggregation function for the field (e.g., `\\\\\\\"mean\\\\\\\"`, `\\\\\\\"sum\\\\\\\"`, `\\\\\\\"median\\\\\\\"`, `\\\\\\\"min\\\\\\\"`, `\\\\\\\"max\\\\\\\"`, `\\\\\\\"count\\\\\\\"`).\\\\n\\\\n__Default value:__ `undefined` (None)\\\\n\\\\n__See also:__ [`aggregate`](https://vega.github.io/vega-lite/docs/aggregate.html) documentation.\\\"},\\\"band\\\":{\\\"description\\\":\\\"For rect-based marks (`rect`, `bar`, and `image`), mark size relative to bandwidth of [band scales](https://vega.github.io/vega-lite/docs/scale.html#band), bins or time units. If set to `1`, the mark size is set to the bandwidth, the bin interval, or the time unit interval. If set to `0.5`, the mark size is half of the bandwidth or the time unit interval.\\\\n\\\\nFor other marks, relative position on a band of a stacked, binned, time unit or band scale. If set to `0`, the marks will be positioned at the beginning of the band. If set to `0.5`, the marks will be positioned in the middle of the band.\\\",\\\"maximum\\\":1,\\\"minimum\\\":0,\\\"type\\\":\\\"number\\\"},\\\"bin\\\":{\\\"description\\\":\\\"A flag for binning a `quantitative` field, [an object defining binning parameters](https://vega.github.io/vega-lite/docs/bin.html#params), or indicating that the data for `x` or `y` channel are binned before they are imported into Vega-Lite (`\\\\\\\"binned\\\\\\\"`).\\\\n\\\\n- If `true`, default [binning parameters](https://vega.github.io/vega-lite/docs/bin.html) will be applied.\\\\n\\\\n- If `\\\\\\\"binned\\\\\\\"`, this indicates that the data for the `x` (or `y`) channel are already binned. You can map the bin-start field to `x` (or `y`) and the bin-end field to `x2` (or `y2`). The scale and axis will be formatted similar to binning in Vega-Lite.  To adjust the axis ticks based on the bin step, you can also set the axis's [`tickMinStep`](https://vega.github.io/vega-lite/docs/axis.html#ticks) property.\\\\n\\\\n__Default value:__ `false`\\\\n\\\\n__See also:__ [`bin`](https://vega.github.io/vega-lite/docs/bin.html) documentation.\\\",\\\"type\\\":\\\"null\\\"},\\\"datum\\\":{\\\"anyOf\\\":[{\\\"$ref\\\":\\\"#/definitions/PrimitiveValue\\\"},{\\\"$ref\\\":\\\"#/definitions/DateTime\\\"},{\\\"$ref\\\":\\\"#/definitions/ExprRef\\\"},{\\\"$ref\\\":\\\"#/definitions/RepeatRef\\\"}],\\\"description\\\":\\\"A constant value in data domain.\\\"},\\\"field\\\":{\\\"$ref\\\":\\\"#/definitions/Field\\\",\\\"description\\\":\\\"__Required.__ A string defining the name of the field from which to pull a data value or an object defining iterated values from the [`repeat`](https://vega.github.io/vega-lite/docs/repeat.html) operator.\\\\n\\\\n__See also:__ [`field`](https://vega.github.io/vega-lite/docs/field.html) documentation.\\\\n\\\\n__Notes:__ 1)  Dots (`.`) and brackets (`[` and `]`) can be used to access nested objects (e.g., `\\\\\\\"field\\\\\\\": \\\\\\\"foo.bar\\\\\\\"` and `\\\\\\\"field\\\\\\\": \\\\\\\"foo['bar']\\\\\\\"`). If field names contain dots or brackets but are not nested, you can use `\\\\\\\\\\\\\\\\` to escape dots and brackets (e.g., `\\\\\\\"a\\\\\\\\\\\\\\\\.b\\\\\\\"` and `\\\\\\\"a\\\\\\\\\\\\\\\\[0\\\\\\\\\\\\\\\\]\\\\\\\"`). See more details about escaping in the [field documentation](https://vega.github.io/vega-lite/docs/field.html). 2) `field` is not required if `aggregate` is `count`.\\\"},\\\"timeUnit\\\":{\\\"anyOf\\\":[{\\\"$ref\\\":\\\"#/definitions/TimeUnit\\\"},{\\\"$ref\\\":\\\"#/definitions/TimeUnitParams\\\"}],\\\"description\\\":\\\"Time unit (e.g., `year`, `yearmonth`, `month`, `hours`) for a temporal field. or [a temporal field that gets casted as ordinal](https://vega.github.io/vega-lite/docs/type.html#cast).\\\\n\\\\n__Default value:__ `undefined` (None)\\\\n\\\\n__See also:__ [`timeUnit`](https://vega.github.io/vega-lite/docs/timeunit.html) documentation.\\\"},\\\"title\\\":{\\\"anyOf\\\":[{\\\"$ref\\\":\\\"#/definitions/Text\\\"},{\\\"type\\\":\\\"null\\\"}],\\\"description\\\":\\\"A title for the field. If `null`, the title will be removed.\\\\n\\\\n__Default value:__  derived from the field's name and transformation function (`aggregate`, `bin` and `timeUnit`). If the field has an aggregate function, the function is displayed as part of the title (e.g., `\\\\\\\"Sum of Profit\\\\\\\"`). If the field is binned or has a time unit applied, the applied function is shown in parentheses (e.g., `\\\\\\\"Profit (binned)\\\\\\\"`, `\\\\\\\"Transaction Date (year-month)\\\\\\\"`). Otherwise, the title is simply the field name.\\\\n\\\\n__Notes__:\\\\n\\\\n1) You can customize the default field title format by providing the [`fieldTitle`](https://vega.github.io/vega-lite/docs/config.html#top-level-config) property in the [config](https://vega.github.io/vega-lite/docs/config.html) or [`fieldTitle` function via the `compile` function's options](https://vega.github.io/vega-lite/docs/compile.html#field-title).\\\\n\\\\n2) If both field definition's `title` and axis, header, or legend `title` are defined, axis/header/legend title will be used.\\\"},\\\"type\\\":{\\\"$ref\\\":\\\"#/definitions/Type\\\",\\\"description\\\":\\\"The type of measurement (`\\\\\\\"quantitative\\\\\\\"`, `\\\\\\\"temporal\\\\\\\"`, `\\\\\\\"ordinal\\\\\\\"`, or `\\\\\\\"nominal\\\\\\\"`) for the encoded field or constant value (`datum`). It can also be a `\\\\\\\"geojson\\\\\\\"` type for encoding ['geoshape'](https://vega.github.io/vega-lite/docs/geoshape.html).\\\\n\\\\nVega-Lite automatically infers data types in many cases as discussed below. However, type is required for a field if: (1) the field is not nominal and the field encoding has no specified `aggregate` (except `argmin` and `argmax`), `bin`, scale type, custom `sort` order, nor `timeUnit` or (2) if you wish to use an ordinal scale for a field with `bin` or `timeUnit`.\\\\n\\\\n__Default value:__\\\\n\\\\n1) For a data `field`, `\\\\\\\"nominal\\\\\\\"` is the default data type unless the field encoding has `aggregate`, `channel`, `bin`, scale type, `sort`, or `timeUnit` that satisfies the following criteria: - `\\\\\\\"quantitative\\\\\\\"` is the default type if (1) the encoded field contains `bin` or `aggregate` except `\\\\\\\"argmin\\\\\\\"` and `\\\\\\\"argmax\\\\\\\"`, (2) the encoding channel is `latitude` or `longitude` channel or (3) if the specified scale type is [a quantitative scale](https://vega.github.io/vega-lite/docs/scale.html#type). - `\\\\\\\"temporal\\\\\\\"` is the default type if (1) the encoded field contains `timeUnit` or (2) the specified scale type is a time or utc scale - `ordinal\\\\\\\"\\\\\\\"` is the default type if (1) the encoded field contains a [custom `sort` order](https://vega.github.io/vega-lite/docs/sort.html#specifying-custom-sort-order), (2) the specified scale type is an ordinal/point/band scale, or (3) the encoding channel is `order`.\\\\n\\\\n2) For a constant value in data domain (`datum`): - `\\\\\\\"quantitative\\\\\\\"` if the datum is a number - `\\\\\\\"nominal\\\\\\\"` if the datum is a string - `\\\\\\\"temporal\\\\\\\"` if the datum is [a date time object](https://vega.github.io/vega-lite/docs/datetime.html)\\\\n\\\\n__Note:__ - Data `type` describes the semantics of the data rather than the primitive data types (number, string, etc.). The same primitive data type can have different types of measurement. For example, numeric data can represent quantitative, ordinal, or nominal data. - Data values for a temporal field can be either a date-time string (e.g., `\\\\\\\"2015-03-07 12:32:17\\\\\\\"`, `\\\\\\\"17:01\\\\\\\"`, `\\\\\\\"2015-03-16\\\\\\\"`. `\\\\\\\"2015\\\\\\\"`) or a timestamp number (e.g., `1552199579097`). - When using with [`bin`](https://vega.github.io/vega-lite/docs/bin.html), the `type` property can be either `\\\\\\\"quantitative\\\\\\\"` (for using a linear bin scale) or [`\\\\\\\"ordinal\\\\\\\"` (for using an ordinal bin scale)](https://vega.github.io/vega-lite/docs/type.html#cast-bin). - When using with [`timeUnit`](https://vega.github.io/vega-lite/docs/timeunit.html), the `type` property can be either `\\\\\\\"temporal\\\\\\\"` (default, for using a temporal scale) or [`\\\\\\\"ordinal\\\\\\\"` (for using an ordinal scale)](https://vega.github.io/vega-lite/docs/type.html#cast-bin). - When using with [`aggregate`](https://vega.github.io/vega-lite/docs/aggregate.html), the `type` property refers to the post-aggregation data type. For example, we can calculate count `distinct` of a categorical field `\\\\\\\"cat\\\\\\\"` using `{\\\\\\\"aggregate\\\\\\\": \\\\\\\"distinct\\\\\\\", \\\\\\\"field\\\\\\\": \\\\\\\"cat\\\\\\\"}`. The `\\\\\\\"type\\\\\\\"` of the aggregate output is `\\\\\\\"quantitative\\\\\\\"`. - Secondary channels (e.g., `x2`, `y2`, `xError`, `yError`) do not have `type` as they must have exactly the same type as their primary channels (e.g., `x`, `y`).\\\\n\\\\n__See also:__ [`type`](https://vega.github.io/vega-lite/docs/type.html) documentation.\\\"},\\\"value\\\":{\\\"anyOf\\\":[{\\\"type\\\":\\\"number\\\"},{\\\"const\\\":\\\"width\\\",\\\"type\\\":\\\"string\\\"},{\\\"const\\\":\\\"height\\\",\\\"type\\\":\\\"string\\\"},{\\\"$ref\\\":\\\"#/definitions/ExprRef\\\"}],\\\"description\\\":\\\"A constant value in visual domain (e.g., `\\\\\\\"red\\\\\\\"` / `\\\\\\\"#0099ff\\\\\\\"` / [gradient definition](https://vega.github.io/vega-lite/docs/types.html#gradient) for color, values between `0` to `1` for opacity).\\\"}},\\\"type\\\":\\\"object\\\"},\\\"xError\\\":{\\\"additionalProperties\\\":false,\\\"properties\\\":{\\\"aggregate\\\":{\\\"$ref\\\":\\\"#/definitions/Aggregate\\\",\\\"description\\\":\\\"Aggregation function for the field (e.g., `\\\\\\\"mean\\\\\\\"`, `\\\\\\\"sum\\\\\\\"`, `\\\\\\\"median\\\\\\\"`, `\\\\\\\"min\\\\\\\"`, `\\\\\\\"max\\\\\\\"`, `\\\\\\\"count\\\\\\\"`).\\\\n\\\\n__Default value:__ `undefined` (None)\\\\n\\\\n__See also:__ [`aggregate`](https://vega.github.io/vega-lite/docs/aggregate.html) documentation.\\\"},\\\"band\\\":{\\\"description\\\":\\\"For rect-based marks (`rect`, `bar`, and `image`), mark size relative to bandwidth of [band scales](https://vega.github.io/vega-lite/docs/scale.html#band), bins or time units. If set to `1`, the mark size is set to the bandwidth, the bin interval, or the time unit interval. If set to `0.5`, the mark size is half of the bandwidth or the time unit interval.\\\\n\\\\nFor other marks, relative position on a band of a stacked, binned, time unit or band scale. If set to `0`, the marks will be positioned at the beginning of the band. If set to `0.5`, the marks will be positioned in the middle of the band.\\\",\\\"maximum\\\":1,\\\"minimum\\\":0,\\\"type\\\":\\\"number\\\"},\\\"bin\\\":{\\\"description\\\":\\\"A flag for binning a `quantitative` field, [an object defining binning parameters](https://vega.github.io/vega-lite/docs/bin.html#params), or indicating that the data for `x` or `y` channel are binned before they are imported into Vega-Lite (`\\\\\\\"binned\\\\\\\"`).\\\\n\\\\n- If `true`, default [binning parameters](https://vega.github.io/vega-lite/docs/bin.html) will be applied.\\\\n\\\\n- If `\\\\\\\"binned\\\\\\\"`, this indicates that the data for the `x` (or `y`) channel are already binned. You can map the bin-start field to `x` (or `y`) and the bin-end field to `x2` (or `y2`). The scale and axis will be formatted similar to binning in Vega-Lite.  To adjust the axis ticks based on the bin step, you can also set the axis's [`tickMinStep`](https://vega.github.io/vega-lite/docs/axis.html#ticks) property.\\\\n\\\\n__Default value:__ `false`\\\\n\\\\n__See also:__ [`bin`](https://vega.github.io/vega-lite/docs/bin.html) documentation.\\\",\\\"type\\\":\\\"null\\\"},\\\"field\\\":{\\\"$ref\\\":\\\"#/definitions/Field\\\",\\\"description\\\":\\\"__Required.__ A string defining the name of the field from which to pull a data value or an object defining iterated values from the [`repeat`](https://vega.github.io/vega-lite/docs/repeat.html) operator.\\\\n\\\\n__See also:__ [`field`](https://vega.github.io/vega-lite/docs/field.html) documentation.\\\\n\\\\n__Notes:__ 1)  Dots (`.`) and brackets (`[` and `]`) can be used to access nested objects (e.g., `\\\\\\\"field\\\\\\\": \\\\\\\"foo.bar\\\\\\\"` and `\\\\\\\"field\\\\\\\": \\\\\\\"foo['bar']\\\\\\\"`). If field names contain dots or brackets but are not nested, you can use `\\\\\\\\\\\\\\\\` to escape dots and brackets (e.g., `\\\\\\\"a\\\\\\\\\\\\\\\\.b\\\\\\\"` and `\\\\\\\"a\\\\\\\\\\\\\\\\[0\\\\\\\\\\\\\\\\]\\\\\\\"`). See more details about escaping in the [field documentation](https://vega.github.io/vega-lite/docs/field.html). 2) `field` is not required if `aggregate` is `count`.\\\"},\\\"timeUnit\\\":{\\\"anyOf\\\":[{\\\"$ref\\\":\\\"#/definitions/TimeUnit\\\"},{\\\"$ref\\\":\\\"#/definitions/TimeUnitParams\\\"}],\\\"description\\\":\\\"Time unit (e.g., `year`, `yearmonth`, `month`, `hours`) for a temporal field. or [a temporal field that gets casted as ordinal](https://vega.github.io/vega-lite/docs/type.html#cast).\\\\n\\\\n__Default value:__ `undefined` (None)\\\\n\\\\n__See also:__ [`timeUnit`](https://vega.github.io/vega-lite/docs/timeunit.html) documentation.\\\"},\\\"title\\\":{\\\"anyOf\\\":[{\\\"$ref\\\":\\\"#/definitions/Text\\\"},{\\\"type\\\":\\\"null\\\"}],\\\"description\\\":\\\"A title for the field. If `null`, the title will be removed.\\\\n\\\\n__Default value:__  derived from the field's name and transformation function (`aggregate`, `bin` and `timeUnit`). If the field has an aggregate function, the function is displayed as part of the title (e.g., `\\\\\\\"Sum of Profit\\\\\\\"`). If the field is binned or has a time unit applied, the applied function is shown in parentheses (e.g., `\\\\\\\"Profit (binned)\\\\\\\"`, `\\\\\\\"Transaction Date (year-month)\\\\\\\"`). Otherwise, the title is simply the field name.\\\\n\\\\n__Notes__:\\\\n\\\\n1) You can customize the default field title format by providing the [`fieldTitle`](https://vega.github.io/vega-lite/docs/config.html#top-level-config) property in the [config](https://vega.github.io/vega-lite/docs/config.html) or [`fieldTitle` function via the `compile` function's options](https://vega.github.io/vega-lite/docs/compile.html#field-title).\\\\n\\\\n2) If both field definition's `title` and axis, header, or legend `title` are defined, axis/header/legend title will be used.\\\"},\\\"value\\\":{\\\"description\\\":\\\"A constant value in visual domain (e.g., `\\\\\\\"red\\\\\\\"` / `\\\\\\\"#0099ff\\\\\\\"` / [gradient definition](https://vega.github.io/vega-lite/docs/types.html#gradient) for color, values between `0` to `1` for opacity).\\\",\\\"type\\\":\\\"number\\\"}},\\\"type\\\":\\\"object\\\"},\\\"xError2\\\":{\\\"additionalProperties\\\":false,\\\"properties\\\":{\\\"aggregate\\\":{\\\"$ref\\\":\\\"#/definitions/Aggregate\\\",\\\"description\\\":\\\"Aggregation function for the field (e.g., `\\\\\\\"mean\\\\\\\"`, `\\\\\\\"sum\\\\\\\"`, `\\\\\\\"median\\\\\\\"`, `\\\\\\\"min\\\\\\\"`, `\\\\\\\"max\\\\\\\"`, `\\\\\\\"count\\\\\\\"`).\\\\n\\\\n__Default value:__ `undefined` (None)\\\\n\\\\n__See also:__ [`aggregate`](https://vega.github.io/vega-lite/docs/aggregate.html) documentation.\\\"},\\\"band\\\":{\\\"description\\\":\\\"For rect-based marks (`rect`, `bar`, and `image`), mark size relative to bandwidth of [band scales](https://vega.github.io/vega-lite/docs/scale.html#band), bins or time units. If set to `1`, the mark size is set to the bandwidth, the bin interval, or the time unit interval. If set to `0.5`, the mark size is half of the bandwidth or the time unit interval.\\\\n\\\\nFor other marks, relative position on a band of a stacked, binned, time unit or band scale. If set to `0`, the marks will be positioned at the beginning of the band. If set to `0.5`, the marks will be positioned in the middle of the band.\\\",\\\"maximum\\\":1,\\\"minimum\\\":0,\\\"type\\\":\\\"number\\\"},\\\"bin\\\":{\\\"description\\\":\\\"A flag for binning a `quantitative` field, [an object defining binning parameters](https://vega.github.io/vega-lite/docs/bin.html#params), or indicating that the data for `x` or `y` channel are binned before they are imported into Vega-Lite (`\\\\\\\"binned\\\\\\\"`).\\\\n\\\\n- If `true`, default [binning parameters](https://vega.github.io/vega-lite/docs/bin.html) will be applied.\\\\n\\\\n- If `\\\\\\\"binned\\\\\\\"`, this indicates that the data for the `x` (or `y`) channel are already binned. You can map the bin-start field to `x` (or `y`) and the bin-end field to `x2` (or `y2`). The scale and axis will be formatted similar to binning in Vega-Lite.  To adjust the axis ticks based on the bin step, you can also set the axis's [`tickMinStep`](https://vega.github.io/vega-lite/docs/axis.html#ticks) property.\\\\n\\\\n__Default value:__ `false`\\\\n\\\\n__See also:__ [`bin`](https://vega.github.io/vega-lite/docs/bin.html) documentation.\\\",\\\"type\\\":\\\"null\\\"},\\\"field\\\":{\\\"$ref\\\":\\\"#/definitions/Field\\\",\\\"description\\\":\\\"__Required.__ A string defining the name of the field from which to pull a data value or an object defining iterated values from the [`repeat`](https://vega.github.io/vega-lite/docs/repeat.html) operator.\\\\n\\\\n__See also:__ [`field`](https://vega.github.io/vega-lite/docs/field.html) documentation.\\\\n\\\\n__Notes:__ 1)  Dots (`.`) and brackets (`[` and `]`) can be used to access nested objects (e.g., `\\\\\\\"field\\\\\\\": \\\\\\\"foo.bar\\\\\\\"` and `\\\\\\\"field\\\\\\\": \\\\\\\"foo['bar']\\\\\\\"`). If field names contain dots or brackets but are not nested, you can use `\\\\\\\\\\\\\\\\` to escape dots and brackets (e.g., `\\\\\\\"a\\\\\\\\\\\\\\\\.b\\\\\\\"` and `\\\\\\\"a\\\\\\\\\\\\\\\\[0\\\\\\\\\\\\\\\\]\\\\\\\"`). See more details about escaping in the [field documentation](https://vega.github.io/vega-lite/docs/field.html). 2) `field` is not required if `aggregate` is `count`.\\\"},\\\"timeUnit\\\":{\\\"anyOf\\\":[{\\\"$ref\\\":\\\"#/definitions/TimeUnit\\\"},{\\\"$ref\\\":\\\"#/definitions/TimeUnitParams\\\"}],\\\"description\\\":\\\"Time unit (e.g., `year`, `yearmonth`, `month`, `hours`) for a temporal field. or [a temporal field that gets casted as ordinal](https://vega.github.io/vega-lite/docs/type.html#cast).\\\\n\\\\n__Default value:__ `undefined` (None)\\\\n\\\\n__See also:__ [`timeUnit`](https://vega.github.io/vega-lite/docs/timeunit.html) documentation.\\\"},\\\"title\\\":{\\\"anyOf\\\":[{\\\"$ref\\\":\\\"#/definitions/Text\\\"},{\\\"type\\\":\\\"null\\\"}],\\\"description\\\":\\\"A title for the field. If `null`, the title will be removed.\\\\n\\\\n__Default value:__  derived from the field's name and transformation function (`aggregate`, `bin` and `timeUnit`). If the field has an aggregate function, the function is displayed as part of the title (e.g., `\\\\\\\"Sum of Profit\\\\\\\"`). If the field is binned or has a time unit applied, the applied function is shown in parentheses (e.g., `\\\\\\\"Profit (binned)\\\\\\\"`, `\\\\\\\"Transaction Date (year-month)\\\\\\\"`). Otherwise, the title is simply the field name.\\\\n\\\\n__Notes__:\\\\n\\\\n1) You can customize the default field title format by providing the [`fieldTitle`](https://vega.github.io/vega-lite/docs/config.html#top-level-config) property in the [config](https://vega.github.io/vega-lite/docs/config.html) or [`fieldTitle` function via the `compile` function's options](https://vega.github.io/vega-lite/docs/compile.html#field-title).\\\\n\\\\n2) If both field definition's `title` and axis, header, or legend `title` are defined, axis/header/legend title will be used.\\\"},\\\"value\\\":{\\\"description\\\":\\\"A constant value in visual domain (e.g., `\\\\\\\"red\\\\\\\"` / `\\\\\\\"#0099ff\\\\\\\"` / [gradient definition](https://vega.github.io/vega-lite/docs/types.html#gradient) for color, values between `0` to `1` for opacity).\\\",\\\"type\\\":\\\"number\\\"}},\\\"type\\\":\\\"object\\\"},\\\"y\\\":{\\\"additionalProperties\\\":false,\\\"properties\\\":{\\\"aggregate\\\":{\\\"$ref\\\":\\\"#/definitions/Aggregate\\\",\\\"description\\\":\\\"Aggregation function for the field (e.g., `\\\\\\\"mean\\\\\\\"`, `\\\\\\\"sum\\\\\\\"`, `\\\\\\\"median\\\\\\\"`, `\\\\\\\"min\\\\\\\"`, `\\\\\\\"max\\\\\\\"`, `\\\\\\\"count\\\\\\\"`).\\\\n\\\\n__Default value:__ `undefined` (None)\\\\n\\\\n__See also:__ [`aggregate`](https://vega.github.io/vega-lite/docs/aggregate.html) documentation.\\\"},\\\"axis\\\":{\\\"anyOf\\\":[{\\\"$ref\\\":\\\"#/definitions/Axis\\\"},{\\\"type\\\":\\\"null\\\"}],\\\"description\\\":\\\"An object defining properties of axis's gridlines, ticks and labels. If `null`, the axis for the encoding channel will be removed.\\\\n\\\\n__Default value:__ If undefined, default [axis properties](https://vega.github.io/vega-lite/docs/axis.html) are applied.\\\\n\\\\n__See also:__ [`axis`](https://vega.github.io/vega-lite/docs/axis.html) documentation.\\\"},\\\"band\\\":{\\\"description\\\":\\\"For rect-based marks (`rect`, `bar`, and `image`), mark size relative to bandwidth of [band scales](https://vega.github.io/vega-lite/docs/scale.html#band), bins or time units. If set to `1`, the mark size is set to the bandwidth, the bin interval, or the time unit interval. If set to `0.5`, the mark size is half of the bandwidth or the time unit interval.\\\\n\\\\nFor other marks, relative position on a band of a stacked, binned, time unit or band scale. If set to `0`, the marks will be positioned at the beginning of the band. If set to `0.5`, the marks will be positioned in the middle of the band.\\\",\\\"maximum\\\":1,\\\"minimum\\\":0,\\\"type\\\":\\\"number\\\"},\\\"bin\\\":{\\\"anyOf\\\":[{\\\"type\\\":\\\"boolean\\\"},{\\\"$ref\\\":\\\"#/definitions/BinParams\\\"},{\\\"const\\\":\\\"binned\\\",\\\"type\\\":\\\"string\\\"},{\\\"type\\\":\\\"null\\\"}],\\\"description\\\":\\\"A flag for binning a `quantitative` field, [an object defining binning parameters](https://vega.github.io/vega-lite/docs/bin.html#params), or indicating that the data for `x` or `y` channel are binned before they are imported into Vega-Lite (`\\\\\\\"binned\\\\\\\"`).\\\\n\\\\n- If `true`, default [binning parameters](https://vega.github.io/vega-lite/docs/bin.html) will be applied.\\\\n\\\\n- If `\\\\\\\"binned\\\\\\\"`, this indicates that the data for the `x` (or `y`) channel are already binned. You can map the bin-start field to `x` (or `y`) and the bin-end field to `x2` (or `y2`). The scale and axis will be formatted similar to binning in Vega-Lite.  To adjust the axis ticks based on the bin step, you can also set the axis's [`tickMinStep`](https://vega.github.io/vega-lite/docs/axis.html#ticks) property.\\\\n\\\\n__Default value:__ `false`\\\\n\\\\n__See also:__ [`bin`](https://vega.github.io/vega-lite/docs/bin.html) documentation.\\\"},\\\"datum\\\":{\\\"anyOf\\\":[{\\\"$ref\\\":\\\"#/definitions/PrimitiveValue\\\"},{\\\"$ref\\\":\\\"#/definitions/DateTime\\\"},{\\\"$ref\\\":\\\"#/definitions/ExprRef\\\"},{\\\"$ref\\\":\\\"#/definitions/RepeatRef\\\"}],\\\"description\\\":\\\"A constant value in data domain.\\\"},\\\"field\\\":{\\\"$ref\\\":\\\"#/definitions/Field\\\",\\\"description\\\":\\\"__Required.__ A string defining the name of the field from which to pull a data value or an object defining iterated values from the [`repeat`](https://vega.github.io/vega-lite/docs/repeat.html) operator.\\\\n\\\\n__See also:__ [`field`](https://vega.github.io/vega-lite/docs/field.html) documentation.\\\\n\\\\n__Notes:__ 1)  Dots (`.`) and brackets (`[` and `]`) can be used to access nested objects (e.g., `\\\\\\\"field\\\\\\\": \\\\\\\"foo.bar\\\\\\\"` and `\\\\\\\"field\\\\\\\": \\\\\\\"foo['bar']\\\\\\\"`). If field names contain dots or brackets but are not nested, you can use `\\\\\\\\\\\\\\\\` to escape dots and brackets (e.g., `\\\\\\\"a\\\\\\\\\\\\\\\\.b\\\\\\\"` and `\\\\\\\"a\\\\\\\\\\\\\\\\[0\\\\\\\\\\\\\\\\]\\\\\\\"`). See more details about escaping in the [field documentation](https://vega.github.io/vega-lite/docs/field.html). 2) `field` is not required if `aggregate` is `count`.\\\"},\\\"impute\\\":{\\\"anyOf\\\":[{\\\"$ref\\\":\\\"#/definitions/ImputeParams\\\"},{\\\"type\\\":\\\"null\\\"}],\\\"description\\\":\\\"An object defining the properties of the Impute Operation to be applied. The field value of the other positional channel is taken as `key` of the `Impute` Operation. The field of the `color` channel if specified is used as `groupby` of the `Impute` Operation.\\\\n\\\\n__See also:__ [`impute`](https://vega.github.io/vega-lite/docs/impute.html) documentation.\\\"},\\\"scale\\\":{\\\"anyOf\\\":[{\\\"$ref\\\":\\\"#/definitions/Scale\\\"},{\\\"type\\\":\\\"null\\\"}],\\\"description\\\":\\\"An object defining properties of the channel's scale, which is the function that transforms values in the data domain (numbers, dates, strings, etc) to visual values (pixels, colors, sizes) of the encoding channels.\\\\n\\\\nIf `null`, the scale will be [disabled and the data value will be directly encoded](https://vega.github.io/vega-lite/docs/scale.html#disable).\\\\n\\\\n__Default value:__ If undefined, default [scale properties](https://vega.github.io/vega-lite/docs/scale.html) are applied.\\\\n\\\\n__See also:__ [`scale`](https://vega.github.io/vega-lite/docs/scale.html) documentation.\\\"},\\\"sort\\\":{\\\"$ref\\\":\\\"#/definitions/Sort\\\",\\\"description\\\":\\\"Sort order for the encoded field.\\\\n\\\\nFor continuous fields (quantitative or temporal), `sort` can be either `\\\\\\\"ascending\\\\\\\"` or `\\\\\\\"descending\\\\\\\"`.\\\\n\\\\nFor discrete fields, `sort` can be one of the following: - `\\\\\\\"ascending\\\\\\\"` or `\\\\\\\"descending\\\\\\\"` -- for sorting by the values' natural order in JavaScript. - [A string indicating an encoding channel name to sort by](https://vega.github.io/vega-lite/docs/sort.html#sort-by-encoding) (e.g., `\\\\\\\"x\\\\\\\"` or `\\\\\\\"y\\\\\\\"`) with an optional minus prefix for descending sort (e.g., `\\\\\\\"-x\\\\\\\"` to sort by x-field, descending). This channel string is short-form of [a sort-by-encoding definition](https://vega.github.io/vega-lite/docs/sort.html#sort-by-encoding). For example, `\\\\\\\"sort\\\\\\\": \\\\\\\"-x\\\\\\\"` is equivalent to `\\\\\\\"sort\\\\\\\": {\\\\\\\"encoding\\\\\\\": \\\\\\\"x\\\\\\\", \\\\\\\"order\\\\\\\": \\\\\\\"descending\\\\\\\"}`. - [A sort field definition](https://vega.github.io/vega-lite/docs/sort.html#sort-field) for sorting by another field. - [An array specifying the field values in preferred order](https://vega.github.io/vega-lite/docs/sort.html#sort-array). In this case, the sort order will obey the values in the array, followed by any unspecified values in their original order. For discrete time field, values in the sort array can be [date-time definition objects](types#datetime). In addition, for time units `\\\\\\\"month\\\\\\\"` and `\\\\\\\"day\\\\\\\"`, the values can be the month or day names (case insensitive) or their 3-letter initials (e.g., `\\\\\\\"Mon\\\\\\\"`, `\\\\\\\"Tue\\\\\\\"`). - `null` indicating no sort.\\\\n\\\\n__Default value:__ `\\\\\\\"ascending\\\\\\\"`\\\\n\\\\n__Note:__ `null` and sorting by another channel is not supported for `row` and `column`.\\\\n\\\\n__See also:__ [`sort`](https://vega.github.io/vega-lite/docs/sort.html) documentation.\\\"},\\\"stack\\\":{\\\"anyOf\\\":[{\\\"$ref\\\":\\\"#/definitions/StackOffset\\\"},{\\\"type\\\":\\\"null\\\"},{\\\"type\\\":\\\"boolean\\\"}],\\\"description\\\":\\\"Type of stacking offset if the field should be stacked. `stack` is only applicable for `x`, `y`, `theta`, and `radius` channels with continuous domains. For example, `stack` of `y` can be used to customize stacking for a vertical bar chart.\\\\n\\\\n`stack` can be one of the following values: - `\\\\\\\"zero\\\\\\\"` or `true`: stacking with baseline offset at zero value of the scale (for creating typical stacked [bar](https://vega.github.io/vega-lite/docs/stack.html#bar) and [area](https://vega.github.io/vega-lite/docs/stack.html#area) chart). - `\\\\\\\"normalize\\\\\\\"` - stacking with normalized domain (for creating [normalized stacked bar and area charts](https://vega.github.io/vega-lite/docs/stack.html#normalized). <br/> -`\\\\\\\"center\\\\\\\"` - stacking with center baseline (for [streamgraph](https://vega.github.io/vega-lite/docs/stack.html#streamgraph)). - `null` or `false` - No-stacking. This will produce layered [bar](https://vega.github.io/vega-lite/docs/stack.html#layered-bar-chart) and area chart.\\\\n\\\\n__Default value:__ `zero` for plots with all of the following conditions are true: (1) the mark is `bar`, `area`, or `arc`; (2) the stacked measure channel (x or y) has a linear scale; (3) At least one of non-position channels mapped to an unaggregated field that is different from x and y. Otherwise, `null` by default.\\\\n\\\\n__See also:__ [`stack`](https://vega.github.io/vega-lite/docs/stack.html) documentation.\\\"},\\\"timeUnit\\\":{\\\"anyOf\\\":[{\\\"$ref\\\":\\\"#/definitions/TimeUnit\\\"},{\\\"$ref\\\":\\\"#/definitions/TimeUnitParams\\\"}],\\\"description\\\":\\\"Time unit (e.g., `year`, `yearmonth`, `month`, `hours`) for a temporal field. or [a temporal field that gets casted as ordinal](https://vega.github.io/vega-lite/docs/type.html#cast).\\\\n\\\\n__Default value:__ `undefined` (None)\\\\n\\\\n__See also:__ [`timeUnit`](https://vega.github.io/vega-lite/docs/timeunit.html) documentation.\\\"},\\\"title\\\":{\\\"anyOf\\\":[{\\\"$ref\\\":\\\"#/definitions/Text\\\"},{\\\"type\\\":\\\"null\\\"}],\\\"description\\\":\\\"A title for the field. If `null`, the title will be removed.\\\\n\\\\n__Default value:__  derived from the field's name and transformation function (`aggregate`, `bin` and `timeUnit`). If the field has an aggregate function, the function is displayed as part of the title (e.g., `\\\\\\\"Sum of Profit\\\\\\\"`). If the field is binned or has a time unit applied, the applied function is shown in parentheses (e.g., `\\\\\\\"Profit (binned)\\\\\\\"`, `\\\\\\\"Transaction Date (year-month)\\\\\\\"`). Otherwise, the title is simply the field name.\\\\n\\\\n__Notes__:\\\\n\\\\n1) You can customize the default field title format by providing the [`fieldTitle`](https://vega.github.io/vega-lite/docs/config.html#top-level-config) property in the [config](https://vega.github.io/vega-lite/docs/config.html) or [`fieldTitle` function via the `compile` function's options](https://vega.github.io/vega-lite/docs/compile.html#field-title).\\\\n\\\\n2) If both field definition's `title` and axis, header, or legend `title` are defined, axis/header/legend title will be used.\\\"},\\\"type\\\":{\\\"anyOf\\\":[{\\\"$ref\\\":\\\"#/definitions/StandardType\\\",\\\"description\\\":\\\"The type of measurement (`\\\\\\\"quantitative\\\\\\\"`, `\\\\\\\"temporal\\\\\\\"`, `\\\\\\\"ordinal\\\\\\\"`, or `\\\\\\\"nominal\\\\\\\"`) for the encoded field or constant value (`datum`). It can also be a `\\\\\\\"geojson\\\\\\\"` type for encoding ['geoshape'](https://vega.github.io/vega-lite/docs/geoshape.html).\\\\n\\\\nVega-Lite automatically infers data types in many cases as discussed below. However, type is required for a field if: (1) the field is not nominal and the field encoding has no specified `aggregate` (except `argmin` and `argmax`), `bin`, scale type, custom `sort` order, nor `timeUnit` or (2) if you wish to use an ordinal scale for a field with `bin` or `timeUnit`.\\\\n\\\\n__Default value:__\\\\n\\\\n1) For a data `field`, `\\\\\\\"nominal\\\\\\\"` is the default data type unless the field encoding has `aggregate`, `channel`, `bin`, scale type, `sort`, or `timeUnit` that satisfies the following criteria: - `\\\\\\\"quantitative\\\\\\\"` is the default type if (1) the encoded field contains `bin` or `aggregate` except `\\\\\\\"argmin\\\\\\\"` and `\\\\\\\"argmax\\\\\\\"`, (2) the encoding channel is `latitude` or `longitude` channel or (3) if the specified scale type is [a quantitative scale](https://vega.github.io/vega-lite/docs/scale.html#type). - `\\\\\\\"temporal\\\\\\\"` is the default type if (1) the encoded field contains `timeUnit` or (2) the specified scale type is a time or utc scale - `ordinal\\\\\\\"\\\\\\\"` is the default type if (1) the encoded field contains a [custom `sort` order](https://vega.github.io/vega-lite/docs/sort.html#specifying-custom-sort-order), (2) the specified scale type is an ordinal/point/band scale, or (3) the encoding channel is `order`.\\\\n\\\\n2) For a constant value in data domain (`datum`): - `\\\\\\\"quantitative\\\\\\\"` if the datum is a number - `\\\\\\\"nominal\\\\\\\"` if the datum is a string - `\\\\\\\"temporal\\\\\\\"` if the datum is [a date time object](https://vega.github.io/vega-lite/docs/datetime.html)\\\\n\\\\n__Note:__ - Data `type` describes the semantics of the data rather than the primitive data types (number, string, etc.). The same primitive data type can have different types of measurement. For example, numeric data can represent quantitative, ordinal, or nominal data. - Data values for a temporal field can be either a date-time string (e.g., `\\\\\\\"2015-03-07 12:32:17\\\\\\\"`, `\\\\\\\"17:01\\\\\\\"`, `\\\\\\\"2015-03-16\\\\\\\"`. `\\\\\\\"2015\\\\\\\"`) or a timestamp number (e.g., `1552199579097`). - When using with [`bin`](https://vega.github.io/vega-lite/docs/bin.html), the `type` property can be either `\\\\\\\"quantitative\\\\\\\"` (for using a linear bin scale) or [`\\\\\\\"ordinal\\\\\\\"` (for using an ordinal bin scale)](https://vega.github.io/vega-lite/docs/type.html#cast-bin). - When using with [`timeUnit`](https://vega.github.io/vega-lite/docs/timeunit.html), the `type` property can be either `\\\\\\\"temporal\\\\\\\"` (default, for using a temporal scale) or [`\\\\\\\"ordinal\\\\\\\"` (for using an ordinal scale)](https://vega.github.io/vega-lite/docs/type.html#cast-bin). - When using with [`aggregate`](https://vega.github.io/vega-lite/docs/aggregate.html), the `type` property refers to the post-aggregation data type. For example, we can calculate count `distinct` of a categorical field `\\\\\\\"cat\\\\\\\"` using `{\\\\\\\"aggregate\\\\\\\": \\\\\\\"distinct\\\\\\\", \\\\\\\"field\\\\\\\": \\\\\\\"cat\\\\\\\"}`. The `\\\\\\\"type\\\\\\\"` of the aggregate output is `\\\\\\\"quantitative\\\\\\\"`. - Secondary channels (e.g., `x2`, `y2`, `xError`, `yError`) do not have `type` as they must have exactly the same type as their primary channels (e.g., `x`, `y`).\\\\n\\\\n__See also:__ [`type`](https://vega.github.io/vega-lite/docs/type.html) documentation.\\\"},{\\\"$ref\\\":\\\"#/definitions/Type\\\",\\\"description\\\":\\\"The type of measurement (`\\\\\\\"quantitative\\\\\\\"`, `\\\\\\\"temporal\\\\\\\"`, `\\\\\\\"ordinal\\\\\\\"`, or `\\\\\\\"nominal\\\\\\\"`) for the encoded field or constant value (`datum`). It can also be a `\\\\\\\"geojson\\\\\\\"` type for encoding ['geoshape'](https://vega.github.io/vega-lite/docs/geoshape.html).\\\\n\\\\nVega-Lite automatically infers data types in many cases as discussed below. However, type is required for a field if: (1) the field is not nominal and the field encoding has no specified `aggregate` (except `argmin` and `argmax`), `bin`, scale type, custom `sort` order, nor `timeUnit` or (2) if you wish to use an ordinal scale for a field with `bin` or `timeUnit`.\\\\n\\\\n__Default value:__\\\\n\\\\n1) For a data `field`, `\\\\\\\"nominal\\\\\\\"` is the default data type unless the field encoding has `aggregate`, `channel`, `bin`, scale type, `sort`, or `timeUnit` that satisfies the following criteria: - `\\\\\\\"quantitative\\\\\\\"` is the default type if (1) the encoded field contains `bin` or `aggregate` except `\\\\\\\"argmin\\\\\\\"` and `\\\\\\\"argmax\\\\\\\"`, (2) the encoding channel is `latitude` or `longitude` channel or (3) if the specified scale type is [a quantitative scale](https://vega.github.io/vega-lite/docs/scale.html#type). - `\\\\\\\"temporal\\\\\\\"` is the default type if (1) the encoded field contains `timeUnit` or (2) the specified scale type is a time or utc scale - `ordinal\\\\\\\"\\\\\\\"` is the default type if (1) the encoded field contains a [custom `sort` order](https://vega.github.io/vega-lite/docs/sort.html#specifying-custom-sort-order), (2) the specified scale type is an ordinal/point/band scale, or (3) the encoding channel is `order`.\\\\n\\\\n2) For a constant value in data domain (`datum`): - `\\\\\\\"quantitative\\\\\\\"` if the datum is a number - `\\\\\\\"nominal\\\\\\\"` if the datum is a string - `\\\\\\\"temporal\\\\\\\"` if the datum is [a date time object](https://vega.github.io/vega-lite/docs/datetime.html)\\\\n\\\\n__Note:__ - Data `type` describes the semantics of the data rather than the primitive data types (number, string, etc.). The same primitive data type can have different types of measurement. For example, numeric data can represent quantitative, ordinal, or nominal data. - Data values for a temporal field can be either a date-time string (e.g., `\\\\\\\"2015-03-07 12:32:17\\\\\\\"`, `\\\\\\\"17:01\\\\\\\"`, `\\\\\\\"2015-03-16\\\\\\\"`. `\\\\\\\"2015\\\\\\\"`) or a timestamp number (e.g., `1552199579097`). - When using with [`bin`](https://vega.github.io/vega-lite/docs/bin.html), the `type` property can be either `\\\\\\\"quantitative\\\\\\\"` (for using a linear bin scale) or [`\\\\\\\"ordinal\\\\\\\"` (for using an ordinal bin scale)](https://vega.github.io/vega-lite/docs/type.html#cast-bin). - When using with [`timeUnit`](https://vega.github.io/vega-lite/docs/timeunit.html), the `type` property can be either `\\\\\\\"temporal\\\\\\\"` (default, for using a temporal scale) or [`\\\\\\\"ordinal\\\\\\\"` (for using an ordinal scale)](https://vega.github.io/vega-lite/docs/type.html#cast-bin). - When using with [`aggregate`](https://vega.github.io/vega-lite/docs/aggregate.html), the `type` property refers to the post-aggregation data type. For example, we can calculate count `distinct` of a categorical field `\\\\\\\"cat\\\\\\\"` using `{\\\\\\\"aggregate\\\\\\\": \\\\\\\"distinct\\\\\\\", \\\\\\\"field\\\\\\\": \\\\\\\"cat\\\\\\\"}`. The `\\\\\\\"type\\\\\\\"` of the aggregate output is `\\\\\\\"quantitative\\\\\\\"`. - Secondary channels (e.g., `x2`, `y2`, `xError`, `yError`) do not have `type` as they must have exactly the same type as their primary channels (e.g., `x`, `y`).\\\\n\\\\n__See also:__ [`type`](https://vega.github.io/vega-lite/docs/type.html) documentation.\\\"}],\\\"description\\\":\\\"The type of measurement (`\\\\\\\"quantitative\\\\\\\"`, `\\\\\\\"temporal\\\\\\\"`, `\\\\\\\"ordinal\\\\\\\"`, or `\\\\\\\"nominal\\\\\\\"`) for the encoded field or constant value (`datum`). It can also be a `\\\\\\\"geojson\\\\\\\"` type for encoding ['geoshape'](https://vega.github.io/vega-lite/docs/geoshape.html).\\\\n\\\\nVega-Lite automatically infers data types in many cases as discussed below. However, type is required for a field if: (1) the field is not nominal and the field encoding has no specified `aggregate` (except `argmin` and `argmax`), `bin`, scale type, custom `sort` order, nor `timeUnit` or (2) if you wish to use an ordinal scale for a field with `bin` or `timeUnit`.\\\\n\\\\n__Default value:__\\\\n\\\\n1) For a data `field`, `\\\\\\\"nominal\\\\\\\"` is the default data type unless the field encoding has `aggregate`, `channel`, `bin`, scale type, `sort`, or `timeUnit` that satisfies the following criteria: - `\\\\\\\"quantitative\\\\\\\"` is the default type if (1) the encoded field contains `bin` or `aggregate` except `\\\\\\\"argmin\\\\\\\"` and `\\\\\\\"argmax\\\\\\\"`, (2) the encoding channel is `latitude` or `longitude` channel or (3) if the specified scale type is [a quantitative scale](https://vega.github.io/vega-lite/docs/scale.html#type). - `\\\\\\\"temporal\\\\\\\"` is the default type if (1) the encoded field contains `timeUnit` or (2) the specified scale type is a time or utc scale - `ordinal\\\\\\\"\\\\\\\"` is the default type if (1) the encoded field contains a [custom `sort` order](https://vega.github.io/vega-lite/docs/sort.html#specifying-custom-sort-order), (2) the specified scale type is an ordinal/point/band scale, or (3) the encoding channel is `order`.\\\\n\\\\n2) For a constant value in data domain (`datum`): - `\\\\\\\"quantitative\\\\\\\"` if the datum is a number - `\\\\\\\"nominal\\\\\\\"` if the datum is a string - `\\\\\\\"temporal\\\\\\\"` if the datum is [a date time object](https://vega.github.io/vega-lite/docs/datetime.html)\\\\n\\\\n__Note:__ - Data `type` describes the semantics of the data rather than the primitive data types (number, string, etc.). The same primitive data type can have different types of measurement. For example, numeric data can represent quantitative, ordinal, or nominal data. - Data values for a temporal field can be either a date-time string (e.g., `\\\\\\\"2015-03-07 12:32:17\\\\\\\"`, `\\\\\\\"17:01\\\\\\\"`, `\\\\\\\"2015-03-16\\\\\\\"`. `\\\\\\\"2015\\\\\\\"`) or a timestamp number (e.g., `1552199579097`). - When using with [`bin`](https://vega.github.io/vega-lite/docs/bin.html), the `type` property can be either `\\\\\\\"quantitative\\\\\\\"` (for using a linear bin scale) or [`\\\\\\\"ordinal\\\\\\\"` (for using an ordinal bin scale)](https://vega.github.io/vega-lite/docs/type.html#cast-bin). - When using with [`timeUnit`](https://vega.github.io/vega-lite/docs/timeunit.html), the `type` property can be either `\\\\\\\"temporal\\\\\\\"` (default, for using a temporal scale) or [`\\\\\\\"ordinal\\\\\\\"` (for using an ordinal scale)](https://vega.github.io/vega-lite/docs/type.html#cast-bin). - When using with [`aggregate`](https://vega.github.io/vega-lite/docs/aggregate.html), the `type` property refers to the post-aggregation data type. For example, we can calculate count `distinct` of a categorical field `\\\\\\\"cat\\\\\\\"` using `{\\\\\\\"aggregate\\\\\\\": \\\\\\\"distinct\\\\\\\", \\\\\\\"field\\\\\\\": \\\\\\\"cat\\\\\\\"}`. The `\\\\\\\"type\\\\\\\"` of the aggregate output is `\\\\\\\"quantitative\\\\\\\"`. - Secondary channels (e.g., `x2`, `y2`, `xError`, `yError`) do not have `type` as they must have exactly the same type as their primary channels (e.g., `x`, `y`).\\\\n\\\\n__See also:__ [`type`](https://vega.github.io/vega-lite/docs/type.html) documentation.\\\"},\\\"value\\\":{\\\"anyOf\\\":[{\\\"type\\\":\\\"number\\\"},{\\\"const\\\":\\\"width\\\",\\\"type\\\":\\\"string\\\"},{\\\"const\\\":\\\"height\\\",\\\"type\\\":\\\"string\\\"},{\\\"$ref\\\":\\\"#/definitions/ExprRef\\\"}],\\\"description\\\":\\\"A constant value in visual domain (e.g., `\\\\\\\"red\\\\\\\"` / `\\\\\\\"#0099ff\\\\\\\"` / [gradient definition](https://vega.github.io/vega-lite/docs/types.html#gradient) for color, values between `0` to `1` for opacity).\\\"}},\\\"type\\\":\\\"object\\\"},\\\"y2\\\":{\\\"additionalProperties\\\":false,\\\"properties\\\":{\\\"aggregate\\\":{\\\"$ref\\\":\\\"#/definitions/Aggregate\\\",\\\"description\\\":\\\"Aggregation function for the field (e.g., `\\\\\\\"mean\\\\\\\"`, `\\\\\\\"sum\\\\\\\"`, `\\\\\\\"median\\\\\\\"`, `\\\\\\\"min\\\\\\\"`, `\\\\\\\"max\\\\\\\"`, `\\\\\\\"count\\\\\\\"`).\\\\n\\\\n__Default value:__ `undefined` (None)\\\\n\\\\n__See also:__ [`aggregate`](https://vega.github.io/vega-lite/docs/aggregate.html) documentation.\\\"},\\\"band\\\":{\\\"description\\\":\\\"For rect-based marks (`rect`, `bar`, and `image`), mark size relative to bandwidth of [band scales](https://vega.github.io/vega-lite/docs/scale.html#band), bins or time units. If set to `1`, the mark size is set to the bandwidth, the bin interval, or the time unit interval. If set to `0.5`, the mark size is half of the bandwidth or the time unit interval.\\\\n\\\\nFor other marks, relative position on a band of a stacked, binned, time unit or band scale. If set to `0`, the marks will be positioned at the beginning of the band. If set to `0.5`, the marks will be positioned in the middle of the band.\\\",\\\"maximum\\\":1,\\\"minimum\\\":0,\\\"type\\\":\\\"number\\\"},\\\"bin\\\":{\\\"description\\\":\\\"A flag for binning a `quantitative` field, [an object defining binning parameters](https://vega.github.io/vega-lite/docs/bin.html#params), or indicating that the data for `x` or `y` channel are binned before they are imported into Vega-Lite (`\\\\\\\"binned\\\\\\\"`).\\\\n\\\\n- If `true`, default [binning parameters](https://vega.github.io/vega-lite/docs/bin.html) will be applied.\\\\n\\\\n- If `\\\\\\\"binned\\\\\\\"`, this indicates that the data for the `x` (or `y`) channel are already binned. You can map the bin-start field to `x` (or `y`) and the bin-end field to `x2` (or `y2`). The scale and axis will be formatted similar to binning in Vega-Lite.  To adjust the axis ticks based on the bin step, you can also set the axis's [`tickMinStep`](https://vega.github.io/vega-lite/docs/axis.html#ticks) property.\\\\n\\\\n__Default value:__ `false`\\\\n\\\\n__See also:__ [`bin`](https://vega.github.io/vega-lite/docs/bin.html) documentation.\\\",\\\"type\\\":\\\"null\\\"},\\\"datum\\\":{\\\"anyOf\\\":[{\\\"$ref\\\":\\\"#/definitions/PrimitiveValue\\\"},{\\\"$ref\\\":\\\"#/definitions/DateTime\\\"},{\\\"$ref\\\":\\\"#/definitions/ExprRef\\\"},{\\\"$ref\\\":\\\"#/definitions/RepeatRef\\\"}],\\\"description\\\":\\\"A constant value in data domain.\\\"},\\\"field\\\":{\\\"$ref\\\":\\\"#/definitions/Field\\\",\\\"description\\\":\\\"__Required.__ A string defining the name of the field from which to pull a data value or an object defining iterated values from the [`repeat`](https://vega.github.io/vega-lite/docs/repeat.html) operator.\\\\n\\\\n__See also:__ [`field`](https://vega.github.io/vega-lite/docs/field.html) documentation.\\\\n\\\\n__Notes:__ 1)  Dots (`.`) and brackets (`[` and `]`) can be used to access nested objects (e.g., `\\\\\\\"field\\\\\\\": \\\\\\\"foo.bar\\\\\\\"` and `\\\\\\\"field\\\\\\\": \\\\\\\"foo['bar']\\\\\\\"`). If field names contain dots or brackets but are not nested, you can use `\\\\\\\\\\\\\\\\` to escape dots and brackets (e.g., `\\\\\\\"a\\\\\\\\\\\\\\\\.b\\\\\\\"` and `\\\\\\\"a\\\\\\\\\\\\\\\\[0\\\\\\\\\\\\\\\\]\\\\\\\"`). See more details about escaping in the [field documentation](https://vega.github.io/vega-lite/docs/field.html). 2) `field` is not required if `aggregate` is `count`.\\\"},\\\"timeUnit\\\":{\\\"anyOf\\\":[{\\\"$ref\\\":\\\"#/definitions/TimeUnit\\\"},{\\\"$ref\\\":\\\"#/definitions/TimeUnitParams\\\"}],\\\"description\\\":\\\"Time unit (e.g., `year`, `yearmonth`, `month`, `hours`) for a temporal field. or [a temporal field that gets casted as ordinal](https://vega.github.io/vega-lite/docs/type.html#cast).\\\\n\\\\n__Default value:__ `undefined` (None)\\\\n\\\\n__See also:__ [`timeUnit`](https://vega.github.io/vega-lite/docs/timeunit.html) documentation.\\\"},\\\"title\\\":{\\\"anyOf\\\":[{\\\"$ref\\\":\\\"#/definitions/Text\\\"},{\\\"type\\\":\\\"null\\\"}],\\\"description\\\":\\\"A title for the field. If `null`, the title will be removed.\\\\n\\\\n__Default value:__  derived from the field's name and transformation function (`aggregate`, `bin` and `timeUnit`). If the field has an aggregate function, the function is displayed as part of the title (e.g., `\\\\\\\"Sum of Profit\\\\\\\"`). If the field is binned or has a time unit applied, the applied function is shown in parentheses (e.g., `\\\\\\\"Profit (binned)\\\\\\\"`, `\\\\\\\"Transaction Date (year-month)\\\\\\\"`). Otherwise, the title is simply the field name.\\\\n\\\\n__Notes__:\\\\n\\\\n1) You can customize the default field title format by providing the [`fieldTitle`](https://vega.github.io/vega-lite/docs/config.html#top-level-config) property in the [config](https://vega.github.io/vega-lite/docs/config.html) or [`fieldTitle` function via the `compile` function's options](https://vega.github.io/vega-lite/docs/compile.html#field-title).\\\\n\\\\n2) If both field definition's `title` and axis, header, or legend `title` are defined, axis/header/legend title will be used.\\\"},\\\"type\\\":{\\\"$ref\\\":\\\"#/definitions/Type\\\",\\\"description\\\":\\\"The type of measurement (`\\\\\\\"quantitative\\\\\\\"`, `\\\\\\\"temporal\\\\\\\"`, `\\\\\\\"ordinal\\\\\\\"`, or `\\\\\\\"nominal\\\\\\\"`) for the encoded field or constant value (`datum`). It can also be a `\\\\\\\"geojson\\\\\\\"` type for encoding ['geoshape'](https://vega.github.io/vega-lite/docs/geoshape.html).\\\\n\\\\nVega-Lite automatically infers data types in many cases as discussed below. However, type is required for a field if: (1) the field is not nominal and the field encoding has no specified `aggregate` (except `argmin` and `argmax`), `bin`, scale type, custom `sort` order, nor `timeUnit` or (2) if you wish to use an ordinal scale for a field with `bin` or `timeUnit`.\\\\n\\\\n__Default value:__\\\\n\\\\n1) For a data `field`, `\\\\\\\"nominal\\\\\\\"` is the default data type unless the field encoding has `aggregate`, `channel`, `bin`, scale type, `sort`, or `timeUnit` that satisfies the following criteria: - `\\\\\\\"quantitative\\\\\\\"` is the default type if (1) the encoded field contains `bin` or `aggregate` except `\\\\\\\"argmin\\\\\\\"` and `\\\\\\\"argmax\\\\\\\"`, (2) the encoding channel is `latitude` or `longitude` channel or (3) if the specified scale type is [a quantitative scale](https://vega.github.io/vega-lite/docs/scale.html#type). - `\\\\\\\"temporal\\\\\\\"` is the default type if (1) the encoded field contains `timeUnit` or (2) the specified scale type is a time or utc scale - `ordinal\\\\\\\"\\\\\\\"` is the default type if (1) the encoded field contains a [custom `sort` order](https://vega.github.io/vega-lite/docs/sort.html#specifying-custom-sort-order), (2) the specified scale type is an ordinal/point/band scale, or (3) the encoding channel is `order`.\\\\n\\\\n2) For a constant value in data domain (`datum`): - `\\\\\\\"quantitative\\\\\\\"` if the datum is a number - `\\\\\\\"nominal\\\\\\\"` if the datum is a string - `\\\\\\\"temporal\\\\\\\"` if the datum is [a date time object](https://vega.github.io/vega-lite/docs/datetime.html)\\\\n\\\\n__Note:__ - Data `type` describes the semantics of the data rather than the primitive data types (number, string, etc.). The same primitive data type can have different types of measurement. For example, numeric data can represent quantitative, ordinal, or nominal data. - Data values for a temporal field can be either a date-time string (e.g., `\\\\\\\"2015-03-07 12:32:17\\\\\\\"`, `\\\\\\\"17:01\\\\\\\"`, `\\\\\\\"2015-03-16\\\\\\\"`. `\\\\\\\"2015\\\\\\\"`) or a timestamp number (e.g., `1552199579097`). - When using with [`bin`](https://vega.github.io/vega-lite/docs/bin.html), the `type` property can be either `\\\\\\\"quantitative\\\\\\\"` (for using a linear bin scale) or [`\\\\\\\"ordinal\\\\\\\"` (for using an ordinal bin scale)](https://vega.github.io/vega-lite/docs/type.html#cast-bin). - When using with [`timeUnit`](https://vega.github.io/vega-lite/docs/timeunit.html), the `type` property can be either `\\\\\\\"temporal\\\\\\\"` (default, for using a temporal scale) or [`\\\\\\\"ordinal\\\\\\\"` (for using an ordinal scale)](https://vega.github.io/vega-lite/docs/type.html#cast-bin). - When using with [`aggregate`](https://vega.github.io/vega-lite/docs/aggregate.html), the `type` property refers to the post-aggregation data type. For example, we can calculate count `distinct` of a categorical field `\\\\\\\"cat\\\\\\\"` using `{\\\\\\\"aggregate\\\\\\\": \\\\\\\"distinct\\\\\\\", \\\\\\\"field\\\\\\\": \\\\\\\"cat\\\\\\\"}`. The `\\\\\\\"type\\\\\\\"` of the aggregate output is `\\\\\\\"quantitative\\\\\\\"`. - Secondary channels (e.g., `x2`, `y2`, `xError`, `yError`) do not have `type` as they must have exactly the same type as their primary channels (e.g., `x`, `y`).\\\\n\\\\n__See also:__ [`type`](https://vega.github.io/vega-lite/docs/type.html) documentation.\\\"},\\\"value\\\":{\\\"anyOf\\\":[{\\\"type\\\":\\\"number\\\"},{\\\"const\\\":\\\"width\\\",\\\"type\\\":\\\"string\\\"},{\\\"const\\\":\\\"height\\\",\\\"type\\\":\\\"string\\\"},{\\\"$ref\\\":\\\"#/definitions/ExprRef\\\"}],\\\"description\\\":\\\"A constant value in visual domain (e.g., `\\\\\\\"red\\\\\\\"` / `\\\\\\\"#0099ff\\\\\\\"` / [gradient definition](https://vega.github.io/vega-lite/docs/types.html#gradient) for color, values between `0` to `1` for opacity).\\\"}},\\\"type\\\":\\\"object\\\"},\\\"yError\\\":{\\\"additionalProperties\\\":false,\\\"properties\\\":{\\\"aggregate\\\":{\\\"$ref\\\":\\\"#/definitions/Aggregate\\\",\\\"description\\\":\\\"Aggregation function for the field (e.g., `\\\\\\\"mean\\\\\\\"`, `\\\\\\\"sum\\\\\\\"`, `\\\\\\\"median\\\\\\\"`, `\\\\\\\"min\\\\\\\"`, `\\\\\\\"max\\\\\\\"`, `\\\\\\\"count\\\\\\\"`).\\\\n\\\\n__Default value:__ `undefined` (None)\\\\n\\\\n__See also:__ [`aggregate`](https://vega.github.io/vega-lite/docs/aggregate.html) documentation.\\\"},\\\"band\\\":{\\\"description\\\":\\\"For rect-based marks (`rect`, `bar`, and `image`), mark size relative to bandwidth of [band scales](https://vega.github.io/vega-lite/docs/scale.html#band), bins or time units. If set to `1`, the mark size is set to the bandwidth, the bin interval, or the time unit interval. If set to `0.5`, the mark size is half of the bandwidth or the time unit interval.\\\\n\\\\nFor other marks, relative position on a band of a stacked, binned, time unit or band scale. If set to `0`, the marks will be positioned at the beginning of the band. If set to `0.5`, the marks will be positioned in the middle of the band.\\\",\\\"maximum\\\":1,\\\"minimum\\\":0,\\\"type\\\":\\\"number\\\"},\\\"bin\\\":{\\\"description\\\":\\\"A flag for binning a `quantitative` field, [an object defining binning parameters](https://vega.github.io/vega-lite/docs/bin.html#params), or indicating that the data for `x` or `y` channel are binned before they are imported into Vega-Lite (`\\\\\\\"binned\\\\\\\"`).\\\\n\\\\n- If `true`, default [binning parameters](https://vega.github.io/vega-lite/docs/bin.html) will be applied.\\\\n\\\\n- If `\\\\\\\"binned\\\\\\\"`, this indicates that the data for the `x` (or `y`) channel are already binned. You can map the bin-start field to `x` (or `y`) and the bin-end field to `x2` (or `y2`). The scale and axis will be formatted similar to binning in Vega-Lite.  To adjust the axis ticks based on the bin step, you can also set the axis's [`tickMinStep`](https://vega.github.io/vega-lite/docs/axis.html#ticks) property.\\\\n\\\\n__Default value:__ `false`\\\\n\\\\n__See also:__ [`bin`](https://vega.github.io/vega-lite/docs/bin.html) documentation.\\\",\\\"type\\\":\\\"null\\\"},\\\"field\\\":{\\\"$ref\\\":\\\"#/definitions/Field\\\",\\\"description\\\":\\\"__Required.__ A string defining the name of the field from which to pull a data value or an object defining iterated values from the [`repeat`](https://vega.github.io/vega-lite/docs/repeat.html) operator.\\\\n\\\\n__See also:__ [`field`](https://vega.github.io/vega-lite/docs/field.html) documentation.\\\\n\\\\n__Notes:__ 1)  Dots (`.`) and brackets (`[` and `]`) can be used to access nested objects (e.g., `\\\\\\\"field\\\\\\\": \\\\\\\"foo.bar\\\\\\\"` and `\\\\\\\"field\\\\\\\": \\\\\\\"foo['bar']\\\\\\\"`). If field names contain dots or brackets but are not nested, you can use `\\\\\\\\\\\\\\\\` to escape dots and brackets (e.g., `\\\\\\\"a\\\\\\\\\\\\\\\\.b\\\\\\\"` and `\\\\\\\"a\\\\\\\\\\\\\\\\[0\\\\\\\\\\\\\\\\]\\\\\\\"`). See more details about escaping in the [field documentation](https://vega.github.io/vega-lite/docs/field.html). 2) `field` is not required if `aggregate` is `count`.\\\"},\\\"timeUnit\\\":{\\\"anyOf\\\":[{\\\"$ref\\\":\\\"#/definitions/TimeUnit\\\"},{\\\"$ref\\\":\\\"#/definitions/TimeUnitParams\\\"}],\\\"description\\\":\\\"Time unit (e.g., `year`, `yearmonth`, `month`, `hours`) for a temporal field. or [a temporal field that gets casted as ordinal](https://vega.github.io/vega-lite/docs/type.html#cast).\\\\n\\\\n__Default value:__ `undefined` (None)\\\\n\\\\n__See also:__ [`timeUnit`](https://vega.github.io/vega-lite/docs/timeunit.html) documentation.\\\"},\\\"title\\\":{\\\"anyOf\\\":[{\\\"$ref\\\":\\\"#/definitions/Text\\\"},{\\\"type\\\":\\\"null\\\"}],\\\"description\\\":\\\"A title for the field. If `null`, the title will be removed.\\\\n\\\\n__Default value:__  derived from the field's name and transformation function (`aggregate`, `bin` and `timeUnit`). If the field has an aggregate function, the function is displayed as part of the title (e.g., `\\\\\\\"Sum of Profit\\\\\\\"`). If the field is binned or has a time unit applied, the applied function is shown in parentheses (e.g., `\\\\\\\"Profit (binned)\\\\\\\"`, `\\\\\\\"Transaction Date (year-month)\\\\\\\"`). Otherwise, the title is simply the field name.\\\\n\\\\n__Notes__:\\\\n\\\\n1) You can customize the default field title format by providing the [`fieldTitle`](https://vega.github.io/vega-lite/docs/config.html#top-level-config) property in the [config](https://vega.github.io/vega-lite/docs/config.html) or [`fieldTitle` function via the `compile` function's options](https://vega.github.io/vega-lite/docs/compile.html#field-title).\\\\n\\\\n2) If both field definition's `title` and axis, header, or legend `title` are defined, axis/header/legend title will be used.\\\"},\\\"value\\\":{\\\"description\\\":\\\"A constant value in visual domain (e.g., `\\\\\\\"red\\\\\\\"` / `\\\\\\\"#0099ff\\\\\\\"` / [gradient definition](https://vega.github.io/vega-lite/docs/types.html#gradient) for color, values between `0` to `1` for opacity).\\\",\\\"type\\\":\\\"number\\\"}},\\\"type\\\":\\\"object\\\"},\\\"yError2\\\":{\\\"additionalProperties\\\":false,\\\"properties\\\":{\\\"aggregate\\\":{\\\"$ref\\\":\\\"#/definitions/Aggregate\\\",\\\"description\\\":\\\"Aggregation function for the field (e.g., `\\\\\\\"mean\\\\\\\"`, `\\\\\\\"sum\\\\\\\"`, `\\\\\\\"median\\\\\\\"`, `\\\\\\\"min\\\\\\\"`, `\\\\\\\"max\\\\\\\"`, `\\\\\\\"count\\\\\\\"`).\\\\n\\\\n__Default value:__ `undefined` (None)\\\\n\\\\n__See also:__ [`aggregate`](https://vega.github.io/vega-lite/docs/aggregate.html) documentation.\\\"},\\\"band\\\":{\\\"description\\\":\\\"For rect-based marks (`rect`, `bar`, and `image`), mark size relative to bandwidth of [band scales](https://vega.github.io/vega-lite/docs/scale.html#band), bins or time units. If set to `1`, the mark size is set to the bandwidth, the bin interval, or the time unit interval. If set to `0.5`, the mark size is half of the bandwidth or the time unit interval.\\\\n\\\\nFor other marks, relative position on a band of a stacked, binned, time unit or band scale. If set to `0`, the marks will be positioned at the beginning of the band. If set to `0.5`, the marks will be positioned in the middle of the band.\\\",\\\"maximum\\\":1,\\\"minimum\\\":0,\\\"type\\\":\\\"number\\\"},\\\"bin\\\":{\\\"description\\\":\\\"A flag for binning a `quantitative` field, [an object defining binning parameters](https://vega.github.io/vega-lite/docs/bin.html#params), or indicating that the data for `x` or `y` channel are binned before they are imported into Vega-Lite (`\\\\\\\"binned\\\\\\\"`).\\\\n\\\\n- If `true`, default [binning parameters](https://vega.github.io/vega-lite/docs/bin.html) will be applied.\\\\n\\\\n- If `\\\\\\\"binned\\\\\\\"`, this indicates that the data for the `x` (or `y`) channel are already binned. You can map the bin-start field to `x` (or `y`) and the bin-end field to `x2` (or `y2`). The scale and axis will be formatted similar to binning in Vega-Lite.  To adjust the axis ticks based on the bin step, you can also set the axis's [`tickMinStep`](https://vega.github.io/vega-lite/docs/axis.html#ticks) property.\\\\n\\\\n__Default value:__ `false`\\\\n\\\\n__See also:__ [`bin`](https://vega.github.io/vega-lite/docs/bin.html) documentation.\\\",\\\"type\\\":\\\"null\\\"},\\\"field\\\":{\\\"$ref\\\":\\\"#/definitions/Field\\\",\\\"description\\\":\\\"__Required.__ A string defining the name of the field from which to pull a data value or an object defining iterated values from the [`repeat`](https://vega.github.io/vega-lite/docs/repeat.html) operator.\\\\n\\\\n__See also:__ [`field`](https://vega.github.io/vega-lite/docs/field.html) documentation.\\\\n\\\\n__Notes:__ 1)  Dots (`.`) and brackets (`[` and `]`) can be used to access nested objects (e.g., `\\\\\\\"field\\\\\\\": \\\\\\\"foo.bar\\\\\\\"` and `\\\\\\\"field\\\\\\\": \\\\\\\"foo['bar']\\\\\\\"`). If field names contain dots or brackets but are not nested, you can use `\\\\\\\\\\\\\\\\` to escape dots and brackets (e.g., `\\\\\\\"a\\\\\\\\\\\\\\\\.b\\\\\\\"` and `\\\\\\\"a\\\\\\\\\\\\\\\\[0\\\\\\\\\\\\\\\\]\\\\\\\"`). See more details about escaping in the [field documentation](https://vega.github.io/vega-lite/docs/field.html). 2) `field` is not required if `aggregate` is `count`.\\\"},\\\"timeUnit\\\":{\\\"anyOf\\\":[{\\\"$ref\\\":\\\"#/definitions/TimeUnit\\\"},{\\\"$ref\\\":\\\"#/definitions/TimeUnitParams\\\"}],\\\"description\\\":\\\"Time unit (e.g., `year`, `yearmonth`, `month`, `hours`) for a temporal field. or [a temporal field that gets casted as ordinal](https://vega.github.io/vega-lite/docs/type.html#cast).\\\\n\\\\n__Default value:__ `undefined` (None)\\\\n\\\\n__See also:__ [`timeUnit`](https://vega.github.io/vega-lite/docs/timeunit.html) documentation.\\\"},\\\"title\\\":{\\\"anyOf\\\":[{\\\"$ref\\\":\\\"#/definitions/Text\\\"},{\\\"type\\\":\\\"null\\\"}],\\\"description\\\":\\\"A title for the field. If `null`, the title will be removed.\\\\n\\\\n__Default value:__  derived from the field's name and transformation function (`aggregate`, `bin` and `timeUnit`). If the field has an aggregate function, the function is displayed as part of the title (e.g., `\\\\\\\"Sum of Profit\\\\\\\"`). If the field is binned or has a time unit applied, the applied function is shown in parentheses (e.g., `\\\\\\\"Profit (binned)\\\\\\\"`, `\\\\\\\"Transaction Date (year-month)\\\\\\\"`). Otherwise, the title is simply the field name.\\\\n\\\\n__Notes__:\\\\n\\\\n1) You can customize the default field title format by providing the [`fieldTitle`](https://vega.github.io/vega-lite/docs/config.html#top-level-config) property in the [config](https://vega.github.io/vega-lite/docs/config.html) or [`fieldTitle` function via the `compile` function's options](https://vega.github.io/vega-lite/docs/compile.html#field-title).\\\\n\\\\n2) If both field definition's `title` and axis, header, or legend `title` are defined, axis/header/legend title will be used.\\\"},\\\"value\\\":{\\\"description\\\":\\\"A constant value in visual domain (e.g., `\\\\\\\"red\\\\\\\"` / `\\\\\\\"#0099ff\\\\\\\"` / [gradient definition](https://vega.github.io/vega-lite/docs/types.html#gradient) for color, values between `0` to `1` for opacity).\\\",\\\"type\\\":\\\"number\\\"}},\\\"type\\\":\\\"object\\\"}},\\\"type\\\":\\\"object\\\"},\\\"SingleDefUnitChannel\\\":{\\\"enum\\\":[\\\"x\\\",\\\"y\\\",\\\"x2\\\",\\\"y2\\\",\\\"longitude\\\",\\\"latitude\\\",\\\"longitude2\\\",\\\"latitude2\\\",\\\"theta\\\",\\\"theta2\\\",\\\"radius\\\",\\\"radius2\\\",\\\"color\\\",\\\"fill\\\",\\\"stroke\\\",\\\"opacity\\\",\\\"fillOpacity\\\",\\\"strokeOpacity\\\",\\\"strokeWidth\\\",\\\"strokeDash\\\",\\\"size\\\",\\\"angle\\\",\\\"shape\\\",\\\"key\\\",\\\"text\\\",\\\"href\\\",\\\"url\\\",\\\"description\\\"],\\\"type\\\":\\\"string\\\"},\\\"SingleSelection\\\":{\\\"additionalProperties\\\":false,\\\"properties\\\":{\\\"bind\\\":{\\\"anyOf\\\":[{\\\"$ref\\\":\\\"#/definitions/Binding\\\"},{\\\"additionalProperties\\\":{\\\"$ref\\\":\\\"#/definitions/Binding\\\"},\\\"type\\\":\\\"object\\\"},{\\\"$ref\\\":\\\"#/definitions/LegendBinding\\\"}],\\\"description\\\":\\\"When set, a selection is populated by input elements (also known as dynamic query widgets) or by interacting with the corresponding legend. Direct manipulation interaction is disabled by default; to re-enable it, set the selection's [`on`](https://vega.github.io/vega-lite/docs/selection.html#common-selection-properties) property.\\\\n\\\\nLegend bindings are restricted to selections that only specify a single field or encoding.\\\\n\\\\nQuery widget binding takes the form of Vega's [input element binding definition](https://vega.github.io/vega/docs/signals/#bind) or can be a mapping between projected field/encodings and binding definitions.\\\\n\\\\n__See also:__ [`bind`](https://vega.github.io/vega-lite/docs/bind.html) documentation.\\\"},\\\"clear\\\":{\\\"anyOf\\\":[{\\\"$ref\\\":\\\"#/definitions/Stream\\\"},{\\\"type\\\":\\\"string\\\"},{\\\"type\\\":\\\"boolean\\\"}],\\\"description\\\":\\\"Clears the selection, emptying it of all values. Can be a [Event Stream](https://vega.github.io/vega/docs/event-streams/) or `false` to disable.\\\\n\\\\n__Default value:__ `dblclick`.\\\\n\\\\n__See also:__ [`clear`](https://vega.github.io/vega-lite/docs/clear.html) documentation.\\\"},\\\"empty\\\":{\\\"description\\\":\\\"By default, `all` data values are considered to lie within an empty selection. When set to `none`, empty selections contain no data values.\\\",\\\"enum\\\":[\\\"all\\\",\\\"none\\\"],\\\"type\\\":\\\"string\\\"},\\\"encodings\\\":{\\\"description\\\":\\\"An array of encoding channels. The corresponding data field values must match for a data tuple to fall within the selection.\\\\n\\\\n__See also:__ [`encodings`](https://vega.github.io/vega-lite/docs/project.html) documentation.\\\",\\\"items\\\":{\\\"$ref\\\":\\\"#/definitions/SingleDefUnitChannel\\\"},\\\"type\\\":\\\"array\\\"},\\\"fields\\\":{\\\"description\\\":\\\"An array of field names whose values must match for a data tuple to fall within the selection.\\\\n\\\\n__See also:__ [`fields`](https://vega.github.io/vega-lite/docs/project.html) documentation.\\\",\\\"items\\\":{\\\"$ref\\\":\\\"#/definitions/FieldName\\\"},\\\"type\\\":\\\"array\\\"},\\\"init\\\":{\\\"$ref\\\":\\\"#/definitions/SelectionInitMapping\\\",\\\"description\\\":\\\"Initialize the selection with a mapping between [projected channels or field names](https://vega.github.io/vega-lite/docs/project.html) and initial values.\\\\n\\\\n__See also:__ [`init`](https://vega.github.io/vega-lite/docs/init.html) documentation.\\\"},\\\"nearest\\\":{\\\"description\\\":\\\"When true, an invisible voronoi diagram is computed to accelerate discrete selection. The data value _nearest_ the mouse cursor is added to the selection.\\\\n\\\\n__See also:__ [`nearest`](https://vega.github.io/vega-lite/docs/nearest.html) documentation.\\\",\\\"type\\\":\\\"boolean\\\"},\\\"on\\\":{\\\"anyOf\\\":[{\\\"$ref\\\":\\\"#/definitions/Stream\\\"},{\\\"type\\\":\\\"string\\\"}],\\\"description\\\":\\\"A [Vega event stream](https://vega.github.io/vega/docs/event-streams/) (object or selector) that triggers the selection. For interval selections, the event stream must specify a [start and end](https://vega.github.io/vega/docs/event-streams/#between-filters).\\\"},\\\"resolve\\\":{\\\"$ref\\\":\\\"#/definitions/SelectionResolution\\\",\\\"description\\\":\\\"With layered and multi-view displays, a strategy that determines how selections' data queries are resolved when applied in a filter transform, conditional encoding rule, or scale domain.\\\\n\\\\n__See also:__ [`resolve`](https://vega.github.io/vega-lite/docs/selection-resolve.html) documentation.\\\"},\\\"type\\\":{\\\"const\\\":\\\"single\\\",\\\"description\\\":\\\"Determines the default event processing and data query for the selection. Vega-Lite currently supports three selection types:\\\\n\\\\n- `\\\\\\\"single\\\\\\\"` -- to select a single discrete data value on `click`. - `\\\\\\\"multi\\\\\\\"` -- to select multiple discrete data value; the first value is selected on `click` and additional values toggled on shift-`click`. - `\\\\\\\"interval\\\\\\\"` -- to select a continuous range of data values on `drag`.\\\",\\\"type\\\":\\\"string\\\"}},\\\"required\\\":[\\\"type\\\"],\\\"type\\\":\\\"object\\\"},\\\"SingleSelectionConfig\\\":{\\\"additionalProperties\\\":false,\\\"properties\\\":{\\\"bind\\\":{\\\"anyOf\\\":[{\\\"$ref\\\":\\\"#/definitions/Binding\\\"},{\\\"additionalProperties\\\":{\\\"$ref\\\":\\\"#/definitions/Binding\\\"},\\\"type\\\":\\\"object\\\"},{\\\"$ref\\\":\\\"#/definitions/LegendBinding\\\"}],\\\"description\\\":\\\"When set, a selection is populated by input elements (also known as dynamic query widgets) or by interacting with the corresponding legend. Direct manipulation interaction is disabled by default; to re-enable it, set the selection's [`on`](https://vega.github.io/vega-lite/docs/selection.html#common-selection-properties) property.\\\\n\\\\nLegend bindings are restricted to selections that only specify a single field or encoding.\\\\n\\\\nQuery widget binding takes the form of Vega's [input element binding definition](https://vega.github.io/vega/docs/signals/#bind) or can be a mapping between projected field/encodings and binding definitions.\\\\n\\\\n__See also:__ [`bind`](https://vega.github.io/vega-lite/docs/bind.html) documentation.\\\"},\\\"clear\\\":{\\\"anyOf\\\":[{\\\"$ref\\\":\\\"#/definitions/Stream\\\"},{\\\"type\\\":\\\"string\\\"},{\\\"type\\\":\\\"boolean\\\"}],\\\"description\\\":\\\"Clears the selection, emptying it of all values. Can be a [Event Stream](https://vega.github.io/vega/docs/event-streams/) or `false` to disable.\\\\n\\\\n__Default value:__ `dblclick`.\\\\n\\\\n__See also:__ [`clear`](https://vega.github.io/vega-lite/docs/clear.html) documentation.\\\"},\\\"empty\\\":{\\\"description\\\":\\\"By default, `all` data values are considered to lie within an empty selection. When set to `none`, empty selections contain no data values.\\\",\\\"enum\\\":[\\\"all\\\",\\\"none\\\"],\\\"type\\\":\\\"string\\\"},\\\"encodings\\\":{\\\"description\\\":\\\"An array of encoding channels. The corresponding data field values must match for a data tuple to fall within the selection.\\\\n\\\\n__See also:__ [`encodings`](https://vega.github.io/vega-lite/docs/project.html) documentation.\\\",\\\"items\\\":{\\\"$ref\\\":\\\"#/definitions/SingleDefUnitChannel\\\"},\\\"type\\\":\\\"array\\\"},\\\"fields\\\":{\\\"description\\\":\\\"An array of field names whose values must match for a data tuple to fall within the selection.\\\\n\\\\n__See also:__ [`fields`](https://vega.github.io/vega-lite/docs/project.html) documentation.\\\",\\\"items\\\":{\\\"$ref\\\":\\\"#/definitions/FieldName\\\"},\\\"type\\\":\\\"array\\\"},\\\"init\\\":{\\\"$ref\\\":\\\"#/definitions/SelectionInitMapping\\\",\\\"description\\\":\\\"Initialize the selection with a mapping between [projected channels or field names](https://vega.github.io/vega-lite/docs/project.html) and initial values.\\\\n\\\\n__See also:__ [`init`](https://vega.github.io/vega-lite/docs/init.html) documentation.\\\"},\\\"nearest\\\":{\\\"description\\\":\\\"When true, an invisible voronoi diagram is computed to accelerate discrete selection. The data value _nearest_ the mouse cursor is added to the selection.\\\\n\\\\n__See also:__ [`nearest`](https://vega.github.io/vega-lite/docs/nearest.html) documentation.\\\",\\\"type\\\":\\\"boolean\\\"},\\\"on\\\":{\\\"anyOf\\\":[{\\\"$ref\\\":\\\"#/definitions/Stream\\\"},{\\\"type\\\":\\\"string\\\"}],\\\"description\\\":\\\"A [Vega event stream](https://vega.github.io/vega/docs/event-streams/) (object or selector) that triggers the selection. For interval selections, the event stream must specify a [start and end](https://vega.github.io/vega/docs/event-streams/#between-filters).\\\"},\\\"resolve\\\":{\\\"$ref\\\":\\\"#/definitions/SelectionResolution\\\",\\\"description\\\":\\\"With layered and multi-view displays, a strategy that determines how selections' data queries are resolved when applied in a filter transform, conditional encoding rule, or scale domain.\\\\n\\\\n__See also:__ [`resolve`](https://vega.github.io/vega-lite/docs/selection-resolve.html) documentation.\\\"}},\\\"type\\\":\\\"object\\\"},\\\"SingleTimeUnit\\\":{\\\"anyOf\\\":[{\\\"$ref\\\":\\\"#/definitions/LocalSingleTimeUnit\\\"},{\\\"$ref\\\":\\\"#/definitions/UtcSingleTimeUnit\\\"}]},\\\"Sort\\\":{\\\"anyOf\\\":[{\\\"$ref\\\":\\\"#/definitions/SortArray\\\"},{\\\"$ref\\\":\\\"#/definitions/AllSortString\\\"},{\\\"$ref\\\":\\\"#/definitions/EncodingSortField\\\"},{\\\"$ref\\\":\\\"#/definitions/SortByEncoding\\\"},{\\\"type\\\":\\\"null\\\"}]},\\\"SortArray\\\":{\\\"anyOf\\\":[{\\\"items\\\":{\\\"type\\\":\\\"number\\\"},\\\"type\\\":\\\"array\\\"},{\\\"items\\\":{\\\"type\\\":\\\"string\\\"},\\\"type\\\":\\\"array\\\"},{\\\"items\\\":{\\\"type\\\":\\\"boolean\\\"},\\\"type\\\":\\\"array\\\"},{\\\"items\\\":{\\\"$ref\\\":\\\"#/definitions/DateTime\\\"},\\\"type\\\":\\\"array\\\"}]},\\\"SortByChannel\\\":{\\\"enum\\\":[\\\"x\\\",\\\"y\\\",\\\"color\\\",\\\"fill\\\",\\\"stroke\\\",\\\"strokeWidth\\\",\\\"size\\\",\\\"shape\\\",\\\"fillOpacity\\\",\\\"strokeOpacity\\\",\\\"opacity\\\",\\\"text\\\"],\\\"type\\\":\\\"string\\\"},\\\"SortByChannelDesc\\\":{\\\"enum\\\":[\\\"-x\\\",\\\"-y\\\",\\\"-color\\\",\\\"-fill\\\",\\\"-stroke\\\",\\\"-strokeWidth\\\",\\\"-size\\\",\\\"-shape\\\",\\\"-fillOpacity\\\",\\\"-strokeOpacity\\\",\\\"-opacity\\\",\\\"-text\\\"],\\\"type\\\":\\\"string\\\"},\\\"SortByEncoding\\\":{\\\"additionalProperties\\\":false,\\\"properties\\\":{\\\"encoding\\\":{\\\"$ref\\\":\\\"#/definitions/SortByChannel\\\",\\\"description\\\":\\\"The [encoding channel](https://vega.github.io/vega-lite/docs/encoding.html#channels) to sort by (e.g., `\\\\\\\"x\\\\\\\"`, `\\\\\\\"y\\\\\\\"`)\\\"},\\\"order\\\":{\\\"anyOf\\\":[{\\\"$ref\\\":\\\"#/definitions/SortOrder\\\"},{\\\"type\\\":\\\"null\\\"}],\\\"description\\\":\\\"The sort order. One of `\\\\\\\"ascending\\\\\\\"` (default), `\\\\\\\"descending\\\\\\\"`, or `null` (no not sort).\\\"}},\\\"required\\\":[\\\"encoding\\\"],\\\"type\\\":\\\"object\\\"},\\\"SortField\\\":{\\\"additionalProperties\\\":false,\\\"description\\\":\\\"A sort definition for transform\\\",\\\"properties\\\":{\\\"field\\\":{\\\"$ref\\\":\\\"#/definitions/FieldName\\\",\\\"description\\\":\\\"The name of the field to sort.\\\"},\\\"order\\\":{\\\"anyOf\\\":[{\\\"$ref\\\":\\\"#/definitions/SortOrder\\\"},{\\\"type\\\":\\\"null\\\"}],\\\"description\\\":\\\"Whether to sort the field in ascending or descending order. One of `\\\\\\\"ascending\\\\\\\"` (default), `\\\\\\\"descending\\\\\\\"`, or `null` (no not sort).\\\"}},\\\"required\\\":[\\\"field\\\"],\\\"type\\\":\\\"object\\\"},\\\"SortOrder\\\":{\\\"enum\\\":[\\\"ascending\\\",\\\"descending\\\"],\\\"type\\\":\\\"string\\\"},\\\"SphereGenerator\\\":{\\\"additionalProperties\\\":false,\\\"properties\\\":{\\\"name\\\":{\\\"description\\\":\\\"Provide a placeholder name and bind data at runtime.\\\",\\\"type\\\":\\\"string\\\"},\\\"sphere\\\":{\\\"anyOf\\\":[{\\\"const\\\":true,\\\"type\\\":\\\"boolean\\\"},{\\\"additionalProperties\\\":false,\\\"type\\\":\\\"object\\\"}],\\\"description\\\":\\\"Generate sphere GeoJSON data for the full globe.\\\"}},\\\"required\\\":[\\\"sphere\\\"],\\\"type\\\":\\\"object\\\"},\\\"StackOffset\\\":{\\\"enum\\\":[\\\"zero\\\",\\\"center\\\",\\\"normalize\\\"],\\\"type\\\":\\\"string\\\"},\\\"StackTransform\\\":{\\\"additionalProperties\\\":false,\\\"properties\\\":{\\\"as\\\":{\\\"anyOf\\\":[{\\\"$ref\\\":\\\"#/definitions/FieldName\\\"},{\\\"items\\\":[{\\\"$ref\\\":\\\"#/definitions/FieldName\\\"},{\\\"$ref\\\":\\\"#/definitions/FieldName\\\"}],\\\"maxItems\\\":2,\\\"minItems\\\":2,\\\"type\\\":\\\"array\\\"}],\\\"description\\\":\\\"Output field names. This can be either a string or an array of strings with two elements denoting the name for the fields for stack start and stack end respectively. If a single string(e.g., `\\\\\\\"val\\\\\\\"`) is provided, the end field will be `\\\\\\\"val_end\\\\\\\"`.\\\"},\\\"groupby\\\":{\\\"description\\\":\\\"The data fields to group by.\\\",\\\"items\\\":{\\\"$ref\\\":\\\"#/definitions/FieldName\\\"},\\\"type\\\":\\\"array\\\"},\\\"offset\\\":{\\\"description\\\":\\\"Mode for stacking marks. One of `\\\\\\\"zero\\\\\\\"` (default), `\\\\\\\"center\\\\\\\"`, or `\\\\\\\"normalize\\\\\\\"`. The `\\\\\\\"zero\\\\\\\"` offset will stack starting at `0`. The `\\\\\\\"center\\\\\\\"` offset will center the stacks. The `\\\\\\\"normalize\\\\\\\"` offset will compute percentage values for each stack point, with output values in the range `[0,1]`.\\\\n\\\\n__Default value:__ `\\\\\\\"zero\\\\\\\"`\\\",\\\"enum\\\":[\\\"zero\\\",\\\"center\\\",\\\"normalize\\\"],\\\"type\\\":\\\"string\\\"},\\\"sort\\\":{\\\"description\\\":\\\"Field that determines the order of leaves in the stacked charts.\\\",\\\"items\\\":{\\\"$ref\\\":\\\"#/definitions/SortField\\\"},\\\"type\\\":\\\"array\\\"},\\\"stack\\\":{\\\"$ref\\\":\\\"#/definitions/FieldName\\\",\\\"description\\\":\\\"The field which is stacked.\\\"}},\\\"required\\\":[\\\"stack\\\",\\\"groupby\\\",\\\"as\\\"],\\\"type\\\":\\\"object\\\"},\\\"StandardType\\\":{\\\"enum\\\":[\\\"quantitative\\\",\\\"ordinal\\\",\\\"temporal\\\",\\\"nominal\\\"],\\\"type\\\":\\\"string\\\"},\\\"Step\\\":{\\\"additionalProperties\\\":false,\\\"properties\\\":{\\\"step\\\":{\\\"description\\\":\\\"The size (width/height) per discrete step.\\\",\\\"type\\\":\\\"number\\\"}},\\\"required\\\":[\\\"step\\\"],\\\"type\\\":\\\"object\\\"},\\\"Stream\\\":{\\\"anyOf\\\":[{\\\"$ref\\\":\\\"#/definitions/EventStream\\\"},{\\\"$ref\\\":\\\"#/definitions/DerivedStream\\\"},{\\\"$ref\\\":\\\"#/definitions/MergedStream\\\"}]},\\\"StringFieldDef\\\":{\\\"additionalProperties\\\":false,\\\"properties\\\":{\\\"aggregate\\\":{\\\"$ref\\\":\\\"#/definitions/Aggregate\\\",\\\"description\\\":\\\"Aggregation function for the field (e.g., `\\\\\\\"mean\\\\\\\"`, `\\\\\\\"sum\\\\\\\"`, `\\\\\\\"median\\\\\\\"`, `\\\\\\\"min\\\\\\\"`, `\\\\\\\"max\\\\\\\"`, `\\\\\\\"count\\\\\\\"`).\\\\n\\\\n__Default value:__ `undefined` (None)\\\\n\\\\n__See also:__ [`aggregate`](https://vega.github.io/vega-lite/docs/aggregate.html) documentation.\\\"},\\\"band\\\":{\\\"description\\\":\\\"For rect-based marks (`rect`, `bar`, and `image`), mark size relative to bandwidth of [band scales](https://vega.github.io/vega-lite/docs/scale.html#band), bins or time units. If set to `1`, the mark size is set to the bandwidth, the bin interval, or the time unit interval. If set to `0.5`, the mark size is half of the bandwidth or the time unit interval.\\\\n\\\\nFor other marks, relative position on a band of a stacked, binned, time unit or band scale. If set to `0`, the marks will be positioned at the beginning of the band. If set to `0.5`, the marks will be positioned in the middle of the band.\\\",\\\"maximum\\\":1,\\\"minimum\\\":0,\\\"type\\\":\\\"number\\\"},\\\"bin\\\":{\\\"anyOf\\\":[{\\\"type\\\":\\\"boolean\\\"},{\\\"$ref\\\":\\\"#/definitions/BinParams\\\"},{\\\"const\\\":\\\"binned\\\",\\\"type\\\":\\\"string\\\"},{\\\"type\\\":\\\"null\\\"}],\\\"description\\\":\\\"A flag for binning a `quantitative` field, [an object defining binning parameters](https://vega.github.io/vega-lite/docs/bin.html#params), or indicating that the data for `x` or `y` channel are binned before they are imported into Vega-Lite (`\\\\\\\"binned\\\\\\\"`).\\\\n\\\\n- If `true`, default [binning parameters](https://vega.github.io/vega-lite/docs/bin.html) will be applied.\\\\n\\\\n- If `\\\\\\\"binned\\\\\\\"`, this indicates that the data for the `x` (or `y`) channel are already binned. You can map the bin-start field to `x` (or `y`) and the bin-end field to `x2` (or `y2`). The scale and axis will be formatted similar to binning in Vega-Lite.  To adjust the axis ticks based on the bin step, you can also set the axis's [`tickMinStep`](https://vega.github.io/vega-lite/docs/axis.html#ticks) property.\\\\n\\\\n__Default value:__ `false`\\\\n\\\\n__See also:__ [`bin`](https://vega.github.io/vega-lite/docs/bin.html) documentation.\\\"},\\\"field\\\":{\\\"$ref\\\":\\\"#/definitions/Field\\\",\\\"description\\\":\\\"__Required.__ A string defining the name of the field from which to pull a data value or an object defining iterated values from the [`repeat`](https://vega.github.io/vega-lite/docs/repeat.html) operator.\\\\n\\\\n__See also:__ [`field`](https://vega.github.io/vega-lite/docs/field.html) documentation.\\\\n\\\\n__Notes:__ 1)  Dots (`.`) and brackets (`[` and `]`) can be used to access nested objects (e.g., `\\\\\\\"field\\\\\\\": \\\\\\\"foo.bar\\\\\\\"` and `\\\\\\\"field\\\\\\\": \\\\\\\"foo['bar']\\\\\\\"`). If field names contain dots or brackets but are not nested, you can use `\\\\\\\\\\\\\\\\` to escape dots and brackets (e.g., `\\\\\\\"a\\\\\\\\\\\\\\\\.b\\\\\\\"` and `\\\\\\\"a\\\\\\\\\\\\\\\\[0\\\\\\\\\\\\\\\\]\\\\\\\"`). See more details about escaping in the [field documentation](https://vega.github.io/vega-lite/docs/field.html). 2) `field` is not required if `aggregate` is `count`.\\\"},\\\"format\\\":{\\\"anyOf\\\":[{\\\"type\\\":\\\"string\\\"},{\\\"$ref\\\":\\\"#/definitions/Dict<unknown>\\\"}],\\\"description\\\":\\\"When used with the default `\\\\\\\"number\\\\\\\"` and `\\\\\\\"time\\\\\\\"` format type, the text formatting pattern for labels of guides (axes, legends, headers) and text marks.\\\\n\\\\n- If the format type is `\\\\\\\"number\\\\\\\"` (e.g., for quantitative fields), this is D3's [number format pattern](https://github.com/d3/d3-format#locale_format). - If the format type is `\\\\\\\"time\\\\\\\"` (e.g., for temporal fields), this is D3's [time format pattern](https://github.com/d3/d3-time-format#locale_format).\\\\n\\\\nSee the [format documentation](https://vega.github.io/vega-lite/docs/format.html) for more examples.\\\\n\\\\nWhen used with a [custom `formatType`](https://vega.github.io/vega-lite/docs/config.html#custom-format-type), this value will be passed as `format` alongside `datum.value` to the registered function.\\\\n\\\\n__Default value:__  Derived from [numberFormat](https://vega.github.io/vega-lite/docs/config.html#format) config for number format and from [timeFormat](https://vega.github.io/vega-lite/docs/config.html#format) config for time format.\\\"},\\\"formatType\\\":{\\\"description\\\":\\\"The format type for labels. One of `\\\\\\\"number\\\\\\\"`, `\\\\\\\"time\\\\\\\"`, or a [registered custom format type](https://vega.github.io/vega-lite/docs/config.html#custom-format-type).\\\\n\\\\n__Default value:__ - `\\\\\\\"time\\\\\\\"` for temporal fields and ordinal and nominal fields with `timeUnit`. - `\\\\\\\"number\\\\\\\"` for quantitative fields as well as ordinal and nominal fields without `timeUnit`.\\\",\\\"type\\\":\\\"string\\\"},\\\"labelExpr\\\":{\\\"description\\\":\\\"[Vega expression](https://vega.github.io/vega/docs/expressions/) for customizing labels text.\\\\n\\\\n__Note:__ The label text and value can be assessed via the `label` and `value` properties of the axis's backing `datum` object.\\\",\\\"type\\\":\\\"string\\\"},\\\"timeUnit\\\":{\\\"anyOf\\\":[{\\\"$ref\\\":\\\"#/definitions/TimeUnit\\\"},{\\\"$ref\\\":\\\"#/definitions/TimeUnitParams\\\"}],\\\"description\\\":\\\"Time unit (e.g., `year`, `yearmonth`, `month`, `hours`) for a temporal field. or [a temporal field that gets casted as ordinal](https://vega.github.io/vega-lite/docs/type.html#cast).\\\\n\\\\n__Default value:__ `undefined` (None)\\\\n\\\\n__See also:__ [`timeUnit`](https://vega.github.io/vega-lite/docs/timeunit.html) documentation.\\\"},\\\"title\\\":{\\\"anyOf\\\":[{\\\"$ref\\\":\\\"#/definitions/Text\\\"},{\\\"type\\\":\\\"null\\\"}],\\\"description\\\":\\\"A title for the field. If `null`, the title will be removed.\\\\n\\\\n__Default value:__  derived from the field's name and transformation function (`aggregate`, `bin` and `timeUnit`). If the field has an aggregate function, the function is displayed as part of the title (e.g., `\\\\\\\"Sum of Profit\\\\\\\"`). If the field is binned or has a time unit applied, the applied function is shown in parentheses (e.g., `\\\\\\\"Profit (binned)\\\\\\\"`, `\\\\\\\"Transaction Date (year-month)\\\\\\\"`). Otherwise, the title is simply the field name.\\\\n\\\\n__Notes__:\\\\n\\\\n1) You can customize the default field title format by providing the [`fieldTitle`](https://vega.github.io/vega-lite/docs/config.html#top-level-config) property in the [config](https://vega.github.io/vega-lite/docs/config.html) or [`fieldTitle` function via the `compile` function's options](https://vega.github.io/vega-lite/docs/compile.html#field-title).\\\\n\\\\n2) If both field definition's `title` and axis, header, or legend `title` are defined, axis/header/legend title will be used.\\\"},\\\"type\\\":{\\\"$ref\\\":\\\"#/definitions/StandardType\\\",\\\"description\\\":\\\"The type of measurement (`\\\\\\\"quantitative\\\\\\\"`, `\\\\\\\"temporal\\\\\\\"`, `\\\\\\\"ordinal\\\\\\\"`, or `\\\\\\\"nominal\\\\\\\"`) for the encoded field or constant value (`datum`). It can also be a `\\\\\\\"geojson\\\\\\\"` type for encoding ['geoshape'](https://vega.github.io/vega-lite/docs/geoshape.html).\\\\n\\\\nVega-Lite automatically infers data types in many cases as discussed below. However, type is required for a field if: (1) the field is not nominal and the field encoding has no specified `aggregate` (except `argmin` and `argmax`), `bin`, scale type, custom `sort` order, nor `timeUnit` or (2) if you wish to use an ordinal scale for a field with `bin` or `timeUnit`.\\\\n\\\\n__Default value:__\\\\n\\\\n1) For a data `field`, `\\\\\\\"nominal\\\\\\\"` is the default data type unless the field encoding has `aggregate`, `channel`, `bin`, scale type, `sort`, or `timeUnit` that satisfies the following criteria: - `\\\\\\\"quantitative\\\\\\\"` is the default type if (1) the encoded field contains `bin` or `aggregate` except `\\\\\\\"argmin\\\\\\\"` and `\\\\\\\"argmax\\\\\\\"`, (2) the encoding channel is `latitude` or `longitude` channel or (3) if the specified scale type is [a quantitative scale](https://vega.github.io/vega-lite/docs/scale.html#type). - `\\\\\\\"temporal\\\\\\\"` is the default type if (1) the encoded field contains `timeUnit` or (2) the specified scale type is a time or utc scale - `ordinal\\\\\\\"\\\\\\\"` is the default type if (1) the encoded field contains a [custom `sort` order](https://vega.github.io/vega-lite/docs/sort.html#specifying-custom-sort-order), (2) the specified scale type is an ordinal/point/band scale, or (3) the encoding channel is `order`.\\\\n\\\\n2) For a constant value in data domain (`datum`): - `\\\\\\\"quantitative\\\\\\\"` if the datum is a number - `\\\\\\\"nominal\\\\\\\"` if the datum is a string - `\\\\\\\"temporal\\\\\\\"` if the datum is [a date time object](https://vega.github.io/vega-lite/docs/datetime.html)\\\\n\\\\n__Note:__ - Data `type` describes the semantics of the data rather than the primitive data types (number, string, etc.). The same primitive data type can have different types of measurement. For example, numeric data can represent quantitative, ordinal, or nominal data. - Data values for a temporal field can be either a date-time string (e.g., `\\\\\\\"2015-03-07 12:32:17\\\\\\\"`, `\\\\\\\"17:01\\\\\\\"`, `\\\\\\\"2015-03-16\\\\\\\"`. `\\\\\\\"2015\\\\\\\"`) or a timestamp number (e.g., `1552199579097`). - When using with [`bin`](https://vega.github.io/vega-lite/docs/bin.html), the `type` property can be either `\\\\\\\"quantitative\\\\\\\"` (for using a linear bin scale) or [`\\\\\\\"ordinal\\\\\\\"` (for using an ordinal bin scale)](https://vega.github.io/vega-lite/docs/type.html#cast-bin). - When using with [`timeUnit`](https://vega.github.io/vega-lite/docs/timeunit.html), the `type` property can be either `\\\\\\\"temporal\\\\\\\"` (default, for using a temporal scale) or [`\\\\\\\"ordinal\\\\\\\"` (for using an ordinal scale)](https://vega.github.io/vega-lite/docs/type.html#cast-bin). - When using with [`aggregate`](https://vega.github.io/vega-lite/docs/aggregate.html), the `type` property refers to the post-aggregation data type. For example, we can calculate count `distinct` of a categorical field `\\\\\\\"cat\\\\\\\"` using `{\\\\\\\"aggregate\\\\\\\": \\\\\\\"distinct\\\\\\\", \\\\\\\"field\\\\\\\": \\\\\\\"cat\\\\\\\"}`. The `\\\\\\\"type\\\\\\\"` of the aggregate output is `\\\\\\\"quantitative\\\\\\\"`. - Secondary channels (e.g., `x2`, `y2`, `xError`, `yError`) do not have `type` as they must have exactly the same type as their primary channels (e.g., `x`, `y`).\\\\n\\\\n__See also:__ [`type`](https://vega.github.io/vega-lite/docs/type.html) documentation.\\\"}},\\\"type\\\":\\\"object\\\"},\\\"StringFieldDefWithCondition\\\":{\\\"$ref\\\":\\\"#/definitions/FieldOrDatumDefWithCondition<StringFieldDef,string>\\\"},\\\"StringValueDefWithCondition\\\":{\\\"$ref\\\":\\\"#/definitions/ValueDefWithCondition<MarkPropFieldOrDatumDef,(string|null)>\\\"},\\\"StrokeCap\\\":{\\\"enum\\\":[\\\"butt\\\",\\\"round\\\",\\\"square\\\"],\\\"type\\\":\\\"string\\\"},\\\"StrokeJoin\\\":{\\\"enum\\\":[\\\"miter\\\",\\\"round\\\",\\\"bevel\\\"],\\\"type\\\":\\\"string\\\"},\\\"StyleConfigIndex\\\":{\\\"additionalProperties\\\":{\\\"anyOf\\\":[{\\\"$ref\\\":\\\"#/definitions/AnyMarkConfig\\\"},{\\\"$ref\\\":\\\"#/definitions/Axis\\\"}]},\\\"properties\\\":{\\\"arc\\\":{\\\"$ref\\\":\\\"#/definitions/RectConfig\\\",\\\"description\\\":\\\"Arc-specific Config\\\"},\\\"area\\\":{\\\"$ref\\\":\\\"#/definitions/AreaConfig\\\",\\\"description\\\":\\\"Area-Specific Config\\\"},\\\"bar\\\":{\\\"$ref\\\":\\\"#/definitions/BarConfig\\\",\\\"description\\\":\\\"Bar-Specific Config\\\"},\\\"circle\\\":{\\\"$ref\\\":\\\"#/definitions/MarkConfig\\\",\\\"description\\\":\\\"Circle-Specific Config\\\"},\\\"geoshape\\\":{\\\"$ref\\\":\\\"#/definitions/MarkConfig\\\",\\\"description\\\":\\\"Geoshape-Specific Config\\\"},\\\"group-subtitle\\\":{\\\"$ref\\\":\\\"#/definitions/MarkConfig\\\",\\\"description\\\":\\\"Default style for chart subtitles\\\"},\\\"group-title\\\":{\\\"$ref\\\":\\\"#/definitions/MarkConfig\\\",\\\"description\\\":\\\"Default style for chart titles\\\"},\\\"guide-label\\\":{\\\"$ref\\\":\\\"#/definitions/MarkConfig\\\",\\\"description\\\":\\\"Default style for axis, legend, and header labels.\\\"},\\\"guide-title\\\":{\\\"$ref\\\":\\\"#/definitions/MarkConfig\\\",\\\"description\\\":\\\"Default style for axis, legend, and header titles.\\\"},\\\"image\\\":{\\\"$ref\\\":\\\"#/definitions/RectConfig\\\",\\\"description\\\":\\\"Image-specific Config\\\"},\\\"line\\\":{\\\"$ref\\\":\\\"#/definitions/LineConfig\\\",\\\"description\\\":\\\"Line-Specific Config\\\"},\\\"mark\\\":{\\\"$ref\\\":\\\"#/definitions/MarkConfig\\\",\\\"description\\\":\\\"Mark Config\\\"},\\\"point\\\":{\\\"$ref\\\":\\\"#/definitions/MarkConfig\\\",\\\"description\\\":\\\"Point-Specific Config\\\"},\\\"rect\\\":{\\\"$ref\\\":\\\"#/definitions/RectConfig\\\",\\\"description\\\":\\\"Rect-Specific Config\\\"},\\\"rule\\\":{\\\"$ref\\\":\\\"#/definitions/MarkConfig\\\",\\\"description\\\":\\\"Rule-Specific Config\\\"},\\\"square\\\":{\\\"$ref\\\":\\\"#/definitions/MarkConfig\\\",\\\"description\\\":\\\"Square-Specific Config\\\"},\\\"text\\\":{\\\"$ref\\\":\\\"#/definitions/MarkConfig\\\",\\\"description\\\":\\\"Text-Specific Config\\\"},\\\"tick\\\":{\\\"$ref\\\":\\\"#/definitions/TickConfig\\\",\\\"description\\\":\\\"Tick-Specific Config\\\"},\\\"trail\\\":{\\\"$ref\\\":\\\"#/definitions/LineConfig\\\",\\\"description\\\":\\\"Trail-Specific Config\\\"}},\\\"type\\\":\\\"object\\\"},\\\"SymbolShape\\\":{\\\"type\\\":\\\"string\\\"},\\\"Text\\\":{\\\"anyOf\\\":[{\\\"type\\\":\\\"string\\\"},{\\\"items\\\":{\\\"type\\\":\\\"string\\\"},\\\"type\\\":\\\"array\\\"}]},\\\"TextBaseline\\\":{\\\"anyOf\\\":[{\\\"const\\\":\\\"alphabetic\\\",\\\"type\\\":\\\"string\\\"},{\\\"$ref\\\":\\\"#/definitions/Baseline\\\"},{\\\"const\\\":\\\"line-top\\\",\\\"type\\\":\\\"string\\\"},{\\\"const\\\":\\\"line-bottom\\\",\\\"type\\\":\\\"string\\\"}]},\\\"TextDef\\\":{\\\"anyOf\\\":[{\\\"$ref\\\":\\\"#/definitions/FieldOrDatumDefWithCondition<StringFieldDef,Text>\\\"},{\\\"$ref\\\":\\\"#/definitions/FieldOrDatumDefWithCondition<StringDatumDef,Text>\\\"},{\\\"$ref\\\":\\\"#/definitions/ValueDefWithCondition<StringFieldDef,Text>\\\"}]},\\\"TextDirection\\\":{\\\"enum\\\":[\\\"ltr\\\",\\\"rtl\\\"],\\\"type\\\":\\\"string\\\"},\\\"TickConfig\\\":{\\\"additionalProperties\\\":false,\\\"properties\\\":{\\\"align\\\":{\\\"anyOf\\\":[{\\\"$ref\\\":\\\"#/definitions/Align\\\"},{\\\"$ref\\\":\\\"#/definitions/ExprRef\\\"}],\\\"description\\\":\\\"The horizontal alignment of the text or ranged marks (area, bar, image, rect, rule). One of `\\\\\\\"left\\\\\\\"`, `\\\\\\\"right\\\\\\\"`, `\\\\\\\"center\\\\\\\"`.\\\\n\\\\n__Note:__ Expression reference is *not* supported for range marks.\\\"},\\\"angle\\\":{\\\"anyOf\\\":[{\\\"description\\\":\\\"The rotation angle of the text, in degrees.\\\",\\\"maximum\\\":360,\\\"minimum\\\":0,\\\"type\\\":\\\"number\\\"},{\\\"$ref\\\":\\\"#/definitions/ExprRef\\\"}]},\\\"aria\\\":{\\\"anyOf\\\":[{\\\"description\\\":\\\"A boolean flag indicating if [ARIA attributes](https://developer.mozilla.org/en-US/docs/Web/Accessibility/ARIA) should be included (SVG output only). If `false`, the \\\\\\\"aria-hidden\\\\\\\" attribute will be set on the output SVG element, removing the mark item from the ARIA accessibility tree.\\\",\\\"type\\\":\\\"boolean\\\"},{\\\"$ref\\\":\\\"#/definitions/ExprRef\\\"}]},\\\"ariaRole\\\":{\\\"anyOf\\\":[{\\\"description\\\":\\\"Sets the type of user interface element of the mark item for [ARIA accessibility](https://developer.mozilla.org/en-US/docs/Web/Accessibility/ARIA) (SVG output only). If specified, this property determines the \\\\\\\"role\\\\\\\" attribute. Warning: this property is experimental and may be changed in the future.\\\",\\\"type\\\":\\\"string\\\"},{\\\"$ref\\\":\\\"#/definitions/ExprRef\\\"}]},\\\"ariaRoleDescription\\\":{\\\"anyOf\\\":[{\\\"description\\\":\\\"A human-readable, author-localized description for the role of the mark item for [ARIA accessibility](https://developer.mozilla.org/en-US/docs/Web/Accessibility/ARIA) (SVG output only). If specified, this property determines the \\\\\\\"aria-roledescription\\\\\\\" attribute. Warning: this property is experimental and may be changed in the future.\\\",\\\"type\\\":\\\"string\\\"},{\\\"$ref\\\":\\\"#/definitions/ExprRef\\\"}]},\\\"aspect\\\":{\\\"anyOf\\\":[{\\\"description\\\":\\\"Whether to keep aspect ratio of image marks.\\\",\\\"type\\\":\\\"boolean\\\"},{\\\"$ref\\\":\\\"#/definitions/ExprRef\\\"}]},\\\"bandSize\\\":{\\\"description\\\":\\\"The width of the ticks.\\\\n\\\\n__Default value:__  3/4 of step (width step for horizontal ticks and height step for vertical ticks).\\\",\\\"minimum\\\":0,\\\"type\\\":\\\"number\\\"},\\\"baseline\\\":{\\\"anyOf\\\":[{\\\"$ref\\\":\\\"#/definitions/TextBaseline\\\"},{\\\"$ref\\\":\\\"#/definitions/ExprRef\\\"}],\\\"description\\\":\\\"For text marks, the vertical text baseline. One of `\\\\\\\"alphabetic\\\\\\\"` (default), `\\\\\\\"top\\\\\\\"`, `\\\\\\\"middle\\\\\\\"`, `\\\\\\\"bottom\\\\\\\"`, `\\\\\\\"line-top\\\\\\\"`, `\\\\\\\"line-bottom\\\\\\\"`, or an expression reference that provides one of the valid values. The `\\\\\\\"line-top\\\\\\\"` and `\\\\\\\"line-bottom\\\\\\\"` values operate similarly to `\\\\\\\"top\\\\\\\"` and `\\\\\\\"bottom\\\\\\\"`, but are calculated relative to the `lineHeight` rather than `fontSize` alone.\\\\n\\\\nFor range marks, the vertical alignment of the marks. One of `\\\\\\\"top\\\\\\\"`, `\\\\\\\"middle\\\\\\\"`, `\\\\\\\"bottom\\\\\\\"`.\\\\n\\\\n__Note:__ Expression reference is *not* supported for range marks.\\\"},\\\"blend\\\":{\\\"anyOf\\\":[{\\\"$ref\\\":\\\"#/definitions/Blend\\\",\\\"description\\\":\\\"The color blend mode for drawing an item on its current background. Any valid [CSS mix-blend-mode](https://developer.mozilla.org/en-US/docs/Web/CSS/mix-blend-mode) value can be used.\\\\n\\\\n__Default value: `\\\\\\\"source-over\\\\\\\"`\\\"},{\\\"$ref\\\":\\\"#/definitions/ExprRef\\\"}]},\\\"color\\\":{\\\"anyOf\\\":[{\\\"$ref\\\":\\\"#/definitions/Color\\\"},{\\\"$ref\\\":\\\"#/definitions/Gradient\\\"},{\\\"$ref\\\":\\\"#/definitions/ExprRef\\\"}],\\\"description\\\":\\\"Default color.\\\\n\\\\n__Default value:__ <span style=\\\\\\\"color: #4682b4;\\\\\\\">&#9632;</span> `\\\\\\\"#4682b4\\\\\\\"`\\\\n\\\\n__Note:__ - This property cannot be used in a [style config](https://vega.github.io/vega-lite/docs/mark.html#style-config). - The `fill` and `stroke` properties have higher precedence than `color` and will override `color`.\\\"},\\\"cornerRadius\\\":{\\\"anyOf\\\":[{\\\"description\\\":\\\"The radius in pixels of rounded rectangles or arcs' corners.\\\\n\\\\n__Default value:__ `0`\\\",\\\"type\\\":\\\"number\\\"},{\\\"$ref\\\":\\\"#/definitions/ExprRef\\\"}]},\\\"cornerRadiusBottomLeft\\\":{\\\"anyOf\\\":[{\\\"description\\\":\\\"The radius in pixels of rounded rectangles' bottom left corner.\\\\n\\\\n__Default value:__ `0`\\\",\\\"type\\\":\\\"number\\\"},{\\\"$ref\\\":\\\"#/definitions/ExprRef\\\"}]},\\\"cornerRadiusBottomRight\\\":{\\\"anyOf\\\":[{\\\"description\\\":\\\"The radius in pixels of rounded rectangles' bottom right corner.\\\\n\\\\n__Default value:__ `0`\\\",\\\"type\\\":\\\"number\\\"},{\\\"$ref\\\":\\\"#/definitions/ExprRef\\\"}]},\\\"cornerRadiusTopLeft\\\":{\\\"anyOf\\\":[{\\\"description\\\":\\\"The radius in pixels of rounded rectangles' top right corner.\\\\n\\\\n__Default value:__ `0`\\\",\\\"type\\\":\\\"number\\\"},{\\\"$ref\\\":\\\"#/definitions/ExprRef\\\"}]},\\\"cornerRadiusTopRight\\\":{\\\"anyOf\\\":[{\\\"description\\\":\\\"The radius in pixels of rounded rectangles' top left corner.\\\\n\\\\n__Default value:__ `0`\\\",\\\"type\\\":\\\"number\\\"},{\\\"$ref\\\":\\\"#/definitions/ExprRef\\\"}]},\\\"cursor\\\":{\\\"anyOf\\\":[{\\\"$ref\\\":\\\"#/definitions/Cursor\\\",\\\"description\\\":\\\"The mouse cursor used over the mark. Any valid [CSS cursor type](https://developer.mozilla.org/en-US/docs/Web/CSS/cursor#Values) can be used.\\\"},{\\\"$ref\\\":\\\"#/definitions/ExprRef\\\"}]},\\\"description\\\":{\\\"anyOf\\\":[{\\\"description\\\":\\\"A text description of the mark item for [ARIA accessibility](https://developer.mozilla.org/en-US/docs/Web/Accessibility/ARIA) (SVG output only). If specified, this property determines the [\\\\\\\"aria-label\\\\\\\" attribute](https://developer.mozilla.org/en-US/docs/Web/Accessibility/ARIA/ARIA_Techniques/Using_the_aria-label_attribute).\\\",\\\"type\\\":\\\"string\\\"},{\\\"$ref\\\":\\\"#/definitions/ExprRef\\\"}]},\\\"dir\\\":{\\\"anyOf\\\":[{\\\"$ref\\\":\\\"#/definitions/TextDirection\\\",\\\"description\\\":\\\"The direction of the text. One of `\\\\\\\"ltr\\\\\\\"` (left-to-right) or `\\\\\\\"rtl\\\\\\\"` (right-to-left). This property determines on which side is truncated in response to the limit parameter.\\\\n\\\\n__Default value:__ `\\\\\\\"ltr\\\\\\\"`\\\"},{\\\"$ref\\\":\\\"#/definitions/ExprRef\\\"}]},\\\"dx\\\":{\\\"anyOf\\\":[{\\\"description\\\":\\\"The horizontal offset, in pixels, between the text label and its anchor point. The offset is applied after rotation by the _angle_ property.\\\",\\\"type\\\":\\\"number\\\"},{\\\"$ref\\\":\\\"#/definitions/ExprRef\\\"}]},\\\"dy\\\":{\\\"anyOf\\\":[{\\\"description\\\":\\\"The vertical offset, in pixels, between the text label and its anchor point. The offset is applied after rotation by the _angle_ property.\\\",\\\"type\\\":\\\"number\\\"},{\\\"$ref\\\":\\\"#/definitions/ExprRef\\\"}]},\\\"ellipsis\\\":{\\\"anyOf\\\":[{\\\"description\\\":\\\"The ellipsis string for text truncated in response to the limit parameter.\\\\n\\\\n__Default value:__ `\\\\\\\"…\\\\\\\"`\\\",\\\"type\\\":\\\"string\\\"},{\\\"$ref\\\":\\\"#/definitions/ExprRef\\\"}]},\\\"endAngle\\\":{\\\"anyOf\\\":[{\\\"description\\\":\\\"The end angle in radians for arc marks. A value of `0` indicates up (north), increasing values proceed clockwise.\\\",\\\"type\\\":\\\"number\\\"},{\\\"$ref\\\":\\\"#/definitions/ExprRef\\\"}]},\\\"fill\\\":{\\\"anyOf\\\":[{\\\"$ref\\\":\\\"#/definitions/Color\\\"},{\\\"$ref\\\":\\\"#/definitions/Gradient\\\"},{\\\"type\\\":\\\"null\\\"},{\\\"$ref\\\":\\\"#/definitions/ExprRef\\\"}],\\\"description\\\":\\\"Default fill color. This property has higher precedence than `config.color`. Set to `null` to remove fill.\\\\n\\\\n__Default value:__ (None)\\\"},\\\"fillOpacity\\\":{\\\"anyOf\\\":[{\\\"description\\\":\\\"The fill opacity (value between [0,1]).\\\\n\\\\n__Default value:__ `1`\\\",\\\"maximum\\\":1,\\\"minimum\\\":0,\\\"type\\\":\\\"number\\\"},{\\\"$ref\\\":\\\"#/definitions/ExprRef\\\"}]},\\\"filled\\\":{\\\"description\\\":\\\"Whether the mark's color should be used as fill color instead of stroke color.\\\\n\\\\n__Default value:__ `false` for all `point`, `line`, and `rule` marks as well as `geoshape` marks for [`graticule`](https://vega.github.io/vega-lite/docs/data.html#graticule) data sources; otherwise, `true`.\\\\n\\\\n__Note:__ This property cannot be used in a [style config](https://vega.github.io/vega-lite/docs/mark.html#style-config).\\\",\\\"type\\\":\\\"boolean\\\"},\\\"font\\\":{\\\"anyOf\\\":[{\\\"description\\\":\\\"The typeface to set the text in (e.g., `\\\\\\\"Helvetica Neue\\\\\\\"`).\\\",\\\"type\\\":\\\"string\\\"},{\\\"$ref\\\":\\\"#/definitions/ExprRef\\\"}]},\\\"fontSize\\\":{\\\"anyOf\\\":[{\\\"description\\\":\\\"The font size, in pixels.\\\\n\\\\n__Default value:__ `11`\\\",\\\"minimum\\\":0,\\\"type\\\":\\\"number\\\"},{\\\"$ref\\\":\\\"#/definitions/ExprRef\\\"}]},\\\"fontStyle\\\":{\\\"anyOf\\\":[{\\\"$ref\\\":\\\"#/definitions/FontStyle\\\",\\\"description\\\":\\\"The font style (e.g., `\\\\\\\"italic\\\\\\\"`).\\\"},{\\\"$ref\\\":\\\"#/definitions/ExprRef\\\"}]},\\\"fontWeight\\\":{\\\"anyOf\\\":[{\\\"$ref\\\":\\\"#/definitions/FontWeight\\\",\\\"description\\\":\\\"The font weight. This can be either a string (e.g `\\\\\\\"bold\\\\\\\"`, `\\\\\\\"normal\\\\\\\"`) or a number (`100`, `200`, `300`, ..., `900` where `\\\\\\\"normal\\\\\\\"` = `400` and `\\\\\\\"bold\\\\\\\"` = `700`).\\\"},{\\\"$ref\\\":\\\"#/definitions/ExprRef\\\"}]},\\\"height\\\":{\\\"anyOf\\\":[{\\\"description\\\":\\\"Height of the marks.\\\",\\\"type\\\":\\\"number\\\"},{\\\"$ref\\\":\\\"#/definitions/ExprRef\\\"}]},\\\"href\\\":{\\\"anyOf\\\":[{\\\"$ref\\\":\\\"#/definitions/URI\\\",\\\"description\\\":\\\"A URL to load upon mouse click. If defined, the mark acts as a hyperlink.\\\"},{\\\"$ref\\\":\\\"#/definitions/ExprRef\\\"}]},\\\"innerRadius\\\":{\\\"anyOf\\\":[{\\\"type\\\":\\\"number\\\"},{\\\"$ref\\\":\\\"#/definitions/ExprRef\\\"}],\\\"description\\\":\\\"The inner radius in pixels of arc marks. `innerRadius` is an alias for `radius2`.\\\"},\\\"interpolate\\\":{\\\"anyOf\\\":[{\\\"$ref\\\":\\\"#/definitions/Interpolate\\\",\\\"description\\\":\\\"The line interpolation method to use for line and area marks. One of the following: - `\\\\\\\"linear\\\\\\\"`: piecewise linear segments, as in a polyline. - `\\\\\\\"linear-closed\\\\\\\"`: close the linear segments to form a polygon. - `\\\\\\\"step\\\\\\\"`: alternate between horizontal and vertical segments, as in a step function. - `\\\\\\\"step-before\\\\\\\"`: alternate between vertical and horizontal segments, as in a step function. - `\\\\\\\"step-after\\\\\\\"`: alternate between horizontal and vertical segments, as in a step function. - `\\\\\\\"basis\\\\\\\"`: a B-spline, with control point duplication on the ends. - `\\\\\\\"basis-open\\\\\\\"`: an open B-spline; may not intersect the start or end. - `\\\\\\\"basis-closed\\\\\\\"`: a closed B-spline, as in a loop. - `\\\\\\\"cardinal\\\\\\\"`: a Cardinal spline, with control point duplication on the ends. - `\\\\\\\"cardinal-open\\\\\\\"`: an open Cardinal spline; may not intersect the start or end, but will intersect other control points. - `\\\\\\\"cardinal-closed\\\\\\\"`: a closed Cardinal spline, as in a loop. - `\\\\\\\"bundle\\\\\\\"`: equivalent to basis, except the tension parameter is used to straighten the spline. - `\\\\\\\"monotone\\\\\\\"`: cubic interpolation that preserves monotonicity in y.\\\"},{\\\"$ref\\\":\\\"#/definitions/ExprRef\\\"}]},\\\"invalid\\\":{\\\"description\\\":\\\"Defines how Vega-Lite should handle marks for invalid values (`null` and `NaN`). - If set to `\\\\\\\"filter\\\\\\\"` (default), all data items with null values will be skipped (for line, trail, and area marks) or filtered (for other marks). - If `null`, all data items are included. In this case, invalid values will be interpreted as zeroes.\\\",\\\"enum\\\":[\\\"filter\\\",null],\\\"type\\\":[\\\"string\\\",\\\"null\\\"]},\\\"limit\\\":{\\\"anyOf\\\":[{\\\"description\\\":\\\"The maximum length of the text mark in pixels. The text value will be automatically truncated if the rendered size exceeds the limit.\\\\n\\\\n__Default value:__ `0` -- indicating no limit\\\",\\\"type\\\":\\\"number\\\"},{\\\"$ref\\\":\\\"#/definitions/ExprRef\\\"}]},\\\"lineBreak\\\":{\\\"anyOf\\\":[{\\\"description\\\":\\\"A delimiter, such as a newline character, upon which to break text strings into multiple lines. This property is ignored if the text is array-valued.\\\",\\\"type\\\":\\\"string\\\"},{\\\"$ref\\\":\\\"#/definitions/ExprRef\\\"}]},\\\"lineHeight\\\":{\\\"anyOf\\\":[{\\\"description\\\":\\\"The line height in pixels (the spacing between subsequent lines of text) for multi-line text marks.\\\",\\\"type\\\":\\\"number\\\"},{\\\"$ref\\\":\\\"#/definitions/ExprRef\\\"}]},\\\"opacity\\\":{\\\"anyOf\\\":[{\\\"type\\\":\\\"number\\\"},{\\\"$ref\\\":\\\"#/definitions/ExprRef\\\"}],\\\"description\\\":\\\"The overall opacity (value between [0,1]).\\\\n\\\\n__Default value:__ `0.7` for non-aggregate plots with `point`, `tick`, `circle`, or `square` marks or layered `bar` charts and `1` otherwise.\\\",\\\"maximum\\\":1,\\\"minimum\\\":0},\\\"order\\\":{\\\"description\\\":\\\"For line and trail marks, this `order` property can be set to `null` or `false` to make the lines use the original order in the data sources.\\\",\\\"type\\\":[\\\"null\\\",\\\"boolean\\\"]},\\\"orient\\\":{\\\"$ref\\\":\\\"#/definitions/Orientation\\\",\\\"description\\\":\\\"The orientation of a non-stacked bar, tick, area, and line charts. The value is either horizontal (default) or vertical. - For bar, rule and tick, this determines whether the size of the bar and tick should be applied to x or y dimension. - For area, this property determines the orient property of the Vega output. - For line and trail marks, this property determines the sort order of the points in the line if `config.sortLineBy` is not specified. For stacked charts, this is always determined by the orientation of the stack; therefore explicitly specified value will be ignored.\\\"},\\\"outerRadius\\\":{\\\"anyOf\\\":[{\\\"type\\\":\\\"number\\\"},{\\\"$ref\\\":\\\"#/definitions/ExprRef\\\"}],\\\"description\\\":\\\"The outer radius in pixels of arc marks. `outerRadius` is an alias for `radius`.\\\"},\\\"padAngle\\\":{\\\"anyOf\\\":[{\\\"description\\\":\\\"The angular padding applied to sides of the arc, in radians.\\\",\\\"type\\\":\\\"number\\\"},{\\\"$ref\\\":\\\"#/definitions/ExprRef\\\"}]},\\\"radius\\\":{\\\"anyOf\\\":[{\\\"type\\\":\\\"number\\\"},{\\\"$ref\\\":\\\"#/definitions/ExprRef\\\"}],\\\"description\\\":\\\"For arc mark, the primary (outer) radius in pixels.\\\\n\\\\nFor text marks, polar coordinate radial offset, in pixels, of the text from the origin determined by the `x` and `y` properties.\\\"},\\\"radius2\\\":{\\\"anyOf\\\":[{\\\"type\\\":\\\"number\\\"},{\\\"$ref\\\":\\\"#/definitions/ExprRef\\\"}],\\\"description\\\":\\\"The secondary (inner) radius in pixels of arc marks.\\\"},\\\"shape\\\":{\\\"anyOf\\\":[{\\\"anyOf\\\":[{\\\"$ref\\\":\\\"#/definitions/SymbolShape\\\"},{\\\"type\\\":\\\"string\\\"}],\\\"description\\\":\\\"Shape of the point marks. Supported values include: - plotting shapes: `\\\\\\\"circle\\\\\\\"`, `\\\\\\\"square\\\\\\\"`, `\\\\\\\"cross\\\\\\\"`, `\\\\\\\"diamond\\\\\\\"`, `\\\\\\\"triangle-up\\\\\\\"`, `\\\\\\\"triangle-down\\\\\\\"`, `\\\\\\\"triangle-right\\\\\\\"`, or `\\\\\\\"triangle-left\\\\\\\"`. - the line symbol `\\\\\\\"stroke\\\\\\\"` - centered directional shapes `\\\\\\\"arrow\\\\\\\"`, `\\\\\\\"wedge\\\\\\\"`, or `\\\\\\\"triangle\\\\\\\"` - a custom [SVG path string](https://developer.mozilla.org/en-US/docs/Web/SVG/Tutorial/Paths) (For correct sizing, custom shape paths should be defined within a square bounding box with coordinates ranging from -1 to 1 along both the x and y dimensions.)\\\\n\\\\n__Default value:__ `\\\\\\\"circle\\\\\\\"`\\\"},{\\\"$ref\\\":\\\"#/definitions/ExprRef\\\"}]},\\\"size\\\":{\\\"anyOf\\\":[{\\\"type\\\":\\\"number\\\"},{\\\"$ref\\\":\\\"#/definitions/ExprRef\\\"}],\\\"description\\\":\\\"Default size for marks. - For `point`/`circle`/`square`, this represents the pixel area of the marks. Note that this value sets the area of the symbol; the side lengths will increase with the square root of this value. - For `bar`, this represents the band size of the bar, in pixels. - For `text`, this represents the font size, in pixels.\\\\n\\\\n__Default value:__ - `30` for point, circle, square marks; width/height's `step` - `2` for bar marks with discrete dimensions; - `5` for bar marks with continuous dimensions; - `11` for text marks.\\\",\\\"minimum\\\":0},\\\"smooth\\\":{\\\"anyOf\\\":[{\\\"description\\\":\\\"A boolean flag (default true) indicating if the image should be smoothed when resized. If false, individual pixels should be scaled directly rather than interpolated with smoothing. For SVG rendering, this option may not work in some browsers due to lack of standardization.\\\",\\\"type\\\":\\\"boolean\\\"},{\\\"$ref\\\":\\\"#/definitions/ExprRef\\\"}]},\\\"startAngle\\\":{\\\"anyOf\\\":[{\\\"description\\\":\\\"The start angle in radians for arc marks. A value of `0` indicates up (north), increasing values proceed clockwise.\\\",\\\"type\\\":\\\"number\\\"},{\\\"$ref\\\":\\\"#/definitions/ExprRef\\\"}]},\\\"stroke\\\":{\\\"anyOf\\\":[{\\\"$ref\\\":\\\"#/definitions/Color\\\"},{\\\"$ref\\\":\\\"#/definitions/Gradient\\\"},{\\\"type\\\":\\\"null\\\"},{\\\"$ref\\\":\\\"#/definitions/ExprRef\\\"}],\\\"description\\\":\\\"Default stroke color. This property has higher precedence than `config.color`. Set to `null` to remove stroke.\\\\n\\\\n__Default value:__ (None)\\\"},\\\"strokeCap\\\":{\\\"anyOf\\\":[{\\\"$ref\\\":\\\"#/definitions/StrokeCap\\\",\\\"description\\\":\\\"The stroke cap for line ending style. One of `\\\\\\\"butt\\\\\\\"`, `\\\\\\\"round\\\\\\\"`, or `\\\\\\\"square\\\\\\\"`.\\\\n\\\\n__Default value:__ `\\\\\\\"butt\\\\\\\"`\\\"},{\\\"$ref\\\":\\\"#/definitions/ExprRef\\\"}]},\\\"strokeDash\\\":{\\\"anyOf\\\":[{\\\"description\\\":\\\"An array of alternating stroke, space lengths for creating dashed or dotted lines.\\\",\\\"items\\\":{\\\"type\\\":\\\"number\\\"},\\\"type\\\":\\\"array\\\"},{\\\"$ref\\\":\\\"#/definitions/ExprRef\\\"}]},\\\"strokeDashOffset\\\":{\\\"anyOf\\\":[{\\\"description\\\":\\\"The offset (in pixels) into which to begin drawing with the stroke dash array.\\\",\\\"type\\\":\\\"number\\\"},{\\\"$ref\\\":\\\"#/definitions/ExprRef\\\"}]},\\\"strokeJoin\\\":{\\\"anyOf\\\":[{\\\"$ref\\\":\\\"#/definitions/StrokeJoin\\\",\\\"description\\\":\\\"The stroke line join method. One of `\\\\\\\"miter\\\\\\\"`, `\\\\\\\"round\\\\\\\"` or `\\\\\\\"bevel\\\\\\\"`.\\\\n\\\\n__Default value:__ `\\\\\\\"miter\\\\\\\"`\\\"},{\\\"$ref\\\":\\\"#/definitions/ExprRef\\\"}]},\\\"strokeMiterLimit\\\":{\\\"anyOf\\\":[{\\\"description\\\":\\\"The miter limit at which to bevel a line join.\\\",\\\"type\\\":\\\"number\\\"},{\\\"$ref\\\":\\\"#/definitions/ExprRef\\\"}]},\\\"strokeOffset\\\":{\\\"anyOf\\\":[{\\\"description\\\":\\\"The offset in pixels at which to draw the group stroke and fill. If unspecified, the default behavior is to dynamically offset stroked groups such that 1 pixel stroke widths align with the pixel grid.\\\",\\\"type\\\":\\\"number\\\"},{\\\"$ref\\\":\\\"#/definitions/ExprRef\\\"}]},\\\"strokeOpacity\\\":{\\\"anyOf\\\":[{\\\"description\\\":\\\"The stroke opacity (value between [0,1]).\\\\n\\\\n__Default value:__ `1`\\\",\\\"maximum\\\":1,\\\"minimum\\\":0,\\\"type\\\":\\\"number\\\"},{\\\"$ref\\\":\\\"#/definitions/ExprRef\\\"}]},\\\"strokeWidth\\\":{\\\"anyOf\\\":[{\\\"description\\\":\\\"The stroke width, in pixels.\\\",\\\"minimum\\\":0,\\\"type\\\":\\\"number\\\"},{\\\"$ref\\\":\\\"#/definitions/ExprRef\\\"}]},\\\"tension\\\":{\\\"anyOf\\\":[{\\\"description\\\":\\\"Depending on the interpolation type, sets the tension parameter (for line and area marks).\\\",\\\"type\\\":\\\"number\\\"},{\\\"$ref\\\":\\\"#/definitions/ExprRef\\\"}]},\\\"text\\\":{\\\"anyOf\\\":[{\\\"$ref\\\":\\\"#/definitions/Text\\\",\\\"description\\\":\\\"Placeholder text if the `text` channel is not specified\\\"},{\\\"$ref\\\":\\\"#/definitions/ExprRef\\\"}]},\\\"theta\\\":{\\\"anyOf\\\":[{\\\"type\\\":\\\"number\\\"},{\\\"$ref\\\":\\\"#/definitions/ExprRef\\\"}],\\\"description\\\":\\\"- For arc marks, the arc length in radians if theta2 is not specified, otherwise the start arc angle. (A value of 0 indicates up or “north”, increasing values proceed clockwise.)\\\\n\\\\n- For text marks, polar coordinate angle in radians.\\\",\\\"maximum\\\":360,\\\"minimum\\\":0},\\\"theta2\\\":{\\\"anyOf\\\":[{\\\"type\\\":\\\"number\\\"},{\\\"$ref\\\":\\\"#/definitions/ExprRef\\\"}],\\\"description\\\":\\\"The end angle of arc marks in radians. A value of 0 indicates up or “north”, increasing values proceed clockwise.\\\"},\\\"thickness\\\":{\\\"description\\\":\\\"Thickness of the tick mark.\\\\n\\\\n__Default value:__  `1`\\\",\\\"minimum\\\":0,\\\"type\\\":\\\"number\\\"},\\\"timeUnitBand\\\":{\\\"description\\\":\\\"Default relative band size for a time unit. If set to `1`, the bandwidth of the marks will be equal to the time unit band step. If set to `0.5`, bandwidth of the marks will be half of the time unit band step.\\\",\\\"type\\\":\\\"number\\\"},\\\"timeUnitBandPosition\\\":{\\\"description\\\":\\\"Default relative band position for a time unit. If set to `0`, the marks will be positioned at the beginning of the time unit band step. If set to `0.5`, the marks will be positioned in the middle of the time unit band step.\\\",\\\"type\\\":\\\"number\\\"},\\\"tooltip\\\":{\\\"anyOf\\\":[{\\\"type\\\":\\\"number\\\"},{\\\"type\\\":\\\"string\\\"},{\\\"type\\\":\\\"boolean\\\"},{\\\"$ref\\\":\\\"#/definitions/TooltipContent\\\"},{\\\"$ref\\\":\\\"#/definitions/ExprRef\\\"},{\\\"type\\\":\\\"null\\\"}],\\\"description\\\":\\\"The tooltip text string to show upon mouse hover or an object defining which fields should the tooltip be derived from.\\\\n\\\\n- If `tooltip` is `true` or `{\\\\\\\"content\\\\\\\": \\\\\\\"encoding\\\\\\\"}`, then all fields from `encoding` will be used. - If `tooltip` is `{\\\\\\\"content\\\\\\\": \\\\\\\"data\\\\\\\"}`, then all fields that appear in the highlighted data point will be used. - If set to `null` or `false`, then no tooltip will be used.\\\\n\\\\nSee the [`tooltip`](https://vega.github.io/vega-lite/docs/tooltip.html) documentation for a detailed discussion about tooltip  in Vega-Lite.\\\\n\\\\n__Default value:__ `null`\\\"},\\\"url\\\":{\\\"anyOf\\\":[{\\\"$ref\\\":\\\"#/definitions/URI\\\",\\\"description\\\":\\\"The URL of the image file for image marks.\\\"},{\\\"$ref\\\":\\\"#/definitions/ExprRef\\\"}]},\\\"width\\\":{\\\"anyOf\\\":[{\\\"description\\\":\\\"Width of the marks.\\\",\\\"type\\\":\\\"number\\\"},{\\\"$ref\\\":\\\"#/definitions/ExprRef\\\"}]},\\\"x\\\":{\\\"anyOf\\\":[{\\\"type\\\":\\\"number\\\"},{\\\"const\\\":\\\"width\\\",\\\"type\\\":\\\"string\\\"},{\\\"$ref\\\":\\\"#/definitions/ExprRef\\\"}],\\\"description\\\":\\\"X coordinates of the marks, or width of horizontal `\\\\\\\"bar\\\\\\\"` and `\\\\\\\"area\\\\\\\"` without specified `x2` or `width`.\\\\n\\\\nThe `value` of this channel can be a number or a string `\\\\\\\"width\\\\\\\"` for the width of the plot.\\\"},\\\"x2\\\":{\\\"anyOf\\\":[{\\\"type\\\":\\\"number\\\"},{\\\"const\\\":\\\"width\\\",\\\"type\\\":\\\"string\\\"},{\\\"$ref\\\":\\\"#/definitions/ExprRef\\\"}],\\\"description\\\":\\\"X2 coordinates for ranged `\\\\\\\"area\\\\\\\"`, `\\\\\\\"bar\\\\\\\"`, `\\\\\\\"rect\\\\\\\"`, and  `\\\\\\\"rule\\\\\\\"`.\\\\n\\\\nThe `value` of this channel can be a number or a string `\\\\\\\"width\\\\\\\"` for the width of the plot.\\\"},\\\"y\\\":{\\\"anyOf\\\":[{\\\"type\\\":\\\"number\\\"},{\\\"const\\\":\\\"height\\\",\\\"type\\\":\\\"string\\\"},{\\\"$ref\\\":\\\"#/definitions/ExprRef\\\"}],\\\"description\\\":\\\"Y coordinates of the marks, or height of vertical `\\\\\\\"bar\\\\\\\"` and `\\\\\\\"area\\\\\\\"` without specified `y2` or `height`.\\\\n\\\\nThe `value` of this channel can be a number or a string `\\\\\\\"height\\\\\\\"` for the height of the plot.\\\"},\\\"y2\\\":{\\\"anyOf\\\":[{\\\"type\\\":\\\"number\\\"},{\\\"const\\\":\\\"height\\\",\\\"type\\\":\\\"string\\\"},{\\\"$ref\\\":\\\"#/definitions/ExprRef\\\"}],\\\"description\\\":\\\"Y2 coordinates for ranged `\\\\\\\"area\\\\\\\"`, `\\\\\\\"bar\\\\\\\"`, `\\\\\\\"rect\\\\\\\"`, and  `\\\\\\\"rule\\\\\\\"`.\\\\n\\\\nThe `value` of this channel can be a number or a string `\\\\\\\"height\\\\\\\"` for the height of the plot.\\\"}},\\\"type\\\":\\\"object\\\"},\\\"TickCount\\\":{\\\"anyOf\\\":[{\\\"type\\\":\\\"number\\\"},{\\\"$ref\\\":\\\"#/definitions/TimeInterval\\\"},{\\\"$ref\\\":\\\"#/definitions/TimeIntervalStep\\\"}]},\\\"TimeInterval\\\":{\\\"enum\\\":[\\\"millisecond\\\",\\\"second\\\",\\\"minute\\\",\\\"hour\\\",\\\"day\\\",\\\"week\\\",\\\"month\\\",\\\"year\\\"],\\\"type\\\":\\\"string\\\"},\\\"TimeIntervalStep\\\":{\\\"additionalProperties\\\":false,\\\"properties\\\":{\\\"interval\\\":{\\\"$ref\\\":\\\"#/definitions/TimeInterval\\\"},\\\"step\\\":{\\\"type\\\":\\\"number\\\"}},\\\"required\\\":[\\\"interval\\\",\\\"step\\\"],\\\"type\\\":\\\"object\\\"},\\\"TimeUnit\\\":{\\\"anyOf\\\":[{\\\"$ref\\\":\\\"#/definitions/SingleTimeUnit\\\"},{\\\"$ref\\\":\\\"#/definitions/MultiTimeUnit\\\"}]},\\\"TimeUnitParams\\\":{\\\"additionalProperties\\\":false,\\\"properties\\\":{\\\"maxbins\\\":{\\\"description\\\":\\\"If no `unit` is specified, maxbins is used to infer time units.\\\",\\\"type\\\":\\\"number\\\"},\\\"step\\\":{\\\"description\\\":\\\"The number of steps between bins, in terms of the least significant unit provided.\\\",\\\"type\\\":\\\"number\\\"},\\\"unit\\\":{\\\"$ref\\\":\\\"#/definitions/TimeUnit\\\",\\\"description\\\":\\\"Defines how date-time values should be binned.\\\"},\\\"utc\\\":{\\\"description\\\":\\\"True to use UTC timezone. Equivalent to using a `utc` prefixed `TimeUnit`.\\\",\\\"type\\\":\\\"boolean\\\"}},\\\"type\\\":\\\"object\\\"},\\\"TimeUnitTransform\\\":{\\\"additionalProperties\\\":false,\\\"properties\\\":{\\\"as\\\":{\\\"$ref\\\":\\\"#/definitions/FieldName\\\",\\\"description\\\":\\\"The output field to write the timeUnit value.\\\"},\\\"field\\\":{\\\"$ref\\\":\\\"#/definitions/FieldName\\\",\\\"description\\\":\\\"The data field to apply time unit.\\\"},\\\"timeUnit\\\":{\\\"anyOf\\\":[{\\\"$ref\\\":\\\"#/definitions/TimeUnit\\\"},{\\\"$ref\\\":\\\"#/definitions/TimeUnitParams\\\"}],\\\"description\\\":\\\"The timeUnit.\\\"}},\\\"required\\\":[\\\"timeUnit\\\",\\\"field\\\",\\\"as\\\"],\\\"type\\\":\\\"object\\\"},\\\"TitleAnchor\\\":{\\\"enum\\\":[null,\\\"start\\\",\\\"middle\\\",\\\"end\\\"],\\\"type\\\":[\\\"null\\\",\\\"string\\\"]},\\\"TitleConfig\\\":{\\\"$ref\\\":\\\"#/definitions/BaseTitleNoValueRefs\\\"},\\\"TitleFrame\\\":{\\\"enum\\\":[\\\"bounds\\\",\\\"group\\\"],\\\"type\\\":\\\"string\\\"},\\\"TitleOrient\\\":{\\\"enum\\\":[\\\"none\\\",\\\"left\\\",\\\"right\\\",\\\"top\\\",\\\"bottom\\\"],\\\"type\\\":\\\"string\\\"},\\\"TitleParams\\\":{\\\"additionalProperties\\\":false,\\\"properties\\\":{\\\"align\\\":{\\\"$ref\\\":\\\"#/definitions/Align\\\",\\\"description\\\":\\\"Horizontal text alignment for title text. One of `\\\\\\\"left\\\\\\\"`, `\\\\\\\"center\\\\\\\"`, or `\\\\\\\"right\\\\\\\"`.\\\"},\\\"anchor\\\":{\\\"$ref\\\":\\\"#/definitions/TitleAnchor\\\",\\\"description\\\":\\\"The anchor position for placing the title. One of `\\\\\\\"start\\\\\\\"`, `\\\\\\\"middle\\\\\\\"`, or `\\\\\\\"end\\\\\\\"`. For example, with an orientation of top these anchor positions map to a left-, center-, or right-aligned title.\\\\n\\\\n__Default value:__ `\\\\\\\"middle\\\\\\\"` for [single](https://vega.github.io/vega-lite/docs/spec.html) and [layered](https://vega.github.io/vega-lite/docs/layer.html) views. `\\\\\\\"start\\\\\\\"` for other composite views.\\\\n\\\\n__Note:__ [For now](https://github.com/vega/vega-lite/issues/2875), `anchor` is only customizable only for [single](https://vega.github.io/vega-lite/docs/spec.html) and [layered](https://vega.github.io/vega-lite/docs/layer.html) views. For other composite views, `anchor` is always `\\\\\\\"start\\\\\\\"`.\\\"},\\\"angle\\\":{\\\"anyOf\\\":[{\\\"description\\\":\\\"Angle in degrees of title and subtitle text.\\\",\\\"type\\\":\\\"number\\\"},{\\\"$ref\\\":\\\"#/definitions/ExprRef\\\"}]},\\\"aria\\\":{\\\"anyOf\\\":[{\\\"description\\\":\\\"A boolean flag indicating if [ARIA attributes](https://developer.mozilla.org/en-US/docs/Web/Accessibility/ARIA) should be included (SVG output only). If `false`, the \\\\\\\"aria-hidden\\\\\\\" attribute will be set on the output SVG group, removing the title from the ARIA accessibility tree.\\\\n\\\\n__Default value:__ `true`\\\",\\\"type\\\":\\\"boolean\\\"},{\\\"$ref\\\":\\\"#/definitions/ExprRef\\\"}]},\\\"baseline\\\":{\\\"$ref\\\":\\\"#/definitions/TextBaseline\\\",\\\"description\\\":\\\"Vertical text baseline for title and subtitle text. One of `\\\\\\\"alphabetic\\\\\\\"` (default), `\\\\\\\"top\\\\\\\"`, `\\\\\\\"middle\\\\\\\"`, `\\\\\\\"bottom\\\\\\\"`, `\\\\\\\"line-top\\\\\\\"`, or `\\\\\\\"line-bottom\\\\\\\"`. The `\\\\\\\"line-top\\\\\\\"` and `\\\\\\\"line-bottom\\\\\\\"` values operate similarly to `\\\\\\\"top\\\\\\\"` and `\\\\\\\"bottom\\\\\\\"`, but are calculated relative to the *lineHeight* rather than *fontSize* alone.\\\"},\\\"color\\\":{\\\"anyOf\\\":[{\\\"anyOf\\\":[{\\\"type\\\":\\\"null\\\"},{\\\"$ref\\\":\\\"#/definitions/Color\\\"}],\\\"description\\\":\\\"Text color for title text.\\\"},{\\\"$ref\\\":\\\"#/definitions/ExprRef\\\"}]},\\\"dx\\\":{\\\"anyOf\\\":[{\\\"description\\\":\\\"Delta offset for title and subtitle text x-coordinate.\\\",\\\"type\\\":\\\"number\\\"},{\\\"$ref\\\":\\\"#/definitions/ExprRef\\\"}]},\\\"dy\\\":{\\\"anyOf\\\":[{\\\"description\\\":\\\"Delta offset for title and subtitle text y-coordinate.\\\",\\\"type\\\":\\\"number\\\"},{\\\"$ref\\\":\\\"#/definitions/ExprRef\\\"}]},\\\"font\\\":{\\\"anyOf\\\":[{\\\"description\\\":\\\"Font name for title text.\\\",\\\"type\\\":\\\"string\\\"},{\\\"$ref\\\":\\\"#/definitions/ExprRef\\\"}]},\\\"fontSize\\\":{\\\"anyOf\\\":[{\\\"description\\\":\\\"Font size in pixels for title text.\\\",\\\"minimum\\\":0,\\\"type\\\":\\\"number\\\"},{\\\"$ref\\\":\\\"#/definitions/ExprRef\\\"}]},\\\"fontStyle\\\":{\\\"anyOf\\\":[{\\\"$ref\\\":\\\"#/definitions/FontStyle\\\",\\\"description\\\":\\\"Font style for title text.\\\"},{\\\"$ref\\\":\\\"#/definitions/ExprRef\\\"}]},\\\"fontWeight\\\":{\\\"anyOf\\\":[{\\\"$ref\\\":\\\"#/definitions/FontWeight\\\",\\\"description\\\":\\\"Font weight for title text. This can be either a string (e.g `\\\\\\\"bold\\\\\\\"`, `\\\\\\\"normal\\\\\\\"`) or a number (`100`, `200`, `300`, ..., `900` where `\\\\\\\"normal\\\\\\\"` = `400` and `\\\\\\\"bold\\\\\\\"` = `700`).\\\"},{\\\"$ref\\\":\\\"#/definitions/ExprRef\\\"}]},\\\"frame\\\":{\\\"anyOf\\\":[{\\\"anyOf\\\":[{\\\"$ref\\\":\\\"#/definitions/TitleFrame\\\"},{\\\"type\\\":\\\"string\\\"}],\\\"description\\\":\\\"The reference frame for the anchor position, one of `\\\\\\\"bounds\\\\\\\"` (to anchor relative to the full bounding box) or `\\\\\\\"group\\\\\\\"` (to anchor relative to the group width or height).\\\"},{\\\"$ref\\\":\\\"#/definitions/ExprRef\\\"}]},\\\"limit\\\":{\\\"anyOf\\\":[{\\\"description\\\":\\\"The maximum allowed length in pixels of title and subtitle text.\\\",\\\"minimum\\\":0,\\\"type\\\":\\\"number\\\"},{\\\"$ref\\\":\\\"#/definitions/ExprRef\\\"}]},\\\"lineHeight\\\":{\\\"anyOf\\\":[{\\\"description\\\":\\\"Line height in pixels for multi-line title text or title text with `\\\\\\\"line-top\\\\\\\"` or `\\\\\\\"line-bottom\\\\\\\"` baseline.\\\",\\\"type\\\":\\\"number\\\"},{\\\"$ref\\\":\\\"#/definitions/ExprRef\\\"}]},\\\"offset\\\":{\\\"anyOf\\\":[{\\\"description\\\":\\\"The orthogonal offset in pixels by which to displace the title group from its position along the edge of the chart.\\\",\\\"type\\\":\\\"number\\\"},{\\\"$ref\\\":\\\"#/definitions/ExprRef\\\"}]},\\\"orient\\\":{\\\"anyOf\\\":[{\\\"$ref\\\":\\\"#/definitions/TitleOrient\\\",\\\"description\\\":\\\"Default title orientation (`\\\\\\\"top\\\\\\\"`, `\\\\\\\"bottom\\\\\\\"`, `\\\\\\\"left\\\\\\\"`, or `\\\\\\\"right\\\\\\\"`)\\\"},{\\\"$ref\\\":\\\"#/definitions/ExprRef\\\"}]},\\\"style\\\":{\\\"anyOf\\\":[{\\\"type\\\":\\\"string\\\"},{\\\"items\\\":{\\\"type\\\":\\\"string\\\"},\\\"type\\\":\\\"array\\\"}],\\\"description\\\":\\\"A [mark style property](https://vega.github.io/vega-lite/docs/config.html#style) to apply to the title text mark.\\\\n\\\\n__Default value:__ `\\\\\\\"group-title\\\\\\\"`.\\\"},\\\"subtitle\\\":{\\\"$ref\\\":\\\"#/definitions/Text\\\",\\\"description\\\":\\\"The subtitle Text.\\\"},\\\"subtitleColor\\\":{\\\"anyOf\\\":[{\\\"anyOf\\\":[{\\\"type\\\":\\\"null\\\"},{\\\"$ref\\\":\\\"#/definitions/Color\\\"}],\\\"description\\\":\\\"Text color for subtitle text.\\\"},{\\\"$ref\\\":\\\"#/definitions/ExprRef\\\"}]},\\\"subtitleFont\\\":{\\\"anyOf\\\":[{\\\"description\\\":\\\"Font name for subtitle text.\\\",\\\"type\\\":\\\"string\\\"},{\\\"$ref\\\":\\\"#/definitions/ExprRef\\\"}]},\\\"subtitleFontSize\\\":{\\\"anyOf\\\":[{\\\"description\\\":\\\"Font size in pixels for subtitle text.\\\",\\\"minimum\\\":0,\\\"type\\\":\\\"number\\\"},{\\\"$ref\\\":\\\"#/definitions/ExprRef\\\"}]},\\\"subtitleFontStyle\\\":{\\\"anyOf\\\":[{\\\"$ref\\\":\\\"#/definitions/FontStyle\\\",\\\"description\\\":\\\"Font style for subtitle text.\\\"},{\\\"$ref\\\":\\\"#/definitions/ExprRef\\\"}]},\\\"subtitleFontWeight\\\":{\\\"anyOf\\\":[{\\\"$ref\\\":\\\"#/definitions/FontWeight\\\",\\\"description\\\":\\\"Font weight for subtitle text. This can be either a string (e.g `\\\\\\\"bold\\\\\\\"`, `\\\\\\\"normal\\\\\\\"`) or a number (`100`, `200`, `300`, ..., `900` where `\\\\\\\"normal\\\\\\\"` = `400` and `\\\\\\\"bold\\\\\\\"` = `700`).\\\"},{\\\"$ref\\\":\\\"#/definitions/ExprRef\\\"}]},\\\"subtitleLineHeight\\\":{\\\"anyOf\\\":[{\\\"description\\\":\\\"Line height in pixels for multi-line subtitle text.\\\",\\\"type\\\":\\\"number\\\"},{\\\"$ref\\\":\\\"#/definitions/ExprRef\\\"}]},\\\"subtitlePadding\\\":{\\\"anyOf\\\":[{\\\"description\\\":\\\"The padding in pixels between title and subtitle text.\\\",\\\"type\\\":\\\"number\\\"},{\\\"$ref\\\":\\\"#/definitions/ExprRef\\\"}]},\\\"text\\\":{\\\"anyOf\\\":[{\\\"$ref\\\":\\\"#/definitions/Text\\\"},{\\\"$ref\\\":\\\"#/definitions/ExprRef\\\"}],\\\"description\\\":\\\"The title text.\\\"},\\\"zindex\\\":{\\\"description\\\":\\\"The integer z-index indicating the layering of the title group relative to other axis, mark and legend groups.\\\\n\\\\n__Default value:__ `0`.\\\",\\\"minimum\\\":0,\\\"type\\\":\\\"number\\\"}},\\\"required\\\":[\\\"text\\\"],\\\"type\\\":\\\"object\\\"},\\\"TooltipContent\\\":{\\\"additionalProperties\\\":false,\\\"properties\\\":{\\\"content\\\":{\\\"enum\\\":[\\\"encoding\\\",\\\"data\\\"],\\\"type\\\":\\\"string\\\"}},\\\"required\\\":[\\\"content\\\"],\\\"type\\\":\\\"object\\\"},\\\"TopLevelNormalizedConcatSpec<GenericSpec>\\\":{\\\"additionalProperties\\\":false,\\\"properties\\\":{\\\"$schema\\\":{\\\"description\\\":\\\"URL to [JSON schema](http://json-schema.org/) for a Vega-Lite specification. Unless you have a reason to change this, use `https://vega.github.io/schema/vega-lite/v4.json`. Setting the `$schema` property allows automatic validation and autocomplete in editors that support JSON schema.\\\",\\\"format\\\":\\\"uri\\\",\\\"type\\\":\\\"string\\\"},\\\"align\\\":{\\\"anyOf\\\":[{\\\"$ref\\\":\\\"#/definitions/LayoutAlign\\\"},{\\\"$ref\\\":\\\"#/definitions/RowCol<LayoutAlign>\\\"}],\\\"description\\\":\\\"The alignment to apply to grid rows and columns. The supported string values are `\\\\\\\"all\\\\\\\"`, `\\\\\\\"each\\\\\\\"`, and `\\\\\\\"none\\\\\\\"`.\\\\n\\\\n- For `\\\\\\\"none\\\\\\\"`, a flow layout will be used, in which adjacent subviews are simply placed one after the other. - For `\\\\\\\"each\\\\\\\"`, subviews will be aligned into a clean grid structure, but each row or column may be of variable size. - For `\\\\\\\"all\\\\\\\"`, subviews will be aligned and each row or column will be sized identically based on the maximum observed size. String values for this property will be applied to both grid rows and columns.\\\\n\\\\nAlternatively, an object value of the form `{\\\\\\\"row\\\\\\\": string, \\\\\\\"column\\\\\\\": string}` can be used to supply different alignments for rows and columns.\\\\n\\\\n__Default value:__ `\\\\\\\"all\\\\\\\"`.\\\"},\\\"autosize\\\":{\\\"anyOf\\\":[{\\\"$ref\\\":\\\"#/definitions/AutosizeType\\\"},{\\\"$ref\\\":\\\"#/definitions/AutoSizeParams\\\"}],\\\"description\\\":\\\"How the visualization size should be determined. If a string, should be one of `\\\\\\\"pad\\\\\\\"`, `\\\\\\\"fit\\\\\\\"` or `\\\\\\\"none\\\\\\\"`. Object values can additionally specify parameters for content sizing and automatic resizing.\\\\n\\\\n__Default value__: `pad`\\\"},\\\"background\\\":{\\\"anyOf\\\":[{\\\"$ref\\\":\\\"#/definitions/Color\\\"},{\\\"$ref\\\":\\\"#/definitions/ExprRef\\\"}],\\\"description\\\":\\\"CSS color property to use as the background of the entire view.\\\\n\\\\n__Default value:__ `\\\\\\\"white\\\\\\\"`\\\"},\\\"bounds\\\":{\\\"description\\\":\\\"The bounds calculation method to use for determining the extent of a sub-plot. One of `full` (the default) or `flush`.\\\\n\\\\n- If set to `full`, the entire calculated bounds (including axes, title, and legend) will be used. - If set to `flush`, only the specified width and height values for the sub-view will be used. The `flush` setting can be useful when attempting to place sub-plots without axes or legends into a uniform grid structure.\\\\n\\\\n__Default value:__ `\\\\\\\"full\\\\\\\"`\\\",\\\"enum\\\":[\\\"full\\\",\\\"flush\\\"],\\\"type\\\":\\\"string\\\"},\\\"center\\\":{\\\"anyOf\\\":[{\\\"type\\\":\\\"boolean\\\"},{\\\"$ref\\\":\\\"#/definitions/RowCol<boolean>\\\"}],\\\"description\\\":\\\"Boolean flag indicating if subviews should be centered relative to their respective rows or columns.\\\\n\\\\nAn object value of the form `{\\\\\\\"row\\\\\\\": boolean, \\\\\\\"column\\\\\\\": boolean}` can be used to supply different centering values for rows and columns.\\\\n\\\\n__Default value:__ `false`\\\"},\\\"columns\\\":{\\\"description\\\":\\\"The number of columns to include in the view composition layout.\\\\n\\\\n__Default value__: `undefined` -- An infinite number of columns (a single row) will be assumed. This is equivalent to `hconcat` (for `concat`) and to using the `column` channel (for `facet` and `repeat`).\\\\n\\\\n__Note__:\\\\n\\\\n1) This property is only for: - the general (wrappable) `concat` operator (not `hconcat`/`vconcat`) - the `facet` and `repeat` operator with one field/repetition definition (without row/column nesting)\\\\n\\\\n2) Setting the `columns` to `1` is equivalent to `vconcat` (for `concat`) and to using the `row` channel (for `facet` and `repeat`).\\\",\\\"type\\\":\\\"number\\\"},\\\"concat\\\":{\\\"description\\\":\\\"A list of views to be concatenated.\\\",\\\"items\\\":{\\\"$ref\\\":\\\"#/definitions/NormalizedSpec\\\"},\\\"type\\\":\\\"array\\\"},\\\"config\\\":{\\\"$ref\\\":\\\"#/definitions/Config\\\",\\\"description\\\":\\\"Vega-Lite configuration object. This property can only be defined at the top-level of a specification.\\\"},\\\"data\\\":{\\\"anyOf\\\":[{\\\"$ref\\\":\\\"#/definitions/Data\\\"},{\\\"type\\\":\\\"null\\\"}],\\\"description\\\":\\\"An object describing the data source. Set to `null` to ignore the parent's data source. If no data is set, it is derived from the parent.\\\"},\\\"datasets\\\":{\\\"$ref\\\":\\\"#/definitions/Datasets\\\",\\\"description\\\":\\\"A global data store for named datasets. This is a mapping from names to inline datasets. This can be an array of objects or primitive values or a string. Arrays of primitive values are ingested as objects with a `data` property.\\\"},\\\"description\\\":{\\\"description\\\":\\\"Description of this mark for commenting purpose.\\\",\\\"type\\\":\\\"string\\\"},\\\"name\\\":{\\\"description\\\":\\\"Name of the visualization for later reference.\\\",\\\"type\\\":\\\"string\\\"},\\\"padding\\\":{\\\"anyOf\\\":[{\\\"$ref\\\":\\\"#/definitions/Padding\\\"},{\\\"$ref\\\":\\\"#/definitions/ExprRef\\\"}],\\\"description\\\":\\\"The default visualization padding, in pixels, from the edge of the visualization canvas to the data rectangle. If a number, specifies padding for all sides. If an object, the value should have the format `{\\\\\\\"left\\\\\\\": 5, \\\\\\\"top\\\\\\\": 5, \\\\\\\"right\\\\\\\": 5, \\\\\\\"bottom\\\\\\\": 5}` to specify padding for each side of the visualization.\\\\n\\\\n__Default value__: `5`\\\"},\\\"params\\\":{\\\"description\\\":\\\"Dynamic variables that parameterize a visualization.\\\",\\\"items\\\":{\\\"$ref\\\":\\\"#/definitions/Parameter\\\"},\\\"type\\\":\\\"array\\\"},\\\"resolve\\\":{\\\"$ref\\\":\\\"#/definitions/Resolve\\\",\\\"description\\\":\\\"Scale, axis, and legend resolutions for view composition specifications.\\\"},\\\"spacing\\\":{\\\"anyOf\\\":[{\\\"type\\\":\\\"number\\\"},{\\\"$ref\\\":\\\"#/definitions/RowCol<number>\\\"}],\\\"description\\\":\\\"The spacing in pixels between sub-views of the composition operator. An object of the form `{\\\\\\\"row\\\\\\\": number, \\\\\\\"column\\\\\\\": number}` can be used to set different spacing values for rows and columns.\\\\n\\\\n__Default value__: Depends on `\\\\\\\"spacing\\\\\\\"` property of [the view composition configuration](https://vega.github.io/vega-lite/docs/config.html#view-config) (`20` by default)\\\"},\\\"title\\\":{\\\"anyOf\\\":[{\\\"$ref\\\":\\\"#/definitions/Text\\\"},{\\\"$ref\\\":\\\"#/definitions/TitleParams\\\"}],\\\"description\\\":\\\"Title for the plot.\\\"},\\\"transform\\\":{\\\"description\\\":\\\"An array of data transformations such as filter and new field calculation.\\\",\\\"items\\\":{\\\"$ref\\\":\\\"#/definitions/Transform\\\"},\\\"type\\\":\\\"array\\\"},\\\"usermeta\\\":{\\\"$ref\\\":\\\"#/definitions/Dict<unknown>\\\",\\\"description\\\":\\\"Optional metadata that will be passed to Vega. This object is completely ignored by Vega and Vega-Lite and can be used for custom metadata.\\\"}},\\\"required\\\":[\\\"concat\\\"],\\\"type\\\":\\\"object\\\"},\\\"TopLevelNormalizedHConcatSpec<GenericSpec>\\\":{\\\"additionalProperties\\\":false,\\\"properties\\\":{\\\"$schema\\\":{\\\"description\\\":\\\"URL to [JSON schema](http://json-schema.org/) for a Vega-Lite specification. Unless you have a reason to change this, use `https://vega.github.io/schema/vega-lite/v4.json`. Setting the `$schema` property allows automatic validation and autocomplete in editors that support JSON schema.\\\",\\\"format\\\":\\\"uri\\\",\\\"type\\\":\\\"string\\\"},\\\"autosize\\\":{\\\"anyOf\\\":[{\\\"$ref\\\":\\\"#/definitions/AutosizeType\\\"},{\\\"$ref\\\":\\\"#/definitions/AutoSizeParams\\\"}],\\\"description\\\":\\\"How the visualization size should be determined. If a string, should be one of `\\\\\\\"pad\\\\\\\"`, `\\\\\\\"fit\\\\\\\"` or `\\\\\\\"none\\\\\\\"`. Object values can additionally specify parameters for content sizing and automatic resizing.\\\\n\\\\n__Default value__: `pad`\\\"},\\\"background\\\":{\\\"anyOf\\\":[{\\\"$ref\\\":\\\"#/definitions/Color\\\"},{\\\"$ref\\\":\\\"#/definitions/ExprRef\\\"}],\\\"description\\\":\\\"CSS color property to use as the background of the entire view.\\\\n\\\\n__Default value:__ `\\\\\\\"white\\\\\\\"`\\\"},\\\"bounds\\\":{\\\"description\\\":\\\"The bounds calculation method to use for determining the extent of a sub-plot. One of `full` (the default) or `flush`.\\\\n\\\\n- If set to `full`, the entire calculated bounds (including axes, title, and legend) will be used. - If set to `flush`, only the specified width and height values for the sub-view will be used. The `flush` setting can be useful when attempting to place sub-plots without axes or legends into a uniform grid structure.\\\\n\\\\n__Default value:__ `\\\\\\\"full\\\\\\\"`\\\",\\\"enum\\\":[\\\"full\\\",\\\"flush\\\"],\\\"type\\\":\\\"string\\\"},\\\"center\\\":{\\\"description\\\":\\\"Boolean flag indicating if subviews should be centered relative to their respective rows or columns.\\\\n\\\\n__Default value:__ `false`\\\",\\\"type\\\":\\\"boolean\\\"},\\\"config\\\":{\\\"$ref\\\":\\\"#/definitions/Config\\\",\\\"description\\\":\\\"Vega-Lite configuration object. This property can only be defined at the top-level of a specification.\\\"},\\\"data\\\":{\\\"anyOf\\\":[{\\\"$ref\\\":\\\"#/definitions/Data\\\"},{\\\"type\\\":\\\"null\\\"}],\\\"description\\\":\\\"An object describing the data source. Set to `null` to ignore the parent's data source. If no data is set, it is derived from the parent.\\\"},\\\"datasets\\\":{\\\"$ref\\\":\\\"#/definitions/Datasets\\\",\\\"description\\\":\\\"A global data store for named datasets. This is a mapping from names to inline datasets. This can be an array of objects or primitive values or a string. Arrays of primitive values are ingested as objects with a `data` property.\\\"},\\\"description\\\":{\\\"description\\\":\\\"Description of this mark for commenting purpose.\\\",\\\"type\\\":\\\"string\\\"},\\\"hconcat\\\":{\\\"description\\\":\\\"A list of views to be concatenated and put into a row.\\\",\\\"items\\\":{\\\"$ref\\\":\\\"#/definitions/NormalizedSpec\\\"},\\\"type\\\":\\\"array\\\"},\\\"name\\\":{\\\"description\\\":\\\"Name of the visualization for later reference.\\\",\\\"type\\\":\\\"string\\\"},\\\"padding\\\":{\\\"anyOf\\\":[{\\\"$ref\\\":\\\"#/definitions/Padding\\\"},{\\\"$ref\\\":\\\"#/definitions/ExprRef\\\"}],\\\"description\\\":\\\"The default visualization padding, in pixels, from the edge of the visualization canvas to the data rectangle. If a number, specifies padding for all sides. If an object, the value should have the format `{\\\\\\\"left\\\\\\\": 5, \\\\\\\"top\\\\\\\": 5, \\\\\\\"right\\\\\\\": 5, \\\\\\\"bottom\\\\\\\": 5}` to specify padding for each side of the visualization.\\\\n\\\\n__Default value__: `5`\\\"},\\\"params\\\":{\\\"description\\\":\\\"Dynamic variables that parameterize a visualization.\\\",\\\"items\\\":{\\\"$ref\\\":\\\"#/definitions/Parameter\\\"},\\\"type\\\":\\\"array\\\"},\\\"resolve\\\":{\\\"$ref\\\":\\\"#/definitions/Resolve\\\",\\\"description\\\":\\\"Scale, axis, and legend resolutions for view composition specifications.\\\"},\\\"spacing\\\":{\\\"description\\\":\\\"The spacing in pixels between sub-views of the concat operator.\\\\n\\\\n__Default value__: `10`\\\",\\\"type\\\":\\\"number\\\"},\\\"title\\\":{\\\"anyOf\\\":[{\\\"$ref\\\":\\\"#/definitions/Text\\\"},{\\\"$ref\\\":\\\"#/definitions/TitleParams\\\"}],\\\"description\\\":\\\"Title for the plot.\\\"},\\\"transform\\\":{\\\"description\\\":\\\"An array of data transformations such as filter and new field calculation.\\\",\\\"items\\\":{\\\"$ref\\\":\\\"#/definitions/Transform\\\"},\\\"type\\\":\\\"array\\\"},\\\"usermeta\\\":{\\\"$ref\\\":\\\"#/definitions/Dict<unknown>\\\",\\\"description\\\":\\\"Optional metadata that will be passed to Vega. This object is completely ignored by Vega and Vega-Lite and can be used for custom metadata.\\\"}},\\\"required\\\":[\\\"hconcat\\\"],\\\"type\\\":\\\"object\\\"},\\\"TopLevelNormalizedVConcatSpec<GenericSpec>\\\":{\\\"additionalProperties\\\":false,\\\"properties\\\":{\\\"$schema\\\":{\\\"description\\\":\\\"URL to [JSON schema](http://json-schema.org/) for a Vega-Lite specification. Unless you have a reason to change this, use `https://vega.github.io/schema/vega-lite/v4.json`. Setting the `$schema` property allows automatic validation and autocomplete in editors that support JSON schema.\\\",\\\"format\\\":\\\"uri\\\",\\\"type\\\":\\\"string\\\"},\\\"autosize\\\":{\\\"anyOf\\\":[{\\\"$ref\\\":\\\"#/definitions/AutosizeType\\\"},{\\\"$ref\\\":\\\"#/definitions/AutoSizeParams\\\"}],\\\"description\\\":\\\"How the visualization size should be determined. If a string, should be one of `\\\\\\\"pad\\\\\\\"`, `\\\\\\\"fit\\\\\\\"` or `\\\\\\\"none\\\\\\\"`. Object values can additionally specify parameters for content sizing and automatic resizing.\\\\n\\\\n__Default value__: `pad`\\\"},\\\"background\\\":{\\\"anyOf\\\":[{\\\"$ref\\\":\\\"#/definitions/Color\\\"},{\\\"$ref\\\":\\\"#/definitions/ExprRef\\\"}],\\\"description\\\":\\\"CSS color property to use as the background of the entire view.\\\\n\\\\n__Default value:__ `\\\\\\\"white\\\\\\\"`\\\"},\\\"bounds\\\":{\\\"description\\\":\\\"The bounds calculation method to use for determining the extent of a sub-plot. One of `full` (the default) or `flush`.\\\\n\\\\n- If set to `full`, the entire calculated bounds (including axes, title, and legend) will be used. - If set to `flush`, only the specified width and height values for the sub-view will be used. The `flush` setting can be useful when attempting to place sub-plots without axes or legends into a uniform grid structure.\\\\n\\\\n__Default value:__ `\\\\\\\"full\\\\\\\"`\\\",\\\"enum\\\":[\\\"full\\\",\\\"flush\\\"],\\\"type\\\":\\\"string\\\"},\\\"center\\\":{\\\"description\\\":\\\"Boolean flag indicating if subviews should be centered relative to their respective rows or columns.\\\\n\\\\n__Default value:__ `false`\\\",\\\"type\\\":\\\"boolean\\\"},\\\"config\\\":{\\\"$ref\\\":\\\"#/definitions/Config\\\",\\\"description\\\":\\\"Vega-Lite configuration object. This property can only be defined at the top-level of a specification.\\\"},\\\"data\\\":{\\\"anyOf\\\":[{\\\"$ref\\\":\\\"#/definitions/Data\\\"},{\\\"type\\\":\\\"null\\\"}],\\\"description\\\":\\\"An object describing the data source. Set to `null` to ignore the parent's data source. If no data is set, it is derived from the parent.\\\"},\\\"datasets\\\":{\\\"$ref\\\":\\\"#/definitions/Datasets\\\",\\\"description\\\":\\\"A global data store for named datasets. This is a mapping from names to inline datasets. This can be an array of objects or primitive values or a string. Arrays of primitive values are ingested as objects with a `data` property.\\\"},\\\"description\\\":{\\\"description\\\":\\\"Description of this mark for commenting purpose.\\\",\\\"type\\\":\\\"string\\\"},\\\"name\\\":{\\\"description\\\":\\\"Name of the visualization for later reference.\\\",\\\"type\\\":\\\"string\\\"},\\\"padding\\\":{\\\"anyOf\\\":[{\\\"$ref\\\":\\\"#/definitions/Padding\\\"},{\\\"$ref\\\":\\\"#/definitions/ExprRef\\\"}],\\\"description\\\":\\\"The default visualization padding, in pixels, from the edge of the visualization canvas to the data rectangle. If a number, specifies padding for all sides. If an object, the value should have the format `{\\\\\\\"left\\\\\\\": 5, \\\\\\\"top\\\\\\\": 5, \\\\\\\"right\\\\\\\": 5, \\\\\\\"bottom\\\\\\\": 5}` to specify padding for each side of the visualization.\\\\n\\\\n__Default value__: `5`\\\"},\\\"params\\\":{\\\"description\\\":\\\"Dynamic variables that parameterize a visualization.\\\",\\\"items\\\":{\\\"$ref\\\":\\\"#/definitions/Parameter\\\"},\\\"type\\\":\\\"array\\\"},\\\"resolve\\\":{\\\"$ref\\\":\\\"#/definitions/Resolve\\\",\\\"description\\\":\\\"Scale, axis, and legend resolutions for view composition specifications.\\\"},\\\"spacing\\\":{\\\"description\\\":\\\"The spacing in pixels between sub-views of the concat operator.\\\\n\\\\n__Default value__: `10`\\\",\\\"type\\\":\\\"number\\\"},\\\"title\\\":{\\\"anyOf\\\":[{\\\"$ref\\\":\\\"#/definitions/Text\\\"},{\\\"$ref\\\":\\\"#/definitions/TitleParams\\\"}],\\\"description\\\":\\\"Title for the plot.\\\"},\\\"transform\\\":{\\\"description\\\":\\\"An array of data transformations such as filter and new field calculation.\\\",\\\"items\\\":{\\\"$ref\\\":\\\"#/definitions/Transform\\\"},\\\"type\\\":\\\"array\\\"},\\\"usermeta\\\":{\\\"$ref\\\":\\\"#/definitions/Dict<unknown>\\\",\\\"description\\\":\\\"Optional metadata that will be passed to Vega. This object is completely ignored by Vega and Vega-Lite and can be used for custom metadata.\\\"},\\\"vconcat\\\":{\\\"description\\\":\\\"A list of views to be concatenated and put into a column.\\\",\\\"items\\\":{\\\"$ref\\\":\\\"#/definitions/NormalizedSpec\\\"},\\\"type\\\":\\\"array\\\"}},\\\"required\\\":[\\\"vconcat\\\"],\\\"type\\\":\\\"object\\\"},\\\"TopLevelLayerSpec\\\":{\\\"additionalProperties\\\":false,\\\"properties\\\":{\\\"$schema\\\":{\\\"description\\\":\\\"URL to [JSON schema](http://json-schema.org/) for a Vega-Lite specification. Unless you have a reason to change this, use `https://vega.github.io/schema/vega-lite/v4.json`. Setting the `$schema` property allows automatic validation and autocomplete in editors that support JSON schema.\\\",\\\"format\\\":\\\"uri\\\",\\\"type\\\":\\\"string\\\"},\\\"autosize\\\":{\\\"anyOf\\\":[{\\\"$ref\\\":\\\"#/definitions/AutosizeType\\\"},{\\\"$ref\\\":\\\"#/definitions/AutoSizeParams\\\"}],\\\"description\\\":\\\"How the visualization size should be determined. If a string, should be one of `\\\\\\\"pad\\\\\\\"`, `\\\\\\\"fit\\\\\\\"` or `\\\\\\\"none\\\\\\\"`. Object values can additionally specify parameters for content sizing and automatic resizing.\\\\n\\\\n__Default value__: `pad`\\\"},\\\"background\\\":{\\\"anyOf\\\":[{\\\"$ref\\\":\\\"#/definitions/Color\\\"},{\\\"$ref\\\":\\\"#/definitions/ExprRef\\\"}],\\\"description\\\":\\\"CSS color property to use as the background of the entire view.\\\\n\\\\n__Default value:__ `\\\\\\\"white\\\\\\\"`\\\"},\\\"config\\\":{\\\"$ref\\\":\\\"#/definitions/Config\\\",\\\"description\\\":\\\"Vega-Lite configuration object. This property can only be defined at the top-level of a specification.\\\"},\\\"data\\\":{\\\"anyOf\\\":[{\\\"$ref\\\":\\\"#/definitions/Data\\\"},{\\\"type\\\":\\\"null\\\"}],\\\"description\\\":\\\"An object describing the data source. Set to `null` to ignore the parent's data source. If no data is set, it is derived from the parent.\\\"},\\\"datasets\\\":{\\\"$ref\\\":\\\"#/definitions/Datasets\\\",\\\"description\\\":\\\"A global data store for named datasets. This is a mapping from names to inline datasets. This can be an array of objects or primitive values or a string. Arrays of primitive values are ingested as objects with a `data` property.\\\"},\\\"description\\\":{\\\"description\\\":\\\"Description of this mark for commenting purpose.\\\",\\\"type\\\":\\\"string\\\"},\\\"encoding\\\":{\\\"$ref\\\":\\\"#/definitions/SharedEncoding\\\",\\\"description\\\":\\\"A shared key-value mapping between encoding channels and definition of fields in the underlying layers.\\\"},\\\"height\\\":{\\\"anyOf\\\":[{\\\"type\\\":\\\"number\\\"},{\\\"const\\\":\\\"container\\\",\\\"type\\\":\\\"string\\\"},{\\\"$ref\\\":\\\"#/definitions/Step\\\"}],\\\"description\\\":\\\"The height of a visualization.\\\\n\\\\n- For a plot with a continuous y-field, height should be a number. - For a plot with either a discrete y-field or no y-field, height can be either a number indicating a fixed height or an object in the form of `{step: number}` defining the height per discrete step. (No y-field is equivalent to having one discrete step.) - To enable responsive sizing on height, it should be set to `\\\\\\\"container\\\\\\\"`.\\\\n\\\\n__Default value:__ Based on `config.view.continuousHeight` for a plot with a continuous y-field and `config.view.discreteHeight` otherwise.\\\\n\\\\n__Note:__ For plots with [`row` and `column` channels](https://vega.github.io/vega-lite/docs/encoding.html#facet), this represents the height of a single view and the `\\\\\\\"container\\\\\\\"` option cannot be used.\\\\n\\\\n__See also:__ [`height`](https://vega.github.io/vega-lite/docs/size.html) documentation.\\\"},\\\"layer\\\":{\\\"description\\\":\\\"Layer or single view specifications to be layered.\\\\n\\\\n__Note__: Specifications inside `layer` cannot use `row` and `column` channels as layering facet specifications is not allowed. Instead, use the [facet operator](https://vega.github.io/vega-lite/docs/facet.html) and place a layer inside a facet.\\\",\\\"items\\\":{\\\"anyOf\\\":[{\\\"$ref\\\":\\\"#/definitions/LayerSpec\\\"},{\\\"$ref\\\":\\\"#/definitions/UnitSpec\\\"}]},\\\"type\\\":\\\"array\\\"},\\\"name\\\":{\\\"description\\\":\\\"Name of the visualization for later reference.\\\",\\\"type\\\":\\\"string\\\"},\\\"padding\\\":{\\\"anyOf\\\":[{\\\"$ref\\\":\\\"#/definitions/Padding\\\"},{\\\"$ref\\\":\\\"#/definitions/ExprRef\\\"}],\\\"description\\\":\\\"The default visualization padding, in pixels, from the edge of the visualization canvas to the data rectangle. If a number, specifies padding for all sides. If an object, the value should have the format `{\\\\\\\"left\\\\\\\": 5, \\\\\\\"top\\\\\\\": 5, \\\\\\\"right\\\\\\\": 5, \\\\\\\"bottom\\\\\\\": 5}` to specify padding for each side of the visualization.\\\\n\\\\n__Default value__: `5`\\\"},\\\"params\\\":{\\\"description\\\":\\\"Dynamic variables that parameterize a visualization.\\\",\\\"items\\\":{\\\"$ref\\\":\\\"#/definitions/Parameter\\\"},\\\"type\\\":\\\"array\\\"},\\\"projection\\\":{\\\"$ref\\\":\\\"#/definitions/Projection\\\",\\\"description\\\":\\\"An object defining properties of the geographic projection shared by underlying layers.\\\"},\\\"resolve\\\":{\\\"$ref\\\":\\\"#/definitions/Resolve\\\",\\\"description\\\":\\\"Scale, axis, and legend resolutions for view composition specifications.\\\"},\\\"title\\\":{\\\"anyOf\\\":[{\\\"$ref\\\":\\\"#/definitions/Text\\\"},{\\\"$ref\\\":\\\"#/definitions/TitleParams\\\"}],\\\"description\\\":\\\"Title for the plot.\\\"},\\\"transform\\\":{\\\"description\\\":\\\"An array of data transformations such as filter and new field calculation.\\\",\\\"items\\\":{\\\"$ref\\\":\\\"#/definitions/Transform\\\"},\\\"type\\\":\\\"array\\\"},\\\"usermeta\\\":{\\\"$ref\\\":\\\"#/definitions/Dict<unknown>\\\",\\\"description\\\":\\\"Optional metadata that will be passed to Vega. This object is completely ignored by Vega and Vega-Lite and can be used for custom metadata.\\\"},\\\"view\\\":{\\\"$ref\\\":\\\"#/definitions/ViewBackground\\\",\\\"description\\\":\\\"An object defining the view background's fill and stroke.\\\\n\\\\n__Default value:__ none (transparent)\\\"},\\\"width\\\":{\\\"anyOf\\\":[{\\\"type\\\":\\\"number\\\"},{\\\"const\\\":\\\"container\\\",\\\"type\\\":\\\"string\\\"},{\\\"$ref\\\":\\\"#/definitions/Step\\\"}],\\\"description\\\":\\\"The width of a visualization.\\\\n\\\\n- For a plot with a continuous x-field, width should be a number. - For a plot with either a discrete x-field or no x-field, width can be either a number indicating a fixed width or an object in the form of `{step: number}` defining the width per discrete step. (No x-field is equivalent to having one discrete step.) - To enable responsive sizing on width, it should be set to `\\\\\\\"container\\\\\\\"`.\\\\n\\\\n__Default value:__ Based on `config.view.continuousWidth` for a plot with a continuous x-field and `config.view.discreteWidth` otherwise.\\\\n\\\\n__Note:__ For plots with [`row` and `column` channels](https://vega.github.io/vega-lite/docs/encoding.html#facet), this represents the width of a single view and the `\\\\\\\"container\\\\\\\"` option cannot be used.\\\\n\\\\n__See also:__ [`width`](https://vega.github.io/vega-lite/docs/size.html) documentation.\\\"}},\\\"required\\\":[\\\"layer\\\"],\\\"type\\\":\\\"object\\\"},\\\"TopLevelRepeatSpec\\\":{\\\"anyOf\\\":[{\\\"additionalProperties\\\":false,\\\"properties\\\":{\\\"$schema\\\":{\\\"description\\\":\\\"URL to [JSON schema](http://json-schema.org/) for a Vega-Lite specification. Unless you have a reason to change this, use `https://vega.github.io/schema/vega-lite/v4.json`. Setting the `$schema` property allows automatic validation and autocomplete in editors that support JSON schema.\\\",\\\"format\\\":\\\"uri\\\",\\\"type\\\":\\\"string\\\"},\\\"align\\\":{\\\"anyOf\\\":[{\\\"$ref\\\":\\\"#/definitions/LayoutAlign\\\"},{\\\"$ref\\\":\\\"#/definitions/RowCol<LayoutAlign>\\\"}],\\\"description\\\":\\\"The alignment to apply to grid rows and columns. The supported string values are `\\\\\\\"all\\\\\\\"`, `\\\\\\\"each\\\\\\\"`, and `\\\\\\\"none\\\\\\\"`.\\\\n\\\\n- For `\\\\\\\"none\\\\\\\"`, a flow layout will be used, in which adjacent subviews are simply placed one after the other. - For `\\\\\\\"each\\\\\\\"`, subviews will be aligned into a clean grid structure, but each row or column may be of variable size. - For `\\\\\\\"all\\\\\\\"`, subviews will be aligned and each row or column will be sized identically based on the maximum observed size. String values for this property will be applied to both grid rows and columns.\\\\n\\\\nAlternatively, an object value of the form `{\\\\\\\"row\\\\\\\": string, \\\\\\\"column\\\\\\\": string}` can be used to supply different alignments for rows and columns.\\\\n\\\\n__Default value:__ `\\\\\\\"all\\\\\\\"`.\\\"},\\\"autosize\\\":{\\\"anyOf\\\":[{\\\"$ref\\\":\\\"#/definitions/AutosizeType\\\"},{\\\"$ref\\\":\\\"#/definitions/AutoSizeParams\\\"}],\\\"description\\\":\\\"How the visualization size should be determined. If a string, should be one of `\\\\\\\"pad\\\\\\\"`, `\\\\\\\"fit\\\\\\\"` or `\\\\\\\"none\\\\\\\"`. Object values can additionally specify parameters for content sizing and automatic resizing.\\\\n\\\\n__Default value__: `pad`\\\"},\\\"background\\\":{\\\"anyOf\\\":[{\\\"$ref\\\":\\\"#/definitions/Color\\\"},{\\\"$ref\\\":\\\"#/definitions/ExprRef\\\"}],\\\"description\\\":\\\"CSS color property to use as the background of the entire view.\\\\n\\\\n__Default value:__ `\\\\\\\"white\\\\\\\"`\\\"},\\\"bounds\\\":{\\\"description\\\":\\\"The bounds calculation method to use for determining the extent of a sub-plot. One of `full` (the default) or `flush`.\\\\n\\\\n- If set to `full`, the entire calculated bounds (including axes, title, and legend) will be used. - If set to `flush`, only the specified width and height values for the sub-view will be used. The `flush` setting can be useful when attempting to place sub-plots without axes or legends into a uniform grid structure.\\\\n\\\\n__Default value:__ `\\\\\\\"full\\\\\\\"`\\\",\\\"enum\\\":[\\\"full\\\",\\\"flush\\\"],\\\"type\\\":\\\"string\\\"},\\\"center\\\":{\\\"anyOf\\\":[{\\\"type\\\":\\\"boolean\\\"},{\\\"$ref\\\":\\\"#/definitions/RowCol<boolean>\\\"}],\\\"description\\\":\\\"Boolean flag indicating if subviews should be centered relative to their respective rows or columns.\\\\n\\\\nAn object value of the form `{\\\\\\\"row\\\\\\\": boolean, \\\\\\\"column\\\\\\\": boolean}` can be used to supply different centering values for rows and columns.\\\\n\\\\n__Default value:__ `false`\\\"},\\\"columns\\\":{\\\"description\\\":\\\"The number of columns to include in the view composition layout.\\\\n\\\\n__Default value__: `undefined` -- An infinite number of columns (a single row) will be assumed. This is equivalent to `hconcat` (for `concat`) and to using the `column` channel (for `facet` and `repeat`).\\\\n\\\\n__Note__:\\\\n\\\\n1) This property is only for: - the general (wrappable) `concat` operator (not `hconcat`/`vconcat`) - the `facet` and `repeat` operator with one field/repetition definition (without row/column nesting)\\\\n\\\\n2) Setting the `columns` to `1` is equivalent to `vconcat` (for `concat`) and to using the `row` channel (for `facet` and `repeat`).\\\",\\\"type\\\":\\\"number\\\"},\\\"config\\\":{\\\"$ref\\\":\\\"#/definitions/Config\\\",\\\"description\\\":\\\"Vega-Lite configuration object. This property can only be defined at the top-level of a specification.\\\"},\\\"data\\\":{\\\"anyOf\\\":[{\\\"$ref\\\":\\\"#/definitions/Data\\\"},{\\\"type\\\":\\\"null\\\"}],\\\"description\\\":\\\"An object describing the data source. Set to `null` to ignore the parent's data source. If no data is set, it is derived from the parent.\\\"},\\\"datasets\\\":{\\\"$ref\\\":\\\"#/definitions/Datasets\\\",\\\"description\\\":\\\"A global data store for named datasets. This is a mapping from names to inline datasets. This can be an array of objects or primitive values or a string. Arrays of primitive values are ingested as objects with a `data` property.\\\"},\\\"description\\\":{\\\"description\\\":\\\"Description of this mark for commenting purpose.\\\",\\\"type\\\":\\\"string\\\"},\\\"name\\\":{\\\"description\\\":\\\"Name of the visualization for later reference.\\\",\\\"type\\\":\\\"string\\\"},\\\"padding\\\":{\\\"anyOf\\\":[{\\\"$ref\\\":\\\"#/definitions/Padding\\\"},{\\\"$ref\\\":\\\"#/definitions/ExprRef\\\"}],\\\"description\\\":\\\"The default visualization padding, in pixels, from the edge of the visualization canvas to the data rectangle. If a number, specifies padding for all sides. If an object, the value should have the format `{\\\\\\\"left\\\\\\\": 5, \\\\\\\"top\\\\\\\": 5, \\\\\\\"right\\\\\\\": 5, \\\\\\\"bottom\\\\\\\": 5}` to specify padding for each side of the visualization.\\\\n\\\\n__Default value__: `5`\\\"},\\\"params\\\":{\\\"description\\\":\\\"Dynamic variables that parameterize a visualization.\\\",\\\"items\\\":{\\\"$ref\\\":\\\"#/definitions/Parameter\\\"},\\\"type\\\":\\\"array\\\"},\\\"repeat\\\":{\\\"anyOf\\\":[{\\\"items\\\":{\\\"type\\\":\\\"string\\\"},\\\"type\\\":\\\"array\\\"},{\\\"$ref\\\":\\\"#/definitions/RepeatMapping\\\"}],\\\"description\\\":\\\"Definition for fields to be repeated. One of: 1) An array of fields to be repeated. If `\\\\\\\"repeat\\\\\\\"` is an array, the field can be referred to as `{\\\\\\\"repeat\\\\\\\": \\\\\\\"repeat\\\\\\\"}`. The repeated views are laid out in a wrapped row. You can set the number of columns to control the wrapping. 2) An object that maps `\\\\\\\"row\\\\\\\"` and/or `\\\\\\\"column\\\\\\\"` to the listed fields to be repeated along the particular orientations. The objects `{\\\\\\\"repeat\\\\\\\": \\\\\\\"row\\\\\\\"}` and `{\\\\\\\"repeat\\\\\\\": \\\\\\\"column\\\\\\\"}` can be used to refer to the repeated field respectively.\\\"},\\\"resolve\\\":{\\\"$ref\\\":\\\"#/definitions/Resolve\\\",\\\"description\\\":\\\"Scale, axis, and legend resolutions for view composition specifications.\\\"},\\\"spacing\\\":{\\\"anyOf\\\":[{\\\"type\\\":\\\"number\\\"},{\\\"$ref\\\":\\\"#/definitions/RowCol<number>\\\"}],\\\"description\\\":\\\"The spacing in pixels between sub-views of the composition operator. An object of the form `{\\\\\\\"row\\\\\\\": number, \\\\\\\"column\\\\\\\": number}` can be used to set different spacing values for rows and columns.\\\\n\\\\n__Default value__: Depends on `\\\\\\\"spacing\\\\\\\"` property of [the view composition configuration](https://vega.github.io/vega-lite/docs/config.html#view-config) (`20` by default)\\\"},\\\"spec\\\":{\\\"$ref\\\":\\\"#/definitions/Spec\\\",\\\"description\\\":\\\"A specification of the view that gets repeated.\\\"},\\\"title\\\":{\\\"anyOf\\\":[{\\\"$ref\\\":\\\"#/definitions/Text\\\"},{\\\"$ref\\\":\\\"#/definitions/TitleParams\\\"}],\\\"description\\\":\\\"Title for the plot.\\\"},\\\"transform\\\":{\\\"description\\\":\\\"An array of data transformations such as filter and new field calculation.\\\",\\\"items\\\":{\\\"$ref\\\":\\\"#/definitions/Transform\\\"},\\\"type\\\":\\\"array\\\"},\\\"usermeta\\\":{\\\"$ref\\\":\\\"#/definitions/Dict<unknown>\\\",\\\"description\\\":\\\"Optional metadata that will be passed to Vega. This object is completely ignored by Vega and Vega-Lite and can be used for custom metadata.\\\"}},\\\"required\\\":[\\\"repeat\\\",\\\"spec\\\"],\\\"type\\\":\\\"object\\\"},{\\\"additionalProperties\\\":false,\\\"properties\\\":{\\\"$schema\\\":{\\\"description\\\":\\\"URL to [JSON schema](http://json-schema.org/) for a Vega-Lite specification. Unless you have a reason to change this, use `https://vega.github.io/schema/vega-lite/v4.json`. Setting the `$schema` property allows automatic validation and autocomplete in editors that support JSON schema.\\\",\\\"format\\\":\\\"uri\\\",\\\"type\\\":\\\"string\\\"},\\\"align\\\":{\\\"anyOf\\\":[{\\\"$ref\\\":\\\"#/definitions/LayoutAlign\\\"},{\\\"$ref\\\":\\\"#/definitions/RowCol<LayoutAlign>\\\"}],\\\"description\\\":\\\"The alignment to apply to grid rows and columns. The supported string values are `\\\\\\\"all\\\\\\\"`, `\\\\\\\"each\\\\\\\"`, and `\\\\\\\"none\\\\\\\"`.\\\\n\\\\n- For `\\\\\\\"none\\\\\\\"`, a flow layout will be used, in which adjacent subviews are simply placed one after the other. - For `\\\\\\\"each\\\\\\\"`, subviews will be aligned into a clean grid structure, but each row or column may be of variable size. - For `\\\\\\\"all\\\\\\\"`, subviews will be aligned and each row or column will be sized identically based on the maximum observed size. String values for this property will be applied to both grid rows and columns.\\\\n\\\\nAlternatively, an object value of the form `{\\\\\\\"row\\\\\\\": string, \\\\\\\"column\\\\\\\": string}` can be used to supply different alignments for rows and columns.\\\\n\\\\n__Default value:__ `\\\\\\\"all\\\\\\\"`.\\\"},\\\"autosize\\\":{\\\"anyOf\\\":[{\\\"$ref\\\":\\\"#/definitions/AutosizeType\\\"},{\\\"$ref\\\":\\\"#/definitions/AutoSizeParams\\\"}],\\\"description\\\":\\\"How the visualization size should be determined. If a string, should be one of `\\\\\\\"pad\\\\\\\"`, `\\\\\\\"fit\\\\\\\"` or `\\\\\\\"none\\\\\\\"`. Object values can additionally specify parameters for content sizing and automatic resizing.\\\\n\\\\n__Default value__: `pad`\\\"},\\\"background\\\":{\\\"anyOf\\\":[{\\\"$ref\\\":\\\"#/definitions/Color\\\"},{\\\"$ref\\\":\\\"#/definitions/ExprRef\\\"}],\\\"description\\\":\\\"CSS color property to use as the background of the entire view.\\\\n\\\\n__Default value:__ `\\\\\\\"white\\\\\\\"`\\\"},\\\"bounds\\\":{\\\"description\\\":\\\"The bounds calculation method to use for determining the extent of a sub-plot. One of `full` (the default) or `flush`.\\\\n\\\\n- If set to `full`, the entire calculated bounds (including axes, title, and legend) will be used. - If set to `flush`, only the specified width and height values for the sub-view will be used. The `flush` setting can be useful when attempting to place sub-plots without axes or legends into a uniform grid structure.\\\\n\\\\n__Default value:__ `\\\\\\\"full\\\\\\\"`\\\",\\\"enum\\\":[\\\"full\\\",\\\"flush\\\"],\\\"type\\\":\\\"string\\\"},\\\"center\\\":{\\\"anyOf\\\":[{\\\"type\\\":\\\"boolean\\\"},{\\\"$ref\\\":\\\"#/definitions/RowCol<boolean>\\\"}],\\\"description\\\":\\\"Boolean flag indicating if subviews should be centered relative to their respective rows or columns.\\\\n\\\\nAn object value of the form `{\\\\\\\"row\\\\\\\": boolean, \\\\\\\"column\\\\\\\": boolean}` can be used to supply different centering values for rows and columns.\\\\n\\\\n__Default value:__ `false`\\\"},\\\"columns\\\":{\\\"description\\\":\\\"The number of columns to include in the view composition layout.\\\\n\\\\n__Default value__: `undefined` -- An infinite number of columns (a single row) will be assumed. This is equivalent to `hconcat` (for `concat`) and to using the `column` channel (for `facet` and `repeat`).\\\\n\\\\n__Note__:\\\\n\\\\n1) This property is only for: - the general (wrappable) `concat` operator (not `hconcat`/`vconcat`) - the `facet` and `repeat` operator with one field/repetition definition (without row/column nesting)\\\\n\\\\n2) Setting the `columns` to `1` is equivalent to `vconcat` (for `concat`) and to using the `row` channel (for `facet` and `repeat`).\\\",\\\"type\\\":\\\"number\\\"},\\\"config\\\":{\\\"$ref\\\":\\\"#/definitions/Config\\\",\\\"description\\\":\\\"Vega-Lite configuration object. This property can only be defined at the top-level of a specification.\\\"},\\\"data\\\":{\\\"anyOf\\\":[{\\\"$ref\\\":\\\"#/definitions/Data\\\"},{\\\"type\\\":\\\"null\\\"}],\\\"description\\\":\\\"An object describing the data source. Set to `null` to ignore the parent's data source. If no data is set, it is derived from the parent.\\\"},\\\"datasets\\\":{\\\"$ref\\\":\\\"#/definitions/Datasets\\\",\\\"description\\\":\\\"A global data store for named datasets. This is a mapping from names to inline datasets. This can be an array of objects or primitive values or a string. Arrays of primitive values are ingested as objects with a `data` property.\\\"},\\\"description\\\":{\\\"description\\\":\\\"Description of this mark for commenting purpose.\\\",\\\"type\\\":\\\"string\\\"},\\\"name\\\":{\\\"description\\\":\\\"Name of the visualization for later reference.\\\",\\\"type\\\":\\\"string\\\"},\\\"padding\\\":{\\\"anyOf\\\":[{\\\"$ref\\\":\\\"#/definitions/Padding\\\"},{\\\"$ref\\\":\\\"#/definitions/ExprRef\\\"}],\\\"description\\\":\\\"The default visualization padding, in pixels, from the edge of the visualization canvas to the data rectangle. If a number, specifies padding for all sides. If an object, the value should have the format `{\\\\\\\"left\\\\\\\": 5, \\\\\\\"top\\\\\\\": 5, \\\\\\\"right\\\\\\\": 5, \\\\\\\"bottom\\\\\\\": 5}` to specify padding for each side of the visualization.\\\\n\\\\n__Default value__: `5`\\\"},\\\"params\\\":{\\\"description\\\":\\\"Dynamic variables that parameterize a visualization.\\\",\\\"items\\\":{\\\"$ref\\\":\\\"#/definitions/Parameter\\\"},\\\"type\\\":\\\"array\\\"},\\\"repeat\\\":{\\\"$ref\\\":\\\"#/definitions/LayerRepeatMapping\\\",\\\"description\\\":\\\"Definition for fields to be repeated. One of: 1) An array of fields to be repeated. If `\\\\\\\"repeat\\\\\\\"` is an array, the field can be referred to as `{\\\\\\\"repeat\\\\\\\": \\\\\\\"repeat\\\\\\\"}`. The repeated views are laid out in a wrapped row. You can set the number of columns to control the wrapping. 2) An object that maps `\\\\\\\"row\\\\\\\"` and/or `\\\\\\\"column\\\\\\\"` to the listed fields to be repeated along the particular orientations. The objects `{\\\\\\\"repeat\\\\\\\": \\\\\\\"row\\\\\\\"}` and `{\\\\\\\"repeat\\\\\\\": \\\\\\\"column\\\\\\\"}` can be used to refer to the repeated field respectively.\\\"},\\\"resolve\\\":{\\\"$ref\\\":\\\"#/definitions/Resolve\\\",\\\"description\\\":\\\"Scale, axis, and legend resolutions for view composition specifications.\\\"},\\\"spacing\\\":{\\\"anyOf\\\":[{\\\"type\\\":\\\"number\\\"},{\\\"$ref\\\":\\\"#/definitions/RowCol<number>\\\"}],\\\"description\\\":\\\"The spacing in pixels between sub-views of the composition operator. An object of the form `{\\\\\\\"row\\\\\\\": number, \\\\\\\"column\\\\\\\": number}` can be used to set different spacing values for rows and columns.\\\\n\\\\n__Default value__: Depends on `\\\\\\\"spacing\\\\\\\"` property of [the view composition configuration](https://vega.github.io/vega-lite/docs/config.html#view-config) (`20` by default)\\\"},\\\"spec\\\":{\\\"anyOf\\\":[{\\\"$ref\\\":\\\"#/definitions/LayerSpec\\\"},{\\\"$ref\\\":\\\"#/definitions/UnitSpec\\\"}],\\\"description\\\":\\\"A specification of the view that gets repeated.\\\"},\\\"title\\\":{\\\"anyOf\\\":[{\\\"$ref\\\":\\\"#/definitions/Text\\\"},{\\\"$ref\\\":\\\"#/definitions/TitleParams\\\"}],\\\"description\\\":\\\"Title for the plot.\\\"},\\\"transform\\\":{\\\"description\\\":\\\"An array of data transformations such as filter and new field calculation.\\\",\\\"items\\\":{\\\"$ref\\\":\\\"#/definitions/Transform\\\"},\\\"type\\\":\\\"array\\\"},\\\"usermeta\\\":{\\\"$ref\\\":\\\"#/definitions/Dict<unknown>\\\",\\\"description\\\":\\\"Optional metadata that will be passed to Vega. This object is completely ignored by Vega and Vega-Lite and can be used for custom metadata.\\\"}},\\\"required\\\":[\\\"repeat\\\",\\\"spec\\\"],\\\"type\\\":\\\"object\\\"}]},\\\"TopLevelFacetSpec\\\":{\\\"additionalProperties\\\":false,\\\"properties\\\":{\\\"$schema\\\":{\\\"description\\\":\\\"URL to [JSON schema](http://json-schema.org/) for a Vega-Lite specification. Unless you have a reason to change this, use `https://vega.github.io/schema/vega-lite/v4.json`. Setting the `$schema` property allows automatic validation and autocomplete in editors that support JSON schema.\\\",\\\"format\\\":\\\"uri\\\",\\\"type\\\":\\\"string\\\"},\\\"align\\\":{\\\"anyOf\\\":[{\\\"$ref\\\":\\\"#/definitions/LayoutAlign\\\"},{\\\"$ref\\\":\\\"#/definitions/RowCol<LayoutAlign>\\\"}],\\\"description\\\":\\\"The alignment to apply to grid rows and columns. The supported string values are `\\\\\\\"all\\\\\\\"`, `\\\\\\\"each\\\\\\\"`, and `\\\\\\\"none\\\\\\\"`.\\\\n\\\\n- For `\\\\\\\"none\\\\\\\"`, a flow layout will be used, in which adjacent subviews are simply placed one after the other. - For `\\\\\\\"each\\\\\\\"`, subviews will be aligned into a clean grid structure, but each row or column may be of variable size. - For `\\\\\\\"all\\\\\\\"`, subviews will be aligned and each row or column will be sized identically based on the maximum observed size. String values for this property will be applied to both grid rows and columns.\\\\n\\\\nAlternatively, an object value of the form `{\\\\\\\"row\\\\\\\": string, \\\\\\\"column\\\\\\\": string}` can be used to supply different alignments for rows and columns.\\\\n\\\\n__Default value:__ `\\\\\\\"all\\\\\\\"`.\\\"},\\\"autosize\\\":{\\\"anyOf\\\":[{\\\"$ref\\\":\\\"#/definitions/AutosizeType\\\"},{\\\"$ref\\\":\\\"#/definitions/AutoSizeParams\\\"}],\\\"description\\\":\\\"How the visualization size should be determined. If a string, should be one of `\\\\\\\"pad\\\\\\\"`, `\\\\\\\"fit\\\\\\\"` or `\\\\\\\"none\\\\\\\"`. Object values can additionally specify parameters for content sizing and automatic resizing.\\\\n\\\\n__Default value__: `pad`\\\"},\\\"background\\\":{\\\"anyOf\\\":[{\\\"$ref\\\":\\\"#/definitions/Color\\\"},{\\\"$ref\\\":\\\"#/definitions/ExprRef\\\"}],\\\"description\\\":\\\"CSS color property to use as the background of the entire view.\\\\n\\\\n__Default value:__ `\\\\\\\"white\\\\\\\"`\\\"},\\\"bounds\\\":{\\\"description\\\":\\\"The bounds calculation method to use for determining the extent of a sub-plot. One of `full` (the default) or `flush`.\\\\n\\\\n- If set to `full`, the entire calculated bounds (including axes, title, and legend) will be used. - If set to `flush`, only the specified width and height values for the sub-view will be used. The `flush` setting can be useful when attempting to place sub-plots without axes or legends into a uniform grid structure.\\\\n\\\\n__Default value:__ `\\\\\\\"full\\\\\\\"`\\\",\\\"enum\\\":[\\\"full\\\",\\\"flush\\\"],\\\"type\\\":\\\"string\\\"},\\\"center\\\":{\\\"anyOf\\\":[{\\\"type\\\":\\\"boolean\\\"},{\\\"$ref\\\":\\\"#/definitions/RowCol<boolean>\\\"}],\\\"description\\\":\\\"Boolean flag indicating if subviews should be centered relative to their respective rows or columns.\\\\n\\\\nAn object value of the form `{\\\\\\\"row\\\\\\\": boolean, \\\\\\\"column\\\\\\\": boolean}` can be used to supply different centering values for rows and columns.\\\\n\\\\n__Default value:__ `false`\\\"},\\\"columns\\\":{\\\"description\\\":\\\"The number of columns to include in the view composition layout.\\\\n\\\\n__Default value__: `undefined` -- An infinite number of columns (a single row) will be assumed. This is equivalent to `hconcat` (for `concat`) and to using the `column` channel (for `facet` and `repeat`).\\\\n\\\\n__Note__:\\\\n\\\\n1) This property is only for: - the general (wrappable) `concat` operator (not `hconcat`/`vconcat`) - the `facet` and `repeat` operator with one field/repetition definition (without row/column nesting)\\\\n\\\\n2) Setting the `columns` to `1` is equivalent to `vconcat` (for `concat`) and to using the `row` channel (for `facet` and `repeat`).\\\",\\\"type\\\":\\\"number\\\"},\\\"config\\\":{\\\"$ref\\\":\\\"#/definitions/Config\\\",\\\"description\\\":\\\"Vega-Lite configuration object. This property can only be defined at the top-level of a specification.\\\"},\\\"data\\\":{\\\"anyOf\\\":[{\\\"$ref\\\":\\\"#/definitions/Data\\\"},{\\\"type\\\":\\\"null\\\"}],\\\"description\\\":\\\"An object describing the data source. Set to `null` to ignore the parent's data source. If no data is set, it is derived from the parent.\\\"},\\\"datasets\\\":{\\\"$ref\\\":\\\"#/definitions/Datasets\\\",\\\"description\\\":\\\"A global data store for named datasets. This is a mapping from names to inline datasets. This can be an array of objects or primitive values or a string. Arrays of primitive values are ingested as objects with a `data` property.\\\"},\\\"description\\\":{\\\"description\\\":\\\"Description of this mark for commenting purpose.\\\",\\\"type\\\":\\\"string\\\"},\\\"facet\\\":{\\\"anyOf\\\":[{\\\"$ref\\\":\\\"#/definitions/FacetFieldDef\\\"},{\\\"$ref\\\":\\\"#/definitions/FacetMapping\\\"}],\\\"description\\\":\\\"Definition for how to facet the data. One of: 1) [a field definition for faceting the plot by one field](https://vega.github.io/vega-lite/docs/facet.html#field-def) 2) [An object that maps `row` and `column` channels to their field definitions](https://vega.github.io/vega-lite/docs/facet.html#mapping)\\\"},\\\"name\\\":{\\\"description\\\":\\\"Name of the visualization for later reference.\\\",\\\"type\\\":\\\"string\\\"},\\\"padding\\\":{\\\"anyOf\\\":[{\\\"$ref\\\":\\\"#/definitions/Padding\\\"},{\\\"$ref\\\":\\\"#/definitions/ExprRef\\\"}],\\\"description\\\":\\\"The default visualization padding, in pixels, from the edge of the visualization canvas to the data rectangle. If a number, specifies padding for all sides. If an object, the value should have the format `{\\\\\\\"left\\\\\\\": 5, \\\\\\\"top\\\\\\\": 5, \\\\\\\"right\\\\\\\": 5, \\\\\\\"bottom\\\\\\\": 5}` to specify padding for each side of the visualization.\\\\n\\\\n__Default value__: `5`\\\"},\\\"params\\\":{\\\"description\\\":\\\"Dynamic variables that parameterize a visualization.\\\",\\\"items\\\":{\\\"$ref\\\":\\\"#/definitions/Parameter\\\"},\\\"type\\\":\\\"array\\\"},\\\"resolve\\\":{\\\"$ref\\\":\\\"#/definitions/Resolve\\\",\\\"description\\\":\\\"Scale, axis, and legend resolutions for view composition specifications.\\\"},\\\"spacing\\\":{\\\"anyOf\\\":[{\\\"type\\\":\\\"number\\\"},{\\\"$ref\\\":\\\"#/definitions/RowCol<number>\\\"}],\\\"description\\\":\\\"The spacing in pixels between sub-views of the composition operator. An object of the form `{\\\\\\\"row\\\\\\\": number, \\\\\\\"column\\\\\\\": number}` can be used to set different spacing values for rows and columns.\\\\n\\\\n__Default value__: Depends on `\\\\\\\"spacing\\\\\\\"` property of [the view composition configuration](https://vega.github.io/vega-lite/docs/config.html#view-config) (`20` by default)\\\"},\\\"spec\\\":{\\\"anyOf\\\":[{\\\"$ref\\\":\\\"#/definitions/LayerSpec\\\"},{\\\"$ref\\\":\\\"#/definitions/UnitSpecWithFrame\\\"}],\\\"description\\\":\\\"A specification of the view that gets faceted.\\\"},\\\"title\\\":{\\\"anyOf\\\":[{\\\"$ref\\\":\\\"#/definitions/Text\\\"},{\\\"$ref\\\":\\\"#/definitions/TitleParams\\\"}],\\\"description\\\":\\\"Title for the plot.\\\"},\\\"transform\\\":{\\\"description\\\":\\\"An array of data transformations such as filter and new field calculation.\\\",\\\"items\\\":{\\\"$ref\\\":\\\"#/definitions/Transform\\\"},\\\"type\\\":\\\"array\\\"},\\\"usermeta\\\":{\\\"$ref\\\":\\\"#/definitions/Dict<unknown>\\\",\\\"description\\\":\\\"Optional metadata that will be passed to Vega. This object is completely ignored by Vega and Vega-Lite and can be used for custom metadata.\\\"}},\\\"required\\\":[\\\"data\\\",\\\"facet\\\",\\\"spec\\\"],\\\"type\\\":\\\"object\\\"},\\\"TopLevelSpec\\\":{\\\"anyOf\\\":[{\\\"$ref\\\":\\\"#/definitions/TopLevelUnitSpec\\\"},{\\\"$ref\\\":\\\"#/definitions/TopLevelFacetSpec\\\"},{\\\"$ref\\\":\\\"#/definitions/TopLevelLayerSpec\\\"},{\\\"$ref\\\":\\\"#/definitions/TopLevelRepeatSpec\\\"},{\\\"$ref\\\":\\\"#/definitions/TopLevelNormalizedConcatSpec<GenericSpec>\\\"},{\\\"$ref\\\":\\\"#/definitions/TopLevelNormalizedVConcatSpec<GenericSpec>\\\"},{\\\"$ref\\\":\\\"#/definitions/TopLevelNormalizedHConcatSpec<GenericSpec>\\\"}],\\\"description\\\":\\\"A Vega-Lite top-level specification. This is the root class for all Vega-Lite specifications. (The json schema is generated from this type.)\\\"},\\\"TopLevelUnitSpec\\\":{\\\"additionalProperties\\\":false,\\\"properties\\\":{\\\"$schema\\\":{\\\"description\\\":\\\"URL to [JSON schema](http://json-schema.org/) for a Vega-Lite specification. Unless you have a reason to change this, use `https://vega.github.io/schema/vega-lite/v4.json`. Setting the `$schema` property allows automatic validation and autocomplete in editors that support JSON schema.\\\",\\\"format\\\":\\\"uri\\\",\\\"type\\\":\\\"string\\\"},\\\"align\\\":{\\\"anyOf\\\":[{\\\"$ref\\\":\\\"#/definitions/LayoutAlign\\\"},{\\\"$ref\\\":\\\"#/definitions/RowCol<LayoutAlign>\\\"}],\\\"description\\\":\\\"The alignment to apply to grid rows and columns. The supported string values are `\\\\\\\"all\\\\\\\"`, `\\\\\\\"each\\\\\\\"`, and `\\\\\\\"none\\\\\\\"`.\\\\n\\\\n- For `\\\\\\\"none\\\\\\\"`, a flow layout will be used, in which adjacent subviews are simply placed one after the other. - For `\\\\\\\"each\\\\\\\"`, subviews will be aligned into a clean grid structure, but each row or column may be of variable size. - For `\\\\\\\"all\\\\\\\"`, subviews will be aligned and each row or column will be sized identically based on the maximum observed size. String values for this property will be applied to both grid rows and columns.\\\\n\\\\nAlternatively, an object value of the form `{\\\\\\\"row\\\\\\\": string, \\\\\\\"column\\\\\\\": string}` can be used to supply different alignments for rows and columns.\\\\n\\\\n__Default value:__ `\\\\\\\"all\\\\\\\"`.\\\"},\\\"autosize\\\":{\\\"anyOf\\\":[{\\\"$ref\\\":\\\"#/definitions/AutosizeType\\\"},{\\\"$ref\\\":\\\"#/definitions/AutoSizeParams\\\"}],\\\"description\\\":\\\"How the visualization size should be determined. If a string, should be one of `\\\\\\\"pad\\\\\\\"`, `\\\\\\\"fit\\\\\\\"` or `\\\\\\\"none\\\\\\\"`. Object values can additionally specify parameters for content sizing and automatic resizing.\\\\n\\\\n__Default value__: `pad`\\\"},\\\"background\\\":{\\\"anyOf\\\":[{\\\"$ref\\\":\\\"#/definitions/Color\\\"},{\\\"$ref\\\":\\\"#/definitions/ExprRef\\\"}],\\\"description\\\":\\\"CSS color property to use as the background of the entire view.\\\\n\\\\n__Default value:__ `\\\\\\\"white\\\\\\\"`\\\"},\\\"bounds\\\":{\\\"description\\\":\\\"The bounds calculation method to use for determining the extent of a sub-plot. One of `full` (the default) or `flush`.\\\\n\\\\n- If set to `full`, the entire calculated bounds (including axes, title, and legend) will be used. - If set to `flush`, only the specified width and height values for the sub-view will be used. The `flush` setting can be useful when attempting to place sub-plots without axes or legends into a uniform grid structure.\\\\n\\\\n__Default value:__ `\\\\\\\"full\\\\\\\"`\\\",\\\"enum\\\":[\\\"full\\\",\\\"flush\\\"],\\\"type\\\":\\\"string\\\"},\\\"center\\\":{\\\"anyOf\\\":[{\\\"type\\\":\\\"boolean\\\"},{\\\"$ref\\\":\\\"#/definitions/RowCol<boolean>\\\"}],\\\"description\\\":\\\"Boolean flag indicating if subviews should be centered relative to their respective rows or columns.\\\\n\\\\nAn object value of the form `{\\\\\\\"row\\\\\\\": boolean, \\\\\\\"column\\\\\\\": boolean}` can be used to supply different centering values for rows and columns.\\\\n\\\\n__Default value:__ `false`\\\"},\\\"config\\\":{\\\"$ref\\\":\\\"#/definitions/Config\\\",\\\"description\\\":\\\"Vega-Lite configuration object. This property can only be defined at the top-level of a specification.\\\"},\\\"data\\\":{\\\"anyOf\\\":[{\\\"$ref\\\":\\\"#/definitions/Data\\\"},{\\\"type\\\":\\\"null\\\"}],\\\"description\\\":\\\"An object describing the data source. Set to `null` to ignore the parent's data source. If no data is set, it is derived from the parent.\\\"},\\\"datasets\\\":{\\\"$ref\\\":\\\"#/definitions/Datasets\\\",\\\"description\\\":\\\"A global data store for named datasets. This is a mapping from names to inline datasets. This can be an array of objects or primitive values or a string. Arrays of primitive values are ingested as objects with a `data` property.\\\"},\\\"description\\\":{\\\"description\\\":\\\"Description of this mark for commenting purpose.\\\",\\\"type\\\":\\\"string\\\"},\\\"encoding\\\":{\\\"$ref\\\":\\\"#/definitions/FacetedEncoding\\\",\\\"description\\\":\\\"A key-value mapping between encoding channels and definition of fields.\\\"},\\\"height\\\":{\\\"anyOf\\\":[{\\\"type\\\":\\\"number\\\"},{\\\"const\\\":\\\"container\\\",\\\"type\\\":\\\"string\\\"},{\\\"$ref\\\":\\\"#/definitions/Step\\\"}],\\\"description\\\":\\\"The height of a visualization.\\\\n\\\\n- For a plot with a continuous y-field, height should be a number. - For a plot with either a discrete y-field or no y-field, height can be either a number indicating a fixed height or an object in the form of `{step: number}` defining the height per discrete step. (No y-field is equivalent to having one discrete step.) - To enable responsive sizing on height, it should be set to `\\\\\\\"container\\\\\\\"`.\\\\n\\\\n__Default value:__ Based on `config.view.continuousHeight` for a plot with a continuous y-field and `config.view.discreteHeight` otherwise.\\\\n\\\\n__Note:__ For plots with [`row` and `column` channels](https://vega.github.io/vega-lite/docs/encoding.html#facet), this represents the height of a single view and the `\\\\\\\"container\\\\\\\"` option cannot be used.\\\\n\\\\n__See also:__ [`height`](https://vega.github.io/vega-lite/docs/size.html) documentation.\\\"},\\\"mark\\\":{\\\"$ref\\\":\\\"#/definitions/AnyMark\\\",\\\"description\\\":\\\"A string describing the mark type (one of `\\\\\\\"bar\\\\\\\"`, `\\\\\\\"circle\\\\\\\"`, `\\\\\\\"square\\\\\\\"`, `\\\\\\\"tick\\\\\\\"`, `\\\\\\\"line\\\\\\\"`, `\\\\\\\"area\\\\\\\"`, `\\\\\\\"point\\\\\\\"`, `\\\\\\\"rule\\\\\\\"`, `\\\\\\\"geoshape\\\\\\\"`, and `\\\\\\\"text\\\\\\\"`) or a [mark definition object](https://vega.github.io/vega-lite/docs/mark.html#mark-def).\\\"},\\\"name\\\":{\\\"description\\\":\\\"Name of the visualization for later reference.\\\",\\\"type\\\":\\\"string\\\"},\\\"padding\\\":{\\\"anyOf\\\":[{\\\"$ref\\\":\\\"#/definitions/Padding\\\"},{\\\"$ref\\\":\\\"#/definitions/ExprRef\\\"}],\\\"description\\\":\\\"The default visualization padding, in pixels, from the edge of the visualization canvas to the data rectangle. If a number, specifies padding for all sides. If an object, the value should have the format `{\\\\\\\"left\\\\\\\": 5, \\\\\\\"top\\\\\\\": 5, \\\\\\\"right\\\\\\\": 5, \\\\\\\"bottom\\\\\\\": 5}` to specify padding for each side of the visualization.\\\\n\\\\n__Default value__: `5`\\\"},\\\"params\\\":{\\\"description\\\":\\\"Dynamic variables that parameterize a visualization.\\\",\\\"items\\\":{\\\"$ref\\\":\\\"#/definitions/Parameter\\\"},\\\"type\\\":\\\"array\\\"},\\\"projection\\\":{\\\"$ref\\\":\\\"#/definitions/Projection\\\",\\\"description\\\":\\\"An object defining properties of geographic projection, which will be applied to `shape` path for `\\\\\\\"geoshape\\\\\\\"` marks and to `latitude` and `\\\\\\\"longitude\\\\\\\"` channels for other marks.\\\"},\\\"resolve\\\":{\\\"$ref\\\":\\\"#/definitions/Resolve\\\",\\\"description\\\":\\\"Scale, axis, and legend resolutions for view composition specifications.\\\"},\\\"selection\\\":{\\\"additionalProperties\\\":{\\\"$ref\\\":\\\"#/definitions/SelectionDef\\\"},\\\"description\\\":\\\"A key-value mapping between selection names and definitions.\\\",\\\"type\\\":\\\"object\\\"},\\\"spacing\\\":{\\\"anyOf\\\":[{\\\"type\\\":\\\"number\\\"},{\\\"$ref\\\":\\\"#/definitions/RowCol<number>\\\"}],\\\"description\\\":\\\"The spacing in pixels between sub-views of the composition operator. An object of the form `{\\\\\\\"row\\\\\\\": number, \\\\\\\"column\\\\\\\": number}` can be used to set different spacing values for rows and columns.\\\\n\\\\n__Default value__: Depends on `\\\\\\\"spacing\\\\\\\"` property of [the view composition configuration](https://vega.github.io/vega-lite/docs/config.html#view-config) (`20` by default)\\\"},\\\"title\\\":{\\\"anyOf\\\":[{\\\"$ref\\\":\\\"#/definitions/Text\\\"},{\\\"$ref\\\":\\\"#/definitions/TitleParams\\\"}],\\\"description\\\":\\\"Title for the plot.\\\"},\\\"transform\\\":{\\\"description\\\":\\\"An array of data transformations such as filter and new field calculation.\\\",\\\"items\\\":{\\\"$ref\\\":\\\"#/definitions/Transform\\\"},\\\"type\\\":\\\"array\\\"},\\\"usermeta\\\":{\\\"$ref\\\":\\\"#/definitions/Dict<unknown>\\\",\\\"description\\\":\\\"Optional metadata that will be passed to Vega. This object is completely ignored by Vega and Vega-Lite and can be used for custom metadata.\\\"},\\\"view\\\":{\\\"$ref\\\":\\\"#/definitions/ViewBackground\\\",\\\"description\\\":\\\"An object defining the view background's fill and stroke.\\\\n\\\\n__Default value:__ none (transparent)\\\"},\\\"width\\\":{\\\"anyOf\\\":[{\\\"type\\\":\\\"number\\\"},{\\\"const\\\":\\\"container\\\",\\\"type\\\":\\\"string\\\"},{\\\"$ref\\\":\\\"#/definitions/Step\\\"}],\\\"description\\\":\\\"The width of a visualization.\\\\n\\\\n- For a plot with a continuous x-field, width should be a number. - For a plot with either a discrete x-field or no x-field, width can be either a number indicating a fixed width or an object in the form of `{step: number}` defining the width per discrete step. (No x-field is equivalent to having one discrete step.) - To enable responsive sizing on width, it should be set to `\\\\\\\"container\\\\\\\"`.\\\\n\\\\n__Default value:__ Based on `config.view.continuousWidth` for a plot with a continuous x-field and `config.view.discreteWidth` otherwise.\\\\n\\\\n__Note:__ For plots with [`row` and `column` channels](https://vega.github.io/vega-lite/docs/encoding.html#facet), this represents the width of a single view and the `\\\\\\\"container\\\\\\\"` option cannot be used.\\\\n\\\\n__See also:__ [`width`](https://vega.github.io/vega-lite/docs/size.html) documentation.\\\"}},\\\"required\\\":[\\\"data\\\",\\\"mark\\\"],\\\"type\\\":\\\"object\\\"},\\\"TopoDataFormat\\\":{\\\"additionalProperties\\\":false,\\\"properties\\\":{\\\"feature\\\":{\\\"description\\\":\\\"The name of the TopoJSON object set to convert to a GeoJSON feature collection. For example, in a map of the world, there may be an object set named `\\\\\\\"countries\\\\\\\"`. Using the feature property, we can extract this set and generate a GeoJSON feature object for each country.\\\",\\\"type\\\":\\\"string\\\"},\\\"mesh\\\":{\\\"description\\\":\\\"The name of the TopoJSON object set to convert to mesh. Similar to the `feature` option, `mesh` extracts a named TopoJSON object set.   Unlike the `feature` option, the corresponding geo data is returned as a single, unified mesh instance, not as individual GeoJSON features. Extracting a mesh is useful for more efficiently drawing borders or other geographic elements that you do not need to associate with specific regions such as individual countries, states or counties.\\\",\\\"type\\\":\\\"string\\\"},\\\"parse\\\":{\\\"anyOf\\\":[{\\\"$ref\\\":\\\"#/definitions/Parse\\\"},{\\\"type\\\":\\\"null\\\"}],\\\"description\\\":\\\"If set to `null`, disable type inference based on the spec and only use type inference based on the data. Alternatively, a parsing directive object can be provided for explicit data types. Each property of the object corresponds to a field name, and the value to the desired data type (one of `\\\\\\\"number\\\\\\\"`, `\\\\\\\"boolean\\\\\\\"`, `\\\\\\\"date\\\\\\\"`, or null (do not parse the field)). For example, `\\\\\\\"parse\\\\\\\": {\\\\\\\"modified_on\\\\\\\": \\\\\\\"date\\\\\\\"}` parses the `modified_on` field in each input record a Date value.\\\\n\\\\nFor `\\\\\\\"date\\\\\\\"`, we parse data based using Javascript's [`Date.parse()`](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Date/parse). For Specific date formats can be provided (e.g., `{foo: \\\\\\\"date:'%m%d%Y'\\\\\\\"}`), using the [d3-time-format syntax](https://github.com/d3/d3-time-format#locale_format). UTC date format parsing is supported similarly (e.g., `{foo: \\\\\\\"utc:'%m%d%Y'\\\\\\\"}`). See more about [UTC time](https://vega.github.io/vega-lite/docs/timeunit.html#utc)\\\"},\\\"type\\\":{\\\"const\\\":\\\"topojson\\\",\\\"description\\\":\\\"Type of input data: `\\\\\\\"json\\\\\\\"`, `\\\\\\\"csv\\\\\\\"`, `\\\\\\\"tsv\\\\\\\"`, `\\\\\\\"dsv\\\\\\\"`.\\\\n\\\\n__Default value:__  The default format type is determined by the extension of the file URL. If no extension is detected, `\\\\\\\"json\\\\\\\"` will be used by default.\\\",\\\"type\\\":\\\"string\\\"}},\\\"type\\\":\\\"object\\\"},\\\"Transform\\\":{\\\"anyOf\\\":[{\\\"$ref\\\":\\\"#/definitions/AggregateTransform\\\"},{\\\"$ref\\\":\\\"#/definitions/BinTransform\\\"},{\\\"$ref\\\":\\\"#/definitions/CalculateTransform\\\"},{\\\"$ref\\\":\\\"#/definitions/DensityTransform\\\"},{\\\"$ref\\\":\\\"#/definitions/FilterTransform\\\"},{\\\"$ref\\\":\\\"#/definitions/FlattenTransform\\\"},{\\\"$ref\\\":\\\"#/definitions/FoldTransform\\\"},{\\\"$ref\\\":\\\"#/definitions/ImputeTransform\\\"},{\\\"$ref\\\":\\\"#/definitions/JoinAggregateTransform\\\"},{\\\"$ref\\\":\\\"#/definitions/LoessTransform\\\"},{\\\"$ref\\\":\\\"#/definitions/LookupTransform\\\"},{\\\"$ref\\\":\\\"#/definitions/QuantileTransform\\\"},{\\\"$ref\\\":\\\"#/definitions/RegressionTransform\\\"},{\\\"$ref\\\":\\\"#/definitions/TimeUnitTransform\\\"},{\\\"$ref\\\":\\\"#/definitions/SampleTransform\\\"},{\\\"$ref\\\":\\\"#/definitions/StackTransform\\\"},{\\\"$ref\\\":\\\"#/definitions/WindowTransform\\\"},{\\\"$ref\\\":\\\"#/definitions/PivotTransform\\\"}]},\\\"Type\\\":{\\\"description\\\":\\\"Data type based on level of measurement\\\",\\\"enum\\\":[\\\"quantitative\\\",\\\"ordinal\\\",\\\"temporal\\\",\\\"nominal\\\",\\\"geojson\\\"],\\\"type\\\":\\\"string\\\"},\\\"TypeForShape\\\":{\\\"enum\\\":[\\\"nominal\\\",\\\"ordinal\\\",\\\"geojson\\\"],\\\"type\\\":\\\"string\\\"},\\\"TypedFieldDef\\\":{\\\"additionalProperties\\\":false,\\\"description\\\":\\\"Definition object for a data field, its type and transformation of an encoding channel.\\\",\\\"properties\\\":{\\\"aggregate\\\":{\\\"$ref\\\":\\\"#/definitions/Aggregate\\\",\\\"description\\\":\\\"Aggregation function for the field (e.g., `\\\\\\\"mean\\\\\\\"`, `\\\\\\\"sum\\\\\\\"`, `\\\\\\\"median\\\\\\\"`, `\\\\\\\"min\\\\\\\"`, `\\\\\\\"max\\\\\\\"`, `\\\\\\\"count\\\\\\\"`).\\\\n\\\\n__Default value:__ `undefined` (None)\\\\n\\\\n__See also:__ [`aggregate`](https://vega.github.io/vega-lite/docs/aggregate.html) documentation.\\\"},\\\"band\\\":{\\\"description\\\":\\\"For rect-based marks (`rect`, `bar`, and `image`), mark size relative to bandwidth of [band scales](https://vega.github.io/vega-lite/docs/scale.html#band), bins or time units. If set to `1`, the mark size is set to the bandwidth, the bin interval, or the time unit interval. If set to `0.5`, the mark size is half of the bandwidth or the time unit interval.\\\\n\\\\nFor other marks, relative position on a band of a stacked, binned, time unit or band scale. If set to `0`, the marks will be positioned at the beginning of the band. If set to `0.5`, the marks will be positioned in the middle of the band.\\\",\\\"maximum\\\":1,\\\"minimum\\\":0,\\\"type\\\":\\\"number\\\"},\\\"bin\\\":{\\\"anyOf\\\":[{\\\"type\\\":\\\"boolean\\\"},{\\\"$ref\\\":\\\"#/definitions/BinParams\\\"},{\\\"const\\\":\\\"binned\\\",\\\"type\\\":\\\"string\\\"},{\\\"type\\\":\\\"null\\\"}],\\\"description\\\":\\\"A flag for binning a `quantitative` field, [an object defining binning parameters](https://vega.github.io/vega-lite/docs/bin.html#params), or indicating that the data for `x` or `y` channel are binned before they are imported into Vega-Lite (`\\\\\\\"binned\\\\\\\"`).\\\\n\\\\n- If `true`, default [binning parameters](https://vega.github.io/vega-lite/docs/bin.html) will be applied.\\\\n\\\\n- If `\\\\\\\"binned\\\\\\\"`, this indicates that the data for the `x` (or `y`) channel are already binned. You can map the bin-start field to `x` (or `y`) and the bin-end field to `x2` (or `y2`). The scale and axis will be formatted similar to binning in Vega-Lite.  To adjust the axis ticks based on the bin step, you can also set the axis's [`tickMinStep`](https://vega.github.io/vega-lite/docs/axis.html#ticks) property.\\\\n\\\\n__Default value:__ `false`\\\\n\\\\n__See also:__ [`bin`](https://vega.github.io/vega-lite/docs/bin.html) documentation.\\\"},\\\"field\\\":{\\\"$ref\\\":\\\"#/definitions/Field\\\",\\\"description\\\":\\\"__Required.__ A string defining the name of the field from which to pull a data value or an object defining iterated values from the [`repeat`](https://vega.github.io/vega-lite/docs/repeat.html) operator.\\\\n\\\\n__See also:__ [`field`](https://vega.github.io/vega-lite/docs/field.html) documentation.\\\\n\\\\n__Notes:__ 1)  Dots (`.`) and brackets (`[` and `]`) can be used to access nested objects (e.g., `\\\\\\\"field\\\\\\\": \\\\\\\"foo.bar\\\\\\\"` and `\\\\\\\"field\\\\\\\": \\\\\\\"foo['bar']\\\\\\\"`). If field names contain dots or brackets but are not nested, you can use `\\\\\\\\\\\\\\\\` to escape dots and brackets (e.g., `\\\\\\\"a\\\\\\\\\\\\\\\\.b\\\\\\\"` and `\\\\\\\"a\\\\\\\\\\\\\\\\[0\\\\\\\\\\\\\\\\]\\\\\\\"`). See more details about escaping in the [field documentation](https://vega.github.io/vega-lite/docs/field.html). 2) `field` is not required if `aggregate` is `count`.\\\"},\\\"timeUnit\\\":{\\\"anyOf\\\":[{\\\"$ref\\\":\\\"#/definitions/TimeUnit\\\"},{\\\"$ref\\\":\\\"#/definitions/TimeUnitParams\\\"}],\\\"description\\\":\\\"Time unit (e.g., `year`, `yearmonth`, `month`, `hours`) for a temporal field. or [a temporal field that gets casted as ordinal](https://vega.github.io/vega-lite/docs/type.html#cast).\\\\n\\\\n__Default value:__ `undefined` (None)\\\\n\\\\n__See also:__ [`timeUnit`](https://vega.github.io/vega-lite/docs/timeunit.html) documentation.\\\"},\\\"title\\\":{\\\"anyOf\\\":[{\\\"$ref\\\":\\\"#/definitions/Text\\\"},{\\\"type\\\":\\\"null\\\"}],\\\"description\\\":\\\"A title for the field. If `null`, the title will be removed.\\\\n\\\\n__Default value:__  derived from the field's name and transformation function (`aggregate`, `bin` and `timeUnit`). If the field has an aggregate function, the function is displayed as part of the title (e.g., `\\\\\\\"Sum of Profit\\\\\\\"`). If the field is binned or has a time unit applied, the applied function is shown in parentheses (e.g., `\\\\\\\"Profit (binned)\\\\\\\"`, `\\\\\\\"Transaction Date (year-month)\\\\\\\"`). Otherwise, the title is simply the field name.\\\\n\\\\n__Notes__:\\\\n\\\\n1) You can customize the default field title format by providing the [`fieldTitle`](https://vega.github.io/vega-lite/docs/config.html#top-level-config) property in the [config](https://vega.github.io/vega-lite/docs/config.html) or [`fieldTitle` function via the `compile` function's options](https://vega.github.io/vega-lite/docs/compile.html#field-title).\\\\n\\\\n2) If both field definition's `title` and axis, header, or legend `title` are defined, axis/header/legend title will be used.\\\"},\\\"type\\\":{\\\"$ref\\\":\\\"#/definitions/StandardType\\\",\\\"description\\\":\\\"The type of measurement (`\\\\\\\"quantitative\\\\\\\"`, `\\\\\\\"temporal\\\\\\\"`, `\\\\\\\"ordinal\\\\\\\"`, or `\\\\\\\"nominal\\\\\\\"`) for the encoded field or constant value (`datum`). It can also be a `\\\\\\\"geojson\\\\\\\"` type for encoding ['geoshape'](https://vega.github.io/vega-lite/docs/geoshape.html).\\\\n\\\\nVega-Lite automatically infers data types in many cases as discussed below. However, type is required for a field if: (1) the field is not nominal and the field encoding has no specified `aggregate` (except `argmin` and `argmax`), `bin`, scale type, custom `sort` order, nor `timeUnit` or (2) if you wish to use an ordinal scale for a field with `bin` or `timeUnit`.\\\\n\\\\n__Default value:__\\\\n\\\\n1) For a data `field`, `\\\\\\\"nominal\\\\\\\"` is the default data type unless the field encoding has `aggregate`, `channel`, `bin`, scale type, `sort`, or `timeUnit` that satisfies the following criteria: - `\\\\\\\"quantitative\\\\\\\"` is the default type if (1) the encoded field contains `bin` or `aggregate` except `\\\\\\\"argmin\\\\\\\"` and `\\\\\\\"argmax\\\\\\\"`, (2) the encoding channel is `latitude` or `longitude` channel or (3) if the specified scale type is [a quantitative scale](https://vega.github.io/vega-lite/docs/scale.html#type). - `\\\\\\\"temporal\\\\\\\"` is the default type if (1) the encoded field contains `timeUnit` or (2) the specified scale type is a time or utc scale - `ordinal\\\\\\\"\\\\\\\"` is the default type if (1) the encoded field contains a [custom `sort` order](https://vega.github.io/vega-lite/docs/sort.html#specifying-custom-sort-order), (2) the specified scale type is an ordinal/point/band scale, or (3) the encoding channel is `order`.\\\\n\\\\n2) For a constant value in data domain (`datum`): - `\\\\\\\"quantitative\\\\\\\"` if the datum is a number - `\\\\\\\"nominal\\\\\\\"` if the datum is a string - `\\\\\\\"temporal\\\\\\\"` if the datum is [a date time object](https://vega.github.io/vega-lite/docs/datetime.html)\\\\n\\\\n__Note:__ - Data `type` describes the semantics of the data rather than the primitive data types (number, string, etc.). The same primitive data type can have different types of measurement. For example, numeric data can represent quantitative, ordinal, or nominal data. - Data values for a temporal field can be either a date-time string (e.g., `\\\\\\\"2015-03-07 12:32:17\\\\\\\"`, `\\\\\\\"17:01\\\\\\\"`, `\\\\\\\"2015-03-16\\\\\\\"`. `\\\\\\\"2015\\\\\\\"`) or a timestamp number (e.g., `1552199579097`). - When using with [`bin`](https://vega.github.io/vega-lite/docs/bin.html), the `type` property can be either `\\\\\\\"quantitative\\\\\\\"` (for using a linear bin scale) or [`\\\\\\\"ordinal\\\\\\\"` (for using an ordinal bin scale)](https://vega.github.io/vega-lite/docs/type.html#cast-bin). - When using with [`timeUnit`](https://vega.github.io/vega-lite/docs/timeunit.html), the `type` property can be either `\\\\\\\"temporal\\\\\\\"` (default, for using a temporal scale) or [`\\\\\\\"ordinal\\\\\\\"` (for using an ordinal scale)](https://vega.github.io/vega-lite/docs/type.html#cast-bin). - When using with [`aggregate`](https://vega.github.io/vega-lite/docs/aggregate.html), the `type` property refers to the post-aggregation data type. For example, we can calculate count `distinct` of a categorical field `\\\\\\\"cat\\\\\\\"` using `{\\\\\\\"aggregate\\\\\\\": \\\\\\\"distinct\\\\\\\", \\\\\\\"field\\\\\\\": \\\\\\\"cat\\\\\\\"}`. The `\\\\\\\"type\\\\\\\"` of the aggregate output is `\\\\\\\"quantitative\\\\\\\"`. - Secondary channels (e.g., `x2`, `y2`, `xError`, `yError`) do not have `type` as they must have exactly the same type as their primary channels (e.g., `x`, `y`).\\\\n\\\\n__See also:__ [`type`](https://vega.github.io/vega-lite/docs/type.html) documentation.\\\"}},\\\"type\\\":\\\"object\\\"},\\\"URI\\\":{\\\"format\\\":\\\"uri-reference\\\",\\\"type\\\":\\\"string\\\"},\\\"UnitSpec\\\":{\\\"additionalProperties\\\":false,\\\"description\\\":\\\"A unit specification, which can contain either [primitive marks or composite marks](https://vega.github.io/vega-lite/docs/mark.html#types).\\\",\\\"properties\\\":{\\\"data\\\":{\\\"anyOf\\\":[{\\\"$ref\\\":\\\"#/definitions/Data\\\"},{\\\"type\\\":\\\"null\\\"}],\\\"description\\\":\\\"An object describing the data source. Set to `null` to ignore the parent's data source. If no data is set, it is derived from the parent.\\\"},\\\"description\\\":{\\\"description\\\":\\\"Description of this mark for commenting purpose.\\\",\\\"type\\\":\\\"string\\\"},\\\"encoding\\\":{\\\"$ref\\\":\\\"#/definitions/Encoding\\\",\\\"description\\\":\\\"A key-value mapping between encoding channels and definition of fields.\\\"},\\\"height\\\":{\\\"anyOf\\\":[{\\\"type\\\":\\\"number\\\"},{\\\"const\\\":\\\"container\\\",\\\"type\\\":\\\"string\\\"},{\\\"$ref\\\":\\\"#/definitions/Step\\\"}],\\\"description\\\":\\\"__Deprecated:__ Please avoid using width in a unit spec that's a part of a layer spec.\\\"},\\\"mark\\\":{\\\"$ref\\\":\\\"#/definitions/AnyMark\\\",\\\"description\\\":\\\"A string describing the mark type (one of `\\\\\\\"bar\\\\\\\"`, `\\\\\\\"circle\\\\\\\"`, `\\\\\\\"square\\\\\\\"`, `\\\\\\\"tick\\\\\\\"`, `\\\\\\\"line\\\\\\\"`, `\\\\\\\"area\\\\\\\"`, `\\\\\\\"point\\\\\\\"`, `\\\\\\\"rule\\\\\\\"`, `\\\\\\\"geoshape\\\\\\\"`, and `\\\\\\\"text\\\\\\\"`) or a [mark definition object](https://vega.github.io/vega-lite/docs/mark.html#mark-def).\\\"},\\\"name\\\":{\\\"description\\\":\\\"Name of the visualization for later reference.\\\",\\\"type\\\":\\\"string\\\"},\\\"projection\\\":{\\\"$ref\\\":\\\"#/definitions/Projection\\\",\\\"description\\\":\\\"An object defining properties of geographic projection, which will be applied to `shape` path for `\\\\\\\"geoshape\\\\\\\"` marks and to `latitude` and `\\\\\\\"longitude\\\\\\\"` channels for other marks.\\\"},\\\"selection\\\":{\\\"additionalProperties\\\":{\\\"$ref\\\":\\\"#/definitions/SelectionDef\\\"},\\\"description\\\":\\\"A key-value mapping between selection names and definitions.\\\",\\\"type\\\":\\\"object\\\"},\\\"title\\\":{\\\"anyOf\\\":[{\\\"$ref\\\":\\\"#/definitions/Text\\\"},{\\\"$ref\\\":\\\"#/definitions/TitleParams\\\"}],\\\"description\\\":\\\"Title for the plot.\\\"},\\\"transform\\\":{\\\"description\\\":\\\"An array of data transformations such as filter and new field calculation.\\\",\\\"items\\\":{\\\"$ref\\\":\\\"#/definitions/Transform\\\"},\\\"type\\\":\\\"array\\\"},\\\"view\\\":{\\\"$ref\\\":\\\"#/definitions/ViewBackground\\\",\\\"description\\\":\\\"__Deprecated:__ Please avoid using width in a unit spec that's a part of a layer spec.\\\"},\\\"width\\\":{\\\"anyOf\\\":[{\\\"type\\\":\\\"number\\\"},{\\\"const\\\":\\\"container\\\",\\\"type\\\":\\\"string\\\"},{\\\"$ref\\\":\\\"#/definitions/Step\\\"}],\\\"description\\\":\\\"__Deprecated:__ Please avoid using width in a unit spec that's a part of a layer spec.\\\"}},\\\"required\\\":[\\\"mark\\\"],\\\"type\\\":\\\"object\\\"},\\\"UnitSpecWithFrame\\\":{\\\"additionalProperties\\\":false,\\\"properties\\\":{\\\"data\\\":{\\\"anyOf\\\":[{\\\"$ref\\\":\\\"#/definitions/Data\\\"},{\\\"type\\\":\\\"null\\\"}],\\\"description\\\":\\\"An object describing the data source. Set to `null` to ignore the parent's data source. If no data is set, it is derived from the parent.\\\"},\\\"description\\\":{\\\"description\\\":\\\"Description of this mark for commenting purpose.\\\",\\\"type\\\":\\\"string\\\"},\\\"encoding\\\":{\\\"$ref\\\":\\\"#/definitions/Encoding\\\",\\\"description\\\":\\\"A key-value mapping between encoding channels and definition of fields.\\\"},\\\"height\\\":{\\\"anyOf\\\":[{\\\"type\\\":\\\"number\\\"},{\\\"const\\\":\\\"container\\\",\\\"type\\\":\\\"string\\\"},{\\\"$ref\\\":\\\"#/definitions/Step\\\"}],\\\"description\\\":\\\"The height of a visualization.\\\\n\\\\n- For a plot with a continuous y-field, height should be a number. - For a plot with either a discrete y-field or no y-field, height can be either a number indicating a fixed height or an object in the form of `{step: number}` defining the height per discrete step. (No y-field is equivalent to having one discrete step.) - To enable responsive sizing on height, it should be set to `\\\\\\\"container\\\\\\\"`.\\\\n\\\\n__Default value:__ Based on `config.view.continuousHeight` for a plot with a continuous y-field and `config.view.discreteHeight` otherwise.\\\\n\\\\n__Note:__ For plots with [`row` and `column` channels](https://vega.github.io/vega-lite/docs/encoding.html#facet), this represents the height of a single view and the `\\\\\\\"container\\\\\\\"` option cannot be used.\\\\n\\\\n__See also:__ [`height`](https://vega.github.io/vega-lite/docs/size.html) documentation.\\\"},\\\"mark\\\":{\\\"$ref\\\":\\\"#/definitions/AnyMark\\\",\\\"description\\\":\\\"A string describing the mark type (one of `\\\\\\\"bar\\\\\\\"`, `\\\\\\\"circle\\\\\\\"`, `\\\\\\\"square\\\\\\\"`, `\\\\\\\"tick\\\\\\\"`, `\\\\\\\"line\\\\\\\"`, `\\\\\\\"area\\\\\\\"`, `\\\\\\\"point\\\\\\\"`, `\\\\\\\"rule\\\\\\\"`, `\\\\\\\"geoshape\\\\\\\"`, and `\\\\\\\"text\\\\\\\"`) or a [mark definition object](https://vega.github.io/vega-lite/docs/mark.html#mark-def).\\\"},\\\"name\\\":{\\\"description\\\":\\\"Name of the visualization for later reference.\\\",\\\"type\\\":\\\"string\\\"},\\\"projection\\\":{\\\"$ref\\\":\\\"#/definitions/Projection\\\",\\\"description\\\":\\\"An object defining properties of geographic projection, which will be applied to `shape` path for `\\\\\\\"geoshape\\\\\\\"` marks and to `latitude` and `\\\\\\\"longitude\\\\\\\"` channels for other marks.\\\"},\\\"selection\\\":{\\\"additionalProperties\\\":{\\\"$ref\\\":\\\"#/definitions/SelectionDef\\\"},\\\"description\\\":\\\"A key-value mapping between selection names and definitions.\\\",\\\"type\\\":\\\"object\\\"},\\\"title\\\":{\\\"anyOf\\\":[{\\\"$ref\\\":\\\"#/definitions/Text\\\"},{\\\"$ref\\\":\\\"#/definitions/TitleParams\\\"}],\\\"description\\\":\\\"Title for the plot.\\\"},\\\"transform\\\":{\\\"description\\\":\\\"An array of data transformations such as filter and new field calculation.\\\",\\\"items\\\":{\\\"$ref\\\":\\\"#/definitions/Transform\\\"},\\\"type\\\":\\\"array\\\"},\\\"view\\\":{\\\"$ref\\\":\\\"#/definitions/ViewBackground\\\",\\\"description\\\":\\\"An object defining the view background's fill and stroke.\\\\n\\\\n__Default value:__ none (transparent)\\\"},\\\"width\\\":{\\\"anyOf\\\":[{\\\"type\\\":\\\"number\\\"},{\\\"const\\\":\\\"container\\\",\\\"type\\\":\\\"string\\\"},{\\\"$ref\\\":\\\"#/definitions/Step\\\"}],\\\"description\\\":\\\"The width of a visualization.\\\\n\\\\n- For a plot with a continuous x-field, width should be a number. - For a plot with either a discrete x-field or no x-field, width can be either a number indicating a fixed width or an object in the form of `{step: number}` defining the width per discrete step. (No x-field is equivalent to having one discrete step.) - To enable responsive sizing on width, it should be set to `\\\\\\\"container\\\\\\\"`.\\\\n\\\\n__Default value:__ Based on `config.view.continuousWidth` for a plot with a continuous x-field and `config.view.discreteWidth` otherwise.\\\\n\\\\n__Note:__ For plots with [`row` and `column` channels](https://vega.github.io/vega-lite/docs/encoding.html#facet), this represents the width of a single view and the `\\\\\\\"container\\\\\\\"` option cannot be used.\\\\n\\\\n__See also:__ [`width`](https://vega.github.io/vega-lite/docs/size.html) documentation.\\\"}},\\\"required\\\":[\\\"mark\\\"],\\\"type\\\":\\\"object\\\"},\\\"UrlData\\\":{\\\"additionalProperties\\\":false,\\\"properties\\\":{\\\"format\\\":{\\\"$ref\\\":\\\"#/definitions/DataFormat\\\",\\\"description\\\":\\\"An object that specifies the format for parsing the data.\\\"},\\\"name\\\":{\\\"description\\\":\\\"Provide a placeholder name and bind data at runtime.\\\",\\\"type\\\":\\\"string\\\"},\\\"url\\\":{\\\"description\\\":\\\"An URL from which to load the data set. Use the `format.type` property to ensure the loaded data is correctly parsed.\\\",\\\"type\\\":\\\"string\\\"}},\\\"required\\\":[\\\"url\\\"],\\\"type\\\":\\\"object\\\"},\\\"UtcMultiTimeUnit\\\":{\\\"enum\\\":[\\\"utcyearquarter\\\",\\\"utcyearquartermonth\\\",\\\"utcyearmonth\\\",\\\"utcyearmonthdate\\\",\\\"utcyearmonthdatehours\\\",\\\"utcyearmonthdatehoursminutes\\\",\\\"utcyearmonthdatehoursminutesseconds\\\",\\\"utcyearweek\\\",\\\"utcyearweekday\\\",\\\"utcyearweekdayhours\\\",\\\"utcyearweekdayhoursminutes\\\",\\\"utcyearweekdayhoursminutesseconds\\\",\\\"utcyeardayofyear\\\",\\\"utcquartermonth\\\",\\\"utcmonthdate\\\",\\\"utcmonthdatehours\\\",\\\"utcmonthdatehoursminutes\\\",\\\"utcmonthdatehoursminutesseconds\\\",\\\"utcweekday\\\",\\\"utcweeksdayhours\\\",\\\"utcweekdayhoursminutes\\\",\\\"utcweekdayhoursminutesseconds\\\",\\\"utcdayhours\\\",\\\"utcdayhoursminutes\\\",\\\"utcdayhoursminutesseconds\\\",\\\"utchoursminutes\\\",\\\"utchoursminutesseconds\\\",\\\"utcminutesseconds\\\",\\\"utcsecondsmilliseconds\\\"],\\\"type\\\":\\\"string\\\"},\\\"UtcSingleTimeUnit\\\":{\\\"enum\\\":[\\\"utcyear\\\",\\\"utcquarter\\\",\\\"utcmonth\\\",\\\"utcweek\\\",\\\"utcday\\\",\\\"utcdayofyear\\\",\\\"utcdate\\\",\\\"utchours\\\",\\\"utcminutes\\\",\\\"utcseconds\\\",\\\"utcmilliseconds\\\"],\\\"type\\\":\\\"string\\\"},\\\"ValueDef<(number|\\\\\\\"width\\\\\\\"|\\\\\\\"height\\\\\\\"|ExprRef)>\\\":{\\\"additionalProperties\\\":false,\\\"description\\\":\\\"Definition object for a constant value (primitive value or gradient definition) of an encoding channel.\\\",\\\"properties\\\":{\\\"value\\\":{\\\"anyOf\\\":[{\\\"type\\\":\\\"number\\\"},{\\\"const\\\":\\\"width\\\",\\\"type\\\":\\\"string\\\"},{\\\"const\\\":\\\"height\\\",\\\"type\\\":\\\"string\\\"},{\\\"$ref\\\":\\\"#/definitions/ExprRef\\\"}],\\\"description\\\":\\\"A constant value in visual domain (e.g., `\\\\\\\"red\\\\\\\"` / `\\\\\\\"#0099ff\\\\\\\"` / [gradient definition](https://vega.github.io/vega-lite/docs/types.html#gradient) for color, values between `0` to `1` for opacity).\\\"}},\\\"required\\\":[\\\"value\\\"],\\\"type\\\":\\\"object\\\"},\\\"ValueDef<(number|ExprRef)>\\\":{\\\"additionalProperties\\\":false,\\\"description\\\":\\\"Definition object for a constant value (primitive value or gradient definition) of an encoding channel.\\\",\\\"properties\\\":{\\\"value\\\":{\\\"anyOf\\\":[{\\\"type\\\":\\\"number\\\"},{\\\"$ref\\\":\\\"#/definitions/ExprRef\\\"}],\\\"description\\\":\\\"A constant value in visual domain (e.g., `\\\\\\\"red\\\\\\\"` / `\\\\\\\"#0099ff\\\\\\\"` / [gradient definition](https://vega.github.io/vega-lite/docs/types.html#gradient) for color, values between `0` to `1` for opacity).\\\"}},\\\"required\\\":[\\\"value\\\"],\\\"type\\\":\\\"object\\\"},\\\"ValueDef<number>\\\":{\\\"additionalProperties\\\":false,\\\"description\\\":\\\"Definition object for a constant value (primitive value or gradient definition) of an encoding channel.\\\",\\\"properties\\\":{\\\"value\\\":{\\\"description\\\":\\\"A constant value in visual domain (e.g., `\\\\\\\"red\\\\\\\"` / `\\\\\\\"#0099ff\\\\\\\"` / [gradient definition](https://vega.github.io/vega-lite/docs/types.html#gradient) for color, values between `0` to `1` for opacity).\\\",\\\"type\\\":\\\"number\\\"}},\\\"required\\\":[\\\"value\\\"],\\\"type\\\":\\\"object\\\"},\\\"ValueDefWithCondition<MarkPropFieldOrDatumDef,(Gradient|string|null)>\\\":{\\\"additionalProperties\\\":false,\\\"minProperties\\\":1,\\\"properties\\\":{\\\"condition\\\":{\\\"anyOf\\\":[{\\\"$ref\\\":\\\"#/definitions/ConditionalMarkPropFieldOrDatumDef\\\"},{\\\"$ref\\\":\\\"#/definitions/ConditionalValueDef<(Gradient|string|null|ExprRef)>\\\"},{\\\"items\\\":{\\\"$ref\\\":\\\"#/definitions/ConditionalValueDef<(Gradient|string|null|ExprRef)>\\\"},\\\"type\\\":\\\"array\\\"}],\\\"description\\\":\\\"A field definition or one or more value definition(s) with a selection predicate.\\\"},\\\"value\\\":{\\\"anyOf\\\":[{\\\"$ref\\\":\\\"#/definitions/Gradient\\\"},{\\\"type\\\":\\\"string\\\"},{\\\"type\\\":\\\"null\\\"},{\\\"$ref\\\":\\\"#/definitions/ExprRef\\\"}],\\\"description\\\":\\\"A constant value in visual domain (e.g., `\\\\\\\"red\\\\\\\"` / `\\\\\\\"#0099ff\\\\\\\"` / [gradient definition](https://vega.github.io/vega-lite/docs/types.html#gradient) for color, values between `0` to `1` for opacity).\\\"}},\\\"type\\\":\\\"object\\\"},\\\"ValueDefWithCondition<MarkPropFieldOrDatumDef,(string|null)>\\\":{\\\"additionalProperties\\\":false,\\\"minProperties\\\":1,\\\"properties\\\":{\\\"condition\\\":{\\\"anyOf\\\":[{\\\"$ref\\\":\\\"#/definitions/ConditionalMarkPropFieldOrDatumDef\\\"},{\\\"$ref\\\":\\\"#/definitions/ConditionalValueDef<(string|null|ExprRef)>\\\"},{\\\"items\\\":{\\\"$ref\\\":\\\"#/definitions/ConditionalValueDef<(string|null|ExprRef)>\\\"},\\\"type\\\":\\\"array\\\"}],\\\"description\\\":\\\"A field definition or one or more value definition(s) with a selection predicate.\\\"},\\\"value\\\":{\\\"anyOf\\\":[{\\\"type\\\":\\\"string\\\"},{\\\"type\\\":\\\"null\\\"},{\\\"$ref\\\":\\\"#/definitions/ExprRef\\\"}],\\\"description\\\":\\\"A constant value in visual domain (e.g., `\\\\\\\"red\\\\\\\"` / `\\\\\\\"#0099ff\\\\\\\"` / [gradient definition](https://vega.github.io/vega-lite/docs/types.html#gradient) for color, values between `0` to `1` for opacity).\\\"}},\\\"type\\\":\\\"object\\\"},\\\"ValueDefWithCondition<MarkPropFieldOrDatumDef,number>\\\":{\\\"additionalProperties\\\":false,\\\"minProperties\\\":1,\\\"properties\\\":{\\\"condition\\\":{\\\"anyOf\\\":[{\\\"$ref\\\":\\\"#/definitions/ConditionalMarkPropFieldOrDatumDef\\\"},{\\\"$ref\\\":\\\"#/definitions/ConditionalValueDef<(number|ExprRef)>\\\"},{\\\"items\\\":{\\\"$ref\\\":\\\"#/definitions/ConditionalValueDef<(number|ExprRef)>\\\"},\\\"type\\\":\\\"array\\\"}],\\\"description\\\":\\\"A field definition or one or more value definition(s) with a selection predicate.\\\"},\\\"value\\\":{\\\"anyOf\\\":[{\\\"type\\\":\\\"number\\\"},{\\\"$ref\\\":\\\"#/definitions/ExprRef\\\"}],\\\"description\\\":\\\"A constant value in visual domain (e.g., `\\\\\\\"red\\\\\\\"` / `\\\\\\\"#0099ff\\\\\\\"` / [gradient definition](https://vega.github.io/vega-lite/docs/types.html#gradient) for color, values between `0` to `1` for opacity).\\\"}},\\\"type\\\":\\\"object\\\"},\\\"ValueDefWithCondition<MarkPropFieldOrDatumDef,number[]>\\\":{\\\"additionalProperties\\\":false,\\\"minProperties\\\":1,\\\"properties\\\":{\\\"condition\\\":{\\\"anyOf\\\":[{\\\"$ref\\\":\\\"#/definitions/ConditionalMarkPropFieldOrDatumDef\\\"},{\\\"$ref\\\":\\\"#/definitions/ConditionalValueDef<(number[]|ExprRef)>\\\"},{\\\"items\\\":{\\\"$ref\\\":\\\"#/definitions/ConditionalValueDef<(number[]|ExprRef)>\\\"},\\\"type\\\":\\\"array\\\"}],\\\"description\\\":\\\"A field definition or one or more value definition(s) with a selection predicate.\\\"},\\\"value\\\":{\\\"anyOf\\\":[{\\\"items\\\":{\\\"type\\\":\\\"number\\\"},\\\"type\\\":\\\"array\\\"},{\\\"$ref\\\":\\\"#/definitions/ExprRef\\\"}],\\\"description\\\":\\\"A constant value in visual domain (e.g., `\\\\\\\"red\\\\\\\"` / `\\\\\\\"#0099ff\\\\\\\"` / [gradient definition](https://vega.github.io/vega-lite/docs/types.html#gradient) for color, values between `0` to `1` for opacity).\\\"}},\\\"type\\\":\\\"object\\\"},\\\"ValueDefWithCondition<MarkPropFieldOrDatumDef<TypeForShape>,(string|null)>\\\":{\\\"additionalProperties\\\":false,\\\"minProperties\\\":1,\\\"properties\\\":{\\\"condition\\\":{\\\"anyOf\\\":[{\\\"$ref\\\":\\\"#/definitions/ConditionalMarkPropFieldOrDatumDef<TypeForShape>\\\"},{\\\"$ref\\\":\\\"#/definitions/ConditionalValueDef<(string|null|ExprRef)>\\\"},{\\\"items\\\":{\\\"$ref\\\":\\\"#/definitions/ConditionalValueDef<(string|null|ExprRef)>\\\"},\\\"type\\\":\\\"array\\\"}],\\\"description\\\":\\\"A field definition or one or more value definition(s) with a selection predicate.\\\"},\\\"value\\\":{\\\"anyOf\\\":[{\\\"type\\\":\\\"string\\\"},{\\\"type\\\":\\\"null\\\"},{\\\"$ref\\\":\\\"#/definitions/ExprRef\\\"}],\\\"description\\\":\\\"A constant value in visual domain (e.g., `\\\\\\\"red\\\\\\\"` / `\\\\\\\"#0099ff\\\\\\\"` / [gradient definition](https://vega.github.io/vega-lite/docs/types.html#gradient) for color, values between `0` to `1` for opacity).\\\"}},\\\"type\\\":\\\"object\\\"},\\\"ValueDefWithCondition<StringFieldDef,Text>\\\":{\\\"additionalProperties\\\":false,\\\"minProperties\\\":1,\\\"properties\\\":{\\\"condition\\\":{\\\"anyOf\\\":[{\\\"$ref\\\":\\\"#/definitions/ConditionalStringFieldDef\\\"},{\\\"$ref\\\":\\\"#/definitions/ConditionalValueDef<(Text|ExprRef)>\\\"},{\\\"items\\\":{\\\"$ref\\\":\\\"#/definitions/ConditionalValueDef<(Text|ExprRef)>\\\"},\\\"type\\\":\\\"array\\\"}],\\\"description\\\":\\\"A field definition or one or more value definition(s) with a selection predicate.\\\"},\\\"value\\\":{\\\"anyOf\\\":[{\\\"$ref\\\":\\\"#/definitions/Text\\\"},{\\\"$ref\\\":\\\"#/definitions/ExprRef\\\"}],\\\"description\\\":\\\"A constant value in visual domain (e.g., `\\\\\\\"red\\\\\\\"` / `\\\\\\\"#0099ff\\\\\\\"` / [gradient definition](https://vega.github.io/vega-lite/docs/types.html#gradient) for color, values between `0` to `1` for opacity).\\\"}},\\\"type\\\":\\\"object\\\"},\\\"Vector2<DateTime>\\\":{\\\"items\\\":[{\\\"$ref\\\":\\\"#/definitions/DateTime\\\"},{\\\"$ref\\\":\\\"#/definitions/DateTime\\\"}],\\\"maxItems\\\":2,\\\"minItems\\\":2,\\\"type\\\":\\\"array\\\"},\\\"Vector2<Vector2<number>>\\\":{\\\"items\\\":[{\\\"$ref\\\":\\\"#/definitions/Vector2<number>\\\"},{\\\"$ref\\\":\\\"#/definitions/Vector2<number>\\\"}],\\\"maxItems\\\":2,\\\"minItems\\\":2,\\\"type\\\":\\\"array\\\"},\\\"Vector2<boolean>\\\":{\\\"items\\\":[{\\\"type\\\":\\\"boolean\\\"},{\\\"type\\\":\\\"boolean\\\"}],\\\"maxItems\\\":2,\\\"minItems\\\":2,\\\"type\\\":\\\"array\\\"},\\\"Vector2<number>\\\":{\\\"items\\\":[{\\\"type\\\":\\\"number\\\"},{\\\"type\\\":\\\"number\\\"}],\\\"maxItems\\\":2,\\\"minItems\\\":2,\\\"type\\\":\\\"array\\\"},\\\"Vector2<string>\\\":{\\\"items\\\":[{\\\"type\\\":\\\"string\\\"},{\\\"type\\\":\\\"string\\\"}],\\\"maxItems\\\":2,\\\"minItems\\\":2,\\\"type\\\":\\\"array\\\"},\\\"Vector3<number>\\\":{\\\"items\\\":[{\\\"type\\\":\\\"number\\\"},{\\\"type\\\":\\\"number\\\"},{\\\"type\\\":\\\"number\\\"}],\\\"maxItems\\\":3,\\\"minItems\\\":3,\\\"type\\\":\\\"array\\\"},\\\"ViewBackground\\\":{\\\"additionalProperties\\\":false,\\\"properties\\\":{\\\"cornerRadius\\\":{\\\"anyOf\\\":[{\\\"description\\\":\\\"The radius in pixels of rounded rectangles or arcs' corners.\\\\n\\\\n__Default value:__ `0`\\\",\\\"type\\\":\\\"number\\\"},{\\\"$ref\\\":\\\"#/definitions/ExprRef\\\"}]},\\\"cursor\\\":{\\\"$ref\\\":\\\"#/definitions/Cursor\\\",\\\"description\\\":\\\"The mouse cursor used over the view. Any valid [CSS cursor type](https://developer.mozilla.org/en-US/docs/Web/CSS/cursor#Values) can be used.\\\"},\\\"fill\\\":{\\\"anyOf\\\":[{\\\"$ref\\\":\\\"#/definitions/Color\\\"},{\\\"type\\\":\\\"null\\\"},{\\\"$ref\\\":\\\"#/definitions/ExprRef\\\"}],\\\"description\\\":\\\"The fill color.\\\\n\\\\n__Default value:__ `undefined`\\\"},\\\"fillOpacity\\\":{\\\"anyOf\\\":[{\\\"description\\\":\\\"The fill opacity (value between [0,1]).\\\\n\\\\n__Default value:__ `1`\\\",\\\"maximum\\\":1,\\\"minimum\\\":0,\\\"type\\\":\\\"number\\\"},{\\\"$ref\\\":\\\"#/definitions/ExprRef\\\"}]},\\\"opacity\\\":{\\\"anyOf\\\":[{\\\"type\\\":\\\"number\\\"},{\\\"$ref\\\":\\\"#/definitions/ExprRef\\\"}],\\\"description\\\":\\\"The overall opacity (value between [0,1]).\\\\n\\\\n__Default value:__ `0.7` for non-aggregate plots with `point`, `tick`, `circle`, or `square` marks or layered `bar` charts and `1` otherwise.\\\",\\\"maximum\\\":1,\\\"minimum\\\":0},\\\"stroke\\\":{\\\"anyOf\\\":[{\\\"$ref\\\":\\\"#/definitions/Color\\\"},{\\\"type\\\":\\\"null\\\"},{\\\"$ref\\\":\\\"#/definitions/ExprRef\\\"}],\\\"description\\\":\\\"The stroke color.\\\\n\\\\n__Default value:__ `\\\\\\\"#ddd\\\\\\\"`\\\"},\\\"strokeCap\\\":{\\\"anyOf\\\":[{\\\"$ref\\\":\\\"#/definitions/StrokeCap\\\",\\\"description\\\":\\\"The stroke cap for line ending style. One of `\\\\\\\"butt\\\\\\\"`, `\\\\\\\"round\\\\\\\"`, or `\\\\\\\"square\\\\\\\"`.\\\\n\\\\n__Default value:__ `\\\\\\\"butt\\\\\\\"`\\\"},{\\\"$ref\\\":\\\"#/definitions/ExprRef\\\"}]},\\\"strokeDash\\\":{\\\"anyOf\\\":[{\\\"description\\\":\\\"An array of alternating stroke, space lengths for creating dashed or dotted lines.\\\",\\\"items\\\":{\\\"type\\\":\\\"number\\\"},\\\"type\\\":\\\"array\\\"},{\\\"$ref\\\":\\\"#/definitions/ExprRef\\\"}]},\\\"strokeDashOffset\\\":{\\\"anyOf\\\":[{\\\"description\\\":\\\"The offset (in pixels) into which to begin drawing with the stroke dash array.\\\",\\\"type\\\":\\\"number\\\"},{\\\"$ref\\\":\\\"#/definitions/ExprRef\\\"}]},\\\"strokeJoin\\\":{\\\"anyOf\\\":[{\\\"$ref\\\":\\\"#/definitions/StrokeJoin\\\",\\\"description\\\":\\\"The stroke line join method. One of `\\\\\\\"miter\\\\\\\"`, `\\\\\\\"round\\\\\\\"` or `\\\\\\\"bevel\\\\\\\"`.\\\\n\\\\n__Default value:__ `\\\\\\\"miter\\\\\\\"`\\\"},{\\\"$ref\\\":\\\"#/definitions/ExprRef\\\"}]},\\\"strokeMiterLimit\\\":{\\\"anyOf\\\":[{\\\"description\\\":\\\"The miter limit at which to bevel a line join.\\\",\\\"type\\\":\\\"number\\\"},{\\\"$ref\\\":\\\"#/definitions/ExprRef\\\"}]},\\\"strokeOpacity\\\":{\\\"anyOf\\\":[{\\\"description\\\":\\\"The stroke opacity (value between [0,1]).\\\\n\\\\n__Default value:__ `1`\\\",\\\"maximum\\\":1,\\\"minimum\\\":0,\\\"type\\\":\\\"number\\\"},{\\\"$ref\\\":\\\"#/definitions/ExprRef\\\"}]},\\\"strokeWidth\\\":{\\\"anyOf\\\":[{\\\"description\\\":\\\"The stroke width, in pixels.\\\",\\\"minimum\\\":0,\\\"type\\\":\\\"number\\\"},{\\\"$ref\\\":\\\"#/definitions/ExprRef\\\"}]},\\\"style\\\":{\\\"anyOf\\\":[{\\\"type\\\":\\\"string\\\"},{\\\"items\\\":{\\\"type\\\":\\\"string\\\"},\\\"type\\\":\\\"array\\\"}],\\\"description\\\":\\\"A string or array of strings indicating the name of custom styles to apply to the view background. A style is a named collection of mark property defaults defined within the [style configuration](https://vega.github.io/vega-lite/docs/mark.html#style-config). If style is an array, later styles will override earlier styles.\\\\n\\\\n__Default value:__ `\\\\\\\"cell\\\\\\\"` __Note:__ Any specified view background properties will augment the default style.\\\"}},\\\"type\\\":\\\"object\\\"},\\\"ViewConfig\\\":{\\\"additionalProperties\\\":false,\\\"properties\\\":{\\\"clip\\\":{\\\"description\\\":\\\"Whether the view should be clipped.\\\",\\\"type\\\":\\\"boolean\\\"},\\\"continuousHeight\\\":{\\\"description\\\":\\\"The default height when the plot has a continuous y-field for x or latitude, or has arc marks.\\\\n\\\\n__Default value:__ `200`\\\",\\\"type\\\":\\\"number\\\"},\\\"continuousWidth\\\":{\\\"description\\\":\\\"The default width when the plot has a continuous field for x or longitude, or has arc marks.\\\\n\\\\n__Default value:__ `200`\\\",\\\"type\\\":\\\"number\\\"},\\\"cornerRadius\\\":{\\\"anyOf\\\":[{\\\"description\\\":\\\"The radius in pixels of rounded rectangles or arcs' corners.\\\\n\\\\n__Default value:__ `0`\\\",\\\"type\\\":\\\"number\\\"},{\\\"$ref\\\":\\\"#/definitions/ExprRef\\\"}]},\\\"cursor\\\":{\\\"$ref\\\":\\\"#/definitions/Cursor\\\",\\\"description\\\":\\\"The mouse cursor used over the view. Any valid [CSS cursor type](https://developer.mozilla.org/en-US/docs/Web/CSS/cursor#Values) can be used.\\\"},\\\"discreteHeight\\\":{\\\"anyOf\\\":[{\\\"type\\\":\\\"number\\\"},{\\\"additionalProperties\\\":false,\\\"properties\\\":{\\\"step\\\":{\\\"type\\\":\\\"number\\\"}},\\\"required\\\":[\\\"step\\\"],\\\"type\\\":\\\"object\\\"}],\\\"description\\\":\\\"The default height when the plot has non arc marks and either a discrete y-field or no y-field. The height can be either a number indicating a fixed height or an object in the form of `{step: number}` defining the height per discrete step.\\\\n\\\\n__Default value:__ a step size based on `config.view.step`.\\\"},\\\"discreteWidth\\\":{\\\"anyOf\\\":[{\\\"type\\\":\\\"number\\\"},{\\\"additionalProperties\\\":false,\\\"properties\\\":{\\\"step\\\":{\\\"type\\\":\\\"number\\\"}},\\\"required\\\":[\\\"step\\\"],\\\"type\\\":\\\"object\\\"}],\\\"description\\\":\\\"The default width when the plot has non-arc marks and either a discrete x-field or no x-field. The width can be either a number indicating a fixed width or an object in the form of `{step: number}` defining the width per discrete step.\\\\n\\\\n__Default value:__ a step size based on `config.view.step`.\\\"},\\\"fill\\\":{\\\"anyOf\\\":[{\\\"$ref\\\":\\\"#/definitions/Color\\\"},{\\\"type\\\":\\\"null\\\"},{\\\"$ref\\\":\\\"#/definitions/ExprRef\\\"}],\\\"description\\\":\\\"The fill color.\\\\n\\\\n__Default value:__ `undefined`\\\"},\\\"fillOpacity\\\":{\\\"anyOf\\\":[{\\\"description\\\":\\\"The fill opacity (value between [0,1]).\\\\n\\\\n__Default value:__ `1`\\\",\\\"maximum\\\":1,\\\"minimum\\\":0,\\\"type\\\":\\\"number\\\"},{\\\"$ref\\\":\\\"#/definitions/ExprRef\\\"}]},\\\"height\\\":{\\\"description\\\":\\\"Default height\\\\n\\\\n__Deprecated:__ Since Vega-Lite 4.0. Please use continuousHeight and discreteHeight instead.\\\",\\\"type\\\":\\\"number\\\"},\\\"opacity\\\":{\\\"anyOf\\\":[{\\\"type\\\":\\\"number\\\"},{\\\"$ref\\\":\\\"#/definitions/ExprRef\\\"}],\\\"description\\\":\\\"The overall opacity (value between [0,1]).\\\\n\\\\n__Default value:__ `0.7` for non-aggregate plots with `point`, `tick`, `circle`, or `square` marks or layered `bar` charts and `1` otherwise.\\\",\\\"maximum\\\":1,\\\"minimum\\\":0},\\\"step\\\":{\\\"description\\\":\\\"Default step size for x-/y- discrete fields.\\\",\\\"type\\\":\\\"number\\\"},\\\"stroke\\\":{\\\"anyOf\\\":[{\\\"$ref\\\":\\\"#/definitions/Color\\\"},{\\\"type\\\":\\\"null\\\"},{\\\"$ref\\\":\\\"#/definitions/ExprRef\\\"}],\\\"description\\\":\\\"The stroke color.\\\\n\\\\n__Default value:__ `\\\\\\\"#ddd\\\\\\\"`\\\"},\\\"strokeCap\\\":{\\\"anyOf\\\":[{\\\"$ref\\\":\\\"#/definitions/StrokeCap\\\",\\\"description\\\":\\\"The stroke cap for line ending style. One of `\\\\\\\"butt\\\\\\\"`, `\\\\\\\"round\\\\\\\"`, or `\\\\\\\"square\\\\\\\"`.\\\\n\\\\n__Default value:__ `\\\\\\\"butt\\\\\\\"`\\\"},{\\\"$ref\\\":\\\"#/definitions/ExprRef\\\"}]},\\\"strokeDash\\\":{\\\"anyOf\\\":[{\\\"description\\\":\\\"An array of alternating stroke, space lengths for creating dashed or dotted lines.\\\",\\\"items\\\":{\\\"type\\\":\\\"number\\\"},\\\"type\\\":\\\"array\\\"},{\\\"$ref\\\":\\\"#/definitions/ExprRef\\\"}]},\\\"strokeDashOffset\\\":{\\\"anyOf\\\":[{\\\"description\\\":\\\"The offset (in pixels) into which to begin drawing with the stroke dash array.\\\",\\\"type\\\":\\\"number\\\"},{\\\"$ref\\\":\\\"#/definitions/ExprRef\\\"}]},\\\"strokeJoin\\\":{\\\"anyOf\\\":[{\\\"$ref\\\":\\\"#/definitions/StrokeJoin\\\",\\\"description\\\":\\\"The stroke line join method. One of `\\\\\\\"miter\\\\\\\"`, `\\\\\\\"round\\\\\\\"` or `\\\\\\\"bevel\\\\\\\"`.\\\\n\\\\n__Default value:__ `\\\\\\\"miter\\\\\\\"`\\\"},{\\\"$ref\\\":\\\"#/definitions/ExprRef\\\"}]},\\\"strokeMiterLimit\\\":{\\\"anyOf\\\":[{\\\"description\\\":\\\"The miter limit at which to bevel a line join.\\\",\\\"type\\\":\\\"number\\\"},{\\\"$ref\\\":\\\"#/definitions/ExprRef\\\"}]},\\\"strokeOpacity\\\":{\\\"anyOf\\\":[{\\\"description\\\":\\\"The stroke opacity (value between [0,1]).\\\\n\\\\n__Default value:__ `1`\\\",\\\"maximum\\\":1,\\\"minimum\\\":0,\\\"type\\\":\\\"number\\\"},{\\\"$ref\\\":\\\"#/definitions/ExprRef\\\"}]},\\\"strokeWidth\\\":{\\\"anyOf\\\":[{\\\"description\\\":\\\"The stroke width, in pixels.\\\",\\\"minimum\\\":0,\\\"type\\\":\\\"number\\\"},{\\\"$ref\\\":\\\"#/definitions/ExprRef\\\"}]},\\\"width\\\":{\\\"description\\\":\\\"Default width\\\\n\\\\n__Deprecated:__ Since Vega-Lite 4.0. Please use continuousWidth and discreteWidth instead.\\\",\\\"type\\\":\\\"number\\\"}},\\\"type\\\":\\\"object\\\"},\\\"WindowEventType\\\":{\\\"anyOf\\\":[{\\\"$ref\\\":\\\"#/definitions/EventType\\\"},{\\\"type\\\":\\\"string\\\"}]},\\\"WindowFieldDef\\\":{\\\"additionalProperties\\\":false,\\\"properties\\\":{\\\"as\\\":{\\\"$ref\\\":\\\"#/definitions/FieldName\\\",\\\"description\\\":\\\"The output name for the window operation.\\\"},\\\"field\\\":{\\\"$ref\\\":\\\"#/definitions/FieldName\\\",\\\"description\\\":\\\"The data field for which to compute the aggregate or window function. This can be omitted for window functions that do not operate over a field such as `\\\\\\\"count\\\\\\\"`, `\\\\\\\"rank\\\\\\\"`, `\\\\\\\"dense_rank\\\\\\\"`.\\\"},\\\"op\\\":{\\\"anyOf\\\":[{\\\"$ref\\\":\\\"#/definitions/AggregateOp\\\"},{\\\"$ref\\\":\\\"#/definitions/WindowOnlyOp\\\"}],\\\"description\\\":\\\"The window or aggregation operation to apply within a window (e.g., `\\\\\\\"rank\\\\\\\"`, `\\\\\\\"lead\\\\\\\"`, `\\\\\\\"sum\\\\\\\"`, `\\\\\\\"average\\\\\\\"` or `\\\\\\\"count\\\\\\\"`). See the list of all supported operations [here](https://vega.github.io/vega-lite/docs/window.html#ops).\\\"},\\\"param\\\":{\\\"description\\\":\\\"Parameter values for the window functions. Parameter values can be omitted for operations that do not accept a parameter.\\\\n\\\\nSee the list of all supported operations and their parameters [here](https://vega.github.io/vega-lite/docs/transforms/window.html).\\\",\\\"type\\\":\\\"number\\\"}},\\\"required\\\":[\\\"op\\\",\\\"as\\\"],\\\"type\\\":\\\"object\\\"},\\\"WindowOnlyOp\\\":{\\\"enum\\\":[\\\"row_number\\\",\\\"rank\\\",\\\"dense_rank\\\",\\\"percent_rank\\\",\\\"cume_dist\\\",\\\"ntile\\\",\\\"lag\\\",\\\"lead\\\",\\\"first_value\\\",\\\"last_value\\\",\\\"nth_value\\\"],\\\"type\\\":\\\"string\\\"},\\\"WindowTransform\\\":{\\\"additionalProperties\\\":false,\\\"properties\\\":{\\\"frame\\\":{\\\"description\\\":\\\"A frame specification as a two-element array indicating how the sliding window should proceed. The array entries should either be a number indicating the offset from the current data object, or null to indicate unbounded rows preceding or following the current data object. The default value is `[null, 0]`, indicating that the sliding window includes the current object and all preceding objects. The value `[-5, 5]` indicates that the window should include five objects preceding and five objects following the current object. Finally, `[null, null]` indicates that the window frame should always include all data objects. If you this frame and want to assign the same value to add objects, you can use the simpler [join aggregate transform](https://vega.github.io/vega-lite/docs/joinaggregate.html). The only operators affected are the aggregation operations and the `first_value`, `last_value`, and `nth_value` window operations. The other window operations are not affected by this.\\\\n\\\\n__Default value:__:  `[null, 0]` (includes the current object and all preceding objects)\\\",\\\"items\\\":{\\\"type\\\":[\\\"null\\\",\\\"number\\\"]},\\\"type\\\":\\\"array\\\"},\\\"groupby\\\":{\\\"description\\\":\\\"The data fields for partitioning the data objects into separate windows. If unspecified, all data points will be in a single window.\\\",\\\"items\\\":{\\\"$ref\\\":\\\"#/definitions/FieldName\\\"},\\\"type\\\":\\\"array\\\"},\\\"ignorePeers\\\":{\\\"description\\\":\\\"Indicates if the sliding window frame should ignore peer values (data that are considered identical by the sort criteria). The default is false, causing the window frame to expand to include all peer values. If set to true, the window frame will be defined by offset values only. This setting only affects those operations that depend on the window frame, namely aggregation operations and the first_value, last_value, and nth_value window operations.\\\\n\\\\n__Default value:__ `false`\\\",\\\"type\\\":\\\"boolean\\\"},\\\"sort\\\":{\\\"description\\\":\\\"A sort field definition for sorting data objects within a window. If two data objects are considered equal by the comparator, they are considered \\\\\\\"peer\\\\\\\" values of equal rank. If sort is not specified, the order is undefined: data objects are processed in the order they are observed and none are considered peers (the ignorePeers parameter is ignored and treated as if set to `true`).\\\",\\\"items\\\":{\\\"$ref\\\":\\\"#/definitions/SortField\\\"},\\\"type\\\":\\\"array\\\"},\\\"window\\\":{\\\"description\\\":\\\"The definition of the fields in the window, and what calculations to use.\\\",\\\"items\\\":{\\\"$ref\\\":\\\"#/definitions/WindowFieldDef\\\"},\\\"type\\\":\\\"array\\\"}},\\\"required\\\":[\\\"window\\\"],\\\"type\\\":\\\"object\\\"}}}\");//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvdmVnYS1saXRlL2J1aWxkL3ZlZ2EtbGl0ZS1zY2hlbWEuanNvbi5qcyIsInNvdXJjZXMiOltdLCJtYXBwaW5ncyI6IiIsInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///./node_modules/vega-lite/build/vega-lite-schema.json\n");

/***/ }),

/***/ "./node_modules/vega-lite/node_modules/vega-expression/build/vega-expression.module.js":
/*!*********************************************************************************************!*\
  !*** ./node_modules/vega-lite/node_modules/vega-expression/build/vega-expression.module.js ***!
  \*********************************************************************************************/
/*! exports provided: ASTNode, ArrayExpression, BinaryExpression, CallExpression, ConditionalExpression, Identifier, Literal, LogicalExpression, MemberExpression, ObjectExpression, Property, RawCode, UnaryExpression, codegen, constants, functions, parse */
/***/ (function(module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"ASTNode\", function() { return ASTNode; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"ArrayExpression\", function() { return ArrayExpression; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"BinaryExpression\", function() { return BinaryExpression; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"CallExpression\", function() { return CallExpression; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"ConditionalExpression\", function() { return ConditionalExpression; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"Identifier\", function() { return Identifier; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"Literal\", function() { return Literal; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"LogicalExpression\", function() { return LogicalExpression; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"MemberExpression\", function() { return MemberExpression; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"ObjectExpression\", function() { return ObjectExpression; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"Property\", function() { return Property; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"RawCode\", function() { return RawCode; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"UnaryExpression\", function() { return UnaryExpression; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"codegen\", function() { return codegen; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"constants\", function() { return Constants; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"functions\", function() { return Functions; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"parse\", function() { return parser; });\n/* harmony import */ var vega_util__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! vega-util */ \"./node_modules/vega-lite/node_modules/vega-util/build/vega-util.module.js\");\n\n\nconst RawCode = 'RawCode';\nconst Literal = 'Literal';\nconst Property = 'Property';\nconst Identifier = 'Identifier';\nconst ArrayExpression = 'ArrayExpression';\nconst BinaryExpression = 'BinaryExpression';\nconst CallExpression = 'CallExpression';\nconst ConditionalExpression = 'ConditionalExpression';\nconst LogicalExpression = 'LogicalExpression';\nconst MemberExpression = 'MemberExpression';\nconst ObjectExpression = 'ObjectExpression';\nconst UnaryExpression = 'UnaryExpression';\nfunction ASTNode(type) {\n  this.type = type;\n}\n\nASTNode.prototype.visit = function (visitor) {\n  let c, i, n;\n  if (visitor(this)) return 1;\n\n  for (c = children(this), i = 0, n = c.length; i < n; ++i) {\n    if (c[i].visit(visitor)) return 1;\n  }\n};\n\nfunction children(node) {\n  switch (node.type) {\n    case ArrayExpression:\n      return node.elements;\n\n    case BinaryExpression:\n    case LogicalExpression:\n      return [node.left, node.right];\n\n    case CallExpression:\n      return [node.callee].concat(node.arguments);\n\n    case ConditionalExpression:\n      return [node.test, node.consequent, node.alternate];\n\n    case MemberExpression:\n      return [node.object, node.property];\n\n    case ObjectExpression:\n      return node.properties;\n\n    case Property:\n      return [node.key, node.value];\n\n    case UnaryExpression:\n      return [node.argument];\n\n    case Identifier:\n    case Literal:\n    case RawCode:\n    default:\n      return [];\n  }\n}\n\n/*\n  The following expression parser is based on Esprima (http://esprima.org/).\n  Original header comment and license for Esprima is included here:\n\n  Copyright (C) 2013 Ariya Hidayat <ariya.hidayat@gmail.com>\n  Copyright (C) 2013 Thaddee Tyl <thaddee.tyl@gmail.com>\n  Copyright (C) 2013 Mathias Bynens <mathias@qiwi.be>\n  Copyright (C) 2012 Ariya Hidayat <ariya.hidayat@gmail.com>\n  Copyright (C) 2012 Mathias Bynens <mathias@qiwi.be>\n  Copyright (C) 2012 Joost-Wim Boekesteijn <joost-wim@boekesteijn.nl>\n  Copyright (C) 2012 Kris Kowal <kris.kowal@cixar.com>\n  Copyright (C) 2012 Yusuke Suzuki <utatane.tea@gmail.com>\n  Copyright (C) 2012 Arpad Borsos <arpad.borsos@googlemail.com>\n  Copyright (C) 2011 Ariya Hidayat <ariya.hidayat@gmail.com>\n\n  Redistribution and use in source and binary forms, with or without\n  modification, are permitted provided that the following conditions are met:\n\n    * Redistributions of source code must retain the above copyright\n      notice, this list of conditions and the following disclaimer.\n    * Redistributions in binary form must reproduce the above copyright\n      notice, this list of conditions and the following disclaimer in the\n      documentation and/or other materials provided with the distribution.\n\n  THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS \"AS IS\"\n  AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE\n  IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE\n  ARE DISCLAIMED. IN NO EVENT SHALL <COPYRIGHT HOLDER> BE LIABLE FOR ANY\n  DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES\n  (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;\n  LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND\n  ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT\n  (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF\n  THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.\n*/\nvar TokenName, source, index, length, lookahead;\nvar TokenBooleanLiteral = 1,\n    TokenEOF = 2,\n    TokenIdentifier = 3,\n    TokenKeyword = 4,\n    TokenNullLiteral = 5,\n    TokenNumericLiteral = 6,\n    TokenPunctuator = 7,\n    TokenStringLiteral = 8,\n    TokenRegularExpression = 9;\nTokenName = {};\nTokenName[TokenBooleanLiteral] = 'Boolean';\nTokenName[TokenEOF] = '<end>';\nTokenName[TokenIdentifier] = 'Identifier';\nTokenName[TokenKeyword] = 'Keyword';\nTokenName[TokenNullLiteral] = 'Null';\nTokenName[TokenNumericLiteral] = 'Numeric';\nTokenName[TokenPunctuator] = 'Punctuator';\nTokenName[TokenStringLiteral] = 'String';\nTokenName[TokenRegularExpression] = 'RegularExpression';\nvar SyntaxArrayExpression = 'ArrayExpression',\n    SyntaxBinaryExpression = 'BinaryExpression',\n    SyntaxCallExpression = 'CallExpression',\n    SyntaxConditionalExpression = 'ConditionalExpression',\n    SyntaxIdentifier = 'Identifier',\n    SyntaxLiteral = 'Literal',\n    SyntaxLogicalExpression = 'LogicalExpression',\n    SyntaxMemberExpression = 'MemberExpression',\n    SyntaxObjectExpression = 'ObjectExpression',\n    SyntaxProperty = 'Property',\n    SyntaxUnaryExpression = 'UnaryExpression'; // Error messages should be identical to V8.\n\nvar MessageUnexpectedToken = 'Unexpected token %0',\n    MessageUnexpectedNumber = 'Unexpected number',\n    MessageUnexpectedString = 'Unexpected string',\n    MessageUnexpectedIdentifier = 'Unexpected identifier',\n    MessageUnexpectedReserved = 'Unexpected reserved word',\n    MessageUnexpectedEOS = 'Unexpected end of input',\n    MessageInvalidRegExp = 'Invalid regular expression',\n    MessageUnterminatedRegExp = 'Invalid regular expression: missing /',\n    MessageStrictOctalLiteral = 'Octal literals are not allowed in strict mode.',\n    MessageStrictDuplicateProperty = 'Duplicate data property in object literal not allowed in strict mode';\nvar ILLEGAL = 'ILLEGAL',\n    DISABLED = 'Disabled.'; // See also tools/generate-unicode-regex.py.\n\nvar RegexNonAsciiIdentifierStart = new RegExp('[\\\\xAA\\\\xB5\\\\xBA\\\\xC0-\\\\xD6\\\\xD8-\\\\xF6\\\\xF8-\\\\u02C1\\\\u02C6-\\\\u02D1\\\\u02E0-\\\\u02E4\\\\u02EC\\\\u02EE\\\\u0370-\\\\u0374\\\\u0376\\\\u0377\\\\u037A-\\\\u037D\\\\u037F\\\\u0386\\\\u0388-\\\\u038A\\\\u038C\\\\u038E-\\\\u03A1\\\\u03A3-\\\\u03F5\\\\u03F7-\\\\u0481\\\\u048A-\\\\u052F\\\\u0531-\\\\u0556\\\\u0559\\\\u0561-\\\\u0587\\\\u05D0-\\\\u05EA\\\\u05F0-\\\\u05F2\\\\u0620-\\\\u064A\\\\u066E\\\\u066F\\\\u0671-\\\\u06D3\\\\u06D5\\\\u06E5\\\\u06E6\\\\u06EE\\\\u06EF\\\\u06FA-\\\\u06FC\\\\u06FF\\\\u0710\\\\u0712-\\\\u072F\\\\u074D-\\\\u07A5\\\\u07B1\\\\u07CA-\\\\u07EA\\\\u07F4\\\\u07F5\\\\u07FA\\\\u0800-\\\\u0815\\\\u081A\\\\u0824\\\\u0828\\\\u0840-\\\\u0858\\\\u08A0-\\\\u08B2\\\\u0904-\\\\u0939\\\\u093D\\\\u0950\\\\u0958-\\\\u0961\\\\u0971-\\\\u0980\\\\u0985-\\\\u098C\\\\u098F\\\\u0990\\\\u0993-\\\\u09A8\\\\u09AA-\\\\u09B0\\\\u09B2\\\\u09B6-\\\\u09B9\\\\u09BD\\\\u09CE\\\\u09DC\\\\u09DD\\\\u09DF-\\\\u09E1\\\\u09F0\\\\u09F1\\\\u0A05-\\\\u0A0A\\\\u0A0F\\\\u0A10\\\\u0A13-\\\\u0A28\\\\u0A2A-\\\\u0A30\\\\u0A32\\\\u0A33\\\\u0A35\\\\u0A36\\\\u0A38\\\\u0A39\\\\u0A59-\\\\u0A5C\\\\u0A5E\\\\u0A72-\\\\u0A74\\\\u0A85-\\\\u0A8D\\\\u0A8F-\\\\u0A91\\\\u0A93-\\\\u0AA8\\\\u0AAA-\\\\u0AB0\\\\u0AB2\\\\u0AB3\\\\u0AB5-\\\\u0AB9\\\\u0ABD\\\\u0AD0\\\\u0AE0\\\\u0AE1\\\\u0B05-\\\\u0B0C\\\\u0B0F\\\\u0B10\\\\u0B13-\\\\u0B28\\\\u0B2A-\\\\u0B30\\\\u0B32\\\\u0B33\\\\u0B35-\\\\u0B39\\\\u0B3D\\\\u0B5C\\\\u0B5D\\\\u0B5F-\\\\u0B61\\\\u0B71\\\\u0B83\\\\u0B85-\\\\u0B8A\\\\u0B8E-\\\\u0B90\\\\u0B92-\\\\u0B95\\\\u0B99\\\\u0B9A\\\\u0B9C\\\\u0B9E\\\\u0B9F\\\\u0BA3\\\\u0BA4\\\\u0BA8-\\\\u0BAA\\\\u0BAE-\\\\u0BB9\\\\u0BD0\\\\u0C05-\\\\u0C0C\\\\u0C0E-\\\\u0C10\\\\u0C12-\\\\u0C28\\\\u0C2A-\\\\u0C39\\\\u0C3D\\\\u0C58\\\\u0C59\\\\u0C60\\\\u0C61\\\\u0C85-\\\\u0C8C\\\\u0C8E-\\\\u0C90\\\\u0C92-\\\\u0CA8\\\\u0CAA-\\\\u0CB3\\\\u0CB5-\\\\u0CB9\\\\u0CBD\\\\u0CDE\\\\u0CE0\\\\u0CE1\\\\u0CF1\\\\u0CF2\\\\u0D05-\\\\u0D0C\\\\u0D0E-\\\\u0D10\\\\u0D12-\\\\u0D3A\\\\u0D3D\\\\u0D4E\\\\u0D60\\\\u0D61\\\\u0D7A-\\\\u0D7F\\\\u0D85-\\\\u0D96\\\\u0D9A-\\\\u0DB1\\\\u0DB3-\\\\u0DBB\\\\u0DBD\\\\u0DC0-\\\\u0DC6\\\\u0E01-\\\\u0E30\\\\u0E32\\\\u0E33\\\\u0E40-\\\\u0E46\\\\u0E81\\\\u0E82\\\\u0E84\\\\u0E87\\\\u0E88\\\\u0E8A\\\\u0E8D\\\\u0E94-\\\\u0E97\\\\u0E99-\\\\u0E9F\\\\u0EA1-\\\\u0EA3\\\\u0EA5\\\\u0EA7\\\\u0EAA\\\\u0EAB\\\\u0EAD-\\\\u0EB0\\\\u0EB2\\\\u0EB3\\\\u0EBD\\\\u0EC0-\\\\u0EC4\\\\u0EC6\\\\u0EDC-\\\\u0EDF\\\\u0F00\\\\u0F40-\\\\u0F47\\\\u0F49-\\\\u0F6C\\\\u0F88-\\\\u0F8C\\\\u1000-\\\\u102A\\\\u103F\\\\u1050-\\\\u1055\\\\u105A-\\\\u105D\\\\u1061\\\\u1065\\\\u1066\\\\u106E-\\\\u1070\\\\u1075-\\\\u1081\\\\u108E\\\\u10A0-\\\\u10C5\\\\u10C7\\\\u10CD\\\\u10D0-\\\\u10FA\\\\u10FC-\\\\u1248\\\\u124A-\\\\u124D\\\\u1250-\\\\u1256\\\\u1258\\\\u125A-\\\\u125D\\\\u1260-\\\\u1288\\\\u128A-\\\\u128D\\\\u1290-\\\\u12B0\\\\u12B2-\\\\u12B5\\\\u12B8-\\\\u12BE\\\\u12C0\\\\u12C2-\\\\u12C5\\\\u12C8-\\\\u12D6\\\\u12D8-\\\\u1310\\\\u1312-\\\\u1315\\\\u1318-\\\\u135A\\\\u1380-\\\\u138F\\\\u13A0-\\\\u13F4\\\\u1401-\\\\u166C\\\\u166F-\\\\u167F\\\\u1681-\\\\u169A\\\\u16A0-\\\\u16EA\\\\u16EE-\\\\u16F8\\\\u1700-\\\\u170C\\\\u170E-\\\\u1711\\\\u1720-\\\\u1731\\\\u1740-\\\\u1751\\\\u1760-\\\\u176C\\\\u176E-\\\\u1770\\\\u1780-\\\\u17B3\\\\u17D7\\\\u17DC\\\\u1820-\\\\u1877\\\\u1880-\\\\u18A8\\\\u18AA\\\\u18B0-\\\\u18F5\\\\u1900-\\\\u191E\\\\u1950-\\\\u196D\\\\u1970-\\\\u1974\\\\u1980-\\\\u19AB\\\\u19C1-\\\\u19C7\\\\u1A00-\\\\u1A16\\\\u1A20-\\\\u1A54\\\\u1AA7\\\\u1B05-\\\\u1B33\\\\u1B45-\\\\u1B4B\\\\u1B83-\\\\u1BA0\\\\u1BAE\\\\u1BAF\\\\u1BBA-\\\\u1BE5\\\\u1C00-\\\\u1C23\\\\u1C4D-\\\\u1C4F\\\\u1C5A-\\\\u1C7D\\\\u1CE9-\\\\u1CEC\\\\u1CEE-\\\\u1CF1\\\\u1CF5\\\\u1CF6\\\\u1D00-\\\\u1DBF\\\\u1E00-\\\\u1F15\\\\u1F18-\\\\u1F1D\\\\u1F20-\\\\u1F45\\\\u1F48-\\\\u1F4D\\\\u1F50-\\\\u1F57\\\\u1F59\\\\u1F5B\\\\u1F5D\\\\u1F5F-\\\\u1F7D\\\\u1F80-\\\\u1FB4\\\\u1FB6-\\\\u1FBC\\\\u1FBE\\\\u1FC2-\\\\u1FC4\\\\u1FC6-\\\\u1FCC\\\\u1FD0-\\\\u1FD3\\\\u1FD6-\\\\u1FDB\\\\u1FE0-\\\\u1FEC\\\\u1FF2-\\\\u1FF4\\\\u1FF6-\\\\u1FFC\\\\u2071\\\\u207F\\\\u2090-\\\\u209C\\\\u2102\\\\u2107\\\\u210A-\\\\u2113\\\\u2115\\\\u2119-\\\\u211D\\\\u2124\\\\u2126\\\\u2128\\\\u212A-\\\\u212D\\\\u212F-\\\\u2139\\\\u213C-\\\\u213F\\\\u2145-\\\\u2149\\\\u214E\\\\u2160-\\\\u2188\\\\u2C00-\\\\u2C2E\\\\u2C30-\\\\u2C5E\\\\u2C60-\\\\u2CE4\\\\u2CEB-\\\\u2CEE\\\\u2CF2\\\\u2CF3\\\\u2D00-\\\\u2D25\\\\u2D27\\\\u2D2D\\\\u2D30-\\\\u2D67\\\\u2D6F\\\\u2D80-\\\\u2D96\\\\u2DA0-\\\\u2DA6\\\\u2DA8-\\\\u2DAE\\\\u2DB0-\\\\u2DB6\\\\u2DB8-\\\\u2DBE\\\\u2DC0-\\\\u2DC6\\\\u2DC8-\\\\u2DCE\\\\u2DD0-\\\\u2DD6\\\\u2DD8-\\\\u2DDE\\\\u2E2F\\\\u3005-\\\\u3007\\\\u3021-\\\\u3029\\\\u3031-\\\\u3035\\\\u3038-\\\\u303C\\\\u3041-\\\\u3096\\\\u309D-\\\\u309F\\\\u30A1-\\\\u30FA\\\\u30FC-\\\\u30FF\\\\u3105-\\\\u312D\\\\u3131-\\\\u318E\\\\u31A0-\\\\u31BA\\\\u31F0-\\\\u31FF\\\\u3400-\\\\u4DB5\\\\u4E00-\\\\u9FCC\\\\uA000-\\\\uA48C\\\\uA4D0-\\\\uA4FD\\\\uA500-\\\\uA60C\\\\uA610-\\\\uA61F\\\\uA62A\\\\uA62B\\\\uA640-\\\\uA66E\\\\uA67F-\\\\uA69D\\\\uA6A0-\\\\uA6EF\\\\uA717-\\\\uA71F\\\\uA722-\\\\uA788\\\\uA78B-\\\\uA78E\\\\uA790-\\\\uA7AD\\\\uA7B0\\\\uA7B1\\\\uA7F7-\\\\uA801\\\\uA803-\\\\uA805\\\\uA807-\\\\uA80A\\\\uA80C-\\\\uA822\\\\uA840-\\\\uA873\\\\uA882-\\\\uA8B3\\\\uA8F2-\\\\uA8F7\\\\uA8FB\\\\uA90A-\\\\uA925\\\\uA930-\\\\uA946\\\\uA960-\\\\uA97C\\\\uA984-\\\\uA9B2\\\\uA9CF\\\\uA9E0-\\\\uA9E4\\\\uA9E6-\\\\uA9EF\\\\uA9FA-\\\\uA9FE\\\\uAA00-\\\\uAA28\\\\uAA40-\\\\uAA42\\\\uAA44-\\\\uAA4B\\\\uAA60-\\\\uAA76\\\\uAA7A\\\\uAA7E-\\\\uAAAF\\\\uAAB1\\\\uAAB5\\\\uAAB6\\\\uAAB9-\\\\uAABD\\\\uAAC0\\\\uAAC2\\\\uAADB-\\\\uAADD\\\\uAAE0-\\\\uAAEA\\\\uAAF2-\\\\uAAF4\\\\uAB01-\\\\uAB06\\\\uAB09-\\\\uAB0E\\\\uAB11-\\\\uAB16\\\\uAB20-\\\\uAB26\\\\uAB28-\\\\uAB2E\\\\uAB30-\\\\uAB5A\\\\uAB5C-\\\\uAB5F\\\\uAB64\\\\uAB65\\\\uABC0-\\\\uABE2\\\\uAC00-\\\\uD7A3\\\\uD7B0-\\\\uD7C6\\\\uD7CB-\\\\uD7FB\\\\uF900-\\\\uFA6D\\\\uFA70-\\\\uFAD9\\\\uFB00-\\\\uFB06\\\\uFB13-\\\\uFB17\\\\uFB1D\\\\uFB1F-\\\\uFB28\\\\uFB2A-\\\\uFB36\\\\uFB38-\\\\uFB3C\\\\uFB3E\\\\uFB40\\\\uFB41\\\\uFB43\\\\uFB44\\\\uFB46-\\\\uFBB1\\\\uFBD3-\\\\uFD3D\\\\uFD50-\\\\uFD8F\\\\uFD92-\\\\uFDC7\\\\uFDF0-\\\\uFDFB\\\\uFE70-\\\\uFE74\\\\uFE76-\\\\uFEFC\\\\uFF21-\\\\uFF3A\\\\uFF41-\\\\uFF5A\\\\uFF66-\\\\uFFBE\\\\uFFC2-\\\\uFFC7\\\\uFFCA-\\\\uFFCF\\\\uFFD2-\\\\uFFD7\\\\uFFDA-\\\\uFFDC]'),\n    // eslint-disable-next-line no-misleading-character-class\nRegexNonAsciiIdentifierPart = new RegExp('[\\\\xAA\\\\xB5\\\\xBA\\\\xC0-\\\\xD6\\\\xD8-\\\\xF6\\\\xF8-\\\\u02C1\\\\u02C6-\\\\u02D1\\\\u02E0-\\\\u02E4\\\\u02EC\\\\u02EE\\\\u0300-\\\\u0374\\\\u0376\\\\u0377\\\\u037A-\\\\u037D\\\\u037F\\\\u0386\\\\u0388-\\\\u038A\\\\u038C\\\\u038E-\\\\u03A1\\\\u03A3-\\\\u03F5\\\\u03F7-\\\\u0481\\\\u0483-\\\\u0487\\\\u048A-\\\\u052F\\\\u0531-\\\\u0556\\\\u0559\\\\u0561-\\\\u0587\\\\u0591-\\\\u05BD\\\\u05BF\\\\u05C1\\\\u05C2\\\\u05C4\\\\u05C5\\\\u05C7\\\\u05D0-\\\\u05EA\\\\u05F0-\\\\u05F2\\\\u0610-\\\\u061A\\\\u0620-\\\\u0669\\\\u066E-\\\\u06D3\\\\u06D5-\\\\u06DC\\\\u06DF-\\\\u06E8\\\\u06EA-\\\\u06FC\\\\u06FF\\\\u0710-\\\\u074A\\\\u074D-\\\\u07B1\\\\u07C0-\\\\u07F5\\\\u07FA\\\\u0800-\\\\u082D\\\\u0840-\\\\u085B\\\\u08A0-\\\\u08B2\\\\u08E4-\\\\u0963\\\\u0966-\\\\u096F\\\\u0971-\\\\u0983\\\\u0985-\\\\u098C\\\\u098F\\\\u0990\\\\u0993-\\\\u09A8\\\\u09AA-\\\\u09B0\\\\u09B2\\\\u09B6-\\\\u09B9\\\\u09BC-\\\\u09C4\\\\u09C7\\\\u09C8\\\\u09CB-\\\\u09CE\\\\u09D7\\\\u09DC\\\\u09DD\\\\u09DF-\\\\u09E3\\\\u09E6-\\\\u09F1\\\\u0A01-\\\\u0A03\\\\u0A05-\\\\u0A0A\\\\u0A0F\\\\u0A10\\\\u0A13-\\\\u0A28\\\\u0A2A-\\\\u0A30\\\\u0A32\\\\u0A33\\\\u0A35\\\\u0A36\\\\u0A38\\\\u0A39\\\\u0A3C\\\\u0A3E-\\\\u0A42\\\\u0A47\\\\u0A48\\\\u0A4B-\\\\u0A4D\\\\u0A51\\\\u0A59-\\\\u0A5C\\\\u0A5E\\\\u0A66-\\\\u0A75\\\\u0A81-\\\\u0A83\\\\u0A85-\\\\u0A8D\\\\u0A8F-\\\\u0A91\\\\u0A93-\\\\u0AA8\\\\u0AAA-\\\\u0AB0\\\\u0AB2\\\\u0AB3\\\\u0AB5-\\\\u0AB9\\\\u0ABC-\\\\u0AC5\\\\u0AC7-\\\\u0AC9\\\\u0ACB-\\\\u0ACD\\\\u0AD0\\\\u0AE0-\\\\u0AE3\\\\u0AE6-\\\\u0AEF\\\\u0B01-\\\\u0B03\\\\u0B05-\\\\u0B0C\\\\u0B0F\\\\u0B10\\\\u0B13-\\\\u0B28\\\\u0B2A-\\\\u0B30\\\\u0B32\\\\u0B33\\\\u0B35-\\\\u0B39\\\\u0B3C-\\\\u0B44\\\\u0B47\\\\u0B48\\\\u0B4B-\\\\u0B4D\\\\u0B56\\\\u0B57\\\\u0B5C\\\\u0B5D\\\\u0B5F-\\\\u0B63\\\\u0B66-\\\\u0B6F\\\\u0B71\\\\u0B82\\\\u0B83\\\\u0B85-\\\\u0B8A\\\\u0B8E-\\\\u0B90\\\\u0B92-\\\\u0B95\\\\u0B99\\\\u0B9A\\\\u0B9C\\\\u0B9E\\\\u0B9F\\\\u0BA3\\\\u0BA4\\\\u0BA8-\\\\u0BAA\\\\u0BAE-\\\\u0BB9\\\\u0BBE-\\\\u0BC2\\\\u0BC6-\\\\u0BC8\\\\u0BCA-\\\\u0BCD\\\\u0BD0\\\\u0BD7\\\\u0BE6-\\\\u0BEF\\\\u0C00-\\\\u0C03\\\\u0C05-\\\\u0C0C\\\\u0C0E-\\\\u0C10\\\\u0C12-\\\\u0C28\\\\u0C2A-\\\\u0C39\\\\u0C3D-\\\\u0C44\\\\u0C46-\\\\u0C48\\\\u0C4A-\\\\u0C4D\\\\u0C55\\\\u0C56\\\\u0C58\\\\u0C59\\\\u0C60-\\\\u0C63\\\\u0C66-\\\\u0C6F\\\\u0C81-\\\\u0C83\\\\u0C85-\\\\u0C8C\\\\u0C8E-\\\\u0C90\\\\u0C92-\\\\u0CA8\\\\u0CAA-\\\\u0CB3\\\\u0CB5-\\\\u0CB9\\\\u0CBC-\\\\u0CC4\\\\u0CC6-\\\\u0CC8\\\\u0CCA-\\\\u0CCD\\\\u0CD5\\\\u0CD6\\\\u0CDE\\\\u0CE0-\\\\u0CE3\\\\u0CE6-\\\\u0CEF\\\\u0CF1\\\\u0CF2\\\\u0D01-\\\\u0D03\\\\u0D05-\\\\u0D0C\\\\u0D0E-\\\\u0D10\\\\u0D12-\\\\u0D3A\\\\u0D3D-\\\\u0D44\\\\u0D46-\\\\u0D48\\\\u0D4A-\\\\u0D4E\\\\u0D57\\\\u0D60-\\\\u0D63\\\\u0D66-\\\\u0D6F\\\\u0D7A-\\\\u0D7F\\\\u0D82\\\\u0D83\\\\u0D85-\\\\u0D96\\\\u0D9A-\\\\u0DB1\\\\u0DB3-\\\\u0DBB\\\\u0DBD\\\\u0DC0-\\\\u0DC6\\\\u0DCA\\\\u0DCF-\\\\u0DD4\\\\u0DD6\\\\u0DD8-\\\\u0DDF\\\\u0DE6-\\\\u0DEF\\\\u0DF2\\\\u0DF3\\\\u0E01-\\\\u0E3A\\\\u0E40-\\\\u0E4E\\\\u0E50-\\\\u0E59\\\\u0E81\\\\u0E82\\\\u0E84\\\\u0E87\\\\u0E88\\\\u0E8A\\\\u0E8D\\\\u0E94-\\\\u0E97\\\\u0E99-\\\\u0E9F\\\\u0EA1-\\\\u0EA3\\\\u0EA5\\\\u0EA7\\\\u0EAA\\\\u0EAB\\\\u0EAD-\\\\u0EB9\\\\u0EBB-\\\\u0EBD\\\\u0EC0-\\\\u0EC4\\\\u0EC6\\\\u0EC8-\\\\u0ECD\\\\u0ED0-\\\\u0ED9\\\\u0EDC-\\\\u0EDF\\\\u0F00\\\\u0F18\\\\u0F19\\\\u0F20-\\\\u0F29\\\\u0F35\\\\u0F37\\\\u0F39\\\\u0F3E-\\\\u0F47\\\\u0F49-\\\\u0F6C\\\\u0F71-\\\\u0F84\\\\u0F86-\\\\u0F97\\\\u0F99-\\\\u0FBC\\\\u0FC6\\\\u1000-\\\\u1049\\\\u1050-\\\\u109D\\\\u10A0-\\\\u10C5\\\\u10C7\\\\u10CD\\\\u10D0-\\\\u10FA\\\\u10FC-\\\\u1248\\\\u124A-\\\\u124D\\\\u1250-\\\\u1256\\\\u1258\\\\u125A-\\\\u125D\\\\u1260-\\\\u1288\\\\u128A-\\\\u128D\\\\u1290-\\\\u12B0\\\\u12B2-\\\\u12B5\\\\u12B8-\\\\u12BE\\\\u12C0\\\\u12C2-\\\\u12C5\\\\u12C8-\\\\u12D6\\\\u12D8-\\\\u1310\\\\u1312-\\\\u1315\\\\u1318-\\\\u135A\\\\u135D-\\\\u135F\\\\u1380-\\\\u138F\\\\u13A0-\\\\u13F4\\\\u1401-\\\\u166C\\\\u166F-\\\\u167F\\\\u1681-\\\\u169A\\\\u16A0-\\\\u16EA\\\\u16EE-\\\\u16F8\\\\u1700-\\\\u170C\\\\u170E-\\\\u1714\\\\u1720-\\\\u1734\\\\u1740-\\\\u1753\\\\u1760-\\\\u176C\\\\u176E-\\\\u1770\\\\u1772\\\\u1773\\\\u1780-\\\\u17D3\\\\u17D7\\\\u17DC\\\\u17DD\\\\u17E0-\\\\u17E9\\\\u180B-\\\\u180D\\\\u1810-\\\\u1819\\\\u1820-\\\\u1877\\\\u1880-\\\\u18AA\\\\u18B0-\\\\u18F5\\\\u1900-\\\\u191E\\\\u1920-\\\\u192B\\\\u1930-\\\\u193B\\\\u1946-\\\\u196D\\\\u1970-\\\\u1974\\\\u1980-\\\\u19AB\\\\u19B0-\\\\u19C9\\\\u19D0-\\\\u19D9\\\\u1A00-\\\\u1A1B\\\\u1A20-\\\\u1A5E\\\\u1A60-\\\\u1A7C\\\\u1A7F-\\\\u1A89\\\\u1A90-\\\\u1A99\\\\u1AA7\\\\u1AB0-\\\\u1ABD\\\\u1B00-\\\\u1B4B\\\\u1B50-\\\\u1B59\\\\u1B6B-\\\\u1B73\\\\u1B80-\\\\u1BF3\\\\u1C00-\\\\u1C37\\\\u1C40-\\\\u1C49\\\\u1C4D-\\\\u1C7D\\\\u1CD0-\\\\u1CD2\\\\u1CD4-\\\\u1CF6\\\\u1CF8\\\\u1CF9\\\\u1D00-\\\\u1DF5\\\\u1DFC-\\\\u1F15\\\\u1F18-\\\\u1F1D\\\\u1F20-\\\\u1F45\\\\u1F48-\\\\u1F4D\\\\u1F50-\\\\u1F57\\\\u1F59\\\\u1F5B\\\\u1F5D\\\\u1F5F-\\\\u1F7D\\\\u1F80-\\\\u1FB4\\\\u1FB6-\\\\u1FBC\\\\u1FBE\\\\u1FC2-\\\\u1FC4\\\\u1FC6-\\\\u1FCC\\\\u1FD0-\\\\u1FD3\\\\u1FD6-\\\\u1FDB\\\\u1FE0-\\\\u1FEC\\\\u1FF2-\\\\u1FF4\\\\u1FF6-\\\\u1FFC\\\\u200C\\\\u200D\\\\u203F\\\\u2040\\\\u2054\\\\u2071\\\\u207F\\\\u2090-\\\\u209C\\\\u20D0-\\\\u20DC\\\\u20E1\\\\u20E5-\\\\u20F0\\\\u2102\\\\u2107\\\\u210A-\\\\u2113\\\\u2115\\\\u2119-\\\\u211D\\\\u2124\\\\u2126\\\\u2128\\\\u212A-\\\\u212D\\\\u212F-\\\\u2139\\\\u213C-\\\\u213F\\\\u2145-\\\\u2149\\\\u214E\\\\u2160-\\\\u2188\\\\u2C00-\\\\u2C2E\\\\u2C30-\\\\u2C5E\\\\u2C60-\\\\u2CE4\\\\u2CEB-\\\\u2CF3\\\\u2D00-\\\\u2D25\\\\u2D27\\\\u2D2D\\\\u2D30-\\\\u2D67\\\\u2D6F\\\\u2D7F-\\\\u2D96\\\\u2DA0-\\\\u2DA6\\\\u2DA8-\\\\u2DAE\\\\u2DB0-\\\\u2DB6\\\\u2DB8-\\\\u2DBE\\\\u2DC0-\\\\u2DC6\\\\u2DC8-\\\\u2DCE\\\\u2DD0-\\\\u2DD6\\\\u2DD8-\\\\u2DDE\\\\u2DE0-\\\\u2DFF\\\\u2E2F\\\\u3005-\\\\u3007\\\\u3021-\\\\u302F\\\\u3031-\\\\u3035\\\\u3038-\\\\u303C\\\\u3041-\\\\u3096\\\\u3099\\\\u309A\\\\u309D-\\\\u309F\\\\u30A1-\\\\u30FA\\\\u30FC-\\\\u30FF\\\\u3105-\\\\u312D\\\\u3131-\\\\u318E\\\\u31A0-\\\\u31BA\\\\u31F0-\\\\u31FF\\\\u3400-\\\\u4DB5\\\\u4E00-\\\\u9FCC\\\\uA000-\\\\uA48C\\\\uA4D0-\\\\uA4FD\\\\uA500-\\\\uA60C\\\\uA610-\\\\uA62B\\\\uA640-\\\\uA66F\\\\uA674-\\\\uA67D\\\\uA67F-\\\\uA69D\\\\uA69F-\\\\uA6F1\\\\uA717-\\\\uA71F\\\\uA722-\\\\uA788\\\\uA78B-\\\\uA78E\\\\uA790-\\\\uA7AD\\\\uA7B0\\\\uA7B1\\\\uA7F7-\\\\uA827\\\\uA840-\\\\uA873\\\\uA880-\\\\uA8C4\\\\uA8D0-\\\\uA8D9\\\\uA8E0-\\\\uA8F7\\\\uA8FB\\\\uA900-\\\\uA92D\\\\uA930-\\\\uA953\\\\uA960-\\\\uA97C\\\\uA980-\\\\uA9C0\\\\uA9CF-\\\\uA9D9\\\\uA9E0-\\\\uA9FE\\\\uAA00-\\\\uAA36\\\\uAA40-\\\\uAA4D\\\\uAA50-\\\\uAA59\\\\uAA60-\\\\uAA76\\\\uAA7A-\\\\uAAC2\\\\uAADB-\\\\uAADD\\\\uAAE0-\\\\uAAEF\\\\uAAF2-\\\\uAAF6\\\\uAB01-\\\\uAB06\\\\uAB09-\\\\uAB0E\\\\uAB11-\\\\uAB16\\\\uAB20-\\\\uAB26\\\\uAB28-\\\\uAB2E\\\\uAB30-\\\\uAB5A\\\\uAB5C-\\\\uAB5F\\\\uAB64\\\\uAB65\\\\uABC0-\\\\uABEA\\\\uABEC\\\\uABED\\\\uABF0-\\\\uABF9\\\\uAC00-\\\\uD7A3\\\\uD7B0-\\\\uD7C6\\\\uD7CB-\\\\uD7FB\\\\uF900-\\\\uFA6D\\\\uFA70-\\\\uFAD9\\\\uFB00-\\\\uFB06\\\\uFB13-\\\\uFB17\\\\uFB1D-\\\\uFB28\\\\uFB2A-\\\\uFB36\\\\uFB38-\\\\uFB3C\\\\uFB3E\\\\uFB40\\\\uFB41\\\\uFB43\\\\uFB44\\\\uFB46-\\\\uFBB1\\\\uFBD3-\\\\uFD3D\\\\uFD50-\\\\uFD8F\\\\uFD92-\\\\uFDC7\\\\uFDF0-\\\\uFDFB\\\\uFE00-\\\\uFE0F\\\\uFE20-\\\\uFE2D\\\\uFE33\\\\uFE34\\\\uFE4D-\\\\uFE4F\\\\uFE70-\\\\uFE74\\\\uFE76-\\\\uFEFC\\\\uFF10-\\\\uFF19\\\\uFF21-\\\\uFF3A\\\\uFF3F\\\\uFF41-\\\\uFF5A\\\\uFF66-\\\\uFFBE\\\\uFFC2-\\\\uFFC7\\\\uFFCA-\\\\uFFCF\\\\uFFD2-\\\\uFFD7\\\\uFFDA-\\\\uFFDC]'); // Ensure the condition is true, otherwise throw an error.\n// This is only to have a better contract semantic, i.e. another safety net\n// to catch a logic error. The condition shall be fulfilled in normal case.\n// Do NOT use this to enforce a certain condition on any user input.\n\nfunction assert(condition, message) {\n  /* istanbul ignore next */\n  if (!condition) {\n    throw new Error('ASSERT: ' + message);\n  }\n}\n\nfunction isDecimalDigit(ch) {\n  return ch >= 0x30 && ch <= 0x39; // 0..9\n}\n\nfunction isHexDigit(ch) {\n  return '0123456789abcdefABCDEF'.indexOf(ch) >= 0;\n}\n\nfunction isOctalDigit(ch) {\n  return '01234567'.indexOf(ch) >= 0;\n} // 7.2 White Space\n\n\nfunction isWhiteSpace(ch) {\n  return ch === 0x20 || ch === 0x09 || ch === 0x0B || ch === 0x0C || ch === 0xA0 || ch >= 0x1680 && [0x1680, 0x180E, 0x2000, 0x2001, 0x2002, 0x2003, 0x2004, 0x2005, 0x2006, 0x2007, 0x2008, 0x2009, 0x200A, 0x202F, 0x205F, 0x3000, 0xFEFF].indexOf(ch) >= 0;\n} // 7.3 Line Terminators\n\n\nfunction isLineTerminator(ch) {\n  return ch === 0x0A || ch === 0x0D || ch === 0x2028 || ch === 0x2029;\n} // 7.6 Identifier Names and Identifiers\n\n\nfunction isIdentifierStart(ch) {\n  return ch === 0x24 || ch === 0x5F || // $ (dollar) and _ (underscore)\n  ch >= 0x41 && ch <= 0x5A || // A..Z\n  ch >= 0x61 && ch <= 0x7A || // a..z\n  ch === 0x5C || // \\ (backslash)\n  ch >= 0x80 && RegexNonAsciiIdentifierStart.test(String.fromCharCode(ch));\n}\n\nfunction isIdentifierPart(ch) {\n  return ch === 0x24 || ch === 0x5F || // $ (dollar) and _ (underscore)\n  ch >= 0x41 && ch <= 0x5A || // A..Z\n  ch >= 0x61 && ch <= 0x7A || // a..z\n  ch >= 0x30 && ch <= 0x39 || // 0..9\n  ch === 0x5C || // \\ (backslash)\n  ch >= 0x80 && RegexNonAsciiIdentifierPart.test(String.fromCharCode(ch));\n} // 7.6.1.1 Keywords\n\n\nconst keywords = {\n  'if': 1,\n  'in': 1,\n  'do': 1,\n  'var': 1,\n  'for': 1,\n  'new': 1,\n  'try': 1,\n  'let': 1,\n  'this': 1,\n  'else': 1,\n  'case': 1,\n  'void': 1,\n  'with': 1,\n  'enum': 1,\n  'while': 1,\n  'break': 1,\n  'catch': 1,\n  'throw': 1,\n  'const': 1,\n  'yield': 1,\n  'class': 1,\n  'super': 1,\n  'return': 1,\n  'typeof': 1,\n  'delete': 1,\n  'switch': 1,\n  'export': 1,\n  'import': 1,\n  'public': 1,\n  'static': 1,\n  'default': 1,\n  'finally': 1,\n  'extends': 1,\n  'package': 1,\n  'private': 1,\n  'function': 1,\n  'continue': 1,\n  'debugger': 1,\n  'interface': 1,\n  'protected': 1,\n  'instanceof': 1,\n  'implements': 1\n};\n\nfunction skipComment() {\n  while (index < length) {\n    const ch = source.charCodeAt(index);\n\n    if (isWhiteSpace(ch) || isLineTerminator(ch)) {\n      ++index;\n    } else {\n      break;\n    }\n  }\n}\n\nfunction scanHexEscape(prefix) {\n  var i,\n      len,\n      ch,\n      code = 0;\n  len = prefix === 'u' ? 4 : 2;\n\n  for (i = 0; i < len; ++i) {\n    if (index < length && isHexDigit(source[index])) {\n      ch = source[index++];\n      code = code * 16 + '0123456789abcdef'.indexOf(ch.toLowerCase());\n    } else {\n      throwError({}, MessageUnexpectedToken, ILLEGAL);\n    }\n  }\n\n  return String.fromCharCode(code);\n}\n\nfunction scanUnicodeCodePointEscape() {\n  var ch, code, cu1, cu2;\n  ch = source[index];\n  code = 0; // At least, one hex digit is required.\n\n  if (ch === '}') {\n    throwError({}, MessageUnexpectedToken, ILLEGAL);\n  }\n\n  while (index < length) {\n    ch = source[index++];\n\n    if (!isHexDigit(ch)) {\n      break;\n    }\n\n    code = code * 16 + '0123456789abcdef'.indexOf(ch.toLowerCase());\n  }\n\n  if (code > 0x10FFFF || ch !== '}') {\n    throwError({}, MessageUnexpectedToken, ILLEGAL);\n  } // UTF-16 Encoding\n\n\n  if (code <= 0xFFFF) {\n    return String.fromCharCode(code);\n  }\n\n  cu1 = (code - 0x10000 >> 10) + 0xD800;\n  cu2 = (code - 0x10000 & 1023) + 0xDC00;\n  return String.fromCharCode(cu1, cu2);\n}\n\nfunction getEscapedIdentifier() {\n  var ch, id;\n  ch = source.charCodeAt(index++);\n  id = String.fromCharCode(ch); // '\\u' (U+005C, U+0075) denotes an escaped character.\n\n  if (ch === 0x5C) {\n    if (source.charCodeAt(index) !== 0x75) {\n      throwError({}, MessageUnexpectedToken, ILLEGAL);\n    }\n\n    ++index;\n    ch = scanHexEscape('u');\n\n    if (!ch || ch === '\\\\' || !isIdentifierStart(ch.charCodeAt(0))) {\n      throwError({}, MessageUnexpectedToken, ILLEGAL);\n    }\n\n    id = ch;\n  }\n\n  while (index < length) {\n    ch = source.charCodeAt(index);\n\n    if (!isIdentifierPart(ch)) {\n      break;\n    }\n\n    ++index;\n    id += String.fromCharCode(ch); // '\\u' (U+005C, U+0075) denotes an escaped character.\n\n    if (ch === 0x5C) {\n      id = id.substr(0, id.length - 1);\n\n      if (source.charCodeAt(index) !== 0x75) {\n        throwError({}, MessageUnexpectedToken, ILLEGAL);\n      }\n\n      ++index;\n      ch = scanHexEscape('u');\n\n      if (!ch || ch === '\\\\' || !isIdentifierPart(ch.charCodeAt(0))) {\n        throwError({}, MessageUnexpectedToken, ILLEGAL);\n      }\n\n      id += ch;\n    }\n  }\n\n  return id;\n}\n\nfunction getIdentifier() {\n  var start, ch;\n  start = index++;\n\n  while (index < length) {\n    ch = source.charCodeAt(index);\n\n    if (ch === 0x5C) {\n      // Blackslash (U+005C) marks Unicode escape sequence.\n      index = start;\n      return getEscapedIdentifier();\n    }\n\n    if (isIdentifierPart(ch)) {\n      ++index;\n    } else {\n      break;\n    }\n  }\n\n  return source.slice(start, index);\n}\n\nfunction scanIdentifier() {\n  var start, id, type;\n  start = index; // Backslash (U+005C) starts an escaped character.\n\n  id = source.charCodeAt(index) === 0x5C ? getEscapedIdentifier() : getIdentifier(); // There is no keyword or literal with only one character.\n  // Thus, it must be an identifier.\n\n  if (id.length === 1) {\n    type = TokenIdentifier;\n  } else if (keywords.hasOwnProperty(id)) {\n    // eslint-disable-line no-prototype-builtins\n    type = TokenKeyword;\n  } else if (id === 'null') {\n    type = TokenNullLiteral;\n  } else if (id === 'true' || id === 'false') {\n    type = TokenBooleanLiteral;\n  } else {\n    type = TokenIdentifier;\n  }\n\n  return {\n    type: type,\n    value: id,\n    start: start,\n    end: index\n  };\n} // 7.7 Punctuators\n\n\nfunction scanPunctuator() {\n  var start = index,\n      code = source.charCodeAt(index),\n      code2,\n      ch1 = source[index],\n      ch2,\n      ch3,\n      ch4;\n\n  switch (code) {\n    // Check for most common single-character punctuators.\n    case 0x2E: // . dot\n\n    case 0x28: // ( open bracket\n\n    case 0x29: // ) close bracket\n\n    case 0x3B: // ; semicolon\n\n    case 0x2C: // , comma\n\n    case 0x7B: // { open curly brace\n\n    case 0x7D: // } close curly brace\n\n    case 0x5B: // [\n\n    case 0x5D: // ]\n\n    case 0x3A: // :\n\n    case 0x3F: // ?\n\n    case 0x7E:\n      // ~\n      ++index;\n      return {\n        type: TokenPunctuator,\n        value: String.fromCharCode(code),\n        start: start,\n        end: index\n      };\n\n    default:\n      code2 = source.charCodeAt(index + 1); // '=' (U+003D) marks an assignment or comparison operator.\n\n      if (code2 === 0x3D) {\n        switch (code) {\n          case 0x2B: // +\n\n          case 0x2D: // -\n\n          case 0x2F: // /\n\n          case 0x3C: // <\n\n          case 0x3E: // >\n\n          case 0x5E: // ^\n\n          case 0x7C: // |\n\n          case 0x25: // %\n\n          case 0x26: // &\n\n          case 0x2A:\n            // *\n            index += 2;\n            return {\n              type: TokenPunctuator,\n              value: String.fromCharCode(code) + String.fromCharCode(code2),\n              start: start,\n              end: index\n            };\n\n          case 0x21: // !\n\n          case 0x3D:\n            // =\n            index += 2; // !== and ===\n\n            if (source.charCodeAt(index) === 0x3D) {\n              ++index;\n            }\n\n            return {\n              type: TokenPunctuator,\n              value: source.slice(start, index),\n              start: start,\n              end: index\n            };\n        }\n      }\n\n  } // 4-character punctuator: >>>=\n\n\n  ch4 = source.substr(index, 4);\n\n  if (ch4 === '>>>=') {\n    index += 4;\n    return {\n      type: TokenPunctuator,\n      value: ch4,\n      start: start,\n      end: index\n    };\n  } // 3-character punctuators: === !== >>> <<= >>=\n\n\n  ch3 = ch4.substr(0, 3);\n\n  if (ch3 === '>>>' || ch3 === '<<=' || ch3 === '>>=') {\n    index += 3;\n    return {\n      type: TokenPunctuator,\n      value: ch3,\n      start: start,\n      end: index\n    };\n  } // Other 2-character punctuators: ++ -- << >> && ||\n\n\n  ch2 = ch3.substr(0, 2);\n\n  if (ch1 === ch2[1] && '+-<>&|'.indexOf(ch1) >= 0 || ch2 === '=>') {\n    index += 2;\n    return {\n      type: TokenPunctuator,\n      value: ch2,\n      start: start,\n      end: index\n    };\n  }\n\n  if (ch2 === '//') {\n    throwError({}, MessageUnexpectedToken, ILLEGAL);\n  } // 1-character punctuators: < > = ! + - * % & | ^ /\n\n\n  if ('<>=!+-*%&|^/'.indexOf(ch1) >= 0) {\n    ++index;\n    return {\n      type: TokenPunctuator,\n      value: ch1,\n      start: start,\n      end: index\n    };\n  }\n\n  throwError({}, MessageUnexpectedToken, ILLEGAL);\n} // 7.8.3 Numeric Literals\n\n\nfunction scanHexLiteral(start) {\n  let number = '';\n\n  while (index < length) {\n    if (!isHexDigit(source[index])) {\n      break;\n    }\n\n    number += source[index++];\n  }\n\n  if (number.length === 0) {\n    throwError({}, MessageUnexpectedToken, ILLEGAL);\n  }\n\n  if (isIdentifierStart(source.charCodeAt(index))) {\n    throwError({}, MessageUnexpectedToken, ILLEGAL);\n  }\n\n  return {\n    type: TokenNumericLiteral,\n    value: parseInt('0x' + number, 16),\n    start: start,\n    end: index\n  };\n}\n\nfunction scanOctalLiteral(start) {\n  let number = '0' + source[index++];\n\n  while (index < length) {\n    if (!isOctalDigit(source[index])) {\n      break;\n    }\n\n    number += source[index++];\n  }\n\n  if (isIdentifierStart(source.charCodeAt(index)) || isDecimalDigit(source.charCodeAt(index))) {\n    throwError({}, MessageUnexpectedToken, ILLEGAL);\n  }\n\n  return {\n    type: TokenNumericLiteral,\n    value: parseInt(number, 8),\n    octal: true,\n    start: start,\n    end: index\n  };\n}\n\nfunction scanNumericLiteral() {\n  var number, start, ch;\n  ch = source[index];\n  assert(isDecimalDigit(ch.charCodeAt(0)) || ch === '.', 'Numeric literal must start with a decimal digit or a decimal point');\n  start = index;\n  number = '';\n\n  if (ch !== '.') {\n    number = source[index++];\n    ch = source[index]; // Hex number starts with '0x'.\n    // Octal number starts with '0'.\n\n    if (number === '0') {\n      if (ch === 'x' || ch === 'X') {\n        ++index;\n        return scanHexLiteral(start);\n      }\n\n      if (isOctalDigit(ch)) {\n        return scanOctalLiteral(start);\n      } // decimal number starts with '0' such as '09' is illegal.\n\n\n      if (ch && isDecimalDigit(ch.charCodeAt(0))) {\n        throwError({}, MessageUnexpectedToken, ILLEGAL);\n      }\n    }\n\n    while (isDecimalDigit(source.charCodeAt(index))) {\n      number += source[index++];\n    }\n\n    ch = source[index];\n  }\n\n  if (ch === '.') {\n    number += source[index++];\n\n    while (isDecimalDigit(source.charCodeAt(index))) {\n      number += source[index++];\n    }\n\n    ch = source[index];\n  }\n\n  if (ch === 'e' || ch === 'E') {\n    number += source[index++];\n    ch = source[index];\n\n    if (ch === '+' || ch === '-') {\n      number += source[index++];\n    }\n\n    if (isDecimalDigit(source.charCodeAt(index))) {\n      while (isDecimalDigit(source.charCodeAt(index))) {\n        number += source[index++];\n      }\n    } else {\n      throwError({}, MessageUnexpectedToken, ILLEGAL);\n    }\n  }\n\n  if (isIdentifierStart(source.charCodeAt(index))) {\n    throwError({}, MessageUnexpectedToken, ILLEGAL);\n  }\n\n  return {\n    type: TokenNumericLiteral,\n    value: parseFloat(number),\n    start: start,\n    end: index\n  };\n} // 7.8.4 String Literals\n\n\nfunction scanStringLiteral() {\n  var str = '',\n      quote,\n      start,\n      ch,\n      code,\n      octal = false;\n  quote = source[index];\n  assert(quote === '\\'' || quote === '\"', 'String literal must starts with a quote');\n  start = index;\n  ++index;\n\n  while (index < length) {\n    ch = source[index++];\n\n    if (ch === quote) {\n      quote = '';\n      break;\n    } else if (ch === '\\\\') {\n      ch = source[index++];\n\n      if (!ch || !isLineTerminator(ch.charCodeAt(0))) {\n        switch (ch) {\n          case 'u':\n          case 'x':\n            if (source[index] === '{') {\n              ++index;\n              str += scanUnicodeCodePointEscape();\n            } else {\n              str += scanHexEscape(ch);\n            }\n\n            break;\n\n          case 'n':\n            str += '\\n';\n            break;\n\n          case 'r':\n            str += '\\r';\n            break;\n\n          case 't':\n            str += '\\t';\n            break;\n\n          case 'b':\n            str += '\\b';\n            break;\n\n          case 'f':\n            str += '\\f';\n            break;\n\n          case 'v':\n            str += '\\x0B';\n            break;\n\n          default:\n            if (isOctalDigit(ch)) {\n              code = '01234567'.indexOf(ch); // \\0 is not octal escape sequence\n\n              if (code !== 0) {\n                octal = true;\n              }\n\n              if (index < length && isOctalDigit(source[index])) {\n                octal = true;\n                code = code * 8 + '01234567'.indexOf(source[index++]); // 3 digits are only allowed when string starts\n                // with 0, 1, 2, 3\n\n                if ('0123'.indexOf(ch) >= 0 && index < length && isOctalDigit(source[index])) {\n                  code = code * 8 + '01234567'.indexOf(source[index++]);\n                }\n              }\n\n              str += String.fromCharCode(code);\n            } else {\n              str += ch;\n            }\n\n            break;\n        }\n      } else {\n        if (ch === '\\r' && source[index] === '\\n') {\n          ++index;\n        }\n      }\n    } else if (isLineTerminator(ch.charCodeAt(0))) {\n      break;\n    } else {\n      str += ch;\n    }\n  }\n\n  if (quote !== '') {\n    throwError({}, MessageUnexpectedToken, ILLEGAL);\n  }\n\n  return {\n    type: TokenStringLiteral,\n    value: str,\n    octal: octal,\n    start: start,\n    end: index\n  };\n}\n\nfunction testRegExp(pattern, flags) {\n  let tmp = pattern;\n\n  if (flags.indexOf('u') >= 0) {\n    // Replace each astral symbol and every Unicode code point\n    // escape sequence with a single ASCII symbol to avoid throwing on\n    // regular expressions that are only valid in combination with the\n    // `/u` flag.\n    // Note: replacing with the ASCII symbol `x` might cause false\n    // negatives in unlikely scenarios. For example, `[\\u{61}-b]` is a\n    // perfectly valid pattern that is equivalent to `[a-b]`, but it\n    // would be replaced by `[x-b]` which throws an error.\n    tmp = tmp.replace(/\\\\u\\{([0-9a-fA-F]+)\\}/g, ($0, $1) => {\n      if (parseInt($1, 16) <= 0x10FFFF) {\n        return 'x';\n      }\n\n      throwError({}, MessageInvalidRegExp);\n    }).replace(/[\\uD800-\\uDBFF][\\uDC00-\\uDFFF]/g, 'x');\n  } // First, detect invalid regular expressions.\n\n\n  try {\n    new RegExp(tmp);\n  } catch (e) {\n    throwError({}, MessageInvalidRegExp);\n  } // Return a regular expression object for this pattern-flag pair, or\n  // `null` in case the current environment doesn't support the flags it\n  // uses.\n\n\n  try {\n    return new RegExp(pattern, flags);\n  } catch (exception) {\n    return null;\n  }\n}\n\nfunction scanRegExpBody() {\n  var ch, str, classMarker, terminated, body;\n  ch = source[index];\n  assert(ch === '/', 'Regular expression literal must start with a slash');\n  str = source[index++];\n  classMarker = false;\n  terminated = false;\n\n  while (index < length) {\n    ch = source[index++];\n    str += ch;\n\n    if (ch === '\\\\') {\n      ch = source[index++]; // ECMA-262 7.8.5\n\n      if (isLineTerminator(ch.charCodeAt(0))) {\n        throwError({}, MessageUnterminatedRegExp);\n      }\n\n      str += ch;\n    } else if (isLineTerminator(ch.charCodeAt(0))) {\n      throwError({}, MessageUnterminatedRegExp);\n    } else if (classMarker) {\n      if (ch === ']') {\n        classMarker = false;\n      }\n    } else {\n      if (ch === '/') {\n        terminated = true;\n        break;\n      } else if (ch === '[') {\n        classMarker = true;\n      }\n    }\n  }\n\n  if (!terminated) {\n    throwError({}, MessageUnterminatedRegExp);\n  } // Exclude leading and trailing slash.\n\n\n  body = str.substr(1, str.length - 2);\n  return {\n    value: body,\n    literal: str\n  };\n}\n\nfunction scanRegExpFlags() {\n  var ch, str, flags;\n  str = '';\n  flags = '';\n\n  while (index < length) {\n    ch = source[index];\n\n    if (!isIdentifierPart(ch.charCodeAt(0))) {\n      break;\n    }\n\n    ++index;\n\n    if (ch === '\\\\' && index < length) {\n      throwError({}, MessageUnexpectedToken, ILLEGAL);\n    } else {\n      flags += ch;\n      str += ch;\n    }\n  }\n\n  if (flags.search(/[^gimuy]/g) >= 0) {\n    throwError({}, MessageInvalidRegExp, flags);\n  }\n\n  return {\n    value: flags,\n    literal: str\n  };\n}\n\nfunction scanRegExp() {\n  var start, body, flags, value;\n  lookahead = null;\n  skipComment();\n  start = index;\n  body = scanRegExpBody();\n  flags = scanRegExpFlags();\n  value = testRegExp(body.value, flags.value);\n  return {\n    literal: body.literal + flags.literal,\n    value: value,\n    regex: {\n      pattern: body.value,\n      flags: flags.value\n    },\n    start: start,\n    end: index\n  };\n}\n\nfunction isIdentifierName(token) {\n  return token.type === TokenIdentifier || token.type === TokenKeyword || token.type === TokenBooleanLiteral || token.type === TokenNullLiteral;\n}\n\nfunction advance() {\n  skipComment();\n\n  if (index >= length) {\n    return {\n      type: TokenEOF,\n      start: index,\n      end: index\n    };\n  }\n\n  const ch = source.charCodeAt(index);\n\n  if (isIdentifierStart(ch)) {\n    return scanIdentifier();\n  } // Very common: ( and ) and ;\n\n\n  if (ch === 0x28 || ch === 0x29 || ch === 0x3B) {\n    return scanPunctuator();\n  } // String literal starts with single quote (U+0027) or double quote (U+0022).\n\n\n  if (ch === 0x27 || ch === 0x22) {\n    return scanStringLiteral();\n  } // Dot (.) U+002E can also start a floating-point number, hence the need\n  // to check the next character.\n\n\n  if (ch === 0x2E) {\n    if (isDecimalDigit(source.charCodeAt(index + 1))) {\n      return scanNumericLiteral();\n    }\n\n    return scanPunctuator();\n  }\n\n  if (isDecimalDigit(ch)) {\n    return scanNumericLiteral();\n  }\n\n  return scanPunctuator();\n}\n\nfunction lex() {\n  const token = lookahead;\n  index = token.end;\n  lookahead = advance();\n  index = token.end;\n  return token;\n}\n\nfunction peek() {\n  const pos = index;\n  lookahead = advance();\n  index = pos;\n}\n\nfunction finishArrayExpression(elements) {\n  const node = new ASTNode(SyntaxArrayExpression);\n  node.elements = elements;\n  return node;\n}\n\nfunction finishBinaryExpression(operator, left, right) {\n  const node = new ASTNode(operator === '||' || operator === '&&' ? SyntaxLogicalExpression : SyntaxBinaryExpression);\n  node.operator = operator;\n  node.left = left;\n  node.right = right;\n  return node;\n}\n\nfunction finishCallExpression(callee, args) {\n  const node = new ASTNode(SyntaxCallExpression);\n  node.callee = callee;\n  node.arguments = args;\n  return node;\n}\n\nfunction finishConditionalExpression(test, consequent, alternate) {\n  const node = new ASTNode(SyntaxConditionalExpression);\n  node.test = test;\n  node.consequent = consequent;\n  node.alternate = alternate;\n  return node;\n}\n\nfunction finishIdentifier(name) {\n  const node = new ASTNode(SyntaxIdentifier);\n  node.name = name;\n  return node;\n}\n\nfunction finishLiteral(token) {\n  const node = new ASTNode(SyntaxLiteral);\n  node.value = token.value;\n  node.raw = source.slice(token.start, token.end);\n\n  if (token.regex) {\n    if (node.raw === '//') {\n      node.raw = '/(?:)/';\n    }\n\n    node.regex = token.regex;\n  }\n\n  return node;\n}\n\nfunction finishMemberExpression(accessor, object, property) {\n  const node = new ASTNode(SyntaxMemberExpression);\n  node.computed = accessor === '[';\n  node.object = object;\n  node.property = property;\n  if (!node.computed) property.member = true;\n  return node;\n}\n\nfunction finishObjectExpression(properties) {\n  const node = new ASTNode(SyntaxObjectExpression);\n  node.properties = properties;\n  return node;\n}\n\nfunction finishProperty(kind, key, value) {\n  const node = new ASTNode(SyntaxProperty);\n  node.key = key;\n  node.value = value;\n  node.kind = kind;\n  return node;\n}\n\nfunction finishUnaryExpression(operator, argument) {\n  const node = new ASTNode(SyntaxUnaryExpression);\n  node.operator = operator;\n  node.argument = argument;\n  node.prefix = true;\n  return node;\n} // Throw an exception\n\n\nfunction throwError(token, messageFormat) {\n  var error,\n      args = Array.prototype.slice.call(arguments, 2),\n      msg = messageFormat.replace(/%(\\d)/g, (whole, index) => {\n    assert(index < args.length, 'Message reference must be in range');\n    return args[index];\n  });\n  error = new Error(msg);\n  error.index = index;\n  error.description = msg;\n  throw error;\n} // Throw an exception because of the token.\n\n\nfunction throwUnexpected(token) {\n  if (token.type === TokenEOF) {\n    throwError(token, MessageUnexpectedEOS);\n  }\n\n  if (token.type === TokenNumericLiteral) {\n    throwError(token, MessageUnexpectedNumber);\n  }\n\n  if (token.type === TokenStringLiteral) {\n    throwError(token, MessageUnexpectedString);\n  }\n\n  if (token.type === TokenIdentifier) {\n    throwError(token, MessageUnexpectedIdentifier);\n  }\n\n  if (token.type === TokenKeyword) {\n    throwError(token, MessageUnexpectedReserved);\n  } // BooleanLiteral, NullLiteral, or Punctuator.\n\n\n  throwError(token, MessageUnexpectedToken, token.value);\n} // Expect the next token to match the specified punctuator.\n// If not, an exception will be thrown.\n\n\nfunction expect(value) {\n  const token = lex();\n\n  if (token.type !== TokenPunctuator || token.value !== value) {\n    throwUnexpected(token);\n  }\n} // Return true if the next token matches the specified punctuator.\n\n\nfunction match(value) {\n  return lookahead.type === TokenPunctuator && lookahead.value === value;\n} // Return true if the next token matches the specified keyword\n\n\nfunction matchKeyword(keyword) {\n  return lookahead.type === TokenKeyword && lookahead.value === keyword;\n} // 11.1.4 Array Initialiser\n\n\nfunction parseArrayInitialiser() {\n  const elements = [];\n  index = lookahead.start;\n  expect('[');\n\n  while (!match(']')) {\n    if (match(',')) {\n      lex();\n      elements.push(null);\n    } else {\n      elements.push(parseConditionalExpression());\n\n      if (!match(']')) {\n        expect(',');\n      }\n    }\n  }\n\n  lex();\n  return finishArrayExpression(elements);\n} // 11.1.5 Object Initialiser\n\n\nfunction parseObjectPropertyKey() {\n  index = lookahead.start;\n  const token = lex(); // Note: This function is called only from parseObjectProperty(), where\n  // EOF and Punctuator tokens are already filtered out.\n\n  if (token.type === TokenStringLiteral || token.type === TokenNumericLiteral) {\n    if (token.octal) {\n      throwError(token, MessageStrictOctalLiteral);\n    }\n\n    return finishLiteral(token);\n  }\n\n  return finishIdentifier(token.value);\n}\n\nfunction parseObjectProperty() {\n  var token, key, id, value;\n  index = lookahead.start;\n  token = lookahead;\n\n  if (token.type === TokenIdentifier) {\n    id = parseObjectPropertyKey();\n    expect(':');\n    value = parseConditionalExpression();\n    return finishProperty('init', id, value);\n  }\n\n  if (token.type === TokenEOF || token.type === TokenPunctuator) {\n    throwUnexpected(token);\n  } else {\n    key = parseObjectPropertyKey();\n    expect(':');\n    value = parseConditionalExpression();\n    return finishProperty('init', key, value);\n  }\n}\n\nfunction parseObjectInitialiser() {\n  var properties = [],\n      property,\n      name,\n      key,\n      map = {},\n      toString = String;\n  index = lookahead.start;\n  expect('{');\n\n  while (!match('}')) {\n    property = parseObjectProperty();\n\n    if (property.key.type === SyntaxIdentifier) {\n      name = property.key.name;\n    } else {\n      name = toString(property.key.value);\n    }\n\n    key = '$' + name;\n\n    if (Object.prototype.hasOwnProperty.call(map, key)) {\n      throwError({}, MessageStrictDuplicateProperty);\n    } else {\n      map[key] = true;\n    }\n\n    properties.push(property);\n\n    if (!match('}')) {\n      expect(',');\n    }\n  }\n\n  expect('}');\n  return finishObjectExpression(properties);\n} // 11.1.6 The Grouping Operator\n\n\nfunction parseGroupExpression() {\n  expect('(');\n  const expr = parseExpression();\n  expect(')');\n  return expr;\n} // 11.1 Primary Expressions\n\n\nconst legalKeywords = {\n  'if': 1\n};\n\nfunction parsePrimaryExpression() {\n  var type, token, expr;\n\n  if (match('(')) {\n    return parseGroupExpression();\n  }\n\n  if (match('[')) {\n    return parseArrayInitialiser();\n  }\n\n  if (match('{')) {\n    return parseObjectInitialiser();\n  }\n\n  type = lookahead.type;\n  index = lookahead.start;\n\n  if (type === TokenIdentifier || legalKeywords[lookahead.value]) {\n    expr = finishIdentifier(lex().value);\n  } else if (type === TokenStringLiteral || type === TokenNumericLiteral) {\n    if (lookahead.octal) {\n      throwError(lookahead, MessageStrictOctalLiteral);\n    }\n\n    expr = finishLiteral(lex());\n  } else if (type === TokenKeyword) {\n    throw new Error(DISABLED);\n  } else if (type === TokenBooleanLiteral) {\n    token = lex();\n    token.value = token.value === 'true';\n    expr = finishLiteral(token);\n  } else if (type === TokenNullLiteral) {\n    token = lex();\n    token.value = null;\n    expr = finishLiteral(token);\n  } else if (match('/') || match('/=')) {\n    expr = finishLiteral(scanRegExp());\n    peek();\n  } else {\n    throwUnexpected(lex());\n  }\n\n  return expr;\n} // 11.2 Left-Hand-Side Expressions\n\n\nfunction parseArguments() {\n  const args = [];\n  expect('(');\n\n  if (!match(')')) {\n    while (index < length) {\n      args.push(parseConditionalExpression());\n\n      if (match(')')) {\n        break;\n      }\n\n      expect(',');\n    }\n  }\n\n  expect(')');\n  return args;\n}\n\nfunction parseNonComputedProperty() {\n  index = lookahead.start;\n  const token = lex();\n\n  if (!isIdentifierName(token)) {\n    throwUnexpected(token);\n  }\n\n  return finishIdentifier(token.value);\n}\n\nfunction parseNonComputedMember() {\n  expect('.');\n  return parseNonComputedProperty();\n}\n\nfunction parseComputedMember() {\n  expect('[');\n  const expr = parseExpression();\n  expect(']');\n  return expr;\n}\n\nfunction parseLeftHandSideExpressionAllowCall() {\n  var expr, args, property;\n  expr = parsePrimaryExpression();\n\n  for (;;) {\n    if (match('.')) {\n      property = parseNonComputedMember();\n      expr = finishMemberExpression('.', expr, property);\n    } else if (match('(')) {\n      args = parseArguments();\n      expr = finishCallExpression(expr, args);\n    } else if (match('[')) {\n      property = parseComputedMember();\n      expr = finishMemberExpression('[', expr, property);\n    } else {\n      break;\n    }\n  }\n\n  return expr;\n} // 11.3 Postfix Expressions\n\n\nfunction parsePostfixExpression() {\n  const expr = parseLeftHandSideExpressionAllowCall();\n\n  if (lookahead.type === TokenPunctuator) {\n    if (match('++') || match('--')) {\n      throw new Error(DISABLED);\n    }\n  }\n\n  return expr;\n} // 11.4 Unary Operators\n\n\nfunction parseUnaryExpression() {\n  var token, expr;\n\n  if (lookahead.type !== TokenPunctuator && lookahead.type !== TokenKeyword) {\n    expr = parsePostfixExpression();\n  } else if (match('++') || match('--')) {\n    throw new Error(DISABLED);\n  } else if (match('+') || match('-') || match('~') || match('!')) {\n    token = lex();\n    expr = parseUnaryExpression();\n    expr = finishUnaryExpression(token.value, expr);\n  } else if (matchKeyword('delete') || matchKeyword('void') || matchKeyword('typeof')) {\n    throw new Error(DISABLED);\n  } else {\n    expr = parsePostfixExpression();\n  }\n\n  return expr;\n}\n\nfunction binaryPrecedence(token) {\n  let prec = 0;\n\n  if (token.type !== TokenPunctuator && token.type !== TokenKeyword) {\n    return 0;\n  }\n\n  switch (token.value) {\n    case '||':\n      prec = 1;\n      break;\n\n    case '&&':\n      prec = 2;\n      break;\n\n    case '|':\n      prec = 3;\n      break;\n\n    case '^':\n      prec = 4;\n      break;\n\n    case '&':\n      prec = 5;\n      break;\n\n    case '==':\n    case '!=':\n    case '===':\n    case '!==':\n      prec = 6;\n      break;\n\n    case '<':\n    case '>':\n    case '<=':\n    case '>=':\n    case 'instanceof':\n    case 'in':\n      prec = 7;\n      break;\n\n    case '<<':\n    case '>>':\n    case '>>>':\n      prec = 8;\n      break;\n\n    case '+':\n    case '-':\n      prec = 9;\n      break;\n\n    case '*':\n    case '/':\n    case '%':\n      prec = 11;\n      break;\n  }\n\n  return prec;\n} // 11.5 Multiplicative Operators\n// 11.6 Additive Operators\n// 11.7 Bitwise Shift Operators\n// 11.8 Relational Operators\n// 11.9 Equality Operators\n// 11.10 Binary Bitwise Operators\n// 11.11 Binary Logical Operators\n\n\nfunction parseBinaryExpression() {\n  var marker, markers, expr, token, prec, stack, right, operator, left, i;\n  marker = lookahead;\n  left = parseUnaryExpression();\n  token = lookahead;\n  prec = binaryPrecedence(token);\n\n  if (prec === 0) {\n    return left;\n  }\n\n  token.prec = prec;\n  lex();\n  markers = [marker, lookahead];\n  right = parseUnaryExpression();\n  stack = [left, token, right];\n\n  while ((prec = binaryPrecedence(lookahead)) > 0) {\n    // Reduce: make a binary expression from the three topmost entries.\n    while (stack.length > 2 && prec <= stack[stack.length - 2].prec) {\n      right = stack.pop();\n      operator = stack.pop().value;\n      left = stack.pop();\n      markers.pop();\n      expr = finishBinaryExpression(operator, left, right);\n      stack.push(expr);\n    } // Shift.\n\n\n    token = lex();\n    token.prec = prec;\n    stack.push(token);\n    markers.push(lookahead);\n    expr = parseUnaryExpression();\n    stack.push(expr);\n  } // Final reduce to clean-up the stack.\n\n\n  i = stack.length - 1;\n  expr = stack[i];\n  markers.pop();\n\n  while (i > 1) {\n    markers.pop();\n    expr = finishBinaryExpression(stack[i - 1].value, stack[i - 2], expr);\n    i -= 2;\n  }\n\n  return expr;\n} // 11.12 Conditional Operator\n\n\nfunction parseConditionalExpression() {\n  var expr, consequent, alternate;\n  expr = parseBinaryExpression();\n\n  if (match('?')) {\n    lex();\n    consequent = parseConditionalExpression();\n    expect(':');\n    alternate = parseConditionalExpression();\n    expr = finishConditionalExpression(expr, consequent, alternate);\n  }\n\n  return expr;\n} // 11.14 Comma Operator\n\n\nfunction parseExpression() {\n  const expr = parseConditionalExpression();\n\n  if (match(',')) {\n    throw new Error(DISABLED); // no sequence expressions\n  }\n\n  return expr;\n}\n\nfunction parser (code) {\n  source = code;\n  index = 0;\n  length = source.length;\n  lookahead = null;\n  peek();\n  const expr = parseExpression();\n\n  if (lookahead.type !== TokenEOF) {\n    throw new Error('Unexpect token after expression.');\n  }\n\n  return expr;\n}\n\nvar Constants = {\n  NaN: 'NaN',\n  E: 'Math.E',\n  LN2: 'Math.LN2',\n  LN10: 'Math.LN10',\n  LOG2E: 'Math.LOG2E',\n  LOG10E: 'Math.LOG10E',\n  PI: 'Math.PI',\n  SQRT1_2: 'Math.SQRT1_2',\n  SQRT2: 'Math.SQRT2',\n  MIN_VALUE: 'Number.MIN_VALUE',\n  MAX_VALUE: 'Number.MAX_VALUE'\n};\n\nfunction Functions (codegen) {\n  function fncall(name, args, cast, type) {\n    let obj = codegen(args[0]);\n\n    if (cast) {\n      obj = cast + '(' + obj + ')';\n      if (cast.lastIndexOf('new ', 0) === 0) obj = '(' + obj + ')';\n    }\n\n    return obj + '.' + name + (type < 0 ? '' : type === 0 ? '()' : '(' + args.slice(1).map(codegen).join(',') + ')');\n  }\n\n  function fn(name, cast, type) {\n    return args => fncall(name, args, cast, type);\n  }\n\n  const DATE = 'new Date',\n        STRING = 'String',\n        REGEXP = 'RegExp';\n  return {\n    // MATH functions\n    isNaN: 'Number.isNaN',\n    isFinite: 'Number.isFinite',\n    abs: 'Math.abs',\n    acos: 'Math.acos',\n    asin: 'Math.asin',\n    atan: 'Math.atan',\n    atan2: 'Math.atan2',\n    ceil: 'Math.ceil',\n    cos: 'Math.cos',\n    exp: 'Math.exp',\n    floor: 'Math.floor',\n    log: 'Math.log',\n    max: 'Math.max',\n    min: 'Math.min',\n    pow: 'Math.pow',\n    random: 'Math.random',\n    round: 'Math.round',\n    sin: 'Math.sin',\n    sqrt: 'Math.sqrt',\n    tan: 'Math.tan',\n    clamp: function (args) {\n      if (args.length < 3) Object(vega_util__WEBPACK_IMPORTED_MODULE_0__[\"error\"])('Missing arguments to clamp function.');\n      if (args.length > 3) Object(vega_util__WEBPACK_IMPORTED_MODULE_0__[\"error\"])('Too many arguments to clamp function.');\n      const a = args.map(codegen);\n      return 'Math.max(' + a[1] + ', Math.min(' + a[2] + ',' + a[0] + '))';\n    },\n    // DATE functions\n    now: 'Date.now',\n    utc: 'Date.UTC',\n    datetime: DATE,\n    date: fn('getDate', DATE, 0),\n    day: fn('getDay', DATE, 0),\n    year: fn('getFullYear', DATE, 0),\n    month: fn('getMonth', DATE, 0),\n    hours: fn('getHours', DATE, 0),\n    minutes: fn('getMinutes', DATE, 0),\n    seconds: fn('getSeconds', DATE, 0),\n    milliseconds: fn('getMilliseconds', DATE, 0),\n    time: fn('getTime', DATE, 0),\n    timezoneoffset: fn('getTimezoneOffset', DATE, 0),\n    utcdate: fn('getUTCDate', DATE, 0),\n    utcday: fn('getUTCDay', DATE, 0),\n    utcyear: fn('getUTCFullYear', DATE, 0),\n    utcmonth: fn('getUTCMonth', DATE, 0),\n    utchours: fn('getUTCHours', DATE, 0),\n    utcminutes: fn('getUTCMinutes', DATE, 0),\n    utcseconds: fn('getUTCSeconds', DATE, 0),\n    utcmilliseconds: fn('getUTCMilliseconds', DATE, 0),\n    // sequence functions\n    length: fn('length', null, -1),\n    join: fn('join', null),\n    indexof: fn('indexOf', null),\n    lastindexof: fn('lastIndexOf', null),\n    slice: fn('slice', null),\n    reverse: function (args) {\n      return '(' + codegen(args[0]) + ').slice().reverse()';\n    },\n    // STRING functions\n    parseFloat: 'parseFloat',\n    parseInt: 'parseInt',\n    upper: fn('toUpperCase', STRING, 0),\n    lower: fn('toLowerCase', STRING, 0),\n    substring: fn('substring', STRING),\n    split: fn('split', STRING),\n    replace: fn('replace', STRING),\n    trim: fn('trim', STRING, 0),\n    // REGEXP functions\n    regexp: REGEXP,\n    test: fn('test', REGEXP),\n    // Control Flow functions\n    if: function (args) {\n      if (args.length < 3) Object(vega_util__WEBPACK_IMPORTED_MODULE_0__[\"error\"])('Missing arguments to if function.');\n      if (args.length > 3) Object(vega_util__WEBPACK_IMPORTED_MODULE_0__[\"error\"])('Too many arguments to if function.');\n      const a = args.map(codegen);\n      return '(' + a[0] + '?' + a[1] + ':' + a[2] + ')';\n    }\n  };\n}\n\nfunction stripQuotes(s) {\n  const n = s && s.length - 1;\n  return n && (s[0] === '\"' && s[n] === '\"' || s[0] === '\\'' && s[n] === '\\'') ? s.slice(1, -1) : s;\n}\n\nfunction codegen (opt) {\n  opt = opt || {};\n  const allowed = opt.allowed ? Object(vega_util__WEBPACK_IMPORTED_MODULE_0__[\"toSet\"])(opt.allowed) : {},\n        forbidden = opt.forbidden ? Object(vega_util__WEBPACK_IMPORTED_MODULE_0__[\"toSet\"])(opt.forbidden) : {},\n        constants = opt.constants || Constants,\n        functions = (opt.functions || Functions)(visit),\n        globalvar = opt.globalvar,\n        fieldvar = opt.fieldvar,\n        outputGlobal = Object(vega_util__WEBPACK_IMPORTED_MODULE_0__[\"isFunction\"])(globalvar) ? globalvar : id => \"\".concat(globalvar, \"[\\\"\").concat(id, \"\\\"]\");\n  let globals = {},\n      fields = {},\n      memberDepth = 0;\n\n  function visit(ast) {\n    if (Object(vega_util__WEBPACK_IMPORTED_MODULE_0__[\"isString\"])(ast)) return ast;\n    const generator = Generators[ast.type];\n    if (generator == null) Object(vega_util__WEBPACK_IMPORTED_MODULE_0__[\"error\"])('Unsupported type: ' + ast.type);\n    return generator(ast);\n  }\n\n  const Generators = {\n    Literal: n => n.raw,\n    Identifier: n => {\n      const id = n.name;\n\n      if (memberDepth > 0) {\n        return id;\n      } else if (Object(vega_util__WEBPACK_IMPORTED_MODULE_0__[\"hasOwnProperty\"])(forbidden, id)) {\n        return Object(vega_util__WEBPACK_IMPORTED_MODULE_0__[\"error\"])('Illegal identifier: ' + id);\n      } else if (Object(vega_util__WEBPACK_IMPORTED_MODULE_0__[\"hasOwnProperty\"])(constants, id)) {\n        return constants[id];\n      } else if (Object(vega_util__WEBPACK_IMPORTED_MODULE_0__[\"hasOwnProperty\"])(allowed, id)) {\n        return id;\n      } else {\n        globals[id] = 1;\n        return outputGlobal(id);\n      }\n    },\n    MemberExpression: n => {\n      const d = !n.computed,\n            o = visit(n.object);\n      if (d) memberDepth += 1;\n      const p = visit(n.property);\n\n      if (o === fieldvar) {\n        // strip quotes to sanitize field name (#1653)\n        fields[stripQuotes(p)] = 1;\n      }\n\n      if (d) memberDepth -= 1;\n      return o + (d ? '.' + p : '[' + p + ']');\n    },\n    CallExpression: n => {\n      if (n.callee.type !== 'Identifier') {\n        Object(vega_util__WEBPACK_IMPORTED_MODULE_0__[\"error\"])('Illegal callee type: ' + n.callee.type);\n      }\n\n      const callee = n.callee.name,\n            args = n.arguments,\n            fn = Object(vega_util__WEBPACK_IMPORTED_MODULE_0__[\"hasOwnProperty\"])(functions, callee) && functions[callee];\n      if (!fn) Object(vega_util__WEBPACK_IMPORTED_MODULE_0__[\"error\"])('Unrecognized function: ' + callee);\n      return Object(vega_util__WEBPACK_IMPORTED_MODULE_0__[\"isFunction\"])(fn) ? fn(args) : fn + '(' + args.map(visit).join(',') + ')';\n    },\n    ArrayExpression: n => '[' + n.elements.map(visit).join(',') + ']',\n    BinaryExpression: n => '(' + visit(n.left) + ' ' + n.operator + ' ' + visit(n.right) + ')',\n    UnaryExpression: n => '(' + n.operator + visit(n.argument) + ')',\n    ConditionalExpression: n => '(' + visit(n.test) + '?' + visit(n.consequent) + ':' + visit(n.alternate) + ')',\n    LogicalExpression: n => '(' + visit(n.left) + n.operator + visit(n.right) + ')',\n    ObjectExpression: n => '{' + n.properties.map(visit).join(',') + '}',\n    Property: n => {\n      memberDepth += 1;\n      const k = visit(n.key);\n      memberDepth -= 1;\n      return k + ':' + visit(n.value);\n    }\n  };\n\n  function codegen(ast) {\n    const result = {\n      code: visit(ast),\n      globals: Object.keys(globals),\n      fields: Object.keys(fields)\n    };\n    globals = {};\n    fields = {};\n    return result;\n  }\n\n  codegen.functions = functions;\n  codegen.constants = constants;\n  return codegen;\n}\n\n\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,[encoded data, 90680 characters]\n//# sourceURL=webpack-internal:///./node_modules/vega-lite/node_modules/vega-expression/build/vega-expression.module.js\n");

/***/ }),

/***/ "./node_modules/vega-lite/node_modules/vega-util/build/vega-util.module.js":
/*!*********************************************************************************!*\
  !*** ./node_modules/vega-lite/node_modules/vega-util/build/vega-util.module.js ***!
  \*********************************************************************************/
/*! exports provided: Debug, Error, Info, None, Warn, accessor, accessorFields, accessorName, array, ascending, clampRange, compare, constant, debounce, error, extend, extent, extentIndex, falsy, fastmap, field, flush, hasOwnProperty, id, identity, inherits, inrange, isArray, isBoolean, isDate, isFunction, isIterable, isNumber, isObject, isRegExp, isString, key, lerp, logger, lruCache, merge, mergeConfig, one, pad, panLinear, panLog, panPow, panSymlog, peek, quarter, repeat, span, splitAccessPath, stringValue, toBoolean, toDate, toNumber, toSet, toString, truncate, truthy, utcquarter, visitArray, writeConfig, zero, zoomLinear, zoomLog, zoomPow, zoomSymlog */
/***/ (function(module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"Debug\", function() { return Debug; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"Error\", function() { return Error$1; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"Info\", function() { return Info; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"None\", function() { return None; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"Warn\", function() { return Warn; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"accessor\", function() { return accessor; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"accessorFields\", function() { return accessorFields; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"accessorName\", function() { return accessorName; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"array\", function() { return array; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"ascending\", function() { return ascending; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"clampRange\", function() { return clampRange; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"compare\", function() { return compare; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"constant\", function() { return constant; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"debounce\", function() { return debounce; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"error\", function() { return error; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"extend\", function() { return extend; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"extent\", function() { return extent; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"extentIndex\", function() { return extentIndex; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"falsy\", function() { return falsy; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"fastmap\", function() { return fastmap; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"field\", function() { return field; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"flush\", function() { return flush; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"hasOwnProperty\", function() { return has; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"id\", function() { return id; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"identity\", function() { return identity; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"inherits\", function() { return inherits; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"inrange\", function() { return inrange; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"isArray\", function() { return isArray; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"isBoolean\", function() { return isBoolean; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"isDate\", function() { return isDate; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"isFunction\", function() { return isFunction; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"isIterable\", function() { return isIterable; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"isNumber\", function() { return isNumber; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"isObject\", function() { return isObject; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"isRegExp\", function() { return isRegExp; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"isString\", function() { return isString; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"key\", function() { return key; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"lerp\", function() { return lerp; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"logger\", function() { return logger; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"lruCache\", function() { return lruCache; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"merge\", function() { return merge; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"mergeConfig\", function() { return mergeConfig; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"one\", function() { return one; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"pad\", function() { return pad; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"panLinear\", function() { return panLinear; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"panLog\", function() { return panLog; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"panPow\", function() { return panPow; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"panSymlog\", function() { return panSymlog; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"peek\", function() { return peek; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"quarter\", function() { return quarter; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"repeat\", function() { return repeat; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"span\", function() { return span; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"splitAccessPath\", function() { return splitAccessPath; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"stringValue\", function() { return $; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"toBoolean\", function() { return toBoolean; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"toDate\", function() { return toDate; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"toNumber\", function() { return toNumber; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"toSet\", function() { return toSet; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"toString\", function() { return toString; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"truncate\", function() { return truncate; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"truthy\", function() { return truthy; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"utcquarter\", function() { return utcquarter; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"visitArray\", function() { return visitArray; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"writeConfig\", function() { return writeConfig; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"zero\", function() { return zero; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"zoomLinear\", function() { return zoomLinear; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"zoomLog\", function() { return zoomLog; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"zoomPow\", function() { return zoomPow; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"zoomSymlog\", function() { return zoomSymlog; });\nfunction accessor (fn, fields, name) {\n  fn.fields = fields || [];\n  fn.fname = name;\n  return fn;\n}\nfunction accessorName(fn) {\n  return fn == null ? null : fn.fname;\n}\nfunction accessorFields(fn) {\n  return fn == null ? null : fn.fields;\n}\n\nfunction getter (path) {\n  return path.length === 1 ? get1(path[0]) : getN(path);\n}\n\nconst get1 = field => function (obj) {\n  return obj[field];\n};\n\nconst getN = path => {\n  const len = path.length;\n  return function (obj) {\n    for (let i = 0; i < len; ++i) {\n      obj = obj[path[i]];\n    }\n\n    return obj;\n  };\n};\n\nfunction error (message) {\n  throw Error(message);\n}\n\nfunction splitAccessPath (p) {\n  const path = [],\n        n = p.length;\n  let q = null,\n      b = 0,\n      s = '',\n      i,\n      j,\n      c;\n  p = p + '';\n\n  function push() {\n    path.push(s + p.substring(i, j));\n    s = '';\n    i = j + 1;\n  }\n\n  for (i = j = 0; j < n; ++j) {\n    c = p[j];\n\n    if (c === '\\\\') {\n      s += p.substring(i, j);\n      s += p.substring(++j, ++j);\n      i = j;\n    } else if (c === q) {\n      push();\n      q = null;\n      b = -1;\n    } else if (q) {\n      continue;\n    } else if (i === b && c === '\"') {\n      i = j + 1;\n      q = c;\n    } else if (i === b && c === \"'\") {\n      i = j + 1;\n      q = c;\n    } else if (c === '.' && !b) {\n      if (j > i) {\n        push();\n      } else {\n        i = j + 1;\n      }\n    } else if (c === '[') {\n      if (j > i) push();\n      b = i = j + 1;\n    } else if (c === ']') {\n      if (!b) error('Access path missing open bracket: ' + p);\n      if (b > 0) push();\n      b = 0;\n      i = j + 1;\n    }\n  }\n\n  if (b) error('Access path missing closing bracket: ' + p);\n  if (q) error('Access path missing closing quote: ' + p);\n\n  if (j > i) {\n    j++;\n    push();\n  }\n\n  return path;\n}\n\nfunction field (field, name, opt) {\n  const path = splitAccessPath(field);\n  field = path.length === 1 ? path[0] : field;\n  return accessor((opt && opt.get || getter)(path), [field], name || field);\n}\n\nconst id = field('id');\nconst identity = accessor(_ => _, [], 'identity');\nconst zero = accessor(() => 0, [], 'zero');\nconst one = accessor(() => 1, [], 'one');\nconst truthy = accessor(() => true, [], 'true');\nconst falsy = accessor(() => false, [], 'false');\n\nfunction log$1(method, level, input) {\n  const args = [level].concat([].slice.call(input));\n  console[method].apply(console, args); // eslint-disable-line no-console\n}\n\nconst None = 0;\nconst Error$1 = 1;\nconst Warn = 2;\nconst Info = 3;\nconst Debug = 4;\nfunction logger (_, method) {\n  let level = _ || None;\n  return {\n    level(_) {\n      if (arguments.length) {\n        level = +_;\n        return this;\n      } else {\n        return level;\n      }\n    },\n\n    error() {\n      if (level >= Error$1) log$1(method || 'error', 'ERROR', arguments);\n      return this;\n    },\n\n    warn() {\n      if (level >= Warn) log$1(method || 'warn', 'WARN', arguments);\n      return this;\n    },\n\n    info() {\n      if (level >= Info) log$1(method || 'log', 'INFO', arguments);\n      return this;\n    },\n\n    debug() {\n      if (level >= Debug) log$1(method || 'log', 'DEBUG', arguments);\n      return this;\n    }\n\n  };\n}\n\nvar isArray = Array.isArray;\n\nfunction isObject (_) {\n  return _ === Object(_);\n}\n\nconst isLegalKey = key => key !== '__proto__';\n\nfunction mergeConfig(...configs) {\n  return configs.reduce((out, source) => {\n    for (const key in source) {\n      if (key === 'signals') {\n        // for signals, we merge the signals arrays\n        // source signals take precedence over\n        // existing signals with the same name\n        out.signals = mergeNamed(out.signals, source.signals);\n      } else {\n        // otherwise, merge objects subject to recursion constraints\n        // for legend block, recurse for the layout entry only\n        // for style block, recurse for all properties\n        // otherwise, no recursion: objects overwrite, no merging\n        const r = key === 'legend' ? {\n          layout: 1\n        } : key === 'style' ? true : null;\n        writeConfig(out, key, source[key], r);\n      }\n    }\n\n    return out;\n  }, {});\n}\nfunction writeConfig(output, key, value, recurse) {\n  if (!isLegalKey(key)) return;\n  let k, o;\n\n  if (isObject(value) && !isArray(value)) {\n    o = isObject(output[key]) ? output[key] : output[key] = {};\n\n    for (k in value) {\n      if (recurse && (recurse === true || recurse[k])) {\n        writeConfig(o, k, value[k]);\n      } else if (isLegalKey(k)) {\n        o[k] = value[k];\n      }\n    }\n  } else {\n    output[key] = value;\n  }\n}\n\nfunction mergeNamed(a, b) {\n  if (a == null) return b;\n  const map = {},\n        out = [];\n\n  function add(_) {\n    if (!map[_.name]) {\n      map[_.name] = 1;\n      out.push(_);\n    }\n  }\n\n  b.forEach(add);\n  a.forEach(add);\n  return out;\n}\n\nfunction peek (array) {\n  return array[array.length - 1];\n}\n\nfunction toNumber (_) {\n  return _ == null || _ === '' ? null : +_;\n}\n\nconst exp = sign => x => sign * Math.exp(x);\n\nconst log = sign => x => Math.log(sign * x);\n\nconst symlog = c => x => Math.sign(x) * Math.log1p(Math.abs(x / c));\n\nconst symexp = c => x => Math.sign(x) * Math.expm1(Math.abs(x)) * c;\n\nconst pow = exponent => x => x < 0 ? -Math.pow(-x, exponent) : Math.pow(x, exponent);\n\nfunction pan(domain, delta, lift, ground) {\n  const d0 = lift(domain[0]),\n        d1 = lift(peek(domain)),\n        dd = (d1 - d0) * delta;\n  return [ground(d0 - dd), ground(d1 - dd)];\n}\n\nfunction panLinear(domain, delta) {\n  return pan(domain, delta, toNumber, identity);\n}\nfunction panLog(domain, delta) {\n  var sign = Math.sign(domain[0]);\n  return pan(domain, delta, log(sign), exp(sign));\n}\nfunction panPow(domain, delta, exponent) {\n  return pan(domain, delta, pow(exponent), pow(1 / exponent));\n}\nfunction panSymlog(domain, delta, constant) {\n  return pan(domain, delta, symlog(constant), symexp(constant));\n}\n\nfunction zoom(domain, anchor, scale, lift, ground) {\n  const d0 = lift(domain[0]),\n        d1 = lift(peek(domain)),\n        da = anchor != null ? lift(anchor) : (d0 + d1) / 2;\n  return [ground(da + (d0 - da) * scale), ground(da + (d1 - da) * scale)];\n}\n\nfunction zoomLinear(domain, anchor, scale) {\n  return zoom(domain, anchor, scale, toNumber, identity);\n}\nfunction zoomLog(domain, anchor, scale) {\n  const sign = Math.sign(domain[0]);\n  return zoom(domain, anchor, scale, log(sign), exp(sign));\n}\nfunction zoomPow(domain, anchor, scale, exponent) {\n  return zoom(domain, anchor, scale, pow(exponent), pow(1 / exponent));\n}\nfunction zoomSymlog(domain, anchor, scale, constant) {\n  return zoom(domain, anchor, scale, symlog(constant), symexp(constant));\n}\n\nfunction quarter(date) {\n  return 1 + ~~(new Date(date).getMonth() / 3);\n}\nfunction utcquarter(date) {\n  return 1 + ~~(new Date(date).getUTCMonth() / 3);\n}\n\nfunction array (_) {\n  return _ != null ? isArray(_) ? _ : [_] : [];\n}\n\n/**\n * Span-preserving range clamp. If the span of the input range is less\n * than (max - min) and an endpoint exceeds either the min or max value,\n * the range is translated such that the span is preserved and one\n * endpoint touches the boundary of the min/max range.\n * If the span exceeds (max - min), the range [min, max] is returned.\n */\nfunction clampRange (range, min, max) {\n  let lo = range[0],\n      hi = range[1],\n      span;\n\n  if (hi < lo) {\n    span = hi;\n    hi = lo;\n    lo = span;\n  }\n\n  span = hi - lo;\n  return span >= max - min ? [min, max] : [lo = Math.min(Math.max(lo, min), max - span), lo + span];\n}\n\nfunction isFunction (_) {\n  return typeof _ === 'function';\n}\n\nconst DESCENDING = 'descending';\nfunction compare (fields, orders, opt) {\n  opt = opt || {};\n  orders = array(orders) || [];\n  const ord = [],\n        get = [],\n        fmap = {},\n        gen = opt.comparator || comparator;\n  array(fields).forEach((f, i) => {\n    if (f == null) return;\n    ord.push(orders[i] === DESCENDING ? -1 : 1);\n    get.push(f = isFunction(f) ? f : field(f, null, opt));\n    (accessorFields(f) || []).forEach(_ => fmap[_] = 1);\n  });\n  return get.length === 0 ? null : accessor(gen(get, ord), Object.keys(fmap));\n}\nconst ascending = (u, v) => (u < v || u == null) && v != null ? -1 : (u > v || v == null) && u != null ? 1 : (v = v instanceof Date ? +v : v, u = u instanceof Date ? +u : u) !== u && v === v ? -1 : v !== v && u === u ? 1 : 0;\n\nconst comparator = (fields, orders) => fields.length === 1 ? compare1(fields[0], orders[0]) : compareN(fields, orders, fields.length);\n\nconst compare1 = (field, order) => function (a, b) {\n  return ascending(field(a), field(b)) * order;\n};\n\nconst compareN = (fields, orders, n) => {\n  orders.push(0); // pad zero for convenient lookup\n\n  return function (a, b) {\n    let f,\n        c = 0,\n        i = -1;\n\n    while (c === 0 && ++i < n) {\n      f = fields[i];\n      c = ascending(f(a), f(b));\n    }\n\n    return c * orders[i];\n  };\n};\n\nfunction constant (_) {\n  return isFunction(_) ? _ : () => _;\n}\n\nfunction debounce (delay, handler) {\n  let tid;\n  return e => {\n    if (tid) clearTimeout(tid);\n    tid = setTimeout(() => (handler(e), tid = null), delay);\n  };\n}\n\nfunction extend (_) {\n  for (let x, k, i = 1, len = arguments.length; i < len; ++i) {\n    x = arguments[i];\n\n    for (k in x) {\n      _[k] = x[k];\n    }\n  }\n\n  return _;\n}\n\n/**\n * Return an array with minimum and maximum values, in the\n * form [min, max]. Ignores null, undefined, and NaN values.\n */\nfunction extent (array, f) {\n  let i = 0,\n      n,\n      v,\n      min,\n      max;\n\n  if (array && (n = array.length)) {\n    if (f == null) {\n      // find first valid value\n      for (v = array[i]; i < n && (v == null || v !== v); v = array[++i]);\n\n      min = max = v; // visit all other values\n\n      for (; i < n; ++i) {\n        v = array[i]; // skip null/undefined; NaN will fail all comparisons\n\n        if (v != null) {\n          if (v < min) min = v;\n          if (v > max) max = v;\n        }\n      }\n    } else {\n      // find first valid value\n      for (v = f(array[i]); i < n && (v == null || v !== v); v = f(array[++i]));\n\n      min = max = v; // visit all other values\n\n      for (; i < n; ++i) {\n        v = f(array[i]); // skip null/undefined; NaN will fail all comparisons\n\n        if (v != null) {\n          if (v < min) min = v;\n          if (v > max) max = v;\n        }\n      }\n    }\n  }\n\n  return [min, max];\n}\n\nfunction extentIndex (array, f) {\n  const n = array.length;\n  let i = -1,\n      a,\n      b,\n      c,\n      u,\n      v;\n\n  if (f == null) {\n    while (++i < n) {\n      b = array[i];\n\n      if (b != null && b >= b) {\n        a = c = b;\n        break;\n      }\n    }\n\n    if (i === n) return [-1, -1];\n    u = v = i;\n\n    while (++i < n) {\n      b = array[i];\n\n      if (b != null) {\n        if (a > b) {\n          a = b;\n          u = i;\n        }\n\n        if (c < b) {\n          c = b;\n          v = i;\n        }\n      }\n    }\n  } else {\n    while (++i < n) {\n      b = f(array[i], i, array);\n\n      if (b != null && b >= b) {\n        a = c = b;\n        break;\n      }\n    }\n\n    if (i === n) return [-1, -1];\n    u = v = i;\n\n    while (++i < n) {\n      b = f(array[i], i, array);\n\n      if (b != null) {\n        if (a > b) {\n          a = b;\n          u = i;\n        }\n\n        if (c < b) {\n          c = b;\n          v = i;\n        }\n      }\n    }\n  }\n\n  return [u, v];\n}\n\nconst hop = Object.prototype.hasOwnProperty;\nfunction has (object, property) {\n  return hop.call(object, property);\n}\n\nconst NULL = {};\nfunction fastmap (input) {\n  let obj = {},\n      test;\n\n  function has$1(key) {\n    return has(obj, key) && obj[key] !== NULL;\n  }\n\n  const map = {\n    size: 0,\n    empty: 0,\n    object: obj,\n    has: has$1,\n\n    get(key) {\n      return has$1(key) ? obj[key] : undefined;\n    },\n\n    set(key, value) {\n      if (!has$1(key)) {\n        ++map.size;\n        if (obj[key] === NULL) --map.empty;\n      }\n\n      obj[key] = value;\n      return this;\n    },\n\n    delete(key) {\n      if (has$1(key)) {\n        --map.size;\n        ++map.empty;\n        obj[key] = NULL;\n      }\n\n      return this;\n    },\n\n    clear() {\n      map.size = map.empty = 0;\n      map.object = obj = {};\n    },\n\n    test(_) {\n      if (arguments.length) {\n        test = _;\n        return map;\n      } else {\n        return test;\n      }\n    },\n\n    clean() {\n      const next = {};\n      let size = 0;\n\n      for (const key in obj) {\n        const value = obj[key];\n\n        if (value !== NULL && (!test || !test(value))) {\n          next[key] = value;\n          ++size;\n        }\n      }\n\n      map.size = size;\n      map.empty = 0;\n      map.object = obj = next;\n    }\n\n  };\n  if (input) Object.keys(input).forEach(key => {\n    map.set(key, input[key]);\n  });\n  return map;\n}\n\nfunction flush (range, value, threshold, left, right, center) {\n  if (!threshold && threshold !== 0) return center;\n  const t = +threshold;\n  let a = range[0],\n      b = peek(range),\n      l; // swap endpoints if range is reversed\n\n  if (b < a) {\n    l = a;\n    a = b;\n    b = l;\n  } // compare value to endpoints\n\n\n  l = Math.abs(value - a);\n  const r = Math.abs(b - value); // adjust if value is within threshold distance of endpoint\n\n  return l < r && l <= t ? left : r <= t ? right : center;\n}\n\nfunction inherits (child, parent, members) {\n  const proto = child.prototype = Object.create(parent.prototype);\n  Object.defineProperty(proto, 'constructor', {\n    value: child,\n    writable: true,\n    enumerable: true,\n    configurable: true\n  });\n  return extend(proto, members);\n}\n\n/**\n * Predicate that returns true if the value lies within the span\n * of the given range. The left and right flags control the use\n * of inclusive (true) or exclusive (false) comparisons.\n */\nfunction inrange (value, range, left, right) {\n  let r0 = range[0],\n      r1 = range[range.length - 1],\n      t;\n\n  if (r0 > r1) {\n    t = r0;\n    r0 = r1;\n    r1 = t;\n  }\n\n  left = left === undefined || left;\n  right = right === undefined || right;\n  return (left ? r0 <= value : r0 < value) && (right ? value <= r1 : value < r1);\n}\n\nfunction isBoolean (_) {\n  return typeof _ === 'boolean';\n}\n\nfunction isDate (_) {\n  return Object.prototype.toString.call(_) === '[object Date]';\n}\n\nfunction isIterable (_) {\n  return _ && isFunction(_[Symbol.iterator]);\n}\n\nfunction isNumber (_) {\n  return typeof _ === 'number';\n}\n\nfunction isRegExp (_) {\n  return Object.prototype.toString.call(_) === '[object RegExp]';\n}\n\nfunction isString (_) {\n  return typeof _ === 'string';\n}\n\nfunction key (fields, flat, opt) {\n  if (fields) {\n    fields = flat ? array(fields).map(f => f.replace(/\\\\(.)/g, '$1')) : array(fields);\n  }\n\n  const len = fields && fields.length,\n        gen = opt && opt.get || getter,\n        map = f => gen(flat ? [f] : splitAccessPath(f));\n\n  let fn;\n\n  if (!len) {\n    fn = function () {\n      return '';\n    };\n  } else if (len === 1) {\n    const get = map(fields[0]);\n\n    fn = function (_) {\n      return '' + get(_);\n    };\n  } else {\n    const get = fields.map(map);\n\n    fn = function (_) {\n      let s = '' + get[0](_),\n          i = 0;\n\n      while (++i < len) s += '|' + get[i](_);\n\n      return s;\n    };\n  }\n\n  return accessor(fn, fields, 'key');\n}\n\nfunction lerp (array, frac) {\n  const lo = array[0],\n        hi = peek(array),\n        f = +frac;\n  return !f ? lo : f === 1 ? hi : lo + f * (hi - lo);\n}\n\nconst DEFAULT_MAX_SIZE = 10000; // adapted from https://github.com/dominictarr/hashlru/ (MIT License)\n\nfunction lruCache (maxsize) {\n  maxsize = +maxsize || DEFAULT_MAX_SIZE;\n  let curr, prev, size;\n\n  const clear = () => {\n    curr = {};\n    prev = {};\n    size = 0;\n  };\n\n  const update = (key, value) => {\n    if (++size > maxsize) {\n      prev = curr;\n      curr = {};\n      size = 1;\n    }\n\n    return curr[key] = value;\n  };\n\n  clear();\n  return {\n    clear,\n    has: key => has(curr, key) || has(prev, key),\n    get: key => has(curr, key) ? curr[key] : has(prev, key) ? update(key, prev[key]) : undefined,\n    set: (key, value) => has(curr, key) ? curr[key] = value : update(key, value)\n  };\n}\n\nfunction merge (compare, array0, array1, output) {\n  const n0 = array0.length,\n        n1 = array1.length;\n  if (!n1) return array0;\n  if (!n0) return array1;\n  const merged = output || new array0.constructor(n0 + n1);\n  let i0 = 0,\n      i1 = 0,\n      i = 0;\n\n  for (; i0 < n0 && i1 < n1; ++i) {\n    merged[i] = compare(array0[i0], array1[i1]) > 0 ? array1[i1++] : array0[i0++];\n  }\n\n  for (; i0 < n0; ++i0, ++i) {\n    merged[i] = array0[i0];\n  }\n\n  for (; i1 < n1; ++i1, ++i) {\n    merged[i] = array1[i1];\n  }\n\n  return merged;\n}\n\nfunction repeat (str, reps) {\n  let s = '';\n\n  while (--reps >= 0) s += str;\n\n  return s;\n}\n\nfunction pad (str, length, padchar, align) {\n  const c = padchar || ' ',\n        s = str + '',\n        n = length - s.length;\n  return n <= 0 ? s : align === 'left' ? repeat(c, n) + s : align === 'center' ? repeat(c, ~~(n / 2)) + s + repeat(c, Math.ceil(n / 2)) : s + repeat(c, n);\n}\n\n/**\n * Return the numerical span of an array: the difference between\n * the last and first values.\n */\n\nfunction span (array) {\n  return array && peek(array) - array[0] || 0;\n}\n\nfunction $(x) {\n  return isArray(x) ? '[' + x.map($) + ']' : isObject(x) || isString(x) ? // Output valid JSON and JS source strings.\n  // See http://timelessrepo.com/json-isnt-a-javascript-subset\n  JSON.stringify(x).replace('\\u2028', '\\\\u2028').replace('\\u2029', '\\\\u2029') : x;\n}\n\nfunction toBoolean (_) {\n  return _ == null || _ === '' ? null : !_ || _ === 'false' || _ === '0' ? false : !!_;\n}\n\nconst defaultParser = _ => isNumber(_) ? _ : isDate(_) ? _ : Date.parse(_);\n\nfunction toDate (_, parser) {\n  parser = parser || defaultParser;\n  return _ == null || _ === '' ? null : parser(_);\n}\n\nfunction toString (_) {\n  return _ == null || _ === '' ? null : _ + '';\n}\n\nfunction toSet (_) {\n  const s = {},\n        n = _.length;\n\n  for (let i = 0; i < n; ++i) s[_[i]] = true;\n\n  return s;\n}\n\nfunction truncate (str, length, align, ellipsis) {\n  const e = ellipsis != null ? ellipsis : '\\u2026',\n        s = str + '',\n        n = s.length,\n        l = Math.max(0, length - e.length);\n  return n <= length ? s : align === 'left' ? e + s.slice(n - l) : align === 'center' ? s.slice(0, Math.ceil(l / 2)) + e + s.slice(n - ~~(l / 2)) : s.slice(0, l) + e;\n}\n\nfunction visitArray (array, filter, visitor) {\n  if (array) {\n    if (filter) {\n      const n = array.length;\n\n      for (let i = 0; i < n; ++i) {\n        const t = filter(array[i]);\n        if (t) visitor(t, i, array);\n      }\n    } else {\n      array.forEach(visitor);\n    }\n  }\n}\n\n\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,[encoded data, 33060 characters]\n//# sourceURL=webpack-internal:///./node_modules/vega-lite/node_modules/vega-util/build/vega-util.module.js\n");

/***/ }),

/***/ "./node_modules/vega-regression/build/vega-regression.module.js":
/*!**********************************************************************!*\
  !*** ./node_modules/vega-regression/build/vega-regression.module.js ***!
  \**********************************************************************/
/*! exports provided: loess, regression */
/***/ (function(module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"loess\", function() { return Loess; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"regression\", function() { return Regression; });\n/* harmony import */ var vega_statistics__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! vega-statistics */ \"./node_modules/vega-statistics/build/vega-statistics.module.js\");\n/* harmony import */ var vega_dataflow__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! vega-dataflow */ \"./node_modules/vega-regression/node_modules/vega-dataflow/build/vega-dataflow.module.js\");\n/* harmony import */ var vega_util__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! vega-util */ \"./node_modules/vega-regression/node_modules/vega-util/build/vega-util.module.js\");\n\n\n\n\nfunction partition (data, groupby) {\n  var groups = [],\n      get = function (f) {\n    return f(t);\n  },\n      map,\n      i,\n      n,\n      t,\n      k,\n      g; // partition data points into stack groups\n\n\n  if (groupby == null) {\n    groups.push(data);\n  } else {\n    for (map = {}, i = 0, n = data.length; i < n; ++i) {\n      t = data[i];\n      k = groupby.map(get);\n      g = map[k];\n\n      if (!g) {\n        map[k] = g = [];\n        g.dims = k;\n        groups.push(g);\n      }\n\n      g.push(t);\n    }\n  }\n\n  return groups;\n}\n\n/**\n * Compute locally-weighted regression fits for one or more data groups.\n * @constructor\n * @param {object} params - The parameters for this operator.\n * @param {function(object): *} params.x - An accessor for the predictor data field.\n * @param {function(object): *} params.y - An accessor for the predicted data field.\n * @param {Array<function(object): *>} [params.groupby] - An array of accessors to groupby.\n * @param {number} [params.bandwidth=0.3] - The loess bandwidth.\n */\n\nfunction Loess(params) {\n  vega_dataflow__WEBPACK_IMPORTED_MODULE_1__[\"Transform\"].call(this, null, params);\n}\nLoess.Definition = {\n  'type': 'Loess',\n  'metadata': {\n    'generates': true\n  },\n  'params': [{\n    'name': 'x',\n    'type': 'field',\n    'required': true\n  }, {\n    'name': 'y',\n    'type': 'field',\n    'required': true\n  }, {\n    'name': 'groupby',\n    'type': 'field',\n    'array': true\n  }, {\n    'name': 'bandwidth',\n    'type': 'number',\n    'default': 0.3\n  }, {\n    'name': 'as',\n    'type': 'string',\n    'array': true\n  }]\n};\nObject(vega_util__WEBPACK_IMPORTED_MODULE_2__[\"inherits\"])(Loess, vega_dataflow__WEBPACK_IMPORTED_MODULE_1__[\"Transform\"], {\n  transform(_, pulse) {\n    const out = pulse.fork(pulse.NO_SOURCE | pulse.NO_FIELDS);\n\n    if (!this.value || pulse.changed() || _.modified()) {\n      const source = pulse.materialize(pulse.SOURCE).source,\n            groups = partition(source, _.groupby),\n            names = (_.groupby || []).map(vega_util__WEBPACK_IMPORTED_MODULE_2__[\"accessorName\"]),\n            m = names.length,\n            as = _.as || [Object(vega_util__WEBPACK_IMPORTED_MODULE_2__[\"accessorName\"])(_.x), Object(vega_util__WEBPACK_IMPORTED_MODULE_2__[\"accessorName\"])(_.y)],\n            values = [];\n      groups.forEach(g => {\n        Object(vega_statistics__WEBPACK_IMPORTED_MODULE_0__[\"regressionLoess\"])(g, _.x, _.y, _.bandwidth || 0.3).forEach(p => {\n          const t = {};\n\n          for (let i = 0; i < m; ++i) {\n            t[names[i]] = g.dims[i];\n          }\n\n          t[as[0]] = p[0];\n          t[as[1]] = p[1];\n          values.push(Object(vega_dataflow__WEBPACK_IMPORTED_MODULE_1__[\"ingest\"])(t));\n        });\n      });\n      if (this.value) out.rem = this.value;\n      this.value = out.add = out.source = values;\n    }\n\n    return out;\n  }\n\n});\n\nconst Methods = {\n  linear: vega_statistics__WEBPACK_IMPORTED_MODULE_0__[\"regressionLinear\"],\n  log: vega_statistics__WEBPACK_IMPORTED_MODULE_0__[\"regressionLog\"],\n  exp: vega_statistics__WEBPACK_IMPORTED_MODULE_0__[\"regressionExp\"],\n  pow: vega_statistics__WEBPACK_IMPORTED_MODULE_0__[\"regressionPow\"],\n  quad: vega_statistics__WEBPACK_IMPORTED_MODULE_0__[\"regressionQuad\"],\n  poly: vega_statistics__WEBPACK_IMPORTED_MODULE_0__[\"regressionPoly\"]\n};\n\nconst degreesOfFreedom = (method, order) => method === 'poly' ? order : method === 'quad' ? 2 : 1;\n/**\n * Compute regression fits for one or more data groups.\n * @constructor\n * @param {object} params - The parameters for this operator.\n * @param {function(object): *} params.x - An accessor for the predictor data field.\n * @param {function(object): *} params.y - An accessor for the predicted data field.\n * @param {string} [params.method='linear'] - The regression method to apply.\n * @param {Array<function(object): *>} [params.groupby] - An array of accessors to groupby.\n * @param {Array<number>} [params.extent] - The domain extent over which to plot the regression line.\n * @param {number} [params.order=3] - The polynomial order. Only applies to the 'poly' method.\n */\n\n\nfunction Regression(params) {\n  vega_dataflow__WEBPACK_IMPORTED_MODULE_1__[\"Transform\"].call(this, null, params);\n}\nRegression.Definition = {\n  'type': 'Regression',\n  'metadata': {\n    'generates': true\n  },\n  'params': [{\n    'name': 'x',\n    'type': 'field',\n    'required': true\n  }, {\n    'name': 'y',\n    'type': 'field',\n    'required': true\n  }, {\n    'name': 'groupby',\n    'type': 'field',\n    'array': true\n  }, {\n    'name': 'method',\n    'type': 'string',\n    'default': 'linear',\n    'values': Object.keys(Methods)\n  }, {\n    'name': 'order',\n    'type': 'number',\n    'default': 3\n  }, {\n    'name': 'extent',\n    'type': 'number',\n    'array': true,\n    'length': 2\n  }, {\n    'name': 'params',\n    'type': 'boolean',\n    'default': false\n  }, {\n    'name': 'as',\n    'type': 'string',\n    'array': true\n  }]\n};\nObject(vega_util__WEBPACK_IMPORTED_MODULE_2__[\"inherits\"])(Regression, vega_dataflow__WEBPACK_IMPORTED_MODULE_1__[\"Transform\"], {\n  transform(_, pulse) {\n    const out = pulse.fork(pulse.NO_SOURCE | pulse.NO_FIELDS);\n\n    if (!this.value || pulse.changed() || _.modified()) {\n      const source = pulse.materialize(pulse.SOURCE).source,\n            groups = partition(source, _.groupby),\n            names = (_.groupby || []).map(vega_util__WEBPACK_IMPORTED_MODULE_2__[\"accessorName\"]),\n            method = _.method || 'linear',\n            order = _.order || 3,\n            dof = degreesOfFreedom(method, order),\n            as = _.as || [Object(vega_util__WEBPACK_IMPORTED_MODULE_2__[\"accessorName\"])(_.x), Object(vega_util__WEBPACK_IMPORTED_MODULE_2__[\"accessorName\"])(_.y)],\n            fit = Methods[method],\n            values = [];\n      let domain = _.extent;\n\n      if (!Object(vega_util__WEBPACK_IMPORTED_MODULE_2__[\"hasOwnProperty\"])(Methods, method)) {\n        Object(vega_util__WEBPACK_IMPORTED_MODULE_2__[\"error\"])('Invalid regression method: ' + method);\n      }\n\n      if (domain != null) {\n        if (method === 'log' && domain[0] <= 0) {\n          pulse.dataflow.warn('Ignoring extent with values <= 0 for log regression.');\n          domain = null;\n        }\n      }\n\n      groups.forEach(g => {\n        const n = g.length;\n\n        if (n <= dof) {\n          pulse.dataflow.warn('Skipping regression with more parameters than data points.');\n          return;\n        }\n\n        const model = fit(g, _.x, _.y, order);\n\n        if (_.params) {\n          // if parameter vectors requested return those\n          values.push(Object(vega_dataflow__WEBPACK_IMPORTED_MODULE_1__[\"ingest\"])({\n            keys: g.dims,\n            coef: model.coef,\n            rSquared: model.rSquared\n          }));\n          return;\n        }\n\n        const dom = domain || Object(vega_util__WEBPACK_IMPORTED_MODULE_2__[\"extent\"])(g, _.x),\n              add = p => {\n          const t = {};\n\n          for (let i = 0; i < names.length; ++i) {\n            t[names[i]] = g.dims[i];\n          }\n\n          t[as[0]] = p[0];\n          t[as[1]] = p[1];\n          values.push(Object(vega_dataflow__WEBPACK_IMPORTED_MODULE_1__[\"ingest\"])(t));\n        };\n\n        if (method === 'linear') {\n          // for linear regression we only need the end points\n          dom.forEach(x => add([x, model.predict(x)]));\n        } else {\n          // otherwise return trend line sample points\n          Object(vega_statistics__WEBPACK_IMPORTED_MODULE_0__[\"sampleCurve\"])(model.predict, dom, 25, 200).forEach(add);\n        }\n      });\n      if (this.value) out.rem = this.value;\n      this.value = out.add = out.source = values;\n    }\n\n    return out;\n  }\n\n});\n\n\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,[encoded data, 11328 characters]\n//# sourceURL=webpack-internal:///./node_modules/vega-regression/build/vega-regression.module.js\n");

/***/ }),

/***/ "./node_modules/vega-regression/node_modules/d3-dsv/src/autoType.js":
/*!**************************************************************************!*\
  !*** ./node_modules/vega-regression/node_modules/d3-dsv/src/autoType.js ***!
  \**************************************************************************/
/*! exports provided: default */
/***/ (function(module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"default\", function() { return autoType; });\nfunction autoType(object) {\n  for (var key in object) {\n    var value = object[key].trim(), number, m;\n    if (!value) value = null;\n    else if (value === \"true\") value = true;\n    else if (value === \"false\") value = false;\n    else if (value === \"NaN\") value = NaN;\n    else if (!isNaN(number = +value)) value = number;\n    else if (m = value.match(/^([-+]\\d{2})?\\d{4}(-\\d{2}(-\\d{2})?)?(T\\d{2}:\\d{2}(:\\d{2}(\\.\\d{3})?)?(Z|[-+]\\d{2}:\\d{2})?)?$/)) {\n      if (fixtz && !!m[4] && !m[7]) value = value.replace(/-/g, \"/\").replace(/T/, \" \");\n      value = new Date(value);\n    }\n    else continue;\n    object[key] = value;\n  }\n  return object;\n}\n\n// https://github.com/d3/d3-dsv/issues/45\nconst fixtz = new Date(\"2019-01-01T00:00\").getHours() || new Date(\"2019-07-01T00:00\").getHours();//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvdmVnYS1yZWdyZXNzaW9uL25vZGVfbW9kdWxlcy9kMy1kc3Yvc3JjL2F1dG9UeXBlLmpzLmpzIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL3ZlZ2EtcmVncmVzc2lvbi9ub2RlX21vZHVsZXMvZDMtZHN2L3NyYy9hdXRvVHlwZS5qcz83MzJkIl0sInNvdXJjZXNDb250ZW50IjpbImV4cG9ydCBkZWZhdWx0IGZ1bmN0aW9uIGF1dG9UeXBlKG9iamVjdCkge1xuICBmb3IgKHZhciBrZXkgaW4gb2JqZWN0KSB7XG4gICAgdmFyIHZhbHVlID0gb2JqZWN0W2tleV0udHJpbSgpLCBudW1iZXIsIG07XG4gICAgaWYgKCF2YWx1ZSkgdmFsdWUgPSBudWxsO1xuICAgIGVsc2UgaWYgKHZhbHVlID09PSBcInRydWVcIikgdmFsdWUgPSB0cnVlO1xuICAgIGVsc2UgaWYgKHZhbHVlID09PSBcImZhbHNlXCIpIHZhbHVlID0gZmFsc2U7XG4gICAgZWxzZSBpZiAodmFsdWUgPT09IFwiTmFOXCIpIHZhbHVlID0gTmFOO1xuICAgIGVsc2UgaWYgKCFpc05hTihudW1iZXIgPSArdmFsdWUpKSB2YWx1ZSA9IG51bWJlcjtcbiAgICBlbHNlIGlmIChtID0gdmFsdWUubWF0Y2goL14oWy0rXVxcZHsyfSk/XFxkezR9KC1cXGR7Mn0oLVxcZHsyfSk/KT8oVFxcZHsyfTpcXGR7Mn0oOlxcZHsyfShcXC5cXGR7M30pPyk/KFp8Wy0rXVxcZHsyfTpcXGR7Mn0pPyk/JC8pKSB7XG4gICAgICBpZiAoZml4dHogJiYgISFtWzRdICYmICFtWzddKSB2YWx1ZSA9IHZhbHVlLnJlcGxhY2UoLy0vZywgXCIvXCIpLnJlcGxhY2UoL1QvLCBcIiBcIik7XG4gICAgICB2YWx1ZSA9IG5ldyBEYXRlKHZhbHVlKTtcbiAgICB9XG4gICAgZWxzZSBjb250aW51ZTtcbiAgICBvYmplY3Rba2V5XSA9IHZhbHVlO1xuICB9XG4gIHJldHVybiBvYmplY3Q7XG59XG5cbi8vIGh0dHBzOi8vZ2l0aHViLmNvbS9kMy9kMy1kc3YvaXNzdWVzLzQ1XG5jb25zdCBmaXh0eiA9IG5ldyBEYXRlKFwiMjAxOS0wMS0wMVQwMDowMFwiKS5nZXRIb3VycygpIHx8IG5ldyBEYXRlKFwiMjAxOS0wNy0wMVQwMDowMFwiKS5nZXRIb3VycygpOyJdLCJtYXBwaW5ncyI6IkFBQUE7QUFBQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EiLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///./node_modules/vega-regression/node_modules/d3-dsv/src/autoType.js\n");

/***/ }),

/***/ "./node_modules/vega-regression/node_modules/d3-dsv/src/csv.js":
/*!*********************************************************************!*\
  !*** ./node_modules/vega-regression/node_modules/d3-dsv/src/csv.js ***!
  \*********************************************************************/
/*! exports provided: csvParse, csvParseRows, csvFormat, csvFormatBody, csvFormatRows, csvFormatRow, csvFormatValue */
/***/ (function(module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"csvParse\", function() { return csvParse; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"csvParseRows\", function() { return csvParseRows; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"csvFormat\", function() { return csvFormat; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"csvFormatBody\", function() { return csvFormatBody; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"csvFormatRows\", function() { return csvFormatRows; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"csvFormatRow\", function() { return csvFormatRow; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"csvFormatValue\", function() { return csvFormatValue; });\n/* harmony import */ var _dsv_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./dsv.js */ \"./node_modules/vega-regression/node_modules/d3-dsv/src/dsv.js\");\n\n\nvar csv = Object(_dsv_js__WEBPACK_IMPORTED_MODULE_0__[\"default\"])(\",\");\n\nvar csvParse = csv.parse;\nvar csvParseRows = csv.parseRows;\nvar csvFormat = csv.format;\nvar csvFormatBody = csv.formatBody;\nvar csvFormatRows = csv.formatRows;\nvar csvFormatRow = csv.formatRow;\nvar csvFormatValue = csv.formatValue;\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvdmVnYS1yZWdyZXNzaW9uL25vZGVfbW9kdWxlcy9kMy1kc3Yvc3JjL2Nzdi5qcy5qcyIsInNvdXJjZXMiOlsid2VicGFjazovLy8uL25vZGVfbW9kdWxlcy92ZWdhLXJlZ3Jlc3Npb24vbm9kZV9tb2R1bGVzL2QzLWRzdi9zcmMvY3N2LmpzP2IwOGMiXSwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IGRzdiBmcm9tIFwiLi9kc3YuanNcIjtcblxudmFyIGNzdiA9IGRzdihcIixcIik7XG5cbmV4cG9ydCB2YXIgY3N2UGFyc2UgPSBjc3YucGFyc2U7XG5leHBvcnQgdmFyIGNzdlBhcnNlUm93cyA9IGNzdi5wYXJzZVJvd3M7XG5leHBvcnQgdmFyIGNzdkZvcm1hdCA9IGNzdi5mb3JtYXQ7XG5leHBvcnQgdmFyIGNzdkZvcm1hdEJvZHkgPSBjc3YuZm9ybWF0Qm9keTtcbmV4cG9ydCB2YXIgY3N2Rm9ybWF0Um93cyA9IGNzdi5mb3JtYXRSb3dzO1xuZXhwb3J0IHZhciBjc3ZGb3JtYXRSb3cgPSBjc3YuZm9ybWF0Um93O1xuZXhwb3J0IHZhciBjc3ZGb3JtYXRWYWx1ZSA9IGNzdi5mb3JtYXRWYWx1ZTtcbiJdLCJtYXBwaW5ncyI6IkFBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTsiLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///./node_modules/vega-regression/node_modules/d3-dsv/src/csv.js\n");

/***/ }),

/***/ "./node_modules/vega-regression/node_modules/d3-dsv/src/dsv.js":
/*!*********************************************************************!*\
  !*** ./node_modules/vega-regression/node_modules/d3-dsv/src/dsv.js ***!
  \*********************************************************************/
/*! exports provided: default */
/***/ (function(module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\nvar EOL = {},\n    EOF = {},\n    QUOTE = 34,\n    NEWLINE = 10,\n    RETURN = 13;\n\nfunction objectConverter(columns) {\n  return new Function(\"d\", \"return {\" + columns.map(function(name, i) {\n    return JSON.stringify(name) + \": d[\" + i + \"] || \\\"\\\"\";\n  }).join(\",\") + \"}\");\n}\n\nfunction customConverter(columns, f) {\n  var object = objectConverter(columns);\n  return function(row, i) {\n    return f(object(row), i, columns);\n  };\n}\n\n// Compute unique columns in order of discovery.\nfunction inferColumns(rows) {\n  var columnSet = Object.create(null),\n      columns = [];\n\n  rows.forEach(function(row) {\n    for (var column in row) {\n      if (!(column in columnSet)) {\n        columns.push(columnSet[column] = column);\n      }\n    }\n  });\n\n  return columns;\n}\n\nfunction pad(value, width) {\n  var s = value + \"\", length = s.length;\n  return length < width ? new Array(width - length + 1).join(0) + s : s;\n}\n\nfunction formatYear(year) {\n  return year < 0 ? \"-\" + pad(-year, 6)\n    : year > 9999 ? \"+\" + pad(year, 6)\n    : pad(year, 4);\n}\n\nfunction formatDate(date) {\n  var hours = date.getUTCHours(),\n      minutes = date.getUTCMinutes(),\n      seconds = date.getUTCSeconds(),\n      milliseconds = date.getUTCMilliseconds();\n  return isNaN(date) ? \"Invalid Date\"\n      : formatYear(date.getUTCFullYear(), 4) + \"-\" + pad(date.getUTCMonth() + 1, 2) + \"-\" + pad(date.getUTCDate(), 2)\n      + (milliseconds ? \"T\" + pad(hours, 2) + \":\" + pad(minutes, 2) + \":\" + pad(seconds, 2) + \".\" + pad(milliseconds, 3) + \"Z\"\n      : seconds ? \"T\" + pad(hours, 2) + \":\" + pad(minutes, 2) + \":\" + pad(seconds, 2) + \"Z\"\n      : minutes || hours ? \"T\" + pad(hours, 2) + \":\" + pad(minutes, 2) + \"Z\"\n      : \"\");\n}\n\n/* harmony default export */ __webpack_exports__[\"default\"] = (function(delimiter) {\n  var reFormat = new RegExp(\"[\\\"\" + delimiter + \"\\n\\r]\"),\n      DELIMITER = delimiter.charCodeAt(0);\n\n  function parse(text, f) {\n    var convert, columns, rows = parseRows(text, function(row, i) {\n      if (convert) return convert(row, i - 1);\n      columns = row, convert = f ? customConverter(row, f) : objectConverter(row);\n    });\n    rows.columns = columns || [];\n    return rows;\n  }\n\n  function parseRows(text, f) {\n    var rows = [], // output rows\n        N = text.length,\n        I = 0, // current character index\n        n = 0, // current line number\n        t, // current token\n        eof = N <= 0, // current token followed by EOF?\n        eol = false; // current token followed by EOL?\n\n    // Strip the trailing newline.\n    if (text.charCodeAt(N - 1) === NEWLINE) --N;\n    if (text.charCodeAt(N - 1) === RETURN) --N;\n\n    function token() {\n      if (eof) return EOF;\n      if (eol) return eol = false, EOL;\n\n      // Unescape quotes.\n      var i, j = I, c;\n      if (text.charCodeAt(j) === QUOTE) {\n        while (I++ < N && text.charCodeAt(I) !== QUOTE || text.charCodeAt(++I) === QUOTE);\n        if ((i = I) >= N) eof = true;\n        else if ((c = text.charCodeAt(I++)) === NEWLINE) eol = true;\n        else if (c === RETURN) { eol = true; if (text.charCodeAt(I) === NEWLINE) ++I; }\n        return text.slice(j + 1, i - 1).replace(/\"\"/g, \"\\\"\");\n      }\n\n      // Find next delimiter or newline.\n      while (I < N) {\n        if ((c = text.charCodeAt(i = I++)) === NEWLINE) eol = true;\n        else if (c === RETURN) { eol = true; if (text.charCodeAt(I) === NEWLINE) ++I; }\n        else if (c !== DELIMITER) continue;\n        return text.slice(j, i);\n      }\n\n      // Return last token before EOF.\n      return eof = true, text.slice(j, N);\n    }\n\n    while ((t = token()) !== EOF) {\n      var row = [];\n      while (t !== EOL && t !== EOF) row.push(t), t = token();\n      if (f && (row = f(row, n++)) == null) continue;\n      rows.push(row);\n    }\n\n    return rows;\n  }\n\n  function preformatBody(rows, columns) {\n    return rows.map(function(row) {\n      return columns.map(function(column) {\n        return formatValue(row[column]);\n      }).join(delimiter);\n    });\n  }\n\n  function format(rows, columns) {\n    if (columns == null) columns = inferColumns(rows);\n    return [columns.map(formatValue).join(delimiter)].concat(preformatBody(rows, columns)).join(\"\\n\");\n  }\n\n  function formatBody(rows, columns) {\n    if (columns == null) columns = inferColumns(rows);\n    return preformatBody(rows, columns).join(\"\\n\");\n  }\n\n  function formatRows(rows) {\n    return rows.map(formatRow).join(\"\\n\");\n  }\n\n  function formatRow(row) {\n    return row.map(formatValue).join(delimiter);\n  }\n\n  function formatValue(value) {\n    return value == null ? \"\"\n        : value instanceof Date ? formatDate(value)\n        : reFormat.test(value += \"\") ? \"\\\"\" + value.replace(/\"/g, \"\\\"\\\"\") + \"\\\"\"\n        : value;\n  }\n\n  return {\n    parse: parse,\n    parseRows: parseRows,\n    format: format,\n    formatBody: formatBody,\n    formatRows: formatRows,\n    formatRow: formatRow,\n    formatValue: formatValue\n  };\n});\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,[encoded data, 8208 characters]\n//# sourceURL=webpack-internal:///./node_modules/vega-regression/node_modules/d3-dsv/src/dsv.js\n");

/***/ }),

/***/ "./node_modules/vega-regression/node_modules/d3-dsv/src/index.js":
/*!***********************************************************************!*\
  !*** ./node_modules/vega-regression/node_modules/d3-dsv/src/index.js ***!
  \***********************************************************************/
/*! exports provided: dsvFormat, csvParse, csvParseRows, csvFormat, csvFormatBody, csvFormatRows, csvFormatRow, csvFormatValue, tsvParse, tsvParseRows, tsvFormat, tsvFormatBody, tsvFormatRows, tsvFormatRow, tsvFormatValue, autoType */
/***/ (function(module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _dsv_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./dsv.js */ \"./node_modules/vega-regression/node_modules/d3-dsv/src/dsv.js\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"dsvFormat\", function() { return _dsv_js__WEBPACK_IMPORTED_MODULE_0__[\"default\"]; });\n\n/* harmony import */ var _csv_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./csv.js */ \"./node_modules/vega-regression/node_modules/d3-dsv/src/csv.js\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"csvParse\", function() { return _csv_js__WEBPACK_IMPORTED_MODULE_1__[\"csvParse\"]; });\n\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"csvParseRows\", function() { return _csv_js__WEBPACK_IMPORTED_MODULE_1__[\"csvParseRows\"]; });\n\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"csvFormat\", function() { return _csv_js__WEBPACK_IMPORTED_MODULE_1__[\"csvFormat\"]; });\n\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"csvFormatBody\", function() { return _csv_js__WEBPACK_IMPORTED_MODULE_1__[\"csvFormatBody\"]; });\n\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"csvFormatRows\", function() { return _csv_js__WEBPACK_IMPORTED_MODULE_1__[\"csvFormatRows\"]; });\n\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"csvFormatRow\", function() { return _csv_js__WEBPACK_IMPORTED_MODULE_1__[\"csvFormatRow\"]; });\n\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"csvFormatValue\", function() { return _csv_js__WEBPACK_IMPORTED_MODULE_1__[\"csvFormatValue\"]; });\n\n/* harmony import */ var _tsv_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./tsv.js */ \"./node_modules/vega-regression/node_modules/d3-dsv/src/tsv.js\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"tsvParse\", function() { return _tsv_js__WEBPACK_IMPORTED_MODULE_2__[\"tsvParse\"]; });\n\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"tsvParseRows\", function() { return _tsv_js__WEBPACK_IMPORTED_MODULE_2__[\"tsvParseRows\"]; });\n\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"tsvFormat\", function() { return _tsv_js__WEBPACK_IMPORTED_MODULE_2__[\"tsvFormat\"]; });\n\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"tsvFormatBody\", function() { return _tsv_js__WEBPACK_IMPORTED_MODULE_2__[\"tsvFormatBody\"]; });\n\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"tsvFormatRows\", function() { return _tsv_js__WEBPACK_IMPORTED_MODULE_2__[\"tsvFormatRows\"]; });\n\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"tsvFormatRow\", function() { return _tsv_js__WEBPACK_IMPORTED_MODULE_2__[\"tsvFormatRow\"]; });\n\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"tsvFormatValue\", function() { return _tsv_js__WEBPACK_IMPORTED_MODULE_2__[\"tsvFormatValue\"]; });\n\n/* harmony import */ var _autoType_js__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ./autoType.js */ \"./node_modules/vega-regression/node_modules/d3-dsv/src/autoType.js\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"autoType\", function() { return _autoType_js__WEBPACK_IMPORTED_MODULE_3__[\"default\"]; });\n\n\n\n\n\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvdmVnYS1yZWdyZXNzaW9uL25vZGVfbW9kdWxlcy9kMy1kc3Yvc3JjL2luZGV4LmpzLmpzIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL3ZlZ2EtcmVncmVzc2lvbi9ub2RlX21vZHVsZXMvZDMtZHN2L3NyYy9pbmRleC5qcz84Y2MzIl0sInNvdXJjZXNDb250ZW50IjpbImV4cG9ydCB7ZGVmYXVsdCBhcyBkc3ZGb3JtYXR9IGZyb20gXCIuL2Rzdi5qc1wiO1xuZXhwb3J0IHtjc3ZQYXJzZSwgY3N2UGFyc2VSb3dzLCBjc3ZGb3JtYXQsIGNzdkZvcm1hdEJvZHksIGNzdkZvcm1hdFJvd3MsIGNzdkZvcm1hdFJvdywgY3N2Rm9ybWF0VmFsdWV9IGZyb20gXCIuL2Nzdi5qc1wiO1xuZXhwb3J0IHt0c3ZQYXJzZSwgdHN2UGFyc2VSb3dzLCB0c3ZGb3JtYXQsIHRzdkZvcm1hdEJvZHksIHRzdkZvcm1hdFJvd3MsIHRzdkZvcm1hdFJvdywgdHN2Rm9ybWF0VmFsdWV9IGZyb20gXCIuL3Rzdi5qc1wiO1xuZXhwb3J0IHtkZWZhdWx0IGFzIGF1dG9UeXBlfSBmcm9tIFwiLi9hdXRvVHlwZS5qc1wiO1xuIl0sIm1hcHBpbmdzIjoiQUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQ0E7QUFDQTtBQUNBOyIsInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///./node_modules/vega-regression/node_modules/d3-dsv/src/index.js\n");

/***/ }),

/***/ "./node_modules/vega-regression/node_modules/d3-dsv/src/tsv.js":
/*!*********************************************************************!*\
  !*** ./node_modules/vega-regression/node_modules/d3-dsv/src/tsv.js ***!
  \*********************************************************************/
/*! exports provided: tsvParse, tsvParseRows, tsvFormat, tsvFormatBody, tsvFormatRows, tsvFormatRow, tsvFormatValue */
/***/ (function(module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"tsvParse\", function() { return tsvParse; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"tsvParseRows\", function() { return tsvParseRows; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"tsvFormat\", function() { return tsvFormat; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"tsvFormatBody\", function() { return tsvFormatBody; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"tsvFormatRows\", function() { return tsvFormatRows; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"tsvFormatRow\", function() { return tsvFormatRow; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"tsvFormatValue\", function() { return tsvFormatValue; });\n/* harmony import */ var _dsv_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./dsv.js */ \"./node_modules/vega-regression/node_modules/d3-dsv/src/dsv.js\");\n\n\nvar tsv = Object(_dsv_js__WEBPACK_IMPORTED_MODULE_0__[\"default\"])(\"\\t\");\n\nvar tsvParse = tsv.parse;\nvar tsvParseRows = tsv.parseRows;\nvar tsvFormat = tsv.format;\nvar tsvFormatBody = tsv.formatBody;\nvar tsvFormatRows = tsv.formatRows;\nvar tsvFormatRow = tsv.formatRow;\nvar tsvFormatValue = tsv.formatValue;\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvdmVnYS1yZWdyZXNzaW9uL25vZGVfbW9kdWxlcy9kMy1kc3Yvc3JjL3Rzdi5qcy5qcyIsInNvdXJjZXMiOlsid2VicGFjazovLy8uL25vZGVfbW9kdWxlcy92ZWdhLXJlZ3Jlc3Npb24vbm9kZV9tb2R1bGVzL2QzLWRzdi9zcmMvdHN2LmpzPzEwMTAiXSwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IGRzdiBmcm9tIFwiLi9kc3YuanNcIjtcblxudmFyIHRzdiA9IGRzdihcIlxcdFwiKTtcblxuZXhwb3J0IHZhciB0c3ZQYXJzZSA9IHRzdi5wYXJzZTtcbmV4cG9ydCB2YXIgdHN2UGFyc2VSb3dzID0gdHN2LnBhcnNlUm93cztcbmV4cG9ydCB2YXIgdHN2Rm9ybWF0ID0gdHN2LmZvcm1hdDtcbmV4cG9ydCB2YXIgdHN2Rm9ybWF0Qm9keSA9IHRzdi5mb3JtYXRCb2R5O1xuZXhwb3J0IHZhciB0c3ZGb3JtYXRSb3dzID0gdHN2LmZvcm1hdFJvd3M7XG5leHBvcnQgdmFyIHRzdkZvcm1hdFJvdyA9IHRzdi5mb3JtYXRSb3c7XG5leHBvcnQgdmFyIHRzdkZvcm1hdFZhbHVlID0gdHN2LmZvcm1hdFZhbHVlO1xuIl0sIm1hcHBpbmdzIjoiQUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOyIsInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///./node_modules/vega-regression/node_modules/d3-dsv/src/tsv.js\n");

/***/ }),

/***/ "./node_modules/vega-regression/node_modules/vega-dataflow/build/vega-dataflow.module.js":
/*!***********************************************************************************************!*\
  !*** ./node_modules/vega-regression/node_modules/vega-dataflow/build/vega-dataflow.module.js ***!
  \***********************************************************************************************/
/*! exports provided: Dataflow, EventStream, MultiPulse, Operator, Parameters, Pulse, Transform, UniqueList, asyncCallback, changeset, definition, derive, ingest, isChangeSet, isTuple, rederive, replace, stableCompare, transform, transforms, tupleid */
/***/ (function(module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"Dataflow\", function() { return Dataflow; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"EventStream\", function() { return EventStream; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"MultiPulse\", function() { return MultiPulse; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"Operator\", function() { return Operator; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"Parameters\", function() { return Parameters; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"Pulse\", function() { return Pulse; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"Transform\", function() { return Transform; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"UniqueList\", function() { return UniqueList; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"asyncCallback\", function() { return asyncCallback; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"changeset\", function() { return changeset; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"definition\", function() { return definition; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"derive\", function() { return derive; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"ingest\", function() { return ingest$1; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"isChangeSet\", function() { return isChangeSet; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"isTuple\", function() { return isTuple; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"rederive\", function() { return rederive; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"replace\", function() { return replace; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"stableCompare\", function() { return stableCompare; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"transform\", function() { return transform; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"transforms\", function() { return transforms; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"tupleid\", function() { return tupleid; });\n/* harmony import */ var vega_util__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! vega-util */ \"./node_modules/vega-regression/node_modules/vega-util/build/vega-util.module.js\");\n/* harmony import */ var vega_loader__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! vega-loader */ \"./node_modules/vega-regression/node_modules/vega-loader/index.browser.js\");\n/* harmony import */ var vega_format__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! vega-format */ \"./node_modules/vega-format/build/vega-format.module.js\");\n\n\n\n\nfunction UniqueList(idFunc) {\n  const $ = idFunc || vega_util__WEBPACK_IMPORTED_MODULE_0__[\"identity\"],\n        list = [],\n        ids = {};\n\n  list.add = _ => {\n    const id = $(_);\n\n    if (!ids[id]) {\n      ids[id] = 1;\n      list.push(_);\n    }\n\n    return list;\n  };\n\n  list.remove = _ => {\n    const id = $(_);\n\n    if (ids[id]) {\n      ids[id] = 0;\n      const idx = list.indexOf(_);\n      if (idx >= 0) list.splice(idx, 1);\n    }\n\n    return list;\n  };\n\n  return list;\n}\n\n/**\n * Invoke and await a potentially async callback function. If\n * an error occurs, trap it and route to Dataflow.error.\n * @param {Dataflow} df - The dataflow instance\n * @param {function} callback - A callback function to invoke\n *   and then await. The dataflow will be passed as the single\n *   argument to the function.\n */\nasync function asyncCallback (df, callback) {\n  try {\n    await callback(df);\n  } catch (err) {\n    df.error(err);\n  }\n}\n\nconst TUPLE_ID_KEY = Symbol('vega_id');\nlet TUPLE_ID = 1;\n/**\n * Checks if an input value is a registered tuple.\n * @param {*} t - The value to check.\n * @return {boolean} True if the input is a tuple, false otherwise.\n */\n\nfunction isTuple(t) {\n  return !!(t && tupleid(t));\n}\n/**\n * Returns the id of a tuple.\n * @param {object} t - The input tuple.\n * @return {*} the tuple id.\n */\n\nfunction tupleid(t) {\n  return t[TUPLE_ID_KEY];\n}\n/**\n * Sets the id of a tuple.\n * @param {object} t - The input tuple.\n * @param {*} id - The id value to set.\n * @return {object} the input tuple.\n */\n\nfunction setid(t, id) {\n  t[TUPLE_ID_KEY] = id;\n  return t;\n}\n/**\n * Ingest an object or value as a data tuple.\n * If the input value is an object, an id field will be added to it. For\n * efficiency, the input object is modified directly. A copy is not made.\n * If the input value is a literal, it will be wrapped in a new object\n * instance, with the value accessible as the 'data' property.\n * @param datum - The value to ingest.\n * @return {object} The ingested data tuple.\n */\n\n\nfunction ingest$1(datum) {\n  const t = datum === Object(datum) ? datum : {\n    data: datum\n  };\n  return tupleid(t) ? t : setid(t, TUPLE_ID++);\n}\n/**\n * Given a source tuple, return a derived copy.\n * @param {object} t - The source tuple.\n * @return {object} The derived tuple.\n */\n\nfunction derive(t) {\n  return rederive(t, ingest$1({}));\n}\n/**\n * Rederive a derived tuple by copying values from the source tuple.\n * @param {object} t - The source tuple.\n * @param {object} d - The derived tuple.\n * @return {object} The derived tuple.\n */\n\nfunction rederive(t, d) {\n  for (const k in t) d[k] = t[k];\n\n  return d;\n}\n/**\n * Replace an existing tuple with a new tuple.\n * @param {object} t - The existing data tuple.\n * @param {object} d - The new tuple that replaces the old.\n * @return {object} The new tuple.\n */\n\nfunction replace(t, d) {\n  return setid(d, tupleid(t));\n}\n/**\n * Generate an augmented comparator function that provides stable\n * sorting by tuple id when the given comparator produces ties.\n * @param {function} cmp - The comparator to augment.\n * @param {function} [f] - Optional tuple accessor function.\n * @return {function} An augmented comparator function.\n */\n\nfunction stableCompare(cmp, f) {\n  return !cmp ? null : f ? (a, b) => cmp(a, b) || tupleid(f(a)) - tupleid(f(b)) : (a, b) => cmp(a, b) || tupleid(a) - tupleid(b);\n}\n\nfunction isChangeSet(v) {\n  return v && v.constructor === changeset;\n}\nfunction changeset() {\n  const add = [],\n        // insert tuples\n  rem = [],\n        // remove tuples\n  mod = [],\n        // modify tuples\n  remp = [],\n        // remove by predicate\n  modp = []; // modify by predicate\n\n  let clean = null,\n      reflow = false;\n  return {\n    constructor: changeset,\n\n    insert(t) {\n      const d = Object(vega_util__WEBPACK_IMPORTED_MODULE_0__[\"array\"])(t),\n            n = d.length;\n\n      for (let i = 0; i < n; ++i) add.push(d[i]);\n\n      return this;\n    },\n\n    remove(t) {\n      const a = Object(vega_util__WEBPACK_IMPORTED_MODULE_0__[\"isFunction\"])(t) ? remp : rem,\n            d = Object(vega_util__WEBPACK_IMPORTED_MODULE_0__[\"array\"])(t),\n            n = d.length;\n\n      for (let i = 0; i < n; ++i) a.push(d[i]);\n\n      return this;\n    },\n\n    modify(t, field, value) {\n      const m = {\n        field: field,\n        value: Object(vega_util__WEBPACK_IMPORTED_MODULE_0__[\"constant\"])(value)\n      };\n\n      if (Object(vega_util__WEBPACK_IMPORTED_MODULE_0__[\"isFunction\"])(t)) {\n        m.filter = t;\n        modp.push(m);\n      } else {\n        m.tuple = t;\n        mod.push(m);\n      }\n\n      return this;\n    },\n\n    encode(t, set) {\n      if (Object(vega_util__WEBPACK_IMPORTED_MODULE_0__[\"isFunction\"])(t)) modp.push({\n        filter: t,\n        field: set\n      });else mod.push({\n        tuple: t,\n        field: set\n      });\n      return this;\n    },\n\n    clean(value) {\n      clean = value;\n      return this;\n    },\n\n    reflow() {\n      reflow = true;\n      return this;\n    },\n\n    pulse(pulse, tuples) {\n      const cur = {},\n            out = {};\n      let i, n, m, f, t, id; // build lookup table of current tuples\n\n      for (i = 0, n = tuples.length; i < n; ++i) {\n        cur[tupleid(tuples[i])] = 1;\n      } // process individual tuples to remove\n\n\n      for (i = 0, n = rem.length; i < n; ++i) {\n        t = rem[i];\n        cur[tupleid(t)] = -1;\n      } // process predicate-based removals\n\n\n      for (i = 0, n = remp.length; i < n; ++i) {\n        f = remp[i];\n        tuples.forEach(t => {\n          if (f(t)) cur[tupleid(t)] = -1;\n        });\n      } // process all add tuples\n\n\n      for (i = 0, n = add.length; i < n; ++i) {\n        t = add[i];\n        id = tupleid(t);\n\n        if (cur[id]) {\n          // tuple already resides in dataset\n          // if flagged for both add and remove, cancel\n          cur[id] = 1;\n        } else {\n          // tuple does not reside in dataset, add\n          pulse.add.push(ingest$1(add[i]));\n        }\n      } // populate pulse rem list\n\n\n      for (i = 0, n = tuples.length; i < n; ++i) {\n        t = tuples[i];\n        if (cur[tupleid(t)] < 0) pulse.rem.push(t);\n      } // modify helper method\n\n\n      function modify(t, f, v) {\n        if (v) {\n          t[f] = v(t);\n        } else {\n          pulse.encode = f;\n        }\n\n        if (!reflow) out[tupleid(t)] = t;\n      } // process individual tuples to modify\n\n\n      for (i = 0, n = mod.length; i < n; ++i) {\n        m = mod[i];\n        t = m.tuple;\n        f = m.field;\n        id = cur[tupleid(t)];\n\n        if (id > 0) {\n          modify(t, f, m.value);\n          pulse.modifies(f);\n        }\n      } // process predicate-based modifications\n\n\n      for (i = 0, n = modp.length; i < n; ++i) {\n        m = modp[i];\n        f = m.filter;\n        tuples.forEach(t => {\n          if (f(t) && cur[tupleid(t)] > 0) {\n            modify(t, m.field, m.value);\n          }\n        });\n        pulse.modifies(m.field);\n      } // upon reflow request, populate mod with all non-removed tuples\n      // otherwise, populate mod with modified tuples only\n\n\n      if (reflow) {\n        pulse.mod = rem.length || remp.length ? tuples.filter(t => cur[tupleid(t)] > 0) : tuples.slice();\n      } else {\n        for (id in out) pulse.mod.push(out[id]);\n      } // set pulse garbage collection request\n\n\n      if (clean || clean == null && (rem.length || remp.length)) {\n        pulse.clean(true);\n      }\n\n      return pulse;\n    }\n\n  };\n}\n\nconst CACHE = '_:mod:_';\n/**\n * Hash that tracks modifications to assigned values.\n * Callers *must* use the set method to update values.\n */\n\nfunction Parameters() {\n  Object.defineProperty(this, CACHE, {\n    writable: true,\n    value: {}\n  });\n}\nParameters.prototype = {\n  /**\n   * Set a parameter value. If the parameter value changes, the parameter\n   * will be recorded as modified.\n   * @param {string} name - The parameter name.\n   * @param {number} index - The index into an array-value parameter. Ignored if\n   *   the argument is undefined, null or less than zero.\n   * @param {*} value - The parameter value to set.\n   * @param {boolean} [force=false] - If true, records the parameter as modified\n   *   even if the value is unchanged.\n   * @return {Parameters} - This parameter object.\n   */\n  set(name, index, value, force) {\n    const o = this,\n          v = o[name],\n          mod = o[CACHE];\n\n    if (index != null && index >= 0) {\n      if (v[index] !== value || force) {\n        v[index] = value;\n        mod[index + ':' + name] = -1;\n        mod[name] = -1;\n      }\n    } else if (v !== value || force) {\n      o[name] = value;\n      mod[name] = Object(vega_util__WEBPACK_IMPORTED_MODULE_0__[\"isArray\"])(value) ? 1 + value.length : -1;\n    }\n\n    return o;\n  },\n\n  /**\n   * Tests if one or more parameters has been modified. If invoked with no\n   * arguments, returns true if any parameter value has changed. If the first\n   * argument is array, returns trues if any parameter name in the array has\n   * changed. Otherwise, tests if the given name and optional array index has\n   * changed.\n   * @param {string} name - The parameter name to test.\n   * @param {number} [index=undefined] - The parameter array index to test.\n   * @return {boolean} - Returns true if a queried parameter was modified.\n   */\n  modified(name, index) {\n    const mod = this[CACHE];\n\n    if (!arguments.length) {\n      for (const k in mod) {\n        if (mod[k]) return true;\n      }\n\n      return false;\n    } else if (Object(vega_util__WEBPACK_IMPORTED_MODULE_0__[\"isArray\"])(name)) {\n      for (let k = 0; k < name.length; ++k) {\n        if (mod[name[k]]) return true;\n      }\n\n      return false;\n    }\n\n    return index != null && index >= 0 ? index + 1 < mod[name] || !!mod[index + ':' + name] : !!mod[name];\n  },\n\n  /**\n   * Clears the modification records. After calling this method,\n   * all parameters are considered unmodified.\n   */\n  clear() {\n    this[CACHE] = {};\n    return this;\n  }\n\n};\n\nlet OP_ID = 0;\nconst PULSE = 'pulse',\n      NO_PARAMS = new Parameters(); // Boolean Flags\n\nconst SKIP$1 = 1,\n      MODIFIED = 2;\n/**\n * An Operator is a processing node in a dataflow graph.\n * Each operator stores a value and an optional value update function.\n * Operators can accept a hash of named parameters. Parameter values can\n * either be direct (JavaScript literals, arrays, objects) or indirect\n * (other operators whose values will be pulled dynamically). Operators\n * included as parameters will have this operator added as a dependency.\n * @constructor\n * @param {*} [init] - The initial value for this operator.\n * @param {function(object, Pulse)} [update] - An update function. Upon\n *   evaluation of this operator, the update function will be invoked and the\n *   return value will be used as the new value of this operator.\n * @param {object} [params] - The parameters for this operator.\n * @param {boolean} [react=true] - Flag indicating if this operator should\n *   listen for changes to upstream operators included as parameters.\n * @see parameters\n */\n\nfunction Operator(init, update, params, react) {\n  this.id = ++OP_ID;\n  this.value = init;\n  this.stamp = -1;\n  this.rank = -1;\n  this.qrank = -1;\n  this.flags = 0;\n\n  if (update) {\n    this._update = update;\n  }\n\n  if (params) this.parameters(params, react);\n}\n\nfunction flag(bit) {\n  return function (state) {\n    const f = this.flags;\n    if (arguments.length === 0) return !!(f & bit);\n    this.flags = state ? f | bit : f & ~bit;\n    return this;\n  };\n}\n\nOperator.prototype = {\n  /**\n   * Returns a list of target operators dependent on this operator.\n   * If this list does not exist, it is created and then returned.\n   * @return {UniqueList}\n   */\n  targets() {\n    return this._targets || (this._targets = UniqueList(vega_util__WEBPACK_IMPORTED_MODULE_0__[\"id\"]));\n  },\n\n  /**\n   * Sets the value of this operator.\n   * @param {*} value - the value to set.\n   * @return {Number} Returns 1 if the operator value has changed\n   *   according to strict equality, returns 0 otherwise.\n   */\n  set(value) {\n    if (this.value !== value) {\n      this.value = value;\n      return 1;\n    } else {\n      return 0;\n    }\n  },\n\n  /**\n   * Indicates that operator evaluation should be skipped on the next pulse.\n   * This operator will still propagate incoming pulses, but its update function\n   * will not be invoked. The skip flag is reset after every pulse, so calling\n   * this method will affect processing of the next pulse only.\n   */\n  skip: flag(SKIP$1),\n\n  /**\n   * Indicates that this operator's value has been modified on its most recent\n   * pulse. Normally modification is checked via strict equality; however, in\n   * some cases it is more efficient to update the internal state of an object.\n   * In those cases, the modified flag can be used to trigger propagation. Once\n   * set, the modification flag persists across pulses until unset. The flag can\n   * be used with the last timestamp to test if a modification is recent.\n   */\n  modified: flag(MODIFIED),\n\n  /**\n   * Sets the parameters for this operator. The parameter values are analyzed for\n   * operator instances. If found, this operator will be added as a dependency\n   * of the parameterizing operator. Operator values are dynamically marshalled\n   * from each operator parameter prior to evaluation. If a parameter value is\n   * an array, the array will also be searched for Operator instances. However,\n   * the search does not recurse into sub-arrays or object properties.\n   * @param {object} params - A hash of operator parameters.\n   * @param {boolean} [react=true] - A flag indicating if this operator should\n   *   automatically update (react) when parameter values change. In other words,\n   *   this flag determines if the operator registers itself as a listener on\n   *   any upstream operators included in the parameters.\n   * @param {boolean} [initonly=false] - A flag indicating if this operator\n   *   should calculate an update only upon its initiatal evaluation, then\n   *   deregister dependencies and suppress all future update invocations.\n   * @return {Operator[]} - An array of upstream dependencies.\n   */\n  parameters(params, react, initonly) {\n    react = react !== false;\n    const argval = this._argval = this._argval || new Parameters(),\n          argops = this._argops = this._argops || [],\n          deps = [];\n    let name, value, n, i;\n\n    const add = (name, index, value) => {\n      if (value instanceof Operator) {\n        if (value !== this) {\n          if (react) value.targets().add(this);\n          deps.push(value);\n        }\n\n        argops.push({\n          op: value,\n          name: name,\n          index: index\n        });\n      } else {\n        argval.set(name, index, value);\n      }\n    };\n\n    for (name in params) {\n      value = params[name];\n\n      if (name === PULSE) {\n        Object(vega_util__WEBPACK_IMPORTED_MODULE_0__[\"array\"])(value).forEach(op => {\n          if (!(op instanceof Operator)) {\n            Object(vega_util__WEBPACK_IMPORTED_MODULE_0__[\"error\"])('Pulse parameters must be operator instances.');\n          } else if (op !== this) {\n            op.targets().add(this);\n            deps.push(op);\n          }\n        });\n        this.source = value;\n      } else if (Object(vega_util__WEBPACK_IMPORTED_MODULE_0__[\"isArray\"])(value)) {\n        argval.set(name, -1, Array(n = value.length));\n\n        for (i = 0; i < n; ++i) add(name, i, value[i]);\n      } else {\n        add(name, -1, value);\n      }\n    }\n\n    this.marshall().clear(); // initialize values\n\n    if (initonly) argops.initonly = true;\n    return deps;\n  },\n\n  /**\n   * Internal method for marshalling parameter values.\n   * Visits each operator dependency to pull the latest value.\n   * @return {Parameters} A Parameters object to pass to the update function.\n   */\n  marshall(stamp) {\n    const argval = this._argval || NO_PARAMS,\n          argops = this._argops;\n    let item, i, op, mod;\n\n    if (argops) {\n      const n = argops.length;\n\n      for (i = 0; i < n; ++i) {\n        item = argops[i];\n        op = item.op;\n        mod = op.modified() && op.stamp === stamp;\n        argval.set(item.name, item.index, op.value, mod);\n      }\n\n      if (argops.initonly) {\n        for (i = 0; i < n; ++i) {\n          item = argops[i];\n          item.op.targets().remove(this);\n        }\n\n        this._argops = null;\n        this._update = null;\n      }\n    }\n\n    return argval;\n  },\n\n  /**\n   * Detach this operator from the dataflow.\n   * Unregisters listeners on upstream dependencies.\n   */\n  detach() {\n    const argops = this._argops;\n    let i, n, item, op;\n\n    if (argops) {\n      for (i = 0, n = argops.length; i < n; ++i) {\n        item = argops[i];\n        op = item.op;\n\n        if (op._targets) {\n          op._targets.remove(this);\n        }\n      }\n    } // remove references to the source and pulse object,\n    // if present, to prevent memory leaks of old data.\n\n\n    this.pulse = null;\n    this.source = null;\n  },\n\n  /**\n   * Delegate method to perform operator processing.\n   * Subclasses can override this method to perform custom processing.\n   * By default, it marshalls parameters and calls the update function\n   * if that function is defined. If the update function does not\n   * change the operator value then StopPropagation is returned.\n   * If no update function is defined, this method does nothing.\n   * @param {Pulse} pulse - the current dataflow pulse.\n   * @return The output pulse or StopPropagation. A falsy return value\n   *   (including undefined) will let the input pulse pass through.\n   */\n  evaluate(pulse) {\n    const update = this._update;\n\n    if (update) {\n      const params = this.marshall(pulse.stamp),\n            v = update.call(this, params, pulse);\n      params.clear();\n\n      if (v !== this.value) {\n        this.value = v;\n      } else if (!this.modified()) {\n        return pulse.StopPropagation;\n      }\n    }\n  },\n\n  /**\n   * Run this operator for the current pulse. If this operator has already\n   * been run at (or after) the pulse timestamp, returns StopPropagation.\n   * Internally, this method calls {@link evaluate} to perform processing.\n   * If {@link evaluate} returns a falsy value, the input pulse is returned.\n   * This method should NOT be overridden, instead overrride {@link evaluate}.\n   * @param {Pulse} pulse - the current dataflow pulse.\n   * @return the output pulse for this operator (or StopPropagation)\n   */\n  run(pulse) {\n    if (pulse.stamp < this.stamp) return pulse.StopPropagation;\n    let rv;\n\n    if (this.skip()) {\n      this.skip(false);\n      rv = 0;\n    } else {\n      rv = this.evaluate(pulse);\n    }\n\n    return this.pulse = rv || pulse;\n  }\n\n};\n\n/**\n * Add an operator to the dataflow graph. This function accepts a\n * variety of input argument types. The basic signature supports an\n * initial value, update function and parameters. If the first parameter\n * is an Operator instance, it will be added directly. If it is a\n * constructor for an Operator subclass, a new instance will be instantiated.\n * Otherwise, if the first parameter is a function instance, it will be used\n * as the update function and a null initial value is assumed.\n * @param {*} init - One of: the operator to add, the initial value of\n *   the operator, an operator class to instantiate, or an update function.\n * @param {function} [update] - The operator update function.\n * @param {object} [params] - The operator parameters.\n * @param {boolean} [react=true] - Flag indicating if this operator should\n *   listen for changes to upstream operators included as parameters.\n * @return {Operator} - The added operator.\n */\n\nfunction add (init, update, params, react) {\n  let shift = 1,\n      op;\n\n  if (init instanceof Operator) {\n    op = init;\n  } else if (init && init.prototype instanceof Operator) {\n    op = new init();\n  } else if (Object(vega_util__WEBPACK_IMPORTED_MODULE_0__[\"isFunction\"])(init)) {\n    op = new Operator(null, init);\n  } else {\n    shift = 0;\n    op = new Operator(init, update);\n  }\n\n  this.rank(op);\n\n  if (shift) {\n    react = params;\n    params = update;\n  }\n\n  if (params) this.connect(op, op.parameters(params, react));\n  this.touch(op);\n  return op;\n}\n\n/**\n * Connect a target operator as a dependent of source operators.\n * If necessary, this method will rerank the target operator and its\n * dependents to ensure propagation proceeds in a topologically sorted order.\n * @param {Operator} target - The target operator.\n * @param {Array<Operator>} - The source operators that should propagate\n *   to the target operator.\n */\nfunction connect (target, sources) {\n  const targetRank = target.rank,\n        n = sources.length;\n\n  for (let i = 0; i < n; ++i) {\n    if (targetRank < sources[i].rank) {\n      this.rerank(target);\n      return;\n    }\n  }\n}\n\nlet STREAM_ID = 0;\n/**\n * Models an event stream.\n * @constructor\n * @param {function(Object, number): boolean} [filter] - Filter predicate.\n *   Events pass through when truthy, events are suppressed when falsy.\n * @param {function(Object): *} [apply] - Applied to input events to produce\n *   new event values.\n * @param {function(Object)} [receive] - Event callback function to invoke\n *   upon receipt of a new event. Use to override standard event processing.\n */\n\nfunction EventStream(filter, apply, receive) {\n  this.id = ++STREAM_ID;\n  this.value = null;\n  if (receive) this.receive = receive;\n  if (filter) this._filter = filter;\n  if (apply) this._apply = apply;\n}\n/**\n * Creates a new event stream instance with the provided\n * (optional) filter, apply and receive functions.\n * @param {function(Object, number): boolean} [filter] - Filter predicate.\n *   Events pass through when truthy, events are suppressed when falsy.\n * @param {function(Object): *} [apply] - Applied to input events to produce\n *   new event values.\n * @see EventStream\n */\n\nfunction stream(filter, apply, receive) {\n  return new EventStream(filter, apply, receive);\n}\nEventStream.prototype = {\n  _filter: vega_util__WEBPACK_IMPORTED_MODULE_0__[\"truthy\"],\n  _apply: vega_util__WEBPACK_IMPORTED_MODULE_0__[\"identity\"],\n\n  targets() {\n    return this._targets || (this._targets = UniqueList(vega_util__WEBPACK_IMPORTED_MODULE_0__[\"id\"]));\n  },\n\n  consume(_) {\n    if (!arguments.length) return !!this._consume;\n    this._consume = !!_;\n    return this;\n  },\n\n  receive(evt) {\n    if (this._filter(evt)) {\n      const val = this.value = this._apply(evt),\n            trg = this._targets,\n            n = trg ? trg.length : 0;\n\n      for (let i = 0; i < n; ++i) trg[i].receive(val);\n\n      if (this._consume) {\n        evt.preventDefault();\n        evt.stopPropagation();\n      }\n    }\n  },\n\n  filter(filter) {\n    const s = stream(filter);\n    this.targets().add(s);\n    return s;\n  },\n\n  apply(apply) {\n    const s = stream(null, apply);\n    this.targets().add(s);\n    return s;\n  },\n\n  merge() {\n    const s = stream();\n    this.targets().add(s);\n\n    for (let i = 0, n = arguments.length; i < n; ++i) {\n      arguments[i].targets().add(s);\n    }\n\n    return s;\n  },\n\n  throttle(pause) {\n    let t = -1;\n    return this.filter(() => {\n      const now = Date.now();\n\n      if (now - t > pause) {\n        t = now;\n        return 1;\n      } else {\n        return 0;\n      }\n    });\n  },\n\n  debounce(delay) {\n    const s = stream();\n    this.targets().add(stream(null, null, Object(vega_util__WEBPACK_IMPORTED_MODULE_0__[\"debounce\"])(delay, e => {\n      const df = e.dataflow;\n      s.receive(e);\n      if (df && df.run) df.run();\n    })));\n    return s;\n  },\n\n  between(a, b) {\n    let active = false;\n    a.targets().add(stream(null, null, () => active = true));\n    b.targets().add(stream(null, null, () => active = false));\n    return this.filter(() => active);\n  },\n\n  detach() {\n    // ensures compatibility with operators (#2753)\n    // remove references to other streams and filter functions that may\n    // be bound to subcontexts that need to be garbage collected.\n    this._filter = vega_util__WEBPACK_IMPORTED_MODULE_0__[\"truthy\"];\n    this._targets = null;\n  }\n\n};\n\n/**\n * Create a new event stream from an event source.\n * @param {object} source - The event source to monitor. The input must\n *  support the addEventListener method.\n * @param {string} type - The event type.\n * @param {function(object): boolean} [filter] - Event filter function.\n * @param {function(object): *} [apply] - Event application function.\n *   If provided, this function will be invoked and the result will be\n *   used as the downstream event value.\n * @return {EventStream}\n */\n\nfunction events (source, type, filter, apply) {\n  const df = this,\n        s = stream(filter, apply),\n        send = function (e) {\n    e.dataflow = df;\n\n    try {\n      s.receive(e);\n    } catch (error) {\n      df.error(error);\n    } finally {\n      df.run();\n    }\n  };\n\n  let sources;\n\n  if (typeof source === 'string' && typeof document !== 'undefined') {\n    sources = document.querySelectorAll(source);\n  } else {\n    sources = Object(vega_util__WEBPACK_IMPORTED_MODULE_0__[\"array\"])(source);\n  }\n\n  const n = sources.length;\n\n  for (let i = 0; i < n; ++i) {\n    sources[i].addEventListener(type, send);\n  }\n\n  return s;\n}\n\nfunction parse(data, format) {\n  const locale = this.locale();\n  return Object(vega_loader__WEBPACK_IMPORTED_MODULE_1__[\"read\"])(data, format, locale.timeParse, locale.utcParse);\n}\n/**\n * Ingests new data into the dataflow. First parses the data using the\n * vega-loader read method, then pulses a changeset to the target operator.\n * @param {Operator} target - The Operator to target with ingested data,\n *   typically a Collect transform instance.\n * @param {*} data - The input data, prior to parsing. For JSON this may\n *   be a string or an object. For CSV, TSV, etc should be a string.\n * @param {object} format - The data format description for parsing\n *   loaded data. This object is passed to the vega-loader read method.\n * @returns {Dataflow}\n */\n\nfunction ingest(target, data, format) {\n  data = this.parse(data, format);\n  return this.pulse(target, this.changeset().insert(data));\n}\n/**\n * Request data from an external source, parse it, and return a Promise.\n * @param {string} url - The URL from which to load the data. This string\n *   is passed to the vega-loader load method.\n * @param {object} [format] - The data format description for parsing\n *   loaded data. This object is passed to the vega-loader read method.\n * @return {Promise} A Promise that resolves upon completion of the request.\n *   The resolved object contains the following properties:\n *   - data: an array of parsed data (or null upon error)\n *   - status: a code for success (0), load fail (-1), or parse fail (-2)\n */\n\nasync function request(url, format) {\n  const df = this;\n  let status = 0,\n      data;\n\n  try {\n    data = await df.loader().load(url, {\n      context: 'dataflow',\n      response: Object(vega_loader__WEBPACK_IMPORTED_MODULE_1__[\"responseType\"])(format && format.type)\n    });\n\n    try {\n      data = df.parse(data, format);\n    } catch (err) {\n      status = -2;\n      df.warn('Data ingestion failed', url, err);\n    }\n  } catch (err) {\n    status = -1;\n    df.warn('Loading failed', url, err);\n  }\n\n  return {\n    data,\n    status\n  };\n}\nasync function preload(target, url, format) {\n  const df = this,\n        pending = df._pending || loadPending(df);\n  pending.requests += 1;\n  const res = await df.request(url, format);\n  df.pulse(target, df.changeset().remove(vega_util__WEBPACK_IMPORTED_MODULE_0__[\"truthy\"]).insert(res.data || []));\n  pending.done();\n  return res;\n}\n\nfunction loadPending(df) {\n  let accept;\n  const pending = new Promise(a => accept = a);\n  pending.requests = 0;\n\n  pending.done = () => {\n    if (--pending.requests === 0) {\n      df._pending = null;\n      accept(df);\n    }\n  };\n\n  return df._pending = pending;\n}\n\nconst SKIP = {\n  skip: true\n};\n/**\n * Perform operator updates in response to events. Applies an\n * update function to compute a new operator value. If the update function\n * returns a {@link ChangeSet}, the operator will be pulsed with those tuple\n * changes. Otherwise, the operator value will be updated to the return value.\n * @param {EventStream|Operator} source - The event source to react to.\n *   This argument can be either an EventStream or an Operator.\n * @param {Operator|function(object):Operator} target - The operator to update.\n *   This argument can either be an Operator instance or (if the source\n *   argument is an EventStream), a function that accepts an event object as\n *   input and returns an Operator to target.\n * @param {function(Parameters,Event): *} [update] - Optional update function\n *   to compute the new operator value, or a literal value to set. Update\n *   functions expect to receive a parameter object and event as arguments.\n *   This function can either return a new operator value or (if the source\n *   argument is an EventStream) a {@link ChangeSet} instance to pulse\n *   the target operator with tuple changes.\n * @param {object} [params] - The update function parameters.\n * @param {object} [options] - Additional options hash. If not overridden,\n *   updated operators will be skipped by default.\n * @param {boolean} [options.skip] - If true, the operator will\n *  be skipped: it will not be evaluated, but its dependents will be.\n * @param {boolean} [options.force] - If true, the operator will\n *   be re-evaluated even if its value has not changed.\n * @return {Dataflow}\n */\n\nfunction on (source, target, update, params, options) {\n  const fn = source instanceof Operator ? onOperator : onStream;\n  fn(this, source, target, update, params, options);\n  return this;\n}\n\nfunction onStream(df, stream, target, update, params, options) {\n  const opt = Object(vega_util__WEBPACK_IMPORTED_MODULE_0__[\"extend\"])({}, options, SKIP);\n  let func, op;\n  if (!Object(vega_util__WEBPACK_IMPORTED_MODULE_0__[\"isFunction\"])(target)) target = Object(vega_util__WEBPACK_IMPORTED_MODULE_0__[\"constant\"])(target);\n\n  if (update === undefined) {\n    func = e => df.touch(target(e));\n  } else if (Object(vega_util__WEBPACK_IMPORTED_MODULE_0__[\"isFunction\"])(update)) {\n    op = new Operator(null, update, params, false);\n\n    func = e => {\n      op.evaluate(e);\n      const t = target(e),\n            v = op.value;\n      isChangeSet(v) ? df.pulse(t, v, options) : df.update(t, v, opt);\n    };\n  } else {\n    func = e => df.update(target(e), update, opt);\n  }\n\n  stream.apply(func);\n}\n\nfunction onOperator(df, source, target, update, params, options) {\n  if (update === undefined) {\n    source.targets().add(target);\n  } else {\n    const opt = options || {},\n          op = new Operator(null, updater(target, update), params, false);\n    op.modified(opt.force);\n    op.rank = source.rank; // immediately follow source\n\n    source.targets().add(op); // add dependency\n\n    if (target) {\n      op.skip(true); // skip first invocation\n\n      op.value = target.value; // initialize value\n\n      op.targets().add(target); // chain dependencies\n\n      df.connect(target, [op]); // rerank as needed, #1672\n    }\n  }\n}\n\nfunction updater(target, update) {\n  update = Object(vega_util__WEBPACK_IMPORTED_MODULE_0__[\"isFunction\"])(update) ? update : Object(vega_util__WEBPACK_IMPORTED_MODULE_0__[\"constant\"])(update);\n  return target ? function (_, pulse) {\n    const value = update(_, pulse);\n\n    if (!target.skip()) {\n      target.skip(value !== this.value).value = value;\n    }\n\n    return value;\n  } : update;\n}\n\n/**\n * Assigns a rank to an operator. Ranks are assigned in increasing order\n * by incrementing an internal rank counter.\n * @param {Operator} op - The operator to assign a rank.\n */\n\nfunction rank(op) {\n  op.rank = ++this._rank;\n}\n/**\n * Re-ranks an operator and all downstream target dependencies. This\n * is necessary when upstream dependencies of higher rank are added to\n * a target operator.\n * @param {Operator} op - The operator to re-rank.\n */\n\nfunction rerank(op) {\n  const queue = [op];\n  let cur, list, i;\n\n  while (queue.length) {\n    this.rank(cur = queue.pop());\n\n    if (list = cur._targets) {\n      for (i = list.length; --i >= 0;) {\n        queue.push(cur = list[i]);\n        if (cur === op) Object(vega_util__WEBPACK_IMPORTED_MODULE_0__[\"error\"])('Cycle detected in dataflow graph.');\n      }\n    }\n  }\n}\n\n/**\n * Sentinel value indicating pulse propagation should stop.\n */\n\nconst StopPropagation = {}; // Pulse visit type flags\n\nconst ADD = 1 << 0,\n      REM = 1 << 1,\n      MOD = 1 << 2,\n      ADD_REM = ADD | REM,\n      ADD_MOD = ADD | MOD,\n      ALL = ADD | REM | MOD,\n      REFLOW = 1 << 3,\n      SOURCE = 1 << 4,\n      NO_SOURCE = 1 << 5,\n      NO_FIELDS = 1 << 6;\n/**\n * A Pulse enables inter-operator communication during a run of the\n * dataflow graph. In addition to the current timestamp, a pulse may also\n * contain a change-set of added, removed or modified data tuples, as well as\n * a pointer to a full backing data source. Tuple change sets may not\n * be fully materialized; for example, to prevent needless array creation\n * a change set may include larger arrays and corresponding filter functions.\n * The pulse provides a {@link visit} method to enable proper and efficient\n * iteration over requested data tuples.\n *\n * In addition, each pulse can track modification flags for data tuple fields.\n * Responsible transform operators should call the {@link modifies} method to\n * indicate changes to data fields. The {@link modified} method enables\n * querying of this modification state.\n *\n * @constructor\n * @param {Dataflow} dataflow - The backing dataflow instance.\n * @param {number} stamp - The current propagation timestamp.\n * @param {string} [encode] - An optional encoding set name, which is then\n *   accessible as Pulse.encode. Operators can respond to (or ignore) this\n *   setting as appropriate. This parameter can be used in conjunction with\n *   the Encode transform in the vega-encode module.\n */\n\nfunction Pulse(dataflow, stamp, encode) {\n  this.dataflow = dataflow;\n  this.stamp = stamp == null ? -1 : stamp;\n  this.add = [];\n  this.rem = [];\n  this.mod = [];\n  this.fields = null;\n  this.encode = encode || null;\n}\n\nfunction materialize(data, filter) {\n  const out = [];\n  Object(vega_util__WEBPACK_IMPORTED_MODULE_0__[\"visitArray\"])(data, filter, _ => out.push(_));\n  return out;\n}\n\nfunction filter(pulse, flags) {\n  const map = {};\n  pulse.visit(flags, t => {\n    map[tupleid(t)] = 1;\n  });\n  return t => map[tupleid(t)] ? null : t;\n}\n\nfunction addFilter(a, b) {\n  return a ? (t, i) => a(t, i) && b(t, i) : b;\n}\n\nPulse.prototype = {\n  /**\n   * Sentinel value indicating pulse propagation should stop.\n   */\n  StopPropagation,\n\n  /**\n   * Boolean flag indicating ADD (added) tuples.\n   */\n  ADD,\n\n  /**\n   * Boolean flag indicating REM (removed) tuples.\n   */\n  REM,\n\n  /**\n   * Boolean flag indicating MOD (modified) tuples.\n   */\n  MOD,\n\n  /**\n   * Boolean flag indicating ADD (added) and REM (removed) tuples.\n   */\n  ADD_REM,\n\n  /**\n   * Boolean flag indicating ADD (added) and MOD (modified) tuples.\n   */\n  ADD_MOD,\n\n  /**\n   * Boolean flag indicating ADD, REM and MOD tuples.\n   */\n  ALL,\n\n  /**\n   * Boolean flag indicating all tuples in a data source\n   * except for the ADD, REM and MOD tuples.\n   */\n  REFLOW,\n\n  /**\n   * Boolean flag indicating a 'pass-through' to a\n   * backing data source, ignoring ADD, REM and MOD tuples.\n   */\n  SOURCE,\n\n  /**\n   * Boolean flag indicating that source data should be\n   * suppressed when creating a forked pulse.\n   */\n  NO_SOURCE,\n\n  /**\n   * Boolean flag indicating that field modifications should be\n   * suppressed when creating a forked pulse.\n   */\n  NO_FIELDS,\n\n  /**\n   * Creates a new pulse based on the values of this pulse.\n   * The dataflow, time stamp and field modification values are copied over.\n   * By default, new empty ADD, REM and MOD arrays are created.\n   * @param {number} flags - Integer of boolean flags indicating which (if any)\n   *   tuple arrays should be copied to the new pulse. The supported flag values\n   *   are ADD, REM and MOD. Array references are copied directly: new array\n   *   instances are not created.\n   * @return {Pulse} - The forked pulse instance.\n   * @see init\n   */\n  fork(flags) {\n    return new Pulse(this.dataflow).init(this, flags);\n  },\n\n  /**\n   * Creates a copy of this pulse with new materialized array\n   * instances for the ADD, REM, MOD, and SOURCE arrays.\n   * The dataflow, time stamp and field modification values are copied over.\n   * @return {Pulse} - The cloned pulse instance.\n   * @see init\n   */\n  clone() {\n    const p = this.fork(ALL);\n    p.add = p.add.slice();\n    p.rem = p.rem.slice();\n    p.mod = p.mod.slice();\n    if (p.source) p.source = p.source.slice();\n    return p.materialize(ALL | SOURCE);\n  },\n\n  /**\n   * Returns a pulse that adds all tuples from a backing source. This is\n   * useful for cases where operators are added to a dataflow after an\n   * upstream data pipeline has already been processed, ensuring that\n   * new operators can observe all tuples within a stream.\n   * @return {Pulse} - A pulse instance with all source tuples included\n   *   in the add array. If the current pulse already has all source\n   *   tuples in its add array, it is returned directly. If the current\n   *   pulse does not have a backing source, it is returned directly.\n   */\n  addAll() {\n    let p = this;\n    const reuse = !p.source || p.add === p.rem // special case for indexed set (e.g., crossfilter)\n    || !p.rem.length && p.source.length === p.add.length;\n\n    if (reuse) {\n      return p;\n    } else {\n      p = new Pulse(this.dataflow).init(this);\n      p.add = p.source;\n      p.rem = []; // new operators can ignore rem #2769\n\n      return p;\n    }\n  },\n\n  /**\n   * Initialize this pulse based on the values of another pulse. This method\n   * is used internally by {@link fork} to initialize a new forked tuple.\n   * The dataflow, time stamp and field modification values are copied over.\n   * By default, new empty ADD, REM and MOD arrays are created.\n   * @param {Pulse} src - The source pulse to copy from.\n   * @param {number} flags - Integer of boolean flags indicating which (if any)\n   *   tuple arrays should be copied to the new pulse. The supported flag values\n   *   are ADD, REM and MOD. Array references are copied directly: new array\n   *   instances are not created. By default, source data arrays are copied\n   *   to the new pulse. Use the NO_SOURCE flag to enforce a null source.\n   * @return {Pulse} - Returns this Pulse instance.\n   */\n  init(src, flags) {\n    const p = this;\n    p.stamp = src.stamp;\n    p.encode = src.encode;\n\n    if (src.fields && !(flags & NO_FIELDS)) {\n      p.fields = src.fields;\n    }\n\n    if (flags & ADD) {\n      p.addF = src.addF;\n      p.add = src.add;\n    } else {\n      p.addF = null;\n      p.add = [];\n    }\n\n    if (flags & REM) {\n      p.remF = src.remF;\n      p.rem = src.rem;\n    } else {\n      p.remF = null;\n      p.rem = [];\n    }\n\n    if (flags & MOD) {\n      p.modF = src.modF;\n      p.mod = src.mod;\n    } else {\n      p.modF = null;\n      p.mod = [];\n    }\n\n    if (flags & NO_SOURCE) {\n      p.srcF = null;\n      p.source = null;\n    } else {\n      p.srcF = src.srcF;\n      p.source = src.source;\n      if (src.cleans) p.cleans = src.cleans;\n    }\n\n    return p;\n  },\n\n  /**\n   * Schedules a function to run after pulse propagation completes.\n   * @param {function} func - The function to run.\n   */\n  runAfter(func) {\n    this.dataflow.runAfter(func);\n  },\n\n  /**\n   * Indicates if tuples have been added, removed or modified.\n   * @param {number} [flags] - The tuple types (ADD, REM or MOD) to query.\n   *   Defaults to ALL, returning true if any tuple type has changed.\n   * @return {boolean} - Returns true if one or more queried tuple types have\n   *   changed, false otherwise.\n   */\n  changed(flags) {\n    const f = flags || ALL;\n    return f & ADD && this.add.length || f & REM && this.rem.length || f & MOD && this.mod.length;\n  },\n\n  /**\n   * Forces a \"reflow\" of tuple values, such that all tuples in the backing\n   * source are added to the MOD set, unless already present in the ADD set.\n   * @param {boolean} [fork=false] - If true, returns a forked copy of this\n   *   pulse, and invokes reflow on that derived pulse.\n   * @return {Pulse} - The reflowed pulse instance.\n   */\n  reflow(fork) {\n    if (fork) return this.fork(ALL).reflow();\n    const len = this.add.length,\n          src = this.source && this.source.length;\n\n    if (src && src !== len) {\n      this.mod = this.source;\n      if (len) this.filter(MOD, filter(this, ADD));\n    }\n\n    return this;\n  },\n\n  /**\n   * Get/set metadata to pulse requesting garbage collection\n   * to reclaim currently unused resources.\n   */\n  clean(value) {\n    if (arguments.length) {\n      this.cleans = !!value;\n      return this;\n    } else {\n      return this.cleans;\n    }\n  },\n\n  /**\n   * Marks one or more data field names as modified to assist dependency\n   * tracking and incremental processing by transform operators.\n   * @param {string|Array<string>} _ - The field(s) to mark as modified.\n   * @return {Pulse} - This pulse instance.\n   */\n  modifies(_) {\n    const hash = this.fields || (this.fields = {});\n\n    if (Object(vega_util__WEBPACK_IMPORTED_MODULE_0__[\"isArray\"])(_)) {\n      _.forEach(f => hash[f] = true);\n    } else {\n      hash[_] = true;\n    }\n\n    return this;\n  },\n\n  /**\n   * Checks if one or more data fields have been modified during this pulse\n   * propagation timestamp.\n   * @param {string|Array<string>} _ - The field(s) to check for modified.\n   * @param {boolean} nomod - If true, will check the modified flag even if\n   *   no mod tuples exist. If false (default), mod tuples must be present.\n   * @return {boolean} - Returns true if any of the provided fields has been\n   *   marked as modified, false otherwise.\n   */\n  modified(_, nomod) {\n    const fields = this.fields;\n    return !((nomod || this.mod.length) && fields) ? false : !arguments.length ? !!fields : Object(vega_util__WEBPACK_IMPORTED_MODULE_0__[\"isArray\"])(_) ? _.some(f => fields[f]) : fields[_];\n  },\n\n  /**\n   * Adds a filter function to one more tuple sets. Filters are applied to\n   * backing tuple arrays, to determine the actual set of tuples considered\n   * added, removed or modified. They can be used to delay materialization of\n   * a tuple set in order to avoid expensive array copies. In addition, the\n   * filter functions can serve as value transformers: unlike standard predicate\n   * function (which return boolean values), Pulse filters should return the\n   * actual tuple value to process. If a tuple set is already filtered, the\n   * new filter function will be appended into a conjuntive ('and') query.\n   * @param {number} flags - Flags indicating the tuple set(s) to filter.\n   * @param {function(*):object} filter - Filter function that will be applied\n   *   to the tuple set array, and should return a data tuple if the value\n   *   should be included in the tuple set, and falsy (or null) otherwise.\n   * @return {Pulse} - Returns this pulse instance.\n   */\n  filter(flags, filter) {\n    const p = this;\n    if (flags & ADD) p.addF = addFilter(p.addF, filter);\n    if (flags & REM) p.remF = addFilter(p.remF, filter);\n    if (flags & MOD) p.modF = addFilter(p.modF, filter);\n    if (flags & SOURCE) p.srcF = addFilter(p.srcF, filter);\n    return p;\n  },\n\n  /**\n   * Materialize one or more tuple sets in this pulse. If the tuple set(s) have\n   * a registered filter function, it will be applied and the tuple set(s) will\n   * be replaced with materialized tuple arrays.\n   * @param {number} flags - Flags indicating the tuple set(s) to materialize.\n   * @return {Pulse} - Returns this pulse instance.\n   */\n  materialize(flags) {\n    flags = flags || ALL;\n    const p = this;\n\n    if (flags & ADD && p.addF) {\n      p.add = materialize(p.add, p.addF);\n      p.addF = null;\n    }\n\n    if (flags & REM && p.remF) {\n      p.rem = materialize(p.rem, p.remF);\n      p.remF = null;\n    }\n\n    if (flags & MOD && p.modF) {\n      p.mod = materialize(p.mod, p.modF);\n      p.modF = null;\n    }\n\n    if (flags & SOURCE && p.srcF) {\n      p.source = p.source.filter(p.srcF);\n      p.srcF = null;\n    }\n\n    return p;\n  },\n\n  /**\n   * Visit one or more tuple sets in this pulse.\n   * @param {number} flags - Flags indicating the tuple set(s) to visit.\n   *   Legal values are ADD, REM, MOD and SOURCE (if a backing data source\n   *   has been set).\n   * @param {function(object):*} - Visitor function invoked per-tuple.\n   * @return {Pulse} - Returns this pulse instance.\n   */\n  visit(flags, visitor) {\n    const p = this,\n          v = visitor;\n\n    if (flags & SOURCE) {\n      Object(vega_util__WEBPACK_IMPORTED_MODULE_0__[\"visitArray\"])(p.source, p.srcF, v);\n      return p;\n    }\n\n    if (flags & ADD) Object(vega_util__WEBPACK_IMPORTED_MODULE_0__[\"visitArray\"])(p.add, p.addF, v);\n    if (flags & REM) Object(vega_util__WEBPACK_IMPORTED_MODULE_0__[\"visitArray\"])(p.rem, p.remF, v);\n    if (flags & MOD) Object(vega_util__WEBPACK_IMPORTED_MODULE_0__[\"visitArray\"])(p.mod, p.modF, v);\n    const src = p.source;\n\n    if (flags & REFLOW && src) {\n      const sum = p.add.length + p.mod.length;\n\n      if (sum === src.length) ; else if (sum) {\n        Object(vega_util__WEBPACK_IMPORTED_MODULE_0__[\"visitArray\"])(src, filter(p, ADD_MOD), v);\n      } else {\n        // if no add/rem/mod tuples, visit source\n        Object(vega_util__WEBPACK_IMPORTED_MODULE_0__[\"visitArray\"])(src, p.srcF, v);\n      }\n    }\n\n    return p;\n  }\n\n};\n\n/**\n * Represents a set of multiple pulses. Used as input for operators\n * that accept multiple pulses at a time. Contained pulses are\n * accessible via the public \"pulses\" array property. This pulse doe\n * not carry added, removed or modified tuples directly. However,\n * the visit method can be used to traverse all such tuples contained\n * in sub-pulses with a timestamp matching this parent multi-pulse.\n * @constructor\n * @param {Dataflow} dataflow - The backing dataflow instance.\n * @param {number} stamp - The timestamp.\n * @param {Array<Pulse>} pulses - The sub-pulses for this multi-pulse.\n */\n\nfunction MultiPulse(dataflow, stamp, pulses, encode) {\n  const p = this,\n        n = pulses.length;\n  let c = 0;\n  this.dataflow = dataflow;\n  this.stamp = stamp;\n  this.fields = null;\n  this.encode = encode || null;\n  this.pulses = pulses;\n\n  for (let i = 0; i < n; ++i) {\n    const pulse = pulses[i];\n    if (pulse.stamp !== stamp) continue;\n\n    if (pulse.fields) {\n      const hash = p.fields || (p.fields = {});\n\n      for (const f in pulse.fields) {\n        hash[f] = 1;\n      }\n    }\n\n    if (pulse.changed(p.ADD)) c |= p.ADD;\n    if (pulse.changed(p.REM)) c |= p.REM;\n    if (pulse.changed(p.MOD)) c |= p.MOD;\n  }\n\n  this.changes = c;\n}\nObject(vega_util__WEBPACK_IMPORTED_MODULE_0__[\"inherits\"])(MultiPulse, Pulse, {\n  /**\n   * Creates a new pulse based on the values of this pulse.\n   * The dataflow, time stamp and field modification values are copied over.\n   * @return {Pulse}\n   */\n  fork(flags) {\n    const p = new Pulse(this.dataflow).init(this, flags & this.NO_FIELDS);\n\n    if (flags !== undefined) {\n      if (flags & p.ADD) this.visit(p.ADD, t => p.add.push(t));\n      if (flags & p.REM) this.visit(p.REM, t => p.rem.push(t));\n      if (flags & p.MOD) this.visit(p.MOD, t => p.mod.push(t));\n    }\n\n    return p;\n  },\n\n  changed(flags) {\n    return this.changes & flags;\n  },\n\n  modified(_) {\n    const p = this,\n          fields = p.fields;\n    return !(fields && p.changes & p.MOD) ? 0 : Object(vega_util__WEBPACK_IMPORTED_MODULE_0__[\"isArray\"])(_) ? _.some(f => fields[f]) : fields[_];\n  },\n\n  filter() {\n    Object(vega_util__WEBPACK_IMPORTED_MODULE_0__[\"error\"])('MultiPulse does not support filtering.');\n  },\n\n  materialize() {\n    Object(vega_util__WEBPACK_IMPORTED_MODULE_0__[\"error\"])('MultiPulse does not support materialization.');\n  },\n\n  visit(flags, visitor) {\n    const p = this,\n          pulses = p.pulses,\n          n = pulses.length;\n    let i = 0;\n\n    if (flags & p.SOURCE) {\n      for (; i < n; ++i) {\n        pulses[i].visit(flags, visitor);\n      }\n    } else {\n      for (; i < n; ++i) {\n        if (pulses[i].stamp === p.stamp) {\n          pulses[i].visit(flags, visitor);\n        }\n      }\n    }\n\n    return p;\n  }\n\n});\n\n/* eslint-disable require-atomic-updates */\n/**\n * Evaluates the dataflow and returns a Promise that resolves when pulse\n * propagation completes. This method will increment the current timestamp\n * and process all updated, pulsed and touched operators. When invoked for\n * the first time, all registered operators will be processed. This method\n * should not be invoked by third-party clients, use {@link runAsync} or\n * {@link run} instead.\n * @param {string} [encode] - The name of an encoding set to invoke during\n *   propagation. This value is added to generated Pulse instances;\n *   operators can then respond to (or ignore) this setting as appropriate.\n *   This parameter can be used in conjunction with the Encode transform in\n *   the vega-encode package.\n * @param {function} [prerun] - An optional callback function to invoke\n *   immediately before dataflow evaluation commences.\n * @param {function} [postrun] - An optional callback function to invoke\n *   after dataflow evaluation completes. The callback will be invoked\n *   after those registered via {@link runAfter}.\n * @return {Promise} - A promise that resolves to this dataflow after\n *   evaluation completes.\n */\n\nasync function evaluate(encode, prerun, postrun) {\n  const df = this,\n        async = []; // if the pulse value is set, this is a re-entrant call\n\n  if (df._pulse) return reentrant(df); // wait for pending datasets to load\n\n  if (df._pending) await df._pending; // invoke prerun function, if provided\n\n  if (prerun) await asyncCallback(df, prerun); // exit early if there are no updates\n\n  if (!df._touched.length) {\n    df.debug('Dataflow invoked, but nothing to do.');\n    return df;\n  } // increment timestamp clock\n\n\n  const stamp = ++df._clock; // set the current pulse\n\n  df._pulse = new Pulse(df, stamp, encode); // initialize priority queue, reset touched operators\n\n  df._touched.forEach(op => df._enqueue(op, true));\n\n  df._touched = UniqueList(vega_util__WEBPACK_IMPORTED_MODULE_0__[\"id\"]);\n  let count = 0,\n      op,\n      next,\n      error;\n\n  try {\n    while (df._heap.size() > 0) {\n      // dequeue operator with highest priority\n      op = df._heap.pop(); // re-queue if rank changed\n\n      if (op.rank !== op.qrank) {\n        df._enqueue(op, true);\n\n        continue;\n      } // otherwise, evaluate the operator\n\n\n      next = op.run(df._getPulse(op, encode));\n\n      if (next.then) {\n        // await if operator returns a promise directly\n        next = await next;\n      } else if (next.async) {\n        // queue parallel asynchronous execution\n        async.push(next.async);\n        next = StopPropagation;\n      } // propagate evaluation, enqueue dependent operators\n\n\n      if (next !== StopPropagation) {\n        if (op._targets) op._targets.forEach(op => df._enqueue(op));\n      } // increment visit counter\n\n\n      ++count;\n    }\n  } catch (err) {\n    df._heap.clear();\n\n    error = err;\n  } // reset pulse map\n\n\n  df._input = {};\n  df._pulse = null;\n  df.debug(`Pulse ${stamp}: ${count} operators`);\n\n  if (error) {\n    df._postrun = [];\n    df.error(error);\n  } // invoke callbacks queued via runAfter\n\n\n  if (df._postrun.length) {\n    const pr = df._postrun.sort((a, b) => b.priority - a.priority);\n\n    df._postrun = [];\n\n    for (let i = 0; i < pr.length; ++i) {\n      await asyncCallback(df, pr[i].callback);\n    }\n  } // invoke postrun function, if provided\n\n\n  if (postrun) await asyncCallback(df, postrun); // handle non-blocking asynchronous callbacks\n\n  if (async.length) {\n    Promise.all(async).then(cb => df.runAsync(null, () => {\n      cb.forEach(f => {\n        try {\n          f(df);\n        } catch (err) {\n          df.error(err);\n        }\n      });\n    }));\n  }\n\n  return df;\n}\n/**\n * Queues dataflow evaluation to run once any other queued evaluations have\n * completed and returns a Promise that resolves when the queued pulse\n * propagation completes. If provided, a callback function will be invoked\n * immediately before evaluation commences. This method will ensure a\n * separate evaluation is invoked for each time it is called.\n * @param {string} [encode] - The name of an encoding set to invoke during\n *   propagation. This value is added to generated Pulse instances;\n *   operators can then respond to (or ignore) this setting as appropriate.\n *   This parameter can be used in conjunction with the Encode transform in\n *   the vega-encode package.\n * @param {function} [prerun] - An optional callback function to invoke\n *   immediately before dataflow evaluation commences.\n * @param {function} [postrun] - An optional callback function to invoke\n *   after dataflow evaluation completes. The callback will be invoked\n *   after those registered via {@link runAfter}.\n * @return {Promise} - A promise that resolves to this dataflow after\n *   evaluation completes.\n */\n\nasync function runAsync(encode, prerun, postrun) {\n  // await previously queued functions\n  while (this._running) await this._running; // run dataflow, manage running promise\n\n\n  const clear = () => this._running = null;\n\n  (this._running = this.evaluate(encode, prerun, postrun)).then(clear, clear);\n  return this._running;\n}\n/**\n * Requests dataflow evaluation and the immediately returns this dataflow\n * instance. If there are pending data loading or other asynchronous\n * operations, the dataflow will evaluate asynchronously after this method\n * has been invoked. To track when dataflow evaluation completes, use the\n * {@link runAsync} method instead. This method will raise an error if\n * invoked while the dataflow is already in the midst of evaluation.\n * @param {string} [encode] - The name of an encoding set to invoke during\n *   propagation. This value is added to generated Pulse instances;\n *   operators can then respond to (or ignore) this setting as appropriate.\n *   This parameter can be used in conjunction with the Encode transform in\n *   the vega-encode module.\n * @param {function} [prerun] - An optional callback function to invoke\n *   immediately before dataflow evaluation commences.\n * @param {function} [postrun] - An optional callback function to invoke\n *   after dataflow evaluation completes. The callback will be invoked\n *   after those registered via {@link runAfter}.\n * @return {Dataflow} - This dataflow instance.\n */\n\nfunction run(encode, prerun, postrun) {\n  return this._pulse ? reentrant(this) : (this.evaluate(encode, prerun, postrun), this);\n}\n/**\n * Schedules a callback function to be invoked after the current pulse\n * propagation completes. If no propagation is currently occurring,\n * the function is invoked immediately. Callbacks scheduled via runAfter\n * are invoked immediately upon completion of the current cycle, before\n * any request queued via runAsync. This method is primarily intended for\n * internal use. Third-party callers using runAfter to schedule a callback\n * that invokes {@link run} or {@link runAsync} should not use this method,\n * but instead use {@link runAsync} with prerun or postrun arguments.\n * @param {function(Dataflow)} callback - The callback function to run.\n *   The callback will be invoked with this Dataflow instance as its\n *   sole argument.\n * @param {boolean} enqueue - A boolean flag indicating that the\n *   callback should be queued up to run after the next propagation\n *   cycle, suppressing immediate invocation when propagation is not\n *   currently occurring.\n * @param {number} [priority] - A priority value used to sort registered\n *   callbacks to determine execution order. This argument is intended\n *   for internal Vega use only.\n */\n\nfunction runAfter(callback, enqueue, priority) {\n  if (this._pulse || enqueue) {\n    // pulse propagation is currently running, queue to run after\n    this._postrun.push({\n      priority: priority || 0,\n      callback: callback\n    });\n  } else {\n    // pulse propagation already complete, invoke immediately\n    try {\n      callback(this);\n    } catch (err) {\n      this.error(err);\n    }\n  }\n}\n/**\n * Raise an error for re-entrant dataflow evaluation.\n */\n\nfunction reentrant(df) {\n  df.error('Dataflow already running. Use runAsync() to chain invocations.');\n  return df;\n}\n/**\n * Enqueue an operator into the priority queue for evaluation. The operator\n * will be enqueued if it has no registered pulse for the current cycle, or if\n * the force argument is true. Upon enqueue, this method also sets the\n * operator's qrank to the current rank value.\n * @param {Operator} op - The operator to enqueue.\n * @param {boolean} [force] - A flag indicating if the operator should be\n *   forceably added to the queue, even if it has already been previously\n *   enqueued during the current pulse propagation. This is useful when the\n *   dataflow graph is dynamically modified and the operator rank changes.\n */\n\n\nfunction enqueue(op, force) {\n  const q = op.stamp < this._clock;\n  if (q) op.stamp = this._clock;\n\n  if (q || force) {\n    op.qrank = op.rank;\n\n    this._heap.push(op);\n  }\n}\n/**\n * Provide a correct pulse for evaluating an operator. If the operator has an\n * explicit source operator, we will try to pull the pulse(s) from it.\n * If there is an array of source operators, we build a multi-pulse.\n * Otherwise, we return a current pulse with correct source data.\n * If the pulse is the pulse map has an explicit target set, we use that.\n * Else if the pulse on the upstream source operator is current, we use that.\n * Else we use the pulse from the pulse map, but copy the source tuple array.\n * @param {Operator} op - The operator for which to get an input pulse.\n * @param {string} [encode] - An (optional) encoding set name with which to\n *   annotate the returned pulse. See {@link run} for more information.\n */\n\nfunction getPulse(op, encode) {\n  const s = op.source,\n        stamp = this._clock;\n  return s && Object(vega_util__WEBPACK_IMPORTED_MODULE_0__[\"isArray\"])(s) ? new MultiPulse(this, stamp, s.map(_ => _.pulse), encode) : this._input[op.id] || singlePulse(this._pulse, s && s.pulse);\n}\n\nfunction singlePulse(p, s) {\n  if (s && s.stamp === p.stamp) {\n    return s;\n  }\n\n  p = p.fork();\n\n  if (s && s !== StopPropagation) {\n    p.source = s.source;\n  }\n\n  return p;\n}\n\nconst NO_OPT = {\n  skip: false,\n  force: false\n};\n/**\n * Touches an operator, scheduling it to be evaluated. If invoked outside of\n * a pulse propagation, the operator will be evaluated the next time this\n * dataflow is run. If invoked in the midst of pulse propagation, the operator\n * will be queued for evaluation if and only if the operator has not yet been\n * evaluated on the current propagation timestamp.\n * @param {Operator} op - The operator to touch.\n * @param {object} [options] - Additional options hash.\n * @param {boolean} [options.skip] - If true, the operator will\n *   be skipped: it will not be evaluated, but its dependents will be.\n * @return {Dataflow}\n */\n\nfunction touch(op, options) {\n  const opt = options || NO_OPT;\n\n  if (this._pulse) {\n    // if in midst of propagation, add to priority queue\n    this._enqueue(op);\n  } else {\n    // otherwise, queue for next propagation\n    this._touched.add(op);\n  }\n\n  if (opt.skip) op.skip(true);\n  return this;\n}\n/**\n * Updates the value of the given operator.\n * @param {Operator} op - The operator to update.\n * @param {*} value - The value to set.\n * @param {object} [options] - Additional options hash.\n * @param {boolean} [options.force] - If true, the operator will\n *   be re-evaluated even if its value has not changed.\n * @param {boolean} [options.skip] - If true, the operator will\n *   be skipped: it will not be evaluated, but its dependents will be.\n * @return {Dataflow}\n */\n\nfunction update(op, value, options) {\n  const opt = options || NO_OPT;\n\n  if (op.set(value) || opt.force) {\n    this.touch(op, opt);\n  }\n\n  return this;\n}\n/**\n * Pulses an operator with a changeset of tuples. If invoked outside of\n * a pulse propagation, the pulse will be applied the next time this\n * dataflow is run. If invoked in the midst of pulse propagation, the pulse\n * will be added to the set of active pulses and will be applied if and\n * only if the target operator has not yet been evaluated on the current\n * propagation timestamp.\n * @param {Operator} op - The operator to pulse.\n * @param {ChangeSet} value - The tuple changeset to apply.\n * @param {object} [options] - Additional options hash.\n * @param {boolean} [options.skip] - If true, the operator will\n *   be skipped: it will not be evaluated, but its dependents will be.\n * @return {Dataflow}\n */\n\nfunction pulse(op, changeset, options) {\n  this.touch(op, options || NO_OPT);\n  const p = new Pulse(this, this._clock + (this._pulse ? 0 : 1)),\n        t = op.pulse && op.pulse.source || [];\n  p.target = op;\n  this._input[op.id] = changeset.pulse(p, t);\n  return this;\n}\n\nfunction Heap(cmp) {\n  let nodes = [];\n  return {\n    clear: () => nodes = [],\n    size: () => nodes.length,\n    peek: () => nodes[0],\n    push: x => {\n      nodes.push(x);\n      return siftdown(nodes, 0, nodes.length - 1, cmp);\n    },\n    pop: () => {\n      const last = nodes.pop();\n      let item;\n\n      if (nodes.length) {\n        item = nodes[0];\n        nodes[0] = last;\n        siftup(nodes, 0, cmp);\n      } else {\n        item = last;\n      }\n\n      return item;\n    }\n  };\n}\n\nfunction siftdown(array, start, idx, cmp) {\n  let parent, pidx;\n  const item = array[idx];\n\n  while (idx > start) {\n    pidx = idx - 1 >> 1;\n    parent = array[pidx];\n\n    if (cmp(item, parent) < 0) {\n      array[idx] = parent;\n      idx = pidx;\n      continue;\n    }\n\n    break;\n  }\n\n  return array[idx] = item;\n}\n\nfunction siftup(array, idx, cmp) {\n  const start = idx,\n        end = array.length,\n        item = array[idx];\n  let cidx = (idx << 1) + 1,\n      ridx;\n\n  while (cidx < end) {\n    ridx = cidx + 1;\n\n    if (ridx < end && cmp(array[cidx], array[ridx]) >= 0) {\n      cidx = ridx;\n    }\n\n    array[idx] = array[cidx];\n    idx = cidx;\n    cidx = (idx << 1) + 1;\n  }\n\n  array[idx] = item;\n  return siftdown(array, start, idx, cmp);\n}\n\n/**\n * A dataflow graph for reactive processing of data streams.\n * @constructor\n */\n\nfunction Dataflow() {\n  this.logger(Object(vega_util__WEBPACK_IMPORTED_MODULE_0__[\"logger\"])());\n  this.logLevel(vega_util__WEBPACK_IMPORTED_MODULE_0__[\"Error\"]);\n  this._clock = 0;\n  this._rank = 0;\n  this._locale = Object(vega_format__WEBPACK_IMPORTED_MODULE_2__[\"defaultLocale\"])();\n\n  try {\n    this._loader = Object(vega_loader__WEBPACK_IMPORTED_MODULE_1__[\"loader\"])();\n  } catch (e) {// do nothing if loader module is unavailable\n  }\n\n  this._touched = UniqueList(vega_util__WEBPACK_IMPORTED_MODULE_0__[\"id\"]);\n  this._input = {};\n  this._pulse = null;\n  this._heap = Heap((a, b) => a.qrank - b.qrank);\n  this._postrun = [];\n}\n\nfunction logMethod(method) {\n  return function () {\n    return this._log[method].apply(this, arguments);\n  };\n}\n\nDataflow.prototype = {\n  /**\n   * The current timestamp of this dataflow. This value reflects the\n   * timestamp of the previous dataflow run. The dataflow is initialized\n   * with a stamp value of 0. The initial run of the dataflow will have\n   * a timestap of 1, and so on. This value will match the\n   * {@link Pulse.stamp} property.\n   * @return {number} - The current timestamp value.\n   */\n  stamp() {\n    return this._clock;\n  },\n\n  /**\n   * Gets or sets the loader instance to use for data file loading. A\n   * loader object must provide a \"load\" method for loading files and a\n   * \"sanitize\" method for checking URL/filename validity. Both methods\n   * should accept a URI and options hash as arguments, and return a Promise\n   * that resolves to the loaded file contents (load) or a hash containing\n   * sanitized URI data with the sanitized url assigned to the \"href\" property\n   * (sanitize).\n   * @param {object} _ - The loader instance to use.\n   * @return {object|Dataflow} - If no arguments are provided, returns\n   *   the current loader instance. Otherwise returns this Dataflow instance.\n   */\n  loader(_) {\n    if (arguments.length) {\n      this._loader = _;\n      return this;\n    } else {\n      return this._loader;\n    }\n  },\n\n  /**\n   * Gets or sets the locale instance to use for formatting and parsing\n   * string values. The locale object should be provided by the\n   * vega-format library, and include methods such as format, timeFormat,\n   * utcFormat, timeParse, and utcParse.\n   * @param {object} _ - The locale instance to use.\n   * @return {object|Dataflow} - If no arguments are provided, returns\n   *   the current locale instance. Otherwise returns this Dataflow instance.\n   */\n  locale(_) {\n    if (arguments.length) {\n      this._locale = _;\n      return this;\n    } else {\n      return this._locale;\n    }\n  },\n\n  /**\n   * Get or set the logger instance used to log messages. If no arguments are\n   * provided, returns the current logger instance. Otherwise, sets the logger\n   * and return this Dataflow instance. Provided loggers must support the full\n   * API of logger objects generated by the vega-util logger method. Note that\n   * by default the log level of the new logger will be used; use the logLevel\n   * method to adjust the log level as needed.\n   */\n  logger(logger) {\n    if (arguments.length) {\n      this._log = logger;\n      return this;\n    } else {\n      return this._log;\n    }\n  },\n\n  /**\n   * Logs an error message. By default, logged messages are written to console\n   * output. The message will only be logged if the current log level is high\n   * enough to permit error messages.\n   */\n  error: logMethod('error'),\n\n  /**\n   * Logs a warning message. By default, logged messages are written to console\n   * output. The message will only be logged if the current log level is high\n   * enough to permit warning messages.\n   */\n  warn: logMethod('warn'),\n\n  /**\n   * Logs a information message. By default, logged messages are written to\n   * console output. The message will only be logged if the current log level is\n   * high enough to permit information messages.\n   */\n  info: logMethod('info'),\n\n  /**\n   * Logs a debug message. By default, logged messages are written to console\n   * output. The message will only be logged if the current log level is high\n   * enough to permit debug messages.\n   */\n  debug: logMethod('debug'),\n\n  /**\n   * Get or set the current log level. If an argument is provided, it\n   * will be used as the new log level.\n   * @param {number} [level] - Should be one of None, Warn, Info\n   * @return {number} - The current log level.\n   */\n  logLevel: logMethod('level'),\n\n  /**\n   * Empty entry threshold for garbage cleaning. Map data structures will\n   * perform cleaning once the number of empty entries exceeds this value.\n   */\n  cleanThreshold: 1e4,\n  // OPERATOR REGISTRATION\n  add,\n  connect,\n  rank,\n  rerank,\n  // OPERATOR UPDATES\n  pulse,\n  touch,\n  update,\n  changeset,\n  // DATA LOADING\n  ingest,\n  parse,\n  preload,\n  request,\n  // EVENT HANDLING\n  events,\n  on,\n  // PULSE PROPAGATION\n  evaluate,\n  run,\n  runAsync,\n  runAfter,\n  _enqueue: enqueue,\n  _getPulse: getPulse\n};\n\n/**\n * Abstract class for operators that process data tuples.\n * Subclasses must provide a {@link transform} method for operator processing.\n * @constructor\n * @param {*} [init] - The initial value for this operator.\n * @param {object} [params] - The parameters for this operator.\n * @param {Operator} [source] - The operator from which to receive pulses.\n */\n\nfunction Transform(init, params) {\n  Operator.call(this, init, null, params);\n}\nObject(vega_util__WEBPACK_IMPORTED_MODULE_0__[\"inherits\"])(Transform, Operator, {\n  /**\n   * Overrides {@link Operator.evaluate} for transform operators.\n   * Internally, this method calls {@link evaluate} to perform processing.\n   * If {@link evaluate} returns a falsy value, the input pulse is returned.\n   * This method should NOT be overridden, instead overrride {@link evaluate}.\n   * @param {Pulse} pulse - the current dataflow pulse.\n   * @return the output pulse for this operator (or StopPropagation)\n   */\n  run(pulse) {\n    if (pulse.stamp < this.stamp) return pulse.StopPropagation;\n    let rv;\n\n    if (this.skip()) {\n      this.skip(false);\n    } else {\n      rv = this.evaluate(pulse);\n    }\n\n    rv = rv || pulse;\n\n    if (rv.then) {\n      rv = rv.then(_ => this.pulse = _);\n    } else if (rv !== pulse.StopPropagation) {\n      this.pulse = rv;\n    }\n\n    return rv;\n  },\n\n  /**\n   * Overrides {@link Operator.evaluate} for transform operators.\n   * Marshalls parameter values and then invokes {@link transform}.\n   * @param {Pulse} pulse - the current dataflow pulse.\n   * @return {Pulse} The output pulse (or StopPropagation). A falsy return\n       value (including undefined) will let the input pulse pass through.\n  */\n  evaluate(pulse) {\n    const params = this.marshall(pulse.stamp),\n          out = this.transform(params, pulse);\n    params.clear();\n    return out;\n  },\n\n  /**\n   * Process incoming pulses.\n   * Subclasses should override this method to implement transforms.\n   * @param {Parameters} _ - The operator parameter values.\n   * @param {Pulse} pulse - The current dataflow pulse.\n   * @return {Pulse} The output pulse (or StopPropagation). A falsy return\n   *   value (including undefined) will let the input pulse pass through.\n   */\n  transform() {}\n\n});\n\nconst transforms = {};\nfunction definition(type) {\n  const t = transform(type);\n  return t && t.Definition || null;\n}\nfunction transform(type) {\n  type = type && type.toLowerCase();\n  return Object(vega_util__WEBPACK_IMPORTED_MODULE_0__[\"hasOwnProperty\"])(transforms, type) ? transforms[type] : null;\n}\n\n\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,[encoded data, 109504 characters]\n//# sourceURL=webpack-internal:///./node_modules/vega-regression/node_modules/vega-dataflow/build/vega-dataflow.module.js\n");

/***/ }),

/***/ "./node_modules/vega-regression/node_modules/vega-loader/index.browser.js":
/*!********************************************************************************!*\
  !*** ./node_modules/vega-regression/node_modules/vega-loader/index.browser.js ***!
  \********************************************************************************/
/*! exports provided: loader, read, inferType, inferTypes, typeParsers, format, formats, responseType */
/***/ (function(module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"loader\", function() { return loader; });\n/* harmony import */ var _src_loader__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./src/loader */ \"./node_modules/vega-regression/node_modules/vega-loader/src/loader.js\");\n/* harmony import */ var _src_read__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./src/read */ \"./node_modules/vega-regression/node_modules/vega-loader/src/read.js\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"read\", function() { return _src_read__WEBPACK_IMPORTED_MODULE_1__[\"default\"]; });\n\n/* harmony import */ var _src_type__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./src/type */ \"./node_modules/vega-regression/node_modules/vega-loader/src/type.js\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"inferType\", function() { return _src_type__WEBPACK_IMPORTED_MODULE_2__[\"inferType\"]; });\n\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"inferTypes\", function() { return _src_type__WEBPACK_IMPORTED_MODULE_2__[\"inferTypes\"]; });\n\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"typeParsers\", function() { return _src_type__WEBPACK_IMPORTED_MODULE_2__[\"typeParsers\"]; });\n\n/* harmony import */ var _src_formats_index__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ./src/formats/index */ \"./node_modules/vega-regression/node_modules/vega-loader/src/formats/index.js\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"format\", function() { return _src_formats_index__WEBPACK_IMPORTED_MODULE_3__[\"format\"]; });\n\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"formats\", function() { return _src_formats_index__WEBPACK_IMPORTED_MODULE_3__[\"formats\"]; });\n\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"responseType\", function() { return _src_formats_index__WEBPACK_IMPORTED_MODULE_3__[\"responseType\"]; });\n\n\n\nconst loader = Object(_src_loader__WEBPACK_IMPORTED_MODULE_0__[\"default\"])(\n  typeof fetch !== 'undefined' && fetch, // use built-in fetch API\n  null // no file system access\n);\n\n\n\n\n\n\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvdmVnYS1yZWdyZXNzaW9uL25vZGVfbW9kdWxlcy92ZWdhLWxvYWRlci9pbmRleC5icm93c2VyLmpzLmpzIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL3ZlZ2EtcmVncmVzc2lvbi9ub2RlX21vZHVsZXMvdmVnYS1sb2FkZXIvaW5kZXguYnJvd3Nlci5qcz80MzY4Il0sInNvdXJjZXNDb250ZW50IjpbImltcG9ydCBsb2FkZXJGYWN0b3J5IGZyb20gJy4vc3JjL2xvYWRlcic7XG5cbmV4cG9ydCBjb25zdCBsb2FkZXIgPSBsb2FkZXJGYWN0b3J5KFxuICB0eXBlb2YgZmV0Y2ggIT09ICd1bmRlZmluZWQnICYmIGZldGNoLCAvLyB1c2UgYnVpbHQtaW4gZmV0Y2ggQVBJXG4gIG51bGwgLy8gbm8gZmlsZSBzeXN0ZW0gYWNjZXNzXG4pO1xuXG5leHBvcnQge1xuICBkZWZhdWx0IGFzIHJlYWRcbn0gZnJvbSAnLi9zcmMvcmVhZCc7XG5cbmV4cG9ydCB7XG4gIGluZmVyVHlwZSxcbiAgaW5mZXJUeXBlcyxcbiAgdHlwZVBhcnNlcnNcbn0gZnJvbSAnLi9zcmMvdHlwZSc7XG5cbmV4cG9ydCB7XG4gIGZvcm1hdCxcbiAgZm9ybWF0cyxcbiAgcmVzcG9uc2VUeXBlXG59IGZyb20gJy4vc3JjL2Zvcm1hdHMvaW5kZXgnO1xuIl0sIm1hcHBpbmdzIjoiQUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFHQTtBQUNBO0FBS0E7QUFDQTtBQUtBOyIsInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///./node_modules/vega-regression/node_modules/vega-loader/index.browser.js\n");

/***/ }),

/***/ "./node_modules/vega-regression/node_modules/vega-loader/src/formats/dsv.js":
/*!**********************************************************************************!*\
  !*** ./node_modules/vega-regression/node_modules/vega-loader/src/formats/dsv.js ***!
  \**********************************************************************************/
/*! exports provided: delimitedFormat, default */
/***/ (function(module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"delimitedFormat\", function() { return delimitedFormat; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"default\", function() { return dsv; });\n/* harmony import */ var d3_dsv__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! d3-dsv */ \"./node_modules/vega-regression/node_modules/d3-dsv/src/index.js\");\n/* harmony import */ var vega_util__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! vega-util */ \"./node_modules/vega-regression/node_modules/vega-util/build/vega-util.module.js\");\n\n\n\nfunction delimitedFormat(delimiter) {\n  const parse = function(data, format) {\n    const delim = {delimiter: delimiter};\n    return dsv(data, format ? Object(vega_util__WEBPACK_IMPORTED_MODULE_1__[\"extend\"])(format, delim) : delim);\n  };\n\n  parse.responseType = 'text';\n\n  return parse;\n}\n\nfunction dsv(data, format) {\n  if (format.header) {\n    data = format.header\n      .map(vega_util__WEBPACK_IMPORTED_MODULE_1__[\"stringValue\"])\n      .join(format.delimiter) + '\\n' + data;\n  }\n  return Object(d3_dsv__WEBPACK_IMPORTED_MODULE_0__[\"dsvFormat\"])(format.delimiter).parse(data + '');\n}\n\ndsv.responseType = 'text';\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvdmVnYS1yZWdyZXNzaW9uL25vZGVfbW9kdWxlcy92ZWdhLWxvYWRlci9zcmMvZm9ybWF0cy9kc3YuanMuanMiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvdmVnYS1yZWdyZXNzaW9uL25vZGVfbW9kdWxlcy92ZWdhLWxvYWRlci9zcmMvZm9ybWF0cy9kc3YuanM/YTNhMCJdLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge2RzdkZvcm1hdH0gZnJvbSAnZDMtZHN2JztcbmltcG9ydCB7ZXh0ZW5kLCBzdHJpbmdWYWx1ZX0gZnJvbSAndmVnYS11dGlsJztcblxuZXhwb3J0IGZ1bmN0aW9uIGRlbGltaXRlZEZvcm1hdChkZWxpbWl0ZXIpIHtcbiAgY29uc3QgcGFyc2UgPSBmdW5jdGlvbihkYXRhLCBmb3JtYXQpIHtcbiAgICBjb25zdCBkZWxpbSA9IHtkZWxpbWl0ZXI6IGRlbGltaXRlcn07XG4gICAgcmV0dXJuIGRzdihkYXRhLCBmb3JtYXQgPyBleHRlbmQoZm9ybWF0LCBkZWxpbSkgOiBkZWxpbSk7XG4gIH07XG5cbiAgcGFyc2UucmVzcG9uc2VUeXBlID0gJ3RleHQnO1xuXG4gIHJldHVybiBwYXJzZTtcbn1cblxuZXhwb3J0IGRlZmF1bHQgZnVuY3Rpb24gZHN2KGRhdGEsIGZvcm1hdCkge1xuICBpZiAoZm9ybWF0LmhlYWRlcikge1xuICAgIGRhdGEgPSBmb3JtYXQuaGVhZGVyXG4gICAgICAubWFwKHN0cmluZ1ZhbHVlKVxuICAgICAgLmpvaW4oZm9ybWF0LmRlbGltaXRlcikgKyAnXFxuJyArIGRhdGE7XG4gIH1cbiAgcmV0dXJuIGRzdkZvcm1hdChmb3JtYXQuZGVsaW1pdGVyKS5wYXJzZShkYXRhICsgJycpO1xufVxuXG5kc3YucmVzcG9uc2VUeXBlID0gJ3RleHQnO1xuIl0sIm1hcHBpbmdzIjoiQUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOyIsInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///./node_modules/vega-regression/node_modules/vega-loader/src/formats/dsv.js\n");

/***/ }),

/***/ "./node_modules/vega-regression/node_modules/vega-loader/src/formats/index.js":
/*!************************************************************************************!*\
  !*** ./node_modules/vega-regression/node_modules/vega-loader/src/formats/index.js ***!
  \************************************************************************************/
/*! exports provided: format, formats, responseType */
/***/ (function(module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"format\", function() { return format; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"formats\", function() { return formats; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"responseType\", function() { return responseType; });\n/* harmony import */ var _dsv__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./dsv */ \"./node_modules/vega-regression/node_modules/vega-loader/src/formats/dsv.js\");\n/* harmony import */ var _json__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./json */ \"./node_modules/vega-regression/node_modules/vega-loader/src/formats/json.js\");\n/* harmony import */ var _topojson__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./topojson */ \"./node_modules/vega-regression/node_modules/vega-loader/src/formats/topojson.js\");\n/* harmony import */ var vega_util__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! vega-util */ \"./node_modules/vega-regression/node_modules/vega-util/build/vega-util.module.js\");\n\n\n\n\n\nconst format = {\n  dsv: _dsv__WEBPACK_IMPORTED_MODULE_0__[\"default\"],\n  csv: Object(_dsv__WEBPACK_IMPORTED_MODULE_0__[\"delimitedFormat\"])(','),\n  tsv: Object(_dsv__WEBPACK_IMPORTED_MODULE_0__[\"delimitedFormat\"])('\\t'),\n  json: _json__WEBPACK_IMPORTED_MODULE_1__[\"default\"],\n  topojson: _topojson__WEBPACK_IMPORTED_MODULE_2__[\"default\"]\n};\n\nfunction formats(name, reader) {\n  if (arguments.length > 1) {\n    format[name] = reader;\n    return this;\n  } else {\n    return Object(vega_util__WEBPACK_IMPORTED_MODULE_3__[\"hasOwnProperty\"])(format, name) ? format[name] : null;\n  }\n}\n\nfunction responseType(type) {\n  const f = formats(type);\n  return f && f.responseType || 'text';\n}\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvdmVnYS1yZWdyZXNzaW9uL25vZGVfbW9kdWxlcy92ZWdhLWxvYWRlci9zcmMvZm9ybWF0cy9pbmRleC5qcy5qcyIsInNvdXJjZXMiOlsid2VicGFjazovLy8uL25vZGVfbW9kdWxlcy92ZWdhLXJlZ3Jlc3Npb24vbm9kZV9tb2R1bGVzL3ZlZ2EtbG9hZGVyL3NyYy9mb3JtYXRzL2luZGV4LmpzPzM4MDkiXSwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtkZWxpbWl0ZWRGb3JtYXQsIGRlZmF1bHQgYXMgZHN2fSBmcm9tICcuL2Rzdic7XG5pbXBvcnQganNvbiBmcm9tICcuL2pzb24nO1xuaW1wb3J0IHRvcG9qc29uIGZyb20gJy4vdG9wb2pzb24nO1xuaW1wb3J0IHtoYXNPd25Qcm9wZXJ0eX0gZnJvbSAndmVnYS11dGlsJztcblxuZXhwb3J0IGNvbnN0IGZvcm1hdCA9IHtcbiAgZHN2OiBkc3YsXG4gIGNzdjogZGVsaW1pdGVkRm9ybWF0KCcsJyksXG4gIHRzdjogZGVsaW1pdGVkRm9ybWF0KCdcXHQnKSxcbiAganNvbjoganNvbixcbiAgdG9wb2pzb246IHRvcG9qc29uXG59O1xuXG5leHBvcnQgZnVuY3Rpb24gZm9ybWF0cyhuYW1lLCByZWFkZXIpIHtcbiAgaWYgKGFyZ3VtZW50cy5sZW5ndGggPiAxKSB7XG4gICAgZm9ybWF0W25hbWVdID0gcmVhZGVyO1xuICAgIHJldHVybiB0aGlzO1xuICB9IGVsc2Uge1xuICAgIHJldHVybiBoYXNPd25Qcm9wZXJ0eShmb3JtYXQsIG5hbWUpID8gZm9ybWF0W25hbWVdIDogbnVsbDtcbiAgfVxufVxuXG5leHBvcnQgZnVuY3Rpb24gcmVzcG9uc2VUeXBlKHR5cGUpIHtcbiAgY29uc3QgZiA9IGZvcm1hdHModHlwZSk7XG4gIHJldHVybiBmICYmIGYucmVzcG9uc2VUeXBlIHx8ICd0ZXh0Jztcbn1cbiJdLCJtYXBwaW5ncyI6IkFBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7Iiwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///./node_modules/vega-regression/node_modules/vega-loader/src/formats/index.js\n");

/***/ }),

/***/ "./node_modules/vega-regression/node_modules/vega-loader/src/formats/json.js":
/*!***********************************************************************************!*\
  !*** ./node_modules/vega-regression/node_modules/vega-loader/src/formats/json.js ***!
  \***********************************************************************************/
/*! exports provided: default */
/***/ (function(module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* WEBPACK VAR INJECTION */(function(Buffer) {/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"default\", function() { return json; });\n/* harmony import */ var vega_util__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! vega-util */ \"./node_modules/vega-regression/node_modules/vega-util/build/vega-util.module.js\");\n\n\nfunction isBuffer(_) {\n  return (typeof Buffer === 'function' && Object(vega_util__WEBPACK_IMPORTED_MODULE_0__[\"isFunction\"])(Buffer.isBuffer))\n    ? Buffer.isBuffer(_) : false;\n}\n\nfunction json(data, format) {\n  const prop = (format && format.property) ? Object(vega_util__WEBPACK_IMPORTED_MODULE_0__[\"field\"])(format.property) : vega_util__WEBPACK_IMPORTED_MODULE_0__[\"identity\"];\n  return Object(vega_util__WEBPACK_IMPORTED_MODULE_0__[\"isObject\"])(data) && !isBuffer(data)\n    ? parseJSON(prop(data), format)\n    : prop(JSON.parse(data));\n}\n\njson.responseType = 'json';\n\nfunction parseJSON(data, format) {\n  if (!Object(vega_util__WEBPACK_IMPORTED_MODULE_0__[\"isArray\"])(data) && Object(vega_util__WEBPACK_IMPORTED_MODULE_0__[\"isIterable\"])(data)) {\n    data = [...data];\n  }\n  return (format && format.copy)\n    ? JSON.parse(JSON.stringify(data))\n    : data;\n}\n\n/* WEBPACK VAR INJECTION */}.call(this, __webpack_require__(/*! ./../../../../../buffer/index.js */ \"./node_modules/buffer/index.js\").Buffer))//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvdmVnYS1yZWdyZXNzaW9uL25vZGVfbW9kdWxlcy92ZWdhLWxvYWRlci9zcmMvZm9ybWF0cy9qc29uLmpzLmpzIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL3ZlZ2EtcmVncmVzc2lvbi9ub2RlX21vZHVsZXMvdmVnYS1sb2FkZXIvc3JjL2Zvcm1hdHMvanNvbi5qcz9iMTA1Il0sInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7XG4gIGZpZWxkLCBpZGVudGl0eSwgaXNBcnJheSwgaXNGdW5jdGlvbiwgaXNJdGVyYWJsZSwgaXNPYmplY3Rcbn0gZnJvbSAndmVnYS11dGlsJztcblxuZnVuY3Rpb24gaXNCdWZmZXIoXykge1xuICByZXR1cm4gKHR5cGVvZiBCdWZmZXIgPT09ICdmdW5jdGlvbicgJiYgaXNGdW5jdGlvbihCdWZmZXIuaXNCdWZmZXIpKVxuICAgID8gQnVmZmVyLmlzQnVmZmVyKF8pIDogZmFsc2U7XG59XG5cbmV4cG9ydCBkZWZhdWx0IGZ1bmN0aW9uIGpzb24oZGF0YSwgZm9ybWF0KSB7XG4gIGNvbnN0IHByb3AgPSAoZm9ybWF0ICYmIGZvcm1hdC5wcm9wZXJ0eSkgPyBmaWVsZChmb3JtYXQucHJvcGVydHkpIDogaWRlbnRpdHk7XG4gIHJldHVybiBpc09iamVjdChkYXRhKSAmJiAhaXNCdWZmZXIoZGF0YSlcbiAgICA/IHBhcnNlSlNPTihwcm9wKGRhdGEpLCBmb3JtYXQpXG4gICAgOiBwcm9wKEpTT04ucGFyc2UoZGF0YSkpO1xufVxuXG5qc29uLnJlc3BvbnNlVHlwZSA9ICdqc29uJztcblxuZnVuY3Rpb24gcGFyc2VKU09OKGRhdGEsIGZvcm1hdCkge1xuICBpZiAoIWlzQXJyYXkoZGF0YSkgJiYgaXNJdGVyYWJsZShkYXRhKSkge1xuICAgIGRhdGEgPSBbLi4uZGF0YV07XG4gIH1cbiAgcmV0dXJuIChmb3JtYXQgJiYgZm9ybWF0LmNvcHkpXG4gICAgPyBKU09OLnBhcnNlKEpTT04uc3RyaW5naWZ5KGRhdGEpKVxuICAgIDogZGF0YTtcbn1cbiJdLCJtYXBwaW5ncyI6IkFBQUE7QUFBQTtBQUFBO0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBIiwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///./node_modules/vega-regression/node_modules/vega-loader/src/formats/json.js\n");

/***/ }),

/***/ "./node_modules/vega-regression/node_modules/vega-loader/src/formats/topojson.js":
/*!***************************************************************************************!*\
  !*** ./node_modules/vega-regression/node_modules/vega-loader/src/formats/topojson.js ***!
  \***************************************************************************************/
/*! exports provided: default */
/***/ (function(module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"default\", function() { return topojson; });\n/* harmony import */ var _json__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./json */ \"./node_modules/vega-regression/node_modules/vega-loader/src/formats/json.js\");\n/* harmony import */ var topojson_client__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! topojson-client */ \"./node_modules/topojson-client/src/index.js\");\n/* harmony import */ var vega_util__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! vega-util */ \"./node_modules/vega-regression/node_modules/vega-util/build/vega-util.module.js\");\n\n\n\n\nconst filters = {\n  interior: (a, b) => a !== b,\n  exterior: (a, b) => a === b\n};\n\nfunction topojson(data, format) {\n  let method, object, property, filter;\n  data = Object(_json__WEBPACK_IMPORTED_MODULE_0__[\"default\"])(data, format);\n\n  if (format && format.feature) {\n    method = topojson_client__WEBPACK_IMPORTED_MODULE_1__[\"feature\"];\n    property = format.feature;\n  } else if (format && format.mesh) {\n    method = topojson_client__WEBPACK_IMPORTED_MODULE_1__[\"mesh\"];\n    property = format.mesh;\n    filter = filters[format.filter];\n  } else {\n    Object(vega_util__WEBPACK_IMPORTED_MODULE_2__[\"error\"])('Missing TopoJSON feature or mesh parameter.');\n  }\n\n  object = (object = data.objects[property])\n    ? method(data, object, filter)\n    : Object(vega_util__WEBPACK_IMPORTED_MODULE_2__[\"error\"])('Invalid TopoJSON object: ' + property);\n\n  return object && object.features || [object];\n}\n\ntopojson.responseType = 'json';\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvdmVnYS1yZWdyZXNzaW9uL25vZGVfbW9kdWxlcy92ZWdhLWxvYWRlci9zcmMvZm9ybWF0cy90b3BvanNvbi5qcy5qcyIsInNvdXJjZXMiOlsid2VicGFjazovLy8uL25vZGVfbW9kdWxlcy92ZWdhLXJlZ3Jlc3Npb24vbm9kZV9tb2R1bGVzL3ZlZ2EtbG9hZGVyL3NyYy9mb3JtYXRzL3RvcG9qc29uLmpzPzI5ZTMiXSwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IGpzb24gZnJvbSAnLi9qc29uJztcbmltcG9ydCB7ZmVhdHVyZSwgbWVzaH0gZnJvbSAndG9wb2pzb24tY2xpZW50JztcbmltcG9ydCB7ZXJyb3J9IGZyb20gJ3ZlZ2EtdXRpbCc7XG5cbmNvbnN0IGZpbHRlcnMgPSB7XG4gIGludGVyaW9yOiAoYSwgYikgPT4gYSAhPT0gYixcbiAgZXh0ZXJpb3I6IChhLCBiKSA9PiBhID09PSBiXG59O1xuXG5leHBvcnQgZGVmYXVsdCBmdW5jdGlvbiB0b3BvanNvbihkYXRhLCBmb3JtYXQpIHtcbiAgbGV0IG1ldGhvZCwgb2JqZWN0LCBwcm9wZXJ0eSwgZmlsdGVyO1xuICBkYXRhID0ganNvbihkYXRhLCBmb3JtYXQpO1xuXG4gIGlmIChmb3JtYXQgJiYgZm9ybWF0LmZlYXR1cmUpIHtcbiAgICBtZXRob2QgPSBmZWF0dXJlO1xuICAgIHByb3BlcnR5ID0gZm9ybWF0LmZlYXR1cmU7XG4gIH0gZWxzZSBpZiAoZm9ybWF0ICYmIGZvcm1hdC5tZXNoKSB7XG4gICAgbWV0aG9kID0gbWVzaDtcbiAgICBwcm9wZXJ0eSA9IGZvcm1hdC5tZXNoO1xuICAgIGZpbHRlciA9IGZpbHRlcnNbZm9ybWF0LmZpbHRlcl07XG4gIH0gZWxzZSB7XG4gICAgZXJyb3IoJ01pc3NpbmcgVG9wb0pTT04gZmVhdHVyZSBvciBtZXNoIHBhcmFtZXRlci4nKTtcbiAgfVxuXG4gIG9iamVjdCA9IChvYmplY3QgPSBkYXRhLm9iamVjdHNbcHJvcGVydHldKVxuICAgID8gbWV0aG9kKGRhdGEsIG9iamVjdCwgZmlsdGVyKVxuICAgIDogZXJyb3IoJ0ludmFsaWQgVG9wb0pTT04gb2JqZWN0OiAnICsgcHJvcGVydHkpO1xuXG4gIHJldHVybiBvYmplY3QgJiYgb2JqZWN0LmZlYXR1cmVzIHx8IFtvYmplY3RdO1xufVxuXG50b3BvanNvbi5yZXNwb25zZVR5cGUgPSAnanNvbic7XG4iXSwibWFwcGluZ3MiOiJBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOyIsInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///./node_modules/vega-regression/node_modules/vega-loader/src/formats/topojson.js\n");

/***/ }),

/***/ "./node_modules/vega-regression/node_modules/vega-loader/src/loader.js":
/*!*****************************************************************************!*\
  !*** ./node_modules/vega-regression/node_modules/vega-loader/src/loader.js ***!
  \*****************************************************************************/
/*! exports provided: default */
/***/ (function(module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var vega_util__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! vega-util */ \"./node_modules/vega-regression/node_modules/vega-util/build/vega-util.module.js\");\n\n\n// Matches absolute URLs with optional protocol\n//   https://...    file://...    //...\nconst protocol_re = /^([A-Za-z]+:)?\\/\\//;\n\n// Matches allowed URIs. From https://github.com/cure53/DOMPurify/blob/master/src/regexp.js with added file://\nconst allowed_re = /^(?:(?:(?:f|ht)tps?|mailto|tel|callto|cid|xmpp|file|data):|[^a-z]|[a-z+.\\-]+(?:[^a-z+.\\-:]|$))/i; // eslint-disable-line no-useless-escape\nconst whitespace_re = /[\\u0000-\\u0020\\u00A0\\u1680\\u180E\\u2000-\\u2029\\u205f\\u3000]/g; // eslint-disable-line no-control-regex\n\n\n// Special treatment in node.js for the file: protocol\nconst fileProtocol = 'file://';\n\n/**\n * Factory for a loader constructor that provides methods for requesting\n * files from either the network or disk, and for sanitizing request URIs.\n * @param {function} fetch - The Fetch API for HTTP network requests.\n *   If null or undefined, HTTP loading will be disabled.\n * @param {object} fs - The file system interface for file loading.\n *   If null or undefined, local file loading will be disabled.\n * @return {function} A loader constructor with the following signature:\n *   param {object} [options] - Optional default loading options to use.\n *   return {object} - A new loader instance.\n */\n/* harmony default export */ __webpack_exports__[\"default\"] = (function(fetch, fs) {\n  return options => ({\n    options: options || {},\n    sanitize: sanitize,\n    load: load,\n    fileAccess: !!fs,\n    file: fileLoader(fs),\n    http: httpLoader(fetch)\n  });\n});\n\n/**\n * Load an external resource, typically either from the web or from the local\n * filesystem. This function uses {@link sanitize} to first sanitize the uri,\n * then calls either {@link http} (for web requests) or {@link file} (for\n * filesystem loading).\n * @param {string} uri - The resource indicator (e.g., URL or filename).\n * @param {object} [options] - Optional loading options. These options will\n *   override any existing default options.\n * @return {Promise} - A promise that resolves to the loaded content.\n */\nasync function load(uri, options) {\n  const opt = await this.sanitize(uri, options),\n        url = opt.href;\n\n  return opt.localFile\n    ? this.file(url)\n    : this.http(url, options);\n}\n\n/**\n * URI sanitizer function.\n * @param {string} uri - The uri (url or filename) to sanity check.\n * @param {object} options - An options hash.\n * @return {Promise} - A promise that resolves to an object containing\n *  sanitized uri data, or rejects it the input uri is deemed invalid.\n *  The properties of the resolved object are assumed to be\n *  valid attributes for an HTML 'a' tag. The sanitized uri *must* be\n *  provided by the 'href' property of the returned object.\n */\nasync function sanitize(uri, options) {\n  options = Object(vega_util__WEBPACK_IMPORTED_MODULE_0__[\"extend\"])({}, this.options, options);\n\n  const fileAccess = this.fileAccess,\n        result = {href: null};\n\n  let isFile, loadFile, base;\n\n  const isAllowed = allowed_re.test(uri.replace(whitespace_re, ''));\n\n  if (uri == null || typeof uri !== 'string' || !isAllowed) {\n    Object(vega_util__WEBPACK_IMPORTED_MODULE_0__[\"error\"])('Sanitize failure, invalid URI: ' + Object(vega_util__WEBPACK_IMPORTED_MODULE_0__[\"stringValue\"])(uri));\n  }\n\n  const hasProtocol = protocol_re.test(uri);\n\n  // if relative url (no protocol/host), prepend baseURL\n  if ((base = options.baseURL) && !hasProtocol) {\n    // Ensure that there is a slash between the baseURL (e.g. hostname) and url\n    if (!uri.startsWith('/') && base[base.length-1] !== '/') {\n      uri = '/' + uri;\n    }\n    uri = base + uri;\n  }\n\n  // should we load from file system?\n  loadFile = (isFile = uri.startsWith(fileProtocol))\n    || options.mode === 'file'\n    || options.mode !== 'http' && !hasProtocol && fileAccess;\n\n  if (isFile) {\n    // strip file protocol\n    uri = uri.slice(fileProtocol.length);\n  } else if (uri.startsWith('//')) {\n    if (options.defaultProtocol === 'file') {\n      // if is file, strip protocol and set loadFile flag\n      uri = uri.slice(2);\n      loadFile = true;\n    } else {\n      // if relative protocol (starts with '//'), prepend default protocol\n      uri = (options.defaultProtocol || 'http') + ':' + uri;\n    }\n  }\n\n  // set non-enumerable mode flag to indicate local file load\n  Object.defineProperty(result, 'localFile', {value: !!loadFile});\n\n  // set uri\n  result.href = uri;\n\n  // set default result target, if specified\n  if (options.target) {\n    result.target = options.target + '';\n  }\n\n  // set default result rel, if specified (#1542)\n  if (options.rel) {\n    result.rel = options.rel + '';\n  }\n\n  // provide control over cross-origin image handling (#2238)\n  // https://developer.mozilla.org/en-US/docs/Web/HTML/CORS_enabled_image\n  if (options.context === 'image' && options.crossOrigin) {\n    result.crossOrigin = options.crossOrigin + '';\n  }\n\n  // return\n  return result;\n}\n\n/**\n * File system loader factory.\n * @param {object} fs - The file system interface.\n * @return {function} - A file loader with the following signature:\n *   param {string} filename - The file system path to load.\n *   param {string} filename - The file system path to load.\n *   return {Promise} A promise that resolves to the file contents.\n */\nfunction fileLoader(fs) {\n  return fs\n    ? filename => new Promise((accept, reject) => {\n        fs.readFile(filename, (error, data) => {\n          if (error) reject(error);\n          else accept(data);\n        });\n      })\n    : fileReject;\n}\n\n/**\n * Default file system loader that simply rejects.\n */\nasync function fileReject() {\n  Object(vega_util__WEBPACK_IMPORTED_MODULE_0__[\"error\"])('No file system access.');\n}\n\n/**\n * HTTP request handler factory.\n * @param {function} fetch - The Fetch API method.\n * @return {function} - An http loader with the following signature:\n *   param {string} url - The url to request.\n *   param {object} options - An options hash.\n *   return {Promise} - A promise that resolves to the file contents.\n */\nfunction httpLoader(fetch) {\n  return fetch\n    ? async function(url, options) {\n        const opt = Object(vega_util__WEBPACK_IMPORTED_MODULE_0__[\"extend\"])({}, this.options.http, options),\n              type = options && options.response,\n              response = await fetch(url, opt);\n\n        return !response.ok\n          ? Object(vega_util__WEBPACK_IMPORTED_MODULE_0__[\"error\"])(response.status + '' + response.statusText)\n          : Object(vega_util__WEBPACK_IMPORTED_MODULE_0__[\"isFunction\"])(response[type]) ? response[type]()\n          : response.text();\n      }\n    : httpReject;\n}\n\n/**\n * Default http request handler that simply rejects.\n */\nasync function httpReject() {\n  Object(vega_util__WEBPACK_IMPORTED_MODULE_0__[\"error\"])('No HTTP fetch method available.');\n}\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,[encoded data, 10368 characters]\n//# sourceURL=webpack-internal:///./node_modules/vega-regression/node_modules/vega-loader/src/loader.js\n");

/***/ }),

/***/ "./node_modules/vega-regression/node_modules/vega-loader/src/read.js":
/*!***************************************************************************!*\
  !*** ./node_modules/vega-regression/node_modules/vega-loader/src/read.js ***!
  \***************************************************************************/
/*! exports provided: default */
/***/ (function(module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _type__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./type */ \"./node_modules/vega-regression/node_modules/vega-loader/src/type.js\");\n/* harmony import */ var _formats_index__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./formats/index */ \"./node_modules/vega-regression/node_modules/vega-loader/src/formats/index.js\");\n/* harmony import */ var vega_format__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! vega-format */ \"./node_modules/vega-format/build/vega-format.module.js\");\n/* harmony import */ var vega_util__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! vega-util */ \"./node_modules/vega-regression/node_modules/vega-util/build/vega-util.module.js\");\n\n\n\n\n\n/* harmony default export */ __webpack_exports__[\"default\"] = (function(data, schema, timeParser, utcParser) {\n  schema = schema || {};\n\n  const reader = Object(_formats_index__WEBPACK_IMPORTED_MODULE_1__[\"formats\"])(schema.type || 'json');\n  if (!reader) Object(vega_util__WEBPACK_IMPORTED_MODULE_3__[\"error\"])('Unknown data format type: ' + schema.type);\n\n  data = reader(data, schema);\n  if (schema.parse) parse(data, schema.parse, timeParser, utcParser);\n\n  if (Object(vega_util__WEBPACK_IMPORTED_MODULE_3__[\"hasOwnProperty\"])(data, 'columns')) delete data.columns;\n  return data;\n});\n\nfunction parse(data, types, timeParser, utcParser) {\n  if (!data.length) return; // early exit for empty data\n\n  const locale = Object(vega_format__WEBPACK_IMPORTED_MODULE_2__[\"timeFormatDefaultLocale\"])();\n  timeParser = timeParser || locale.timeParse;\n  utcParser = utcParser || locale.utcParse;\n\n  let fields = data.columns || Object.keys(data[0]),\n      datum, field, i, j, n, m;\n\n  if (types === 'auto') types = Object(_type__WEBPACK_IMPORTED_MODULE_0__[\"inferTypes\"])(data, fields);\n\n  fields = Object.keys(types);\n  const parsers = fields.map(field => {\n    const type = types[field];\n    let parts, pattern;\n\n    if (type && (type.startsWith('date:') || type.startsWith('utc:'))) {\n      parts = type.split(/:(.+)?/, 2);  // split on first :\n      pattern = parts[1];\n\n      if ((pattern[0] === '\\'' && pattern[pattern.length-1] === '\\'') ||\n          (pattern[0] === '\"'  && pattern[pattern.length-1] === '\"')) {\n        pattern = pattern.slice(1, -1);\n      }\n\n      const parse = parts[0] === 'utc' ? utcParser : timeParser;\n      return parse(pattern);\n    }\n\n    if (!_type__WEBPACK_IMPORTED_MODULE_0__[\"typeParsers\"][type]) {\n      throw Error('Illegal format pattern: ' + field + ':' + type);\n    }\n\n    return _type__WEBPACK_IMPORTED_MODULE_0__[\"typeParsers\"][type];\n  });\n\n  for (i=0, n=data.length, m=fields.length; i<n; ++i) {\n    datum = data[i];\n    for (j=0; j<m; ++j) {\n      field = fields[j];\n      datum[field] = parsers[j](datum[field]);\n    }\n  }\n}\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvdmVnYS1yZWdyZXNzaW9uL25vZGVfbW9kdWxlcy92ZWdhLWxvYWRlci9zcmMvcmVhZC5qcy5qcyIsInNvdXJjZXMiOlsid2VicGFjazovLy8uL25vZGVfbW9kdWxlcy92ZWdhLXJlZ3Jlc3Npb24vbm9kZV9tb2R1bGVzL3ZlZ2EtbG9hZGVyL3NyYy9yZWFkLmpzPzA0M2EiXSwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtpbmZlclR5cGVzLCB0eXBlUGFyc2Vyc30gZnJvbSAnLi90eXBlJztcbmltcG9ydCB7Zm9ybWF0c30gZnJvbSAnLi9mb3JtYXRzL2luZGV4JztcbmltcG9ydCB7dGltZUZvcm1hdERlZmF1bHRMb2NhbGV9IGZyb20gJ3ZlZ2EtZm9ybWF0JztcbmltcG9ydCB7ZXJyb3IsIGhhc093blByb3BlcnR5fSBmcm9tICd2ZWdhLXV0aWwnO1xuXG5leHBvcnQgZGVmYXVsdCBmdW5jdGlvbihkYXRhLCBzY2hlbWEsIHRpbWVQYXJzZXIsIHV0Y1BhcnNlcikge1xuICBzY2hlbWEgPSBzY2hlbWEgfHwge307XG5cbiAgY29uc3QgcmVhZGVyID0gZm9ybWF0cyhzY2hlbWEudHlwZSB8fCAnanNvbicpO1xuICBpZiAoIXJlYWRlcikgZXJyb3IoJ1Vua25vd24gZGF0YSBmb3JtYXQgdHlwZTogJyArIHNjaGVtYS50eXBlKTtcblxuICBkYXRhID0gcmVhZGVyKGRhdGEsIHNjaGVtYSk7XG4gIGlmIChzY2hlbWEucGFyc2UpIHBhcnNlKGRhdGEsIHNjaGVtYS5wYXJzZSwgdGltZVBhcnNlciwgdXRjUGFyc2VyKTtcblxuICBpZiAoaGFzT3duUHJvcGVydHkoZGF0YSwgJ2NvbHVtbnMnKSkgZGVsZXRlIGRhdGEuY29sdW1ucztcbiAgcmV0dXJuIGRhdGE7XG59XG5cbmZ1bmN0aW9uIHBhcnNlKGRhdGEsIHR5cGVzLCB0aW1lUGFyc2VyLCB1dGNQYXJzZXIpIHtcbiAgaWYgKCFkYXRhLmxlbmd0aCkgcmV0dXJuOyAvLyBlYXJseSBleGl0IGZvciBlbXB0eSBkYXRhXG5cbiAgY29uc3QgbG9jYWxlID0gdGltZUZvcm1hdERlZmF1bHRMb2NhbGUoKTtcbiAgdGltZVBhcnNlciA9IHRpbWVQYXJzZXIgfHwgbG9jYWxlLnRpbWVQYXJzZTtcbiAgdXRjUGFyc2VyID0gdXRjUGFyc2VyIHx8IGxvY2FsZS51dGNQYXJzZTtcblxuICBsZXQgZmllbGRzID0gZGF0YS5jb2x1bW5zIHx8IE9iamVjdC5rZXlzKGRhdGFbMF0pLFxuICAgICAgZGF0dW0sIGZpZWxkLCBpLCBqLCBuLCBtO1xuXG4gIGlmICh0eXBlcyA9PT0gJ2F1dG8nKSB0eXBlcyA9IGluZmVyVHlwZXMoZGF0YSwgZmllbGRzKTtcblxuICBmaWVsZHMgPSBPYmplY3Qua2V5cyh0eXBlcyk7XG4gIGNvbnN0IHBhcnNlcnMgPSBmaWVsZHMubWFwKGZpZWxkID0+IHtcbiAgICBjb25zdCB0eXBlID0gdHlwZXNbZmllbGRdO1xuICAgIGxldCBwYXJ0cywgcGF0dGVybjtcblxuICAgIGlmICh0eXBlICYmICh0eXBlLnN0YXJ0c1dpdGgoJ2RhdGU6JykgfHwgdHlwZS5zdGFydHNXaXRoKCd1dGM6JykpKSB7XG4gICAgICBwYXJ0cyA9IHR5cGUuc3BsaXQoLzooLispPy8sIDIpOyAgLy8gc3BsaXQgb24gZmlyc3QgOlxuICAgICAgcGF0dGVybiA9IHBhcnRzWzFdO1xuXG4gICAgICBpZiAoKHBhdHRlcm5bMF0gPT09ICdcXCcnICYmIHBhdHRlcm5bcGF0dGVybi5sZW5ndGgtMV0gPT09ICdcXCcnKSB8fFxuICAgICAgICAgIChwYXR0ZXJuWzBdID09PSAnXCInICAmJiBwYXR0ZXJuW3BhdHRlcm4ubGVuZ3RoLTFdID09PSAnXCInKSkge1xuICAgICAgICBwYXR0ZXJuID0gcGF0dGVybi5zbGljZSgxLCAtMSk7XG4gICAgICB9XG5cbiAgICAgIGNvbnN0IHBhcnNlID0gcGFydHNbMF0gPT09ICd1dGMnID8gdXRjUGFyc2VyIDogdGltZVBhcnNlcjtcbiAgICAgIHJldHVybiBwYXJzZShwYXR0ZXJuKTtcbiAgICB9XG5cbiAgICBpZiAoIXR5cGVQYXJzZXJzW3R5cGVdKSB7XG4gICAgICB0aHJvdyBFcnJvcignSWxsZWdhbCBmb3JtYXQgcGF0dGVybjogJyArIGZpZWxkICsgJzonICsgdHlwZSk7XG4gICAgfVxuXG4gICAgcmV0dXJuIHR5cGVQYXJzZXJzW3R5cGVdO1xuICB9KTtcblxuICBmb3IgKGk9MCwgbj1kYXRhLmxlbmd0aCwgbT1maWVsZHMubGVuZ3RoOyBpPG47ICsraSkge1xuICAgIGRhdHVtID0gZGF0YVtpXTtcbiAgICBmb3IgKGo9MDsgajxtOyArK2opIHtcbiAgICAgIGZpZWxkID0gZmllbGRzW2pdO1xuICAgICAgZGF0dW1bZmllbGRdID0gcGFyc2Vyc1tqXShkYXR1bVtmaWVsZF0pO1xuICAgIH1cbiAgfVxufVxuIl0sIm1hcHBpbmdzIjoiQUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOyIsInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///./node_modules/vega-regression/node_modules/vega-loader/src/read.js\n");

/***/ }),

/***/ "./node_modules/vega-regression/node_modules/vega-loader/src/type.js":
/*!***************************************************************************!*\
  !*** ./node_modules/vega-regression/node_modules/vega-loader/src/type.js ***!
  \***************************************************************************/
/*! exports provided: typeParsers, inferType, inferTypes */
/***/ (function(module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"typeParsers\", function() { return typeParsers; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"inferType\", function() { return inferType; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"inferTypes\", function() { return inferTypes; });\n/* harmony import */ var vega_util__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! vega-util */ \"./node_modules/vega-regression/node_modules/vega-util/build/vega-util.module.js\");\n\n\nconst isValid = _ => _ != null && _ === _;\n\nconst isBoolean = _ => _ === 'true'\n  || _ === 'false'\n  || _ === true\n  || _ === false;\n\nconst isDate = _ => !Number.isNaN(Date.parse(_));\n\nconst isNumber = _ => !Number.isNaN(+_) && !(_ instanceof Date);\n\nconst isInteger = _ => isNumber(_) && Number.isInteger(+_);\n\nconst typeParsers = {\n  boolean: vega_util__WEBPACK_IMPORTED_MODULE_0__[\"toBoolean\"],\n  integer: vega_util__WEBPACK_IMPORTED_MODULE_0__[\"toNumber\"],\n  number:  vega_util__WEBPACK_IMPORTED_MODULE_0__[\"toNumber\"],\n  date:    vega_util__WEBPACK_IMPORTED_MODULE_0__[\"toDate\"],\n  string:  vega_util__WEBPACK_IMPORTED_MODULE_0__[\"toString\"],\n  unknown: vega_util__WEBPACK_IMPORTED_MODULE_0__[\"identity\"]\n};\n\nconst typeTests = [\n  isBoolean,\n  isInteger,\n  isNumber,\n  isDate\n];\n\nconst typeList = [\n  'boolean',\n  'integer',\n  'number',\n  'date'\n];\n\nfunction inferType(values, field) {\n  if (!values || !values.length) return 'unknown';\n\n  const n = values.length,\n        m = typeTests.length,\n        a = typeTests.map((_, i) => i + 1);\n\n  for (let i = 0, t = 0, j, value; i < n; ++i) {\n    value = field ? values[i][field] : values[i];\n    for (j = 0; j < m; ++j) {\n      if (a[j] && isValid(value) && !typeTests[j](value)) {\n        a[j] = 0;\n        ++t;\n        if (t === typeTests.length) return 'string';\n      }\n    }\n  }\n\n  return typeList[\n    a.reduce((u, v) => u === 0 ? v : u, 0) - 1\n  ];\n}\n\nfunction inferTypes(data, fields) {\n  return fields.reduce((types, field) => {\n    types[field] = inferType(data, field);\n    return types;\n  }, {});\n}\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvdmVnYS1yZWdyZXNzaW9uL25vZGVfbW9kdWxlcy92ZWdhLWxvYWRlci9zcmMvdHlwZS5qcy5qcyIsInNvdXJjZXMiOlsid2VicGFjazovLy8uL25vZGVfbW9kdWxlcy92ZWdhLXJlZ3Jlc3Npb24vbm9kZV9tb2R1bGVzL3ZlZ2EtbG9hZGVyL3NyYy90eXBlLmpzPzBhNmUiXSwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtpZGVudGl0eSwgdG9Cb29sZWFuLCB0b0RhdGUsIHRvTnVtYmVyLCB0b1N0cmluZ30gZnJvbSAndmVnYS11dGlsJztcblxuY29uc3QgaXNWYWxpZCA9IF8gPT4gXyAhPSBudWxsICYmIF8gPT09IF87XG5cbmNvbnN0IGlzQm9vbGVhbiA9IF8gPT4gXyA9PT0gJ3RydWUnXG4gIHx8IF8gPT09ICdmYWxzZSdcbiAgfHwgXyA9PT0gdHJ1ZVxuICB8fCBfID09PSBmYWxzZTtcblxuY29uc3QgaXNEYXRlID0gXyA9PiAhTnVtYmVyLmlzTmFOKERhdGUucGFyc2UoXykpO1xuXG5jb25zdCBpc051bWJlciA9IF8gPT4gIU51bWJlci5pc05hTigrXykgJiYgIShfIGluc3RhbmNlb2YgRGF0ZSk7XG5cbmNvbnN0IGlzSW50ZWdlciA9IF8gPT4gaXNOdW1iZXIoXykgJiYgTnVtYmVyLmlzSW50ZWdlcigrXyk7XG5cbmV4cG9ydCBjb25zdCB0eXBlUGFyc2VycyA9IHtcbiAgYm9vbGVhbjogdG9Cb29sZWFuLFxuICBpbnRlZ2VyOiB0b051bWJlcixcbiAgbnVtYmVyOiAgdG9OdW1iZXIsXG4gIGRhdGU6ICAgIHRvRGF0ZSxcbiAgc3RyaW5nOiAgdG9TdHJpbmcsXG4gIHVua25vd246IGlkZW50aXR5XG59O1xuXG5jb25zdCB0eXBlVGVzdHMgPSBbXG4gIGlzQm9vbGVhbixcbiAgaXNJbnRlZ2VyLFxuICBpc051bWJlcixcbiAgaXNEYXRlXG5dO1xuXG5jb25zdCB0eXBlTGlzdCA9IFtcbiAgJ2Jvb2xlYW4nLFxuICAnaW50ZWdlcicsXG4gICdudW1iZXInLFxuICAnZGF0ZSdcbl07XG5cbmV4cG9ydCBmdW5jdGlvbiBpbmZlclR5cGUodmFsdWVzLCBmaWVsZCkge1xuICBpZiAoIXZhbHVlcyB8fCAhdmFsdWVzLmxlbmd0aCkgcmV0dXJuICd1bmtub3duJztcblxuICBjb25zdCBuID0gdmFsdWVzLmxlbmd0aCxcbiAgICAgICAgbSA9IHR5cGVUZXN0cy5sZW5ndGgsXG4gICAgICAgIGEgPSB0eXBlVGVzdHMubWFwKChfLCBpKSA9PiBpICsgMSk7XG5cbiAgZm9yIChsZXQgaSA9IDAsIHQgPSAwLCBqLCB2YWx1ZTsgaSA8IG47ICsraSkge1xuICAgIHZhbHVlID0gZmllbGQgPyB2YWx1ZXNbaV1bZmllbGRdIDogdmFsdWVzW2ldO1xuICAgIGZvciAoaiA9IDA7IGogPCBtOyArK2opIHtcbiAgICAgIGlmIChhW2pdICYmIGlzVmFsaWQodmFsdWUpICYmICF0eXBlVGVzdHNbal0odmFsdWUpKSB7XG4gICAgICAgIGFbal0gPSAwO1xuICAgICAgICArK3Q7XG4gICAgICAgIGlmICh0ID09PSB0eXBlVGVzdHMubGVuZ3RoKSByZXR1cm4gJ3N0cmluZyc7XG4gICAgICB9XG4gICAgfVxuICB9XG5cbiAgcmV0dXJuIHR5cGVMaXN0W1xuICAgIGEucmVkdWNlKCh1LCB2KSA9PiB1ID09PSAwID8gdiA6IHUsIDApIC0gMVxuICBdO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gaW5mZXJUeXBlcyhkYXRhLCBmaWVsZHMpIHtcbiAgcmV0dXJuIGZpZWxkcy5yZWR1Y2UoKHR5cGVzLCBmaWVsZCkgPT4ge1xuICAgIHR5cGVzW2ZpZWxkXSA9IGluZmVyVHlwZShkYXRhLCBmaWVsZCk7XG4gICAgcmV0dXJuIHR5cGVzO1xuICB9LCB7fSk7XG59XG4iXSwibWFwcGluZ3MiOiJBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTsiLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///./node_modules/vega-regression/node_modules/vega-loader/src/type.js\n");

/***/ }),

/***/ "./node_modules/vega-regression/node_modules/vega-util/build/vega-util.module.js":
/*!***************************************************************************************!*\
  !*** ./node_modules/vega-regression/node_modules/vega-util/build/vega-util.module.js ***!
  \***************************************************************************************/
/*! exports provided: Debug, Error, Info, None, Warn, accessor, accessorFields, accessorName, array, ascending, clampRange, compare, constant, debounce, error, extend, extent, extentIndex, falsy, fastmap, field, flush, hasOwnProperty, id, identity, inherits, inrange, isArray, isBoolean, isDate, isFunction, isIterable, isNumber, isObject, isRegExp, isString, key, lerp, logger, lruCache, merge, mergeConfig, one, pad, panLinear, panLog, panPow, panSymlog, peek, quarter, repeat, span, splitAccessPath, stringValue, toBoolean, toDate, toNumber, toSet, toString, truncate, truthy, utcquarter, visitArray, writeConfig, zero, zoomLinear, zoomLog, zoomPow, zoomSymlog */
/***/ (function(module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"Debug\", function() { return Debug; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"Error\", function() { return Error$1; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"Info\", function() { return Info; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"None\", function() { return None; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"Warn\", function() { return Warn; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"accessor\", function() { return accessor; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"accessorFields\", function() { return accessorFields; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"accessorName\", function() { return accessorName; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"array\", function() { return array; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"ascending\", function() { return ascending; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"clampRange\", function() { return clampRange; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"compare\", function() { return compare; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"constant\", function() { return constant; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"debounce\", function() { return debounce; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"error\", function() { return error; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"extend\", function() { return extend; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"extent\", function() { return extent; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"extentIndex\", function() { return extentIndex; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"falsy\", function() { return falsy; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"fastmap\", function() { return fastmap; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"field\", function() { return field; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"flush\", function() { return flush; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"hasOwnProperty\", function() { return has; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"id\", function() { return id; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"identity\", function() { return identity; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"inherits\", function() { return inherits; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"inrange\", function() { return inrange; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"isArray\", function() { return isArray; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"isBoolean\", function() { return isBoolean; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"isDate\", function() { return isDate; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"isFunction\", function() { return isFunction; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"isIterable\", function() { return isIterable; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"isNumber\", function() { return isNumber; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"isObject\", function() { return isObject; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"isRegExp\", function() { return isRegExp; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"isString\", function() { return isString; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"key\", function() { return key; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"lerp\", function() { return lerp; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"logger\", function() { return logger; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"lruCache\", function() { return lruCache; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"merge\", function() { return merge; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"mergeConfig\", function() { return mergeConfig; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"one\", function() { return one; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"pad\", function() { return pad; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"panLinear\", function() { return panLinear; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"panLog\", function() { return panLog; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"panPow\", function() { return panPow; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"panSymlog\", function() { return panSymlog; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"peek\", function() { return peek; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"quarter\", function() { return quarter; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"repeat\", function() { return repeat; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"span\", function() { return span; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"splitAccessPath\", function() { return splitAccessPath; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"stringValue\", function() { return $; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"toBoolean\", function() { return toBoolean; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"toDate\", function() { return toDate; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"toNumber\", function() { return toNumber; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"toSet\", function() { return toSet; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"toString\", function() { return toString; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"truncate\", function() { return truncate; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"truthy\", function() { return truthy; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"utcquarter\", function() { return utcquarter; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"visitArray\", function() { return visitArray; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"writeConfig\", function() { return writeConfig; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"zero\", function() { return zero; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"zoomLinear\", function() { return zoomLinear; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"zoomLog\", function() { return zoomLog; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"zoomPow\", function() { return zoomPow; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"zoomSymlog\", function() { return zoomSymlog; });\nfunction accessor (fn, fields, name) {\n  fn.fields = fields || [];\n  fn.fname = name;\n  return fn;\n}\nfunction accessorName(fn) {\n  return fn == null ? null : fn.fname;\n}\nfunction accessorFields(fn) {\n  return fn == null ? null : fn.fields;\n}\n\nfunction getter (path) {\n  return path.length === 1 ? get1(path[0]) : getN(path);\n}\n\nconst get1 = field => function (obj) {\n  return obj[field];\n};\n\nconst getN = path => {\n  const len = path.length;\n  return function (obj) {\n    for (let i = 0; i < len; ++i) {\n      obj = obj[path[i]];\n    }\n\n    return obj;\n  };\n};\n\nfunction error (message) {\n  throw Error(message);\n}\n\nfunction splitAccessPath (p) {\n  const path = [],\n        n = p.length;\n  let q = null,\n      b = 0,\n      s = '',\n      i,\n      j,\n      c;\n  p = p + '';\n\n  function push() {\n    path.push(s + p.substring(i, j));\n    s = '';\n    i = j + 1;\n  }\n\n  for (i = j = 0; j < n; ++j) {\n    c = p[j];\n\n    if (c === '\\\\') {\n      s += p.substring(i, j);\n      s += p.substring(++j, ++j);\n      i = j;\n    } else if (c === q) {\n      push();\n      q = null;\n      b = -1;\n    } else if (q) {\n      continue;\n    } else if (i === b && c === '\"') {\n      i = j + 1;\n      q = c;\n    } else if (i === b && c === \"'\") {\n      i = j + 1;\n      q = c;\n    } else if (c === '.' && !b) {\n      if (j > i) {\n        push();\n      } else {\n        i = j + 1;\n      }\n    } else if (c === '[') {\n      if (j > i) push();\n      b = i = j + 1;\n    } else if (c === ']') {\n      if (!b) error('Access path missing open bracket: ' + p);\n      if (b > 0) push();\n      b = 0;\n      i = j + 1;\n    }\n  }\n\n  if (b) error('Access path missing closing bracket: ' + p);\n  if (q) error('Access path missing closing quote: ' + p);\n\n  if (j > i) {\n    j++;\n    push();\n  }\n\n  return path;\n}\n\nfunction field (field, name, opt) {\n  const path = splitAccessPath(field);\n  field = path.length === 1 ? path[0] : field;\n  return accessor((opt && opt.get || getter)(path), [field], name || field);\n}\n\nconst id = field('id');\nconst identity = accessor(_ => _, [], 'identity');\nconst zero = accessor(() => 0, [], 'zero');\nconst one = accessor(() => 1, [], 'one');\nconst truthy = accessor(() => true, [], 'true');\nconst falsy = accessor(() => false, [], 'false');\n\nfunction log$1(method, level, input) {\n  const args = [level].concat([].slice.call(input));\n  console[method].apply(console, args); // eslint-disable-line no-console\n}\n\nconst None = 0;\nconst Error$1 = 1;\nconst Warn = 2;\nconst Info = 3;\nconst Debug = 4;\nfunction logger (_, method) {\n  let level = _ || None;\n  return {\n    level(_) {\n      if (arguments.length) {\n        level = +_;\n        return this;\n      } else {\n        return level;\n      }\n    },\n\n    error() {\n      if (level >= Error$1) log$1(method || 'error', 'ERROR', arguments);\n      return this;\n    },\n\n    warn() {\n      if (level >= Warn) log$1(method || 'warn', 'WARN', arguments);\n      return this;\n    },\n\n    info() {\n      if (level >= Info) log$1(method || 'log', 'INFO', arguments);\n      return this;\n    },\n\n    debug() {\n      if (level >= Debug) log$1(method || 'log', 'DEBUG', arguments);\n      return this;\n    }\n\n  };\n}\n\nvar isArray = Array.isArray;\n\nfunction isObject (_) {\n  return _ === Object(_);\n}\n\nconst isLegalKey = key => key !== '__proto__';\n\nfunction mergeConfig(...configs) {\n  return configs.reduce((out, source) => {\n    for (const key in source) {\n      if (key === 'signals') {\n        // for signals, we merge the signals arrays\n        // source signals take precedence over\n        // existing signals with the same name\n        out.signals = mergeNamed(out.signals, source.signals);\n      } else {\n        // otherwise, merge objects subject to recursion constraints\n        // for legend block, recurse for the layout entry only\n        // for style block, recurse for all properties\n        // otherwise, no recursion: objects overwrite, no merging\n        const r = key === 'legend' ? {\n          layout: 1\n        } : key === 'style' ? true : null;\n        writeConfig(out, key, source[key], r);\n      }\n    }\n\n    return out;\n  }, {});\n}\nfunction writeConfig(output, key, value, recurse) {\n  if (!isLegalKey(key)) return;\n  let k, o;\n\n  if (isObject(value) && !isArray(value)) {\n    o = isObject(output[key]) ? output[key] : output[key] = {};\n\n    for (k in value) {\n      if (recurse && (recurse === true || recurse[k])) {\n        writeConfig(o, k, value[k]);\n      } else if (isLegalKey(k)) {\n        o[k] = value[k];\n      }\n    }\n  } else {\n    output[key] = value;\n  }\n}\n\nfunction mergeNamed(a, b) {\n  if (a == null) return b;\n  const map = {},\n        out = [];\n\n  function add(_) {\n    if (!map[_.name]) {\n      map[_.name] = 1;\n      out.push(_);\n    }\n  }\n\n  b.forEach(add);\n  a.forEach(add);\n  return out;\n}\n\nfunction peek (array) {\n  return array[array.length - 1];\n}\n\nfunction toNumber (_) {\n  return _ == null || _ === '' ? null : +_;\n}\n\nconst exp = sign => x => sign * Math.exp(x);\n\nconst log = sign => x => Math.log(sign * x);\n\nconst symlog = c => x => Math.sign(x) * Math.log1p(Math.abs(x / c));\n\nconst symexp = c => x => Math.sign(x) * Math.expm1(Math.abs(x)) * c;\n\nconst pow = exponent => x => x < 0 ? -Math.pow(-x, exponent) : Math.pow(x, exponent);\n\nfunction pan(domain, delta, lift, ground) {\n  const d0 = lift(domain[0]),\n        d1 = lift(peek(domain)),\n        dd = (d1 - d0) * delta;\n  return [ground(d0 - dd), ground(d1 - dd)];\n}\n\nfunction panLinear(domain, delta) {\n  return pan(domain, delta, toNumber, identity);\n}\nfunction panLog(domain, delta) {\n  var sign = Math.sign(domain[0]);\n  return pan(domain, delta, log(sign), exp(sign));\n}\nfunction panPow(domain, delta, exponent) {\n  return pan(domain, delta, pow(exponent), pow(1 / exponent));\n}\nfunction panSymlog(domain, delta, constant) {\n  return pan(domain, delta, symlog(constant), symexp(constant));\n}\n\nfunction zoom(domain, anchor, scale, lift, ground) {\n  const d0 = lift(domain[0]),\n        d1 = lift(peek(domain)),\n        da = anchor != null ? lift(anchor) : (d0 + d1) / 2;\n  return [ground(da + (d0 - da) * scale), ground(da + (d1 - da) * scale)];\n}\n\nfunction zoomLinear(domain, anchor, scale) {\n  return zoom(domain, anchor, scale, toNumber, identity);\n}\nfunction zoomLog(domain, anchor, scale) {\n  const sign = Math.sign(domain[0]);\n  return zoom(domain, anchor, scale, log(sign), exp(sign));\n}\nfunction zoomPow(domain, anchor, scale, exponent) {\n  return zoom(domain, anchor, scale, pow(exponent), pow(1 / exponent));\n}\nfunction zoomSymlog(domain, anchor, scale, constant) {\n  return zoom(domain, anchor, scale, symlog(constant), symexp(constant));\n}\n\nfunction quarter(date) {\n  return 1 + ~~(new Date(date).getMonth() / 3);\n}\nfunction utcquarter(date) {\n  return 1 + ~~(new Date(date).getUTCMonth() / 3);\n}\n\nfunction array (_) {\n  return _ != null ? isArray(_) ? _ : [_] : [];\n}\n\n/**\n * Span-preserving range clamp. If the span of the input range is less\n * than (max - min) and an endpoint exceeds either the min or max value,\n * the range is translated such that the span is preserved and one\n * endpoint touches the boundary of the min/max range.\n * If the span exceeds (max - min), the range [min, max] is returned.\n */\nfunction clampRange (range, min, max) {\n  let lo = range[0],\n      hi = range[1],\n      span;\n\n  if (hi < lo) {\n    span = hi;\n    hi = lo;\n    lo = span;\n  }\n\n  span = hi - lo;\n  return span >= max - min ? [min, max] : [lo = Math.min(Math.max(lo, min), max - span), lo + span];\n}\n\nfunction isFunction (_) {\n  return typeof _ === 'function';\n}\n\nconst DESCENDING = 'descending';\nfunction compare (fields, orders, opt) {\n  opt = opt || {};\n  orders = array(orders) || [];\n  const ord = [],\n        get = [],\n        fmap = {},\n        gen = opt.comparator || comparator;\n  array(fields).forEach((f, i) => {\n    if (f == null) return;\n    ord.push(orders[i] === DESCENDING ? -1 : 1);\n    get.push(f = isFunction(f) ? f : field(f, null, opt));\n    (accessorFields(f) || []).forEach(_ => fmap[_] = 1);\n  });\n  return get.length === 0 ? null : accessor(gen(get, ord), Object.keys(fmap));\n}\nconst ascending = (u, v) => (u < v || u == null) && v != null ? -1 : (u > v || v == null) && u != null ? 1 : (v = v instanceof Date ? +v : v, u = u instanceof Date ? +u : u) !== u && v === v ? -1 : v !== v && u === u ? 1 : 0;\n\nconst comparator = (fields, orders) => fields.length === 1 ? compare1(fields[0], orders[0]) : compareN(fields, orders, fields.length);\n\nconst compare1 = (field, order) => function (a, b) {\n  return ascending(field(a), field(b)) * order;\n};\n\nconst compareN = (fields, orders, n) => {\n  orders.push(0); // pad zero for convenient lookup\n\n  return function (a, b) {\n    let f,\n        c = 0,\n        i = -1;\n\n    while (c === 0 && ++i < n) {\n      f = fields[i];\n      c = ascending(f(a), f(b));\n    }\n\n    return c * orders[i];\n  };\n};\n\nfunction constant (_) {\n  return isFunction(_) ? _ : () => _;\n}\n\nfunction debounce (delay, handler) {\n  let tid;\n  return e => {\n    if (tid) clearTimeout(tid);\n    tid = setTimeout(() => (handler(e), tid = null), delay);\n  };\n}\n\nfunction extend (_) {\n  for (let x, k, i = 1, len = arguments.length; i < len; ++i) {\n    x = arguments[i];\n\n    for (k in x) {\n      _[k] = x[k];\n    }\n  }\n\n  return _;\n}\n\n/**\n * Return an array with minimum and maximum values, in the\n * form [min, max]. Ignores null, undefined, and NaN values.\n */\nfunction extent (array, f) {\n  let i = 0,\n      n,\n      v,\n      min,\n      max;\n\n  if (array && (n = array.length)) {\n    if (f == null) {\n      // find first valid value\n      for (v = array[i]; i < n && (v == null || v !== v); v = array[++i]);\n\n      min = max = v; // visit all other values\n\n      for (; i < n; ++i) {\n        v = array[i]; // skip null/undefined; NaN will fail all comparisons\n\n        if (v != null) {\n          if (v < min) min = v;\n          if (v > max) max = v;\n        }\n      }\n    } else {\n      // find first valid value\n      for (v = f(array[i]); i < n && (v == null || v !== v); v = f(array[++i]));\n\n      min = max = v; // visit all other values\n\n      for (; i < n; ++i) {\n        v = f(array[i]); // skip null/undefined; NaN will fail all comparisons\n\n        if (v != null) {\n          if (v < min) min = v;\n          if (v > max) max = v;\n        }\n      }\n    }\n  }\n\n  return [min, max];\n}\n\nfunction extentIndex (array, f) {\n  const n = array.length;\n  let i = -1,\n      a,\n      b,\n      c,\n      u,\n      v;\n\n  if (f == null) {\n    while (++i < n) {\n      b = array[i];\n\n      if (b != null && b >= b) {\n        a = c = b;\n        break;\n      }\n    }\n\n    if (i === n) return [-1, -1];\n    u = v = i;\n\n    while (++i < n) {\n      b = array[i];\n\n      if (b != null) {\n        if (a > b) {\n          a = b;\n          u = i;\n        }\n\n        if (c < b) {\n          c = b;\n          v = i;\n        }\n      }\n    }\n  } else {\n    while (++i < n) {\n      b = f(array[i], i, array);\n\n      if (b != null && b >= b) {\n        a = c = b;\n        break;\n      }\n    }\n\n    if (i === n) return [-1, -1];\n    u = v = i;\n\n    while (++i < n) {\n      b = f(array[i], i, array);\n\n      if (b != null) {\n        if (a > b) {\n          a = b;\n          u = i;\n        }\n\n        if (c < b) {\n          c = b;\n          v = i;\n        }\n      }\n    }\n  }\n\n  return [u, v];\n}\n\nconst hop = Object.prototype.hasOwnProperty;\nfunction has (object, property) {\n  return hop.call(object, property);\n}\n\nconst NULL = {};\nfunction fastmap (input) {\n  let obj = {},\n      test;\n\n  function has$1(key) {\n    return has(obj, key) && obj[key] !== NULL;\n  }\n\n  const map = {\n    size: 0,\n    empty: 0,\n    object: obj,\n    has: has$1,\n\n    get(key) {\n      return has$1(key) ? obj[key] : undefined;\n    },\n\n    set(key, value) {\n      if (!has$1(key)) {\n        ++map.size;\n        if (obj[key] === NULL) --map.empty;\n      }\n\n      obj[key] = value;\n      return this;\n    },\n\n    delete(key) {\n      if (has$1(key)) {\n        --map.size;\n        ++map.empty;\n        obj[key] = NULL;\n      }\n\n      return this;\n    },\n\n    clear() {\n      map.size = map.empty = 0;\n      map.object = obj = {};\n    },\n\n    test(_) {\n      if (arguments.length) {\n        test = _;\n        return map;\n      } else {\n        return test;\n      }\n    },\n\n    clean() {\n      const next = {};\n      let size = 0;\n\n      for (const key in obj) {\n        const value = obj[key];\n\n        if (value !== NULL && (!test || !test(value))) {\n          next[key] = value;\n          ++size;\n        }\n      }\n\n      map.size = size;\n      map.empty = 0;\n      map.object = obj = next;\n    }\n\n  };\n  if (input) Object.keys(input).forEach(key => {\n    map.set(key, input[key]);\n  });\n  return map;\n}\n\nfunction flush (range, value, threshold, left, right, center) {\n  if (!threshold && threshold !== 0) return center;\n  const t = +threshold;\n  let a = range[0],\n      b = peek(range),\n      l; // swap endpoints if range is reversed\n\n  if (b < a) {\n    l = a;\n    a = b;\n    b = l;\n  } // compare value to endpoints\n\n\n  l = Math.abs(value - a);\n  const r = Math.abs(b - value); // adjust if value is within threshold distance of endpoint\n\n  return l < r && l <= t ? left : r <= t ? right : center;\n}\n\nfunction inherits (child, parent, members) {\n  const proto = child.prototype = Object.create(parent.prototype);\n  Object.defineProperty(proto, 'constructor', {\n    value: child,\n    writable: true,\n    enumerable: true,\n    configurable: true\n  });\n  return extend(proto, members);\n}\n\n/**\n * Predicate that returns true if the value lies within the span\n * of the given range. The left and right flags control the use\n * of inclusive (true) or exclusive (false) comparisons.\n */\nfunction inrange (value, range, left, right) {\n  let r0 = range[0],\n      r1 = range[range.length - 1],\n      t;\n\n  if (r0 > r1) {\n    t = r0;\n    r0 = r1;\n    r1 = t;\n  }\n\n  left = left === undefined || left;\n  right = right === undefined || right;\n  return (left ? r0 <= value : r0 < value) && (right ? value <= r1 : value < r1);\n}\n\nfunction isBoolean (_) {\n  return typeof _ === 'boolean';\n}\n\nfunction isDate (_) {\n  return Object.prototype.toString.call(_) === '[object Date]';\n}\n\nfunction isIterable (_) {\n  return _ && isFunction(_[Symbol.iterator]);\n}\n\nfunction isNumber (_) {\n  return typeof _ === 'number';\n}\n\nfunction isRegExp (_) {\n  return Object.prototype.toString.call(_) === '[object RegExp]';\n}\n\nfunction isString (_) {\n  return typeof _ === 'string';\n}\n\nfunction key (fields, flat, opt) {\n  if (fields) {\n    fields = flat ? array(fields).map(f => f.replace(/\\\\(.)/g, '$1')) : array(fields);\n  }\n\n  const len = fields && fields.length,\n        gen = opt && opt.get || getter,\n        map = f => gen(flat ? [f] : splitAccessPath(f));\n\n  let fn;\n\n  if (!len) {\n    fn = function () {\n      return '';\n    };\n  } else if (len === 1) {\n    const get = map(fields[0]);\n\n    fn = function (_) {\n      return '' + get(_);\n    };\n  } else {\n    const get = fields.map(map);\n\n    fn = function (_) {\n      let s = '' + get[0](_),\n          i = 0;\n\n      while (++i < len) s += '|' + get[i](_);\n\n      return s;\n    };\n  }\n\n  return accessor(fn, fields, 'key');\n}\n\nfunction lerp (array, frac) {\n  const lo = array[0],\n        hi = peek(array),\n        f = +frac;\n  return !f ? lo : f === 1 ? hi : lo + f * (hi - lo);\n}\n\nconst DEFAULT_MAX_SIZE = 10000; // adapted from https://github.com/dominictarr/hashlru/ (MIT License)\n\nfunction lruCache (maxsize) {\n  maxsize = +maxsize || DEFAULT_MAX_SIZE;\n  let curr, prev, size;\n\n  const clear = () => {\n    curr = {};\n    prev = {};\n    size = 0;\n  };\n\n  const update = (key, value) => {\n    if (++size > maxsize) {\n      prev = curr;\n      curr = {};\n      size = 1;\n    }\n\n    return curr[key] = value;\n  };\n\n  clear();\n  return {\n    clear,\n    has: key => has(curr, key) || has(prev, key),\n    get: key => has(curr, key) ? curr[key] : has(prev, key) ? update(key, prev[key]) : undefined,\n    set: (key, value) => has(curr, key) ? curr[key] = value : update(key, value)\n  };\n}\n\nfunction merge (compare, array0, array1, output) {\n  const n0 = array0.length,\n        n1 = array1.length;\n  if (!n1) return array0;\n  if (!n0) return array1;\n  const merged = output || new array0.constructor(n0 + n1);\n  let i0 = 0,\n      i1 = 0,\n      i = 0;\n\n  for (; i0 < n0 && i1 < n1; ++i) {\n    merged[i] = compare(array0[i0], array1[i1]) > 0 ? array1[i1++] : array0[i0++];\n  }\n\n  for (; i0 < n0; ++i0, ++i) {\n    merged[i] = array0[i0];\n  }\n\n  for (; i1 < n1; ++i1, ++i) {\n    merged[i] = array1[i1];\n  }\n\n  return merged;\n}\n\nfunction repeat (str, reps) {\n  let s = '';\n\n  while (--reps >= 0) s += str;\n\n  return s;\n}\n\nfunction pad (str, length, padchar, align) {\n  const c = padchar || ' ',\n        s = str + '',\n        n = length - s.length;\n  return n <= 0 ? s : align === 'left' ? repeat(c, n) + s : align === 'center' ? repeat(c, ~~(n / 2)) + s + repeat(c, Math.ceil(n / 2)) : s + repeat(c, n);\n}\n\n/**\n * Return the numerical span of an array: the difference between\n * the last and first values.\n */\n\nfunction span (array) {\n  return array && peek(array) - array[0] || 0;\n}\n\nfunction $(x) {\n  return isArray(x) ? '[' + x.map($) + ']' : isObject(x) || isString(x) ? // Output valid JSON and JS source strings.\n  // See http://timelessrepo.com/json-isnt-a-javascript-subset\n  JSON.stringify(x).replace('\\u2028', '\\\\u2028').replace('\\u2029', '\\\\u2029') : x;\n}\n\nfunction toBoolean (_) {\n  return _ == null || _ === '' ? null : !_ || _ === 'false' || _ === '0' ? false : !!_;\n}\n\nconst defaultParser = _ => isNumber(_) ? _ : isDate(_) ? _ : Date.parse(_);\n\nfunction toDate (_, parser) {\n  parser = parser || defaultParser;\n  return _ == null || _ === '' ? null : parser(_);\n}\n\nfunction toString (_) {\n  return _ == null || _ === '' ? null : _ + '';\n}\n\nfunction toSet (_) {\n  const s = {},\n        n = _.length;\n\n  for (let i = 0; i < n; ++i) s[_[i]] = true;\n\n  return s;\n}\n\nfunction truncate (str, length, align, ellipsis) {\n  const e = ellipsis != null ? ellipsis : '\\u2026',\n        s = str + '',\n        n = s.length,\n        l = Math.max(0, length - e.length);\n  return n <= length ? s : align === 'left' ? e + s.slice(n - l) : align === 'center' ? s.slice(0, Math.ceil(l / 2)) + e + s.slice(n - ~~(l / 2)) : s.slice(0, l) + e;\n}\n\nfunction visitArray (array, filter, visitor) {\n  if (array) {\n    if (filter) {\n      const n = array.length;\n\n      for (let i = 0; i < n; ++i) {\n        const t = filter(array[i]);\n        if (t) visitor(t, i, array);\n      }\n    } else {\n      array.forEach(visitor);\n    }\n  }\n}\n\n\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,[encoded data, 33076 characters]\n//# sourceURL=webpack-internal:///./node_modules/vega-regression/node_modules/vega-util/build/vega-util.module.js\n");

/***/ }),

/***/ "./node_modules/vega-schema-url-parser/dist/parser.module.js":
/*!*******************************************************************!*\
  !*** ./node_modules/vega-schema-url-parser/dist/parser.module.js ***!
  \*******************************************************************/
/*! exports provided: default */
/***/ (function(module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\nfunction e(e){const[n,r]=/schema\\/([\\w-]+)\\/([\\w\\.\\-]+)\\.json$/g.exec(e).slice(1,3);return{library:n,version:r}}/* harmony default export */ __webpack_exports__[\"default\"] = (e);\n//# sourceMappingURL=parser.module.js.map\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvdmVnYS1zY2hlbWEtdXJsLXBhcnNlci9kaXN0L3BhcnNlci5tb2R1bGUuanMuanMiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvdmVnYS1zY2hlbWEtdXJsLXBhcnNlci9kaXN0L3BhcnNlci5tb2R1bGUuanM/ODljNSJdLCJzb3VyY2VzQ29udGVudCI6WyJmdW5jdGlvbiBlKGUpe2NvbnN0W24scl09L3NjaGVtYVxcLyhbXFx3LV0rKVxcLyhbXFx3XFwuXFwtXSspXFwuanNvbiQvZy5leGVjKGUpLnNsaWNlKDEsMyk7cmV0dXJue2xpYnJhcnk6bix2ZXJzaW9uOnJ9fWV4cG9ydCBkZWZhdWx0IGU7XG4vLyMgc291cmNlTWFwcGluZ1VSTD1wYXJzZXIubW9kdWxlLmpzLm1hcFxuIl0sIm1hcHBpbmdzIjoiQUFBQTtBQUFBO0FBQ0E7Iiwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///./node_modules/vega-schema-url-parser/dist/parser.module.js\n");

/***/ }),

/***/ "./node_modules/vega-selections/build/vega-selection.module.js":
/*!*********************************************************************!*\
  !*** ./node_modules/vega-selections/build/vega-selection.module.js ***!
  \*********************************************************************/
/*! exports provided: selectionIdTest, selectionResolve, selectionTest, selectionTuples, selectionVisitor */
/***/ (function(module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"selectionIdTest\", function() { return selectionIdTest; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"selectionResolve\", function() { return selectionResolve; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"selectionTest\", function() { return selectionTest; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"selectionTuples\", function() { return selectionTuples; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"selectionVisitor\", function() { return selectionVisitor; });\n/* harmony import */ var vega_util__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! vega-util */ \"./node_modules/vega-selections/node_modules/vega-util/build/vega-util.module.js\");\n/* harmony import */ var vega_expression__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! vega-expression */ \"./node_modules/vega-selections/node_modules/vega-expression/build/vega-expression.module.js\");\n\n\n\nfunction ascending (a, b) {\n  return a < b ? -1 : a > b ? 1 : a >= b ? 0 : NaN;\n}\n\nfunction bisector (f) {\n  let delta = f;\n  let compare = f;\n\n  if (f.length === 1) {\n    delta = (d, x) => f(d) - x;\n\n    compare = ascendingComparator(f);\n  }\n\n  function left(a, x, lo, hi) {\n    if (lo == null) lo = 0;\n    if (hi == null) hi = a.length;\n\n    while (lo < hi) {\n      const mid = lo + hi >>> 1;\n      if (compare(a[mid], x) < 0) lo = mid + 1;else hi = mid;\n    }\n\n    return lo;\n  }\n\n  function right(a, x, lo, hi) {\n    if (lo == null) lo = 0;\n    if (hi == null) hi = a.length;\n\n    while (lo < hi) {\n      const mid = lo + hi >>> 1;\n      if (compare(a[mid], x) > 0) hi = mid;else lo = mid + 1;\n    }\n\n    return lo;\n  }\n\n  function center(a, x, lo, hi) {\n    if (lo == null) lo = 0;\n    if (hi == null) hi = a.length;\n    const i = left(a, x, lo, hi - 1);\n    return i > lo && delta(a[i - 1], x) > -delta(a[i], x) ? i - 1 : i;\n  }\n\n  return {\n    left,\n    center,\n    right\n  };\n}\n\nfunction ascendingComparator(f) {\n  return (d, x) => ascending(f(d), x);\n}\n\nconst Intersect = 'intersect';\nconst Union = 'union';\nconst VlMulti = 'vlMulti';\nconst VlPoint = 'vlPoint';\nconst Or = 'or';\nconst And = 'and';\n\nconst SELECTION_ID = '_vgsid_',\n      TYPE_ENUM = 'E',\n      TYPE_RANGE_INC = 'R',\n      TYPE_RANGE_EXC = 'R-E',\n      TYPE_RANGE_LE = 'R-LE',\n      TYPE_RANGE_RE = 'R-RE',\n      UNIT_INDEX = 'index:unit'; // TODO: revisit date coercion?\n\nfunction testPoint(datum, entry) {\n  var fields = entry.fields,\n      values = entry.values,\n      n = fields.length,\n      i = 0,\n      dval,\n      f;\n\n  for (; i < n; ++i) {\n    f = fields[i];\n    f.getter = vega_util__WEBPACK_IMPORTED_MODULE_0__[\"field\"].getter || Object(vega_util__WEBPACK_IMPORTED_MODULE_0__[\"field\"])(f.field);\n    dval = f.getter(datum);\n    if (Object(vega_util__WEBPACK_IMPORTED_MODULE_0__[\"isDate\"])(dval)) dval = Object(vega_util__WEBPACK_IMPORTED_MODULE_0__[\"toNumber\"])(dval);\n    if (Object(vega_util__WEBPACK_IMPORTED_MODULE_0__[\"isDate\"])(values[i])) values[i] = Object(vega_util__WEBPACK_IMPORTED_MODULE_0__[\"toNumber\"])(values[i]);\n    if (Object(vega_util__WEBPACK_IMPORTED_MODULE_0__[\"isDate\"])(values[i][0])) values[i] = values[i].map(vega_util__WEBPACK_IMPORTED_MODULE_0__[\"toNumber\"]);\n\n    if (f.type === TYPE_ENUM) {\n      // Enumerated fields can either specify individual values (single/multi selections)\n      // or an array of values (interval selections).\n      if (Object(vega_util__WEBPACK_IMPORTED_MODULE_0__[\"isArray\"])(values[i]) ? values[i].indexOf(dval) < 0 : dval !== values[i]) {\n        return false;\n      }\n    } else {\n      if (f.type === TYPE_RANGE_INC) {\n        if (!Object(vega_util__WEBPACK_IMPORTED_MODULE_0__[\"inrange\"])(dval, values[i])) return false;\n      } else if (f.type === TYPE_RANGE_RE) {\n        // Discrete selection of bins test within the range [bin_start, bin_end).\n        if (!Object(vega_util__WEBPACK_IMPORTED_MODULE_0__[\"inrange\"])(dval, values[i], true, false)) return false;\n      } else if (f.type === TYPE_RANGE_EXC) {\n        // 'R-E'/'R-LE' included for completeness.\n        if (!Object(vega_util__WEBPACK_IMPORTED_MODULE_0__[\"inrange\"])(dval, values[i], false, false)) return false;\n      } else if (f.type === TYPE_RANGE_LE) {\n        if (!Object(vega_util__WEBPACK_IMPORTED_MODULE_0__[\"inrange\"])(dval, values[i], false, true)) return false;\n      }\n    }\n  }\n\n  return true;\n}\n/**\n * Tests if a tuple is contained within an interactive selection.\n * @param {string} name - The name of the data set representing the selection.\n *  Tuples in the dataset are of the form\n *  {unit: string, fields: array<fielddef>, values: array<*>}.\n *  Fielddef is of the form\n *  {field: string, channel: string, type: 'E' | 'R'} where\n *  'type' identifies whether tuples in the dataset enumerate\n *  values for the field, or specify a continuous range.\n * @param {object} datum - The tuple to test for inclusion.\n * @param {string} op - The set operation for combining selections.\n *   One of 'intersect' or 'union' (default).\n * @return {boolean} - True if the datum is in the selection, false otherwise.\n */\n\n\nfunction selectionTest(name, datum, op) {\n  var data = this.context.data[name],\n      entries = data ? data.values.value : [],\n      unitIdx = data ? data[UNIT_INDEX] && data[UNIT_INDEX].value : undefined,\n      intersect = op === Intersect,\n      n = entries.length,\n      i = 0,\n      entry,\n      miss,\n      count,\n      unit,\n      b;\n\n  for (; i < n; ++i) {\n    entry = entries[i];\n\n    if (unitIdx && intersect) {\n      // multi selections union within the same unit and intersect across units.\n      miss = miss || {};\n      count = miss[unit = entry.unit] || 0; // if we've already matched this unit, skip.\n\n      if (count === -1) continue;\n      b = testPoint(datum, entry);\n      miss[unit] = b ? -1 : ++count; // if we match and there are no other units return true\n      // if we've missed against all tuples in this unit return false\n\n      if (b && unitIdx.size === 1) return true;\n      if (!b && count === unitIdx.get(unit).count) return false;\n    } else {\n      b = testPoint(datum, entry); // if we find a miss and we do require intersection return false\n      // if we find a match and we don't require intersection return true\n\n      if (intersect ^ b) return b;\n    }\n  } // if intersecting and we made it here, then we saw no misses\n  // if not intersecting, then we saw no matches\n  // if no active selections, return false\n\n\n  return n && intersect;\n}\nconst selectionId = Object(vega_util__WEBPACK_IMPORTED_MODULE_0__[\"field\"])(SELECTION_ID),\n      bisect = bisector(selectionId),\n      bisectLeft = bisect.left,\n      bisectRight = bisect.right;\nfunction selectionIdTest(name, datum, op) {\n  const data = this.context.data[name],\n        entries = data ? data.values.value : [],\n        unitIdx = data ? data[UNIT_INDEX] && data[UNIT_INDEX].value : undefined,\n        intersect = op === Intersect,\n        value = selectionId(datum),\n        index = bisectLeft(entries, value);\n  if (index === entries.length) return false;\n  if (selectionId(entries[index]) !== value) return false;\n\n  if (unitIdx && intersect) {\n    if (unitIdx.size === 1) return true;\n    if (bisectRight(entries, value) - index < unitIdx.size) return false;\n  }\n\n  return true;\n}\n\n/**\n * Maps an array of scene graph items to an array of selection tuples.\n * @param {string} name  - The name of the dataset representing the selection.\n * @param {string} unit  - The name of the unit view.\n *\n * @returns {array} An array of selection entries for the given unit.\n */\n\nfunction selectionTuples(array, base) {\n  return array.map(x => Object(vega_util__WEBPACK_IMPORTED_MODULE_0__[\"extend\"])({\n    values: base.fields.map(f => (f.getter || (f.getter = Object(vega_util__WEBPACK_IMPORTED_MODULE_0__[\"field\"])(f.field)))(x.datum))\n  }, base));\n}\n\n/**\n * Resolves selection for use as a scale domain or reads via the API.\n * @param {string} name - The name of the dataset representing the selection\n * @param {string} [op='union'] - The set operation for combining selections.\n *                 One of 'intersect' or 'union' (default).\n * @param {boolean} isMulti - Identifies a \"multi\" selection to perform more\n *                 expensive resolution computation.\n * @param {boolean} vl5 - With Vega-Lite v5, \"multi\" selections are now called \"point\"\n *                 selections, and thus the resolved tuple should reflect this name.\n *                 This parameter allows us to reflect this change without triggering\n *                 a major version bump for Vega.\n * @returns {object} An object of selected fields and values.\n */\n\nfunction selectionResolve(name, op, isMulti, vl5) {\n  var data = this.context.data[name],\n      entries = data ? data.values.value : [],\n      resolved = {},\n      multiRes = {},\n      types = {},\n      entry,\n      fields,\n      values,\n      unit,\n      field,\n      res,\n      resUnit,\n      type,\n      union,\n      n = entries.length,\n      i = 0,\n      j,\n      m; // First union all entries within the same unit.\n\n  for (; i < n; ++i) {\n    entry = entries[i];\n    unit = entry.unit;\n    fields = entry.fields;\n    values = entry.values;\n\n    for (j = 0, m = fields.length; j < m; ++j) {\n      field = fields[j];\n      res = resolved[field.field] || (resolved[field.field] = {});\n      resUnit = res[unit] || (res[unit] = []);\n      types[field.field] = type = field.type.charAt(0);\n      union = ops[type + '_union'];\n      res[unit] = union(resUnit, Object(vega_util__WEBPACK_IMPORTED_MODULE_0__[\"array\"])(values[j]));\n    } // If the same multi-selection is repeated over views and projected over\n    // an encoding, it may operate over different fields making it especially\n    // tricky to reliably resolve it. At best, we can de-dupe identical entries\n    // but doing so may be more computationally expensive than it is worth.\n    // Instead, for now, we simply transform our store representation into\n    // a more human-friendly one.\n\n\n    if (isMulti) {\n      resUnit = multiRes[unit] || (multiRes[unit] = []);\n      resUnit.push(Object(vega_util__WEBPACK_IMPORTED_MODULE_0__[\"array\"])(values).reduce((obj, curr, j) => (obj[fields[j].field] = curr, obj), {}));\n    }\n  } // Then resolve fields across units as per the op.\n\n\n  op = op || Union;\n  Object.keys(resolved).forEach(field => {\n    resolved[field] = Object.keys(resolved[field]).map(unit => resolved[field][unit]).reduce((acc, curr) => acc === undefined ? curr : ops[types[field] + '_' + op](acc, curr));\n  });\n  entries = Object.keys(multiRes);\n\n  if (isMulti && entries.length) {\n    const key = vl5 ? VlPoint : VlMulti;\n    resolved[key] = op === Union ? {\n      [Or]: entries.reduce((acc, k) => (acc.push(...multiRes[k]), acc), [])\n    } : {\n      [And]: entries.map(k => ({\n        [Or]: multiRes[k]\n      }))\n    };\n  }\n\n  return resolved;\n}\nvar ops = {\n  E_union: function (base, value) {\n    if (!base.length) return value;\n    var i = 0,\n        n = value.length;\n\n    for (; i < n; ++i) if (base.indexOf(value[i]) < 0) base.push(value[i]);\n\n    return base;\n  },\n  E_intersect: function (base, value) {\n    return !base.length ? value : base.filter(v => value.indexOf(v) >= 0);\n  },\n  R_union: function (base, value) {\n    var lo = Object(vega_util__WEBPACK_IMPORTED_MODULE_0__[\"toNumber\"])(value[0]),\n        hi = Object(vega_util__WEBPACK_IMPORTED_MODULE_0__[\"toNumber\"])(value[1]);\n\n    if (lo > hi) {\n      lo = value[1];\n      hi = value[0];\n    }\n\n    if (!base.length) return [lo, hi];\n    if (base[0] > lo) base[0] = lo;\n    if (base[1] < hi) base[1] = hi;\n    return base;\n  },\n  R_intersect: function (base, value) {\n    var lo = Object(vega_util__WEBPACK_IMPORTED_MODULE_0__[\"toNumber\"])(value[0]),\n        hi = Object(vega_util__WEBPACK_IMPORTED_MODULE_0__[\"toNumber\"])(value[1]);\n\n    if (lo > hi) {\n      lo = value[1];\n      hi = value[0];\n    }\n\n    if (!base.length) return [lo, hi];\n\n    if (hi < base[0] || base[1] < lo) {\n      return [];\n    } else {\n      if (base[0] < lo) base[0] = lo;\n      if (base[1] > hi) base[1] = hi;\n    }\n\n    return base;\n  }\n};\n\nconst DataPrefix = ':',\n      IndexPrefix = '@';\nfunction selectionVisitor(name, args, scope, params) {\n  if (args[0].type !== vega_expression__WEBPACK_IMPORTED_MODULE_1__[\"Literal\"]) Object(vega_util__WEBPACK_IMPORTED_MODULE_0__[\"error\"])('First argument to selection functions must be a string literal.');\n  const data = args[0].value,\n        op = args.length >= 2 && Object(vega_util__WEBPACK_IMPORTED_MODULE_0__[\"peek\"])(args).value,\n        field = 'unit',\n        indexName = IndexPrefix + field,\n        dataName = DataPrefix + data; // eslint-disable-next-line no-prototype-builtins\n\n  if (op === Intersect && !Object(vega_util__WEBPACK_IMPORTED_MODULE_0__[\"hasOwnProperty\"])(params, indexName)) {\n    params[indexName] = scope.getData(data).indataRef(scope, field);\n  } // eslint-disable-next-line no-prototype-builtins\n\n\n  if (!Object(vega_util__WEBPACK_IMPORTED_MODULE_0__[\"hasOwnProperty\"])(params, dataName)) {\n    params[dataName] = scope.getData(data).tuplesRef();\n  }\n}\n\n\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,[encoded data, 17964 characters]\n//# sourceURL=webpack-internal:///./node_modules/vega-selections/build/vega-selection.module.js\n");

/***/ }),

/***/ "./node_modules/vega-selections/node_modules/vega-expression/build/vega-expression.module.js":
/*!***************************************************************************************************!*\
  !*** ./node_modules/vega-selections/node_modules/vega-expression/build/vega-expression.module.js ***!
  \***************************************************************************************************/
/*! exports provided: ASTNode, ArrayExpression, BinaryExpression, CallExpression, ConditionalExpression, Identifier, Literal, LogicalExpression, MemberExpression, ObjectExpression, Property, RawCode, UnaryExpression, codegen, constants, functions, parse */
/***/ (function(module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"ASTNode\", function() { return ASTNode; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"ArrayExpression\", function() { return ArrayExpression; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"BinaryExpression\", function() { return BinaryExpression; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"CallExpression\", function() { return CallExpression; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"ConditionalExpression\", function() { return ConditionalExpression; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"Identifier\", function() { return Identifier; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"Literal\", function() { return Literal; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"LogicalExpression\", function() { return LogicalExpression; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"MemberExpression\", function() { return MemberExpression; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"ObjectExpression\", function() { return ObjectExpression; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"Property\", function() { return Property; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"RawCode\", function() { return RawCode; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"UnaryExpression\", function() { return UnaryExpression; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"codegen\", function() { return codegen; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"constants\", function() { return Constants; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"functions\", function() { return Functions; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"parse\", function() { return parser; });\n/* harmony import */ var vega_util__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! vega-util */ \"./node_modules/vega-selections/node_modules/vega-util/build/vega-util.module.js\");\n\n\nconst RawCode = 'RawCode';\nconst Literal = 'Literal';\nconst Property = 'Property';\nconst Identifier = 'Identifier';\nconst ArrayExpression = 'ArrayExpression';\nconst BinaryExpression = 'BinaryExpression';\nconst CallExpression = 'CallExpression';\nconst ConditionalExpression = 'ConditionalExpression';\nconst LogicalExpression = 'LogicalExpression';\nconst MemberExpression = 'MemberExpression';\nconst ObjectExpression = 'ObjectExpression';\nconst UnaryExpression = 'UnaryExpression';\nfunction ASTNode(type) {\n  this.type = type;\n}\n\nASTNode.prototype.visit = function (visitor) {\n  let c, i, n;\n  if (visitor(this)) return 1;\n\n  for (c = children(this), i = 0, n = c.length; i < n; ++i) {\n    if (c[i].visit(visitor)) return 1;\n  }\n};\n\nfunction children(node) {\n  switch (node.type) {\n    case ArrayExpression:\n      return node.elements;\n\n    case BinaryExpression:\n    case LogicalExpression:\n      return [node.left, node.right];\n\n    case CallExpression:\n      return [node.callee].concat(node.arguments);\n\n    case ConditionalExpression:\n      return [node.test, node.consequent, node.alternate];\n\n    case MemberExpression:\n      return [node.object, node.property];\n\n    case ObjectExpression:\n      return node.properties;\n\n    case Property:\n      return [node.key, node.value];\n\n    case UnaryExpression:\n      return [node.argument];\n\n    case Identifier:\n    case Literal:\n    case RawCode:\n    default:\n      return [];\n  }\n}\n\n/*\n  The following expression parser is based on Esprima (http://esprima.org/).\n  Original header comment and license for Esprima is included here:\n\n  Copyright (C) 2013 Ariya Hidayat <ariya.hidayat@gmail.com>\n  Copyright (C) 2013 Thaddee Tyl <thaddee.tyl@gmail.com>\n  Copyright (C) 2013 Mathias Bynens <mathias@qiwi.be>\n  Copyright (C) 2012 Ariya Hidayat <ariya.hidayat@gmail.com>\n  Copyright (C) 2012 Mathias Bynens <mathias@qiwi.be>\n  Copyright (C) 2012 Joost-Wim Boekesteijn <joost-wim@boekesteijn.nl>\n  Copyright (C) 2012 Kris Kowal <kris.kowal@cixar.com>\n  Copyright (C) 2012 Yusuke Suzuki <utatane.tea@gmail.com>\n  Copyright (C) 2012 Arpad Borsos <arpad.borsos@googlemail.com>\n  Copyright (C) 2011 Ariya Hidayat <ariya.hidayat@gmail.com>\n\n  Redistribution and use in source and binary forms, with or without\n  modification, are permitted provided that the following conditions are met:\n\n    * Redistributions of source code must retain the above copyright\n      notice, this list of conditions and the following disclaimer.\n    * Redistributions in binary form must reproduce the above copyright\n      notice, this list of conditions and the following disclaimer in the\n      documentation and/or other materials provided with the distribution.\n\n  THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS \"AS IS\"\n  AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE\n  IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE\n  ARE DISCLAIMED. IN NO EVENT SHALL <COPYRIGHT HOLDER> BE LIABLE FOR ANY\n  DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES\n  (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;\n  LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND\n  ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT\n  (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF\n  THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.\n*/\nvar TokenName, source, index, length, lookahead;\nvar TokenBooleanLiteral = 1,\n    TokenEOF = 2,\n    TokenIdentifier = 3,\n    TokenKeyword = 4,\n    TokenNullLiteral = 5,\n    TokenNumericLiteral = 6,\n    TokenPunctuator = 7,\n    TokenStringLiteral = 8,\n    TokenRegularExpression = 9;\nTokenName = {};\nTokenName[TokenBooleanLiteral] = 'Boolean';\nTokenName[TokenEOF] = '<end>';\nTokenName[TokenIdentifier] = 'Identifier';\nTokenName[TokenKeyword] = 'Keyword';\nTokenName[TokenNullLiteral] = 'Null';\nTokenName[TokenNumericLiteral] = 'Numeric';\nTokenName[TokenPunctuator] = 'Punctuator';\nTokenName[TokenStringLiteral] = 'String';\nTokenName[TokenRegularExpression] = 'RegularExpression';\nvar SyntaxArrayExpression = 'ArrayExpression',\n    SyntaxBinaryExpression = 'BinaryExpression',\n    SyntaxCallExpression = 'CallExpression',\n    SyntaxConditionalExpression = 'ConditionalExpression',\n    SyntaxIdentifier = 'Identifier',\n    SyntaxLiteral = 'Literal',\n    SyntaxLogicalExpression = 'LogicalExpression',\n    SyntaxMemberExpression = 'MemberExpression',\n    SyntaxObjectExpression = 'ObjectExpression',\n    SyntaxProperty = 'Property',\n    SyntaxUnaryExpression = 'UnaryExpression'; // Error messages should be identical to V8.\n\nvar MessageUnexpectedToken = 'Unexpected token %0',\n    MessageUnexpectedNumber = 'Unexpected number',\n    MessageUnexpectedString = 'Unexpected string',\n    MessageUnexpectedIdentifier = 'Unexpected identifier',\n    MessageUnexpectedReserved = 'Unexpected reserved word',\n    MessageUnexpectedEOS = 'Unexpected end of input',\n    MessageInvalidRegExp = 'Invalid regular expression',\n    MessageUnterminatedRegExp = 'Invalid regular expression: missing /',\n    MessageStrictOctalLiteral = 'Octal literals are not allowed in strict mode.',\n    MessageStrictDuplicateProperty = 'Duplicate data property in object literal not allowed in strict mode';\nvar ILLEGAL = 'ILLEGAL',\n    DISABLED = 'Disabled.'; // See also tools/generate-unicode-regex.py.\n\nvar RegexNonAsciiIdentifierStart = new RegExp('[\\\\xAA\\\\xB5\\\\xBA\\\\xC0-\\\\xD6\\\\xD8-\\\\xF6\\\\xF8-\\\\u02C1\\\\u02C6-\\\\u02D1\\\\u02E0-\\\\u02E4\\\\u02EC\\\\u02EE\\\\u0370-\\\\u0374\\\\u0376\\\\u0377\\\\u037A-\\\\u037D\\\\u037F\\\\u0386\\\\u0388-\\\\u038A\\\\u038C\\\\u038E-\\\\u03A1\\\\u03A3-\\\\u03F5\\\\u03F7-\\\\u0481\\\\u048A-\\\\u052F\\\\u0531-\\\\u0556\\\\u0559\\\\u0561-\\\\u0587\\\\u05D0-\\\\u05EA\\\\u05F0-\\\\u05F2\\\\u0620-\\\\u064A\\\\u066E\\\\u066F\\\\u0671-\\\\u06D3\\\\u06D5\\\\u06E5\\\\u06E6\\\\u06EE\\\\u06EF\\\\u06FA-\\\\u06FC\\\\u06FF\\\\u0710\\\\u0712-\\\\u072F\\\\u074D-\\\\u07A5\\\\u07B1\\\\u07CA-\\\\u07EA\\\\u07F4\\\\u07F5\\\\u07FA\\\\u0800-\\\\u0815\\\\u081A\\\\u0824\\\\u0828\\\\u0840-\\\\u0858\\\\u08A0-\\\\u08B2\\\\u0904-\\\\u0939\\\\u093D\\\\u0950\\\\u0958-\\\\u0961\\\\u0971-\\\\u0980\\\\u0985-\\\\u098C\\\\u098F\\\\u0990\\\\u0993-\\\\u09A8\\\\u09AA-\\\\u09B0\\\\u09B2\\\\u09B6-\\\\u09B9\\\\u09BD\\\\u09CE\\\\u09DC\\\\u09DD\\\\u09DF-\\\\u09E1\\\\u09F0\\\\u09F1\\\\u0A05-\\\\u0A0A\\\\u0A0F\\\\u0A10\\\\u0A13-\\\\u0A28\\\\u0A2A-\\\\u0A30\\\\u0A32\\\\u0A33\\\\u0A35\\\\u0A36\\\\u0A38\\\\u0A39\\\\u0A59-\\\\u0A5C\\\\u0A5E\\\\u0A72-\\\\u0A74\\\\u0A85-\\\\u0A8D\\\\u0A8F-\\\\u0A91\\\\u0A93-\\\\u0AA8\\\\u0AAA-\\\\u0AB0\\\\u0AB2\\\\u0AB3\\\\u0AB5-\\\\u0AB9\\\\u0ABD\\\\u0AD0\\\\u0AE0\\\\u0AE1\\\\u0B05-\\\\u0B0C\\\\u0B0F\\\\u0B10\\\\u0B13-\\\\u0B28\\\\u0B2A-\\\\u0B30\\\\u0B32\\\\u0B33\\\\u0B35-\\\\u0B39\\\\u0B3D\\\\u0B5C\\\\u0B5D\\\\u0B5F-\\\\u0B61\\\\u0B71\\\\u0B83\\\\u0B85-\\\\u0B8A\\\\u0B8E-\\\\u0B90\\\\u0B92-\\\\u0B95\\\\u0B99\\\\u0B9A\\\\u0B9C\\\\u0B9E\\\\u0B9F\\\\u0BA3\\\\u0BA4\\\\u0BA8-\\\\u0BAA\\\\u0BAE-\\\\u0BB9\\\\u0BD0\\\\u0C05-\\\\u0C0C\\\\u0C0E-\\\\u0C10\\\\u0C12-\\\\u0C28\\\\u0C2A-\\\\u0C39\\\\u0C3D\\\\u0C58\\\\u0C59\\\\u0C60\\\\u0C61\\\\u0C85-\\\\u0C8C\\\\u0C8E-\\\\u0C90\\\\u0C92-\\\\u0CA8\\\\u0CAA-\\\\u0CB3\\\\u0CB5-\\\\u0CB9\\\\u0CBD\\\\u0CDE\\\\u0CE0\\\\u0CE1\\\\u0CF1\\\\u0CF2\\\\u0D05-\\\\u0D0C\\\\u0D0E-\\\\u0D10\\\\u0D12-\\\\u0D3A\\\\u0D3D\\\\u0D4E\\\\u0D60\\\\u0D61\\\\u0D7A-\\\\u0D7F\\\\u0D85-\\\\u0D96\\\\u0D9A-\\\\u0DB1\\\\u0DB3-\\\\u0DBB\\\\u0DBD\\\\u0DC0-\\\\u0DC6\\\\u0E01-\\\\u0E30\\\\u0E32\\\\u0E33\\\\u0E40-\\\\u0E46\\\\u0E81\\\\u0E82\\\\u0E84\\\\u0E87\\\\u0E88\\\\u0E8A\\\\u0E8D\\\\u0E94-\\\\u0E97\\\\u0E99-\\\\u0E9F\\\\u0EA1-\\\\u0EA3\\\\u0EA5\\\\u0EA7\\\\u0EAA\\\\u0EAB\\\\u0EAD-\\\\u0EB0\\\\u0EB2\\\\u0EB3\\\\u0EBD\\\\u0EC0-\\\\u0EC4\\\\u0EC6\\\\u0EDC-\\\\u0EDF\\\\u0F00\\\\u0F40-\\\\u0F47\\\\u0F49-\\\\u0F6C\\\\u0F88-\\\\u0F8C\\\\u1000-\\\\u102A\\\\u103F\\\\u1050-\\\\u1055\\\\u105A-\\\\u105D\\\\u1061\\\\u1065\\\\u1066\\\\u106E-\\\\u1070\\\\u1075-\\\\u1081\\\\u108E\\\\u10A0-\\\\u10C5\\\\u10C7\\\\u10CD\\\\u10D0-\\\\u10FA\\\\u10FC-\\\\u1248\\\\u124A-\\\\u124D\\\\u1250-\\\\u1256\\\\u1258\\\\u125A-\\\\u125D\\\\u1260-\\\\u1288\\\\u128A-\\\\u128D\\\\u1290-\\\\u12B0\\\\u12B2-\\\\u12B5\\\\u12B8-\\\\u12BE\\\\u12C0\\\\u12C2-\\\\u12C5\\\\u12C8-\\\\u12D6\\\\u12D8-\\\\u1310\\\\u1312-\\\\u1315\\\\u1318-\\\\u135A\\\\u1380-\\\\u138F\\\\u13A0-\\\\u13F4\\\\u1401-\\\\u166C\\\\u166F-\\\\u167F\\\\u1681-\\\\u169A\\\\u16A0-\\\\u16EA\\\\u16EE-\\\\u16F8\\\\u1700-\\\\u170C\\\\u170E-\\\\u1711\\\\u1720-\\\\u1731\\\\u1740-\\\\u1751\\\\u1760-\\\\u176C\\\\u176E-\\\\u1770\\\\u1780-\\\\u17B3\\\\u17D7\\\\u17DC\\\\u1820-\\\\u1877\\\\u1880-\\\\u18A8\\\\u18AA\\\\u18B0-\\\\u18F5\\\\u1900-\\\\u191E\\\\u1950-\\\\u196D\\\\u1970-\\\\u1974\\\\u1980-\\\\u19AB\\\\u19C1-\\\\u19C7\\\\u1A00-\\\\u1A16\\\\u1A20-\\\\u1A54\\\\u1AA7\\\\u1B05-\\\\u1B33\\\\u1B45-\\\\u1B4B\\\\u1B83-\\\\u1BA0\\\\u1BAE\\\\u1BAF\\\\u1BBA-\\\\u1BE5\\\\u1C00-\\\\u1C23\\\\u1C4D-\\\\u1C4F\\\\u1C5A-\\\\u1C7D\\\\u1CE9-\\\\u1CEC\\\\u1CEE-\\\\u1CF1\\\\u1CF5\\\\u1CF6\\\\u1D00-\\\\u1DBF\\\\u1E00-\\\\u1F15\\\\u1F18-\\\\u1F1D\\\\u1F20-\\\\u1F45\\\\u1F48-\\\\u1F4D\\\\u1F50-\\\\u1F57\\\\u1F59\\\\u1F5B\\\\u1F5D\\\\u1F5F-\\\\u1F7D\\\\u1F80-\\\\u1FB4\\\\u1FB6-\\\\u1FBC\\\\u1FBE\\\\u1FC2-\\\\u1FC4\\\\u1FC6-\\\\u1FCC\\\\u1FD0-\\\\u1FD3\\\\u1FD6-\\\\u1FDB\\\\u1FE0-\\\\u1FEC\\\\u1FF2-\\\\u1FF4\\\\u1FF6-\\\\u1FFC\\\\u2071\\\\u207F\\\\u2090-\\\\u209C\\\\u2102\\\\u2107\\\\u210A-\\\\u2113\\\\u2115\\\\u2119-\\\\u211D\\\\u2124\\\\u2126\\\\u2128\\\\u212A-\\\\u212D\\\\u212F-\\\\u2139\\\\u213C-\\\\u213F\\\\u2145-\\\\u2149\\\\u214E\\\\u2160-\\\\u2188\\\\u2C00-\\\\u2C2E\\\\u2C30-\\\\u2C5E\\\\u2C60-\\\\u2CE4\\\\u2CEB-\\\\u2CEE\\\\u2CF2\\\\u2CF3\\\\u2D00-\\\\u2D25\\\\u2D27\\\\u2D2D\\\\u2D30-\\\\u2D67\\\\u2D6F\\\\u2D80-\\\\u2D96\\\\u2DA0-\\\\u2DA6\\\\u2DA8-\\\\u2DAE\\\\u2DB0-\\\\u2DB6\\\\u2DB8-\\\\u2DBE\\\\u2DC0-\\\\u2DC6\\\\u2DC8-\\\\u2DCE\\\\u2DD0-\\\\u2DD6\\\\u2DD8-\\\\u2DDE\\\\u2E2F\\\\u3005-\\\\u3007\\\\u3021-\\\\u3029\\\\u3031-\\\\u3035\\\\u3038-\\\\u303C\\\\u3041-\\\\u3096\\\\u309D-\\\\u309F\\\\u30A1-\\\\u30FA\\\\u30FC-\\\\u30FF\\\\u3105-\\\\u312D\\\\u3131-\\\\u318E\\\\u31A0-\\\\u31BA\\\\u31F0-\\\\u31FF\\\\u3400-\\\\u4DB5\\\\u4E00-\\\\u9FCC\\\\uA000-\\\\uA48C\\\\uA4D0-\\\\uA4FD\\\\uA500-\\\\uA60C\\\\uA610-\\\\uA61F\\\\uA62A\\\\uA62B\\\\uA640-\\\\uA66E\\\\uA67F-\\\\uA69D\\\\uA6A0-\\\\uA6EF\\\\uA717-\\\\uA71F\\\\uA722-\\\\uA788\\\\uA78B-\\\\uA78E\\\\uA790-\\\\uA7AD\\\\uA7B0\\\\uA7B1\\\\uA7F7-\\\\uA801\\\\uA803-\\\\uA805\\\\uA807-\\\\uA80A\\\\uA80C-\\\\uA822\\\\uA840-\\\\uA873\\\\uA882-\\\\uA8B3\\\\uA8F2-\\\\uA8F7\\\\uA8FB\\\\uA90A-\\\\uA925\\\\uA930-\\\\uA946\\\\uA960-\\\\uA97C\\\\uA984-\\\\uA9B2\\\\uA9CF\\\\uA9E0-\\\\uA9E4\\\\uA9E6-\\\\uA9EF\\\\uA9FA-\\\\uA9FE\\\\uAA00-\\\\uAA28\\\\uAA40-\\\\uAA42\\\\uAA44-\\\\uAA4B\\\\uAA60-\\\\uAA76\\\\uAA7A\\\\uAA7E-\\\\uAAAF\\\\uAAB1\\\\uAAB5\\\\uAAB6\\\\uAAB9-\\\\uAABD\\\\uAAC0\\\\uAAC2\\\\uAADB-\\\\uAADD\\\\uAAE0-\\\\uAAEA\\\\uAAF2-\\\\uAAF4\\\\uAB01-\\\\uAB06\\\\uAB09-\\\\uAB0E\\\\uAB11-\\\\uAB16\\\\uAB20-\\\\uAB26\\\\uAB28-\\\\uAB2E\\\\uAB30-\\\\uAB5A\\\\uAB5C-\\\\uAB5F\\\\uAB64\\\\uAB65\\\\uABC0-\\\\uABE2\\\\uAC00-\\\\uD7A3\\\\uD7B0-\\\\uD7C6\\\\uD7CB-\\\\uD7FB\\\\uF900-\\\\uFA6D\\\\uFA70-\\\\uFAD9\\\\uFB00-\\\\uFB06\\\\uFB13-\\\\uFB17\\\\uFB1D\\\\uFB1F-\\\\uFB28\\\\uFB2A-\\\\uFB36\\\\uFB38-\\\\uFB3C\\\\uFB3E\\\\uFB40\\\\uFB41\\\\uFB43\\\\uFB44\\\\uFB46-\\\\uFBB1\\\\uFBD3-\\\\uFD3D\\\\uFD50-\\\\uFD8F\\\\uFD92-\\\\uFDC7\\\\uFDF0-\\\\uFDFB\\\\uFE70-\\\\uFE74\\\\uFE76-\\\\uFEFC\\\\uFF21-\\\\uFF3A\\\\uFF41-\\\\uFF5A\\\\uFF66-\\\\uFFBE\\\\uFFC2-\\\\uFFC7\\\\uFFCA-\\\\uFFCF\\\\uFFD2-\\\\uFFD7\\\\uFFDA-\\\\uFFDC]'),\n    // eslint-disable-next-line no-misleading-character-class\nRegexNonAsciiIdentifierPart = new RegExp('[\\\\xAA\\\\xB5\\\\xBA\\\\xC0-\\\\xD6\\\\xD8-\\\\xF6\\\\xF8-\\\\u02C1\\\\u02C6-\\\\u02D1\\\\u02E0-\\\\u02E4\\\\u02EC\\\\u02EE\\\\u0300-\\\\u0374\\\\u0376\\\\u0377\\\\u037A-\\\\u037D\\\\u037F\\\\u0386\\\\u0388-\\\\u038A\\\\u038C\\\\u038E-\\\\u03A1\\\\u03A3-\\\\u03F5\\\\u03F7-\\\\u0481\\\\u0483-\\\\u0487\\\\u048A-\\\\u052F\\\\u0531-\\\\u0556\\\\u0559\\\\u0561-\\\\u0587\\\\u0591-\\\\u05BD\\\\u05BF\\\\u05C1\\\\u05C2\\\\u05C4\\\\u05C5\\\\u05C7\\\\u05D0-\\\\u05EA\\\\u05F0-\\\\u05F2\\\\u0610-\\\\u061A\\\\u0620-\\\\u0669\\\\u066E-\\\\u06D3\\\\u06D5-\\\\u06DC\\\\u06DF-\\\\u06E8\\\\u06EA-\\\\u06FC\\\\u06FF\\\\u0710-\\\\u074A\\\\u074D-\\\\u07B1\\\\u07C0-\\\\u07F5\\\\u07FA\\\\u0800-\\\\u082D\\\\u0840-\\\\u085B\\\\u08A0-\\\\u08B2\\\\u08E4-\\\\u0963\\\\u0966-\\\\u096F\\\\u0971-\\\\u0983\\\\u0985-\\\\u098C\\\\u098F\\\\u0990\\\\u0993-\\\\u09A8\\\\u09AA-\\\\u09B0\\\\u09B2\\\\u09B6-\\\\u09B9\\\\u09BC-\\\\u09C4\\\\u09C7\\\\u09C8\\\\u09CB-\\\\u09CE\\\\u09D7\\\\u09DC\\\\u09DD\\\\u09DF-\\\\u09E3\\\\u09E6-\\\\u09F1\\\\u0A01-\\\\u0A03\\\\u0A05-\\\\u0A0A\\\\u0A0F\\\\u0A10\\\\u0A13-\\\\u0A28\\\\u0A2A-\\\\u0A30\\\\u0A32\\\\u0A33\\\\u0A35\\\\u0A36\\\\u0A38\\\\u0A39\\\\u0A3C\\\\u0A3E-\\\\u0A42\\\\u0A47\\\\u0A48\\\\u0A4B-\\\\u0A4D\\\\u0A51\\\\u0A59-\\\\u0A5C\\\\u0A5E\\\\u0A66-\\\\u0A75\\\\u0A81-\\\\u0A83\\\\u0A85-\\\\u0A8D\\\\u0A8F-\\\\u0A91\\\\u0A93-\\\\u0AA8\\\\u0AAA-\\\\u0AB0\\\\u0AB2\\\\u0AB3\\\\u0AB5-\\\\u0AB9\\\\u0ABC-\\\\u0AC5\\\\u0AC7-\\\\u0AC9\\\\u0ACB-\\\\u0ACD\\\\u0AD0\\\\u0AE0-\\\\u0AE3\\\\u0AE6-\\\\u0AEF\\\\u0B01-\\\\u0B03\\\\u0B05-\\\\u0B0C\\\\u0B0F\\\\u0B10\\\\u0B13-\\\\u0B28\\\\u0B2A-\\\\u0B30\\\\u0B32\\\\u0B33\\\\u0B35-\\\\u0B39\\\\u0B3C-\\\\u0B44\\\\u0B47\\\\u0B48\\\\u0B4B-\\\\u0B4D\\\\u0B56\\\\u0B57\\\\u0B5C\\\\u0B5D\\\\u0B5F-\\\\u0B63\\\\u0B66-\\\\u0B6F\\\\u0B71\\\\u0B82\\\\u0B83\\\\u0B85-\\\\u0B8A\\\\u0B8E-\\\\u0B90\\\\u0B92-\\\\u0B95\\\\u0B99\\\\u0B9A\\\\u0B9C\\\\u0B9E\\\\u0B9F\\\\u0BA3\\\\u0BA4\\\\u0BA8-\\\\u0BAA\\\\u0BAE-\\\\u0BB9\\\\u0BBE-\\\\u0BC2\\\\u0BC6-\\\\u0BC8\\\\u0BCA-\\\\u0BCD\\\\u0BD0\\\\u0BD7\\\\u0BE6-\\\\u0BEF\\\\u0C00-\\\\u0C03\\\\u0C05-\\\\u0C0C\\\\u0C0E-\\\\u0C10\\\\u0C12-\\\\u0C28\\\\u0C2A-\\\\u0C39\\\\u0C3D-\\\\u0C44\\\\u0C46-\\\\u0C48\\\\u0C4A-\\\\u0C4D\\\\u0C55\\\\u0C56\\\\u0C58\\\\u0C59\\\\u0C60-\\\\u0C63\\\\u0C66-\\\\u0C6F\\\\u0C81-\\\\u0C83\\\\u0C85-\\\\u0C8C\\\\u0C8E-\\\\u0C90\\\\u0C92-\\\\u0CA8\\\\u0CAA-\\\\u0CB3\\\\u0CB5-\\\\u0CB9\\\\u0CBC-\\\\u0CC4\\\\u0CC6-\\\\u0CC8\\\\u0CCA-\\\\u0CCD\\\\u0CD5\\\\u0CD6\\\\u0CDE\\\\u0CE0-\\\\u0CE3\\\\u0CE6-\\\\u0CEF\\\\u0CF1\\\\u0CF2\\\\u0D01-\\\\u0D03\\\\u0D05-\\\\u0D0C\\\\u0D0E-\\\\u0D10\\\\u0D12-\\\\u0D3A\\\\u0D3D-\\\\u0D44\\\\u0D46-\\\\u0D48\\\\u0D4A-\\\\u0D4E\\\\u0D57\\\\u0D60-\\\\u0D63\\\\u0D66-\\\\u0D6F\\\\u0D7A-\\\\u0D7F\\\\u0D82\\\\u0D83\\\\u0D85-\\\\u0D96\\\\u0D9A-\\\\u0DB1\\\\u0DB3-\\\\u0DBB\\\\u0DBD\\\\u0DC0-\\\\u0DC6\\\\u0DCA\\\\u0DCF-\\\\u0DD4\\\\u0DD6\\\\u0DD8-\\\\u0DDF\\\\u0DE6-\\\\u0DEF\\\\u0DF2\\\\u0DF3\\\\u0E01-\\\\u0E3A\\\\u0E40-\\\\u0E4E\\\\u0E50-\\\\u0E59\\\\u0E81\\\\u0E82\\\\u0E84\\\\u0E87\\\\u0E88\\\\u0E8A\\\\u0E8D\\\\u0E94-\\\\u0E97\\\\u0E99-\\\\u0E9F\\\\u0EA1-\\\\u0EA3\\\\u0EA5\\\\u0EA7\\\\u0EAA\\\\u0EAB\\\\u0EAD-\\\\u0EB9\\\\u0EBB-\\\\u0EBD\\\\u0EC0-\\\\u0EC4\\\\u0EC6\\\\u0EC8-\\\\u0ECD\\\\u0ED0-\\\\u0ED9\\\\u0EDC-\\\\u0EDF\\\\u0F00\\\\u0F18\\\\u0F19\\\\u0F20-\\\\u0F29\\\\u0F35\\\\u0F37\\\\u0F39\\\\u0F3E-\\\\u0F47\\\\u0F49-\\\\u0F6C\\\\u0F71-\\\\u0F84\\\\u0F86-\\\\u0F97\\\\u0F99-\\\\u0FBC\\\\u0FC6\\\\u1000-\\\\u1049\\\\u1050-\\\\u109D\\\\u10A0-\\\\u10C5\\\\u10C7\\\\u10CD\\\\u10D0-\\\\u10FA\\\\u10FC-\\\\u1248\\\\u124A-\\\\u124D\\\\u1250-\\\\u1256\\\\u1258\\\\u125A-\\\\u125D\\\\u1260-\\\\u1288\\\\u128A-\\\\u128D\\\\u1290-\\\\u12B0\\\\u12B2-\\\\u12B5\\\\u12B8-\\\\u12BE\\\\u12C0\\\\u12C2-\\\\u12C5\\\\u12C8-\\\\u12D6\\\\u12D8-\\\\u1310\\\\u1312-\\\\u1315\\\\u1318-\\\\u135A\\\\u135D-\\\\u135F\\\\u1380-\\\\u138F\\\\u13A0-\\\\u13F4\\\\u1401-\\\\u166C\\\\u166F-\\\\u167F\\\\u1681-\\\\u169A\\\\u16A0-\\\\u16EA\\\\u16EE-\\\\u16F8\\\\u1700-\\\\u170C\\\\u170E-\\\\u1714\\\\u1720-\\\\u1734\\\\u1740-\\\\u1753\\\\u1760-\\\\u176C\\\\u176E-\\\\u1770\\\\u1772\\\\u1773\\\\u1780-\\\\u17D3\\\\u17D7\\\\u17DC\\\\u17DD\\\\u17E0-\\\\u17E9\\\\u180B-\\\\u180D\\\\u1810-\\\\u1819\\\\u1820-\\\\u1877\\\\u1880-\\\\u18AA\\\\u18B0-\\\\u18F5\\\\u1900-\\\\u191E\\\\u1920-\\\\u192B\\\\u1930-\\\\u193B\\\\u1946-\\\\u196D\\\\u1970-\\\\u1974\\\\u1980-\\\\u19AB\\\\u19B0-\\\\u19C9\\\\u19D0-\\\\u19D9\\\\u1A00-\\\\u1A1B\\\\u1A20-\\\\u1A5E\\\\u1A60-\\\\u1A7C\\\\u1A7F-\\\\u1A89\\\\u1A90-\\\\u1A99\\\\u1AA7\\\\u1AB0-\\\\u1ABD\\\\u1B00-\\\\u1B4B\\\\u1B50-\\\\u1B59\\\\u1B6B-\\\\u1B73\\\\u1B80-\\\\u1BF3\\\\u1C00-\\\\u1C37\\\\u1C40-\\\\u1C49\\\\u1C4D-\\\\u1C7D\\\\u1CD0-\\\\u1CD2\\\\u1CD4-\\\\u1CF6\\\\u1CF8\\\\u1CF9\\\\u1D00-\\\\u1DF5\\\\u1DFC-\\\\u1F15\\\\u1F18-\\\\u1F1D\\\\u1F20-\\\\u1F45\\\\u1F48-\\\\u1F4D\\\\u1F50-\\\\u1F57\\\\u1F59\\\\u1F5B\\\\u1F5D\\\\u1F5F-\\\\u1F7D\\\\u1F80-\\\\u1FB4\\\\u1FB6-\\\\u1FBC\\\\u1FBE\\\\u1FC2-\\\\u1FC4\\\\u1FC6-\\\\u1FCC\\\\u1FD0-\\\\u1FD3\\\\u1FD6-\\\\u1FDB\\\\u1FE0-\\\\u1FEC\\\\u1FF2-\\\\u1FF4\\\\u1FF6-\\\\u1FFC\\\\u200C\\\\u200D\\\\u203F\\\\u2040\\\\u2054\\\\u2071\\\\u207F\\\\u2090-\\\\u209C\\\\u20D0-\\\\u20DC\\\\u20E1\\\\u20E5-\\\\u20F0\\\\u2102\\\\u2107\\\\u210A-\\\\u2113\\\\u2115\\\\u2119-\\\\u211D\\\\u2124\\\\u2126\\\\u2128\\\\u212A-\\\\u212D\\\\u212F-\\\\u2139\\\\u213C-\\\\u213F\\\\u2145-\\\\u2149\\\\u214E\\\\u2160-\\\\u2188\\\\u2C00-\\\\u2C2E\\\\u2C30-\\\\u2C5E\\\\u2C60-\\\\u2CE4\\\\u2CEB-\\\\u2CF3\\\\u2D00-\\\\u2D25\\\\u2D27\\\\u2D2D\\\\u2D30-\\\\u2D67\\\\u2D6F\\\\u2D7F-\\\\u2D96\\\\u2DA0-\\\\u2DA6\\\\u2DA8-\\\\u2DAE\\\\u2DB0-\\\\u2DB6\\\\u2DB8-\\\\u2DBE\\\\u2DC0-\\\\u2DC6\\\\u2DC8-\\\\u2DCE\\\\u2DD0-\\\\u2DD6\\\\u2DD8-\\\\u2DDE\\\\u2DE0-\\\\u2DFF\\\\u2E2F\\\\u3005-\\\\u3007\\\\u3021-\\\\u302F\\\\u3031-\\\\u3035\\\\u3038-\\\\u303C\\\\u3041-\\\\u3096\\\\u3099\\\\u309A\\\\u309D-\\\\u309F\\\\u30A1-\\\\u30FA\\\\u30FC-\\\\u30FF\\\\u3105-\\\\u312D\\\\u3131-\\\\u318E\\\\u31A0-\\\\u31BA\\\\u31F0-\\\\u31FF\\\\u3400-\\\\u4DB5\\\\u4E00-\\\\u9FCC\\\\uA000-\\\\uA48C\\\\uA4D0-\\\\uA4FD\\\\uA500-\\\\uA60C\\\\uA610-\\\\uA62B\\\\uA640-\\\\uA66F\\\\uA674-\\\\uA67D\\\\uA67F-\\\\uA69D\\\\uA69F-\\\\uA6F1\\\\uA717-\\\\uA71F\\\\uA722-\\\\uA788\\\\uA78B-\\\\uA78E\\\\uA790-\\\\uA7AD\\\\uA7B0\\\\uA7B1\\\\uA7F7-\\\\uA827\\\\uA840-\\\\uA873\\\\uA880-\\\\uA8C4\\\\uA8D0-\\\\uA8D9\\\\uA8E0-\\\\uA8F7\\\\uA8FB\\\\uA900-\\\\uA92D\\\\uA930-\\\\uA953\\\\uA960-\\\\uA97C\\\\uA980-\\\\uA9C0\\\\uA9CF-\\\\uA9D9\\\\uA9E0-\\\\uA9FE\\\\uAA00-\\\\uAA36\\\\uAA40-\\\\uAA4D\\\\uAA50-\\\\uAA59\\\\uAA60-\\\\uAA76\\\\uAA7A-\\\\uAAC2\\\\uAADB-\\\\uAADD\\\\uAAE0-\\\\uAAEF\\\\uAAF2-\\\\uAAF6\\\\uAB01-\\\\uAB06\\\\uAB09-\\\\uAB0E\\\\uAB11-\\\\uAB16\\\\uAB20-\\\\uAB26\\\\uAB28-\\\\uAB2E\\\\uAB30-\\\\uAB5A\\\\uAB5C-\\\\uAB5F\\\\uAB64\\\\uAB65\\\\uABC0-\\\\uABEA\\\\uABEC\\\\uABED\\\\uABF0-\\\\uABF9\\\\uAC00-\\\\uD7A3\\\\uD7B0-\\\\uD7C6\\\\uD7CB-\\\\uD7FB\\\\uF900-\\\\uFA6D\\\\uFA70-\\\\uFAD9\\\\uFB00-\\\\uFB06\\\\uFB13-\\\\uFB17\\\\uFB1D-\\\\uFB28\\\\uFB2A-\\\\uFB36\\\\uFB38-\\\\uFB3C\\\\uFB3E\\\\uFB40\\\\uFB41\\\\uFB43\\\\uFB44\\\\uFB46-\\\\uFBB1\\\\uFBD3-\\\\uFD3D\\\\uFD50-\\\\uFD8F\\\\uFD92-\\\\uFDC7\\\\uFDF0-\\\\uFDFB\\\\uFE00-\\\\uFE0F\\\\uFE20-\\\\uFE2D\\\\uFE33\\\\uFE34\\\\uFE4D-\\\\uFE4F\\\\uFE70-\\\\uFE74\\\\uFE76-\\\\uFEFC\\\\uFF10-\\\\uFF19\\\\uFF21-\\\\uFF3A\\\\uFF3F\\\\uFF41-\\\\uFF5A\\\\uFF66-\\\\uFFBE\\\\uFFC2-\\\\uFFC7\\\\uFFCA-\\\\uFFCF\\\\uFFD2-\\\\uFFD7\\\\uFFDA-\\\\uFFDC]'); // Ensure the condition is true, otherwise throw an error.\n// This is only to have a better contract semantic, i.e. another safety net\n// to catch a logic error. The condition shall be fulfilled in normal case.\n// Do NOT use this to enforce a certain condition on any user input.\n\nfunction assert(condition, message) {\n  /* istanbul ignore next */\n  if (!condition) {\n    throw new Error('ASSERT: ' + message);\n  }\n}\n\nfunction isDecimalDigit(ch) {\n  return ch >= 0x30 && ch <= 0x39; // 0..9\n}\n\nfunction isHexDigit(ch) {\n  return '0123456789abcdefABCDEF'.indexOf(ch) >= 0;\n}\n\nfunction isOctalDigit(ch) {\n  return '01234567'.indexOf(ch) >= 0;\n} // 7.2 White Space\n\n\nfunction isWhiteSpace(ch) {\n  return ch === 0x20 || ch === 0x09 || ch === 0x0B || ch === 0x0C || ch === 0xA0 || ch >= 0x1680 && [0x1680, 0x180E, 0x2000, 0x2001, 0x2002, 0x2003, 0x2004, 0x2005, 0x2006, 0x2007, 0x2008, 0x2009, 0x200A, 0x202F, 0x205F, 0x3000, 0xFEFF].indexOf(ch) >= 0;\n} // 7.3 Line Terminators\n\n\nfunction isLineTerminator(ch) {\n  return ch === 0x0A || ch === 0x0D || ch === 0x2028 || ch === 0x2029;\n} // 7.6 Identifier Names and Identifiers\n\n\nfunction isIdentifierStart(ch) {\n  return ch === 0x24 || ch === 0x5F || // $ (dollar) and _ (underscore)\n  ch >= 0x41 && ch <= 0x5A || // A..Z\n  ch >= 0x61 && ch <= 0x7A || // a..z\n  ch === 0x5C || // \\ (backslash)\n  ch >= 0x80 && RegexNonAsciiIdentifierStart.test(String.fromCharCode(ch));\n}\n\nfunction isIdentifierPart(ch) {\n  return ch === 0x24 || ch === 0x5F || // $ (dollar) and _ (underscore)\n  ch >= 0x41 && ch <= 0x5A || // A..Z\n  ch >= 0x61 && ch <= 0x7A || // a..z\n  ch >= 0x30 && ch <= 0x39 || // 0..9\n  ch === 0x5C || // \\ (backslash)\n  ch >= 0x80 && RegexNonAsciiIdentifierPart.test(String.fromCharCode(ch));\n} // 7.6.1.1 Keywords\n\n\nconst keywords = {\n  'if': 1,\n  'in': 1,\n  'do': 1,\n  'var': 1,\n  'for': 1,\n  'new': 1,\n  'try': 1,\n  'let': 1,\n  'this': 1,\n  'else': 1,\n  'case': 1,\n  'void': 1,\n  'with': 1,\n  'enum': 1,\n  'while': 1,\n  'break': 1,\n  'catch': 1,\n  'throw': 1,\n  'const': 1,\n  'yield': 1,\n  'class': 1,\n  'super': 1,\n  'return': 1,\n  'typeof': 1,\n  'delete': 1,\n  'switch': 1,\n  'export': 1,\n  'import': 1,\n  'public': 1,\n  'static': 1,\n  'default': 1,\n  'finally': 1,\n  'extends': 1,\n  'package': 1,\n  'private': 1,\n  'function': 1,\n  'continue': 1,\n  'debugger': 1,\n  'interface': 1,\n  'protected': 1,\n  'instanceof': 1,\n  'implements': 1\n};\n\nfunction skipComment() {\n  while (index < length) {\n    const ch = source.charCodeAt(index);\n\n    if (isWhiteSpace(ch) || isLineTerminator(ch)) {\n      ++index;\n    } else {\n      break;\n    }\n  }\n}\n\nfunction scanHexEscape(prefix) {\n  var i,\n      len,\n      ch,\n      code = 0;\n  len = prefix === 'u' ? 4 : 2;\n\n  for (i = 0; i < len; ++i) {\n    if (index < length && isHexDigit(source[index])) {\n      ch = source[index++];\n      code = code * 16 + '0123456789abcdef'.indexOf(ch.toLowerCase());\n    } else {\n      throwError({}, MessageUnexpectedToken, ILLEGAL);\n    }\n  }\n\n  return String.fromCharCode(code);\n}\n\nfunction scanUnicodeCodePointEscape() {\n  var ch, code, cu1, cu2;\n  ch = source[index];\n  code = 0; // At least, one hex digit is required.\n\n  if (ch === '}') {\n    throwError({}, MessageUnexpectedToken, ILLEGAL);\n  }\n\n  while (index < length) {\n    ch = source[index++];\n\n    if (!isHexDigit(ch)) {\n      break;\n    }\n\n    code = code * 16 + '0123456789abcdef'.indexOf(ch.toLowerCase());\n  }\n\n  if (code > 0x10FFFF || ch !== '}') {\n    throwError({}, MessageUnexpectedToken, ILLEGAL);\n  } // UTF-16 Encoding\n\n\n  if (code <= 0xFFFF) {\n    return String.fromCharCode(code);\n  }\n\n  cu1 = (code - 0x10000 >> 10) + 0xD800;\n  cu2 = (code - 0x10000 & 1023) + 0xDC00;\n  return String.fromCharCode(cu1, cu2);\n}\n\nfunction getEscapedIdentifier() {\n  var ch, id;\n  ch = source.charCodeAt(index++);\n  id = String.fromCharCode(ch); // '\\u' (U+005C, U+0075) denotes an escaped character.\n\n  if (ch === 0x5C) {\n    if (source.charCodeAt(index) !== 0x75) {\n      throwError({}, MessageUnexpectedToken, ILLEGAL);\n    }\n\n    ++index;\n    ch = scanHexEscape('u');\n\n    if (!ch || ch === '\\\\' || !isIdentifierStart(ch.charCodeAt(0))) {\n      throwError({}, MessageUnexpectedToken, ILLEGAL);\n    }\n\n    id = ch;\n  }\n\n  while (index < length) {\n    ch = source.charCodeAt(index);\n\n    if (!isIdentifierPart(ch)) {\n      break;\n    }\n\n    ++index;\n    id += String.fromCharCode(ch); // '\\u' (U+005C, U+0075) denotes an escaped character.\n\n    if (ch === 0x5C) {\n      id = id.substr(0, id.length - 1);\n\n      if (source.charCodeAt(index) !== 0x75) {\n        throwError({}, MessageUnexpectedToken, ILLEGAL);\n      }\n\n      ++index;\n      ch = scanHexEscape('u');\n\n      if (!ch || ch === '\\\\' || !isIdentifierPart(ch.charCodeAt(0))) {\n        throwError({}, MessageUnexpectedToken, ILLEGAL);\n      }\n\n      id += ch;\n    }\n  }\n\n  return id;\n}\n\nfunction getIdentifier() {\n  var start, ch;\n  start = index++;\n\n  while (index < length) {\n    ch = source.charCodeAt(index);\n\n    if (ch === 0x5C) {\n      // Blackslash (U+005C) marks Unicode escape sequence.\n      index = start;\n      return getEscapedIdentifier();\n    }\n\n    if (isIdentifierPart(ch)) {\n      ++index;\n    } else {\n      break;\n    }\n  }\n\n  return source.slice(start, index);\n}\n\nfunction scanIdentifier() {\n  var start, id, type;\n  start = index; // Backslash (U+005C) starts an escaped character.\n\n  id = source.charCodeAt(index) === 0x5C ? getEscapedIdentifier() : getIdentifier(); // There is no keyword or literal with only one character.\n  // Thus, it must be an identifier.\n\n  if (id.length === 1) {\n    type = TokenIdentifier;\n  } else if (keywords.hasOwnProperty(id)) {\n    // eslint-disable-line no-prototype-builtins\n    type = TokenKeyword;\n  } else if (id === 'null') {\n    type = TokenNullLiteral;\n  } else if (id === 'true' || id === 'false') {\n    type = TokenBooleanLiteral;\n  } else {\n    type = TokenIdentifier;\n  }\n\n  return {\n    type: type,\n    value: id,\n    start: start,\n    end: index\n  };\n} // 7.7 Punctuators\n\n\nfunction scanPunctuator() {\n  var start = index,\n      code = source.charCodeAt(index),\n      code2,\n      ch1 = source[index],\n      ch2,\n      ch3,\n      ch4;\n\n  switch (code) {\n    // Check for most common single-character punctuators.\n    case 0x2E: // . dot\n\n    case 0x28: // ( open bracket\n\n    case 0x29: // ) close bracket\n\n    case 0x3B: // ; semicolon\n\n    case 0x2C: // , comma\n\n    case 0x7B: // { open curly brace\n\n    case 0x7D: // } close curly brace\n\n    case 0x5B: // [\n\n    case 0x5D: // ]\n\n    case 0x3A: // :\n\n    case 0x3F: // ?\n\n    case 0x7E:\n      // ~\n      ++index;\n      return {\n        type: TokenPunctuator,\n        value: String.fromCharCode(code),\n        start: start,\n        end: index\n      };\n\n    default:\n      code2 = source.charCodeAt(index + 1); // '=' (U+003D) marks an assignment or comparison operator.\n\n      if (code2 === 0x3D) {\n        switch (code) {\n          case 0x2B: // +\n\n          case 0x2D: // -\n\n          case 0x2F: // /\n\n          case 0x3C: // <\n\n          case 0x3E: // >\n\n          case 0x5E: // ^\n\n          case 0x7C: // |\n\n          case 0x25: // %\n\n          case 0x26: // &\n\n          case 0x2A:\n            // *\n            index += 2;\n            return {\n              type: TokenPunctuator,\n              value: String.fromCharCode(code) + String.fromCharCode(code2),\n              start: start,\n              end: index\n            };\n\n          case 0x21: // !\n\n          case 0x3D:\n            // =\n            index += 2; // !== and ===\n\n            if (source.charCodeAt(index) === 0x3D) {\n              ++index;\n            }\n\n            return {\n              type: TokenPunctuator,\n              value: source.slice(start, index),\n              start: start,\n              end: index\n            };\n        }\n      }\n\n  } // 4-character punctuator: >>>=\n\n\n  ch4 = source.substr(index, 4);\n\n  if (ch4 === '>>>=') {\n    index += 4;\n    return {\n      type: TokenPunctuator,\n      value: ch4,\n      start: start,\n      end: index\n    };\n  } // 3-character punctuators: === !== >>> <<= >>=\n\n\n  ch3 = ch4.substr(0, 3);\n\n  if (ch3 === '>>>' || ch3 === '<<=' || ch3 === '>>=') {\n    index += 3;\n    return {\n      type: TokenPunctuator,\n      value: ch3,\n      start: start,\n      end: index\n    };\n  } // Other 2-character punctuators: ++ -- << >> && ||\n\n\n  ch2 = ch3.substr(0, 2);\n\n  if (ch1 === ch2[1] && '+-<>&|'.indexOf(ch1) >= 0 || ch2 === '=>') {\n    index += 2;\n    return {\n      type: TokenPunctuator,\n      value: ch2,\n      start: start,\n      end: index\n    };\n  }\n\n  if (ch2 === '//') {\n    throwError({}, MessageUnexpectedToken, ILLEGAL);\n  } // 1-character punctuators: < > = ! + - * % & | ^ /\n\n\n  if ('<>=!+-*%&|^/'.indexOf(ch1) >= 0) {\n    ++index;\n    return {\n      type: TokenPunctuator,\n      value: ch1,\n      start: start,\n      end: index\n    };\n  }\n\n  throwError({}, MessageUnexpectedToken, ILLEGAL);\n} // 7.8.3 Numeric Literals\n\n\nfunction scanHexLiteral(start) {\n  let number = '';\n\n  while (index < length) {\n    if (!isHexDigit(source[index])) {\n      break;\n    }\n\n    number += source[index++];\n  }\n\n  if (number.length === 0) {\n    throwError({}, MessageUnexpectedToken, ILLEGAL);\n  }\n\n  if (isIdentifierStart(source.charCodeAt(index))) {\n    throwError({}, MessageUnexpectedToken, ILLEGAL);\n  }\n\n  return {\n    type: TokenNumericLiteral,\n    value: parseInt('0x' + number, 16),\n    start: start,\n    end: index\n  };\n}\n\nfunction scanOctalLiteral(start) {\n  let number = '0' + source[index++];\n\n  while (index < length) {\n    if (!isOctalDigit(source[index])) {\n      break;\n    }\n\n    number += source[index++];\n  }\n\n  if (isIdentifierStart(source.charCodeAt(index)) || isDecimalDigit(source.charCodeAt(index))) {\n    throwError({}, MessageUnexpectedToken, ILLEGAL);\n  }\n\n  return {\n    type: TokenNumericLiteral,\n    value: parseInt(number, 8),\n    octal: true,\n    start: start,\n    end: index\n  };\n}\n\nfunction scanNumericLiteral() {\n  var number, start, ch;\n  ch = source[index];\n  assert(isDecimalDigit(ch.charCodeAt(0)) || ch === '.', 'Numeric literal must start with a decimal digit or a decimal point');\n  start = index;\n  number = '';\n\n  if (ch !== '.') {\n    number = source[index++];\n    ch = source[index]; // Hex number starts with '0x'.\n    // Octal number starts with '0'.\n\n    if (number === '0') {\n      if (ch === 'x' || ch === 'X') {\n        ++index;\n        return scanHexLiteral(start);\n      }\n\n      if (isOctalDigit(ch)) {\n        return scanOctalLiteral(start);\n      } // decimal number starts with '0' such as '09' is illegal.\n\n\n      if (ch && isDecimalDigit(ch.charCodeAt(0))) {\n        throwError({}, MessageUnexpectedToken, ILLEGAL);\n      }\n    }\n\n    while (isDecimalDigit(source.charCodeAt(index))) {\n      number += source[index++];\n    }\n\n    ch = source[index];\n  }\n\n  if (ch === '.') {\n    number += source[index++];\n\n    while (isDecimalDigit(source.charCodeAt(index))) {\n      number += source[index++];\n    }\n\n    ch = source[index];\n  }\n\n  if (ch === 'e' || ch === 'E') {\n    number += source[index++];\n    ch = source[index];\n\n    if (ch === '+' || ch === '-') {\n      number += source[index++];\n    }\n\n    if (isDecimalDigit(source.charCodeAt(index))) {\n      while (isDecimalDigit(source.charCodeAt(index))) {\n        number += source[index++];\n      }\n    } else {\n      throwError({}, MessageUnexpectedToken, ILLEGAL);\n    }\n  }\n\n  if (isIdentifierStart(source.charCodeAt(index))) {\n    throwError({}, MessageUnexpectedToken, ILLEGAL);\n  }\n\n  return {\n    type: TokenNumericLiteral,\n    value: parseFloat(number),\n    start: start,\n    end: index\n  };\n} // 7.8.4 String Literals\n\n\nfunction scanStringLiteral() {\n  var str = '',\n      quote,\n      start,\n      ch,\n      code,\n      octal = false;\n  quote = source[index];\n  assert(quote === '\\'' || quote === '\"', 'String literal must starts with a quote');\n  start = index;\n  ++index;\n\n  while (index < length) {\n    ch = source[index++];\n\n    if (ch === quote) {\n      quote = '';\n      break;\n    } else if (ch === '\\\\') {\n      ch = source[index++];\n\n      if (!ch || !isLineTerminator(ch.charCodeAt(0))) {\n        switch (ch) {\n          case 'u':\n          case 'x':\n            if (source[index] === '{') {\n              ++index;\n              str += scanUnicodeCodePointEscape();\n            } else {\n              str += scanHexEscape(ch);\n            }\n\n            break;\n\n          case 'n':\n            str += '\\n';\n            break;\n\n          case 'r':\n            str += '\\r';\n            break;\n\n          case 't':\n            str += '\\t';\n            break;\n\n          case 'b':\n            str += '\\b';\n            break;\n\n          case 'f':\n            str += '\\f';\n            break;\n\n          case 'v':\n            str += '\\x0B';\n            break;\n\n          default:\n            if (isOctalDigit(ch)) {\n              code = '01234567'.indexOf(ch); // \\0 is not octal escape sequence\n\n              if (code !== 0) {\n                octal = true;\n              }\n\n              if (index < length && isOctalDigit(source[index])) {\n                octal = true;\n                code = code * 8 + '01234567'.indexOf(source[index++]); // 3 digits are only allowed when string starts\n                // with 0, 1, 2, 3\n\n                if ('0123'.indexOf(ch) >= 0 && index < length && isOctalDigit(source[index])) {\n                  code = code * 8 + '01234567'.indexOf(source[index++]);\n                }\n              }\n\n              str += String.fromCharCode(code);\n            } else {\n              str += ch;\n            }\n\n            break;\n        }\n      } else {\n        if (ch === '\\r' && source[index] === '\\n') {\n          ++index;\n        }\n      }\n    } else if (isLineTerminator(ch.charCodeAt(0))) {\n      break;\n    } else {\n      str += ch;\n    }\n  }\n\n  if (quote !== '') {\n    throwError({}, MessageUnexpectedToken, ILLEGAL);\n  }\n\n  return {\n    type: TokenStringLiteral,\n    value: str,\n    octal: octal,\n    start: start,\n    end: index\n  };\n}\n\nfunction testRegExp(pattern, flags) {\n  let tmp = pattern;\n\n  if (flags.indexOf('u') >= 0) {\n    // Replace each astral symbol and every Unicode code point\n    // escape sequence with a single ASCII symbol to avoid throwing on\n    // regular expressions that are only valid in combination with the\n    // `/u` flag.\n    // Note: replacing with the ASCII symbol `x` might cause false\n    // negatives in unlikely scenarios. For example, `[\\u{61}-b]` is a\n    // perfectly valid pattern that is equivalent to `[a-b]`, but it\n    // would be replaced by `[x-b]` which throws an error.\n    tmp = tmp.replace(/\\\\u\\{([0-9a-fA-F]+)\\}/g, ($0, $1) => {\n      if (parseInt($1, 16) <= 0x10FFFF) {\n        return 'x';\n      }\n\n      throwError({}, MessageInvalidRegExp);\n    }).replace(/[\\uD800-\\uDBFF][\\uDC00-\\uDFFF]/g, 'x');\n  } // First, detect invalid regular expressions.\n\n\n  try {\n    new RegExp(tmp);\n  } catch (e) {\n    throwError({}, MessageInvalidRegExp);\n  } // Return a regular expression object for this pattern-flag pair, or\n  // `null` in case the current environment doesn't support the flags it\n  // uses.\n\n\n  try {\n    return new RegExp(pattern, flags);\n  } catch (exception) {\n    return null;\n  }\n}\n\nfunction scanRegExpBody() {\n  var ch, str, classMarker, terminated, body;\n  ch = source[index];\n  assert(ch === '/', 'Regular expression literal must start with a slash');\n  str = source[index++];\n  classMarker = false;\n  terminated = false;\n\n  while (index < length) {\n    ch = source[index++];\n    str += ch;\n\n    if (ch === '\\\\') {\n      ch = source[index++]; // ECMA-262 7.8.5\n\n      if (isLineTerminator(ch.charCodeAt(0))) {\n        throwError({}, MessageUnterminatedRegExp);\n      }\n\n      str += ch;\n    } else if (isLineTerminator(ch.charCodeAt(0))) {\n      throwError({}, MessageUnterminatedRegExp);\n    } else if (classMarker) {\n      if (ch === ']') {\n        classMarker = false;\n      }\n    } else {\n      if (ch === '/') {\n        terminated = true;\n        break;\n      } else if (ch === '[') {\n        classMarker = true;\n      }\n    }\n  }\n\n  if (!terminated) {\n    throwError({}, MessageUnterminatedRegExp);\n  } // Exclude leading and trailing slash.\n\n\n  body = str.substr(1, str.length - 2);\n  return {\n    value: body,\n    literal: str\n  };\n}\n\nfunction scanRegExpFlags() {\n  var ch, str, flags;\n  str = '';\n  flags = '';\n\n  while (index < length) {\n    ch = source[index];\n\n    if (!isIdentifierPart(ch.charCodeAt(0))) {\n      break;\n    }\n\n    ++index;\n\n    if (ch === '\\\\' && index < length) {\n      throwError({}, MessageUnexpectedToken, ILLEGAL);\n    } else {\n      flags += ch;\n      str += ch;\n    }\n  }\n\n  if (flags.search(/[^gimuy]/g) >= 0) {\n    throwError({}, MessageInvalidRegExp, flags);\n  }\n\n  return {\n    value: flags,\n    literal: str\n  };\n}\n\nfunction scanRegExp() {\n  var start, body, flags, value;\n  lookahead = null;\n  skipComment();\n  start = index;\n  body = scanRegExpBody();\n  flags = scanRegExpFlags();\n  value = testRegExp(body.value, flags.value);\n  return {\n    literal: body.literal + flags.literal,\n    value: value,\n    regex: {\n      pattern: body.value,\n      flags: flags.value\n    },\n    start: start,\n    end: index\n  };\n}\n\nfunction isIdentifierName(token) {\n  return token.type === TokenIdentifier || token.type === TokenKeyword || token.type === TokenBooleanLiteral || token.type === TokenNullLiteral;\n}\n\nfunction advance() {\n  skipComment();\n\n  if (index >= length) {\n    return {\n      type: TokenEOF,\n      start: index,\n      end: index\n    };\n  }\n\n  const ch = source.charCodeAt(index);\n\n  if (isIdentifierStart(ch)) {\n    return scanIdentifier();\n  } // Very common: ( and ) and ;\n\n\n  if (ch === 0x28 || ch === 0x29 || ch === 0x3B) {\n    return scanPunctuator();\n  } // String literal starts with single quote (U+0027) or double quote (U+0022).\n\n\n  if (ch === 0x27 || ch === 0x22) {\n    return scanStringLiteral();\n  } // Dot (.) U+002E can also start a floating-point number, hence the need\n  // to check the next character.\n\n\n  if (ch === 0x2E) {\n    if (isDecimalDigit(source.charCodeAt(index + 1))) {\n      return scanNumericLiteral();\n    }\n\n    return scanPunctuator();\n  }\n\n  if (isDecimalDigit(ch)) {\n    return scanNumericLiteral();\n  }\n\n  return scanPunctuator();\n}\n\nfunction lex() {\n  const token = lookahead;\n  index = token.end;\n  lookahead = advance();\n  index = token.end;\n  return token;\n}\n\nfunction peek() {\n  const pos = index;\n  lookahead = advance();\n  index = pos;\n}\n\nfunction finishArrayExpression(elements) {\n  const node = new ASTNode(SyntaxArrayExpression);\n  node.elements = elements;\n  return node;\n}\n\nfunction finishBinaryExpression(operator, left, right) {\n  const node = new ASTNode(operator === '||' || operator === '&&' ? SyntaxLogicalExpression : SyntaxBinaryExpression);\n  node.operator = operator;\n  node.left = left;\n  node.right = right;\n  return node;\n}\n\nfunction finishCallExpression(callee, args) {\n  const node = new ASTNode(SyntaxCallExpression);\n  node.callee = callee;\n  node.arguments = args;\n  return node;\n}\n\nfunction finishConditionalExpression(test, consequent, alternate) {\n  const node = new ASTNode(SyntaxConditionalExpression);\n  node.test = test;\n  node.consequent = consequent;\n  node.alternate = alternate;\n  return node;\n}\n\nfunction finishIdentifier(name) {\n  const node = new ASTNode(SyntaxIdentifier);\n  node.name = name;\n  return node;\n}\n\nfunction finishLiteral(token) {\n  const node = new ASTNode(SyntaxLiteral);\n  node.value = token.value;\n  node.raw = source.slice(token.start, token.end);\n\n  if (token.regex) {\n    if (node.raw === '//') {\n      node.raw = '/(?:)/';\n    }\n\n    node.regex = token.regex;\n  }\n\n  return node;\n}\n\nfunction finishMemberExpression(accessor, object, property) {\n  const node = new ASTNode(SyntaxMemberExpression);\n  node.computed = accessor === '[';\n  node.object = object;\n  node.property = property;\n  if (!node.computed) property.member = true;\n  return node;\n}\n\nfunction finishObjectExpression(properties) {\n  const node = new ASTNode(SyntaxObjectExpression);\n  node.properties = properties;\n  return node;\n}\n\nfunction finishProperty(kind, key, value) {\n  const node = new ASTNode(SyntaxProperty);\n  node.key = key;\n  node.value = value;\n  node.kind = kind;\n  return node;\n}\n\nfunction finishUnaryExpression(operator, argument) {\n  const node = new ASTNode(SyntaxUnaryExpression);\n  node.operator = operator;\n  node.argument = argument;\n  node.prefix = true;\n  return node;\n} // Throw an exception\n\n\nfunction throwError(token, messageFormat) {\n  var error,\n      args = Array.prototype.slice.call(arguments, 2),\n      msg = messageFormat.replace(/%(\\d)/g, (whole, index) => {\n    assert(index < args.length, 'Message reference must be in range');\n    return args[index];\n  });\n  error = new Error(msg);\n  error.index = index;\n  error.description = msg;\n  throw error;\n} // Throw an exception because of the token.\n\n\nfunction throwUnexpected(token) {\n  if (token.type === TokenEOF) {\n    throwError(token, MessageUnexpectedEOS);\n  }\n\n  if (token.type === TokenNumericLiteral) {\n    throwError(token, MessageUnexpectedNumber);\n  }\n\n  if (token.type === TokenStringLiteral) {\n    throwError(token, MessageUnexpectedString);\n  }\n\n  if (token.type === TokenIdentifier) {\n    throwError(token, MessageUnexpectedIdentifier);\n  }\n\n  if (token.type === TokenKeyword) {\n    throwError(token, MessageUnexpectedReserved);\n  } // BooleanLiteral, NullLiteral, or Punctuator.\n\n\n  throwError(token, MessageUnexpectedToken, token.value);\n} // Expect the next token to match the specified punctuator.\n// If not, an exception will be thrown.\n\n\nfunction expect(value) {\n  const token = lex();\n\n  if (token.type !== TokenPunctuator || token.value !== value) {\n    throwUnexpected(token);\n  }\n} // Return true if the next token matches the specified punctuator.\n\n\nfunction match(value) {\n  return lookahead.type === TokenPunctuator && lookahead.value === value;\n} // Return true if the next token matches the specified keyword\n\n\nfunction matchKeyword(keyword) {\n  return lookahead.type === TokenKeyword && lookahead.value === keyword;\n} // 11.1.4 Array Initialiser\n\n\nfunction parseArrayInitialiser() {\n  const elements = [];\n  index = lookahead.start;\n  expect('[');\n\n  while (!match(']')) {\n    if (match(',')) {\n      lex();\n      elements.push(null);\n    } else {\n      elements.push(parseConditionalExpression());\n\n      if (!match(']')) {\n        expect(',');\n      }\n    }\n  }\n\n  lex();\n  return finishArrayExpression(elements);\n} // 11.1.5 Object Initialiser\n\n\nfunction parseObjectPropertyKey() {\n  index = lookahead.start;\n  const token = lex(); // Note: This function is called only from parseObjectProperty(), where\n  // EOF and Punctuator tokens are already filtered out.\n\n  if (token.type === TokenStringLiteral || token.type === TokenNumericLiteral) {\n    if (token.octal) {\n      throwError(token, MessageStrictOctalLiteral);\n    }\n\n    return finishLiteral(token);\n  }\n\n  return finishIdentifier(token.value);\n}\n\nfunction parseObjectProperty() {\n  var token, key, id, value;\n  index = lookahead.start;\n  token = lookahead;\n\n  if (token.type === TokenIdentifier) {\n    id = parseObjectPropertyKey();\n    expect(':');\n    value = parseConditionalExpression();\n    return finishProperty('init', id, value);\n  }\n\n  if (token.type === TokenEOF || token.type === TokenPunctuator) {\n    throwUnexpected(token);\n  } else {\n    key = parseObjectPropertyKey();\n    expect(':');\n    value = parseConditionalExpression();\n    return finishProperty('init', key, value);\n  }\n}\n\nfunction parseObjectInitialiser() {\n  var properties = [],\n      property,\n      name,\n      key,\n      map = {},\n      toString = String;\n  index = lookahead.start;\n  expect('{');\n\n  while (!match('}')) {\n    property = parseObjectProperty();\n\n    if (property.key.type === SyntaxIdentifier) {\n      name = property.key.name;\n    } else {\n      name = toString(property.key.value);\n    }\n\n    key = '$' + name;\n\n    if (Object.prototype.hasOwnProperty.call(map, key)) {\n      throwError({}, MessageStrictDuplicateProperty);\n    } else {\n      map[key] = true;\n    }\n\n    properties.push(property);\n\n    if (!match('}')) {\n      expect(',');\n    }\n  }\n\n  expect('}');\n  return finishObjectExpression(properties);\n} // 11.1.6 The Grouping Operator\n\n\nfunction parseGroupExpression() {\n  expect('(');\n  const expr = parseExpression();\n  expect(')');\n  return expr;\n} // 11.1 Primary Expressions\n\n\nconst legalKeywords = {\n  'if': 1\n};\n\nfunction parsePrimaryExpression() {\n  var type, token, expr;\n\n  if (match('(')) {\n    return parseGroupExpression();\n  }\n\n  if (match('[')) {\n    return parseArrayInitialiser();\n  }\n\n  if (match('{')) {\n    return parseObjectInitialiser();\n  }\n\n  type = lookahead.type;\n  index = lookahead.start;\n\n  if (type === TokenIdentifier || legalKeywords[lookahead.value]) {\n    expr = finishIdentifier(lex().value);\n  } else if (type === TokenStringLiteral || type === TokenNumericLiteral) {\n    if (lookahead.octal) {\n      throwError(lookahead, MessageStrictOctalLiteral);\n    }\n\n    expr = finishLiteral(lex());\n  } else if (type === TokenKeyword) {\n    throw new Error(DISABLED);\n  } else if (type === TokenBooleanLiteral) {\n    token = lex();\n    token.value = token.value === 'true';\n    expr = finishLiteral(token);\n  } else if (type === TokenNullLiteral) {\n    token = lex();\n    token.value = null;\n    expr = finishLiteral(token);\n  } else if (match('/') || match('/=')) {\n    expr = finishLiteral(scanRegExp());\n    peek();\n  } else {\n    throwUnexpected(lex());\n  }\n\n  return expr;\n} // 11.2 Left-Hand-Side Expressions\n\n\nfunction parseArguments() {\n  const args = [];\n  expect('(');\n\n  if (!match(')')) {\n    while (index < length) {\n      args.push(parseConditionalExpression());\n\n      if (match(')')) {\n        break;\n      }\n\n      expect(',');\n    }\n  }\n\n  expect(')');\n  return args;\n}\n\nfunction parseNonComputedProperty() {\n  index = lookahead.start;\n  const token = lex();\n\n  if (!isIdentifierName(token)) {\n    throwUnexpected(token);\n  }\n\n  return finishIdentifier(token.value);\n}\n\nfunction parseNonComputedMember() {\n  expect('.');\n  return parseNonComputedProperty();\n}\n\nfunction parseComputedMember() {\n  expect('[');\n  const expr = parseExpression();\n  expect(']');\n  return expr;\n}\n\nfunction parseLeftHandSideExpressionAllowCall() {\n  var expr, args, property;\n  expr = parsePrimaryExpression();\n\n  for (;;) {\n    if (match('.')) {\n      property = parseNonComputedMember();\n      expr = finishMemberExpression('.', expr, property);\n    } else if (match('(')) {\n      args = parseArguments();\n      expr = finishCallExpression(expr, args);\n    } else if (match('[')) {\n      property = parseComputedMember();\n      expr = finishMemberExpression('[', expr, property);\n    } else {\n      break;\n    }\n  }\n\n  return expr;\n} // 11.3 Postfix Expressions\n\n\nfunction parsePostfixExpression() {\n  const expr = parseLeftHandSideExpressionAllowCall();\n\n  if (lookahead.type === TokenPunctuator) {\n    if (match('++') || match('--')) {\n      throw new Error(DISABLED);\n    }\n  }\n\n  return expr;\n} // 11.4 Unary Operators\n\n\nfunction parseUnaryExpression() {\n  var token, expr;\n\n  if (lookahead.type !== TokenPunctuator && lookahead.type !== TokenKeyword) {\n    expr = parsePostfixExpression();\n  } else if (match('++') || match('--')) {\n    throw new Error(DISABLED);\n  } else if (match('+') || match('-') || match('~') || match('!')) {\n    token = lex();\n    expr = parseUnaryExpression();\n    expr = finishUnaryExpression(token.value, expr);\n  } else if (matchKeyword('delete') || matchKeyword('void') || matchKeyword('typeof')) {\n    throw new Error(DISABLED);\n  } else {\n    expr = parsePostfixExpression();\n  }\n\n  return expr;\n}\n\nfunction binaryPrecedence(token) {\n  let prec = 0;\n\n  if (token.type !== TokenPunctuator && token.type !== TokenKeyword) {\n    return 0;\n  }\n\n  switch (token.value) {\n    case '||':\n      prec = 1;\n      break;\n\n    case '&&':\n      prec = 2;\n      break;\n\n    case '|':\n      prec = 3;\n      break;\n\n    case '^':\n      prec = 4;\n      break;\n\n    case '&':\n      prec = 5;\n      break;\n\n    case '==':\n    case '!=':\n    case '===':\n    case '!==':\n      prec = 6;\n      break;\n\n    case '<':\n    case '>':\n    case '<=':\n    case '>=':\n    case 'instanceof':\n    case 'in':\n      prec = 7;\n      break;\n\n    case '<<':\n    case '>>':\n    case '>>>':\n      prec = 8;\n      break;\n\n    case '+':\n    case '-':\n      prec = 9;\n      break;\n\n    case '*':\n    case '/':\n    case '%':\n      prec = 11;\n      break;\n  }\n\n  return prec;\n} // 11.5 Multiplicative Operators\n// 11.6 Additive Operators\n// 11.7 Bitwise Shift Operators\n// 11.8 Relational Operators\n// 11.9 Equality Operators\n// 11.10 Binary Bitwise Operators\n// 11.11 Binary Logical Operators\n\n\nfunction parseBinaryExpression() {\n  var marker, markers, expr, token, prec, stack, right, operator, left, i;\n  marker = lookahead;\n  left = parseUnaryExpression();\n  token = lookahead;\n  prec = binaryPrecedence(token);\n\n  if (prec === 0) {\n    return left;\n  }\n\n  token.prec = prec;\n  lex();\n  markers = [marker, lookahead];\n  right = parseUnaryExpression();\n  stack = [left, token, right];\n\n  while ((prec = binaryPrecedence(lookahead)) > 0) {\n    // Reduce: make a binary expression from the three topmost entries.\n    while (stack.length > 2 && prec <= stack[stack.length - 2].prec) {\n      right = stack.pop();\n      operator = stack.pop().value;\n      left = stack.pop();\n      markers.pop();\n      expr = finishBinaryExpression(operator, left, right);\n      stack.push(expr);\n    } // Shift.\n\n\n    token = lex();\n    token.prec = prec;\n    stack.push(token);\n    markers.push(lookahead);\n    expr = parseUnaryExpression();\n    stack.push(expr);\n  } // Final reduce to clean-up the stack.\n\n\n  i = stack.length - 1;\n  expr = stack[i];\n  markers.pop();\n\n  while (i > 1) {\n    markers.pop();\n    expr = finishBinaryExpression(stack[i - 1].value, stack[i - 2], expr);\n    i -= 2;\n  }\n\n  return expr;\n} // 11.12 Conditional Operator\n\n\nfunction parseConditionalExpression() {\n  var expr, consequent, alternate;\n  expr = parseBinaryExpression();\n\n  if (match('?')) {\n    lex();\n    consequent = parseConditionalExpression();\n    expect(':');\n    alternate = parseConditionalExpression();\n    expr = finishConditionalExpression(expr, consequent, alternate);\n  }\n\n  return expr;\n} // 11.14 Comma Operator\n\n\nfunction parseExpression() {\n  const expr = parseConditionalExpression();\n\n  if (match(',')) {\n    throw new Error(DISABLED); // no sequence expressions\n  }\n\n  return expr;\n}\n\nfunction parser (code) {\n  source = code;\n  index = 0;\n  length = source.length;\n  lookahead = null;\n  peek();\n  const expr = parseExpression();\n\n  if (lookahead.type !== TokenEOF) {\n    throw new Error('Unexpect token after expression.');\n  }\n\n  return expr;\n}\n\nvar Constants = {\n  NaN: 'NaN',\n  E: 'Math.E',\n  LN2: 'Math.LN2',\n  LN10: 'Math.LN10',\n  LOG2E: 'Math.LOG2E',\n  LOG10E: 'Math.LOG10E',\n  PI: 'Math.PI',\n  SQRT1_2: 'Math.SQRT1_2',\n  SQRT2: 'Math.SQRT2',\n  MIN_VALUE: 'Number.MIN_VALUE',\n  MAX_VALUE: 'Number.MAX_VALUE'\n};\n\nfunction Functions (codegen) {\n  function fncall(name, args, cast, type) {\n    let obj = codegen(args[0]);\n\n    if (cast) {\n      obj = cast + '(' + obj + ')';\n      if (cast.lastIndexOf('new ', 0) === 0) obj = '(' + obj + ')';\n    }\n\n    return obj + '.' + name + (type < 0 ? '' : type === 0 ? '()' : '(' + args.slice(1).map(codegen).join(',') + ')');\n  }\n\n  function fn(name, cast, type) {\n    return args => fncall(name, args, cast, type);\n  }\n\n  const DATE = 'new Date',\n        STRING = 'String',\n        REGEXP = 'RegExp';\n  return {\n    // MATH functions\n    isNaN: 'Number.isNaN',\n    isFinite: 'Number.isFinite',\n    abs: 'Math.abs',\n    acos: 'Math.acos',\n    asin: 'Math.asin',\n    atan: 'Math.atan',\n    atan2: 'Math.atan2',\n    ceil: 'Math.ceil',\n    cos: 'Math.cos',\n    exp: 'Math.exp',\n    floor: 'Math.floor',\n    log: 'Math.log',\n    max: 'Math.max',\n    min: 'Math.min',\n    pow: 'Math.pow',\n    random: 'Math.random',\n    round: 'Math.round',\n    sin: 'Math.sin',\n    sqrt: 'Math.sqrt',\n    tan: 'Math.tan',\n    clamp: function (args) {\n      if (args.length < 3) Object(vega_util__WEBPACK_IMPORTED_MODULE_0__[\"error\"])('Missing arguments to clamp function.');\n      if (args.length > 3) Object(vega_util__WEBPACK_IMPORTED_MODULE_0__[\"error\"])('Too many arguments to clamp function.');\n      const a = args.map(codegen);\n      return 'Math.max(' + a[1] + ', Math.min(' + a[2] + ',' + a[0] + '))';\n    },\n    // DATE functions\n    now: 'Date.now',\n    utc: 'Date.UTC',\n    datetime: DATE,\n    date: fn('getDate', DATE, 0),\n    day: fn('getDay', DATE, 0),\n    year: fn('getFullYear', DATE, 0),\n    month: fn('getMonth', DATE, 0),\n    hours: fn('getHours', DATE, 0),\n    minutes: fn('getMinutes', DATE, 0),\n    seconds: fn('getSeconds', DATE, 0),\n    milliseconds: fn('getMilliseconds', DATE, 0),\n    time: fn('getTime', DATE, 0),\n    timezoneoffset: fn('getTimezoneOffset', DATE, 0),\n    utcdate: fn('getUTCDate', DATE, 0),\n    utcday: fn('getUTCDay', DATE, 0),\n    utcyear: fn('getUTCFullYear', DATE, 0),\n    utcmonth: fn('getUTCMonth', DATE, 0),\n    utchours: fn('getUTCHours', DATE, 0),\n    utcminutes: fn('getUTCMinutes', DATE, 0),\n    utcseconds: fn('getUTCSeconds', DATE, 0),\n    utcmilliseconds: fn('getUTCMilliseconds', DATE, 0),\n    // sequence functions\n    length: fn('length', null, -1),\n    // STRING functions\n    parseFloat: 'parseFloat',\n    parseInt: 'parseInt',\n    upper: fn('toUpperCase', STRING, 0),\n    lower: fn('toLowerCase', STRING, 0),\n    substring: fn('substring', STRING),\n    split: fn('split', STRING),\n    trim: fn('trim', STRING, 0),\n    // REGEXP functions\n    regexp: REGEXP,\n    test: fn('test', REGEXP),\n    // Control Flow functions\n    if: function (args) {\n      if (args.length < 3) Object(vega_util__WEBPACK_IMPORTED_MODULE_0__[\"error\"])('Missing arguments to if function.');\n      if (args.length > 3) Object(vega_util__WEBPACK_IMPORTED_MODULE_0__[\"error\"])('Too many arguments to if function.');\n      const a = args.map(codegen);\n      return '(' + a[0] + '?' + a[1] + ':' + a[2] + ')';\n    }\n  };\n}\n\nfunction stripQuotes(s) {\n  const n = s && s.length - 1;\n  return n && (s[0] === '\"' && s[n] === '\"' || s[0] === '\\'' && s[n] === '\\'') ? s.slice(1, -1) : s;\n}\n\nfunction codegen (opt) {\n  opt = opt || {};\n  const allowed = opt.allowed ? Object(vega_util__WEBPACK_IMPORTED_MODULE_0__[\"toSet\"])(opt.allowed) : {},\n        forbidden = opt.forbidden ? Object(vega_util__WEBPACK_IMPORTED_MODULE_0__[\"toSet\"])(opt.forbidden) : {},\n        constants = opt.constants || Constants,\n        functions = (opt.functions || Functions)(visit),\n        globalvar = opt.globalvar,\n        fieldvar = opt.fieldvar,\n        outputGlobal = Object(vega_util__WEBPACK_IMPORTED_MODULE_0__[\"isFunction\"])(globalvar) ? globalvar : id => \"\".concat(globalvar, \"[\\\"\").concat(id, \"\\\"]\");\n  let globals = {},\n      fields = {},\n      memberDepth = 0;\n\n  function visit(ast) {\n    if (Object(vega_util__WEBPACK_IMPORTED_MODULE_0__[\"isString\"])(ast)) return ast;\n    const generator = Generators[ast.type];\n    if (generator == null) Object(vega_util__WEBPACK_IMPORTED_MODULE_0__[\"error\"])('Unsupported type: ' + ast.type);\n    return generator(ast);\n  }\n\n  const Generators = {\n    Literal: n => n.raw,\n    Identifier: n => {\n      const id = n.name;\n\n      if (memberDepth > 0) {\n        return id;\n      } else if (Object(vega_util__WEBPACK_IMPORTED_MODULE_0__[\"hasOwnProperty\"])(forbidden, id)) {\n        return Object(vega_util__WEBPACK_IMPORTED_MODULE_0__[\"error\"])('Illegal identifier: ' + id);\n      } else if (Object(vega_util__WEBPACK_IMPORTED_MODULE_0__[\"hasOwnProperty\"])(constants, id)) {\n        return constants[id];\n      } else if (Object(vega_util__WEBPACK_IMPORTED_MODULE_0__[\"hasOwnProperty\"])(allowed, id)) {\n        return id;\n      } else {\n        globals[id] = 1;\n        return outputGlobal(id);\n      }\n    },\n    MemberExpression: n => {\n      const d = !n.computed,\n            o = visit(n.object);\n      if (d) memberDepth += 1;\n      const p = visit(n.property);\n\n      if (o === fieldvar) {\n        // strip quotes to sanitize field name (#1653)\n        fields[stripQuotes(p)] = 1;\n      }\n\n      if (d) memberDepth -= 1;\n      return o + (d ? '.' + p : '[' + p + ']');\n    },\n    CallExpression: n => {\n      if (n.callee.type !== 'Identifier') {\n        Object(vega_util__WEBPACK_IMPORTED_MODULE_0__[\"error\"])('Illegal callee type: ' + n.callee.type);\n      }\n\n      const callee = n.callee.name,\n            args = n.arguments,\n            fn = Object(vega_util__WEBPACK_IMPORTED_MODULE_0__[\"hasOwnProperty\"])(functions, callee) && functions[callee];\n      if (!fn) Object(vega_util__WEBPACK_IMPORTED_MODULE_0__[\"error\"])('Unrecognized function: ' + callee);\n      return Object(vega_util__WEBPACK_IMPORTED_MODULE_0__[\"isFunction\"])(fn) ? fn(args) : fn + '(' + args.map(visit).join(',') + ')';\n    },\n    ArrayExpression: n => '[' + n.elements.map(visit).join(',') + ']',\n    BinaryExpression: n => '(' + visit(n.left) + ' ' + n.operator + ' ' + visit(n.right) + ')',\n    UnaryExpression: n => '(' + n.operator + visit(n.argument) + ')',\n    ConditionalExpression: n => '(' + visit(n.test) + '?' + visit(n.consequent) + ':' + visit(n.alternate) + ')',\n    LogicalExpression: n => '(' + visit(n.left) + n.operator + visit(n.right) + ')',\n    ObjectExpression: n => '{' + n.properties.map(visit).join(',') + '}',\n    Property: n => {\n      memberDepth += 1;\n      const k = visit(n.key);\n      memberDepth -= 1;\n      return k + ':' + visit(n.value);\n    }\n  };\n\n  function codegen(ast) {\n    const result = {\n      code: visit(ast),\n      globals: Object.keys(globals),\n      fields: Object.keys(fields)\n    };\n    globals = {};\n    fields = {};\n    return result;\n  }\n\n  codegen.functions = functions;\n  codegen.constants = constants;\n  return codegen;\n}\n\n\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,[encoded data, 90272 characters]\n//# sourceURL=webpack-internal:///./node_modules/vega-selections/node_modules/vega-expression/build/vega-expression.module.js\n");

/***/ }),

/***/ "./node_modules/vega-selections/node_modules/vega-util/build/vega-util.module.js":
/*!***************************************************************************************!*\
  !*** ./node_modules/vega-selections/node_modules/vega-util/build/vega-util.module.js ***!
  \***************************************************************************************/
/*! exports provided: Debug, Error, Info, None, Warn, accessor, accessorFields, accessorName, array, ascending, clampRange, compare, constant, debounce, error, extend, extent, extentIndex, falsy, fastmap, field, flush, hasOwnProperty, id, identity, inherits, inrange, isArray, isBoolean, isDate, isFunction, isIterable, isNumber, isObject, isRegExp, isString, key, lerp, logger, lruCache, merge, mergeConfig, one, pad, panLinear, panLog, panPow, panSymlog, peek, quarter, repeat, span, splitAccessPath, stringValue, toBoolean, toDate, toNumber, toSet, toString, truncate, truthy, utcquarter, visitArray, writeConfig, zero, zoomLinear, zoomLog, zoomPow, zoomSymlog */
/***/ (function(module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"Debug\", function() { return Debug; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"Error\", function() { return Error$1; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"Info\", function() { return Info; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"None\", function() { return None; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"Warn\", function() { return Warn; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"accessor\", function() { return accessor; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"accessorFields\", function() { return accessorFields; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"accessorName\", function() { return accessorName; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"array\", function() { return array; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"ascending\", function() { return ascending; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"clampRange\", function() { return clampRange; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"compare\", function() { return compare; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"constant\", function() { return constant; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"debounce\", function() { return debounce; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"error\", function() { return error; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"extend\", function() { return extend; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"extent\", function() { return extent; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"extentIndex\", function() { return extentIndex; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"falsy\", function() { return falsy; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"fastmap\", function() { return fastmap; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"field\", function() { return field; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"flush\", function() { return flush; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"hasOwnProperty\", function() { return has; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"id\", function() { return id; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"identity\", function() { return identity; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"inherits\", function() { return inherits; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"inrange\", function() { return inrange; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"isArray\", function() { return isArray; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"isBoolean\", function() { return isBoolean; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"isDate\", function() { return isDate; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"isFunction\", function() { return isFunction; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"isIterable\", function() { return isIterable; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"isNumber\", function() { return isNumber; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"isObject\", function() { return isObject; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"isRegExp\", function() { return isRegExp; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"isString\", function() { return isString; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"key\", function() { return key; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"lerp\", function() { return lerp; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"logger\", function() { return logger; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"lruCache\", function() { return lruCache; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"merge\", function() { return merge; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"mergeConfig\", function() { return mergeConfig; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"one\", function() { return one; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"pad\", function() { return pad; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"panLinear\", function() { return panLinear; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"panLog\", function() { return panLog; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"panPow\", function() { return panPow; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"panSymlog\", function() { return panSymlog; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"peek\", function() { return peek; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"quarter\", function() { return quarter; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"repeat\", function() { return repeat; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"span\", function() { return span; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"splitAccessPath\", function() { return splitAccessPath; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"stringValue\", function() { return $; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"toBoolean\", function() { return toBoolean; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"toDate\", function() { return toDate; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"toNumber\", function() { return toNumber; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"toSet\", function() { return toSet; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"toString\", function() { return toString; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"truncate\", function() { return truncate; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"truthy\", function() { return truthy; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"utcquarter\", function() { return utcquarter; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"visitArray\", function() { return visitArray; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"writeConfig\", function() { return writeConfig; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"zero\", function() { return zero; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"zoomLinear\", function() { return zoomLinear; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"zoomLog\", function() { return zoomLog; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"zoomPow\", function() { return zoomPow; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"zoomSymlog\", function() { return zoomSymlog; });\nfunction accessor (fn, fields, name) {\n  fn.fields = fields || [];\n  fn.fname = name;\n  return fn;\n}\nfunction accessorName(fn) {\n  return fn == null ? null : fn.fname;\n}\nfunction accessorFields(fn) {\n  return fn == null ? null : fn.fields;\n}\n\nfunction getter (path) {\n  return path.length === 1 ? get1(path[0]) : getN(path);\n}\n\nconst get1 = field => function (obj) {\n  return obj[field];\n};\n\nconst getN = path => {\n  const len = path.length;\n  return function (obj) {\n    for (let i = 0; i < len; ++i) {\n      obj = obj[path[i]];\n    }\n\n    return obj;\n  };\n};\n\nfunction error (message) {\n  throw Error(message);\n}\n\nfunction splitAccessPath (p) {\n  const path = [],\n        n = p.length;\n  let q = null,\n      b = 0,\n      s = '',\n      i,\n      j,\n      c;\n  p = p + '';\n\n  function push() {\n    path.push(s + p.substring(i, j));\n    s = '';\n    i = j + 1;\n  }\n\n  for (i = j = 0; j < n; ++j) {\n    c = p[j];\n\n    if (c === '\\\\') {\n      s += p.substring(i, j);\n      s += p.substring(++j, ++j);\n      i = j;\n    } else if (c === q) {\n      push();\n      q = null;\n      b = -1;\n    } else if (q) {\n      continue;\n    } else if (i === b && c === '\"') {\n      i = j + 1;\n      q = c;\n    } else if (i === b && c === \"'\") {\n      i = j + 1;\n      q = c;\n    } else if (c === '.' && !b) {\n      if (j > i) {\n        push();\n      } else {\n        i = j + 1;\n      }\n    } else if (c === '[') {\n      if (j > i) push();\n      b = i = j + 1;\n    } else if (c === ']') {\n      if (!b) error('Access path missing open bracket: ' + p);\n      if (b > 0) push();\n      b = 0;\n      i = j + 1;\n    }\n  }\n\n  if (b) error('Access path missing closing bracket: ' + p);\n  if (q) error('Access path missing closing quote: ' + p);\n\n  if (j > i) {\n    j++;\n    push();\n  }\n\n  return path;\n}\n\nfunction field (field, name, opt) {\n  const path = splitAccessPath(field);\n  field = path.length === 1 ? path[0] : field;\n  return accessor((opt && opt.get || getter)(path), [field], name || field);\n}\n\nconst id = field('id');\nconst identity = accessor(_ => _, [], 'identity');\nconst zero = accessor(() => 0, [], 'zero');\nconst one = accessor(() => 1, [], 'one');\nconst truthy = accessor(() => true, [], 'true');\nconst falsy = accessor(() => false, [], 'false');\n\nfunction log$1(method, level, input) {\n  const args = [level].concat([].slice.call(input));\n  console[method].apply(console, args); // eslint-disable-line no-console\n}\n\nconst None = 0;\nconst Error$1 = 1;\nconst Warn = 2;\nconst Info = 3;\nconst Debug = 4;\nfunction logger (_, method) {\n  let level = _ || None;\n  return {\n    level(_) {\n      if (arguments.length) {\n        level = +_;\n        return this;\n      } else {\n        return level;\n      }\n    },\n\n    error() {\n      if (level >= Error$1) log$1(method || 'error', 'ERROR', arguments);\n      return this;\n    },\n\n    warn() {\n      if (level >= Warn) log$1(method || 'warn', 'WARN', arguments);\n      return this;\n    },\n\n    info() {\n      if (level >= Info) log$1(method || 'log', 'INFO', arguments);\n      return this;\n    },\n\n    debug() {\n      if (level >= Debug) log$1(method || 'log', 'DEBUG', arguments);\n      return this;\n    }\n\n  };\n}\n\nvar isArray = Array.isArray;\n\nfunction isObject (_) {\n  return _ === Object(_);\n}\n\nconst isLegalKey = key => key !== '__proto__';\n\nfunction mergeConfig(...configs) {\n  return configs.reduce((out, source) => {\n    for (const key in source) {\n      if (key === 'signals') {\n        // for signals, we merge the signals arrays\n        // source signals take precedence over\n        // existing signals with the same name\n        out.signals = mergeNamed(out.signals, source.signals);\n      } else {\n        // otherwise, merge objects subject to recursion constraints\n        // for legend block, recurse for the layout entry only\n        // for style block, recurse for all properties\n        // otherwise, no recursion: objects overwrite, no merging\n        const r = key === 'legend' ? {\n          layout: 1\n        } : key === 'style' ? true : null;\n        writeConfig(out, key, source[key], r);\n      }\n    }\n\n    return out;\n  }, {});\n}\nfunction writeConfig(output, key, value, recurse) {\n  if (!isLegalKey(key)) return;\n  let k, o;\n\n  if (isObject(value) && !isArray(value)) {\n    o = isObject(output[key]) ? output[key] : output[key] = {};\n\n    for (k in value) {\n      if (recurse && (recurse === true || recurse[k])) {\n        writeConfig(o, k, value[k]);\n      } else if (isLegalKey(k)) {\n        o[k] = value[k];\n      }\n    }\n  } else {\n    output[key] = value;\n  }\n}\n\nfunction mergeNamed(a, b) {\n  if (a == null) return b;\n  const map = {},\n        out = [];\n\n  function add(_) {\n    if (!map[_.name]) {\n      map[_.name] = 1;\n      out.push(_);\n    }\n  }\n\n  b.forEach(add);\n  a.forEach(add);\n  return out;\n}\n\nfunction peek (array) {\n  return array[array.length - 1];\n}\n\nfunction toNumber (_) {\n  return _ == null || _ === '' ? null : +_;\n}\n\nconst exp = sign => x => sign * Math.exp(x);\n\nconst log = sign => x => Math.log(sign * x);\n\nconst symlog = c => x => Math.sign(x) * Math.log1p(Math.abs(x / c));\n\nconst symexp = c => x => Math.sign(x) * Math.expm1(Math.abs(x)) * c;\n\nconst pow = exponent => x => x < 0 ? -Math.pow(-x, exponent) : Math.pow(x, exponent);\n\nfunction pan(domain, delta, lift, ground) {\n  const d0 = lift(domain[0]),\n        d1 = lift(peek(domain)),\n        dd = (d1 - d0) * delta;\n  return [ground(d0 - dd), ground(d1 - dd)];\n}\n\nfunction panLinear(domain, delta) {\n  return pan(domain, delta, toNumber, identity);\n}\nfunction panLog(domain, delta) {\n  var sign = Math.sign(domain[0]);\n  return pan(domain, delta, log(sign), exp(sign));\n}\nfunction panPow(domain, delta, exponent) {\n  return pan(domain, delta, pow(exponent), pow(1 / exponent));\n}\nfunction panSymlog(domain, delta, constant) {\n  return pan(domain, delta, symlog(constant), symexp(constant));\n}\n\nfunction zoom(domain, anchor, scale, lift, ground) {\n  const d0 = lift(domain[0]),\n        d1 = lift(peek(domain)),\n        da = anchor != null ? lift(anchor) : (d0 + d1) / 2;\n  return [ground(da + (d0 - da) * scale), ground(da + (d1 - da) * scale)];\n}\n\nfunction zoomLinear(domain, anchor, scale) {\n  return zoom(domain, anchor, scale, toNumber, identity);\n}\nfunction zoomLog(domain, anchor, scale) {\n  const sign = Math.sign(domain[0]);\n  return zoom(domain, anchor, scale, log(sign), exp(sign));\n}\nfunction zoomPow(domain, anchor, scale, exponent) {\n  return zoom(domain, anchor, scale, pow(exponent), pow(1 / exponent));\n}\nfunction zoomSymlog(domain, anchor, scale, constant) {\n  return zoom(domain, anchor, scale, symlog(constant), symexp(constant));\n}\n\nfunction quarter(date) {\n  return 1 + ~~(new Date(date).getMonth() / 3);\n}\nfunction utcquarter(date) {\n  return 1 + ~~(new Date(date).getUTCMonth() / 3);\n}\n\nfunction array (_) {\n  return _ != null ? isArray(_) ? _ : [_] : [];\n}\n\n/**\n * Span-preserving range clamp. If the span of the input range is less\n * than (max - min) and an endpoint exceeds either the min or max value,\n * the range is translated such that the span is preserved and one\n * endpoint touches the boundary of the min/max range.\n * If the span exceeds (max - min), the range [min, max] is returned.\n */\nfunction clampRange (range, min, max) {\n  let lo = range[0],\n      hi = range[1],\n      span;\n\n  if (hi < lo) {\n    span = hi;\n    hi = lo;\n    lo = span;\n  }\n\n  span = hi - lo;\n  return span >= max - min ? [min, max] : [lo = Math.min(Math.max(lo, min), max - span), lo + span];\n}\n\nfunction isFunction (_) {\n  return typeof _ === 'function';\n}\n\nconst DESCENDING = 'descending';\nfunction compare (fields, orders, opt) {\n  opt = opt || {};\n  orders = array(orders) || [];\n  const ord = [],\n        get = [],\n        fmap = {},\n        gen = opt.comparator || comparator;\n  array(fields).forEach((f, i) => {\n    if (f == null) return;\n    ord.push(orders[i] === DESCENDING ? -1 : 1);\n    get.push(f = isFunction(f) ? f : field(f, null, opt));\n    (accessorFields(f) || []).forEach(_ => fmap[_] = 1);\n  });\n  return get.length === 0 ? null : accessor(gen(get, ord), Object.keys(fmap));\n}\nconst ascending = (u, v) => (u < v || u == null) && v != null ? -1 : (u > v || v == null) && u != null ? 1 : (v = v instanceof Date ? +v : v, u = u instanceof Date ? +u : u) !== u && v === v ? -1 : v !== v && u === u ? 1 : 0;\n\nconst comparator = (fields, orders) => fields.length === 1 ? compare1(fields[0], orders[0]) : compareN(fields, orders, fields.length);\n\nconst compare1 = (field, order) => function (a, b) {\n  return ascending(field(a), field(b)) * order;\n};\n\nconst compareN = (fields, orders, n) => {\n  orders.push(0); // pad zero for convenient lookup\n\n  return function (a, b) {\n    let f,\n        c = 0,\n        i = -1;\n\n    while (c === 0 && ++i < n) {\n      f = fields[i];\n      c = ascending(f(a), f(b));\n    }\n\n    return c * orders[i];\n  };\n};\n\nfunction constant (_) {\n  return isFunction(_) ? _ : () => _;\n}\n\nfunction debounce (delay, handler) {\n  let tid;\n  return e => {\n    if (tid) clearTimeout(tid);\n    tid = setTimeout(() => (handler(e), tid = null), delay);\n  };\n}\n\nfunction extend (_) {\n  for (let x, k, i = 1, len = arguments.length; i < len; ++i) {\n    x = arguments[i];\n\n    for (k in x) {\n      _[k] = x[k];\n    }\n  }\n\n  return _;\n}\n\n/**\n * Return an array with minimum and maximum values, in the\n * form [min, max]. Ignores null, undefined, and NaN values.\n */\nfunction extent (array, f) {\n  let i = 0,\n      n,\n      v,\n      min,\n      max;\n\n  if (array && (n = array.length)) {\n    if (f == null) {\n      // find first valid value\n      for (v = array[i]; i < n && (v == null || v !== v); v = array[++i]);\n\n      min = max = v; // visit all other values\n\n      for (; i < n; ++i) {\n        v = array[i]; // skip null/undefined; NaN will fail all comparisons\n\n        if (v != null) {\n          if (v < min) min = v;\n          if (v > max) max = v;\n        }\n      }\n    } else {\n      // find first valid value\n      for (v = f(array[i]); i < n && (v == null || v !== v); v = f(array[++i]));\n\n      min = max = v; // visit all other values\n\n      for (; i < n; ++i) {\n        v = f(array[i]); // skip null/undefined; NaN will fail all comparisons\n\n        if (v != null) {\n          if (v < min) min = v;\n          if (v > max) max = v;\n        }\n      }\n    }\n  }\n\n  return [min, max];\n}\n\nfunction extentIndex (array, f) {\n  const n = array.length;\n  let i = -1,\n      a,\n      b,\n      c,\n      u,\n      v;\n\n  if (f == null) {\n    while (++i < n) {\n      b = array[i];\n\n      if (b != null && b >= b) {\n        a = c = b;\n        break;\n      }\n    }\n\n    if (i === n) return [-1, -1];\n    u = v = i;\n\n    while (++i < n) {\n      b = array[i];\n\n      if (b != null) {\n        if (a > b) {\n          a = b;\n          u = i;\n        }\n\n        if (c < b) {\n          c = b;\n          v = i;\n        }\n      }\n    }\n  } else {\n    while (++i < n) {\n      b = f(array[i], i, array);\n\n      if (b != null && b >= b) {\n        a = c = b;\n        break;\n      }\n    }\n\n    if (i === n) return [-1, -1];\n    u = v = i;\n\n    while (++i < n) {\n      b = f(array[i], i, array);\n\n      if (b != null) {\n        if (a > b) {\n          a = b;\n          u = i;\n        }\n\n        if (c < b) {\n          c = b;\n          v = i;\n        }\n      }\n    }\n  }\n\n  return [u, v];\n}\n\nconst hop = Object.prototype.hasOwnProperty;\nfunction has (object, property) {\n  return hop.call(object, property);\n}\n\nconst NULL = {};\nfunction fastmap (input) {\n  let obj = {},\n      test;\n\n  function has$1(key) {\n    return has(obj, key) && obj[key] !== NULL;\n  }\n\n  const map = {\n    size: 0,\n    empty: 0,\n    object: obj,\n    has: has$1,\n\n    get(key) {\n      return has$1(key) ? obj[key] : undefined;\n    },\n\n    set(key, value) {\n      if (!has$1(key)) {\n        ++map.size;\n        if (obj[key] === NULL) --map.empty;\n      }\n\n      obj[key] = value;\n      return this;\n    },\n\n    delete(key) {\n      if (has$1(key)) {\n        --map.size;\n        ++map.empty;\n        obj[key] = NULL;\n      }\n\n      return this;\n    },\n\n    clear() {\n      map.size = map.empty = 0;\n      map.object = obj = {};\n    },\n\n    test(_) {\n      if (arguments.length) {\n        test = _;\n        return map;\n      } else {\n        return test;\n      }\n    },\n\n    clean() {\n      const next = {};\n      let size = 0;\n\n      for (const key in obj) {\n        const value = obj[key];\n\n        if (value !== NULL && (!test || !test(value))) {\n          next[key] = value;\n          ++size;\n        }\n      }\n\n      map.size = size;\n      map.empty = 0;\n      map.object = obj = next;\n    }\n\n  };\n  if (input) Object.keys(input).forEach(key => {\n    map.set(key, input[key]);\n  });\n  return map;\n}\n\nfunction flush (range, value, threshold, left, right, center) {\n  if (!threshold && threshold !== 0) return center;\n  const t = +threshold;\n  let a = range[0],\n      b = peek(range),\n      l; // swap endpoints if range is reversed\n\n  if (b < a) {\n    l = a;\n    a = b;\n    b = l;\n  } // compare value to endpoints\n\n\n  l = Math.abs(value - a);\n  const r = Math.abs(b - value); // adjust if value is within threshold distance of endpoint\n\n  return l < r && l <= t ? left : r <= t ? right : center;\n}\n\nfunction inherits (child, parent, members) {\n  const proto = child.prototype = Object.create(parent.prototype);\n  Object.defineProperty(proto, 'constructor', {\n    value: child,\n    writable: true,\n    enumerable: true,\n    configurable: true\n  });\n  return extend(proto, members);\n}\n\n/**\n * Predicate that returns true if the value lies within the span\n * of the given range. The left and right flags control the use\n * of inclusive (true) or exclusive (false) comparisons.\n */\nfunction inrange (value, range, left, right) {\n  let r0 = range[0],\n      r1 = range[range.length - 1],\n      t;\n\n  if (r0 > r1) {\n    t = r0;\n    r0 = r1;\n    r1 = t;\n  }\n\n  left = left === undefined || left;\n  right = right === undefined || right;\n  return (left ? r0 <= value : r0 < value) && (right ? value <= r1 : value < r1);\n}\n\nfunction isBoolean (_) {\n  return typeof _ === 'boolean';\n}\n\nfunction isDate (_) {\n  return Object.prototype.toString.call(_) === '[object Date]';\n}\n\nfunction isIterable (_) {\n  return _ && isFunction(_[Symbol.iterator]);\n}\n\nfunction isNumber (_) {\n  return typeof _ === 'number';\n}\n\nfunction isRegExp (_) {\n  return Object.prototype.toString.call(_) === '[object RegExp]';\n}\n\nfunction isString (_) {\n  return typeof _ === 'string';\n}\n\nfunction key (fields, flat, opt) {\n  if (fields) {\n    fields = flat ? array(fields).map(f => f.replace(/\\\\(.)/g, '$1')) : array(fields);\n  }\n\n  const len = fields && fields.length,\n        gen = opt && opt.get || getter,\n        map = f => gen(flat ? [f] : splitAccessPath(f));\n\n  let fn;\n\n  if (!len) {\n    fn = function () {\n      return '';\n    };\n  } else if (len === 1) {\n    const get = map(fields[0]);\n\n    fn = function (_) {\n      return '' + get(_);\n    };\n  } else {\n    const get = fields.map(map);\n\n    fn = function (_) {\n      let s = '' + get[0](_),\n          i = 0;\n\n      while (++i < len) s += '|' + get[i](_);\n\n      return s;\n    };\n  }\n\n  return accessor(fn, fields, 'key');\n}\n\nfunction lerp (array, frac) {\n  const lo = array[0],\n        hi = peek(array),\n        f = +frac;\n  return !f ? lo : f === 1 ? hi : lo + f * (hi - lo);\n}\n\nconst DEFAULT_MAX_SIZE = 10000; // adapted from https://github.com/dominictarr/hashlru/ (MIT License)\n\nfunction lruCache (maxsize) {\n  maxsize = +maxsize || DEFAULT_MAX_SIZE;\n  let curr, prev, size;\n\n  const clear = () => {\n    curr = {};\n    prev = {};\n    size = 0;\n  };\n\n  const update = (key, value) => {\n    if (++size > maxsize) {\n      prev = curr;\n      curr = {};\n      size = 1;\n    }\n\n    return curr[key] = value;\n  };\n\n  clear();\n  return {\n    clear,\n    has: key => has(curr, key) || has(prev, key),\n    get: key => has(curr, key) ? curr[key] : has(prev, key) ? update(key, prev[key]) : undefined,\n    set: (key, value) => has(curr, key) ? curr[key] = value : update(key, value)\n  };\n}\n\nfunction merge (compare, array0, array1, output) {\n  const n0 = array0.length,\n        n1 = array1.length;\n  if (!n1) return array0;\n  if (!n0) return array1;\n  const merged = output || new array0.constructor(n0 + n1);\n  let i0 = 0,\n      i1 = 0,\n      i = 0;\n\n  for (; i0 < n0 && i1 < n1; ++i) {\n    merged[i] = compare(array0[i0], array1[i1]) > 0 ? array1[i1++] : array0[i0++];\n  }\n\n  for (; i0 < n0; ++i0, ++i) {\n    merged[i] = array0[i0];\n  }\n\n  for (; i1 < n1; ++i1, ++i) {\n    merged[i] = array1[i1];\n  }\n\n  return merged;\n}\n\nfunction repeat (str, reps) {\n  let s = '';\n\n  while (--reps >= 0) s += str;\n\n  return s;\n}\n\nfunction pad (str, length, padchar, align) {\n  const c = padchar || ' ',\n        s = str + '',\n        n = length - s.length;\n  return n <= 0 ? s : align === 'left' ? repeat(c, n) + s : align === 'center' ? repeat(c, ~~(n / 2)) + s + repeat(c, Math.ceil(n / 2)) : s + repeat(c, n);\n}\n\n/**\n * Return the numerical span of an array: the difference between\n * the last and first values.\n */\n\nfunction span (array) {\n  return array && peek(array) - array[0] || 0;\n}\n\nfunction $(x) {\n  return isArray(x) ? '[' + x.map($) + ']' : isObject(x) || isString(x) ? // Output valid JSON and JS source strings.\n  // See http://timelessrepo.com/json-isnt-a-javascript-subset\n  JSON.stringify(x).replace('\\u2028', '\\\\u2028').replace('\\u2029', '\\\\u2029') : x;\n}\n\nfunction toBoolean (_) {\n  return _ == null || _ === '' ? null : !_ || _ === 'false' || _ === '0' ? false : !!_;\n}\n\nconst defaultParser = _ => isNumber(_) ? _ : isDate(_) ? _ : Date.parse(_);\n\nfunction toDate (_, parser) {\n  parser = parser || defaultParser;\n  return _ == null || _ === '' ? null : parser(_);\n}\n\nfunction toString (_) {\n  return _ == null || _ === '' ? null : _ + '';\n}\n\nfunction toSet (_) {\n  const s = {},\n        n = _.length;\n\n  for (let i = 0; i < n; ++i) s[_[i]] = true;\n\n  return s;\n}\n\nfunction truncate (str, length, align, ellipsis) {\n  const e = ellipsis != null ? ellipsis : '\\u2026',\n        s = str + '',\n        n = s.length,\n        l = Math.max(0, length - e.length);\n  return n <= length ? s : align === 'left' ? e + s.slice(n - l) : align === 'center' ? s.slice(0, Math.ceil(l / 2)) + e + s.slice(n - ~~(l / 2)) : s.slice(0, l) + e;\n}\n\nfunction visitArray (array, filter, visitor) {\n  if (array) {\n    if (filter) {\n      const n = array.length;\n\n      for (let i = 0; i < n; ++i) {\n        const t = filter(array[i]);\n        if (t) visitor(t, i, array);\n      }\n    } else {\n      array.forEach(visitor);\n    }\n  }\n}\n\n\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,[encoded data, 33076 characters]\n//# sourceURL=webpack-internal:///./node_modules/vega-selections/node_modules/vega-util/build/vega-util.module.js\n");

/***/ }),

/***/ "./node_modules/vega-themes/build/vega-themes.module.js":
/*!**************************************************************!*\
  !*** ./node_modules/vega-themes/build/vega-themes.module.js ***!
  \**************************************************************/
/*! exports provided: dark, excel, fivethirtyeight, ggplot2, googlecharts, latimes, quartz, urbaninstitute, version, vox */
/***/ (function(module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"dark\", function() { return darkTheme; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"excel\", function() { return excelTheme; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"fivethirtyeight\", function() { return fiveThirtyEightTheme; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"ggplot2\", function() { return ggplot2Theme; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"googlecharts\", function() { return googlechartsTheme; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"latimes\", function() { return latimesTheme; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"quartz\", function() { return quartzTheme; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"urbaninstitute\", function() { return urbanInstituteTheme; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"version\", function() { return version$1; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"vox\", function() { return voxTheme; });\nvar name = \"vega-themes\";\nvar version = \"2.10.0\";\nvar description = \"Themes for stylized Vega and Vega-Lite visualizations.\";\nvar keywords = [\n\t\"vega\",\n\t\"vega-lite\",\n\t\"themes\",\n\t\"style\"\n];\nvar license = \"BSD-3-Clause\";\nvar author = {\n\tname: \"UW Interactive Data Lab\",\n\turl: \"https://idl.cs.washington.edu\"\n};\nvar contributors = [\n\t{\n\t\tname: \"Emily Gu\",\n\t\turl: \"https://github.com/emilygu\"\n\t},\n\t{\n\t\tname: \"Arvind Satyanarayan\",\n\t\turl: \"http://arvindsatya.com\"\n\t},\n\t{\n\t\tname: \"Jeffrey Heer\",\n\t\turl: \"https://idl.cs.washington.edu\"\n\t},\n\t{\n\t\tname: \"Dominik Moritz\",\n\t\turl: \"https://www.domoritz.de\"\n\t}\n];\nvar main = \"build/vega-themes.js\";\nvar module = \"build/vega-themes.module.js\";\nvar unpkg = \"build/vega-themes.min.js\";\nvar jsdelivr = \"build/vega-themes.min.js\";\nvar types = \"build/vega-themes.module.d.ts\";\nvar repository = {\n\ttype: \"git\",\n\turl: \"https://github.com/vega/vega-themes.git\"\n};\nvar files = [\n\t\"src\",\n\t\"build\"\n];\nvar scripts = {\n\tprebuild: \"yarn clean\",\n\tbuild: \"rollup -c\",\n\tclean: \"rimraf build && rimraf examples/build\",\n\t\"copy:data\": \"rsync -r node_modules/vega-datasets/data/* examples/data\",\n\t\"copy:build\": \"rsync -r build/* examples/build\",\n\t\"deploy:gh\": \"yarn build && mkdir -p examples/build && rsync -r build/* examples/build && gh-pages -d examples\",\n\tprepublishOnly: \"yarn clean && yarn build\",\n\tpreversion: \"yarn lint\",\n\tserve: \"browser-sync start -s -f build examples --serveStatic examples\",\n\tstart: \"yarn build && concurrently --kill-others -n Server,Rollup 'yarn serve' 'rollup -c -w'\",\n\tprepare: \"beemo create-config\",\n\teslintbase: \"beemo eslint .\",\n\tformat: \"yarn eslintbase --fix\",\n\tlint: \"yarn eslintbase\"\n};\nvar devDependencies = {\n\t\"@rollup/plugin-json\": \"^4.1.0\",\n\t\"@rollup/plugin-node-resolve\": \"^11.2.0\",\n\t\"@wessberg/rollup-plugin-ts\": \"^1.3.8\",\n\t\"browser-sync\": \"^2.26.14\",\n\tconcurrently: \"^6.0.0\",\n\t\"gh-pages\": \"^3.1.0\",\n\trollup: \"^2.39.1\",\n\t\"rollup-plugin-bundle-size\": \"^1.0.3\",\n\t\"rollup-plugin-terser\": \"^7.0.2\",\n\ttypescript: \"^4.2.2\",\n\tvega: \"^5.19.1\",\n\t\"vega-lite\": \"^5.0.0\",\n\t\"vega-lite-dev-config\": \"^0.16.1\"\n};\nvar peerDependencies = {\n\tvega: \"*\",\n\t\"vega-lite\": \"*\"\n};\nvar pkg = {\n\tname: name,\n\tversion: version,\n\tdescription: description,\n\tkeywords: keywords,\n\tlicense: license,\n\tauthor: author,\n\tcontributors: contributors,\n\tmain: main,\n\tmodule: module,\n\tunpkg: unpkg,\n\tjsdelivr: jsdelivr,\n\ttypes: types,\n\trepository: repository,\n\tfiles: files,\n\tscripts: scripts,\n\tdevDependencies: devDependencies,\n\tpeerDependencies: peerDependencies\n};\n\nconst lightColor = '#fff';\nconst medColor = '#888';\nconst darkTheme = {\n    background: '#333',\n    title: {\n        color: lightColor,\n        subtitleColor: lightColor\n    },\n    style: {\n        'guide-label': {\n            fill: lightColor,\n        },\n        'guide-title': {\n            fill: lightColor,\n        },\n    },\n    axis: {\n        domainColor: lightColor,\n        gridColor: medColor,\n        tickColor: lightColor,\n    },\n};\n\nconst markColor = '#4572a7';\nconst excelTheme = {\n    background: '#fff',\n    arc: { fill: markColor },\n    area: { fill: markColor },\n    line: { stroke: markColor, strokeWidth: 2 },\n    path: { stroke: markColor },\n    rect: { fill: markColor },\n    shape: { stroke: markColor },\n    symbol: { fill: markColor, strokeWidth: 1.5, size: 50 },\n    axis: {\n        bandPosition: 0.5,\n        grid: true,\n        gridColor: '#000000',\n        gridOpacity: 1,\n        gridWidth: 0.5,\n        labelPadding: 10,\n        tickSize: 5,\n        tickWidth: 0.5,\n    },\n    axisBand: {\n        grid: false,\n        tickExtra: true,\n    },\n    legend: {\n        labelBaseline: 'middle',\n        labelFontSize: 11,\n        symbolSize: 50,\n        symbolType: 'square',\n    },\n    range: {\n        category: [\n            '#4572a7',\n            '#aa4643',\n            '#8aa453',\n            '#71598e',\n            '#4598ae',\n            '#d98445',\n            '#94aace',\n            '#d09393',\n            '#b9cc98',\n            '#a99cbc',\n        ],\n    },\n};\n\nconst markColor$1 = '#30a2da';\nconst axisColor = '#cbcbcb';\nconst guideLabelColor = '#999';\nconst guideTitleColor = '#333';\nconst backgroundColor = '#f0f0f0';\nconst blackTitle = '#333';\nconst fiveThirtyEightTheme = {\n    arc: { fill: markColor$1 },\n    area: { fill: markColor$1 },\n    axis: {\n        domainColor: axisColor,\n        grid: true,\n        gridColor: axisColor,\n        gridWidth: 1,\n        labelColor: guideLabelColor,\n        labelFontSize: 10,\n        titleColor: guideTitleColor,\n        tickColor: axisColor,\n        tickSize: 10,\n        titleFontSize: 14,\n        titlePadding: 10,\n        labelPadding: 4,\n    },\n    axisBand: {\n        grid: false,\n    },\n    background: backgroundColor,\n    group: {\n        fill: backgroundColor,\n    },\n    legend: {\n        labelColor: blackTitle,\n        labelFontSize: 11,\n        padding: 1,\n        symbolSize: 30,\n        symbolType: 'square',\n        titleColor: blackTitle,\n        titleFontSize: 14,\n        titlePadding: 10,\n    },\n    line: {\n        stroke: markColor$1,\n        strokeWidth: 2,\n    },\n    path: { stroke: markColor$1, strokeWidth: 0.5 },\n    rect: { fill: markColor$1 },\n    range: {\n        category: [\n            '#30a2da',\n            '#fc4f30',\n            '#e5ae38',\n            '#6d904f',\n            '#8b8b8b',\n            '#b96db8',\n            '#ff9e27',\n            '#56cc60',\n            '#52d2ca',\n            '#52689e',\n            '#545454',\n            '#9fe4f8',\n        ],\n        diverging: ['#cc0020', '#e77866', '#f6e7e1', '#d6e8ed', '#91bfd9', '#1d78b5'],\n        heatmap: ['#d6e8ed', '#cee0e5', '#91bfd9', '#549cc6', '#1d78b5'],\n    },\n    point: {\n        filled: true,\n        shape: 'circle',\n    },\n    shape: { stroke: markColor$1 },\n    bar: {\n        binSpacing: 2,\n        fill: markColor$1,\n        stroke: null,\n    },\n    title: {\n        anchor: 'start',\n        fontSize: 24,\n        fontWeight: 600,\n        offset: 20,\n    },\n};\n\nconst markColor$2 = '#000';\nconst ggplot2Theme = {\n    group: {\n        fill: '#e5e5e5',\n    },\n    arc: { fill: markColor$2 },\n    area: { fill: markColor$2 },\n    line: { stroke: markColor$2 },\n    path: { stroke: markColor$2 },\n    rect: { fill: markColor$2 },\n    shape: { stroke: markColor$2 },\n    symbol: { fill: markColor$2, size: 40 },\n    axis: {\n        domain: false,\n        grid: true,\n        gridColor: '#FFFFFF',\n        gridOpacity: 1,\n        labelColor: '#7F7F7F',\n        labelPadding: 4,\n        tickColor: '#7F7F7F',\n        tickSize: 5.67,\n        titleFontSize: 16,\n        titleFontWeight: 'normal',\n    },\n    legend: {\n        labelBaseline: 'middle',\n        labelFontSize: 11,\n        symbolSize: 40,\n    },\n    range: {\n        category: [\n            '#000000',\n            '#7F7F7F',\n            '#1A1A1A',\n            '#999999',\n            '#333333',\n            '#B0B0B0',\n            '#4D4D4D',\n            '#C9C9C9',\n            '#666666',\n            '#DCDCDC',\n        ],\n    },\n};\n\nconst headlineFontSize = 22;\nconst headlineFontWeight = 'normal';\nconst labelFont = 'Benton Gothic, sans-serif';\nconst labelFontSize = 11.5;\nconst labelFontWeight = 'normal';\nconst markColor$3 = '#82c6df';\n// const markHighlight = '#006d8f';\n// const markDemocrat = '#5789b8';\n// const markRepublican = '#d94f54';\nconst titleFont = 'Benton Gothic Bold, sans-serif';\nconst titleFontWeight = 'normal';\nconst titleFontSize = 13;\nconst colorSchemes = {\n    'category-6': ['#ec8431', '#829eb1', '#c89d29', '#3580b1', '#adc839', '#ab7fb4'],\n    'fire-7': ['#fbf2c7', '#f9e39c', '#f8d36e', '#f4bb6a', '#e68a4f', '#d15a40', '#ab4232'],\n    'fireandice-6': ['#e68a4f', '#f4bb6a', '#f9e39c', '#dadfe2', '#a6b7c6', '#849eae'],\n    'ice-7': ['#edefee', '#dadfe2', '#c4ccd2', '#a6b7c6', '#849eae', '#607785', '#47525d'],\n};\nconst latimesTheme = {\n    background: '#ffffff',\n    title: {\n        anchor: 'start',\n        color: '#000000',\n        font: titleFont,\n        fontSize: headlineFontSize,\n        fontWeight: headlineFontWeight,\n    },\n    arc: { fill: markColor$3 },\n    area: { fill: markColor$3 },\n    line: { stroke: markColor$3, strokeWidth: 2 },\n    path: { stroke: markColor$3 },\n    rect: { fill: markColor$3 },\n    shape: { stroke: markColor$3 },\n    symbol: { fill: markColor$3, size: 30 },\n    axis: {\n        labelFont,\n        labelFontSize,\n        labelFontWeight,\n        titleFont,\n        titleFontSize,\n        titleFontWeight,\n    },\n    axisX: {\n        labelAngle: 0,\n        labelPadding: 4,\n        tickSize: 3,\n    },\n    axisY: {\n        labelBaseline: 'middle',\n        maxExtent: 45,\n        minExtent: 45,\n        tickSize: 2,\n        titleAlign: 'left',\n        titleAngle: 0,\n        titleX: -45,\n        titleY: -11,\n    },\n    legend: {\n        labelFont,\n        labelFontSize,\n        symbolType: 'square',\n        titleFont,\n        titleFontSize,\n        titleFontWeight,\n    },\n    range: {\n        category: colorSchemes['category-6'],\n        diverging: colorSchemes['fireandice-6'],\n        heatmap: colorSchemes['fire-7'],\n        ordinal: colorSchemes['fire-7'],\n        ramp: colorSchemes['fire-7'],\n    },\n};\n\nconst markColor$4 = '#ab5787';\nconst axisColor$1 = '#979797';\nconst quartzTheme = {\n    background: '#f9f9f9',\n    arc: { fill: markColor$4 },\n    area: { fill: markColor$4 },\n    line: { stroke: markColor$4 },\n    path: { stroke: markColor$4 },\n    rect: { fill: markColor$4 },\n    shape: { stroke: markColor$4 },\n    symbol: { fill: markColor$4, size: 30 },\n    axis: {\n        domainColor: axisColor$1,\n        domainWidth: 0.5,\n        gridWidth: 0.2,\n        labelColor: axisColor$1,\n        tickColor: axisColor$1,\n        tickWidth: 0.2,\n        titleColor: axisColor$1,\n    },\n    axisBand: {\n        grid: false,\n    },\n    axisX: {\n        grid: true,\n        tickSize: 10,\n    },\n    axisY: {\n        domain: false,\n        grid: true,\n        tickSize: 0,\n    },\n    legend: {\n        labelFontSize: 11,\n        padding: 1,\n        symbolSize: 30,\n        symbolType: 'square',\n    },\n    range: {\n        category: [\n            '#ab5787',\n            '#51b2e5',\n            '#703c5c',\n            '#168dd9',\n            '#d190b6',\n            '#00609f',\n            '#d365ba',\n            '#154866',\n            '#666666',\n            '#c4c4c4',\n        ],\n    },\n};\n\nconst markColor$5 = '#3e5c69';\nconst voxTheme = {\n    background: '#fff',\n    arc: { fill: markColor$5 },\n    area: { fill: markColor$5 },\n    line: { stroke: markColor$5 },\n    path: { stroke: markColor$5 },\n    rect: { fill: markColor$5 },\n    shape: { stroke: markColor$5 },\n    symbol: { fill: markColor$5 },\n    axis: {\n        domainWidth: 0.5,\n        grid: true,\n        labelPadding: 2,\n        tickSize: 5,\n        tickWidth: 0.5,\n        titleFontWeight: 'normal',\n    },\n    axisBand: {\n        grid: false,\n    },\n    axisX: {\n        gridWidth: 0.2,\n    },\n    axisY: {\n        gridDash: [3],\n        gridWidth: 0.4,\n    },\n    legend: {\n        labelFontSize: 11,\n        padding: 1,\n        symbolType: 'square',\n    },\n    range: {\n        category: ['#3e5c69', '#6793a6', '#182429', '#0570b0', '#3690c0', '#74a9cf', '#a6bddb', '#e2ddf2'],\n    },\n};\n\nconst markColor$6 = '#1696d2';\nconst axisColor$2 = '#000000';\nconst backgroundColor$1 = '#FFFFFF';\nconst font = 'Lato';\nconst labelFont$1 = 'Lato';\nconst sourceFont = 'Lato';\nconst gridColor = '#DEDDDD';\nconst titleFontSize$1 = 18;\nconst colorSchemes$1 = {\n    'main-colors': ['#1696d2', '#d2d2d2', '#000000', '#fdbf11', '#ec008b', '#55b748', '#5c5859', '#db2b27'],\n    'shades-blue': ['#CFE8F3', '#A2D4EC', '#73BFE2', '#46ABDB', '#1696D2', '#12719E', '#0A4C6A', '#062635'],\n    'shades-gray': ['#F5F5F5', '#ECECEC', '#E3E3E3', '#DCDBDB', '#D2D2D2', '#9D9D9D', '#696969', '#353535'],\n    'shades-yellow': ['#FFF2CF', '#FCE39E', '#FDD870', '#FCCB41', '#FDBF11', '#E88E2D', '#CA5800', '#843215'],\n    'shades-magenta': ['#F5CBDF', '#EB99C2', '#E46AA7', '#E54096', '#EC008B', '#AF1F6B', '#761548', '#351123'],\n    'shades-green': ['#DCEDD9', '#BCDEB4', '#98CF90', '#78C26D', '#55B748', '#408941', '#2C5C2D', '#1A2E19'],\n    'shades-black': ['#D5D5D4', '#ADABAC', '#848081', '#5C5859', '#332D2F', '#262223', '#1A1717', '#0E0C0D'],\n    'shades-red': ['#F8D5D4', '#F1AAA9', '#E9807D', '#E25552', '#DB2B27', '#A4201D', '#6E1614', '#370B0A'],\n    'one-group': ['#1696d2', '#000000'],\n    'two-groups-cat-1': ['#1696d2', '#000000'],\n    'two-groups-cat-2': ['#1696d2', '#fdbf11'],\n    'two-groups-cat-3': ['#1696d2', '#db2b27'],\n    'two-groups-seq': ['#a2d4ec', '#1696d2'],\n    'three-groups-cat': ['#1696d2', '#fdbf11', '#000000'],\n    'three-groups-seq': ['#a2d4ec', '#1696d2', '#0a4c6a'],\n    'four-groups-cat-1': ['#000000', '#d2d2d2', '#fdbf11', '#1696d2'],\n    'four-groups-cat-2': ['#1696d2', '#ec0008b', '#fdbf11', '#5c5859'],\n    'four-groups-seq': ['#cfe8f3', '#73bf42', '#1696d2', '#0a4c6a'],\n    'five-groups-cat-1': ['#1696d2', '#fdbf11', '#d2d2d2', '#ec008b', '#000000'],\n    'five-groups-cat-2': ['#1696d2', '#0a4c6a', '#d2d2d2', '#fdbf11', '#332d2f'],\n    'five-groups-seq': ['#cfe8f3', '#73bf42', '#1696d2', '#0a4c6a', '#000000'],\n    'six-groups-cat-1': ['#1696d2', '#ec008b', '#fdbf11', '#000000', '#d2d2d2', '#55b748'],\n    'six-groups-cat-2': ['#1696d2', '#d2d2d2', '#ec008b', '#fdbf11', '#332d2f', '#0a4c6a'],\n    'six-groups-seq': ['#cfe8f3', '#a2d4ec', '#73bfe2', '#46abdb', '#1696d2', '#12719e'],\n    'diverging-colors': ['#ca5800', '#fdbf11', '#fdd870', '#fff2cf', '#cfe8f3', '#73bfe2', '#1696d2', '#0a4c6a'],\n};\nconst urbanInstituteTheme = {\n    background: backgroundColor$1,\n    title: {\n        anchor: 'start',\n        fontSize: titleFontSize$1,\n        font: font,\n    },\n    axisX: {\n        domain: true,\n        domainColor: axisColor$2,\n        domainWidth: 1,\n        grid: false,\n        labelFontSize: 12,\n        labelFont: labelFont$1,\n        labelAngle: 0,\n        tickColor: axisColor$2,\n        tickSize: 5,\n        titleFontSize: 12,\n        titlePadding: 10,\n        titleFont: font,\n    },\n    axisY: {\n        domain: false,\n        domainWidth: 1,\n        grid: true,\n        gridColor: gridColor,\n        gridWidth: 1,\n        labelFontSize: 12,\n        labelFont: labelFont$1,\n        labelPadding: 8,\n        ticks: false,\n        titleFontSize: 12,\n        titlePadding: 10,\n        titleFont: font,\n        titleAngle: 0,\n        titleY: -10,\n        titleX: 18,\n    },\n    legend: {\n        labelFontSize: 12,\n        labelFont: labelFont$1,\n        symbolSize: 100,\n        titleFontSize: 12,\n        titlePadding: 10,\n        titleFont: font,\n        orient: 'right',\n        offset: 10,\n    },\n    view: {\n        stroke: 'transparent',\n    },\n    range: {\n        category: colorSchemes$1['six-groups-cat-1'],\n        diverging: colorSchemes$1['diverging-colors'],\n        heatmap: colorSchemes$1['diverging-colors'],\n        ordinal: colorSchemes$1['six-groups-seq'],\n        ramp: colorSchemes$1['shades-blue'],\n    },\n    area: {\n        fill: markColor$6,\n    },\n    rect: {\n        fill: markColor$6,\n    },\n    line: {\n        color: markColor$6,\n        stroke: markColor$6,\n        strokeWidth: 5,\n    },\n    trail: {\n        color: markColor$6,\n        stroke: markColor$6,\n        strokeWidth: 0,\n        size: 1,\n    },\n    path: {\n        stroke: markColor$6,\n        strokeWidth: 0.5,\n    },\n    point: {\n        filled: true,\n    },\n    text: {\n        font: sourceFont,\n        color: markColor$6,\n        fontSize: 11,\n        align: 'center',\n        fontWeight: 400,\n        size: 11,\n    },\n    style: {\n        bar: {\n            fill: markColor$6,\n            stroke: null,\n        },\n    },\n    arc: { fill: markColor$6 },\n    shape: { stroke: markColor$6 },\n    symbol: { fill: markColor$6, size: 30 },\n};\n\n/**\n * Copyright 2020 Google LLC.\n *\n * Use of this source code is governed by a BSD-style\n * license that can be found in the LICENSE file or at\n * https://developers.google.com/open-source/licenses/bsd\n */\nconst markColor$7 = '#3366CC';\nconst gridColor$1 = '#ccc';\nconst defaultFont = 'Arial, sans-serif';\nconst googlechartsTheme = {\n    arc: { fill: markColor$7 },\n    area: { fill: markColor$7 },\n    path: { stroke: markColor$7 },\n    rect: { fill: markColor$7 },\n    shape: { stroke: markColor$7 },\n    symbol: { stroke: markColor$7 },\n    circle: { fill: markColor$7 },\n    background: '#fff',\n    padding: {\n        top: 10,\n        right: 10,\n        bottom: 10,\n        left: 10,\n    },\n    style: {\n        'guide-label': {\n            font: defaultFont,\n            fontSize: 12,\n        },\n        'guide-title': {\n            font: defaultFont,\n            fontSize: 12,\n        },\n        'group-title': {\n            font: defaultFont,\n            fontSize: 12,\n        },\n    },\n    title: {\n        font: defaultFont,\n        fontSize: 14,\n        fontWeight: 'bold',\n        dy: -3,\n        anchor: 'start',\n    },\n    axis: {\n        gridColor: gridColor$1,\n        tickColor: gridColor$1,\n        domain: false,\n        grid: true,\n    },\n    range: {\n        category: [\n            '#4285F4',\n            '#DB4437',\n            '#F4B400',\n            '#0F9D58',\n            '#AB47BC',\n            '#00ACC1',\n            '#FF7043',\n            '#9E9D24',\n            '#5C6BC0',\n            '#F06292',\n            '#00796B',\n            '#C2185B',\n        ],\n        heatmap: ['#c6dafc', '#5e97f6', '#2a56c6'],\n    },\n};\n\nconst version$1 = pkg.version;\n\n\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,[encoded data, 29632 characters]\n//# sourceURL=webpack-internal:///./node_modules/vega-themes/build/vega-themes.module.js\n");

/***/ }),

/***/ "./node_modules/vega-time/build/vega-time.module.js":
/*!**********************************************************!*\
  !*** ./node_modules/vega-time/build/vega-time.module.js ***!
  \**********************************************************/
/*! exports provided: DATE, DAY, DAYOFYEAR, HOURS, MILLISECONDS, MINUTES, MONTH, QUARTER, SECONDS, TIME_UNITS, WEEK, YEAR, dayofyear, timeBin, timeFloor, timeInterval, timeOffset, timeSequence, timeUnitSpecifier, timeUnits, utcFloor, utcInterval, utcOffset, utcSequence, utcdayofyear, utcweek, week */
/***/ (function(module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"DATE\", function() { return DATE; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"DAY\", function() { return DAY; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"DAYOFYEAR\", function() { return DAYOFYEAR; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"HOURS\", function() { return HOURS; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"MILLISECONDS\", function() { return MILLISECONDS; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"MINUTES\", function() { return MINUTES; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"MONTH\", function() { return MONTH; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"QUARTER\", function() { return QUARTER; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"SECONDS\", function() { return SECONDS; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"TIME_UNITS\", function() { return TIME_UNITS; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"WEEK\", function() { return WEEK; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"YEAR\", function() { return YEAR; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"dayofyear\", function() { return dayofyear; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"timeBin\", function() { return bin; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"timeFloor\", function() { return timeFloor; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"timeInterval\", function() { return timeInterval; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"timeOffset\", function() { return timeOffset; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"timeSequence\", function() { return timeSequence; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"timeUnitSpecifier\", function() { return timeUnitSpecifier; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"timeUnits\", function() { return timeUnits; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"utcFloor\", function() { return utcFloor; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"utcInterval\", function() { return utcInterval; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"utcOffset\", function() { return utcOffset; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"utcSequence\", function() { return utcSequence; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"utcdayofyear\", function() { return utcdayofyear; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"utcweek\", function() { return utcweek; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"week\", function() { return week; });\n/* harmony import */ var vega_util__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! vega-util */ \"./node_modules/vega-time/node_modules/vega-util/build/vega-util.module.js\");\n/* harmony import */ var d3_time__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! d3-time */ \"./node_modules/vega-time/node_modules/d3-time/src/index.js\");\n/* harmony import */ var d3_array__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! d3-array */ \"./node_modules/d3-array/src/index.js\");\n\n\n\n\nconst YEAR = 'year';\nconst QUARTER = 'quarter';\nconst MONTH = 'month';\nconst WEEK = 'week';\nconst DATE = 'date';\nconst DAY = 'day';\nconst DAYOFYEAR = 'dayofyear';\nconst HOURS = 'hours';\nconst MINUTES = 'minutes';\nconst SECONDS = 'seconds';\nconst MILLISECONDS = 'milliseconds';\nconst TIME_UNITS = [YEAR, QUARTER, MONTH, WEEK, DATE, DAY, DAYOFYEAR, HOURS, MINUTES, SECONDS, MILLISECONDS];\nconst UNITS = TIME_UNITS.reduce((o, u, i) => (o[u] = 1 + i, o), {});\nfunction timeUnits(units) {\n  const u = Object(vega_util__WEBPACK_IMPORTED_MODULE_0__[\"array\"])(units).slice(),\n        m = {}; // check validity\n\n  if (!u.length) Object(vega_util__WEBPACK_IMPORTED_MODULE_0__[\"error\"])('Missing time unit.');\n  u.forEach(unit => {\n    if (Object(vega_util__WEBPACK_IMPORTED_MODULE_0__[\"hasOwnProperty\"])(UNITS, unit)) {\n      m[unit] = 1;\n    } else {\n      Object(vega_util__WEBPACK_IMPORTED_MODULE_0__[\"error\"])(\"Invalid time unit: \".concat(unit, \".\"));\n    }\n  });\n  const numTypes = (m[WEEK] || m[DAY] ? 1 : 0) + (m[QUARTER] || m[MONTH] || m[DATE] ? 1 : 0) + (m[DAYOFYEAR] ? 1 : 0);\n\n  if (numTypes > 1) {\n    Object(vega_util__WEBPACK_IMPORTED_MODULE_0__[\"error\"])(\"Incompatible time units: \".concat(units));\n  } // ensure proper sort order\n\n\n  u.sort((a, b) => UNITS[a] - UNITS[b]);\n  return u;\n}\nconst defaultSpecifiers = {\n  [YEAR]: '%Y ',\n  [QUARTER]: 'Q%q ',\n  [MONTH]: '%b ',\n  [DATE]: '%d ',\n  [WEEK]: 'W%U ',\n  [DAY]: '%a ',\n  [DAYOFYEAR]: '%j ',\n  [HOURS]: '%H:00',\n  [MINUTES]: '00:%M',\n  [SECONDS]: ':%S',\n  [MILLISECONDS]: '.%L',\n  [\"\".concat(YEAR, \"-\").concat(MONTH)]: '%Y-%m ',\n  [\"\".concat(YEAR, \"-\").concat(MONTH, \"-\").concat(DATE)]: '%Y-%m-%d ',\n  [\"\".concat(HOURS, \"-\").concat(MINUTES)]: '%H:%M'\n};\nfunction timeUnitSpecifier(units, specifiers) {\n  const s = Object(vega_util__WEBPACK_IMPORTED_MODULE_0__[\"extend\"])({}, defaultSpecifiers, specifiers),\n        u = timeUnits(units),\n        n = u.length;\n  let fmt = '',\n      start = 0,\n      end,\n      key;\n\n  for (start = 0; start < n;) {\n    for (end = u.length; end > start; --end) {\n      key = u.slice(start, end).join('-');\n\n      if (s[key] != null) {\n        fmt += s[key];\n        start = end;\n        break;\n      }\n    }\n  }\n\n  return fmt.trim();\n}\n\nconst t0 = new Date();\n\nfunction localYear(y) {\n  t0.setFullYear(y);\n  t0.setMonth(0);\n  t0.setDate(1);\n  t0.setHours(0, 0, 0, 0);\n  return t0;\n}\n\nfunction dayofyear(d) {\n  return localDayOfYear(new Date(d));\n}\nfunction week(d) {\n  return localWeekNum(new Date(d));\n}\nfunction localDayOfYear(d) {\n  return d3_time__WEBPACK_IMPORTED_MODULE_1__[\"timeDay\"].count(localYear(d.getFullYear()) - 1, d);\n}\nfunction localWeekNum(d) {\n  return d3_time__WEBPACK_IMPORTED_MODULE_1__[\"timeWeek\"].count(localYear(d.getFullYear()) - 1, d);\n}\nfunction localFirst(y) {\n  return localYear(y).getDay();\n}\nfunction localDate(y, m, d, H, M, S, L) {\n  if (0 <= y && y < 100) {\n    const date = new Date(-1, m, d, H, M, S, L);\n    date.setFullYear(y);\n    return date;\n  }\n\n  return new Date(y, m, d, H, M, S, L);\n}\nfunction utcdayofyear(d) {\n  return utcDayOfYear(new Date(d));\n}\nfunction utcweek(d) {\n  return utcWeekNum(new Date(d));\n}\nfunction utcDayOfYear(d) {\n  const y = Date.UTC(d.getUTCFullYear(), 0, 1);\n  return d3_time__WEBPACK_IMPORTED_MODULE_1__[\"utcDay\"].count(y - 1, d);\n}\nfunction utcWeekNum(d) {\n  const y = Date.UTC(d.getUTCFullYear(), 0, 1);\n  return d3_time__WEBPACK_IMPORTED_MODULE_1__[\"utcWeek\"].count(y - 1, d);\n}\nfunction utcFirst(y) {\n  t0.setTime(Date.UTC(y, 0, 1));\n  return t0.getUTCDay();\n}\nfunction utcDate(y, m, d, H, M, S, L) {\n  if (0 <= y && y < 100) {\n    const date = new Date(Date.UTC(-1, m, d, H, M, S, L));\n    date.setUTCFullYear(d.y);\n    return date;\n  }\n\n  return new Date(Date.UTC(y, m, d, H, M, S, L));\n}\n\nfunction floor(units, step, get, inv, newDate) {\n  const s = step || 1,\n        b = Object(vega_util__WEBPACK_IMPORTED_MODULE_0__[\"peek\"])(units),\n        _ = (unit, p, key) => {\n    key = key || unit;\n    return getUnit(get[key], inv[key], unit === b && s, p);\n  };\n\n  const t = new Date(),\n        u = Object(vega_util__WEBPACK_IMPORTED_MODULE_0__[\"toSet\"])(units),\n        y = u[YEAR] ? _(YEAR) : Object(vega_util__WEBPACK_IMPORTED_MODULE_0__[\"constant\"])(2012),\n        m = u[MONTH] ? _(MONTH) : u[QUARTER] ? _(QUARTER) : vega_util__WEBPACK_IMPORTED_MODULE_0__[\"zero\"],\n        d = u[WEEK] && u[DAY] ? _(DAY, 1, WEEK + DAY) : u[WEEK] ? _(WEEK, 1) : u[DAY] ? _(DAY, 1) : u[DATE] ? _(DATE, 1) : u[DAYOFYEAR] ? _(DAYOFYEAR, 1) : vega_util__WEBPACK_IMPORTED_MODULE_0__[\"one\"],\n        H = u[HOURS] ? _(HOURS) : vega_util__WEBPACK_IMPORTED_MODULE_0__[\"zero\"],\n        M = u[MINUTES] ? _(MINUTES) : vega_util__WEBPACK_IMPORTED_MODULE_0__[\"zero\"],\n        S = u[SECONDS] ? _(SECONDS) : vega_util__WEBPACK_IMPORTED_MODULE_0__[\"zero\"],\n        L = u[MILLISECONDS] ? _(MILLISECONDS) : vega_util__WEBPACK_IMPORTED_MODULE_0__[\"zero\"];\n  return function (v) {\n    t.setTime(+v);\n    const year = y(t);\n    return newDate(year, m(t), d(t, year), H(t), M(t), S(t), L(t));\n  };\n}\n\nfunction getUnit(f, inv, step, phase) {\n  const u = step <= 1 ? f : phase ? (d, y) => phase + step * Math.floor((f(d, y) - phase) / step) : (d, y) => step * Math.floor(f(d, y) / step);\n  return inv ? (d, y) => inv(u(d, y), y) : u;\n} // returns the day of the year based on week number, day of week,\n// and the day of the week for the first day of the year\n\n\nfunction weekday(week, day, firstDay) {\n  return day + week * 7 - (firstDay + 6) % 7;\n} // -- LOCAL TIME --\n\n\nconst localGet = {\n  [YEAR]: d => d.getFullYear(),\n  [QUARTER]: d => Math.floor(d.getMonth() / 3),\n  [MONTH]: d => d.getMonth(),\n  [DATE]: d => d.getDate(),\n  [HOURS]: d => d.getHours(),\n  [MINUTES]: d => d.getMinutes(),\n  [SECONDS]: d => d.getSeconds(),\n  [MILLISECONDS]: d => d.getMilliseconds(),\n  [DAYOFYEAR]: d => localDayOfYear(d),\n  [WEEK]: d => localWeekNum(d),\n  [WEEK + DAY]: (d, y) => weekday(localWeekNum(d), d.getDay(), localFirst(y)),\n  [DAY]: (d, y) => weekday(1, d.getDay(), localFirst(y))\n};\nconst localInv = {\n  [QUARTER]: q => 3 * q,\n  [WEEK]: (w, y) => weekday(w, 0, localFirst(y))\n};\nfunction timeFloor(units, step) {\n  return floor(units, step || 1, localGet, localInv, localDate);\n} // -- UTC TIME --\n\nconst utcGet = {\n  [YEAR]: d => d.getUTCFullYear(),\n  [QUARTER]: d => Math.floor(d.getUTCMonth() / 3),\n  [MONTH]: d => d.getUTCMonth(),\n  [DATE]: d => d.getUTCDate(),\n  [HOURS]: d => d.getUTCHours(),\n  [MINUTES]: d => d.getUTCMinutes(),\n  [SECONDS]: d => d.getUTCSeconds(),\n  [MILLISECONDS]: d => d.getUTCMilliseconds(),\n  [DAYOFYEAR]: d => utcDayOfYear(d),\n  [WEEK]: d => utcWeekNum(d),\n  [DAY]: (d, y) => weekday(1, d.getUTCDay(), utcFirst(y)),\n  [WEEK + DAY]: (d, y) => weekday(utcWeekNum(d), d.getUTCDay(), utcFirst(y))\n};\nconst utcInv = {\n  [QUARTER]: q => 3 * q,\n  [WEEK]: (w, y) => weekday(w, 0, utcFirst(y))\n};\nfunction utcFloor(units, step) {\n  return floor(units, step || 1, utcGet, utcInv, utcDate);\n}\n\nconst timeIntervals = {\n  [YEAR]: d3_time__WEBPACK_IMPORTED_MODULE_1__[\"timeYear\"],\n  [QUARTER]: d3_time__WEBPACK_IMPORTED_MODULE_1__[\"timeMonth\"].every(3),\n  [MONTH]: d3_time__WEBPACK_IMPORTED_MODULE_1__[\"timeMonth\"],\n  [WEEK]: d3_time__WEBPACK_IMPORTED_MODULE_1__[\"timeWeek\"],\n  [DATE]: d3_time__WEBPACK_IMPORTED_MODULE_1__[\"timeDay\"],\n  [DAY]: d3_time__WEBPACK_IMPORTED_MODULE_1__[\"timeDay\"],\n  [DAYOFYEAR]: d3_time__WEBPACK_IMPORTED_MODULE_1__[\"timeDay\"],\n  [HOURS]: d3_time__WEBPACK_IMPORTED_MODULE_1__[\"timeHour\"],\n  [MINUTES]: d3_time__WEBPACK_IMPORTED_MODULE_1__[\"timeMinute\"],\n  [SECONDS]: d3_time__WEBPACK_IMPORTED_MODULE_1__[\"timeSecond\"],\n  [MILLISECONDS]: d3_time__WEBPACK_IMPORTED_MODULE_1__[\"timeMillisecond\"]\n};\nconst utcIntervals = {\n  [YEAR]: d3_time__WEBPACK_IMPORTED_MODULE_1__[\"utcYear\"],\n  [QUARTER]: d3_time__WEBPACK_IMPORTED_MODULE_1__[\"utcMonth\"].every(3),\n  [MONTH]: d3_time__WEBPACK_IMPORTED_MODULE_1__[\"utcMonth\"],\n  [WEEK]: d3_time__WEBPACK_IMPORTED_MODULE_1__[\"utcWeek\"],\n  [DATE]: d3_time__WEBPACK_IMPORTED_MODULE_1__[\"utcDay\"],\n  [DAY]: d3_time__WEBPACK_IMPORTED_MODULE_1__[\"utcDay\"],\n  [DAYOFYEAR]: d3_time__WEBPACK_IMPORTED_MODULE_1__[\"utcDay\"],\n  [HOURS]: d3_time__WEBPACK_IMPORTED_MODULE_1__[\"utcHour\"],\n  [MINUTES]: d3_time__WEBPACK_IMPORTED_MODULE_1__[\"utcMinute\"],\n  [SECONDS]: d3_time__WEBPACK_IMPORTED_MODULE_1__[\"utcSecond\"],\n  [MILLISECONDS]: d3_time__WEBPACK_IMPORTED_MODULE_1__[\"utcMillisecond\"]\n};\nfunction timeInterval(unit) {\n  return timeIntervals[unit];\n}\nfunction utcInterval(unit) {\n  return utcIntervals[unit];\n}\n\nfunction offset(ival, date, step) {\n  return ival ? ival.offset(date, step) : undefined;\n}\n\nfunction timeOffset(unit, date, step) {\n  return offset(timeInterval(unit), date, step);\n}\nfunction utcOffset(unit, date, step) {\n  return offset(utcInterval(unit), date, step);\n}\n\nfunction sequence(ival, start, stop, step) {\n  return ival ? ival.range(start, stop, step) : undefined;\n}\n\nfunction timeSequence(unit, start, stop, step) {\n  return sequence(timeInterval(unit), start, stop, step);\n}\nfunction utcSequence(unit, start, stop, step) {\n  return sequence(utcInterval(unit), start, stop, step);\n}\n\nconst durationSecond = 1000,\n      durationMinute = durationSecond * 60,\n      durationHour = durationMinute * 60,\n      durationDay = durationHour * 24,\n      durationWeek = durationDay * 7,\n      durationMonth = durationDay * 30,\n      durationYear = durationDay * 365;\nconst Milli = [YEAR, MONTH, DATE, HOURS, MINUTES, SECONDS, MILLISECONDS],\n      Seconds = Milli.slice(0, -1),\n      Minutes = Seconds.slice(0, -1),\n      Hours = Minutes.slice(0, -1),\n      Day = Hours.slice(0, -1),\n      Week = [YEAR, WEEK],\n      Month = [YEAR, MONTH],\n      Year = [YEAR];\nconst intervals = [[Seconds, 1, durationSecond], [Seconds, 5, 5 * durationSecond], [Seconds, 15, 15 * durationSecond], [Seconds, 30, 30 * durationSecond], [Minutes, 1, durationMinute], [Minutes, 5, 5 * durationMinute], [Minutes, 15, 15 * durationMinute], [Minutes, 30, 30 * durationMinute], [Hours, 1, durationHour], [Hours, 3, 3 * durationHour], [Hours, 6, 6 * durationHour], [Hours, 12, 12 * durationHour], [Day, 1, durationDay], [Week, 1, durationWeek], [Month, 1, durationMonth], [Month, 3, 3 * durationMonth], [Year, 1, durationYear]];\nfunction bin (opt) {\n  const ext = opt.extent,\n        max = opt.maxbins || 40,\n        target = Math.abs(Object(vega_util__WEBPACK_IMPORTED_MODULE_0__[\"span\"])(ext)) / max;\n  let i = Object(d3_array__WEBPACK_IMPORTED_MODULE_2__[\"bisector\"])(i => i[2]).right(intervals, target),\n      units,\n      step;\n\n  if (i === intervals.length) {\n    units = Year, step = Object(d3_array__WEBPACK_IMPORTED_MODULE_2__[\"tickStep\"])(ext[0] / durationYear, ext[1] / durationYear, max);\n  } else if (i) {\n    i = intervals[target / intervals[i - 1][2] < intervals[i][2] / target ? i - 1 : i];\n    units = i[0];\n    step = i[1];\n  } else {\n    units = Milli;\n    step = Math.max(Object(d3_array__WEBPACK_IMPORTED_MODULE_2__[\"tickStep\"])(ext[0], ext[1], max), 1);\n  }\n\n  return {\n    units,\n    step\n  };\n}\n\n\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,[encoded data, 15996 characters]\n//# sourceURL=webpack-internal:///./node_modules/vega-time/build/vega-time.module.js\n");

/***/ }),

/***/ "./node_modules/vega-time/node_modules/d3-time/src/day.js":
/*!****************************************************************!*\
  !*** ./node_modules/vega-time/node_modules/d3-time/src/day.js ***!
  \****************************************************************/
/*! exports provided: default, days */
/***/ (function(module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"days\", function() { return days; });\n/* harmony import */ var _interval_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./interval.js */ \"./node_modules/vega-time/node_modules/d3-time/src/interval.js\");\n/* harmony import */ var _duration_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./duration.js */ \"./node_modules/vega-time/node_modules/d3-time/src/duration.js\");\n\n\n\nvar day = Object(_interval_js__WEBPACK_IMPORTED_MODULE_0__[\"default\"])(\n  date => date.setHours(0, 0, 0, 0),\n  (date, step) => date.setDate(date.getDate() + step),\n  (start, end) => (end - start - (end.getTimezoneOffset() - start.getTimezoneOffset()) * _duration_js__WEBPACK_IMPORTED_MODULE_1__[\"durationMinute\"]) / _duration_js__WEBPACK_IMPORTED_MODULE_1__[\"durationDay\"],\n  date => date.getDate() - 1\n);\n\n/* harmony default export */ __webpack_exports__[\"default\"] = (day);\nvar days = day.range;\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvdmVnYS10aW1lL25vZGVfbW9kdWxlcy9kMy10aW1lL3NyYy9kYXkuanMuanMiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvdmVnYS10aW1lL25vZGVfbW9kdWxlcy9kMy10aW1lL3NyYy9kYXkuanM/ODAwZSJdLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgaW50ZXJ2YWwgZnJvbSBcIi4vaW50ZXJ2YWwuanNcIjtcbmltcG9ydCB7ZHVyYXRpb25EYXksIGR1cmF0aW9uTWludXRlfSBmcm9tIFwiLi9kdXJhdGlvbi5qc1wiO1xuXG52YXIgZGF5ID0gaW50ZXJ2YWwoXG4gIGRhdGUgPT4gZGF0ZS5zZXRIb3VycygwLCAwLCAwLCAwKSxcbiAgKGRhdGUsIHN0ZXApID0+IGRhdGUuc2V0RGF0ZShkYXRlLmdldERhdGUoKSArIHN0ZXApLFxuICAoc3RhcnQsIGVuZCkgPT4gKGVuZCAtIHN0YXJ0IC0gKGVuZC5nZXRUaW1lem9uZU9mZnNldCgpIC0gc3RhcnQuZ2V0VGltZXpvbmVPZmZzZXQoKSkgKiBkdXJhdGlvbk1pbnV0ZSkgLyBkdXJhdGlvbkRheSxcbiAgZGF0ZSA9PiBkYXRlLmdldERhdGUoKSAtIDFcbik7XG5cbmV4cG9ydCBkZWZhdWx0IGRheTtcbmV4cG9ydCB2YXIgZGF5cyA9IGRheS5yYW5nZTtcbiJdLCJtYXBwaW5ncyI6IkFBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7Iiwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///./node_modules/vega-time/node_modules/d3-time/src/day.js\n");

/***/ }),

/***/ "./node_modules/vega-time/node_modules/d3-time/src/duration.js":
/*!*********************************************************************!*\
  !*** ./node_modules/vega-time/node_modules/d3-time/src/duration.js ***!
  \*********************************************************************/
/*! exports provided: durationSecond, durationMinute, durationHour, durationDay, durationWeek, durationMonth, durationYear */
/***/ (function(module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"durationSecond\", function() { return durationSecond; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"durationMinute\", function() { return durationMinute; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"durationHour\", function() { return durationHour; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"durationDay\", function() { return durationDay; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"durationWeek\", function() { return durationWeek; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"durationMonth\", function() { return durationMonth; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"durationYear\", function() { return durationYear; });\nconst durationSecond = 1000;\nconst durationMinute = durationSecond * 60;\nconst durationHour = durationMinute * 60;\nconst durationDay = durationHour * 24;\nconst durationWeek = durationDay * 7;\nconst durationMonth = durationDay * 30;\nconst durationYear = durationDay * 365;\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvdmVnYS10aW1lL25vZGVfbW9kdWxlcy9kMy10aW1lL3NyYy9kdXJhdGlvbi5qcy5qcyIsInNvdXJjZXMiOlsid2VicGFjazovLy8uL25vZGVfbW9kdWxlcy92ZWdhLXRpbWUvbm9kZV9tb2R1bGVzL2QzLXRpbWUvc3JjL2R1cmF0aW9uLmpzPzA5ODkiXSwic291cmNlc0NvbnRlbnQiOlsiZXhwb3J0IGNvbnN0IGR1cmF0aW9uU2Vjb25kID0gMTAwMDtcbmV4cG9ydCBjb25zdCBkdXJhdGlvbk1pbnV0ZSA9IGR1cmF0aW9uU2Vjb25kICogNjA7XG5leHBvcnQgY29uc3QgZHVyYXRpb25Ib3VyID0gZHVyYXRpb25NaW51dGUgKiA2MDtcbmV4cG9ydCBjb25zdCBkdXJhdGlvbkRheSA9IGR1cmF0aW9uSG91ciAqIDI0O1xuZXhwb3J0IGNvbnN0IGR1cmF0aW9uV2VlayA9IGR1cmF0aW9uRGF5ICogNztcbmV4cG9ydCBjb25zdCBkdXJhdGlvbk1vbnRoID0gZHVyYXRpb25EYXkgKiAzMDtcbmV4cG9ydCBjb25zdCBkdXJhdGlvblllYXIgPSBkdXJhdGlvbkRheSAqIDM2NTtcbiJdLCJtYXBwaW5ncyI6IkFBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOyIsInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///./node_modules/vega-time/node_modules/d3-time/src/duration.js\n");

/***/ }),

/***/ "./node_modules/vega-time/node_modules/d3-time/src/hour.js":
/*!*****************************************************************!*\
  !*** ./node_modules/vega-time/node_modules/d3-time/src/hour.js ***!
  \*****************************************************************/
/*! exports provided: default, hours */
/***/ (function(module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"hours\", function() { return hours; });\n/* harmony import */ var _interval_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./interval.js */ \"./node_modules/vega-time/node_modules/d3-time/src/interval.js\");\n/* harmony import */ var _duration_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./duration.js */ \"./node_modules/vega-time/node_modules/d3-time/src/duration.js\");\n\n\n\nvar hour = Object(_interval_js__WEBPACK_IMPORTED_MODULE_0__[\"default\"])(function(date) {\n  date.setTime(date - date.getMilliseconds() - date.getSeconds() * _duration_js__WEBPACK_IMPORTED_MODULE_1__[\"durationSecond\"] - date.getMinutes() * _duration_js__WEBPACK_IMPORTED_MODULE_1__[\"durationMinute\"]);\n}, function(date, step) {\n  date.setTime(+date + step * _duration_js__WEBPACK_IMPORTED_MODULE_1__[\"durationHour\"]);\n}, function(start, end) {\n  return (end - start) / _duration_js__WEBPACK_IMPORTED_MODULE_1__[\"durationHour\"];\n}, function(date) {\n  return date.getHours();\n});\n\n/* harmony default export */ __webpack_exports__[\"default\"] = (hour);\nvar hours = hour.range;\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvdmVnYS10aW1lL25vZGVfbW9kdWxlcy9kMy10aW1lL3NyYy9ob3VyLmpzLmpzIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL3ZlZ2EtdGltZS9ub2RlX21vZHVsZXMvZDMtdGltZS9zcmMvaG91ci5qcz9jMDc0Il0sInNvdXJjZXNDb250ZW50IjpbImltcG9ydCBpbnRlcnZhbCBmcm9tIFwiLi9pbnRlcnZhbC5qc1wiO1xuaW1wb3J0IHtkdXJhdGlvbkhvdXIsIGR1cmF0aW9uTWludXRlLCBkdXJhdGlvblNlY29uZH0gZnJvbSBcIi4vZHVyYXRpb24uanNcIjtcblxudmFyIGhvdXIgPSBpbnRlcnZhbChmdW5jdGlvbihkYXRlKSB7XG4gIGRhdGUuc2V0VGltZShkYXRlIC0gZGF0ZS5nZXRNaWxsaXNlY29uZHMoKSAtIGRhdGUuZ2V0U2Vjb25kcygpICogZHVyYXRpb25TZWNvbmQgLSBkYXRlLmdldE1pbnV0ZXMoKSAqIGR1cmF0aW9uTWludXRlKTtcbn0sIGZ1bmN0aW9uKGRhdGUsIHN0ZXApIHtcbiAgZGF0ZS5zZXRUaW1lKCtkYXRlICsgc3RlcCAqIGR1cmF0aW9uSG91cik7XG59LCBmdW5jdGlvbihzdGFydCwgZW5kKSB7XG4gIHJldHVybiAoZW5kIC0gc3RhcnQpIC8gZHVyYXRpb25Ib3VyO1xufSwgZnVuY3Rpb24oZGF0ZSkge1xuICByZXR1cm4gZGF0ZS5nZXRIb3VycygpO1xufSk7XG5cbmV4cG9ydCBkZWZhdWx0IGhvdXI7XG5leHBvcnQgdmFyIGhvdXJzID0gaG91ci5yYW5nZTtcbiJdLCJtYXBwaW5ncyI6IkFBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7Iiwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///./node_modules/vega-time/node_modules/d3-time/src/hour.js\n");

/***/ }),

/***/ "./node_modules/vega-time/node_modules/d3-time/src/index.js":
/*!******************************************************************!*\
  !*** ./node_modules/vega-time/node_modules/d3-time/src/index.js ***!
  \******************************************************************/
/*! exports provided: timeInterval, timeMillisecond, timeMilliseconds, utcMillisecond, utcMilliseconds, timeSecond, timeSeconds, utcSecond, utcSeconds, timeMinute, timeMinutes, timeHour, timeHours, timeDay, timeDays, timeWeek, timeWeeks, timeSunday, timeSundays, timeMonday, timeMondays, timeTuesday, timeTuesdays, timeWednesday, timeWednesdays, timeThursday, timeThursdays, timeFriday, timeFridays, timeSaturday, timeSaturdays, timeMonth, timeMonths, timeYear, timeYears, utcMinute, utcMinutes, utcHour, utcHours, utcDay, utcDays, utcWeek, utcWeeks, utcSunday, utcSundays, utcMonday, utcMondays, utcTuesday, utcTuesdays, utcWednesday, utcWednesdays, utcThursday, utcThursdays, utcFriday, utcFridays, utcSaturday, utcSaturdays, utcMonth, utcMonths, utcYear, utcYears, utcTicks, utcTickInterval, timeTicks, timeTickInterval */
/***/ (function(module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _interval_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./interval.js */ \"./node_modules/vega-time/node_modules/d3-time/src/interval.js\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"timeInterval\", function() { return _interval_js__WEBPACK_IMPORTED_MODULE_0__[\"default\"]; });\n\n/* harmony import */ var _millisecond_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./millisecond.js */ \"./node_modules/vega-time/node_modules/d3-time/src/millisecond.js\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"timeMillisecond\", function() { return _millisecond_js__WEBPACK_IMPORTED_MODULE_1__[\"default\"]; });\n\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"timeMilliseconds\", function() { return _millisecond_js__WEBPACK_IMPORTED_MODULE_1__[\"milliseconds\"]; });\n\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"utcMillisecond\", function() { return _millisecond_js__WEBPACK_IMPORTED_MODULE_1__[\"default\"]; });\n\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"utcMilliseconds\", function() { return _millisecond_js__WEBPACK_IMPORTED_MODULE_1__[\"milliseconds\"]; });\n\n/* harmony import */ var _second_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./second.js */ \"./node_modules/vega-time/node_modules/d3-time/src/second.js\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"timeSecond\", function() { return _second_js__WEBPACK_IMPORTED_MODULE_2__[\"default\"]; });\n\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"timeSeconds\", function() { return _second_js__WEBPACK_IMPORTED_MODULE_2__[\"seconds\"]; });\n\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"utcSecond\", function() { return _second_js__WEBPACK_IMPORTED_MODULE_2__[\"default\"]; });\n\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"utcSeconds\", function() { return _second_js__WEBPACK_IMPORTED_MODULE_2__[\"seconds\"]; });\n\n/* harmony import */ var _minute_js__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ./minute.js */ \"./node_modules/vega-time/node_modules/d3-time/src/minute.js\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"timeMinute\", function() { return _minute_js__WEBPACK_IMPORTED_MODULE_3__[\"default\"]; });\n\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"timeMinutes\", function() { return _minute_js__WEBPACK_IMPORTED_MODULE_3__[\"minutes\"]; });\n\n/* harmony import */ var _hour_js__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ./hour.js */ \"./node_modules/vega-time/node_modules/d3-time/src/hour.js\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"timeHour\", function() { return _hour_js__WEBPACK_IMPORTED_MODULE_4__[\"default\"]; });\n\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"timeHours\", function() { return _hour_js__WEBPACK_IMPORTED_MODULE_4__[\"hours\"]; });\n\n/* harmony import */ var _day_js__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! ./day.js */ \"./node_modules/vega-time/node_modules/d3-time/src/day.js\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"timeDay\", function() { return _day_js__WEBPACK_IMPORTED_MODULE_5__[\"default\"]; });\n\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"timeDays\", function() { return _day_js__WEBPACK_IMPORTED_MODULE_5__[\"days\"]; });\n\n/* harmony import */ var _week_js__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! ./week.js */ \"./node_modules/vega-time/node_modules/d3-time/src/week.js\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"timeWeek\", function() { return _week_js__WEBPACK_IMPORTED_MODULE_6__[\"sunday\"]; });\n\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"timeWeeks\", function() { return _week_js__WEBPACK_IMPORTED_MODULE_6__[\"sundays\"]; });\n\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"timeSunday\", function() { return _week_js__WEBPACK_IMPORTED_MODULE_6__[\"sunday\"]; });\n\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"timeSundays\", function() { return _week_js__WEBPACK_IMPORTED_MODULE_6__[\"sundays\"]; });\n\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"timeMonday\", function() { return _week_js__WEBPACK_IMPORTED_MODULE_6__[\"monday\"]; });\n\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"timeMondays\", function() { return _week_js__WEBPACK_IMPORTED_MODULE_6__[\"mondays\"]; });\n\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"timeTuesday\", function() { return _week_js__WEBPACK_IMPORTED_MODULE_6__[\"tuesday\"]; });\n\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"timeTuesdays\", function() { return _week_js__WEBPACK_IMPORTED_MODULE_6__[\"tuesdays\"]; });\n\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"timeWednesday\", function() { return _week_js__WEBPACK_IMPORTED_MODULE_6__[\"wednesday\"]; });\n\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"timeWednesdays\", function() { return _week_js__WEBPACK_IMPORTED_MODULE_6__[\"wednesdays\"]; });\n\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"timeThursday\", function() { return _week_js__WEBPACK_IMPORTED_MODULE_6__[\"thursday\"]; });\n\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"timeThursdays\", function() { return _week_js__WEBPACK_IMPORTED_MODULE_6__[\"thursdays\"]; });\n\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"timeFriday\", function() { return _week_js__WEBPACK_IMPORTED_MODULE_6__[\"friday\"]; });\n\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"timeFridays\", function() { return _week_js__WEBPACK_IMPORTED_MODULE_6__[\"fridays\"]; });\n\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"timeSaturday\", function() { return _week_js__WEBPACK_IMPORTED_MODULE_6__[\"saturday\"]; });\n\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"timeSaturdays\", function() { return _week_js__WEBPACK_IMPORTED_MODULE_6__[\"saturdays\"]; });\n\n/* harmony import */ var _month_js__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! ./month.js */ \"./node_modules/vega-time/node_modules/d3-time/src/month.js\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"timeMonth\", function() { return _month_js__WEBPACK_IMPORTED_MODULE_7__[\"default\"]; });\n\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"timeMonths\", function() { return _month_js__WEBPACK_IMPORTED_MODULE_7__[\"months\"]; });\n\n/* harmony import */ var _year_js__WEBPACK_IMPORTED_MODULE_8__ = __webpack_require__(/*! ./year.js */ \"./node_modules/vega-time/node_modules/d3-time/src/year.js\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"timeYear\", function() { return _year_js__WEBPACK_IMPORTED_MODULE_8__[\"default\"]; });\n\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"timeYears\", function() { return _year_js__WEBPACK_IMPORTED_MODULE_8__[\"years\"]; });\n\n/* harmony import */ var _utcMinute_js__WEBPACK_IMPORTED_MODULE_9__ = __webpack_require__(/*! ./utcMinute.js */ \"./node_modules/vega-time/node_modules/d3-time/src/utcMinute.js\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"utcMinute\", function() { return _utcMinute_js__WEBPACK_IMPORTED_MODULE_9__[\"default\"]; });\n\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"utcMinutes\", function() { return _utcMinute_js__WEBPACK_IMPORTED_MODULE_9__[\"utcMinutes\"]; });\n\n/* harmony import */ var _utcHour_js__WEBPACK_IMPORTED_MODULE_10__ = __webpack_require__(/*! ./utcHour.js */ \"./node_modules/vega-time/node_modules/d3-time/src/utcHour.js\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"utcHour\", function() { return _utcHour_js__WEBPACK_IMPORTED_MODULE_10__[\"default\"]; });\n\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"utcHours\", function() { return _utcHour_js__WEBPACK_IMPORTED_MODULE_10__[\"utcHours\"]; });\n\n/* harmony import */ var _utcDay_js__WEBPACK_IMPORTED_MODULE_11__ = __webpack_require__(/*! ./utcDay.js */ \"./node_modules/vega-time/node_modules/d3-time/src/utcDay.js\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"utcDay\", function() { return _utcDay_js__WEBPACK_IMPORTED_MODULE_11__[\"default\"]; });\n\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"utcDays\", function() { return _utcDay_js__WEBPACK_IMPORTED_MODULE_11__[\"utcDays\"]; });\n\n/* harmony import */ var _utcWeek_js__WEBPACK_IMPORTED_MODULE_12__ = __webpack_require__(/*! ./utcWeek.js */ \"./node_modules/vega-time/node_modules/d3-time/src/utcWeek.js\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"utcWeek\", function() { return _utcWeek_js__WEBPACK_IMPORTED_MODULE_12__[\"utcSunday\"]; });\n\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"utcWeeks\", function() { return _utcWeek_js__WEBPACK_IMPORTED_MODULE_12__[\"utcSundays\"]; });\n\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"utcSunday\", function() { return _utcWeek_js__WEBPACK_IMPORTED_MODULE_12__[\"utcSunday\"]; });\n\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"utcSundays\", function() { return _utcWeek_js__WEBPACK_IMPORTED_MODULE_12__[\"utcSundays\"]; });\n\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"utcMonday\", function() { return _utcWeek_js__WEBPACK_IMPORTED_MODULE_12__[\"utcMonday\"]; });\n\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"utcMondays\", function() { return _utcWeek_js__WEBPACK_IMPORTED_MODULE_12__[\"utcMondays\"]; });\n\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"utcTuesday\", function() { return _utcWeek_js__WEBPACK_IMPORTED_MODULE_12__[\"utcTuesday\"]; });\n\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"utcTuesdays\", function() { return _utcWeek_js__WEBPACK_IMPORTED_MODULE_12__[\"utcTuesdays\"]; });\n\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"utcWednesday\", function() { return _utcWeek_js__WEBPACK_IMPORTED_MODULE_12__[\"utcWednesday\"]; });\n\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"utcWednesdays\", function() { return _utcWeek_js__WEBPACK_IMPORTED_MODULE_12__[\"utcWednesdays\"]; });\n\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"utcThursday\", function() { return _utcWeek_js__WEBPACK_IMPORTED_MODULE_12__[\"utcThursday\"]; });\n\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"utcThursdays\", function() { return _utcWeek_js__WEBPACK_IMPORTED_MODULE_12__[\"utcThursdays\"]; });\n\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"utcFriday\", function() { return _utcWeek_js__WEBPACK_IMPORTED_MODULE_12__[\"utcFriday\"]; });\n\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"utcFridays\", function() { return _utcWeek_js__WEBPACK_IMPORTED_MODULE_12__[\"utcFridays\"]; });\n\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"utcSaturday\", function() { return _utcWeek_js__WEBPACK_IMPORTED_MODULE_12__[\"utcSaturday\"]; });\n\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"utcSaturdays\", function() { return _utcWeek_js__WEBPACK_IMPORTED_MODULE_12__[\"utcSaturdays\"]; });\n\n/* harmony import */ var _utcMonth_js__WEBPACK_IMPORTED_MODULE_13__ = __webpack_require__(/*! ./utcMonth.js */ \"./node_modules/vega-time/node_modules/d3-time/src/utcMonth.js\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"utcMonth\", function() { return _utcMonth_js__WEBPACK_IMPORTED_MODULE_13__[\"default\"]; });\n\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"utcMonths\", function() { return _utcMonth_js__WEBPACK_IMPORTED_MODULE_13__[\"utcMonths\"]; });\n\n/* harmony import */ var _utcYear_js__WEBPACK_IMPORTED_MODULE_14__ = __webpack_require__(/*! ./utcYear.js */ \"./node_modules/vega-time/node_modules/d3-time/src/utcYear.js\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"utcYear\", function() { return _utcYear_js__WEBPACK_IMPORTED_MODULE_14__[\"default\"]; });\n\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"utcYears\", function() { return _utcYear_js__WEBPACK_IMPORTED_MODULE_14__[\"utcYears\"]; });\n\n/* harmony import */ var _ticks_js__WEBPACK_IMPORTED_MODULE_15__ = __webpack_require__(/*! ./ticks.js */ \"./node_modules/vega-time/node_modules/d3-time/src/ticks.js\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"utcTicks\", function() { return _ticks_js__WEBPACK_IMPORTED_MODULE_15__[\"utcTicks\"]; });\n\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"utcTickInterval\", function() { return _ticks_js__WEBPACK_IMPORTED_MODULE_15__[\"utcTickInterval\"]; });\n\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"timeTicks\", function() { return _ticks_js__WEBPACK_IMPORTED_MODULE_15__[\"timeTicks\"]; });\n\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"timeTickInterval\", function() { return _ticks_js__WEBPACK_IMPORTED_MODULE_15__[\"timeTickInterval\"]; });\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,[encoded data, 4584 characters]\n//# sourceURL=webpack-internal:///./node_modules/vega-time/node_modules/d3-time/src/index.js\n");

/***/ }),

/***/ "./node_modules/vega-time/node_modules/d3-time/src/interval.js":
/*!*********************************************************************!*\
  !*** ./node_modules/vega-time/node_modules/d3-time/src/interval.js ***!
  \*********************************************************************/
/*! exports provided: default */
/***/ (function(module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"default\", function() { return newInterval; });\nvar t0 = new Date,\n    t1 = new Date;\n\nfunction newInterval(floori, offseti, count, field) {\n\n  function interval(date) {\n    return floori(date = arguments.length === 0 ? new Date : new Date(+date)), date;\n  }\n\n  interval.floor = function(date) {\n    return floori(date = new Date(+date)), date;\n  };\n\n  interval.ceil = function(date) {\n    return floori(date = new Date(date - 1)), offseti(date, 1), floori(date), date;\n  };\n\n  interval.round = function(date) {\n    var d0 = interval(date),\n        d1 = interval.ceil(date);\n    return date - d0 < d1 - date ? d0 : d1;\n  };\n\n  interval.offset = function(date, step) {\n    return offseti(date = new Date(+date), step == null ? 1 : Math.floor(step)), date;\n  };\n\n  interval.range = function(start, stop, step) {\n    var range = [], previous;\n    start = interval.ceil(start);\n    step = step == null ? 1 : Math.floor(step);\n    if (!(start < stop) || !(step > 0)) return range; // also handles Invalid Date\n    do range.push(previous = new Date(+start)), offseti(start, step), floori(start);\n    while (previous < start && start < stop);\n    return range;\n  };\n\n  interval.filter = function(test) {\n    return newInterval(function(date) {\n      if (date >= date) while (floori(date), !test(date)) date.setTime(date - 1);\n    }, function(date, step) {\n      if (date >= date) {\n        if (step < 0) while (++step <= 0) {\n          while (offseti(date, -1), !test(date)) {} // eslint-disable-line no-empty\n        } else while (--step >= 0) {\n          while (offseti(date, +1), !test(date)) {} // eslint-disable-line no-empty\n        }\n      }\n    });\n  };\n\n  if (count) {\n    interval.count = function(start, end) {\n      t0.setTime(+start), t1.setTime(+end);\n      floori(t0), floori(t1);\n      return Math.floor(count(t0, t1));\n    };\n\n    interval.every = function(step) {\n      step = Math.floor(step);\n      return !isFinite(step) || !(step > 0) ? null\n          : !(step > 1) ? interval\n          : interval.filter(field\n              ? function(d) { return field(d) % step === 0; }\n              : function(d) { return interval.count(0, d) % step === 0; });\n    };\n  }\n\n  return interval;\n}\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvdmVnYS10aW1lL25vZGVfbW9kdWxlcy9kMy10aW1lL3NyYy9pbnRlcnZhbC5qcy5qcyIsInNvdXJjZXMiOlsid2VicGFjazovLy8uL25vZGVfbW9kdWxlcy92ZWdhLXRpbWUvbm9kZV9tb2R1bGVzL2QzLXRpbWUvc3JjL2ludGVydmFsLmpzPzRkODgiXSwic291cmNlc0NvbnRlbnQiOlsidmFyIHQwID0gbmV3IERhdGUsXG4gICAgdDEgPSBuZXcgRGF0ZTtcblxuZXhwb3J0IGRlZmF1bHQgZnVuY3Rpb24gbmV3SW50ZXJ2YWwoZmxvb3JpLCBvZmZzZXRpLCBjb3VudCwgZmllbGQpIHtcblxuICBmdW5jdGlvbiBpbnRlcnZhbChkYXRlKSB7XG4gICAgcmV0dXJuIGZsb29yaShkYXRlID0gYXJndW1lbnRzLmxlbmd0aCA9PT0gMCA/IG5ldyBEYXRlIDogbmV3IERhdGUoK2RhdGUpKSwgZGF0ZTtcbiAgfVxuXG4gIGludGVydmFsLmZsb29yID0gZnVuY3Rpb24oZGF0ZSkge1xuICAgIHJldHVybiBmbG9vcmkoZGF0ZSA9IG5ldyBEYXRlKCtkYXRlKSksIGRhdGU7XG4gIH07XG5cbiAgaW50ZXJ2YWwuY2VpbCA9IGZ1bmN0aW9uKGRhdGUpIHtcbiAgICByZXR1cm4gZmxvb3JpKGRhdGUgPSBuZXcgRGF0ZShkYXRlIC0gMSkpLCBvZmZzZXRpKGRhdGUsIDEpLCBmbG9vcmkoZGF0ZSksIGRhdGU7XG4gIH07XG5cbiAgaW50ZXJ2YWwucm91bmQgPSBmdW5jdGlvbihkYXRlKSB7XG4gICAgdmFyIGQwID0gaW50ZXJ2YWwoZGF0ZSksXG4gICAgICAgIGQxID0gaW50ZXJ2YWwuY2VpbChkYXRlKTtcbiAgICByZXR1cm4gZGF0ZSAtIGQwIDwgZDEgLSBkYXRlID8gZDAgOiBkMTtcbiAgfTtcblxuICBpbnRlcnZhbC5vZmZzZXQgPSBmdW5jdGlvbihkYXRlLCBzdGVwKSB7XG4gICAgcmV0dXJuIG9mZnNldGkoZGF0ZSA9IG5ldyBEYXRlKCtkYXRlKSwgc3RlcCA9PSBudWxsID8gMSA6IE1hdGguZmxvb3Ioc3RlcCkpLCBkYXRlO1xuICB9O1xuXG4gIGludGVydmFsLnJhbmdlID0gZnVuY3Rpb24oc3RhcnQsIHN0b3AsIHN0ZXApIHtcbiAgICB2YXIgcmFuZ2UgPSBbXSwgcHJldmlvdXM7XG4gICAgc3RhcnQgPSBpbnRlcnZhbC5jZWlsKHN0YXJ0KTtcbiAgICBzdGVwID0gc3RlcCA9PSBudWxsID8gMSA6IE1hdGguZmxvb3Ioc3RlcCk7XG4gICAgaWYgKCEoc3RhcnQgPCBzdG9wKSB8fCAhKHN0ZXAgPiAwKSkgcmV0dXJuIHJhbmdlOyAvLyBhbHNvIGhhbmRsZXMgSW52YWxpZCBEYXRlXG4gICAgZG8gcmFuZ2UucHVzaChwcmV2aW91cyA9IG5ldyBEYXRlKCtzdGFydCkpLCBvZmZzZXRpKHN0YXJ0LCBzdGVwKSwgZmxvb3JpKHN0YXJ0KTtcbiAgICB3aGlsZSAocHJldmlvdXMgPCBzdGFydCAmJiBzdGFydCA8IHN0b3ApO1xuICAgIHJldHVybiByYW5nZTtcbiAgfTtcblxuICBpbnRlcnZhbC5maWx0ZXIgPSBmdW5jdGlvbih0ZXN0KSB7XG4gICAgcmV0dXJuIG5ld0ludGVydmFsKGZ1bmN0aW9uKGRhdGUpIHtcbiAgICAgIGlmIChkYXRlID49IGRhdGUpIHdoaWxlIChmbG9vcmkoZGF0ZSksICF0ZXN0KGRhdGUpKSBkYXRlLnNldFRpbWUoZGF0ZSAtIDEpO1xuICAgIH0sIGZ1bmN0aW9uKGRhdGUsIHN0ZXApIHtcbiAgICAgIGlmIChkYXRlID49IGRhdGUpIHtcbiAgICAgICAgaWYgKHN0ZXAgPCAwKSB3aGlsZSAoKytzdGVwIDw9IDApIHtcbiAgICAgICAgICB3aGlsZSAob2Zmc2V0aShkYXRlLCAtMSksICF0ZXN0KGRhdGUpKSB7fSAvLyBlc2xpbnQtZGlzYWJsZS1saW5lIG5vLWVtcHR5XG4gICAgICAgIH0gZWxzZSB3aGlsZSAoLS1zdGVwID49IDApIHtcbiAgICAgICAgICB3aGlsZSAob2Zmc2V0aShkYXRlLCArMSksICF0ZXN0KGRhdGUpKSB7fSAvLyBlc2xpbnQtZGlzYWJsZS1saW5lIG5vLWVtcHR5XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9KTtcbiAgfTtcblxuICBpZiAoY291bnQpIHtcbiAgICBpbnRlcnZhbC5jb3VudCA9IGZ1bmN0aW9uKHN0YXJ0LCBlbmQpIHtcbiAgICAgIHQwLnNldFRpbWUoK3N0YXJ0KSwgdDEuc2V0VGltZSgrZW5kKTtcbiAgICAgIGZsb29yaSh0MCksIGZsb29yaSh0MSk7XG4gICAgICByZXR1cm4gTWF0aC5mbG9vcihjb3VudCh0MCwgdDEpKTtcbiAgICB9O1xuXG4gICAgaW50ZXJ2YWwuZXZlcnkgPSBmdW5jdGlvbihzdGVwKSB7XG4gICAgICBzdGVwID0gTWF0aC5mbG9vcihzdGVwKTtcbiAgICAgIHJldHVybiAhaXNGaW5pdGUoc3RlcCkgfHwgIShzdGVwID4gMCkgPyBudWxsXG4gICAgICAgICAgOiAhKHN0ZXAgPiAxKSA/IGludGVydmFsXG4gICAgICAgICAgOiBpbnRlcnZhbC5maWx0ZXIoZmllbGRcbiAgICAgICAgICAgICAgPyBmdW5jdGlvbihkKSB7IHJldHVybiBmaWVsZChkKSAlIHN0ZXAgPT09IDA7IH1cbiAgICAgICAgICAgICAgOiBmdW5jdGlvbihkKSB7IHJldHVybiBpbnRlcnZhbC5jb3VudCgwLCBkKSAlIHN0ZXAgPT09IDA7IH0pO1xuICAgIH07XG4gIH1cblxuICByZXR1cm4gaW50ZXJ2YWw7XG59XG4iXSwibWFwcGluZ3MiOiJBQUFBO0FBQUE7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTsiLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///./node_modules/vega-time/node_modules/d3-time/src/interval.js\n");

/***/ }),

/***/ "./node_modules/vega-time/node_modules/d3-time/src/millisecond.js":
/*!************************************************************************!*\
  !*** ./node_modules/vega-time/node_modules/d3-time/src/millisecond.js ***!
  \************************************************************************/
/*! exports provided: default, milliseconds */
/***/ (function(module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"milliseconds\", function() { return milliseconds; });\n/* harmony import */ var _interval_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./interval.js */ \"./node_modules/vega-time/node_modules/d3-time/src/interval.js\");\n\n\nvar millisecond = Object(_interval_js__WEBPACK_IMPORTED_MODULE_0__[\"default\"])(function() {\n  // noop\n}, function(date, step) {\n  date.setTime(+date + step);\n}, function(start, end) {\n  return end - start;\n});\n\n// An optimized implementation for this simple case.\nmillisecond.every = function(k) {\n  k = Math.floor(k);\n  if (!isFinite(k) || !(k > 0)) return null;\n  if (!(k > 1)) return millisecond;\n  return Object(_interval_js__WEBPACK_IMPORTED_MODULE_0__[\"default\"])(function(date) {\n    date.setTime(Math.floor(date / k) * k);\n  }, function(date, step) {\n    date.setTime(+date + step * k);\n  }, function(start, end) {\n    return (end - start) / k;\n  });\n};\n\n/* harmony default export */ __webpack_exports__[\"default\"] = (millisecond);\nvar milliseconds = millisecond.range;\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvdmVnYS10aW1lL25vZGVfbW9kdWxlcy9kMy10aW1lL3NyYy9taWxsaXNlY29uZC5qcy5qcyIsInNvdXJjZXMiOlsid2VicGFjazovLy8uL25vZGVfbW9kdWxlcy92ZWdhLXRpbWUvbm9kZV9tb2R1bGVzL2QzLXRpbWUvc3JjL21pbGxpc2Vjb25kLmpzPzEwZjAiXSwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IGludGVydmFsIGZyb20gXCIuL2ludGVydmFsLmpzXCI7XG5cbnZhciBtaWxsaXNlY29uZCA9IGludGVydmFsKGZ1bmN0aW9uKCkge1xuICAvLyBub29wXG59LCBmdW5jdGlvbihkYXRlLCBzdGVwKSB7XG4gIGRhdGUuc2V0VGltZSgrZGF0ZSArIHN0ZXApO1xufSwgZnVuY3Rpb24oc3RhcnQsIGVuZCkge1xuICByZXR1cm4gZW5kIC0gc3RhcnQ7XG59KTtcblxuLy8gQW4gb3B0aW1pemVkIGltcGxlbWVudGF0aW9uIGZvciB0aGlzIHNpbXBsZSBjYXNlLlxubWlsbGlzZWNvbmQuZXZlcnkgPSBmdW5jdGlvbihrKSB7XG4gIGsgPSBNYXRoLmZsb29yKGspO1xuICBpZiAoIWlzRmluaXRlKGspIHx8ICEoayA+IDApKSByZXR1cm4gbnVsbDtcbiAgaWYgKCEoayA+IDEpKSByZXR1cm4gbWlsbGlzZWNvbmQ7XG4gIHJldHVybiBpbnRlcnZhbChmdW5jdGlvbihkYXRlKSB7XG4gICAgZGF0ZS5zZXRUaW1lKE1hdGguZmxvb3IoZGF0ZSAvIGspICogayk7XG4gIH0sIGZ1bmN0aW9uKGRhdGUsIHN0ZXApIHtcbiAgICBkYXRlLnNldFRpbWUoK2RhdGUgKyBzdGVwICogayk7XG4gIH0sIGZ1bmN0aW9uKHN0YXJ0LCBlbmQpIHtcbiAgICByZXR1cm4gKGVuZCAtIHN0YXJ0KSAvIGs7XG4gIH0pO1xufTtcblxuZXhwb3J0IGRlZmF1bHQgbWlsbGlzZWNvbmQ7XG5leHBvcnQgdmFyIG1pbGxpc2Vjb25kcyA9IG1pbGxpc2Vjb25kLnJhbmdlO1xuIl0sIm1hcHBpbmdzIjoiQUFBQTtBQUFBO0FBQUE7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOyIsInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///./node_modules/vega-time/node_modules/d3-time/src/millisecond.js\n");

/***/ }),

/***/ "./node_modules/vega-time/node_modules/d3-time/src/minute.js":
/*!*******************************************************************!*\
  !*** ./node_modules/vega-time/node_modules/d3-time/src/minute.js ***!
  \*******************************************************************/
/*! exports provided: default, minutes */
/***/ (function(module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"minutes\", function() { return minutes; });\n/* harmony import */ var _interval_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./interval.js */ \"./node_modules/vega-time/node_modules/d3-time/src/interval.js\");\n/* harmony import */ var _duration_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./duration.js */ \"./node_modules/vega-time/node_modules/d3-time/src/duration.js\");\n\n\n\nvar minute = Object(_interval_js__WEBPACK_IMPORTED_MODULE_0__[\"default\"])(function(date) {\n  date.setTime(date - date.getMilliseconds() - date.getSeconds() * _duration_js__WEBPACK_IMPORTED_MODULE_1__[\"durationSecond\"]);\n}, function(date, step) {\n  date.setTime(+date + step * _duration_js__WEBPACK_IMPORTED_MODULE_1__[\"durationMinute\"]);\n}, function(start, end) {\n  return (end - start) / _duration_js__WEBPACK_IMPORTED_MODULE_1__[\"durationMinute\"];\n}, function(date) {\n  return date.getMinutes();\n});\n\n/* harmony default export */ __webpack_exports__[\"default\"] = (minute);\nvar minutes = minute.range;\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvdmVnYS10aW1lL25vZGVfbW9kdWxlcy9kMy10aW1lL3NyYy9taW51dGUuanMuanMiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvdmVnYS10aW1lL25vZGVfbW9kdWxlcy9kMy10aW1lL3NyYy9taW51dGUuanM/NzEyMyJdLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgaW50ZXJ2YWwgZnJvbSBcIi4vaW50ZXJ2YWwuanNcIjtcbmltcG9ydCB7ZHVyYXRpb25NaW51dGUsIGR1cmF0aW9uU2Vjb25kfSBmcm9tIFwiLi9kdXJhdGlvbi5qc1wiO1xuXG52YXIgbWludXRlID0gaW50ZXJ2YWwoZnVuY3Rpb24oZGF0ZSkge1xuICBkYXRlLnNldFRpbWUoZGF0ZSAtIGRhdGUuZ2V0TWlsbGlzZWNvbmRzKCkgLSBkYXRlLmdldFNlY29uZHMoKSAqIGR1cmF0aW9uU2Vjb25kKTtcbn0sIGZ1bmN0aW9uKGRhdGUsIHN0ZXApIHtcbiAgZGF0ZS5zZXRUaW1lKCtkYXRlICsgc3RlcCAqIGR1cmF0aW9uTWludXRlKTtcbn0sIGZ1bmN0aW9uKHN0YXJ0LCBlbmQpIHtcbiAgcmV0dXJuIChlbmQgLSBzdGFydCkgLyBkdXJhdGlvbk1pbnV0ZTtcbn0sIGZ1bmN0aW9uKGRhdGUpIHtcbiAgcmV0dXJuIGRhdGUuZ2V0TWludXRlcygpO1xufSk7XG5cbmV4cG9ydCBkZWZhdWx0IG1pbnV0ZTtcbmV4cG9ydCB2YXIgbWludXRlcyA9IG1pbnV0ZS5yYW5nZTtcbiJdLCJtYXBwaW5ncyI6IkFBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7Iiwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///./node_modules/vega-time/node_modules/d3-time/src/minute.js\n");

/***/ }),

/***/ "./node_modules/vega-time/node_modules/d3-time/src/month.js":
/*!******************************************************************!*\
  !*** ./node_modules/vega-time/node_modules/d3-time/src/month.js ***!
  \******************************************************************/
/*! exports provided: default, months */
/***/ (function(module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"months\", function() { return months; });\n/* harmony import */ var _interval_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./interval.js */ \"./node_modules/vega-time/node_modules/d3-time/src/interval.js\");\n\n\nvar month = Object(_interval_js__WEBPACK_IMPORTED_MODULE_0__[\"default\"])(function(date) {\n  date.setDate(1);\n  date.setHours(0, 0, 0, 0);\n}, function(date, step) {\n  date.setMonth(date.getMonth() + step);\n}, function(start, end) {\n  return end.getMonth() - start.getMonth() + (end.getFullYear() - start.getFullYear()) * 12;\n}, function(date) {\n  return date.getMonth();\n});\n\n/* harmony default export */ __webpack_exports__[\"default\"] = (month);\nvar months = month.range;\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvdmVnYS10aW1lL25vZGVfbW9kdWxlcy9kMy10aW1lL3NyYy9tb250aC5qcy5qcyIsInNvdXJjZXMiOlsid2VicGFjazovLy8uL25vZGVfbW9kdWxlcy92ZWdhLXRpbWUvbm9kZV9tb2R1bGVzL2QzLXRpbWUvc3JjL21vbnRoLmpzPzZiNjgiXSwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IGludGVydmFsIGZyb20gXCIuL2ludGVydmFsLmpzXCI7XG5cbnZhciBtb250aCA9IGludGVydmFsKGZ1bmN0aW9uKGRhdGUpIHtcbiAgZGF0ZS5zZXREYXRlKDEpO1xuICBkYXRlLnNldEhvdXJzKDAsIDAsIDAsIDApO1xufSwgZnVuY3Rpb24oZGF0ZSwgc3RlcCkge1xuICBkYXRlLnNldE1vbnRoKGRhdGUuZ2V0TW9udGgoKSArIHN0ZXApO1xufSwgZnVuY3Rpb24oc3RhcnQsIGVuZCkge1xuICByZXR1cm4gZW5kLmdldE1vbnRoKCkgLSBzdGFydC5nZXRNb250aCgpICsgKGVuZC5nZXRGdWxsWWVhcigpIC0gc3RhcnQuZ2V0RnVsbFllYXIoKSkgKiAxMjtcbn0sIGZ1bmN0aW9uKGRhdGUpIHtcbiAgcmV0dXJuIGRhdGUuZ2V0TW9udGgoKTtcbn0pO1xuXG5leHBvcnQgZGVmYXVsdCBtb250aDtcbmV4cG9ydCB2YXIgbW9udGhzID0gbW9udGgucmFuZ2U7XG4iXSwibWFwcGluZ3MiOiJBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTsiLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///./node_modules/vega-time/node_modules/d3-time/src/month.js\n");

/***/ }),

/***/ "./node_modules/vega-time/node_modules/d3-time/src/second.js":
/*!*******************************************************************!*\
  !*** ./node_modules/vega-time/node_modules/d3-time/src/second.js ***!
  \*******************************************************************/
/*! exports provided: default, seconds */
/***/ (function(module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"seconds\", function() { return seconds; });\n/* harmony import */ var _interval_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./interval.js */ \"./node_modules/vega-time/node_modules/d3-time/src/interval.js\");\n/* harmony import */ var _duration_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./duration.js */ \"./node_modules/vega-time/node_modules/d3-time/src/duration.js\");\n\n\n\nvar second = Object(_interval_js__WEBPACK_IMPORTED_MODULE_0__[\"default\"])(function(date) {\n  date.setTime(date - date.getMilliseconds());\n}, function(date, step) {\n  date.setTime(+date + step * _duration_js__WEBPACK_IMPORTED_MODULE_1__[\"durationSecond\"]);\n}, function(start, end) {\n  return (end - start) / _duration_js__WEBPACK_IMPORTED_MODULE_1__[\"durationSecond\"];\n}, function(date) {\n  return date.getUTCSeconds();\n});\n\n/* harmony default export */ __webpack_exports__[\"default\"] = (second);\nvar seconds = second.range;\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvdmVnYS10aW1lL25vZGVfbW9kdWxlcy9kMy10aW1lL3NyYy9zZWNvbmQuanMuanMiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvdmVnYS10aW1lL25vZGVfbW9kdWxlcy9kMy10aW1lL3NyYy9zZWNvbmQuanM/ODU0MiJdLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgaW50ZXJ2YWwgZnJvbSBcIi4vaW50ZXJ2YWwuanNcIjtcbmltcG9ydCB7ZHVyYXRpb25TZWNvbmR9IGZyb20gXCIuL2R1cmF0aW9uLmpzXCI7XG5cbnZhciBzZWNvbmQgPSBpbnRlcnZhbChmdW5jdGlvbihkYXRlKSB7XG4gIGRhdGUuc2V0VGltZShkYXRlIC0gZGF0ZS5nZXRNaWxsaXNlY29uZHMoKSk7XG59LCBmdW5jdGlvbihkYXRlLCBzdGVwKSB7XG4gIGRhdGUuc2V0VGltZSgrZGF0ZSArIHN0ZXAgKiBkdXJhdGlvblNlY29uZCk7XG59LCBmdW5jdGlvbihzdGFydCwgZW5kKSB7XG4gIHJldHVybiAoZW5kIC0gc3RhcnQpIC8gZHVyYXRpb25TZWNvbmQ7XG59LCBmdW5jdGlvbihkYXRlKSB7XG4gIHJldHVybiBkYXRlLmdldFVUQ1NlY29uZHMoKTtcbn0pO1xuXG5leHBvcnQgZGVmYXVsdCBzZWNvbmQ7XG5leHBvcnQgdmFyIHNlY29uZHMgPSBzZWNvbmQucmFuZ2U7XG4iXSwibWFwcGluZ3MiOiJBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOyIsInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///./node_modules/vega-time/node_modules/d3-time/src/second.js\n");

/***/ }),

/***/ "./node_modules/vega-time/node_modules/d3-time/src/ticks.js":
/*!******************************************************************!*\
  !*** ./node_modules/vega-time/node_modules/d3-time/src/ticks.js ***!
  \******************************************************************/
/*! exports provided: utcTicks, utcTickInterval, timeTicks, timeTickInterval */
/***/ (function(module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"utcTicks\", function() { return utcTicks; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"utcTickInterval\", function() { return utcTickInterval; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"timeTicks\", function() { return timeTicks; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"timeTickInterval\", function() { return timeTickInterval; });\n/* harmony import */ var d3_array__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! d3-array */ \"./node_modules/d3-array/src/index.js\");\n/* harmony import */ var _duration_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./duration.js */ \"./node_modules/vega-time/node_modules/d3-time/src/duration.js\");\n/* harmony import */ var _millisecond_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./millisecond.js */ \"./node_modules/vega-time/node_modules/d3-time/src/millisecond.js\");\n/* harmony import */ var _second_js__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ./second.js */ \"./node_modules/vega-time/node_modules/d3-time/src/second.js\");\n/* harmony import */ var _minute_js__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ./minute.js */ \"./node_modules/vega-time/node_modules/d3-time/src/minute.js\");\n/* harmony import */ var _hour_js__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! ./hour.js */ \"./node_modules/vega-time/node_modules/d3-time/src/hour.js\");\n/* harmony import */ var _day_js__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! ./day.js */ \"./node_modules/vega-time/node_modules/d3-time/src/day.js\");\n/* harmony import */ var _week_js__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! ./week.js */ \"./node_modules/vega-time/node_modules/d3-time/src/week.js\");\n/* harmony import */ var _month_js__WEBPACK_IMPORTED_MODULE_8__ = __webpack_require__(/*! ./month.js */ \"./node_modules/vega-time/node_modules/d3-time/src/month.js\");\n/* harmony import */ var _year_js__WEBPACK_IMPORTED_MODULE_9__ = __webpack_require__(/*! ./year.js */ \"./node_modules/vega-time/node_modules/d3-time/src/year.js\");\n/* harmony import */ var _utcMinute_js__WEBPACK_IMPORTED_MODULE_10__ = __webpack_require__(/*! ./utcMinute.js */ \"./node_modules/vega-time/node_modules/d3-time/src/utcMinute.js\");\n/* harmony import */ var _utcHour_js__WEBPACK_IMPORTED_MODULE_11__ = __webpack_require__(/*! ./utcHour.js */ \"./node_modules/vega-time/node_modules/d3-time/src/utcHour.js\");\n/* harmony import */ var _utcDay_js__WEBPACK_IMPORTED_MODULE_12__ = __webpack_require__(/*! ./utcDay.js */ \"./node_modules/vega-time/node_modules/d3-time/src/utcDay.js\");\n/* harmony import */ var _utcWeek_js__WEBPACK_IMPORTED_MODULE_13__ = __webpack_require__(/*! ./utcWeek.js */ \"./node_modules/vega-time/node_modules/d3-time/src/utcWeek.js\");\n/* harmony import */ var _utcMonth_js__WEBPACK_IMPORTED_MODULE_14__ = __webpack_require__(/*! ./utcMonth.js */ \"./node_modules/vega-time/node_modules/d3-time/src/utcMonth.js\");\n/* harmony import */ var _utcYear_js__WEBPACK_IMPORTED_MODULE_15__ = __webpack_require__(/*! ./utcYear.js */ \"./node_modules/vega-time/node_modules/d3-time/src/utcYear.js\");\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\nfunction ticker(year, month, week, day, hour, minute) {\n\n  const tickIntervals = [\n    [_second_js__WEBPACK_IMPORTED_MODULE_3__[\"default\"],  1,      _duration_js__WEBPACK_IMPORTED_MODULE_1__[\"durationSecond\"]],\n    [_second_js__WEBPACK_IMPORTED_MODULE_3__[\"default\"],  5,  5 * _duration_js__WEBPACK_IMPORTED_MODULE_1__[\"durationSecond\"]],\n    [_second_js__WEBPACK_IMPORTED_MODULE_3__[\"default\"], 15, 15 * _duration_js__WEBPACK_IMPORTED_MODULE_1__[\"durationSecond\"]],\n    [_second_js__WEBPACK_IMPORTED_MODULE_3__[\"default\"], 30, 30 * _duration_js__WEBPACK_IMPORTED_MODULE_1__[\"durationSecond\"]],\n    [minute,  1,      _duration_js__WEBPACK_IMPORTED_MODULE_1__[\"durationMinute\"]],\n    [minute,  5,  5 * _duration_js__WEBPACK_IMPORTED_MODULE_1__[\"durationMinute\"]],\n    [minute, 15, 15 * _duration_js__WEBPACK_IMPORTED_MODULE_1__[\"durationMinute\"]],\n    [minute, 30, 30 * _duration_js__WEBPACK_IMPORTED_MODULE_1__[\"durationMinute\"]],\n    [  hour,  1,      _duration_js__WEBPACK_IMPORTED_MODULE_1__[\"durationHour\"]  ],\n    [  hour,  3,  3 * _duration_js__WEBPACK_IMPORTED_MODULE_1__[\"durationHour\"]  ],\n    [  hour,  6,  6 * _duration_js__WEBPACK_IMPORTED_MODULE_1__[\"durationHour\"]  ],\n    [  hour, 12, 12 * _duration_js__WEBPACK_IMPORTED_MODULE_1__[\"durationHour\"]  ],\n    [   day,  1,      _duration_js__WEBPACK_IMPORTED_MODULE_1__[\"durationDay\"]   ],\n    [   day,  2,  2 * _duration_js__WEBPACK_IMPORTED_MODULE_1__[\"durationDay\"]   ],\n    [  week,  1,      _duration_js__WEBPACK_IMPORTED_MODULE_1__[\"durationWeek\"]  ],\n    [ month,  1,      _duration_js__WEBPACK_IMPORTED_MODULE_1__[\"durationMonth\"] ],\n    [ month,  3,  3 * _duration_js__WEBPACK_IMPORTED_MODULE_1__[\"durationMonth\"] ],\n    [  year,  1,      _duration_js__WEBPACK_IMPORTED_MODULE_1__[\"durationYear\"]  ]\n  ];\n\n  function ticks(start, stop, count) {\n    const reverse = stop < start;\n    if (reverse) [start, stop] = [stop, start];\n    const interval = count && typeof count.range === \"function\" ? count : tickInterval(start, stop, count);\n    const ticks = interval ? interval.range(start, +stop + 1) : []; // inclusive stop\n    return reverse ? ticks.reverse() : ticks;\n  }\n\n  function tickInterval(start, stop, count) {\n    const target = Math.abs(stop - start) / count;\n    const i = Object(d3_array__WEBPACK_IMPORTED_MODULE_0__[\"bisector\"])(([,, step]) => step).right(tickIntervals, target);\n    if (i === tickIntervals.length) return year.every(Object(d3_array__WEBPACK_IMPORTED_MODULE_0__[\"tickStep\"])(start / _duration_js__WEBPACK_IMPORTED_MODULE_1__[\"durationYear\"], stop / _duration_js__WEBPACK_IMPORTED_MODULE_1__[\"durationYear\"], count));\n    if (i === 0) return _millisecond_js__WEBPACK_IMPORTED_MODULE_2__[\"default\"].every(Math.max(Object(d3_array__WEBPACK_IMPORTED_MODULE_0__[\"tickStep\"])(start, stop, count), 1));\n    const [t, step] = tickIntervals[target / tickIntervals[i - 1][2] < tickIntervals[i][2] / target ? i - 1 : i];\n    return t.every(step);\n  }\n\n  return [ticks, tickInterval];\n}\n\nconst [utcTicks, utcTickInterval] = ticker(_utcYear_js__WEBPACK_IMPORTED_MODULE_15__[\"default\"], _utcMonth_js__WEBPACK_IMPORTED_MODULE_14__[\"default\"], _utcWeek_js__WEBPACK_IMPORTED_MODULE_13__[\"utcSunday\"], _utcDay_js__WEBPACK_IMPORTED_MODULE_12__[\"default\"], _utcHour_js__WEBPACK_IMPORTED_MODULE_11__[\"default\"], _utcMinute_js__WEBPACK_IMPORTED_MODULE_10__[\"default\"]);\nconst [timeTicks, timeTickInterval] = ticker(_year_js__WEBPACK_IMPORTED_MODULE_9__[\"default\"], _month_js__WEBPACK_IMPORTED_MODULE_8__[\"default\"], _week_js__WEBPACK_IMPORTED_MODULE_7__[\"sunday\"], _day_js__WEBPACK_IMPORTED_MODULE_6__[\"default\"], _hour_js__WEBPACK_IMPORTED_MODULE_5__[\"default\"], _minute_js__WEBPACK_IMPORTED_MODULE_4__[\"default\"]);\n\n\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,[encoded data, 4524 characters]\n//# sourceURL=webpack-internal:///./node_modules/vega-time/node_modules/d3-time/src/ticks.js\n");

/***/ }),

/***/ "./node_modules/vega-time/node_modules/d3-time/src/utcDay.js":
/*!*******************************************************************!*\
  !*** ./node_modules/vega-time/node_modules/d3-time/src/utcDay.js ***!
  \*******************************************************************/
/*! exports provided: default, utcDays */
/***/ (function(module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"utcDays\", function() { return utcDays; });\n/* harmony import */ var _interval_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./interval.js */ \"./node_modules/vega-time/node_modules/d3-time/src/interval.js\");\n/* harmony import */ var _duration_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./duration.js */ \"./node_modules/vega-time/node_modules/d3-time/src/duration.js\");\n\n\n\nvar utcDay = Object(_interval_js__WEBPACK_IMPORTED_MODULE_0__[\"default\"])(function(date) {\n  date.setUTCHours(0, 0, 0, 0);\n}, function(date, step) {\n  date.setUTCDate(date.getUTCDate() + step);\n}, function(start, end) {\n  return (end - start) / _duration_js__WEBPACK_IMPORTED_MODULE_1__[\"durationDay\"];\n}, function(date) {\n  return date.getUTCDate() - 1;\n});\n\n/* harmony default export */ __webpack_exports__[\"default\"] = (utcDay);\nvar utcDays = utcDay.range;\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvdmVnYS10aW1lL25vZGVfbW9kdWxlcy9kMy10aW1lL3NyYy91dGNEYXkuanMuanMiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvdmVnYS10aW1lL25vZGVfbW9kdWxlcy9kMy10aW1lL3NyYy91dGNEYXkuanM/OGU5OCJdLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgaW50ZXJ2YWwgZnJvbSBcIi4vaW50ZXJ2YWwuanNcIjtcbmltcG9ydCB7ZHVyYXRpb25EYXl9IGZyb20gXCIuL2R1cmF0aW9uLmpzXCI7XG5cbnZhciB1dGNEYXkgPSBpbnRlcnZhbChmdW5jdGlvbihkYXRlKSB7XG4gIGRhdGUuc2V0VVRDSG91cnMoMCwgMCwgMCwgMCk7XG59LCBmdW5jdGlvbihkYXRlLCBzdGVwKSB7XG4gIGRhdGUuc2V0VVRDRGF0ZShkYXRlLmdldFVUQ0RhdGUoKSArIHN0ZXApO1xufSwgZnVuY3Rpb24oc3RhcnQsIGVuZCkge1xuICByZXR1cm4gKGVuZCAtIHN0YXJ0KSAvIGR1cmF0aW9uRGF5O1xufSwgZnVuY3Rpb24oZGF0ZSkge1xuICByZXR1cm4gZGF0ZS5nZXRVVENEYXRlKCkgLSAxO1xufSk7XG5cbmV4cG9ydCBkZWZhdWx0IHV0Y0RheTtcbmV4cG9ydCB2YXIgdXRjRGF5cyA9IHV0Y0RheS5yYW5nZTtcbiJdLCJtYXBwaW5ncyI6IkFBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7Iiwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///./node_modules/vega-time/node_modules/d3-time/src/utcDay.js\n");

/***/ }),

/***/ "./node_modules/vega-time/node_modules/d3-time/src/utcHour.js":
/*!********************************************************************!*\
  !*** ./node_modules/vega-time/node_modules/d3-time/src/utcHour.js ***!
  \********************************************************************/
/*! exports provided: default, utcHours */
/***/ (function(module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"utcHours\", function() { return utcHours; });\n/* harmony import */ var _interval_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./interval.js */ \"./node_modules/vega-time/node_modules/d3-time/src/interval.js\");\n/* harmony import */ var _duration_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./duration.js */ \"./node_modules/vega-time/node_modules/d3-time/src/duration.js\");\n\n\n\nvar utcHour = Object(_interval_js__WEBPACK_IMPORTED_MODULE_0__[\"default\"])(function(date) {\n  date.setUTCMinutes(0, 0, 0);\n}, function(date, step) {\n  date.setTime(+date + step * _duration_js__WEBPACK_IMPORTED_MODULE_1__[\"durationHour\"]);\n}, function(start, end) {\n  return (end - start) / _duration_js__WEBPACK_IMPORTED_MODULE_1__[\"durationHour\"];\n}, function(date) {\n  return date.getUTCHours();\n});\n\n/* harmony default export */ __webpack_exports__[\"default\"] = (utcHour);\nvar utcHours = utcHour.range;\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvdmVnYS10aW1lL25vZGVfbW9kdWxlcy9kMy10aW1lL3NyYy91dGNIb3VyLmpzLmpzIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL3ZlZ2EtdGltZS9ub2RlX21vZHVsZXMvZDMtdGltZS9zcmMvdXRjSG91ci5qcz9kZjQ4Il0sInNvdXJjZXNDb250ZW50IjpbImltcG9ydCBpbnRlcnZhbCBmcm9tIFwiLi9pbnRlcnZhbC5qc1wiO1xuaW1wb3J0IHtkdXJhdGlvbkhvdXJ9IGZyb20gXCIuL2R1cmF0aW9uLmpzXCI7XG5cbnZhciB1dGNIb3VyID0gaW50ZXJ2YWwoZnVuY3Rpb24oZGF0ZSkge1xuICBkYXRlLnNldFVUQ01pbnV0ZXMoMCwgMCwgMCk7XG59LCBmdW5jdGlvbihkYXRlLCBzdGVwKSB7XG4gIGRhdGUuc2V0VGltZSgrZGF0ZSArIHN0ZXAgKiBkdXJhdGlvbkhvdXIpO1xufSwgZnVuY3Rpb24oc3RhcnQsIGVuZCkge1xuICByZXR1cm4gKGVuZCAtIHN0YXJ0KSAvIGR1cmF0aW9uSG91cjtcbn0sIGZ1bmN0aW9uKGRhdGUpIHtcbiAgcmV0dXJuIGRhdGUuZ2V0VVRDSG91cnMoKTtcbn0pO1xuXG5leHBvcnQgZGVmYXVsdCB1dGNIb3VyO1xuZXhwb3J0IHZhciB1dGNIb3VycyA9IHV0Y0hvdXIucmFuZ2U7XG4iXSwibWFwcGluZ3MiOiJBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOyIsInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///./node_modules/vega-time/node_modules/d3-time/src/utcHour.js\n");

/***/ }),

/***/ "./node_modules/vega-time/node_modules/d3-time/src/utcMinute.js":
/*!**********************************************************************!*\
  !*** ./node_modules/vega-time/node_modules/d3-time/src/utcMinute.js ***!
  \**********************************************************************/
/*! exports provided: default, utcMinutes */
/***/ (function(module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"utcMinutes\", function() { return utcMinutes; });\n/* harmony import */ var _interval_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./interval.js */ \"./node_modules/vega-time/node_modules/d3-time/src/interval.js\");\n/* harmony import */ var _duration_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./duration.js */ \"./node_modules/vega-time/node_modules/d3-time/src/duration.js\");\n\n\n\nvar utcMinute = Object(_interval_js__WEBPACK_IMPORTED_MODULE_0__[\"default\"])(function(date) {\n  date.setUTCSeconds(0, 0);\n}, function(date, step) {\n  date.setTime(+date + step * _duration_js__WEBPACK_IMPORTED_MODULE_1__[\"durationMinute\"]);\n}, function(start, end) {\n  return (end - start) / _duration_js__WEBPACK_IMPORTED_MODULE_1__[\"durationMinute\"];\n}, function(date) {\n  return date.getUTCMinutes();\n});\n\n/* harmony default export */ __webpack_exports__[\"default\"] = (utcMinute);\nvar utcMinutes = utcMinute.range;\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvdmVnYS10aW1lL25vZGVfbW9kdWxlcy9kMy10aW1lL3NyYy91dGNNaW51dGUuanMuanMiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvdmVnYS10aW1lL25vZGVfbW9kdWxlcy9kMy10aW1lL3NyYy91dGNNaW51dGUuanM/MzNhNiJdLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgaW50ZXJ2YWwgZnJvbSBcIi4vaW50ZXJ2YWwuanNcIjtcbmltcG9ydCB7ZHVyYXRpb25NaW51dGV9IGZyb20gXCIuL2R1cmF0aW9uLmpzXCI7XG5cbnZhciB1dGNNaW51dGUgPSBpbnRlcnZhbChmdW5jdGlvbihkYXRlKSB7XG4gIGRhdGUuc2V0VVRDU2Vjb25kcygwLCAwKTtcbn0sIGZ1bmN0aW9uKGRhdGUsIHN0ZXApIHtcbiAgZGF0ZS5zZXRUaW1lKCtkYXRlICsgc3RlcCAqIGR1cmF0aW9uTWludXRlKTtcbn0sIGZ1bmN0aW9uKHN0YXJ0LCBlbmQpIHtcbiAgcmV0dXJuIChlbmQgLSBzdGFydCkgLyBkdXJhdGlvbk1pbnV0ZTtcbn0sIGZ1bmN0aW9uKGRhdGUpIHtcbiAgcmV0dXJuIGRhdGUuZ2V0VVRDTWludXRlcygpO1xufSk7XG5cbmV4cG9ydCBkZWZhdWx0IHV0Y01pbnV0ZTtcbmV4cG9ydCB2YXIgdXRjTWludXRlcyA9IHV0Y01pbnV0ZS5yYW5nZTtcbiJdLCJtYXBwaW5ncyI6IkFBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7Iiwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///./node_modules/vega-time/node_modules/d3-time/src/utcMinute.js\n");

/***/ }),

/***/ "./node_modules/vega-time/node_modules/d3-time/src/utcMonth.js":
/*!*********************************************************************!*\
  !*** ./node_modules/vega-time/node_modules/d3-time/src/utcMonth.js ***!
  \*********************************************************************/
/*! exports provided: default, utcMonths */
/***/ (function(module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"utcMonths\", function() { return utcMonths; });\n/* harmony import */ var _interval_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./interval.js */ \"./node_modules/vega-time/node_modules/d3-time/src/interval.js\");\n\n\nvar utcMonth = Object(_interval_js__WEBPACK_IMPORTED_MODULE_0__[\"default\"])(function(date) {\n  date.setUTCDate(1);\n  date.setUTCHours(0, 0, 0, 0);\n}, function(date, step) {\n  date.setUTCMonth(date.getUTCMonth() + step);\n}, function(start, end) {\n  return end.getUTCMonth() - start.getUTCMonth() + (end.getUTCFullYear() - start.getUTCFullYear()) * 12;\n}, function(date) {\n  return date.getUTCMonth();\n});\n\n/* harmony default export */ __webpack_exports__[\"default\"] = (utcMonth);\nvar utcMonths = utcMonth.range;\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvdmVnYS10aW1lL25vZGVfbW9kdWxlcy9kMy10aW1lL3NyYy91dGNNb250aC5qcy5qcyIsInNvdXJjZXMiOlsid2VicGFjazovLy8uL25vZGVfbW9kdWxlcy92ZWdhLXRpbWUvbm9kZV9tb2R1bGVzL2QzLXRpbWUvc3JjL3V0Y01vbnRoLmpzPzBjZTEiXSwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IGludGVydmFsIGZyb20gXCIuL2ludGVydmFsLmpzXCI7XG5cbnZhciB1dGNNb250aCA9IGludGVydmFsKGZ1bmN0aW9uKGRhdGUpIHtcbiAgZGF0ZS5zZXRVVENEYXRlKDEpO1xuICBkYXRlLnNldFVUQ0hvdXJzKDAsIDAsIDAsIDApO1xufSwgZnVuY3Rpb24oZGF0ZSwgc3RlcCkge1xuICBkYXRlLnNldFVUQ01vbnRoKGRhdGUuZ2V0VVRDTW9udGgoKSArIHN0ZXApO1xufSwgZnVuY3Rpb24oc3RhcnQsIGVuZCkge1xuICByZXR1cm4gZW5kLmdldFVUQ01vbnRoKCkgLSBzdGFydC5nZXRVVENNb250aCgpICsgKGVuZC5nZXRVVENGdWxsWWVhcigpIC0gc3RhcnQuZ2V0VVRDRnVsbFllYXIoKSkgKiAxMjtcbn0sIGZ1bmN0aW9uKGRhdGUpIHtcbiAgcmV0dXJuIGRhdGUuZ2V0VVRDTW9udGgoKTtcbn0pO1xuXG5leHBvcnQgZGVmYXVsdCB1dGNNb250aDtcbmV4cG9ydCB2YXIgdXRjTW9udGhzID0gdXRjTW9udGgucmFuZ2U7XG4iXSwibWFwcGluZ3MiOiJBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTsiLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///./node_modules/vega-time/node_modules/d3-time/src/utcMonth.js\n");

/***/ }),

/***/ "./node_modules/vega-time/node_modules/d3-time/src/utcWeek.js":
/*!********************************************************************!*\
  !*** ./node_modules/vega-time/node_modules/d3-time/src/utcWeek.js ***!
  \********************************************************************/
/*! exports provided: utcSunday, utcMonday, utcTuesday, utcWednesday, utcThursday, utcFriday, utcSaturday, utcSundays, utcMondays, utcTuesdays, utcWednesdays, utcThursdays, utcFridays, utcSaturdays */
/***/ (function(module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"utcSunday\", function() { return utcSunday; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"utcMonday\", function() { return utcMonday; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"utcTuesday\", function() { return utcTuesday; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"utcWednesday\", function() { return utcWednesday; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"utcThursday\", function() { return utcThursday; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"utcFriday\", function() { return utcFriday; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"utcSaturday\", function() { return utcSaturday; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"utcSundays\", function() { return utcSundays; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"utcMondays\", function() { return utcMondays; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"utcTuesdays\", function() { return utcTuesdays; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"utcWednesdays\", function() { return utcWednesdays; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"utcThursdays\", function() { return utcThursdays; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"utcFridays\", function() { return utcFridays; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"utcSaturdays\", function() { return utcSaturdays; });\n/* harmony import */ var _interval_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./interval.js */ \"./node_modules/vega-time/node_modules/d3-time/src/interval.js\");\n/* harmony import */ var _duration_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./duration.js */ \"./node_modules/vega-time/node_modules/d3-time/src/duration.js\");\n\n\n\nfunction utcWeekday(i) {\n  return Object(_interval_js__WEBPACK_IMPORTED_MODULE_0__[\"default\"])(function(date) {\n    date.setUTCDate(date.getUTCDate() - (date.getUTCDay() + 7 - i) % 7);\n    date.setUTCHours(0, 0, 0, 0);\n  }, function(date, step) {\n    date.setUTCDate(date.getUTCDate() + step * 7);\n  }, function(start, end) {\n    return (end - start) / _duration_js__WEBPACK_IMPORTED_MODULE_1__[\"durationWeek\"];\n  });\n}\n\nvar utcSunday = utcWeekday(0);\nvar utcMonday = utcWeekday(1);\nvar utcTuesday = utcWeekday(2);\nvar utcWednesday = utcWeekday(3);\nvar utcThursday = utcWeekday(4);\nvar utcFriday = utcWeekday(5);\nvar utcSaturday = utcWeekday(6);\n\nvar utcSundays = utcSunday.range;\nvar utcMondays = utcMonday.range;\nvar utcTuesdays = utcTuesday.range;\nvar utcWednesdays = utcWednesday.range;\nvar utcThursdays = utcThursday.range;\nvar utcFridays = utcFriday.range;\nvar utcSaturdays = utcSaturday.range;\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvdmVnYS10aW1lL25vZGVfbW9kdWxlcy9kMy10aW1lL3NyYy91dGNXZWVrLmpzLmpzIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL3ZlZ2EtdGltZS9ub2RlX21vZHVsZXMvZDMtdGltZS9zcmMvdXRjV2Vlay5qcz9lZTU1Il0sInNvdXJjZXNDb250ZW50IjpbImltcG9ydCBpbnRlcnZhbCBmcm9tIFwiLi9pbnRlcnZhbC5qc1wiO1xuaW1wb3J0IHtkdXJhdGlvbldlZWt9IGZyb20gXCIuL2R1cmF0aW9uLmpzXCI7XG5cbmZ1bmN0aW9uIHV0Y1dlZWtkYXkoaSkge1xuICByZXR1cm4gaW50ZXJ2YWwoZnVuY3Rpb24oZGF0ZSkge1xuICAgIGRhdGUuc2V0VVRDRGF0ZShkYXRlLmdldFVUQ0RhdGUoKSAtIChkYXRlLmdldFVUQ0RheSgpICsgNyAtIGkpICUgNyk7XG4gICAgZGF0ZS5zZXRVVENIb3VycygwLCAwLCAwLCAwKTtcbiAgfSwgZnVuY3Rpb24oZGF0ZSwgc3RlcCkge1xuICAgIGRhdGUuc2V0VVRDRGF0ZShkYXRlLmdldFVUQ0RhdGUoKSArIHN0ZXAgKiA3KTtcbiAgfSwgZnVuY3Rpb24oc3RhcnQsIGVuZCkge1xuICAgIHJldHVybiAoZW5kIC0gc3RhcnQpIC8gZHVyYXRpb25XZWVrO1xuICB9KTtcbn1cblxuZXhwb3J0IHZhciB1dGNTdW5kYXkgPSB1dGNXZWVrZGF5KDApO1xuZXhwb3J0IHZhciB1dGNNb25kYXkgPSB1dGNXZWVrZGF5KDEpO1xuZXhwb3J0IHZhciB1dGNUdWVzZGF5ID0gdXRjV2Vla2RheSgyKTtcbmV4cG9ydCB2YXIgdXRjV2VkbmVzZGF5ID0gdXRjV2Vla2RheSgzKTtcbmV4cG9ydCB2YXIgdXRjVGh1cnNkYXkgPSB1dGNXZWVrZGF5KDQpO1xuZXhwb3J0IHZhciB1dGNGcmlkYXkgPSB1dGNXZWVrZGF5KDUpO1xuZXhwb3J0IHZhciB1dGNTYXR1cmRheSA9IHV0Y1dlZWtkYXkoNik7XG5cbmV4cG9ydCB2YXIgdXRjU3VuZGF5cyA9IHV0Y1N1bmRheS5yYW5nZTtcbmV4cG9ydCB2YXIgdXRjTW9uZGF5cyA9IHV0Y01vbmRheS5yYW5nZTtcbmV4cG9ydCB2YXIgdXRjVHVlc2RheXMgPSB1dGNUdWVzZGF5LnJhbmdlO1xuZXhwb3J0IHZhciB1dGNXZWRuZXNkYXlzID0gdXRjV2VkbmVzZGF5LnJhbmdlO1xuZXhwb3J0IHZhciB1dGNUaHVyc2RheXMgPSB1dGNUaHVyc2RheS5yYW5nZTtcbmV4cG9ydCB2YXIgdXRjRnJpZGF5cyA9IHV0Y0ZyaWRheS5yYW5nZTtcbmV4cG9ydCB2YXIgdXRjU2F0dXJkYXlzID0gdXRjU2F0dXJkYXkucmFuZ2U7XG4iXSwibWFwcGluZ3MiOiJBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOyIsInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///./node_modules/vega-time/node_modules/d3-time/src/utcWeek.js\n");

/***/ }),

/***/ "./node_modules/vega-time/node_modules/d3-time/src/utcYear.js":
/*!********************************************************************!*\
  !*** ./node_modules/vega-time/node_modules/d3-time/src/utcYear.js ***!
  \********************************************************************/
/*! exports provided: default, utcYears */
/***/ (function(module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"utcYears\", function() { return utcYears; });\n/* harmony import */ var _interval_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./interval.js */ \"./node_modules/vega-time/node_modules/d3-time/src/interval.js\");\n\n\nvar utcYear = Object(_interval_js__WEBPACK_IMPORTED_MODULE_0__[\"default\"])(function(date) {\n  date.setUTCMonth(0, 1);\n  date.setUTCHours(0, 0, 0, 0);\n}, function(date, step) {\n  date.setUTCFullYear(date.getUTCFullYear() + step);\n}, function(start, end) {\n  return end.getUTCFullYear() - start.getUTCFullYear();\n}, function(date) {\n  return date.getUTCFullYear();\n});\n\n// An optimized implementation for this simple case.\nutcYear.every = function(k) {\n  return !isFinite(k = Math.floor(k)) || !(k > 0) ? null : Object(_interval_js__WEBPACK_IMPORTED_MODULE_0__[\"default\"])(function(date) {\n    date.setUTCFullYear(Math.floor(date.getUTCFullYear() / k) * k);\n    date.setUTCMonth(0, 1);\n    date.setUTCHours(0, 0, 0, 0);\n  }, function(date, step) {\n    date.setUTCFullYear(date.getUTCFullYear() + step * k);\n  });\n};\n\n/* harmony default export */ __webpack_exports__[\"default\"] = (utcYear);\nvar utcYears = utcYear.range;\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvdmVnYS10aW1lL25vZGVfbW9kdWxlcy9kMy10aW1lL3NyYy91dGNZZWFyLmpzLmpzIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL3ZlZ2EtdGltZS9ub2RlX21vZHVsZXMvZDMtdGltZS9zcmMvdXRjWWVhci5qcz81ZGNhIl0sInNvdXJjZXNDb250ZW50IjpbImltcG9ydCBpbnRlcnZhbCBmcm9tIFwiLi9pbnRlcnZhbC5qc1wiO1xuXG52YXIgdXRjWWVhciA9IGludGVydmFsKGZ1bmN0aW9uKGRhdGUpIHtcbiAgZGF0ZS5zZXRVVENNb250aCgwLCAxKTtcbiAgZGF0ZS5zZXRVVENIb3VycygwLCAwLCAwLCAwKTtcbn0sIGZ1bmN0aW9uKGRhdGUsIHN0ZXApIHtcbiAgZGF0ZS5zZXRVVENGdWxsWWVhcihkYXRlLmdldFVUQ0Z1bGxZZWFyKCkgKyBzdGVwKTtcbn0sIGZ1bmN0aW9uKHN0YXJ0LCBlbmQpIHtcbiAgcmV0dXJuIGVuZC5nZXRVVENGdWxsWWVhcigpIC0gc3RhcnQuZ2V0VVRDRnVsbFllYXIoKTtcbn0sIGZ1bmN0aW9uKGRhdGUpIHtcbiAgcmV0dXJuIGRhdGUuZ2V0VVRDRnVsbFllYXIoKTtcbn0pO1xuXG4vLyBBbiBvcHRpbWl6ZWQgaW1wbGVtZW50YXRpb24gZm9yIHRoaXMgc2ltcGxlIGNhc2UuXG51dGNZZWFyLmV2ZXJ5ID0gZnVuY3Rpb24oaykge1xuICByZXR1cm4gIWlzRmluaXRlKGsgPSBNYXRoLmZsb29yKGspKSB8fCAhKGsgPiAwKSA/IG51bGwgOiBpbnRlcnZhbChmdW5jdGlvbihkYXRlKSB7XG4gICAgZGF0ZS5zZXRVVENGdWxsWWVhcihNYXRoLmZsb29yKGRhdGUuZ2V0VVRDRnVsbFllYXIoKSAvIGspICogayk7XG4gICAgZGF0ZS5zZXRVVENNb250aCgwLCAxKTtcbiAgICBkYXRlLnNldFVUQ0hvdXJzKDAsIDAsIDAsIDApO1xuICB9LCBmdW5jdGlvbihkYXRlLCBzdGVwKSB7XG4gICAgZGF0ZS5zZXRVVENGdWxsWWVhcihkYXRlLmdldFVUQ0Z1bGxZZWFyKCkgKyBzdGVwICogayk7XG4gIH0pO1xufTtcblxuZXhwb3J0IGRlZmF1bHQgdXRjWWVhcjtcbmV4cG9ydCB2YXIgdXRjWWVhcnMgPSB1dGNZZWFyLnJhbmdlO1xuIl0sIm1hcHBpbmdzIjoiQUFBQTtBQUFBO0FBQUE7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOyIsInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///./node_modules/vega-time/node_modules/d3-time/src/utcYear.js\n");

/***/ }),

/***/ "./node_modules/vega-time/node_modules/d3-time/src/week.js":
/*!*****************************************************************!*\
  !*** ./node_modules/vega-time/node_modules/d3-time/src/week.js ***!
  \*****************************************************************/
/*! exports provided: sunday, monday, tuesday, wednesday, thursday, friday, saturday, sundays, mondays, tuesdays, wednesdays, thursdays, fridays, saturdays */
/***/ (function(module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"sunday\", function() { return sunday; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"monday\", function() { return monday; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"tuesday\", function() { return tuesday; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"wednesday\", function() { return wednesday; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"thursday\", function() { return thursday; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"friday\", function() { return friday; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"saturday\", function() { return saturday; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"sundays\", function() { return sundays; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"mondays\", function() { return mondays; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"tuesdays\", function() { return tuesdays; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"wednesdays\", function() { return wednesdays; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"thursdays\", function() { return thursdays; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"fridays\", function() { return fridays; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"saturdays\", function() { return saturdays; });\n/* harmony import */ var _interval_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./interval.js */ \"./node_modules/vega-time/node_modules/d3-time/src/interval.js\");\n/* harmony import */ var _duration_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./duration.js */ \"./node_modules/vega-time/node_modules/d3-time/src/duration.js\");\n\n\n\nfunction weekday(i) {\n  return Object(_interval_js__WEBPACK_IMPORTED_MODULE_0__[\"default\"])(function(date) {\n    date.setDate(date.getDate() - (date.getDay() + 7 - i) % 7);\n    date.setHours(0, 0, 0, 0);\n  }, function(date, step) {\n    date.setDate(date.getDate() + step * 7);\n  }, function(start, end) {\n    return (end - start - (end.getTimezoneOffset() - start.getTimezoneOffset()) * _duration_js__WEBPACK_IMPORTED_MODULE_1__[\"durationMinute\"]) / _duration_js__WEBPACK_IMPORTED_MODULE_1__[\"durationWeek\"];\n  });\n}\n\nvar sunday = weekday(0);\nvar monday = weekday(1);\nvar tuesday = weekday(2);\nvar wednesday = weekday(3);\nvar thursday = weekday(4);\nvar friday = weekday(5);\nvar saturday = weekday(6);\n\nvar sundays = sunday.range;\nvar mondays = monday.range;\nvar tuesdays = tuesday.range;\nvar wednesdays = wednesday.range;\nvar thursdays = thursday.range;\nvar fridays = friday.range;\nvar saturdays = saturday.range;\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvdmVnYS10aW1lL25vZGVfbW9kdWxlcy9kMy10aW1lL3NyYy93ZWVrLmpzLmpzIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL3ZlZ2EtdGltZS9ub2RlX21vZHVsZXMvZDMtdGltZS9zcmMvd2Vlay5qcz9iOWZmIl0sInNvdXJjZXNDb250ZW50IjpbImltcG9ydCBpbnRlcnZhbCBmcm9tIFwiLi9pbnRlcnZhbC5qc1wiO1xuaW1wb3J0IHtkdXJhdGlvbk1pbnV0ZSwgZHVyYXRpb25XZWVrfSBmcm9tIFwiLi9kdXJhdGlvbi5qc1wiO1xuXG5mdW5jdGlvbiB3ZWVrZGF5KGkpIHtcbiAgcmV0dXJuIGludGVydmFsKGZ1bmN0aW9uKGRhdGUpIHtcbiAgICBkYXRlLnNldERhdGUoZGF0ZS5nZXREYXRlKCkgLSAoZGF0ZS5nZXREYXkoKSArIDcgLSBpKSAlIDcpO1xuICAgIGRhdGUuc2V0SG91cnMoMCwgMCwgMCwgMCk7XG4gIH0sIGZ1bmN0aW9uKGRhdGUsIHN0ZXApIHtcbiAgICBkYXRlLnNldERhdGUoZGF0ZS5nZXREYXRlKCkgKyBzdGVwICogNyk7XG4gIH0sIGZ1bmN0aW9uKHN0YXJ0LCBlbmQpIHtcbiAgICByZXR1cm4gKGVuZCAtIHN0YXJ0IC0gKGVuZC5nZXRUaW1lem9uZU9mZnNldCgpIC0gc3RhcnQuZ2V0VGltZXpvbmVPZmZzZXQoKSkgKiBkdXJhdGlvbk1pbnV0ZSkgLyBkdXJhdGlvbldlZWs7XG4gIH0pO1xufVxuXG5leHBvcnQgdmFyIHN1bmRheSA9IHdlZWtkYXkoMCk7XG5leHBvcnQgdmFyIG1vbmRheSA9IHdlZWtkYXkoMSk7XG5leHBvcnQgdmFyIHR1ZXNkYXkgPSB3ZWVrZGF5KDIpO1xuZXhwb3J0IHZhciB3ZWRuZXNkYXkgPSB3ZWVrZGF5KDMpO1xuZXhwb3J0IHZhciB0aHVyc2RheSA9IHdlZWtkYXkoNCk7XG5leHBvcnQgdmFyIGZyaWRheSA9IHdlZWtkYXkoNSk7XG5leHBvcnQgdmFyIHNhdHVyZGF5ID0gd2Vla2RheSg2KTtcblxuZXhwb3J0IHZhciBzdW5kYXlzID0gc3VuZGF5LnJhbmdlO1xuZXhwb3J0IHZhciBtb25kYXlzID0gbW9uZGF5LnJhbmdlO1xuZXhwb3J0IHZhciB0dWVzZGF5cyA9IHR1ZXNkYXkucmFuZ2U7XG5leHBvcnQgdmFyIHdlZG5lc2RheXMgPSB3ZWRuZXNkYXkucmFuZ2U7XG5leHBvcnQgdmFyIHRodXJzZGF5cyA9IHRodXJzZGF5LnJhbmdlO1xuZXhwb3J0IHZhciBmcmlkYXlzID0gZnJpZGF5LnJhbmdlO1xuZXhwb3J0IHZhciBzYXR1cmRheXMgPSBzYXR1cmRheS5yYW5nZTtcbiJdLCJtYXBwaW5ncyI6IkFBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7Iiwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///./node_modules/vega-time/node_modules/d3-time/src/week.js\n");

/***/ }),

/***/ "./node_modules/vega-time/node_modules/d3-time/src/year.js":
/*!*****************************************************************!*\
  !*** ./node_modules/vega-time/node_modules/d3-time/src/year.js ***!
  \*****************************************************************/
/*! exports provided: default, years */
/***/ (function(module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"years\", function() { return years; });\n/* harmony import */ var _interval_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./interval.js */ \"./node_modules/vega-time/node_modules/d3-time/src/interval.js\");\n\n\nvar year = Object(_interval_js__WEBPACK_IMPORTED_MODULE_0__[\"default\"])(function(date) {\n  date.setMonth(0, 1);\n  date.setHours(0, 0, 0, 0);\n}, function(date, step) {\n  date.setFullYear(date.getFullYear() + step);\n}, function(start, end) {\n  return end.getFullYear() - start.getFullYear();\n}, function(date) {\n  return date.getFullYear();\n});\n\n// An optimized implementation for this simple case.\nyear.every = function(k) {\n  return !isFinite(k = Math.floor(k)) || !(k > 0) ? null : Object(_interval_js__WEBPACK_IMPORTED_MODULE_0__[\"default\"])(function(date) {\n    date.setFullYear(Math.floor(date.getFullYear() / k) * k);\n    date.setMonth(0, 1);\n    date.setHours(0, 0, 0, 0);\n  }, function(date, step) {\n    date.setFullYear(date.getFullYear() + step * k);\n  });\n};\n\n/* harmony default export */ __webpack_exports__[\"default\"] = (year);\nvar years = year.range;\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvdmVnYS10aW1lL25vZGVfbW9kdWxlcy9kMy10aW1lL3NyYy95ZWFyLmpzLmpzIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL3ZlZ2EtdGltZS9ub2RlX21vZHVsZXMvZDMtdGltZS9zcmMveWVhci5qcz9jZGUzIl0sInNvdXJjZXNDb250ZW50IjpbImltcG9ydCBpbnRlcnZhbCBmcm9tIFwiLi9pbnRlcnZhbC5qc1wiO1xuXG52YXIgeWVhciA9IGludGVydmFsKGZ1bmN0aW9uKGRhdGUpIHtcbiAgZGF0ZS5zZXRNb250aCgwLCAxKTtcbiAgZGF0ZS5zZXRIb3VycygwLCAwLCAwLCAwKTtcbn0sIGZ1bmN0aW9uKGRhdGUsIHN0ZXApIHtcbiAgZGF0ZS5zZXRGdWxsWWVhcihkYXRlLmdldEZ1bGxZZWFyKCkgKyBzdGVwKTtcbn0sIGZ1bmN0aW9uKHN0YXJ0LCBlbmQpIHtcbiAgcmV0dXJuIGVuZC5nZXRGdWxsWWVhcigpIC0gc3RhcnQuZ2V0RnVsbFllYXIoKTtcbn0sIGZ1bmN0aW9uKGRhdGUpIHtcbiAgcmV0dXJuIGRhdGUuZ2V0RnVsbFllYXIoKTtcbn0pO1xuXG4vLyBBbiBvcHRpbWl6ZWQgaW1wbGVtZW50YXRpb24gZm9yIHRoaXMgc2ltcGxlIGNhc2UuXG55ZWFyLmV2ZXJ5ID0gZnVuY3Rpb24oaykge1xuICByZXR1cm4gIWlzRmluaXRlKGsgPSBNYXRoLmZsb29yKGspKSB8fCAhKGsgPiAwKSA/IG51bGwgOiBpbnRlcnZhbChmdW5jdGlvbihkYXRlKSB7XG4gICAgZGF0ZS5zZXRGdWxsWWVhcihNYXRoLmZsb29yKGRhdGUuZ2V0RnVsbFllYXIoKSAvIGspICogayk7XG4gICAgZGF0ZS5zZXRNb250aCgwLCAxKTtcbiAgICBkYXRlLnNldEhvdXJzKDAsIDAsIDAsIDApO1xuICB9LCBmdW5jdGlvbihkYXRlLCBzdGVwKSB7XG4gICAgZGF0ZS5zZXRGdWxsWWVhcihkYXRlLmdldEZ1bGxZZWFyKCkgKyBzdGVwICogayk7XG4gIH0pO1xufTtcblxuZXhwb3J0IGRlZmF1bHQgeWVhcjtcbmV4cG9ydCB2YXIgeWVhcnMgPSB5ZWFyLnJhbmdlO1xuIl0sIm1hcHBpbmdzIjoiQUFBQTtBQUFBO0FBQUE7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOyIsInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///./node_modules/vega-time/node_modules/d3-time/src/year.js\n");

/***/ }),

/***/ "./node_modules/vega-time/node_modules/vega-util/build/vega-util.module.js":
/*!*********************************************************************************!*\
  !*** ./node_modules/vega-time/node_modules/vega-util/build/vega-util.module.js ***!
  \*********************************************************************************/
/*! exports provided: Debug, Error, Info, None, Warn, accessor, accessorFields, accessorName, array, ascending, clampRange, compare, constant, debounce, error, extend, extent, extentIndex, falsy, fastmap, field, flush, hasOwnProperty, id, identity, inherits, inrange, isArray, isBoolean, isDate, isFunction, isIterable, isNumber, isObject, isRegExp, isString, key, lerp, logger, lruCache, merge, mergeConfig, one, pad, panLinear, panLog, panPow, panSymlog, peek, quarter, repeat, span, splitAccessPath, stringValue, toBoolean, toDate, toNumber, toSet, toString, truncate, truthy, utcquarter, visitArray, writeConfig, zero, zoomLinear, zoomLog, zoomPow, zoomSymlog */
/***/ (function(module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"Debug\", function() { return Debug; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"Error\", function() { return Error$1; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"Info\", function() { return Info; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"None\", function() { return None; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"Warn\", function() { return Warn; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"accessor\", function() { return accessor; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"accessorFields\", function() { return accessorFields; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"accessorName\", function() { return accessorName; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"array\", function() { return array; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"ascending\", function() { return ascending; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"clampRange\", function() { return clampRange; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"compare\", function() { return compare; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"constant\", function() { return constant; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"debounce\", function() { return debounce; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"error\", function() { return error; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"extend\", function() { return extend; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"extent\", function() { return extent; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"extentIndex\", function() { return extentIndex; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"falsy\", function() { return falsy; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"fastmap\", function() { return fastmap; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"field\", function() { return field; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"flush\", function() { return flush; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"hasOwnProperty\", function() { return has; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"id\", function() { return id; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"identity\", function() { return identity; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"inherits\", function() { return inherits; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"inrange\", function() { return inrange; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"isArray\", function() { return isArray; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"isBoolean\", function() { return isBoolean; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"isDate\", function() { return isDate; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"isFunction\", function() { return isFunction; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"isIterable\", function() { return isIterable; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"isNumber\", function() { return isNumber; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"isObject\", function() { return isObject; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"isRegExp\", function() { return isRegExp; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"isString\", function() { return isString; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"key\", function() { return key; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"lerp\", function() { return lerp; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"logger\", function() { return logger; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"lruCache\", function() { return lruCache; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"merge\", function() { return merge; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"mergeConfig\", function() { return mergeConfig; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"one\", function() { return one; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"pad\", function() { return pad; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"panLinear\", function() { return panLinear; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"panLog\", function() { return panLog; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"panPow\", function() { return panPow; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"panSymlog\", function() { return panSymlog; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"peek\", function() { return peek; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"quarter\", function() { return quarter; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"repeat\", function() { return repeat; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"span\", function() { return span; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"splitAccessPath\", function() { return splitAccessPath; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"stringValue\", function() { return $; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"toBoolean\", function() { return toBoolean; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"toDate\", function() { return toDate; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"toNumber\", function() { return toNumber; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"toSet\", function() { return toSet; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"toString\", function() { return toString; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"truncate\", function() { return truncate; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"truthy\", function() { return truthy; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"utcquarter\", function() { return utcquarter; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"visitArray\", function() { return visitArray; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"writeConfig\", function() { return writeConfig; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"zero\", function() { return zero; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"zoomLinear\", function() { return zoomLinear; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"zoomLog\", function() { return zoomLog; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"zoomPow\", function() { return zoomPow; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"zoomSymlog\", function() { return zoomSymlog; });\nfunction accessor (fn, fields, name) {\n  fn.fields = fields || [];\n  fn.fname = name;\n  return fn;\n}\nfunction accessorName(fn) {\n  return fn == null ? null : fn.fname;\n}\nfunction accessorFields(fn) {\n  return fn == null ? null : fn.fields;\n}\n\nfunction getter (path) {\n  return path.length === 1 ? get1(path[0]) : getN(path);\n}\n\nconst get1 = field => function (obj) {\n  return obj[field];\n};\n\nconst getN = path => {\n  const len = path.length;\n  return function (obj) {\n    for (let i = 0; i < len; ++i) {\n      obj = obj[path[i]];\n    }\n\n    return obj;\n  };\n};\n\nfunction error (message) {\n  throw Error(message);\n}\n\nfunction splitAccessPath (p) {\n  const path = [],\n        n = p.length;\n  let q = null,\n      b = 0,\n      s = '',\n      i,\n      j,\n      c;\n  p = p + '';\n\n  function push() {\n    path.push(s + p.substring(i, j));\n    s = '';\n    i = j + 1;\n  }\n\n  for (i = j = 0; j < n; ++j) {\n    c = p[j];\n\n    if (c === '\\\\') {\n      s += p.substring(i, j);\n      s += p.substring(++j, ++j);\n      i = j;\n    } else if (c === q) {\n      push();\n      q = null;\n      b = -1;\n    } else if (q) {\n      continue;\n    } else if (i === b && c === '\"') {\n      i = j + 1;\n      q = c;\n    } else if (i === b && c === \"'\") {\n      i = j + 1;\n      q = c;\n    } else if (c === '.' && !b) {\n      if (j > i) {\n        push();\n      } else {\n        i = j + 1;\n      }\n    } else if (c === '[') {\n      if (j > i) push();\n      b = i = j + 1;\n    } else if (c === ']') {\n      if (!b) error('Access path missing open bracket: ' + p);\n      if (b > 0) push();\n      b = 0;\n      i = j + 1;\n    }\n  }\n\n  if (b) error('Access path missing closing bracket: ' + p);\n  if (q) error('Access path missing closing quote: ' + p);\n\n  if (j > i) {\n    j++;\n    push();\n  }\n\n  return path;\n}\n\nfunction field (field, name, opt) {\n  const path = splitAccessPath(field);\n  field = path.length === 1 ? path[0] : field;\n  return accessor((opt && opt.get || getter)(path), [field], name || field);\n}\n\nconst id = field('id');\nconst identity = accessor(_ => _, [], 'identity');\nconst zero = accessor(() => 0, [], 'zero');\nconst one = accessor(() => 1, [], 'one');\nconst truthy = accessor(() => true, [], 'true');\nconst falsy = accessor(() => false, [], 'false');\n\nfunction log$1(method, level, input) {\n  const args = [level].concat([].slice.call(input));\n  console[method].apply(console, args); // eslint-disable-line no-console\n}\n\nconst None = 0;\nconst Error$1 = 1;\nconst Warn = 2;\nconst Info = 3;\nconst Debug = 4;\nfunction logger (_, method) {\n  let level = _ || None;\n  return {\n    level(_) {\n      if (arguments.length) {\n        level = +_;\n        return this;\n      } else {\n        return level;\n      }\n    },\n\n    error() {\n      if (level >= Error$1) log$1(method || 'error', 'ERROR', arguments);\n      return this;\n    },\n\n    warn() {\n      if (level >= Warn) log$1(method || 'warn', 'WARN', arguments);\n      return this;\n    },\n\n    info() {\n      if (level >= Info) log$1(method || 'log', 'INFO', arguments);\n      return this;\n    },\n\n    debug() {\n      if (level >= Debug) log$1(method || 'log', 'DEBUG', arguments);\n      return this;\n    }\n\n  };\n}\n\nvar isArray = Array.isArray;\n\nfunction isObject (_) {\n  return _ === Object(_);\n}\n\nconst isLegalKey = key => key !== '__proto__';\n\nfunction mergeConfig(...configs) {\n  return configs.reduce((out, source) => {\n    for (const key in source) {\n      if (key === 'signals') {\n        // for signals, we merge the signals arrays\n        // source signals take precedence over\n        // existing signals with the same name\n        out.signals = mergeNamed(out.signals, source.signals);\n      } else {\n        // otherwise, merge objects subject to recursion constraints\n        // for legend block, recurse for the layout entry only\n        // for style block, recurse for all properties\n        // otherwise, no recursion: objects overwrite, no merging\n        const r = key === 'legend' ? {\n          layout: 1\n        } : key === 'style' ? true : null;\n        writeConfig(out, key, source[key], r);\n      }\n    }\n\n    return out;\n  }, {});\n}\nfunction writeConfig(output, key, value, recurse) {\n  if (!isLegalKey(key)) return;\n  let k, o;\n\n  if (isObject(value) && !isArray(value)) {\n    o = isObject(output[key]) ? output[key] : output[key] = {};\n\n    for (k in value) {\n      if (recurse && (recurse === true || recurse[k])) {\n        writeConfig(o, k, value[k]);\n      } else if (isLegalKey(k)) {\n        o[k] = value[k];\n      }\n    }\n  } else {\n    output[key] = value;\n  }\n}\n\nfunction mergeNamed(a, b) {\n  if (a == null) return b;\n  const map = {},\n        out = [];\n\n  function add(_) {\n    if (!map[_.name]) {\n      map[_.name] = 1;\n      out.push(_);\n    }\n  }\n\n  b.forEach(add);\n  a.forEach(add);\n  return out;\n}\n\nfunction peek (array) {\n  return array[array.length - 1];\n}\n\nfunction toNumber (_) {\n  return _ == null || _ === '' ? null : +_;\n}\n\nconst exp = sign => x => sign * Math.exp(x);\n\nconst log = sign => x => Math.log(sign * x);\n\nconst symlog = c => x => Math.sign(x) * Math.log1p(Math.abs(x / c));\n\nconst symexp = c => x => Math.sign(x) * Math.expm1(Math.abs(x)) * c;\n\nconst pow = exponent => x => x < 0 ? -Math.pow(-x, exponent) : Math.pow(x, exponent);\n\nfunction pan(domain, delta, lift, ground) {\n  const d0 = lift(domain[0]),\n        d1 = lift(peek(domain)),\n        dd = (d1 - d0) * delta;\n  return [ground(d0 - dd), ground(d1 - dd)];\n}\n\nfunction panLinear(domain, delta) {\n  return pan(domain, delta, toNumber, identity);\n}\nfunction panLog(domain, delta) {\n  var sign = Math.sign(domain[0]);\n  return pan(domain, delta, log(sign), exp(sign));\n}\nfunction panPow(domain, delta, exponent) {\n  return pan(domain, delta, pow(exponent), pow(1 / exponent));\n}\nfunction panSymlog(domain, delta, constant) {\n  return pan(domain, delta, symlog(constant), symexp(constant));\n}\n\nfunction zoom(domain, anchor, scale, lift, ground) {\n  const d0 = lift(domain[0]),\n        d1 = lift(peek(domain)),\n        da = anchor != null ? lift(anchor) : (d0 + d1) / 2;\n  return [ground(da + (d0 - da) * scale), ground(da + (d1 - da) * scale)];\n}\n\nfunction zoomLinear(domain, anchor, scale) {\n  return zoom(domain, anchor, scale, toNumber, identity);\n}\nfunction zoomLog(domain, anchor, scale) {\n  const sign = Math.sign(domain[0]);\n  return zoom(domain, anchor, scale, log(sign), exp(sign));\n}\nfunction zoomPow(domain, anchor, scale, exponent) {\n  return zoom(domain, anchor, scale, pow(exponent), pow(1 / exponent));\n}\nfunction zoomSymlog(domain, anchor, scale, constant) {\n  return zoom(domain, anchor, scale, symlog(constant), symexp(constant));\n}\n\nfunction quarter(date) {\n  return 1 + ~~(new Date(date).getMonth() / 3);\n}\nfunction utcquarter(date) {\n  return 1 + ~~(new Date(date).getUTCMonth() / 3);\n}\n\nfunction array (_) {\n  return _ != null ? isArray(_) ? _ : [_] : [];\n}\n\n/**\n * Span-preserving range clamp. If the span of the input range is less\n * than (max - min) and an endpoint exceeds either the min or max value,\n * the range is translated such that the span is preserved and one\n * endpoint touches the boundary of the min/max range.\n * If the span exceeds (max - min), the range [min, max] is returned.\n */\nfunction clampRange (range, min, max) {\n  let lo = range[0],\n      hi = range[1],\n      span;\n\n  if (hi < lo) {\n    span = hi;\n    hi = lo;\n    lo = span;\n  }\n\n  span = hi - lo;\n  return span >= max - min ? [min, max] : [lo = Math.min(Math.max(lo, min), max - span), lo + span];\n}\n\nfunction isFunction (_) {\n  return typeof _ === 'function';\n}\n\nconst DESCENDING = 'descending';\nfunction compare (fields, orders, opt) {\n  opt = opt || {};\n  orders = array(orders) || [];\n  const ord = [],\n        get = [],\n        fmap = {},\n        gen = opt.comparator || comparator;\n  array(fields).forEach((f, i) => {\n    if (f == null) return;\n    ord.push(orders[i] === DESCENDING ? -1 : 1);\n    get.push(f = isFunction(f) ? f : field(f, null, opt));\n    (accessorFields(f) || []).forEach(_ => fmap[_] = 1);\n  });\n  return get.length === 0 ? null : accessor(gen(get, ord), Object.keys(fmap));\n}\nconst ascending = (u, v) => (u < v || u == null) && v != null ? -1 : (u > v || v == null) && u != null ? 1 : (v = v instanceof Date ? +v : v, u = u instanceof Date ? +u : u) !== u && v === v ? -1 : v !== v && u === u ? 1 : 0;\n\nconst comparator = (fields, orders) => fields.length === 1 ? compare1(fields[0], orders[0]) : compareN(fields, orders, fields.length);\n\nconst compare1 = (field, order) => function (a, b) {\n  return ascending(field(a), field(b)) * order;\n};\n\nconst compareN = (fields, orders, n) => {\n  orders.push(0); // pad zero for convenient lookup\n\n  return function (a, b) {\n    let f,\n        c = 0,\n        i = -1;\n\n    while (c === 0 && ++i < n) {\n      f = fields[i];\n      c = ascending(f(a), f(b));\n    }\n\n    return c * orders[i];\n  };\n};\n\nfunction constant (_) {\n  return isFunction(_) ? _ : () => _;\n}\n\nfunction debounce (delay, handler) {\n  let tid;\n  return e => {\n    if (tid) clearTimeout(tid);\n    tid = setTimeout(() => (handler(e), tid = null), delay);\n  };\n}\n\nfunction extend (_) {\n  for (let x, k, i = 1, len = arguments.length; i < len; ++i) {\n    x = arguments[i];\n\n    for (k in x) {\n      _[k] = x[k];\n    }\n  }\n\n  return _;\n}\n\n/**\n * Return an array with minimum and maximum values, in the\n * form [min, max]. Ignores null, undefined, and NaN values.\n */\nfunction extent (array, f) {\n  let i = 0,\n      n,\n      v,\n      min,\n      max;\n\n  if (array && (n = array.length)) {\n    if (f == null) {\n      // find first valid value\n      for (v = array[i]; i < n && (v == null || v !== v); v = array[++i]);\n\n      min = max = v; // visit all other values\n\n      for (; i < n; ++i) {\n        v = array[i]; // skip null/undefined; NaN will fail all comparisons\n\n        if (v != null) {\n          if (v < min) min = v;\n          if (v > max) max = v;\n        }\n      }\n    } else {\n      // find first valid value\n      for (v = f(array[i]); i < n && (v == null || v !== v); v = f(array[++i]));\n\n      min = max = v; // visit all other values\n\n      for (; i < n; ++i) {\n        v = f(array[i]); // skip null/undefined; NaN will fail all comparisons\n\n        if (v != null) {\n          if (v < min) min = v;\n          if (v > max) max = v;\n        }\n      }\n    }\n  }\n\n  return [min, max];\n}\n\nfunction extentIndex (array, f) {\n  const n = array.length;\n  let i = -1,\n      a,\n      b,\n      c,\n      u,\n      v;\n\n  if (f == null) {\n    while (++i < n) {\n      b = array[i];\n\n      if (b != null && b >= b) {\n        a = c = b;\n        break;\n      }\n    }\n\n    if (i === n) return [-1, -1];\n    u = v = i;\n\n    while (++i < n) {\n      b = array[i];\n\n      if (b != null) {\n        if (a > b) {\n          a = b;\n          u = i;\n        }\n\n        if (c < b) {\n          c = b;\n          v = i;\n        }\n      }\n    }\n  } else {\n    while (++i < n) {\n      b = f(array[i], i, array);\n\n      if (b != null && b >= b) {\n        a = c = b;\n        break;\n      }\n    }\n\n    if (i === n) return [-1, -1];\n    u = v = i;\n\n    while (++i < n) {\n      b = f(array[i], i, array);\n\n      if (b != null) {\n        if (a > b) {\n          a = b;\n          u = i;\n        }\n\n        if (c < b) {\n          c = b;\n          v = i;\n        }\n      }\n    }\n  }\n\n  return [u, v];\n}\n\nconst hop = Object.prototype.hasOwnProperty;\nfunction has (object, property) {\n  return hop.call(object, property);\n}\n\nconst NULL = {};\nfunction fastmap (input) {\n  let obj = {},\n      test;\n\n  function has$1(key) {\n    return has(obj, key) && obj[key] !== NULL;\n  }\n\n  const map = {\n    size: 0,\n    empty: 0,\n    object: obj,\n    has: has$1,\n\n    get(key) {\n      return has$1(key) ? obj[key] : undefined;\n    },\n\n    set(key, value) {\n      if (!has$1(key)) {\n        ++map.size;\n        if (obj[key] === NULL) --map.empty;\n      }\n\n      obj[key] = value;\n      return this;\n    },\n\n    delete(key) {\n      if (has$1(key)) {\n        --map.size;\n        ++map.empty;\n        obj[key] = NULL;\n      }\n\n      return this;\n    },\n\n    clear() {\n      map.size = map.empty = 0;\n      map.object = obj = {};\n    },\n\n    test(_) {\n      if (arguments.length) {\n        test = _;\n        return map;\n      } else {\n        return test;\n      }\n    },\n\n    clean() {\n      const next = {};\n      let size = 0;\n\n      for (const key in obj) {\n        const value = obj[key];\n\n        if (value !== NULL && (!test || !test(value))) {\n          next[key] = value;\n          ++size;\n        }\n      }\n\n      map.size = size;\n      map.empty = 0;\n      map.object = obj = next;\n    }\n\n  };\n  if (input) Object.keys(input).forEach(key => {\n    map.set(key, input[key]);\n  });\n  return map;\n}\n\nfunction flush (range, value, threshold, left, right, center) {\n  if (!threshold && threshold !== 0) return center;\n  const t = +threshold;\n  let a = range[0],\n      b = peek(range),\n      l; // swap endpoints if range is reversed\n\n  if (b < a) {\n    l = a;\n    a = b;\n    b = l;\n  } // compare value to endpoints\n\n\n  l = Math.abs(value - a);\n  const r = Math.abs(b - value); // adjust if value is within threshold distance of endpoint\n\n  return l < r && l <= t ? left : r <= t ? right : center;\n}\n\nfunction inherits (child, parent, members) {\n  const proto = child.prototype = Object.create(parent.prototype);\n  Object.defineProperty(proto, 'constructor', {\n    value: child,\n    writable: true,\n    enumerable: true,\n    configurable: true\n  });\n  return extend(proto, members);\n}\n\n/**\n * Predicate that returns true if the value lies within the span\n * of the given range. The left and right flags control the use\n * of inclusive (true) or exclusive (false) comparisons.\n */\nfunction inrange (value, range, left, right) {\n  let r0 = range[0],\n      r1 = range[range.length - 1],\n      t;\n\n  if (r0 > r1) {\n    t = r0;\n    r0 = r1;\n    r1 = t;\n  }\n\n  left = left === undefined || left;\n  right = right === undefined || right;\n  return (left ? r0 <= value : r0 < value) && (right ? value <= r1 : value < r1);\n}\n\nfunction isBoolean (_) {\n  return typeof _ === 'boolean';\n}\n\nfunction isDate (_) {\n  return Object.prototype.toString.call(_) === '[object Date]';\n}\n\nfunction isIterable (_) {\n  return _ && isFunction(_[Symbol.iterator]);\n}\n\nfunction isNumber (_) {\n  return typeof _ === 'number';\n}\n\nfunction isRegExp (_) {\n  return Object.prototype.toString.call(_) === '[object RegExp]';\n}\n\nfunction isString (_) {\n  return typeof _ === 'string';\n}\n\nfunction key (fields, flat, opt) {\n  if (fields) {\n    fields = flat ? array(fields).map(f => f.replace(/\\\\(.)/g, '$1')) : array(fields);\n  }\n\n  const len = fields && fields.length,\n        gen = opt && opt.get || getter,\n        map = f => gen(flat ? [f] : splitAccessPath(f));\n\n  let fn;\n\n  if (!len) {\n    fn = function () {\n      return '';\n    };\n  } else if (len === 1) {\n    const get = map(fields[0]);\n\n    fn = function (_) {\n      return '' + get(_);\n    };\n  } else {\n    const get = fields.map(map);\n\n    fn = function (_) {\n      let s = '' + get[0](_),\n          i = 0;\n\n      while (++i < len) s += '|' + get[i](_);\n\n      return s;\n    };\n  }\n\n  return accessor(fn, fields, 'key');\n}\n\nfunction lerp (array, frac) {\n  const lo = array[0],\n        hi = peek(array),\n        f = +frac;\n  return !f ? lo : f === 1 ? hi : lo + f * (hi - lo);\n}\n\nconst DEFAULT_MAX_SIZE = 10000; // adapted from https://github.com/dominictarr/hashlru/ (MIT License)\n\nfunction lruCache (maxsize) {\n  maxsize = +maxsize || DEFAULT_MAX_SIZE;\n  let curr, prev, size;\n\n  const clear = () => {\n    curr = {};\n    prev = {};\n    size = 0;\n  };\n\n  const update = (key, value) => {\n    if (++size > maxsize) {\n      prev = curr;\n      curr = {};\n      size = 1;\n    }\n\n    return curr[key] = value;\n  };\n\n  clear();\n  return {\n    clear,\n    has: key => has(curr, key) || has(prev, key),\n    get: key => has(curr, key) ? curr[key] : has(prev, key) ? update(key, prev[key]) : undefined,\n    set: (key, value) => has(curr, key) ? curr[key] = value : update(key, value)\n  };\n}\n\nfunction merge (compare, array0, array1, output) {\n  const n0 = array0.length,\n        n1 = array1.length;\n  if (!n1) return array0;\n  if (!n0) return array1;\n  const merged = output || new array0.constructor(n0 + n1);\n  let i0 = 0,\n      i1 = 0,\n      i = 0;\n\n  for (; i0 < n0 && i1 < n1; ++i) {\n    merged[i] = compare(array0[i0], array1[i1]) > 0 ? array1[i1++] : array0[i0++];\n  }\n\n  for (; i0 < n0; ++i0, ++i) {\n    merged[i] = array0[i0];\n  }\n\n  for (; i1 < n1; ++i1, ++i) {\n    merged[i] = array1[i1];\n  }\n\n  return merged;\n}\n\nfunction repeat (str, reps) {\n  let s = '';\n\n  while (--reps >= 0) s += str;\n\n  return s;\n}\n\nfunction pad (str, length, padchar, align) {\n  const c = padchar || ' ',\n        s = str + '',\n        n = length - s.length;\n  return n <= 0 ? s : align === 'left' ? repeat(c, n) + s : align === 'center' ? repeat(c, ~~(n / 2)) + s + repeat(c, Math.ceil(n / 2)) : s + repeat(c, n);\n}\n\n/**\n * Return the numerical span of an array: the difference between\n * the last and first values.\n */\n\nfunction span (array) {\n  return array && peek(array) - array[0] || 0;\n}\n\nfunction $(x) {\n  return isArray(x) ? '[' + x.map($) + ']' : isObject(x) || isString(x) ? // Output valid JSON and JS source strings.\n  // See http://timelessrepo.com/json-isnt-a-javascript-subset\n  JSON.stringify(x).replace('\\u2028', '\\\\u2028').replace('\\u2029', '\\\\u2029') : x;\n}\n\nfunction toBoolean (_) {\n  return _ == null || _ === '' ? null : !_ || _ === 'false' || _ === '0' ? false : !!_;\n}\n\nconst defaultParser = _ => isNumber(_) ? _ : isDate(_) ? _ : Date.parse(_);\n\nfunction toDate (_, parser) {\n  parser = parser || defaultParser;\n  return _ == null || _ === '' ? null : parser(_);\n}\n\nfunction toString (_) {\n  return _ == null || _ === '' ? null : _ + '';\n}\n\nfunction toSet (_) {\n  const s = {},\n        n = _.length;\n\n  for (let i = 0; i < n; ++i) s[_[i]] = true;\n\n  return s;\n}\n\nfunction truncate (str, length, align, ellipsis) {\n  const e = ellipsis != null ? ellipsis : '\\u2026',\n        s = str + '',\n        n = s.length,\n        l = Math.max(0, length - e.length);\n  return n <= length ? s : align === 'left' ? e + s.slice(n - l) : align === 'center' ? s.slice(0, Math.ceil(l / 2)) + e + s.slice(n - ~~(l / 2)) : s.slice(0, l) + e;\n}\n\nfunction visitArray (array, filter, visitor) {\n  if (array) {\n    if (filter) {\n      const n = array.length;\n\n      for (let i = 0; i < n; ++i) {\n        const t = filter(array[i]);\n        if (t) visitor(t, i, array);\n      }\n    } else {\n      array.forEach(visitor);\n    }\n  }\n}\n\n\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,[encoded data, 33060 characters]\n//# sourceURL=webpack-internal:///./node_modules/vega-time/node_modules/vega-util/build/vega-util.module.js\n");

/***/ }),

/***/ "./node_modules/vega/build/vega.module.js":
/*!************************************************!*\
  !*** ./node_modules/vega/build/vega.module.js ***!
  \************************************************/
/*! exports provided: Debug, Error, Info, None, Warn, accessor, accessorFields, accessorName, array, ascending, clampRange, compare, constant, debounce, error, extend, extent, extentIndex, falsy, fastmap, field, flush, hasOwnProperty, id, identity, inherits, inrange, isArray, isBoolean, isDate, isFunction, isIterable, isNumber, isObject, isRegExp, isString, key, lerp, logger, lruCache, merge, mergeConfig, one, pad, panLinear, panLog, panPow, panSymlog, peek, quarter, repeat, span, splitAccessPath, stringValue, toBoolean, toDate, toNumber, toSet, toString, truncate, truthy, utcquarter, visitArray, writeConfig, zero, zoomLinear, zoomLog, zoomPow, zoomSymlog, Dataflow, EventStream, MultiPulse, Operator, Parameters, Pulse, Transform, changeset, definition, ingest, isTuple, transform, transforms, tupleid, bandwidthNRD, bin, bootstrapCI, cumulativeLogNormal, cumulativeNormal, cumulativeUniform, densityLogNormal, densityNormal, densityUniform, dotbin, quantileLogNormal, quantileNormal, quantileUniform, quantiles, quartiles, random, randomInteger, randomKDE, randomLCG, randomLogNormal, randomMixture, randomNormal, randomUniform, regressionExp, regressionLinear, regressionLoess, regressionLog, regressionPoly, regressionPow, regressionQuad, sampleCurve, sampleLogNormal, sampleNormal, sampleUniform, setRandom, DATE, DAY, DAYOFYEAR, HOURS, MILLISECONDS, MINUTES, MONTH, QUARTER, SECONDS, TIME_UNITS, WEEK, YEAR, dayofyear, timeBin, timeFloor, timeInterval, timeOffset, timeSequence, timeUnitSpecifier, timeUnits, utcFloor, utcInterval, utcOffset, utcSequence, utcdayofyear, utcweek, week, loader, read, inferType, inferTypes, typeParsers, format, formats, responseType, Bounds, CanvasHandler, CanvasRenderer, Gradient, GroupItem, Handler, Item, Marks, RenderType, Renderer, ResourceLoader, SVGHandler, SVGRenderer, SVGStringRenderer, Scenegraph, boundClip, boundContext, boundItem, boundMark, boundStroke, domChild, domClear, domCreate, domFind, font, fontFamily, fontSize, intersect, intersectBoxLine, intersectPath, intersectPoint, intersectRule, lineHeight, markup, multiLineOffset, pathCurves, pathEqual, pathParse, pathRectangle, pathRender, pathSymbols, pathTrail, point, renderModule, resetSVGClipId, resetSVGDefIds, sceneEqual, sceneFromJSON, scenePickVisit, sceneToJSON, sceneVisit, sceneZOrder, serializeXML, textMetrics, interpolate, interpolateColors, interpolateRange, quantizeInterpolator, scale, scheme, projection, View, defaultLocale, formatLocale, locale, resetDefaultLocale, timeFormatLocale, expressionFunction, parse, runtimeContext, codegenExpression, parseExpression, parseSelector, version */
/***/ (function(module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"version\", function() { return version; });\n/* harmony import */ var vega_util__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! vega-util */ \"./node_modules/vega/node_modules/vega-util/build/vega-util.module.js\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"Debug\", function() { return vega_util__WEBPACK_IMPORTED_MODULE_0__[\"Debug\"]; });\n\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"Error\", function() { return vega_util__WEBPACK_IMPORTED_MODULE_0__[\"Error\"]; });\n\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"Info\", function() { return vega_util__WEBPACK_IMPORTED_MODULE_0__[\"Info\"]; });\n\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"None\", function() { return vega_util__WEBPACK_IMPORTED_MODULE_0__[\"None\"]; });\n\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"Warn\", function() { return vega_util__WEBPACK_IMPORTED_MODULE_0__[\"Warn\"]; });\n\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"accessor\", function() { return vega_util__WEBPACK_IMPORTED_MODULE_0__[\"accessor\"]; });\n\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"accessorFields\", function() { return vega_util__WEBPACK_IMPORTED_MODULE_0__[\"accessorFields\"]; });\n\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"accessorName\", function() { return vega_util__WEBPACK_IMPORTED_MODULE_0__[\"accessorName\"]; });\n\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"array\", function() { return vega_util__WEBPACK_IMPORTED_MODULE_0__[\"array\"]; });\n\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"ascending\", function() { return vega_util__WEBPACK_IMPORTED_MODULE_0__[\"ascending\"]; });\n\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"clampRange\", function() { return vega_util__WEBPACK_IMPORTED_MODULE_0__[\"clampRange\"]; });\n\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"compare\", function() { return vega_util__WEBPACK_IMPORTED_MODULE_0__[\"compare\"]; });\n\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"constant\", function() { return vega_util__WEBPACK_IMPORTED_MODULE_0__[\"constant\"]; });\n\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"debounce\", function() { return vega_util__WEBPACK_IMPORTED_MODULE_0__[\"debounce\"]; });\n\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"error\", function() { return vega_util__WEBPACK_IMPORTED_MODULE_0__[\"error\"]; });\n\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"extend\", function() { return vega_util__WEBPACK_IMPORTED_MODULE_0__[\"extend\"]; });\n\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"extent\", function() { return vega_util__WEBPACK_IMPORTED_MODULE_0__[\"extent\"]; });\n\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"extentIndex\", function() { return vega_util__WEBPACK_IMPORTED_MODULE_0__[\"extentIndex\"]; });\n\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"falsy\", function() { return vega_util__WEBPACK_IMPORTED_MODULE_0__[\"falsy\"]; });\n\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"fastmap\", function() { return vega_util__WEBPACK_IMPORTED_MODULE_0__[\"fastmap\"]; });\n\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"field\", function() { return vega_util__WEBPACK_IMPORTED_MODULE_0__[\"field\"]; });\n\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"flush\", function() { return vega_util__WEBPACK_IMPORTED_MODULE_0__[\"flush\"]; });\n\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"hasOwnProperty\", function() { return vega_util__WEBPACK_IMPORTED_MODULE_0__[\"hasOwnProperty\"]; });\n\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"id\", function() { return vega_util__WEBPACK_IMPORTED_MODULE_0__[\"id\"]; });\n\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"identity\", function() { return vega_util__WEBPACK_IMPORTED_MODULE_0__[\"identity\"]; });\n\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"inherits\", function() { return vega_util__WEBPACK_IMPORTED_MODULE_0__[\"inherits\"]; });\n\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"inrange\", function() { return vega_util__WEBPACK_IMPORTED_MODULE_0__[\"inrange\"]; });\n\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"isArray\", function() { return vega_util__WEBPACK_IMPORTED_MODULE_0__[\"isArray\"]; });\n\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"isBoolean\", function() { return vega_util__WEBPACK_IMPORTED_MODULE_0__[\"isBoolean\"]; });\n\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"isDate\", function() { return vega_util__WEBPACK_IMPORTED_MODULE_0__[\"isDate\"]; });\n\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"isFunction\", function() { return vega_util__WEBPACK_IMPORTED_MODULE_0__[\"isFunction\"]; });\n\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"isIterable\", function() { return vega_util__WEBPACK_IMPORTED_MODULE_0__[\"isIterable\"]; });\n\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"isNumber\", function() { return vega_util__WEBPACK_IMPORTED_MODULE_0__[\"isNumber\"]; });\n\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"isObject\", function() { return vega_util__WEBPACK_IMPORTED_MODULE_0__[\"isObject\"]; });\n\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"isRegExp\", function() { return vega_util__WEBPACK_IMPORTED_MODULE_0__[\"isRegExp\"]; });\n\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"isString\", function() { return vega_util__WEBPACK_IMPORTED_MODULE_0__[\"isString\"]; });\n\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"key\", function() { return vega_util__WEBPACK_IMPORTED_MODULE_0__[\"key\"]; });\n\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"lerp\", function() { return vega_util__WEBPACK_IMPORTED_MODULE_0__[\"lerp\"]; });\n\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"logger\", function() { return vega_util__WEBPACK_IMPORTED_MODULE_0__[\"logger\"]; });\n\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"lruCache\", function() { return vega_util__WEBPACK_IMPORTED_MODULE_0__[\"lruCache\"]; });\n\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"merge\", function() { return vega_util__WEBPACK_IMPORTED_MODULE_0__[\"merge\"]; });\n\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"mergeConfig\", function() { return vega_util__WEBPACK_IMPORTED_MODULE_0__[\"mergeConfig\"]; });\n\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"one\", function() { return vega_util__WEBPACK_IMPORTED_MODULE_0__[\"one\"]; });\n\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"pad\", function() { return vega_util__WEBPACK_IMPORTED_MODULE_0__[\"pad\"]; });\n\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"panLinear\", function() { return vega_util__WEBPACK_IMPORTED_MODULE_0__[\"panLinear\"]; });\n\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"panLog\", function() { return vega_util__WEBPACK_IMPORTED_MODULE_0__[\"panLog\"]; });\n\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"panPow\", function() { return vega_util__WEBPACK_IMPORTED_MODULE_0__[\"panPow\"]; });\n\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"panSymlog\", function() { return vega_util__WEBPACK_IMPORTED_MODULE_0__[\"panSymlog\"]; });\n\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"peek\", function() { return vega_util__WEBPACK_IMPORTED_MODULE_0__[\"peek\"]; });\n\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"quarter\", function() { return vega_util__WEBPACK_IMPORTED_MODULE_0__[\"quarter\"]; });\n\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"repeat\", function() { return vega_util__WEBPACK_IMPORTED_MODULE_0__[\"repeat\"]; });\n\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"span\", function() { return vega_util__WEBPACK_IMPORTED_MODULE_0__[\"span\"]; });\n\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"splitAccessPath\", function() { return vega_util__WEBPACK_IMPORTED_MODULE_0__[\"splitAccessPath\"]; });\n\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"stringValue\", function() { return vega_util__WEBPACK_IMPORTED_MODULE_0__[\"stringValue\"]; });\n\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"toBoolean\", function() { return vega_util__WEBPACK_IMPORTED_MODULE_0__[\"toBoolean\"]; });\n\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"toDate\", function() { return vega_util__WEBPACK_IMPORTED_MODULE_0__[\"toDate\"]; });\n\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"toNumber\", function() { return vega_util__WEBPACK_IMPORTED_MODULE_0__[\"toNumber\"]; });\n\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"toSet\", function() { return vega_util__WEBPACK_IMPORTED_MODULE_0__[\"toSet\"]; });\n\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"toString\", function() { return vega_util__WEBPACK_IMPORTED_MODULE_0__[\"toString\"]; });\n\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"truncate\", function() { return vega_util__WEBPACK_IMPORTED_MODULE_0__[\"truncate\"]; });\n\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"truthy\", function() { return vega_util__WEBPACK_IMPORTED_MODULE_0__[\"truthy\"]; });\n\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"utcquarter\", function() { return vega_util__WEBPACK_IMPORTED_MODULE_0__[\"utcquarter\"]; });\n\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"visitArray\", function() { return vega_util__WEBPACK_IMPORTED_MODULE_0__[\"visitArray\"]; });\n\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"writeConfig\", function() { return vega_util__WEBPACK_IMPORTED_MODULE_0__[\"writeConfig\"]; });\n\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"zero\", function() { return vega_util__WEBPACK_IMPORTED_MODULE_0__[\"zero\"]; });\n\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"zoomLinear\", function() { return vega_util__WEBPACK_IMPORTED_MODULE_0__[\"zoomLinear\"]; });\n\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"zoomLog\", function() { return vega_util__WEBPACK_IMPORTED_MODULE_0__[\"zoomLog\"]; });\n\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"zoomPow\", function() { return vega_util__WEBPACK_IMPORTED_MODULE_0__[\"zoomPow\"]; });\n\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"zoomSymlog\", function() { return vega_util__WEBPACK_IMPORTED_MODULE_0__[\"zoomSymlog\"]; });\n\n/* harmony import */ var vega_dataflow__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! vega-dataflow */ \"./node_modules/vega/node_modules/vega-dataflow/build/vega-dataflow.module.js\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"Dataflow\", function() { return vega_dataflow__WEBPACK_IMPORTED_MODULE_1__[\"Dataflow\"]; });\n\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"EventStream\", function() { return vega_dataflow__WEBPACK_IMPORTED_MODULE_1__[\"EventStream\"]; });\n\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"MultiPulse\", function() { return vega_dataflow__WEBPACK_IMPORTED_MODULE_1__[\"MultiPulse\"]; });\n\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"Operator\", function() { return vega_dataflow__WEBPACK_IMPORTED_MODULE_1__[\"Operator\"]; });\n\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"Parameters\", function() { return vega_dataflow__WEBPACK_IMPORTED_MODULE_1__[\"Parameters\"]; });\n\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"Pulse\", function() { return vega_dataflow__WEBPACK_IMPORTED_MODULE_1__[\"Pulse\"]; });\n\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"Transform\", function() { return vega_dataflow__WEBPACK_IMPORTED_MODULE_1__[\"Transform\"]; });\n\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"changeset\", function() { return vega_dataflow__WEBPACK_IMPORTED_MODULE_1__[\"changeset\"]; });\n\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"definition\", function() { return vega_dataflow__WEBPACK_IMPORTED_MODULE_1__[\"definition\"]; });\n\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"ingest\", function() { return vega_dataflow__WEBPACK_IMPORTED_MODULE_1__[\"ingest\"]; });\n\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"isTuple\", function() { return vega_dataflow__WEBPACK_IMPORTED_MODULE_1__[\"isTuple\"]; });\n\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"transform\", function() { return vega_dataflow__WEBPACK_IMPORTED_MODULE_1__[\"transform\"]; });\n\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"transforms\", function() { return vega_dataflow__WEBPACK_IMPORTED_MODULE_1__[\"transforms\"]; });\n\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"tupleid\", function() { return vega_dataflow__WEBPACK_IMPORTED_MODULE_1__[\"tupleid\"]; });\n\n/* harmony import */ var vega_transforms__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! vega-transforms */ \"./node_modules/vega/node_modules/vega-transforms/build/vega-transforms.module.js\");\n/* harmony import */ var vega_view_transforms__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! vega-view-transforms */ \"./node_modules/vega/node_modules/vega-view-transforms/build/vega-view-transforms.module.js\");\n/* harmony import */ var vega_encode__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! vega-encode */ \"./node_modules/vega/node_modules/vega-encode/build/vega-encode.module.js\");\n/* harmony import */ var vega_geo__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! vega-geo */ \"./node_modules/vega/node_modules/vega-geo/build/vega-geo.module.js\");\n/* harmony import */ var vega_force__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! vega-force */ \"./node_modules/vega/node_modules/vega-force/build/vega-force.module.js\");\n/* harmony import */ var vega_hierarchy__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! vega-hierarchy */ \"./node_modules/vega/node_modules/vega-hierarchy/build/vega-hierarchy.module.js\");\n/* harmony import */ var vega_label__WEBPACK_IMPORTED_MODULE_8__ = __webpack_require__(/*! vega-label */ \"./node_modules/vega-label/build/vega-label.module.js\");\n/* harmony import */ var vega_regression__WEBPACK_IMPORTED_MODULE_9__ = __webpack_require__(/*! vega-regression */ \"./node_modules/vega-regression/build/vega-regression.module.js\");\n/* harmony import */ var vega_voronoi__WEBPACK_IMPORTED_MODULE_10__ = __webpack_require__(/*! vega-voronoi */ \"./node_modules/vega/node_modules/vega-voronoi/build/vega-voronoi.module.js\");\n/* harmony import */ var vega_wordcloud__WEBPACK_IMPORTED_MODULE_11__ = __webpack_require__(/*! vega-wordcloud */ \"./node_modules/vega/node_modules/vega-wordcloud/build/vega-wordcloud.module.js\");\n/* harmony import */ var vega_crossfilter__WEBPACK_IMPORTED_MODULE_12__ = __webpack_require__(/*! vega-crossfilter */ \"./node_modules/vega/node_modules/vega-crossfilter/build/vega-crossfilter.module.js\");\n/* harmony import */ var vega_statistics__WEBPACK_IMPORTED_MODULE_13__ = __webpack_require__(/*! vega-statistics */ \"./node_modules/vega-statistics/build/vega-statistics.module.js\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"bandwidthNRD\", function() { return vega_statistics__WEBPACK_IMPORTED_MODULE_13__[\"bandwidthNRD\"]; });\n\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"bin\", function() { return vega_statistics__WEBPACK_IMPORTED_MODULE_13__[\"bin\"]; });\n\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"bootstrapCI\", function() { return vega_statistics__WEBPACK_IMPORTED_MODULE_13__[\"bootstrapCI\"]; });\n\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"cumulativeLogNormal\", function() { return vega_statistics__WEBPACK_IMPORTED_MODULE_13__[\"cumulativeLogNormal\"]; });\n\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"cumulativeNormal\", function() { return vega_statistics__WEBPACK_IMPORTED_MODULE_13__[\"cumulativeNormal\"]; });\n\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"cumulativeUniform\", function() { return vega_statistics__WEBPACK_IMPORTED_MODULE_13__[\"cumulativeUniform\"]; });\n\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"densityLogNormal\", function() { return vega_statistics__WEBPACK_IMPORTED_MODULE_13__[\"densityLogNormal\"]; });\n\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"densityNormal\", function() { return vega_statistics__WEBPACK_IMPORTED_MODULE_13__[\"densityNormal\"]; });\n\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"densityUniform\", function() { return vega_statistics__WEBPACK_IMPORTED_MODULE_13__[\"densityUniform\"]; });\n\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"dotbin\", function() { return vega_statistics__WEBPACK_IMPORTED_MODULE_13__[\"dotbin\"]; });\n\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"quantileLogNormal\", function() { return vega_statistics__WEBPACK_IMPORTED_MODULE_13__[\"quantileLogNormal\"]; });\n\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"quantileNormal\", function() { return vega_statistics__WEBPACK_IMPORTED_MODULE_13__[\"quantileNormal\"]; });\n\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"quantileUniform\", function() { return vega_statistics__WEBPACK_IMPORTED_MODULE_13__[\"quantileUniform\"]; });\n\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"quantiles\", function() { return vega_statistics__WEBPACK_IMPORTED_MODULE_13__[\"quantiles\"]; });\n\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"quartiles\", function() { return vega_statistics__WEBPACK_IMPORTED_MODULE_13__[\"quartiles\"]; });\n\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"random\", function() { return vega_statistics__WEBPACK_IMPORTED_MODULE_13__[\"random\"]; });\n\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"randomInteger\", function() { return vega_statistics__WEBPACK_IMPORTED_MODULE_13__[\"randomInteger\"]; });\n\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"randomKDE\", function() { return vega_statistics__WEBPACK_IMPORTED_MODULE_13__[\"randomKDE\"]; });\n\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"randomLCG\", function() { return vega_statistics__WEBPACK_IMPORTED_MODULE_13__[\"randomLCG\"]; });\n\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"randomLogNormal\", function() { return vega_statistics__WEBPACK_IMPORTED_MODULE_13__[\"randomLogNormal\"]; });\n\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"randomMixture\", function() { return vega_statistics__WEBPACK_IMPORTED_MODULE_13__[\"randomMixture\"]; });\n\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"randomNormal\", function() { return vega_statistics__WEBPACK_IMPORTED_MODULE_13__[\"randomNormal\"]; });\n\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"randomUniform\", function() { return vega_statistics__WEBPACK_IMPORTED_MODULE_13__[\"randomUniform\"]; });\n\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"regressionExp\", function() { return vega_statistics__WEBPACK_IMPORTED_MODULE_13__[\"regressionExp\"]; });\n\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"regressionLinear\", function() { return vega_statistics__WEBPACK_IMPORTED_MODULE_13__[\"regressionLinear\"]; });\n\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"regressionLoess\", function() { return vega_statistics__WEBPACK_IMPORTED_MODULE_13__[\"regressionLoess\"]; });\n\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"regressionLog\", function() { return vega_statistics__WEBPACK_IMPORTED_MODULE_13__[\"regressionLog\"]; });\n\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"regressionPoly\", function() { return vega_statistics__WEBPACK_IMPORTED_MODULE_13__[\"regressionPoly\"]; });\n\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"regressionPow\", function() { return vega_statistics__WEBPACK_IMPORTED_MODULE_13__[\"regressionPow\"]; });\n\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"regressionQuad\", function() { return vega_statistics__WEBPACK_IMPORTED_MODULE_13__[\"regressionQuad\"]; });\n\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"sampleCurve\", function() { return vega_statistics__WEBPACK_IMPORTED_MODULE_13__[\"sampleCurve\"]; });\n\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"sampleLogNormal\", function() { return vega_statistics__WEBPACK_IMPORTED_MODULE_13__[\"sampleLogNormal\"]; });\n\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"sampleNormal\", function() { return vega_statistics__WEBPACK_IMPORTED_MODULE_13__[\"sampleNormal\"]; });\n\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"sampleUniform\", function() { return vega_statistics__WEBPACK_IMPORTED_MODULE_13__[\"sampleUniform\"]; });\n\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"setRandom\", function() { return vega_statistics__WEBPACK_IMPORTED_MODULE_13__[\"setRandom\"]; });\n\n/* harmony import */ var vega_time__WEBPACK_IMPORTED_MODULE_14__ = __webpack_require__(/*! vega-time */ \"./node_modules/vega-time/build/vega-time.module.js\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"DATE\", function() { return vega_time__WEBPACK_IMPORTED_MODULE_14__[\"DATE\"]; });\n\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"DAY\", function() { return vega_time__WEBPACK_IMPORTED_MODULE_14__[\"DAY\"]; });\n\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"DAYOFYEAR\", function() { return vega_time__WEBPACK_IMPORTED_MODULE_14__[\"DAYOFYEAR\"]; });\n\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"HOURS\", function() { return vega_time__WEBPACK_IMPORTED_MODULE_14__[\"HOURS\"]; });\n\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"MILLISECONDS\", function() { return vega_time__WEBPACK_IMPORTED_MODULE_14__[\"MILLISECONDS\"]; });\n\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"MINUTES\", function() { return vega_time__WEBPACK_IMPORTED_MODULE_14__[\"MINUTES\"]; });\n\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"MONTH\", function() { return vega_time__WEBPACK_IMPORTED_MODULE_14__[\"MONTH\"]; });\n\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"QUARTER\", function() { return vega_time__WEBPACK_IMPORTED_MODULE_14__[\"QUARTER\"]; });\n\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"SECONDS\", function() { return vega_time__WEBPACK_IMPORTED_MODULE_14__[\"SECONDS\"]; });\n\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"TIME_UNITS\", function() { return vega_time__WEBPACK_IMPORTED_MODULE_14__[\"TIME_UNITS\"]; });\n\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"WEEK\", function() { return vega_time__WEBPACK_IMPORTED_MODULE_14__[\"WEEK\"]; });\n\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"YEAR\", function() { return vega_time__WEBPACK_IMPORTED_MODULE_14__[\"YEAR\"]; });\n\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"dayofyear\", function() { return vega_time__WEBPACK_IMPORTED_MODULE_14__[\"dayofyear\"]; });\n\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"timeBin\", function() { return vega_time__WEBPACK_IMPORTED_MODULE_14__[\"timeBin\"]; });\n\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"timeFloor\", function() { return vega_time__WEBPACK_IMPORTED_MODULE_14__[\"timeFloor\"]; });\n\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"timeInterval\", function() { return vega_time__WEBPACK_IMPORTED_MODULE_14__[\"timeInterval\"]; });\n\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"timeOffset\", function() { return vega_time__WEBPACK_IMPORTED_MODULE_14__[\"timeOffset\"]; });\n\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"timeSequence\", function() { return vega_time__WEBPACK_IMPORTED_MODULE_14__[\"timeSequence\"]; });\n\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"timeUnitSpecifier\", function() { return vega_time__WEBPACK_IMPORTED_MODULE_14__[\"timeUnitSpecifier\"]; });\n\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"timeUnits\", function() { return vega_time__WEBPACK_IMPORTED_MODULE_14__[\"timeUnits\"]; });\n\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"utcFloor\", function() { return vega_time__WEBPACK_IMPORTED_MODULE_14__[\"utcFloor\"]; });\n\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"utcInterval\", function() { return vega_time__WEBPACK_IMPORTED_MODULE_14__[\"utcInterval\"]; });\n\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"utcOffset\", function() { return vega_time__WEBPACK_IMPORTED_MODULE_14__[\"utcOffset\"]; });\n\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"utcSequence\", function() { return vega_time__WEBPACK_IMPORTED_MODULE_14__[\"utcSequence\"]; });\n\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"utcdayofyear\", function() { return vega_time__WEBPACK_IMPORTED_MODULE_14__[\"utcdayofyear\"]; });\n\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"utcweek\", function() { return vega_time__WEBPACK_IMPORTED_MODULE_14__[\"utcweek\"]; });\n\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"week\", function() { return vega_time__WEBPACK_IMPORTED_MODULE_14__[\"week\"]; });\n\n/* harmony import */ var vega_loader__WEBPACK_IMPORTED_MODULE_15__ = __webpack_require__(/*! vega-loader */ \"./node_modules/vega/node_modules/vega-loader/index.browser.js\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"loader\", function() { return vega_loader__WEBPACK_IMPORTED_MODULE_15__[\"loader\"]; });\n\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"read\", function() { return vega_loader__WEBPACK_IMPORTED_MODULE_15__[\"read\"]; });\n\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"inferType\", function() { return vega_loader__WEBPACK_IMPORTED_MODULE_15__[\"inferType\"]; });\n\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"inferTypes\", function() { return vega_loader__WEBPACK_IMPORTED_MODULE_15__[\"inferTypes\"]; });\n\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"typeParsers\", function() { return vega_loader__WEBPACK_IMPORTED_MODULE_15__[\"typeParsers\"]; });\n\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"format\", function() { return vega_loader__WEBPACK_IMPORTED_MODULE_15__[\"format\"]; });\n\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"formats\", function() { return vega_loader__WEBPACK_IMPORTED_MODULE_15__[\"formats\"]; });\n\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"responseType\", function() { return vega_loader__WEBPACK_IMPORTED_MODULE_15__[\"responseType\"]; });\n\n/* harmony import */ var vega_scenegraph__WEBPACK_IMPORTED_MODULE_16__ = __webpack_require__(/*! vega-scenegraph */ \"./node_modules/vega/node_modules/vega-scenegraph/build/vega-scenegraph.module.js\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"Bounds\", function() { return vega_scenegraph__WEBPACK_IMPORTED_MODULE_16__[\"Bounds\"]; });\n\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"CanvasHandler\", function() { return vega_scenegraph__WEBPACK_IMPORTED_MODULE_16__[\"CanvasHandler\"]; });\n\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"CanvasRenderer\", function() { return vega_scenegraph__WEBPACK_IMPORTED_MODULE_16__[\"CanvasRenderer\"]; });\n\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"Gradient\", function() { return vega_scenegraph__WEBPACK_IMPORTED_MODULE_16__[\"Gradient\"]; });\n\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"GroupItem\", function() { return vega_scenegraph__WEBPACK_IMPORTED_MODULE_16__[\"GroupItem\"]; });\n\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"Handler\", function() { return vega_scenegraph__WEBPACK_IMPORTED_MODULE_16__[\"Handler\"]; });\n\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"Item\", function() { return vega_scenegraph__WEBPACK_IMPORTED_MODULE_16__[\"Item\"]; });\n\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"Marks\", function() { return vega_scenegraph__WEBPACK_IMPORTED_MODULE_16__[\"Marks\"]; });\n\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"RenderType\", function() { return vega_scenegraph__WEBPACK_IMPORTED_MODULE_16__[\"RenderType\"]; });\n\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"Renderer\", function() { return vega_scenegraph__WEBPACK_IMPORTED_MODULE_16__[\"Renderer\"]; });\n\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"ResourceLoader\", function() { return vega_scenegraph__WEBPACK_IMPORTED_MODULE_16__[\"ResourceLoader\"]; });\n\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"SVGHandler\", function() { return vega_scenegraph__WEBPACK_IMPORTED_MODULE_16__[\"SVGHandler\"]; });\n\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"SVGRenderer\", function() { return vega_scenegraph__WEBPACK_IMPORTED_MODULE_16__[\"SVGRenderer\"]; });\n\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"SVGStringRenderer\", function() { return vega_scenegraph__WEBPACK_IMPORTED_MODULE_16__[\"SVGStringRenderer\"]; });\n\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"Scenegraph\", function() { return vega_scenegraph__WEBPACK_IMPORTED_MODULE_16__[\"Scenegraph\"]; });\n\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"boundClip\", function() { return vega_scenegraph__WEBPACK_IMPORTED_MODULE_16__[\"boundClip\"]; });\n\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"boundContext\", function() { return vega_scenegraph__WEBPACK_IMPORTED_MODULE_16__[\"boundContext\"]; });\n\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"boundItem\", function() { return vega_scenegraph__WEBPACK_IMPORTED_MODULE_16__[\"boundItem\"]; });\n\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"boundMark\", function() { return vega_scenegraph__WEBPACK_IMPORTED_MODULE_16__[\"boundMark\"]; });\n\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"boundStroke\", function() { return vega_scenegraph__WEBPACK_IMPORTED_MODULE_16__[\"boundStroke\"]; });\n\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"domChild\", function() { return vega_scenegraph__WEBPACK_IMPORTED_MODULE_16__[\"domChild\"]; });\n\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"domClear\", function() { return vega_scenegraph__WEBPACK_IMPORTED_MODULE_16__[\"domClear\"]; });\n\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"domCreate\", function() { return vega_scenegraph__WEBPACK_IMPORTED_MODULE_16__[\"domCreate\"]; });\n\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"domFind\", function() { return vega_scenegraph__WEBPACK_IMPORTED_MODULE_16__[\"domFind\"]; });\n\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"font\", function() { return vega_scenegraph__WEBPACK_IMPORTED_MODULE_16__[\"font\"]; });\n\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"fontFamily\", function() { return vega_scenegraph__WEBPACK_IMPORTED_MODULE_16__[\"fontFamily\"]; });\n\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"fontSize\", function() { return vega_scenegraph__WEBPACK_IMPORTED_MODULE_16__[\"fontSize\"]; });\n\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"intersect\", function() { return vega_scenegraph__WEBPACK_IMPORTED_MODULE_16__[\"intersect\"]; });\n\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"intersectBoxLine\", function() { return vega_scenegraph__WEBPACK_IMPORTED_MODULE_16__[\"intersectBoxLine\"]; });\n\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"intersectPath\", function() { return vega_scenegraph__WEBPACK_IMPORTED_MODULE_16__[\"intersectPath\"]; });\n\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"intersectPoint\", function() { return vega_scenegraph__WEBPACK_IMPORTED_MODULE_16__[\"intersectPoint\"]; });\n\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"intersectRule\", function() { return vega_scenegraph__WEBPACK_IMPORTED_MODULE_16__[\"intersectRule\"]; });\n\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"lineHeight\", function() { return vega_scenegraph__WEBPACK_IMPORTED_MODULE_16__[\"lineHeight\"]; });\n\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"markup\", function() { return vega_scenegraph__WEBPACK_IMPORTED_MODULE_16__[\"markup\"]; });\n\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"multiLineOffset\", function() { return vega_scenegraph__WEBPACK_IMPORTED_MODULE_16__[\"multiLineOffset\"]; });\n\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"pathCurves\", function() { return vega_scenegraph__WEBPACK_IMPORTED_MODULE_16__[\"pathCurves\"]; });\n\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"pathEqual\", function() { return vega_scenegraph__WEBPACK_IMPORTED_MODULE_16__[\"pathEqual\"]; });\n\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"pathParse\", function() { return vega_scenegraph__WEBPACK_IMPORTED_MODULE_16__[\"pathParse\"]; });\n\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"pathRectangle\", function() { return vega_scenegraph__WEBPACK_IMPORTED_MODULE_16__[\"pathRectangle\"]; });\n\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"pathRender\", function() { return vega_scenegraph__WEBPACK_IMPORTED_MODULE_16__[\"pathRender\"]; });\n\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"pathSymbols\", function() { return vega_scenegraph__WEBPACK_IMPORTED_MODULE_16__[\"pathSymbols\"]; });\n\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"pathTrail\", function() { return vega_scenegraph__WEBPACK_IMPORTED_MODULE_16__[\"pathTrail\"]; });\n\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"point\", function() { return vega_scenegraph__WEBPACK_IMPORTED_MODULE_16__[\"point\"]; });\n\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"renderModule\", function() { return vega_scenegraph__WEBPACK_IMPORTED_MODULE_16__[\"renderModule\"]; });\n\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"resetSVGClipId\", function() { return vega_scenegraph__WEBPACK_IMPORTED_MODULE_16__[\"resetSVGClipId\"]; });\n\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"resetSVGDefIds\", function() { return vega_scenegraph__WEBPACK_IMPORTED_MODULE_16__[\"resetSVGDefIds\"]; });\n\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"sceneEqual\", function() { return vega_scenegraph__WEBPACK_IMPORTED_MODULE_16__[\"sceneEqual\"]; });\n\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"sceneFromJSON\", function() { return vega_scenegraph__WEBPACK_IMPORTED_MODULE_16__[\"sceneFromJSON\"]; });\n\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"scenePickVisit\", function() { return vega_scenegraph__WEBPACK_IMPORTED_MODULE_16__[\"scenePickVisit\"]; });\n\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"sceneToJSON\", function() { return vega_scenegraph__WEBPACK_IMPORTED_MODULE_16__[\"sceneToJSON\"]; });\n\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"sceneVisit\", function() { return vega_scenegraph__WEBPACK_IMPORTED_MODULE_16__[\"sceneVisit\"]; });\n\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"sceneZOrder\", function() { return vega_scenegraph__WEBPACK_IMPORTED_MODULE_16__[\"sceneZOrder\"]; });\n\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"serializeXML\", function() { return vega_scenegraph__WEBPACK_IMPORTED_MODULE_16__[\"serializeXML\"]; });\n\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"textMetrics\", function() { return vega_scenegraph__WEBPACK_IMPORTED_MODULE_16__[\"textMetrics\"]; });\n\n/* harmony import */ var vega_scale__WEBPACK_IMPORTED_MODULE_17__ = __webpack_require__(/*! vega-scale */ \"./node_modules/vega/node_modules/vega-scale/build/vega-scale.module.js\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"interpolate\", function() { return vega_scale__WEBPACK_IMPORTED_MODULE_17__[\"interpolate\"]; });\n\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"interpolateColors\", function() { return vega_scale__WEBPACK_IMPORTED_MODULE_17__[\"interpolateColors\"]; });\n\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"interpolateRange\", function() { return vega_scale__WEBPACK_IMPORTED_MODULE_17__[\"interpolateRange\"]; });\n\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"quantizeInterpolator\", function() { return vega_scale__WEBPACK_IMPORTED_MODULE_17__[\"quantizeInterpolator\"]; });\n\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"scale\", function() { return vega_scale__WEBPACK_IMPORTED_MODULE_17__[\"scale\"]; });\n\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"scheme\", function() { return vega_scale__WEBPACK_IMPORTED_MODULE_17__[\"scheme\"]; });\n\n/* harmony import */ var vega_projection__WEBPACK_IMPORTED_MODULE_18__ = __webpack_require__(/*! vega-projection */ \"./node_modules/vega-projection/build/vega-projection.module.js\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"projection\", function() { return vega_projection__WEBPACK_IMPORTED_MODULE_18__[\"projection\"]; });\n\n/* harmony import */ var vega_view__WEBPACK_IMPORTED_MODULE_19__ = __webpack_require__(/*! vega-view */ \"./node_modules/vega/node_modules/vega-view/build/vega-view.module.js\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"View\", function() { return vega_view__WEBPACK_IMPORTED_MODULE_19__[\"View\"]; });\n\n/* harmony import */ var vega_format__WEBPACK_IMPORTED_MODULE_20__ = __webpack_require__(/*! vega-format */ \"./node_modules/vega-format/build/vega-format.module.js\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"defaultLocale\", function() { return vega_format__WEBPACK_IMPORTED_MODULE_20__[\"defaultLocale\"]; });\n\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"formatLocale\", function() { return vega_format__WEBPACK_IMPORTED_MODULE_20__[\"numberFormatDefaultLocale\"]; });\n\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"locale\", function() { return vega_format__WEBPACK_IMPORTED_MODULE_20__[\"locale\"]; });\n\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"resetDefaultLocale\", function() { return vega_format__WEBPACK_IMPORTED_MODULE_20__[\"resetDefaultLocale\"]; });\n\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"timeFormatLocale\", function() { return vega_format__WEBPACK_IMPORTED_MODULE_20__[\"timeFormatDefaultLocale\"]; });\n\n/* harmony import */ var vega_functions__WEBPACK_IMPORTED_MODULE_21__ = __webpack_require__(/*! vega-functions */ \"./node_modules/vega-functions/build/vega-functions.module.js\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"expressionFunction\", function() { return vega_functions__WEBPACK_IMPORTED_MODULE_21__[\"expressionFunction\"]; });\n\n/* harmony import */ var vega_parser__WEBPACK_IMPORTED_MODULE_22__ = __webpack_require__(/*! vega-parser */ \"./node_modules/vega/node_modules/vega-parser/build/vega-parser.module.js\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"parse\", function() { return vega_parser__WEBPACK_IMPORTED_MODULE_22__[\"parse\"]; });\n\n/* harmony import */ var vega_runtime__WEBPACK_IMPORTED_MODULE_23__ = __webpack_require__(/*! vega-runtime */ \"./node_modules/vega/node_modules/vega-runtime/build/vega-runtime.module.js\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"runtimeContext\", function() { return vega_runtime__WEBPACK_IMPORTED_MODULE_23__[\"context\"]; });\n\n/* harmony import */ var vega_expression__WEBPACK_IMPORTED_MODULE_24__ = __webpack_require__(/*! vega-expression */ \"./node_modules/vega/node_modules/vega-expression/build/vega-expression.module.js\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"codegenExpression\", function() { return vega_expression__WEBPACK_IMPORTED_MODULE_24__[\"codegen\"]; });\n\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"parseExpression\", function() { return vega_expression__WEBPACK_IMPORTED_MODULE_24__[\"parse\"]; });\n\n/* harmony import */ var vega_event_selector__WEBPACK_IMPORTED_MODULE_25__ = __webpack_require__(/*! vega-event-selector */ \"./node_modules/vega-event-selector/build/vega-event-selector.module.js\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"parseSelector\", function() { return vega_event_selector__WEBPACK_IMPORTED_MODULE_25__[\"selector\"]; });\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\nvar name = \"vega\";\nvar version$1 = \"5.20.2\";\nvar description = \"The Vega visualization grammar.\";\nvar keywords = [\n\t\"vega\",\n\t\"visualization\",\n\t\"interaction\",\n\t\"dataflow\",\n\t\"library\",\n\t\"data\",\n\t\"d3\"\n];\nvar license = \"BSD-3-Clause\";\nvar author = \"UW Interactive Data Lab (http://idl.cs.washington.edu)\";\nvar main = \"build/vega-node.js\";\nvar module = \"build/vega.module.js\";\nvar unpkg = \"build/vega.min.js\";\nvar jsdelivr = \"build/vega.min.js\";\nvar types = \"index.d.ts\";\nvar repository = \"vega/vega\";\nvar scripts = {\n\tbundle: \"rollup -c --config-bundle\",\n\tprebuild: \"rimraf build && rimraf build-es5\",\n\tbuild: \"rollup -c --config-core --config-bundle --config-ie\",\n\tpostbuild: \"node schema-copy\",\n\tpretest: \"yarn build --config-test\",\n\ttest: \"TZ=America/Los_Angeles tape 'test/**/*-test.js'\",\n\tprepublishOnly: \"yarn test && yarn build\",\n\tpostpublish: \"./schema-deploy.sh\"\n};\nvar dependencies = {\n\t\"vega-crossfilter\": \"~4.0.5\",\n\t\"vega-dataflow\": \"~5.7.4\",\n\t\"vega-encode\": \"~4.8.3\",\n\t\"vega-event-selector\": \"~2.0.6\",\n\t\"vega-expression\": \"~4.0.1\",\n\t\"vega-force\": \"~4.0.7\",\n\t\"vega-format\": \"~1.0.4\",\n\t\"vega-functions\": \"~5.12.0\",\n\t\"vega-geo\": \"~4.3.8\",\n\t\"vega-hierarchy\": \"~4.0.9\",\n\t\"vega-label\": \"~1.0.0\",\n\t\"vega-loader\": \"~4.4.0\",\n\t\"vega-parser\": \"~6.1.3\",\n\t\"vega-projection\": \"~1.4.5\",\n\t\"vega-regression\": \"~1.0.9\",\n\t\"vega-runtime\": \"~6.1.3\",\n\t\"vega-scale\": \"~7.1.1\",\n\t\"vega-scenegraph\": \"~4.9.4\",\n\t\"vega-statistics\": \"~1.7.9\",\n\t\"vega-time\": \"~2.0.4\",\n\t\"vega-transforms\": \"~4.9.4\",\n\t\"vega-typings\": \"~0.21.0\",\n\t\"vega-util\": \"~1.16.1\",\n\t\"vega-view\": \"~5.10.1\",\n\t\"vega-view-transforms\": \"~4.5.8\",\n\t\"vega-voronoi\": \"~4.1.5\",\n\t\"vega-wordcloud\": \"~4.1.3\"\n};\nvar devDependencies = {\n\t\"vega-schema\": \"*\"\n};\nvar gitHead = \"e251dbc61ab6645689d9f349e7dd9d15ddb85bce\";\nvar pkg = {\n\tname: name,\n\tversion: version$1,\n\tdescription: description,\n\tkeywords: keywords,\n\tlicense: license,\n\tauthor: author,\n\tmain: main,\n\tmodule: module,\n\tunpkg: unpkg,\n\tjsdelivr: jsdelivr,\n\ttypes: types,\n\trepository: repository,\n\tscripts: scripts,\n\tdependencies: dependencies,\n\tdevDependencies: devDependencies,\n\tgitHead: gitHead\n};\n\n// -- Transforms -----\nObject(vega_util__WEBPACK_IMPORTED_MODULE_0__[\"extend\"])(vega_dataflow__WEBPACK_IMPORTED_MODULE_1__[\"transforms\"], vega_transforms__WEBPACK_IMPORTED_MODULE_2__, vega_view_transforms__WEBPACK_IMPORTED_MODULE_3__, vega_encode__WEBPACK_IMPORTED_MODULE_4__, vega_geo__WEBPACK_IMPORTED_MODULE_5__, vega_force__WEBPACK_IMPORTED_MODULE_6__, vega_label__WEBPACK_IMPORTED_MODULE_8__, vega_hierarchy__WEBPACK_IMPORTED_MODULE_7__, vega_regression__WEBPACK_IMPORTED_MODULE_9__, vega_voronoi__WEBPACK_IMPORTED_MODULE_10__, vega_wordcloud__WEBPACK_IMPORTED_MODULE_11__, vega_crossfilter__WEBPACK_IMPORTED_MODULE_12__); // -- Exports -----\n\nconst version = pkg.version;\n\n\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,[encoded data, 9736 characters]\n//# sourceURL=webpack-internal:///./node_modules/vega/build/vega.module.js\n");

/***/ }),

/***/ "./node_modules/vega/node_modules/d3-dsv/src/autoType.js":
/*!***************************************************************!*\
  !*** ./node_modules/vega/node_modules/d3-dsv/src/autoType.js ***!
  \***************************************************************/
/*! exports provided: default */
/***/ (function(module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"default\", function() { return autoType; });\nfunction autoType(object) {\n  for (var key in object) {\n    var value = object[key].trim(), number, m;\n    if (!value) value = null;\n    else if (value === \"true\") value = true;\n    else if (value === \"false\") value = false;\n    else if (value === \"NaN\") value = NaN;\n    else if (!isNaN(number = +value)) value = number;\n    else if (m = value.match(/^([-+]\\d{2})?\\d{4}(-\\d{2}(-\\d{2})?)?(T\\d{2}:\\d{2}(:\\d{2}(\\.\\d{3})?)?(Z|[-+]\\d{2}:\\d{2})?)?$/)) {\n      if (fixtz && !!m[4] && !m[7]) value = value.replace(/-/g, \"/\").replace(/T/, \" \");\n      value = new Date(value);\n    }\n    else continue;\n    object[key] = value;\n  }\n  return object;\n}\n\n// https://github.com/d3/d3-dsv/issues/45\nconst fixtz = new Date(\"2019-01-01T00:00\").getHours() || new Date(\"2019-07-01T00:00\").getHours();//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvdmVnYS9ub2RlX21vZHVsZXMvZDMtZHN2L3NyYy9hdXRvVHlwZS5qcy5qcyIsInNvdXJjZXMiOlsid2VicGFjazovLy8uL25vZGVfbW9kdWxlcy92ZWdhL25vZGVfbW9kdWxlcy9kMy1kc3Yvc3JjL2F1dG9UeXBlLmpzP2NkZGYiXSwic291cmNlc0NvbnRlbnQiOlsiZXhwb3J0IGRlZmF1bHQgZnVuY3Rpb24gYXV0b1R5cGUob2JqZWN0KSB7XG4gIGZvciAodmFyIGtleSBpbiBvYmplY3QpIHtcbiAgICB2YXIgdmFsdWUgPSBvYmplY3Rba2V5XS50cmltKCksIG51bWJlciwgbTtcbiAgICBpZiAoIXZhbHVlKSB2YWx1ZSA9IG51bGw7XG4gICAgZWxzZSBpZiAodmFsdWUgPT09IFwidHJ1ZVwiKSB2YWx1ZSA9IHRydWU7XG4gICAgZWxzZSBpZiAodmFsdWUgPT09IFwiZmFsc2VcIikgdmFsdWUgPSBmYWxzZTtcbiAgICBlbHNlIGlmICh2YWx1ZSA9PT0gXCJOYU5cIikgdmFsdWUgPSBOYU47XG4gICAgZWxzZSBpZiAoIWlzTmFOKG51bWJlciA9ICt2YWx1ZSkpIHZhbHVlID0gbnVtYmVyO1xuICAgIGVsc2UgaWYgKG0gPSB2YWx1ZS5tYXRjaCgvXihbLStdXFxkezJ9KT9cXGR7NH0oLVxcZHsyfSgtXFxkezJ9KT8pPyhUXFxkezJ9OlxcZHsyfSg6XFxkezJ9KFxcLlxcZHszfSk/KT8oWnxbLStdXFxkezJ9OlxcZHsyfSk/KT8kLykpIHtcbiAgICAgIGlmIChmaXh0eiAmJiAhIW1bNF0gJiYgIW1bN10pIHZhbHVlID0gdmFsdWUucmVwbGFjZSgvLS9nLCBcIi9cIikucmVwbGFjZSgvVC8sIFwiIFwiKTtcbiAgICAgIHZhbHVlID0gbmV3IERhdGUodmFsdWUpO1xuICAgIH1cbiAgICBlbHNlIGNvbnRpbnVlO1xuICAgIG9iamVjdFtrZXldID0gdmFsdWU7XG4gIH1cbiAgcmV0dXJuIG9iamVjdDtcbn1cblxuLy8gaHR0cHM6Ly9naXRodWIuY29tL2QzL2QzLWRzdi9pc3N1ZXMvNDVcbmNvbnN0IGZpeHR6ID0gbmV3IERhdGUoXCIyMDE5LTAxLTAxVDAwOjAwXCIpLmdldEhvdXJzKCkgfHwgbmV3IERhdGUoXCIyMDE5LTA3LTAxVDAwOjAwXCIpLmdldEhvdXJzKCk7Il0sIm1hcHBpbmdzIjoiQUFBQTtBQUFBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSIsInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///./node_modules/vega/node_modules/d3-dsv/src/autoType.js\n");

/***/ }),

/***/ "./node_modules/vega/node_modules/d3-dsv/src/csv.js":
/*!**********************************************************!*\
  !*** ./node_modules/vega/node_modules/d3-dsv/src/csv.js ***!
  \**********************************************************/
/*! exports provided: csvParse, csvParseRows, csvFormat, csvFormatBody, csvFormatRows, csvFormatRow, csvFormatValue */
/***/ (function(module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"csvParse\", function() { return csvParse; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"csvParseRows\", function() { return csvParseRows; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"csvFormat\", function() { return csvFormat; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"csvFormatBody\", function() { return csvFormatBody; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"csvFormatRows\", function() { return csvFormatRows; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"csvFormatRow\", function() { return csvFormatRow; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"csvFormatValue\", function() { return csvFormatValue; });\n/* harmony import */ var _dsv_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./dsv.js */ \"./node_modules/vega/node_modules/d3-dsv/src/dsv.js\");\n\n\nvar csv = Object(_dsv_js__WEBPACK_IMPORTED_MODULE_0__[\"default\"])(\",\");\n\nvar csvParse = csv.parse;\nvar csvParseRows = csv.parseRows;\nvar csvFormat = csv.format;\nvar csvFormatBody = csv.formatBody;\nvar csvFormatRows = csv.formatRows;\nvar csvFormatRow = csv.formatRow;\nvar csvFormatValue = csv.formatValue;\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvdmVnYS9ub2RlX21vZHVsZXMvZDMtZHN2L3NyYy9jc3YuanMuanMiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvdmVnYS9ub2RlX21vZHVsZXMvZDMtZHN2L3NyYy9jc3YuanM/OGFkZSJdLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgZHN2IGZyb20gXCIuL2Rzdi5qc1wiO1xuXG52YXIgY3N2ID0gZHN2KFwiLFwiKTtcblxuZXhwb3J0IHZhciBjc3ZQYXJzZSA9IGNzdi5wYXJzZTtcbmV4cG9ydCB2YXIgY3N2UGFyc2VSb3dzID0gY3N2LnBhcnNlUm93cztcbmV4cG9ydCB2YXIgY3N2Rm9ybWF0ID0gY3N2LmZvcm1hdDtcbmV4cG9ydCB2YXIgY3N2Rm9ybWF0Qm9keSA9IGNzdi5mb3JtYXRCb2R5O1xuZXhwb3J0IHZhciBjc3ZGb3JtYXRSb3dzID0gY3N2LmZvcm1hdFJvd3M7XG5leHBvcnQgdmFyIGNzdkZvcm1hdFJvdyA9IGNzdi5mb3JtYXRSb3c7XG5leHBvcnQgdmFyIGNzdkZvcm1hdFZhbHVlID0gY3N2LmZvcm1hdFZhbHVlO1xuIl0sIm1hcHBpbmdzIjoiQUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOyIsInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///./node_modules/vega/node_modules/d3-dsv/src/csv.js\n");

/***/ }),

/***/ "./node_modules/vega/node_modules/d3-dsv/src/dsv.js":
/*!**********************************************************!*\
  !*** ./node_modules/vega/node_modules/d3-dsv/src/dsv.js ***!
  \**********************************************************/
/*! exports provided: default */
/***/ (function(module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\nvar EOL = {},\n    EOF = {},\n    QUOTE = 34,\n    NEWLINE = 10,\n    RETURN = 13;\n\nfunction objectConverter(columns) {\n  return new Function(\"d\", \"return {\" + columns.map(function(name, i) {\n    return JSON.stringify(name) + \": d[\" + i + \"] || \\\"\\\"\";\n  }).join(\",\") + \"}\");\n}\n\nfunction customConverter(columns, f) {\n  var object = objectConverter(columns);\n  return function(row, i) {\n    return f(object(row), i, columns);\n  };\n}\n\n// Compute unique columns in order of discovery.\nfunction inferColumns(rows) {\n  var columnSet = Object.create(null),\n      columns = [];\n\n  rows.forEach(function(row) {\n    for (var column in row) {\n      if (!(column in columnSet)) {\n        columns.push(columnSet[column] = column);\n      }\n    }\n  });\n\n  return columns;\n}\n\nfunction pad(value, width) {\n  var s = value + \"\", length = s.length;\n  return length < width ? new Array(width - length + 1).join(0) + s : s;\n}\n\nfunction formatYear(year) {\n  return year < 0 ? \"-\" + pad(-year, 6)\n    : year > 9999 ? \"+\" + pad(year, 6)\n    : pad(year, 4);\n}\n\nfunction formatDate(date) {\n  var hours = date.getUTCHours(),\n      minutes = date.getUTCMinutes(),\n      seconds = date.getUTCSeconds(),\n      milliseconds = date.getUTCMilliseconds();\n  return isNaN(date) ? \"Invalid Date\"\n      : formatYear(date.getUTCFullYear(), 4) + \"-\" + pad(date.getUTCMonth() + 1, 2) + \"-\" + pad(date.getUTCDate(), 2)\n      + (milliseconds ? \"T\" + pad(hours, 2) + \":\" + pad(minutes, 2) + \":\" + pad(seconds, 2) + \".\" + pad(milliseconds, 3) + \"Z\"\n      : seconds ? \"T\" + pad(hours, 2) + \":\" + pad(minutes, 2) + \":\" + pad(seconds, 2) + \"Z\"\n      : minutes || hours ? \"T\" + pad(hours, 2) + \":\" + pad(minutes, 2) + \"Z\"\n      : \"\");\n}\n\n/* harmony default export */ __webpack_exports__[\"default\"] = (function(delimiter) {\n  var reFormat = new RegExp(\"[\\\"\" + delimiter + \"\\n\\r]\"),\n      DELIMITER = delimiter.charCodeAt(0);\n\n  function parse(text, f) {\n    var convert, columns, rows = parseRows(text, function(row, i) {\n      if (convert) return convert(row, i - 1);\n      columns = row, convert = f ? customConverter(row, f) : objectConverter(row);\n    });\n    rows.columns = columns || [];\n    return rows;\n  }\n\n  function parseRows(text, f) {\n    var rows = [], // output rows\n        N = text.length,\n        I = 0, // current character index\n        n = 0, // current line number\n        t, // current token\n        eof = N <= 0, // current token followed by EOF?\n        eol = false; // current token followed by EOL?\n\n    // Strip the trailing newline.\n    if (text.charCodeAt(N - 1) === NEWLINE) --N;\n    if (text.charCodeAt(N - 1) === RETURN) --N;\n\n    function token() {\n      if (eof) return EOF;\n      if (eol) return eol = false, EOL;\n\n      // Unescape quotes.\n      var i, j = I, c;\n      if (text.charCodeAt(j) === QUOTE) {\n        while (I++ < N && text.charCodeAt(I) !== QUOTE || text.charCodeAt(++I) === QUOTE);\n        if ((i = I) >= N) eof = true;\n        else if ((c = text.charCodeAt(I++)) === NEWLINE) eol = true;\n        else if (c === RETURN) { eol = true; if (text.charCodeAt(I) === NEWLINE) ++I; }\n        return text.slice(j + 1, i - 1).replace(/\"\"/g, \"\\\"\");\n      }\n\n      // Find next delimiter or newline.\n      while (I < N) {\n        if ((c = text.charCodeAt(i = I++)) === NEWLINE) eol = true;\n        else if (c === RETURN) { eol = true; if (text.charCodeAt(I) === NEWLINE) ++I; }\n        else if (c !== DELIMITER) continue;\n        return text.slice(j, i);\n      }\n\n      // Return last token before EOF.\n      return eof = true, text.slice(j, N);\n    }\n\n    while ((t = token()) !== EOF) {\n      var row = [];\n      while (t !== EOL && t !== EOF) row.push(t), t = token();\n      if (f && (row = f(row, n++)) == null) continue;\n      rows.push(row);\n    }\n\n    return rows;\n  }\n\n  function preformatBody(rows, columns) {\n    return rows.map(function(row) {\n      return columns.map(function(column) {\n        return formatValue(row[column]);\n      }).join(delimiter);\n    });\n  }\n\n  function format(rows, columns) {\n    if (columns == null) columns = inferColumns(rows);\n    return [columns.map(formatValue).join(delimiter)].concat(preformatBody(rows, columns)).join(\"\\n\");\n  }\n\n  function formatBody(rows, columns) {\n    if (columns == null) columns = inferColumns(rows);\n    return preformatBody(rows, columns).join(\"\\n\");\n  }\n\n  function formatRows(rows) {\n    return rows.map(formatRow).join(\"\\n\");\n  }\n\n  function formatRow(row) {\n    return row.map(formatValue).join(delimiter);\n  }\n\n  function formatValue(value) {\n    return value == null ? \"\"\n        : value instanceof Date ? formatDate(value)\n        : reFormat.test(value += \"\") ? \"\\\"\" + value.replace(/\"/g, \"\\\"\\\"\") + \"\\\"\"\n        : value;\n  }\n\n  return {\n    parse: parse,\n    parseRows: parseRows,\n    format: format,\n    formatBody: formatBody,\n    formatRows: formatRows,\n    formatRow: formatRow,\n    formatValue: formatValue\n  };\n});\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,[encoded data, 8176 characters]\n//# sourceURL=webpack-internal:///./node_modules/vega/node_modules/d3-dsv/src/dsv.js\n");

/***/ }),

/***/ "./node_modules/vega/node_modules/d3-dsv/src/index.js":
/*!************************************************************!*\
  !*** ./node_modules/vega/node_modules/d3-dsv/src/index.js ***!
  \************************************************************/
/*! exports provided: dsvFormat, csvParse, csvParseRows, csvFormat, csvFormatBody, csvFormatRows, csvFormatRow, csvFormatValue, tsvParse, tsvParseRows, tsvFormat, tsvFormatBody, tsvFormatRows, tsvFormatRow, tsvFormatValue, autoType */
/***/ (function(module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _dsv_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./dsv.js */ \"./node_modules/vega/node_modules/d3-dsv/src/dsv.js\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"dsvFormat\", function() { return _dsv_js__WEBPACK_IMPORTED_MODULE_0__[\"default\"]; });\n\n/* harmony import */ var _csv_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./csv.js */ \"./node_modules/vega/node_modules/d3-dsv/src/csv.js\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"csvParse\", function() { return _csv_js__WEBPACK_IMPORTED_MODULE_1__[\"csvParse\"]; });\n\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"csvParseRows\", function() { return _csv_js__WEBPACK_IMPORTED_MODULE_1__[\"csvParseRows\"]; });\n\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"csvFormat\", function() { return _csv_js__WEBPACK_IMPORTED_MODULE_1__[\"csvFormat\"]; });\n\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"csvFormatBody\", function() { return _csv_js__WEBPACK_IMPORTED_MODULE_1__[\"csvFormatBody\"]; });\n\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"csvFormatRows\", function() { return _csv_js__WEBPACK_IMPORTED_MODULE_1__[\"csvFormatRows\"]; });\n\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"csvFormatRow\", function() { return _csv_js__WEBPACK_IMPORTED_MODULE_1__[\"csvFormatRow\"]; });\n\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"csvFormatValue\", function() { return _csv_js__WEBPACK_IMPORTED_MODULE_1__[\"csvFormatValue\"]; });\n\n/* harmony import */ var _tsv_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./tsv.js */ \"./node_modules/vega/node_modules/d3-dsv/src/tsv.js\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"tsvParse\", function() { return _tsv_js__WEBPACK_IMPORTED_MODULE_2__[\"tsvParse\"]; });\n\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"tsvParseRows\", function() { return _tsv_js__WEBPACK_IMPORTED_MODULE_2__[\"tsvParseRows\"]; });\n\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"tsvFormat\", function() { return _tsv_js__WEBPACK_IMPORTED_MODULE_2__[\"tsvFormat\"]; });\n\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"tsvFormatBody\", function() { return _tsv_js__WEBPACK_IMPORTED_MODULE_2__[\"tsvFormatBody\"]; });\n\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"tsvFormatRows\", function() { return _tsv_js__WEBPACK_IMPORTED_MODULE_2__[\"tsvFormatRows\"]; });\n\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"tsvFormatRow\", function() { return _tsv_js__WEBPACK_IMPORTED_MODULE_2__[\"tsvFormatRow\"]; });\n\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"tsvFormatValue\", function() { return _tsv_js__WEBPACK_IMPORTED_MODULE_2__[\"tsvFormatValue\"]; });\n\n/* harmony import */ var _autoType_js__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ./autoType.js */ \"./node_modules/vega/node_modules/d3-dsv/src/autoType.js\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"autoType\", function() { return _autoType_js__WEBPACK_IMPORTED_MODULE_3__[\"default\"]; });\n\n\n\n\n\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvdmVnYS9ub2RlX21vZHVsZXMvZDMtZHN2L3NyYy9pbmRleC5qcy5qcyIsInNvdXJjZXMiOlsid2VicGFjazovLy8uL25vZGVfbW9kdWxlcy92ZWdhL25vZGVfbW9kdWxlcy9kMy1kc3Yvc3JjL2luZGV4LmpzP2Y0NTQiXSwic291cmNlc0NvbnRlbnQiOlsiZXhwb3J0IHtkZWZhdWx0IGFzIGRzdkZvcm1hdH0gZnJvbSBcIi4vZHN2LmpzXCI7XG5leHBvcnQge2NzdlBhcnNlLCBjc3ZQYXJzZVJvd3MsIGNzdkZvcm1hdCwgY3N2Rm9ybWF0Qm9keSwgY3N2Rm9ybWF0Um93cywgY3N2Rm9ybWF0Um93LCBjc3ZGb3JtYXRWYWx1ZX0gZnJvbSBcIi4vY3N2LmpzXCI7XG5leHBvcnQge3RzdlBhcnNlLCB0c3ZQYXJzZVJvd3MsIHRzdkZvcm1hdCwgdHN2Rm9ybWF0Qm9keSwgdHN2Rm9ybWF0Um93cywgdHN2Rm9ybWF0Um93LCB0c3ZGb3JtYXRWYWx1ZX0gZnJvbSBcIi4vdHN2LmpzXCI7XG5leHBvcnQge2RlZmF1bHQgYXMgYXV0b1R5cGV9IGZyb20gXCIuL2F1dG9UeXBlLmpzXCI7XG4iXSwibWFwcGluZ3MiOiJBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7Iiwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///./node_modules/vega/node_modules/d3-dsv/src/index.js\n");

/***/ }),

/***/ "./node_modules/vega/node_modules/d3-dsv/src/tsv.js":
/*!**********************************************************!*\
  !*** ./node_modules/vega/node_modules/d3-dsv/src/tsv.js ***!
  \**********************************************************/
/*! exports provided: tsvParse, tsvParseRows, tsvFormat, tsvFormatBody, tsvFormatRows, tsvFormatRow, tsvFormatValue */
/***/ (function(module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"tsvParse\", function() { return tsvParse; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"tsvParseRows\", function() { return tsvParseRows; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"tsvFormat\", function() { return tsvFormat; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"tsvFormatBody\", function() { return tsvFormatBody; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"tsvFormatRows\", function() { return tsvFormatRows; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"tsvFormatRow\", function() { return tsvFormatRow; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"tsvFormatValue\", function() { return tsvFormatValue; });\n/* harmony import */ var _dsv_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./dsv.js */ \"./node_modules/vega/node_modules/d3-dsv/src/dsv.js\");\n\n\nvar tsv = Object(_dsv_js__WEBPACK_IMPORTED_MODULE_0__[\"default\"])(\"\\t\");\n\nvar tsvParse = tsv.parse;\nvar tsvParseRows = tsv.parseRows;\nvar tsvFormat = tsv.format;\nvar tsvFormatBody = tsv.formatBody;\nvar tsvFormatRows = tsv.formatRows;\nvar tsvFormatRow = tsv.formatRow;\nvar tsvFormatValue = tsv.formatValue;\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvdmVnYS9ub2RlX21vZHVsZXMvZDMtZHN2L3NyYy90c3YuanMuanMiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvdmVnYS9ub2RlX21vZHVsZXMvZDMtZHN2L3NyYy90c3YuanM/MjMyYiJdLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgZHN2IGZyb20gXCIuL2Rzdi5qc1wiO1xuXG52YXIgdHN2ID0gZHN2KFwiXFx0XCIpO1xuXG5leHBvcnQgdmFyIHRzdlBhcnNlID0gdHN2LnBhcnNlO1xuZXhwb3J0IHZhciB0c3ZQYXJzZVJvd3MgPSB0c3YucGFyc2VSb3dzO1xuZXhwb3J0IHZhciB0c3ZGb3JtYXQgPSB0c3YuZm9ybWF0O1xuZXhwb3J0IHZhciB0c3ZGb3JtYXRCb2R5ID0gdHN2LmZvcm1hdEJvZHk7XG5leHBvcnQgdmFyIHRzdkZvcm1hdFJvd3MgPSB0c3YuZm9ybWF0Um93cztcbmV4cG9ydCB2YXIgdHN2Rm9ybWF0Um93ID0gdHN2LmZvcm1hdFJvdztcbmV4cG9ydCB2YXIgdHN2Rm9ybWF0VmFsdWUgPSB0c3YuZm9ybWF0VmFsdWU7XG4iXSwibWFwcGluZ3MiOiJBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7Iiwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///./node_modules/vega/node_modules/d3-dsv/src/tsv.js\n");

/***/ }),

/***/ "./node_modules/vega/node_modules/d3-force/src/center.js":
/*!***************************************************************!*\
  !*** ./node_modules/vega/node_modules/d3-force/src/center.js ***!
  \***************************************************************/
/*! exports provided: default */
/***/ (function(module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony default export */ __webpack_exports__[\"default\"] = (function(x, y) {\n  var nodes, strength = 1;\n\n  if (x == null) x = 0;\n  if (y == null) y = 0;\n\n  function force() {\n    var i,\n        n = nodes.length,\n        node,\n        sx = 0,\n        sy = 0;\n\n    for (i = 0; i < n; ++i) {\n      node = nodes[i], sx += node.x, sy += node.y;\n    }\n\n    for (sx = (sx / n - x) * strength, sy = (sy / n - y) * strength, i = 0; i < n; ++i) {\n      node = nodes[i], node.x -= sx, node.y -= sy;\n    }\n  }\n\n  force.initialize = function(_) {\n    nodes = _;\n  };\n\n  force.x = function(_) {\n    return arguments.length ? (x = +_, force) : x;\n  };\n\n  force.y = function(_) {\n    return arguments.length ? (y = +_, force) : y;\n  };\n\n  force.strength = function(_) {\n    return arguments.length ? (strength = +_, force) : strength;\n  };\n\n  return force;\n});\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvdmVnYS9ub2RlX21vZHVsZXMvZDMtZm9yY2Uvc3JjL2NlbnRlci5qcy5qcyIsInNvdXJjZXMiOlsid2VicGFjazovLy8uL25vZGVfbW9kdWxlcy92ZWdhL25vZGVfbW9kdWxlcy9kMy1mb3JjZS9zcmMvY2VudGVyLmpzPzYwNDciXSwic291cmNlc0NvbnRlbnQiOlsiZXhwb3J0IGRlZmF1bHQgZnVuY3Rpb24oeCwgeSkge1xuICB2YXIgbm9kZXMsIHN0cmVuZ3RoID0gMTtcblxuICBpZiAoeCA9PSBudWxsKSB4ID0gMDtcbiAgaWYgKHkgPT0gbnVsbCkgeSA9IDA7XG5cbiAgZnVuY3Rpb24gZm9yY2UoKSB7XG4gICAgdmFyIGksXG4gICAgICAgIG4gPSBub2Rlcy5sZW5ndGgsXG4gICAgICAgIG5vZGUsXG4gICAgICAgIHN4ID0gMCxcbiAgICAgICAgc3kgPSAwO1xuXG4gICAgZm9yIChpID0gMDsgaSA8IG47ICsraSkge1xuICAgICAgbm9kZSA9IG5vZGVzW2ldLCBzeCArPSBub2RlLngsIHN5ICs9IG5vZGUueTtcbiAgICB9XG5cbiAgICBmb3IgKHN4ID0gKHN4IC8gbiAtIHgpICogc3RyZW5ndGgsIHN5ID0gKHN5IC8gbiAtIHkpICogc3RyZW5ndGgsIGkgPSAwOyBpIDwgbjsgKytpKSB7XG4gICAgICBub2RlID0gbm9kZXNbaV0sIG5vZGUueCAtPSBzeCwgbm9kZS55IC09IHN5O1xuICAgIH1cbiAgfVxuXG4gIGZvcmNlLmluaXRpYWxpemUgPSBmdW5jdGlvbihfKSB7XG4gICAgbm9kZXMgPSBfO1xuICB9O1xuXG4gIGZvcmNlLnggPSBmdW5jdGlvbihfKSB7XG4gICAgcmV0dXJuIGFyZ3VtZW50cy5sZW5ndGggPyAoeCA9ICtfLCBmb3JjZSkgOiB4O1xuICB9O1xuXG4gIGZvcmNlLnkgPSBmdW5jdGlvbihfKSB7XG4gICAgcmV0dXJuIGFyZ3VtZW50cy5sZW5ndGggPyAoeSA9ICtfLCBmb3JjZSkgOiB5O1xuICB9O1xuXG4gIGZvcmNlLnN0cmVuZ3RoID0gZnVuY3Rpb24oXykge1xuICAgIHJldHVybiBhcmd1bWVudHMubGVuZ3RoID8gKHN0cmVuZ3RoID0gK18sIGZvcmNlKSA6IHN0cmVuZ3RoO1xuICB9O1xuXG4gIHJldHVybiBmb3JjZTtcbn1cbiJdLCJtYXBwaW5ncyI6IkFBQUE7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTsiLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///./node_modules/vega/node_modules/d3-force/src/center.js\n");

/***/ }),

/***/ "./node_modules/vega/node_modules/d3-force/src/collide.js":
/*!****************************************************************!*\
  !*** ./node_modules/vega/node_modules/d3-force/src/collide.js ***!
  \****************************************************************/
/*! exports provided: default */
/***/ (function(module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var d3_quadtree__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! d3-quadtree */ \"./node_modules/d3-quadtree/src/index.js\");\n/* harmony import */ var _constant_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./constant.js */ \"./node_modules/vega/node_modules/d3-force/src/constant.js\");\n/* harmony import */ var _jiggle_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./jiggle.js */ \"./node_modules/vega/node_modules/d3-force/src/jiggle.js\");\n\n\n\n\nfunction x(d) {\n  return d.x + d.vx;\n}\n\nfunction y(d) {\n  return d.y + d.vy;\n}\n\n/* harmony default export */ __webpack_exports__[\"default\"] = (function(radius) {\n  var nodes,\n      radii,\n      random,\n      strength = 1,\n      iterations = 1;\n\n  if (typeof radius !== \"function\") radius = Object(_constant_js__WEBPACK_IMPORTED_MODULE_1__[\"default\"])(radius == null ? 1 : +radius);\n\n  function force() {\n    var i, n = nodes.length,\n        tree,\n        node,\n        xi,\n        yi,\n        ri,\n        ri2;\n\n    for (var k = 0; k < iterations; ++k) {\n      tree = Object(d3_quadtree__WEBPACK_IMPORTED_MODULE_0__[\"quadtree\"])(nodes, x, y).visitAfter(prepare);\n      for (i = 0; i < n; ++i) {\n        node = nodes[i];\n        ri = radii[node.index], ri2 = ri * ri;\n        xi = node.x + node.vx;\n        yi = node.y + node.vy;\n        tree.visit(apply);\n      }\n    }\n\n    function apply(quad, x0, y0, x1, y1) {\n      var data = quad.data, rj = quad.r, r = ri + rj;\n      if (data) {\n        if (data.index > node.index) {\n          var x = xi - data.x - data.vx,\n              y = yi - data.y - data.vy,\n              l = x * x + y * y;\n          if (l < r * r) {\n            if (x === 0) x = Object(_jiggle_js__WEBPACK_IMPORTED_MODULE_2__[\"default\"])(random), l += x * x;\n            if (y === 0) y = Object(_jiggle_js__WEBPACK_IMPORTED_MODULE_2__[\"default\"])(random), l += y * y;\n            l = (r - (l = Math.sqrt(l))) / l * strength;\n            node.vx += (x *= l) * (r = (rj *= rj) / (ri2 + rj));\n            node.vy += (y *= l) * r;\n            data.vx -= x * (r = 1 - r);\n            data.vy -= y * r;\n          }\n        }\n        return;\n      }\n      return x0 > xi + r || x1 < xi - r || y0 > yi + r || y1 < yi - r;\n    }\n  }\n\n  function prepare(quad) {\n    if (quad.data) return quad.r = radii[quad.data.index];\n    for (var i = quad.r = 0; i < 4; ++i) {\n      if (quad[i] && quad[i].r > quad.r) {\n        quad.r = quad[i].r;\n      }\n    }\n  }\n\n  function initialize() {\n    if (!nodes) return;\n    var i, n = nodes.length, node;\n    radii = new Array(n);\n    for (i = 0; i < n; ++i) node = nodes[i], radii[node.index] = +radius(node, i, nodes);\n  }\n\n  force.initialize = function(_nodes, _random) {\n    nodes = _nodes;\n    random = _random;\n    initialize();\n  };\n\n  force.iterations = function(_) {\n    return arguments.length ? (iterations = +_, force) : iterations;\n  };\n\n  force.strength = function(_) {\n    return arguments.length ? (strength = +_, force) : strength;\n  };\n\n  force.radius = function(_) {\n    return arguments.length ? (radius = typeof _ === \"function\" ? _ : Object(_constant_js__WEBPACK_IMPORTED_MODULE_1__[\"default\"])(+_), initialize(), force) : radius;\n  };\n\n  return force;\n});\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,[encoded data, 4496 characters]\n//# sourceURL=webpack-internal:///./node_modules/vega/node_modules/d3-force/src/collide.js\n");

/***/ }),

/***/ "./node_modules/vega/node_modules/d3-force/src/constant.js":
/*!*****************************************************************!*\
  !*** ./node_modules/vega/node_modules/d3-force/src/constant.js ***!
  \*****************************************************************/
/*! exports provided: default */
/***/ (function(module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony default export */ __webpack_exports__[\"default\"] = (function(x) {\n  return function() {\n    return x;\n  };\n});\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvdmVnYS9ub2RlX21vZHVsZXMvZDMtZm9yY2Uvc3JjL2NvbnN0YW50LmpzLmpzIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL3ZlZ2Evbm9kZV9tb2R1bGVzL2QzLWZvcmNlL3NyYy9jb25zdGFudC5qcz9iMTgyIl0sInNvdXJjZXNDb250ZW50IjpbImV4cG9ydCBkZWZhdWx0IGZ1bmN0aW9uKHgpIHtcbiAgcmV0dXJuIGZ1bmN0aW9uKCkge1xuICAgIHJldHVybiB4O1xuICB9O1xufVxuIl0sIm1hcHBpbmdzIjoiQUFBQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7Iiwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///./node_modules/vega/node_modules/d3-force/src/constant.js\n");

/***/ }),

/***/ "./node_modules/vega/node_modules/d3-force/src/index.js":
/*!**************************************************************!*\
  !*** ./node_modules/vega/node_modules/d3-force/src/index.js ***!
  \**************************************************************/
/*! exports provided: forceCenter, forceCollide, forceLink, forceManyBody, forceRadial, forceSimulation, forceX, forceY */
/***/ (function(module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _center_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./center.js */ \"./node_modules/vega/node_modules/d3-force/src/center.js\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"forceCenter\", function() { return _center_js__WEBPACK_IMPORTED_MODULE_0__[\"default\"]; });\n\n/* harmony import */ var _collide_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./collide.js */ \"./node_modules/vega/node_modules/d3-force/src/collide.js\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"forceCollide\", function() { return _collide_js__WEBPACK_IMPORTED_MODULE_1__[\"default\"]; });\n\n/* harmony import */ var _link_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./link.js */ \"./node_modules/vega/node_modules/d3-force/src/link.js\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"forceLink\", function() { return _link_js__WEBPACK_IMPORTED_MODULE_2__[\"default\"]; });\n\n/* harmony import */ var _manyBody_js__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ./manyBody.js */ \"./node_modules/vega/node_modules/d3-force/src/manyBody.js\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"forceManyBody\", function() { return _manyBody_js__WEBPACK_IMPORTED_MODULE_3__[\"default\"]; });\n\n/* harmony import */ var _radial_js__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ./radial.js */ \"./node_modules/vega/node_modules/d3-force/src/radial.js\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"forceRadial\", function() { return _radial_js__WEBPACK_IMPORTED_MODULE_4__[\"default\"]; });\n\n/* harmony import */ var _simulation_js__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! ./simulation.js */ \"./node_modules/vega/node_modules/d3-force/src/simulation.js\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"forceSimulation\", function() { return _simulation_js__WEBPACK_IMPORTED_MODULE_5__[\"default\"]; });\n\n/* harmony import */ var _x_js__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! ./x.js */ \"./node_modules/vega/node_modules/d3-force/src/x.js\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"forceX\", function() { return _x_js__WEBPACK_IMPORTED_MODULE_6__[\"default\"]; });\n\n/* harmony import */ var _y_js__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! ./y.js */ \"./node_modules/vega/node_modules/d3-force/src/y.js\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"forceY\", function() { return _y_js__WEBPACK_IMPORTED_MODULE_7__[\"default\"]; });\n\n\n\n\n\n\n\n\n\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvdmVnYS9ub2RlX21vZHVsZXMvZDMtZm9yY2Uvc3JjL2luZGV4LmpzLmpzIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL3ZlZ2Evbm9kZV9tb2R1bGVzL2QzLWZvcmNlL3NyYy9pbmRleC5qcz83OGQ5Il0sInNvdXJjZXNDb250ZW50IjpbImV4cG9ydCB7ZGVmYXVsdCBhcyBmb3JjZUNlbnRlcn0gZnJvbSBcIi4vY2VudGVyLmpzXCI7XG5leHBvcnQge2RlZmF1bHQgYXMgZm9yY2VDb2xsaWRlfSBmcm9tIFwiLi9jb2xsaWRlLmpzXCI7XG5leHBvcnQge2RlZmF1bHQgYXMgZm9yY2VMaW5rfSBmcm9tIFwiLi9saW5rLmpzXCI7XG5leHBvcnQge2RlZmF1bHQgYXMgZm9yY2VNYW55Qm9keX0gZnJvbSBcIi4vbWFueUJvZHkuanNcIjtcbmV4cG9ydCB7ZGVmYXVsdCBhcyBmb3JjZVJhZGlhbH0gZnJvbSBcIi4vcmFkaWFsLmpzXCI7XG5leHBvcnQge2RlZmF1bHQgYXMgZm9yY2VTaW11bGF0aW9ufSBmcm9tIFwiLi9zaW11bGF0aW9uLmpzXCI7XG5leHBvcnQge2RlZmF1bHQgYXMgZm9yY2VYfSBmcm9tIFwiLi94LmpzXCI7XG5leHBvcnQge2RlZmF1bHQgYXMgZm9yY2VZfSBmcm9tIFwiLi95LmpzXCI7XG4iXSwibWFwcGluZ3MiOiJBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTsiLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///./node_modules/vega/node_modules/d3-force/src/index.js\n");

/***/ }),

/***/ "./node_modules/vega/node_modules/d3-force/src/jiggle.js":
/*!***************************************************************!*\
  !*** ./node_modules/vega/node_modules/d3-force/src/jiggle.js ***!
  \***************************************************************/
/*! exports provided: default */
/***/ (function(module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony default export */ __webpack_exports__[\"default\"] = (function(random) {\n  return (random() - 0.5) * 1e-6;\n});\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvdmVnYS9ub2RlX21vZHVsZXMvZDMtZm9yY2Uvc3JjL2ppZ2dsZS5qcy5qcyIsInNvdXJjZXMiOlsid2VicGFjazovLy8uL25vZGVfbW9kdWxlcy92ZWdhL25vZGVfbW9kdWxlcy9kMy1mb3JjZS9zcmMvamlnZ2xlLmpzP2E3ODkiXSwic291cmNlc0NvbnRlbnQiOlsiZXhwb3J0IGRlZmF1bHQgZnVuY3Rpb24ocmFuZG9tKSB7XG4gIHJldHVybiAocmFuZG9tKCkgLSAwLjUpICogMWUtNjtcbn1cbiJdLCJtYXBwaW5ncyI6IkFBQUE7QUFBQTtBQUNBO0FBQ0E7Iiwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///./node_modules/vega/node_modules/d3-force/src/jiggle.js\n");

/***/ }),

/***/ "./node_modules/vega/node_modules/d3-force/src/lcg.js":
/*!************************************************************!*\
  !*** ./node_modules/vega/node_modules/d3-force/src/lcg.js ***!
  \************************************************************/
/*! exports provided: default */
/***/ (function(module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n// https://en.wikipedia.org/wiki/Linear_congruential_generator#Parameters_in_common_use\nconst a = 1664525;\nconst c = 1013904223;\nconst m = 4294967296; // 2^32\n\n/* harmony default export */ __webpack_exports__[\"default\"] = (function() {\n  let s = 1;\n  return () => (s = (a * s + c) % m) / m;\n});\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvdmVnYS9ub2RlX21vZHVsZXMvZDMtZm9yY2Uvc3JjL2xjZy5qcy5qcyIsInNvdXJjZXMiOlsid2VicGFjazovLy8uL25vZGVfbW9kdWxlcy92ZWdhL25vZGVfbW9kdWxlcy9kMy1mb3JjZS9zcmMvbGNnLmpzPzdlYTgiXSwic291cmNlc0NvbnRlbnQiOlsiLy8gaHR0cHM6Ly9lbi53aWtpcGVkaWEub3JnL3dpa2kvTGluZWFyX2NvbmdydWVudGlhbF9nZW5lcmF0b3IjUGFyYW1ldGVyc19pbl9jb21tb25fdXNlXG5jb25zdCBhID0gMTY2NDUyNTtcbmNvbnN0IGMgPSAxMDEzOTA0MjIzO1xuY29uc3QgbSA9IDQyOTQ5NjcyOTY7IC8vIDJeMzJcblxuZXhwb3J0IGRlZmF1bHQgZnVuY3Rpb24oKSB7XG4gIGxldCBzID0gMTtcbiAgcmV0dXJuICgpID0+IChzID0gKGEgKiBzICsgYykgJSBtKSAvIG07XG59XG4iXSwibWFwcGluZ3MiOiJBQUFBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOyIsInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///./node_modules/vega/node_modules/d3-force/src/lcg.js\n");

/***/ }),

/***/ "./node_modules/vega/node_modules/d3-force/src/link.js":
/*!*************************************************************!*\
  !*** ./node_modules/vega/node_modules/d3-force/src/link.js ***!
  \*************************************************************/
/*! exports provided: default */
/***/ (function(module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _constant_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./constant.js */ \"./node_modules/vega/node_modules/d3-force/src/constant.js\");\n/* harmony import */ var _jiggle_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./jiggle.js */ \"./node_modules/vega/node_modules/d3-force/src/jiggle.js\");\n\n\n\nfunction index(d) {\n  return d.index;\n}\n\nfunction find(nodeById, nodeId) {\n  var node = nodeById.get(nodeId);\n  if (!node) throw new Error(\"node not found: \" + nodeId);\n  return node;\n}\n\n/* harmony default export */ __webpack_exports__[\"default\"] = (function(links) {\n  var id = index,\n      strength = defaultStrength,\n      strengths,\n      distance = Object(_constant_js__WEBPACK_IMPORTED_MODULE_0__[\"default\"])(30),\n      distances,\n      nodes,\n      count,\n      bias,\n      random,\n      iterations = 1;\n\n  if (links == null) links = [];\n\n  function defaultStrength(link) {\n    return 1 / Math.min(count[link.source.index], count[link.target.index]);\n  }\n\n  function force(alpha) {\n    for (var k = 0, n = links.length; k < iterations; ++k) {\n      for (var i = 0, link, source, target, x, y, l, b; i < n; ++i) {\n        link = links[i], source = link.source, target = link.target;\n        x = target.x + target.vx - source.x - source.vx || Object(_jiggle_js__WEBPACK_IMPORTED_MODULE_1__[\"default\"])(random);\n        y = target.y + target.vy - source.y - source.vy || Object(_jiggle_js__WEBPACK_IMPORTED_MODULE_1__[\"default\"])(random);\n        l = Math.sqrt(x * x + y * y);\n        l = (l - distances[i]) / l * alpha * strengths[i];\n        x *= l, y *= l;\n        target.vx -= x * (b = bias[i]);\n        target.vy -= y * b;\n        source.vx += x * (b = 1 - b);\n        source.vy += y * b;\n      }\n    }\n  }\n\n  function initialize() {\n    if (!nodes) return;\n\n    var i,\n        n = nodes.length,\n        m = links.length,\n        nodeById = new Map(nodes.map((d, i) => [id(d, i, nodes), d])),\n        link;\n\n    for (i = 0, count = new Array(n); i < m; ++i) {\n      link = links[i], link.index = i;\n      if (typeof link.source !== \"object\") link.source = find(nodeById, link.source);\n      if (typeof link.target !== \"object\") link.target = find(nodeById, link.target);\n      count[link.source.index] = (count[link.source.index] || 0) + 1;\n      count[link.target.index] = (count[link.target.index] || 0) + 1;\n    }\n\n    for (i = 0, bias = new Array(m); i < m; ++i) {\n      link = links[i], bias[i] = count[link.source.index] / (count[link.source.index] + count[link.target.index]);\n    }\n\n    strengths = new Array(m), initializeStrength();\n    distances = new Array(m), initializeDistance();\n  }\n\n  function initializeStrength() {\n    if (!nodes) return;\n\n    for (var i = 0, n = links.length; i < n; ++i) {\n      strengths[i] = +strength(links[i], i, links);\n    }\n  }\n\n  function initializeDistance() {\n    if (!nodes) return;\n\n    for (var i = 0, n = links.length; i < n; ++i) {\n      distances[i] = +distance(links[i], i, links);\n    }\n  }\n\n  force.initialize = function(_nodes, _random) {\n    nodes = _nodes;\n    random = _random;\n    initialize();\n  };\n\n  force.links = function(_) {\n    return arguments.length ? (links = _, initialize(), force) : links;\n  };\n\n  force.id = function(_) {\n    return arguments.length ? (id = _, force) : id;\n  };\n\n  force.iterations = function(_) {\n    return arguments.length ? (iterations = +_, force) : iterations;\n  };\n\n  force.strength = function(_) {\n    return arguments.length ? (strength = typeof _ === \"function\" ? _ : Object(_constant_js__WEBPACK_IMPORTED_MODULE_0__[\"default\"])(+_), initializeStrength(), force) : strength;\n  };\n\n  force.distance = function(_) {\n    return arguments.length ? (distance = typeof _ === \"function\" ? _ : Object(_constant_js__WEBPACK_IMPORTED_MODULE_0__[\"default\"])(+_), initializeDistance(), force) : distance;\n  };\n\n  return force;\n});\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,[encoded data, 5656 characters]\n//# sourceURL=webpack-internal:///./node_modules/vega/node_modules/d3-force/src/link.js\n");

/***/ }),

/***/ "./node_modules/vega/node_modules/d3-force/src/manyBody.js":
/*!*****************************************************************!*\
  !*** ./node_modules/vega/node_modules/d3-force/src/manyBody.js ***!
  \*****************************************************************/
/*! exports provided: default */
/***/ (function(module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var d3_quadtree__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! d3-quadtree */ \"./node_modules/d3-quadtree/src/index.js\");\n/* harmony import */ var _constant_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./constant.js */ \"./node_modules/vega/node_modules/d3-force/src/constant.js\");\n/* harmony import */ var _jiggle_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./jiggle.js */ \"./node_modules/vega/node_modules/d3-force/src/jiggle.js\");\n/* harmony import */ var _simulation_js__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ./simulation.js */ \"./node_modules/vega/node_modules/d3-force/src/simulation.js\");\n\n\n\n\n\n/* harmony default export */ __webpack_exports__[\"default\"] = (function() {\n  var nodes,\n      node,\n      random,\n      alpha,\n      strength = Object(_constant_js__WEBPACK_IMPORTED_MODULE_1__[\"default\"])(-30),\n      strengths,\n      distanceMin2 = 1,\n      distanceMax2 = Infinity,\n      theta2 = 0.81;\n\n  function force(_) {\n    var i, n = nodes.length, tree = Object(d3_quadtree__WEBPACK_IMPORTED_MODULE_0__[\"quadtree\"])(nodes, _simulation_js__WEBPACK_IMPORTED_MODULE_3__[\"x\"], _simulation_js__WEBPACK_IMPORTED_MODULE_3__[\"y\"]).visitAfter(accumulate);\n    for (alpha = _, i = 0; i < n; ++i) node = nodes[i], tree.visit(apply);\n  }\n\n  function initialize() {\n    if (!nodes) return;\n    var i, n = nodes.length, node;\n    strengths = new Array(n);\n    for (i = 0; i < n; ++i) node = nodes[i], strengths[node.index] = +strength(node, i, nodes);\n  }\n\n  function accumulate(quad) {\n    var strength = 0, q, c, weight = 0, x, y, i;\n\n    // For internal nodes, accumulate forces from child quadrants.\n    if (quad.length) {\n      for (x = y = i = 0; i < 4; ++i) {\n        if ((q = quad[i]) && (c = Math.abs(q.value))) {\n          strength += q.value, weight += c, x += c * q.x, y += c * q.y;\n        }\n      }\n      quad.x = x / weight;\n      quad.y = y / weight;\n    }\n\n    // For leaf nodes, accumulate forces from coincident quadrants.\n    else {\n      q = quad;\n      q.x = q.data.x;\n      q.y = q.data.y;\n      do strength += strengths[q.data.index];\n      while (q = q.next);\n    }\n\n    quad.value = strength;\n  }\n\n  function apply(quad, x1, _, x2) {\n    if (!quad.value) return true;\n\n    var x = quad.x - node.x,\n        y = quad.y - node.y,\n        w = x2 - x1,\n        l = x * x + y * y;\n\n    // Apply the Barnes-Hut approximation if possible.\n    // Limit forces for very close nodes; randomize direction if coincident.\n    if (w * w / theta2 < l) {\n      if (l < distanceMax2) {\n        if (x === 0) x = Object(_jiggle_js__WEBPACK_IMPORTED_MODULE_2__[\"default\"])(random), l += x * x;\n        if (y === 0) y = Object(_jiggle_js__WEBPACK_IMPORTED_MODULE_2__[\"default\"])(random), l += y * y;\n        if (l < distanceMin2) l = Math.sqrt(distanceMin2 * l);\n        node.vx += x * quad.value * alpha / l;\n        node.vy += y * quad.value * alpha / l;\n      }\n      return true;\n    }\n\n    // Otherwise, process points directly.\n    else if (quad.length || l >= distanceMax2) return;\n\n    // Limit forces for very close nodes; randomize direction if coincident.\n    if (quad.data !== node || quad.next) {\n      if (x === 0) x = Object(_jiggle_js__WEBPACK_IMPORTED_MODULE_2__[\"default\"])(random), l += x * x;\n      if (y === 0) y = Object(_jiggle_js__WEBPACK_IMPORTED_MODULE_2__[\"default\"])(random), l += y * y;\n      if (l < distanceMin2) l = Math.sqrt(distanceMin2 * l);\n    }\n\n    do if (quad.data !== node) {\n      w = strengths[quad.data.index] * alpha / l;\n      node.vx += x * w;\n      node.vy += y * w;\n    } while (quad = quad.next);\n  }\n\n  force.initialize = function(_nodes, _random) {\n    nodes = _nodes;\n    random = _random;\n    initialize();\n  };\n\n  force.strength = function(_) {\n    return arguments.length ? (strength = typeof _ === \"function\" ? _ : Object(_constant_js__WEBPACK_IMPORTED_MODULE_1__[\"default\"])(+_), initialize(), force) : strength;\n  };\n\n  force.distanceMin = function(_) {\n    return arguments.length ? (distanceMin2 = _ * _, force) : Math.sqrt(distanceMin2);\n  };\n\n  force.distanceMax = function(_) {\n    return arguments.length ? (distanceMax2 = _ * _, force) : Math.sqrt(distanceMax2);\n  };\n\n  force.theta = function(_) {\n    return arguments.length ? (theta2 = _ * _, force) : Math.sqrt(theta2);\n  };\n\n  return force;\n});\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,[encoded data, 5680 characters]\n//# sourceURL=webpack-internal:///./node_modules/vega/node_modules/d3-force/src/manyBody.js\n");

/***/ }),

/***/ "./node_modules/vega/node_modules/d3-force/src/radial.js":
/*!***************************************************************!*\
  !*** ./node_modules/vega/node_modules/d3-force/src/radial.js ***!
  \***************************************************************/
/*! exports provided: default */
/***/ (function(module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _constant_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./constant.js */ \"./node_modules/vega/node_modules/d3-force/src/constant.js\");\n\n\n/* harmony default export */ __webpack_exports__[\"default\"] = (function(radius, x, y) {\n  var nodes,\n      strength = Object(_constant_js__WEBPACK_IMPORTED_MODULE_0__[\"default\"])(0.1),\n      strengths,\n      radiuses;\n\n  if (typeof radius !== \"function\") radius = Object(_constant_js__WEBPACK_IMPORTED_MODULE_0__[\"default\"])(+radius);\n  if (x == null) x = 0;\n  if (y == null) y = 0;\n\n  function force(alpha) {\n    for (var i = 0, n = nodes.length; i < n; ++i) {\n      var node = nodes[i],\n          dx = node.x - x || 1e-6,\n          dy = node.y - y || 1e-6,\n          r = Math.sqrt(dx * dx + dy * dy),\n          k = (radiuses[i] - r) * strengths[i] * alpha / r;\n      node.vx += dx * k;\n      node.vy += dy * k;\n    }\n  }\n\n  function initialize() {\n    if (!nodes) return;\n    var i, n = nodes.length;\n    strengths = new Array(n);\n    radiuses = new Array(n);\n    for (i = 0; i < n; ++i) {\n      radiuses[i] = +radius(nodes[i], i, nodes);\n      strengths[i] = isNaN(radiuses[i]) ? 0 : +strength(nodes[i], i, nodes);\n    }\n  }\n\n  force.initialize = function(_) {\n    nodes = _, initialize();\n  };\n\n  force.strength = function(_) {\n    return arguments.length ? (strength = typeof _ === \"function\" ? _ : Object(_constant_js__WEBPACK_IMPORTED_MODULE_0__[\"default\"])(+_), initialize(), force) : strength;\n  };\n\n  force.radius = function(_) {\n    return arguments.length ? (radius = typeof _ === \"function\" ? _ : Object(_constant_js__WEBPACK_IMPORTED_MODULE_0__[\"default\"])(+_), initialize(), force) : radius;\n  };\n\n  force.x = function(_) {\n    return arguments.length ? (x = +_, force) : x;\n  };\n\n  force.y = function(_) {\n    return arguments.length ? (y = +_, force) : y;\n  };\n\n  return force;\n});\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvdmVnYS9ub2RlX21vZHVsZXMvZDMtZm9yY2Uvc3JjL3JhZGlhbC5qcy5qcyIsInNvdXJjZXMiOlsid2VicGFjazovLy8uL25vZGVfbW9kdWxlcy92ZWdhL25vZGVfbW9kdWxlcy9kMy1mb3JjZS9zcmMvcmFkaWFsLmpzP2UwNTAiXSwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IGNvbnN0YW50IGZyb20gXCIuL2NvbnN0YW50LmpzXCI7XG5cbmV4cG9ydCBkZWZhdWx0IGZ1bmN0aW9uKHJhZGl1cywgeCwgeSkge1xuICB2YXIgbm9kZXMsXG4gICAgICBzdHJlbmd0aCA9IGNvbnN0YW50KDAuMSksXG4gICAgICBzdHJlbmd0aHMsXG4gICAgICByYWRpdXNlcztcblxuICBpZiAodHlwZW9mIHJhZGl1cyAhPT0gXCJmdW5jdGlvblwiKSByYWRpdXMgPSBjb25zdGFudCgrcmFkaXVzKTtcbiAgaWYgKHggPT0gbnVsbCkgeCA9IDA7XG4gIGlmICh5ID09IG51bGwpIHkgPSAwO1xuXG4gIGZ1bmN0aW9uIGZvcmNlKGFscGhhKSB7XG4gICAgZm9yICh2YXIgaSA9IDAsIG4gPSBub2Rlcy5sZW5ndGg7IGkgPCBuOyArK2kpIHtcbiAgICAgIHZhciBub2RlID0gbm9kZXNbaV0sXG4gICAgICAgICAgZHggPSBub2RlLnggLSB4IHx8IDFlLTYsXG4gICAgICAgICAgZHkgPSBub2RlLnkgLSB5IHx8IDFlLTYsXG4gICAgICAgICAgciA9IE1hdGguc3FydChkeCAqIGR4ICsgZHkgKiBkeSksXG4gICAgICAgICAgayA9IChyYWRpdXNlc1tpXSAtIHIpICogc3RyZW5ndGhzW2ldICogYWxwaGEgLyByO1xuICAgICAgbm9kZS52eCArPSBkeCAqIGs7XG4gICAgICBub2RlLnZ5ICs9IGR5ICogaztcbiAgICB9XG4gIH1cblxuICBmdW5jdGlvbiBpbml0aWFsaXplKCkge1xuICAgIGlmICghbm9kZXMpIHJldHVybjtcbiAgICB2YXIgaSwgbiA9IG5vZGVzLmxlbmd0aDtcbiAgICBzdHJlbmd0aHMgPSBuZXcgQXJyYXkobik7XG4gICAgcmFkaXVzZXMgPSBuZXcgQXJyYXkobik7XG4gICAgZm9yIChpID0gMDsgaSA8IG47ICsraSkge1xuICAgICAgcmFkaXVzZXNbaV0gPSArcmFkaXVzKG5vZGVzW2ldLCBpLCBub2Rlcyk7XG4gICAgICBzdHJlbmd0aHNbaV0gPSBpc05hTihyYWRpdXNlc1tpXSkgPyAwIDogK3N0cmVuZ3RoKG5vZGVzW2ldLCBpLCBub2Rlcyk7XG4gICAgfVxuICB9XG5cbiAgZm9yY2UuaW5pdGlhbGl6ZSA9IGZ1bmN0aW9uKF8pIHtcbiAgICBub2RlcyA9IF8sIGluaXRpYWxpemUoKTtcbiAgfTtcblxuICBmb3JjZS5zdHJlbmd0aCA9IGZ1bmN0aW9uKF8pIHtcbiAgICByZXR1cm4gYXJndW1lbnRzLmxlbmd0aCA/IChzdHJlbmd0aCA9IHR5cGVvZiBfID09PSBcImZ1bmN0aW9uXCIgPyBfIDogY29uc3RhbnQoK18pLCBpbml0aWFsaXplKCksIGZvcmNlKSA6IHN0cmVuZ3RoO1xuICB9O1xuXG4gIGZvcmNlLnJhZGl1cyA9IGZ1bmN0aW9uKF8pIHtcbiAgICByZXR1cm4gYXJndW1lbnRzLmxlbmd0aCA/IChyYWRpdXMgPSB0eXBlb2YgXyA9PT0gXCJmdW5jdGlvblwiID8gXyA6IGNvbnN0YW50KCtfKSwgaW5pdGlhbGl6ZSgpLCBmb3JjZSkgOiByYWRpdXM7XG4gIH07XG5cbiAgZm9yY2UueCA9IGZ1bmN0aW9uKF8pIHtcbiAgICByZXR1cm4gYXJndW1lbnRzLmxlbmd0aCA/ICh4ID0gK18sIGZvcmNlKSA6IHg7XG4gIH07XG5cbiAgZm9yY2UueSA9IGZ1bmN0aW9uKF8pIHtcbiAgICByZXR1cm4gYXJndW1lbnRzLmxlbmd0aCA/ICh5ID0gK18sIGZvcmNlKSA6IHk7XG4gIH07XG5cbiAgcmV0dXJuIGZvcmNlO1xufVxuIl0sIm1hcHBpbmdzIjoiQUFBQTtBQUFBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOyIsInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///./node_modules/vega/node_modules/d3-force/src/radial.js\n");

/***/ }),

/***/ "./node_modules/vega/node_modules/d3-force/src/simulation.js":
/*!*******************************************************************!*\
  !*** ./node_modules/vega/node_modules/d3-force/src/simulation.js ***!
  \*******************************************************************/
/*! exports provided: x, y, default */
/***/ (function(module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"x\", function() { return x; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"y\", function() { return y; });\n/* harmony import */ var d3_dispatch__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! d3-dispatch */ \"./node_modules/d3-dispatch/src/index.js\");\n/* harmony import */ var d3_timer__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! d3-timer */ \"./node_modules/d3-timer/src/index.js\");\n/* harmony import */ var _lcg_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./lcg.js */ \"./node_modules/vega/node_modules/d3-force/src/lcg.js\");\n\n\n\n\nfunction x(d) {\n  return d.x;\n}\n\nfunction y(d) {\n  return d.y;\n}\n\nvar initialRadius = 10,\n    initialAngle = Math.PI * (3 - Math.sqrt(5));\n\n/* harmony default export */ __webpack_exports__[\"default\"] = (function(nodes) {\n  var simulation,\n      alpha = 1,\n      alphaMin = 0.001,\n      alphaDecay = 1 - Math.pow(alphaMin, 1 / 300),\n      alphaTarget = 0,\n      velocityDecay = 0.6,\n      forces = new Map(),\n      stepper = Object(d3_timer__WEBPACK_IMPORTED_MODULE_1__[\"timer\"])(step),\n      event = Object(d3_dispatch__WEBPACK_IMPORTED_MODULE_0__[\"dispatch\"])(\"tick\", \"end\"),\n      random = Object(_lcg_js__WEBPACK_IMPORTED_MODULE_2__[\"default\"])();\n\n  if (nodes == null) nodes = [];\n\n  function step() {\n    tick();\n    event.call(\"tick\", simulation);\n    if (alpha < alphaMin) {\n      stepper.stop();\n      event.call(\"end\", simulation);\n    }\n  }\n\n  function tick(iterations) {\n    var i, n = nodes.length, node;\n\n    if (iterations === undefined) iterations = 1;\n\n    for (var k = 0; k < iterations; ++k) {\n      alpha += (alphaTarget - alpha) * alphaDecay;\n\n      forces.forEach(function(force) {\n        force(alpha);\n      });\n\n      for (i = 0; i < n; ++i) {\n        node = nodes[i];\n        if (node.fx == null) node.x += node.vx *= velocityDecay;\n        else node.x = node.fx, node.vx = 0;\n        if (node.fy == null) node.y += node.vy *= velocityDecay;\n        else node.y = node.fy, node.vy = 0;\n      }\n    }\n\n    return simulation;\n  }\n\n  function initializeNodes() {\n    for (var i = 0, n = nodes.length, node; i < n; ++i) {\n      node = nodes[i], node.index = i;\n      if (node.fx != null) node.x = node.fx;\n      if (node.fy != null) node.y = node.fy;\n      if (isNaN(node.x) || isNaN(node.y)) {\n        var radius = initialRadius * Math.sqrt(0.5 + i), angle = i * initialAngle;\n        node.x = radius * Math.cos(angle);\n        node.y = radius * Math.sin(angle);\n      }\n      if (isNaN(node.vx) || isNaN(node.vy)) {\n        node.vx = node.vy = 0;\n      }\n    }\n  }\n\n  function initializeForce(force) {\n    if (force.initialize) force.initialize(nodes, random);\n    return force;\n  }\n\n  initializeNodes();\n\n  return simulation = {\n    tick: tick,\n\n    restart: function() {\n      return stepper.restart(step), simulation;\n    },\n\n    stop: function() {\n      return stepper.stop(), simulation;\n    },\n\n    nodes: function(_) {\n      return arguments.length ? (nodes = _, initializeNodes(), forces.forEach(initializeForce), simulation) : nodes;\n    },\n\n    alpha: function(_) {\n      return arguments.length ? (alpha = +_, simulation) : alpha;\n    },\n\n    alphaMin: function(_) {\n      return arguments.length ? (alphaMin = +_, simulation) : alphaMin;\n    },\n\n    alphaDecay: function(_) {\n      return arguments.length ? (alphaDecay = +_, simulation) : +alphaDecay;\n    },\n\n    alphaTarget: function(_) {\n      return arguments.length ? (alphaTarget = +_, simulation) : alphaTarget;\n    },\n\n    velocityDecay: function(_) {\n      return arguments.length ? (velocityDecay = 1 - _, simulation) : 1 - velocityDecay;\n    },\n\n    randomSource: function(_) {\n      return arguments.length ? (random = _, forces.forEach(initializeForce), simulation) : random;\n    },\n\n    force: function(name, _) {\n      return arguments.length > 1 ? ((_ == null ? forces.delete(name) : forces.set(name, initializeForce(_))), simulation) : forces.get(name);\n    },\n\n    find: function(x, y, radius) {\n      var i = 0,\n          n = nodes.length,\n          dx,\n          dy,\n          d2,\n          node,\n          closest;\n\n      if (radius == null) radius = Infinity;\n      else radius *= radius;\n\n      for (i = 0; i < n; ++i) {\n        node = nodes[i];\n        dx = x - node.x;\n        dy = y - node.y;\n        d2 = dx * dx + dy * dy;\n        if (d2 < radius) closest = node, radius = d2;\n      }\n\n      return closest;\n    },\n\n    on: function(name, _) {\n      return arguments.length > 1 ? (event.on(name, _), simulation) : event.on(name);\n    }\n  };\n});\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,[encoded data, 6768 characters]\n//# sourceURL=webpack-internal:///./node_modules/vega/node_modules/d3-force/src/simulation.js\n");

/***/ }),

/***/ "./node_modules/vega/node_modules/d3-force/src/x.js":
/*!**********************************************************!*\
  !*** ./node_modules/vega/node_modules/d3-force/src/x.js ***!
  \**********************************************************/
/*! exports provided: default */
/***/ (function(module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _constant_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./constant.js */ \"./node_modules/vega/node_modules/d3-force/src/constant.js\");\n\n\n/* harmony default export */ __webpack_exports__[\"default\"] = (function(x) {\n  var strength = Object(_constant_js__WEBPACK_IMPORTED_MODULE_0__[\"default\"])(0.1),\n      nodes,\n      strengths,\n      xz;\n\n  if (typeof x !== \"function\") x = Object(_constant_js__WEBPACK_IMPORTED_MODULE_0__[\"default\"])(x == null ? 0 : +x);\n\n  function force(alpha) {\n    for (var i = 0, n = nodes.length, node; i < n; ++i) {\n      node = nodes[i], node.vx += (xz[i] - node.x) * strengths[i] * alpha;\n    }\n  }\n\n  function initialize() {\n    if (!nodes) return;\n    var i, n = nodes.length;\n    strengths = new Array(n);\n    xz = new Array(n);\n    for (i = 0; i < n; ++i) {\n      strengths[i] = isNaN(xz[i] = +x(nodes[i], i, nodes)) ? 0 : +strength(nodes[i], i, nodes);\n    }\n  }\n\n  force.initialize = function(_) {\n    nodes = _;\n    initialize();\n  };\n\n  force.strength = function(_) {\n    return arguments.length ? (strength = typeof _ === \"function\" ? _ : Object(_constant_js__WEBPACK_IMPORTED_MODULE_0__[\"default\"])(+_), initialize(), force) : strength;\n  };\n\n  force.x = function(_) {\n    return arguments.length ? (x = typeof _ === \"function\" ? _ : Object(_constant_js__WEBPACK_IMPORTED_MODULE_0__[\"default\"])(+_), initialize(), force) : x;\n  };\n\n  return force;\n});\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvdmVnYS9ub2RlX21vZHVsZXMvZDMtZm9yY2Uvc3JjL3guanMuanMiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvdmVnYS9ub2RlX21vZHVsZXMvZDMtZm9yY2Uvc3JjL3guanM/ZTkyNCJdLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgY29uc3RhbnQgZnJvbSBcIi4vY29uc3RhbnQuanNcIjtcblxuZXhwb3J0IGRlZmF1bHQgZnVuY3Rpb24oeCkge1xuICB2YXIgc3RyZW5ndGggPSBjb25zdGFudCgwLjEpLFxuICAgICAgbm9kZXMsXG4gICAgICBzdHJlbmd0aHMsXG4gICAgICB4ejtcblxuICBpZiAodHlwZW9mIHggIT09IFwiZnVuY3Rpb25cIikgeCA9IGNvbnN0YW50KHggPT0gbnVsbCA/IDAgOiAreCk7XG5cbiAgZnVuY3Rpb24gZm9yY2UoYWxwaGEpIHtcbiAgICBmb3IgKHZhciBpID0gMCwgbiA9IG5vZGVzLmxlbmd0aCwgbm9kZTsgaSA8IG47ICsraSkge1xuICAgICAgbm9kZSA9IG5vZGVzW2ldLCBub2RlLnZ4ICs9ICh4eltpXSAtIG5vZGUueCkgKiBzdHJlbmd0aHNbaV0gKiBhbHBoYTtcbiAgICB9XG4gIH1cblxuICBmdW5jdGlvbiBpbml0aWFsaXplKCkge1xuICAgIGlmICghbm9kZXMpIHJldHVybjtcbiAgICB2YXIgaSwgbiA9IG5vZGVzLmxlbmd0aDtcbiAgICBzdHJlbmd0aHMgPSBuZXcgQXJyYXkobik7XG4gICAgeHogPSBuZXcgQXJyYXkobik7XG4gICAgZm9yIChpID0gMDsgaSA8IG47ICsraSkge1xuICAgICAgc3RyZW5ndGhzW2ldID0gaXNOYU4oeHpbaV0gPSAreChub2Rlc1tpXSwgaSwgbm9kZXMpKSA/IDAgOiArc3RyZW5ndGgobm9kZXNbaV0sIGksIG5vZGVzKTtcbiAgICB9XG4gIH1cblxuICBmb3JjZS5pbml0aWFsaXplID0gZnVuY3Rpb24oXykge1xuICAgIG5vZGVzID0gXztcbiAgICBpbml0aWFsaXplKCk7XG4gIH07XG5cbiAgZm9yY2Uuc3RyZW5ndGggPSBmdW5jdGlvbihfKSB7XG4gICAgcmV0dXJuIGFyZ3VtZW50cy5sZW5ndGggPyAoc3RyZW5ndGggPSB0eXBlb2YgXyA9PT0gXCJmdW5jdGlvblwiID8gXyA6IGNvbnN0YW50KCtfKSwgaW5pdGlhbGl6ZSgpLCBmb3JjZSkgOiBzdHJlbmd0aDtcbiAgfTtcblxuICBmb3JjZS54ID0gZnVuY3Rpb24oXykge1xuICAgIHJldHVybiBhcmd1bWVudHMubGVuZ3RoID8gKHggPSB0eXBlb2YgXyA9PT0gXCJmdW5jdGlvblwiID8gXyA6IGNvbnN0YW50KCtfKSwgaW5pdGlhbGl6ZSgpLCBmb3JjZSkgOiB4O1xuICB9O1xuXG4gIHJldHVybiBmb3JjZTtcbn1cbiJdLCJtYXBwaW5ncyI6IkFBQUE7QUFBQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7Iiwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///./node_modules/vega/node_modules/d3-force/src/x.js\n");

/***/ }),

/***/ "./node_modules/vega/node_modules/d3-force/src/y.js":
/*!**********************************************************!*\
  !*** ./node_modules/vega/node_modules/d3-force/src/y.js ***!
  \**********************************************************/
/*! exports provided: default */
/***/ (function(module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _constant_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./constant.js */ \"./node_modules/vega/node_modules/d3-force/src/constant.js\");\n\n\n/* harmony default export */ __webpack_exports__[\"default\"] = (function(y) {\n  var strength = Object(_constant_js__WEBPACK_IMPORTED_MODULE_0__[\"default\"])(0.1),\n      nodes,\n      strengths,\n      yz;\n\n  if (typeof y !== \"function\") y = Object(_constant_js__WEBPACK_IMPORTED_MODULE_0__[\"default\"])(y == null ? 0 : +y);\n\n  function force(alpha) {\n    for (var i = 0, n = nodes.length, node; i < n; ++i) {\n      node = nodes[i], node.vy += (yz[i] - node.y) * strengths[i] * alpha;\n    }\n  }\n\n  function initialize() {\n    if (!nodes) return;\n    var i, n = nodes.length;\n    strengths = new Array(n);\n    yz = new Array(n);\n    for (i = 0; i < n; ++i) {\n      strengths[i] = isNaN(yz[i] = +y(nodes[i], i, nodes)) ? 0 : +strength(nodes[i], i, nodes);\n    }\n  }\n\n  force.initialize = function(_) {\n    nodes = _;\n    initialize();\n  };\n\n  force.strength = function(_) {\n    return arguments.length ? (strength = typeof _ === \"function\" ? _ : Object(_constant_js__WEBPACK_IMPORTED_MODULE_0__[\"default\"])(+_), initialize(), force) : strength;\n  };\n\n  force.y = function(_) {\n    return arguments.length ? (y = typeof _ === \"function\" ? _ : Object(_constant_js__WEBPACK_IMPORTED_MODULE_0__[\"default\"])(+_), initialize(), force) : y;\n  };\n\n  return force;\n});\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvdmVnYS9ub2RlX21vZHVsZXMvZDMtZm9yY2Uvc3JjL3kuanMuanMiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvdmVnYS9ub2RlX21vZHVsZXMvZDMtZm9yY2Uvc3JjL3kuanM/NTE1OSJdLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgY29uc3RhbnQgZnJvbSBcIi4vY29uc3RhbnQuanNcIjtcblxuZXhwb3J0IGRlZmF1bHQgZnVuY3Rpb24oeSkge1xuICB2YXIgc3RyZW5ndGggPSBjb25zdGFudCgwLjEpLFxuICAgICAgbm9kZXMsXG4gICAgICBzdHJlbmd0aHMsXG4gICAgICB5ejtcblxuICBpZiAodHlwZW9mIHkgIT09IFwiZnVuY3Rpb25cIikgeSA9IGNvbnN0YW50KHkgPT0gbnVsbCA/IDAgOiAreSk7XG5cbiAgZnVuY3Rpb24gZm9yY2UoYWxwaGEpIHtcbiAgICBmb3IgKHZhciBpID0gMCwgbiA9IG5vZGVzLmxlbmd0aCwgbm9kZTsgaSA8IG47ICsraSkge1xuICAgICAgbm9kZSA9IG5vZGVzW2ldLCBub2RlLnZ5ICs9ICh5eltpXSAtIG5vZGUueSkgKiBzdHJlbmd0aHNbaV0gKiBhbHBoYTtcbiAgICB9XG4gIH1cblxuICBmdW5jdGlvbiBpbml0aWFsaXplKCkge1xuICAgIGlmICghbm9kZXMpIHJldHVybjtcbiAgICB2YXIgaSwgbiA9IG5vZGVzLmxlbmd0aDtcbiAgICBzdHJlbmd0aHMgPSBuZXcgQXJyYXkobik7XG4gICAgeXogPSBuZXcgQXJyYXkobik7XG4gICAgZm9yIChpID0gMDsgaSA8IG47ICsraSkge1xuICAgICAgc3RyZW5ndGhzW2ldID0gaXNOYU4oeXpbaV0gPSAreShub2Rlc1tpXSwgaSwgbm9kZXMpKSA/IDAgOiArc3RyZW5ndGgobm9kZXNbaV0sIGksIG5vZGVzKTtcbiAgICB9XG4gIH1cblxuICBmb3JjZS5pbml0aWFsaXplID0gZnVuY3Rpb24oXykge1xuICAgIG5vZGVzID0gXztcbiAgICBpbml0aWFsaXplKCk7XG4gIH07XG5cbiAgZm9yY2Uuc3RyZW5ndGggPSBmdW5jdGlvbihfKSB7XG4gICAgcmV0dXJuIGFyZ3VtZW50cy5sZW5ndGggPyAoc3RyZW5ndGggPSB0eXBlb2YgXyA9PT0gXCJmdW5jdGlvblwiID8gXyA6IGNvbnN0YW50KCtfKSwgaW5pdGlhbGl6ZSgpLCBmb3JjZSkgOiBzdHJlbmd0aDtcbiAgfTtcblxuICBmb3JjZS55ID0gZnVuY3Rpb24oXykge1xuICAgIHJldHVybiBhcmd1bWVudHMubGVuZ3RoID8gKHkgPSB0eXBlb2YgXyA9PT0gXCJmdW5jdGlvblwiID8gXyA6IGNvbnN0YW50KCtfKSwgaW5pdGlhbGl6ZSgpLCBmb3JjZSkgOiB5O1xuICB9O1xuXG4gIHJldHVybiBmb3JjZTtcbn1cbiJdLCJtYXBwaW5ncyI6IkFBQUE7QUFBQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7Iiwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///./node_modules/vega/node_modules/d3-force/src/y.js\n");

/***/ }),

/***/ "./node_modules/vega/node_modules/d3-format/src/defaultLocale.js":
/*!***********************************************************************!*\
  !*** ./node_modules/vega/node_modules/d3-format/src/defaultLocale.js ***!
  \***********************************************************************/
/*! exports provided: format, formatPrefix, default */
/***/ (function(module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"format\", function() { return format; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"formatPrefix\", function() { return formatPrefix; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"default\", function() { return defaultLocale; });\n/* harmony import */ var _locale_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./locale.js */ \"./node_modules/vega/node_modules/d3-format/src/locale.js\");\n\n\nvar locale;\nvar format;\nvar formatPrefix;\n\ndefaultLocale({\n  thousands: \",\",\n  grouping: [3],\n  currency: [\"$\", \"\"]\n});\n\nfunction defaultLocale(definition) {\n  locale = Object(_locale_js__WEBPACK_IMPORTED_MODULE_0__[\"default\"])(definition);\n  format = locale.format;\n  formatPrefix = locale.formatPrefix;\n  return locale;\n}\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvdmVnYS9ub2RlX21vZHVsZXMvZDMtZm9ybWF0L3NyYy9kZWZhdWx0TG9jYWxlLmpzLmpzIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL3ZlZ2Evbm9kZV9tb2R1bGVzL2QzLWZvcm1hdC9zcmMvZGVmYXVsdExvY2FsZS5qcz81NzExIl0sInNvdXJjZXNDb250ZW50IjpbImltcG9ydCBmb3JtYXRMb2NhbGUgZnJvbSBcIi4vbG9jYWxlLmpzXCI7XG5cbnZhciBsb2NhbGU7XG5leHBvcnQgdmFyIGZvcm1hdDtcbmV4cG9ydCB2YXIgZm9ybWF0UHJlZml4O1xuXG5kZWZhdWx0TG9jYWxlKHtcbiAgdGhvdXNhbmRzOiBcIixcIixcbiAgZ3JvdXBpbmc6IFszXSxcbiAgY3VycmVuY3k6IFtcIiRcIiwgXCJcIl1cbn0pO1xuXG5leHBvcnQgZGVmYXVsdCBmdW5jdGlvbiBkZWZhdWx0TG9jYWxlKGRlZmluaXRpb24pIHtcbiAgbG9jYWxlID0gZm9ybWF0TG9jYWxlKGRlZmluaXRpb24pO1xuICBmb3JtYXQgPSBsb2NhbGUuZm9ybWF0O1xuICBmb3JtYXRQcmVmaXggPSBsb2NhbGUuZm9ybWF0UHJlZml4O1xuICByZXR1cm4gbG9jYWxlO1xufVxuIl0sIm1hcHBpbmdzIjoiQUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOyIsInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///./node_modules/vega/node_modules/d3-format/src/defaultLocale.js\n");

/***/ }),

/***/ "./node_modules/vega/node_modules/d3-format/src/exponent.js":
/*!******************************************************************!*\
  !*** ./node_modules/vega/node_modules/d3-format/src/exponent.js ***!
  \******************************************************************/
/*! exports provided: default */
/***/ (function(module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _formatDecimal_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./formatDecimal.js */ \"./node_modules/vega/node_modules/d3-format/src/formatDecimal.js\");\n\n\n/* harmony default export */ __webpack_exports__[\"default\"] = (function(x) {\n  return x = Object(_formatDecimal_js__WEBPACK_IMPORTED_MODULE_0__[\"formatDecimalParts\"])(Math.abs(x)), x ? x[1] : NaN;\n});\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvdmVnYS9ub2RlX21vZHVsZXMvZDMtZm9ybWF0L3NyYy9leHBvbmVudC5qcy5qcyIsInNvdXJjZXMiOlsid2VicGFjazovLy8uL25vZGVfbW9kdWxlcy92ZWdhL25vZGVfbW9kdWxlcy9kMy1mb3JtYXQvc3JjL2V4cG9uZW50LmpzPzk0MmUiXSwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtmb3JtYXREZWNpbWFsUGFydHN9IGZyb20gXCIuL2Zvcm1hdERlY2ltYWwuanNcIjtcblxuZXhwb3J0IGRlZmF1bHQgZnVuY3Rpb24oeCkge1xuICByZXR1cm4geCA9IGZvcm1hdERlY2ltYWxQYXJ0cyhNYXRoLmFicyh4KSksIHggPyB4WzFdIDogTmFOO1xufVxuIl0sIm1hcHBpbmdzIjoiQUFBQTtBQUFBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTsiLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///./node_modules/vega/node_modules/d3-format/src/exponent.js\n");

/***/ }),

/***/ "./node_modules/vega/node_modules/d3-format/src/formatDecimal.js":
/*!***********************************************************************!*\
  !*** ./node_modules/vega/node_modules/d3-format/src/formatDecimal.js ***!
  \***********************************************************************/
/*! exports provided: default, formatDecimalParts */
/***/ (function(module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"formatDecimalParts\", function() { return formatDecimalParts; });\n/* harmony default export */ __webpack_exports__[\"default\"] = (function(x) {\n  return Math.abs(x = Math.round(x)) >= 1e21\n      ? x.toLocaleString(\"en\").replace(/,/g, \"\")\n      : x.toString(10);\n});\n\n// Computes the decimal coefficient and exponent of the specified number x with\n// significant digits p, where x is positive and p is in [1, 21] or undefined.\n// For example, formatDecimalParts(1.23) returns [\"123\", 0].\nfunction formatDecimalParts(x, p) {\n  if ((i = (x = p ? x.toExponential(p - 1) : x.toExponential()).indexOf(\"e\")) < 0) return null; // NaN, ±Infinity\n  var i, coefficient = x.slice(0, i);\n\n  // The string returned by toExponential either has the form \\d\\.\\d+e[-+]\\d+\n  // (e.g., 1.2e+3) or the form \\de[-+]\\d+ (e.g., 1e+3).\n  return [\n    coefficient.length > 1 ? coefficient[0] + coefficient.slice(2) : coefficient,\n    +x.slice(i + 1)\n  ];\n}\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvdmVnYS9ub2RlX21vZHVsZXMvZDMtZm9ybWF0L3NyYy9mb3JtYXREZWNpbWFsLmpzLmpzIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL3ZlZ2Evbm9kZV9tb2R1bGVzL2QzLWZvcm1hdC9zcmMvZm9ybWF0RGVjaW1hbC5qcz82ZTlkIl0sInNvdXJjZXNDb250ZW50IjpbImV4cG9ydCBkZWZhdWx0IGZ1bmN0aW9uKHgpIHtcbiAgcmV0dXJuIE1hdGguYWJzKHggPSBNYXRoLnJvdW5kKHgpKSA+PSAxZTIxXG4gICAgICA/IHgudG9Mb2NhbGVTdHJpbmcoXCJlblwiKS5yZXBsYWNlKC8sL2csIFwiXCIpXG4gICAgICA6IHgudG9TdHJpbmcoMTApO1xufVxuXG4vLyBDb21wdXRlcyB0aGUgZGVjaW1hbCBjb2VmZmljaWVudCBhbmQgZXhwb25lbnQgb2YgdGhlIHNwZWNpZmllZCBudW1iZXIgeCB3aXRoXG4vLyBzaWduaWZpY2FudCBkaWdpdHMgcCwgd2hlcmUgeCBpcyBwb3NpdGl2ZSBhbmQgcCBpcyBpbiBbMSwgMjFdIG9yIHVuZGVmaW5lZC5cbi8vIEZvciBleGFtcGxlLCBmb3JtYXREZWNpbWFsUGFydHMoMS4yMykgcmV0dXJucyBbXCIxMjNcIiwgMF0uXG5leHBvcnQgZnVuY3Rpb24gZm9ybWF0RGVjaW1hbFBhcnRzKHgsIHApIHtcbiAgaWYgKChpID0gKHggPSBwID8geC50b0V4cG9uZW50aWFsKHAgLSAxKSA6IHgudG9FeHBvbmVudGlhbCgpKS5pbmRleE9mKFwiZVwiKSkgPCAwKSByZXR1cm4gbnVsbDsgLy8gTmFOLCDCsUluZmluaXR5XG4gIHZhciBpLCBjb2VmZmljaWVudCA9IHguc2xpY2UoMCwgaSk7XG5cbiAgLy8gVGhlIHN0cmluZyByZXR1cm5lZCBieSB0b0V4cG9uZW50aWFsIGVpdGhlciBoYXMgdGhlIGZvcm0gXFxkXFwuXFxkK2VbLStdXFxkK1xuICAvLyAoZS5nLiwgMS4yZSszKSBvciB0aGUgZm9ybSBcXGRlWy0rXVxcZCsgKGUuZy4sIDFlKzMpLlxuICByZXR1cm4gW1xuICAgIGNvZWZmaWNpZW50Lmxlbmd0aCA+IDEgPyBjb2VmZmljaWVudFswXSArIGNvZWZmaWNpZW50LnNsaWNlKDIpIDogY29lZmZpY2llbnQsXG4gICAgK3guc2xpY2UoaSArIDEpXG4gIF07XG59XG4iXSwibWFwcGluZ3MiOiJBQUFBO0FBQUE7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOyIsInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///./node_modules/vega/node_modules/d3-format/src/formatDecimal.js\n");

/***/ }),

/***/ "./node_modules/vega/node_modules/d3-format/src/formatGroup.js":
/*!*********************************************************************!*\
  !*** ./node_modules/vega/node_modules/d3-format/src/formatGroup.js ***!
  \*********************************************************************/
/*! exports provided: default */
/***/ (function(module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony default export */ __webpack_exports__[\"default\"] = (function(grouping, thousands) {\n  return function(value, width) {\n    var i = value.length,\n        t = [],\n        j = 0,\n        g = grouping[0],\n        length = 0;\n\n    while (i > 0 && g > 0) {\n      if (length + g + 1 > width) g = Math.max(1, width - length);\n      t.push(value.substring(i -= g, i + g));\n      if ((length += g + 1) > width) break;\n      g = grouping[j = (j + 1) % grouping.length];\n    }\n\n    return t.reverse().join(thousands);\n  };\n});\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvdmVnYS9ub2RlX21vZHVsZXMvZDMtZm9ybWF0L3NyYy9mb3JtYXRHcm91cC5qcy5qcyIsInNvdXJjZXMiOlsid2VicGFjazovLy8uL25vZGVfbW9kdWxlcy92ZWdhL25vZGVfbW9kdWxlcy9kMy1mb3JtYXQvc3JjL2Zvcm1hdEdyb3VwLmpzPzg1ODEiXSwic291cmNlc0NvbnRlbnQiOlsiZXhwb3J0IGRlZmF1bHQgZnVuY3Rpb24oZ3JvdXBpbmcsIHRob3VzYW5kcykge1xuICByZXR1cm4gZnVuY3Rpb24odmFsdWUsIHdpZHRoKSB7XG4gICAgdmFyIGkgPSB2YWx1ZS5sZW5ndGgsXG4gICAgICAgIHQgPSBbXSxcbiAgICAgICAgaiA9IDAsXG4gICAgICAgIGcgPSBncm91cGluZ1swXSxcbiAgICAgICAgbGVuZ3RoID0gMDtcblxuICAgIHdoaWxlIChpID4gMCAmJiBnID4gMCkge1xuICAgICAgaWYgKGxlbmd0aCArIGcgKyAxID4gd2lkdGgpIGcgPSBNYXRoLm1heCgxLCB3aWR0aCAtIGxlbmd0aCk7XG4gICAgICB0LnB1c2godmFsdWUuc3Vic3RyaW5nKGkgLT0gZywgaSArIGcpKTtcbiAgICAgIGlmICgobGVuZ3RoICs9IGcgKyAxKSA+IHdpZHRoKSBicmVhaztcbiAgICAgIGcgPSBncm91cGluZ1tqID0gKGogKyAxKSAlIGdyb3VwaW5nLmxlbmd0aF07XG4gICAgfVxuXG4gICAgcmV0dXJuIHQucmV2ZXJzZSgpLmpvaW4odGhvdXNhbmRzKTtcbiAgfTtcbn1cbiJdLCJtYXBwaW5ncyI6IkFBQUE7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7Iiwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///./node_modules/vega/node_modules/d3-format/src/formatGroup.js\n");

/***/ }),

/***/ "./node_modules/vega/node_modules/d3-format/src/formatNumerals.js":
/*!************************************************************************!*\
  !*** ./node_modules/vega/node_modules/d3-format/src/formatNumerals.js ***!
  \************************************************************************/
/*! exports provided: default */
/***/ (function(module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony default export */ __webpack_exports__[\"default\"] = (function(numerals) {\n  return function(value) {\n    return value.replace(/[0-9]/g, function(i) {\n      return numerals[+i];\n    });\n  };\n});\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvdmVnYS9ub2RlX21vZHVsZXMvZDMtZm9ybWF0L3NyYy9mb3JtYXROdW1lcmFscy5qcy5qcyIsInNvdXJjZXMiOlsid2VicGFjazovLy8uL25vZGVfbW9kdWxlcy92ZWdhL25vZGVfbW9kdWxlcy9kMy1mb3JtYXQvc3JjL2Zvcm1hdE51bWVyYWxzLmpzPzc4MjciXSwic291cmNlc0NvbnRlbnQiOlsiZXhwb3J0IGRlZmF1bHQgZnVuY3Rpb24obnVtZXJhbHMpIHtcbiAgcmV0dXJuIGZ1bmN0aW9uKHZhbHVlKSB7XG4gICAgcmV0dXJuIHZhbHVlLnJlcGxhY2UoL1swLTldL2csIGZ1bmN0aW9uKGkpIHtcbiAgICAgIHJldHVybiBudW1lcmFsc1sraV07XG4gICAgfSk7XG4gIH07XG59XG4iXSwibWFwcGluZ3MiOiJBQUFBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7Iiwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///./node_modules/vega/node_modules/d3-format/src/formatNumerals.js\n");

/***/ }),

/***/ "./node_modules/vega/node_modules/d3-format/src/formatPrefixAuto.js":
/*!**************************************************************************!*\
  !*** ./node_modules/vega/node_modules/d3-format/src/formatPrefixAuto.js ***!
  \**************************************************************************/
/*! exports provided: prefixExponent, default */
/***/ (function(module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"prefixExponent\", function() { return prefixExponent; });\n/* harmony import */ var _formatDecimal_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./formatDecimal.js */ \"./node_modules/vega/node_modules/d3-format/src/formatDecimal.js\");\n\n\nvar prefixExponent;\n\n/* harmony default export */ __webpack_exports__[\"default\"] = (function(x, p) {\n  var d = Object(_formatDecimal_js__WEBPACK_IMPORTED_MODULE_0__[\"formatDecimalParts\"])(x, p);\n  if (!d) return x + \"\";\n  var coefficient = d[0],\n      exponent = d[1],\n      i = exponent - (prefixExponent = Math.max(-8, Math.min(8, Math.floor(exponent / 3))) * 3) + 1,\n      n = coefficient.length;\n  return i === n ? coefficient\n      : i > n ? coefficient + new Array(i - n + 1).join(\"0\")\n      : i > 0 ? coefficient.slice(0, i) + \".\" + coefficient.slice(i)\n      : \"0.\" + new Array(1 - i).join(\"0\") + Object(_formatDecimal_js__WEBPACK_IMPORTED_MODULE_0__[\"formatDecimalParts\"])(x, Math.max(0, p + i - 1))[0]; // less than 1y!\n});\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvdmVnYS9ub2RlX21vZHVsZXMvZDMtZm9ybWF0L3NyYy9mb3JtYXRQcmVmaXhBdXRvLmpzLmpzIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL3ZlZ2Evbm9kZV9tb2R1bGVzL2QzLWZvcm1hdC9zcmMvZm9ybWF0UHJlZml4QXV0by5qcz84MGUzIl0sInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7Zm9ybWF0RGVjaW1hbFBhcnRzfSBmcm9tIFwiLi9mb3JtYXREZWNpbWFsLmpzXCI7XG5cbmV4cG9ydCB2YXIgcHJlZml4RXhwb25lbnQ7XG5cbmV4cG9ydCBkZWZhdWx0IGZ1bmN0aW9uKHgsIHApIHtcbiAgdmFyIGQgPSBmb3JtYXREZWNpbWFsUGFydHMoeCwgcCk7XG4gIGlmICghZCkgcmV0dXJuIHggKyBcIlwiO1xuICB2YXIgY29lZmZpY2llbnQgPSBkWzBdLFxuICAgICAgZXhwb25lbnQgPSBkWzFdLFxuICAgICAgaSA9IGV4cG9uZW50IC0gKHByZWZpeEV4cG9uZW50ID0gTWF0aC5tYXgoLTgsIE1hdGgubWluKDgsIE1hdGguZmxvb3IoZXhwb25lbnQgLyAzKSkpICogMykgKyAxLFxuICAgICAgbiA9IGNvZWZmaWNpZW50Lmxlbmd0aDtcbiAgcmV0dXJuIGkgPT09IG4gPyBjb2VmZmljaWVudFxuICAgICAgOiBpID4gbiA/IGNvZWZmaWNpZW50ICsgbmV3IEFycmF5KGkgLSBuICsgMSkuam9pbihcIjBcIilcbiAgICAgIDogaSA+IDAgPyBjb2VmZmljaWVudC5zbGljZSgwLCBpKSArIFwiLlwiICsgY29lZmZpY2llbnQuc2xpY2UoaSlcbiAgICAgIDogXCIwLlwiICsgbmV3IEFycmF5KDEgLSBpKS5qb2luKFwiMFwiKSArIGZvcm1hdERlY2ltYWxQYXJ0cyh4LCBNYXRoLm1heCgwLCBwICsgaSAtIDEpKVswXTsgLy8gbGVzcyB0aGFuIDF5IVxufVxuIl0sIm1hcHBpbmdzIjoiQUFBQTtBQUFBO0FBQUE7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTsiLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///./node_modules/vega/node_modules/d3-format/src/formatPrefixAuto.js\n");

/***/ }),

/***/ "./node_modules/vega/node_modules/d3-format/src/formatRounded.js":
/*!***********************************************************************!*\
  !*** ./node_modules/vega/node_modules/d3-format/src/formatRounded.js ***!
  \***********************************************************************/
/*! exports provided: default */
/***/ (function(module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _formatDecimal_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./formatDecimal.js */ \"./node_modules/vega/node_modules/d3-format/src/formatDecimal.js\");\n\n\n/* harmony default export */ __webpack_exports__[\"default\"] = (function(x, p) {\n  var d = Object(_formatDecimal_js__WEBPACK_IMPORTED_MODULE_0__[\"formatDecimalParts\"])(x, p);\n  if (!d) return x + \"\";\n  var coefficient = d[0],\n      exponent = d[1];\n  return exponent < 0 ? \"0.\" + new Array(-exponent).join(\"0\") + coefficient\n      : coefficient.length > exponent + 1 ? coefficient.slice(0, exponent + 1) + \".\" + coefficient.slice(exponent + 1)\n      : coefficient + new Array(exponent - coefficient.length + 2).join(\"0\");\n});\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvdmVnYS9ub2RlX21vZHVsZXMvZDMtZm9ybWF0L3NyYy9mb3JtYXRSb3VuZGVkLmpzLmpzIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL3ZlZ2Evbm9kZV9tb2R1bGVzL2QzLWZvcm1hdC9zcmMvZm9ybWF0Um91bmRlZC5qcz9jMzUwIl0sInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7Zm9ybWF0RGVjaW1hbFBhcnRzfSBmcm9tIFwiLi9mb3JtYXREZWNpbWFsLmpzXCI7XG5cbmV4cG9ydCBkZWZhdWx0IGZ1bmN0aW9uKHgsIHApIHtcbiAgdmFyIGQgPSBmb3JtYXREZWNpbWFsUGFydHMoeCwgcCk7XG4gIGlmICghZCkgcmV0dXJuIHggKyBcIlwiO1xuICB2YXIgY29lZmZpY2llbnQgPSBkWzBdLFxuICAgICAgZXhwb25lbnQgPSBkWzFdO1xuICByZXR1cm4gZXhwb25lbnQgPCAwID8gXCIwLlwiICsgbmV3IEFycmF5KC1leHBvbmVudCkuam9pbihcIjBcIikgKyBjb2VmZmljaWVudFxuICAgICAgOiBjb2VmZmljaWVudC5sZW5ndGggPiBleHBvbmVudCArIDEgPyBjb2VmZmljaWVudC5zbGljZSgwLCBleHBvbmVudCArIDEpICsgXCIuXCIgKyBjb2VmZmljaWVudC5zbGljZShleHBvbmVudCArIDEpXG4gICAgICA6IGNvZWZmaWNpZW50ICsgbmV3IEFycmF5KGV4cG9uZW50IC0gY29lZmZpY2llbnQubGVuZ3RoICsgMikuam9pbihcIjBcIik7XG59XG4iXSwibWFwcGluZ3MiOiJBQUFBO0FBQUE7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOyIsInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///./node_modules/vega/node_modules/d3-format/src/formatRounded.js\n");

/***/ }),

/***/ "./node_modules/vega/node_modules/d3-format/src/formatSpecifier.js":
/*!*************************************************************************!*\
  !*** ./node_modules/vega/node_modules/d3-format/src/formatSpecifier.js ***!
  \*************************************************************************/
/*! exports provided: default, FormatSpecifier */
/***/ (function(module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"default\", function() { return formatSpecifier; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"FormatSpecifier\", function() { return FormatSpecifier; });\n// [[fill]align][sign][symbol][0][width][,][.precision][~][type]\nvar re = /^(?:(.)?([<>=^]))?([+\\-( ])?([$#])?(0)?(\\d+)?(,)?(\\.\\d+)?(~)?([a-z%])?$/i;\n\nfunction formatSpecifier(specifier) {\n  if (!(match = re.exec(specifier))) throw new Error(\"invalid format: \" + specifier);\n  var match;\n  return new FormatSpecifier({\n    fill: match[1],\n    align: match[2],\n    sign: match[3],\n    symbol: match[4],\n    zero: match[5],\n    width: match[6],\n    comma: match[7],\n    precision: match[8] && match[8].slice(1),\n    trim: match[9],\n    type: match[10]\n  });\n}\n\nformatSpecifier.prototype = FormatSpecifier.prototype; // instanceof\n\nfunction FormatSpecifier(specifier) {\n  this.fill = specifier.fill === undefined ? \" \" : specifier.fill + \"\";\n  this.align = specifier.align === undefined ? \">\" : specifier.align + \"\";\n  this.sign = specifier.sign === undefined ? \"-\" : specifier.sign + \"\";\n  this.symbol = specifier.symbol === undefined ? \"\" : specifier.symbol + \"\";\n  this.zero = !!specifier.zero;\n  this.width = specifier.width === undefined ? undefined : +specifier.width;\n  this.comma = !!specifier.comma;\n  this.precision = specifier.precision === undefined ? undefined : +specifier.precision;\n  this.trim = !!specifier.trim;\n  this.type = specifier.type === undefined ? \"\" : specifier.type + \"\";\n}\n\nFormatSpecifier.prototype.toString = function() {\n  return this.fill\n      + this.align\n      + this.sign\n      + this.symbol\n      + (this.zero ? \"0\" : \"\")\n      + (this.width === undefined ? \"\" : Math.max(1, this.width | 0))\n      + (this.comma ? \",\" : \"\")\n      + (this.precision === undefined ? \"\" : \".\" + Math.max(0, this.precision | 0))\n      + (this.trim ? \"~\" : \"\")\n      + this.type;\n};\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvdmVnYS9ub2RlX21vZHVsZXMvZDMtZm9ybWF0L3NyYy9mb3JtYXRTcGVjaWZpZXIuanMuanMiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvdmVnYS9ub2RlX21vZHVsZXMvZDMtZm9ybWF0L3NyYy9mb3JtYXRTcGVjaWZpZXIuanM/M2VlZCJdLCJzb3VyY2VzQ29udGVudCI6WyIvLyBbW2ZpbGxdYWxpZ25dW3NpZ25dW3N5bWJvbF1bMF1bd2lkdGhdWyxdWy5wcmVjaXNpb25dW35dW3R5cGVdXG52YXIgcmUgPSAvXig/OiguKT8oWzw+PV5dKSk/KFsrXFwtKCBdKT8oWyQjXSk/KDApPyhcXGQrKT8oLCk/KFxcLlxcZCspPyh+KT8oW2EteiVdKT8kL2k7XG5cbmV4cG9ydCBkZWZhdWx0IGZ1bmN0aW9uIGZvcm1hdFNwZWNpZmllcihzcGVjaWZpZXIpIHtcbiAgaWYgKCEobWF0Y2ggPSByZS5leGVjKHNwZWNpZmllcikpKSB0aHJvdyBuZXcgRXJyb3IoXCJpbnZhbGlkIGZvcm1hdDogXCIgKyBzcGVjaWZpZXIpO1xuICB2YXIgbWF0Y2g7XG4gIHJldHVybiBuZXcgRm9ybWF0U3BlY2lmaWVyKHtcbiAgICBmaWxsOiBtYXRjaFsxXSxcbiAgICBhbGlnbjogbWF0Y2hbMl0sXG4gICAgc2lnbjogbWF0Y2hbM10sXG4gICAgc3ltYm9sOiBtYXRjaFs0XSxcbiAgICB6ZXJvOiBtYXRjaFs1XSxcbiAgICB3aWR0aDogbWF0Y2hbNl0sXG4gICAgY29tbWE6IG1hdGNoWzddLFxuICAgIHByZWNpc2lvbjogbWF0Y2hbOF0gJiYgbWF0Y2hbOF0uc2xpY2UoMSksXG4gICAgdHJpbTogbWF0Y2hbOV0sXG4gICAgdHlwZTogbWF0Y2hbMTBdXG4gIH0pO1xufVxuXG5mb3JtYXRTcGVjaWZpZXIucHJvdG90eXBlID0gRm9ybWF0U3BlY2lmaWVyLnByb3RvdHlwZTsgLy8gaW5zdGFuY2VvZlxuXG5leHBvcnQgZnVuY3Rpb24gRm9ybWF0U3BlY2lmaWVyKHNwZWNpZmllcikge1xuICB0aGlzLmZpbGwgPSBzcGVjaWZpZXIuZmlsbCA9PT0gdW5kZWZpbmVkID8gXCIgXCIgOiBzcGVjaWZpZXIuZmlsbCArIFwiXCI7XG4gIHRoaXMuYWxpZ24gPSBzcGVjaWZpZXIuYWxpZ24gPT09IHVuZGVmaW5lZCA/IFwiPlwiIDogc3BlY2lmaWVyLmFsaWduICsgXCJcIjtcbiAgdGhpcy5zaWduID0gc3BlY2lmaWVyLnNpZ24gPT09IHVuZGVmaW5lZCA/IFwiLVwiIDogc3BlY2lmaWVyLnNpZ24gKyBcIlwiO1xuICB0aGlzLnN5bWJvbCA9IHNwZWNpZmllci5zeW1ib2wgPT09IHVuZGVmaW5lZCA/IFwiXCIgOiBzcGVjaWZpZXIuc3ltYm9sICsgXCJcIjtcbiAgdGhpcy56ZXJvID0gISFzcGVjaWZpZXIuemVybztcbiAgdGhpcy53aWR0aCA9IHNwZWNpZmllci53aWR0aCA9PT0gdW5kZWZpbmVkID8gdW5kZWZpbmVkIDogK3NwZWNpZmllci53aWR0aDtcbiAgdGhpcy5jb21tYSA9ICEhc3BlY2lmaWVyLmNvbW1hO1xuICB0aGlzLnByZWNpc2lvbiA9IHNwZWNpZmllci5wcmVjaXNpb24gPT09IHVuZGVmaW5lZCA/IHVuZGVmaW5lZCA6ICtzcGVjaWZpZXIucHJlY2lzaW9uO1xuICB0aGlzLnRyaW0gPSAhIXNwZWNpZmllci50cmltO1xuICB0aGlzLnR5cGUgPSBzcGVjaWZpZXIudHlwZSA9PT0gdW5kZWZpbmVkID8gXCJcIiA6IHNwZWNpZmllci50eXBlICsgXCJcIjtcbn1cblxuRm9ybWF0U3BlY2lmaWVyLnByb3RvdHlwZS50b1N0cmluZyA9IGZ1bmN0aW9uKCkge1xuICByZXR1cm4gdGhpcy5maWxsXG4gICAgICArIHRoaXMuYWxpZ25cbiAgICAgICsgdGhpcy5zaWduXG4gICAgICArIHRoaXMuc3ltYm9sXG4gICAgICArICh0aGlzLnplcm8gPyBcIjBcIiA6IFwiXCIpXG4gICAgICArICh0aGlzLndpZHRoID09PSB1bmRlZmluZWQgPyBcIlwiIDogTWF0aC5tYXgoMSwgdGhpcy53aWR0aCB8IDApKVxuICAgICAgKyAodGhpcy5jb21tYSA/IFwiLFwiIDogXCJcIilcbiAgICAgICsgKHRoaXMucHJlY2lzaW9uID09PSB1bmRlZmluZWQgPyBcIlwiIDogXCIuXCIgKyBNYXRoLm1heCgwLCB0aGlzLnByZWNpc2lvbiB8IDApKVxuICAgICAgKyAodGhpcy50cmltID8gXCJ+XCIgOiBcIlwiKVxuICAgICAgKyB0aGlzLnR5cGU7XG59O1xuIl0sIm1hcHBpbmdzIjoiQUFBQTtBQUFBO0FBQUE7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOyIsInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///./node_modules/vega/node_modules/d3-format/src/formatSpecifier.js\n");

/***/ }),

/***/ "./node_modules/vega/node_modules/d3-format/src/formatTrim.js":
/*!********************************************************************!*\
  !*** ./node_modules/vega/node_modules/d3-format/src/formatTrim.js ***!
  \********************************************************************/
/*! exports provided: default */
/***/ (function(module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n// Trims insignificant zeros, e.g., replaces 1.2000k with 1.2k.\n/* harmony default export */ __webpack_exports__[\"default\"] = (function(s) {\n  out: for (var n = s.length, i = 1, i0 = -1, i1; i < n; ++i) {\n    switch (s[i]) {\n      case \".\": i0 = i1 = i; break;\n      case \"0\": if (i0 === 0) i0 = i; i1 = i; break;\n      default: if (!+s[i]) break out; if (i0 > 0) i0 = 0; break;\n    }\n  }\n  return i0 > 0 ? s.slice(0, i0) + s.slice(i1 + 1) : s;\n});\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvdmVnYS9ub2RlX21vZHVsZXMvZDMtZm9ybWF0L3NyYy9mb3JtYXRUcmltLmpzLmpzIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL3ZlZ2Evbm9kZV9tb2R1bGVzL2QzLWZvcm1hdC9zcmMvZm9ybWF0VHJpbS5qcz9jMjhiIl0sInNvdXJjZXNDb250ZW50IjpbIi8vIFRyaW1zIGluc2lnbmlmaWNhbnQgemVyb3MsIGUuZy4sIHJlcGxhY2VzIDEuMjAwMGsgd2l0aCAxLjJrLlxuZXhwb3J0IGRlZmF1bHQgZnVuY3Rpb24ocykge1xuICBvdXQ6IGZvciAodmFyIG4gPSBzLmxlbmd0aCwgaSA9IDEsIGkwID0gLTEsIGkxOyBpIDwgbjsgKytpKSB7XG4gICAgc3dpdGNoIChzW2ldKSB7XG4gICAgICBjYXNlIFwiLlwiOiBpMCA9IGkxID0gaTsgYnJlYWs7XG4gICAgICBjYXNlIFwiMFwiOiBpZiAoaTAgPT09IDApIGkwID0gaTsgaTEgPSBpOyBicmVhaztcbiAgICAgIGRlZmF1bHQ6IGlmICghK3NbaV0pIGJyZWFrIG91dDsgaWYgKGkwID4gMCkgaTAgPSAwOyBicmVhaztcbiAgICB9XG4gIH1cbiAgcmV0dXJuIGkwID4gMCA/IHMuc2xpY2UoMCwgaTApICsgcy5zbGljZShpMSArIDEpIDogcztcbn1cbiJdLCJtYXBwaW5ncyI6IkFBQUE7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOyIsInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///./node_modules/vega/node_modules/d3-format/src/formatTrim.js\n");

/***/ }),

/***/ "./node_modules/vega/node_modules/d3-format/src/formatTypes.js":
/*!*********************************************************************!*\
  !*** ./node_modules/vega/node_modules/d3-format/src/formatTypes.js ***!
  \*********************************************************************/
/*! exports provided: default */
/***/ (function(module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _formatDecimal_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./formatDecimal.js */ \"./node_modules/vega/node_modules/d3-format/src/formatDecimal.js\");\n/* harmony import */ var _formatPrefixAuto_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./formatPrefixAuto.js */ \"./node_modules/vega/node_modules/d3-format/src/formatPrefixAuto.js\");\n/* harmony import */ var _formatRounded_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./formatRounded.js */ \"./node_modules/vega/node_modules/d3-format/src/formatRounded.js\");\n\n\n\n\n/* harmony default export */ __webpack_exports__[\"default\"] = ({\n  \"%\": (x, p) => (x * 100).toFixed(p),\n  \"b\": (x) => Math.round(x).toString(2),\n  \"c\": (x) => x + \"\",\n  \"d\": _formatDecimal_js__WEBPACK_IMPORTED_MODULE_0__[\"default\"],\n  \"e\": (x, p) => x.toExponential(p),\n  \"f\": (x, p) => x.toFixed(p),\n  \"g\": (x, p) => x.toPrecision(p),\n  \"o\": (x) => Math.round(x).toString(8),\n  \"p\": (x, p) => Object(_formatRounded_js__WEBPACK_IMPORTED_MODULE_2__[\"default\"])(x * 100, p),\n  \"r\": _formatRounded_js__WEBPACK_IMPORTED_MODULE_2__[\"default\"],\n  \"s\": _formatPrefixAuto_js__WEBPACK_IMPORTED_MODULE_1__[\"default\"],\n  \"X\": (x) => Math.round(x).toString(16).toUpperCase(),\n  \"x\": (x) => Math.round(x).toString(16)\n});\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvdmVnYS9ub2RlX21vZHVsZXMvZDMtZm9ybWF0L3NyYy9mb3JtYXRUeXBlcy5qcy5qcyIsInNvdXJjZXMiOlsid2VicGFjazovLy8uL25vZGVfbW9kdWxlcy92ZWdhL25vZGVfbW9kdWxlcy9kMy1mb3JtYXQvc3JjL2Zvcm1hdFR5cGVzLmpzPzczM2YiXSwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IGZvcm1hdERlY2ltYWwgZnJvbSBcIi4vZm9ybWF0RGVjaW1hbC5qc1wiO1xuaW1wb3J0IGZvcm1hdFByZWZpeEF1dG8gZnJvbSBcIi4vZm9ybWF0UHJlZml4QXV0by5qc1wiO1xuaW1wb3J0IGZvcm1hdFJvdW5kZWQgZnJvbSBcIi4vZm9ybWF0Um91bmRlZC5qc1wiO1xuXG5leHBvcnQgZGVmYXVsdCB7XG4gIFwiJVwiOiAoeCwgcCkgPT4gKHggKiAxMDApLnRvRml4ZWQocCksXG4gIFwiYlwiOiAoeCkgPT4gTWF0aC5yb3VuZCh4KS50b1N0cmluZygyKSxcbiAgXCJjXCI6ICh4KSA9PiB4ICsgXCJcIixcbiAgXCJkXCI6IGZvcm1hdERlY2ltYWwsXG4gIFwiZVwiOiAoeCwgcCkgPT4geC50b0V4cG9uZW50aWFsKHApLFxuICBcImZcIjogKHgsIHApID0+IHgudG9GaXhlZChwKSxcbiAgXCJnXCI6ICh4LCBwKSA9PiB4LnRvUHJlY2lzaW9uKHApLFxuICBcIm9cIjogKHgpID0+IE1hdGgucm91bmQoeCkudG9TdHJpbmcoOCksXG4gIFwicFwiOiAoeCwgcCkgPT4gZm9ybWF0Um91bmRlZCh4ICogMTAwLCBwKSxcbiAgXCJyXCI6IGZvcm1hdFJvdW5kZWQsXG4gIFwic1wiOiBmb3JtYXRQcmVmaXhBdXRvLFxuICBcIlhcIjogKHgpID0+IE1hdGgucm91bmQoeCkudG9TdHJpbmcoMTYpLnRvVXBwZXJDYXNlKCksXG4gIFwieFwiOiAoeCkgPT4gTWF0aC5yb3VuZCh4KS50b1N0cmluZygxNilcbn07XG4iXSwibWFwcGluZ3MiOiJBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7Iiwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///./node_modules/vega/node_modules/d3-format/src/formatTypes.js\n");

/***/ }),

/***/ "./node_modules/vega/node_modules/d3-format/src/identity.js":
/*!******************************************************************!*\
  !*** ./node_modules/vega/node_modules/d3-format/src/identity.js ***!
  \******************************************************************/
/*! exports provided: default */
/***/ (function(module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony default export */ __webpack_exports__[\"default\"] = (function(x) {\n  return x;\n});\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvdmVnYS9ub2RlX21vZHVsZXMvZDMtZm9ybWF0L3NyYy9pZGVudGl0eS5qcy5qcyIsInNvdXJjZXMiOlsid2VicGFjazovLy8uL25vZGVfbW9kdWxlcy92ZWdhL25vZGVfbW9kdWxlcy9kMy1mb3JtYXQvc3JjL2lkZW50aXR5LmpzPzc4ZTMiXSwic291cmNlc0NvbnRlbnQiOlsiZXhwb3J0IGRlZmF1bHQgZnVuY3Rpb24oeCkge1xuICByZXR1cm4geDtcbn1cbiJdLCJtYXBwaW5ncyI6IkFBQUE7QUFBQTtBQUNBO0FBQ0E7Iiwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///./node_modules/vega/node_modules/d3-format/src/identity.js\n");

/***/ }),

/***/ "./node_modules/vega/node_modules/d3-format/src/index.js":
/*!***************************************************************!*\
  !*** ./node_modules/vega/node_modules/d3-format/src/index.js ***!
  \***************************************************************/
/*! exports provided: formatDefaultLocale, format, formatPrefix, formatLocale, formatSpecifier, FormatSpecifier, precisionFixed, precisionPrefix, precisionRound */
/***/ (function(module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _defaultLocale_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./defaultLocale.js */ \"./node_modules/vega/node_modules/d3-format/src/defaultLocale.js\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"formatDefaultLocale\", function() { return _defaultLocale_js__WEBPACK_IMPORTED_MODULE_0__[\"default\"]; });\n\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"format\", function() { return _defaultLocale_js__WEBPACK_IMPORTED_MODULE_0__[\"format\"]; });\n\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"formatPrefix\", function() { return _defaultLocale_js__WEBPACK_IMPORTED_MODULE_0__[\"formatPrefix\"]; });\n\n/* harmony import */ var _locale_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./locale.js */ \"./node_modules/vega/node_modules/d3-format/src/locale.js\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"formatLocale\", function() { return _locale_js__WEBPACK_IMPORTED_MODULE_1__[\"default\"]; });\n\n/* harmony import */ var _formatSpecifier_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./formatSpecifier.js */ \"./node_modules/vega/node_modules/d3-format/src/formatSpecifier.js\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"formatSpecifier\", function() { return _formatSpecifier_js__WEBPACK_IMPORTED_MODULE_2__[\"default\"]; });\n\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"FormatSpecifier\", function() { return _formatSpecifier_js__WEBPACK_IMPORTED_MODULE_2__[\"FormatSpecifier\"]; });\n\n/* harmony import */ var _precisionFixed_js__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ./precisionFixed.js */ \"./node_modules/vega/node_modules/d3-format/src/precisionFixed.js\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"precisionFixed\", function() { return _precisionFixed_js__WEBPACK_IMPORTED_MODULE_3__[\"default\"]; });\n\n/* harmony import */ var _precisionPrefix_js__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ./precisionPrefix.js */ \"./node_modules/vega/node_modules/d3-format/src/precisionPrefix.js\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"precisionPrefix\", function() { return _precisionPrefix_js__WEBPACK_IMPORTED_MODULE_4__[\"default\"]; });\n\n/* harmony import */ var _precisionRound_js__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! ./precisionRound.js */ \"./node_modules/vega/node_modules/d3-format/src/precisionRound.js\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"precisionRound\", function() { return _precisionRound_js__WEBPACK_IMPORTED_MODULE_5__[\"default\"]; });\n\n\n\n\n\n\n\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvdmVnYS9ub2RlX21vZHVsZXMvZDMtZm9ybWF0L3NyYy9pbmRleC5qcy5qcyIsInNvdXJjZXMiOlsid2VicGFjazovLy8uL25vZGVfbW9kdWxlcy92ZWdhL25vZGVfbW9kdWxlcy9kMy1mb3JtYXQvc3JjL2luZGV4LmpzPzllYmYiXSwic291cmNlc0NvbnRlbnQiOlsiZXhwb3J0IHtkZWZhdWx0IGFzIGZvcm1hdERlZmF1bHRMb2NhbGUsIGZvcm1hdCwgZm9ybWF0UHJlZml4fSBmcm9tIFwiLi9kZWZhdWx0TG9jYWxlLmpzXCI7XG5leHBvcnQge2RlZmF1bHQgYXMgZm9ybWF0TG9jYWxlfSBmcm9tIFwiLi9sb2NhbGUuanNcIjtcbmV4cG9ydCB7ZGVmYXVsdCBhcyBmb3JtYXRTcGVjaWZpZXIsIEZvcm1hdFNwZWNpZmllcn0gZnJvbSBcIi4vZm9ybWF0U3BlY2lmaWVyLmpzXCI7XG5leHBvcnQge2RlZmF1bHQgYXMgcHJlY2lzaW9uRml4ZWR9IGZyb20gXCIuL3ByZWNpc2lvbkZpeGVkLmpzXCI7XG5leHBvcnQge2RlZmF1bHQgYXMgcHJlY2lzaW9uUHJlZml4fSBmcm9tIFwiLi9wcmVjaXNpb25QcmVmaXguanNcIjtcbmV4cG9ydCB7ZGVmYXVsdCBhcyBwcmVjaXNpb25Sb3VuZH0gZnJvbSBcIi4vcHJlY2lzaW9uUm91bmQuanNcIjtcbiJdLCJtYXBwaW5ncyI6IkFBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7Iiwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///./node_modules/vega/node_modules/d3-format/src/index.js\n");

/***/ }),

/***/ "./node_modules/vega/node_modules/d3-format/src/locale.js":
/*!****************************************************************!*\
  !*** ./node_modules/vega/node_modules/d3-format/src/locale.js ***!
  \****************************************************************/
/*! exports provided: default */
/***/ (function(module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _exponent_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./exponent.js */ \"./node_modules/vega/node_modules/d3-format/src/exponent.js\");\n/* harmony import */ var _formatGroup_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./formatGroup.js */ \"./node_modules/vega/node_modules/d3-format/src/formatGroup.js\");\n/* harmony import */ var _formatNumerals_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./formatNumerals.js */ \"./node_modules/vega/node_modules/d3-format/src/formatNumerals.js\");\n/* harmony import */ var _formatSpecifier_js__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ./formatSpecifier.js */ \"./node_modules/vega/node_modules/d3-format/src/formatSpecifier.js\");\n/* harmony import */ var _formatTrim_js__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ./formatTrim.js */ \"./node_modules/vega/node_modules/d3-format/src/formatTrim.js\");\n/* harmony import */ var _formatTypes_js__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! ./formatTypes.js */ \"./node_modules/vega/node_modules/d3-format/src/formatTypes.js\");\n/* harmony import */ var _formatPrefixAuto_js__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! ./formatPrefixAuto.js */ \"./node_modules/vega/node_modules/d3-format/src/formatPrefixAuto.js\");\n/* harmony import */ var _identity_js__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! ./identity.js */ \"./node_modules/vega/node_modules/d3-format/src/identity.js\");\n\n\n\n\n\n\n\n\n\nvar map = Array.prototype.map,\n    prefixes = [\"y\",\"z\",\"a\",\"f\",\"p\",\"n\",\"µ\",\"m\",\"\",\"k\",\"M\",\"G\",\"T\",\"P\",\"E\",\"Z\",\"Y\"];\n\n/* harmony default export */ __webpack_exports__[\"default\"] = (function(locale) {\n  var group = locale.grouping === undefined || locale.thousands === undefined ? _identity_js__WEBPACK_IMPORTED_MODULE_7__[\"default\"] : Object(_formatGroup_js__WEBPACK_IMPORTED_MODULE_1__[\"default\"])(map.call(locale.grouping, Number), locale.thousands + \"\"),\n      currencyPrefix = locale.currency === undefined ? \"\" : locale.currency[0] + \"\",\n      currencySuffix = locale.currency === undefined ? \"\" : locale.currency[1] + \"\",\n      decimal = locale.decimal === undefined ? \".\" : locale.decimal + \"\",\n      numerals = locale.numerals === undefined ? _identity_js__WEBPACK_IMPORTED_MODULE_7__[\"default\"] : Object(_formatNumerals_js__WEBPACK_IMPORTED_MODULE_2__[\"default\"])(map.call(locale.numerals, String)),\n      percent = locale.percent === undefined ? \"%\" : locale.percent + \"\",\n      minus = locale.minus === undefined ? \"−\" : locale.minus + \"\",\n      nan = locale.nan === undefined ? \"NaN\" : locale.nan + \"\";\n\n  function newFormat(specifier) {\n    specifier = Object(_formatSpecifier_js__WEBPACK_IMPORTED_MODULE_3__[\"default\"])(specifier);\n\n    var fill = specifier.fill,\n        align = specifier.align,\n        sign = specifier.sign,\n        symbol = specifier.symbol,\n        zero = specifier.zero,\n        width = specifier.width,\n        comma = specifier.comma,\n        precision = specifier.precision,\n        trim = specifier.trim,\n        type = specifier.type;\n\n    // The \"n\" type is an alias for \",g\".\n    if (type === \"n\") comma = true, type = \"g\";\n\n    // The \"\" type, and any invalid type, is an alias for \".12~g\".\n    else if (!_formatTypes_js__WEBPACK_IMPORTED_MODULE_5__[\"default\"][type]) precision === undefined && (precision = 12), trim = true, type = \"g\";\n\n    // If zero fill is specified, padding goes after sign and before digits.\n    if (zero || (fill === \"0\" && align === \"=\")) zero = true, fill = \"0\", align = \"=\";\n\n    // Compute the prefix and suffix.\n    // For SI-prefix, the suffix is lazily computed.\n    var prefix = symbol === \"$\" ? currencyPrefix : symbol === \"#\" && /[boxX]/.test(type) ? \"0\" + type.toLowerCase() : \"\",\n        suffix = symbol === \"$\" ? currencySuffix : /[%p]/.test(type) ? percent : \"\";\n\n    // What format function should we use?\n    // Is this an integer type?\n    // Can this type generate exponential notation?\n    var formatType = _formatTypes_js__WEBPACK_IMPORTED_MODULE_5__[\"default\"][type],\n        maybeSuffix = /[defgprs%]/.test(type);\n\n    // Set the default precision if not specified,\n    // or clamp the specified precision to the supported range.\n    // For significant precision, it must be in [1, 21].\n    // For fixed precision, it must be in [0, 20].\n    precision = precision === undefined ? 6\n        : /[gprs]/.test(type) ? Math.max(1, Math.min(21, precision))\n        : Math.max(0, Math.min(20, precision));\n\n    function format(value) {\n      var valuePrefix = prefix,\n          valueSuffix = suffix,\n          i, n, c;\n\n      if (type === \"c\") {\n        valueSuffix = formatType(value) + valueSuffix;\n        value = \"\";\n      } else {\n        value = +value;\n\n        // Determine the sign. -0 is not less than 0, but 1 / -0 is!\n        var valueNegative = value < 0 || 1 / value < 0;\n\n        // Perform the initial formatting.\n        value = isNaN(value) ? nan : formatType(Math.abs(value), precision);\n\n        // Trim insignificant zeros.\n        if (trim) value = Object(_formatTrim_js__WEBPACK_IMPORTED_MODULE_4__[\"default\"])(value);\n\n        // If a negative value rounds to zero after formatting, and no explicit positive sign is requested, hide the sign.\n        if (valueNegative && +value === 0 && sign !== \"+\") valueNegative = false;\n\n        // Compute the prefix and suffix.\n        valuePrefix = (valueNegative ? (sign === \"(\" ? sign : minus) : sign === \"-\" || sign === \"(\" ? \"\" : sign) + valuePrefix;\n        valueSuffix = (type === \"s\" ? prefixes[8 + _formatPrefixAuto_js__WEBPACK_IMPORTED_MODULE_6__[\"prefixExponent\"] / 3] : \"\") + valueSuffix + (valueNegative && sign === \"(\" ? \")\" : \"\");\n\n        // Break the formatted value into the integer “value” part that can be\n        // grouped, and fractional or exponential “suffix” part that is not.\n        if (maybeSuffix) {\n          i = -1, n = value.length;\n          while (++i < n) {\n            if (c = value.charCodeAt(i), 48 > c || c > 57) {\n              valueSuffix = (c === 46 ? decimal + value.slice(i + 1) : value.slice(i)) + valueSuffix;\n              value = value.slice(0, i);\n              break;\n            }\n          }\n        }\n      }\n\n      // If the fill character is not \"0\", grouping is applied before padding.\n      if (comma && !zero) value = group(value, Infinity);\n\n      // Compute the padding.\n      var length = valuePrefix.length + value.length + valueSuffix.length,\n          padding = length < width ? new Array(width - length + 1).join(fill) : \"\";\n\n      // If the fill character is \"0\", grouping is applied after padding.\n      if (comma && zero) value = group(padding + value, padding.length ? width - valueSuffix.length : Infinity), padding = \"\";\n\n      // Reconstruct the final output based on the desired alignment.\n      switch (align) {\n        case \"<\": value = valuePrefix + value + valueSuffix + padding; break;\n        case \"=\": value = valuePrefix + padding + value + valueSuffix; break;\n        case \"^\": value = padding.slice(0, length = padding.length >> 1) + valuePrefix + value + valueSuffix + padding.slice(length); break;\n        default: value = padding + valuePrefix + value + valueSuffix; break;\n      }\n\n      return numerals(value);\n    }\n\n    format.toString = function() {\n      return specifier + \"\";\n    };\n\n    return format;\n  }\n\n  function formatPrefix(specifier, value) {\n    var f = newFormat((specifier = Object(_formatSpecifier_js__WEBPACK_IMPORTED_MODULE_3__[\"default\"])(specifier), specifier.type = \"f\", specifier)),\n        e = Math.max(-8, Math.min(8, Math.floor(Object(_exponent_js__WEBPACK_IMPORTED_MODULE_0__[\"default\"])(value) / 3))) * 3,\n        k = Math.pow(10, -e),\n        prefix = prefixes[8 + e / 3];\n    return function(value) {\n      return f(k * value) + prefix;\n    };\n  }\n\n  return {\n    format: newFormat,\n    formatPrefix: formatPrefix\n  };\n});\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,[encoded data, 9976 characters]\n//# sourceURL=webpack-internal:///./node_modules/vega/node_modules/d3-format/src/locale.js\n");

/***/ }),

/***/ "./node_modules/vega/node_modules/d3-format/src/precisionFixed.js":
/*!************************************************************************!*\
  !*** ./node_modules/vega/node_modules/d3-format/src/precisionFixed.js ***!
  \************************************************************************/
/*! exports provided: default */
/***/ (function(module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _exponent_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./exponent.js */ \"./node_modules/vega/node_modules/d3-format/src/exponent.js\");\n\n\n/* harmony default export */ __webpack_exports__[\"default\"] = (function(step) {\n  return Math.max(0, -Object(_exponent_js__WEBPACK_IMPORTED_MODULE_0__[\"default\"])(Math.abs(step)));\n});\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvdmVnYS9ub2RlX21vZHVsZXMvZDMtZm9ybWF0L3NyYy9wcmVjaXNpb25GaXhlZC5qcy5qcyIsInNvdXJjZXMiOlsid2VicGFjazovLy8uL25vZGVfbW9kdWxlcy92ZWdhL25vZGVfbW9kdWxlcy9kMy1mb3JtYXQvc3JjL3ByZWNpc2lvbkZpeGVkLmpzP2E2NGIiXSwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IGV4cG9uZW50IGZyb20gXCIuL2V4cG9uZW50LmpzXCI7XG5cbmV4cG9ydCBkZWZhdWx0IGZ1bmN0aW9uKHN0ZXApIHtcbiAgcmV0dXJuIE1hdGgubWF4KDAsIC1leHBvbmVudChNYXRoLmFicyhzdGVwKSkpO1xufVxuIl0sIm1hcHBpbmdzIjoiQUFBQTtBQUFBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTsiLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///./node_modules/vega/node_modules/d3-format/src/precisionFixed.js\n");

/***/ }),

/***/ "./node_modules/vega/node_modules/d3-format/src/precisionPrefix.js":
/*!*************************************************************************!*\
  !*** ./node_modules/vega/node_modules/d3-format/src/precisionPrefix.js ***!
  \*************************************************************************/
/*! exports provided: default */
/***/ (function(module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _exponent_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./exponent.js */ \"./node_modules/vega/node_modules/d3-format/src/exponent.js\");\n\n\n/* harmony default export */ __webpack_exports__[\"default\"] = (function(step, value) {\n  return Math.max(0, Math.max(-8, Math.min(8, Math.floor(Object(_exponent_js__WEBPACK_IMPORTED_MODULE_0__[\"default\"])(value) / 3))) * 3 - Object(_exponent_js__WEBPACK_IMPORTED_MODULE_0__[\"default\"])(Math.abs(step)));\n});\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvdmVnYS9ub2RlX21vZHVsZXMvZDMtZm9ybWF0L3NyYy9wcmVjaXNpb25QcmVmaXguanMuanMiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvdmVnYS9ub2RlX21vZHVsZXMvZDMtZm9ybWF0L3NyYy9wcmVjaXNpb25QcmVmaXguanM/MzExNCJdLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgZXhwb25lbnQgZnJvbSBcIi4vZXhwb25lbnQuanNcIjtcblxuZXhwb3J0IGRlZmF1bHQgZnVuY3Rpb24oc3RlcCwgdmFsdWUpIHtcbiAgcmV0dXJuIE1hdGgubWF4KDAsIE1hdGgubWF4KC04LCBNYXRoLm1pbig4LCBNYXRoLmZsb29yKGV4cG9uZW50KHZhbHVlKSAvIDMpKSkgKiAzIC0gZXhwb25lbnQoTWF0aC5hYnMoc3RlcCkpKTtcbn1cbiJdLCJtYXBwaW5ncyI6IkFBQUE7QUFBQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7Iiwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///./node_modules/vega/node_modules/d3-format/src/precisionPrefix.js\n");

/***/ }),

/***/ "./node_modules/vega/node_modules/d3-format/src/precisionRound.js":
/*!************************************************************************!*\
  !*** ./node_modules/vega/node_modules/d3-format/src/precisionRound.js ***!
  \************************************************************************/
/*! exports provided: default */
/***/ (function(module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _exponent_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./exponent.js */ \"./node_modules/vega/node_modules/d3-format/src/exponent.js\");\n\n\n/* harmony default export */ __webpack_exports__[\"default\"] = (function(step, max) {\n  step = Math.abs(step), max = Math.abs(max) - step;\n  return Math.max(0, Object(_exponent_js__WEBPACK_IMPORTED_MODULE_0__[\"default\"])(max) - Object(_exponent_js__WEBPACK_IMPORTED_MODULE_0__[\"default\"])(step)) + 1;\n});\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvdmVnYS9ub2RlX21vZHVsZXMvZDMtZm9ybWF0L3NyYy9wcmVjaXNpb25Sb3VuZC5qcy5qcyIsInNvdXJjZXMiOlsid2VicGFjazovLy8uL25vZGVfbW9kdWxlcy92ZWdhL25vZGVfbW9kdWxlcy9kMy1mb3JtYXQvc3JjL3ByZWNpc2lvblJvdW5kLmpzP2MxYjMiXSwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IGV4cG9uZW50IGZyb20gXCIuL2V4cG9uZW50LmpzXCI7XG5cbmV4cG9ydCBkZWZhdWx0IGZ1bmN0aW9uKHN0ZXAsIG1heCkge1xuICBzdGVwID0gTWF0aC5hYnMoc3RlcCksIG1heCA9IE1hdGguYWJzKG1heCkgLSBzdGVwO1xuICByZXR1cm4gTWF0aC5tYXgoMCwgZXhwb25lbnQobWF4KSAtIGV4cG9uZW50KHN0ZXApKSArIDE7XG59XG4iXSwibWFwcGluZ3MiOiJBQUFBO0FBQUE7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7Iiwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///./node_modules/vega/node_modules/d3-format/src/precisionRound.js\n");

/***/ }),

/***/ "./node_modules/vega/node_modules/d3-geo/src/area.js":
/*!***********************************************************!*\
  !*** ./node_modules/vega/node_modules/d3-geo/src/area.js ***!
  \***********************************************************/
/*! exports provided: areaRingSum, areaStream, default */
/***/ (function(module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"areaRingSum\", function() { return areaRingSum; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"areaStream\", function() { return areaStream; });\n/* harmony import */ var d3_array__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! d3-array */ \"./node_modules/d3-array/src/index.js\");\n/* harmony import */ var _math_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./math.js */ \"./node_modules/vega/node_modules/d3-geo/src/math.js\");\n/* harmony import */ var _noop_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./noop.js */ \"./node_modules/vega/node_modules/d3-geo/src/noop.js\");\n/* harmony import */ var _stream_js__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ./stream.js */ \"./node_modules/vega/node_modules/d3-geo/src/stream.js\");\n\n\n\n\n\nvar areaRingSum = new d3_array__WEBPACK_IMPORTED_MODULE_0__[\"Adder\"]();\n\n// hello?\n\nvar areaSum = new d3_array__WEBPACK_IMPORTED_MODULE_0__[\"Adder\"](),\n    lambda00,\n    phi00,\n    lambda0,\n    cosPhi0,\n    sinPhi0;\n\nvar areaStream = {\n  point: _noop_js__WEBPACK_IMPORTED_MODULE_2__[\"default\"],\n  lineStart: _noop_js__WEBPACK_IMPORTED_MODULE_2__[\"default\"],\n  lineEnd: _noop_js__WEBPACK_IMPORTED_MODULE_2__[\"default\"],\n  polygonStart: function() {\n    areaRingSum = new d3_array__WEBPACK_IMPORTED_MODULE_0__[\"Adder\"]();\n    areaStream.lineStart = areaRingStart;\n    areaStream.lineEnd = areaRingEnd;\n  },\n  polygonEnd: function() {\n    var areaRing = +areaRingSum;\n    areaSum.add(areaRing < 0 ? _math_js__WEBPACK_IMPORTED_MODULE_1__[\"tau\"] + areaRing : areaRing);\n    this.lineStart = this.lineEnd = this.point = _noop_js__WEBPACK_IMPORTED_MODULE_2__[\"default\"];\n  },\n  sphere: function() {\n    areaSum.add(_math_js__WEBPACK_IMPORTED_MODULE_1__[\"tau\"]);\n  }\n};\n\nfunction areaRingStart() {\n  areaStream.point = areaPointFirst;\n}\n\nfunction areaRingEnd() {\n  areaPoint(lambda00, phi00);\n}\n\nfunction areaPointFirst(lambda, phi) {\n  areaStream.point = areaPoint;\n  lambda00 = lambda, phi00 = phi;\n  lambda *= _math_js__WEBPACK_IMPORTED_MODULE_1__[\"radians\"], phi *= _math_js__WEBPACK_IMPORTED_MODULE_1__[\"radians\"];\n  lambda0 = lambda, cosPhi0 = Object(_math_js__WEBPACK_IMPORTED_MODULE_1__[\"cos\"])(phi = phi / 2 + _math_js__WEBPACK_IMPORTED_MODULE_1__[\"quarterPi\"]), sinPhi0 = Object(_math_js__WEBPACK_IMPORTED_MODULE_1__[\"sin\"])(phi);\n}\n\nfunction areaPoint(lambda, phi) {\n  lambda *= _math_js__WEBPACK_IMPORTED_MODULE_1__[\"radians\"], phi *= _math_js__WEBPACK_IMPORTED_MODULE_1__[\"radians\"];\n  phi = phi / 2 + _math_js__WEBPACK_IMPORTED_MODULE_1__[\"quarterPi\"]; // half the angular distance from south pole\n\n  // Spherical excess E for a spherical triangle with vertices: south pole,\n  // previous point, current point.  Uses a formula derived from Cagnoli’s\n  // theorem.  See Todhunter, Spherical Trig. (1871), Sec. 103, Eq. (2).\n  var dLambda = lambda - lambda0,\n      sdLambda = dLambda >= 0 ? 1 : -1,\n      adLambda = sdLambda * dLambda,\n      cosPhi = Object(_math_js__WEBPACK_IMPORTED_MODULE_1__[\"cos\"])(phi),\n      sinPhi = Object(_math_js__WEBPACK_IMPORTED_MODULE_1__[\"sin\"])(phi),\n      k = sinPhi0 * sinPhi,\n      u = cosPhi0 * cosPhi + k * Object(_math_js__WEBPACK_IMPORTED_MODULE_1__[\"cos\"])(adLambda),\n      v = k * sdLambda * Object(_math_js__WEBPACK_IMPORTED_MODULE_1__[\"sin\"])(adLambda);\n  areaRingSum.add(Object(_math_js__WEBPACK_IMPORTED_MODULE_1__[\"atan2\"])(v, u));\n\n  // Advance the previous points.\n  lambda0 = lambda, cosPhi0 = cosPhi, sinPhi0 = sinPhi;\n}\n\n/* harmony default export */ __webpack_exports__[\"default\"] = (function(object) {\n  areaSum = new d3_array__WEBPACK_IMPORTED_MODULE_0__[\"Adder\"]();\n  Object(_stream_js__WEBPACK_IMPORTED_MODULE_3__[\"default\"])(object, areaStream);\n  return areaSum * 2;\n});\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvdmVnYS9ub2RlX21vZHVsZXMvZDMtZ2VvL3NyYy9hcmVhLmpzLmpzIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL3ZlZ2Evbm9kZV9tb2R1bGVzL2QzLWdlby9zcmMvYXJlYS5qcz9hNDJhIl0sInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7QWRkZXJ9IGZyb20gXCJkMy1hcnJheVwiO1xuaW1wb3J0IHthdGFuMiwgY29zLCBxdWFydGVyUGksIHJhZGlhbnMsIHNpbiwgdGF1fSBmcm9tIFwiLi9tYXRoLmpzXCI7XG5pbXBvcnQgbm9vcCBmcm9tIFwiLi9ub29wLmpzXCI7XG5pbXBvcnQgc3RyZWFtIGZyb20gXCIuL3N0cmVhbS5qc1wiO1xuXG5leHBvcnQgdmFyIGFyZWFSaW5nU3VtID0gbmV3IEFkZGVyKCk7XG5cbi8vIGhlbGxvP1xuXG52YXIgYXJlYVN1bSA9IG5ldyBBZGRlcigpLFxuICAgIGxhbWJkYTAwLFxuICAgIHBoaTAwLFxuICAgIGxhbWJkYTAsXG4gICAgY29zUGhpMCxcbiAgICBzaW5QaGkwO1xuXG5leHBvcnQgdmFyIGFyZWFTdHJlYW0gPSB7XG4gIHBvaW50OiBub29wLFxuICBsaW5lU3RhcnQ6IG5vb3AsXG4gIGxpbmVFbmQ6IG5vb3AsXG4gIHBvbHlnb25TdGFydDogZnVuY3Rpb24oKSB7XG4gICAgYXJlYVJpbmdTdW0gPSBuZXcgQWRkZXIoKTtcbiAgICBhcmVhU3RyZWFtLmxpbmVTdGFydCA9IGFyZWFSaW5nU3RhcnQ7XG4gICAgYXJlYVN0cmVhbS5saW5lRW5kID0gYXJlYVJpbmdFbmQ7XG4gIH0sXG4gIHBvbHlnb25FbmQ6IGZ1bmN0aW9uKCkge1xuICAgIHZhciBhcmVhUmluZyA9ICthcmVhUmluZ1N1bTtcbiAgICBhcmVhU3VtLmFkZChhcmVhUmluZyA8IDAgPyB0YXUgKyBhcmVhUmluZyA6IGFyZWFSaW5nKTtcbiAgICB0aGlzLmxpbmVTdGFydCA9IHRoaXMubGluZUVuZCA9IHRoaXMucG9pbnQgPSBub29wO1xuICB9LFxuICBzcGhlcmU6IGZ1bmN0aW9uKCkge1xuICAgIGFyZWFTdW0uYWRkKHRhdSk7XG4gIH1cbn07XG5cbmZ1bmN0aW9uIGFyZWFSaW5nU3RhcnQoKSB7XG4gIGFyZWFTdHJlYW0ucG9pbnQgPSBhcmVhUG9pbnRGaXJzdDtcbn1cblxuZnVuY3Rpb24gYXJlYVJpbmdFbmQoKSB7XG4gIGFyZWFQb2ludChsYW1iZGEwMCwgcGhpMDApO1xufVxuXG5mdW5jdGlvbiBhcmVhUG9pbnRGaXJzdChsYW1iZGEsIHBoaSkge1xuICBhcmVhU3RyZWFtLnBvaW50ID0gYXJlYVBvaW50O1xuICBsYW1iZGEwMCA9IGxhbWJkYSwgcGhpMDAgPSBwaGk7XG4gIGxhbWJkYSAqPSByYWRpYW5zLCBwaGkgKj0gcmFkaWFucztcbiAgbGFtYmRhMCA9IGxhbWJkYSwgY29zUGhpMCA9IGNvcyhwaGkgPSBwaGkgLyAyICsgcXVhcnRlclBpKSwgc2luUGhpMCA9IHNpbihwaGkpO1xufVxuXG5mdW5jdGlvbiBhcmVhUG9pbnQobGFtYmRhLCBwaGkpIHtcbiAgbGFtYmRhICo9IHJhZGlhbnMsIHBoaSAqPSByYWRpYW5zO1xuICBwaGkgPSBwaGkgLyAyICsgcXVhcnRlclBpOyAvLyBoYWxmIHRoZSBhbmd1bGFyIGRpc3RhbmNlIGZyb20gc291dGggcG9sZVxuXG4gIC8vIFNwaGVyaWNhbCBleGNlc3MgRSBmb3IgYSBzcGhlcmljYWwgdHJpYW5nbGUgd2l0aCB2ZXJ0aWNlczogc291dGggcG9sZSxcbiAgLy8gcHJldmlvdXMgcG9pbnQsIGN1cnJlbnQgcG9pbnQuICBVc2VzIGEgZm9ybXVsYSBkZXJpdmVkIGZyb20gQ2Fnbm9saeKAmXNcbiAgLy8gdGhlb3JlbS4gIFNlZSBUb2RodW50ZXIsIFNwaGVyaWNhbCBUcmlnLiAoMTg3MSksIFNlYy4gMTAzLCBFcS4gKDIpLlxuICB2YXIgZExhbWJkYSA9IGxhbWJkYSAtIGxhbWJkYTAsXG4gICAgICBzZExhbWJkYSA9IGRMYW1iZGEgPj0gMCA/IDEgOiAtMSxcbiAgICAgIGFkTGFtYmRhID0gc2RMYW1iZGEgKiBkTGFtYmRhLFxuICAgICAgY29zUGhpID0gY29zKHBoaSksXG4gICAgICBzaW5QaGkgPSBzaW4ocGhpKSxcbiAgICAgIGsgPSBzaW5QaGkwICogc2luUGhpLFxuICAgICAgdSA9IGNvc1BoaTAgKiBjb3NQaGkgKyBrICogY29zKGFkTGFtYmRhKSxcbiAgICAgIHYgPSBrICogc2RMYW1iZGEgKiBzaW4oYWRMYW1iZGEpO1xuICBhcmVhUmluZ1N1bS5hZGQoYXRhbjIodiwgdSkpO1xuXG4gIC8vIEFkdmFuY2UgdGhlIHByZXZpb3VzIHBvaW50cy5cbiAgbGFtYmRhMCA9IGxhbWJkYSwgY29zUGhpMCA9IGNvc1BoaSwgc2luUGhpMCA9IHNpblBoaTtcbn1cblxuZXhwb3J0IGRlZmF1bHQgZnVuY3Rpb24ob2JqZWN0KSB7XG4gIGFyZWFTdW0gPSBuZXcgQWRkZXIoKTtcbiAgc3RyZWFtKG9iamVjdCwgYXJlYVN0cmVhbSk7XG4gIHJldHVybiBhcmVhU3VtICogMjtcbn1cbiJdLCJtYXBwaW5ncyI6IkFBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTsiLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///./node_modules/vega/node_modules/d3-geo/src/area.js\n");

/***/ }),

/***/ "./node_modules/vega/node_modules/d3-geo/src/bounds.js":
/*!*************************************************************!*\
  !*** ./node_modules/vega/node_modules/d3-geo/src/bounds.js ***!
  \*************************************************************/
/*! exports provided: default */
/***/ (function(module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var d3_array__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! d3-array */ \"./node_modules/d3-array/src/index.js\");\n/* harmony import */ var _area_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./area.js */ \"./node_modules/vega/node_modules/d3-geo/src/area.js\");\n/* harmony import */ var _cartesian_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./cartesian.js */ \"./node_modules/vega/node_modules/d3-geo/src/cartesian.js\");\n/* harmony import */ var _math_js__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ./math.js */ \"./node_modules/vega/node_modules/d3-geo/src/math.js\");\n/* harmony import */ var _stream_js__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ./stream.js */ \"./node_modules/vega/node_modules/d3-geo/src/stream.js\");\n\n\n\n\n\n\nvar lambda0, phi0, lambda1, phi1, // bounds\n    lambda2, // previous lambda-coordinate\n    lambda00, phi00, // first point\n    p0, // previous 3D point\n    deltaSum,\n    ranges,\n    range;\n\nvar boundsStream = {\n  point: boundsPoint,\n  lineStart: boundsLineStart,\n  lineEnd: boundsLineEnd,\n  polygonStart: function() {\n    boundsStream.point = boundsRingPoint;\n    boundsStream.lineStart = boundsRingStart;\n    boundsStream.lineEnd = boundsRingEnd;\n    deltaSum = new d3_array__WEBPACK_IMPORTED_MODULE_0__[\"Adder\"]();\n    _area_js__WEBPACK_IMPORTED_MODULE_1__[\"areaStream\"].polygonStart();\n  },\n  polygonEnd: function() {\n    _area_js__WEBPACK_IMPORTED_MODULE_1__[\"areaStream\"].polygonEnd();\n    boundsStream.point = boundsPoint;\n    boundsStream.lineStart = boundsLineStart;\n    boundsStream.lineEnd = boundsLineEnd;\n    if (_area_js__WEBPACK_IMPORTED_MODULE_1__[\"areaRingSum\"] < 0) lambda0 = -(lambda1 = 180), phi0 = -(phi1 = 90);\n    else if (deltaSum > _math_js__WEBPACK_IMPORTED_MODULE_3__[\"epsilon\"]) phi1 = 90;\n    else if (deltaSum < -_math_js__WEBPACK_IMPORTED_MODULE_3__[\"epsilon\"]) phi0 = -90;\n    range[0] = lambda0, range[1] = lambda1;\n  },\n  sphere: function() {\n    lambda0 = -(lambda1 = 180), phi0 = -(phi1 = 90);\n  }\n};\n\nfunction boundsPoint(lambda, phi) {\n  ranges.push(range = [lambda0 = lambda, lambda1 = lambda]);\n  if (phi < phi0) phi0 = phi;\n  if (phi > phi1) phi1 = phi;\n}\n\nfunction linePoint(lambda, phi) {\n  var p = Object(_cartesian_js__WEBPACK_IMPORTED_MODULE_2__[\"cartesian\"])([lambda * _math_js__WEBPACK_IMPORTED_MODULE_3__[\"radians\"], phi * _math_js__WEBPACK_IMPORTED_MODULE_3__[\"radians\"]]);\n  if (p0) {\n    var normal = Object(_cartesian_js__WEBPACK_IMPORTED_MODULE_2__[\"cartesianCross\"])(p0, p),\n        equatorial = [normal[1], -normal[0], 0],\n        inflection = Object(_cartesian_js__WEBPACK_IMPORTED_MODULE_2__[\"cartesianCross\"])(equatorial, normal);\n    Object(_cartesian_js__WEBPACK_IMPORTED_MODULE_2__[\"cartesianNormalizeInPlace\"])(inflection);\n    inflection = Object(_cartesian_js__WEBPACK_IMPORTED_MODULE_2__[\"spherical\"])(inflection);\n    var delta = lambda - lambda2,\n        sign = delta > 0 ? 1 : -1,\n        lambdai = inflection[0] * _math_js__WEBPACK_IMPORTED_MODULE_3__[\"degrees\"] * sign,\n        phii,\n        antimeridian = Object(_math_js__WEBPACK_IMPORTED_MODULE_3__[\"abs\"])(delta) > 180;\n    if (antimeridian ^ (sign * lambda2 < lambdai && lambdai < sign * lambda)) {\n      phii = inflection[1] * _math_js__WEBPACK_IMPORTED_MODULE_3__[\"degrees\"];\n      if (phii > phi1) phi1 = phii;\n    } else if (lambdai = (lambdai + 360) % 360 - 180, antimeridian ^ (sign * lambda2 < lambdai && lambdai < sign * lambda)) {\n      phii = -inflection[1] * _math_js__WEBPACK_IMPORTED_MODULE_3__[\"degrees\"];\n      if (phii < phi0) phi0 = phii;\n    } else {\n      if (phi < phi0) phi0 = phi;\n      if (phi > phi1) phi1 = phi;\n    }\n    if (antimeridian) {\n      if (lambda < lambda2) {\n        if (angle(lambda0, lambda) > angle(lambda0, lambda1)) lambda1 = lambda;\n      } else {\n        if (angle(lambda, lambda1) > angle(lambda0, lambda1)) lambda0 = lambda;\n      }\n    } else {\n      if (lambda1 >= lambda0) {\n        if (lambda < lambda0) lambda0 = lambda;\n        if (lambda > lambda1) lambda1 = lambda;\n      } else {\n        if (lambda > lambda2) {\n          if (angle(lambda0, lambda) > angle(lambda0, lambda1)) lambda1 = lambda;\n        } else {\n          if (angle(lambda, lambda1) > angle(lambda0, lambda1)) lambda0 = lambda;\n        }\n      }\n    }\n  } else {\n    ranges.push(range = [lambda0 = lambda, lambda1 = lambda]);\n  }\n  if (phi < phi0) phi0 = phi;\n  if (phi > phi1) phi1 = phi;\n  p0 = p, lambda2 = lambda;\n}\n\nfunction boundsLineStart() {\n  boundsStream.point = linePoint;\n}\n\nfunction boundsLineEnd() {\n  range[0] = lambda0, range[1] = lambda1;\n  boundsStream.point = boundsPoint;\n  p0 = null;\n}\n\nfunction boundsRingPoint(lambda, phi) {\n  if (p0) {\n    var delta = lambda - lambda2;\n    deltaSum.add(Object(_math_js__WEBPACK_IMPORTED_MODULE_3__[\"abs\"])(delta) > 180 ? delta + (delta > 0 ? 360 : -360) : delta);\n  } else {\n    lambda00 = lambda, phi00 = phi;\n  }\n  _area_js__WEBPACK_IMPORTED_MODULE_1__[\"areaStream\"].point(lambda, phi);\n  linePoint(lambda, phi);\n}\n\nfunction boundsRingStart() {\n  _area_js__WEBPACK_IMPORTED_MODULE_1__[\"areaStream\"].lineStart();\n}\n\nfunction boundsRingEnd() {\n  boundsRingPoint(lambda00, phi00);\n  _area_js__WEBPACK_IMPORTED_MODULE_1__[\"areaStream\"].lineEnd();\n  if (Object(_math_js__WEBPACK_IMPORTED_MODULE_3__[\"abs\"])(deltaSum) > _math_js__WEBPACK_IMPORTED_MODULE_3__[\"epsilon\"]) lambda0 = -(lambda1 = 180);\n  range[0] = lambda0, range[1] = lambda1;\n  p0 = null;\n}\n\n// Finds the left-right distance between two longitudes.\n// This is almost the same as (lambda1 - lambda0 + 360°) % 360°, except that we want\n// the distance between ±180° to be 360°.\nfunction angle(lambda0, lambda1) {\n  return (lambda1 -= lambda0) < 0 ? lambda1 + 360 : lambda1;\n}\n\nfunction rangeCompare(a, b) {\n  return a[0] - b[0];\n}\n\nfunction rangeContains(range, x) {\n  return range[0] <= range[1] ? range[0] <= x && x <= range[1] : x < range[0] || range[1] < x;\n}\n\n/* harmony default export */ __webpack_exports__[\"default\"] = (function(feature) {\n  var i, n, a, b, merged, deltaMax, delta;\n\n  phi1 = lambda1 = -(lambda0 = phi0 = Infinity);\n  ranges = [];\n  Object(_stream_js__WEBPACK_IMPORTED_MODULE_4__[\"default\"])(feature, boundsStream);\n\n  // First, sort ranges by their minimum longitudes.\n  if (n = ranges.length) {\n    ranges.sort(rangeCompare);\n\n    // Then, merge any ranges that overlap.\n    for (i = 1, a = ranges[0], merged = [a]; i < n; ++i) {\n      b = ranges[i];\n      if (rangeContains(a, b[0]) || rangeContains(a, b[1])) {\n        if (angle(a[0], b[1]) > angle(a[0], a[1])) a[1] = b[1];\n        if (angle(b[0], a[1]) > angle(a[0], a[1])) a[0] = b[0];\n      } else {\n        merged.push(a = b);\n      }\n    }\n\n    // Finally, find the largest gap between the merged ranges.\n    // The final bounding box will be the inverse of this gap.\n    for (deltaMax = -Infinity, n = merged.length - 1, i = 0, a = merged[n]; i <= n; a = b, ++i) {\n      b = merged[i];\n      if ((delta = angle(a[1], b[0])) > deltaMax) deltaMax = delta, lambda0 = b[0], lambda1 = a[1];\n    }\n  }\n\n  ranges = range = null;\n\n  return lambda0 === Infinity || phi0 === Infinity\n      ? [[NaN, NaN], [NaN, NaN]]\n      : [[lambda0, phi0], [lambda1, phi1]];\n});\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,[encoded data, 9168 characters]\n//# sourceURL=webpack-internal:///./node_modules/vega/node_modules/d3-geo/src/bounds.js\n");

/***/ }),

/***/ "./node_modules/vega/node_modules/d3-geo/src/cartesian.js":
/*!****************************************************************!*\
  !*** ./node_modules/vega/node_modules/d3-geo/src/cartesian.js ***!
  \****************************************************************/
/*! exports provided: spherical, cartesian, cartesianDot, cartesianCross, cartesianAddInPlace, cartesianScale, cartesianNormalizeInPlace */
/***/ (function(module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"spherical\", function() { return spherical; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"cartesian\", function() { return cartesian; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"cartesianDot\", function() { return cartesianDot; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"cartesianCross\", function() { return cartesianCross; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"cartesianAddInPlace\", function() { return cartesianAddInPlace; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"cartesianScale\", function() { return cartesianScale; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"cartesianNormalizeInPlace\", function() { return cartesianNormalizeInPlace; });\n/* harmony import */ var _math_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./math.js */ \"./node_modules/vega/node_modules/d3-geo/src/math.js\");\n\n\nfunction spherical(cartesian) {\n  return [Object(_math_js__WEBPACK_IMPORTED_MODULE_0__[\"atan2\"])(cartesian[1], cartesian[0]), Object(_math_js__WEBPACK_IMPORTED_MODULE_0__[\"asin\"])(cartesian[2])];\n}\n\nfunction cartesian(spherical) {\n  var lambda = spherical[0], phi = spherical[1], cosPhi = Object(_math_js__WEBPACK_IMPORTED_MODULE_0__[\"cos\"])(phi);\n  return [cosPhi * Object(_math_js__WEBPACK_IMPORTED_MODULE_0__[\"cos\"])(lambda), cosPhi * Object(_math_js__WEBPACK_IMPORTED_MODULE_0__[\"sin\"])(lambda), Object(_math_js__WEBPACK_IMPORTED_MODULE_0__[\"sin\"])(phi)];\n}\n\nfunction cartesianDot(a, b) {\n  return a[0] * b[0] + a[1] * b[1] + a[2] * b[2];\n}\n\nfunction cartesianCross(a, b) {\n  return [a[1] * b[2] - a[2] * b[1], a[2] * b[0] - a[0] * b[2], a[0] * b[1] - a[1] * b[0]];\n}\n\n// TODO return a\nfunction cartesianAddInPlace(a, b) {\n  a[0] += b[0], a[1] += b[1], a[2] += b[2];\n}\n\nfunction cartesianScale(vector, k) {\n  return [vector[0] * k, vector[1] * k, vector[2] * k];\n}\n\n// TODO return d\nfunction cartesianNormalizeInPlace(d) {\n  var l = Object(_math_js__WEBPACK_IMPORTED_MODULE_0__[\"sqrt\"])(d[0] * d[0] + d[1] * d[1] + d[2] * d[2]);\n  d[0] /= l, d[1] /= l, d[2] /= l;\n}\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvdmVnYS9ub2RlX21vZHVsZXMvZDMtZ2VvL3NyYy9jYXJ0ZXNpYW4uanMuanMiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvdmVnYS9ub2RlX21vZHVsZXMvZDMtZ2VvL3NyYy9jYXJ0ZXNpYW4uanM/NDdiNiJdLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge2FzaW4sIGF0YW4yLCBjb3MsIHNpbiwgc3FydH0gZnJvbSBcIi4vbWF0aC5qc1wiO1xuXG5leHBvcnQgZnVuY3Rpb24gc3BoZXJpY2FsKGNhcnRlc2lhbikge1xuICByZXR1cm4gW2F0YW4yKGNhcnRlc2lhblsxXSwgY2FydGVzaWFuWzBdKSwgYXNpbihjYXJ0ZXNpYW5bMl0pXTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGNhcnRlc2lhbihzcGhlcmljYWwpIHtcbiAgdmFyIGxhbWJkYSA9IHNwaGVyaWNhbFswXSwgcGhpID0gc3BoZXJpY2FsWzFdLCBjb3NQaGkgPSBjb3MocGhpKTtcbiAgcmV0dXJuIFtjb3NQaGkgKiBjb3MobGFtYmRhKSwgY29zUGhpICogc2luKGxhbWJkYSksIHNpbihwaGkpXTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGNhcnRlc2lhbkRvdChhLCBiKSB7XG4gIHJldHVybiBhWzBdICogYlswXSArIGFbMV0gKiBiWzFdICsgYVsyXSAqIGJbMl07XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBjYXJ0ZXNpYW5Dcm9zcyhhLCBiKSB7XG4gIHJldHVybiBbYVsxXSAqIGJbMl0gLSBhWzJdICogYlsxXSwgYVsyXSAqIGJbMF0gLSBhWzBdICogYlsyXSwgYVswXSAqIGJbMV0gLSBhWzFdICogYlswXV07XG59XG5cbi8vIFRPRE8gcmV0dXJuIGFcbmV4cG9ydCBmdW5jdGlvbiBjYXJ0ZXNpYW5BZGRJblBsYWNlKGEsIGIpIHtcbiAgYVswXSArPSBiWzBdLCBhWzFdICs9IGJbMV0sIGFbMl0gKz0gYlsyXTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGNhcnRlc2lhblNjYWxlKHZlY3Rvciwgaykge1xuICByZXR1cm4gW3ZlY3RvclswXSAqIGssIHZlY3RvclsxXSAqIGssIHZlY3RvclsyXSAqIGtdO1xufVxuXG4vLyBUT0RPIHJldHVybiBkXG5leHBvcnQgZnVuY3Rpb24gY2FydGVzaWFuTm9ybWFsaXplSW5QbGFjZShkKSB7XG4gIHZhciBsID0gc3FydChkWzBdICogZFswXSArIGRbMV0gKiBkWzFdICsgZFsyXSAqIGRbMl0pO1xuICBkWzBdIC89IGwsIGRbMV0gLz0gbCwgZFsyXSAvPSBsO1xufVxuIl0sIm1hcHBpbmdzIjoiQUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7Iiwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///./node_modules/vega/node_modules/d3-geo/src/cartesian.js\n");

/***/ }),

/***/ "./node_modules/vega/node_modules/d3-geo/src/centroid.js":
/*!***************************************************************!*\
  !*** ./node_modules/vega/node_modules/d3-geo/src/centroid.js ***!
  \***************************************************************/
/*! exports provided: default */
/***/ (function(module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var d3_array__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! d3-array */ \"./node_modules/d3-array/src/index.js\");\n/* harmony import */ var _math_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./math.js */ \"./node_modules/vega/node_modules/d3-geo/src/math.js\");\n/* harmony import */ var _noop_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./noop.js */ \"./node_modules/vega/node_modules/d3-geo/src/noop.js\");\n/* harmony import */ var _stream_js__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ./stream.js */ \"./node_modules/vega/node_modules/d3-geo/src/stream.js\");\n\n\n\n\n\nvar W0, W1,\n    X0, Y0, Z0,\n    X1, Y1, Z1,\n    X2, Y2, Z2,\n    lambda00, phi00, // first point\n    x0, y0, z0; // previous point\n\nvar centroidStream = {\n  sphere: _noop_js__WEBPACK_IMPORTED_MODULE_2__[\"default\"],\n  point: centroidPoint,\n  lineStart: centroidLineStart,\n  lineEnd: centroidLineEnd,\n  polygonStart: function() {\n    centroidStream.lineStart = centroidRingStart;\n    centroidStream.lineEnd = centroidRingEnd;\n  },\n  polygonEnd: function() {\n    centroidStream.lineStart = centroidLineStart;\n    centroidStream.lineEnd = centroidLineEnd;\n  }\n};\n\n// Arithmetic mean of Cartesian vectors.\nfunction centroidPoint(lambda, phi) {\n  lambda *= _math_js__WEBPACK_IMPORTED_MODULE_1__[\"radians\"], phi *= _math_js__WEBPACK_IMPORTED_MODULE_1__[\"radians\"];\n  var cosPhi = Object(_math_js__WEBPACK_IMPORTED_MODULE_1__[\"cos\"])(phi);\n  centroidPointCartesian(cosPhi * Object(_math_js__WEBPACK_IMPORTED_MODULE_1__[\"cos\"])(lambda), cosPhi * Object(_math_js__WEBPACK_IMPORTED_MODULE_1__[\"sin\"])(lambda), Object(_math_js__WEBPACK_IMPORTED_MODULE_1__[\"sin\"])(phi));\n}\n\nfunction centroidPointCartesian(x, y, z) {\n  ++W0;\n  X0 += (x - X0) / W0;\n  Y0 += (y - Y0) / W0;\n  Z0 += (z - Z0) / W0;\n}\n\nfunction centroidLineStart() {\n  centroidStream.point = centroidLinePointFirst;\n}\n\nfunction centroidLinePointFirst(lambda, phi) {\n  lambda *= _math_js__WEBPACK_IMPORTED_MODULE_1__[\"radians\"], phi *= _math_js__WEBPACK_IMPORTED_MODULE_1__[\"radians\"];\n  var cosPhi = Object(_math_js__WEBPACK_IMPORTED_MODULE_1__[\"cos\"])(phi);\n  x0 = cosPhi * Object(_math_js__WEBPACK_IMPORTED_MODULE_1__[\"cos\"])(lambda);\n  y0 = cosPhi * Object(_math_js__WEBPACK_IMPORTED_MODULE_1__[\"sin\"])(lambda);\n  z0 = Object(_math_js__WEBPACK_IMPORTED_MODULE_1__[\"sin\"])(phi);\n  centroidStream.point = centroidLinePoint;\n  centroidPointCartesian(x0, y0, z0);\n}\n\nfunction centroidLinePoint(lambda, phi) {\n  lambda *= _math_js__WEBPACK_IMPORTED_MODULE_1__[\"radians\"], phi *= _math_js__WEBPACK_IMPORTED_MODULE_1__[\"radians\"];\n  var cosPhi = Object(_math_js__WEBPACK_IMPORTED_MODULE_1__[\"cos\"])(phi),\n      x = cosPhi * Object(_math_js__WEBPACK_IMPORTED_MODULE_1__[\"cos\"])(lambda),\n      y = cosPhi * Object(_math_js__WEBPACK_IMPORTED_MODULE_1__[\"sin\"])(lambda),\n      z = Object(_math_js__WEBPACK_IMPORTED_MODULE_1__[\"sin\"])(phi),\n      w = Object(_math_js__WEBPACK_IMPORTED_MODULE_1__[\"atan2\"])(Object(_math_js__WEBPACK_IMPORTED_MODULE_1__[\"sqrt\"])((w = y0 * z - z0 * y) * w + (w = z0 * x - x0 * z) * w + (w = x0 * y - y0 * x) * w), x0 * x + y0 * y + z0 * z);\n  W1 += w;\n  X1 += w * (x0 + (x0 = x));\n  Y1 += w * (y0 + (y0 = y));\n  Z1 += w * (z0 + (z0 = z));\n  centroidPointCartesian(x0, y0, z0);\n}\n\nfunction centroidLineEnd() {\n  centroidStream.point = centroidPoint;\n}\n\n// See J. E. Brock, The Inertia Tensor for a Spherical Triangle,\n// J. Applied Mechanics 42, 239 (1975).\nfunction centroidRingStart() {\n  centroidStream.point = centroidRingPointFirst;\n}\n\nfunction centroidRingEnd() {\n  centroidRingPoint(lambda00, phi00);\n  centroidStream.point = centroidPoint;\n}\n\nfunction centroidRingPointFirst(lambda, phi) {\n  lambda00 = lambda, phi00 = phi;\n  lambda *= _math_js__WEBPACK_IMPORTED_MODULE_1__[\"radians\"], phi *= _math_js__WEBPACK_IMPORTED_MODULE_1__[\"radians\"];\n  centroidStream.point = centroidRingPoint;\n  var cosPhi = Object(_math_js__WEBPACK_IMPORTED_MODULE_1__[\"cos\"])(phi);\n  x0 = cosPhi * Object(_math_js__WEBPACK_IMPORTED_MODULE_1__[\"cos\"])(lambda);\n  y0 = cosPhi * Object(_math_js__WEBPACK_IMPORTED_MODULE_1__[\"sin\"])(lambda);\n  z0 = Object(_math_js__WEBPACK_IMPORTED_MODULE_1__[\"sin\"])(phi);\n  centroidPointCartesian(x0, y0, z0);\n}\n\nfunction centroidRingPoint(lambda, phi) {\n  lambda *= _math_js__WEBPACK_IMPORTED_MODULE_1__[\"radians\"], phi *= _math_js__WEBPACK_IMPORTED_MODULE_1__[\"radians\"];\n  var cosPhi = Object(_math_js__WEBPACK_IMPORTED_MODULE_1__[\"cos\"])(phi),\n      x = cosPhi * Object(_math_js__WEBPACK_IMPORTED_MODULE_1__[\"cos\"])(lambda),\n      y = cosPhi * Object(_math_js__WEBPACK_IMPORTED_MODULE_1__[\"sin\"])(lambda),\n      z = Object(_math_js__WEBPACK_IMPORTED_MODULE_1__[\"sin\"])(phi),\n      cx = y0 * z - z0 * y,\n      cy = z0 * x - x0 * z,\n      cz = x0 * y - y0 * x,\n      m = Object(_math_js__WEBPACK_IMPORTED_MODULE_1__[\"hypot\"])(cx, cy, cz),\n      w = Object(_math_js__WEBPACK_IMPORTED_MODULE_1__[\"asin\"])(m), // line weight = angle\n      v = m && -w / m; // area weight multiplier\n  X2.add(v * cx);\n  Y2.add(v * cy);\n  Z2.add(v * cz);\n  W1 += w;\n  X1 += w * (x0 + (x0 = x));\n  Y1 += w * (y0 + (y0 = y));\n  Z1 += w * (z0 + (z0 = z));\n  centroidPointCartesian(x0, y0, z0);\n}\n\n/* harmony default export */ __webpack_exports__[\"default\"] = (function(object) {\n  W0 = W1 =\n  X0 = Y0 = Z0 =\n  X1 = Y1 = Z1 = 0;\n  X2 = new d3_array__WEBPACK_IMPORTED_MODULE_0__[\"Adder\"]();\n  Y2 = new d3_array__WEBPACK_IMPORTED_MODULE_0__[\"Adder\"]();\n  Z2 = new d3_array__WEBPACK_IMPORTED_MODULE_0__[\"Adder\"]();\n  Object(_stream_js__WEBPACK_IMPORTED_MODULE_3__[\"default\"])(object, centroidStream);\n\n  var x = +X2,\n      y = +Y2,\n      z = +Z2,\n      m = Object(_math_js__WEBPACK_IMPORTED_MODULE_1__[\"hypot\"])(x, y, z);\n\n  // If the area-weighted ccentroid is undefined, fall back to length-weighted ccentroid.\n  if (m < _math_js__WEBPACK_IMPORTED_MODULE_1__[\"epsilon2\"]) {\n    x = X1, y = Y1, z = Z1;\n    // If the feature has zero length, fall back to arithmetic mean of point vectors.\n    if (W1 < _math_js__WEBPACK_IMPORTED_MODULE_1__[\"epsilon\"]) x = X0, y = Y0, z = Z0;\n    m = Object(_math_js__WEBPACK_IMPORTED_MODULE_1__[\"hypot\"])(x, y, z);\n    // If the feature still has an undefined ccentroid, then return.\n    if (m < _math_js__WEBPACK_IMPORTED_MODULE_1__[\"epsilon2\"]) return [NaN, NaN];\n  }\n\n  return [Object(_math_js__WEBPACK_IMPORTED_MODULE_1__[\"atan2\"])(y, x) * _math_js__WEBPACK_IMPORTED_MODULE_1__[\"degrees\"], Object(_math_js__WEBPACK_IMPORTED_MODULE_1__[\"asin\"])(z / m) * _math_js__WEBPACK_IMPORTED_MODULE_1__[\"degrees\"]];\n});\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,[encoded data, 6612 characters]\n//# sourceURL=webpack-internal:///./node_modules/vega/node_modules/d3-geo/src/centroid.js\n");

/***/ }),

/***/ "./node_modules/vega/node_modules/d3-geo/src/circle.js":
/*!*************************************************************!*\
  !*** ./node_modules/vega/node_modules/d3-geo/src/circle.js ***!
  \*************************************************************/
/*! exports provided: circleStream, default */
/***/ (function(module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"circleStream\", function() { return circleStream; });\n/* harmony import */ var _cartesian_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./cartesian.js */ \"./node_modules/vega/node_modules/d3-geo/src/cartesian.js\");\n/* harmony import */ var _constant_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./constant.js */ \"./node_modules/vega/node_modules/d3-geo/src/constant.js\");\n/* harmony import */ var _math_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./math.js */ \"./node_modules/vega/node_modules/d3-geo/src/math.js\");\n/* harmony import */ var _rotation_js__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ./rotation.js */ \"./node_modules/vega/node_modules/d3-geo/src/rotation.js\");\n\n\n\n\n\n// Generates a circle centered at [0°, 0°], with a given radius and precision.\nfunction circleStream(stream, radius, delta, direction, t0, t1) {\n  if (!delta) return;\n  var cosRadius = Object(_math_js__WEBPACK_IMPORTED_MODULE_2__[\"cos\"])(radius),\n      sinRadius = Object(_math_js__WEBPACK_IMPORTED_MODULE_2__[\"sin\"])(radius),\n      step = direction * delta;\n  if (t0 == null) {\n    t0 = radius + direction * _math_js__WEBPACK_IMPORTED_MODULE_2__[\"tau\"];\n    t1 = radius - step / 2;\n  } else {\n    t0 = circleRadius(cosRadius, t0);\n    t1 = circleRadius(cosRadius, t1);\n    if (direction > 0 ? t0 < t1 : t0 > t1) t0 += direction * _math_js__WEBPACK_IMPORTED_MODULE_2__[\"tau\"];\n  }\n  for (var point, t = t0; direction > 0 ? t > t1 : t < t1; t -= step) {\n    point = Object(_cartesian_js__WEBPACK_IMPORTED_MODULE_0__[\"spherical\"])([cosRadius, -sinRadius * Object(_math_js__WEBPACK_IMPORTED_MODULE_2__[\"cos\"])(t), -sinRadius * Object(_math_js__WEBPACK_IMPORTED_MODULE_2__[\"sin\"])(t)]);\n    stream.point(point[0], point[1]);\n  }\n}\n\n// Returns the signed angle of a cartesian point relative to [cosRadius, 0, 0].\nfunction circleRadius(cosRadius, point) {\n  point = Object(_cartesian_js__WEBPACK_IMPORTED_MODULE_0__[\"cartesian\"])(point), point[0] -= cosRadius;\n  Object(_cartesian_js__WEBPACK_IMPORTED_MODULE_0__[\"cartesianNormalizeInPlace\"])(point);\n  var radius = Object(_math_js__WEBPACK_IMPORTED_MODULE_2__[\"acos\"])(-point[1]);\n  return ((-point[2] < 0 ? -radius : radius) + _math_js__WEBPACK_IMPORTED_MODULE_2__[\"tau\"] - _math_js__WEBPACK_IMPORTED_MODULE_2__[\"epsilon\"]) % _math_js__WEBPACK_IMPORTED_MODULE_2__[\"tau\"];\n}\n\n/* harmony default export */ __webpack_exports__[\"default\"] = (function() {\n  var center = Object(_constant_js__WEBPACK_IMPORTED_MODULE_1__[\"default\"])([0, 0]),\n      radius = Object(_constant_js__WEBPACK_IMPORTED_MODULE_1__[\"default\"])(90),\n      precision = Object(_constant_js__WEBPACK_IMPORTED_MODULE_1__[\"default\"])(6),\n      ring,\n      rotate,\n      stream = {point: point};\n\n  function point(x, y) {\n    ring.push(x = rotate(x, y));\n    x[0] *= _math_js__WEBPACK_IMPORTED_MODULE_2__[\"degrees\"], x[1] *= _math_js__WEBPACK_IMPORTED_MODULE_2__[\"degrees\"];\n  }\n\n  function circle() {\n    var c = center.apply(this, arguments),\n        r = radius.apply(this, arguments) * _math_js__WEBPACK_IMPORTED_MODULE_2__[\"radians\"],\n        p = precision.apply(this, arguments) * _math_js__WEBPACK_IMPORTED_MODULE_2__[\"radians\"];\n    ring = [];\n    rotate = Object(_rotation_js__WEBPACK_IMPORTED_MODULE_3__[\"rotateRadians\"])(-c[0] * _math_js__WEBPACK_IMPORTED_MODULE_2__[\"radians\"], -c[1] * _math_js__WEBPACK_IMPORTED_MODULE_2__[\"radians\"], 0).invert;\n    circleStream(stream, r, p, 1);\n    c = {type: \"Polygon\", coordinates: [ring]};\n    ring = rotate = null;\n    return c;\n  }\n\n  circle.center = function(_) {\n    return arguments.length ? (center = typeof _ === \"function\" ? _ : Object(_constant_js__WEBPACK_IMPORTED_MODULE_1__[\"default\"])([+_[0], +_[1]]), circle) : center;\n  };\n\n  circle.radius = function(_) {\n    return arguments.length ? (radius = typeof _ === \"function\" ? _ : Object(_constant_js__WEBPACK_IMPORTED_MODULE_1__[\"default\"])(+_), circle) : radius;\n  };\n\n  circle.precision = function(_) {\n    return arguments.length ? (precision = typeof _ === \"function\" ? _ : Object(_constant_js__WEBPACK_IMPORTED_MODULE_1__[\"default\"])(+_), circle) : precision;\n  };\n\n  return circle;\n});\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,[encoded data, 4104 characters]\n//# sourceURL=webpack-internal:///./node_modules/vega/node_modules/d3-geo/src/circle.js\n");

/***/ }),

/***/ "./node_modules/vega/node_modules/d3-geo/src/clip/antimeridian.js":
/*!************************************************************************!*\
  !*** ./node_modules/vega/node_modules/d3-geo/src/clip/antimeridian.js ***!
  \************************************************************************/
/*! exports provided: default */
/***/ (function(module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _index_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./index.js */ \"./node_modules/vega/node_modules/d3-geo/src/clip/index.js\");\n/* harmony import */ var _math_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../math.js */ \"./node_modules/vega/node_modules/d3-geo/src/math.js\");\n\n\n\n/* harmony default export */ __webpack_exports__[\"default\"] = (Object(_index_js__WEBPACK_IMPORTED_MODULE_0__[\"default\"])(\n  function() { return true; },\n  clipAntimeridianLine,\n  clipAntimeridianInterpolate,\n  [-_math_js__WEBPACK_IMPORTED_MODULE_1__[\"pi\"], -_math_js__WEBPACK_IMPORTED_MODULE_1__[\"halfPi\"]]\n));\n\n// Takes a line and cuts into visible segments. Return values: 0 - there were\n// intersections or the line was empty; 1 - no intersections; 2 - there were\n// intersections, and the first and last segments should be rejoined.\nfunction clipAntimeridianLine(stream) {\n  var lambda0 = NaN,\n      phi0 = NaN,\n      sign0 = NaN,\n      clean; // no intersections\n\n  return {\n    lineStart: function() {\n      stream.lineStart();\n      clean = 1;\n    },\n    point: function(lambda1, phi1) {\n      var sign1 = lambda1 > 0 ? _math_js__WEBPACK_IMPORTED_MODULE_1__[\"pi\"] : -_math_js__WEBPACK_IMPORTED_MODULE_1__[\"pi\"],\n          delta = Object(_math_js__WEBPACK_IMPORTED_MODULE_1__[\"abs\"])(lambda1 - lambda0);\n      if (Object(_math_js__WEBPACK_IMPORTED_MODULE_1__[\"abs\"])(delta - _math_js__WEBPACK_IMPORTED_MODULE_1__[\"pi\"]) < _math_js__WEBPACK_IMPORTED_MODULE_1__[\"epsilon\"]) { // line crosses a pole\n        stream.point(lambda0, phi0 = (phi0 + phi1) / 2 > 0 ? _math_js__WEBPACK_IMPORTED_MODULE_1__[\"halfPi\"] : -_math_js__WEBPACK_IMPORTED_MODULE_1__[\"halfPi\"]);\n        stream.point(sign0, phi0);\n        stream.lineEnd();\n        stream.lineStart();\n        stream.point(sign1, phi0);\n        stream.point(lambda1, phi0);\n        clean = 0;\n      } else if (sign0 !== sign1 && delta >= _math_js__WEBPACK_IMPORTED_MODULE_1__[\"pi\"]) { // line crosses antimeridian\n        if (Object(_math_js__WEBPACK_IMPORTED_MODULE_1__[\"abs\"])(lambda0 - sign0) < _math_js__WEBPACK_IMPORTED_MODULE_1__[\"epsilon\"]) lambda0 -= sign0 * _math_js__WEBPACK_IMPORTED_MODULE_1__[\"epsilon\"]; // handle degeneracies\n        if (Object(_math_js__WEBPACK_IMPORTED_MODULE_1__[\"abs\"])(lambda1 - sign1) < _math_js__WEBPACK_IMPORTED_MODULE_1__[\"epsilon\"]) lambda1 -= sign1 * _math_js__WEBPACK_IMPORTED_MODULE_1__[\"epsilon\"];\n        phi0 = clipAntimeridianIntersect(lambda0, phi0, lambda1, phi1);\n        stream.point(sign0, phi0);\n        stream.lineEnd();\n        stream.lineStart();\n        stream.point(sign1, phi0);\n        clean = 0;\n      }\n      stream.point(lambda0 = lambda1, phi0 = phi1);\n      sign0 = sign1;\n    },\n    lineEnd: function() {\n      stream.lineEnd();\n      lambda0 = phi0 = NaN;\n    },\n    clean: function() {\n      return 2 - clean; // if intersections, rejoin first and last segments\n    }\n  };\n}\n\nfunction clipAntimeridianIntersect(lambda0, phi0, lambda1, phi1) {\n  var cosPhi0,\n      cosPhi1,\n      sinLambda0Lambda1 = Object(_math_js__WEBPACK_IMPORTED_MODULE_1__[\"sin\"])(lambda0 - lambda1);\n  return Object(_math_js__WEBPACK_IMPORTED_MODULE_1__[\"abs\"])(sinLambda0Lambda1) > _math_js__WEBPACK_IMPORTED_MODULE_1__[\"epsilon\"]\n      ? Object(_math_js__WEBPACK_IMPORTED_MODULE_1__[\"atan\"])((Object(_math_js__WEBPACK_IMPORTED_MODULE_1__[\"sin\"])(phi0) * (cosPhi1 = Object(_math_js__WEBPACK_IMPORTED_MODULE_1__[\"cos\"])(phi1)) * Object(_math_js__WEBPACK_IMPORTED_MODULE_1__[\"sin\"])(lambda1)\n          - Object(_math_js__WEBPACK_IMPORTED_MODULE_1__[\"sin\"])(phi1) * (cosPhi0 = Object(_math_js__WEBPACK_IMPORTED_MODULE_1__[\"cos\"])(phi0)) * Object(_math_js__WEBPACK_IMPORTED_MODULE_1__[\"sin\"])(lambda0))\n          / (cosPhi0 * cosPhi1 * sinLambda0Lambda1))\n      : (phi0 + phi1) / 2;\n}\n\nfunction clipAntimeridianInterpolate(from, to, direction, stream) {\n  var phi;\n  if (from == null) {\n    phi = direction * _math_js__WEBPACK_IMPORTED_MODULE_1__[\"halfPi\"];\n    stream.point(-_math_js__WEBPACK_IMPORTED_MODULE_1__[\"pi\"], phi);\n    stream.point(0, phi);\n    stream.point(_math_js__WEBPACK_IMPORTED_MODULE_1__[\"pi\"], phi);\n    stream.point(_math_js__WEBPACK_IMPORTED_MODULE_1__[\"pi\"], 0);\n    stream.point(_math_js__WEBPACK_IMPORTED_MODULE_1__[\"pi\"], -phi);\n    stream.point(0, -phi);\n    stream.point(-_math_js__WEBPACK_IMPORTED_MODULE_1__[\"pi\"], -phi);\n    stream.point(-_math_js__WEBPACK_IMPORTED_MODULE_1__[\"pi\"], 0);\n    stream.point(-_math_js__WEBPACK_IMPORTED_MODULE_1__[\"pi\"], phi);\n  } else if (Object(_math_js__WEBPACK_IMPORTED_MODULE_1__[\"abs\"])(from[0] - to[0]) > _math_js__WEBPACK_IMPORTED_MODULE_1__[\"epsilon\"]) {\n    var lambda = from[0] < to[0] ? _math_js__WEBPACK_IMPORTED_MODULE_1__[\"pi\"] : -_math_js__WEBPACK_IMPORTED_MODULE_1__[\"pi\"];\n    phi = direction * lambda / 2;\n    stream.point(-lambda, phi);\n    stream.point(0, phi);\n    stream.point(lambda, phi);\n  } else {\n    stream.point(to[0], to[1]);\n  }\n}\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,[encoded data, 4948 characters]\n//# sourceURL=webpack-internal:///./node_modules/vega/node_modules/d3-geo/src/clip/antimeridian.js\n");

/***/ }),

/***/ "./node_modules/vega/node_modules/d3-geo/src/clip/buffer.js":
/*!******************************************************************!*\
  !*** ./node_modules/vega/node_modules/d3-geo/src/clip/buffer.js ***!
  \******************************************************************/
/*! exports provided: default */
/***/ (function(module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _noop_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../noop.js */ \"./node_modules/vega/node_modules/d3-geo/src/noop.js\");\n\n\n/* harmony default export */ __webpack_exports__[\"default\"] = (function() {\n  var lines = [],\n      line;\n  return {\n    point: function(x, y, m) {\n      line.push([x, y, m]);\n    },\n    lineStart: function() {\n      lines.push(line = []);\n    },\n    lineEnd: _noop_js__WEBPACK_IMPORTED_MODULE_0__[\"default\"],\n    rejoin: function() {\n      if (lines.length > 1) lines.push(lines.pop().concat(lines.shift()));\n    },\n    result: function() {\n      var result = lines;\n      lines = [];\n      line = null;\n      return result;\n    }\n  };\n});\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvdmVnYS9ub2RlX21vZHVsZXMvZDMtZ2VvL3NyYy9jbGlwL2J1ZmZlci5qcy5qcyIsInNvdXJjZXMiOlsid2VicGFjazovLy8uL25vZGVfbW9kdWxlcy92ZWdhL25vZGVfbW9kdWxlcy9kMy1nZW8vc3JjL2NsaXAvYnVmZmVyLmpzP2E4ZDYiXSwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IG5vb3AgZnJvbSBcIi4uL25vb3AuanNcIjtcblxuZXhwb3J0IGRlZmF1bHQgZnVuY3Rpb24oKSB7XG4gIHZhciBsaW5lcyA9IFtdLFxuICAgICAgbGluZTtcbiAgcmV0dXJuIHtcbiAgICBwb2ludDogZnVuY3Rpb24oeCwgeSwgbSkge1xuICAgICAgbGluZS5wdXNoKFt4LCB5LCBtXSk7XG4gICAgfSxcbiAgICBsaW5lU3RhcnQ6IGZ1bmN0aW9uKCkge1xuICAgICAgbGluZXMucHVzaChsaW5lID0gW10pO1xuICAgIH0sXG4gICAgbGluZUVuZDogbm9vcCxcbiAgICByZWpvaW46IGZ1bmN0aW9uKCkge1xuICAgICAgaWYgKGxpbmVzLmxlbmd0aCA+IDEpIGxpbmVzLnB1c2gobGluZXMucG9wKCkuY29uY2F0KGxpbmVzLnNoaWZ0KCkpKTtcbiAgICB9LFxuICAgIHJlc3VsdDogZnVuY3Rpb24oKSB7XG4gICAgICB2YXIgcmVzdWx0ID0gbGluZXM7XG4gICAgICBsaW5lcyA9IFtdO1xuICAgICAgbGluZSA9IG51bGw7XG4gICAgICByZXR1cm4gcmVzdWx0O1xuICAgIH1cbiAgfTtcbn1cbiJdLCJtYXBwaW5ncyI6IkFBQUE7QUFBQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTsiLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///./node_modules/vega/node_modules/d3-geo/src/clip/buffer.js\n");

/***/ }),

/***/ "./node_modules/vega/node_modules/d3-geo/src/clip/circle.js":
/*!******************************************************************!*\
  !*** ./node_modules/vega/node_modules/d3-geo/src/clip/circle.js ***!
  \******************************************************************/
/*! exports provided: default */
/***/ (function(module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _cartesian_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../cartesian.js */ \"./node_modules/vega/node_modules/d3-geo/src/cartesian.js\");\n/* harmony import */ var _circle_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../circle.js */ \"./node_modules/vega/node_modules/d3-geo/src/circle.js\");\n/* harmony import */ var _math_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ../math.js */ \"./node_modules/vega/node_modules/d3-geo/src/math.js\");\n/* harmony import */ var _pointEqual_js__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ../pointEqual.js */ \"./node_modules/vega/node_modules/d3-geo/src/pointEqual.js\");\n/* harmony import */ var _index_js__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ./index.js */ \"./node_modules/vega/node_modules/d3-geo/src/clip/index.js\");\n\n\n\n\n\n\n/* harmony default export */ __webpack_exports__[\"default\"] = (function(radius) {\n  var cr = Object(_math_js__WEBPACK_IMPORTED_MODULE_2__[\"cos\"])(radius),\n      delta = 6 * _math_js__WEBPACK_IMPORTED_MODULE_2__[\"radians\"],\n      smallRadius = cr > 0,\n      notHemisphere = Object(_math_js__WEBPACK_IMPORTED_MODULE_2__[\"abs\"])(cr) > _math_js__WEBPACK_IMPORTED_MODULE_2__[\"epsilon\"]; // TODO optimise for this common case\n\n  function interpolate(from, to, direction, stream) {\n    Object(_circle_js__WEBPACK_IMPORTED_MODULE_1__[\"circleStream\"])(stream, radius, delta, direction, from, to);\n  }\n\n  function visible(lambda, phi) {\n    return Object(_math_js__WEBPACK_IMPORTED_MODULE_2__[\"cos\"])(lambda) * Object(_math_js__WEBPACK_IMPORTED_MODULE_2__[\"cos\"])(phi) > cr;\n  }\n\n  // Takes a line and cuts into visible segments. Return values used for polygon\n  // clipping: 0 - there were intersections or the line was empty; 1 - no\n  // intersections 2 - there were intersections, and the first and last segments\n  // should be rejoined.\n  function clipLine(stream) {\n    var point0, // previous point\n        c0, // code for previous point\n        v0, // visibility of previous point\n        v00, // visibility of first point\n        clean; // no intersections\n    return {\n      lineStart: function() {\n        v00 = v0 = false;\n        clean = 1;\n      },\n      point: function(lambda, phi) {\n        var point1 = [lambda, phi],\n            point2,\n            v = visible(lambda, phi),\n            c = smallRadius\n              ? v ? 0 : code(lambda, phi)\n              : v ? code(lambda + (lambda < 0 ? _math_js__WEBPACK_IMPORTED_MODULE_2__[\"pi\"] : -_math_js__WEBPACK_IMPORTED_MODULE_2__[\"pi\"]), phi) : 0;\n        if (!point0 && (v00 = v0 = v)) stream.lineStart();\n        if (v !== v0) {\n          point2 = intersect(point0, point1);\n          if (!point2 || Object(_pointEqual_js__WEBPACK_IMPORTED_MODULE_3__[\"default\"])(point0, point2) || Object(_pointEqual_js__WEBPACK_IMPORTED_MODULE_3__[\"default\"])(point1, point2))\n            point1[2] = 1;\n        }\n        if (v !== v0) {\n          clean = 0;\n          if (v) {\n            // outside going in\n            stream.lineStart();\n            point2 = intersect(point1, point0);\n            stream.point(point2[0], point2[1]);\n          } else {\n            // inside going out\n            point2 = intersect(point0, point1);\n            stream.point(point2[0], point2[1], 2);\n            stream.lineEnd();\n          }\n          point0 = point2;\n        } else if (notHemisphere && point0 && smallRadius ^ v) {\n          var t;\n          // If the codes for two points are different, or are both zero,\n          // and there this segment intersects with the small circle.\n          if (!(c & c0) && (t = intersect(point1, point0, true))) {\n            clean = 0;\n            if (smallRadius) {\n              stream.lineStart();\n              stream.point(t[0][0], t[0][1]);\n              stream.point(t[1][0], t[1][1]);\n              stream.lineEnd();\n            } else {\n              stream.point(t[1][0], t[1][1]);\n              stream.lineEnd();\n              stream.lineStart();\n              stream.point(t[0][0], t[0][1], 3);\n            }\n          }\n        }\n        if (v && (!point0 || !Object(_pointEqual_js__WEBPACK_IMPORTED_MODULE_3__[\"default\"])(point0, point1))) {\n          stream.point(point1[0], point1[1]);\n        }\n        point0 = point1, v0 = v, c0 = c;\n      },\n      lineEnd: function() {\n        if (v0) stream.lineEnd();\n        point0 = null;\n      },\n      // Rejoin first and last segments if there were intersections and the first\n      // and last points were visible.\n      clean: function() {\n        return clean | ((v00 && v0) << 1);\n      }\n    };\n  }\n\n  // Intersects the great circle between a and b with the clip circle.\n  function intersect(a, b, two) {\n    var pa = Object(_cartesian_js__WEBPACK_IMPORTED_MODULE_0__[\"cartesian\"])(a),\n        pb = Object(_cartesian_js__WEBPACK_IMPORTED_MODULE_0__[\"cartesian\"])(b);\n\n    // We have two planes, n1.p = d1 and n2.p = d2.\n    // Find intersection line p(t) = c1 n1 + c2 n2 + t (n1 ⨯ n2).\n    var n1 = [1, 0, 0], // normal\n        n2 = Object(_cartesian_js__WEBPACK_IMPORTED_MODULE_0__[\"cartesianCross\"])(pa, pb),\n        n2n2 = Object(_cartesian_js__WEBPACK_IMPORTED_MODULE_0__[\"cartesianDot\"])(n2, n2),\n        n1n2 = n2[0], // cartesianDot(n1, n2),\n        determinant = n2n2 - n1n2 * n1n2;\n\n    // Two polar points.\n    if (!determinant) return !two && a;\n\n    var c1 =  cr * n2n2 / determinant,\n        c2 = -cr * n1n2 / determinant,\n        n1xn2 = Object(_cartesian_js__WEBPACK_IMPORTED_MODULE_0__[\"cartesianCross\"])(n1, n2),\n        A = Object(_cartesian_js__WEBPACK_IMPORTED_MODULE_0__[\"cartesianScale\"])(n1, c1),\n        B = Object(_cartesian_js__WEBPACK_IMPORTED_MODULE_0__[\"cartesianScale\"])(n2, c2);\n    Object(_cartesian_js__WEBPACK_IMPORTED_MODULE_0__[\"cartesianAddInPlace\"])(A, B);\n\n    // Solve |p(t)|^2 = 1.\n    var u = n1xn2,\n        w = Object(_cartesian_js__WEBPACK_IMPORTED_MODULE_0__[\"cartesianDot\"])(A, u),\n        uu = Object(_cartesian_js__WEBPACK_IMPORTED_MODULE_0__[\"cartesianDot\"])(u, u),\n        t2 = w * w - uu * (Object(_cartesian_js__WEBPACK_IMPORTED_MODULE_0__[\"cartesianDot\"])(A, A) - 1);\n\n    if (t2 < 0) return;\n\n    var t = Object(_math_js__WEBPACK_IMPORTED_MODULE_2__[\"sqrt\"])(t2),\n        q = Object(_cartesian_js__WEBPACK_IMPORTED_MODULE_0__[\"cartesianScale\"])(u, (-w - t) / uu);\n    Object(_cartesian_js__WEBPACK_IMPORTED_MODULE_0__[\"cartesianAddInPlace\"])(q, A);\n    q = Object(_cartesian_js__WEBPACK_IMPORTED_MODULE_0__[\"spherical\"])(q);\n\n    if (!two) return q;\n\n    // Two intersection points.\n    var lambda0 = a[0],\n        lambda1 = b[0],\n        phi0 = a[1],\n        phi1 = b[1],\n        z;\n\n    if (lambda1 < lambda0) z = lambda0, lambda0 = lambda1, lambda1 = z;\n\n    var delta = lambda1 - lambda0,\n        polar = Object(_math_js__WEBPACK_IMPORTED_MODULE_2__[\"abs\"])(delta - _math_js__WEBPACK_IMPORTED_MODULE_2__[\"pi\"]) < _math_js__WEBPACK_IMPORTED_MODULE_2__[\"epsilon\"],\n        meridian = polar || delta < _math_js__WEBPACK_IMPORTED_MODULE_2__[\"epsilon\"];\n\n    if (!polar && phi1 < phi0) z = phi0, phi0 = phi1, phi1 = z;\n\n    // Check that the first point is between a and b.\n    if (meridian\n        ? polar\n          ? phi0 + phi1 > 0 ^ q[1] < (Object(_math_js__WEBPACK_IMPORTED_MODULE_2__[\"abs\"])(q[0] - lambda0) < _math_js__WEBPACK_IMPORTED_MODULE_2__[\"epsilon\"] ? phi0 : phi1)\n          : phi0 <= q[1] && q[1] <= phi1\n        : delta > _math_js__WEBPACK_IMPORTED_MODULE_2__[\"pi\"] ^ (lambda0 <= q[0] && q[0] <= lambda1)) {\n      var q1 = Object(_cartesian_js__WEBPACK_IMPORTED_MODULE_0__[\"cartesianScale\"])(u, (-w + t) / uu);\n      Object(_cartesian_js__WEBPACK_IMPORTED_MODULE_0__[\"cartesianAddInPlace\"])(q1, A);\n      return [q, Object(_cartesian_js__WEBPACK_IMPORTED_MODULE_0__[\"spherical\"])(q1)];\n    }\n  }\n\n  // Generates a 4-bit vector representing the location of a point relative to\n  // the small circle's bounding box.\n  function code(lambda, phi) {\n    var r = smallRadius ? radius : _math_js__WEBPACK_IMPORTED_MODULE_2__[\"pi\"] - radius,\n        code = 0;\n    if (lambda < -r) code |= 1; // left\n    else if (lambda > r) code |= 2; // right\n    if (phi < -r) code |= 4; // below\n    else if (phi > r) code |= 8; // above\n    return code;\n  }\n\n  return Object(_index_js__WEBPACK_IMPORTED_MODULE_4__[\"default\"])(visible, clipLine, interpolate, smallRadius ? [0, -radius] : [-_math_js__WEBPACK_IMPORTED_MODULE_2__[\"pi\"], radius - _math_js__WEBPACK_IMPORTED_MODULE_2__[\"pi\"]]);\n});\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,[encoded data, 9548 characters]\n//# sourceURL=webpack-internal:///./node_modules/vega/node_modules/d3-geo/src/clip/circle.js\n");

/***/ }),

/***/ "./node_modules/vega/node_modules/d3-geo/src/clip/extent.js":
/*!******************************************************************!*\
  !*** ./node_modules/vega/node_modules/d3-geo/src/clip/extent.js ***!
  \******************************************************************/
/*! exports provided: default */
/***/ (function(module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _rectangle_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./rectangle.js */ \"./node_modules/vega/node_modules/d3-geo/src/clip/rectangle.js\");\n\n\n/* harmony default export */ __webpack_exports__[\"default\"] = (function() {\n  var x0 = 0,\n      y0 = 0,\n      x1 = 960,\n      y1 = 500,\n      cache,\n      cacheStream,\n      clip;\n\n  return clip = {\n    stream: function(stream) {\n      return cache && cacheStream === stream ? cache : cache = Object(_rectangle_js__WEBPACK_IMPORTED_MODULE_0__[\"default\"])(x0, y0, x1, y1)(cacheStream = stream);\n    },\n    extent: function(_) {\n      return arguments.length ? (x0 = +_[0][0], y0 = +_[0][1], x1 = +_[1][0], y1 = +_[1][1], cache = cacheStream = null, clip) : [[x0, y0], [x1, y1]];\n    }\n  };\n});\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvdmVnYS9ub2RlX21vZHVsZXMvZDMtZ2VvL3NyYy9jbGlwL2V4dGVudC5qcy5qcyIsInNvdXJjZXMiOlsid2VicGFjazovLy8uL25vZGVfbW9kdWxlcy92ZWdhL25vZGVfbW9kdWxlcy9kMy1nZW8vc3JjL2NsaXAvZXh0ZW50LmpzP2FhMDMiXSwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IGNsaXBSZWN0YW5nbGUgZnJvbSBcIi4vcmVjdGFuZ2xlLmpzXCI7XG5cbmV4cG9ydCBkZWZhdWx0IGZ1bmN0aW9uKCkge1xuICB2YXIgeDAgPSAwLFxuICAgICAgeTAgPSAwLFxuICAgICAgeDEgPSA5NjAsXG4gICAgICB5MSA9IDUwMCxcbiAgICAgIGNhY2hlLFxuICAgICAgY2FjaGVTdHJlYW0sXG4gICAgICBjbGlwO1xuXG4gIHJldHVybiBjbGlwID0ge1xuICAgIHN0cmVhbTogZnVuY3Rpb24oc3RyZWFtKSB7XG4gICAgICByZXR1cm4gY2FjaGUgJiYgY2FjaGVTdHJlYW0gPT09IHN0cmVhbSA/IGNhY2hlIDogY2FjaGUgPSBjbGlwUmVjdGFuZ2xlKHgwLCB5MCwgeDEsIHkxKShjYWNoZVN0cmVhbSA9IHN0cmVhbSk7XG4gICAgfSxcbiAgICBleHRlbnQ6IGZ1bmN0aW9uKF8pIHtcbiAgICAgIHJldHVybiBhcmd1bWVudHMubGVuZ3RoID8gKHgwID0gK19bMF1bMF0sIHkwID0gK19bMF1bMV0sIHgxID0gK19bMV1bMF0sIHkxID0gK19bMV1bMV0sIGNhY2hlID0gY2FjaGVTdHJlYW0gPSBudWxsLCBjbGlwKSA6IFtbeDAsIHkwXSwgW3gxLCB5MV1dO1xuICAgIH1cbiAgfTtcbn1cbiJdLCJtYXBwaW5ncyI6IkFBQUE7QUFBQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7Iiwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///./node_modules/vega/node_modules/d3-geo/src/clip/extent.js\n");

/***/ }),

/***/ "./node_modules/vega/node_modules/d3-geo/src/clip/index.js":
/*!*****************************************************************!*\
  !*** ./node_modules/vega/node_modules/d3-geo/src/clip/index.js ***!
  \*****************************************************************/
/*! exports provided: default */
/***/ (function(module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _buffer_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./buffer.js */ \"./node_modules/vega/node_modules/d3-geo/src/clip/buffer.js\");\n/* harmony import */ var _rejoin_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./rejoin.js */ \"./node_modules/vega/node_modules/d3-geo/src/clip/rejoin.js\");\n/* harmony import */ var _math_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ../math.js */ \"./node_modules/vega/node_modules/d3-geo/src/math.js\");\n/* harmony import */ var _polygonContains_js__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ../polygonContains.js */ \"./node_modules/vega/node_modules/d3-geo/src/polygonContains.js\");\n/* harmony import */ var d3_array__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! d3-array */ \"./node_modules/d3-array/src/index.js\");\n\n\n\n\n\n\n/* harmony default export */ __webpack_exports__[\"default\"] = (function(pointVisible, clipLine, interpolate, start) {\n  return function(sink) {\n    var line = clipLine(sink),\n        ringBuffer = Object(_buffer_js__WEBPACK_IMPORTED_MODULE_0__[\"default\"])(),\n        ringSink = clipLine(ringBuffer),\n        polygonStarted = false,\n        polygon,\n        segments,\n        ring;\n\n    var clip = {\n      point: point,\n      lineStart: lineStart,\n      lineEnd: lineEnd,\n      polygonStart: function() {\n        clip.point = pointRing;\n        clip.lineStart = ringStart;\n        clip.lineEnd = ringEnd;\n        segments = [];\n        polygon = [];\n      },\n      polygonEnd: function() {\n        clip.point = point;\n        clip.lineStart = lineStart;\n        clip.lineEnd = lineEnd;\n        segments = Object(d3_array__WEBPACK_IMPORTED_MODULE_4__[\"merge\"])(segments);\n        var startInside = Object(_polygonContains_js__WEBPACK_IMPORTED_MODULE_3__[\"default\"])(polygon, start);\n        if (segments.length) {\n          if (!polygonStarted) sink.polygonStart(), polygonStarted = true;\n          Object(_rejoin_js__WEBPACK_IMPORTED_MODULE_1__[\"default\"])(segments, compareIntersection, startInside, interpolate, sink);\n        } else if (startInside) {\n          if (!polygonStarted) sink.polygonStart(), polygonStarted = true;\n          sink.lineStart();\n          interpolate(null, null, 1, sink);\n          sink.lineEnd();\n        }\n        if (polygonStarted) sink.polygonEnd(), polygonStarted = false;\n        segments = polygon = null;\n      },\n      sphere: function() {\n        sink.polygonStart();\n        sink.lineStart();\n        interpolate(null, null, 1, sink);\n        sink.lineEnd();\n        sink.polygonEnd();\n      }\n    };\n\n    function point(lambda, phi) {\n      if (pointVisible(lambda, phi)) sink.point(lambda, phi);\n    }\n\n    function pointLine(lambda, phi) {\n      line.point(lambda, phi);\n    }\n\n    function lineStart() {\n      clip.point = pointLine;\n      line.lineStart();\n    }\n\n    function lineEnd() {\n      clip.point = point;\n      line.lineEnd();\n    }\n\n    function pointRing(lambda, phi) {\n      ring.push([lambda, phi]);\n      ringSink.point(lambda, phi);\n    }\n\n    function ringStart() {\n      ringSink.lineStart();\n      ring = [];\n    }\n\n    function ringEnd() {\n      pointRing(ring[0][0], ring[0][1]);\n      ringSink.lineEnd();\n\n      var clean = ringSink.clean(),\n          ringSegments = ringBuffer.result(),\n          i, n = ringSegments.length, m,\n          segment,\n          point;\n\n      ring.pop();\n      polygon.push(ring);\n      ring = null;\n\n      if (!n) return;\n\n      // No intersections.\n      if (clean & 1) {\n        segment = ringSegments[0];\n        if ((m = segment.length - 1) > 0) {\n          if (!polygonStarted) sink.polygonStart(), polygonStarted = true;\n          sink.lineStart();\n          for (i = 0; i < m; ++i) sink.point((point = segment[i])[0], point[1]);\n          sink.lineEnd();\n        }\n        return;\n      }\n\n      // Rejoin connected segments.\n      // TODO reuse ringBuffer.rejoin()?\n      if (n > 1 && clean & 2) ringSegments.push(ringSegments.pop().concat(ringSegments.shift()));\n\n      segments.push(ringSegments.filter(validSegment));\n    }\n\n    return clip;\n  };\n});\n\nfunction validSegment(segment) {\n  return segment.length > 1;\n}\n\n// Intersections are sorted along the clip edge. For both antimeridian cutting\n// and circle clipping, the same comparison is used.\nfunction compareIntersection(a, b) {\n  return ((a = a.x)[0] < 0 ? a[1] - _math_js__WEBPACK_IMPORTED_MODULE_2__[\"halfPi\"] - _math_js__WEBPACK_IMPORTED_MODULE_2__[\"epsilon\"] : _math_js__WEBPACK_IMPORTED_MODULE_2__[\"halfPi\"] - a[1])\n       - ((b = b.x)[0] < 0 ? b[1] - _math_js__WEBPACK_IMPORTED_MODULE_2__[\"halfPi\"] - _math_js__WEBPACK_IMPORTED_MODULE_2__[\"epsilon\"] : _math_js__WEBPACK_IMPORTED_MODULE_2__[\"halfPi\"] - b[1]);\n}\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,[encoded data, 6196 characters]\n//# sourceURL=webpack-internal:///./node_modules/vega/node_modules/d3-geo/src/clip/index.js\n");

/***/ }),

/***/ "./node_modules/vega/node_modules/d3-geo/src/clip/line.js":
/*!****************************************************************!*\
  !*** ./node_modules/vega/node_modules/d3-geo/src/clip/line.js ***!
  \****************************************************************/
/*! exports provided: default */
/***/ (function(module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony default export */ __webpack_exports__[\"default\"] = (function(a, b, x0, y0, x1, y1) {\n  var ax = a[0],\n      ay = a[1],\n      bx = b[0],\n      by = b[1],\n      t0 = 0,\n      t1 = 1,\n      dx = bx - ax,\n      dy = by - ay,\n      r;\n\n  r = x0 - ax;\n  if (!dx && r > 0) return;\n  r /= dx;\n  if (dx < 0) {\n    if (r < t0) return;\n    if (r < t1) t1 = r;\n  } else if (dx > 0) {\n    if (r > t1) return;\n    if (r > t0) t0 = r;\n  }\n\n  r = x1 - ax;\n  if (!dx && r < 0) return;\n  r /= dx;\n  if (dx < 0) {\n    if (r > t1) return;\n    if (r > t0) t0 = r;\n  } else if (dx > 0) {\n    if (r < t0) return;\n    if (r < t1) t1 = r;\n  }\n\n  r = y0 - ay;\n  if (!dy && r > 0) return;\n  r /= dy;\n  if (dy < 0) {\n    if (r < t0) return;\n    if (r < t1) t1 = r;\n  } else if (dy > 0) {\n    if (r > t1) return;\n    if (r > t0) t0 = r;\n  }\n\n  r = y1 - ay;\n  if (!dy && r < 0) return;\n  r /= dy;\n  if (dy < 0) {\n    if (r > t1) return;\n    if (r > t0) t0 = r;\n  } else if (dy > 0) {\n    if (r < t0) return;\n    if (r < t1) t1 = r;\n  }\n\n  if (t0 > 0) a[0] = ax + t0 * dx, a[1] = ay + t0 * dy;\n  if (t1 < 1) b[0] = ax + t1 * dx, b[1] = ay + t1 * dy;\n  return true;\n});\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvdmVnYS9ub2RlX21vZHVsZXMvZDMtZ2VvL3NyYy9jbGlwL2xpbmUuanMuanMiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvdmVnYS9ub2RlX21vZHVsZXMvZDMtZ2VvL3NyYy9jbGlwL2xpbmUuanM/NWM2NCJdLCJzb3VyY2VzQ29udGVudCI6WyJleHBvcnQgZGVmYXVsdCBmdW5jdGlvbihhLCBiLCB4MCwgeTAsIHgxLCB5MSkge1xuICB2YXIgYXggPSBhWzBdLFxuICAgICAgYXkgPSBhWzFdLFxuICAgICAgYnggPSBiWzBdLFxuICAgICAgYnkgPSBiWzFdLFxuICAgICAgdDAgPSAwLFxuICAgICAgdDEgPSAxLFxuICAgICAgZHggPSBieCAtIGF4LFxuICAgICAgZHkgPSBieSAtIGF5LFxuICAgICAgcjtcblxuICByID0geDAgLSBheDtcbiAgaWYgKCFkeCAmJiByID4gMCkgcmV0dXJuO1xuICByIC89IGR4O1xuICBpZiAoZHggPCAwKSB7XG4gICAgaWYgKHIgPCB0MCkgcmV0dXJuO1xuICAgIGlmIChyIDwgdDEpIHQxID0gcjtcbiAgfSBlbHNlIGlmIChkeCA+IDApIHtcbiAgICBpZiAociA+IHQxKSByZXR1cm47XG4gICAgaWYgKHIgPiB0MCkgdDAgPSByO1xuICB9XG5cbiAgciA9IHgxIC0gYXg7XG4gIGlmICghZHggJiYgciA8IDApIHJldHVybjtcbiAgciAvPSBkeDtcbiAgaWYgKGR4IDwgMCkge1xuICAgIGlmIChyID4gdDEpIHJldHVybjtcbiAgICBpZiAociA+IHQwKSB0MCA9IHI7XG4gIH0gZWxzZSBpZiAoZHggPiAwKSB7XG4gICAgaWYgKHIgPCB0MCkgcmV0dXJuO1xuICAgIGlmIChyIDwgdDEpIHQxID0gcjtcbiAgfVxuXG4gIHIgPSB5MCAtIGF5O1xuICBpZiAoIWR5ICYmIHIgPiAwKSByZXR1cm47XG4gIHIgLz0gZHk7XG4gIGlmIChkeSA8IDApIHtcbiAgICBpZiAociA8IHQwKSByZXR1cm47XG4gICAgaWYgKHIgPCB0MSkgdDEgPSByO1xuICB9IGVsc2UgaWYgKGR5ID4gMCkge1xuICAgIGlmIChyID4gdDEpIHJldHVybjtcbiAgICBpZiAociA+IHQwKSB0MCA9IHI7XG4gIH1cblxuICByID0geTEgLSBheTtcbiAgaWYgKCFkeSAmJiByIDwgMCkgcmV0dXJuO1xuICByIC89IGR5O1xuICBpZiAoZHkgPCAwKSB7XG4gICAgaWYgKHIgPiB0MSkgcmV0dXJuO1xuICAgIGlmIChyID4gdDApIHQwID0gcjtcbiAgfSBlbHNlIGlmIChkeSA+IDApIHtcbiAgICBpZiAociA8IHQwKSByZXR1cm47XG4gICAgaWYgKHIgPCB0MSkgdDEgPSByO1xuICB9XG5cbiAgaWYgKHQwID4gMCkgYVswXSA9IGF4ICsgdDAgKiBkeCwgYVsxXSA9IGF5ICsgdDAgKiBkeTtcbiAgaWYgKHQxIDwgMSkgYlswXSA9IGF4ICsgdDEgKiBkeCwgYlsxXSA9IGF5ICsgdDEgKiBkeTtcbiAgcmV0dXJuIHRydWU7XG59XG4iXSwibWFwcGluZ3MiOiJBQUFBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTsiLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///./node_modules/vega/node_modules/d3-geo/src/clip/line.js\n");

/***/ }),

/***/ "./node_modules/vega/node_modules/d3-geo/src/clip/rectangle.js":
/*!*********************************************************************!*\
  !*** ./node_modules/vega/node_modules/d3-geo/src/clip/rectangle.js ***!
  \*********************************************************************/
/*! exports provided: default */
/***/ (function(module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"default\", function() { return clipRectangle; });\n/* harmony import */ var _math_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../math.js */ \"./node_modules/vega/node_modules/d3-geo/src/math.js\");\n/* harmony import */ var _buffer_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./buffer.js */ \"./node_modules/vega/node_modules/d3-geo/src/clip/buffer.js\");\n/* harmony import */ var _line_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./line.js */ \"./node_modules/vega/node_modules/d3-geo/src/clip/line.js\");\n/* harmony import */ var _rejoin_js__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ./rejoin.js */ \"./node_modules/vega/node_modules/d3-geo/src/clip/rejoin.js\");\n/* harmony import */ var d3_array__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! d3-array */ \"./node_modules/d3-array/src/index.js\");\n\n\n\n\n\n\nvar clipMax = 1e9, clipMin = -clipMax;\n\n// TODO Use d3-polygon’s polygonContains here for the ring check?\n// TODO Eliminate duplicate buffering in clipBuffer and polygon.push?\n\nfunction clipRectangle(x0, y0, x1, y1) {\n\n  function visible(x, y) {\n    return x0 <= x && x <= x1 && y0 <= y && y <= y1;\n  }\n\n  function interpolate(from, to, direction, stream) {\n    var a = 0, a1 = 0;\n    if (from == null\n        || (a = corner(from, direction)) !== (a1 = corner(to, direction))\n        || comparePoint(from, to) < 0 ^ direction > 0) {\n      do stream.point(a === 0 || a === 3 ? x0 : x1, a > 1 ? y1 : y0);\n      while ((a = (a + direction + 4) % 4) !== a1);\n    } else {\n      stream.point(to[0], to[1]);\n    }\n  }\n\n  function corner(p, direction) {\n    return Object(_math_js__WEBPACK_IMPORTED_MODULE_0__[\"abs\"])(p[0] - x0) < _math_js__WEBPACK_IMPORTED_MODULE_0__[\"epsilon\"] ? direction > 0 ? 0 : 3\n        : Object(_math_js__WEBPACK_IMPORTED_MODULE_0__[\"abs\"])(p[0] - x1) < _math_js__WEBPACK_IMPORTED_MODULE_0__[\"epsilon\"] ? direction > 0 ? 2 : 1\n        : Object(_math_js__WEBPACK_IMPORTED_MODULE_0__[\"abs\"])(p[1] - y0) < _math_js__WEBPACK_IMPORTED_MODULE_0__[\"epsilon\"] ? direction > 0 ? 1 : 0\n        : direction > 0 ? 3 : 2; // abs(p[1] - y1) < epsilon\n  }\n\n  function compareIntersection(a, b) {\n    return comparePoint(a.x, b.x);\n  }\n\n  function comparePoint(a, b) {\n    var ca = corner(a, 1),\n        cb = corner(b, 1);\n    return ca !== cb ? ca - cb\n        : ca === 0 ? b[1] - a[1]\n        : ca === 1 ? a[0] - b[0]\n        : ca === 2 ? a[1] - b[1]\n        : b[0] - a[0];\n  }\n\n  return function(stream) {\n    var activeStream = stream,\n        bufferStream = Object(_buffer_js__WEBPACK_IMPORTED_MODULE_1__[\"default\"])(),\n        segments,\n        polygon,\n        ring,\n        x__, y__, v__, // first point\n        x_, y_, v_, // previous point\n        first,\n        clean;\n\n    var clipStream = {\n      point: point,\n      lineStart: lineStart,\n      lineEnd: lineEnd,\n      polygonStart: polygonStart,\n      polygonEnd: polygonEnd\n    };\n\n    function point(x, y) {\n      if (visible(x, y)) activeStream.point(x, y);\n    }\n\n    function polygonInside() {\n      var winding = 0;\n\n      for (var i = 0, n = polygon.length; i < n; ++i) {\n        for (var ring = polygon[i], j = 1, m = ring.length, point = ring[0], a0, a1, b0 = point[0], b1 = point[1]; j < m; ++j) {\n          a0 = b0, a1 = b1, point = ring[j], b0 = point[0], b1 = point[1];\n          if (a1 <= y1) { if (b1 > y1 && (b0 - a0) * (y1 - a1) > (b1 - a1) * (x0 - a0)) ++winding; }\n          else { if (b1 <= y1 && (b0 - a0) * (y1 - a1) < (b1 - a1) * (x0 - a0)) --winding; }\n        }\n      }\n\n      return winding;\n    }\n\n    // Buffer geometry within a polygon and then clip it en masse.\n    function polygonStart() {\n      activeStream = bufferStream, segments = [], polygon = [], clean = true;\n    }\n\n    function polygonEnd() {\n      var startInside = polygonInside(),\n          cleanInside = clean && startInside,\n          visible = (segments = Object(d3_array__WEBPACK_IMPORTED_MODULE_4__[\"merge\"])(segments)).length;\n      if (cleanInside || visible) {\n        stream.polygonStart();\n        if (cleanInside) {\n          stream.lineStart();\n          interpolate(null, null, 1, stream);\n          stream.lineEnd();\n        }\n        if (visible) {\n          Object(_rejoin_js__WEBPACK_IMPORTED_MODULE_3__[\"default\"])(segments, compareIntersection, startInside, interpolate, stream);\n        }\n        stream.polygonEnd();\n      }\n      activeStream = stream, segments = polygon = ring = null;\n    }\n\n    function lineStart() {\n      clipStream.point = linePoint;\n      if (polygon) polygon.push(ring = []);\n      first = true;\n      v_ = false;\n      x_ = y_ = NaN;\n    }\n\n    // TODO rather than special-case polygons, simply handle them separately.\n    // Ideally, coincident intersection points should be jittered to avoid\n    // clipping issues.\n    function lineEnd() {\n      if (segments) {\n        linePoint(x__, y__);\n        if (v__ && v_) bufferStream.rejoin();\n        segments.push(bufferStream.result());\n      }\n      clipStream.point = point;\n      if (v_) activeStream.lineEnd();\n    }\n\n    function linePoint(x, y) {\n      var v = visible(x, y);\n      if (polygon) ring.push([x, y]);\n      if (first) {\n        x__ = x, y__ = y, v__ = v;\n        first = false;\n        if (v) {\n          activeStream.lineStart();\n          activeStream.point(x, y);\n        }\n      } else {\n        if (v && v_) activeStream.point(x, y);\n        else {\n          var a = [x_ = Math.max(clipMin, Math.min(clipMax, x_)), y_ = Math.max(clipMin, Math.min(clipMax, y_))],\n              b = [x = Math.max(clipMin, Math.min(clipMax, x)), y = Math.max(clipMin, Math.min(clipMax, y))];\n          if (Object(_line_js__WEBPACK_IMPORTED_MODULE_2__[\"default\"])(a, b, x0, y0, x1, y1)) {\n            if (!v_) {\n              activeStream.lineStart();\n              activeStream.point(a[0], a[1]);\n            }\n            activeStream.point(b[0], b[1]);\n            if (!v) activeStream.lineEnd();\n            clean = false;\n          } else if (v) {\n            activeStream.lineStart();\n            activeStream.point(x, y);\n            clean = false;\n          }\n        }\n      }\n      x_ = x, y_ = y, v_ = v;\n    }\n\n    return clipStream;\n  };\n}\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,[encoded data, 8452 characters]\n//# sourceURL=webpack-internal:///./node_modules/vega/node_modules/d3-geo/src/clip/rectangle.js\n");

/***/ }),

/***/ "./node_modules/vega/node_modules/d3-geo/src/clip/rejoin.js":
/*!******************************************************************!*\
  !*** ./node_modules/vega/node_modules/d3-geo/src/clip/rejoin.js ***!
  \******************************************************************/
/*! exports provided: default */
/***/ (function(module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _pointEqual_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../pointEqual.js */ \"./node_modules/vega/node_modules/d3-geo/src/pointEqual.js\");\n/* harmony import */ var _math_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../math.js */ \"./node_modules/vega/node_modules/d3-geo/src/math.js\");\n\n\n\nfunction Intersection(point, points, other, entry) {\n  this.x = point;\n  this.z = points;\n  this.o = other; // another intersection\n  this.e = entry; // is an entry?\n  this.v = false; // visited\n  this.n = this.p = null; // next & previous\n}\n\n// A generalized polygon clipping algorithm: given a polygon that has been cut\n// into its visible line segments, and rejoins the segments by interpolating\n// along the clip edge.\n/* harmony default export */ __webpack_exports__[\"default\"] = (function(segments, compareIntersection, startInside, interpolate, stream) {\n  var subject = [],\n      clip = [],\n      i,\n      n;\n\n  segments.forEach(function(segment) {\n    if ((n = segment.length - 1) <= 0) return;\n    var n, p0 = segment[0], p1 = segment[n], x;\n\n    if (Object(_pointEqual_js__WEBPACK_IMPORTED_MODULE_0__[\"default\"])(p0, p1)) {\n      if (!p0[2] && !p1[2]) {\n        stream.lineStart();\n        for (i = 0; i < n; ++i) stream.point((p0 = segment[i])[0], p0[1]);\n        stream.lineEnd();\n        return;\n      }\n      // handle degenerate cases by moving the point\n      p1[0] += 2 * _math_js__WEBPACK_IMPORTED_MODULE_1__[\"epsilon\"];\n    }\n\n    subject.push(x = new Intersection(p0, segment, null, true));\n    clip.push(x.o = new Intersection(p0, null, x, false));\n    subject.push(x = new Intersection(p1, segment, null, false));\n    clip.push(x.o = new Intersection(p1, null, x, true));\n  });\n\n  if (!subject.length) return;\n\n  clip.sort(compareIntersection);\n  link(subject);\n  link(clip);\n\n  for (i = 0, n = clip.length; i < n; ++i) {\n    clip[i].e = startInside = !startInside;\n  }\n\n  var start = subject[0],\n      points,\n      point;\n\n  while (1) {\n    // Find first unvisited intersection.\n    var current = start,\n        isSubject = true;\n    while (current.v) if ((current = current.n) === start) return;\n    points = current.z;\n    stream.lineStart();\n    do {\n      current.v = current.o.v = true;\n      if (current.e) {\n        if (isSubject) {\n          for (i = 0, n = points.length; i < n; ++i) stream.point((point = points[i])[0], point[1]);\n        } else {\n          interpolate(current.x, current.n.x, 1, stream);\n        }\n        current = current.n;\n      } else {\n        if (isSubject) {\n          points = current.p.z;\n          for (i = points.length - 1; i >= 0; --i) stream.point((point = points[i])[0], point[1]);\n        } else {\n          interpolate(current.x, current.p.x, -1, stream);\n        }\n        current = current.p;\n      }\n      current = current.o;\n      points = current.z;\n      isSubject = !isSubject;\n    } while (!current.v);\n    stream.lineEnd();\n  }\n});\n\nfunction link(array) {\n  if (!(n = array.length)) return;\n  var n,\n      i = 0,\n      a = array[0],\n      b;\n  while (++i < n) {\n    a.n = b = array[i];\n    b.p = a;\n    a = b;\n  }\n  a.n = b = array[0];\n  b.p = a;\n}\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,[encoded data, 4840 characters]\n//# sourceURL=webpack-internal:///./node_modules/vega/node_modules/d3-geo/src/clip/rejoin.js\n");

/***/ }),

/***/ "./node_modules/vega/node_modules/d3-geo/src/compose.js":
/*!**************************************************************!*\
  !*** ./node_modules/vega/node_modules/d3-geo/src/compose.js ***!
  \**************************************************************/
/*! exports provided: default */
/***/ (function(module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony default export */ __webpack_exports__[\"default\"] = (function(a, b) {\n\n  function compose(x, y) {\n    return x = a(x, y), b(x[0], x[1]);\n  }\n\n  if (a.invert && b.invert) compose.invert = function(x, y) {\n    return x = b.invert(x, y), x && a.invert(x[0], x[1]);\n  };\n\n  return compose;\n});\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvdmVnYS9ub2RlX21vZHVsZXMvZDMtZ2VvL3NyYy9jb21wb3NlLmpzLmpzIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL3ZlZ2Evbm9kZV9tb2R1bGVzL2QzLWdlby9zcmMvY29tcG9zZS5qcz85ZmQ1Il0sInNvdXJjZXNDb250ZW50IjpbImV4cG9ydCBkZWZhdWx0IGZ1bmN0aW9uKGEsIGIpIHtcblxuICBmdW5jdGlvbiBjb21wb3NlKHgsIHkpIHtcbiAgICByZXR1cm4geCA9IGEoeCwgeSksIGIoeFswXSwgeFsxXSk7XG4gIH1cblxuICBpZiAoYS5pbnZlcnQgJiYgYi5pbnZlcnQpIGNvbXBvc2UuaW52ZXJ0ID0gZnVuY3Rpb24oeCwgeSkge1xuICAgIHJldHVybiB4ID0gYi5pbnZlcnQoeCwgeSksIHggJiYgYS5pbnZlcnQoeFswXSwgeFsxXSk7XG4gIH07XG5cbiAgcmV0dXJuIGNvbXBvc2U7XG59XG4iXSwibWFwcGluZ3MiOiJBQUFBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOyIsInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///./node_modules/vega/node_modules/d3-geo/src/compose.js\n");

/***/ }),

/***/ "./node_modules/vega/node_modules/d3-geo/src/constant.js":
/*!***************************************************************!*\
  !*** ./node_modules/vega/node_modules/d3-geo/src/constant.js ***!
  \***************************************************************/
/*! exports provided: default */
/***/ (function(module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony default export */ __webpack_exports__[\"default\"] = (function(x) {\n  return function() {\n    return x;\n  };\n});\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvdmVnYS9ub2RlX21vZHVsZXMvZDMtZ2VvL3NyYy9jb25zdGFudC5qcy5qcyIsInNvdXJjZXMiOlsid2VicGFjazovLy8uL25vZGVfbW9kdWxlcy92ZWdhL25vZGVfbW9kdWxlcy9kMy1nZW8vc3JjL2NvbnN0YW50LmpzPzA2NTciXSwic291cmNlc0NvbnRlbnQiOlsiZXhwb3J0IGRlZmF1bHQgZnVuY3Rpb24oeCkge1xuICByZXR1cm4gZnVuY3Rpb24oKSB7XG4gICAgcmV0dXJuIHg7XG4gIH07XG59XG4iXSwibWFwcGluZ3MiOiJBQUFBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTsiLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///./node_modules/vega/node_modules/d3-geo/src/constant.js\n");

/***/ }),

/***/ "./node_modules/vega/node_modules/d3-geo/src/contains.js":
/*!***************************************************************!*\
  !*** ./node_modules/vega/node_modules/d3-geo/src/contains.js ***!
  \***************************************************************/
/*! exports provided: default */
/***/ (function(module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _polygonContains_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./polygonContains.js */ \"./node_modules/vega/node_modules/d3-geo/src/polygonContains.js\");\n/* harmony import */ var _distance_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./distance.js */ \"./node_modules/vega/node_modules/d3-geo/src/distance.js\");\n/* harmony import */ var _math_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./math.js */ \"./node_modules/vega/node_modules/d3-geo/src/math.js\");\n\n\n\n\nvar containsObjectType = {\n  Feature: function(object, point) {\n    return containsGeometry(object.geometry, point);\n  },\n  FeatureCollection: function(object, point) {\n    var features = object.features, i = -1, n = features.length;\n    while (++i < n) if (containsGeometry(features[i].geometry, point)) return true;\n    return false;\n  }\n};\n\nvar containsGeometryType = {\n  Sphere: function() {\n    return true;\n  },\n  Point: function(object, point) {\n    return containsPoint(object.coordinates, point);\n  },\n  MultiPoint: function(object, point) {\n    var coordinates = object.coordinates, i = -1, n = coordinates.length;\n    while (++i < n) if (containsPoint(coordinates[i], point)) return true;\n    return false;\n  },\n  LineString: function(object, point) {\n    return containsLine(object.coordinates, point);\n  },\n  MultiLineString: function(object, point) {\n    var coordinates = object.coordinates, i = -1, n = coordinates.length;\n    while (++i < n) if (containsLine(coordinates[i], point)) return true;\n    return false;\n  },\n  Polygon: function(object, point) {\n    return containsPolygon(object.coordinates, point);\n  },\n  MultiPolygon: function(object, point) {\n    var coordinates = object.coordinates, i = -1, n = coordinates.length;\n    while (++i < n) if (containsPolygon(coordinates[i], point)) return true;\n    return false;\n  },\n  GeometryCollection: function(object, point) {\n    var geometries = object.geometries, i = -1, n = geometries.length;\n    while (++i < n) if (containsGeometry(geometries[i], point)) return true;\n    return false;\n  }\n};\n\nfunction containsGeometry(geometry, point) {\n  return geometry && containsGeometryType.hasOwnProperty(geometry.type)\n      ? containsGeometryType[geometry.type](geometry, point)\n      : false;\n}\n\nfunction containsPoint(coordinates, point) {\n  return Object(_distance_js__WEBPACK_IMPORTED_MODULE_1__[\"default\"])(coordinates, point) === 0;\n}\n\nfunction containsLine(coordinates, point) {\n  var ao, bo, ab;\n  for (var i = 0, n = coordinates.length; i < n; i++) {\n    bo = Object(_distance_js__WEBPACK_IMPORTED_MODULE_1__[\"default\"])(coordinates[i], point);\n    if (bo === 0) return true;\n    if (i > 0) {\n      ab = Object(_distance_js__WEBPACK_IMPORTED_MODULE_1__[\"default\"])(coordinates[i], coordinates[i - 1]);\n      if (\n        ab > 0 &&\n        ao <= ab &&\n        bo <= ab &&\n        (ao + bo - ab) * (1 - Math.pow((ao - bo) / ab, 2)) < _math_js__WEBPACK_IMPORTED_MODULE_2__[\"epsilon2\"] * ab\n      )\n        return true;\n    }\n    ao = bo;\n  }\n  return false;\n}\n\nfunction containsPolygon(coordinates, point) {\n  return !!Object(_polygonContains_js__WEBPACK_IMPORTED_MODULE_0__[\"default\"])(coordinates.map(ringRadians), pointRadians(point));\n}\n\nfunction ringRadians(ring) {\n  return ring = ring.map(pointRadians), ring.pop(), ring;\n}\n\nfunction pointRadians(point) {\n  return [point[0] * _math_js__WEBPACK_IMPORTED_MODULE_2__[\"radians\"], point[1] * _math_js__WEBPACK_IMPORTED_MODULE_2__[\"radians\"]];\n}\n\n/* harmony default export */ __webpack_exports__[\"default\"] = (function(object, point) {\n  return (object && containsObjectType.hasOwnProperty(object.type)\n      ? containsObjectType[object.type]\n      : containsGeometry)(object, point);\n});\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,[encoded data, 5100 characters]\n//# sourceURL=webpack-internal:///./node_modules/vega/node_modules/d3-geo/src/contains.js\n");

/***/ }),

/***/ "./node_modules/vega/node_modules/d3-geo/src/distance.js":
/*!***************************************************************!*\
  !*** ./node_modules/vega/node_modules/d3-geo/src/distance.js ***!
  \***************************************************************/
/*! exports provided: default */
/***/ (function(module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _length_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./length.js */ \"./node_modules/vega/node_modules/d3-geo/src/length.js\");\n\n\nvar coordinates = [null, null],\n    object = {type: \"LineString\", coordinates: coordinates};\n\n/* harmony default export */ __webpack_exports__[\"default\"] = (function(a, b) {\n  coordinates[0] = a;\n  coordinates[1] = b;\n  return Object(_length_js__WEBPACK_IMPORTED_MODULE_0__[\"default\"])(object);\n});\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvdmVnYS9ub2RlX21vZHVsZXMvZDMtZ2VvL3NyYy9kaXN0YW5jZS5qcy5qcyIsInNvdXJjZXMiOlsid2VicGFjazovLy8uL25vZGVfbW9kdWxlcy92ZWdhL25vZGVfbW9kdWxlcy9kMy1nZW8vc3JjL2Rpc3RhbmNlLmpzP2M2NGEiXSwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IGxlbmd0aCBmcm9tIFwiLi9sZW5ndGguanNcIjtcblxudmFyIGNvb3JkaW5hdGVzID0gW251bGwsIG51bGxdLFxuICAgIG9iamVjdCA9IHt0eXBlOiBcIkxpbmVTdHJpbmdcIiwgY29vcmRpbmF0ZXM6IGNvb3JkaW5hdGVzfTtcblxuZXhwb3J0IGRlZmF1bHQgZnVuY3Rpb24oYSwgYikge1xuICBjb29yZGluYXRlc1swXSA9IGE7XG4gIGNvb3JkaW5hdGVzWzFdID0gYjtcbiAgcmV0dXJuIGxlbmd0aChvYmplY3QpO1xufVxuIl0sIm1hcHBpbmdzIjoiQUFBQTtBQUFBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7Iiwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///./node_modules/vega/node_modules/d3-geo/src/distance.js\n");

/***/ }),

/***/ "./node_modules/vega/node_modules/d3-geo/src/graticule.js":
/*!****************************************************************!*\
  !*** ./node_modules/vega/node_modules/d3-geo/src/graticule.js ***!
  \****************************************************************/
/*! exports provided: default, graticule10 */
/***/ (function(module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"default\", function() { return graticule; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"graticule10\", function() { return graticule10; });\n/* harmony import */ var d3_array__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! d3-array */ \"./node_modules/d3-array/src/index.js\");\n/* harmony import */ var _math_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./math.js */ \"./node_modules/vega/node_modules/d3-geo/src/math.js\");\n\n\n\nfunction graticuleX(y0, y1, dy) {\n  var y = Object(d3_array__WEBPACK_IMPORTED_MODULE_0__[\"range\"])(y0, y1 - _math_js__WEBPACK_IMPORTED_MODULE_1__[\"epsilon\"], dy).concat(y1);\n  return function(x) { return y.map(function(y) { return [x, y]; }); };\n}\n\nfunction graticuleY(x0, x1, dx) {\n  var x = Object(d3_array__WEBPACK_IMPORTED_MODULE_0__[\"range\"])(x0, x1 - _math_js__WEBPACK_IMPORTED_MODULE_1__[\"epsilon\"], dx).concat(x1);\n  return function(y) { return x.map(function(x) { return [x, y]; }); };\n}\n\nfunction graticule() {\n  var x1, x0, X1, X0,\n      y1, y0, Y1, Y0,\n      dx = 10, dy = dx, DX = 90, DY = 360,\n      x, y, X, Y,\n      precision = 2.5;\n\n  function graticule() {\n    return {type: \"MultiLineString\", coordinates: lines()};\n  }\n\n  function lines() {\n    return Object(d3_array__WEBPACK_IMPORTED_MODULE_0__[\"range\"])(Object(_math_js__WEBPACK_IMPORTED_MODULE_1__[\"ceil\"])(X0 / DX) * DX, X1, DX).map(X)\n        .concat(Object(d3_array__WEBPACK_IMPORTED_MODULE_0__[\"range\"])(Object(_math_js__WEBPACK_IMPORTED_MODULE_1__[\"ceil\"])(Y0 / DY) * DY, Y1, DY).map(Y))\n        .concat(Object(d3_array__WEBPACK_IMPORTED_MODULE_0__[\"range\"])(Object(_math_js__WEBPACK_IMPORTED_MODULE_1__[\"ceil\"])(x0 / dx) * dx, x1, dx).filter(function(x) { return Object(_math_js__WEBPACK_IMPORTED_MODULE_1__[\"abs\"])(x % DX) > _math_js__WEBPACK_IMPORTED_MODULE_1__[\"epsilon\"]; }).map(x))\n        .concat(Object(d3_array__WEBPACK_IMPORTED_MODULE_0__[\"range\"])(Object(_math_js__WEBPACK_IMPORTED_MODULE_1__[\"ceil\"])(y0 / dy) * dy, y1, dy).filter(function(y) { return Object(_math_js__WEBPACK_IMPORTED_MODULE_1__[\"abs\"])(y % DY) > _math_js__WEBPACK_IMPORTED_MODULE_1__[\"epsilon\"]; }).map(y));\n  }\n\n  graticule.lines = function() {\n    return lines().map(function(coordinates) { return {type: \"LineString\", coordinates: coordinates}; });\n  };\n\n  graticule.outline = function() {\n    return {\n      type: \"Polygon\",\n      coordinates: [\n        X(X0).concat(\n        Y(Y1).slice(1),\n        X(X1).reverse().slice(1),\n        Y(Y0).reverse().slice(1))\n      ]\n    };\n  };\n\n  graticule.extent = function(_) {\n    if (!arguments.length) return graticule.extentMinor();\n    return graticule.extentMajor(_).extentMinor(_);\n  };\n\n  graticule.extentMajor = function(_) {\n    if (!arguments.length) return [[X0, Y0], [X1, Y1]];\n    X0 = +_[0][0], X1 = +_[1][0];\n    Y0 = +_[0][1], Y1 = +_[1][1];\n    if (X0 > X1) _ = X0, X0 = X1, X1 = _;\n    if (Y0 > Y1) _ = Y0, Y0 = Y1, Y1 = _;\n    return graticule.precision(precision);\n  };\n\n  graticule.extentMinor = function(_) {\n    if (!arguments.length) return [[x0, y0], [x1, y1]];\n    x0 = +_[0][0], x1 = +_[1][0];\n    y0 = +_[0][1], y1 = +_[1][1];\n    if (x0 > x1) _ = x0, x0 = x1, x1 = _;\n    if (y0 > y1) _ = y0, y0 = y1, y1 = _;\n    return graticule.precision(precision);\n  };\n\n  graticule.step = function(_) {\n    if (!arguments.length) return graticule.stepMinor();\n    return graticule.stepMajor(_).stepMinor(_);\n  };\n\n  graticule.stepMajor = function(_) {\n    if (!arguments.length) return [DX, DY];\n    DX = +_[0], DY = +_[1];\n    return graticule;\n  };\n\n  graticule.stepMinor = function(_) {\n    if (!arguments.length) return [dx, dy];\n    dx = +_[0], dy = +_[1];\n    return graticule;\n  };\n\n  graticule.precision = function(_) {\n    if (!arguments.length) return precision;\n    precision = +_;\n    x = graticuleX(y0, y1, 90);\n    y = graticuleY(x0, x1, precision);\n    X = graticuleX(Y0, Y1, 90);\n    Y = graticuleY(X0, X1, precision);\n    return graticule;\n  };\n\n  return graticule\n      .extentMajor([[-180, -90 + _math_js__WEBPACK_IMPORTED_MODULE_1__[\"epsilon\"]], [180, 90 - _math_js__WEBPACK_IMPORTED_MODULE_1__[\"epsilon\"]]])\n      .extentMinor([[-180, -80 - _math_js__WEBPACK_IMPORTED_MODULE_1__[\"epsilon\"]], [180, 80 + _math_js__WEBPACK_IMPORTED_MODULE_1__[\"epsilon\"]]]);\n}\n\nfunction graticule10() {\n  return graticule()();\n}\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,[encoded data, 5232 characters]\n//# sourceURL=webpack-internal:///./node_modules/vega/node_modules/d3-geo/src/graticule.js\n");

/***/ }),

/***/ "./node_modules/vega/node_modules/d3-geo/src/identity.js":
/*!***************************************************************!*\
  !*** ./node_modules/vega/node_modules/d3-geo/src/identity.js ***!
  \***************************************************************/
/*! exports provided: default */
/***/ (function(module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony default export */ __webpack_exports__[\"default\"] = (x => x);\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvdmVnYS9ub2RlX21vZHVsZXMvZDMtZ2VvL3NyYy9pZGVudGl0eS5qcy5qcyIsInNvdXJjZXMiOlsid2VicGFjazovLy8uL25vZGVfbW9kdWxlcy92ZWdhL25vZGVfbW9kdWxlcy9kMy1nZW8vc3JjL2lkZW50aXR5LmpzPzFjMTYiXSwic291cmNlc0NvbnRlbnQiOlsiZXhwb3J0IGRlZmF1bHQgeCA9PiB4O1xuIl0sIm1hcHBpbmdzIjoiQUFBQTtBQUFBOyIsInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///./node_modules/vega/node_modules/d3-geo/src/identity.js\n");

/***/ }),

/***/ "./node_modules/vega/node_modules/d3-geo/src/index.js":
/*!************************************************************!*\
  !*** ./node_modules/vega/node_modules/d3-geo/src/index.js ***!
  \************************************************************/
/*! exports provided: geoArea, geoBounds, geoCentroid, geoCircle, geoClipAntimeridian, geoClipCircle, geoClipExtent, geoClipRectangle, geoContains, geoDistance, geoGraticule, geoGraticule10, geoInterpolate, geoLength, geoPath, geoAlbers, geoAlbersUsa, geoAzimuthalEqualArea, geoAzimuthalEqualAreaRaw, geoAzimuthalEquidistant, geoAzimuthalEquidistantRaw, geoConicConformal, geoConicConformalRaw, geoConicEqualArea, geoConicEqualAreaRaw, geoConicEquidistant, geoConicEquidistantRaw, geoEqualEarth, geoEqualEarthRaw, geoEquirectangular, geoEquirectangularRaw, geoGnomonic, geoGnomonicRaw, geoIdentity, geoProjection, geoProjectionMutator, geoMercator, geoMercatorRaw, geoNaturalEarth1, geoNaturalEarth1Raw, geoOrthographic, geoOrthographicRaw, geoStereographic, geoStereographicRaw, geoTransverseMercator, geoTransverseMercatorRaw, geoRotation, geoStream, geoTransform */
/***/ (function(module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _area_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./area.js */ \"./node_modules/vega/node_modules/d3-geo/src/area.js\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"geoArea\", function() { return _area_js__WEBPACK_IMPORTED_MODULE_0__[\"default\"]; });\n\n/* harmony import */ var _bounds_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./bounds.js */ \"./node_modules/vega/node_modules/d3-geo/src/bounds.js\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"geoBounds\", function() { return _bounds_js__WEBPACK_IMPORTED_MODULE_1__[\"default\"]; });\n\n/* harmony import */ var _centroid_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./centroid.js */ \"./node_modules/vega/node_modules/d3-geo/src/centroid.js\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"geoCentroid\", function() { return _centroid_js__WEBPACK_IMPORTED_MODULE_2__[\"default\"]; });\n\n/* harmony import */ var _circle_js__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ./circle.js */ \"./node_modules/vega/node_modules/d3-geo/src/circle.js\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"geoCircle\", function() { return _circle_js__WEBPACK_IMPORTED_MODULE_3__[\"default\"]; });\n\n/* harmony import */ var _clip_antimeridian_js__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ./clip/antimeridian.js */ \"./node_modules/vega/node_modules/d3-geo/src/clip/antimeridian.js\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"geoClipAntimeridian\", function() { return _clip_antimeridian_js__WEBPACK_IMPORTED_MODULE_4__[\"default\"]; });\n\n/* harmony import */ var _clip_circle_js__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! ./clip/circle.js */ \"./node_modules/vega/node_modules/d3-geo/src/clip/circle.js\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"geoClipCircle\", function() { return _clip_circle_js__WEBPACK_IMPORTED_MODULE_5__[\"default\"]; });\n\n/* harmony import */ var _clip_extent_js__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! ./clip/extent.js */ \"./node_modules/vega/node_modules/d3-geo/src/clip/extent.js\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"geoClipExtent\", function() { return _clip_extent_js__WEBPACK_IMPORTED_MODULE_6__[\"default\"]; });\n\n/* harmony import */ var _clip_rectangle_js__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! ./clip/rectangle.js */ \"./node_modules/vega/node_modules/d3-geo/src/clip/rectangle.js\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"geoClipRectangle\", function() { return _clip_rectangle_js__WEBPACK_IMPORTED_MODULE_7__[\"default\"]; });\n\n/* harmony import */ var _contains_js__WEBPACK_IMPORTED_MODULE_8__ = __webpack_require__(/*! ./contains.js */ \"./node_modules/vega/node_modules/d3-geo/src/contains.js\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"geoContains\", function() { return _contains_js__WEBPACK_IMPORTED_MODULE_8__[\"default\"]; });\n\n/* harmony import */ var _distance_js__WEBPACK_IMPORTED_MODULE_9__ = __webpack_require__(/*! ./distance.js */ \"./node_modules/vega/node_modules/d3-geo/src/distance.js\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"geoDistance\", function() { return _distance_js__WEBPACK_IMPORTED_MODULE_9__[\"default\"]; });\n\n/* harmony import */ var _graticule_js__WEBPACK_IMPORTED_MODULE_10__ = __webpack_require__(/*! ./graticule.js */ \"./node_modules/vega/node_modules/d3-geo/src/graticule.js\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"geoGraticule\", function() { return _graticule_js__WEBPACK_IMPORTED_MODULE_10__[\"default\"]; });\n\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"geoGraticule10\", function() { return _graticule_js__WEBPACK_IMPORTED_MODULE_10__[\"graticule10\"]; });\n\n/* harmony import */ var _interpolate_js__WEBPACK_IMPORTED_MODULE_11__ = __webpack_require__(/*! ./interpolate.js */ \"./node_modules/vega/node_modules/d3-geo/src/interpolate.js\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"geoInterpolate\", function() { return _interpolate_js__WEBPACK_IMPORTED_MODULE_11__[\"default\"]; });\n\n/* harmony import */ var _length_js__WEBPACK_IMPORTED_MODULE_12__ = __webpack_require__(/*! ./length.js */ \"./node_modules/vega/node_modules/d3-geo/src/length.js\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"geoLength\", function() { return _length_js__WEBPACK_IMPORTED_MODULE_12__[\"default\"]; });\n\n/* harmony import */ var _path_index_js__WEBPACK_IMPORTED_MODULE_13__ = __webpack_require__(/*! ./path/index.js */ \"./node_modules/vega/node_modules/d3-geo/src/path/index.js\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"geoPath\", function() { return _path_index_js__WEBPACK_IMPORTED_MODULE_13__[\"default\"]; });\n\n/* harmony import */ var _projection_albers_js__WEBPACK_IMPORTED_MODULE_14__ = __webpack_require__(/*! ./projection/albers.js */ \"./node_modules/vega/node_modules/d3-geo/src/projection/albers.js\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"geoAlbers\", function() { return _projection_albers_js__WEBPACK_IMPORTED_MODULE_14__[\"default\"]; });\n\n/* harmony import */ var _projection_albersUsa_js__WEBPACK_IMPORTED_MODULE_15__ = __webpack_require__(/*! ./projection/albersUsa.js */ \"./node_modules/vega/node_modules/d3-geo/src/projection/albersUsa.js\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"geoAlbersUsa\", function() { return _projection_albersUsa_js__WEBPACK_IMPORTED_MODULE_15__[\"default\"]; });\n\n/* harmony import */ var _projection_azimuthalEqualArea_js__WEBPACK_IMPORTED_MODULE_16__ = __webpack_require__(/*! ./projection/azimuthalEqualArea.js */ \"./node_modules/vega/node_modules/d3-geo/src/projection/azimuthalEqualArea.js\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"geoAzimuthalEqualArea\", function() { return _projection_azimuthalEqualArea_js__WEBPACK_IMPORTED_MODULE_16__[\"default\"]; });\n\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"geoAzimuthalEqualAreaRaw\", function() { return _projection_azimuthalEqualArea_js__WEBPACK_IMPORTED_MODULE_16__[\"azimuthalEqualAreaRaw\"]; });\n\n/* harmony import */ var _projection_azimuthalEquidistant_js__WEBPACK_IMPORTED_MODULE_17__ = __webpack_require__(/*! ./projection/azimuthalEquidistant.js */ \"./node_modules/vega/node_modules/d3-geo/src/projection/azimuthalEquidistant.js\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"geoAzimuthalEquidistant\", function() { return _projection_azimuthalEquidistant_js__WEBPACK_IMPORTED_MODULE_17__[\"default\"]; });\n\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"geoAzimuthalEquidistantRaw\", function() { return _projection_azimuthalEquidistant_js__WEBPACK_IMPORTED_MODULE_17__[\"azimuthalEquidistantRaw\"]; });\n\n/* harmony import */ var _projection_conicConformal_js__WEBPACK_IMPORTED_MODULE_18__ = __webpack_require__(/*! ./projection/conicConformal.js */ \"./node_modules/vega/node_modules/d3-geo/src/projection/conicConformal.js\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"geoConicConformal\", function() { return _projection_conicConformal_js__WEBPACK_IMPORTED_MODULE_18__[\"default\"]; });\n\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"geoConicConformalRaw\", function() { return _projection_conicConformal_js__WEBPACK_IMPORTED_MODULE_18__[\"conicConformalRaw\"]; });\n\n/* harmony import */ var _projection_conicEqualArea_js__WEBPACK_IMPORTED_MODULE_19__ = __webpack_require__(/*! ./projection/conicEqualArea.js */ \"./node_modules/vega/node_modules/d3-geo/src/projection/conicEqualArea.js\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"geoConicEqualArea\", function() { return _projection_conicEqualArea_js__WEBPACK_IMPORTED_MODULE_19__[\"default\"]; });\n\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"geoConicEqualAreaRaw\", function() { return _projection_conicEqualArea_js__WEBPACK_IMPORTED_MODULE_19__[\"conicEqualAreaRaw\"]; });\n\n/* harmony import */ var _projection_conicEquidistant_js__WEBPACK_IMPORTED_MODULE_20__ = __webpack_require__(/*! ./projection/conicEquidistant.js */ \"./node_modules/vega/node_modules/d3-geo/src/projection/conicEquidistant.js\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"geoConicEquidistant\", function() { return _projection_conicEquidistant_js__WEBPACK_IMPORTED_MODULE_20__[\"default\"]; });\n\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"geoConicEquidistantRaw\", function() { return _projection_conicEquidistant_js__WEBPACK_IMPORTED_MODULE_20__[\"conicEquidistantRaw\"]; });\n\n/* harmony import */ var _projection_equalEarth_js__WEBPACK_IMPORTED_MODULE_21__ = __webpack_require__(/*! ./projection/equalEarth.js */ \"./node_modules/vega/node_modules/d3-geo/src/projection/equalEarth.js\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"geoEqualEarth\", function() { return _projection_equalEarth_js__WEBPACK_IMPORTED_MODULE_21__[\"default\"]; });\n\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"geoEqualEarthRaw\", function() { return _projection_equalEarth_js__WEBPACK_IMPORTED_MODULE_21__[\"equalEarthRaw\"]; });\n\n/* harmony import */ var _projection_equirectangular_js__WEBPACK_IMPORTED_MODULE_22__ = __webpack_require__(/*! ./projection/equirectangular.js */ \"./node_modules/vega/node_modules/d3-geo/src/projection/equirectangular.js\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"geoEquirectangular\", function() { return _projection_equirectangular_js__WEBPACK_IMPORTED_MODULE_22__[\"default\"]; });\n\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"geoEquirectangularRaw\", function() { return _projection_equirectangular_js__WEBPACK_IMPORTED_MODULE_22__[\"equirectangularRaw\"]; });\n\n/* harmony import */ var _projection_gnomonic_js__WEBPACK_IMPORTED_MODULE_23__ = __webpack_require__(/*! ./projection/gnomonic.js */ \"./node_modules/vega/node_modules/d3-geo/src/projection/gnomonic.js\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"geoGnomonic\", function() { return _projection_gnomonic_js__WEBPACK_IMPORTED_MODULE_23__[\"default\"]; });\n\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"geoGnomonicRaw\", function() { return _projection_gnomonic_js__WEBPACK_IMPORTED_MODULE_23__[\"gnomonicRaw\"]; });\n\n/* harmony import */ var _projection_identity_js__WEBPACK_IMPORTED_MODULE_24__ = __webpack_require__(/*! ./projection/identity.js */ \"./node_modules/vega/node_modules/d3-geo/src/projection/identity.js\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"geoIdentity\", function() { return _projection_identity_js__WEBPACK_IMPORTED_MODULE_24__[\"default\"]; });\n\n/* harmony import */ var _projection_index_js__WEBPACK_IMPORTED_MODULE_25__ = __webpack_require__(/*! ./projection/index.js */ \"./node_modules/vega/node_modules/d3-geo/src/projection/index.js\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"geoProjection\", function() { return _projection_index_js__WEBPACK_IMPORTED_MODULE_25__[\"default\"]; });\n\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"geoProjectionMutator\", function() { return _projection_index_js__WEBPACK_IMPORTED_MODULE_25__[\"projectionMutator\"]; });\n\n/* harmony import */ var _projection_mercator_js__WEBPACK_IMPORTED_MODULE_26__ = __webpack_require__(/*! ./projection/mercator.js */ \"./node_modules/vega/node_modules/d3-geo/src/projection/mercator.js\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"geoMercator\", function() { return _projection_mercator_js__WEBPACK_IMPORTED_MODULE_26__[\"default\"]; });\n\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"geoMercatorRaw\", function() { return _projection_mercator_js__WEBPACK_IMPORTED_MODULE_26__[\"mercatorRaw\"]; });\n\n/* harmony import */ var _projection_naturalEarth1_js__WEBPACK_IMPORTED_MODULE_27__ = __webpack_require__(/*! ./projection/naturalEarth1.js */ \"./node_modules/vega/node_modules/d3-geo/src/projection/naturalEarth1.js\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"geoNaturalEarth1\", function() { return _projection_naturalEarth1_js__WEBPACK_IMPORTED_MODULE_27__[\"default\"]; });\n\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"geoNaturalEarth1Raw\", function() { return _projection_naturalEarth1_js__WEBPACK_IMPORTED_MODULE_27__[\"naturalEarth1Raw\"]; });\n\n/* harmony import */ var _projection_orthographic_js__WEBPACK_IMPORTED_MODULE_28__ = __webpack_require__(/*! ./projection/orthographic.js */ \"./node_modules/vega/node_modules/d3-geo/src/projection/orthographic.js\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"geoOrthographic\", function() { return _projection_orthographic_js__WEBPACK_IMPORTED_MODULE_28__[\"default\"]; });\n\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"geoOrthographicRaw\", function() { return _projection_orthographic_js__WEBPACK_IMPORTED_MODULE_28__[\"orthographicRaw\"]; });\n\n/* harmony import */ var _projection_stereographic_js__WEBPACK_IMPORTED_MODULE_29__ = __webpack_require__(/*! ./projection/stereographic.js */ \"./node_modules/vega/node_modules/d3-geo/src/projection/stereographic.js\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"geoStereographic\", function() { return _projection_stereographic_js__WEBPACK_IMPORTED_MODULE_29__[\"default\"]; });\n\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"geoStereographicRaw\", function() { return _projection_stereographic_js__WEBPACK_IMPORTED_MODULE_29__[\"stereographicRaw\"]; });\n\n/* harmony import */ var _projection_transverseMercator_js__WEBPACK_IMPORTED_MODULE_30__ = __webpack_require__(/*! ./projection/transverseMercator.js */ \"./node_modules/vega/node_modules/d3-geo/src/projection/transverseMercator.js\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"geoTransverseMercator\", function() { return _projection_transverseMercator_js__WEBPACK_IMPORTED_MODULE_30__[\"default\"]; });\n\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"geoTransverseMercatorRaw\", function() { return _projection_transverseMercator_js__WEBPACK_IMPORTED_MODULE_30__[\"transverseMercatorRaw\"]; });\n\n/* harmony import */ var _rotation_js__WEBPACK_IMPORTED_MODULE_31__ = __webpack_require__(/*! ./rotation.js */ \"./node_modules/vega/node_modules/d3-geo/src/rotation.js\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"geoRotation\", function() { return _rotation_js__WEBPACK_IMPORTED_MODULE_31__[\"default\"]; });\n\n/* harmony import */ var _stream_js__WEBPACK_IMPORTED_MODULE_32__ = __webpack_require__(/*! ./stream.js */ \"./node_modules/vega/node_modules/d3-geo/src/stream.js\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"geoStream\", function() { return _stream_js__WEBPACK_IMPORTED_MODULE_32__[\"default\"]; });\n\n/* harmony import */ var _transform_js__WEBPACK_IMPORTED_MODULE_33__ = __webpack_require__(/*! ./transform.js */ \"./node_modules/vega/node_modules/d3-geo/src/transform.js\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"geoTransform\", function() { return _transform_js__WEBPACK_IMPORTED_MODULE_33__[\"default\"]; });\n\n\n\n\n\n\n\n // DEPRECATED! Use d3.geoIdentity().clipExtent(…).\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,[encoded data, 5364 characters]\n//# sourceURL=webpack-internal:///./node_modules/vega/node_modules/d3-geo/src/index.js\n");

/***/ }),

/***/ "./node_modules/vega/node_modules/d3-geo/src/interpolate.js":
/*!******************************************************************!*\
  !*** ./node_modules/vega/node_modules/d3-geo/src/interpolate.js ***!
  \******************************************************************/
/*! exports provided: default */
/***/ (function(module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _math_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./math.js */ \"./node_modules/vega/node_modules/d3-geo/src/math.js\");\n\n\n/* harmony default export */ __webpack_exports__[\"default\"] = (function(a, b) {\n  var x0 = a[0] * _math_js__WEBPACK_IMPORTED_MODULE_0__[\"radians\"],\n      y0 = a[1] * _math_js__WEBPACK_IMPORTED_MODULE_0__[\"radians\"],\n      x1 = b[0] * _math_js__WEBPACK_IMPORTED_MODULE_0__[\"radians\"],\n      y1 = b[1] * _math_js__WEBPACK_IMPORTED_MODULE_0__[\"radians\"],\n      cy0 = Object(_math_js__WEBPACK_IMPORTED_MODULE_0__[\"cos\"])(y0),\n      sy0 = Object(_math_js__WEBPACK_IMPORTED_MODULE_0__[\"sin\"])(y0),\n      cy1 = Object(_math_js__WEBPACK_IMPORTED_MODULE_0__[\"cos\"])(y1),\n      sy1 = Object(_math_js__WEBPACK_IMPORTED_MODULE_0__[\"sin\"])(y1),\n      kx0 = cy0 * Object(_math_js__WEBPACK_IMPORTED_MODULE_0__[\"cos\"])(x0),\n      ky0 = cy0 * Object(_math_js__WEBPACK_IMPORTED_MODULE_0__[\"sin\"])(x0),\n      kx1 = cy1 * Object(_math_js__WEBPACK_IMPORTED_MODULE_0__[\"cos\"])(x1),\n      ky1 = cy1 * Object(_math_js__WEBPACK_IMPORTED_MODULE_0__[\"sin\"])(x1),\n      d = 2 * Object(_math_js__WEBPACK_IMPORTED_MODULE_0__[\"asin\"])(Object(_math_js__WEBPACK_IMPORTED_MODULE_0__[\"sqrt\"])(Object(_math_js__WEBPACK_IMPORTED_MODULE_0__[\"haversin\"])(y1 - y0) + cy0 * cy1 * Object(_math_js__WEBPACK_IMPORTED_MODULE_0__[\"haversin\"])(x1 - x0))),\n      k = Object(_math_js__WEBPACK_IMPORTED_MODULE_0__[\"sin\"])(d);\n\n  var interpolate = d ? function(t) {\n    var B = Object(_math_js__WEBPACK_IMPORTED_MODULE_0__[\"sin\"])(t *= d) / k,\n        A = Object(_math_js__WEBPACK_IMPORTED_MODULE_0__[\"sin\"])(d - t) / k,\n        x = A * kx0 + B * kx1,\n        y = A * ky0 + B * ky1,\n        z = A * sy0 + B * sy1;\n    return [\n      Object(_math_js__WEBPACK_IMPORTED_MODULE_0__[\"atan2\"])(y, x) * _math_js__WEBPACK_IMPORTED_MODULE_0__[\"degrees\"],\n      Object(_math_js__WEBPACK_IMPORTED_MODULE_0__[\"atan2\"])(z, Object(_math_js__WEBPACK_IMPORTED_MODULE_0__[\"sqrt\"])(x * x + y * y)) * _math_js__WEBPACK_IMPORTED_MODULE_0__[\"degrees\"]\n    ];\n  } : function() {\n    return [x0 * _math_js__WEBPACK_IMPORTED_MODULE_0__[\"degrees\"], y0 * _math_js__WEBPACK_IMPORTED_MODULE_0__[\"degrees\"]];\n  };\n\n  interpolate.distance = d;\n\n  return interpolate;\n});\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvdmVnYS9ub2RlX21vZHVsZXMvZDMtZ2VvL3NyYy9pbnRlcnBvbGF0ZS5qcy5qcyIsInNvdXJjZXMiOlsid2VicGFjazovLy8uL25vZGVfbW9kdWxlcy92ZWdhL25vZGVfbW9kdWxlcy9kMy1nZW8vc3JjL2ludGVycG9sYXRlLmpzP2MzM2EiXSwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHthc2luLCBhdGFuMiwgY29zLCBkZWdyZWVzLCBoYXZlcnNpbiwgcmFkaWFucywgc2luLCBzcXJ0fSBmcm9tIFwiLi9tYXRoLmpzXCI7XG5cbmV4cG9ydCBkZWZhdWx0IGZ1bmN0aW9uKGEsIGIpIHtcbiAgdmFyIHgwID0gYVswXSAqIHJhZGlhbnMsXG4gICAgICB5MCA9IGFbMV0gKiByYWRpYW5zLFxuICAgICAgeDEgPSBiWzBdICogcmFkaWFucyxcbiAgICAgIHkxID0gYlsxXSAqIHJhZGlhbnMsXG4gICAgICBjeTAgPSBjb3MoeTApLFxuICAgICAgc3kwID0gc2luKHkwKSxcbiAgICAgIGN5MSA9IGNvcyh5MSksXG4gICAgICBzeTEgPSBzaW4oeTEpLFxuICAgICAga3gwID0gY3kwICogY29zKHgwKSxcbiAgICAgIGt5MCA9IGN5MCAqIHNpbih4MCksXG4gICAgICBreDEgPSBjeTEgKiBjb3MoeDEpLFxuICAgICAga3kxID0gY3kxICogc2luKHgxKSxcbiAgICAgIGQgPSAyICogYXNpbihzcXJ0KGhhdmVyc2luKHkxIC0geTApICsgY3kwICogY3kxICogaGF2ZXJzaW4oeDEgLSB4MCkpKSxcbiAgICAgIGsgPSBzaW4oZCk7XG5cbiAgdmFyIGludGVycG9sYXRlID0gZCA/IGZ1bmN0aW9uKHQpIHtcbiAgICB2YXIgQiA9IHNpbih0ICo9IGQpIC8gayxcbiAgICAgICAgQSA9IHNpbihkIC0gdCkgLyBrLFxuICAgICAgICB4ID0gQSAqIGt4MCArIEIgKiBreDEsXG4gICAgICAgIHkgPSBBICoga3kwICsgQiAqIGt5MSxcbiAgICAgICAgeiA9IEEgKiBzeTAgKyBCICogc3kxO1xuICAgIHJldHVybiBbXG4gICAgICBhdGFuMih5LCB4KSAqIGRlZ3JlZXMsXG4gICAgICBhdGFuMih6LCBzcXJ0KHggKiB4ICsgeSAqIHkpKSAqIGRlZ3JlZXNcbiAgICBdO1xuICB9IDogZnVuY3Rpb24oKSB7XG4gICAgcmV0dXJuIFt4MCAqIGRlZ3JlZXMsIHkwICogZGVncmVlc107XG4gIH07XG5cbiAgaW50ZXJwb2xhdGUuZGlzdGFuY2UgPSBkO1xuXG4gIHJldHVybiBpbnRlcnBvbGF0ZTtcbn1cbiJdLCJtYXBwaW5ncyI6IkFBQUE7QUFBQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTsiLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///./node_modules/vega/node_modules/d3-geo/src/interpolate.js\n");

/***/ }),

/***/ "./node_modules/vega/node_modules/d3-geo/src/length.js":
/*!*************************************************************!*\
  !*** ./node_modules/vega/node_modules/d3-geo/src/length.js ***!
  \*************************************************************/
/*! exports provided: default */
/***/ (function(module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var d3_array__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! d3-array */ \"./node_modules/d3-array/src/index.js\");\n/* harmony import */ var _math_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./math.js */ \"./node_modules/vega/node_modules/d3-geo/src/math.js\");\n/* harmony import */ var _noop_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./noop.js */ \"./node_modules/vega/node_modules/d3-geo/src/noop.js\");\n/* harmony import */ var _stream_js__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ./stream.js */ \"./node_modules/vega/node_modules/d3-geo/src/stream.js\");\n\n\n\n\n\nvar lengthSum,\n    lambda0,\n    sinPhi0,\n    cosPhi0;\n\nvar lengthStream = {\n  sphere: _noop_js__WEBPACK_IMPORTED_MODULE_2__[\"default\"],\n  point: _noop_js__WEBPACK_IMPORTED_MODULE_2__[\"default\"],\n  lineStart: lengthLineStart,\n  lineEnd: _noop_js__WEBPACK_IMPORTED_MODULE_2__[\"default\"],\n  polygonStart: _noop_js__WEBPACK_IMPORTED_MODULE_2__[\"default\"],\n  polygonEnd: _noop_js__WEBPACK_IMPORTED_MODULE_2__[\"default\"]\n};\n\nfunction lengthLineStart() {\n  lengthStream.point = lengthPointFirst;\n  lengthStream.lineEnd = lengthLineEnd;\n}\n\nfunction lengthLineEnd() {\n  lengthStream.point = lengthStream.lineEnd = _noop_js__WEBPACK_IMPORTED_MODULE_2__[\"default\"];\n}\n\nfunction lengthPointFirst(lambda, phi) {\n  lambda *= _math_js__WEBPACK_IMPORTED_MODULE_1__[\"radians\"], phi *= _math_js__WEBPACK_IMPORTED_MODULE_1__[\"radians\"];\n  lambda0 = lambda, sinPhi0 = Object(_math_js__WEBPACK_IMPORTED_MODULE_1__[\"sin\"])(phi), cosPhi0 = Object(_math_js__WEBPACK_IMPORTED_MODULE_1__[\"cos\"])(phi);\n  lengthStream.point = lengthPoint;\n}\n\nfunction lengthPoint(lambda, phi) {\n  lambda *= _math_js__WEBPACK_IMPORTED_MODULE_1__[\"radians\"], phi *= _math_js__WEBPACK_IMPORTED_MODULE_1__[\"radians\"];\n  var sinPhi = Object(_math_js__WEBPACK_IMPORTED_MODULE_1__[\"sin\"])(phi),\n      cosPhi = Object(_math_js__WEBPACK_IMPORTED_MODULE_1__[\"cos\"])(phi),\n      delta = Object(_math_js__WEBPACK_IMPORTED_MODULE_1__[\"abs\"])(lambda - lambda0),\n      cosDelta = Object(_math_js__WEBPACK_IMPORTED_MODULE_1__[\"cos\"])(delta),\n      sinDelta = Object(_math_js__WEBPACK_IMPORTED_MODULE_1__[\"sin\"])(delta),\n      x = cosPhi * sinDelta,\n      y = cosPhi0 * sinPhi - sinPhi0 * cosPhi * cosDelta,\n      z = sinPhi0 * sinPhi + cosPhi0 * cosPhi * cosDelta;\n  lengthSum.add(Object(_math_js__WEBPACK_IMPORTED_MODULE_1__[\"atan2\"])(Object(_math_js__WEBPACK_IMPORTED_MODULE_1__[\"sqrt\"])(x * x + y * y), z));\n  lambda0 = lambda, sinPhi0 = sinPhi, cosPhi0 = cosPhi;\n}\n\n/* harmony default export */ __webpack_exports__[\"default\"] = (function(object) {\n  lengthSum = new d3_array__WEBPACK_IMPORTED_MODULE_0__[\"Adder\"]();\n  Object(_stream_js__WEBPACK_IMPORTED_MODULE_3__[\"default\"])(object, lengthStream);\n  return +lengthSum;\n});\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvdmVnYS9ub2RlX21vZHVsZXMvZDMtZ2VvL3NyYy9sZW5ndGguanMuanMiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvdmVnYS9ub2RlX21vZHVsZXMvZDMtZ2VvL3NyYy9sZW5ndGguanM/NzZiNyJdLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge0FkZGVyfSBmcm9tIFwiZDMtYXJyYXlcIjtcbmltcG9ydCB7YWJzLCBhdGFuMiwgY29zLCByYWRpYW5zLCBzaW4sIHNxcnR9IGZyb20gXCIuL21hdGguanNcIjtcbmltcG9ydCBub29wIGZyb20gXCIuL25vb3AuanNcIjtcbmltcG9ydCBzdHJlYW0gZnJvbSBcIi4vc3RyZWFtLmpzXCI7XG5cbnZhciBsZW5ndGhTdW0sXG4gICAgbGFtYmRhMCxcbiAgICBzaW5QaGkwLFxuICAgIGNvc1BoaTA7XG5cbnZhciBsZW5ndGhTdHJlYW0gPSB7XG4gIHNwaGVyZTogbm9vcCxcbiAgcG9pbnQ6IG5vb3AsXG4gIGxpbmVTdGFydDogbGVuZ3RoTGluZVN0YXJ0LFxuICBsaW5lRW5kOiBub29wLFxuICBwb2x5Z29uU3RhcnQ6IG5vb3AsXG4gIHBvbHlnb25FbmQ6IG5vb3Bcbn07XG5cbmZ1bmN0aW9uIGxlbmd0aExpbmVTdGFydCgpIHtcbiAgbGVuZ3RoU3RyZWFtLnBvaW50ID0gbGVuZ3RoUG9pbnRGaXJzdDtcbiAgbGVuZ3RoU3RyZWFtLmxpbmVFbmQgPSBsZW5ndGhMaW5lRW5kO1xufVxuXG5mdW5jdGlvbiBsZW5ndGhMaW5lRW5kKCkge1xuICBsZW5ndGhTdHJlYW0ucG9pbnQgPSBsZW5ndGhTdHJlYW0ubGluZUVuZCA9IG5vb3A7XG59XG5cbmZ1bmN0aW9uIGxlbmd0aFBvaW50Rmlyc3QobGFtYmRhLCBwaGkpIHtcbiAgbGFtYmRhICo9IHJhZGlhbnMsIHBoaSAqPSByYWRpYW5zO1xuICBsYW1iZGEwID0gbGFtYmRhLCBzaW5QaGkwID0gc2luKHBoaSksIGNvc1BoaTAgPSBjb3MocGhpKTtcbiAgbGVuZ3RoU3RyZWFtLnBvaW50ID0gbGVuZ3RoUG9pbnQ7XG59XG5cbmZ1bmN0aW9uIGxlbmd0aFBvaW50KGxhbWJkYSwgcGhpKSB7XG4gIGxhbWJkYSAqPSByYWRpYW5zLCBwaGkgKj0gcmFkaWFucztcbiAgdmFyIHNpblBoaSA9IHNpbihwaGkpLFxuICAgICAgY29zUGhpID0gY29zKHBoaSksXG4gICAgICBkZWx0YSA9IGFicyhsYW1iZGEgLSBsYW1iZGEwKSxcbiAgICAgIGNvc0RlbHRhID0gY29zKGRlbHRhKSxcbiAgICAgIHNpbkRlbHRhID0gc2luKGRlbHRhKSxcbiAgICAgIHggPSBjb3NQaGkgKiBzaW5EZWx0YSxcbiAgICAgIHkgPSBjb3NQaGkwICogc2luUGhpIC0gc2luUGhpMCAqIGNvc1BoaSAqIGNvc0RlbHRhLFxuICAgICAgeiA9IHNpblBoaTAgKiBzaW5QaGkgKyBjb3NQaGkwICogY29zUGhpICogY29zRGVsdGE7XG4gIGxlbmd0aFN1bS5hZGQoYXRhbjIoc3FydCh4ICogeCArIHkgKiB5KSwgeikpO1xuICBsYW1iZGEwID0gbGFtYmRhLCBzaW5QaGkwID0gc2luUGhpLCBjb3NQaGkwID0gY29zUGhpO1xufVxuXG5leHBvcnQgZGVmYXVsdCBmdW5jdGlvbihvYmplY3QpIHtcbiAgbGVuZ3RoU3VtID0gbmV3IEFkZGVyKCk7XG4gIHN0cmVhbShvYmplY3QsIGxlbmd0aFN0cmVhbSk7XG4gIHJldHVybiArbGVuZ3RoU3VtO1xufVxuIl0sIm1hcHBpbmdzIjoiQUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTsiLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///./node_modules/vega/node_modules/d3-geo/src/length.js\n");

/***/ }),

/***/ "./node_modules/vega/node_modules/d3-geo/src/math.js":
/*!***********************************************************!*\
  !*** ./node_modules/vega/node_modules/d3-geo/src/math.js ***!
  \***********************************************************/
/*! exports provided: epsilon, epsilon2, pi, halfPi, quarterPi, tau, degrees, radians, abs, atan, atan2, cos, ceil, exp, floor, hypot, log, pow, sin, sign, sqrt, tan, acos, asin, haversin */
/***/ (function(module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"epsilon\", function() { return epsilon; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"epsilon2\", function() { return epsilon2; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"pi\", function() { return pi; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"halfPi\", function() { return halfPi; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"quarterPi\", function() { return quarterPi; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"tau\", function() { return tau; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"degrees\", function() { return degrees; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"radians\", function() { return radians; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"abs\", function() { return abs; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"atan\", function() { return atan; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"atan2\", function() { return atan2; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"cos\", function() { return cos; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"ceil\", function() { return ceil; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"exp\", function() { return exp; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"floor\", function() { return floor; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"hypot\", function() { return hypot; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"log\", function() { return log; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"pow\", function() { return pow; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"sin\", function() { return sin; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"sign\", function() { return sign; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"sqrt\", function() { return sqrt; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"tan\", function() { return tan; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"acos\", function() { return acos; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"asin\", function() { return asin; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"haversin\", function() { return haversin; });\nvar epsilon = 1e-6;\nvar epsilon2 = 1e-12;\nvar pi = Math.PI;\nvar halfPi = pi / 2;\nvar quarterPi = pi / 4;\nvar tau = pi * 2;\n\nvar degrees = 180 / pi;\nvar radians = pi / 180;\n\nvar abs = Math.abs;\nvar atan = Math.atan;\nvar atan2 = Math.atan2;\nvar cos = Math.cos;\nvar ceil = Math.ceil;\nvar exp = Math.exp;\nvar floor = Math.floor;\nvar hypot = Math.hypot;\nvar log = Math.log;\nvar pow = Math.pow;\nvar sin = Math.sin;\nvar sign = Math.sign || function(x) { return x > 0 ? 1 : x < 0 ? -1 : 0; };\nvar sqrt = Math.sqrt;\nvar tan = Math.tan;\n\nfunction acos(x) {\n  return x > 1 ? 0 : x < -1 ? pi : Math.acos(x);\n}\n\nfunction asin(x) {\n  return x > 1 ? halfPi : x < -1 ? -halfPi : Math.asin(x);\n}\n\nfunction haversin(x) {\n  return (x = sin(x / 2)) * x;\n}\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvdmVnYS9ub2RlX21vZHVsZXMvZDMtZ2VvL3NyYy9tYXRoLmpzLmpzIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL3ZlZ2Evbm9kZV9tb2R1bGVzL2QzLWdlby9zcmMvbWF0aC5qcz80ZWM2Il0sInNvdXJjZXNDb250ZW50IjpbImV4cG9ydCB2YXIgZXBzaWxvbiA9IDFlLTY7XG5leHBvcnQgdmFyIGVwc2lsb24yID0gMWUtMTI7XG5leHBvcnQgdmFyIHBpID0gTWF0aC5QSTtcbmV4cG9ydCB2YXIgaGFsZlBpID0gcGkgLyAyO1xuZXhwb3J0IHZhciBxdWFydGVyUGkgPSBwaSAvIDQ7XG5leHBvcnQgdmFyIHRhdSA9IHBpICogMjtcblxuZXhwb3J0IHZhciBkZWdyZWVzID0gMTgwIC8gcGk7XG5leHBvcnQgdmFyIHJhZGlhbnMgPSBwaSAvIDE4MDtcblxuZXhwb3J0IHZhciBhYnMgPSBNYXRoLmFicztcbmV4cG9ydCB2YXIgYXRhbiA9IE1hdGguYXRhbjtcbmV4cG9ydCB2YXIgYXRhbjIgPSBNYXRoLmF0YW4yO1xuZXhwb3J0IHZhciBjb3MgPSBNYXRoLmNvcztcbmV4cG9ydCB2YXIgY2VpbCA9IE1hdGguY2VpbDtcbmV4cG9ydCB2YXIgZXhwID0gTWF0aC5leHA7XG5leHBvcnQgdmFyIGZsb29yID0gTWF0aC5mbG9vcjtcbmV4cG9ydCB2YXIgaHlwb3QgPSBNYXRoLmh5cG90O1xuZXhwb3J0IHZhciBsb2cgPSBNYXRoLmxvZztcbmV4cG9ydCB2YXIgcG93ID0gTWF0aC5wb3c7XG5leHBvcnQgdmFyIHNpbiA9IE1hdGguc2luO1xuZXhwb3J0IHZhciBzaWduID0gTWF0aC5zaWduIHx8IGZ1bmN0aW9uKHgpIHsgcmV0dXJuIHggPiAwID8gMSA6IHggPCAwID8gLTEgOiAwOyB9O1xuZXhwb3J0IHZhciBzcXJ0ID0gTWF0aC5zcXJ0O1xuZXhwb3J0IHZhciB0YW4gPSBNYXRoLnRhbjtcblxuZXhwb3J0IGZ1bmN0aW9uIGFjb3MoeCkge1xuICByZXR1cm4geCA+IDEgPyAwIDogeCA8IC0xID8gcGkgOiBNYXRoLmFjb3MoeCk7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBhc2luKHgpIHtcbiAgcmV0dXJuIHggPiAxID8gaGFsZlBpIDogeCA8IC0xID8gLWhhbGZQaSA6IE1hdGguYXNpbih4KTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGhhdmVyc2luKHgpIHtcbiAgcmV0dXJuICh4ID0gc2luKHggLyAyKSkgKiB4O1xufVxuIl0sIm1hcHBpbmdzIjoiQUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOyIsInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///./node_modules/vega/node_modules/d3-geo/src/math.js\n");

/***/ }),

/***/ "./node_modules/vega/node_modules/d3-geo/src/noop.js":
/*!***********************************************************!*\
  !*** ./node_modules/vega/node_modules/d3-geo/src/noop.js ***!
  \***********************************************************/
/*! exports provided: default */
/***/ (function(module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"default\", function() { return noop; });\nfunction noop() {}\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvdmVnYS9ub2RlX21vZHVsZXMvZDMtZ2VvL3NyYy9ub29wLmpzLmpzIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL3ZlZ2Evbm9kZV9tb2R1bGVzL2QzLWdlby9zcmMvbm9vcC5qcz85NTc5Il0sInNvdXJjZXNDb250ZW50IjpbImV4cG9ydCBkZWZhdWx0IGZ1bmN0aW9uIG5vb3AoKSB7fVxuIl0sIm1hcHBpbmdzIjoiQUFBQTtBQUFBO0FBQUE7Iiwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///./node_modules/vega/node_modules/d3-geo/src/noop.js\n");

/***/ }),

/***/ "./node_modules/vega/node_modules/d3-geo/src/path/area.js":
/*!****************************************************************!*\
  !*** ./node_modules/vega/node_modules/d3-geo/src/path/area.js ***!
  \****************************************************************/
/*! exports provided: default */
/***/ (function(module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var d3_array__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! d3-array */ \"./node_modules/d3-array/src/index.js\");\n/* harmony import */ var _math_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../math.js */ \"./node_modules/vega/node_modules/d3-geo/src/math.js\");\n/* harmony import */ var _noop_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ../noop.js */ \"./node_modules/vega/node_modules/d3-geo/src/noop.js\");\n\n\n\n\nvar areaSum = new d3_array__WEBPACK_IMPORTED_MODULE_0__[\"Adder\"](),\n    areaRingSum = new d3_array__WEBPACK_IMPORTED_MODULE_0__[\"Adder\"](),\n    x00,\n    y00,\n    x0,\n    y0;\n\nvar areaStream = {\n  point: _noop_js__WEBPACK_IMPORTED_MODULE_2__[\"default\"],\n  lineStart: _noop_js__WEBPACK_IMPORTED_MODULE_2__[\"default\"],\n  lineEnd: _noop_js__WEBPACK_IMPORTED_MODULE_2__[\"default\"],\n  polygonStart: function() {\n    areaStream.lineStart = areaRingStart;\n    areaStream.lineEnd = areaRingEnd;\n  },\n  polygonEnd: function() {\n    areaStream.lineStart = areaStream.lineEnd = areaStream.point = _noop_js__WEBPACK_IMPORTED_MODULE_2__[\"default\"];\n    areaSum.add(Object(_math_js__WEBPACK_IMPORTED_MODULE_1__[\"abs\"])(areaRingSum));\n    areaRingSum = new d3_array__WEBPACK_IMPORTED_MODULE_0__[\"Adder\"]();\n  },\n  result: function() {\n    var area = areaSum / 2;\n    areaSum = new d3_array__WEBPACK_IMPORTED_MODULE_0__[\"Adder\"]();\n    return area;\n  }\n};\n\nfunction areaRingStart() {\n  areaStream.point = areaPointFirst;\n}\n\nfunction areaPointFirst(x, y) {\n  areaStream.point = areaPoint;\n  x00 = x0 = x, y00 = y0 = y;\n}\n\nfunction areaPoint(x, y) {\n  areaRingSum.add(y0 * x - x0 * y);\n  x0 = x, y0 = y;\n}\n\nfunction areaRingEnd() {\n  areaPoint(x00, y00);\n}\n\n/* harmony default export */ __webpack_exports__[\"default\"] = (areaStream);\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvdmVnYS9ub2RlX21vZHVsZXMvZDMtZ2VvL3NyYy9wYXRoL2FyZWEuanMuanMiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvdmVnYS9ub2RlX21vZHVsZXMvZDMtZ2VvL3NyYy9wYXRoL2FyZWEuanM/MWI0ZCJdLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge0FkZGVyfSBmcm9tIFwiZDMtYXJyYXlcIjtcbmltcG9ydCB7YWJzfSBmcm9tIFwiLi4vbWF0aC5qc1wiO1xuaW1wb3J0IG5vb3AgZnJvbSBcIi4uL25vb3AuanNcIjtcblxudmFyIGFyZWFTdW0gPSBuZXcgQWRkZXIoKSxcbiAgICBhcmVhUmluZ1N1bSA9IG5ldyBBZGRlcigpLFxuICAgIHgwMCxcbiAgICB5MDAsXG4gICAgeDAsXG4gICAgeTA7XG5cbnZhciBhcmVhU3RyZWFtID0ge1xuICBwb2ludDogbm9vcCxcbiAgbGluZVN0YXJ0OiBub29wLFxuICBsaW5lRW5kOiBub29wLFxuICBwb2x5Z29uU3RhcnQ6IGZ1bmN0aW9uKCkge1xuICAgIGFyZWFTdHJlYW0ubGluZVN0YXJ0ID0gYXJlYVJpbmdTdGFydDtcbiAgICBhcmVhU3RyZWFtLmxpbmVFbmQgPSBhcmVhUmluZ0VuZDtcbiAgfSxcbiAgcG9seWdvbkVuZDogZnVuY3Rpb24oKSB7XG4gICAgYXJlYVN0cmVhbS5saW5lU3RhcnQgPSBhcmVhU3RyZWFtLmxpbmVFbmQgPSBhcmVhU3RyZWFtLnBvaW50ID0gbm9vcDtcbiAgICBhcmVhU3VtLmFkZChhYnMoYXJlYVJpbmdTdW0pKTtcbiAgICBhcmVhUmluZ1N1bSA9IG5ldyBBZGRlcigpO1xuICB9LFxuICByZXN1bHQ6IGZ1bmN0aW9uKCkge1xuICAgIHZhciBhcmVhID0gYXJlYVN1bSAvIDI7XG4gICAgYXJlYVN1bSA9IG5ldyBBZGRlcigpO1xuICAgIHJldHVybiBhcmVhO1xuICB9XG59O1xuXG5mdW5jdGlvbiBhcmVhUmluZ1N0YXJ0KCkge1xuICBhcmVhU3RyZWFtLnBvaW50ID0gYXJlYVBvaW50Rmlyc3Q7XG59XG5cbmZ1bmN0aW9uIGFyZWFQb2ludEZpcnN0KHgsIHkpIHtcbiAgYXJlYVN0cmVhbS5wb2ludCA9IGFyZWFQb2ludDtcbiAgeDAwID0geDAgPSB4LCB5MDAgPSB5MCA9IHk7XG59XG5cbmZ1bmN0aW9uIGFyZWFQb2ludCh4LCB5KSB7XG4gIGFyZWFSaW5nU3VtLmFkZCh5MCAqIHggLSB4MCAqIHkpO1xuICB4MCA9IHgsIHkwID0geTtcbn1cblxuZnVuY3Rpb24gYXJlYVJpbmdFbmQoKSB7XG4gIGFyZWFQb2ludCh4MDAsIHkwMCk7XG59XG5cbmV4cG9ydCBkZWZhdWx0IGFyZWFTdHJlYW07XG4iXSwibWFwcGluZ3MiOiJBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTsiLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///./node_modules/vega/node_modules/d3-geo/src/path/area.js\n");

/***/ }),

/***/ "./node_modules/vega/node_modules/d3-geo/src/path/bounds.js":
/*!******************************************************************!*\
  !*** ./node_modules/vega/node_modules/d3-geo/src/path/bounds.js ***!
  \******************************************************************/
/*! exports provided: default */
/***/ (function(module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _noop_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../noop.js */ \"./node_modules/vega/node_modules/d3-geo/src/noop.js\");\n\n\nvar x0 = Infinity,\n    y0 = x0,\n    x1 = -x0,\n    y1 = x1;\n\nvar boundsStream = {\n  point: boundsPoint,\n  lineStart: _noop_js__WEBPACK_IMPORTED_MODULE_0__[\"default\"],\n  lineEnd: _noop_js__WEBPACK_IMPORTED_MODULE_0__[\"default\"],\n  polygonStart: _noop_js__WEBPACK_IMPORTED_MODULE_0__[\"default\"],\n  polygonEnd: _noop_js__WEBPACK_IMPORTED_MODULE_0__[\"default\"],\n  result: function() {\n    var bounds = [[x0, y0], [x1, y1]];\n    x1 = y1 = -(y0 = x0 = Infinity);\n    return bounds;\n  }\n};\n\nfunction boundsPoint(x, y) {\n  if (x < x0) x0 = x;\n  if (x > x1) x1 = x;\n  if (y < y0) y0 = y;\n  if (y > y1) y1 = y;\n}\n\n/* harmony default export */ __webpack_exports__[\"default\"] = (boundsStream);\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvdmVnYS9ub2RlX21vZHVsZXMvZDMtZ2VvL3NyYy9wYXRoL2JvdW5kcy5qcy5qcyIsInNvdXJjZXMiOlsid2VicGFjazovLy8uL25vZGVfbW9kdWxlcy92ZWdhL25vZGVfbW9kdWxlcy9kMy1nZW8vc3JjL3BhdGgvYm91bmRzLmpzPzQ1NGIiXSwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IG5vb3AgZnJvbSBcIi4uL25vb3AuanNcIjtcblxudmFyIHgwID0gSW5maW5pdHksXG4gICAgeTAgPSB4MCxcbiAgICB4MSA9IC14MCxcbiAgICB5MSA9IHgxO1xuXG52YXIgYm91bmRzU3RyZWFtID0ge1xuICBwb2ludDogYm91bmRzUG9pbnQsXG4gIGxpbmVTdGFydDogbm9vcCxcbiAgbGluZUVuZDogbm9vcCxcbiAgcG9seWdvblN0YXJ0OiBub29wLFxuICBwb2x5Z29uRW5kOiBub29wLFxuICByZXN1bHQ6IGZ1bmN0aW9uKCkge1xuICAgIHZhciBib3VuZHMgPSBbW3gwLCB5MF0sIFt4MSwgeTFdXTtcbiAgICB4MSA9IHkxID0gLSh5MCA9IHgwID0gSW5maW5pdHkpO1xuICAgIHJldHVybiBib3VuZHM7XG4gIH1cbn07XG5cbmZ1bmN0aW9uIGJvdW5kc1BvaW50KHgsIHkpIHtcbiAgaWYgKHggPCB4MCkgeDAgPSB4O1xuICBpZiAoeCA+IHgxKSB4MSA9IHg7XG4gIGlmICh5IDwgeTApIHkwID0geTtcbiAgaWYgKHkgPiB5MSkgeTEgPSB5O1xufVxuXG5leHBvcnQgZGVmYXVsdCBib3VuZHNTdHJlYW07XG4iXSwibWFwcGluZ3MiOiJBQUFBO0FBQUE7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTsiLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///./node_modules/vega/node_modules/d3-geo/src/path/bounds.js\n");

/***/ }),

/***/ "./node_modules/vega/node_modules/d3-geo/src/path/centroid.js":
/*!********************************************************************!*\
  !*** ./node_modules/vega/node_modules/d3-geo/src/path/centroid.js ***!
  \********************************************************************/
/*! exports provided: default */
/***/ (function(module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _math_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../math.js */ \"./node_modules/vega/node_modules/d3-geo/src/math.js\");\n\n\n// TODO Enforce positive area for exterior, negative area for interior?\n\nvar X0 = 0,\n    Y0 = 0,\n    Z0 = 0,\n    X1 = 0,\n    Y1 = 0,\n    Z1 = 0,\n    X2 = 0,\n    Y2 = 0,\n    Z2 = 0,\n    x00,\n    y00,\n    x0,\n    y0;\n\nvar centroidStream = {\n  point: centroidPoint,\n  lineStart: centroidLineStart,\n  lineEnd: centroidLineEnd,\n  polygonStart: function() {\n    centroidStream.lineStart = centroidRingStart;\n    centroidStream.lineEnd = centroidRingEnd;\n  },\n  polygonEnd: function() {\n    centroidStream.point = centroidPoint;\n    centroidStream.lineStart = centroidLineStart;\n    centroidStream.lineEnd = centroidLineEnd;\n  },\n  result: function() {\n    var centroid = Z2 ? [X2 / Z2, Y2 / Z2]\n        : Z1 ? [X1 / Z1, Y1 / Z1]\n        : Z0 ? [X0 / Z0, Y0 / Z0]\n        : [NaN, NaN];\n    X0 = Y0 = Z0 =\n    X1 = Y1 = Z1 =\n    X2 = Y2 = Z2 = 0;\n    return centroid;\n  }\n};\n\nfunction centroidPoint(x, y) {\n  X0 += x;\n  Y0 += y;\n  ++Z0;\n}\n\nfunction centroidLineStart() {\n  centroidStream.point = centroidPointFirstLine;\n}\n\nfunction centroidPointFirstLine(x, y) {\n  centroidStream.point = centroidPointLine;\n  centroidPoint(x0 = x, y0 = y);\n}\n\nfunction centroidPointLine(x, y) {\n  var dx = x - x0, dy = y - y0, z = Object(_math_js__WEBPACK_IMPORTED_MODULE_0__[\"sqrt\"])(dx * dx + dy * dy);\n  X1 += z * (x0 + x) / 2;\n  Y1 += z * (y0 + y) / 2;\n  Z1 += z;\n  centroidPoint(x0 = x, y0 = y);\n}\n\nfunction centroidLineEnd() {\n  centroidStream.point = centroidPoint;\n}\n\nfunction centroidRingStart() {\n  centroidStream.point = centroidPointFirstRing;\n}\n\nfunction centroidRingEnd() {\n  centroidPointRing(x00, y00);\n}\n\nfunction centroidPointFirstRing(x, y) {\n  centroidStream.point = centroidPointRing;\n  centroidPoint(x00 = x0 = x, y00 = y0 = y);\n}\n\nfunction centroidPointRing(x, y) {\n  var dx = x - x0,\n      dy = y - y0,\n      z = Object(_math_js__WEBPACK_IMPORTED_MODULE_0__[\"sqrt\"])(dx * dx + dy * dy);\n\n  X1 += z * (x0 + x) / 2;\n  Y1 += z * (y0 + y) / 2;\n  Z1 += z;\n\n  z = y0 * x - x0 * y;\n  X2 += z * (x0 + x);\n  Y2 += z * (y0 + y);\n  Z2 += z * 3;\n  centroidPoint(x0 = x, y0 = y);\n}\n\n/* harmony default export */ __webpack_exports__[\"default\"] = (centroidStream);\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvdmVnYS9ub2RlX21vZHVsZXMvZDMtZ2VvL3NyYy9wYXRoL2NlbnRyb2lkLmpzLmpzIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL3ZlZ2Evbm9kZV9tb2R1bGVzL2QzLWdlby9zcmMvcGF0aC9jZW50cm9pZC5qcz9kOWI3Il0sInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7c3FydH0gZnJvbSBcIi4uL21hdGguanNcIjtcblxuLy8gVE9ETyBFbmZvcmNlIHBvc2l0aXZlIGFyZWEgZm9yIGV4dGVyaW9yLCBuZWdhdGl2ZSBhcmVhIGZvciBpbnRlcmlvcj9cblxudmFyIFgwID0gMCxcbiAgICBZMCA9IDAsXG4gICAgWjAgPSAwLFxuICAgIFgxID0gMCxcbiAgICBZMSA9IDAsXG4gICAgWjEgPSAwLFxuICAgIFgyID0gMCxcbiAgICBZMiA9IDAsXG4gICAgWjIgPSAwLFxuICAgIHgwMCxcbiAgICB5MDAsXG4gICAgeDAsXG4gICAgeTA7XG5cbnZhciBjZW50cm9pZFN0cmVhbSA9IHtcbiAgcG9pbnQ6IGNlbnRyb2lkUG9pbnQsXG4gIGxpbmVTdGFydDogY2VudHJvaWRMaW5lU3RhcnQsXG4gIGxpbmVFbmQ6IGNlbnRyb2lkTGluZUVuZCxcbiAgcG9seWdvblN0YXJ0OiBmdW5jdGlvbigpIHtcbiAgICBjZW50cm9pZFN0cmVhbS5saW5lU3RhcnQgPSBjZW50cm9pZFJpbmdTdGFydDtcbiAgICBjZW50cm9pZFN0cmVhbS5saW5lRW5kID0gY2VudHJvaWRSaW5nRW5kO1xuICB9LFxuICBwb2x5Z29uRW5kOiBmdW5jdGlvbigpIHtcbiAgICBjZW50cm9pZFN0cmVhbS5wb2ludCA9IGNlbnRyb2lkUG9pbnQ7XG4gICAgY2VudHJvaWRTdHJlYW0ubGluZVN0YXJ0ID0gY2VudHJvaWRMaW5lU3RhcnQ7XG4gICAgY2VudHJvaWRTdHJlYW0ubGluZUVuZCA9IGNlbnRyb2lkTGluZUVuZDtcbiAgfSxcbiAgcmVzdWx0OiBmdW5jdGlvbigpIHtcbiAgICB2YXIgY2VudHJvaWQgPSBaMiA/IFtYMiAvIFoyLCBZMiAvIFoyXVxuICAgICAgICA6IFoxID8gW1gxIC8gWjEsIFkxIC8gWjFdXG4gICAgICAgIDogWjAgPyBbWDAgLyBaMCwgWTAgLyBaMF1cbiAgICAgICAgOiBbTmFOLCBOYU5dO1xuICAgIFgwID0gWTAgPSBaMCA9XG4gICAgWDEgPSBZMSA9IFoxID1cbiAgICBYMiA9IFkyID0gWjIgPSAwO1xuICAgIHJldHVybiBjZW50cm9pZDtcbiAgfVxufTtcblxuZnVuY3Rpb24gY2VudHJvaWRQb2ludCh4LCB5KSB7XG4gIFgwICs9IHg7XG4gIFkwICs9IHk7XG4gICsrWjA7XG59XG5cbmZ1bmN0aW9uIGNlbnRyb2lkTGluZVN0YXJ0KCkge1xuICBjZW50cm9pZFN0cmVhbS5wb2ludCA9IGNlbnRyb2lkUG9pbnRGaXJzdExpbmU7XG59XG5cbmZ1bmN0aW9uIGNlbnRyb2lkUG9pbnRGaXJzdExpbmUoeCwgeSkge1xuICBjZW50cm9pZFN0cmVhbS5wb2ludCA9IGNlbnRyb2lkUG9pbnRMaW5lO1xuICBjZW50cm9pZFBvaW50KHgwID0geCwgeTAgPSB5KTtcbn1cblxuZnVuY3Rpb24gY2VudHJvaWRQb2ludExpbmUoeCwgeSkge1xuICB2YXIgZHggPSB4IC0geDAsIGR5ID0geSAtIHkwLCB6ID0gc3FydChkeCAqIGR4ICsgZHkgKiBkeSk7XG4gIFgxICs9IHogKiAoeDAgKyB4KSAvIDI7XG4gIFkxICs9IHogKiAoeTAgKyB5KSAvIDI7XG4gIFoxICs9IHo7XG4gIGNlbnRyb2lkUG9pbnQoeDAgPSB4LCB5MCA9IHkpO1xufVxuXG5mdW5jdGlvbiBjZW50cm9pZExpbmVFbmQoKSB7XG4gIGNlbnRyb2lkU3RyZWFtLnBvaW50ID0gY2VudHJvaWRQb2ludDtcbn1cblxuZnVuY3Rpb24gY2VudHJvaWRSaW5nU3RhcnQoKSB7XG4gIGNlbnRyb2lkU3RyZWFtLnBvaW50ID0gY2VudHJvaWRQb2ludEZpcnN0UmluZztcbn1cblxuZnVuY3Rpb24gY2VudHJvaWRSaW5nRW5kKCkge1xuICBjZW50cm9pZFBvaW50UmluZyh4MDAsIHkwMCk7XG59XG5cbmZ1bmN0aW9uIGNlbnRyb2lkUG9pbnRGaXJzdFJpbmcoeCwgeSkge1xuICBjZW50cm9pZFN0cmVhbS5wb2ludCA9IGNlbnRyb2lkUG9pbnRSaW5nO1xuICBjZW50cm9pZFBvaW50KHgwMCA9IHgwID0geCwgeTAwID0geTAgPSB5KTtcbn1cblxuZnVuY3Rpb24gY2VudHJvaWRQb2ludFJpbmcoeCwgeSkge1xuICB2YXIgZHggPSB4IC0geDAsXG4gICAgICBkeSA9IHkgLSB5MCxcbiAgICAgIHogPSBzcXJ0KGR4ICogZHggKyBkeSAqIGR5KTtcblxuICBYMSArPSB6ICogKHgwICsgeCkgLyAyO1xuICBZMSArPSB6ICogKHkwICsgeSkgLyAyO1xuICBaMSArPSB6O1xuXG4gIHogPSB5MCAqIHggLSB4MCAqIHk7XG4gIFgyICs9IHogKiAoeDAgKyB4KTtcbiAgWTIgKz0geiAqICh5MCArIHkpO1xuICBaMiArPSB6ICogMztcbiAgY2VudHJvaWRQb2ludCh4MCA9IHgsIHkwID0geSk7XG59XG5cbmV4cG9ydCBkZWZhdWx0IGNlbnRyb2lkU3RyZWFtO1xuIl0sIm1hcHBpbmdzIjoiQUFBQTtBQUFBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7Iiwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///./node_modules/vega/node_modules/d3-geo/src/path/centroid.js\n");

/***/ }),

/***/ "./node_modules/vega/node_modules/d3-geo/src/path/context.js":
/*!*******************************************************************!*\
  !*** ./node_modules/vega/node_modules/d3-geo/src/path/context.js ***!
  \*******************************************************************/
/*! exports provided: default */
/***/ (function(module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"default\", function() { return PathContext; });\n/* harmony import */ var _math_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../math.js */ \"./node_modules/vega/node_modules/d3-geo/src/math.js\");\n/* harmony import */ var _noop_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../noop.js */ \"./node_modules/vega/node_modules/d3-geo/src/noop.js\");\n\n\n\nfunction PathContext(context) {\n  this._context = context;\n}\n\nPathContext.prototype = {\n  _radius: 4.5,\n  pointRadius: function(_) {\n    return this._radius = _, this;\n  },\n  polygonStart: function() {\n    this._line = 0;\n  },\n  polygonEnd: function() {\n    this._line = NaN;\n  },\n  lineStart: function() {\n    this._point = 0;\n  },\n  lineEnd: function() {\n    if (this._line === 0) this._context.closePath();\n    this._point = NaN;\n  },\n  point: function(x, y) {\n    switch (this._point) {\n      case 0: {\n        this._context.moveTo(x, y);\n        this._point = 1;\n        break;\n      }\n      case 1: {\n        this._context.lineTo(x, y);\n        break;\n      }\n      default: {\n        this._context.moveTo(x + this._radius, y);\n        this._context.arc(x, y, this._radius, 0, _math_js__WEBPACK_IMPORTED_MODULE_0__[\"tau\"]);\n        break;\n      }\n    }\n  },\n  result: _noop_js__WEBPACK_IMPORTED_MODULE_1__[\"default\"]\n};\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvdmVnYS9ub2RlX21vZHVsZXMvZDMtZ2VvL3NyYy9wYXRoL2NvbnRleHQuanMuanMiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvdmVnYS9ub2RlX21vZHVsZXMvZDMtZ2VvL3NyYy9wYXRoL2NvbnRleHQuanM/Zjg5NSJdLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge3RhdX0gZnJvbSBcIi4uL21hdGguanNcIjtcbmltcG9ydCBub29wIGZyb20gXCIuLi9ub29wLmpzXCI7XG5cbmV4cG9ydCBkZWZhdWx0IGZ1bmN0aW9uIFBhdGhDb250ZXh0KGNvbnRleHQpIHtcbiAgdGhpcy5fY29udGV4dCA9IGNvbnRleHQ7XG59XG5cblBhdGhDb250ZXh0LnByb3RvdHlwZSA9IHtcbiAgX3JhZGl1czogNC41LFxuICBwb2ludFJhZGl1czogZnVuY3Rpb24oXykge1xuICAgIHJldHVybiB0aGlzLl9yYWRpdXMgPSBfLCB0aGlzO1xuICB9LFxuICBwb2x5Z29uU3RhcnQ6IGZ1bmN0aW9uKCkge1xuICAgIHRoaXMuX2xpbmUgPSAwO1xuICB9LFxuICBwb2x5Z29uRW5kOiBmdW5jdGlvbigpIHtcbiAgICB0aGlzLl9saW5lID0gTmFOO1xuICB9LFxuICBsaW5lU3RhcnQ6IGZ1bmN0aW9uKCkge1xuICAgIHRoaXMuX3BvaW50ID0gMDtcbiAgfSxcbiAgbGluZUVuZDogZnVuY3Rpb24oKSB7XG4gICAgaWYgKHRoaXMuX2xpbmUgPT09IDApIHRoaXMuX2NvbnRleHQuY2xvc2VQYXRoKCk7XG4gICAgdGhpcy5fcG9pbnQgPSBOYU47XG4gIH0sXG4gIHBvaW50OiBmdW5jdGlvbih4LCB5KSB7XG4gICAgc3dpdGNoICh0aGlzLl9wb2ludCkge1xuICAgICAgY2FzZSAwOiB7XG4gICAgICAgIHRoaXMuX2NvbnRleHQubW92ZVRvKHgsIHkpO1xuICAgICAgICB0aGlzLl9wb2ludCA9IDE7XG4gICAgICAgIGJyZWFrO1xuICAgICAgfVxuICAgICAgY2FzZSAxOiB7XG4gICAgICAgIHRoaXMuX2NvbnRleHQubGluZVRvKHgsIHkpO1xuICAgICAgICBicmVhaztcbiAgICAgIH1cbiAgICAgIGRlZmF1bHQ6IHtcbiAgICAgICAgdGhpcy5fY29udGV4dC5tb3ZlVG8oeCArIHRoaXMuX3JhZGl1cywgeSk7XG4gICAgICAgIHRoaXMuX2NvbnRleHQuYXJjKHgsIHksIHRoaXMuX3JhZGl1cywgMCwgdGF1KTtcbiAgICAgICAgYnJlYWs7XG4gICAgICB9XG4gICAgfVxuICB9LFxuICByZXN1bHQ6IG5vb3Bcbn07XG4iXSwibWFwcGluZ3MiOiJBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOyIsInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///./node_modules/vega/node_modules/d3-geo/src/path/context.js\n");

/***/ }),

/***/ "./node_modules/vega/node_modules/d3-geo/src/path/index.js":
/*!*****************************************************************!*\
  !*** ./node_modules/vega/node_modules/d3-geo/src/path/index.js ***!
  \*****************************************************************/
/*! exports provided: default */
/***/ (function(module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _identity_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../identity.js */ \"./node_modules/vega/node_modules/d3-geo/src/identity.js\");\n/* harmony import */ var _stream_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../stream.js */ \"./node_modules/vega/node_modules/d3-geo/src/stream.js\");\n/* harmony import */ var _area_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./area.js */ \"./node_modules/vega/node_modules/d3-geo/src/path/area.js\");\n/* harmony import */ var _bounds_js__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ./bounds.js */ \"./node_modules/vega/node_modules/d3-geo/src/path/bounds.js\");\n/* harmony import */ var _centroid_js__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ./centroid.js */ \"./node_modules/vega/node_modules/d3-geo/src/path/centroid.js\");\n/* harmony import */ var _context_js__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! ./context.js */ \"./node_modules/vega/node_modules/d3-geo/src/path/context.js\");\n/* harmony import */ var _measure_js__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! ./measure.js */ \"./node_modules/vega/node_modules/d3-geo/src/path/measure.js\");\n/* harmony import */ var _string_js__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! ./string.js */ \"./node_modules/vega/node_modules/d3-geo/src/path/string.js\");\n\n\n\n\n\n\n\n\n\n/* harmony default export */ __webpack_exports__[\"default\"] = (function(projection, context) {\n  var pointRadius = 4.5,\n      projectionStream,\n      contextStream;\n\n  function path(object) {\n    if (object) {\n      if (typeof pointRadius === \"function\") contextStream.pointRadius(+pointRadius.apply(this, arguments));\n      Object(_stream_js__WEBPACK_IMPORTED_MODULE_1__[\"default\"])(object, projectionStream(contextStream));\n    }\n    return contextStream.result();\n  }\n\n  path.area = function(object) {\n    Object(_stream_js__WEBPACK_IMPORTED_MODULE_1__[\"default\"])(object, projectionStream(_area_js__WEBPACK_IMPORTED_MODULE_2__[\"default\"]));\n    return _area_js__WEBPACK_IMPORTED_MODULE_2__[\"default\"].result();\n  };\n\n  path.measure = function(object) {\n    Object(_stream_js__WEBPACK_IMPORTED_MODULE_1__[\"default\"])(object, projectionStream(_measure_js__WEBPACK_IMPORTED_MODULE_6__[\"default\"]));\n    return _measure_js__WEBPACK_IMPORTED_MODULE_6__[\"default\"].result();\n  };\n\n  path.bounds = function(object) {\n    Object(_stream_js__WEBPACK_IMPORTED_MODULE_1__[\"default\"])(object, projectionStream(_bounds_js__WEBPACK_IMPORTED_MODULE_3__[\"default\"]));\n    return _bounds_js__WEBPACK_IMPORTED_MODULE_3__[\"default\"].result();\n  };\n\n  path.centroid = function(object) {\n    Object(_stream_js__WEBPACK_IMPORTED_MODULE_1__[\"default\"])(object, projectionStream(_centroid_js__WEBPACK_IMPORTED_MODULE_4__[\"default\"]));\n    return _centroid_js__WEBPACK_IMPORTED_MODULE_4__[\"default\"].result();\n  };\n\n  path.projection = function(_) {\n    return arguments.length ? (projectionStream = _ == null ? (projection = null, _identity_js__WEBPACK_IMPORTED_MODULE_0__[\"default\"]) : (projection = _).stream, path) : projection;\n  };\n\n  path.context = function(_) {\n    if (!arguments.length) return context;\n    contextStream = _ == null ? (context = null, new _string_js__WEBPACK_IMPORTED_MODULE_7__[\"default\"]) : new _context_js__WEBPACK_IMPORTED_MODULE_5__[\"default\"](context = _);\n    if (typeof pointRadius !== \"function\") contextStream.pointRadius(pointRadius);\n    return path;\n  };\n\n  path.pointRadius = function(_) {\n    if (!arguments.length) return pointRadius;\n    pointRadius = typeof _ === \"function\" ? _ : (contextStream.pointRadius(+_), +_);\n    return path;\n  };\n\n  return path.projection(projection).context(context);\n});\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvdmVnYS9ub2RlX21vZHVsZXMvZDMtZ2VvL3NyYy9wYXRoL2luZGV4LmpzLmpzIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL3ZlZ2Evbm9kZV9tb2R1bGVzL2QzLWdlby9zcmMvcGF0aC9pbmRleC5qcz9iZThlIl0sInNvdXJjZXNDb250ZW50IjpbImltcG9ydCBpZGVudGl0eSBmcm9tIFwiLi4vaWRlbnRpdHkuanNcIjtcbmltcG9ydCBzdHJlYW0gZnJvbSBcIi4uL3N0cmVhbS5qc1wiO1xuaW1wb3J0IHBhdGhBcmVhIGZyb20gXCIuL2FyZWEuanNcIjtcbmltcG9ydCBwYXRoQm91bmRzIGZyb20gXCIuL2JvdW5kcy5qc1wiO1xuaW1wb3J0IHBhdGhDZW50cm9pZCBmcm9tIFwiLi9jZW50cm9pZC5qc1wiO1xuaW1wb3J0IFBhdGhDb250ZXh0IGZyb20gXCIuL2NvbnRleHQuanNcIjtcbmltcG9ydCBwYXRoTWVhc3VyZSBmcm9tIFwiLi9tZWFzdXJlLmpzXCI7XG5pbXBvcnQgUGF0aFN0cmluZyBmcm9tIFwiLi9zdHJpbmcuanNcIjtcblxuZXhwb3J0IGRlZmF1bHQgZnVuY3Rpb24ocHJvamVjdGlvbiwgY29udGV4dCkge1xuICB2YXIgcG9pbnRSYWRpdXMgPSA0LjUsXG4gICAgICBwcm9qZWN0aW9uU3RyZWFtLFxuICAgICAgY29udGV4dFN0cmVhbTtcblxuICBmdW5jdGlvbiBwYXRoKG9iamVjdCkge1xuICAgIGlmIChvYmplY3QpIHtcbiAgICAgIGlmICh0eXBlb2YgcG9pbnRSYWRpdXMgPT09IFwiZnVuY3Rpb25cIikgY29udGV4dFN0cmVhbS5wb2ludFJhZGl1cygrcG9pbnRSYWRpdXMuYXBwbHkodGhpcywgYXJndW1lbnRzKSk7XG4gICAgICBzdHJlYW0ob2JqZWN0LCBwcm9qZWN0aW9uU3RyZWFtKGNvbnRleHRTdHJlYW0pKTtcbiAgICB9XG4gICAgcmV0dXJuIGNvbnRleHRTdHJlYW0ucmVzdWx0KCk7XG4gIH1cblxuICBwYXRoLmFyZWEgPSBmdW5jdGlvbihvYmplY3QpIHtcbiAgICBzdHJlYW0ob2JqZWN0LCBwcm9qZWN0aW9uU3RyZWFtKHBhdGhBcmVhKSk7XG4gICAgcmV0dXJuIHBhdGhBcmVhLnJlc3VsdCgpO1xuICB9O1xuXG4gIHBhdGgubWVhc3VyZSA9IGZ1bmN0aW9uKG9iamVjdCkge1xuICAgIHN0cmVhbShvYmplY3QsIHByb2plY3Rpb25TdHJlYW0ocGF0aE1lYXN1cmUpKTtcbiAgICByZXR1cm4gcGF0aE1lYXN1cmUucmVzdWx0KCk7XG4gIH07XG5cbiAgcGF0aC5ib3VuZHMgPSBmdW5jdGlvbihvYmplY3QpIHtcbiAgICBzdHJlYW0ob2JqZWN0LCBwcm9qZWN0aW9uU3RyZWFtKHBhdGhCb3VuZHMpKTtcbiAgICByZXR1cm4gcGF0aEJvdW5kcy5yZXN1bHQoKTtcbiAgfTtcblxuICBwYXRoLmNlbnRyb2lkID0gZnVuY3Rpb24ob2JqZWN0KSB7XG4gICAgc3RyZWFtKG9iamVjdCwgcHJvamVjdGlvblN0cmVhbShwYXRoQ2VudHJvaWQpKTtcbiAgICByZXR1cm4gcGF0aENlbnRyb2lkLnJlc3VsdCgpO1xuICB9O1xuXG4gIHBhdGgucHJvamVjdGlvbiA9IGZ1bmN0aW9uKF8pIHtcbiAgICByZXR1cm4gYXJndW1lbnRzLmxlbmd0aCA/IChwcm9qZWN0aW9uU3RyZWFtID0gXyA9PSBudWxsID8gKHByb2plY3Rpb24gPSBudWxsLCBpZGVudGl0eSkgOiAocHJvamVjdGlvbiA9IF8pLnN0cmVhbSwgcGF0aCkgOiBwcm9qZWN0aW9uO1xuICB9O1xuXG4gIHBhdGguY29udGV4dCA9IGZ1bmN0aW9uKF8pIHtcbiAgICBpZiAoIWFyZ3VtZW50cy5sZW5ndGgpIHJldHVybiBjb250ZXh0O1xuICAgIGNvbnRleHRTdHJlYW0gPSBfID09IG51bGwgPyAoY29udGV4dCA9IG51bGwsIG5ldyBQYXRoU3RyaW5nKSA6IG5ldyBQYXRoQ29udGV4dChjb250ZXh0ID0gXyk7XG4gICAgaWYgKHR5cGVvZiBwb2ludFJhZGl1cyAhPT0gXCJmdW5jdGlvblwiKSBjb250ZXh0U3RyZWFtLnBvaW50UmFkaXVzKHBvaW50UmFkaXVzKTtcbiAgICByZXR1cm4gcGF0aDtcbiAgfTtcblxuICBwYXRoLnBvaW50UmFkaXVzID0gZnVuY3Rpb24oXykge1xuICAgIGlmICghYXJndW1lbnRzLmxlbmd0aCkgcmV0dXJuIHBvaW50UmFkaXVzO1xuICAgIHBvaW50UmFkaXVzID0gdHlwZW9mIF8gPT09IFwiZnVuY3Rpb25cIiA/IF8gOiAoY29udGV4dFN0cmVhbS5wb2ludFJhZGl1cygrXyksICtfKTtcbiAgICByZXR1cm4gcGF0aDtcbiAgfTtcblxuICByZXR1cm4gcGF0aC5wcm9qZWN0aW9uKHByb2plY3Rpb24pLmNvbnRleHQoY29udGV4dCk7XG59XG4iXSwibWFwcGluZ3MiOiJBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOyIsInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///./node_modules/vega/node_modules/d3-geo/src/path/index.js\n");

/***/ }),

/***/ "./node_modules/vega/node_modules/d3-geo/src/path/measure.js":
/*!*******************************************************************!*\
  !*** ./node_modules/vega/node_modules/d3-geo/src/path/measure.js ***!
  \*******************************************************************/
/*! exports provided: default */
/***/ (function(module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var d3_array__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! d3-array */ \"./node_modules/d3-array/src/index.js\");\n/* harmony import */ var _math_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../math.js */ \"./node_modules/vega/node_modules/d3-geo/src/math.js\");\n/* harmony import */ var _noop_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ../noop.js */ \"./node_modules/vega/node_modules/d3-geo/src/noop.js\");\n\n\n\n\nvar lengthSum = new d3_array__WEBPACK_IMPORTED_MODULE_0__[\"Adder\"](),\n    lengthRing,\n    x00,\n    y00,\n    x0,\n    y0;\n\nvar lengthStream = {\n  point: _noop_js__WEBPACK_IMPORTED_MODULE_2__[\"default\"],\n  lineStart: function() {\n    lengthStream.point = lengthPointFirst;\n  },\n  lineEnd: function() {\n    if (lengthRing) lengthPoint(x00, y00);\n    lengthStream.point = _noop_js__WEBPACK_IMPORTED_MODULE_2__[\"default\"];\n  },\n  polygonStart: function() {\n    lengthRing = true;\n  },\n  polygonEnd: function() {\n    lengthRing = null;\n  },\n  result: function() {\n    var length = +lengthSum;\n    lengthSum = new d3_array__WEBPACK_IMPORTED_MODULE_0__[\"Adder\"]();\n    return length;\n  }\n};\n\nfunction lengthPointFirst(x, y) {\n  lengthStream.point = lengthPoint;\n  x00 = x0 = x, y00 = y0 = y;\n}\n\nfunction lengthPoint(x, y) {\n  x0 -= x, y0 -= y;\n  lengthSum.add(Object(_math_js__WEBPACK_IMPORTED_MODULE_1__[\"sqrt\"])(x0 * x0 + y0 * y0));\n  x0 = x, y0 = y;\n}\n\n/* harmony default export */ __webpack_exports__[\"default\"] = (lengthStream);\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvdmVnYS9ub2RlX21vZHVsZXMvZDMtZ2VvL3NyYy9wYXRoL21lYXN1cmUuanMuanMiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvdmVnYS9ub2RlX21vZHVsZXMvZDMtZ2VvL3NyYy9wYXRoL21lYXN1cmUuanM/MDQzNCJdLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge0FkZGVyfSBmcm9tIFwiZDMtYXJyYXlcIjtcbmltcG9ydCB7c3FydH0gZnJvbSBcIi4uL21hdGguanNcIjtcbmltcG9ydCBub29wIGZyb20gXCIuLi9ub29wLmpzXCI7XG5cbnZhciBsZW5ndGhTdW0gPSBuZXcgQWRkZXIoKSxcbiAgICBsZW5ndGhSaW5nLFxuICAgIHgwMCxcbiAgICB5MDAsXG4gICAgeDAsXG4gICAgeTA7XG5cbnZhciBsZW5ndGhTdHJlYW0gPSB7XG4gIHBvaW50OiBub29wLFxuICBsaW5lU3RhcnQ6IGZ1bmN0aW9uKCkge1xuICAgIGxlbmd0aFN0cmVhbS5wb2ludCA9IGxlbmd0aFBvaW50Rmlyc3Q7XG4gIH0sXG4gIGxpbmVFbmQ6IGZ1bmN0aW9uKCkge1xuICAgIGlmIChsZW5ndGhSaW5nKSBsZW5ndGhQb2ludCh4MDAsIHkwMCk7XG4gICAgbGVuZ3RoU3RyZWFtLnBvaW50ID0gbm9vcDtcbiAgfSxcbiAgcG9seWdvblN0YXJ0OiBmdW5jdGlvbigpIHtcbiAgICBsZW5ndGhSaW5nID0gdHJ1ZTtcbiAgfSxcbiAgcG9seWdvbkVuZDogZnVuY3Rpb24oKSB7XG4gICAgbGVuZ3RoUmluZyA9IG51bGw7XG4gIH0sXG4gIHJlc3VsdDogZnVuY3Rpb24oKSB7XG4gICAgdmFyIGxlbmd0aCA9ICtsZW5ndGhTdW07XG4gICAgbGVuZ3RoU3VtID0gbmV3IEFkZGVyKCk7XG4gICAgcmV0dXJuIGxlbmd0aDtcbiAgfVxufTtcblxuZnVuY3Rpb24gbGVuZ3RoUG9pbnRGaXJzdCh4LCB5KSB7XG4gIGxlbmd0aFN0cmVhbS5wb2ludCA9IGxlbmd0aFBvaW50O1xuICB4MDAgPSB4MCA9IHgsIHkwMCA9IHkwID0geTtcbn1cblxuZnVuY3Rpb24gbGVuZ3RoUG9pbnQoeCwgeSkge1xuICB4MCAtPSB4LCB5MCAtPSB5O1xuICBsZW5ndGhTdW0uYWRkKHNxcnQoeDAgKiB4MCArIHkwICogeTApKTtcbiAgeDAgPSB4LCB5MCA9IHk7XG59XG5cbmV4cG9ydCBkZWZhdWx0IGxlbmd0aFN0cmVhbTtcbiJdLCJtYXBwaW5ncyI6IkFBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7Iiwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///./node_modules/vega/node_modules/d3-geo/src/path/measure.js\n");

/***/ }),

/***/ "./node_modules/vega/node_modules/d3-geo/src/path/string.js":
/*!******************************************************************!*\
  !*** ./node_modules/vega/node_modules/d3-geo/src/path/string.js ***!
  \******************************************************************/
/*! exports provided: default */
/***/ (function(module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"default\", function() { return PathString; });\nfunction PathString() {\n  this._string = [];\n}\n\nPathString.prototype = {\n  _radius: 4.5,\n  _circle: circle(4.5),\n  pointRadius: function(_) {\n    if ((_ = +_) !== this._radius) this._radius = _, this._circle = null;\n    return this;\n  },\n  polygonStart: function() {\n    this._line = 0;\n  },\n  polygonEnd: function() {\n    this._line = NaN;\n  },\n  lineStart: function() {\n    this._point = 0;\n  },\n  lineEnd: function() {\n    if (this._line === 0) this._string.push(\"Z\");\n    this._point = NaN;\n  },\n  point: function(x, y) {\n    switch (this._point) {\n      case 0: {\n        this._string.push(\"M\", x, \",\", y);\n        this._point = 1;\n        break;\n      }\n      case 1: {\n        this._string.push(\"L\", x, \",\", y);\n        break;\n      }\n      default: {\n        if (this._circle == null) this._circle = circle(this._radius);\n        this._string.push(\"M\", x, \",\", y, this._circle);\n        break;\n      }\n    }\n  },\n  result: function() {\n    if (this._string.length) {\n      var result = this._string.join(\"\");\n      this._string = [];\n      return result;\n    } else {\n      return null;\n    }\n  }\n};\n\nfunction circle(radius) {\n  return \"m0,\" + radius\n      + \"a\" + radius + \",\" + radius + \" 0 1,1 0,\" + -2 * radius\n      + \"a\" + radius + \",\" + radius + \" 0 1,1 0,\" + 2 * radius\n      + \"z\";\n}\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvdmVnYS9ub2RlX21vZHVsZXMvZDMtZ2VvL3NyYy9wYXRoL3N0cmluZy5qcy5qcyIsInNvdXJjZXMiOlsid2VicGFjazovLy8uL25vZGVfbW9kdWxlcy92ZWdhL25vZGVfbW9kdWxlcy9kMy1nZW8vc3JjL3BhdGgvc3RyaW5nLmpzP2I5YmMiXSwic291cmNlc0NvbnRlbnQiOlsiZXhwb3J0IGRlZmF1bHQgZnVuY3Rpb24gUGF0aFN0cmluZygpIHtcbiAgdGhpcy5fc3RyaW5nID0gW107XG59XG5cblBhdGhTdHJpbmcucHJvdG90eXBlID0ge1xuICBfcmFkaXVzOiA0LjUsXG4gIF9jaXJjbGU6IGNpcmNsZSg0LjUpLFxuICBwb2ludFJhZGl1czogZnVuY3Rpb24oXykge1xuICAgIGlmICgoXyA9ICtfKSAhPT0gdGhpcy5fcmFkaXVzKSB0aGlzLl9yYWRpdXMgPSBfLCB0aGlzLl9jaXJjbGUgPSBudWxsO1xuICAgIHJldHVybiB0aGlzO1xuICB9LFxuICBwb2x5Z29uU3RhcnQ6IGZ1bmN0aW9uKCkge1xuICAgIHRoaXMuX2xpbmUgPSAwO1xuICB9LFxuICBwb2x5Z29uRW5kOiBmdW5jdGlvbigpIHtcbiAgICB0aGlzLl9saW5lID0gTmFOO1xuICB9LFxuICBsaW5lU3RhcnQ6IGZ1bmN0aW9uKCkge1xuICAgIHRoaXMuX3BvaW50ID0gMDtcbiAgfSxcbiAgbGluZUVuZDogZnVuY3Rpb24oKSB7XG4gICAgaWYgKHRoaXMuX2xpbmUgPT09IDApIHRoaXMuX3N0cmluZy5wdXNoKFwiWlwiKTtcbiAgICB0aGlzLl9wb2ludCA9IE5hTjtcbiAgfSxcbiAgcG9pbnQ6IGZ1bmN0aW9uKHgsIHkpIHtcbiAgICBzd2l0Y2ggKHRoaXMuX3BvaW50KSB7XG4gICAgICBjYXNlIDA6IHtcbiAgICAgICAgdGhpcy5fc3RyaW5nLnB1c2goXCJNXCIsIHgsIFwiLFwiLCB5KTtcbiAgICAgICAgdGhpcy5fcG9pbnQgPSAxO1xuICAgICAgICBicmVhaztcbiAgICAgIH1cbiAgICAgIGNhc2UgMToge1xuICAgICAgICB0aGlzLl9zdHJpbmcucHVzaChcIkxcIiwgeCwgXCIsXCIsIHkpO1xuICAgICAgICBicmVhaztcbiAgICAgIH1cbiAgICAgIGRlZmF1bHQ6IHtcbiAgICAgICAgaWYgKHRoaXMuX2NpcmNsZSA9PSBudWxsKSB0aGlzLl9jaXJjbGUgPSBjaXJjbGUodGhpcy5fcmFkaXVzKTtcbiAgICAgICAgdGhpcy5fc3RyaW5nLnB1c2goXCJNXCIsIHgsIFwiLFwiLCB5LCB0aGlzLl9jaXJjbGUpO1xuICAgICAgICBicmVhaztcbiAgICAgIH1cbiAgICB9XG4gIH0sXG4gIHJlc3VsdDogZnVuY3Rpb24oKSB7XG4gICAgaWYgKHRoaXMuX3N0cmluZy5sZW5ndGgpIHtcbiAgICAgIHZhciByZXN1bHQgPSB0aGlzLl9zdHJpbmcuam9pbihcIlwiKTtcbiAgICAgIHRoaXMuX3N0cmluZyA9IFtdO1xuICAgICAgcmV0dXJuIHJlc3VsdDtcbiAgICB9IGVsc2Uge1xuICAgICAgcmV0dXJuIG51bGw7XG4gICAgfVxuICB9XG59O1xuXG5mdW5jdGlvbiBjaXJjbGUocmFkaXVzKSB7XG4gIHJldHVybiBcIm0wLFwiICsgcmFkaXVzXG4gICAgICArIFwiYVwiICsgcmFkaXVzICsgXCIsXCIgKyByYWRpdXMgKyBcIiAwIDEsMSAwLFwiICsgLTIgKiByYWRpdXNcbiAgICAgICsgXCJhXCIgKyByYWRpdXMgKyBcIixcIiArIHJhZGl1cyArIFwiIDAgMSwxIDAsXCIgKyAyICogcmFkaXVzXG4gICAgICArIFwielwiO1xufVxuIl0sIm1hcHBpbmdzIjoiQUFBQTtBQUFBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTsiLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///./node_modules/vega/node_modules/d3-geo/src/path/string.js\n");

/***/ }),

/***/ "./node_modules/vega/node_modules/d3-geo/src/pointEqual.js":
/*!*****************************************************************!*\
  !*** ./node_modules/vega/node_modules/d3-geo/src/pointEqual.js ***!
  \*****************************************************************/
/*! exports provided: default */
/***/ (function(module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _math_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./math.js */ \"./node_modules/vega/node_modules/d3-geo/src/math.js\");\n\n\n/* harmony default export */ __webpack_exports__[\"default\"] = (function(a, b) {\n  return Object(_math_js__WEBPACK_IMPORTED_MODULE_0__[\"abs\"])(a[0] - b[0]) < _math_js__WEBPACK_IMPORTED_MODULE_0__[\"epsilon\"] && Object(_math_js__WEBPACK_IMPORTED_MODULE_0__[\"abs\"])(a[1] - b[1]) < _math_js__WEBPACK_IMPORTED_MODULE_0__[\"epsilon\"];\n});\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvdmVnYS9ub2RlX21vZHVsZXMvZDMtZ2VvL3NyYy9wb2ludEVxdWFsLmpzLmpzIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL3ZlZ2Evbm9kZV9tb2R1bGVzL2QzLWdlby9zcmMvcG9pbnRFcXVhbC5qcz9kYzc0Il0sInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7YWJzLCBlcHNpbG9ufSBmcm9tIFwiLi9tYXRoLmpzXCI7XG5cbmV4cG9ydCBkZWZhdWx0IGZ1bmN0aW9uKGEsIGIpIHtcbiAgcmV0dXJuIGFicyhhWzBdIC0gYlswXSkgPCBlcHNpbG9uICYmIGFicyhhWzFdIC0gYlsxXSkgPCBlcHNpbG9uO1xufVxuIl0sIm1hcHBpbmdzIjoiQUFBQTtBQUFBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTsiLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///./node_modules/vega/node_modules/d3-geo/src/pointEqual.js\n");

/***/ }),

/***/ "./node_modules/vega/node_modules/d3-geo/src/polygonContains.js":
/*!**********************************************************************!*\
  !*** ./node_modules/vega/node_modules/d3-geo/src/polygonContains.js ***!
  \**********************************************************************/
/*! exports provided: default */
/***/ (function(module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var d3_array__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! d3-array */ \"./node_modules/d3-array/src/index.js\");\n/* harmony import */ var _cartesian_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./cartesian.js */ \"./node_modules/vega/node_modules/d3-geo/src/cartesian.js\");\n/* harmony import */ var _math_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./math.js */ \"./node_modules/vega/node_modules/d3-geo/src/math.js\");\n\n\n\n\nfunction longitude(point) {\n  if (Object(_math_js__WEBPACK_IMPORTED_MODULE_2__[\"abs\"])(point[0]) <= _math_js__WEBPACK_IMPORTED_MODULE_2__[\"pi\"])\n    return point[0];\n  else\n    return Object(_math_js__WEBPACK_IMPORTED_MODULE_2__[\"sign\"])(point[0]) * ((Object(_math_js__WEBPACK_IMPORTED_MODULE_2__[\"abs\"])(point[0]) + _math_js__WEBPACK_IMPORTED_MODULE_2__[\"pi\"]) % _math_js__WEBPACK_IMPORTED_MODULE_2__[\"tau\"] - _math_js__WEBPACK_IMPORTED_MODULE_2__[\"pi\"]);\n}\n\n/* harmony default export */ __webpack_exports__[\"default\"] = (function(polygon, point) {\n  var lambda = longitude(point),\n      phi = point[1],\n      sinPhi = Object(_math_js__WEBPACK_IMPORTED_MODULE_2__[\"sin\"])(phi),\n      normal = [Object(_math_js__WEBPACK_IMPORTED_MODULE_2__[\"sin\"])(lambda), -Object(_math_js__WEBPACK_IMPORTED_MODULE_2__[\"cos\"])(lambda), 0],\n      angle = 0,\n      winding = 0;\n\n  var sum = new d3_array__WEBPACK_IMPORTED_MODULE_0__[\"Adder\"]();\n\n  if (sinPhi === 1) phi = _math_js__WEBPACK_IMPORTED_MODULE_2__[\"halfPi\"] + _math_js__WEBPACK_IMPORTED_MODULE_2__[\"epsilon\"];\n  else if (sinPhi === -1) phi = -_math_js__WEBPACK_IMPORTED_MODULE_2__[\"halfPi\"] - _math_js__WEBPACK_IMPORTED_MODULE_2__[\"epsilon\"];\n\n  for (var i = 0, n = polygon.length; i < n; ++i) {\n    if (!(m = (ring = polygon[i]).length)) continue;\n    var ring,\n        m,\n        point0 = ring[m - 1],\n        lambda0 = longitude(point0),\n        phi0 = point0[1] / 2 + _math_js__WEBPACK_IMPORTED_MODULE_2__[\"quarterPi\"],\n        sinPhi0 = Object(_math_js__WEBPACK_IMPORTED_MODULE_2__[\"sin\"])(phi0),\n        cosPhi0 = Object(_math_js__WEBPACK_IMPORTED_MODULE_2__[\"cos\"])(phi0);\n\n    for (var j = 0; j < m; ++j, lambda0 = lambda1, sinPhi0 = sinPhi1, cosPhi0 = cosPhi1, point0 = point1) {\n      var point1 = ring[j],\n          lambda1 = longitude(point1),\n          phi1 = point1[1] / 2 + _math_js__WEBPACK_IMPORTED_MODULE_2__[\"quarterPi\"],\n          sinPhi1 = Object(_math_js__WEBPACK_IMPORTED_MODULE_2__[\"sin\"])(phi1),\n          cosPhi1 = Object(_math_js__WEBPACK_IMPORTED_MODULE_2__[\"cos\"])(phi1),\n          delta = lambda1 - lambda0,\n          sign = delta >= 0 ? 1 : -1,\n          absDelta = sign * delta,\n          antimeridian = absDelta > _math_js__WEBPACK_IMPORTED_MODULE_2__[\"pi\"],\n          k = sinPhi0 * sinPhi1;\n\n      sum.add(Object(_math_js__WEBPACK_IMPORTED_MODULE_2__[\"atan2\"])(k * sign * Object(_math_js__WEBPACK_IMPORTED_MODULE_2__[\"sin\"])(absDelta), cosPhi0 * cosPhi1 + k * Object(_math_js__WEBPACK_IMPORTED_MODULE_2__[\"cos\"])(absDelta)));\n      angle += antimeridian ? delta + sign * _math_js__WEBPACK_IMPORTED_MODULE_2__[\"tau\"] : delta;\n\n      // Are the longitudes either side of the point’s meridian (lambda),\n      // and are the latitudes smaller than the parallel (phi)?\n      if (antimeridian ^ lambda0 >= lambda ^ lambda1 >= lambda) {\n        var arc = Object(_cartesian_js__WEBPACK_IMPORTED_MODULE_1__[\"cartesianCross\"])(Object(_cartesian_js__WEBPACK_IMPORTED_MODULE_1__[\"cartesian\"])(point0), Object(_cartesian_js__WEBPACK_IMPORTED_MODULE_1__[\"cartesian\"])(point1));\n        Object(_cartesian_js__WEBPACK_IMPORTED_MODULE_1__[\"cartesianNormalizeInPlace\"])(arc);\n        var intersection = Object(_cartesian_js__WEBPACK_IMPORTED_MODULE_1__[\"cartesianCross\"])(normal, arc);\n        Object(_cartesian_js__WEBPACK_IMPORTED_MODULE_1__[\"cartesianNormalizeInPlace\"])(intersection);\n        var phiArc = (antimeridian ^ delta >= 0 ? -1 : 1) * Object(_math_js__WEBPACK_IMPORTED_MODULE_2__[\"asin\"])(intersection[2]);\n        if (phi > phiArc || phi === phiArc && (arc[0] || arc[1])) {\n          winding += antimeridian ^ delta >= 0 ? 1 : -1;\n        }\n      }\n    }\n  }\n\n  // First, determine whether the South pole is inside or outside:\n  //\n  // It is inside if:\n  // * the polygon winds around it in a clockwise direction.\n  // * the polygon does not (cumulatively) wind around it, but has a negative\n  //   (counter-clockwise) area.\n  //\n  // Second, count the (signed) number of times a segment crosses a lambda\n  // from the point to the South pole.  If it is zero, then the point is the\n  // same side as the South pole.\n\n  return (angle < -_math_js__WEBPACK_IMPORTED_MODULE_2__[\"epsilon\"] || angle < _math_js__WEBPACK_IMPORTED_MODULE_2__[\"epsilon\"] && sum < -_math_js__WEBPACK_IMPORTED_MODULE_2__[\"epsilon2\"]) ^ (winding & 1);\n});\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,[encoded data, 4716 characters]\n//# sourceURL=webpack-internal:///./node_modules/vega/node_modules/d3-geo/src/polygonContains.js\n");

/***/ }),

/***/ "./node_modules/vega/node_modules/d3-geo/src/projection/albers.js":
/*!************************************************************************!*\
  !*** ./node_modules/vega/node_modules/d3-geo/src/projection/albers.js ***!
  \************************************************************************/
/*! exports provided: default */
/***/ (function(module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _conicEqualArea_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./conicEqualArea.js */ \"./node_modules/vega/node_modules/d3-geo/src/projection/conicEqualArea.js\");\n\n\n/* harmony default export */ __webpack_exports__[\"default\"] = (function() {\n  return Object(_conicEqualArea_js__WEBPACK_IMPORTED_MODULE_0__[\"default\"])()\n      .parallels([29.5, 45.5])\n      .scale(1070)\n      .translate([480, 250])\n      .rotate([96, 0])\n      .center([-0.6, 38.7]);\n});\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvdmVnYS9ub2RlX21vZHVsZXMvZDMtZ2VvL3NyYy9wcm9qZWN0aW9uL2FsYmVycy5qcy5qcyIsInNvdXJjZXMiOlsid2VicGFjazovLy8uL25vZGVfbW9kdWxlcy92ZWdhL25vZGVfbW9kdWxlcy9kMy1nZW8vc3JjL3Byb2plY3Rpb24vYWxiZXJzLmpzPzI0ZGMiXSwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IGNvbmljRXF1YWxBcmVhIGZyb20gXCIuL2NvbmljRXF1YWxBcmVhLmpzXCI7XG5cbmV4cG9ydCBkZWZhdWx0IGZ1bmN0aW9uKCkge1xuICByZXR1cm4gY29uaWNFcXVhbEFyZWEoKVxuICAgICAgLnBhcmFsbGVscyhbMjkuNSwgNDUuNV0pXG4gICAgICAuc2NhbGUoMTA3MClcbiAgICAgIC50cmFuc2xhdGUoWzQ4MCwgMjUwXSlcbiAgICAgIC5yb3RhdGUoWzk2LCAwXSlcbiAgICAgIC5jZW50ZXIoWy0wLjYsIDM4LjddKTtcbn1cbiJdLCJtYXBwaW5ncyI6IkFBQUE7QUFBQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOyIsInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///./node_modules/vega/node_modules/d3-geo/src/projection/albers.js\n");

/***/ }),

/***/ "./node_modules/vega/node_modules/d3-geo/src/projection/albersUsa.js":
/*!***************************************************************************!*\
  !*** ./node_modules/vega/node_modules/d3-geo/src/projection/albersUsa.js ***!
  \***************************************************************************/
/*! exports provided: default */
/***/ (function(module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _math_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../math.js */ \"./node_modules/vega/node_modules/d3-geo/src/math.js\");\n/* harmony import */ var _albers_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./albers.js */ \"./node_modules/vega/node_modules/d3-geo/src/projection/albers.js\");\n/* harmony import */ var _conicEqualArea_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./conicEqualArea.js */ \"./node_modules/vega/node_modules/d3-geo/src/projection/conicEqualArea.js\");\n/* harmony import */ var _fit_js__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ./fit.js */ \"./node_modules/vega/node_modules/d3-geo/src/projection/fit.js\");\n\n\n\n\n\n// The projections must have mutually exclusive clip regions on the sphere,\n// as this will avoid emitting interleaving lines and polygons.\nfunction multiplex(streams) {\n  var n = streams.length;\n  return {\n    point: function(x, y) { var i = -1; while (++i < n) streams[i].point(x, y); },\n    sphere: function() { var i = -1; while (++i < n) streams[i].sphere(); },\n    lineStart: function() { var i = -1; while (++i < n) streams[i].lineStart(); },\n    lineEnd: function() { var i = -1; while (++i < n) streams[i].lineEnd(); },\n    polygonStart: function() { var i = -1; while (++i < n) streams[i].polygonStart(); },\n    polygonEnd: function() { var i = -1; while (++i < n) streams[i].polygonEnd(); }\n  };\n}\n\n// A composite projection for the United States, configured by default for\n// 960×500. The projection also works quite well at 960×600 if you change the\n// scale to 1285 and adjust the translate accordingly. The set of standard\n// parallels for each region comes from USGS, which is published here:\n// http://egsc.usgs.gov/isb/pubs/MapProjections/projections.html#albers\n/* harmony default export */ __webpack_exports__[\"default\"] = (function() {\n  var cache,\n      cacheStream,\n      lower48 = Object(_albers_js__WEBPACK_IMPORTED_MODULE_1__[\"default\"])(), lower48Point,\n      alaska = Object(_conicEqualArea_js__WEBPACK_IMPORTED_MODULE_2__[\"default\"])().rotate([154, 0]).center([-2, 58.5]).parallels([55, 65]), alaskaPoint, // EPSG:3338\n      hawaii = Object(_conicEqualArea_js__WEBPACK_IMPORTED_MODULE_2__[\"default\"])().rotate([157, 0]).center([-3, 19.9]).parallels([8, 18]), hawaiiPoint, // ESRI:102007\n      point, pointStream = {point: function(x, y) { point = [x, y]; }};\n\n  function albersUsa(coordinates) {\n    var x = coordinates[0], y = coordinates[1];\n    return point = null,\n        (lower48Point.point(x, y), point)\n        || (alaskaPoint.point(x, y), point)\n        || (hawaiiPoint.point(x, y), point);\n  }\n\n  albersUsa.invert = function(coordinates) {\n    var k = lower48.scale(),\n        t = lower48.translate(),\n        x = (coordinates[0] - t[0]) / k,\n        y = (coordinates[1] - t[1]) / k;\n    return (y >= 0.120 && y < 0.234 && x >= -0.425 && x < -0.214 ? alaska\n        : y >= 0.166 && y < 0.234 && x >= -0.214 && x < -0.115 ? hawaii\n        : lower48).invert(coordinates);\n  };\n\n  albersUsa.stream = function(stream) {\n    return cache && cacheStream === stream ? cache : cache = multiplex([lower48.stream(cacheStream = stream), alaska.stream(stream), hawaii.stream(stream)]);\n  };\n\n  albersUsa.precision = function(_) {\n    if (!arguments.length) return lower48.precision();\n    lower48.precision(_), alaska.precision(_), hawaii.precision(_);\n    return reset();\n  };\n\n  albersUsa.scale = function(_) {\n    if (!arguments.length) return lower48.scale();\n    lower48.scale(_), alaska.scale(_ * 0.35), hawaii.scale(_);\n    return albersUsa.translate(lower48.translate());\n  };\n\n  albersUsa.translate = function(_) {\n    if (!arguments.length) return lower48.translate();\n    var k = lower48.scale(), x = +_[0], y = +_[1];\n\n    lower48Point = lower48\n        .translate(_)\n        .clipExtent([[x - 0.455 * k, y - 0.238 * k], [x + 0.455 * k, y + 0.238 * k]])\n        .stream(pointStream);\n\n    alaskaPoint = alaska\n        .translate([x - 0.307 * k, y + 0.201 * k])\n        .clipExtent([[x - 0.425 * k + _math_js__WEBPACK_IMPORTED_MODULE_0__[\"epsilon\"], y + 0.120 * k + _math_js__WEBPACK_IMPORTED_MODULE_0__[\"epsilon\"]], [x - 0.214 * k - _math_js__WEBPACK_IMPORTED_MODULE_0__[\"epsilon\"], y + 0.234 * k - _math_js__WEBPACK_IMPORTED_MODULE_0__[\"epsilon\"]]])\n        .stream(pointStream);\n\n    hawaiiPoint = hawaii\n        .translate([x - 0.205 * k, y + 0.212 * k])\n        .clipExtent([[x - 0.214 * k + _math_js__WEBPACK_IMPORTED_MODULE_0__[\"epsilon\"], y + 0.166 * k + _math_js__WEBPACK_IMPORTED_MODULE_0__[\"epsilon\"]], [x - 0.115 * k - _math_js__WEBPACK_IMPORTED_MODULE_0__[\"epsilon\"], y + 0.234 * k - _math_js__WEBPACK_IMPORTED_MODULE_0__[\"epsilon\"]]])\n        .stream(pointStream);\n\n    return reset();\n  };\n\n  albersUsa.fitExtent = function(extent, object) {\n    return Object(_fit_js__WEBPACK_IMPORTED_MODULE_3__[\"fitExtent\"])(albersUsa, extent, object);\n  };\n\n  albersUsa.fitSize = function(size, object) {\n    return Object(_fit_js__WEBPACK_IMPORTED_MODULE_3__[\"fitSize\"])(albersUsa, size, object);\n  };\n\n  albersUsa.fitWidth = function(width, object) {\n    return Object(_fit_js__WEBPACK_IMPORTED_MODULE_3__[\"fitWidth\"])(albersUsa, width, object);\n  };\n\n  albersUsa.fitHeight = function(height, object) {\n    return Object(_fit_js__WEBPACK_IMPORTED_MODULE_3__[\"fitHeight\"])(albersUsa, height, object);\n  };\n\n  function reset() {\n    cache = cacheStream = null;\n    return albersUsa;\n  }\n\n  return albersUsa.scale(1070);\n});\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,[encoded data, 6892 characters]\n//# sourceURL=webpack-internal:///./node_modules/vega/node_modules/d3-geo/src/projection/albersUsa.js\n");

/***/ }),

/***/ "./node_modules/vega/node_modules/d3-geo/src/projection/azimuthal.js":
/*!***************************************************************************!*\
  !*** ./node_modules/vega/node_modules/d3-geo/src/projection/azimuthal.js ***!
  \***************************************************************************/
/*! exports provided: azimuthalRaw, azimuthalInvert */
/***/ (function(module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"azimuthalRaw\", function() { return azimuthalRaw; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"azimuthalInvert\", function() { return azimuthalInvert; });\n/* harmony import */ var _math_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../math.js */ \"./node_modules/vega/node_modules/d3-geo/src/math.js\");\n\n\nfunction azimuthalRaw(scale) {\n  return function(x, y) {\n    var cx = Object(_math_js__WEBPACK_IMPORTED_MODULE_0__[\"cos\"])(x),\n        cy = Object(_math_js__WEBPACK_IMPORTED_MODULE_0__[\"cos\"])(y),\n        k = scale(cx * cy);\n        if (k === Infinity) return [2, 0];\n    return [\n      k * cy * Object(_math_js__WEBPACK_IMPORTED_MODULE_0__[\"sin\"])(x),\n      k * Object(_math_js__WEBPACK_IMPORTED_MODULE_0__[\"sin\"])(y)\n    ];\n  }\n}\n\nfunction azimuthalInvert(angle) {\n  return function(x, y) {\n    var z = Object(_math_js__WEBPACK_IMPORTED_MODULE_0__[\"sqrt\"])(x * x + y * y),\n        c = angle(z),\n        sc = Object(_math_js__WEBPACK_IMPORTED_MODULE_0__[\"sin\"])(c),\n        cc = Object(_math_js__WEBPACK_IMPORTED_MODULE_0__[\"cos\"])(c);\n    return [\n      Object(_math_js__WEBPACK_IMPORTED_MODULE_0__[\"atan2\"])(x * sc, z * cc),\n      Object(_math_js__WEBPACK_IMPORTED_MODULE_0__[\"asin\"])(z && y * sc / z)\n    ];\n  }\n}\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvdmVnYS9ub2RlX21vZHVsZXMvZDMtZ2VvL3NyYy9wcm9qZWN0aW9uL2F6aW11dGhhbC5qcy5qcyIsInNvdXJjZXMiOlsid2VicGFjazovLy8uL25vZGVfbW9kdWxlcy92ZWdhL25vZGVfbW9kdWxlcy9kMy1nZW8vc3JjL3Byb2plY3Rpb24vYXppbXV0aGFsLmpzPzJkMTIiXSwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHthc2luLCBhdGFuMiwgY29zLCBzaW4sIHNxcnR9IGZyb20gXCIuLi9tYXRoLmpzXCI7XG5cbmV4cG9ydCBmdW5jdGlvbiBhemltdXRoYWxSYXcoc2NhbGUpIHtcbiAgcmV0dXJuIGZ1bmN0aW9uKHgsIHkpIHtcbiAgICB2YXIgY3ggPSBjb3MoeCksXG4gICAgICAgIGN5ID0gY29zKHkpLFxuICAgICAgICBrID0gc2NhbGUoY3ggKiBjeSk7XG4gICAgICAgIGlmIChrID09PSBJbmZpbml0eSkgcmV0dXJuIFsyLCAwXTtcbiAgICByZXR1cm4gW1xuICAgICAgayAqIGN5ICogc2luKHgpLFxuICAgICAgayAqIHNpbih5KVxuICAgIF07XG4gIH1cbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGF6aW11dGhhbEludmVydChhbmdsZSkge1xuICByZXR1cm4gZnVuY3Rpb24oeCwgeSkge1xuICAgIHZhciB6ID0gc3FydCh4ICogeCArIHkgKiB5KSxcbiAgICAgICAgYyA9IGFuZ2xlKHopLFxuICAgICAgICBzYyA9IHNpbihjKSxcbiAgICAgICAgY2MgPSBjb3MoYyk7XG4gICAgcmV0dXJuIFtcbiAgICAgIGF0YW4yKHggKiBzYywgeiAqIGNjKSxcbiAgICAgIGFzaW4oeiAmJiB5ICogc2MgLyB6KVxuICAgIF07XG4gIH1cbn1cbiJdLCJtYXBwaW5ncyI6IkFBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7Iiwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///./node_modules/vega/node_modules/d3-geo/src/projection/azimuthal.js\n");

/***/ }),

/***/ "./node_modules/vega/node_modules/d3-geo/src/projection/azimuthalEqualArea.js":
/*!************************************************************************************!*\
  !*** ./node_modules/vega/node_modules/d3-geo/src/projection/azimuthalEqualArea.js ***!
  \************************************************************************************/
/*! exports provided: azimuthalEqualAreaRaw, default */
/***/ (function(module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"azimuthalEqualAreaRaw\", function() { return azimuthalEqualAreaRaw; });\n/* harmony import */ var _math_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../math.js */ \"./node_modules/vega/node_modules/d3-geo/src/math.js\");\n/* harmony import */ var _azimuthal_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./azimuthal.js */ \"./node_modules/vega/node_modules/d3-geo/src/projection/azimuthal.js\");\n/* harmony import */ var _index_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./index.js */ \"./node_modules/vega/node_modules/d3-geo/src/projection/index.js\");\n\n\n\n\nvar azimuthalEqualAreaRaw = Object(_azimuthal_js__WEBPACK_IMPORTED_MODULE_1__[\"azimuthalRaw\"])(function(cxcy) {\n  return Object(_math_js__WEBPACK_IMPORTED_MODULE_0__[\"sqrt\"])(2 / (1 + cxcy));\n});\n\nazimuthalEqualAreaRaw.invert = Object(_azimuthal_js__WEBPACK_IMPORTED_MODULE_1__[\"azimuthalInvert\"])(function(z) {\n  return 2 * Object(_math_js__WEBPACK_IMPORTED_MODULE_0__[\"asin\"])(z / 2);\n});\n\n/* harmony default export */ __webpack_exports__[\"default\"] = (function() {\n  return Object(_index_js__WEBPACK_IMPORTED_MODULE_2__[\"default\"])(azimuthalEqualAreaRaw)\n      .scale(124.75)\n      .clipAngle(180 - 1e-3);\n});\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvdmVnYS9ub2RlX21vZHVsZXMvZDMtZ2VvL3NyYy9wcm9qZWN0aW9uL2F6aW11dGhhbEVxdWFsQXJlYS5qcy5qcyIsInNvdXJjZXMiOlsid2VicGFjazovLy8uL25vZGVfbW9kdWxlcy92ZWdhL25vZGVfbW9kdWxlcy9kMy1nZW8vc3JjL3Byb2plY3Rpb24vYXppbXV0aGFsRXF1YWxBcmVhLmpzPzc1NmQiXSwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHthc2luLCBzcXJ0fSBmcm9tIFwiLi4vbWF0aC5qc1wiO1xuaW1wb3J0IHthemltdXRoYWxSYXcsIGF6aW11dGhhbEludmVydH0gZnJvbSBcIi4vYXppbXV0aGFsLmpzXCI7XG5pbXBvcnQgcHJvamVjdGlvbiBmcm9tIFwiLi9pbmRleC5qc1wiO1xuXG5leHBvcnQgdmFyIGF6aW11dGhhbEVxdWFsQXJlYVJhdyA9IGF6aW11dGhhbFJhdyhmdW5jdGlvbihjeGN5KSB7XG4gIHJldHVybiBzcXJ0KDIgLyAoMSArIGN4Y3kpKTtcbn0pO1xuXG5hemltdXRoYWxFcXVhbEFyZWFSYXcuaW52ZXJ0ID0gYXppbXV0aGFsSW52ZXJ0KGZ1bmN0aW9uKHopIHtcbiAgcmV0dXJuIDIgKiBhc2luKHogLyAyKTtcbn0pO1xuXG5leHBvcnQgZGVmYXVsdCBmdW5jdGlvbigpIHtcbiAgcmV0dXJuIHByb2plY3Rpb24oYXppbXV0aGFsRXF1YWxBcmVhUmF3KVxuICAgICAgLnNjYWxlKDEyNC43NSlcbiAgICAgIC5jbGlwQW5nbGUoMTgwIC0gMWUtMyk7XG59XG4iXSwibWFwcGluZ3MiOiJBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOyIsInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///./node_modules/vega/node_modules/d3-geo/src/projection/azimuthalEqualArea.js\n");

/***/ }),

/***/ "./node_modules/vega/node_modules/d3-geo/src/projection/azimuthalEquidistant.js":
/*!**************************************************************************************!*\
  !*** ./node_modules/vega/node_modules/d3-geo/src/projection/azimuthalEquidistant.js ***!
  \**************************************************************************************/
/*! exports provided: azimuthalEquidistantRaw, default */
/***/ (function(module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"azimuthalEquidistantRaw\", function() { return azimuthalEquidistantRaw; });\n/* harmony import */ var _math_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../math.js */ \"./node_modules/vega/node_modules/d3-geo/src/math.js\");\n/* harmony import */ var _azimuthal_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./azimuthal.js */ \"./node_modules/vega/node_modules/d3-geo/src/projection/azimuthal.js\");\n/* harmony import */ var _index_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./index.js */ \"./node_modules/vega/node_modules/d3-geo/src/projection/index.js\");\n\n\n\n\nvar azimuthalEquidistantRaw = Object(_azimuthal_js__WEBPACK_IMPORTED_MODULE_1__[\"azimuthalRaw\"])(function(c) {\n  return (c = Object(_math_js__WEBPACK_IMPORTED_MODULE_0__[\"acos\"])(c)) && c / Object(_math_js__WEBPACK_IMPORTED_MODULE_0__[\"sin\"])(c);\n});\n\nazimuthalEquidistantRaw.invert = Object(_azimuthal_js__WEBPACK_IMPORTED_MODULE_1__[\"azimuthalInvert\"])(function(z) {\n  return z;\n});\n\n/* harmony default export */ __webpack_exports__[\"default\"] = (function() {\n  return Object(_index_js__WEBPACK_IMPORTED_MODULE_2__[\"default\"])(azimuthalEquidistantRaw)\n      .scale(79.4188)\n      .clipAngle(180 - 1e-3);\n});\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvdmVnYS9ub2RlX21vZHVsZXMvZDMtZ2VvL3NyYy9wcm9qZWN0aW9uL2F6aW11dGhhbEVxdWlkaXN0YW50LmpzLmpzIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL3ZlZ2Evbm9kZV9tb2R1bGVzL2QzLWdlby9zcmMvcHJvamVjdGlvbi9hemltdXRoYWxFcXVpZGlzdGFudC5qcz84MjNkIl0sInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7YWNvcywgc2lufSBmcm9tIFwiLi4vbWF0aC5qc1wiO1xuaW1wb3J0IHthemltdXRoYWxSYXcsIGF6aW11dGhhbEludmVydH0gZnJvbSBcIi4vYXppbXV0aGFsLmpzXCI7XG5pbXBvcnQgcHJvamVjdGlvbiBmcm9tIFwiLi9pbmRleC5qc1wiO1xuXG5leHBvcnQgdmFyIGF6aW11dGhhbEVxdWlkaXN0YW50UmF3ID0gYXppbXV0aGFsUmF3KGZ1bmN0aW9uKGMpIHtcbiAgcmV0dXJuIChjID0gYWNvcyhjKSkgJiYgYyAvIHNpbihjKTtcbn0pO1xuXG5hemltdXRoYWxFcXVpZGlzdGFudFJhdy5pbnZlcnQgPSBhemltdXRoYWxJbnZlcnQoZnVuY3Rpb24oeikge1xuICByZXR1cm4gejtcbn0pO1xuXG5leHBvcnQgZGVmYXVsdCBmdW5jdGlvbigpIHtcbiAgcmV0dXJuIHByb2plY3Rpb24oYXppbXV0aGFsRXF1aWRpc3RhbnRSYXcpXG4gICAgICAuc2NhbGUoNzkuNDE4OClcbiAgICAgIC5jbGlwQW5nbGUoMTgwIC0gMWUtMyk7XG59XG4iXSwibWFwcGluZ3MiOiJBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOyIsInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///./node_modules/vega/node_modules/d3-geo/src/projection/azimuthalEquidistant.js\n");

/***/ }),

/***/ "./node_modules/vega/node_modules/d3-geo/src/projection/conic.js":
/*!***********************************************************************!*\
  !*** ./node_modules/vega/node_modules/d3-geo/src/projection/conic.js ***!
  \***********************************************************************/
/*! exports provided: conicProjection */
/***/ (function(module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"conicProjection\", function() { return conicProjection; });\n/* harmony import */ var _math_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../math.js */ \"./node_modules/vega/node_modules/d3-geo/src/math.js\");\n/* harmony import */ var _index_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./index.js */ \"./node_modules/vega/node_modules/d3-geo/src/projection/index.js\");\n\n\n\nfunction conicProjection(projectAt) {\n  var phi0 = 0,\n      phi1 = _math_js__WEBPACK_IMPORTED_MODULE_0__[\"pi\"] / 3,\n      m = Object(_index_js__WEBPACK_IMPORTED_MODULE_1__[\"projectionMutator\"])(projectAt),\n      p = m(phi0, phi1);\n\n  p.parallels = function(_) {\n    return arguments.length ? m(phi0 = _[0] * _math_js__WEBPACK_IMPORTED_MODULE_0__[\"radians\"], phi1 = _[1] * _math_js__WEBPACK_IMPORTED_MODULE_0__[\"radians\"]) : [phi0 * _math_js__WEBPACK_IMPORTED_MODULE_0__[\"degrees\"], phi1 * _math_js__WEBPACK_IMPORTED_MODULE_0__[\"degrees\"]];\n  };\n\n  return p;\n}\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvdmVnYS9ub2RlX21vZHVsZXMvZDMtZ2VvL3NyYy9wcm9qZWN0aW9uL2NvbmljLmpzLmpzIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL3ZlZ2Evbm9kZV9tb2R1bGVzL2QzLWdlby9zcmMvcHJvamVjdGlvbi9jb25pYy5qcz8zN2Y1Il0sInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7ZGVncmVlcywgcGksIHJhZGlhbnN9IGZyb20gXCIuLi9tYXRoLmpzXCI7XG5pbXBvcnQge3Byb2plY3Rpb25NdXRhdG9yfSBmcm9tIFwiLi9pbmRleC5qc1wiO1xuXG5leHBvcnQgZnVuY3Rpb24gY29uaWNQcm9qZWN0aW9uKHByb2plY3RBdCkge1xuICB2YXIgcGhpMCA9IDAsXG4gICAgICBwaGkxID0gcGkgLyAzLFxuICAgICAgbSA9IHByb2plY3Rpb25NdXRhdG9yKHByb2plY3RBdCksXG4gICAgICBwID0gbShwaGkwLCBwaGkxKTtcblxuICBwLnBhcmFsbGVscyA9IGZ1bmN0aW9uKF8pIHtcbiAgICByZXR1cm4gYXJndW1lbnRzLmxlbmd0aCA/IG0ocGhpMCA9IF9bMF0gKiByYWRpYW5zLCBwaGkxID0gX1sxXSAqIHJhZGlhbnMpIDogW3BoaTAgKiBkZWdyZWVzLCBwaGkxICogZGVncmVlc107XG4gIH07XG5cbiAgcmV0dXJuIHA7XG59XG4iXSwibWFwcGluZ3MiOiJBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOyIsInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///./node_modules/vega/node_modules/d3-geo/src/projection/conic.js\n");

/***/ }),

/***/ "./node_modules/vega/node_modules/d3-geo/src/projection/conicConformal.js":
/*!********************************************************************************!*\
  !*** ./node_modules/vega/node_modules/d3-geo/src/projection/conicConformal.js ***!
  \********************************************************************************/
/*! exports provided: conicConformalRaw, default */
/***/ (function(module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"conicConformalRaw\", function() { return conicConformalRaw; });\n/* harmony import */ var _math_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../math.js */ \"./node_modules/vega/node_modules/d3-geo/src/math.js\");\n/* harmony import */ var _conic_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./conic.js */ \"./node_modules/vega/node_modules/d3-geo/src/projection/conic.js\");\n/* harmony import */ var _mercator_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./mercator.js */ \"./node_modules/vega/node_modules/d3-geo/src/projection/mercator.js\");\n\n\n\n\nfunction tany(y) {\n  return Object(_math_js__WEBPACK_IMPORTED_MODULE_0__[\"tan\"])((_math_js__WEBPACK_IMPORTED_MODULE_0__[\"halfPi\"] + y) / 2);\n}\n\nfunction conicConformalRaw(y0, y1) {\n  var cy0 = Object(_math_js__WEBPACK_IMPORTED_MODULE_0__[\"cos\"])(y0),\n      n = y0 === y1 ? Object(_math_js__WEBPACK_IMPORTED_MODULE_0__[\"sin\"])(y0) : Object(_math_js__WEBPACK_IMPORTED_MODULE_0__[\"log\"])(cy0 / Object(_math_js__WEBPACK_IMPORTED_MODULE_0__[\"cos\"])(y1)) / Object(_math_js__WEBPACK_IMPORTED_MODULE_0__[\"log\"])(tany(y1) / tany(y0)),\n      f = cy0 * Object(_math_js__WEBPACK_IMPORTED_MODULE_0__[\"pow\"])(tany(y0), n) / n;\n\n  if (!n) return _mercator_js__WEBPACK_IMPORTED_MODULE_2__[\"mercatorRaw\"];\n\n  function project(x, y) {\n    if (f > 0) { if (y < -_math_js__WEBPACK_IMPORTED_MODULE_0__[\"halfPi\"] + _math_js__WEBPACK_IMPORTED_MODULE_0__[\"epsilon\"]) y = -_math_js__WEBPACK_IMPORTED_MODULE_0__[\"halfPi\"] + _math_js__WEBPACK_IMPORTED_MODULE_0__[\"epsilon\"]; }\n    else { if (y > _math_js__WEBPACK_IMPORTED_MODULE_0__[\"halfPi\"] - _math_js__WEBPACK_IMPORTED_MODULE_0__[\"epsilon\"]) y = _math_js__WEBPACK_IMPORTED_MODULE_0__[\"halfPi\"] - _math_js__WEBPACK_IMPORTED_MODULE_0__[\"epsilon\"]; }\n    var r = f / Object(_math_js__WEBPACK_IMPORTED_MODULE_0__[\"pow\"])(tany(y), n);\n    return [r * Object(_math_js__WEBPACK_IMPORTED_MODULE_0__[\"sin\"])(n * x), f - r * Object(_math_js__WEBPACK_IMPORTED_MODULE_0__[\"cos\"])(n * x)];\n  }\n\n  project.invert = function(x, y) {\n    var fy = f - y, r = Object(_math_js__WEBPACK_IMPORTED_MODULE_0__[\"sign\"])(n) * Object(_math_js__WEBPACK_IMPORTED_MODULE_0__[\"sqrt\"])(x * x + fy * fy),\n      l = Object(_math_js__WEBPACK_IMPORTED_MODULE_0__[\"atan2\"])(x, Object(_math_js__WEBPACK_IMPORTED_MODULE_0__[\"abs\"])(fy)) * Object(_math_js__WEBPACK_IMPORTED_MODULE_0__[\"sign\"])(fy);\n    if (fy * n < 0)\n      l -= _math_js__WEBPACK_IMPORTED_MODULE_0__[\"pi\"] * Object(_math_js__WEBPACK_IMPORTED_MODULE_0__[\"sign\"])(x) * Object(_math_js__WEBPACK_IMPORTED_MODULE_0__[\"sign\"])(fy);\n    return [l / n, 2 * Object(_math_js__WEBPACK_IMPORTED_MODULE_0__[\"atan\"])(Object(_math_js__WEBPACK_IMPORTED_MODULE_0__[\"pow\"])(f / r, 1 / n)) - _math_js__WEBPACK_IMPORTED_MODULE_0__[\"halfPi\"]];\n  };\n\n  return project;\n}\n\n/* harmony default export */ __webpack_exports__[\"default\"] = (function() {\n  return Object(_conic_js__WEBPACK_IMPORTED_MODULE_1__[\"conicProjection\"])(conicConformalRaw)\n      .scale(109.5)\n      .parallels([30, 30]);\n});\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvdmVnYS9ub2RlX21vZHVsZXMvZDMtZ2VvL3NyYy9wcm9qZWN0aW9uL2NvbmljQ29uZm9ybWFsLmpzLmpzIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL3ZlZ2Evbm9kZV9tb2R1bGVzL2QzLWdlby9zcmMvcHJvamVjdGlvbi9jb25pY0NvbmZvcm1hbC5qcz9kM2NhIl0sInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7YWJzLCBhdGFuLCBhdGFuMiwgY29zLCBlcHNpbG9uLCBoYWxmUGksIGxvZywgcGksIHBvdywgc2lnbiwgc2luLCBzcXJ0LCB0YW59IGZyb20gXCIuLi9tYXRoLmpzXCI7XG5pbXBvcnQge2NvbmljUHJvamVjdGlvbn0gZnJvbSBcIi4vY29uaWMuanNcIjtcbmltcG9ydCB7bWVyY2F0b3JSYXd9IGZyb20gXCIuL21lcmNhdG9yLmpzXCI7XG5cbmZ1bmN0aW9uIHRhbnkoeSkge1xuICByZXR1cm4gdGFuKChoYWxmUGkgKyB5KSAvIDIpO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gY29uaWNDb25mb3JtYWxSYXcoeTAsIHkxKSB7XG4gIHZhciBjeTAgPSBjb3MoeTApLFxuICAgICAgbiA9IHkwID09PSB5MSA/IHNpbih5MCkgOiBsb2coY3kwIC8gY29zKHkxKSkgLyBsb2codGFueSh5MSkgLyB0YW55KHkwKSksXG4gICAgICBmID0gY3kwICogcG93KHRhbnkoeTApLCBuKSAvIG47XG5cbiAgaWYgKCFuKSByZXR1cm4gbWVyY2F0b3JSYXc7XG5cbiAgZnVuY3Rpb24gcHJvamVjdCh4LCB5KSB7XG4gICAgaWYgKGYgPiAwKSB7IGlmICh5IDwgLWhhbGZQaSArIGVwc2lsb24pIHkgPSAtaGFsZlBpICsgZXBzaWxvbjsgfVxuICAgIGVsc2UgeyBpZiAoeSA+IGhhbGZQaSAtIGVwc2lsb24pIHkgPSBoYWxmUGkgLSBlcHNpbG9uOyB9XG4gICAgdmFyIHIgPSBmIC8gcG93KHRhbnkoeSksIG4pO1xuICAgIHJldHVybiBbciAqIHNpbihuICogeCksIGYgLSByICogY29zKG4gKiB4KV07XG4gIH1cblxuICBwcm9qZWN0LmludmVydCA9IGZ1bmN0aW9uKHgsIHkpIHtcbiAgICB2YXIgZnkgPSBmIC0geSwgciA9IHNpZ24obikgKiBzcXJ0KHggKiB4ICsgZnkgKiBmeSksXG4gICAgICBsID0gYXRhbjIoeCwgYWJzKGZ5KSkgKiBzaWduKGZ5KTtcbiAgICBpZiAoZnkgKiBuIDwgMClcbiAgICAgIGwgLT0gcGkgKiBzaWduKHgpICogc2lnbihmeSk7XG4gICAgcmV0dXJuIFtsIC8gbiwgMiAqIGF0YW4ocG93KGYgLyByLCAxIC8gbikpIC0gaGFsZlBpXTtcbiAgfTtcblxuICByZXR1cm4gcHJvamVjdDtcbn1cblxuZXhwb3J0IGRlZmF1bHQgZnVuY3Rpb24oKSB7XG4gIHJldHVybiBjb25pY1Byb2plY3Rpb24oY29uaWNDb25mb3JtYWxSYXcpXG4gICAgICAuc2NhbGUoMTA5LjUpXG4gICAgICAucGFyYWxsZWxzKFszMCwgMzBdKTtcbn1cbiJdLCJtYXBwaW5ncyI6IkFBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7Iiwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///./node_modules/vega/node_modules/d3-geo/src/projection/conicConformal.js\n");

/***/ }),

/***/ "./node_modules/vega/node_modules/d3-geo/src/projection/conicEqualArea.js":
/*!********************************************************************************!*\
  !*** ./node_modules/vega/node_modules/d3-geo/src/projection/conicEqualArea.js ***!
  \********************************************************************************/
/*! exports provided: conicEqualAreaRaw, default */
/***/ (function(module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"conicEqualAreaRaw\", function() { return conicEqualAreaRaw; });\n/* harmony import */ var _math_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../math.js */ \"./node_modules/vega/node_modules/d3-geo/src/math.js\");\n/* harmony import */ var _conic_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./conic.js */ \"./node_modules/vega/node_modules/d3-geo/src/projection/conic.js\");\n/* harmony import */ var _cylindricalEqualArea_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./cylindricalEqualArea.js */ \"./node_modules/vega/node_modules/d3-geo/src/projection/cylindricalEqualArea.js\");\n\n\n\n\nfunction conicEqualAreaRaw(y0, y1) {\n  var sy0 = Object(_math_js__WEBPACK_IMPORTED_MODULE_0__[\"sin\"])(y0), n = (sy0 + Object(_math_js__WEBPACK_IMPORTED_MODULE_0__[\"sin\"])(y1)) / 2;\n\n  // Are the parallels symmetrical around the Equator?\n  if (Object(_math_js__WEBPACK_IMPORTED_MODULE_0__[\"abs\"])(n) < _math_js__WEBPACK_IMPORTED_MODULE_0__[\"epsilon\"]) return Object(_cylindricalEqualArea_js__WEBPACK_IMPORTED_MODULE_2__[\"cylindricalEqualAreaRaw\"])(y0);\n\n  var c = 1 + sy0 * (2 * n - sy0), r0 = Object(_math_js__WEBPACK_IMPORTED_MODULE_0__[\"sqrt\"])(c) / n;\n\n  function project(x, y) {\n    var r = Object(_math_js__WEBPACK_IMPORTED_MODULE_0__[\"sqrt\"])(c - 2 * n * Object(_math_js__WEBPACK_IMPORTED_MODULE_0__[\"sin\"])(y)) / n;\n    return [r * Object(_math_js__WEBPACK_IMPORTED_MODULE_0__[\"sin\"])(x *= n), r0 - r * Object(_math_js__WEBPACK_IMPORTED_MODULE_0__[\"cos\"])(x)];\n  }\n\n  project.invert = function(x, y) {\n    var r0y = r0 - y,\n        l = Object(_math_js__WEBPACK_IMPORTED_MODULE_0__[\"atan2\"])(x, Object(_math_js__WEBPACK_IMPORTED_MODULE_0__[\"abs\"])(r0y)) * Object(_math_js__WEBPACK_IMPORTED_MODULE_0__[\"sign\"])(r0y);\n    if (r0y * n < 0)\n      l -= _math_js__WEBPACK_IMPORTED_MODULE_0__[\"pi\"] * Object(_math_js__WEBPACK_IMPORTED_MODULE_0__[\"sign\"])(x) * Object(_math_js__WEBPACK_IMPORTED_MODULE_0__[\"sign\"])(r0y);\n    return [l / n, Object(_math_js__WEBPACK_IMPORTED_MODULE_0__[\"asin\"])((c - (x * x + r0y * r0y) * n * n) / (2 * n))];\n  };\n\n  return project;\n}\n\n/* harmony default export */ __webpack_exports__[\"default\"] = (function() {\n  return Object(_conic_js__WEBPACK_IMPORTED_MODULE_1__[\"conicProjection\"])(conicEqualAreaRaw)\n      .scale(155.424)\n      .center([0, 33.6442]);\n});\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvdmVnYS9ub2RlX21vZHVsZXMvZDMtZ2VvL3NyYy9wcm9qZWN0aW9uL2NvbmljRXF1YWxBcmVhLmpzLmpzIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL3ZlZ2Evbm9kZV9tb2R1bGVzL2QzLWdlby9zcmMvcHJvamVjdGlvbi9jb25pY0VxdWFsQXJlYS5qcz83MmIzIl0sInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7YWJzLCBhc2luLCBhdGFuMiwgY29zLCBlcHNpbG9uLCBwaSwgc2lnbiwgc2luLCBzcXJ0fSBmcm9tIFwiLi4vbWF0aC5qc1wiO1xuaW1wb3J0IHtjb25pY1Byb2plY3Rpb259IGZyb20gXCIuL2NvbmljLmpzXCI7XG5pbXBvcnQge2N5bGluZHJpY2FsRXF1YWxBcmVhUmF3fSBmcm9tIFwiLi9jeWxpbmRyaWNhbEVxdWFsQXJlYS5qc1wiO1xuXG5leHBvcnQgZnVuY3Rpb24gY29uaWNFcXVhbEFyZWFSYXcoeTAsIHkxKSB7XG4gIHZhciBzeTAgPSBzaW4oeTApLCBuID0gKHN5MCArIHNpbih5MSkpIC8gMjtcblxuICAvLyBBcmUgdGhlIHBhcmFsbGVscyBzeW1tZXRyaWNhbCBhcm91bmQgdGhlIEVxdWF0b3I/XG4gIGlmIChhYnMobikgPCBlcHNpbG9uKSByZXR1cm4gY3lsaW5kcmljYWxFcXVhbEFyZWFSYXcoeTApO1xuXG4gIHZhciBjID0gMSArIHN5MCAqICgyICogbiAtIHN5MCksIHIwID0gc3FydChjKSAvIG47XG5cbiAgZnVuY3Rpb24gcHJvamVjdCh4LCB5KSB7XG4gICAgdmFyIHIgPSBzcXJ0KGMgLSAyICogbiAqIHNpbih5KSkgLyBuO1xuICAgIHJldHVybiBbciAqIHNpbih4ICo9IG4pLCByMCAtIHIgKiBjb3MoeCldO1xuICB9XG5cbiAgcHJvamVjdC5pbnZlcnQgPSBmdW5jdGlvbih4LCB5KSB7XG4gICAgdmFyIHIweSA9IHIwIC0geSxcbiAgICAgICAgbCA9IGF0YW4yKHgsIGFicyhyMHkpKSAqIHNpZ24ocjB5KTtcbiAgICBpZiAocjB5ICogbiA8IDApXG4gICAgICBsIC09IHBpICogc2lnbih4KSAqIHNpZ24ocjB5KTtcbiAgICByZXR1cm4gW2wgLyBuLCBhc2luKChjIC0gKHggKiB4ICsgcjB5ICogcjB5KSAqIG4gKiBuKSAvICgyICogbikpXTtcbiAgfTtcblxuICByZXR1cm4gcHJvamVjdDtcbn1cblxuZXhwb3J0IGRlZmF1bHQgZnVuY3Rpb24oKSB7XG4gIHJldHVybiBjb25pY1Byb2plY3Rpb24oY29uaWNFcXVhbEFyZWFSYXcpXG4gICAgICAuc2NhbGUoMTU1LjQyNClcbiAgICAgIC5jZW50ZXIoWzAsIDMzLjY0NDJdKTtcbn1cbiJdLCJtYXBwaW5ncyI6IkFBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTsiLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///./node_modules/vega/node_modules/d3-geo/src/projection/conicEqualArea.js\n");

/***/ }),

/***/ "./node_modules/vega/node_modules/d3-geo/src/projection/conicEquidistant.js":
/*!**********************************************************************************!*\
  !*** ./node_modules/vega/node_modules/d3-geo/src/projection/conicEquidistant.js ***!
  \**********************************************************************************/
/*! exports provided: conicEquidistantRaw, default */
/***/ (function(module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"conicEquidistantRaw\", function() { return conicEquidistantRaw; });\n/* harmony import */ var _math_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../math.js */ \"./node_modules/vega/node_modules/d3-geo/src/math.js\");\n/* harmony import */ var _conic_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./conic.js */ \"./node_modules/vega/node_modules/d3-geo/src/projection/conic.js\");\n/* harmony import */ var _equirectangular_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./equirectangular.js */ \"./node_modules/vega/node_modules/d3-geo/src/projection/equirectangular.js\");\n\n\n\n\nfunction conicEquidistantRaw(y0, y1) {\n  var cy0 = Object(_math_js__WEBPACK_IMPORTED_MODULE_0__[\"cos\"])(y0),\n      n = y0 === y1 ? Object(_math_js__WEBPACK_IMPORTED_MODULE_0__[\"sin\"])(y0) : (cy0 - Object(_math_js__WEBPACK_IMPORTED_MODULE_0__[\"cos\"])(y1)) / (y1 - y0),\n      g = cy0 / n + y0;\n\n  if (Object(_math_js__WEBPACK_IMPORTED_MODULE_0__[\"abs\"])(n) < _math_js__WEBPACK_IMPORTED_MODULE_0__[\"epsilon\"]) return _equirectangular_js__WEBPACK_IMPORTED_MODULE_2__[\"equirectangularRaw\"];\n\n  function project(x, y) {\n    var gy = g - y, nx = n * x;\n    return [gy * Object(_math_js__WEBPACK_IMPORTED_MODULE_0__[\"sin\"])(nx), g - gy * Object(_math_js__WEBPACK_IMPORTED_MODULE_0__[\"cos\"])(nx)];\n  }\n\n  project.invert = function(x, y) {\n    var gy = g - y,\n        l = Object(_math_js__WEBPACK_IMPORTED_MODULE_0__[\"atan2\"])(x, Object(_math_js__WEBPACK_IMPORTED_MODULE_0__[\"abs\"])(gy)) * Object(_math_js__WEBPACK_IMPORTED_MODULE_0__[\"sign\"])(gy);\n    if (gy * n < 0)\n      l -= _math_js__WEBPACK_IMPORTED_MODULE_0__[\"pi\"] * Object(_math_js__WEBPACK_IMPORTED_MODULE_0__[\"sign\"])(x) * Object(_math_js__WEBPACK_IMPORTED_MODULE_0__[\"sign\"])(gy);\n    return [l / n, g - Object(_math_js__WEBPACK_IMPORTED_MODULE_0__[\"sign\"])(n) * Object(_math_js__WEBPACK_IMPORTED_MODULE_0__[\"sqrt\"])(x * x + gy * gy)];\n  };\n\n  return project;\n}\n\n/* harmony default export */ __webpack_exports__[\"default\"] = (function() {\n  return Object(_conic_js__WEBPACK_IMPORTED_MODULE_1__[\"conicProjection\"])(conicEquidistantRaw)\n      .scale(131.154)\n      .center([0, 13.9389]);\n});\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvdmVnYS9ub2RlX21vZHVsZXMvZDMtZ2VvL3NyYy9wcm9qZWN0aW9uL2NvbmljRXF1aWRpc3RhbnQuanMuanMiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvdmVnYS9ub2RlX21vZHVsZXMvZDMtZ2VvL3NyYy9wcm9qZWN0aW9uL2NvbmljRXF1aWRpc3RhbnQuanM/MGRlMiJdLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge2FicywgYXRhbjIsIGNvcywgZXBzaWxvbiwgcGksIHNpZ24sIHNpbiwgc3FydH0gZnJvbSBcIi4uL21hdGguanNcIjtcbmltcG9ydCB7Y29uaWNQcm9qZWN0aW9ufSBmcm9tIFwiLi9jb25pYy5qc1wiO1xuaW1wb3J0IHtlcXVpcmVjdGFuZ3VsYXJSYXd9IGZyb20gXCIuL2VxdWlyZWN0YW5ndWxhci5qc1wiO1xuXG5leHBvcnQgZnVuY3Rpb24gY29uaWNFcXVpZGlzdGFudFJhdyh5MCwgeTEpIHtcbiAgdmFyIGN5MCA9IGNvcyh5MCksXG4gICAgICBuID0geTAgPT09IHkxID8gc2luKHkwKSA6IChjeTAgLSBjb3MoeTEpKSAvICh5MSAtIHkwKSxcbiAgICAgIGcgPSBjeTAgLyBuICsgeTA7XG5cbiAgaWYgKGFicyhuKSA8IGVwc2lsb24pIHJldHVybiBlcXVpcmVjdGFuZ3VsYXJSYXc7XG5cbiAgZnVuY3Rpb24gcHJvamVjdCh4LCB5KSB7XG4gICAgdmFyIGd5ID0gZyAtIHksIG54ID0gbiAqIHg7XG4gICAgcmV0dXJuIFtneSAqIHNpbihueCksIGcgLSBneSAqIGNvcyhueCldO1xuICB9XG5cbiAgcHJvamVjdC5pbnZlcnQgPSBmdW5jdGlvbih4LCB5KSB7XG4gICAgdmFyIGd5ID0gZyAtIHksXG4gICAgICAgIGwgPSBhdGFuMih4LCBhYnMoZ3kpKSAqIHNpZ24oZ3kpO1xuICAgIGlmIChneSAqIG4gPCAwKVxuICAgICAgbCAtPSBwaSAqIHNpZ24oeCkgKiBzaWduKGd5KTtcbiAgICByZXR1cm4gW2wgLyBuLCBnIC0gc2lnbihuKSAqIHNxcnQoeCAqIHggKyBneSAqIGd5KV07XG4gIH07XG5cbiAgcmV0dXJuIHByb2plY3Q7XG59XG5cbmV4cG9ydCBkZWZhdWx0IGZ1bmN0aW9uKCkge1xuICByZXR1cm4gY29uaWNQcm9qZWN0aW9uKGNvbmljRXF1aWRpc3RhbnRSYXcpXG4gICAgICAuc2NhbGUoMTMxLjE1NClcbiAgICAgIC5jZW50ZXIoWzAsIDEzLjkzODldKTtcbn1cbiJdLCJtYXBwaW5ncyI6IkFBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7Iiwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///./node_modules/vega/node_modules/d3-geo/src/projection/conicEquidistant.js\n");

/***/ }),

/***/ "./node_modules/vega/node_modules/d3-geo/src/projection/cylindricalEqualArea.js":
/*!**************************************************************************************!*\
  !*** ./node_modules/vega/node_modules/d3-geo/src/projection/cylindricalEqualArea.js ***!
  \**************************************************************************************/
/*! exports provided: cylindricalEqualAreaRaw */
/***/ (function(module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"cylindricalEqualAreaRaw\", function() { return cylindricalEqualAreaRaw; });\n/* harmony import */ var _math_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../math.js */ \"./node_modules/vega/node_modules/d3-geo/src/math.js\");\n\n\nfunction cylindricalEqualAreaRaw(phi0) {\n  var cosPhi0 = Object(_math_js__WEBPACK_IMPORTED_MODULE_0__[\"cos\"])(phi0);\n\n  function forward(lambda, phi) {\n    return [lambda * cosPhi0, Object(_math_js__WEBPACK_IMPORTED_MODULE_0__[\"sin\"])(phi) / cosPhi0];\n  }\n\n  forward.invert = function(x, y) {\n    return [x / cosPhi0, Object(_math_js__WEBPACK_IMPORTED_MODULE_0__[\"asin\"])(y * cosPhi0)];\n  };\n\n  return forward;\n}\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvdmVnYS9ub2RlX21vZHVsZXMvZDMtZ2VvL3NyYy9wcm9qZWN0aW9uL2N5bGluZHJpY2FsRXF1YWxBcmVhLmpzLmpzIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL3ZlZ2Evbm9kZV9tb2R1bGVzL2QzLWdlby9zcmMvcHJvamVjdGlvbi9jeWxpbmRyaWNhbEVxdWFsQXJlYS5qcz84Yzc0Il0sInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7YXNpbiwgY29zLCBzaW59IGZyb20gXCIuLi9tYXRoLmpzXCI7XG5cbmV4cG9ydCBmdW5jdGlvbiBjeWxpbmRyaWNhbEVxdWFsQXJlYVJhdyhwaGkwKSB7XG4gIHZhciBjb3NQaGkwID0gY29zKHBoaTApO1xuXG4gIGZ1bmN0aW9uIGZvcndhcmQobGFtYmRhLCBwaGkpIHtcbiAgICByZXR1cm4gW2xhbWJkYSAqIGNvc1BoaTAsIHNpbihwaGkpIC8gY29zUGhpMF07XG4gIH1cblxuICBmb3J3YXJkLmludmVydCA9IGZ1bmN0aW9uKHgsIHkpIHtcbiAgICByZXR1cm4gW3ggLyBjb3NQaGkwLCBhc2luKHkgKiBjb3NQaGkwKV07XG4gIH07XG5cbiAgcmV0dXJuIGZvcndhcmQ7XG59XG4iXSwibWFwcGluZ3MiOiJBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTsiLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///./node_modules/vega/node_modules/d3-geo/src/projection/cylindricalEqualArea.js\n");

/***/ }),

/***/ "./node_modules/vega/node_modules/d3-geo/src/projection/equalEarth.js":
/*!****************************************************************************!*\
  !*** ./node_modules/vega/node_modules/d3-geo/src/projection/equalEarth.js ***!
  \****************************************************************************/
/*! exports provided: equalEarthRaw, default */
/***/ (function(module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"equalEarthRaw\", function() { return equalEarthRaw; });\n/* harmony import */ var _index_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./index.js */ \"./node_modules/vega/node_modules/d3-geo/src/projection/index.js\");\n/* harmony import */ var _math_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../math.js */ \"./node_modules/vega/node_modules/d3-geo/src/math.js\");\n\n\n\nvar A1 = 1.340264,\n    A2 = -0.081106,\n    A3 = 0.000893,\n    A4 = 0.003796,\n    M = Object(_math_js__WEBPACK_IMPORTED_MODULE_1__[\"sqrt\"])(3) / 2,\n    iterations = 12;\n\nfunction equalEarthRaw(lambda, phi) {\n  var l = Object(_math_js__WEBPACK_IMPORTED_MODULE_1__[\"asin\"])(M * Object(_math_js__WEBPACK_IMPORTED_MODULE_1__[\"sin\"])(phi)), l2 = l * l, l6 = l2 * l2 * l2;\n  return [\n    lambda * Object(_math_js__WEBPACK_IMPORTED_MODULE_1__[\"cos\"])(l) / (M * (A1 + 3 * A2 * l2 + l6 * (7 * A3 + 9 * A4 * l2))),\n    l * (A1 + A2 * l2 + l6 * (A3 + A4 * l2))\n  ];\n}\n\nequalEarthRaw.invert = function(x, y) {\n  var l = y, l2 = l * l, l6 = l2 * l2 * l2;\n  for (var i = 0, delta, fy, fpy; i < iterations; ++i) {\n    fy = l * (A1 + A2 * l2 + l6 * (A3 + A4 * l2)) - y;\n    fpy = A1 + 3 * A2 * l2 + l6 * (7 * A3 + 9 * A4 * l2);\n    l -= delta = fy / fpy, l2 = l * l, l6 = l2 * l2 * l2;\n    if (Object(_math_js__WEBPACK_IMPORTED_MODULE_1__[\"abs\"])(delta) < _math_js__WEBPACK_IMPORTED_MODULE_1__[\"epsilon2\"]) break;\n  }\n  return [\n    M * x * (A1 + 3 * A2 * l2 + l6 * (7 * A3 + 9 * A4 * l2)) / Object(_math_js__WEBPACK_IMPORTED_MODULE_1__[\"cos\"])(l),\n    Object(_math_js__WEBPACK_IMPORTED_MODULE_1__[\"asin\"])(Object(_math_js__WEBPACK_IMPORTED_MODULE_1__[\"sin\"])(l) / M)\n  ];\n};\n\n/* harmony default export */ __webpack_exports__[\"default\"] = (function() {\n  return Object(_index_js__WEBPACK_IMPORTED_MODULE_0__[\"default\"])(equalEarthRaw)\n      .scale(177.158);\n});\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvdmVnYS9ub2RlX21vZHVsZXMvZDMtZ2VvL3NyYy9wcm9qZWN0aW9uL2VxdWFsRWFydGguanMuanMiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvdmVnYS9ub2RlX21vZHVsZXMvZDMtZ2VvL3NyYy9wcm9qZWN0aW9uL2VxdWFsRWFydGguanM/NmJlZCJdLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgcHJvamVjdGlvbiBmcm9tIFwiLi9pbmRleC5qc1wiO1xuaW1wb3J0IHthYnMsIGFzaW4sIGNvcywgZXBzaWxvbjIsIHNpbiwgc3FydH0gZnJvbSBcIi4uL21hdGguanNcIjtcblxudmFyIEExID0gMS4zNDAyNjQsXG4gICAgQTIgPSAtMC4wODExMDYsXG4gICAgQTMgPSAwLjAwMDg5MyxcbiAgICBBNCA9IDAuMDAzNzk2LFxuICAgIE0gPSBzcXJ0KDMpIC8gMixcbiAgICBpdGVyYXRpb25zID0gMTI7XG5cbmV4cG9ydCBmdW5jdGlvbiBlcXVhbEVhcnRoUmF3KGxhbWJkYSwgcGhpKSB7XG4gIHZhciBsID0gYXNpbihNICogc2luKHBoaSkpLCBsMiA9IGwgKiBsLCBsNiA9IGwyICogbDIgKiBsMjtcbiAgcmV0dXJuIFtcbiAgICBsYW1iZGEgKiBjb3MobCkgLyAoTSAqIChBMSArIDMgKiBBMiAqIGwyICsgbDYgKiAoNyAqIEEzICsgOSAqIEE0ICogbDIpKSksXG4gICAgbCAqIChBMSArIEEyICogbDIgKyBsNiAqIChBMyArIEE0ICogbDIpKVxuICBdO1xufVxuXG5lcXVhbEVhcnRoUmF3LmludmVydCA9IGZ1bmN0aW9uKHgsIHkpIHtcbiAgdmFyIGwgPSB5LCBsMiA9IGwgKiBsLCBsNiA9IGwyICogbDIgKiBsMjtcbiAgZm9yICh2YXIgaSA9IDAsIGRlbHRhLCBmeSwgZnB5OyBpIDwgaXRlcmF0aW9uczsgKytpKSB7XG4gICAgZnkgPSBsICogKEExICsgQTIgKiBsMiArIGw2ICogKEEzICsgQTQgKiBsMikpIC0geTtcbiAgICBmcHkgPSBBMSArIDMgKiBBMiAqIGwyICsgbDYgKiAoNyAqIEEzICsgOSAqIEE0ICogbDIpO1xuICAgIGwgLT0gZGVsdGEgPSBmeSAvIGZweSwgbDIgPSBsICogbCwgbDYgPSBsMiAqIGwyICogbDI7XG4gICAgaWYgKGFicyhkZWx0YSkgPCBlcHNpbG9uMikgYnJlYWs7XG4gIH1cbiAgcmV0dXJuIFtcbiAgICBNICogeCAqIChBMSArIDMgKiBBMiAqIGwyICsgbDYgKiAoNyAqIEEzICsgOSAqIEE0ICogbDIpKSAvIGNvcyhsKSxcbiAgICBhc2luKHNpbihsKSAvIE0pXG4gIF07XG59O1xuXG5leHBvcnQgZGVmYXVsdCBmdW5jdGlvbigpIHtcbiAgcmV0dXJuIHByb2plY3Rpb24oZXF1YWxFYXJ0aFJhdylcbiAgICAgIC5zY2FsZSgxNzcuMTU4KTtcbn1cbiJdLCJtYXBwaW5ncyI6IkFBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7Iiwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///./node_modules/vega/node_modules/d3-geo/src/projection/equalEarth.js\n");

/***/ }),

/***/ "./node_modules/vega/node_modules/d3-geo/src/projection/equirectangular.js":
/*!*********************************************************************************!*\
  !*** ./node_modules/vega/node_modules/d3-geo/src/projection/equirectangular.js ***!
  \*********************************************************************************/
/*! exports provided: equirectangularRaw, default */
/***/ (function(module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"equirectangularRaw\", function() { return equirectangularRaw; });\n/* harmony import */ var _index_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./index.js */ \"./node_modules/vega/node_modules/d3-geo/src/projection/index.js\");\n\n\nfunction equirectangularRaw(lambda, phi) {\n  return [lambda, phi];\n}\n\nequirectangularRaw.invert = equirectangularRaw;\n\n/* harmony default export */ __webpack_exports__[\"default\"] = (function() {\n  return Object(_index_js__WEBPACK_IMPORTED_MODULE_0__[\"default\"])(equirectangularRaw)\n      .scale(152.63);\n});\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvdmVnYS9ub2RlX21vZHVsZXMvZDMtZ2VvL3NyYy9wcm9qZWN0aW9uL2VxdWlyZWN0YW5ndWxhci5qcy5qcyIsInNvdXJjZXMiOlsid2VicGFjazovLy8uL25vZGVfbW9kdWxlcy92ZWdhL25vZGVfbW9kdWxlcy9kMy1nZW8vc3JjL3Byb2plY3Rpb24vZXF1aXJlY3Rhbmd1bGFyLmpzPzZkMTEiXSwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHByb2plY3Rpb24gZnJvbSBcIi4vaW5kZXguanNcIjtcblxuZXhwb3J0IGZ1bmN0aW9uIGVxdWlyZWN0YW5ndWxhclJhdyhsYW1iZGEsIHBoaSkge1xuICByZXR1cm4gW2xhbWJkYSwgcGhpXTtcbn1cblxuZXF1aXJlY3Rhbmd1bGFyUmF3LmludmVydCA9IGVxdWlyZWN0YW5ndWxhclJhdztcblxuZXhwb3J0IGRlZmF1bHQgZnVuY3Rpb24oKSB7XG4gIHJldHVybiBwcm9qZWN0aW9uKGVxdWlyZWN0YW5ndWxhclJhdylcbiAgICAgIC5zY2FsZSgxNTIuNjMpO1xufVxuIl0sIm1hcHBpbmdzIjoiQUFBQTtBQUFBO0FBQUE7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7Iiwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///./node_modules/vega/node_modules/d3-geo/src/projection/equirectangular.js\n");

/***/ }),

/***/ "./node_modules/vega/node_modules/d3-geo/src/projection/fit.js":
/*!*********************************************************************!*\
  !*** ./node_modules/vega/node_modules/d3-geo/src/projection/fit.js ***!
  \*********************************************************************/
/*! exports provided: fitExtent, fitSize, fitWidth, fitHeight */
/***/ (function(module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"fitExtent\", function() { return fitExtent; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"fitSize\", function() { return fitSize; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"fitWidth\", function() { return fitWidth; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"fitHeight\", function() { return fitHeight; });\n/* harmony import */ var _stream_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../stream.js */ \"./node_modules/vega/node_modules/d3-geo/src/stream.js\");\n/* harmony import */ var _path_bounds_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../path/bounds.js */ \"./node_modules/vega/node_modules/d3-geo/src/path/bounds.js\");\n\n\n\nfunction fit(projection, fitBounds, object) {\n  var clip = projection.clipExtent && projection.clipExtent();\n  projection.scale(150).translate([0, 0]);\n  if (clip != null) projection.clipExtent(null);\n  Object(_stream_js__WEBPACK_IMPORTED_MODULE_0__[\"default\"])(object, projection.stream(_path_bounds_js__WEBPACK_IMPORTED_MODULE_1__[\"default\"]));\n  fitBounds(_path_bounds_js__WEBPACK_IMPORTED_MODULE_1__[\"default\"].result());\n  if (clip != null) projection.clipExtent(clip);\n  return projection;\n}\n\nfunction fitExtent(projection, extent, object) {\n  return fit(projection, function(b) {\n    var w = extent[1][0] - extent[0][0],\n        h = extent[1][1] - extent[0][1],\n        k = Math.min(w / (b[1][0] - b[0][0]), h / (b[1][1] - b[0][1])),\n        x = +extent[0][0] + (w - k * (b[1][0] + b[0][0])) / 2,\n        y = +extent[0][1] + (h - k * (b[1][1] + b[0][1])) / 2;\n    projection.scale(150 * k).translate([x, y]);\n  }, object);\n}\n\nfunction fitSize(projection, size, object) {\n  return fitExtent(projection, [[0, 0], size], object);\n}\n\nfunction fitWidth(projection, width, object) {\n  return fit(projection, function(b) {\n    var w = +width,\n        k = w / (b[1][0] - b[0][0]),\n        x = (w - k * (b[1][0] + b[0][0])) / 2,\n        y = -k * b[0][1];\n    projection.scale(150 * k).translate([x, y]);\n  }, object);\n}\n\nfunction fitHeight(projection, height, object) {\n  return fit(projection, function(b) {\n    var h = +height,\n        k = h / (b[1][1] - b[0][1]),\n        x = -k * b[0][0],\n        y = (h - k * (b[1][1] + b[0][1])) / 2;\n    projection.scale(150 * k).translate([x, y]);\n  }, object);\n}\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvdmVnYS9ub2RlX21vZHVsZXMvZDMtZ2VvL3NyYy9wcm9qZWN0aW9uL2ZpdC5qcy5qcyIsInNvdXJjZXMiOlsid2VicGFjazovLy8uL25vZGVfbW9kdWxlcy92ZWdhL25vZGVfbW9kdWxlcy9kMy1nZW8vc3JjL3Byb2plY3Rpb24vZml0LmpzP2RiNWEiXSwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtkZWZhdWx0IGFzIGdlb1N0cmVhbX0gZnJvbSBcIi4uL3N0cmVhbS5qc1wiO1xuaW1wb3J0IGJvdW5kc1N0cmVhbSBmcm9tIFwiLi4vcGF0aC9ib3VuZHMuanNcIjtcblxuZnVuY3Rpb24gZml0KHByb2plY3Rpb24sIGZpdEJvdW5kcywgb2JqZWN0KSB7XG4gIHZhciBjbGlwID0gcHJvamVjdGlvbi5jbGlwRXh0ZW50ICYmIHByb2plY3Rpb24uY2xpcEV4dGVudCgpO1xuICBwcm9qZWN0aW9uLnNjYWxlKDE1MCkudHJhbnNsYXRlKFswLCAwXSk7XG4gIGlmIChjbGlwICE9IG51bGwpIHByb2plY3Rpb24uY2xpcEV4dGVudChudWxsKTtcbiAgZ2VvU3RyZWFtKG9iamVjdCwgcHJvamVjdGlvbi5zdHJlYW0oYm91bmRzU3RyZWFtKSk7XG4gIGZpdEJvdW5kcyhib3VuZHNTdHJlYW0ucmVzdWx0KCkpO1xuICBpZiAoY2xpcCAhPSBudWxsKSBwcm9qZWN0aW9uLmNsaXBFeHRlbnQoY2xpcCk7XG4gIHJldHVybiBwcm9qZWN0aW9uO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gZml0RXh0ZW50KHByb2plY3Rpb24sIGV4dGVudCwgb2JqZWN0KSB7XG4gIHJldHVybiBmaXQocHJvamVjdGlvbiwgZnVuY3Rpb24oYikge1xuICAgIHZhciB3ID0gZXh0ZW50WzFdWzBdIC0gZXh0ZW50WzBdWzBdLFxuICAgICAgICBoID0gZXh0ZW50WzFdWzFdIC0gZXh0ZW50WzBdWzFdLFxuICAgICAgICBrID0gTWF0aC5taW4odyAvIChiWzFdWzBdIC0gYlswXVswXSksIGggLyAoYlsxXVsxXSAtIGJbMF1bMV0pKSxcbiAgICAgICAgeCA9ICtleHRlbnRbMF1bMF0gKyAodyAtIGsgKiAoYlsxXVswXSArIGJbMF1bMF0pKSAvIDIsXG4gICAgICAgIHkgPSArZXh0ZW50WzBdWzFdICsgKGggLSBrICogKGJbMV1bMV0gKyBiWzBdWzFdKSkgLyAyO1xuICAgIHByb2plY3Rpb24uc2NhbGUoMTUwICogaykudHJhbnNsYXRlKFt4LCB5XSk7XG4gIH0sIG9iamVjdCk7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBmaXRTaXplKHByb2plY3Rpb24sIHNpemUsIG9iamVjdCkge1xuICByZXR1cm4gZml0RXh0ZW50KHByb2plY3Rpb24sIFtbMCwgMF0sIHNpemVdLCBvYmplY3QpO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gZml0V2lkdGgocHJvamVjdGlvbiwgd2lkdGgsIG9iamVjdCkge1xuICByZXR1cm4gZml0KHByb2plY3Rpb24sIGZ1bmN0aW9uKGIpIHtcbiAgICB2YXIgdyA9ICt3aWR0aCxcbiAgICAgICAgayA9IHcgLyAoYlsxXVswXSAtIGJbMF1bMF0pLFxuICAgICAgICB4ID0gKHcgLSBrICogKGJbMV1bMF0gKyBiWzBdWzBdKSkgLyAyLFxuICAgICAgICB5ID0gLWsgKiBiWzBdWzFdO1xuICAgIHByb2plY3Rpb24uc2NhbGUoMTUwICogaykudHJhbnNsYXRlKFt4LCB5XSk7XG4gIH0sIG9iamVjdCk7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBmaXRIZWlnaHQocHJvamVjdGlvbiwgaGVpZ2h0LCBvYmplY3QpIHtcbiAgcmV0dXJuIGZpdChwcm9qZWN0aW9uLCBmdW5jdGlvbihiKSB7XG4gICAgdmFyIGggPSAraGVpZ2h0LFxuICAgICAgICBrID0gaCAvIChiWzFdWzFdIC0gYlswXVsxXSksXG4gICAgICAgIHggPSAtayAqIGJbMF1bMF0sXG4gICAgICAgIHkgPSAoaCAtIGsgKiAoYlsxXVsxXSArIGJbMF1bMV0pKSAvIDI7XG4gICAgcHJvamVjdGlvbi5zY2FsZSgxNTAgKiBrKS50cmFuc2xhdGUoW3gsIHldKTtcbiAgfSwgb2JqZWN0KTtcbn1cbiJdLCJtYXBwaW5ncyI6IkFBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOyIsInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///./node_modules/vega/node_modules/d3-geo/src/projection/fit.js\n");

/***/ }),

/***/ "./node_modules/vega/node_modules/d3-geo/src/projection/gnomonic.js":
/*!**************************************************************************!*\
  !*** ./node_modules/vega/node_modules/d3-geo/src/projection/gnomonic.js ***!
  \**************************************************************************/
/*! exports provided: gnomonicRaw, default */
/***/ (function(module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"gnomonicRaw\", function() { return gnomonicRaw; });\n/* harmony import */ var _math_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../math.js */ \"./node_modules/vega/node_modules/d3-geo/src/math.js\");\n/* harmony import */ var _azimuthal_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./azimuthal.js */ \"./node_modules/vega/node_modules/d3-geo/src/projection/azimuthal.js\");\n/* harmony import */ var _index_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./index.js */ \"./node_modules/vega/node_modules/d3-geo/src/projection/index.js\");\n\n\n\n\nfunction gnomonicRaw(x, y) {\n  var cy = Object(_math_js__WEBPACK_IMPORTED_MODULE_0__[\"cos\"])(y), k = Object(_math_js__WEBPACK_IMPORTED_MODULE_0__[\"cos\"])(x) * cy;\n  return [cy * Object(_math_js__WEBPACK_IMPORTED_MODULE_0__[\"sin\"])(x) / k, Object(_math_js__WEBPACK_IMPORTED_MODULE_0__[\"sin\"])(y) / k];\n}\n\ngnomonicRaw.invert = Object(_azimuthal_js__WEBPACK_IMPORTED_MODULE_1__[\"azimuthalInvert\"])(_math_js__WEBPACK_IMPORTED_MODULE_0__[\"atan\"]);\n\n/* harmony default export */ __webpack_exports__[\"default\"] = (function() {\n  return Object(_index_js__WEBPACK_IMPORTED_MODULE_2__[\"default\"])(gnomonicRaw)\n      .scale(144.049)\n      .clipAngle(60);\n});\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvdmVnYS9ub2RlX21vZHVsZXMvZDMtZ2VvL3NyYy9wcm9qZWN0aW9uL2dub21vbmljLmpzLmpzIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL3ZlZ2Evbm9kZV9tb2R1bGVzL2QzLWdlby9zcmMvcHJvamVjdGlvbi9nbm9tb25pYy5qcz83ODNhIl0sInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7YXRhbiwgY29zLCBzaW59IGZyb20gXCIuLi9tYXRoLmpzXCI7XG5pbXBvcnQge2F6aW11dGhhbEludmVydH0gZnJvbSBcIi4vYXppbXV0aGFsLmpzXCI7XG5pbXBvcnQgcHJvamVjdGlvbiBmcm9tIFwiLi9pbmRleC5qc1wiO1xuXG5leHBvcnQgZnVuY3Rpb24gZ25vbW9uaWNSYXcoeCwgeSkge1xuICB2YXIgY3kgPSBjb3MoeSksIGsgPSBjb3MoeCkgKiBjeTtcbiAgcmV0dXJuIFtjeSAqIHNpbih4KSAvIGssIHNpbih5KSAvIGtdO1xufVxuXG5nbm9tb25pY1Jhdy5pbnZlcnQgPSBhemltdXRoYWxJbnZlcnQoYXRhbik7XG5cbmV4cG9ydCBkZWZhdWx0IGZ1bmN0aW9uKCkge1xuICByZXR1cm4gcHJvamVjdGlvbihnbm9tb25pY1JhdylcbiAgICAgIC5zY2FsZSgxNDQuMDQ5KVxuICAgICAgLmNsaXBBbmdsZSg2MCk7XG59XG4iXSwibWFwcGluZ3MiOiJBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTsiLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///./node_modules/vega/node_modules/d3-geo/src/projection/gnomonic.js\n");

/***/ }),

/***/ "./node_modules/vega/node_modules/d3-geo/src/projection/identity.js":
/*!**************************************************************************!*\
  !*** ./node_modules/vega/node_modules/d3-geo/src/projection/identity.js ***!
  \**************************************************************************/
/*! exports provided: default */
/***/ (function(module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _clip_rectangle_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../clip/rectangle.js */ \"./node_modules/vega/node_modules/d3-geo/src/clip/rectangle.js\");\n/* harmony import */ var _identity_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../identity.js */ \"./node_modules/vega/node_modules/d3-geo/src/identity.js\");\n/* harmony import */ var _transform_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ../transform.js */ \"./node_modules/vega/node_modules/d3-geo/src/transform.js\");\n/* harmony import */ var _fit_js__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ./fit.js */ \"./node_modules/vega/node_modules/d3-geo/src/projection/fit.js\");\n/* harmony import */ var _math_js__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ../math.js */ \"./node_modules/vega/node_modules/d3-geo/src/math.js\");\n\n\n\n\n\n\n/* harmony default export */ __webpack_exports__[\"default\"] = (function() {\n  var k = 1, tx = 0, ty = 0, sx = 1, sy = 1, // scale, translate and reflect\n      alpha = 0, ca, sa, // angle\n      x0 = null, y0, x1, y1, // clip extent\n      kx = 1, ky = 1,\n      transform = Object(_transform_js__WEBPACK_IMPORTED_MODULE_2__[\"transformer\"])({\n        point: function(x, y) {\n          var p = projection([x, y])\n          this.stream.point(p[0], p[1]);\n        }\n      }),\n      postclip = _identity_js__WEBPACK_IMPORTED_MODULE_1__[\"default\"],\n      cache,\n      cacheStream;\n\n  function reset() {\n    kx = k * sx;\n    ky = k * sy;\n    cache = cacheStream = null;\n    return projection;\n  }\n\n  function projection (p) {\n    var x = p[0] * kx, y = p[1] * ky;\n    if (alpha) {\n      var t = y * ca - x * sa;\n      x = x * ca + y * sa;\n      y = t;\n    }    \n    return [x + tx, y + ty];\n  }\n  projection.invert = function(p) {\n    var x = p[0] - tx, y = p[1] - ty;\n    if (alpha) {\n      var t = y * ca + x * sa;\n      x = x * ca - y * sa;\n      y = t;\n    }\n    return [x / kx, y / ky];\n  };\n  projection.stream = function(stream) {\n    return cache && cacheStream === stream ? cache : cache = transform(postclip(cacheStream = stream));\n  };\n  projection.postclip = function(_) {\n    return arguments.length ? (postclip = _, x0 = y0 = x1 = y1 = null, reset()) : postclip;\n  };\n  projection.clipExtent = function(_) {\n    return arguments.length ? (postclip = _ == null ? (x0 = y0 = x1 = y1 = null, _identity_js__WEBPACK_IMPORTED_MODULE_1__[\"default\"]) : Object(_clip_rectangle_js__WEBPACK_IMPORTED_MODULE_0__[\"default\"])(x0 = +_[0][0], y0 = +_[0][1], x1 = +_[1][0], y1 = +_[1][1]), reset()) : x0 == null ? null : [[x0, y0], [x1, y1]];\n  };\n  projection.scale = function(_) {\n    return arguments.length ? (k = +_, reset()) : k;\n  };\n  projection.translate = function(_) {\n    return arguments.length ? (tx = +_[0], ty = +_[1], reset()) : [tx, ty];\n  }\n  projection.angle = function(_) {\n    return arguments.length ? (alpha = _ % 360 * _math_js__WEBPACK_IMPORTED_MODULE_4__[\"radians\"], sa = Object(_math_js__WEBPACK_IMPORTED_MODULE_4__[\"sin\"])(alpha), ca = Object(_math_js__WEBPACK_IMPORTED_MODULE_4__[\"cos\"])(alpha), reset()) : alpha * _math_js__WEBPACK_IMPORTED_MODULE_4__[\"degrees\"];\n  };\n  projection.reflectX = function(_) {\n    return arguments.length ? (sx = _ ? -1 : 1, reset()) : sx < 0;\n  };\n  projection.reflectY = function(_) {\n    return arguments.length ? (sy = _ ? -1 : 1, reset()) : sy < 0;\n  };\n  projection.fitExtent = function(extent, object) {\n    return Object(_fit_js__WEBPACK_IMPORTED_MODULE_3__[\"fitExtent\"])(projection, extent, object);\n  };\n  projection.fitSize = function(size, object) {\n    return Object(_fit_js__WEBPACK_IMPORTED_MODULE_3__[\"fitSize\"])(projection, size, object);\n  };\n  projection.fitWidth = function(width, object) {\n    return Object(_fit_js__WEBPACK_IMPORTED_MODULE_3__[\"fitWidth\"])(projection, width, object);\n  };\n  projection.fitHeight = function(height, object) {\n    return Object(_fit_js__WEBPACK_IMPORTED_MODULE_3__[\"fitHeight\"])(projection, height, object);\n  };\n\n  return projection;\n});\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,[encoded data, 4764 characters]\n//# sourceURL=webpack-internal:///./node_modules/vega/node_modules/d3-geo/src/projection/identity.js\n");

/***/ }),

/***/ "./node_modules/vega/node_modules/d3-geo/src/projection/index.js":
/*!***********************************************************************!*\
  !*** ./node_modules/vega/node_modules/d3-geo/src/projection/index.js ***!
  \***********************************************************************/
/*! exports provided: default, projectionMutator */
/***/ (function(module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"default\", function() { return projection; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"projectionMutator\", function() { return projectionMutator; });\n/* harmony import */ var _clip_antimeridian_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../clip/antimeridian.js */ \"./node_modules/vega/node_modules/d3-geo/src/clip/antimeridian.js\");\n/* harmony import */ var _clip_circle_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../clip/circle.js */ \"./node_modules/vega/node_modules/d3-geo/src/clip/circle.js\");\n/* harmony import */ var _clip_rectangle_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ../clip/rectangle.js */ \"./node_modules/vega/node_modules/d3-geo/src/clip/rectangle.js\");\n/* harmony import */ var _compose_js__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ../compose.js */ \"./node_modules/vega/node_modules/d3-geo/src/compose.js\");\n/* harmony import */ var _identity_js__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ../identity.js */ \"./node_modules/vega/node_modules/d3-geo/src/identity.js\");\n/* harmony import */ var _math_js__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! ../math.js */ \"./node_modules/vega/node_modules/d3-geo/src/math.js\");\n/* harmony import */ var _rotation_js__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! ../rotation.js */ \"./node_modules/vega/node_modules/d3-geo/src/rotation.js\");\n/* harmony import */ var _transform_js__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! ../transform.js */ \"./node_modules/vega/node_modules/d3-geo/src/transform.js\");\n/* harmony import */ var _fit_js__WEBPACK_IMPORTED_MODULE_8__ = __webpack_require__(/*! ./fit.js */ \"./node_modules/vega/node_modules/d3-geo/src/projection/fit.js\");\n/* harmony import */ var _resample_js__WEBPACK_IMPORTED_MODULE_9__ = __webpack_require__(/*! ./resample.js */ \"./node_modules/vega/node_modules/d3-geo/src/projection/resample.js\");\n\n\n\n\n\n\n\n\n\n\n\nvar transformRadians = Object(_transform_js__WEBPACK_IMPORTED_MODULE_7__[\"transformer\"])({\n  point: function(x, y) {\n    this.stream.point(x * _math_js__WEBPACK_IMPORTED_MODULE_5__[\"radians\"], y * _math_js__WEBPACK_IMPORTED_MODULE_5__[\"radians\"]);\n  }\n});\n\nfunction transformRotate(rotate) {\n  return Object(_transform_js__WEBPACK_IMPORTED_MODULE_7__[\"transformer\"])({\n    point: function(x, y) {\n      var r = rotate(x, y);\n      return this.stream.point(r[0], r[1]);\n    }\n  });\n}\n\nfunction scaleTranslate(k, dx, dy, sx, sy) {\n  function transform(x, y) {\n    x *= sx; y *= sy;\n    return [dx + k * x, dy - k * y];\n  }\n  transform.invert = function(x, y) {\n    return [(x - dx) / k * sx, (dy - y) / k * sy];\n  };\n  return transform;\n}\n\nfunction scaleTranslateRotate(k, dx, dy, sx, sy, alpha) {\n  if (!alpha) return scaleTranslate(k, dx, dy, sx, sy);\n  var cosAlpha = Object(_math_js__WEBPACK_IMPORTED_MODULE_5__[\"cos\"])(alpha),\n      sinAlpha = Object(_math_js__WEBPACK_IMPORTED_MODULE_5__[\"sin\"])(alpha),\n      a = cosAlpha * k,\n      b = sinAlpha * k,\n      ai = cosAlpha / k,\n      bi = sinAlpha / k,\n      ci = (sinAlpha * dy - cosAlpha * dx) / k,\n      fi = (sinAlpha * dx + cosAlpha * dy) / k;\n  function transform(x, y) {\n    x *= sx; y *= sy;\n    return [a * x - b * y + dx, dy - b * x - a * y];\n  }\n  transform.invert = function(x, y) {\n    return [sx * (ai * x - bi * y + ci), sy * (fi - bi * x - ai * y)];\n  };\n  return transform;\n}\n\nfunction projection(project) {\n  return projectionMutator(function() { return project; })();\n}\n\nfunction projectionMutator(projectAt) {\n  var project,\n      k = 150, // scale\n      x = 480, y = 250, // translate\n      lambda = 0, phi = 0, // center\n      deltaLambda = 0, deltaPhi = 0, deltaGamma = 0, rotate, // pre-rotate\n      alpha = 0, // post-rotate angle\n      sx = 1, // reflectX\n      sy = 1, // reflectX\n      theta = null, preclip = _clip_antimeridian_js__WEBPACK_IMPORTED_MODULE_0__[\"default\"], // pre-clip angle\n      x0 = null, y0, x1, y1, postclip = _identity_js__WEBPACK_IMPORTED_MODULE_4__[\"default\"], // post-clip extent\n      delta2 = 0.5, // precision\n      projectResample,\n      projectTransform,\n      projectRotateTransform,\n      cache,\n      cacheStream;\n\n  function projection(point) {\n    return projectRotateTransform(point[0] * _math_js__WEBPACK_IMPORTED_MODULE_5__[\"radians\"], point[1] * _math_js__WEBPACK_IMPORTED_MODULE_5__[\"radians\"]);\n  }\n\n  function invert(point) {\n    point = projectRotateTransform.invert(point[0], point[1]);\n    return point && [point[0] * _math_js__WEBPACK_IMPORTED_MODULE_5__[\"degrees\"], point[1] * _math_js__WEBPACK_IMPORTED_MODULE_5__[\"degrees\"]];\n  }\n\n  projection.stream = function(stream) {\n    return cache && cacheStream === stream ? cache : cache = transformRadians(transformRotate(rotate)(preclip(projectResample(postclip(cacheStream = stream)))));\n  };\n\n  projection.preclip = function(_) {\n    return arguments.length ? (preclip = _, theta = undefined, reset()) : preclip;\n  };\n\n  projection.postclip = function(_) {\n    return arguments.length ? (postclip = _, x0 = y0 = x1 = y1 = null, reset()) : postclip;\n  };\n\n  projection.clipAngle = function(_) {\n    return arguments.length ? (preclip = +_ ? Object(_clip_circle_js__WEBPACK_IMPORTED_MODULE_1__[\"default\"])(theta = _ * _math_js__WEBPACK_IMPORTED_MODULE_5__[\"radians\"]) : (theta = null, _clip_antimeridian_js__WEBPACK_IMPORTED_MODULE_0__[\"default\"]), reset()) : theta * _math_js__WEBPACK_IMPORTED_MODULE_5__[\"degrees\"];\n  };\n\n  projection.clipExtent = function(_) {\n    return arguments.length ? (postclip = _ == null ? (x0 = y0 = x1 = y1 = null, _identity_js__WEBPACK_IMPORTED_MODULE_4__[\"default\"]) : Object(_clip_rectangle_js__WEBPACK_IMPORTED_MODULE_2__[\"default\"])(x0 = +_[0][0], y0 = +_[0][1], x1 = +_[1][0], y1 = +_[1][1]), reset()) : x0 == null ? null : [[x0, y0], [x1, y1]];\n  };\n\n  projection.scale = function(_) {\n    return arguments.length ? (k = +_, recenter()) : k;\n  };\n\n  projection.translate = function(_) {\n    return arguments.length ? (x = +_[0], y = +_[1], recenter()) : [x, y];\n  };\n\n  projection.center = function(_) {\n    return arguments.length ? (lambda = _[0] % 360 * _math_js__WEBPACK_IMPORTED_MODULE_5__[\"radians\"], phi = _[1] % 360 * _math_js__WEBPACK_IMPORTED_MODULE_5__[\"radians\"], recenter()) : [lambda * _math_js__WEBPACK_IMPORTED_MODULE_5__[\"degrees\"], phi * _math_js__WEBPACK_IMPORTED_MODULE_5__[\"degrees\"]];\n  };\n\n  projection.rotate = function(_) {\n    return arguments.length ? (deltaLambda = _[0] % 360 * _math_js__WEBPACK_IMPORTED_MODULE_5__[\"radians\"], deltaPhi = _[1] % 360 * _math_js__WEBPACK_IMPORTED_MODULE_5__[\"radians\"], deltaGamma = _.length > 2 ? _[2] % 360 * _math_js__WEBPACK_IMPORTED_MODULE_5__[\"radians\"] : 0, recenter()) : [deltaLambda * _math_js__WEBPACK_IMPORTED_MODULE_5__[\"degrees\"], deltaPhi * _math_js__WEBPACK_IMPORTED_MODULE_5__[\"degrees\"], deltaGamma * _math_js__WEBPACK_IMPORTED_MODULE_5__[\"degrees\"]];\n  };\n\n  projection.angle = function(_) {\n    return arguments.length ? (alpha = _ % 360 * _math_js__WEBPACK_IMPORTED_MODULE_5__[\"radians\"], recenter()) : alpha * _math_js__WEBPACK_IMPORTED_MODULE_5__[\"degrees\"];\n  };\n\n  projection.reflectX = function(_) {\n    return arguments.length ? (sx = _ ? -1 : 1, recenter()) : sx < 0;\n  };\n\n  projection.reflectY = function(_) {\n    return arguments.length ? (sy = _ ? -1 : 1, recenter()) : sy < 0;\n  };\n\n  projection.precision = function(_) {\n    return arguments.length ? (projectResample = Object(_resample_js__WEBPACK_IMPORTED_MODULE_9__[\"default\"])(projectTransform, delta2 = _ * _), reset()) : Object(_math_js__WEBPACK_IMPORTED_MODULE_5__[\"sqrt\"])(delta2);\n  };\n\n  projection.fitExtent = function(extent, object) {\n    return Object(_fit_js__WEBPACK_IMPORTED_MODULE_8__[\"fitExtent\"])(projection, extent, object);\n  };\n\n  projection.fitSize = function(size, object) {\n    return Object(_fit_js__WEBPACK_IMPORTED_MODULE_8__[\"fitSize\"])(projection, size, object);\n  };\n\n  projection.fitWidth = function(width, object) {\n    return Object(_fit_js__WEBPACK_IMPORTED_MODULE_8__[\"fitWidth\"])(projection, width, object);\n  };\n\n  projection.fitHeight = function(height, object) {\n    return Object(_fit_js__WEBPACK_IMPORTED_MODULE_8__[\"fitHeight\"])(projection, height, object);\n  };\n\n  function recenter() {\n    var center = scaleTranslateRotate(k, 0, 0, sx, sy, alpha).apply(null, project(lambda, phi)),\n        transform = scaleTranslateRotate(k, x - center[0], y - center[1], sx, sy, alpha);\n    rotate = Object(_rotation_js__WEBPACK_IMPORTED_MODULE_6__[\"rotateRadians\"])(deltaLambda, deltaPhi, deltaGamma);\n    projectTransform = Object(_compose_js__WEBPACK_IMPORTED_MODULE_3__[\"default\"])(project, transform);\n    projectRotateTransform = Object(_compose_js__WEBPACK_IMPORTED_MODULE_3__[\"default\"])(rotate, projectTransform);\n    projectResample = Object(_resample_js__WEBPACK_IMPORTED_MODULE_9__[\"default\"])(projectTransform, delta2);\n    return reset();\n  }\n\n  function reset() {\n    cache = cacheStream = null;\n    return projection;\n  }\n\n  return function() {\n    project = projectAt.apply(this, arguments);\n    projection.invert = project.invert && invert;\n    return recenter();\n  };\n}\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,[encoded data, 9672 characters]\n//# sourceURL=webpack-internal:///./node_modules/vega/node_modules/d3-geo/src/projection/index.js\n");

/***/ }),

/***/ "./node_modules/vega/node_modules/d3-geo/src/projection/mercator.js":
/*!**************************************************************************!*\
  !*** ./node_modules/vega/node_modules/d3-geo/src/projection/mercator.js ***!
  \**************************************************************************/
/*! exports provided: mercatorRaw, default, mercatorProjection */
/***/ (function(module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"mercatorRaw\", function() { return mercatorRaw; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"mercatorProjection\", function() { return mercatorProjection; });\n/* harmony import */ var _math_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../math.js */ \"./node_modules/vega/node_modules/d3-geo/src/math.js\");\n/* harmony import */ var _rotation_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../rotation.js */ \"./node_modules/vega/node_modules/d3-geo/src/rotation.js\");\n/* harmony import */ var _index_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./index.js */ \"./node_modules/vega/node_modules/d3-geo/src/projection/index.js\");\n\n\n\n\nfunction mercatorRaw(lambda, phi) {\n  return [lambda, Object(_math_js__WEBPACK_IMPORTED_MODULE_0__[\"log\"])(Object(_math_js__WEBPACK_IMPORTED_MODULE_0__[\"tan\"])((_math_js__WEBPACK_IMPORTED_MODULE_0__[\"halfPi\"] + phi) / 2))];\n}\n\nmercatorRaw.invert = function(x, y) {\n  return [x, 2 * Object(_math_js__WEBPACK_IMPORTED_MODULE_0__[\"atan\"])(Object(_math_js__WEBPACK_IMPORTED_MODULE_0__[\"exp\"])(y)) - _math_js__WEBPACK_IMPORTED_MODULE_0__[\"halfPi\"]];\n};\n\n/* harmony default export */ __webpack_exports__[\"default\"] = (function() {\n  return mercatorProjection(mercatorRaw)\n      .scale(961 / _math_js__WEBPACK_IMPORTED_MODULE_0__[\"tau\"]);\n});\n\nfunction mercatorProjection(project) {\n  var m = Object(_index_js__WEBPACK_IMPORTED_MODULE_2__[\"default\"])(project),\n      center = m.center,\n      scale = m.scale,\n      translate = m.translate,\n      clipExtent = m.clipExtent,\n      x0 = null, y0, x1, y1; // clip extent\n\n  m.scale = function(_) {\n    return arguments.length ? (scale(_), reclip()) : scale();\n  };\n\n  m.translate = function(_) {\n    return arguments.length ? (translate(_), reclip()) : translate();\n  };\n\n  m.center = function(_) {\n    return arguments.length ? (center(_), reclip()) : center();\n  };\n\n  m.clipExtent = function(_) {\n    return arguments.length ? ((_ == null ? x0 = y0 = x1 = y1 = null : (x0 = +_[0][0], y0 = +_[0][1], x1 = +_[1][0], y1 = +_[1][1])), reclip()) : x0 == null ? null : [[x0, y0], [x1, y1]];\n  };\n\n  function reclip() {\n    var k = _math_js__WEBPACK_IMPORTED_MODULE_0__[\"pi\"] * scale(),\n        t = m(Object(_rotation_js__WEBPACK_IMPORTED_MODULE_1__[\"default\"])(m.rotate()).invert([0, 0]));\n    return clipExtent(x0 == null\n        ? [[t[0] - k, t[1] - k], [t[0] + k, t[1] + k]] : project === mercatorRaw\n        ? [[Math.max(t[0] - k, x0), y0], [Math.min(t[0] + k, x1), y1]]\n        : [[x0, Math.max(t[1] - k, y0)], [x1, Math.min(t[1] + k, y1)]]);\n  }\n\n  return reclip();\n}\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvdmVnYS9ub2RlX21vZHVsZXMvZDMtZ2VvL3NyYy9wcm9qZWN0aW9uL21lcmNhdG9yLmpzLmpzIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL3ZlZ2Evbm9kZV9tb2R1bGVzL2QzLWdlby9zcmMvcHJvamVjdGlvbi9tZXJjYXRvci5qcz9hZjQyIl0sInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7YXRhbiwgZXhwLCBoYWxmUGksIGxvZywgcGksIHRhbiwgdGF1fSBmcm9tIFwiLi4vbWF0aC5qc1wiO1xuaW1wb3J0IHJvdGF0aW9uIGZyb20gXCIuLi9yb3RhdGlvbi5qc1wiO1xuaW1wb3J0IHByb2plY3Rpb24gZnJvbSBcIi4vaW5kZXguanNcIjtcblxuZXhwb3J0IGZ1bmN0aW9uIG1lcmNhdG9yUmF3KGxhbWJkYSwgcGhpKSB7XG4gIHJldHVybiBbbGFtYmRhLCBsb2codGFuKChoYWxmUGkgKyBwaGkpIC8gMikpXTtcbn1cblxubWVyY2F0b3JSYXcuaW52ZXJ0ID0gZnVuY3Rpb24oeCwgeSkge1xuICByZXR1cm4gW3gsIDIgKiBhdGFuKGV4cCh5KSkgLSBoYWxmUGldO1xufTtcblxuZXhwb3J0IGRlZmF1bHQgZnVuY3Rpb24oKSB7XG4gIHJldHVybiBtZXJjYXRvclByb2plY3Rpb24obWVyY2F0b3JSYXcpXG4gICAgICAuc2NhbGUoOTYxIC8gdGF1KTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIG1lcmNhdG9yUHJvamVjdGlvbihwcm9qZWN0KSB7XG4gIHZhciBtID0gcHJvamVjdGlvbihwcm9qZWN0KSxcbiAgICAgIGNlbnRlciA9IG0uY2VudGVyLFxuICAgICAgc2NhbGUgPSBtLnNjYWxlLFxuICAgICAgdHJhbnNsYXRlID0gbS50cmFuc2xhdGUsXG4gICAgICBjbGlwRXh0ZW50ID0gbS5jbGlwRXh0ZW50LFxuICAgICAgeDAgPSBudWxsLCB5MCwgeDEsIHkxOyAvLyBjbGlwIGV4dGVudFxuXG4gIG0uc2NhbGUgPSBmdW5jdGlvbihfKSB7XG4gICAgcmV0dXJuIGFyZ3VtZW50cy5sZW5ndGggPyAoc2NhbGUoXyksIHJlY2xpcCgpKSA6IHNjYWxlKCk7XG4gIH07XG5cbiAgbS50cmFuc2xhdGUgPSBmdW5jdGlvbihfKSB7XG4gICAgcmV0dXJuIGFyZ3VtZW50cy5sZW5ndGggPyAodHJhbnNsYXRlKF8pLCByZWNsaXAoKSkgOiB0cmFuc2xhdGUoKTtcbiAgfTtcblxuICBtLmNlbnRlciA9IGZ1bmN0aW9uKF8pIHtcbiAgICByZXR1cm4gYXJndW1lbnRzLmxlbmd0aCA/IChjZW50ZXIoXyksIHJlY2xpcCgpKSA6IGNlbnRlcigpO1xuICB9O1xuXG4gIG0uY2xpcEV4dGVudCA9IGZ1bmN0aW9uKF8pIHtcbiAgICByZXR1cm4gYXJndW1lbnRzLmxlbmd0aCA/ICgoXyA9PSBudWxsID8geDAgPSB5MCA9IHgxID0geTEgPSBudWxsIDogKHgwID0gK19bMF1bMF0sIHkwID0gK19bMF1bMV0sIHgxID0gK19bMV1bMF0sIHkxID0gK19bMV1bMV0pKSwgcmVjbGlwKCkpIDogeDAgPT0gbnVsbCA/IG51bGwgOiBbW3gwLCB5MF0sIFt4MSwgeTFdXTtcbiAgfTtcblxuICBmdW5jdGlvbiByZWNsaXAoKSB7XG4gICAgdmFyIGsgPSBwaSAqIHNjYWxlKCksXG4gICAgICAgIHQgPSBtKHJvdGF0aW9uKG0ucm90YXRlKCkpLmludmVydChbMCwgMF0pKTtcbiAgICByZXR1cm4gY2xpcEV4dGVudCh4MCA9PSBudWxsXG4gICAgICAgID8gW1t0WzBdIC0gaywgdFsxXSAtIGtdLCBbdFswXSArIGssIHRbMV0gKyBrXV0gOiBwcm9qZWN0ID09PSBtZXJjYXRvclJhd1xuICAgICAgICA/IFtbTWF0aC5tYXgodFswXSAtIGssIHgwKSwgeTBdLCBbTWF0aC5taW4odFswXSArIGssIHgxKSwgeTFdXVxuICAgICAgICA6IFtbeDAsIE1hdGgubWF4KHRbMV0gLSBrLCB5MCldLCBbeDEsIE1hdGgubWluKHRbMV0gKyBrLCB5MSldXSk7XG4gIH1cblxuICByZXR1cm4gcmVjbGlwKCk7XG59XG4iXSwibWFwcGluZ3MiOiJBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOyIsInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///./node_modules/vega/node_modules/d3-geo/src/projection/mercator.js\n");

/***/ }),

/***/ "./node_modules/vega/node_modules/d3-geo/src/projection/naturalEarth1.js":
/*!*******************************************************************************!*\
  !*** ./node_modules/vega/node_modules/d3-geo/src/projection/naturalEarth1.js ***!
  \*******************************************************************************/
/*! exports provided: naturalEarth1Raw, default */
/***/ (function(module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"naturalEarth1Raw\", function() { return naturalEarth1Raw; });\n/* harmony import */ var _index_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./index.js */ \"./node_modules/vega/node_modules/d3-geo/src/projection/index.js\");\n/* harmony import */ var _math_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../math.js */ \"./node_modules/vega/node_modules/d3-geo/src/math.js\");\n\n\n\nfunction naturalEarth1Raw(lambda, phi) {\n  var phi2 = phi * phi, phi4 = phi2 * phi2;\n  return [\n    lambda * (0.8707 - 0.131979 * phi2 + phi4 * (-0.013791 + phi4 * (0.003971 * phi2 - 0.001529 * phi4))),\n    phi * (1.007226 + phi2 * (0.015085 + phi4 * (-0.044475 + 0.028874 * phi2 - 0.005916 * phi4)))\n  ];\n}\n\nnaturalEarth1Raw.invert = function(x, y) {\n  var phi = y, i = 25, delta;\n  do {\n    var phi2 = phi * phi, phi4 = phi2 * phi2;\n    phi -= delta = (phi * (1.007226 + phi2 * (0.015085 + phi4 * (-0.044475 + 0.028874 * phi2 - 0.005916 * phi4))) - y) /\n        (1.007226 + phi2 * (0.015085 * 3 + phi4 * (-0.044475 * 7 + 0.028874 * 9 * phi2 - 0.005916 * 11 * phi4)));\n  } while (Object(_math_js__WEBPACK_IMPORTED_MODULE_1__[\"abs\"])(delta) > _math_js__WEBPACK_IMPORTED_MODULE_1__[\"epsilon\"] && --i > 0);\n  return [\n    x / (0.8707 + (phi2 = phi * phi) * (-0.131979 + phi2 * (-0.013791 + phi2 * phi2 * phi2 * (0.003971 - 0.001529 * phi2)))),\n    phi\n  ];\n};\n\n/* harmony default export */ __webpack_exports__[\"default\"] = (function() {\n  return Object(_index_js__WEBPACK_IMPORTED_MODULE_0__[\"default\"])(naturalEarth1Raw)\n      .scale(175.295);\n});\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvdmVnYS9ub2RlX21vZHVsZXMvZDMtZ2VvL3NyYy9wcm9qZWN0aW9uL25hdHVyYWxFYXJ0aDEuanMuanMiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvdmVnYS9ub2RlX21vZHVsZXMvZDMtZ2VvL3NyYy9wcm9qZWN0aW9uL25hdHVyYWxFYXJ0aDEuanM/ODIwZSJdLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgcHJvamVjdGlvbiBmcm9tIFwiLi9pbmRleC5qc1wiO1xuaW1wb3J0IHthYnMsIGVwc2lsb259IGZyb20gXCIuLi9tYXRoLmpzXCI7XG5cbmV4cG9ydCBmdW5jdGlvbiBuYXR1cmFsRWFydGgxUmF3KGxhbWJkYSwgcGhpKSB7XG4gIHZhciBwaGkyID0gcGhpICogcGhpLCBwaGk0ID0gcGhpMiAqIHBoaTI7XG4gIHJldHVybiBbXG4gICAgbGFtYmRhICogKDAuODcwNyAtIDAuMTMxOTc5ICogcGhpMiArIHBoaTQgKiAoLTAuMDEzNzkxICsgcGhpNCAqICgwLjAwMzk3MSAqIHBoaTIgLSAwLjAwMTUyOSAqIHBoaTQpKSksXG4gICAgcGhpICogKDEuMDA3MjI2ICsgcGhpMiAqICgwLjAxNTA4NSArIHBoaTQgKiAoLTAuMDQ0NDc1ICsgMC4wMjg4NzQgKiBwaGkyIC0gMC4wMDU5MTYgKiBwaGk0KSkpXG4gIF07XG59XG5cbm5hdHVyYWxFYXJ0aDFSYXcuaW52ZXJ0ID0gZnVuY3Rpb24oeCwgeSkge1xuICB2YXIgcGhpID0geSwgaSA9IDI1LCBkZWx0YTtcbiAgZG8ge1xuICAgIHZhciBwaGkyID0gcGhpICogcGhpLCBwaGk0ID0gcGhpMiAqIHBoaTI7XG4gICAgcGhpIC09IGRlbHRhID0gKHBoaSAqICgxLjAwNzIyNiArIHBoaTIgKiAoMC4wMTUwODUgKyBwaGk0ICogKC0wLjA0NDQ3NSArIDAuMDI4ODc0ICogcGhpMiAtIDAuMDA1OTE2ICogcGhpNCkpKSAtIHkpIC9cbiAgICAgICAgKDEuMDA3MjI2ICsgcGhpMiAqICgwLjAxNTA4NSAqIDMgKyBwaGk0ICogKC0wLjA0NDQ3NSAqIDcgKyAwLjAyODg3NCAqIDkgKiBwaGkyIC0gMC4wMDU5MTYgKiAxMSAqIHBoaTQpKSk7XG4gIH0gd2hpbGUgKGFicyhkZWx0YSkgPiBlcHNpbG9uICYmIC0taSA+IDApO1xuICByZXR1cm4gW1xuICAgIHggLyAoMC44NzA3ICsgKHBoaTIgPSBwaGkgKiBwaGkpICogKC0wLjEzMTk3OSArIHBoaTIgKiAoLTAuMDEzNzkxICsgcGhpMiAqIHBoaTIgKiBwaGkyICogKDAuMDAzOTcxIC0gMC4wMDE1MjkgKiBwaGkyKSkpKSxcbiAgICBwaGlcbiAgXTtcbn07XG5cbmV4cG9ydCBkZWZhdWx0IGZ1bmN0aW9uKCkge1xuICByZXR1cm4gcHJvamVjdGlvbihuYXR1cmFsRWFydGgxUmF3KVxuICAgICAgLnNjYWxlKDE3NS4yOTUpO1xufVxuIl0sIm1hcHBpbmdzIjoiQUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOyIsInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///./node_modules/vega/node_modules/d3-geo/src/projection/naturalEarth1.js\n");

/***/ }),

/***/ "./node_modules/vega/node_modules/d3-geo/src/projection/orthographic.js":
/*!******************************************************************************!*\
  !*** ./node_modules/vega/node_modules/d3-geo/src/projection/orthographic.js ***!
  \******************************************************************************/
/*! exports provided: orthographicRaw, default */
/***/ (function(module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"orthographicRaw\", function() { return orthographicRaw; });\n/* harmony import */ var _math_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../math.js */ \"./node_modules/vega/node_modules/d3-geo/src/math.js\");\n/* harmony import */ var _azimuthal_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./azimuthal.js */ \"./node_modules/vega/node_modules/d3-geo/src/projection/azimuthal.js\");\n/* harmony import */ var _index_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./index.js */ \"./node_modules/vega/node_modules/d3-geo/src/projection/index.js\");\n\n\n\n\nfunction orthographicRaw(x, y) {\n  return [Object(_math_js__WEBPACK_IMPORTED_MODULE_0__[\"cos\"])(y) * Object(_math_js__WEBPACK_IMPORTED_MODULE_0__[\"sin\"])(x), Object(_math_js__WEBPACK_IMPORTED_MODULE_0__[\"sin\"])(y)];\n}\n\northographicRaw.invert = Object(_azimuthal_js__WEBPACK_IMPORTED_MODULE_1__[\"azimuthalInvert\"])(_math_js__WEBPACK_IMPORTED_MODULE_0__[\"asin\"]);\n\n/* harmony default export */ __webpack_exports__[\"default\"] = (function() {\n  return Object(_index_js__WEBPACK_IMPORTED_MODULE_2__[\"default\"])(orthographicRaw)\n      .scale(249.5)\n      .clipAngle(90 + _math_js__WEBPACK_IMPORTED_MODULE_0__[\"epsilon\"]);\n});\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvdmVnYS9ub2RlX21vZHVsZXMvZDMtZ2VvL3NyYy9wcm9qZWN0aW9uL29ydGhvZ3JhcGhpYy5qcy5qcyIsInNvdXJjZXMiOlsid2VicGFjazovLy8uL25vZGVfbW9kdWxlcy92ZWdhL25vZGVfbW9kdWxlcy9kMy1nZW8vc3JjL3Byb2plY3Rpb24vb3J0aG9ncmFwaGljLmpzPzM5MDgiXSwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHthc2luLCBjb3MsIGVwc2lsb24sIHNpbn0gZnJvbSBcIi4uL21hdGguanNcIjtcbmltcG9ydCB7YXppbXV0aGFsSW52ZXJ0fSBmcm9tIFwiLi9hemltdXRoYWwuanNcIjtcbmltcG9ydCBwcm9qZWN0aW9uIGZyb20gXCIuL2luZGV4LmpzXCI7XG5cbmV4cG9ydCBmdW5jdGlvbiBvcnRob2dyYXBoaWNSYXcoeCwgeSkge1xuICByZXR1cm4gW2Nvcyh5KSAqIHNpbih4KSwgc2luKHkpXTtcbn1cblxub3J0aG9ncmFwaGljUmF3LmludmVydCA9IGF6aW11dGhhbEludmVydChhc2luKTtcblxuZXhwb3J0IGRlZmF1bHQgZnVuY3Rpb24oKSB7XG4gIHJldHVybiBwcm9qZWN0aW9uKG9ydGhvZ3JhcGhpY1JhdylcbiAgICAgIC5zY2FsZSgyNDkuNSlcbiAgICAgIC5jbGlwQW5nbGUoOTAgKyBlcHNpbG9uKTtcbn1cbiJdLCJtYXBwaW5ncyI6IkFBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTsiLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///./node_modules/vega/node_modules/d3-geo/src/projection/orthographic.js\n");

/***/ }),

/***/ "./node_modules/vega/node_modules/d3-geo/src/projection/resample.js":
/*!**************************************************************************!*\
  !*** ./node_modules/vega/node_modules/d3-geo/src/projection/resample.js ***!
  \**************************************************************************/
/*! exports provided: default */
/***/ (function(module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _cartesian_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../cartesian.js */ \"./node_modules/vega/node_modules/d3-geo/src/cartesian.js\");\n/* harmony import */ var _math_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../math.js */ \"./node_modules/vega/node_modules/d3-geo/src/math.js\");\n/* harmony import */ var _transform_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ../transform.js */ \"./node_modules/vega/node_modules/d3-geo/src/transform.js\");\n\n\n\n\nvar maxDepth = 16, // maximum depth of subdivision\n    cosMinDistance = Object(_math_js__WEBPACK_IMPORTED_MODULE_1__[\"cos\"])(30 * _math_js__WEBPACK_IMPORTED_MODULE_1__[\"radians\"]); // cos(minimum angular distance)\n\n/* harmony default export */ __webpack_exports__[\"default\"] = (function(project, delta2) {\n  return +delta2 ? resample(project, delta2) : resampleNone(project);\n});\n\nfunction resampleNone(project) {\n  return Object(_transform_js__WEBPACK_IMPORTED_MODULE_2__[\"transformer\"])({\n    point: function(x, y) {\n      x = project(x, y);\n      this.stream.point(x[0], x[1]);\n    }\n  });\n}\n\nfunction resample(project, delta2) {\n\n  function resampleLineTo(x0, y0, lambda0, a0, b0, c0, x1, y1, lambda1, a1, b1, c1, depth, stream) {\n    var dx = x1 - x0,\n        dy = y1 - y0,\n        d2 = dx * dx + dy * dy;\n    if (d2 > 4 * delta2 && depth--) {\n      var a = a0 + a1,\n          b = b0 + b1,\n          c = c0 + c1,\n          m = Object(_math_js__WEBPACK_IMPORTED_MODULE_1__[\"sqrt\"])(a * a + b * b + c * c),\n          phi2 = Object(_math_js__WEBPACK_IMPORTED_MODULE_1__[\"asin\"])(c /= m),\n          lambda2 = Object(_math_js__WEBPACK_IMPORTED_MODULE_1__[\"abs\"])(Object(_math_js__WEBPACK_IMPORTED_MODULE_1__[\"abs\"])(c) - 1) < _math_js__WEBPACK_IMPORTED_MODULE_1__[\"epsilon\"] || Object(_math_js__WEBPACK_IMPORTED_MODULE_1__[\"abs\"])(lambda0 - lambda1) < _math_js__WEBPACK_IMPORTED_MODULE_1__[\"epsilon\"] ? (lambda0 + lambda1) / 2 : Object(_math_js__WEBPACK_IMPORTED_MODULE_1__[\"atan2\"])(b, a),\n          p = project(lambda2, phi2),\n          x2 = p[0],\n          y2 = p[1],\n          dx2 = x2 - x0,\n          dy2 = y2 - y0,\n          dz = dy * dx2 - dx * dy2;\n      if (dz * dz / d2 > delta2 // perpendicular projected distance\n          || Object(_math_js__WEBPACK_IMPORTED_MODULE_1__[\"abs\"])((dx * dx2 + dy * dy2) / d2 - 0.5) > 0.3 // midpoint close to an end\n          || a0 * a1 + b0 * b1 + c0 * c1 < cosMinDistance) { // angular distance\n        resampleLineTo(x0, y0, lambda0, a0, b0, c0, x2, y2, lambda2, a /= m, b /= m, c, depth, stream);\n        stream.point(x2, y2);\n        resampleLineTo(x2, y2, lambda2, a, b, c, x1, y1, lambda1, a1, b1, c1, depth, stream);\n      }\n    }\n  }\n  return function(stream) {\n    var lambda00, x00, y00, a00, b00, c00, // first point\n        lambda0, x0, y0, a0, b0, c0; // previous point\n\n    var resampleStream = {\n      point: point,\n      lineStart: lineStart,\n      lineEnd: lineEnd,\n      polygonStart: function() { stream.polygonStart(); resampleStream.lineStart = ringStart; },\n      polygonEnd: function() { stream.polygonEnd(); resampleStream.lineStart = lineStart; }\n    };\n\n    function point(x, y) {\n      x = project(x, y);\n      stream.point(x[0], x[1]);\n    }\n\n    function lineStart() {\n      x0 = NaN;\n      resampleStream.point = linePoint;\n      stream.lineStart();\n    }\n\n    function linePoint(lambda, phi) {\n      var c = Object(_cartesian_js__WEBPACK_IMPORTED_MODULE_0__[\"cartesian\"])([lambda, phi]), p = project(lambda, phi);\n      resampleLineTo(x0, y0, lambda0, a0, b0, c0, x0 = p[0], y0 = p[1], lambda0 = lambda, a0 = c[0], b0 = c[1], c0 = c[2], maxDepth, stream);\n      stream.point(x0, y0);\n    }\n\n    function lineEnd() {\n      resampleStream.point = point;\n      stream.lineEnd();\n    }\n\n    function ringStart() {\n      lineStart();\n      resampleStream.point = ringPoint;\n      resampleStream.lineEnd = ringEnd;\n    }\n\n    function ringPoint(lambda, phi) {\n      linePoint(lambda00 = lambda, phi), x00 = x0, y00 = y0, a00 = a0, b00 = b0, c00 = c0;\n      resampleStream.point = linePoint;\n    }\n\n    function ringEnd() {\n      resampleLineTo(x0, y0, lambda0, a0, b0, c0, x00, y00, lambda00, a00, b00, c00, maxDepth, stream);\n      resampleStream.lineEnd = lineEnd;\n      lineEnd();\n    }\n\n    return resampleStream;\n  };\n}\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,[encoded data, 5552 characters]\n//# sourceURL=webpack-internal:///./node_modules/vega/node_modules/d3-geo/src/projection/resample.js\n");

/***/ }),

/***/ "./node_modules/vega/node_modules/d3-geo/src/projection/stereographic.js":
/*!*******************************************************************************!*\
  !*** ./node_modules/vega/node_modules/d3-geo/src/projection/stereographic.js ***!
  \*******************************************************************************/
/*! exports provided: stereographicRaw, default */
/***/ (function(module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"stereographicRaw\", function() { return stereographicRaw; });\n/* harmony import */ var _math_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../math.js */ \"./node_modules/vega/node_modules/d3-geo/src/math.js\");\n/* harmony import */ var _azimuthal_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./azimuthal.js */ \"./node_modules/vega/node_modules/d3-geo/src/projection/azimuthal.js\");\n/* harmony import */ var _index_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./index.js */ \"./node_modules/vega/node_modules/d3-geo/src/projection/index.js\");\n\n\n\n\nfunction stereographicRaw(x, y) {\n  var cy = Object(_math_js__WEBPACK_IMPORTED_MODULE_0__[\"cos\"])(y), k = 1 + Object(_math_js__WEBPACK_IMPORTED_MODULE_0__[\"cos\"])(x) * cy;\n  return [cy * Object(_math_js__WEBPACK_IMPORTED_MODULE_0__[\"sin\"])(x) / k, Object(_math_js__WEBPACK_IMPORTED_MODULE_0__[\"sin\"])(y) / k];\n}\n\nstereographicRaw.invert = Object(_azimuthal_js__WEBPACK_IMPORTED_MODULE_1__[\"azimuthalInvert\"])(function(z) {\n  return 2 * Object(_math_js__WEBPACK_IMPORTED_MODULE_0__[\"atan\"])(z);\n});\n\n/* harmony default export */ __webpack_exports__[\"default\"] = (function() {\n  return Object(_index_js__WEBPACK_IMPORTED_MODULE_2__[\"default\"])(stereographicRaw)\n      .scale(250)\n      .clipAngle(142);\n});\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvdmVnYS9ub2RlX21vZHVsZXMvZDMtZ2VvL3NyYy9wcm9qZWN0aW9uL3N0ZXJlb2dyYXBoaWMuanMuanMiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvdmVnYS9ub2RlX21vZHVsZXMvZDMtZ2VvL3NyYy9wcm9qZWN0aW9uL3N0ZXJlb2dyYXBoaWMuanM/ZWJhZSJdLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge2F0YW4sIGNvcywgc2lufSBmcm9tIFwiLi4vbWF0aC5qc1wiO1xuaW1wb3J0IHthemltdXRoYWxJbnZlcnR9IGZyb20gXCIuL2F6aW11dGhhbC5qc1wiO1xuaW1wb3J0IHByb2plY3Rpb24gZnJvbSBcIi4vaW5kZXguanNcIjtcblxuZXhwb3J0IGZ1bmN0aW9uIHN0ZXJlb2dyYXBoaWNSYXcoeCwgeSkge1xuICB2YXIgY3kgPSBjb3MoeSksIGsgPSAxICsgY29zKHgpICogY3k7XG4gIHJldHVybiBbY3kgKiBzaW4oeCkgLyBrLCBzaW4oeSkgLyBrXTtcbn1cblxuc3RlcmVvZ3JhcGhpY1Jhdy5pbnZlcnQgPSBhemltdXRoYWxJbnZlcnQoZnVuY3Rpb24oeikge1xuICByZXR1cm4gMiAqIGF0YW4oeik7XG59KTtcblxuZXhwb3J0IGRlZmF1bHQgZnVuY3Rpb24oKSB7XG4gIHJldHVybiBwcm9qZWN0aW9uKHN0ZXJlb2dyYXBoaWNSYXcpXG4gICAgICAuc2NhbGUoMjUwKVxuICAgICAgLmNsaXBBbmdsZSgxNDIpO1xufVxuIl0sIm1hcHBpbmdzIjoiQUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOyIsInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///./node_modules/vega/node_modules/d3-geo/src/projection/stereographic.js\n");

/***/ }),

/***/ "./node_modules/vega/node_modules/d3-geo/src/projection/transverseMercator.js":
/*!************************************************************************************!*\
  !*** ./node_modules/vega/node_modules/d3-geo/src/projection/transverseMercator.js ***!
  \************************************************************************************/
/*! exports provided: transverseMercatorRaw, default */
/***/ (function(module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"transverseMercatorRaw\", function() { return transverseMercatorRaw; });\n/* harmony import */ var _math_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../math.js */ \"./node_modules/vega/node_modules/d3-geo/src/math.js\");\n/* harmony import */ var _mercator_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./mercator.js */ \"./node_modules/vega/node_modules/d3-geo/src/projection/mercator.js\");\n\n\n\nfunction transverseMercatorRaw(lambda, phi) {\n  return [Object(_math_js__WEBPACK_IMPORTED_MODULE_0__[\"log\"])(Object(_math_js__WEBPACK_IMPORTED_MODULE_0__[\"tan\"])((_math_js__WEBPACK_IMPORTED_MODULE_0__[\"halfPi\"] + phi) / 2)), -lambda];\n}\n\ntransverseMercatorRaw.invert = function(x, y) {\n  return [-y, 2 * Object(_math_js__WEBPACK_IMPORTED_MODULE_0__[\"atan\"])(Object(_math_js__WEBPACK_IMPORTED_MODULE_0__[\"exp\"])(x)) - _math_js__WEBPACK_IMPORTED_MODULE_0__[\"halfPi\"]];\n};\n\n/* harmony default export */ __webpack_exports__[\"default\"] = (function() {\n  var m = Object(_mercator_js__WEBPACK_IMPORTED_MODULE_1__[\"mercatorProjection\"])(transverseMercatorRaw),\n      center = m.center,\n      rotate = m.rotate;\n\n  m.center = function(_) {\n    return arguments.length ? center([-_[1], _[0]]) : (_ = center(), [_[1], -_[0]]);\n  };\n\n  m.rotate = function(_) {\n    return arguments.length ? rotate([_[0], _[1], _.length > 2 ? _[2] + 90 : 90]) : (_ = rotate(), [_[0], _[1], _[2] - 90]);\n  };\n\n  return rotate([0, 0, 90])\n      .scale(159.155);\n});\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvdmVnYS9ub2RlX21vZHVsZXMvZDMtZ2VvL3NyYy9wcm9qZWN0aW9uL3RyYW5zdmVyc2VNZXJjYXRvci5qcy5qcyIsInNvdXJjZXMiOlsid2VicGFjazovLy8uL25vZGVfbW9kdWxlcy92ZWdhL25vZGVfbW9kdWxlcy9kMy1nZW8vc3JjL3Byb2plY3Rpb24vdHJhbnN2ZXJzZU1lcmNhdG9yLmpzPzQzOGQiXSwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHthdGFuLCBleHAsIGhhbGZQaSwgbG9nLCB0YW59IGZyb20gXCIuLi9tYXRoLmpzXCI7XG5pbXBvcnQge21lcmNhdG9yUHJvamVjdGlvbn0gZnJvbSBcIi4vbWVyY2F0b3IuanNcIjtcblxuZXhwb3J0IGZ1bmN0aW9uIHRyYW5zdmVyc2VNZXJjYXRvclJhdyhsYW1iZGEsIHBoaSkge1xuICByZXR1cm4gW2xvZyh0YW4oKGhhbGZQaSArIHBoaSkgLyAyKSksIC1sYW1iZGFdO1xufVxuXG50cmFuc3ZlcnNlTWVyY2F0b3JSYXcuaW52ZXJ0ID0gZnVuY3Rpb24oeCwgeSkge1xuICByZXR1cm4gWy15LCAyICogYXRhbihleHAoeCkpIC0gaGFsZlBpXTtcbn07XG5cbmV4cG9ydCBkZWZhdWx0IGZ1bmN0aW9uKCkge1xuICB2YXIgbSA9IG1lcmNhdG9yUHJvamVjdGlvbih0cmFuc3ZlcnNlTWVyY2F0b3JSYXcpLFxuICAgICAgY2VudGVyID0gbS5jZW50ZXIsXG4gICAgICByb3RhdGUgPSBtLnJvdGF0ZTtcblxuICBtLmNlbnRlciA9IGZ1bmN0aW9uKF8pIHtcbiAgICByZXR1cm4gYXJndW1lbnRzLmxlbmd0aCA/IGNlbnRlcihbLV9bMV0sIF9bMF1dKSA6IChfID0gY2VudGVyKCksIFtfWzFdLCAtX1swXV0pO1xuICB9O1xuXG4gIG0ucm90YXRlID0gZnVuY3Rpb24oXykge1xuICAgIHJldHVybiBhcmd1bWVudHMubGVuZ3RoID8gcm90YXRlKFtfWzBdLCBfWzFdLCBfLmxlbmd0aCA+IDIgPyBfWzJdICsgOTAgOiA5MF0pIDogKF8gPSByb3RhdGUoKSwgW19bMF0sIF9bMV0sIF9bMl0gLSA5MF0pO1xuICB9O1xuXG4gIHJldHVybiByb3RhdGUoWzAsIDAsIDkwXSlcbiAgICAgIC5zY2FsZSgxNTkuMTU1KTtcbn1cbiJdLCJtYXBwaW5ncyI6IkFBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7Iiwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///./node_modules/vega/node_modules/d3-geo/src/projection/transverseMercator.js\n");

/***/ }),

/***/ "./node_modules/vega/node_modules/d3-geo/src/rotation.js":
/*!***************************************************************!*\
  !*** ./node_modules/vega/node_modules/d3-geo/src/rotation.js ***!
  \***************************************************************/
/*! exports provided: rotateRadians, default */
/***/ (function(module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"rotateRadians\", function() { return rotateRadians; });\n/* harmony import */ var _compose_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./compose.js */ \"./node_modules/vega/node_modules/d3-geo/src/compose.js\");\n/* harmony import */ var _math_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./math.js */ \"./node_modules/vega/node_modules/d3-geo/src/math.js\");\n\n\n\nfunction rotationIdentity(lambda, phi) {\n  return [Object(_math_js__WEBPACK_IMPORTED_MODULE_1__[\"abs\"])(lambda) > _math_js__WEBPACK_IMPORTED_MODULE_1__[\"pi\"] ? lambda + Math.round(-lambda / _math_js__WEBPACK_IMPORTED_MODULE_1__[\"tau\"]) * _math_js__WEBPACK_IMPORTED_MODULE_1__[\"tau\"] : lambda, phi];\n}\n\nrotationIdentity.invert = rotationIdentity;\n\nfunction rotateRadians(deltaLambda, deltaPhi, deltaGamma) {\n  return (deltaLambda %= _math_js__WEBPACK_IMPORTED_MODULE_1__[\"tau\"]) ? (deltaPhi || deltaGamma ? Object(_compose_js__WEBPACK_IMPORTED_MODULE_0__[\"default\"])(rotationLambda(deltaLambda), rotationPhiGamma(deltaPhi, deltaGamma))\n    : rotationLambda(deltaLambda))\n    : (deltaPhi || deltaGamma ? rotationPhiGamma(deltaPhi, deltaGamma)\n    : rotationIdentity);\n}\n\nfunction forwardRotationLambda(deltaLambda) {\n  return function(lambda, phi) {\n    return lambda += deltaLambda, [lambda > _math_js__WEBPACK_IMPORTED_MODULE_1__[\"pi\"] ? lambda - _math_js__WEBPACK_IMPORTED_MODULE_1__[\"tau\"] : lambda < -_math_js__WEBPACK_IMPORTED_MODULE_1__[\"pi\"] ? lambda + _math_js__WEBPACK_IMPORTED_MODULE_1__[\"tau\"] : lambda, phi];\n  };\n}\n\nfunction rotationLambda(deltaLambda) {\n  var rotation = forwardRotationLambda(deltaLambda);\n  rotation.invert = forwardRotationLambda(-deltaLambda);\n  return rotation;\n}\n\nfunction rotationPhiGamma(deltaPhi, deltaGamma) {\n  var cosDeltaPhi = Object(_math_js__WEBPACK_IMPORTED_MODULE_1__[\"cos\"])(deltaPhi),\n      sinDeltaPhi = Object(_math_js__WEBPACK_IMPORTED_MODULE_1__[\"sin\"])(deltaPhi),\n      cosDeltaGamma = Object(_math_js__WEBPACK_IMPORTED_MODULE_1__[\"cos\"])(deltaGamma),\n      sinDeltaGamma = Object(_math_js__WEBPACK_IMPORTED_MODULE_1__[\"sin\"])(deltaGamma);\n\n  function rotation(lambda, phi) {\n    var cosPhi = Object(_math_js__WEBPACK_IMPORTED_MODULE_1__[\"cos\"])(phi),\n        x = Object(_math_js__WEBPACK_IMPORTED_MODULE_1__[\"cos\"])(lambda) * cosPhi,\n        y = Object(_math_js__WEBPACK_IMPORTED_MODULE_1__[\"sin\"])(lambda) * cosPhi,\n        z = Object(_math_js__WEBPACK_IMPORTED_MODULE_1__[\"sin\"])(phi),\n        k = z * cosDeltaPhi + x * sinDeltaPhi;\n    return [\n      Object(_math_js__WEBPACK_IMPORTED_MODULE_1__[\"atan2\"])(y * cosDeltaGamma - k * sinDeltaGamma, x * cosDeltaPhi - z * sinDeltaPhi),\n      Object(_math_js__WEBPACK_IMPORTED_MODULE_1__[\"asin\"])(k * cosDeltaGamma + y * sinDeltaGamma)\n    ];\n  }\n\n  rotation.invert = function(lambda, phi) {\n    var cosPhi = Object(_math_js__WEBPACK_IMPORTED_MODULE_1__[\"cos\"])(phi),\n        x = Object(_math_js__WEBPACK_IMPORTED_MODULE_1__[\"cos\"])(lambda) * cosPhi,\n        y = Object(_math_js__WEBPACK_IMPORTED_MODULE_1__[\"sin\"])(lambda) * cosPhi,\n        z = Object(_math_js__WEBPACK_IMPORTED_MODULE_1__[\"sin\"])(phi),\n        k = z * cosDeltaGamma - y * sinDeltaGamma;\n    return [\n      Object(_math_js__WEBPACK_IMPORTED_MODULE_1__[\"atan2\"])(y * cosDeltaGamma + z * sinDeltaGamma, x * cosDeltaPhi + k * sinDeltaPhi),\n      Object(_math_js__WEBPACK_IMPORTED_MODULE_1__[\"asin\"])(k * cosDeltaPhi - x * sinDeltaPhi)\n    ];\n  };\n\n  return rotation;\n}\n\n/* harmony default export */ __webpack_exports__[\"default\"] = (function(rotate) {\n  rotate = rotateRadians(rotate[0] * _math_js__WEBPACK_IMPORTED_MODULE_1__[\"radians\"], rotate[1] * _math_js__WEBPACK_IMPORTED_MODULE_1__[\"radians\"], rotate.length > 2 ? rotate[2] * _math_js__WEBPACK_IMPORTED_MODULE_1__[\"radians\"] : 0);\n\n  function forward(coordinates) {\n    coordinates = rotate(coordinates[0] * _math_js__WEBPACK_IMPORTED_MODULE_1__[\"radians\"], coordinates[1] * _math_js__WEBPACK_IMPORTED_MODULE_1__[\"radians\"]);\n    return coordinates[0] *= _math_js__WEBPACK_IMPORTED_MODULE_1__[\"degrees\"], coordinates[1] *= _math_js__WEBPACK_IMPORTED_MODULE_1__[\"degrees\"], coordinates;\n  }\n\n  forward.invert = function(coordinates) {\n    coordinates = rotate.invert(coordinates[0] * _math_js__WEBPACK_IMPORTED_MODULE_1__[\"radians\"], coordinates[1] * _math_js__WEBPACK_IMPORTED_MODULE_1__[\"radians\"]);\n    return coordinates[0] *= _math_js__WEBPACK_IMPORTED_MODULE_1__[\"degrees\"], coordinates[1] *= _math_js__WEBPACK_IMPORTED_MODULE_1__[\"degrees\"], coordinates;\n  };\n\n  return forward;\n});\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,[encoded data, 4296 characters]\n//# sourceURL=webpack-internal:///./node_modules/vega/node_modules/d3-geo/src/rotation.js\n");

/***/ }),

/***/ "./node_modules/vega/node_modules/d3-geo/src/stream.js":
/*!*************************************************************!*\
  !*** ./node_modules/vega/node_modules/d3-geo/src/stream.js ***!
  \*************************************************************/
/*! exports provided: default */
/***/ (function(module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\nfunction streamGeometry(geometry, stream) {\n  if (geometry && streamGeometryType.hasOwnProperty(geometry.type)) {\n    streamGeometryType[geometry.type](geometry, stream);\n  }\n}\n\nvar streamObjectType = {\n  Feature: function(object, stream) {\n    streamGeometry(object.geometry, stream);\n  },\n  FeatureCollection: function(object, stream) {\n    var features = object.features, i = -1, n = features.length;\n    while (++i < n) streamGeometry(features[i].geometry, stream);\n  }\n};\n\nvar streamGeometryType = {\n  Sphere: function(object, stream) {\n    stream.sphere();\n  },\n  Point: function(object, stream) {\n    object = object.coordinates;\n    stream.point(object[0], object[1], object[2]);\n  },\n  MultiPoint: function(object, stream) {\n    var coordinates = object.coordinates, i = -1, n = coordinates.length;\n    while (++i < n) object = coordinates[i], stream.point(object[0], object[1], object[2]);\n  },\n  LineString: function(object, stream) {\n    streamLine(object.coordinates, stream, 0);\n  },\n  MultiLineString: function(object, stream) {\n    var coordinates = object.coordinates, i = -1, n = coordinates.length;\n    while (++i < n) streamLine(coordinates[i], stream, 0);\n  },\n  Polygon: function(object, stream) {\n    streamPolygon(object.coordinates, stream);\n  },\n  MultiPolygon: function(object, stream) {\n    var coordinates = object.coordinates, i = -1, n = coordinates.length;\n    while (++i < n) streamPolygon(coordinates[i], stream);\n  },\n  GeometryCollection: function(object, stream) {\n    var geometries = object.geometries, i = -1, n = geometries.length;\n    while (++i < n) streamGeometry(geometries[i], stream);\n  }\n};\n\nfunction streamLine(coordinates, stream, closed) {\n  var i = -1, n = coordinates.length - closed, coordinate;\n  stream.lineStart();\n  while (++i < n) coordinate = coordinates[i], stream.point(coordinate[0], coordinate[1], coordinate[2]);\n  stream.lineEnd();\n}\n\nfunction streamPolygon(coordinates, stream) {\n  var i = -1, n = coordinates.length;\n  stream.polygonStart();\n  while (++i < n) streamLine(coordinates[i], stream, 1);\n  stream.polygonEnd();\n}\n\n/* harmony default export */ __webpack_exports__[\"default\"] = (function(object, stream) {\n  if (object && streamObjectType.hasOwnProperty(object.type)) {\n    streamObjectType[object.type](object, stream);\n  } else {\n    streamGeometry(object, stream);\n  }\n});\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvdmVnYS9ub2RlX21vZHVsZXMvZDMtZ2VvL3NyYy9zdHJlYW0uanMuanMiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvdmVnYS9ub2RlX21vZHVsZXMvZDMtZ2VvL3NyYy9zdHJlYW0uanM/NWVlOCJdLCJzb3VyY2VzQ29udGVudCI6WyJmdW5jdGlvbiBzdHJlYW1HZW9tZXRyeShnZW9tZXRyeSwgc3RyZWFtKSB7XG4gIGlmIChnZW9tZXRyeSAmJiBzdHJlYW1HZW9tZXRyeVR5cGUuaGFzT3duUHJvcGVydHkoZ2VvbWV0cnkudHlwZSkpIHtcbiAgICBzdHJlYW1HZW9tZXRyeVR5cGVbZ2VvbWV0cnkudHlwZV0oZ2VvbWV0cnksIHN0cmVhbSk7XG4gIH1cbn1cblxudmFyIHN0cmVhbU9iamVjdFR5cGUgPSB7XG4gIEZlYXR1cmU6IGZ1bmN0aW9uKG9iamVjdCwgc3RyZWFtKSB7XG4gICAgc3RyZWFtR2VvbWV0cnkob2JqZWN0Lmdlb21ldHJ5LCBzdHJlYW0pO1xuICB9LFxuICBGZWF0dXJlQ29sbGVjdGlvbjogZnVuY3Rpb24ob2JqZWN0LCBzdHJlYW0pIHtcbiAgICB2YXIgZmVhdHVyZXMgPSBvYmplY3QuZmVhdHVyZXMsIGkgPSAtMSwgbiA9IGZlYXR1cmVzLmxlbmd0aDtcbiAgICB3aGlsZSAoKytpIDwgbikgc3RyZWFtR2VvbWV0cnkoZmVhdHVyZXNbaV0uZ2VvbWV0cnksIHN0cmVhbSk7XG4gIH1cbn07XG5cbnZhciBzdHJlYW1HZW9tZXRyeVR5cGUgPSB7XG4gIFNwaGVyZTogZnVuY3Rpb24ob2JqZWN0LCBzdHJlYW0pIHtcbiAgICBzdHJlYW0uc3BoZXJlKCk7XG4gIH0sXG4gIFBvaW50OiBmdW5jdGlvbihvYmplY3QsIHN0cmVhbSkge1xuICAgIG9iamVjdCA9IG9iamVjdC5jb29yZGluYXRlcztcbiAgICBzdHJlYW0ucG9pbnQob2JqZWN0WzBdLCBvYmplY3RbMV0sIG9iamVjdFsyXSk7XG4gIH0sXG4gIE11bHRpUG9pbnQ6IGZ1bmN0aW9uKG9iamVjdCwgc3RyZWFtKSB7XG4gICAgdmFyIGNvb3JkaW5hdGVzID0gb2JqZWN0LmNvb3JkaW5hdGVzLCBpID0gLTEsIG4gPSBjb29yZGluYXRlcy5sZW5ndGg7XG4gICAgd2hpbGUgKCsraSA8IG4pIG9iamVjdCA9IGNvb3JkaW5hdGVzW2ldLCBzdHJlYW0ucG9pbnQob2JqZWN0WzBdLCBvYmplY3RbMV0sIG9iamVjdFsyXSk7XG4gIH0sXG4gIExpbmVTdHJpbmc6IGZ1bmN0aW9uKG9iamVjdCwgc3RyZWFtKSB7XG4gICAgc3RyZWFtTGluZShvYmplY3QuY29vcmRpbmF0ZXMsIHN0cmVhbSwgMCk7XG4gIH0sXG4gIE11bHRpTGluZVN0cmluZzogZnVuY3Rpb24ob2JqZWN0LCBzdHJlYW0pIHtcbiAgICB2YXIgY29vcmRpbmF0ZXMgPSBvYmplY3QuY29vcmRpbmF0ZXMsIGkgPSAtMSwgbiA9IGNvb3JkaW5hdGVzLmxlbmd0aDtcbiAgICB3aGlsZSAoKytpIDwgbikgc3RyZWFtTGluZShjb29yZGluYXRlc1tpXSwgc3RyZWFtLCAwKTtcbiAgfSxcbiAgUG9seWdvbjogZnVuY3Rpb24ob2JqZWN0LCBzdHJlYW0pIHtcbiAgICBzdHJlYW1Qb2x5Z29uKG9iamVjdC5jb29yZGluYXRlcywgc3RyZWFtKTtcbiAgfSxcbiAgTXVsdGlQb2x5Z29uOiBmdW5jdGlvbihvYmplY3QsIHN0cmVhbSkge1xuICAgIHZhciBjb29yZGluYXRlcyA9IG9iamVjdC5jb29yZGluYXRlcywgaSA9IC0xLCBuID0gY29vcmRpbmF0ZXMubGVuZ3RoO1xuICAgIHdoaWxlICgrK2kgPCBuKSBzdHJlYW1Qb2x5Z29uKGNvb3JkaW5hdGVzW2ldLCBzdHJlYW0pO1xuICB9LFxuICBHZW9tZXRyeUNvbGxlY3Rpb246IGZ1bmN0aW9uKG9iamVjdCwgc3RyZWFtKSB7XG4gICAgdmFyIGdlb21ldHJpZXMgPSBvYmplY3QuZ2VvbWV0cmllcywgaSA9IC0xLCBuID0gZ2VvbWV0cmllcy5sZW5ndGg7XG4gICAgd2hpbGUgKCsraSA8IG4pIHN0cmVhbUdlb21ldHJ5KGdlb21ldHJpZXNbaV0sIHN0cmVhbSk7XG4gIH1cbn07XG5cbmZ1bmN0aW9uIHN0cmVhbUxpbmUoY29vcmRpbmF0ZXMsIHN0cmVhbSwgY2xvc2VkKSB7XG4gIHZhciBpID0gLTEsIG4gPSBjb29yZGluYXRlcy5sZW5ndGggLSBjbG9zZWQsIGNvb3JkaW5hdGU7XG4gIHN0cmVhbS5saW5lU3RhcnQoKTtcbiAgd2hpbGUgKCsraSA8IG4pIGNvb3JkaW5hdGUgPSBjb29yZGluYXRlc1tpXSwgc3RyZWFtLnBvaW50KGNvb3JkaW5hdGVbMF0sIGNvb3JkaW5hdGVbMV0sIGNvb3JkaW5hdGVbMl0pO1xuICBzdHJlYW0ubGluZUVuZCgpO1xufVxuXG5mdW5jdGlvbiBzdHJlYW1Qb2x5Z29uKGNvb3JkaW5hdGVzLCBzdHJlYW0pIHtcbiAgdmFyIGkgPSAtMSwgbiA9IGNvb3JkaW5hdGVzLmxlbmd0aDtcbiAgc3RyZWFtLnBvbHlnb25TdGFydCgpO1xuICB3aGlsZSAoKytpIDwgbikgc3RyZWFtTGluZShjb29yZGluYXRlc1tpXSwgc3RyZWFtLCAxKTtcbiAgc3RyZWFtLnBvbHlnb25FbmQoKTtcbn1cblxuZXhwb3J0IGRlZmF1bHQgZnVuY3Rpb24ob2JqZWN0LCBzdHJlYW0pIHtcbiAgaWYgKG9iamVjdCAmJiBzdHJlYW1PYmplY3RUeXBlLmhhc093blByb3BlcnR5KG9iamVjdC50eXBlKSkge1xuICAgIHN0cmVhbU9iamVjdFR5cGVbb2JqZWN0LnR5cGVdKG9iamVjdCwgc3RyZWFtKTtcbiAgfSBlbHNlIHtcbiAgICBzdHJlYW1HZW9tZXRyeShvYmplY3QsIHN0cmVhbSk7XG4gIH1cbn1cbiJdLCJtYXBwaW5ncyI6IkFBQUE7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7Iiwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///./node_modules/vega/node_modules/d3-geo/src/stream.js\n");

/***/ }),

/***/ "./node_modules/vega/node_modules/d3-geo/src/transform.js":
/*!****************************************************************!*\
  !*** ./node_modules/vega/node_modules/d3-geo/src/transform.js ***!
  \****************************************************************/
/*! exports provided: default, transformer */
/***/ (function(module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"transformer\", function() { return transformer; });\n/* harmony default export */ __webpack_exports__[\"default\"] = (function(methods) {\n  return {\n    stream: transformer(methods)\n  };\n});\n\nfunction transformer(methods) {\n  return function(stream) {\n    var s = new TransformStream;\n    for (var key in methods) s[key] = methods[key];\n    s.stream = stream;\n    return s;\n  };\n}\n\nfunction TransformStream() {}\n\nTransformStream.prototype = {\n  constructor: TransformStream,\n  point: function(x, y) { this.stream.point(x, y); },\n  sphere: function() { this.stream.sphere(); },\n  lineStart: function() { this.stream.lineStart(); },\n  lineEnd: function() { this.stream.lineEnd(); },\n  polygonStart: function() { this.stream.polygonStart(); },\n  polygonEnd: function() { this.stream.polygonEnd(); }\n};\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvdmVnYS9ub2RlX21vZHVsZXMvZDMtZ2VvL3NyYy90cmFuc2Zvcm0uanMuanMiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvdmVnYS9ub2RlX21vZHVsZXMvZDMtZ2VvL3NyYy90cmFuc2Zvcm0uanM/ZmYyNCJdLCJzb3VyY2VzQ29udGVudCI6WyJleHBvcnQgZGVmYXVsdCBmdW5jdGlvbihtZXRob2RzKSB7XG4gIHJldHVybiB7XG4gICAgc3RyZWFtOiB0cmFuc2Zvcm1lcihtZXRob2RzKVxuICB9O1xufVxuXG5leHBvcnQgZnVuY3Rpb24gdHJhbnNmb3JtZXIobWV0aG9kcykge1xuICByZXR1cm4gZnVuY3Rpb24oc3RyZWFtKSB7XG4gICAgdmFyIHMgPSBuZXcgVHJhbnNmb3JtU3RyZWFtO1xuICAgIGZvciAodmFyIGtleSBpbiBtZXRob2RzKSBzW2tleV0gPSBtZXRob2RzW2tleV07XG4gICAgcy5zdHJlYW0gPSBzdHJlYW07XG4gICAgcmV0dXJuIHM7XG4gIH07XG59XG5cbmZ1bmN0aW9uIFRyYW5zZm9ybVN0cmVhbSgpIHt9XG5cblRyYW5zZm9ybVN0cmVhbS5wcm90b3R5cGUgPSB7XG4gIGNvbnN0cnVjdG9yOiBUcmFuc2Zvcm1TdHJlYW0sXG4gIHBvaW50OiBmdW5jdGlvbih4LCB5KSB7IHRoaXMuc3RyZWFtLnBvaW50KHgsIHkpOyB9LFxuICBzcGhlcmU6IGZ1bmN0aW9uKCkgeyB0aGlzLnN0cmVhbS5zcGhlcmUoKTsgfSxcbiAgbGluZVN0YXJ0OiBmdW5jdGlvbigpIHsgdGhpcy5zdHJlYW0ubGluZVN0YXJ0KCk7IH0sXG4gIGxpbmVFbmQ6IGZ1bmN0aW9uKCkgeyB0aGlzLnN0cmVhbS5saW5lRW5kKCk7IH0sXG4gIHBvbHlnb25TdGFydDogZnVuY3Rpb24oKSB7IHRoaXMuc3RyZWFtLnBvbHlnb25TdGFydCgpOyB9LFxuICBwb2x5Z29uRW5kOiBmdW5jdGlvbigpIHsgdGhpcy5zdHJlYW0ucG9seWdvbkVuZCgpOyB9XG59O1xuIl0sIm1hcHBpbmdzIjoiQUFBQTtBQUFBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTsiLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///./node_modules/vega/node_modules/d3-geo/src/transform.js\n");

/***/ }),

/***/ "./node_modules/vega/node_modules/d3-hierarchy/src/accessors.js":
/*!**********************************************************************!*\
  !*** ./node_modules/vega/node_modules/d3-hierarchy/src/accessors.js ***!
  \**********************************************************************/
/*! exports provided: optional, required */
/***/ (function(module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"optional\", function() { return optional; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"required\", function() { return required; });\nfunction optional(f) {\n  return f == null ? null : required(f);\n}\n\nfunction required(f) {\n  if (typeof f !== \"function\") throw new Error;\n  return f;\n}\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvdmVnYS9ub2RlX21vZHVsZXMvZDMtaGllcmFyY2h5L3NyYy9hY2Nlc3NvcnMuanMuanMiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvdmVnYS9ub2RlX21vZHVsZXMvZDMtaGllcmFyY2h5L3NyYy9hY2Nlc3NvcnMuanM/NTUwZCJdLCJzb3VyY2VzQ29udGVudCI6WyJleHBvcnQgZnVuY3Rpb24gb3B0aW9uYWwoZikge1xuICByZXR1cm4gZiA9PSBudWxsID8gbnVsbCA6IHJlcXVpcmVkKGYpO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gcmVxdWlyZWQoZikge1xuICBpZiAodHlwZW9mIGYgIT09IFwiZnVuY3Rpb25cIikgdGhyb3cgbmV3IEVycm9yO1xuICByZXR1cm4gZjtcbn1cbiJdLCJtYXBwaW5ncyI6IkFBQUE7QUFBQTtBQUFBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTsiLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///./node_modules/vega/node_modules/d3-hierarchy/src/accessors.js\n");

/***/ }),

/***/ "./node_modules/vega/node_modules/d3-hierarchy/src/array.js":
/*!******************************************************************!*\
  !*** ./node_modules/vega/node_modules/d3-hierarchy/src/array.js ***!
  \******************************************************************/
/*! exports provided: default, shuffle */
/***/ (function(module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"shuffle\", function() { return shuffle; });\n/* harmony default export */ __webpack_exports__[\"default\"] = (function(x) {\n  return typeof x === \"object\" && \"length\" in x\n    ? x // Array, TypedArray, NodeList, array-like\n    : Array.from(x); // Map, Set, iterable, string, or anything else\n});\n\nfunction shuffle(array) {\n  var m = array.length,\n      t,\n      i;\n\n  while (m) {\n    i = Math.random() * m-- | 0;\n    t = array[m];\n    array[m] = array[i];\n    array[i] = t;\n  }\n\n  return array;\n}\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvdmVnYS9ub2RlX21vZHVsZXMvZDMtaGllcmFyY2h5L3NyYy9hcnJheS5qcy5qcyIsInNvdXJjZXMiOlsid2VicGFjazovLy8uL25vZGVfbW9kdWxlcy92ZWdhL25vZGVfbW9kdWxlcy9kMy1oaWVyYXJjaHkvc3JjL2FycmF5LmpzPzgxOGQiXSwic291cmNlc0NvbnRlbnQiOlsiZXhwb3J0IGRlZmF1bHQgZnVuY3Rpb24oeCkge1xuICByZXR1cm4gdHlwZW9mIHggPT09IFwib2JqZWN0XCIgJiYgXCJsZW5ndGhcIiBpbiB4XG4gICAgPyB4IC8vIEFycmF5LCBUeXBlZEFycmF5LCBOb2RlTGlzdCwgYXJyYXktbGlrZVxuICAgIDogQXJyYXkuZnJvbSh4KTsgLy8gTWFwLCBTZXQsIGl0ZXJhYmxlLCBzdHJpbmcsIG9yIGFueXRoaW5nIGVsc2Vcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIHNodWZmbGUoYXJyYXkpIHtcbiAgdmFyIG0gPSBhcnJheS5sZW5ndGgsXG4gICAgICB0LFxuICAgICAgaTtcblxuICB3aGlsZSAobSkge1xuICAgIGkgPSBNYXRoLnJhbmRvbSgpICogbS0tIHwgMDtcbiAgICB0ID0gYXJyYXlbbV07XG4gICAgYXJyYXlbbV0gPSBhcnJheVtpXTtcbiAgICBhcnJheVtpXSA9IHQ7XG4gIH1cblxuICByZXR1cm4gYXJyYXk7XG59XG4iXSwibWFwcGluZ3MiOiJBQUFBO0FBQUE7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOyIsInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///./node_modules/vega/node_modules/d3-hierarchy/src/array.js\n");

/***/ }),

/***/ "./node_modules/vega/node_modules/d3-hierarchy/src/cluster.js":
/*!********************************************************************!*\
  !*** ./node_modules/vega/node_modules/d3-hierarchy/src/cluster.js ***!
  \********************************************************************/
/*! exports provided: default */
/***/ (function(module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\nfunction defaultSeparation(a, b) {\n  return a.parent === b.parent ? 1 : 2;\n}\n\nfunction meanX(children) {\n  return children.reduce(meanXReduce, 0) / children.length;\n}\n\nfunction meanXReduce(x, c) {\n  return x + c.x;\n}\n\nfunction maxY(children) {\n  return 1 + children.reduce(maxYReduce, 0);\n}\n\nfunction maxYReduce(y, c) {\n  return Math.max(y, c.y);\n}\n\nfunction leafLeft(node) {\n  var children;\n  while (children = node.children) node = children[0];\n  return node;\n}\n\nfunction leafRight(node) {\n  var children;\n  while (children = node.children) node = children[children.length - 1];\n  return node;\n}\n\n/* harmony default export */ __webpack_exports__[\"default\"] = (function() {\n  var separation = defaultSeparation,\n      dx = 1,\n      dy = 1,\n      nodeSize = false;\n\n  function cluster(root) {\n    var previousNode,\n        x = 0;\n\n    // First walk, computing the initial x & y values.\n    root.eachAfter(function(node) {\n      var children = node.children;\n      if (children) {\n        node.x = meanX(children);\n        node.y = maxY(children);\n      } else {\n        node.x = previousNode ? x += separation(node, previousNode) : 0;\n        node.y = 0;\n        previousNode = node;\n      }\n    });\n\n    var left = leafLeft(root),\n        right = leafRight(root),\n        x0 = left.x - separation(left, right) / 2,\n        x1 = right.x + separation(right, left) / 2;\n\n    // Second walk, normalizing x & y to the desired size.\n    return root.eachAfter(nodeSize ? function(node) {\n      node.x = (node.x - root.x) * dx;\n      node.y = (root.y - node.y) * dy;\n    } : function(node) {\n      node.x = (node.x - x0) / (x1 - x0) * dx;\n      node.y = (1 - (root.y ? node.y / root.y : 1)) * dy;\n    });\n  }\n\n  cluster.separation = function(x) {\n    return arguments.length ? (separation = x, cluster) : separation;\n  };\n\n  cluster.size = function(x) {\n    return arguments.length ? (nodeSize = false, dx = +x[0], dy = +x[1], cluster) : (nodeSize ? null : [dx, dy]);\n  };\n\n  cluster.nodeSize = function(x) {\n    return arguments.length ? (nodeSize = true, dx = +x[0], dy = +x[1], cluster) : (nodeSize ? [dx, dy] : null);\n  };\n\n  return cluster;\n});\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvdmVnYS9ub2RlX21vZHVsZXMvZDMtaGllcmFyY2h5L3NyYy9jbHVzdGVyLmpzLmpzIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL3ZlZ2Evbm9kZV9tb2R1bGVzL2QzLWhpZXJhcmNoeS9zcmMvY2x1c3Rlci5qcz84NTA0Il0sInNvdXJjZXNDb250ZW50IjpbImZ1bmN0aW9uIGRlZmF1bHRTZXBhcmF0aW9uKGEsIGIpIHtcbiAgcmV0dXJuIGEucGFyZW50ID09PSBiLnBhcmVudCA/IDEgOiAyO1xufVxuXG5mdW5jdGlvbiBtZWFuWChjaGlsZHJlbikge1xuICByZXR1cm4gY2hpbGRyZW4ucmVkdWNlKG1lYW5YUmVkdWNlLCAwKSAvIGNoaWxkcmVuLmxlbmd0aDtcbn1cblxuZnVuY3Rpb24gbWVhblhSZWR1Y2UoeCwgYykge1xuICByZXR1cm4geCArIGMueDtcbn1cblxuZnVuY3Rpb24gbWF4WShjaGlsZHJlbikge1xuICByZXR1cm4gMSArIGNoaWxkcmVuLnJlZHVjZShtYXhZUmVkdWNlLCAwKTtcbn1cblxuZnVuY3Rpb24gbWF4WVJlZHVjZSh5LCBjKSB7XG4gIHJldHVybiBNYXRoLm1heCh5LCBjLnkpO1xufVxuXG5mdW5jdGlvbiBsZWFmTGVmdChub2RlKSB7XG4gIHZhciBjaGlsZHJlbjtcbiAgd2hpbGUgKGNoaWxkcmVuID0gbm9kZS5jaGlsZHJlbikgbm9kZSA9IGNoaWxkcmVuWzBdO1xuICByZXR1cm4gbm9kZTtcbn1cblxuZnVuY3Rpb24gbGVhZlJpZ2h0KG5vZGUpIHtcbiAgdmFyIGNoaWxkcmVuO1xuICB3aGlsZSAoY2hpbGRyZW4gPSBub2RlLmNoaWxkcmVuKSBub2RlID0gY2hpbGRyZW5bY2hpbGRyZW4ubGVuZ3RoIC0gMV07XG4gIHJldHVybiBub2RlO1xufVxuXG5leHBvcnQgZGVmYXVsdCBmdW5jdGlvbigpIHtcbiAgdmFyIHNlcGFyYXRpb24gPSBkZWZhdWx0U2VwYXJhdGlvbixcbiAgICAgIGR4ID0gMSxcbiAgICAgIGR5ID0gMSxcbiAgICAgIG5vZGVTaXplID0gZmFsc2U7XG5cbiAgZnVuY3Rpb24gY2x1c3Rlcihyb290KSB7XG4gICAgdmFyIHByZXZpb3VzTm9kZSxcbiAgICAgICAgeCA9IDA7XG5cbiAgICAvLyBGaXJzdCB3YWxrLCBjb21wdXRpbmcgdGhlIGluaXRpYWwgeCAmIHkgdmFsdWVzLlxuICAgIHJvb3QuZWFjaEFmdGVyKGZ1bmN0aW9uKG5vZGUpIHtcbiAgICAgIHZhciBjaGlsZHJlbiA9IG5vZGUuY2hpbGRyZW47XG4gICAgICBpZiAoY2hpbGRyZW4pIHtcbiAgICAgICAgbm9kZS54ID0gbWVhblgoY2hpbGRyZW4pO1xuICAgICAgICBub2RlLnkgPSBtYXhZKGNoaWxkcmVuKTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIG5vZGUueCA9IHByZXZpb3VzTm9kZSA/IHggKz0gc2VwYXJhdGlvbihub2RlLCBwcmV2aW91c05vZGUpIDogMDtcbiAgICAgICAgbm9kZS55ID0gMDtcbiAgICAgICAgcHJldmlvdXNOb2RlID0gbm9kZTtcbiAgICAgIH1cbiAgICB9KTtcblxuICAgIHZhciBsZWZ0ID0gbGVhZkxlZnQocm9vdCksXG4gICAgICAgIHJpZ2h0ID0gbGVhZlJpZ2h0KHJvb3QpLFxuICAgICAgICB4MCA9IGxlZnQueCAtIHNlcGFyYXRpb24obGVmdCwgcmlnaHQpIC8gMixcbiAgICAgICAgeDEgPSByaWdodC54ICsgc2VwYXJhdGlvbihyaWdodCwgbGVmdCkgLyAyO1xuXG4gICAgLy8gU2Vjb25kIHdhbGssIG5vcm1hbGl6aW5nIHggJiB5IHRvIHRoZSBkZXNpcmVkIHNpemUuXG4gICAgcmV0dXJuIHJvb3QuZWFjaEFmdGVyKG5vZGVTaXplID8gZnVuY3Rpb24obm9kZSkge1xuICAgICAgbm9kZS54ID0gKG5vZGUueCAtIHJvb3QueCkgKiBkeDtcbiAgICAgIG5vZGUueSA9IChyb290LnkgLSBub2RlLnkpICogZHk7XG4gICAgfSA6IGZ1bmN0aW9uKG5vZGUpIHtcbiAgICAgIG5vZGUueCA9IChub2RlLnggLSB4MCkgLyAoeDEgLSB4MCkgKiBkeDtcbiAgICAgIG5vZGUueSA9ICgxIC0gKHJvb3QueSA/IG5vZGUueSAvIHJvb3QueSA6IDEpKSAqIGR5O1xuICAgIH0pO1xuICB9XG5cbiAgY2x1c3Rlci5zZXBhcmF0aW9uID0gZnVuY3Rpb24oeCkge1xuICAgIHJldHVybiBhcmd1bWVudHMubGVuZ3RoID8gKHNlcGFyYXRpb24gPSB4LCBjbHVzdGVyKSA6IHNlcGFyYXRpb247XG4gIH07XG5cbiAgY2x1c3Rlci5zaXplID0gZnVuY3Rpb24oeCkge1xuICAgIHJldHVybiBhcmd1bWVudHMubGVuZ3RoID8gKG5vZGVTaXplID0gZmFsc2UsIGR4ID0gK3hbMF0sIGR5ID0gK3hbMV0sIGNsdXN0ZXIpIDogKG5vZGVTaXplID8gbnVsbCA6IFtkeCwgZHldKTtcbiAgfTtcblxuICBjbHVzdGVyLm5vZGVTaXplID0gZnVuY3Rpb24oeCkge1xuICAgIHJldHVybiBhcmd1bWVudHMubGVuZ3RoID8gKG5vZGVTaXplID0gdHJ1ZSwgZHggPSAreFswXSwgZHkgPSAreFsxXSwgY2x1c3RlcikgOiAobm9kZVNpemUgPyBbZHgsIGR5XSA6IG51bGwpO1xuICB9O1xuXG4gIHJldHVybiBjbHVzdGVyO1xufVxuIl0sIm1hcHBpbmdzIjoiQUFBQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTsiLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///./node_modules/vega/node_modules/d3-hierarchy/src/cluster.js\n");

/***/ }),

/***/ "./node_modules/vega/node_modules/d3-hierarchy/src/constant.js":
/*!*********************************************************************!*\
  !*** ./node_modules/vega/node_modules/d3-hierarchy/src/constant.js ***!
  \*********************************************************************/
/*! exports provided: constantZero, default */
/***/ (function(module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"constantZero\", function() { return constantZero; });\nfunction constantZero() {\n  return 0;\n}\n\n/* harmony default export */ __webpack_exports__[\"default\"] = (function(x) {\n  return function() {\n    return x;\n  };\n});\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvdmVnYS9ub2RlX21vZHVsZXMvZDMtaGllcmFyY2h5L3NyYy9jb25zdGFudC5qcy5qcyIsInNvdXJjZXMiOlsid2VicGFjazovLy8uL25vZGVfbW9kdWxlcy92ZWdhL25vZGVfbW9kdWxlcy9kMy1oaWVyYXJjaHkvc3JjL2NvbnN0YW50LmpzPzE1OTciXSwic291cmNlc0NvbnRlbnQiOlsiZXhwb3J0IGZ1bmN0aW9uIGNvbnN0YW50WmVybygpIHtcbiAgcmV0dXJuIDA7XG59XG5cbmV4cG9ydCBkZWZhdWx0IGZ1bmN0aW9uKHgpIHtcbiAgcmV0dXJuIGZ1bmN0aW9uKCkge1xuICAgIHJldHVybiB4O1xuICB9O1xufVxuIl0sIm1hcHBpbmdzIjoiQUFBQTtBQUFBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOyIsInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///./node_modules/vega/node_modules/d3-hierarchy/src/constant.js\n");

/***/ }),

/***/ "./node_modules/vega/node_modules/d3-hierarchy/src/hierarchy/ancestors.js":
/*!********************************************************************************!*\
  !*** ./node_modules/vega/node_modules/d3-hierarchy/src/hierarchy/ancestors.js ***!
  \********************************************************************************/
/*! exports provided: default */
/***/ (function(module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony default export */ __webpack_exports__[\"default\"] = (function() {\n  var node = this, nodes = [node];\n  while (node = node.parent) {\n    nodes.push(node);\n  }\n  return nodes;\n});\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvdmVnYS9ub2RlX21vZHVsZXMvZDMtaGllcmFyY2h5L3NyYy9oaWVyYXJjaHkvYW5jZXN0b3JzLmpzLmpzIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL3ZlZ2Evbm9kZV9tb2R1bGVzL2QzLWhpZXJhcmNoeS9zcmMvaGllcmFyY2h5L2FuY2VzdG9ycy5qcz9kMWRjIl0sInNvdXJjZXNDb250ZW50IjpbImV4cG9ydCBkZWZhdWx0IGZ1bmN0aW9uKCkge1xuICB2YXIgbm9kZSA9IHRoaXMsIG5vZGVzID0gW25vZGVdO1xuICB3aGlsZSAobm9kZSA9IG5vZGUucGFyZW50KSB7XG4gICAgbm9kZXMucHVzaChub2RlKTtcbiAgfVxuICByZXR1cm4gbm9kZXM7XG59XG4iXSwibWFwcGluZ3MiOiJBQUFBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7Iiwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///./node_modules/vega/node_modules/d3-hierarchy/src/hierarchy/ancestors.js\n");

/***/ }),

/***/ "./node_modules/vega/node_modules/d3-hierarchy/src/hierarchy/count.js":
/*!****************************************************************************!*\
  !*** ./node_modules/vega/node_modules/d3-hierarchy/src/hierarchy/count.js ***!
  \****************************************************************************/
/*! exports provided: default */
/***/ (function(module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\nfunction count(node) {\n  var sum = 0,\n      children = node.children,\n      i = children && children.length;\n  if (!i) sum = 1;\n  else while (--i >= 0) sum += children[i].value;\n  node.value = sum;\n}\n\n/* harmony default export */ __webpack_exports__[\"default\"] = (function() {\n  return this.eachAfter(count);\n});\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvdmVnYS9ub2RlX21vZHVsZXMvZDMtaGllcmFyY2h5L3NyYy9oaWVyYXJjaHkvY291bnQuanMuanMiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvdmVnYS9ub2RlX21vZHVsZXMvZDMtaGllcmFyY2h5L3NyYy9oaWVyYXJjaHkvY291bnQuanM/NTQxOSJdLCJzb3VyY2VzQ29udGVudCI6WyJmdW5jdGlvbiBjb3VudChub2RlKSB7XG4gIHZhciBzdW0gPSAwLFxuICAgICAgY2hpbGRyZW4gPSBub2RlLmNoaWxkcmVuLFxuICAgICAgaSA9IGNoaWxkcmVuICYmIGNoaWxkcmVuLmxlbmd0aDtcbiAgaWYgKCFpKSBzdW0gPSAxO1xuICBlbHNlIHdoaWxlICgtLWkgPj0gMCkgc3VtICs9IGNoaWxkcmVuW2ldLnZhbHVlO1xuICBub2RlLnZhbHVlID0gc3VtO1xufVxuXG5leHBvcnQgZGVmYXVsdCBmdW5jdGlvbigpIHtcbiAgcmV0dXJuIHRoaXMuZWFjaEFmdGVyKGNvdW50KTtcbn1cbiJdLCJtYXBwaW5ncyI6IkFBQUE7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7Iiwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///./node_modules/vega/node_modules/d3-hierarchy/src/hierarchy/count.js\n");

/***/ }),

/***/ "./node_modules/vega/node_modules/d3-hierarchy/src/hierarchy/descendants.js":
/*!**********************************************************************************!*\
  !*** ./node_modules/vega/node_modules/d3-hierarchy/src/hierarchy/descendants.js ***!
  \**********************************************************************************/
/*! exports provided: default */
/***/ (function(module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony default export */ __webpack_exports__[\"default\"] = (function() {\n  return Array.from(this);\n});\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvdmVnYS9ub2RlX21vZHVsZXMvZDMtaGllcmFyY2h5L3NyYy9oaWVyYXJjaHkvZGVzY2VuZGFudHMuanMuanMiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvdmVnYS9ub2RlX21vZHVsZXMvZDMtaGllcmFyY2h5L3NyYy9oaWVyYXJjaHkvZGVzY2VuZGFudHMuanM/MTM5MyJdLCJzb3VyY2VzQ29udGVudCI6WyJleHBvcnQgZGVmYXVsdCBmdW5jdGlvbigpIHtcbiAgcmV0dXJuIEFycmF5LmZyb20odGhpcyk7XG59XG4iXSwibWFwcGluZ3MiOiJBQUFBO0FBQUE7QUFDQTtBQUNBOyIsInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///./node_modules/vega/node_modules/d3-hierarchy/src/hierarchy/descendants.js\n");

/***/ }),

/***/ "./node_modules/vega/node_modules/d3-hierarchy/src/hierarchy/each.js":
/*!***************************************************************************!*\
  !*** ./node_modules/vega/node_modules/d3-hierarchy/src/hierarchy/each.js ***!
  \***************************************************************************/
/*! exports provided: default */
/***/ (function(module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony default export */ __webpack_exports__[\"default\"] = (function(callback, that) {\n  let index = -1;\n  for (const node of this) {\n    callback.call(that, node, ++index, this);\n  }\n  return this;\n});\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvdmVnYS9ub2RlX21vZHVsZXMvZDMtaGllcmFyY2h5L3NyYy9oaWVyYXJjaHkvZWFjaC5qcy5qcyIsInNvdXJjZXMiOlsid2VicGFjazovLy8uL25vZGVfbW9kdWxlcy92ZWdhL25vZGVfbW9kdWxlcy9kMy1oaWVyYXJjaHkvc3JjL2hpZXJhcmNoeS9lYWNoLmpzPzhmMmEiXSwic291cmNlc0NvbnRlbnQiOlsiZXhwb3J0IGRlZmF1bHQgZnVuY3Rpb24oY2FsbGJhY2ssIHRoYXQpIHtcbiAgbGV0IGluZGV4ID0gLTE7XG4gIGZvciAoY29uc3Qgbm9kZSBvZiB0aGlzKSB7XG4gICAgY2FsbGJhY2suY2FsbCh0aGF0LCBub2RlLCArK2luZGV4LCB0aGlzKTtcbiAgfVxuICByZXR1cm4gdGhpcztcbn1cbiJdLCJtYXBwaW5ncyI6IkFBQUE7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTsiLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///./node_modules/vega/node_modules/d3-hierarchy/src/hierarchy/each.js\n");

/***/ }),

/***/ "./node_modules/vega/node_modules/d3-hierarchy/src/hierarchy/eachAfter.js":
/*!********************************************************************************!*\
  !*** ./node_modules/vega/node_modules/d3-hierarchy/src/hierarchy/eachAfter.js ***!
  \********************************************************************************/
/*! exports provided: default */
/***/ (function(module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony default export */ __webpack_exports__[\"default\"] = (function(callback, that) {\n  var node = this, nodes = [node], next = [], children, i, n, index = -1;\n  while (node = nodes.pop()) {\n    next.push(node);\n    if (children = node.children) {\n      for (i = 0, n = children.length; i < n; ++i) {\n        nodes.push(children[i]);\n      }\n    }\n  }\n  while (node = next.pop()) {\n    callback.call(that, node, ++index, this);\n  }\n  return this;\n});\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvdmVnYS9ub2RlX21vZHVsZXMvZDMtaGllcmFyY2h5L3NyYy9oaWVyYXJjaHkvZWFjaEFmdGVyLmpzLmpzIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL3ZlZ2Evbm9kZV9tb2R1bGVzL2QzLWhpZXJhcmNoeS9zcmMvaGllcmFyY2h5L2VhY2hBZnRlci5qcz8xNmYwIl0sInNvdXJjZXNDb250ZW50IjpbImV4cG9ydCBkZWZhdWx0IGZ1bmN0aW9uKGNhbGxiYWNrLCB0aGF0KSB7XG4gIHZhciBub2RlID0gdGhpcywgbm9kZXMgPSBbbm9kZV0sIG5leHQgPSBbXSwgY2hpbGRyZW4sIGksIG4sIGluZGV4ID0gLTE7XG4gIHdoaWxlIChub2RlID0gbm9kZXMucG9wKCkpIHtcbiAgICBuZXh0LnB1c2gobm9kZSk7XG4gICAgaWYgKGNoaWxkcmVuID0gbm9kZS5jaGlsZHJlbikge1xuICAgICAgZm9yIChpID0gMCwgbiA9IGNoaWxkcmVuLmxlbmd0aDsgaSA8IG47ICsraSkge1xuICAgICAgICBub2Rlcy5wdXNoKGNoaWxkcmVuW2ldKTtcbiAgICAgIH1cbiAgICB9XG4gIH1cbiAgd2hpbGUgKG5vZGUgPSBuZXh0LnBvcCgpKSB7XG4gICAgY2FsbGJhY2suY2FsbCh0aGF0LCBub2RlLCArK2luZGV4LCB0aGlzKTtcbiAgfVxuICByZXR1cm4gdGhpcztcbn1cbiJdLCJtYXBwaW5ncyI6IkFBQUE7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7Iiwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///./node_modules/vega/node_modules/d3-hierarchy/src/hierarchy/eachAfter.js\n");

/***/ }),

/***/ "./node_modules/vega/node_modules/d3-hierarchy/src/hierarchy/eachBefore.js":
/*!*********************************************************************************!*\
  !*** ./node_modules/vega/node_modules/d3-hierarchy/src/hierarchy/eachBefore.js ***!
  \*********************************************************************************/
/*! exports provided: default */
/***/ (function(module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony default export */ __webpack_exports__[\"default\"] = (function(callback, that) {\n  var node = this, nodes = [node], children, i, index = -1;\n  while (node = nodes.pop()) {\n    callback.call(that, node, ++index, this);\n    if (children = node.children) {\n      for (i = children.length - 1; i >= 0; --i) {\n        nodes.push(children[i]);\n      }\n    }\n  }\n  return this;\n});\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvdmVnYS9ub2RlX21vZHVsZXMvZDMtaGllcmFyY2h5L3NyYy9oaWVyYXJjaHkvZWFjaEJlZm9yZS5qcy5qcyIsInNvdXJjZXMiOlsid2VicGFjazovLy8uL25vZGVfbW9kdWxlcy92ZWdhL25vZGVfbW9kdWxlcy9kMy1oaWVyYXJjaHkvc3JjL2hpZXJhcmNoeS9lYWNoQmVmb3JlLmpzP2IxZmQiXSwic291cmNlc0NvbnRlbnQiOlsiZXhwb3J0IGRlZmF1bHQgZnVuY3Rpb24oY2FsbGJhY2ssIHRoYXQpIHtcbiAgdmFyIG5vZGUgPSB0aGlzLCBub2RlcyA9IFtub2RlXSwgY2hpbGRyZW4sIGksIGluZGV4ID0gLTE7XG4gIHdoaWxlIChub2RlID0gbm9kZXMucG9wKCkpIHtcbiAgICBjYWxsYmFjay5jYWxsKHRoYXQsIG5vZGUsICsraW5kZXgsIHRoaXMpO1xuICAgIGlmIChjaGlsZHJlbiA9IG5vZGUuY2hpbGRyZW4pIHtcbiAgICAgIGZvciAoaSA9IGNoaWxkcmVuLmxlbmd0aCAtIDE7IGkgPj0gMDsgLS1pKSB7XG4gICAgICAgIG5vZGVzLnB1c2goY2hpbGRyZW5baV0pO1xuICAgICAgfVxuICAgIH1cbiAgfVxuICByZXR1cm4gdGhpcztcbn1cbiJdLCJtYXBwaW5ncyI6IkFBQUE7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7Iiwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///./node_modules/vega/node_modules/d3-hierarchy/src/hierarchy/eachBefore.js\n");

/***/ }),

/***/ "./node_modules/vega/node_modules/d3-hierarchy/src/hierarchy/find.js":
/*!***************************************************************************!*\
  !*** ./node_modules/vega/node_modules/d3-hierarchy/src/hierarchy/find.js ***!
  \***************************************************************************/
/*! exports provided: default */
/***/ (function(module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony default export */ __webpack_exports__[\"default\"] = (function(callback, that) {\n  let index = -1;\n  for (const node of this) {\n    if (callback.call(that, node, ++index, this)) {\n      return node;\n    }\n  }\n});\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvdmVnYS9ub2RlX21vZHVsZXMvZDMtaGllcmFyY2h5L3NyYy9oaWVyYXJjaHkvZmluZC5qcy5qcyIsInNvdXJjZXMiOlsid2VicGFjazovLy8uL25vZGVfbW9kdWxlcy92ZWdhL25vZGVfbW9kdWxlcy9kMy1oaWVyYXJjaHkvc3JjL2hpZXJhcmNoeS9maW5kLmpzP2I0ZDkiXSwic291cmNlc0NvbnRlbnQiOlsiZXhwb3J0IGRlZmF1bHQgZnVuY3Rpb24oY2FsbGJhY2ssIHRoYXQpIHtcbiAgbGV0IGluZGV4ID0gLTE7XG4gIGZvciAoY29uc3Qgbm9kZSBvZiB0aGlzKSB7XG4gICAgaWYgKGNhbGxiYWNrLmNhbGwodGhhdCwgbm9kZSwgKytpbmRleCwgdGhpcykpIHtcbiAgICAgIHJldHVybiBub2RlO1xuICAgIH1cbiAgfVxufVxuIl0sIm1hcHBpbmdzIjoiQUFBQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7Iiwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///./node_modules/vega/node_modules/d3-hierarchy/src/hierarchy/find.js\n");

/***/ }),

/***/ "./node_modules/vega/node_modules/d3-hierarchy/src/hierarchy/index.js":
/*!****************************************************************************!*\
  !*** ./node_modules/vega/node_modules/d3-hierarchy/src/hierarchy/index.js ***!
  \****************************************************************************/
/*! exports provided: default, computeHeight, Node */
/***/ (function(module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"default\", function() { return hierarchy; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"computeHeight\", function() { return computeHeight; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"Node\", function() { return Node; });\n/* harmony import */ var _count_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./count.js */ \"./node_modules/vega/node_modules/d3-hierarchy/src/hierarchy/count.js\");\n/* harmony import */ var _each_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./each.js */ \"./node_modules/vega/node_modules/d3-hierarchy/src/hierarchy/each.js\");\n/* harmony import */ var _eachBefore_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./eachBefore.js */ \"./node_modules/vega/node_modules/d3-hierarchy/src/hierarchy/eachBefore.js\");\n/* harmony import */ var _eachAfter_js__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ./eachAfter.js */ \"./node_modules/vega/node_modules/d3-hierarchy/src/hierarchy/eachAfter.js\");\n/* harmony import */ var _find_js__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ./find.js */ \"./node_modules/vega/node_modules/d3-hierarchy/src/hierarchy/find.js\");\n/* harmony import */ var _sum_js__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! ./sum.js */ \"./node_modules/vega/node_modules/d3-hierarchy/src/hierarchy/sum.js\");\n/* harmony import */ var _sort_js__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! ./sort.js */ \"./node_modules/vega/node_modules/d3-hierarchy/src/hierarchy/sort.js\");\n/* harmony import */ var _path_js__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! ./path.js */ \"./node_modules/vega/node_modules/d3-hierarchy/src/hierarchy/path.js\");\n/* harmony import */ var _ancestors_js__WEBPACK_IMPORTED_MODULE_8__ = __webpack_require__(/*! ./ancestors.js */ \"./node_modules/vega/node_modules/d3-hierarchy/src/hierarchy/ancestors.js\");\n/* harmony import */ var _descendants_js__WEBPACK_IMPORTED_MODULE_9__ = __webpack_require__(/*! ./descendants.js */ \"./node_modules/vega/node_modules/d3-hierarchy/src/hierarchy/descendants.js\");\n/* harmony import */ var _leaves_js__WEBPACK_IMPORTED_MODULE_10__ = __webpack_require__(/*! ./leaves.js */ \"./node_modules/vega/node_modules/d3-hierarchy/src/hierarchy/leaves.js\");\n/* harmony import */ var _links_js__WEBPACK_IMPORTED_MODULE_11__ = __webpack_require__(/*! ./links.js */ \"./node_modules/vega/node_modules/d3-hierarchy/src/hierarchy/links.js\");\n/* harmony import */ var _iterator_js__WEBPACK_IMPORTED_MODULE_12__ = __webpack_require__(/*! ./iterator.js */ \"./node_modules/vega/node_modules/d3-hierarchy/src/hierarchy/iterator.js\");\n\n\n\n\n\n\n\n\n\n\n\n\n\n\nfunction hierarchy(data, children) {\n  if (data instanceof Map) {\n    data = [undefined, data];\n    if (children === undefined) children = mapChildren;\n  } else if (children === undefined) {\n    children = objectChildren;\n  }\n\n  var root = new Node(data),\n      node,\n      nodes = [root],\n      child,\n      childs,\n      i,\n      n;\n\n  while (node = nodes.pop()) {\n    if ((childs = children(node.data)) && (n = (childs = Array.from(childs)).length)) {\n      node.children = childs;\n      for (i = n - 1; i >= 0; --i) {\n        nodes.push(child = childs[i] = new Node(childs[i]));\n        child.parent = node;\n        child.depth = node.depth + 1;\n      }\n    }\n  }\n\n  return root.eachBefore(computeHeight);\n}\n\nfunction node_copy() {\n  return hierarchy(this).eachBefore(copyData);\n}\n\nfunction objectChildren(d) {\n  return d.children;\n}\n\nfunction mapChildren(d) {\n  return Array.isArray(d) ? d[1] : null;\n}\n\nfunction copyData(node) {\n  if (node.data.value !== undefined) node.value = node.data.value;\n  node.data = node.data.data;\n}\n\nfunction computeHeight(node) {\n  var height = 0;\n  do node.height = height;\n  while ((node = node.parent) && (node.height < ++height));\n}\n\nfunction Node(data) {\n  this.data = data;\n  this.depth =\n  this.height = 0;\n  this.parent = null;\n}\n\nNode.prototype = hierarchy.prototype = {\n  constructor: Node,\n  count: _count_js__WEBPACK_IMPORTED_MODULE_0__[\"default\"],\n  each: _each_js__WEBPACK_IMPORTED_MODULE_1__[\"default\"],\n  eachAfter: _eachAfter_js__WEBPACK_IMPORTED_MODULE_3__[\"default\"],\n  eachBefore: _eachBefore_js__WEBPACK_IMPORTED_MODULE_2__[\"default\"],\n  find: _find_js__WEBPACK_IMPORTED_MODULE_4__[\"default\"],\n  sum: _sum_js__WEBPACK_IMPORTED_MODULE_5__[\"default\"],\n  sort: _sort_js__WEBPACK_IMPORTED_MODULE_6__[\"default\"],\n  path: _path_js__WEBPACK_IMPORTED_MODULE_7__[\"default\"],\n  ancestors: _ancestors_js__WEBPACK_IMPORTED_MODULE_8__[\"default\"],\n  descendants: _descendants_js__WEBPACK_IMPORTED_MODULE_9__[\"default\"],\n  leaves: _leaves_js__WEBPACK_IMPORTED_MODULE_10__[\"default\"],\n  links: _links_js__WEBPACK_IMPORTED_MODULE_11__[\"default\"],\n  copy: node_copy,\n  [Symbol.iterator]: _iterator_js__WEBPACK_IMPORTED_MODULE_12__[\"default\"]\n};\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,[encoded data, 4164 characters]\n//# sourceURL=webpack-internal:///./node_modules/vega/node_modules/d3-hierarchy/src/hierarchy/index.js\n");

/***/ }),

/***/ "./node_modules/vega/node_modules/d3-hierarchy/src/hierarchy/iterator.js":
/*!*******************************************************************************!*\
  !*** ./node_modules/vega/node_modules/d3-hierarchy/src/hierarchy/iterator.js ***!
  \*******************************************************************************/
/*! exports provided: default */
/***/ (function(module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony default export */ __webpack_exports__[\"default\"] = (function*() {\n  var node = this, current, next = [node], children, i, n;\n  do {\n    current = next.reverse(), next = [];\n    while (node = current.pop()) {\n      yield node;\n      if (children = node.children) {\n        for (i = 0, n = children.length; i < n; ++i) {\n          next.push(children[i]);\n        }\n      }\n    }\n  } while (next.length);\n});\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvdmVnYS9ub2RlX21vZHVsZXMvZDMtaGllcmFyY2h5L3NyYy9oaWVyYXJjaHkvaXRlcmF0b3IuanMuanMiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvdmVnYS9ub2RlX21vZHVsZXMvZDMtaGllcmFyY2h5L3NyYy9oaWVyYXJjaHkvaXRlcmF0b3IuanM/MDY2NSJdLCJzb3VyY2VzQ29udGVudCI6WyJleHBvcnQgZGVmYXVsdCBmdW5jdGlvbiooKSB7XG4gIHZhciBub2RlID0gdGhpcywgY3VycmVudCwgbmV4dCA9IFtub2RlXSwgY2hpbGRyZW4sIGksIG47XG4gIGRvIHtcbiAgICBjdXJyZW50ID0gbmV4dC5yZXZlcnNlKCksIG5leHQgPSBbXTtcbiAgICB3aGlsZSAobm9kZSA9IGN1cnJlbnQucG9wKCkpIHtcbiAgICAgIHlpZWxkIG5vZGU7XG4gICAgICBpZiAoY2hpbGRyZW4gPSBub2RlLmNoaWxkcmVuKSB7XG4gICAgICAgIGZvciAoaSA9IDAsIG4gPSBjaGlsZHJlbi5sZW5ndGg7IGkgPCBuOyArK2kpIHtcbiAgICAgICAgICBuZXh0LnB1c2goY2hpbGRyZW5baV0pO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgfVxuICB9IHdoaWxlIChuZXh0Lmxlbmd0aCk7XG59XG4iXSwibWFwcGluZ3MiOiJBQUFBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTsiLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///./node_modules/vega/node_modules/d3-hierarchy/src/hierarchy/iterator.js\n");

/***/ }),

/***/ "./node_modules/vega/node_modules/d3-hierarchy/src/hierarchy/leaves.js":
/*!*****************************************************************************!*\
  !*** ./node_modules/vega/node_modules/d3-hierarchy/src/hierarchy/leaves.js ***!
  \*****************************************************************************/
/*! exports provided: default */
/***/ (function(module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony default export */ __webpack_exports__[\"default\"] = (function() {\n  var leaves = [];\n  this.eachBefore(function(node) {\n    if (!node.children) {\n      leaves.push(node);\n    }\n  });\n  return leaves;\n});\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvdmVnYS9ub2RlX21vZHVsZXMvZDMtaGllcmFyY2h5L3NyYy9oaWVyYXJjaHkvbGVhdmVzLmpzLmpzIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL3ZlZ2Evbm9kZV9tb2R1bGVzL2QzLWhpZXJhcmNoeS9zcmMvaGllcmFyY2h5L2xlYXZlcy5qcz9iNjg5Il0sInNvdXJjZXNDb250ZW50IjpbImV4cG9ydCBkZWZhdWx0IGZ1bmN0aW9uKCkge1xuICB2YXIgbGVhdmVzID0gW107XG4gIHRoaXMuZWFjaEJlZm9yZShmdW5jdGlvbihub2RlKSB7XG4gICAgaWYgKCFub2RlLmNoaWxkcmVuKSB7XG4gICAgICBsZWF2ZXMucHVzaChub2RlKTtcbiAgICB9XG4gIH0pO1xuICByZXR1cm4gbGVhdmVzO1xufVxuIl0sIm1hcHBpbmdzIjoiQUFBQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTsiLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///./node_modules/vega/node_modules/d3-hierarchy/src/hierarchy/leaves.js\n");

/***/ }),

/***/ "./node_modules/vega/node_modules/d3-hierarchy/src/hierarchy/links.js":
/*!****************************************************************************!*\
  !*** ./node_modules/vega/node_modules/d3-hierarchy/src/hierarchy/links.js ***!
  \****************************************************************************/
/*! exports provided: default */
/***/ (function(module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony default export */ __webpack_exports__[\"default\"] = (function() {\n  var root = this, links = [];\n  root.each(function(node) {\n    if (node !== root) { // Don’t include the root’s parent, if any.\n      links.push({source: node.parent, target: node});\n    }\n  });\n  return links;\n});\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvdmVnYS9ub2RlX21vZHVsZXMvZDMtaGllcmFyY2h5L3NyYy9oaWVyYXJjaHkvbGlua3MuanMuanMiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvdmVnYS9ub2RlX21vZHVsZXMvZDMtaGllcmFyY2h5L3NyYy9oaWVyYXJjaHkvbGlua3MuanM/ZjBmMCJdLCJzb3VyY2VzQ29udGVudCI6WyJleHBvcnQgZGVmYXVsdCBmdW5jdGlvbigpIHtcbiAgdmFyIHJvb3QgPSB0aGlzLCBsaW5rcyA9IFtdO1xuICByb290LmVhY2goZnVuY3Rpb24obm9kZSkge1xuICAgIGlmIChub2RlICE9PSByb290KSB7IC8vIERvbuKAmXQgaW5jbHVkZSB0aGUgcm9vdOKAmXMgcGFyZW50LCBpZiBhbnkuXG4gICAgICBsaW5rcy5wdXNoKHtzb3VyY2U6IG5vZGUucGFyZW50LCB0YXJnZXQ6IG5vZGV9KTtcbiAgICB9XG4gIH0pO1xuICByZXR1cm4gbGlua3M7XG59XG4iXSwibWFwcGluZ3MiOiJBQUFBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOyIsInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///./node_modules/vega/node_modules/d3-hierarchy/src/hierarchy/links.js\n");

/***/ }),

/***/ "./node_modules/vega/node_modules/d3-hierarchy/src/hierarchy/path.js":
/*!***************************************************************************!*\
  !*** ./node_modules/vega/node_modules/d3-hierarchy/src/hierarchy/path.js ***!
  \***************************************************************************/
/*! exports provided: default */
/***/ (function(module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony default export */ __webpack_exports__[\"default\"] = (function(end) {\n  var start = this,\n      ancestor = leastCommonAncestor(start, end),\n      nodes = [start];\n  while (start !== ancestor) {\n    start = start.parent;\n    nodes.push(start);\n  }\n  var k = nodes.length;\n  while (end !== ancestor) {\n    nodes.splice(k, 0, end);\n    end = end.parent;\n  }\n  return nodes;\n});\n\nfunction leastCommonAncestor(a, b) {\n  if (a === b) return a;\n  var aNodes = a.ancestors(),\n      bNodes = b.ancestors(),\n      c = null;\n  a = aNodes.pop();\n  b = bNodes.pop();\n  while (a === b) {\n    c = a;\n    a = aNodes.pop();\n    b = bNodes.pop();\n  }\n  return c;\n}\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvdmVnYS9ub2RlX21vZHVsZXMvZDMtaGllcmFyY2h5L3NyYy9oaWVyYXJjaHkvcGF0aC5qcy5qcyIsInNvdXJjZXMiOlsid2VicGFjazovLy8uL25vZGVfbW9kdWxlcy92ZWdhL25vZGVfbW9kdWxlcy9kMy1oaWVyYXJjaHkvc3JjL2hpZXJhcmNoeS9wYXRoLmpzP2Q2NGIiXSwic291cmNlc0NvbnRlbnQiOlsiZXhwb3J0IGRlZmF1bHQgZnVuY3Rpb24oZW5kKSB7XG4gIHZhciBzdGFydCA9IHRoaXMsXG4gICAgICBhbmNlc3RvciA9IGxlYXN0Q29tbW9uQW5jZXN0b3Ioc3RhcnQsIGVuZCksXG4gICAgICBub2RlcyA9IFtzdGFydF07XG4gIHdoaWxlIChzdGFydCAhPT0gYW5jZXN0b3IpIHtcbiAgICBzdGFydCA9IHN0YXJ0LnBhcmVudDtcbiAgICBub2Rlcy5wdXNoKHN0YXJ0KTtcbiAgfVxuICB2YXIgayA9IG5vZGVzLmxlbmd0aDtcbiAgd2hpbGUgKGVuZCAhPT0gYW5jZXN0b3IpIHtcbiAgICBub2Rlcy5zcGxpY2UoaywgMCwgZW5kKTtcbiAgICBlbmQgPSBlbmQucGFyZW50O1xuICB9XG4gIHJldHVybiBub2Rlcztcbn1cblxuZnVuY3Rpb24gbGVhc3RDb21tb25BbmNlc3RvcihhLCBiKSB7XG4gIGlmIChhID09PSBiKSByZXR1cm4gYTtcbiAgdmFyIGFOb2RlcyA9IGEuYW5jZXN0b3JzKCksXG4gICAgICBiTm9kZXMgPSBiLmFuY2VzdG9ycygpLFxuICAgICAgYyA9IG51bGw7XG4gIGEgPSBhTm9kZXMucG9wKCk7XG4gIGIgPSBiTm9kZXMucG9wKCk7XG4gIHdoaWxlIChhID09PSBiKSB7XG4gICAgYyA9IGE7XG4gICAgYSA9IGFOb2Rlcy5wb3AoKTtcbiAgICBiID0gYk5vZGVzLnBvcCgpO1xuICB9XG4gIHJldHVybiBjO1xufVxuIl0sIm1hcHBpbmdzIjoiQUFBQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTsiLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///./node_modules/vega/node_modules/d3-hierarchy/src/hierarchy/path.js\n");

/***/ }),

/***/ "./node_modules/vega/node_modules/d3-hierarchy/src/hierarchy/sort.js":
/*!***************************************************************************!*\
  !*** ./node_modules/vega/node_modules/d3-hierarchy/src/hierarchy/sort.js ***!
  \***************************************************************************/
/*! exports provided: default */
/***/ (function(module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony default export */ __webpack_exports__[\"default\"] = (function(compare) {\n  return this.eachBefore(function(node) {\n    if (node.children) {\n      node.children.sort(compare);\n    }\n  });\n});\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvdmVnYS9ub2RlX21vZHVsZXMvZDMtaGllcmFyY2h5L3NyYy9oaWVyYXJjaHkvc29ydC5qcy5qcyIsInNvdXJjZXMiOlsid2VicGFjazovLy8uL25vZGVfbW9kdWxlcy92ZWdhL25vZGVfbW9kdWxlcy9kMy1oaWVyYXJjaHkvc3JjL2hpZXJhcmNoeS9zb3J0LmpzPzYwNjkiXSwic291cmNlc0NvbnRlbnQiOlsiZXhwb3J0IGRlZmF1bHQgZnVuY3Rpb24oY29tcGFyZSkge1xuICByZXR1cm4gdGhpcy5lYWNoQmVmb3JlKGZ1bmN0aW9uKG5vZGUpIHtcbiAgICBpZiAobm9kZS5jaGlsZHJlbikge1xuICAgICAgbm9kZS5jaGlsZHJlbi5zb3J0KGNvbXBhcmUpO1xuICAgIH1cbiAgfSk7XG59XG4iXSwibWFwcGluZ3MiOiJBQUFBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7Iiwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///./node_modules/vega/node_modules/d3-hierarchy/src/hierarchy/sort.js\n");

/***/ }),

/***/ "./node_modules/vega/node_modules/d3-hierarchy/src/hierarchy/sum.js":
/*!**************************************************************************!*\
  !*** ./node_modules/vega/node_modules/d3-hierarchy/src/hierarchy/sum.js ***!
  \**************************************************************************/
/*! exports provided: default */
/***/ (function(module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony default export */ __webpack_exports__[\"default\"] = (function(value) {\n  return this.eachAfter(function(node) {\n    var sum = +value(node.data) || 0,\n        children = node.children,\n        i = children && children.length;\n    while (--i >= 0) sum += children[i].value;\n    node.value = sum;\n  });\n});\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvdmVnYS9ub2RlX21vZHVsZXMvZDMtaGllcmFyY2h5L3NyYy9oaWVyYXJjaHkvc3VtLmpzLmpzIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL3ZlZ2Evbm9kZV9tb2R1bGVzL2QzLWhpZXJhcmNoeS9zcmMvaGllcmFyY2h5L3N1bS5qcz9kNjk5Il0sInNvdXJjZXNDb250ZW50IjpbImV4cG9ydCBkZWZhdWx0IGZ1bmN0aW9uKHZhbHVlKSB7XG4gIHJldHVybiB0aGlzLmVhY2hBZnRlcihmdW5jdGlvbihub2RlKSB7XG4gICAgdmFyIHN1bSA9ICt2YWx1ZShub2RlLmRhdGEpIHx8IDAsXG4gICAgICAgIGNoaWxkcmVuID0gbm9kZS5jaGlsZHJlbixcbiAgICAgICAgaSA9IGNoaWxkcmVuICYmIGNoaWxkcmVuLmxlbmd0aDtcbiAgICB3aGlsZSAoLS1pID49IDApIHN1bSArPSBjaGlsZHJlbltpXS52YWx1ZTtcbiAgICBub2RlLnZhbHVlID0gc3VtO1xuICB9KTtcbn1cbiJdLCJtYXBwaW5ncyI6IkFBQUE7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7Iiwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///./node_modules/vega/node_modules/d3-hierarchy/src/hierarchy/sum.js\n");

/***/ }),

/***/ "./node_modules/vega/node_modules/d3-hierarchy/src/index.js":
/*!******************************************************************!*\
  !*** ./node_modules/vega/node_modules/d3-hierarchy/src/index.js ***!
  \******************************************************************/
/*! exports provided: cluster, hierarchy, pack, packSiblings, packEnclose, partition, stratify, tree, treemap, treemapBinary, treemapDice, treemapSlice, treemapSliceDice, treemapSquarify, treemapResquarify */
/***/ (function(module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _cluster_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./cluster.js */ \"./node_modules/vega/node_modules/d3-hierarchy/src/cluster.js\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"cluster\", function() { return _cluster_js__WEBPACK_IMPORTED_MODULE_0__[\"default\"]; });\n\n/* harmony import */ var _hierarchy_index_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./hierarchy/index.js */ \"./node_modules/vega/node_modules/d3-hierarchy/src/hierarchy/index.js\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"hierarchy\", function() { return _hierarchy_index_js__WEBPACK_IMPORTED_MODULE_1__[\"default\"]; });\n\n/* harmony import */ var _pack_index_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./pack/index.js */ \"./node_modules/vega/node_modules/d3-hierarchy/src/pack/index.js\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"pack\", function() { return _pack_index_js__WEBPACK_IMPORTED_MODULE_2__[\"default\"]; });\n\n/* harmony import */ var _pack_siblings_js__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ./pack/siblings.js */ \"./node_modules/vega/node_modules/d3-hierarchy/src/pack/siblings.js\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"packSiblings\", function() { return _pack_siblings_js__WEBPACK_IMPORTED_MODULE_3__[\"default\"]; });\n\n/* harmony import */ var _pack_enclose_js__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ./pack/enclose.js */ \"./node_modules/vega/node_modules/d3-hierarchy/src/pack/enclose.js\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"packEnclose\", function() { return _pack_enclose_js__WEBPACK_IMPORTED_MODULE_4__[\"default\"]; });\n\n/* harmony import */ var _partition_js__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! ./partition.js */ \"./node_modules/vega/node_modules/d3-hierarchy/src/partition.js\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"partition\", function() { return _partition_js__WEBPACK_IMPORTED_MODULE_5__[\"default\"]; });\n\n/* harmony import */ var _stratify_js__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! ./stratify.js */ \"./node_modules/vega/node_modules/d3-hierarchy/src/stratify.js\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"stratify\", function() { return _stratify_js__WEBPACK_IMPORTED_MODULE_6__[\"default\"]; });\n\n/* harmony import */ var _tree_js__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! ./tree.js */ \"./node_modules/vega/node_modules/d3-hierarchy/src/tree.js\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"tree\", function() { return _tree_js__WEBPACK_IMPORTED_MODULE_7__[\"default\"]; });\n\n/* harmony import */ var _treemap_index_js__WEBPACK_IMPORTED_MODULE_8__ = __webpack_require__(/*! ./treemap/index.js */ \"./node_modules/vega/node_modules/d3-hierarchy/src/treemap/index.js\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"treemap\", function() { return _treemap_index_js__WEBPACK_IMPORTED_MODULE_8__[\"default\"]; });\n\n/* harmony import */ var _treemap_binary_js__WEBPACK_IMPORTED_MODULE_9__ = __webpack_require__(/*! ./treemap/binary.js */ \"./node_modules/vega/node_modules/d3-hierarchy/src/treemap/binary.js\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"treemapBinary\", function() { return _treemap_binary_js__WEBPACK_IMPORTED_MODULE_9__[\"default\"]; });\n\n/* harmony import */ var _treemap_dice_js__WEBPACK_IMPORTED_MODULE_10__ = __webpack_require__(/*! ./treemap/dice.js */ \"./node_modules/vega/node_modules/d3-hierarchy/src/treemap/dice.js\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"treemapDice\", function() { return _treemap_dice_js__WEBPACK_IMPORTED_MODULE_10__[\"default\"]; });\n\n/* harmony import */ var _treemap_slice_js__WEBPACK_IMPORTED_MODULE_11__ = __webpack_require__(/*! ./treemap/slice.js */ \"./node_modules/vega/node_modules/d3-hierarchy/src/treemap/slice.js\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"treemapSlice\", function() { return _treemap_slice_js__WEBPACK_IMPORTED_MODULE_11__[\"default\"]; });\n\n/* harmony import */ var _treemap_sliceDice_js__WEBPACK_IMPORTED_MODULE_12__ = __webpack_require__(/*! ./treemap/sliceDice.js */ \"./node_modules/vega/node_modules/d3-hierarchy/src/treemap/sliceDice.js\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"treemapSliceDice\", function() { return _treemap_sliceDice_js__WEBPACK_IMPORTED_MODULE_12__[\"default\"]; });\n\n/* harmony import */ var _treemap_squarify_js__WEBPACK_IMPORTED_MODULE_13__ = __webpack_require__(/*! ./treemap/squarify.js */ \"./node_modules/vega/node_modules/d3-hierarchy/src/treemap/squarify.js\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"treemapSquarify\", function() { return _treemap_squarify_js__WEBPACK_IMPORTED_MODULE_13__[\"default\"]; });\n\n/* harmony import */ var _treemap_resquarify_js__WEBPACK_IMPORTED_MODULE_14__ = __webpack_require__(/*! ./treemap/resquarify.js */ \"./node_modules/vega/node_modules/d3-hierarchy/src/treemap/resquarify.js\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"treemapResquarify\", function() { return _treemap_resquarify_js__WEBPACK_IMPORTED_MODULE_14__[\"default\"]; });\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvdmVnYS9ub2RlX21vZHVsZXMvZDMtaGllcmFyY2h5L3NyYy9pbmRleC5qcy5qcyIsInNvdXJjZXMiOlsid2VicGFjazovLy8uL25vZGVfbW9kdWxlcy92ZWdhL25vZGVfbW9kdWxlcy9kMy1oaWVyYXJjaHkvc3JjL2luZGV4LmpzPzQzMWYiXSwic291cmNlc0NvbnRlbnQiOlsiZXhwb3J0IHtkZWZhdWx0IGFzIGNsdXN0ZXJ9IGZyb20gXCIuL2NsdXN0ZXIuanNcIjtcbmV4cG9ydCB7ZGVmYXVsdCBhcyBoaWVyYXJjaHl9IGZyb20gXCIuL2hpZXJhcmNoeS9pbmRleC5qc1wiO1xuZXhwb3J0IHtkZWZhdWx0IGFzIHBhY2t9IGZyb20gXCIuL3BhY2svaW5kZXguanNcIjtcbmV4cG9ydCB7ZGVmYXVsdCBhcyBwYWNrU2libGluZ3N9IGZyb20gXCIuL3BhY2svc2libGluZ3MuanNcIjtcbmV4cG9ydCB7ZGVmYXVsdCBhcyBwYWNrRW5jbG9zZX0gZnJvbSBcIi4vcGFjay9lbmNsb3NlLmpzXCI7XG5leHBvcnQge2RlZmF1bHQgYXMgcGFydGl0aW9ufSBmcm9tIFwiLi9wYXJ0aXRpb24uanNcIjtcbmV4cG9ydCB7ZGVmYXVsdCBhcyBzdHJhdGlmeX0gZnJvbSBcIi4vc3RyYXRpZnkuanNcIjtcbmV4cG9ydCB7ZGVmYXVsdCBhcyB0cmVlfSBmcm9tIFwiLi90cmVlLmpzXCI7XG5leHBvcnQge2RlZmF1bHQgYXMgdHJlZW1hcH0gZnJvbSBcIi4vdHJlZW1hcC9pbmRleC5qc1wiO1xuZXhwb3J0IHtkZWZhdWx0IGFzIHRyZWVtYXBCaW5hcnl9IGZyb20gXCIuL3RyZWVtYXAvYmluYXJ5LmpzXCI7XG5leHBvcnQge2RlZmF1bHQgYXMgdHJlZW1hcERpY2V9IGZyb20gXCIuL3RyZWVtYXAvZGljZS5qc1wiO1xuZXhwb3J0IHtkZWZhdWx0IGFzIHRyZWVtYXBTbGljZX0gZnJvbSBcIi4vdHJlZW1hcC9zbGljZS5qc1wiO1xuZXhwb3J0IHtkZWZhdWx0IGFzIHRyZWVtYXBTbGljZURpY2V9IGZyb20gXCIuL3RyZWVtYXAvc2xpY2VEaWNlLmpzXCI7XG5leHBvcnQge2RlZmF1bHQgYXMgdHJlZW1hcFNxdWFyaWZ5fSBmcm9tIFwiLi90cmVlbWFwL3NxdWFyaWZ5LmpzXCI7XG5leHBvcnQge2RlZmF1bHQgYXMgdHJlZW1hcFJlc3F1YXJpZnl9IGZyb20gXCIuL3RyZWVtYXAvcmVzcXVhcmlmeS5qc1wiO1xuIl0sIm1hcHBpbmdzIjoiQUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTsiLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///./node_modules/vega/node_modules/d3-hierarchy/src/index.js\n");

/***/ }),

/***/ "./node_modules/vega/node_modules/d3-hierarchy/src/pack/enclose.js":
/*!*************************************************************************!*\
  !*** ./node_modules/vega/node_modules/d3-hierarchy/src/pack/enclose.js ***!
  \*************************************************************************/
/*! exports provided: default */
/***/ (function(module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _array_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../array.js */ \"./node_modules/vega/node_modules/d3-hierarchy/src/array.js\");\n\n\n/* harmony default export */ __webpack_exports__[\"default\"] = (function(circles) {\n  var i = 0, n = (circles = Object(_array_js__WEBPACK_IMPORTED_MODULE_0__[\"shuffle\"])(Array.from(circles))).length, B = [], p, e;\n\n  while (i < n) {\n    p = circles[i];\n    if (e && enclosesWeak(e, p)) ++i;\n    else e = encloseBasis(B = extendBasis(B, p)), i = 0;\n  }\n\n  return e;\n});\n\nfunction extendBasis(B, p) {\n  var i, j;\n\n  if (enclosesWeakAll(p, B)) return [p];\n\n  // If we get here then B must have at least one element.\n  for (i = 0; i < B.length; ++i) {\n    if (enclosesNot(p, B[i])\n        && enclosesWeakAll(encloseBasis2(B[i], p), B)) {\n      return [B[i], p];\n    }\n  }\n\n  // If we get here then B must have at least two elements.\n  for (i = 0; i < B.length - 1; ++i) {\n    for (j = i + 1; j < B.length; ++j) {\n      if (enclosesNot(encloseBasis2(B[i], B[j]), p)\n          && enclosesNot(encloseBasis2(B[i], p), B[j])\n          && enclosesNot(encloseBasis2(B[j], p), B[i])\n          && enclosesWeakAll(encloseBasis3(B[i], B[j], p), B)) {\n        return [B[i], B[j], p];\n      }\n    }\n  }\n\n  // If we get here then something is very wrong.\n  throw new Error;\n}\n\nfunction enclosesNot(a, b) {\n  var dr = a.r - b.r, dx = b.x - a.x, dy = b.y - a.y;\n  return dr < 0 || dr * dr < dx * dx + dy * dy;\n}\n\nfunction enclosesWeak(a, b) {\n  var dr = a.r - b.r + Math.max(a.r, b.r, 1) * 1e-9, dx = b.x - a.x, dy = b.y - a.y;\n  return dr > 0 && dr * dr > dx * dx + dy * dy;\n}\n\nfunction enclosesWeakAll(a, B) {\n  for (var i = 0; i < B.length; ++i) {\n    if (!enclosesWeak(a, B[i])) {\n      return false;\n    }\n  }\n  return true;\n}\n\nfunction encloseBasis(B) {\n  switch (B.length) {\n    case 1: return encloseBasis1(B[0]);\n    case 2: return encloseBasis2(B[0], B[1]);\n    case 3: return encloseBasis3(B[0], B[1], B[2]);\n  }\n}\n\nfunction encloseBasis1(a) {\n  return {\n    x: a.x,\n    y: a.y,\n    r: a.r\n  };\n}\n\nfunction encloseBasis2(a, b) {\n  var x1 = a.x, y1 = a.y, r1 = a.r,\n      x2 = b.x, y2 = b.y, r2 = b.r,\n      x21 = x2 - x1, y21 = y2 - y1, r21 = r2 - r1,\n      l = Math.sqrt(x21 * x21 + y21 * y21);\n  return {\n    x: (x1 + x2 + x21 / l * r21) / 2,\n    y: (y1 + y2 + y21 / l * r21) / 2,\n    r: (l + r1 + r2) / 2\n  };\n}\n\nfunction encloseBasis3(a, b, c) {\n  var x1 = a.x, y1 = a.y, r1 = a.r,\n      x2 = b.x, y2 = b.y, r2 = b.r,\n      x3 = c.x, y3 = c.y, r3 = c.r,\n      a2 = x1 - x2,\n      a3 = x1 - x3,\n      b2 = y1 - y2,\n      b3 = y1 - y3,\n      c2 = r2 - r1,\n      c3 = r3 - r1,\n      d1 = x1 * x1 + y1 * y1 - r1 * r1,\n      d2 = d1 - x2 * x2 - y2 * y2 + r2 * r2,\n      d3 = d1 - x3 * x3 - y3 * y3 + r3 * r3,\n      ab = a3 * b2 - a2 * b3,\n      xa = (b2 * d3 - b3 * d2) / (ab * 2) - x1,\n      xb = (b3 * c2 - b2 * c3) / ab,\n      ya = (a3 * d2 - a2 * d3) / (ab * 2) - y1,\n      yb = (a2 * c3 - a3 * c2) / ab,\n      A = xb * xb + yb * yb - 1,\n      B = 2 * (r1 + xa * xb + ya * yb),\n      C = xa * xa + ya * ya - r1 * r1,\n      r = -(A ? (B + Math.sqrt(B * B - 4 * A * C)) / (2 * A) : C / B);\n  return {\n    x: x1 + xa + xb * r,\n    y: y1 + ya + yb * r,\n    r: r\n  };\n}\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,[encoded data, 5276 characters]\n//# sourceURL=webpack-internal:///./node_modules/vega/node_modules/d3-hierarchy/src/pack/enclose.js\n");

/***/ }),

/***/ "./node_modules/vega/node_modules/d3-hierarchy/src/pack/index.js":
/*!***********************************************************************!*\
  !*** ./node_modules/vega/node_modules/d3-hierarchy/src/pack/index.js ***!
  \***********************************************************************/
/*! exports provided: default */
/***/ (function(module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _siblings_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./siblings.js */ \"./node_modules/vega/node_modules/d3-hierarchy/src/pack/siblings.js\");\n/* harmony import */ var _accessors_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../accessors.js */ \"./node_modules/vega/node_modules/d3-hierarchy/src/accessors.js\");\n/* harmony import */ var _constant_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ../constant.js */ \"./node_modules/vega/node_modules/d3-hierarchy/src/constant.js\");\n\n\n\n\nfunction defaultRadius(d) {\n  return Math.sqrt(d.value);\n}\n\n/* harmony default export */ __webpack_exports__[\"default\"] = (function() {\n  var radius = null,\n      dx = 1,\n      dy = 1,\n      padding = _constant_js__WEBPACK_IMPORTED_MODULE_2__[\"constantZero\"];\n\n  function pack(root) {\n    root.x = dx / 2, root.y = dy / 2;\n    if (radius) {\n      root.eachBefore(radiusLeaf(radius))\n          .eachAfter(packChildren(padding, 0.5))\n          .eachBefore(translateChild(1));\n    } else {\n      root.eachBefore(radiusLeaf(defaultRadius))\n          .eachAfter(packChildren(_constant_js__WEBPACK_IMPORTED_MODULE_2__[\"constantZero\"], 1))\n          .eachAfter(packChildren(padding, root.r / Math.min(dx, dy)))\n          .eachBefore(translateChild(Math.min(dx, dy) / (2 * root.r)));\n    }\n    return root;\n  }\n\n  pack.radius = function(x) {\n    return arguments.length ? (radius = Object(_accessors_js__WEBPACK_IMPORTED_MODULE_1__[\"optional\"])(x), pack) : radius;\n  };\n\n  pack.size = function(x) {\n    return arguments.length ? (dx = +x[0], dy = +x[1], pack) : [dx, dy];\n  };\n\n  pack.padding = function(x) {\n    return arguments.length ? (padding = typeof x === \"function\" ? x : Object(_constant_js__WEBPACK_IMPORTED_MODULE_2__[\"default\"])(+x), pack) : padding;\n  };\n\n  return pack;\n});\n\nfunction radiusLeaf(radius) {\n  return function(node) {\n    if (!node.children) {\n      node.r = Math.max(0, +radius(node) || 0);\n    }\n  };\n}\n\nfunction packChildren(padding, k) {\n  return function(node) {\n    if (children = node.children) {\n      var children,\n          i,\n          n = children.length,\n          r = padding(node) * k || 0,\n          e;\n\n      if (r) for (i = 0; i < n; ++i) children[i].r += r;\n      e = Object(_siblings_js__WEBPACK_IMPORTED_MODULE_0__[\"packEnclose\"])(children);\n      if (r) for (i = 0; i < n; ++i) children[i].r -= r;\n      node.r = e + r;\n    }\n  };\n}\n\nfunction translateChild(k) {\n  return function(node) {\n    var parent = node.parent;\n    node.r *= k;\n    if (parent) {\n      node.x = parent.x + k * node.x;\n      node.y = parent.y + k * node.y;\n    }\n  };\n}\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvdmVnYS9ub2RlX21vZHVsZXMvZDMtaGllcmFyY2h5L3NyYy9wYWNrL2luZGV4LmpzLmpzIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL3ZlZ2Evbm9kZV9tb2R1bGVzL2QzLWhpZXJhcmNoeS9zcmMvcGFjay9pbmRleC5qcz85MGJlIl0sInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7cGFja0VuY2xvc2V9IGZyb20gXCIuL3NpYmxpbmdzLmpzXCI7XG5pbXBvcnQge29wdGlvbmFsfSBmcm9tIFwiLi4vYWNjZXNzb3JzLmpzXCI7XG5pbXBvcnQgY29uc3RhbnQsIHtjb25zdGFudFplcm99IGZyb20gXCIuLi9jb25zdGFudC5qc1wiO1xuXG5mdW5jdGlvbiBkZWZhdWx0UmFkaXVzKGQpIHtcbiAgcmV0dXJuIE1hdGguc3FydChkLnZhbHVlKTtcbn1cblxuZXhwb3J0IGRlZmF1bHQgZnVuY3Rpb24oKSB7XG4gIHZhciByYWRpdXMgPSBudWxsLFxuICAgICAgZHggPSAxLFxuICAgICAgZHkgPSAxLFxuICAgICAgcGFkZGluZyA9IGNvbnN0YW50WmVybztcblxuICBmdW5jdGlvbiBwYWNrKHJvb3QpIHtcbiAgICByb290LnggPSBkeCAvIDIsIHJvb3QueSA9IGR5IC8gMjtcbiAgICBpZiAocmFkaXVzKSB7XG4gICAgICByb290LmVhY2hCZWZvcmUocmFkaXVzTGVhZihyYWRpdXMpKVxuICAgICAgICAgIC5lYWNoQWZ0ZXIocGFja0NoaWxkcmVuKHBhZGRpbmcsIDAuNSkpXG4gICAgICAgICAgLmVhY2hCZWZvcmUodHJhbnNsYXRlQ2hpbGQoMSkpO1xuICAgIH0gZWxzZSB7XG4gICAgICByb290LmVhY2hCZWZvcmUocmFkaXVzTGVhZihkZWZhdWx0UmFkaXVzKSlcbiAgICAgICAgICAuZWFjaEFmdGVyKHBhY2tDaGlsZHJlbihjb25zdGFudFplcm8sIDEpKVxuICAgICAgICAgIC5lYWNoQWZ0ZXIocGFja0NoaWxkcmVuKHBhZGRpbmcsIHJvb3QuciAvIE1hdGgubWluKGR4LCBkeSkpKVxuICAgICAgICAgIC5lYWNoQmVmb3JlKHRyYW5zbGF0ZUNoaWxkKE1hdGgubWluKGR4LCBkeSkgLyAoMiAqIHJvb3QucikpKTtcbiAgICB9XG4gICAgcmV0dXJuIHJvb3Q7XG4gIH1cblxuICBwYWNrLnJhZGl1cyA9IGZ1bmN0aW9uKHgpIHtcbiAgICByZXR1cm4gYXJndW1lbnRzLmxlbmd0aCA/IChyYWRpdXMgPSBvcHRpb25hbCh4KSwgcGFjaykgOiByYWRpdXM7XG4gIH07XG5cbiAgcGFjay5zaXplID0gZnVuY3Rpb24oeCkge1xuICAgIHJldHVybiBhcmd1bWVudHMubGVuZ3RoID8gKGR4ID0gK3hbMF0sIGR5ID0gK3hbMV0sIHBhY2spIDogW2R4LCBkeV07XG4gIH07XG5cbiAgcGFjay5wYWRkaW5nID0gZnVuY3Rpb24oeCkge1xuICAgIHJldHVybiBhcmd1bWVudHMubGVuZ3RoID8gKHBhZGRpbmcgPSB0eXBlb2YgeCA9PT0gXCJmdW5jdGlvblwiID8geCA6IGNvbnN0YW50KCt4KSwgcGFjaykgOiBwYWRkaW5nO1xuICB9O1xuXG4gIHJldHVybiBwYWNrO1xufVxuXG5mdW5jdGlvbiByYWRpdXNMZWFmKHJhZGl1cykge1xuICByZXR1cm4gZnVuY3Rpb24obm9kZSkge1xuICAgIGlmICghbm9kZS5jaGlsZHJlbikge1xuICAgICAgbm9kZS5yID0gTWF0aC5tYXgoMCwgK3JhZGl1cyhub2RlKSB8fCAwKTtcbiAgICB9XG4gIH07XG59XG5cbmZ1bmN0aW9uIHBhY2tDaGlsZHJlbihwYWRkaW5nLCBrKSB7XG4gIHJldHVybiBmdW5jdGlvbihub2RlKSB7XG4gICAgaWYgKGNoaWxkcmVuID0gbm9kZS5jaGlsZHJlbikge1xuICAgICAgdmFyIGNoaWxkcmVuLFxuICAgICAgICAgIGksXG4gICAgICAgICAgbiA9IGNoaWxkcmVuLmxlbmd0aCxcbiAgICAgICAgICByID0gcGFkZGluZyhub2RlKSAqIGsgfHwgMCxcbiAgICAgICAgICBlO1xuXG4gICAgICBpZiAocikgZm9yIChpID0gMDsgaSA8IG47ICsraSkgY2hpbGRyZW5baV0uciArPSByO1xuICAgICAgZSA9IHBhY2tFbmNsb3NlKGNoaWxkcmVuKTtcbiAgICAgIGlmIChyKSBmb3IgKGkgPSAwOyBpIDwgbjsgKytpKSBjaGlsZHJlbltpXS5yIC09IHI7XG4gICAgICBub2RlLnIgPSBlICsgcjtcbiAgICB9XG4gIH07XG59XG5cbmZ1bmN0aW9uIHRyYW5zbGF0ZUNoaWxkKGspIHtcbiAgcmV0dXJuIGZ1bmN0aW9uKG5vZGUpIHtcbiAgICB2YXIgcGFyZW50ID0gbm9kZS5wYXJlbnQ7XG4gICAgbm9kZS5yICo9IGs7XG4gICAgaWYgKHBhcmVudCkge1xuICAgICAgbm9kZS54ID0gcGFyZW50LnggKyBrICogbm9kZS54O1xuICAgICAgbm9kZS55ID0gcGFyZW50LnkgKyBrICogbm9kZS55O1xuICAgIH1cbiAgfTtcbn1cbiJdLCJtYXBwaW5ncyI6IkFBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTsiLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///./node_modules/vega/node_modules/d3-hierarchy/src/pack/index.js\n");

/***/ }),

/***/ "./node_modules/vega/node_modules/d3-hierarchy/src/pack/siblings.js":
/*!**************************************************************************!*\
  !*** ./node_modules/vega/node_modules/d3-hierarchy/src/pack/siblings.js ***!
  \**************************************************************************/
/*! exports provided: packEnclose, default */
/***/ (function(module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"packEnclose\", function() { return packEnclose; });\n/* harmony import */ var _array_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../array.js */ \"./node_modules/vega/node_modules/d3-hierarchy/src/array.js\");\n/* harmony import */ var _enclose_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./enclose.js */ \"./node_modules/vega/node_modules/d3-hierarchy/src/pack/enclose.js\");\n\n\n\nfunction place(b, a, c) {\n  var dx = b.x - a.x, x, a2,\n      dy = b.y - a.y, y, b2,\n      d2 = dx * dx + dy * dy;\n  if (d2) {\n    a2 = a.r + c.r, a2 *= a2;\n    b2 = b.r + c.r, b2 *= b2;\n    if (a2 > b2) {\n      x = (d2 + b2 - a2) / (2 * d2);\n      y = Math.sqrt(Math.max(0, b2 / d2 - x * x));\n      c.x = b.x - x * dx - y * dy;\n      c.y = b.y - x * dy + y * dx;\n    } else {\n      x = (d2 + a2 - b2) / (2 * d2);\n      y = Math.sqrt(Math.max(0, a2 / d2 - x * x));\n      c.x = a.x + x * dx - y * dy;\n      c.y = a.y + x * dy + y * dx;\n    }\n  } else {\n    c.x = a.x + c.r;\n    c.y = a.y;\n  }\n}\n\nfunction intersects(a, b) {\n  var dr = a.r + b.r - 1e-6, dx = b.x - a.x, dy = b.y - a.y;\n  return dr > 0 && dr * dr > dx * dx + dy * dy;\n}\n\nfunction score(node) {\n  var a = node._,\n      b = node.next._,\n      ab = a.r + b.r,\n      dx = (a.x * b.r + b.x * a.r) / ab,\n      dy = (a.y * b.r + b.y * a.r) / ab;\n  return dx * dx + dy * dy;\n}\n\nfunction Node(circle) {\n  this._ = circle;\n  this.next = null;\n  this.previous = null;\n}\n\nfunction packEnclose(circles) {\n  if (!(n = (circles = Object(_array_js__WEBPACK_IMPORTED_MODULE_0__[\"default\"])(circles)).length)) return 0;\n\n  var a, b, c, n, aa, ca, i, j, k, sj, sk;\n\n  // Place the first circle.\n  a = circles[0], a.x = 0, a.y = 0;\n  if (!(n > 1)) return a.r;\n\n  // Place the second circle.\n  b = circles[1], a.x = -b.r, b.x = a.r, b.y = 0;\n  if (!(n > 2)) return a.r + b.r;\n\n  // Place the third circle.\n  place(b, a, c = circles[2]);\n\n  // Initialize the front-chain using the first three circles a, b and c.\n  a = new Node(a), b = new Node(b), c = new Node(c);\n  a.next = c.previous = b;\n  b.next = a.previous = c;\n  c.next = b.previous = a;\n\n  // Attempt to place each remaining circle…\n  pack: for (i = 3; i < n; ++i) {\n    place(a._, b._, c = circles[i]), c = new Node(c);\n\n    // Find the closest intersecting circle on the front-chain, if any.\n    // “Closeness” is determined by linear distance along the front-chain.\n    // “Ahead” or “behind” is likewise determined by linear distance.\n    j = b.next, k = a.previous, sj = b._.r, sk = a._.r;\n    do {\n      if (sj <= sk) {\n        if (intersects(j._, c._)) {\n          b = j, a.next = b, b.previous = a, --i;\n          continue pack;\n        }\n        sj += j._.r, j = j.next;\n      } else {\n        if (intersects(k._, c._)) {\n          a = k, a.next = b, b.previous = a, --i;\n          continue pack;\n        }\n        sk += k._.r, k = k.previous;\n      }\n    } while (j !== k.next);\n\n    // Success! Insert the new circle c between a and b.\n    c.previous = a, c.next = b, a.next = b.previous = b = c;\n\n    // Compute the new closest circle pair to the centroid.\n    aa = score(a);\n    while ((c = c.next) !== b) {\n      if ((ca = score(c)) < aa) {\n        a = c, aa = ca;\n      }\n    }\n    b = a.next;\n  }\n\n  // Compute the enclosing circle of the front chain.\n  a = [b._], c = b; while ((c = c.next) !== b) a.push(c._); c = Object(_enclose_js__WEBPACK_IMPORTED_MODULE_1__[\"default\"])(a);\n\n  // Translate the circles to put the enclosing circle around the origin.\n  for (i = 0; i < n; ++i) a = circles[i], a.x -= c.x, a.y -= c.y;\n\n  return c.r;\n}\n\n/* harmony default export */ __webpack_exports__[\"default\"] = (function(circles) {\n  packEnclose(circles);\n  return circles;\n});\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,[encoded data, 5604 characters]\n//# sourceURL=webpack-internal:///./node_modules/vega/node_modules/d3-hierarchy/src/pack/siblings.js\n");

/***/ }),

/***/ "./node_modules/vega/node_modules/d3-hierarchy/src/partition.js":
/*!**********************************************************************!*\
  !*** ./node_modules/vega/node_modules/d3-hierarchy/src/partition.js ***!
  \**********************************************************************/
/*! exports provided: default */
/***/ (function(module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _treemap_round_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./treemap/round.js */ \"./node_modules/vega/node_modules/d3-hierarchy/src/treemap/round.js\");\n/* harmony import */ var _treemap_dice_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./treemap/dice.js */ \"./node_modules/vega/node_modules/d3-hierarchy/src/treemap/dice.js\");\n\n\n\n/* harmony default export */ __webpack_exports__[\"default\"] = (function() {\n  var dx = 1,\n      dy = 1,\n      padding = 0,\n      round = false;\n\n  function partition(root) {\n    var n = root.height + 1;\n    root.x0 =\n    root.y0 = padding;\n    root.x1 = dx;\n    root.y1 = dy / n;\n    root.eachBefore(positionNode(dy, n));\n    if (round) root.eachBefore(_treemap_round_js__WEBPACK_IMPORTED_MODULE_0__[\"default\"]);\n    return root;\n  }\n\n  function positionNode(dy, n) {\n    return function(node) {\n      if (node.children) {\n        Object(_treemap_dice_js__WEBPACK_IMPORTED_MODULE_1__[\"default\"])(node, node.x0, dy * (node.depth + 1) / n, node.x1, dy * (node.depth + 2) / n);\n      }\n      var x0 = node.x0,\n          y0 = node.y0,\n          x1 = node.x1 - padding,\n          y1 = node.y1 - padding;\n      if (x1 < x0) x0 = x1 = (x0 + x1) / 2;\n      if (y1 < y0) y0 = y1 = (y0 + y1) / 2;\n      node.x0 = x0;\n      node.y0 = y0;\n      node.x1 = x1;\n      node.y1 = y1;\n    };\n  }\n\n  partition.round = function(x) {\n    return arguments.length ? (round = !!x, partition) : round;\n  };\n\n  partition.size = function(x) {\n    return arguments.length ? (dx = +x[0], dy = +x[1], partition) : [dx, dy];\n  };\n\n  partition.padding = function(x) {\n    return arguments.length ? (padding = +x, partition) : padding;\n  };\n\n  return partition;\n});\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvdmVnYS9ub2RlX21vZHVsZXMvZDMtaGllcmFyY2h5L3NyYy9wYXJ0aXRpb24uanMuanMiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvdmVnYS9ub2RlX21vZHVsZXMvZDMtaGllcmFyY2h5L3NyYy9wYXJ0aXRpb24uanM/NTUxNSJdLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgcm91bmROb2RlIGZyb20gXCIuL3RyZWVtYXAvcm91bmQuanNcIjtcbmltcG9ydCB0cmVlbWFwRGljZSBmcm9tIFwiLi90cmVlbWFwL2RpY2UuanNcIjtcblxuZXhwb3J0IGRlZmF1bHQgZnVuY3Rpb24oKSB7XG4gIHZhciBkeCA9IDEsXG4gICAgICBkeSA9IDEsXG4gICAgICBwYWRkaW5nID0gMCxcbiAgICAgIHJvdW5kID0gZmFsc2U7XG5cbiAgZnVuY3Rpb24gcGFydGl0aW9uKHJvb3QpIHtcbiAgICB2YXIgbiA9IHJvb3QuaGVpZ2h0ICsgMTtcbiAgICByb290LngwID1cbiAgICByb290LnkwID0gcGFkZGluZztcbiAgICByb290LngxID0gZHg7XG4gICAgcm9vdC55MSA9IGR5IC8gbjtcbiAgICByb290LmVhY2hCZWZvcmUocG9zaXRpb25Ob2RlKGR5LCBuKSk7XG4gICAgaWYgKHJvdW5kKSByb290LmVhY2hCZWZvcmUocm91bmROb2RlKTtcbiAgICByZXR1cm4gcm9vdDtcbiAgfVxuXG4gIGZ1bmN0aW9uIHBvc2l0aW9uTm9kZShkeSwgbikge1xuICAgIHJldHVybiBmdW5jdGlvbihub2RlKSB7XG4gICAgICBpZiAobm9kZS5jaGlsZHJlbikge1xuICAgICAgICB0cmVlbWFwRGljZShub2RlLCBub2RlLngwLCBkeSAqIChub2RlLmRlcHRoICsgMSkgLyBuLCBub2RlLngxLCBkeSAqIChub2RlLmRlcHRoICsgMikgLyBuKTtcbiAgICAgIH1cbiAgICAgIHZhciB4MCA9IG5vZGUueDAsXG4gICAgICAgICAgeTAgPSBub2RlLnkwLFxuICAgICAgICAgIHgxID0gbm9kZS54MSAtIHBhZGRpbmcsXG4gICAgICAgICAgeTEgPSBub2RlLnkxIC0gcGFkZGluZztcbiAgICAgIGlmICh4MSA8IHgwKSB4MCA9IHgxID0gKHgwICsgeDEpIC8gMjtcbiAgICAgIGlmICh5MSA8IHkwKSB5MCA9IHkxID0gKHkwICsgeTEpIC8gMjtcbiAgICAgIG5vZGUueDAgPSB4MDtcbiAgICAgIG5vZGUueTAgPSB5MDtcbiAgICAgIG5vZGUueDEgPSB4MTtcbiAgICAgIG5vZGUueTEgPSB5MTtcbiAgICB9O1xuICB9XG5cbiAgcGFydGl0aW9uLnJvdW5kID0gZnVuY3Rpb24oeCkge1xuICAgIHJldHVybiBhcmd1bWVudHMubGVuZ3RoID8gKHJvdW5kID0gISF4LCBwYXJ0aXRpb24pIDogcm91bmQ7XG4gIH07XG5cbiAgcGFydGl0aW9uLnNpemUgPSBmdW5jdGlvbih4KSB7XG4gICAgcmV0dXJuIGFyZ3VtZW50cy5sZW5ndGggPyAoZHggPSAreFswXSwgZHkgPSAreFsxXSwgcGFydGl0aW9uKSA6IFtkeCwgZHldO1xuICB9O1xuXG4gIHBhcnRpdGlvbi5wYWRkaW5nID0gZnVuY3Rpb24oeCkge1xuICAgIHJldHVybiBhcmd1bWVudHMubGVuZ3RoID8gKHBhZGRpbmcgPSAreCwgcGFydGl0aW9uKSA6IHBhZGRpbmc7XG4gIH07XG5cbiAgcmV0dXJuIHBhcnRpdGlvbjtcbn1cbiJdLCJtYXBwaW5ncyI6IkFBQUE7QUFBQTtBQUFBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7Iiwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///./node_modules/vega/node_modules/d3-hierarchy/src/partition.js\n");

/***/ }),

/***/ "./node_modules/vega/node_modules/d3-hierarchy/src/stratify.js":
/*!*********************************************************************!*\
  !*** ./node_modules/vega/node_modules/d3-hierarchy/src/stratify.js ***!
  \*********************************************************************/
/*! exports provided: default */
/***/ (function(module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _accessors_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./accessors.js */ \"./node_modules/vega/node_modules/d3-hierarchy/src/accessors.js\");\n/* harmony import */ var _hierarchy_index_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./hierarchy/index.js */ \"./node_modules/vega/node_modules/d3-hierarchy/src/hierarchy/index.js\");\n\n\n\nvar preroot = {depth: -1},\n    ambiguous = {};\n\nfunction defaultId(d) {\n  return d.id;\n}\n\nfunction defaultParentId(d) {\n  return d.parentId;\n}\n\n/* harmony default export */ __webpack_exports__[\"default\"] = (function() {\n  var id = defaultId,\n      parentId = defaultParentId;\n\n  function stratify(data) {\n    var nodes = Array.from(data),\n        n = nodes.length,\n        d,\n        i,\n        root,\n        parent,\n        node,\n        nodeId,\n        nodeKey,\n        nodeByKey = new Map;\n\n    for (i = 0; i < n; ++i) {\n      d = nodes[i], node = nodes[i] = new _hierarchy_index_js__WEBPACK_IMPORTED_MODULE_1__[\"Node\"](d);\n      if ((nodeId = id(d, i, data)) != null && (nodeId += \"\")) {\n        nodeKey = node.id = nodeId;\n        nodeByKey.set(nodeKey, nodeByKey.has(nodeKey) ? ambiguous : node);\n      }\n      if ((nodeId = parentId(d, i, data)) != null && (nodeId += \"\")) {\n        node.parent = nodeId;\n      }\n    }\n\n    for (i = 0; i < n; ++i) {\n      node = nodes[i];\n      if (nodeId = node.parent) {\n        parent = nodeByKey.get(nodeId);\n        if (!parent) throw new Error(\"missing: \" + nodeId);\n        if (parent === ambiguous) throw new Error(\"ambiguous: \" + nodeId);\n        if (parent.children) parent.children.push(node);\n        else parent.children = [node];\n        node.parent = parent;\n      } else {\n        if (root) throw new Error(\"multiple roots\");\n        root = node;\n      }\n    }\n\n    if (!root) throw new Error(\"no root\");\n    root.parent = preroot;\n    root.eachBefore(function(node) { node.depth = node.parent.depth + 1; --n; }).eachBefore(_hierarchy_index_js__WEBPACK_IMPORTED_MODULE_1__[\"computeHeight\"]);\n    root.parent = null;\n    if (n > 0) throw new Error(\"cycle\");\n\n    return root;\n  }\n\n  stratify.id = function(x) {\n    return arguments.length ? (id = Object(_accessors_js__WEBPACK_IMPORTED_MODULE_0__[\"required\"])(x), stratify) : id;\n  };\n\n  stratify.parentId = function(x) {\n    return arguments.length ? (parentId = Object(_accessors_js__WEBPACK_IMPORTED_MODULE_0__[\"required\"])(x), stratify) : parentId;\n  };\n\n  return stratify;\n});\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvdmVnYS9ub2RlX21vZHVsZXMvZDMtaGllcmFyY2h5L3NyYy9zdHJhdGlmeS5qcy5qcyIsInNvdXJjZXMiOlsid2VicGFjazovLy8uL25vZGVfbW9kdWxlcy92ZWdhL25vZGVfbW9kdWxlcy9kMy1oaWVyYXJjaHkvc3JjL3N0cmF0aWZ5LmpzPzY1YTciXSwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtyZXF1aXJlZH0gZnJvbSBcIi4vYWNjZXNzb3JzLmpzXCI7XG5pbXBvcnQge05vZGUsIGNvbXB1dGVIZWlnaHR9IGZyb20gXCIuL2hpZXJhcmNoeS9pbmRleC5qc1wiO1xuXG52YXIgcHJlcm9vdCA9IHtkZXB0aDogLTF9LFxuICAgIGFtYmlndW91cyA9IHt9O1xuXG5mdW5jdGlvbiBkZWZhdWx0SWQoZCkge1xuICByZXR1cm4gZC5pZDtcbn1cblxuZnVuY3Rpb24gZGVmYXVsdFBhcmVudElkKGQpIHtcbiAgcmV0dXJuIGQucGFyZW50SWQ7XG59XG5cbmV4cG9ydCBkZWZhdWx0IGZ1bmN0aW9uKCkge1xuICB2YXIgaWQgPSBkZWZhdWx0SWQsXG4gICAgICBwYXJlbnRJZCA9IGRlZmF1bHRQYXJlbnRJZDtcblxuICBmdW5jdGlvbiBzdHJhdGlmeShkYXRhKSB7XG4gICAgdmFyIG5vZGVzID0gQXJyYXkuZnJvbShkYXRhKSxcbiAgICAgICAgbiA9IG5vZGVzLmxlbmd0aCxcbiAgICAgICAgZCxcbiAgICAgICAgaSxcbiAgICAgICAgcm9vdCxcbiAgICAgICAgcGFyZW50LFxuICAgICAgICBub2RlLFxuICAgICAgICBub2RlSWQsXG4gICAgICAgIG5vZGVLZXksXG4gICAgICAgIG5vZGVCeUtleSA9IG5ldyBNYXA7XG5cbiAgICBmb3IgKGkgPSAwOyBpIDwgbjsgKytpKSB7XG4gICAgICBkID0gbm9kZXNbaV0sIG5vZGUgPSBub2Rlc1tpXSA9IG5ldyBOb2RlKGQpO1xuICAgICAgaWYgKChub2RlSWQgPSBpZChkLCBpLCBkYXRhKSkgIT0gbnVsbCAmJiAobm9kZUlkICs9IFwiXCIpKSB7XG4gICAgICAgIG5vZGVLZXkgPSBub2RlLmlkID0gbm9kZUlkO1xuICAgICAgICBub2RlQnlLZXkuc2V0KG5vZGVLZXksIG5vZGVCeUtleS5oYXMobm9kZUtleSkgPyBhbWJpZ3VvdXMgOiBub2RlKTtcbiAgICAgIH1cbiAgICAgIGlmICgobm9kZUlkID0gcGFyZW50SWQoZCwgaSwgZGF0YSkpICE9IG51bGwgJiYgKG5vZGVJZCArPSBcIlwiKSkge1xuICAgICAgICBub2RlLnBhcmVudCA9IG5vZGVJZDtcbiAgICAgIH1cbiAgICB9XG5cbiAgICBmb3IgKGkgPSAwOyBpIDwgbjsgKytpKSB7XG4gICAgICBub2RlID0gbm9kZXNbaV07XG4gICAgICBpZiAobm9kZUlkID0gbm9kZS5wYXJlbnQpIHtcbiAgICAgICAgcGFyZW50ID0gbm9kZUJ5S2V5LmdldChub2RlSWQpO1xuICAgICAgICBpZiAoIXBhcmVudCkgdGhyb3cgbmV3IEVycm9yKFwibWlzc2luZzogXCIgKyBub2RlSWQpO1xuICAgICAgICBpZiAocGFyZW50ID09PSBhbWJpZ3VvdXMpIHRocm93IG5ldyBFcnJvcihcImFtYmlndW91czogXCIgKyBub2RlSWQpO1xuICAgICAgICBpZiAocGFyZW50LmNoaWxkcmVuKSBwYXJlbnQuY2hpbGRyZW4ucHVzaChub2RlKTtcbiAgICAgICAgZWxzZSBwYXJlbnQuY2hpbGRyZW4gPSBbbm9kZV07XG4gICAgICAgIG5vZGUucGFyZW50ID0gcGFyZW50O1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgaWYgKHJvb3QpIHRocm93IG5ldyBFcnJvcihcIm11bHRpcGxlIHJvb3RzXCIpO1xuICAgICAgICByb290ID0gbm9kZTtcbiAgICAgIH1cbiAgICB9XG5cbiAgICBpZiAoIXJvb3QpIHRocm93IG5ldyBFcnJvcihcIm5vIHJvb3RcIik7XG4gICAgcm9vdC5wYXJlbnQgPSBwcmVyb290O1xuICAgIHJvb3QuZWFjaEJlZm9yZShmdW5jdGlvbihub2RlKSB7IG5vZGUuZGVwdGggPSBub2RlLnBhcmVudC5kZXB0aCArIDE7IC0tbjsgfSkuZWFjaEJlZm9yZShjb21wdXRlSGVpZ2h0KTtcbiAgICByb290LnBhcmVudCA9IG51bGw7XG4gICAgaWYgKG4gPiAwKSB0aHJvdyBuZXcgRXJyb3IoXCJjeWNsZVwiKTtcblxuICAgIHJldHVybiByb290O1xuICB9XG5cbiAgc3RyYXRpZnkuaWQgPSBmdW5jdGlvbih4KSB7XG4gICAgcmV0dXJuIGFyZ3VtZW50cy5sZW5ndGggPyAoaWQgPSByZXF1aXJlZCh4KSwgc3RyYXRpZnkpIDogaWQ7XG4gIH07XG5cbiAgc3RyYXRpZnkucGFyZW50SWQgPSBmdW5jdGlvbih4KSB7XG4gICAgcmV0dXJuIGFyZ3VtZW50cy5sZW5ndGggPyAocGFyZW50SWQgPSByZXF1aXJlZCh4KSwgc3RyYXRpZnkpIDogcGFyZW50SWQ7XG4gIH07XG5cbiAgcmV0dXJuIHN0cmF0aWZ5O1xufVxuIl0sIm1hcHBpbmdzIjoiQUFBQTtBQUFBO0FBQUE7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7Iiwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///./node_modules/vega/node_modules/d3-hierarchy/src/stratify.js\n");

/***/ }),

/***/ "./node_modules/vega/node_modules/d3-hierarchy/src/tree.js":
/*!*****************************************************************!*\
  !*** ./node_modules/vega/node_modules/d3-hierarchy/src/tree.js ***!
  \*****************************************************************/
/*! exports provided: default */
/***/ (function(module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _hierarchy_index_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./hierarchy/index.js */ \"./node_modules/vega/node_modules/d3-hierarchy/src/hierarchy/index.js\");\n\n\nfunction defaultSeparation(a, b) {\n  return a.parent === b.parent ? 1 : 2;\n}\n\n// function radialSeparation(a, b) {\n//   return (a.parent === b.parent ? 1 : 2) / a.depth;\n// }\n\n// This function is used to traverse the left contour of a subtree (or\n// subforest). It returns the successor of v on this contour. This successor is\n// either given by the leftmost child of v or by the thread of v. The function\n// returns null if and only if v is on the highest level of its subtree.\nfunction nextLeft(v) {\n  var children = v.children;\n  return children ? children[0] : v.t;\n}\n\n// This function works analogously to nextLeft.\nfunction nextRight(v) {\n  var children = v.children;\n  return children ? children[children.length - 1] : v.t;\n}\n\n// Shifts the current subtree rooted at w+. This is done by increasing\n// prelim(w+) and mod(w+) by shift.\nfunction moveSubtree(wm, wp, shift) {\n  var change = shift / (wp.i - wm.i);\n  wp.c -= change;\n  wp.s += shift;\n  wm.c += change;\n  wp.z += shift;\n  wp.m += shift;\n}\n\n// All other shifts, applied to the smaller subtrees between w- and w+, are\n// performed by this function. To prepare the shifts, we have to adjust\n// change(w+), shift(w+), and change(w-).\nfunction executeShifts(v) {\n  var shift = 0,\n      change = 0,\n      children = v.children,\n      i = children.length,\n      w;\n  while (--i >= 0) {\n    w = children[i];\n    w.z += shift;\n    w.m += shift;\n    shift += w.s + (change += w.c);\n  }\n}\n\n// If vi-’s ancestor is a sibling of v, returns vi-’s ancestor. Otherwise,\n// returns the specified (default) ancestor.\nfunction nextAncestor(vim, v, ancestor) {\n  return vim.a.parent === v.parent ? vim.a : ancestor;\n}\n\nfunction TreeNode(node, i) {\n  this._ = node;\n  this.parent = null;\n  this.children = null;\n  this.A = null; // default ancestor\n  this.a = this; // ancestor\n  this.z = 0; // prelim\n  this.m = 0; // mod\n  this.c = 0; // change\n  this.s = 0; // shift\n  this.t = null; // thread\n  this.i = i; // number\n}\n\nTreeNode.prototype = Object.create(_hierarchy_index_js__WEBPACK_IMPORTED_MODULE_0__[\"Node\"].prototype);\n\nfunction treeRoot(root) {\n  var tree = new TreeNode(root, 0),\n      node,\n      nodes = [tree],\n      child,\n      children,\n      i,\n      n;\n\n  while (node = nodes.pop()) {\n    if (children = node._.children) {\n      node.children = new Array(n = children.length);\n      for (i = n - 1; i >= 0; --i) {\n        nodes.push(child = node.children[i] = new TreeNode(children[i], i));\n        child.parent = node;\n      }\n    }\n  }\n\n  (tree.parent = new TreeNode(null, 0)).children = [tree];\n  return tree;\n}\n\n// Node-link tree diagram using the Reingold-Tilford \"tidy\" algorithm\n/* harmony default export */ __webpack_exports__[\"default\"] = (function() {\n  var separation = defaultSeparation,\n      dx = 1,\n      dy = 1,\n      nodeSize = null;\n\n  function tree(root) {\n    var t = treeRoot(root);\n\n    // Compute the layout using Buchheim et al.’s algorithm.\n    t.eachAfter(firstWalk), t.parent.m = -t.z;\n    t.eachBefore(secondWalk);\n\n    // If a fixed node size is specified, scale x and y.\n    if (nodeSize) root.eachBefore(sizeNode);\n\n    // If a fixed tree size is specified, scale x and y based on the extent.\n    // Compute the left-most, right-most, and depth-most nodes for extents.\n    else {\n      var left = root,\n          right = root,\n          bottom = root;\n      root.eachBefore(function(node) {\n        if (node.x < left.x) left = node;\n        if (node.x > right.x) right = node;\n        if (node.depth > bottom.depth) bottom = node;\n      });\n      var s = left === right ? 1 : separation(left, right) / 2,\n          tx = s - left.x,\n          kx = dx / (right.x + s + tx),\n          ky = dy / (bottom.depth || 1);\n      root.eachBefore(function(node) {\n        node.x = (node.x + tx) * kx;\n        node.y = node.depth * ky;\n      });\n    }\n\n    return root;\n  }\n\n  // Computes a preliminary x-coordinate for v. Before that, FIRST WALK is\n  // applied recursively to the children of v, as well as the function\n  // APPORTION. After spacing out the children by calling EXECUTE SHIFTS, the\n  // node v is placed to the midpoint of its outermost children.\n  function firstWalk(v) {\n    var children = v.children,\n        siblings = v.parent.children,\n        w = v.i ? siblings[v.i - 1] : null;\n    if (children) {\n      executeShifts(v);\n      var midpoint = (children[0].z + children[children.length - 1].z) / 2;\n      if (w) {\n        v.z = w.z + separation(v._, w._);\n        v.m = v.z - midpoint;\n      } else {\n        v.z = midpoint;\n      }\n    } else if (w) {\n      v.z = w.z + separation(v._, w._);\n    }\n    v.parent.A = apportion(v, w, v.parent.A || siblings[0]);\n  }\n\n  // Computes all real x-coordinates by summing up the modifiers recursively.\n  function secondWalk(v) {\n    v._.x = v.z + v.parent.m;\n    v.m += v.parent.m;\n  }\n\n  // The core of the algorithm. Here, a new subtree is combined with the\n  // previous subtrees. Threads are used to traverse the inside and outside\n  // contours of the left and right subtree up to the highest common level. The\n  // vertices used for the traversals are vi+, vi-, vo-, and vo+, where the\n  // superscript o means outside and i means inside, the subscript - means left\n  // subtree and + means right subtree. For summing up the modifiers along the\n  // contour, we use respective variables si+, si-, so-, and so+. Whenever two\n  // nodes of the inside contours conflict, we compute the left one of the\n  // greatest uncommon ancestors using the function ANCESTOR and call MOVE\n  // SUBTREE to shift the subtree and prepare the shifts of smaller subtrees.\n  // Finally, we add a new thread (if necessary).\n  function apportion(v, w, ancestor) {\n    if (w) {\n      var vip = v,\n          vop = v,\n          vim = w,\n          vom = vip.parent.children[0],\n          sip = vip.m,\n          sop = vop.m,\n          sim = vim.m,\n          som = vom.m,\n          shift;\n      while (vim = nextRight(vim), vip = nextLeft(vip), vim && vip) {\n        vom = nextLeft(vom);\n        vop = nextRight(vop);\n        vop.a = v;\n        shift = vim.z + sim - vip.z - sip + separation(vim._, vip._);\n        if (shift > 0) {\n          moveSubtree(nextAncestor(vim, v, ancestor), v, shift);\n          sip += shift;\n          sop += shift;\n        }\n        sim += vim.m;\n        sip += vip.m;\n        som += vom.m;\n        sop += vop.m;\n      }\n      if (vim && !nextRight(vop)) {\n        vop.t = vim;\n        vop.m += sim - sop;\n      }\n      if (vip && !nextLeft(vom)) {\n        vom.t = vip;\n        vom.m += sip - som;\n        ancestor = v;\n      }\n    }\n    return ancestor;\n  }\n\n  function sizeNode(node) {\n    node.x *= dx;\n    node.y = node.depth * dy;\n  }\n\n  tree.separation = function(x) {\n    return arguments.length ? (separation = x, tree) : separation;\n  };\n\n  tree.size = function(x) {\n    return arguments.length ? (nodeSize = false, dx = +x[0], dy = +x[1], tree) : (nodeSize ? null : [dx, dy]);\n  };\n\n  tree.nodeSize = function(x) {\n    return arguments.length ? (nodeSize = true, dx = +x[0], dy = +x[1], tree) : (nodeSize ? [dx, dy] : null);\n  };\n\n  return tree;\n});\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,[encoded data, 11632 characters]\n//# sourceURL=webpack-internal:///./node_modules/vega/node_modules/d3-hierarchy/src/tree.js\n");

/***/ }),

/***/ "./node_modules/vega/node_modules/d3-hierarchy/src/treemap/binary.js":
/*!***************************************************************************!*\
  !*** ./node_modules/vega/node_modules/d3-hierarchy/src/treemap/binary.js ***!
  \***************************************************************************/
/*! exports provided: default */
/***/ (function(module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony default export */ __webpack_exports__[\"default\"] = (function(parent, x0, y0, x1, y1) {\n  var nodes = parent.children,\n      i, n = nodes.length,\n      sum, sums = new Array(n + 1);\n\n  for (sums[0] = sum = i = 0; i < n; ++i) {\n    sums[i + 1] = sum += nodes[i].value;\n  }\n\n  partition(0, n, parent.value, x0, y0, x1, y1);\n\n  function partition(i, j, value, x0, y0, x1, y1) {\n    if (i >= j - 1) {\n      var node = nodes[i];\n      node.x0 = x0, node.y0 = y0;\n      node.x1 = x1, node.y1 = y1;\n      return;\n    }\n\n    var valueOffset = sums[i],\n        valueTarget = (value / 2) + valueOffset,\n        k = i + 1,\n        hi = j - 1;\n\n    while (k < hi) {\n      var mid = k + hi >>> 1;\n      if (sums[mid] < valueTarget) k = mid + 1;\n      else hi = mid;\n    }\n\n    if ((valueTarget - sums[k - 1]) < (sums[k] - valueTarget) && i + 1 < k) --k;\n\n    var valueLeft = sums[k] - valueOffset,\n        valueRight = value - valueLeft;\n\n    if ((x1 - x0) > (y1 - y0)) {\n      var xk = value ? (x0 * valueRight + x1 * valueLeft) / value : x1;\n      partition(i, k, valueLeft, x0, y0, xk, y1);\n      partition(k, j, valueRight, xk, y0, x1, y1);\n    } else {\n      var yk = value ? (y0 * valueRight + y1 * valueLeft) / value : y1;\n      partition(i, k, valueLeft, x0, y0, x1, yk);\n      partition(k, j, valueRight, x0, yk, x1, y1);\n    }\n  }\n});\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvdmVnYS9ub2RlX21vZHVsZXMvZDMtaGllcmFyY2h5L3NyYy90cmVlbWFwL2JpbmFyeS5qcy5qcyIsInNvdXJjZXMiOlsid2VicGFjazovLy8uL25vZGVfbW9kdWxlcy92ZWdhL25vZGVfbW9kdWxlcy9kMy1oaWVyYXJjaHkvc3JjL3RyZWVtYXAvYmluYXJ5LmpzP2FiYmQiXSwic291cmNlc0NvbnRlbnQiOlsiZXhwb3J0IGRlZmF1bHQgZnVuY3Rpb24ocGFyZW50LCB4MCwgeTAsIHgxLCB5MSkge1xuICB2YXIgbm9kZXMgPSBwYXJlbnQuY2hpbGRyZW4sXG4gICAgICBpLCBuID0gbm9kZXMubGVuZ3RoLFxuICAgICAgc3VtLCBzdW1zID0gbmV3IEFycmF5KG4gKyAxKTtcblxuICBmb3IgKHN1bXNbMF0gPSBzdW0gPSBpID0gMDsgaSA8IG47ICsraSkge1xuICAgIHN1bXNbaSArIDFdID0gc3VtICs9IG5vZGVzW2ldLnZhbHVlO1xuICB9XG5cbiAgcGFydGl0aW9uKDAsIG4sIHBhcmVudC52YWx1ZSwgeDAsIHkwLCB4MSwgeTEpO1xuXG4gIGZ1bmN0aW9uIHBhcnRpdGlvbihpLCBqLCB2YWx1ZSwgeDAsIHkwLCB4MSwgeTEpIHtcbiAgICBpZiAoaSA+PSBqIC0gMSkge1xuICAgICAgdmFyIG5vZGUgPSBub2Rlc1tpXTtcbiAgICAgIG5vZGUueDAgPSB4MCwgbm9kZS55MCA9IHkwO1xuICAgICAgbm9kZS54MSA9IHgxLCBub2RlLnkxID0geTE7XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgdmFyIHZhbHVlT2Zmc2V0ID0gc3Vtc1tpXSxcbiAgICAgICAgdmFsdWVUYXJnZXQgPSAodmFsdWUgLyAyKSArIHZhbHVlT2Zmc2V0LFxuICAgICAgICBrID0gaSArIDEsXG4gICAgICAgIGhpID0gaiAtIDE7XG5cbiAgICB3aGlsZSAoayA8IGhpKSB7XG4gICAgICB2YXIgbWlkID0gayArIGhpID4+PiAxO1xuICAgICAgaWYgKHN1bXNbbWlkXSA8IHZhbHVlVGFyZ2V0KSBrID0gbWlkICsgMTtcbiAgICAgIGVsc2UgaGkgPSBtaWQ7XG4gICAgfVxuXG4gICAgaWYgKCh2YWx1ZVRhcmdldCAtIHN1bXNbayAtIDFdKSA8IChzdW1zW2tdIC0gdmFsdWVUYXJnZXQpICYmIGkgKyAxIDwgaykgLS1rO1xuXG4gICAgdmFyIHZhbHVlTGVmdCA9IHN1bXNba10gLSB2YWx1ZU9mZnNldCxcbiAgICAgICAgdmFsdWVSaWdodCA9IHZhbHVlIC0gdmFsdWVMZWZ0O1xuXG4gICAgaWYgKCh4MSAtIHgwKSA+ICh5MSAtIHkwKSkge1xuICAgICAgdmFyIHhrID0gdmFsdWUgPyAoeDAgKiB2YWx1ZVJpZ2h0ICsgeDEgKiB2YWx1ZUxlZnQpIC8gdmFsdWUgOiB4MTtcbiAgICAgIHBhcnRpdGlvbihpLCBrLCB2YWx1ZUxlZnQsIHgwLCB5MCwgeGssIHkxKTtcbiAgICAgIHBhcnRpdGlvbihrLCBqLCB2YWx1ZVJpZ2h0LCB4aywgeTAsIHgxLCB5MSk7XG4gICAgfSBlbHNlIHtcbiAgICAgIHZhciB5ayA9IHZhbHVlID8gKHkwICogdmFsdWVSaWdodCArIHkxICogdmFsdWVMZWZ0KSAvIHZhbHVlIDogeTE7XG4gICAgICBwYXJ0aXRpb24oaSwgaywgdmFsdWVMZWZ0LCB4MCwgeTAsIHgxLCB5ayk7XG4gICAgICBwYXJ0aXRpb24oaywgaiwgdmFsdWVSaWdodCwgeDAsIHlrLCB4MSwgeTEpO1xuICAgIH1cbiAgfVxufVxuIl0sIm1hcHBpbmdzIjoiQUFBQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOyIsInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///./node_modules/vega/node_modules/d3-hierarchy/src/treemap/binary.js\n");

/***/ }),

/***/ "./node_modules/vega/node_modules/d3-hierarchy/src/treemap/dice.js":
/*!*************************************************************************!*\
  !*** ./node_modules/vega/node_modules/d3-hierarchy/src/treemap/dice.js ***!
  \*************************************************************************/
/*! exports provided: default */
/***/ (function(module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony default export */ __webpack_exports__[\"default\"] = (function(parent, x0, y0, x1, y1) {\n  var nodes = parent.children,\n      node,\n      i = -1,\n      n = nodes.length,\n      k = parent.value && (x1 - x0) / parent.value;\n\n  while (++i < n) {\n    node = nodes[i], node.y0 = y0, node.y1 = y1;\n    node.x0 = x0, node.x1 = x0 += node.value * k;\n  }\n});\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvdmVnYS9ub2RlX21vZHVsZXMvZDMtaGllcmFyY2h5L3NyYy90cmVlbWFwL2RpY2UuanMuanMiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvdmVnYS9ub2RlX21vZHVsZXMvZDMtaGllcmFyY2h5L3NyYy90cmVlbWFwL2RpY2UuanM/MmI5NiJdLCJzb3VyY2VzQ29udGVudCI6WyJleHBvcnQgZGVmYXVsdCBmdW5jdGlvbihwYXJlbnQsIHgwLCB5MCwgeDEsIHkxKSB7XG4gIHZhciBub2RlcyA9IHBhcmVudC5jaGlsZHJlbixcbiAgICAgIG5vZGUsXG4gICAgICBpID0gLTEsXG4gICAgICBuID0gbm9kZXMubGVuZ3RoLFxuICAgICAgayA9IHBhcmVudC52YWx1ZSAmJiAoeDEgLSB4MCkgLyBwYXJlbnQudmFsdWU7XG5cbiAgd2hpbGUgKCsraSA8IG4pIHtcbiAgICBub2RlID0gbm9kZXNbaV0sIG5vZGUueTAgPSB5MCwgbm9kZS55MSA9IHkxO1xuICAgIG5vZGUueDAgPSB4MCwgbm9kZS54MSA9IHgwICs9IG5vZGUudmFsdWUgKiBrO1xuICB9XG59XG4iXSwibWFwcGluZ3MiOiJBQUFBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOyIsInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///./node_modules/vega/node_modules/d3-hierarchy/src/treemap/dice.js\n");

/***/ }),

/***/ "./node_modules/vega/node_modules/d3-hierarchy/src/treemap/index.js":
/*!**************************************************************************!*\
  !*** ./node_modules/vega/node_modules/d3-hierarchy/src/treemap/index.js ***!
  \**************************************************************************/
/*! exports provided: default */
/***/ (function(module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _round_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./round.js */ \"./node_modules/vega/node_modules/d3-hierarchy/src/treemap/round.js\");\n/* harmony import */ var _squarify_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./squarify.js */ \"./node_modules/vega/node_modules/d3-hierarchy/src/treemap/squarify.js\");\n/* harmony import */ var _accessors_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ../accessors.js */ \"./node_modules/vega/node_modules/d3-hierarchy/src/accessors.js\");\n/* harmony import */ var _constant_js__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ../constant.js */ \"./node_modules/vega/node_modules/d3-hierarchy/src/constant.js\");\n\n\n\n\n\n/* harmony default export */ __webpack_exports__[\"default\"] = (function() {\n  var tile = _squarify_js__WEBPACK_IMPORTED_MODULE_1__[\"default\"],\n      round = false,\n      dx = 1,\n      dy = 1,\n      paddingStack = [0],\n      paddingInner = _constant_js__WEBPACK_IMPORTED_MODULE_3__[\"constantZero\"],\n      paddingTop = _constant_js__WEBPACK_IMPORTED_MODULE_3__[\"constantZero\"],\n      paddingRight = _constant_js__WEBPACK_IMPORTED_MODULE_3__[\"constantZero\"],\n      paddingBottom = _constant_js__WEBPACK_IMPORTED_MODULE_3__[\"constantZero\"],\n      paddingLeft = _constant_js__WEBPACK_IMPORTED_MODULE_3__[\"constantZero\"];\n\n  function treemap(root) {\n    root.x0 =\n    root.y0 = 0;\n    root.x1 = dx;\n    root.y1 = dy;\n    root.eachBefore(positionNode);\n    paddingStack = [0];\n    if (round) root.eachBefore(_round_js__WEBPACK_IMPORTED_MODULE_0__[\"default\"]);\n    return root;\n  }\n\n  function positionNode(node) {\n    var p = paddingStack[node.depth],\n        x0 = node.x0 + p,\n        y0 = node.y0 + p,\n        x1 = node.x1 - p,\n        y1 = node.y1 - p;\n    if (x1 < x0) x0 = x1 = (x0 + x1) / 2;\n    if (y1 < y0) y0 = y1 = (y0 + y1) / 2;\n    node.x0 = x0;\n    node.y0 = y0;\n    node.x1 = x1;\n    node.y1 = y1;\n    if (node.children) {\n      p = paddingStack[node.depth + 1] = paddingInner(node) / 2;\n      x0 += paddingLeft(node) - p;\n      y0 += paddingTop(node) - p;\n      x1 -= paddingRight(node) - p;\n      y1 -= paddingBottom(node) - p;\n      if (x1 < x0) x0 = x1 = (x0 + x1) / 2;\n      if (y1 < y0) y0 = y1 = (y0 + y1) / 2;\n      tile(node, x0, y0, x1, y1);\n    }\n  }\n\n  treemap.round = function(x) {\n    return arguments.length ? (round = !!x, treemap) : round;\n  };\n\n  treemap.size = function(x) {\n    return arguments.length ? (dx = +x[0], dy = +x[1], treemap) : [dx, dy];\n  };\n\n  treemap.tile = function(x) {\n    return arguments.length ? (tile = Object(_accessors_js__WEBPACK_IMPORTED_MODULE_2__[\"required\"])(x), treemap) : tile;\n  };\n\n  treemap.padding = function(x) {\n    return arguments.length ? treemap.paddingInner(x).paddingOuter(x) : treemap.paddingInner();\n  };\n\n  treemap.paddingInner = function(x) {\n    return arguments.length ? (paddingInner = typeof x === \"function\" ? x : Object(_constant_js__WEBPACK_IMPORTED_MODULE_3__[\"default\"])(+x), treemap) : paddingInner;\n  };\n\n  treemap.paddingOuter = function(x) {\n    return arguments.length ? treemap.paddingTop(x).paddingRight(x).paddingBottom(x).paddingLeft(x) : treemap.paddingTop();\n  };\n\n  treemap.paddingTop = function(x) {\n    return arguments.length ? (paddingTop = typeof x === \"function\" ? x : Object(_constant_js__WEBPACK_IMPORTED_MODULE_3__[\"default\"])(+x), treemap) : paddingTop;\n  };\n\n  treemap.paddingRight = function(x) {\n    return arguments.length ? (paddingRight = typeof x === \"function\" ? x : Object(_constant_js__WEBPACK_IMPORTED_MODULE_3__[\"default\"])(+x), treemap) : paddingRight;\n  };\n\n  treemap.paddingBottom = function(x) {\n    return arguments.length ? (paddingBottom = typeof x === \"function\" ? x : Object(_constant_js__WEBPACK_IMPORTED_MODULE_3__[\"default\"])(+x), treemap) : paddingBottom;\n  };\n\n  treemap.paddingLeft = function(x) {\n    return arguments.length ? (paddingLeft = typeof x === \"function\" ? x : Object(_constant_js__WEBPACK_IMPORTED_MODULE_3__[\"default\"])(+x), treemap) : paddingLeft;\n  };\n\n  return treemap;\n});\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,[encoded data, 4896 characters]\n//# sourceURL=webpack-internal:///./node_modules/vega/node_modules/d3-hierarchy/src/treemap/index.js\n");

/***/ }),

/***/ "./node_modules/vega/node_modules/d3-hierarchy/src/treemap/resquarify.js":
/*!*******************************************************************************!*\
  !*** ./node_modules/vega/node_modules/d3-hierarchy/src/treemap/resquarify.js ***!
  \*******************************************************************************/
/*! exports provided: default */
/***/ (function(module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _dice_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./dice.js */ \"./node_modules/vega/node_modules/d3-hierarchy/src/treemap/dice.js\");\n/* harmony import */ var _slice_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./slice.js */ \"./node_modules/vega/node_modules/d3-hierarchy/src/treemap/slice.js\");\n/* harmony import */ var _squarify_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./squarify.js */ \"./node_modules/vega/node_modules/d3-hierarchy/src/treemap/squarify.js\");\n\n\n\n\n/* harmony default export */ __webpack_exports__[\"default\"] = ((function custom(ratio) {\n\n  function resquarify(parent, x0, y0, x1, y1) {\n    if ((rows = parent._squarify) && (rows.ratio === ratio)) {\n      var rows,\n          row,\n          nodes,\n          i,\n          j = -1,\n          n,\n          m = rows.length,\n          value = parent.value;\n\n      while (++j < m) {\n        row = rows[j], nodes = row.children;\n        for (i = row.value = 0, n = nodes.length; i < n; ++i) row.value += nodes[i].value;\n        if (row.dice) Object(_dice_js__WEBPACK_IMPORTED_MODULE_0__[\"default\"])(row, x0, y0, x1, value ? y0 += (y1 - y0) * row.value / value : y1);\n        else Object(_slice_js__WEBPACK_IMPORTED_MODULE_1__[\"default\"])(row, x0, y0, value ? x0 += (x1 - x0) * row.value / value : x1, y1);\n        value -= row.value;\n      }\n    } else {\n      parent._squarify = rows = Object(_squarify_js__WEBPACK_IMPORTED_MODULE_2__[\"squarifyRatio\"])(ratio, parent, x0, y0, x1, y1);\n      rows.ratio = ratio;\n    }\n  }\n\n  resquarify.ratio = function(x) {\n    return custom((x = +x) > 1 ? x : 1);\n  };\n\n  return resquarify;\n})(_squarify_js__WEBPACK_IMPORTED_MODULE_2__[\"phi\"]));\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvdmVnYS9ub2RlX21vZHVsZXMvZDMtaGllcmFyY2h5L3NyYy90cmVlbWFwL3Jlc3F1YXJpZnkuanMuanMiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvdmVnYS9ub2RlX21vZHVsZXMvZDMtaGllcmFyY2h5L3NyYy90cmVlbWFwL3Jlc3F1YXJpZnkuanM/OWVlOCJdLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgdHJlZW1hcERpY2UgZnJvbSBcIi4vZGljZS5qc1wiO1xuaW1wb3J0IHRyZWVtYXBTbGljZSBmcm9tIFwiLi9zbGljZS5qc1wiO1xuaW1wb3J0IHtwaGksIHNxdWFyaWZ5UmF0aW99IGZyb20gXCIuL3NxdWFyaWZ5LmpzXCI7XG5cbmV4cG9ydCBkZWZhdWx0IChmdW5jdGlvbiBjdXN0b20ocmF0aW8pIHtcblxuICBmdW5jdGlvbiByZXNxdWFyaWZ5KHBhcmVudCwgeDAsIHkwLCB4MSwgeTEpIHtcbiAgICBpZiAoKHJvd3MgPSBwYXJlbnQuX3NxdWFyaWZ5KSAmJiAocm93cy5yYXRpbyA9PT0gcmF0aW8pKSB7XG4gICAgICB2YXIgcm93cyxcbiAgICAgICAgICByb3csXG4gICAgICAgICAgbm9kZXMsXG4gICAgICAgICAgaSxcbiAgICAgICAgICBqID0gLTEsXG4gICAgICAgICAgbixcbiAgICAgICAgICBtID0gcm93cy5sZW5ndGgsXG4gICAgICAgICAgdmFsdWUgPSBwYXJlbnQudmFsdWU7XG5cbiAgICAgIHdoaWxlICgrK2ogPCBtKSB7XG4gICAgICAgIHJvdyA9IHJvd3Nbal0sIG5vZGVzID0gcm93LmNoaWxkcmVuO1xuICAgICAgICBmb3IgKGkgPSByb3cudmFsdWUgPSAwLCBuID0gbm9kZXMubGVuZ3RoOyBpIDwgbjsgKytpKSByb3cudmFsdWUgKz0gbm9kZXNbaV0udmFsdWU7XG4gICAgICAgIGlmIChyb3cuZGljZSkgdHJlZW1hcERpY2Uocm93LCB4MCwgeTAsIHgxLCB2YWx1ZSA/IHkwICs9ICh5MSAtIHkwKSAqIHJvdy52YWx1ZSAvIHZhbHVlIDogeTEpO1xuICAgICAgICBlbHNlIHRyZWVtYXBTbGljZShyb3csIHgwLCB5MCwgdmFsdWUgPyB4MCArPSAoeDEgLSB4MCkgKiByb3cudmFsdWUgLyB2YWx1ZSA6IHgxLCB5MSk7XG4gICAgICAgIHZhbHVlIC09IHJvdy52YWx1ZTtcbiAgICAgIH1cbiAgICB9IGVsc2Uge1xuICAgICAgcGFyZW50Ll9zcXVhcmlmeSA9IHJvd3MgPSBzcXVhcmlmeVJhdGlvKHJhdGlvLCBwYXJlbnQsIHgwLCB5MCwgeDEsIHkxKTtcbiAgICAgIHJvd3MucmF0aW8gPSByYXRpbztcbiAgICB9XG4gIH1cblxuICByZXNxdWFyaWZ5LnJhdGlvID0gZnVuY3Rpb24oeCkge1xuICAgIHJldHVybiBjdXN0b20oKHggPSAreCkgPiAxID8geCA6IDEpO1xuICB9O1xuXG4gIHJldHVybiByZXNxdWFyaWZ5O1xufSkocGhpKTtcbiJdLCJtYXBwaW5ncyI6IkFBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7Iiwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///./node_modules/vega/node_modules/d3-hierarchy/src/treemap/resquarify.js\n");

/***/ }),

/***/ "./node_modules/vega/node_modules/d3-hierarchy/src/treemap/round.js":
/*!**************************************************************************!*\
  !*** ./node_modules/vega/node_modules/d3-hierarchy/src/treemap/round.js ***!
  \**************************************************************************/
/*! exports provided: default */
/***/ (function(module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony default export */ __webpack_exports__[\"default\"] = (function(node) {\n  node.x0 = Math.round(node.x0);\n  node.y0 = Math.round(node.y0);\n  node.x1 = Math.round(node.x1);\n  node.y1 = Math.round(node.y1);\n});\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvdmVnYS9ub2RlX21vZHVsZXMvZDMtaGllcmFyY2h5L3NyYy90cmVlbWFwL3JvdW5kLmpzLmpzIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL3ZlZ2Evbm9kZV9tb2R1bGVzL2QzLWhpZXJhcmNoeS9zcmMvdHJlZW1hcC9yb3VuZC5qcz9mMDVjIl0sInNvdXJjZXNDb250ZW50IjpbImV4cG9ydCBkZWZhdWx0IGZ1bmN0aW9uKG5vZGUpIHtcbiAgbm9kZS54MCA9IE1hdGgucm91bmQobm9kZS54MCk7XG4gIG5vZGUueTAgPSBNYXRoLnJvdW5kKG5vZGUueTApO1xuICBub2RlLngxID0gTWF0aC5yb3VuZChub2RlLngxKTtcbiAgbm9kZS55MSA9IE1hdGgucm91bmQobm9kZS55MSk7XG59XG4iXSwibWFwcGluZ3MiOiJBQUFBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOyIsInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///./node_modules/vega/node_modules/d3-hierarchy/src/treemap/round.js\n");

/***/ }),

/***/ "./node_modules/vega/node_modules/d3-hierarchy/src/treemap/slice.js":
/*!**************************************************************************!*\
  !*** ./node_modules/vega/node_modules/d3-hierarchy/src/treemap/slice.js ***!
  \**************************************************************************/
/*! exports provided: default */
/***/ (function(module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony default export */ __webpack_exports__[\"default\"] = (function(parent, x0, y0, x1, y1) {\n  var nodes = parent.children,\n      node,\n      i = -1,\n      n = nodes.length,\n      k = parent.value && (y1 - y0) / parent.value;\n\n  while (++i < n) {\n    node = nodes[i], node.x0 = x0, node.x1 = x1;\n    node.y0 = y0, node.y1 = y0 += node.value * k;\n  }\n});\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvdmVnYS9ub2RlX21vZHVsZXMvZDMtaGllcmFyY2h5L3NyYy90cmVlbWFwL3NsaWNlLmpzLmpzIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL3ZlZ2Evbm9kZV9tb2R1bGVzL2QzLWhpZXJhcmNoeS9zcmMvdHJlZW1hcC9zbGljZS5qcz82OTg5Il0sInNvdXJjZXNDb250ZW50IjpbImV4cG9ydCBkZWZhdWx0IGZ1bmN0aW9uKHBhcmVudCwgeDAsIHkwLCB4MSwgeTEpIHtcbiAgdmFyIG5vZGVzID0gcGFyZW50LmNoaWxkcmVuLFxuICAgICAgbm9kZSxcbiAgICAgIGkgPSAtMSxcbiAgICAgIG4gPSBub2Rlcy5sZW5ndGgsXG4gICAgICBrID0gcGFyZW50LnZhbHVlICYmICh5MSAtIHkwKSAvIHBhcmVudC52YWx1ZTtcblxuICB3aGlsZSAoKytpIDwgbikge1xuICAgIG5vZGUgPSBub2Rlc1tpXSwgbm9kZS54MCA9IHgwLCBub2RlLngxID0geDE7XG4gICAgbm9kZS55MCA9IHkwLCBub2RlLnkxID0geTAgKz0gbm9kZS52YWx1ZSAqIGs7XG4gIH1cbn1cbiJdLCJtYXBwaW5ncyI6IkFBQUE7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7Iiwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///./node_modules/vega/node_modules/d3-hierarchy/src/treemap/slice.js\n");

/***/ }),

/***/ "./node_modules/vega/node_modules/d3-hierarchy/src/treemap/sliceDice.js":
/*!******************************************************************************!*\
  !*** ./node_modules/vega/node_modules/d3-hierarchy/src/treemap/sliceDice.js ***!
  \******************************************************************************/
/*! exports provided: default */
/***/ (function(module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _dice_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./dice.js */ \"./node_modules/vega/node_modules/d3-hierarchy/src/treemap/dice.js\");\n/* harmony import */ var _slice_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./slice.js */ \"./node_modules/vega/node_modules/d3-hierarchy/src/treemap/slice.js\");\n\n\n\n/* harmony default export */ __webpack_exports__[\"default\"] = (function(parent, x0, y0, x1, y1) {\n  (parent.depth & 1 ? _slice_js__WEBPACK_IMPORTED_MODULE_1__[\"default\"] : _dice_js__WEBPACK_IMPORTED_MODULE_0__[\"default\"])(parent, x0, y0, x1, y1);\n});\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvdmVnYS9ub2RlX21vZHVsZXMvZDMtaGllcmFyY2h5L3NyYy90cmVlbWFwL3NsaWNlRGljZS5qcy5qcyIsInNvdXJjZXMiOlsid2VicGFjazovLy8uL25vZGVfbW9kdWxlcy92ZWdhL25vZGVfbW9kdWxlcy9kMy1oaWVyYXJjaHkvc3JjL3RyZWVtYXAvc2xpY2VEaWNlLmpzP2FhYTAiXSwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IGRpY2UgZnJvbSBcIi4vZGljZS5qc1wiO1xuaW1wb3J0IHNsaWNlIGZyb20gXCIuL3NsaWNlLmpzXCI7XG5cbmV4cG9ydCBkZWZhdWx0IGZ1bmN0aW9uKHBhcmVudCwgeDAsIHkwLCB4MSwgeTEpIHtcbiAgKHBhcmVudC5kZXB0aCAmIDEgPyBzbGljZSA6IGRpY2UpKHBhcmVudCwgeDAsIHkwLCB4MSwgeTEpO1xufVxuIl0sIm1hcHBpbmdzIjoiQUFBQTtBQUFBO0FBQUE7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7Iiwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///./node_modules/vega/node_modules/d3-hierarchy/src/treemap/sliceDice.js\n");

/***/ }),

/***/ "./node_modules/vega/node_modules/d3-hierarchy/src/treemap/squarify.js":
/*!*****************************************************************************!*\
  !*** ./node_modules/vega/node_modules/d3-hierarchy/src/treemap/squarify.js ***!
  \*****************************************************************************/
/*! exports provided: phi, squarifyRatio, default */
/***/ (function(module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"phi\", function() { return phi; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"squarifyRatio\", function() { return squarifyRatio; });\n/* harmony import */ var _dice_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./dice.js */ \"./node_modules/vega/node_modules/d3-hierarchy/src/treemap/dice.js\");\n/* harmony import */ var _slice_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./slice.js */ \"./node_modules/vega/node_modules/d3-hierarchy/src/treemap/slice.js\");\n\n\n\nvar phi = (1 + Math.sqrt(5)) / 2;\n\nfunction squarifyRatio(ratio, parent, x0, y0, x1, y1) {\n  var rows = [],\n      nodes = parent.children,\n      row,\n      nodeValue,\n      i0 = 0,\n      i1 = 0,\n      n = nodes.length,\n      dx, dy,\n      value = parent.value,\n      sumValue,\n      minValue,\n      maxValue,\n      newRatio,\n      minRatio,\n      alpha,\n      beta;\n\n  while (i0 < n) {\n    dx = x1 - x0, dy = y1 - y0;\n\n    // Find the next non-empty node.\n    do sumValue = nodes[i1++].value; while (!sumValue && i1 < n);\n    minValue = maxValue = sumValue;\n    alpha = Math.max(dy / dx, dx / dy) / (value * ratio);\n    beta = sumValue * sumValue * alpha;\n    minRatio = Math.max(maxValue / beta, beta / minValue);\n\n    // Keep adding nodes while the aspect ratio maintains or improves.\n    for (; i1 < n; ++i1) {\n      sumValue += nodeValue = nodes[i1].value;\n      if (nodeValue < minValue) minValue = nodeValue;\n      if (nodeValue > maxValue) maxValue = nodeValue;\n      beta = sumValue * sumValue * alpha;\n      newRatio = Math.max(maxValue / beta, beta / minValue);\n      if (newRatio > minRatio) { sumValue -= nodeValue; break; }\n      minRatio = newRatio;\n    }\n\n    // Position and record the row orientation.\n    rows.push(row = {value: sumValue, dice: dx < dy, children: nodes.slice(i0, i1)});\n    if (row.dice) Object(_dice_js__WEBPACK_IMPORTED_MODULE_0__[\"default\"])(row, x0, y0, x1, value ? y0 += dy * sumValue / value : y1);\n    else Object(_slice_js__WEBPACK_IMPORTED_MODULE_1__[\"default\"])(row, x0, y0, value ? x0 += dx * sumValue / value : x1, y1);\n    value -= sumValue, i0 = i1;\n  }\n\n  return rows;\n}\n\n/* harmony default export */ __webpack_exports__[\"default\"] = ((function custom(ratio) {\n\n  function squarify(parent, x0, y0, x1, y1) {\n    squarifyRatio(ratio, parent, x0, y0, x1, y1);\n  }\n\n  squarify.ratio = function(x) {\n    return custom((x = +x) > 1 ? x : 1);\n  };\n\n  return squarify;\n})(phi));\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvdmVnYS9ub2RlX21vZHVsZXMvZDMtaGllcmFyY2h5L3NyYy90cmVlbWFwL3NxdWFyaWZ5LmpzLmpzIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL3ZlZ2Evbm9kZV9tb2R1bGVzL2QzLWhpZXJhcmNoeS9zcmMvdHJlZW1hcC9zcXVhcmlmeS5qcz84NzcwIl0sInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB0cmVlbWFwRGljZSBmcm9tIFwiLi9kaWNlLmpzXCI7XG5pbXBvcnQgdHJlZW1hcFNsaWNlIGZyb20gXCIuL3NsaWNlLmpzXCI7XG5cbmV4cG9ydCB2YXIgcGhpID0gKDEgKyBNYXRoLnNxcnQoNSkpIC8gMjtcblxuZXhwb3J0IGZ1bmN0aW9uIHNxdWFyaWZ5UmF0aW8ocmF0aW8sIHBhcmVudCwgeDAsIHkwLCB4MSwgeTEpIHtcbiAgdmFyIHJvd3MgPSBbXSxcbiAgICAgIG5vZGVzID0gcGFyZW50LmNoaWxkcmVuLFxuICAgICAgcm93LFxuICAgICAgbm9kZVZhbHVlLFxuICAgICAgaTAgPSAwLFxuICAgICAgaTEgPSAwLFxuICAgICAgbiA9IG5vZGVzLmxlbmd0aCxcbiAgICAgIGR4LCBkeSxcbiAgICAgIHZhbHVlID0gcGFyZW50LnZhbHVlLFxuICAgICAgc3VtVmFsdWUsXG4gICAgICBtaW5WYWx1ZSxcbiAgICAgIG1heFZhbHVlLFxuICAgICAgbmV3UmF0aW8sXG4gICAgICBtaW5SYXRpbyxcbiAgICAgIGFscGhhLFxuICAgICAgYmV0YTtcblxuICB3aGlsZSAoaTAgPCBuKSB7XG4gICAgZHggPSB4MSAtIHgwLCBkeSA9IHkxIC0geTA7XG5cbiAgICAvLyBGaW5kIHRoZSBuZXh0IG5vbi1lbXB0eSBub2RlLlxuICAgIGRvIHN1bVZhbHVlID0gbm9kZXNbaTErK10udmFsdWU7IHdoaWxlICghc3VtVmFsdWUgJiYgaTEgPCBuKTtcbiAgICBtaW5WYWx1ZSA9IG1heFZhbHVlID0gc3VtVmFsdWU7XG4gICAgYWxwaGEgPSBNYXRoLm1heChkeSAvIGR4LCBkeCAvIGR5KSAvICh2YWx1ZSAqIHJhdGlvKTtcbiAgICBiZXRhID0gc3VtVmFsdWUgKiBzdW1WYWx1ZSAqIGFscGhhO1xuICAgIG1pblJhdGlvID0gTWF0aC5tYXgobWF4VmFsdWUgLyBiZXRhLCBiZXRhIC8gbWluVmFsdWUpO1xuXG4gICAgLy8gS2VlcCBhZGRpbmcgbm9kZXMgd2hpbGUgdGhlIGFzcGVjdCByYXRpbyBtYWludGFpbnMgb3IgaW1wcm92ZXMuXG4gICAgZm9yICg7IGkxIDwgbjsgKytpMSkge1xuICAgICAgc3VtVmFsdWUgKz0gbm9kZVZhbHVlID0gbm9kZXNbaTFdLnZhbHVlO1xuICAgICAgaWYgKG5vZGVWYWx1ZSA8IG1pblZhbHVlKSBtaW5WYWx1ZSA9IG5vZGVWYWx1ZTtcbiAgICAgIGlmIChub2RlVmFsdWUgPiBtYXhWYWx1ZSkgbWF4VmFsdWUgPSBub2RlVmFsdWU7XG4gICAgICBiZXRhID0gc3VtVmFsdWUgKiBzdW1WYWx1ZSAqIGFscGhhO1xuICAgICAgbmV3UmF0aW8gPSBNYXRoLm1heChtYXhWYWx1ZSAvIGJldGEsIGJldGEgLyBtaW5WYWx1ZSk7XG4gICAgICBpZiAobmV3UmF0aW8gPiBtaW5SYXRpbykgeyBzdW1WYWx1ZSAtPSBub2RlVmFsdWU7IGJyZWFrOyB9XG4gICAgICBtaW5SYXRpbyA9IG5ld1JhdGlvO1xuICAgIH1cblxuICAgIC8vIFBvc2l0aW9uIGFuZCByZWNvcmQgdGhlIHJvdyBvcmllbnRhdGlvbi5cbiAgICByb3dzLnB1c2gocm93ID0ge3ZhbHVlOiBzdW1WYWx1ZSwgZGljZTogZHggPCBkeSwgY2hpbGRyZW46IG5vZGVzLnNsaWNlKGkwLCBpMSl9KTtcbiAgICBpZiAocm93LmRpY2UpIHRyZWVtYXBEaWNlKHJvdywgeDAsIHkwLCB4MSwgdmFsdWUgPyB5MCArPSBkeSAqIHN1bVZhbHVlIC8gdmFsdWUgOiB5MSk7XG4gICAgZWxzZSB0cmVlbWFwU2xpY2Uocm93LCB4MCwgeTAsIHZhbHVlID8geDAgKz0gZHggKiBzdW1WYWx1ZSAvIHZhbHVlIDogeDEsIHkxKTtcbiAgICB2YWx1ZSAtPSBzdW1WYWx1ZSwgaTAgPSBpMTtcbiAgfVxuXG4gIHJldHVybiByb3dzO1xufVxuXG5leHBvcnQgZGVmYXVsdCAoZnVuY3Rpb24gY3VzdG9tKHJhdGlvKSB7XG5cbiAgZnVuY3Rpb24gc3F1YXJpZnkocGFyZW50LCB4MCwgeTAsIHgxLCB5MSkge1xuICAgIHNxdWFyaWZ5UmF0aW8ocmF0aW8sIHBhcmVudCwgeDAsIHkwLCB4MSwgeTEpO1xuICB9XG5cbiAgc3F1YXJpZnkucmF0aW8gPSBmdW5jdGlvbih4KSB7XG4gICAgcmV0dXJuIGN1c3RvbSgoeCA9ICt4KSA+IDEgPyB4IDogMSk7XG4gIH07XG5cbiAgcmV0dXJuIHNxdWFyaWZ5O1xufSkocGhpKTtcbiJdLCJtYXBwaW5ncyI6IkFBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTsiLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///./node_modules/vega/node_modules/d3-hierarchy/src/treemap/squarify.js\n");

/***/ }),

/***/ "./node_modules/vega/node_modules/d3-interpolate/src/array.js":
/*!********************************************************************!*\
  !*** ./node_modules/vega/node_modules/d3-interpolate/src/array.js ***!
  \********************************************************************/
/*! exports provided: default, genericArray */
/***/ (function(module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"genericArray\", function() { return genericArray; });\n/* harmony import */ var _value_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./value.js */ \"./node_modules/vega/node_modules/d3-interpolate/src/value.js\");\n/* harmony import */ var _numberArray_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./numberArray.js */ \"./node_modules/vega/node_modules/d3-interpolate/src/numberArray.js\");\n\n\n\n/* harmony default export */ __webpack_exports__[\"default\"] = (function(a, b) {\n  return (Object(_numberArray_js__WEBPACK_IMPORTED_MODULE_1__[\"isNumberArray\"])(b) ? _numberArray_js__WEBPACK_IMPORTED_MODULE_1__[\"default\"] : genericArray)(a, b);\n});\n\nfunction genericArray(a, b) {\n  var nb = b ? b.length : 0,\n      na = a ? Math.min(nb, a.length) : 0,\n      x = new Array(na),\n      c = new Array(nb),\n      i;\n\n  for (i = 0; i < na; ++i) x[i] = Object(_value_js__WEBPACK_IMPORTED_MODULE_0__[\"default\"])(a[i], b[i]);\n  for (; i < nb; ++i) c[i] = b[i];\n\n  return function(t) {\n    for (i = 0; i < na; ++i) c[i] = x[i](t);\n    return c;\n  };\n}\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvdmVnYS9ub2RlX21vZHVsZXMvZDMtaW50ZXJwb2xhdGUvc3JjL2FycmF5LmpzLmpzIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL3ZlZ2Evbm9kZV9tb2R1bGVzL2QzLWludGVycG9sYXRlL3NyYy9hcnJheS5qcz84ZmMwIl0sInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB2YWx1ZSBmcm9tIFwiLi92YWx1ZS5qc1wiO1xuaW1wb3J0IG51bWJlckFycmF5LCB7aXNOdW1iZXJBcnJheX0gZnJvbSBcIi4vbnVtYmVyQXJyYXkuanNcIjtcblxuZXhwb3J0IGRlZmF1bHQgZnVuY3Rpb24oYSwgYikge1xuICByZXR1cm4gKGlzTnVtYmVyQXJyYXkoYikgPyBudW1iZXJBcnJheSA6IGdlbmVyaWNBcnJheSkoYSwgYik7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBnZW5lcmljQXJyYXkoYSwgYikge1xuICB2YXIgbmIgPSBiID8gYi5sZW5ndGggOiAwLFxuICAgICAgbmEgPSBhID8gTWF0aC5taW4obmIsIGEubGVuZ3RoKSA6IDAsXG4gICAgICB4ID0gbmV3IEFycmF5KG5hKSxcbiAgICAgIGMgPSBuZXcgQXJyYXkobmIpLFxuICAgICAgaTtcblxuICBmb3IgKGkgPSAwOyBpIDwgbmE7ICsraSkgeFtpXSA9IHZhbHVlKGFbaV0sIGJbaV0pO1xuICBmb3IgKDsgaSA8IG5iOyArK2kpIGNbaV0gPSBiW2ldO1xuXG4gIHJldHVybiBmdW5jdGlvbih0KSB7XG4gICAgZm9yIChpID0gMDsgaSA8IG5hOyArK2kpIGNbaV0gPSB4W2ldKHQpO1xuICAgIHJldHVybiBjO1xuICB9O1xufVxuIl0sIm1hcHBpbmdzIjoiQUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOyIsInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///./node_modules/vega/node_modules/d3-interpolate/src/array.js\n");

/***/ }),

/***/ "./node_modules/vega/node_modules/d3-interpolate/src/basis.js":
/*!********************************************************************!*\
  !*** ./node_modules/vega/node_modules/d3-interpolate/src/basis.js ***!
  \********************************************************************/
/*! exports provided: basis, default */
/***/ (function(module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"basis\", function() { return basis; });\nfunction basis(t1, v0, v1, v2, v3) {\n  var t2 = t1 * t1, t3 = t2 * t1;\n  return ((1 - 3 * t1 + 3 * t2 - t3) * v0\n      + (4 - 6 * t2 + 3 * t3) * v1\n      + (1 + 3 * t1 + 3 * t2 - 3 * t3) * v2\n      + t3 * v3) / 6;\n}\n\n/* harmony default export */ __webpack_exports__[\"default\"] = (function(values) {\n  var n = values.length - 1;\n  return function(t) {\n    var i = t <= 0 ? (t = 0) : t >= 1 ? (t = 1, n - 1) : Math.floor(t * n),\n        v1 = values[i],\n        v2 = values[i + 1],\n        v0 = i > 0 ? values[i - 1] : 2 * v1 - v2,\n        v3 = i < n - 1 ? values[i + 2] : 2 * v2 - v1;\n    return basis((t - i / n) * n, v0, v1, v2, v3);\n  };\n});\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvdmVnYS9ub2RlX21vZHVsZXMvZDMtaW50ZXJwb2xhdGUvc3JjL2Jhc2lzLmpzLmpzIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL3ZlZ2Evbm9kZV9tb2R1bGVzL2QzLWludGVycG9sYXRlL3NyYy9iYXNpcy5qcz9mNmI4Il0sInNvdXJjZXNDb250ZW50IjpbImV4cG9ydCBmdW5jdGlvbiBiYXNpcyh0MSwgdjAsIHYxLCB2MiwgdjMpIHtcbiAgdmFyIHQyID0gdDEgKiB0MSwgdDMgPSB0MiAqIHQxO1xuICByZXR1cm4gKCgxIC0gMyAqIHQxICsgMyAqIHQyIC0gdDMpICogdjBcbiAgICAgICsgKDQgLSA2ICogdDIgKyAzICogdDMpICogdjFcbiAgICAgICsgKDEgKyAzICogdDEgKyAzICogdDIgLSAzICogdDMpICogdjJcbiAgICAgICsgdDMgKiB2MykgLyA2O1xufVxuXG5leHBvcnQgZGVmYXVsdCBmdW5jdGlvbih2YWx1ZXMpIHtcbiAgdmFyIG4gPSB2YWx1ZXMubGVuZ3RoIC0gMTtcbiAgcmV0dXJuIGZ1bmN0aW9uKHQpIHtcbiAgICB2YXIgaSA9IHQgPD0gMCA/ICh0ID0gMCkgOiB0ID49IDEgPyAodCA9IDEsIG4gLSAxKSA6IE1hdGguZmxvb3IodCAqIG4pLFxuICAgICAgICB2MSA9IHZhbHVlc1tpXSxcbiAgICAgICAgdjIgPSB2YWx1ZXNbaSArIDFdLFxuICAgICAgICB2MCA9IGkgPiAwID8gdmFsdWVzW2kgLSAxXSA6IDIgKiB2MSAtIHYyLFxuICAgICAgICB2MyA9IGkgPCBuIC0gMSA/IHZhbHVlc1tpICsgMl0gOiAyICogdjIgLSB2MTtcbiAgICByZXR1cm4gYmFzaXMoKHQgLSBpIC8gbikgKiBuLCB2MCwgdjEsIHYyLCB2Myk7XG4gIH07XG59XG4iXSwibWFwcGluZ3MiOiJBQUFBO0FBQUE7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTsiLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///./node_modules/vega/node_modules/d3-interpolate/src/basis.js\n");

/***/ }),

/***/ "./node_modules/vega/node_modules/d3-interpolate/src/basisClosed.js":
/*!**************************************************************************!*\
  !*** ./node_modules/vega/node_modules/d3-interpolate/src/basisClosed.js ***!
  \**************************************************************************/
/*! exports provided: default */
/***/ (function(module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _basis_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./basis.js */ \"./node_modules/vega/node_modules/d3-interpolate/src/basis.js\");\n\n\n/* harmony default export */ __webpack_exports__[\"default\"] = (function(values) {\n  var n = values.length;\n  return function(t) {\n    var i = Math.floor(((t %= 1) < 0 ? ++t : t) * n),\n        v0 = values[(i + n - 1) % n],\n        v1 = values[i % n],\n        v2 = values[(i + 1) % n],\n        v3 = values[(i + 2) % n];\n    return Object(_basis_js__WEBPACK_IMPORTED_MODULE_0__[\"basis\"])((t - i / n) * n, v0, v1, v2, v3);\n  };\n});\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvdmVnYS9ub2RlX21vZHVsZXMvZDMtaW50ZXJwb2xhdGUvc3JjL2Jhc2lzQ2xvc2VkLmpzLmpzIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL3ZlZ2Evbm9kZV9tb2R1bGVzL2QzLWludGVycG9sYXRlL3NyYy9iYXNpc0Nsb3NlZC5qcz80OGFmIl0sInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7YmFzaXN9IGZyb20gXCIuL2Jhc2lzLmpzXCI7XG5cbmV4cG9ydCBkZWZhdWx0IGZ1bmN0aW9uKHZhbHVlcykge1xuICB2YXIgbiA9IHZhbHVlcy5sZW5ndGg7XG4gIHJldHVybiBmdW5jdGlvbih0KSB7XG4gICAgdmFyIGkgPSBNYXRoLmZsb29yKCgodCAlPSAxKSA8IDAgPyArK3QgOiB0KSAqIG4pLFxuICAgICAgICB2MCA9IHZhbHVlc1soaSArIG4gLSAxKSAlIG5dLFxuICAgICAgICB2MSA9IHZhbHVlc1tpICUgbl0sXG4gICAgICAgIHYyID0gdmFsdWVzWyhpICsgMSkgJSBuXSxcbiAgICAgICAgdjMgPSB2YWx1ZXNbKGkgKyAyKSAlIG5dO1xuICAgIHJldHVybiBiYXNpcygodCAtIGkgLyBuKSAqIG4sIHYwLCB2MSwgdjIsIHYzKTtcbiAgfTtcbn1cbiJdLCJtYXBwaW5ncyI6IkFBQUE7QUFBQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOyIsInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///./node_modules/vega/node_modules/d3-interpolate/src/basisClosed.js\n");

/***/ }),

/***/ "./node_modules/vega/node_modules/d3-interpolate/src/color.js":
/*!********************************************************************!*\
  !*** ./node_modules/vega/node_modules/d3-interpolate/src/color.js ***!
  \********************************************************************/
/*! exports provided: hue, gamma, default */
/***/ (function(module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"hue\", function() { return hue; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"gamma\", function() { return gamma; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"default\", function() { return nogamma; });\n/* harmony import */ var _constant_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./constant.js */ \"./node_modules/vega/node_modules/d3-interpolate/src/constant.js\");\n\n\nfunction linear(a, d) {\n  return function(t) {\n    return a + t * d;\n  };\n}\n\nfunction exponential(a, b, y) {\n  return a = Math.pow(a, y), b = Math.pow(b, y) - a, y = 1 / y, function(t) {\n    return Math.pow(a + t * b, y);\n  };\n}\n\nfunction hue(a, b) {\n  var d = b - a;\n  return d ? linear(a, d > 180 || d < -180 ? d - 360 * Math.round(d / 360) : d) : Object(_constant_js__WEBPACK_IMPORTED_MODULE_0__[\"default\"])(isNaN(a) ? b : a);\n}\n\nfunction gamma(y) {\n  return (y = +y) === 1 ? nogamma : function(a, b) {\n    return b - a ? exponential(a, b, y) : Object(_constant_js__WEBPACK_IMPORTED_MODULE_0__[\"default\"])(isNaN(a) ? b : a);\n  };\n}\n\nfunction nogamma(a, b) {\n  var d = b - a;\n  return d ? linear(a, d) : Object(_constant_js__WEBPACK_IMPORTED_MODULE_0__[\"default\"])(isNaN(a) ? b : a);\n}\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvdmVnYS9ub2RlX21vZHVsZXMvZDMtaW50ZXJwb2xhdGUvc3JjL2NvbG9yLmpzLmpzIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL3ZlZ2Evbm9kZV9tb2R1bGVzL2QzLWludGVycG9sYXRlL3NyYy9jb2xvci5qcz8xNGFiIl0sInNvdXJjZXNDb250ZW50IjpbImltcG9ydCBjb25zdGFudCBmcm9tIFwiLi9jb25zdGFudC5qc1wiO1xuXG5mdW5jdGlvbiBsaW5lYXIoYSwgZCkge1xuICByZXR1cm4gZnVuY3Rpb24odCkge1xuICAgIHJldHVybiBhICsgdCAqIGQ7XG4gIH07XG59XG5cbmZ1bmN0aW9uIGV4cG9uZW50aWFsKGEsIGIsIHkpIHtcbiAgcmV0dXJuIGEgPSBNYXRoLnBvdyhhLCB5KSwgYiA9IE1hdGgucG93KGIsIHkpIC0gYSwgeSA9IDEgLyB5LCBmdW5jdGlvbih0KSB7XG4gICAgcmV0dXJuIE1hdGgucG93KGEgKyB0ICogYiwgeSk7XG4gIH07XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBodWUoYSwgYikge1xuICB2YXIgZCA9IGIgLSBhO1xuICByZXR1cm4gZCA/IGxpbmVhcihhLCBkID4gMTgwIHx8IGQgPCAtMTgwID8gZCAtIDM2MCAqIE1hdGgucm91bmQoZCAvIDM2MCkgOiBkKSA6IGNvbnN0YW50KGlzTmFOKGEpID8gYiA6IGEpO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gZ2FtbWEoeSkge1xuICByZXR1cm4gKHkgPSAreSkgPT09IDEgPyBub2dhbW1hIDogZnVuY3Rpb24oYSwgYikge1xuICAgIHJldHVybiBiIC0gYSA/IGV4cG9uZW50aWFsKGEsIGIsIHkpIDogY29uc3RhbnQoaXNOYU4oYSkgPyBiIDogYSk7XG4gIH07XG59XG5cbmV4cG9ydCBkZWZhdWx0IGZ1bmN0aW9uIG5vZ2FtbWEoYSwgYikge1xuICB2YXIgZCA9IGIgLSBhO1xuICByZXR1cm4gZCA/IGxpbmVhcihhLCBkKSA6IGNvbnN0YW50KGlzTmFOKGEpID8gYiA6IGEpO1xufVxuIl0sIm1hcHBpbmdzIjoiQUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTsiLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///./node_modules/vega/node_modules/d3-interpolate/src/color.js\n");

/***/ }),

/***/ "./node_modules/vega/node_modules/d3-interpolate/src/constant.js":
/*!***********************************************************************!*\
  !*** ./node_modules/vega/node_modules/d3-interpolate/src/constant.js ***!
  \***********************************************************************/
/*! exports provided: default */
/***/ (function(module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony default export */ __webpack_exports__[\"default\"] = (x => () => x);\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvdmVnYS9ub2RlX21vZHVsZXMvZDMtaW50ZXJwb2xhdGUvc3JjL2NvbnN0YW50LmpzLmpzIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL3ZlZ2Evbm9kZV9tb2R1bGVzL2QzLWludGVycG9sYXRlL3NyYy9jb25zdGFudC5qcz8wYTM4Il0sInNvdXJjZXNDb250ZW50IjpbImV4cG9ydCBkZWZhdWx0IHggPT4gKCkgPT4geDtcbiJdLCJtYXBwaW5ncyI6IkFBQUE7QUFBQTsiLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///./node_modules/vega/node_modules/d3-interpolate/src/constant.js\n");

/***/ }),

/***/ "./node_modules/vega/node_modules/d3-interpolate/src/cubehelix.js":
/*!************************************************************************!*\
  !*** ./node_modules/vega/node_modules/d3-interpolate/src/cubehelix.js ***!
  \************************************************************************/
/*! exports provided: default, cubehelixLong */
/***/ (function(module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"cubehelixLong\", function() { return cubehelixLong; });\n/* harmony import */ var d3_color__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! d3-color */ \"./node_modules/d3-color/src/index.js\");\n/* harmony import */ var _color_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./color.js */ \"./node_modules/vega/node_modules/d3-interpolate/src/color.js\");\n\n\n\nfunction cubehelix(hue) {\n  return (function cubehelixGamma(y) {\n    y = +y;\n\n    function cubehelix(start, end) {\n      var h = hue((start = Object(d3_color__WEBPACK_IMPORTED_MODULE_0__[\"cubehelix\"])(start)).h, (end = Object(d3_color__WEBPACK_IMPORTED_MODULE_0__[\"cubehelix\"])(end)).h),\n          s = Object(_color_js__WEBPACK_IMPORTED_MODULE_1__[\"default\"])(start.s, end.s),\n          l = Object(_color_js__WEBPACK_IMPORTED_MODULE_1__[\"default\"])(start.l, end.l),\n          opacity = Object(_color_js__WEBPACK_IMPORTED_MODULE_1__[\"default\"])(start.opacity, end.opacity);\n      return function(t) {\n        start.h = h(t);\n        start.s = s(t);\n        start.l = l(Math.pow(t, y));\n        start.opacity = opacity(t);\n        return start + \"\";\n      };\n    }\n\n    cubehelix.gamma = cubehelixGamma;\n\n    return cubehelix;\n  })(1);\n}\n\n/* harmony default export */ __webpack_exports__[\"default\"] = (cubehelix(_color_js__WEBPACK_IMPORTED_MODULE_1__[\"hue\"]));\nvar cubehelixLong = cubehelix(_color_js__WEBPACK_IMPORTED_MODULE_1__[\"default\"]);\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvdmVnYS9ub2RlX21vZHVsZXMvZDMtaW50ZXJwb2xhdGUvc3JjL2N1YmVoZWxpeC5qcy5qcyIsInNvdXJjZXMiOlsid2VicGFjazovLy8uL25vZGVfbW9kdWxlcy92ZWdhL25vZGVfbW9kdWxlcy9kMy1pbnRlcnBvbGF0ZS9zcmMvY3ViZWhlbGl4LmpzP2E1YjEiXSwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtjdWJlaGVsaXggYXMgY29sb3JDdWJlaGVsaXh9IGZyb20gXCJkMy1jb2xvclwiO1xuaW1wb3J0IGNvbG9yLCB7aHVlfSBmcm9tIFwiLi9jb2xvci5qc1wiO1xuXG5mdW5jdGlvbiBjdWJlaGVsaXgoaHVlKSB7XG4gIHJldHVybiAoZnVuY3Rpb24gY3ViZWhlbGl4R2FtbWEoeSkge1xuICAgIHkgPSAreTtcblxuICAgIGZ1bmN0aW9uIGN1YmVoZWxpeChzdGFydCwgZW5kKSB7XG4gICAgICB2YXIgaCA9IGh1ZSgoc3RhcnQgPSBjb2xvckN1YmVoZWxpeChzdGFydCkpLmgsIChlbmQgPSBjb2xvckN1YmVoZWxpeChlbmQpKS5oKSxcbiAgICAgICAgICBzID0gY29sb3Ioc3RhcnQucywgZW5kLnMpLFxuICAgICAgICAgIGwgPSBjb2xvcihzdGFydC5sLCBlbmQubCksXG4gICAgICAgICAgb3BhY2l0eSA9IGNvbG9yKHN0YXJ0Lm9wYWNpdHksIGVuZC5vcGFjaXR5KTtcbiAgICAgIHJldHVybiBmdW5jdGlvbih0KSB7XG4gICAgICAgIHN0YXJ0LmggPSBoKHQpO1xuICAgICAgICBzdGFydC5zID0gcyh0KTtcbiAgICAgICAgc3RhcnQubCA9IGwoTWF0aC5wb3codCwgeSkpO1xuICAgICAgICBzdGFydC5vcGFjaXR5ID0gb3BhY2l0eSh0KTtcbiAgICAgICAgcmV0dXJuIHN0YXJ0ICsgXCJcIjtcbiAgICAgIH07XG4gICAgfVxuXG4gICAgY3ViZWhlbGl4LmdhbW1hID0gY3ViZWhlbGl4R2FtbWE7XG5cbiAgICByZXR1cm4gY3ViZWhlbGl4O1xuICB9KSgxKTtcbn1cblxuZXhwb3J0IGRlZmF1bHQgY3ViZWhlbGl4KGh1ZSk7XG5leHBvcnQgdmFyIGN1YmVoZWxpeExvbmcgPSBjdWJlaGVsaXgoY29sb3IpO1xuIl0sIm1hcHBpbmdzIjoiQUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7Iiwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///./node_modules/vega/node_modules/d3-interpolate/src/cubehelix.js\n");

/***/ }),

/***/ "./node_modules/vega/node_modules/d3-interpolate/src/date.js":
/*!*******************************************************************!*\
  !*** ./node_modules/vega/node_modules/d3-interpolate/src/date.js ***!
  \*******************************************************************/
/*! exports provided: default */
/***/ (function(module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony default export */ __webpack_exports__[\"default\"] = (function(a, b) {\n  var d = new Date;\n  return a = +a, b = +b, function(t) {\n    return d.setTime(a * (1 - t) + b * t), d;\n  };\n});\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvdmVnYS9ub2RlX21vZHVsZXMvZDMtaW50ZXJwb2xhdGUvc3JjL2RhdGUuanMuanMiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvdmVnYS9ub2RlX21vZHVsZXMvZDMtaW50ZXJwb2xhdGUvc3JjL2RhdGUuanM/NjE1MyJdLCJzb3VyY2VzQ29udGVudCI6WyJleHBvcnQgZGVmYXVsdCBmdW5jdGlvbihhLCBiKSB7XG4gIHZhciBkID0gbmV3IERhdGU7XG4gIHJldHVybiBhID0gK2EsIGIgPSArYiwgZnVuY3Rpb24odCkge1xuICAgIHJldHVybiBkLnNldFRpbWUoYSAqICgxIC0gdCkgKyBiICogdCksIGQ7XG4gIH07XG59XG4iXSwibWFwcGluZ3MiOiJBQUFBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOyIsInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///./node_modules/vega/node_modules/d3-interpolate/src/date.js\n");

/***/ }),

/***/ "./node_modules/vega/node_modules/d3-interpolate/src/discrete.js":
/*!***********************************************************************!*\
  !*** ./node_modules/vega/node_modules/d3-interpolate/src/discrete.js ***!
  \***********************************************************************/
/*! exports provided: default */
/***/ (function(module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony default export */ __webpack_exports__[\"default\"] = (function(range) {\n  var n = range.length;\n  return function(t) {\n    return range[Math.max(0, Math.min(n - 1, Math.floor(t * n)))];\n  };\n});\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvdmVnYS9ub2RlX21vZHVsZXMvZDMtaW50ZXJwb2xhdGUvc3JjL2Rpc2NyZXRlLmpzLmpzIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL3ZlZ2Evbm9kZV9tb2R1bGVzL2QzLWludGVycG9sYXRlL3NyYy9kaXNjcmV0ZS5qcz80YjY3Il0sInNvdXJjZXNDb250ZW50IjpbImV4cG9ydCBkZWZhdWx0IGZ1bmN0aW9uKHJhbmdlKSB7XG4gIHZhciBuID0gcmFuZ2UubGVuZ3RoO1xuICByZXR1cm4gZnVuY3Rpb24odCkge1xuICAgIHJldHVybiByYW5nZVtNYXRoLm1heCgwLCBNYXRoLm1pbihuIC0gMSwgTWF0aC5mbG9vcih0ICogbikpKV07XG4gIH07XG59XG4iXSwibWFwcGluZ3MiOiJBQUFBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOyIsInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///./node_modules/vega/node_modules/d3-interpolate/src/discrete.js\n");

/***/ }),

/***/ "./node_modules/vega/node_modules/d3-interpolate/src/hcl.js":
/*!******************************************************************!*\
  !*** ./node_modules/vega/node_modules/d3-interpolate/src/hcl.js ***!
  \******************************************************************/
/*! exports provided: default, hclLong */
/***/ (function(module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"hclLong\", function() { return hclLong; });\n/* harmony import */ var d3_color__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! d3-color */ \"./node_modules/d3-color/src/index.js\");\n/* harmony import */ var _color_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./color.js */ \"./node_modules/vega/node_modules/d3-interpolate/src/color.js\");\n\n\n\nfunction hcl(hue) {\n  return function(start, end) {\n    var h = hue((start = Object(d3_color__WEBPACK_IMPORTED_MODULE_0__[\"hcl\"])(start)).h, (end = Object(d3_color__WEBPACK_IMPORTED_MODULE_0__[\"hcl\"])(end)).h),\n        c = Object(_color_js__WEBPACK_IMPORTED_MODULE_1__[\"default\"])(start.c, end.c),\n        l = Object(_color_js__WEBPACK_IMPORTED_MODULE_1__[\"default\"])(start.l, end.l),\n        opacity = Object(_color_js__WEBPACK_IMPORTED_MODULE_1__[\"default\"])(start.opacity, end.opacity);\n    return function(t) {\n      start.h = h(t);\n      start.c = c(t);\n      start.l = l(t);\n      start.opacity = opacity(t);\n      return start + \"\";\n    };\n  }\n}\n\n/* harmony default export */ __webpack_exports__[\"default\"] = (hcl(_color_js__WEBPACK_IMPORTED_MODULE_1__[\"hue\"]));\nvar hclLong = hcl(_color_js__WEBPACK_IMPORTED_MODULE_1__[\"default\"]);\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvdmVnYS9ub2RlX21vZHVsZXMvZDMtaW50ZXJwb2xhdGUvc3JjL2hjbC5qcy5qcyIsInNvdXJjZXMiOlsid2VicGFjazovLy8uL25vZGVfbW9kdWxlcy92ZWdhL25vZGVfbW9kdWxlcy9kMy1pbnRlcnBvbGF0ZS9zcmMvaGNsLmpzPzQzNWYiXSwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtoY2wgYXMgY29sb3JIY2x9IGZyb20gXCJkMy1jb2xvclwiO1xuaW1wb3J0IGNvbG9yLCB7aHVlfSBmcm9tIFwiLi9jb2xvci5qc1wiO1xuXG5mdW5jdGlvbiBoY2woaHVlKSB7XG4gIHJldHVybiBmdW5jdGlvbihzdGFydCwgZW5kKSB7XG4gICAgdmFyIGggPSBodWUoKHN0YXJ0ID0gY29sb3JIY2woc3RhcnQpKS5oLCAoZW5kID0gY29sb3JIY2woZW5kKSkuaCksXG4gICAgICAgIGMgPSBjb2xvcihzdGFydC5jLCBlbmQuYyksXG4gICAgICAgIGwgPSBjb2xvcihzdGFydC5sLCBlbmQubCksXG4gICAgICAgIG9wYWNpdHkgPSBjb2xvcihzdGFydC5vcGFjaXR5LCBlbmQub3BhY2l0eSk7XG4gICAgcmV0dXJuIGZ1bmN0aW9uKHQpIHtcbiAgICAgIHN0YXJ0LmggPSBoKHQpO1xuICAgICAgc3RhcnQuYyA9IGModCk7XG4gICAgICBzdGFydC5sID0gbCh0KTtcbiAgICAgIHN0YXJ0Lm9wYWNpdHkgPSBvcGFjaXR5KHQpO1xuICAgICAgcmV0dXJuIHN0YXJ0ICsgXCJcIjtcbiAgICB9O1xuICB9XG59XG5cbmV4cG9ydCBkZWZhdWx0IGhjbChodWUpO1xuZXhwb3J0IHZhciBoY2xMb25nID0gaGNsKGNvbG9yKTtcbiJdLCJtYXBwaW5ncyI6IkFBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7Iiwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///./node_modules/vega/node_modules/d3-interpolate/src/hcl.js\n");

/***/ }),

/***/ "./node_modules/vega/node_modules/d3-interpolate/src/hsl.js":
/*!******************************************************************!*\
  !*** ./node_modules/vega/node_modules/d3-interpolate/src/hsl.js ***!
  \******************************************************************/
/*! exports provided: default, hslLong */
/***/ (function(module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"hslLong\", function() { return hslLong; });\n/* harmony import */ var d3_color__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! d3-color */ \"./node_modules/d3-color/src/index.js\");\n/* harmony import */ var _color_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./color.js */ \"./node_modules/vega/node_modules/d3-interpolate/src/color.js\");\n\n\n\nfunction hsl(hue) {\n  return function(start, end) {\n    var h = hue((start = Object(d3_color__WEBPACK_IMPORTED_MODULE_0__[\"hsl\"])(start)).h, (end = Object(d3_color__WEBPACK_IMPORTED_MODULE_0__[\"hsl\"])(end)).h),\n        s = Object(_color_js__WEBPACK_IMPORTED_MODULE_1__[\"default\"])(start.s, end.s),\n        l = Object(_color_js__WEBPACK_IMPORTED_MODULE_1__[\"default\"])(start.l, end.l),\n        opacity = Object(_color_js__WEBPACK_IMPORTED_MODULE_1__[\"default\"])(start.opacity, end.opacity);\n    return function(t) {\n      start.h = h(t);\n      start.s = s(t);\n      start.l = l(t);\n      start.opacity = opacity(t);\n      return start + \"\";\n    };\n  }\n}\n\n/* harmony default export */ __webpack_exports__[\"default\"] = (hsl(_color_js__WEBPACK_IMPORTED_MODULE_1__[\"hue\"]));\nvar hslLong = hsl(_color_js__WEBPACK_IMPORTED_MODULE_1__[\"default\"]);\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvdmVnYS9ub2RlX21vZHVsZXMvZDMtaW50ZXJwb2xhdGUvc3JjL2hzbC5qcy5qcyIsInNvdXJjZXMiOlsid2VicGFjazovLy8uL25vZGVfbW9kdWxlcy92ZWdhL25vZGVfbW9kdWxlcy9kMy1pbnRlcnBvbGF0ZS9zcmMvaHNsLmpzPzY1ZTAiXSwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtoc2wgYXMgY29sb3JIc2x9IGZyb20gXCJkMy1jb2xvclwiO1xuaW1wb3J0IGNvbG9yLCB7aHVlfSBmcm9tIFwiLi9jb2xvci5qc1wiO1xuXG5mdW5jdGlvbiBoc2woaHVlKSB7XG4gIHJldHVybiBmdW5jdGlvbihzdGFydCwgZW5kKSB7XG4gICAgdmFyIGggPSBodWUoKHN0YXJ0ID0gY29sb3JIc2woc3RhcnQpKS5oLCAoZW5kID0gY29sb3JIc2woZW5kKSkuaCksXG4gICAgICAgIHMgPSBjb2xvcihzdGFydC5zLCBlbmQucyksXG4gICAgICAgIGwgPSBjb2xvcihzdGFydC5sLCBlbmQubCksXG4gICAgICAgIG9wYWNpdHkgPSBjb2xvcihzdGFydC5vcGFjaXR5LCBlbmQub3BhY2l0eSk7XG4gICAgcmV0dXJuIGZ1bmN0aW9uKHQpIHtcbiAgICAgIHN0YXJ0LmggPSBoKHQpO1xuICAgICAgc3RhcnQucyA9IHModCk7XG4gICAgICBzdGFydC5sID0gbCh0KTtcbiAgICAgIHN0YXJ0Lm9wYWNpdHkgPSBvcGFjaXR5KHQpO1xuICAgICAgcmV0dXJuIHN0YXJ0ICsgXCJcIjtcbiAgICB9O1xuICB9XG59XG5cbmV4cG9ydCBkZWZhdWx0IGhzbChodWUpO1xuZXhwb3J0IHZhciBoc2xMb25nID0gaHNsKGNvbG9yKTtcbiJdLCJtYXBwaW5ncyI6IkFBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7Iiwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///./node_modules/vega/node_modules/d3-interpolate/src/hsl.js\n");

/***/ }),

/***/ "./node_modules/vega/node_modules/d3-interpolate/src/hue.js":
/*!******************************************************************!*\
  !*** ./node_modules/vega/node_modules/d3-interpolate/src/hue.js ***!
  \******************************************************************/
/*! exports provided: default */
/***/ (function(module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _color_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./color.js */ \"./node_modules/vega/node_modules/d3-interpolate/src/color.js\");\n\n\n/* harmony default export */ __webpack_exports__[\"default\"] = (function(a, b) {\n  var i = Object(_color_js__WEBPACK_IMPORTED_MODULE_0__[\"hue\"])(+a, +b);\n  return function(t) {\n    var x = i(t);\n    return x - 360 * Math.floor(x / 360);\n  };\n});\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvdmVnYS9ub2RlX21vZHVsZXMvZDMtaW50ZXJwb2xhdGUvc3JjL2h1ZS5qcy5qcyIsInNvdXJjZXMiOlsid2VicGFjazovLy8uL25vZGVfbW9kdWxlcy92ZWdhL25vZGVfbW9kdWxlcy9kMy1pbnRlcnBvbGF0ZS9zcmMvaHVlLmpzPzIyMTIiXSwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtodWV9IGZyb20gXCIuL2NvbG9yLmpzXCI7XG5cbmV4cG9ydCBkZWZhdWx0IGZ1bmN0aW9uKGEsIGIpIHtcbiAgdmFyIGkgPSBodWUoK2EsICtiKTtcbiAgcmV0dXJuIGZ1bmN0aW9uKHQpIHtcbiAgICB2YXIgeCA9IGkodCk7XG4gICAgcmV0dXJuIHggLSAzNjAgKiBNYXRoLmZsb29yKHggLyAzNjApO1xuICB9O1xufVxuIl0sIm1hcHBpbmdzIjoiQUFBQTtBQUFBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOyIsInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///./node_modules/vega/node_modules/d3-interpolate/src/hue.js\n");

/***/ }),

/***/ "./node_modules/vega/node_modules/d3-interpolate/src/index.js":
/*!********************************************************************!*\
  !*** ./node_modules/vega/node_modules/d3-interpolate/src/index.js ***!
  \********************************************************************/
/*! exports provided: interpolate, interpolateArray, interpolateBasis, interpolateBasisClosed, interpolateDate, interpolateDiscrete, interpolateHue, interpolateNumber, interpolateNumberArray, interpolateObject, interpolateRound, interpolateString, interpolateTransformCss, interpolateTransformSvg, interpolateZoom, interpolateRgb, interpolateRgbBasis, interpolateRgbBasisClosed, interpolateHsl, interpolateHslLong, interpolateLab, interpolateHcl, interpolateHclLong, interpolateCubehelix, interpolateCubehelixLong, piecewise, quantize */
/***/ (function(module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _value_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./value.js */ \"./node_modules/vega/node_modules/d3-interpolate/src/value.js\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"interpolate\", function() { return _value_js__WEBPACK_IMPORTED_MODULE_0__[\"default\"]; });\n\n/* harmony import */ var _array_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./array.js */ \"./node_modules/vega/node_modules/d3-interpolate/src/array.js\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"interpolateArray\", function() { return _array_js__WEBPACK_IMPORTED_MODULE_1__[\"default\"]; });\n\n/* harmony import */ var _basis_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./basis.js */ \"./node_modules/vega/node_modules/d3-interpolate/src/basis.js\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"interpolateBasis\", function() { return _basis_js__WEBPACK_IMPORTED_MODULE_2__[\"default\"]; });\n\n/* harmony import */ var _basisClosed_js__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ./basisClosed.js */ \"./node_modules/vega/node_modules/d3-interpolate/src/basisClosed.js\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"interpolateBasisClosed\", function() { return _basisClosed_js__WEBPACK_IMPORTED_MODULE_3__[\"default\"]; });\n\n/* harmony import */ var _date_js__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ./date.js */ \"./node_modules/vega/node_modules/d3-interpolate/src/date.js\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"interpolateDate\", function() { return _date_js__WEBPACK_IMPORTED_MODULE_4__[\"default\"]; });\n\n/* harmony import */ var _discrete_js__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! ./discrete.js */ \"./node_modules/vega/node_modules/d3-interpolate/src/discrete.js\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"interpolateDiscrete\", function() { return _discrete_js__WEBPACK_IMPORTED_MODULE_5__[\"default\"]; });\n\n/* harmony import */ var _hue_js__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! ./hue.js */ \"./node_modules/vega/node_modules/d3-interpolate/src/hue.js\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"interpolateHue\", function() { return _hue_js__WEBPACK_IMPORTED_MODULE_6__[\"default\"]; });\n\n/* harmony import */ var _number_js__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! ./number.js */ \"./node_modules/vega/node_modules/d3-interpolate/src/number.js\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"interpolateNumber\", function() { return _number_js__WEBPACK_IMPORTED_MODULE_7__[\"default\"]; });\n\n/* harmony import */ var _numberArray_js__WEBPACK_IMPORTED_MODULE_8__ = __webpack_require__(/*! ./numberArray.js */ \"./node_modules/vega/node_modules/d3-interpolate/src/numberArray.js\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"interpolateNumberArray\", function() { return _numberArray_js__WEBPACK_IMPORTED_MODULE_8__[\"default\"]; });\n\n/* harmony import */ var _object_js__WEBPACK_IMPORTED_MODULE_9__ = __webpack_require__(/*! ./object.js */ \"./node_modules/vega/node_modules/d3-interpolate/src/object.js\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"interpolateObject\", function() { return _object_js__WEBPACK_IMPORTED_MODULE_9__[\"default\"]; });\n\n/* harmony import */ var _round_js__WEBPACK_IMPORTED_MODULE_10__ = __webpack_require__(/*! ./round.js */ \"./node_modules/vega/node_modules/d3-interpolate/src/round.js\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"interpolateRound\", function() { return _round_js__WEBPACK_IMPORTED_MODULE_10__[\"default\"]; });\n\n/* harmony import */ var _string_js__WEBPACK_IMPORTED_MODULE_11__ = __webpack_require__(/*! ./string.js */ \"./node_modules/vega/node_modules/d3-interpolate/src/string.js\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"interpolateString\", function() { return _string_js__WEBPACK_IMPORTED_MODULE_11__[\"default\"]; });\n\n/* harmony import */ var _transform_index_js__WEBPACK_IMPORTED_MODULE_12__ = __webpack_require__(/*! ./transform/index.js */ \"./node_modules/vega/node_modules/d3-interpolate/src/transform/index.js\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"interpolateTransformCss\", function() { return _transform_index_js__WEBPACK_IMPORTED_MODULE_12__[\"interpolateTransformCss\"]; });\n\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"interpolateTransformSvg\", function() { return _transform_index_js__WEBPACK_IMPORTED_MODULE_12__[\"interpolateTransformSvg\"]; });\n\n/* harmony import */ var _zoom_js__WEBPACK_IMPORTED_MODULE_13__ = __webpack_require__(/*! ./zoom.js */ \"./node_modules/vega/node_modules/d3-interpolate/src/zoom.js\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"interpolateZoom\", function() { return _zoom_js__WEBPACK_IMPORTED_MODULE_13__[\"default\"]; });\n\n/* harmony import */ var _rgb_js__WEBPACK_IMPORTED_MODULE_14__ = __webpack_require__(/*! ./rgb.js */ \"./node_modules/vega/node_modules/d3-interpolate/src/rgb.js\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"interpolateRgb\", function() { return _rgb_js__WEBPACK_IMPORTED_MODULE_14__[\"default\"]; });\n\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"interpolateRgbBasis\", function() { return _rgb_js__WEBPACK_IMPORTED_MODULE_14__[\"rgbBasis\"]; });\n\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"interpolateRgbBasisClosed\", function() { return _rgb_js__WEBPACK_IMPORTED_MODULE_14__[\"rgbBasisClosed\"]; });\n\n/* harmony import */ var _hsl_js__WEBPACK_IMPORTED_MODULE_15__ = __webpack_require__(/*! ./hsl.js */ \"./node_modules/vega/node_modules/d3-interpolate/src/hsl.js\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"interpolateHsl\", function() { return _hsl_js__WEBPACK_IMPORTED_MODULE_15__[\"default\"]; });\n\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"interpolateHslLong\", function() { return _hsl_js__WEBPACK_IMPORTED_MODULE_15__[\"hslLong\"]; });\n\n/* harmony import */ var _lab_js__WEBPACK_IMPORTED_MODULE_16__ = __webpack_require__(/*! ./lab.js */ \"./node_modules/vega/node_modules/d3-interpolate/src/lab.js\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"interpolateLab\", function() { return _lab_js__WEBPACK_IMPORTED_MODULE_16__[\"default\"]; });\n\n/* harmony import */ var _hcl_js__WEBPACK_IMPORTED_MODULE_17__ = __webpack_require__(/*! ./hcl.js */ \"./node_modules/vega/node_modules/d3-interpolate/src/hcl.js\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"interpolateHcl\", function() { return _hcl_js__WEBPACK_IMPORTED_MODULE_17__[\"default\"]; });\n\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"interpolateHclLong\", function() { return _hcl_js__WEBPACK_IMPORTED_MODULE_17__[\"hclLong\"]; });\n\n/* harmony import */ var _cubehelix_js__WEBPACK_IMPORTED_MODULE_18__ = __webpack_require__(/*! ./cubehelix.js */ \"./node_modules/vega/node_modules/d3-interpolate/src/cubehelix.js\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"interpolateCubehelix\", function() { return _cubehelix_js__WEBPACK_IMPORTED_MODULE_18__[\"default\"]; });\n\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"interpolateCubehelixLong\", function() { return _cubehelix_js__WEBPACK_IMPORTED_MODULE_18__[\"cubehelixLong\"]; });\n\n/* harmony import */ var _piecewise_js__WEBPACK_IMPORTED_MODULE_19__ = __webpack_require__(/*! ./piecewise.js */ \"./node_modules/vega/node_modules/d3-interpolate/src/piecewise.js\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"piecewise\", function() { return _piecewise_js__WEBPACK_IMPORTED_MODULE_19__[\"default\"]; });\n\n/* harmony import */ var _quantize_js__WEBPACK_IMPORTED_MODULE_20__ = __webpack_require__(/*! ./quantize.js */ \"./node_modules/vega/node_modules/d3-interpolate/src/quantize.js\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"quantize\", function() { return _quantize_js__WEBPACK_IMPORTED_MODULE_20__[\"default\"]; });\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvdmVnYS9ub2RlX21vZHVsZXMvZDMtaW50ZXJwb2xhdGUvc3JjL2luZGV4LmpzLmpzIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL3ZlZ2Evbm9kZV9tb2R1bGVzL2QzLWludGVycG9sYXRlL3NyYy9pbmRleC5qcz85OWE3Il0sInNvdXJjZXNDb250ZW50IjpbImV4cG9ydCB7ZGVmYXVsdCBhcyBpbnRlcnBvbGF0ZX0gZnJvbSBcIi4vdmFsdWUuanNcIjtcbmV4cG9ydCB7ZGVmYXVsdCBhcyBpbnRlcnBvbGF0ZUFycmF5fSBmcm9tIFwiLi9hcnJheS5qc1wiO1xuZXhwb3J0IHtkZWZhdWx0IGFzIGludGVycG9sYXRlQmFzaXN9IGZyb20gXCIuL2Jhc2lzLmpzXCI7XG5leHBvcnQge2RlZmF1bHQgYXMgaW50ZXJwb2xhdGVCYXNpc0Nsb3NlZH0gZnJvbSBcIi4vYmFzaXNDbG9zZWQuanNcIjtcbmV4cG9ydCB7ZGVmYXVsdCBhcyBpbnRlcnBvbGF0ZURhdGV9IGZyb20gXCIuL2RhdGUuanNcIjtcbmV4cG9ydCB7ZGVmYXVsdCBhcyBpbnRlcnBvbGF0ZURpc2NyZXRlfSBmcm9tIFwiLi9kaXNjcmV0ZS5qc1wiO1xuZXhwb3J0IHtkZWZhdWx0IGFzIGludGVycG9sYXRlSHVlfSBmcm9tIFwiLi9odWUuanNcIjtcbmV4cG9ydCB7ZGVmYXVsdCBhcyBpbnRlcnBvbGF0ZU51bWJlcn0gZnJvbSBcIi4vbnVtYmVyLmpzXCI7XG5leHBvcnQge2RlZmF1bHQgYXMgaW50ZXJwb2xhdGVOdW1iZXJBcnJheX0gZnJvbSBcIi4vbnVtYmVyQXJyYXkuanNcIjtcbmV4cG9ydCB7ZGVmYXVsdCBhcyBpbnRlcnBvbGF0ZU9iamVjdH0gZnJvbSBcIi4vb2JqZWN0LmpzXCI7XG5leHBvcnQge2RlZmF1bHQgYXMgaW50ZXJwb2xhdGVSb3VuZH0gZnJvbSBcIi4vcm91bmQuanNcIjtcbmV4cG9ydCB7ZGVmYXVsdCBhcyBpbnRlcnBvbGF0ZVN0cmluZ30gZnJvbSBcIi4vc3RyaW5nLmpzXCI7XG5leHBvcnQge2ludGVycG9sYXRlVHJhbnNmb3JtQ3NzLCBpbnRlcnBvbGF0ZVRyYW5zZm9ybVN2Z30gZnJvbSBcIi4vdHJhbnNmb3JtL2luZGV4LmpzXCI7XG5leHBvcnQge2RlZmF1bHQgYXMgaW50ZXJwb2xhdGVab29tfSBmcm9tIFwiLi96b29tLmpzXCI7XG5leHBvcnQge2RlZmF1bHQgYXMgaW50ZXJwb2xhdGVSZ2IsIHJnYkJhc2lzIGFzIGludGVycG9sYXRlUmdiQmFzaXMsIHJnYkJhc2lzQ2xvc2VkIGFzIGludGVycG9sYXRlUmdiQmFzaXNDbG9zZWR9IGZyb20gXCIuL3JnYi5qc1wiO1xuZXhwb3J0IHtkZWZhdWx0IGFzIGludGVycG9sYXRlSHNsLCBoc2xMb25nIGFzIGludGVycG9sYXRlSHNsTG9uZ30gZnJvbSBcIi4vaHNsLmpzXCI7XG5leHBvcnQge2RlZmF1bHQgYXMgaW50ZXJwb2xhdGVMYWJ9IGZyb20gXCIuL2xhYi5qc1wiO1xuZXhwb3J0IHtkZWZhdWx0IGFzIGludGVycG9sYXRlSGNsLCBoY2xMb25nIGFzIGludGVycG9sYXRlSGNsTG9uZ30gZnJvbSBcIi4vaGNsLmpzXCI7XG5leHBvcnQge2RlZmF1bHQgYXMgaW50ZXJwb2xhdGVDdWJlaGVsaXgsIGN1YmVoZWxpeExvbmcgYXMgaW50ZXJwb2xhdGVDdWJlaGVsaXhMb25nfSBmcm9tIFwiLi9jdWJlaGVsaXguanNcIjtcbmV4cG9ydCB7ZGVmYXVsdCBhcyBwaWVjZXdpc2V9IGZyb20gXCIuL3BpZWNld2lzZS5qc1wiO1xuZXhwb3J0IHtkZWZhdWx0IGFzIHF1YW50aXplfSBmcm9tIFwiLi9xdWFudGl6ZS5qc1wiO1xuIl0sIm1hcHBpbmdzIjoiQUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTsiLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///./node_modules/vega/node_modules/d3-interpolate/src/index.js\n");

/***/ }),

/***/ "./node_modules/vega/node_modules/d3-interpolate/src/lab.js":
/*!******************************************************************!*\
  !*** ./node_modules/vega/node_modules/d3-interpolate/src/lab.js ***!
  \******************************************************************/
/*! exports provided: default */
/***/ (function(module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"default\", function() { return lab; });\n/* harmony import */ var d3_color__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! d3-color */ \"./node_modules/d3-color/src/index.js\");\n/* harmony import */ var _color_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./color.js */ \"./node_modules/vega/node_modules/d3-interpolate/src/color.js\");\n\n\n\nfunction lab(start, end) {\n  var l = Object(_color_js__WEBPACK_IMPORTED_MODULE_1__[\"default\"])((start = Object(d3_color__WEBPACK_IMPORTED_MODULE_0__[\"lab\"])(start)).l, (end = Object(d3_color__WEBPACK_IMPORTED_MODULE_0__[\"lab\"])(end)).l),\n      a = Object(_color_js__WEBPACK_IMPORTED_MODULE_1__[\"default\"])(start.a, end.a),\n      b = Object(_color_js__WEBPACK_IMPORTED_MODULE_1__[\"default\"])(start.b, end.b),\n      opacity = Object(_color_js__WEBPACK_IMPORTED_MODULE_1__[\"default\"])(start.opacity, end.opacity);\n  return function(t) {\n    start.l = l(t);\n    start.a = a(t);\n    start.b = b(t);\n    start.opacity = opacity(t);\n    return start + \"\";\n  };\n}\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvdmVnYS9ub2RlX21vZHVsZXMvZDMtaW50ZXJwb2xhdGUvc3JjL2xhYi5qcy5qcyIsInNvdXJjZXMiOlsid2VicGFjazovLy8uL25vZGVfbW9kdWxlcy92ZWdhL25vZGVfbW9kdWxlcy9kMy1pbnRlcnBvbGF0ZS9zcmMvbGFiLmpzPzM1YjciXSwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtsYWIgYXMgY29sb3JMYWJ9IGZyb20gXCJkMy1jb2xvclwiO1xuaW1wb3J0IGNvbG9yIGZyb20gXCIuL2NvbG9yLmpzXCI7XG5cbmV4cG9ydCBkZWZhdWx0IGZ1bmN0aW9uIGxhYihzdGFydCwgZW5kKSB7XG4gIHZhciBsID0gY29sb3IoKHN0YXJ0ID0gY29sb3JMYWIoc3RhcnQpKS5sLCAoZW5kID0gY29sb3JMYWIoZW5kKSkubCksXG4gICAgICBhID0gY29sb3Ioc3RhcnQuYSwgZW5kLmEpLFxuICAgICAgYiA9IGNvbG9yKHN0YXJ0LmIsIGVuZC5iKSxcbiAgICAgIG9wYWNpdHkgPSBjb2xvcihzdGFydC5vcGFjaXR5LCBlbmQub3BhY2l0eSk7XG4gIHJldHVybiBmdW5jdGlvbih0KSB7XG4gICAgc3RhcnQubCA9IGwodCk7XG4gICAgc3RhcnQuYSA9IGEodCk7XG4gICAgc3RhcnQuYiA9IGIodCk7XG4gICAgc3RhcnQub3BhY2l0eSA9IG9wYWNpdHkodCk7XG4gICAgcmV0dXJuIHN0YXJ0ICsgXCJcIjtcbiAgfTtcbn1cbiJdLCJtYXBwaW5ncyI6IkFBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTsiLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///./node_modules/vega/node_modules/d3-interpolate/src/lab.js\n");

/***/ }),

/***/ "./node_modules/vega/node_modules/d3-interpolate/src/number.js":
/*!*********************************************************************!*\
  !*** ./node_modules/vega/node_modules/d3-interpolate/src/number.js ***!
  \*********************************************************************/
/*! exports provided: default */
/***/ (function(module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony default export */ __webpack_exports__[\"default\"] = (function(a, b) {\n  return a = +a, b = +b, function(t) {\n    return a * (1 - t) + b * t;\n  };\n});\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvdmVnYS9ub2RlX21vZHVsZXMvZDMtaW50ZXJwb2xhdGUvc3JjL251bWJlci5qcy5qcyIsInNvdXJjZXMiOlsid2VicGFjazovLy8uL25vZGVfbW9kdWxlcy92ZWdhL25vZGVfbW9kdWxlcy9kMy1pbnRlcnBvbGF0ZS9zcmMvbnVtYmVyLmpzPzNlNmEiXSwic291cmNlc0NvbnRlbnQiOlsiZXhwb3J0IGRlZmF1bHQgZnVuY3Rpb24oYSwgYikge1xuICByZXR1cm4gYSA9ICthLCBiID0gK2IsIGZ1bmN0aW9uKHQpIHtcbiAgICByZXR1cm4gYSAqICgxIC0gdCkgKyBiICogdDtcbiAgfTtcbn1cbiJdLCJtYXBwaW5ncyI6IkFBQUE7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOyIsInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///./node_modules/vega/node_modules/d3-interpolate/src/number.js\n");

/***/ }),

/***/ "./node_modules/vega/node_modules/d3-interpolate/src/numberArray.js":
/*!**************************************************************************!*\
  !*** ./node_modules/vega/node_modules/d3-interpolate/src/numberArray.js ***!
  \**************************************************************************/
/*! exports provided: default, isNumberArray */
/***/ (function(module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"isNumberArray\", function() { return isNumberArray; });\n/* harmony default export */ __webpack_exports__[\"default\"] = (function(a, b) {\n  if (!b) b = [];\n  var n = a ? Math.min(b.length, a.length) : 0,\n      c = b.slice(),\n      i;\n  return function(t) {\n    for (i = 0; i < n; ++i) c[i] = a[i] * (1 - t) + b[i] * t;\n    return c;\n  };\n});\n\nfunction isNumberArray(x) {\n  return ArrayBuffer.isView(x) && !(x instanceof DataView);\n}\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvdmVnYS9ub2RlX21vZHVsZXMvZDMtaW50ZXJwb2xhdGUvc3JjL251bWJlckFycmF5LmpzLmpzIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL3ZlZ2Evbm9kZV9tb2R1bGVzL2QzLWludGVycG9sYXRlL3NyYy9udW1iZXJBcnJheS5qcz8wYTIwIl0sInNvdXJjZXNDb250ZW50IjpbImV4cG9ydCBkZWZhdWx0IGZ1bmN0aW9uKGEsIGIpIHtcbiAgaWYgKCFiKSBiID0gW107XG4gIHZhciBuID0gYSA/IE1hdGgubWluKGIubGVuZ3RoLCBhLmxlbmd0aCkgOiAwLFxuICAgICAgYyA9IGIuc2xpY2UoKSxcbiAgICAgIGk7XG4gIHJldHVybiBmdW5jdGlvbih0KSB7XG4gICAgZm9yIChpID0gMDsgaSA8IG47ICsraSkgY1tpXSA9IGFbaV0gKiAoMSAtIHQpICsgYltpXSAqIHQ7XG4gICAgcmV0dXJuIGM7XG4gIH07XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBpc051bWJlckFycmF5KHgpIHtcbiAgcmV0dXJuIEFycmF5QnVmZmVyLmlzVmlldyh4KSAmJiAhKHggaW5zdGFuY2VvZiBEYXRhVmlldyk7XG59XG4iXSwibWFwcGluZ3MiOiJBQUFBO0FBQUE7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOyIsInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///./node_modules/vega/node_modules/d3-interpolate/src/numberArray.js\n");

/***/ }),

/***/ "./node_modules/vega/node_modules/d3-interpolate/src/object.js":
/*!*********************************************************************!*\
  !*** ./node_modules/vega/node_modules/d3-interpolate/src/object.js ***!
  \*********************************************************************/
/*! exports provided: default */
/***/ (function(module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _value_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./value.js */ \"./node_modules/vega/node_modules/d3-interpolate/src/value.js\");\n\n\n/* harmony default export */ __webpack_exports__[\"default\"] = (function(a, b) {\n  var i = {},\n      c = {},\n      k;\n\n  if (a === null || typeof a !== \"object\") a = {};\n  if (b === null || typeof b !== \"object\") b = {};\n\n  for (k in b) {\n    if (k in a) {\n      i[k] = Object(_value_js__WEBPACK_IMPORTED_MODULE_0__[\"default\"])(a[k], b[k]);\n    } else {\n      c[k] = b[k];\n    }\n  }\n\n  return function(t) {\n    for (k in i) c[k] = i[k](t);\n    return c;\n  };\n});\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvdmVnYS9ub2RlX21vZHVsZXMvZDMtaW50ZXJwb2xhdGUvc3JjL29iamVjdC5qcy5qcyIsInNvdXJjZXMiOlsid2VicGFjazovLy8uL25vZGVfbW9kdWxlcy92ZWdhL25vZGVfbW9kdWxlcy9kMy1pbnRlcnBvbGF0ZS9zcmMvb2JqZWN0LmpzPzE2ZWMiXSwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHZhbHVlIGZyb20gXCIuL3ZhbHVlLmpzXCI7XG5cbmV4cG9ydCBkZWZhdWx0IGZ1bmN0aW9uKGEsIGIpIHtcbiAgdmFyIGkgPSB7fSxcbiAgICAgIGMgPSB7fSxcbiAgICAgIGs7XG5cbiAgaWYgKGEgPT09IG51bGwgfHwgdHlwZW9mIGEgIT09IFwib2JqZWN0XCIpIGEgPSB7fTtcbiAgaWYgKGIgPT09IG51bGwgfHwgdHlwZW9mIGIgIT09IFwib2JqZWN0XCIpIGIgPSB7fTtcblxuICBmb3IgKGsgaW4gYikge1xuICAgIGlmIChrIGluIGEpIHtcbiAgICAgIGlba10gPSB2YWx1ZShhW2tdLCBiW2tdKTtcbiAgICB9IGVsc2Uge1xuICAgICAgY1trXSA9IGJba107XG4gICAgfVxuICB9XG5cbiAgcmV0dXJuIGZ1bmN0aW9uKHQpIHtcbiAgICBmb3IgKGsgaW4gaSkgY1trXSA9IGlba10odCk7XG4gICAgcmV0dXJuIGM7XG4gIH07XG59XG4iXSwibWFwcGluZ3MiOiJBQUFBO0FBQUE7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOyIsInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///./node_modules/vega/node_modules/d3-interpolate/src/object.js\n");

/***/ }),

/***/ "./node_modules/vega/node_modules/d3-interpolate/src/piecewise.js":
/*!************************************************************************!*\
  !*** ./node_modules/vega/node_modules/d3-interpolate/src/piecewise.js ***!
  \************************************************************************/
/*! exports provided: default */
/***/ (function(module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"default\", function() { return piecewise; });\n/* harmony import */ var _value_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./value.js */ \"./node_modules/vega/node_modules/d3-interpolate/src/value.js\");\n\n\nfunction piecewise(interpolate, values) {\n  if (values === undefined) values = interpolate, interpolate = _value_js__WEBPACK_IMPORTED_MODULE_0__[\"default\"];\n  var i = 0, n = values.length - 1, v = values[0], I = new Array(n < 0 ? 0 : n);\n  while (i < n) I[i] = interpolate(v, v = values[++i]);\n  return function(t) {\n    var i = Math.max(0, Math.min(n - 1, Math.floor(t *= n)));\n    return I[i](t - i);\n  };\n}\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvdmVnYS9ub2RlX21vZHVsZXMvZDMtaW50ZXJwb2xhdGUvc3JjL3BpZWNld2lzZS5qcy5qcyIsInNvdXJjZXMiOlsid2VicGFjazovLy8uL25vZGVfbW9kdWxlcy92ZWdhL25vZGVfbW9kdWxlcy9kMy1pbnRlcnBvbGF0ZS9zcmMvcGllY2V3aXNlLmpzPzBiM2EiXSwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtkZWZhdWx0IGFzIHZhbHVlfSBmcm9tIFwiLi92YWx1ZS5qc1wiO1xuXG5leHBvcnQgZGVmYXVsdCBmdW5jdGlvbiBwaWVjZXdpc2UoaW50ZXJwb2xhdGUsIHZhbHVlcykge1xuICBpZiAodmFsdWVzID09PSB1bmRlZmluZWQpIHZhbHVlcyA9IGludGVycG9sYXRlLCBpbnRlcnBvbGF0ZSA9IHZhbHVlO1xuICB2YXIgaSA9IDAsIG4gPSB2YWx1ZXMubGVuZ3RoIC0gMSwgdiA9IHZhbHVlc1swXSwgSSA9IG5ldyBBcnJheShuIDwgMCA/IDAgOiBuKTtcbiAgd2hpbGUgKGkgPCBuKSBJW2ldID0gaW50ZXJwb2xhdGUodiwgdiA9IHZhbHVlc1srK2ldKTtcbiAgcmV0dXJuIGZ1bmN0aW9uKHQpIHtcbiAgICB2YXIgaSA9IE1hdGgubWF4KDAsIE1hdGgubWluKG4gLSAxLCBNYXRoLmZsb29yKHQgKj0gbikpKTtcbiAgICByZXR1cm4gSVtpXSh0IC0gaSk7XG4gIH07XG59XG4iXSwibWFwcGluZ3MiOiJBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7Iiwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///./node_modules/vega/node_modules/d3-interpolate/src/piecewise.js\n");

/***/ }),

/***/ "./node_modules/vega/node_modules/d3-interpolate/src/quantize.js":
/*!***********************************************************************!*\
  !*** ./node_modules/vega/node_modules/d3-interpolate/src/quantize.js ***!
  \***********************************************************************/
/*! exports provided: default */
/***/ (function(module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony default export */ __webpack_exports__[\"default\"] = (function(interpolator, n) {\n  var samples = new Array(n);\n  for (var i = 0; i < n; ++i) samples[i] = interpolator(i / (n - 1));\n  return samples;\n});\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvdmVnYS9ub2RlX21vZHVsZXMvZDMtaW50ZXJwb2xhdGUvc3JjL3F1YW50aXplLmpzLmpzIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL3ZlZ2Evbm9kZV9tb2R1bGVzL2QzLWludGVycG9sYXRlL3NyYy9xdWFudGl6ZS5qcz8wYTBjIl0sInNvdXJjZXNDb250ZW50IjpbImV4cG9ydCBkZWZhdWx0IGZ1bmN0aW9uKGludGVycG9sYXRvciwgbikge1xuICB2YXIgc2FtcGxlcyA9IG5ldyBBcnJheShuKTtcbiAgZm9yICh2YXIgaSA9IDA7IGkgPCBuOyArK2kpIHNhbXBsZXNbaV0gPSBpbnRlcnBvbGF0b3IoaSAvIChuIC0gMSkpO1xuICByZXR1cm4gc2FtcGxlcztcbn1cbiJdLCJtYXBwaW5ncyI6IkFBQUE7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOyIsInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///./node_modules/vega/node_modules/d3-interpolate/src/quantize.js\n");

/***/ }),

/***/ "./node_modules/vega/node_modules/d3-interpolate/src/rgb.js":
/*!******************************************************************!*\
  !*** ./node_modules/vega/node_modules/d3-interpolate/src/rgb.js ***!
  \******************************************************************/
/*! exports provided: default, rgbBasis, rgbBasisClosed */
/***/ (function(module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"rgbBasis\", function() { return rgbBasis; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"rgbBasisClosed\", function() { return rgbBasisClosed; });\n/* harmony import */ var d3_color__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! d3-color */ \"./node_modules/d3-color/src/index.js\");\n/* harmony import */ var _basis_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./basis.js */ \"./node_modules/vega/node_modules/d3-interpolate/src/basis.js\");\n/* harmony import */ var _basisClosed_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./basisClosed.js */ \"./node_modules/vega/node_modules/d3-interpolate/src/basisClosed.js\");\n/* harmony import */ var _color_js__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ./color.js */ \"./node_modules/vega/node_modules/d3-interpolate/src/color.js\");\n\n\n\n\n\n/* harmony default export */ __webpack_exports__[\"default\"] = ((function rgbGamma(y) {\n  var color = Object(_color_js__WEBPACK_IMPORTED_MODULE_3__[\"gamma\"])(y);\n\n  function rgb(start, end) {\n    var r = color((start = Object(d3_color__WEBPACK_IMPORTED_MODULE_0__[\"rgb\"])(start)).r, (end = Object(d3_color__WEBPACK_IMPORTED_MODULE_0__[\"rgb\"])(end)).r),\n        g = color(start.g, end.g),\n        b = color(start.b, end.b),\n        opacity = Object(_color_js__WEBPACK_IMPORTED_MODULE_3__[\"default\"])(start.opacity, end.opacity);\n    return function(t) {\n      start.r = r(t);\n      start.g = g(t);\n      start.b = b(t);\n      start.opacity = opacity(t);\n      return start + \"\";\n    };\n  }\n\n  rgb.gamma = rgbGamma;\n\n  return rgb;\n})(1));\n\nfunction rgbSpline(spline) {\n  return function(colors) {\n    var n = colors.length,\n        r = new Array(n),\n        g = new Array(n),\n        b = new Array(n),\n        i, color;\n    for (i = 0; i < n; ++i) {\n      color = Object(d3_color__WEBPACK_IMPORTED_MODULE_0__[\"rgb\"])(colors[i]);\n      r[i] = color.r || 0;\n      g[i] = color.g || 0;\n      b[i] = color.b || 0;\n    }\n    r = spline(r);\n    g = spline(g);\n    b = spline(b);\n    color.opacity = 1;\n    return function(t) {\n      color.r = r(t);\n      color.g = g(t);\n      color.b = b(t);\n      return color + \"\";\n    };\n  };\n}\n\nvar rgbBasis = rgbSpline(_basis_js__WEBPACK_IMPORTED_MODULE_1__[\"default\"]);\nvar rgbBasisClosed = rgbSpline(_basisClosed_js__WEBPACK_IMPORTED_MODULE_2__[\"default\"]);\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvdmVnYS9ub2RlX21vZHVsZXMvZDMtaW50ZXJwb2xhdGUvc3JjL3JnYi5qcy5qcyIsInNvdXJjZXMiOlsid2VicGFjazovLy8uL25vZGVfbW9kdWxlcy92ZWdhL25vZGVfbW9kdWxlcy9kMy1pbnRlcnBvbGF0ZS9zcmMvcmdiLmpzPzQ3ZTciXSwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtyZ2IgYXMgY29sb3JSZ2J9IGZyb20gXCJkMy1jb2xvclwiO1xuaW1wb3J0IGJhc2lzIGZyb20gXCIuL2Jhc2lzLmpzXCI7XG5pbXBvcnQgYmFzaXNDbG9zZWQgZnJvbSBcIi4vYmFzaXNDbG9zZWQuanNcIjtcbmltcG9ydCBub2dhbW1hLCB7Z2FtbWF9IGZyb20gXCIuL2NvbG9yLmpzXCI7XG5cbmV4cG9ydCBkZWZhdWx0IChmdW5jdGlvbiByZ2JHYW1tYSh5KSB7XG4gIHZhciBjb2xvciA9IGdhbW1hKHkpO1xuXG4gIGZ1bmN0aW9uIHJnYihzdGFydCwgZW5kKSB7XG4gICAgdmFyIHIgPSBjb2xvcigoc3RhcnQgPSBjb2xvclJnYihzdGFydCkpLnIsIChlbmQgPSBjb2xvclJnYihlbmQpKS5yKSxcbiAgICAgICAgZyA9IGNvbG9yKHN0YXJ0LmcsIGVuZC5nKSxcbiAgICAgICAgYiA9IGNvbG9yKHN0YXJ0LmIsIGVuZC5iKSxcbiAgICAgICAgb3BhY2l0eSA9IG5vZ2FtbWEoc3RhcnQub3BhY2l0eSwgZW5kLm9wYWNpdHkpO1xuICAgIHJldHVybiBmdW5jdGlvbih0KSB7XG4gICAgICBzdGFydC5yID0gcih0KTtcbiAgICAgIHN0YXJ0LmcgPSBnKHQpO1xuICAgICAgc3RhcnQuYiA9IGIodCk7XG4gICAgICBzdGFydC5vcGFjaXR5ID0gb3BhY2l0eSh0KTtcbiAgICAgIHJldHVybiBzdGFydCArIFwiXCI7XG4gICAgfTtcbiAgfVxuXG4gIHJnYi5nYW1tYSA9IHJnYkdhbW1hO1xuXG4gIHJldHVybiByZ2I7XG59KSgxKTtcblxuZnVuY3Rpb24gcmdiU3BsaW5lKHNwbGluZSkge1xuICByZXR1cm4gZnVuY3Rpb24oY29sb3JzKSB7XG4gICAgdmFyIG4gPSBjb2xvcnMubGVuZ3RoLFxuICAgICAgICByID0gbmV3IEFycmF5KG4pLFxuICAgICAgICBnID0gbmV3IEFycmF5KG4pLFxuICAgICAgICBiID0gbmV3IEFycmF5KG4pLFxuICAgICAgICBpLCBjb2xvcjtcbiAgICBmb3IgKGkgPSAwOyBpIDwgbjsgKytpKSB7XG4gICAgICBjb2xvciA9IGNvbG9yUmdiKGNvbG9yc1tpXSk7XG4gICAgICByW2ldID0gY29sb3IuciB8fCAwO1xuICAgICAgZ1tpXSA9IGNvbG9yLmcgfHwgMDtcbiAgICAgIGJbaV0gPSBjb2xvci5iIHx8IDA7XG4gICAgfVxuICAgIHIgPSBzcGxpbmUocik7XG4gICAgZyA9IHNwbGluZShnKTtcbiAgICBiID0gc3BsaW5lKGIpO1xuICAgIGNvbG9yLm9wYWNpdHkgPSAxO1xuICAgIHJldHVybiBmdW5jdGlvbih0KSB7XG4gICAgICBjb2xvci5yID0gcih0KTtcbiAgICAgIGNvbG9yLmcgPSBnKHQpO1xuICAgICAgY29sb3IuYiA9IGIodCk7XG4gICAgICByZXR1cm4gY29sb3IgKyBcIlwiO1xuICAgIH07XG4gIH07XG59XG5cbmV4cG9ydCB2YXIgcmdiQmFzaXMgPSByZ2JTcGxpbmUoYmFzaXMpO1xuZXhwb3J0IHZhciByZ2JCYXNpc0Nsb3NlZCA9IHJnYlNwbGluZShiYXNpc0Nsb3NlZCk7XG4iXSwibWFwcGluZ3MiOiJBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7Iiwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///./node_modules/vega/node_modules/d3-interpolate/src/rgb.js\n");

/***/ }),

/***/ "./node_modules/vega/node_modules/d3-interpolate/src/round.js":
/*!********************************************************************!*\
  !*** ./node_modules/vega/node_modules/d3-interpolate/src/round.js ***!
  \********************************************************************/
/*! exports provided: default */
/***/ (function(module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony default export */ __webpack_exports__[\"default\"] = (function(a, b) {\n  return a = +a, b = +b, function(t) {\n    return Math.round(a * (1 - t) + b * t);\n  };\n});\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvdmVnYS9ub2RlX21vZHVsZXMvZDMtaW50ZXJwb2xhdGUvc3JjL3JvdW5kLmpzLmpzIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL3ZlZ2Evbm9kZV9tb2R1bGVzL2QzLWludGVycG9sYXRlL3NyYy9yb3VuZC5qcz84NTE4Il0sInNvdXJjZXNDb250ZW50IjpbImV4cG9ydCBkZWZhdWx0IGZ1bmN0aW9uKGEsIGIpIHtcbiAgcmV0dXJuIGEgPSArYSwgYiA9ICtiLCBmdW5jdGlvbih0KSB7XG4gICAgcmV0dXJuIE1hdGgucm91bmQoYSAqICgxIC0gdCkgKyBiICogdCk7XG4gIH07XG59XG4iXSwibWFwcGluZ3MiOiJBQUFBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTsiLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///./node_modules/vega/node_modules/d3-interpolate/src/round.js\n");

/***/ }),

/***/ "./node_modules/vega/node_modules/d3-interpolate/src/string.js":
/*!*********************************************************************!*\
  !*** ./node_modules/vega/node_modules/d3-interpolate/src/string.js ***!
  \*********************************************************************/
/*! exports provided: default */
/***/ (function(module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _number_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./number.js */ \"./node_modules/vega/node_modules/d3-interpolate/src/number.js\");\n\n\nvar reA = /[-+]?(?:\\d+\\.?\\d*|\\.?\\d+)(?:[eE][-+]?\\d+)?/g,\n    reB = new RegExp(reA.source, \"g\");\n\nfunction zero(b) {\n  return function() {\n    return b;\n  };\n}\n\nfunction one(b) {\n  return function(t) {\n    return b(t) + \"\";\n  };\n}\n\n/* harmony default export */ __webpack_exports__[\"default\"] = (function(a, b) {\n  var bi = reA.lastIndex = reB.lastIndex = 0, // scan index for next number in b\n      am, // current match in a\n      bm, // current match in b\n      bs, // string preceding current number in b, if any\n      i = -1, // index in s\n      s = [], // string constants and placeholders\n      q = []; // number interpolators\n\n  // Coerce inputs to strings.\n  a = a + \"\", b = b + \"\";\n\n  // Interpolate pairs of numbers in a & b.\n  while ((am = reA.exec(a))\n      && (bm = reB.exec(b))) {\n    if ((bs = bm.index) > bi) { // a string precedes the next number in b\n      bs = b.slice(bi, bs);\n      if (s[i]) s[i] += bs; // coalesce with previous string\n      else s[++i] = bs;\n    }\n    if ((am = am[0]) === (bm = bm[0])) { // numbers in a & b match\n      if (s[i]) s[i] += bm; // coalesce with previous string\n      else s[++i] = bm;\n    } else { // interpolate non-matching numbers\n      s[++i] = null;\n      q.push({i: i, x: Object(_number_js__WEBPACK_IMPORTED_MODULE_0__[\"default\"])(am, bm)});\n    }\n    bi = reB.lastIndex;\n  }\n\n  // Add remains of b.\n  if (bi < b.length) {\n    bs = b.slice(bi);\n    if (s[i]) s[i] += bs; // coalesce with previous string\n    else s[++i] = bs;\n  }\n\n  // Special optimization for only a single match.\n  // Otherwise, interpolate each of the numbers and rejoin the string.\n  return s.length < 2 ? (q[0]\n      ? one(q[0].x)\n      : zero(b))\n      : (b = q.length, function(t) {\n          for (var i = 0, o; i < b; ++i) s[(o = q[i]).i] = o.x(t);\n          return s.join(\"\");\n        });\n});\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvdmVnYS9ub2RlX21vZHVsZXMvZDMtaW50ZXJwb2xhdGUvc3JjL3N0cmluZy5qcy5qcyIsInNvdXJjZXMiOlsid2VicGFjazovLy8uL25vZGVfbW9kdWxlcy92ZWdhL25vZGVfbW9kdWxlcy9kMy1pbnRlcnBvbGF0ZS9zcmMvc3RyaW5nLmpzP2I0ODEiXSwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IG51bWJlciBmcm9tIFwiLi9udW1iZXIuanNcIjtcblxudmFyIHJlQSA9IC9bLStdPyg/OlxcZCtcXC4/XFxkKnxcXC4/XFxkKykoPzpbZUVdWy0rXT9cXGQrKT8vZyxcbiAgICByZUIgPSBuZXcgUmVnRXhwKHJlQS5zb3VyY2UsIFwiZ1wiKTtcblxuZnVuY3Rpb24gemVybyhiKSB7XG4gIHJldHVybiBmdW5jdGlvbigpIHtcbiAgICByZXR1cm4gYjtcbiAgfTtcbn1cblxuZnVuY3Rpb24gb25lKGIpIHtcbiAgcmV0dXJuIGZ1bmN0aW9uKHQpIHtcbiAgICByZXR1cm4gYih0KSArIFwiXCI7XG4gIH07XG59XG5cbmV4cG9ydCBkZWZhdWx0IGZ1bmN0aW9uKGEsIGIpIHtcbiAgdmFyIGJpID0gcmVBLmxhc3RJbmRleCA9IHJlQi5sYXN0SW5kZXggPSAwLCAvLyBzY2FuIGluZGV4IGZvciBuZXh0IG51bWJlciBpbiBiXG4gICAgICBhbSwgLy8gY3VycmVudCBtYXRjaCBpbiBhXG4gICAgICBibSwgLy8gY3VycmVudCBtYXRjaCBpbiBiXG4gICAgICBicywgLy8gc3RyaW5nIHByZWNlZGluZyBjdXJyZW50IG51bWJlciBpbiBiLCBpZiBhbnlcbiAgICAgIGkgPSAtMSwgLy8gaW5kZXggaW4gc1xuICAgICAgcyA9IFtdLCAvLyBzdHJpbmcgY29uc3RhbnRzIGFuZCBwbGFjZWhvbGRlcnNcbiAgICAgIHEgPSBbXTsgLy8gbnVtYmVyIGludGVycG9sYXRvcnNcblxuICAvLyBDb2VyY2UgaW5wdXRzIHRvIHN0cmluZ3MuXG4gIGEgPSBhICsgXCJcIiwgYiA9IGIgKyBcIlwiO1xuXG4gIC8vIEludGVycG9sYXRlIHBhaXJzIG9mIG51bWJlcnMgaW4gYSAmIGIuXG4gIHdoaWxlICgoYW0gPSByZUEuZXhlYyhhKSlcbiAgICAgICYmIChibSA9IHJlQi5leGVjKGIpKSkge1xuICAgIGlmICgoYnMgPSBibS5pbmRleCkgPiBiaSkgeyAvLyBhIHN0cmluZyBwcmVjZWRlcyB0aGUgbmV4dCBudW1iZXIgaW4gYlxuICAgICAgYnMgPSBiLnNsaWNlKGJpLCBicyk7XG4gICAgICBpZiAoc1tpXSkgc1tpXSArPSBiczsgLy8gY29hbGVzY2Ugd2l0aCBwcmV2aW91cyBzdHJpbmdcbiAgICAgIGVsc2Ugc1srK2ldID0gYnM7XG4gICAgfVxuICAgIGlmICgoYW0gPSBhbVswXSkgPT09IChibSA9IGJtWzBdKSkgeyAvLyBudW1iZXJzIGluIGEgJiBiIG1hdGNoXG4gICAgICBpZiAoc1tpXSkgc1tpXSArPSBibTsgLy8gY29hbGVzY2Ugd2l0aCBwcmV2aW91cyBzdHJpbmdcbiAgICAgIGVsc2Ugc1srK2ldID0gYm07XG4gICAgfSBlbHNlIHsgLy8gaW50ZXJwb2xhdGUgbm9uLW1hdGNoaW5nIG51bWJlcnNcbiAgICAgIHNbKytpXSA9IG51bGw7XG4gICAgICBxLnB1c2goe2k6IGksIHg6IG51bWJlcihhbSwgYm0pfSk7XG4gICAgfVxuICAgIGJpID0gcmVCLmxhc3RJbmRleDtcbiAgfVxuXG4gIC8vIEFkZCByZW1haW5zIG9mIGIuXG4gIGlmIChiaSA8IGIubGVuZ3RoKSB7XG4gICAgYnMgPSBiLnNsaWNlKGJpKTtcbiAgICBpZiAoc1tpXSkgc1tpXSArPSBiczsgLy8gY29hbGVzY2Ugd2l0aCBwcmV2aW91cyBzdHJpbmdcbiAgICBlbHNlIHNbKytpXSA9IGJzO1xuICB9XG5cbiAgLy8gU3BlY2lhbCBvcHRpbWl6YXRpb24gZm9yIG9ubHkgYSBzaW5nbGUgbWF0Y2guXG4gIC8vIE90aGVyd2lzZSwgaW50ZXJwb2xhdGUgZWFjaCBvZiB0aGUgbnVtYmVycyBhbmQgcmVqb2luIHRoZSBzdHJpbmcuXG4gIHJldHVybiBzLmxlbmd0aCA8IDIgPyAocVswXVxuICAgICAgPyBvbmUocVswXS54KVxuICAgICAgOiB6ZXJvKGIpKVxuICAgICAgOiAoYiA9IHEubGVuZ3RoLCBmdW5jdGlvbih0KSB7XG4gICAgICAgICAgZm9yICh2YXIgaSA9IDAsIG87IGkgPCBiOyArK2kpIHNbKG8gPSBxW2ldKS5pXSA9IG8ueCh0KTtcbiAgICAgICAgICByZXR1cm4gcy5qb2luKFwiXCIpO1xuICAgICAgICB9KTtcbn1cbiJdLCJtYXBwaW5ncyI6IkFBQUE7QUFBQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOyIsInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///./node_modules/vega/node_modules/d3-interpolate/src/string.js\n");

/***/ }),

/***/ "./node_modules/vega/node_modules/d3-interpolate/src/transform/decompose.js":
/*!**********************************************************************************!*\
  !*** ./node_modules/vega/node_modules/d3-interpolate/src/transform/decompose.js ***!
  \**********************************************************************************/
/*! exports provided: identity, default */
/***/ (function(module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"identity\", function() { return identity; });\nvar degrees = 180 / Math.PI;\n\nvar identity = {\n  translateX: 0,\n  translateY: 0,\n  rotate: 0,\n  skewX: 0,\n  scaleX: 1,\n  scaleY: 1\n};\n\n/* harmony default export */ __webpack_exports__[\"default\"] = (function(a, b, c, d, e, f) {\n  var scaleX, scaleY, skewX;\n  if (scaleX = Math.sqrt(a * a + b * b)) a /= scaleX, b /= scaleX;\n  if (skewX = a * c + b * d) c -= a * skewX, d -= b * skewX;\n  if (scaleY = Math.sqrt(c * c + d * d)) c /= scaleY, d /= scaleY, skewX /= scaleY;\n  if (a * d < b * c) a = -a, b = -b, skewX = -skewX, scaleX = -scaleX;\n  return {\n    translateX: e,\n    translateY: f,\n    rotate: Math.atan2(b, a) * degrees,\n    skewX: Math.atan(skewX) * degrees,\n    scaleX: scaleX,\n    scaleY: scaleY\n  };\n});\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvdmVnYS9ub2RlX21vZHVsZXMvZDMtaW50ZXJwb2xhdGUvc3JjL3RyYW5zZm9ybS9kZWNvbXBvc2UuanMuanMiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvdmVnYS9ub2RlX21vZHVsZXMvZDMtaW50ZXJwb2xhdGUvc3JjL3RyYW5zZm9ybS9kZWNvbXBvc2UuanM/ZGE2OCJdLCJzb3VyY2VzQ29udGVudCI6WyJ2YXIgZGVncmVlcyA9IDE4MCAvIE1hdGguUEk7XG5cbmV4cG9ydCB2YXIgaWRlbnRpdHkgPSB7XG4gIHRyYW5zbGF0ZVg6IDAsXG4gIHRyYW5zbGF0ZVk6IDAsXG4gIHJvdGF0ZTogMCxcbiAgc2tld1g6IDAsXG4gIHNjYWxlWDogMSxcbiAgc2NhbGVZOiAxXG59O1xuXG5leHBvcnQgZGVmYXVsdCBmdW5jdGlvbihhLCBiLCBjLCBkLCBlLCBmKSB7XG4gIHZhciBzY2FsZVgsIHNjYWxlWSwgc2tld1g7XG4gIGlmIChzY2FsZVggPSBNYXRoLnNxcnQoYSAqIGEgKyBiICogYikpIGEgLz0gc2NhbGVYLCBiIC89IHNjYWxlWDtcbiAgaWYgKHNrZXdYID0gYSAqIGMgKyBiICogZCkgYyAtPSBhICogc2tld1gsIGQgLT0gYiAqIHNrZXdYO1xuICBpZiAoc2NhbGVZID0gTWF0aC5zcXJ0KGMgKiBjICsgZCAqIGQpKSBjIC89IHNjYWxlWSwgZCAvPSBzY2FsZVksIHNrZXdYIC89IHNjYWxlWTtcbiAgaWYgKGEgKiBkIDwgYiAqIGMpIGEgPSAtYSwgYiA9IC1iLCBza2V3WCA9IC1za2V3WCwgc2NhbGVYID0gLXNjYWxlWDtcbiAgcmV0dXJuIHtcbiAgICB0cmFuc2xhdGVYOiBlLFxuICAgIHRyYW5zbGF0ZVk6IGYsXG4gICAgcm90YXRlOiBNYXRoLmF0YW4yKGIsIGEpICogZGVncmVlcyxcbiAgICBza2V3WDogTWF0aC5hdGFuKHNrZXdYKSAqIGRlZ3JlZXMsXG4gICAgc2NhbGVYOiBzY2FsZVgsXG4gICAgc2NhbGVZOiBzY2FsZVlcbiAgfTtcbn1cbiJdLCJtYXBwaW5ncyI6IkFBQUE7QUFBQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7Iiwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///./node_modules/vega/node_modules/d3-interpolate/src/transform/decompose.js\n");

/***/ }),

/***/ "./node_modules/vega/node_modules/d3-interpolate/src/transform/index.js":
/*!******************************************************************************!*\
  !*** ./node_modules/vega/node_modules/d3-interpolate/src/transform/index.js ***!
  \******************************************************************************/
/*! exports provided: interpolateTransformCss, interpolateTransformSvg */
/***/ (function(module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"interpolateTransformCss\", function() { return interpolateTransformCss; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"interpolateTransformSvg\", function() { return interpolateTransformSvg; });\n/* harmony import */ var _number_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../number.js */ \"./node_modules/vega/node_modules/d3-interpolate/src/number.js\");\n/* harmony import */ var _parse_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./parse.js */ \"./node_modules/vega/node_modules/d3-interpolate/src/transform/parse.js\");\n\n\n\nfunction interpolateTransform(parse, pxComma, pxParen, degParen) {\n\n  function pop(s) {\n    return s.length ? s.pop() + \" \" : \"\";\n  }\n\n  function translate(xa, ya, xb, yb, s, q) {\n    if (xa !== xb || ya !== yb) {\n      var i = s.push(\"translate(\", null, pxComma, null, pxParen);\n      q.push({i: i - 4, x: Object(_number_js__WEBPACK_IMPORTED_MODULE_0__[\"default\"])(xa, xb)}, {i: i - 2, x: Object(_number_js__WEBPACK_IMPORTED_MODULE_0__[\"default\"])(ya, yb)});\n    } else if (xb || yb) {\n      s.push(\"translate(\" + xb + pxComma + yb + pxParen);\n    }\n  }\n\n  function rotate(a, b, s, q) {\n    if (a !== b) {\n      if (a - b > 180) b += 360; else if (b - a > 180) a += 360; // shortest path\n      q.push({i: s.push(pop(s) + \"rotate(\", null, degParen) - 2, x: Object(_number_js__WEBPACK_IMPORTED_MODULE_0__[\"default\"])(a, b)});\n    } else if (b) {\n      s.push(pop(s) + \"rotate(\" + b + degParen);\n    }\n  }\n\n  function skewX(a, b, s, q) {\n    if (a !== b) {\n      q.push({i: s.push(pop(s) + \"skewX(\", null, degParen) - 2, x: Object(_number_js__WEBPACK_IMPORTED_MODULE_0__[\"default\"])(a, b)});\n    } else if (b) {\n      s.push(pop(s) + \"skewX(\" + b + degParen);\n    }\n  }\n\n  function scale(xa, ya, xb, yb, s, q) {\n    if (xa !== xb || ya !== yb) {\n      var i = s.push(pop(s) + \"scale(\", null, \",\", null, \")\");\n      q.push({i: i - 4, x: Object(_number_js__WEBPACK_IMPORTED_MODULE_0__[\"default\"])(xa, xb)}, {i: i - 2, x: Object(_number_js__WEBPACK_IMPORTED_MODULE_0__[\"default\"])(ya, yb)});\n    } else if (xb !== 1 || yb !== 1) {\n      s.push(pop(s) + \"scale(\" + xb + \",\" + yb + \")\");\n    }\n  }\n\n  return function(a, b) {\n    var s = [], // string constants and placeholders\n        q = []; // number interpolators\n    a = parse(a), b = parse(b);\n    translate(a.translateX, a.translateY, b.translateX, b.translateY, s, q);\n    rotate(a.rotate, b.rotate, s, q);\n    skewX(a.skewX, b.skewX, s, q);\n    scale(a.scaleX, a.scaleY, b.scaleX, b.scaleY, s, q);\n    a = b = null; // gc\n    return function(t) {\n      var i = -1, n = q.length, o;\n      while (++i < n) s[(o = q[i]).i] = o.x(t);\n      return s.join(\"\");\n    };\n  };\n}\n\nvar interpolateTransformCss = interpolateTransform(_parse_js__WEBPACK_IMPORTED_MODULE_1__[\"parseCss\"], \"px, \", \"px)\", \"deg)\");\nvar interpolateTransformSvg = interpolateTransform(_parse_js__WEBPACK_IMPORTED_MODULE_1__[\"parseSvg\"], \", \", \")\", \")\");\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvdmVnYS9ub2RlX21vZHVsZXMvZDMtaW50ZXJwb2xhdGUvc3JjL3RyYW5zZm9ybS9pbmRleC5qcy5qcyIsInNvdXJjZXMiOlsid2VicGFjazovLy8uL25vZGVfbW9kdWxlcy92ZWdhL25vZGVfbW9kdWxlcy9kMy1pbnRlcnBvbGF0ZS9zcmMvdHJhbnNmb3JtL2luZGV4LmpzPzViMWEiXSwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IG51bWJlciBmcm9tIFwiLi4vbnVtYmVyLmpzXCI7XG5pbXBvcnQge3BhcnNlQ3NzLCBwYXJzZVN2Z30gZnJvbSBcIi4vcGFyc2UuanNcIjtcblxuZnVuY3Rpb24gaW50ZXJwb2xhdGVUcmFuc2Zvcm0ocGFyc2UsIHB4Q29tbWEsIHB4UGFyZW4sIGRlZ1BhcmVuKSB7XG5cbiAgZnVuY3Rpb24gcG9wKHMpIHtcbiAgICByZXR1cm4gcy5sZW5ndGggPyBzLnBvcCgpICsgXCIgXCIgOiBcIlwiO1xuICB9XG5cbiAgZnVuY3Rpb24gdHJhbnNsYXRlKHhhLCB5YSwgeGIsIHliLCBzLCBxKSB7XG4gICAgaWYgKHhhICE9PSB4YiB8fCB5YSAhPT0geWIpIHtcbiAgICAgIHZhciBpID0gcy5wdXNoKFwidHJhbnNsYXRlKFwiLCBudWxsLCBweENvbW1hLCBudWxsLCBweFBhcmVuKTtcbiAgICAgIHEucHVzaCh7aTogaSAtIDQsIHg6IG51bWJlcih4YSwgeGIpfSwge2k6IGkgLSAyLCB4OiBudW1iZXIoeWEsIHliKX0pO1xuICAgIH0gZWxzZSBpZiAoeGIgfHwgeWIpIHtcbiAgICAgIHMucHVzaChcInRyYW5zbGF0ZShcIiArIHhiICsgcHhDb21tYSArIHliICsgcHhQYXJlbik7XG4gICAgfVxuICB9XG5cbiAgZnVuY3Rpb24gcm90YXRlKGEsIGIsIHMsIHEpIHtcbiAgICBpZiAoYSAhPT0gYikge1xuICAgICAgaWYgKGEgLSBiID4gMTgwKSBiICs9IDM2MDsgZWxzZSBpZiAoYiAtIGEgPiAxODApIGEgKz0gMzYwOyAvLyBzaG9ydGVzdCBwYXRoXG4gICAgICBxLnB1c2goe2k6IHMucHVzaChwb3AocykgKyBcInJvdGF0ZShcIiwgbnVsbCwgZGVnUGFyZW4pIC0gMiwgeDogbnVtYmVyKGEsIGIpfSk7XG4gICAgfSBlbHNlIGlmIChiKSB7XG4gICAgICBzLnB1c2gocG9wKHMpICsgXCJyb3RhdGUoXCIgKyBiICsgZGVnUGFyZW4pO1xuICAgIH1cbiAgfVxuXG4gIGZ1bmN0aW9uIHNrZXdYKGEsIGIsIHMsIHEpIHtcbiAgICBpZiAoYSAhPT0gYikge1xuICAgICAgcS5wdXNoKHtpOiBzLnB1c2gocG9wKHMpICsgXCJza2V3WChcIiwgbnVsbCwgZGVnUGFyZW4pIC0gMiwgeDogbnVtYmVyKGEsIGIpfSk7XG4gICAgfSBlbHNlIGlmIChiKSB7XG4gICAgICBzLnB1c2gocG9wKHMpICsgXCJza2V3WChcIiArIGIgKyBkZWdQYXJlbik7XG4gICAgfVxuICB9XG5cbiAgZnVuY3Rpb24gc2NhbGUoeGEsIHlhLCB4YiwgeWIsIHMsIHEpIHtcbiAgICBpZiAoeGEgIT09IHhiIHx8IHlhICE9PSB5Yikge1xuICAgICAgdmFyIGkgPSBzLnB1c2gocG9wKHMpICsgXCJzY2FsZShcIiwgbnVsbCwgXCIsXCIsIG51bGwsIFwiKVwiKTtcbiAgICAgIHEucHVzaCh7aTogaSAtIDQsIHg6IG51bWJlcih4YSwgeGIpfSwge2k6IGkgLSAyLCB4OiBudW1iZXIoeWEsIHliKX0pO1xuICAgIH0gZWxzZSBpZiAoeGIgIT09IDEgfHwgeWIgIT09IDEpIHtcbiAgICAgIHMucHVzaChwb3AocykgKyBcInNjYWxlKFwiICsgeGIgKyBcIixcIiArIHliICsgXCIpXCIpO1xuICAgIH1cbiAgfVxuXG4gIHJldHVybiBmdW5jdGlvbihhLCBiKSB7XG4gICAgdmFyIHMgPSBbXSwgLy8gc3RyaW5nIGNvbnN0YW50cyBhbmQgcGxhY2Vob2xkZXJzXG4gICAgICAgIHEgPSBbXTsgLy8gbnVtYmVyIGludGVycG9sYXRvcnNcbiAgICBhID0gcGFyc2UoYSksIGIgPSBwYXJzZShiKTtcbiAgICB0cmFuc2xhdGUoYS50cmFuc2xhdGVYLCBhLnRyYW5zbGF0ZVksIGIudHJhbnNsYXRlWCwgYi50cmFuc2xhdGVZLCBzLCBxKTtcbiAgICByb3RhdGUoYS5yb3RhdGUsIGIucm90YXRlLCBzLCBxKTtcbiAgICBza2V3WChhLnNrZXdYLCBiLnNrZXdYLCBzLCBxKTtcbiAgICBzY2FsZShhLnNjYWxlWCwgYS5zY2FsZVksIGIuc2NhbGVYLCBiLnNjYWxlWSwgcywgcSk7XG4gICAgYSA9IGIgPSBudWxsOyAvLyBnY1xuICAgIHJldHVybiBmdW5jdGlvbih0KSB7XG4gICAgICB2YXIgaSA9IC0xLCBuID0gcS5sZW5ndGgsIG87XG4gICAgICB3aGlsZSAoKytpIDwgbikgc1sobyA9IHFbaV0pLmldID0gby54KHQpO1xuICAgICAgcmV0dXJuIHMuam9pbihcIlwiKTtcbiAgICB9O1xuICB9O1xufVxuXG5leHBvcnQgdmFyIGludGVycG9sYXRlVHJhbnNmb3JtQ3NzID0gaW50ZXJwb2xhdGVUcmFuc2Zvcm0ocGFyc2VDc3MsIFwicHgsIFwiLCBcInB4KVwiLCBcImRlZylcIik7XG5leHBvcnQgdmFyIGludGVycG9sYXRlVHJhbnNmb3JtU3ZnID0gaW50ZXJwb2xhdGVUcmFuc2Zvcm0ocGFyc2VTdmcsIFwiLCBcIiwgXCIpXCIsIFwiKVwiKTtcbiJdLCJtYXBwaW5ncyI6IkFBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTsiLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///./node_modules/vega/node_modules/d3-interpolate/src/transform/index.js\n");

/***/ }),

/***/ "./node_modules/vega/node_modules/d3-interpolate/src/transform/parse.js":
/*!******************************************************************************!*\
  !*** ./node_modules/vega/node_modules/d3-interpolate/src/transform/parse.js ***!
  \******************************************************************************/
/*! exports provided: parseCss, parseSvg */
/***/ (function(module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"parseCss\", function() { return parseCss; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"parseSvg\", function() { return parseSvg; });\n/* harmony import */ var _decompose_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./decompose.js */ \"./node_modules/vega/node_modules/d3-interpolate/src/transform/decompose.js\");\n\n\nvar svgNode;\n\n/* eslint-disable no-undef */\nfunction parseCss(value) {\n  const m = new (typeof DOMMatrix === \"function\" ? DOMMatrix : WebKitCSSMatrix)(value + \"\");\n  return m.isIdentity ? _decompose_js__WEBPACK_IMPORTED_MODULE_0__[\"identity\"] : Object(_decompose_js__WEBPACK_IMPORTED_MODULE_0__[\"default\"])(m.a, m.b, m.c, m.d, m.e, m.f);\n}\n\nfunction parseSvg(value) {\n  if (value == null) return _decompose_js__WEBPACK_IMPORTED_MODULE_0__[\"identity\"];\n  if (!svgNode) svgNode = document.createElementNS(\"http://www.w3.org/2000/svg\", \"g\");\n  svgNode.setAttribute(\"transform\", value);\n  if (!(value = svgNode.transform.baseVal.consolidate())) return _decompose_js__WEBPACK_IMPORTED_MODULE_0__[\"identity\"];\n  value = value.matrix;\n  return Object(_decompose_js__WEBPACK_IMPORTED_MODULE_0__[\"default\"])(value.a, value.b, value.c, value.d, value.e, value.f);\n}\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvdmVnYS9ub2RlX21vZHVsZXMvZDMtaW50ZXJwb2xhdGUvc3JjL3RyYW5zZm9ybS9wYXJzZS5qcy5qcyIsInNvdXJjZXMiOlsid2VicGFjazovLy8uL25vZGVfbW9kdWxlcy92ZWdhL25vZGVfbW9kdWxlcy9kMy1pbnRlcnBvbGF0ZS9zcmMvdHJhbnNmb3JtL3BhcnNlLmpzPzE3MDMiXSwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IGRlY29tcG9zZSwge2lkZW50aXR5fSBmcm9tIFwiLi9kZWNvbXBvc2UuanNcIjtcblxudmFyIHN2Z05vZGU7XG5cbi8qIGVzbGludC1kaXNhYmxlIG5vLXVuZGVmICovXG5leHBvcnQgZnVuY3Rpb24gcGFyc2VDc3ModmFsdWUpIHtcbiAgY29uc3QgbSA9IG5ldyAodHlwZW9mIERPTU1hdHJpeCA9PT0gXCJmdW5jdGlvblwiID8gRE9NTWF0cml4IDogV2ViS2l0Q1NTTWF0cml4KSh2YWx1ZSArIFwiXCIpO1xuICByZXR1cm4gbS5pc0lkZW50aXR5ID8gaWRlbnRpdHkgOiBkZWNvbXBvc2UobS5hLCBtLmIsIG0uYywgbS5kLCBtLmUsIG0uZik7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBwYXJzZVN2Zyh2YWx1ZSkge1xuICBpZiAodmFsdWUgPT0gbnVsbCkgcmV0dXJuIGlkZW50aXR5O1xuICBpZiAoIXN2Z05vZGUpIHN2Z05vZGUgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50TlMoXCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Z1wiLCBcImdcIik7XG4gIHN2Z05vZGUuc2V0QXR0cmlidXRlKFwidHJhbnNmb3JtXCIsIHZhbHVlKTtcbiAgaWYgKCEodmFsdWUgPSBzdmdOb2RlLnRyYW5zZm9ybS5iYXNlVmFsLmNvbnNvbGlkYXRlKCkpKSByZXR1cm4gaWRlbnRpdHk7XG4gIHZhbHVlID0gdmFsdWUubWF0cml4O1xuICByZXR1cm4gZGVjb21wb3NlKHZhbHVlLmEsIHZhbHVlLmIsIHZhbHVlLmMsIHZhbHVlLmQsIHZhbHVlLmUsIHZhbHVlLmYpO1xufVxuIl0sIm1hcHBpbmdzIjoiQUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTsiLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///./node_modules/vega/node_modules/d3-interpolate/src/transform/parse.js\n");

/***/ }),

/***/ "./node_modules/vega/node_modules/d3-interpolate/src/value.js":
/*!********************************************************************!*\
  !*** ./node_modules/vega/node_modules/d3-interpolate/src/value.js ***!
  \********************************************************************/
/*! exports provided: default */
/***/ (function(module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var d3_color__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! d3-color */ \"./node_modules/d3-color/src/index.js\");\n/* harmony import */ var _rgb_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./rgb.js */ \"./node_modules/vega/node_modules/d3-interpolate/src/rgb.js\");\n/* harmony import */ var _array_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./array.js */ \"./node_modules/vega/node_modules/d3-interpolate/src/array.js\");\n/* harmony import */ var _date_js__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ./date.js */ \"./node_modules/vega/node_modules/d3-interpolate/src/date.js\");\n/* harmony import */ var _number_js__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ./number.js */ \"./node_modules/vega/node_modules/d3-interpolate/src/number.js\");\n/* harmony import */ var _object_js__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! ./object.js */ \"./node_modules/vega/node_modules/d3-interpolate/src/object.js\");\n/* harmony import */ var _string_js__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! ./string.js */ \"./node_modules/vega/node_modules/d3-interpolate/src/string.js\");\n/* harmony import */ var _constant_js__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! ./constant.js */ \"./node_modules/vega/node_modules/d3-interpolate/src/constant.js\");\n/* harmony import */ var _numberArray_js__WEBPACK_IMPORTED_MODULE_8__ = __webpack_require__(/*! ./numberArray.js */ \"./node_modules/vega/node_modules/d3-interpolate/src/numberArray.js\");\n\n\n\n\n\n\n\n\n\n\n/* harmony default export */ __webpack_exports__[\"default\"] = (function(a, b) {\n  var t = typeof b, c;\n  return b == null || t === \"boolean\" ? Object(_constant_js__WEBPACK_IMPORTED_MODULE_7__[\"default\"])(b)\n      : (t === \"number\" ? _number_js__WEBPACK_IMPORTED_MODULE_4__[\"default\"]\n      : t === \"string\" ? ((c = Object(d3_color__WEBPACK_IMPORTED_MODULE_0__[\"color\"])(b)) ? (b = c, _rgb_js__WEBPACK_IMPORTED_MODULE_1__[\"default\"]) : _string_js__WEBPACK_IMPORTED_MODULE_6__[\"default\"])\n      : b instanceof d3_color__WEBPACK_IMPORTED_MODULE_0__[\"color\"] ? _rgb_js__WEBPACK_IMPORTED_MODULE_1__[\"default\"]\n      : b instanceof Date ? _date_js__WEBPACK_IMPORTED_MODULE_3__[\"default\"]\n      : Object(_numberArray_js__WEBPACK_IMPORTED_MODULE_8__[\"isNumberArray\"])(b) ? _numberArray_js__WEBPACK_IMPORTED_MODULE_8__[\"default\"]\n      : Array.isArray(b) ? _array_js__WEBPACK_IMPORTED_MODULE_2__[\"genericArray\"]\n      : typeof b.valueOf !== \"function\" && typeof b.toString !== \"function\" || isNaN(b) ? _object_js__WEBPACK_IMPORTED_MODULE_5__[\"default\"]\n      : _number_js__WEBPACK_IMPORTED_MODULE_4__[\"default\"])(a, b);\n});\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvdmVnYS9ub2RlX21vZHVsZXMvZDMtaW50ZXJwb2xhdGUvc3JjL3ZhbHVlLmpzLmpzIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL3ZlZ2Evbm9kZV9tb2R1bGVzL2QzLWludGVycG9sYXRlL3NyYy92YWx1ZS5qcz83NWRhIl0sInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7Y29sb3J9IGZyb20gXCJkMy1jb2xvclwiO1xuaW1wb3J0IHJnYiBmcm9tIFwiLi9yZ2IuanNcIjtcbmltcG9ydCB7Z2VuZXJpY0FycmF5fSBmcm9tIFwiLi9hcnJheS5qc1wiO1xuaW1wb3J0IGRhdGUgZnJvbSBcIi4vZGF0ZS5qc1wiO1xuaW1wb3J0IG51bWJlciBmcm9tIFwiLi9udW1iZXIuanNcIjtcbmltcG9ydCBvYmplY3QgZnJvbSBcIi4vb2JqZWN0LmpzXCI7XG5pbXBvcnQgc3RyaW5nIGZyb20gXCIuL3N0cmluZy5qc1wiO1xuaW1wb3J0IGNvbnN0YW50IGZyb20gXCIuL2NvbnN0YW50LmpzXCI7XG5pbXBvcnQgbnVtYmVyQXJyYXksIHtpc051bWJlckFycmF5fSBmcm9tIFwiLi9udW1iZXJBcnJheS5qc1wiO1xuXG5leHBvcnQgZGVmYXVsdCBmdW5jdGlvbihhLCBiKSB7XG4gIHZhciB0ID0gdHlwZW9mIGIsIGM7XG4gIHJldHVybiBiID09IG51bGwgfHwgdCA9PT0gXCJib29sZWFuXCIgPyBjb25zdGFudChiKVxuICAgICAgOiAodCA9PT0gXCJudW1iZXJcIiA/IG51bWJlclxuICAgICAgOiB0ID09PSBcInN0cmluZ1wiID8gKChjID0gY29sb3IoYikpID8gKGIgPSBjLCByZ2IpIDogc3RyaW5nKVxuICAgICAgOiBiIGluc3RhbmNlb2YgY29sb3IgPyByZ2JcbiAgICAgIDogYiBpbnN0YW5jZW9mIERhdGUgPyBkYXRlXG4gICAgICA6IGlzTnVtYmVyQXJyYXkoYikgPyBudW1iZXJBcnJheVxuICAgICAgOiBBcnJheS5pc0FycmF5KGIpID8gZ2VuZXJpY0FycmF5XG4gICAgICA6IHR5cGVvZiBiLnZhbHVlT2YgIT09IFwiZnVuY3Rpb25cIiAmJiB0eXBlb2YgYi50b1N0cmluZyAhPT0gXCJmdW5jdGlvblwiIHx8IGlzTmFOKGIpID8gb2JqZWN0XG4gICAgICA6IG51bWJlcikoYSwgYik7XG59XG4iXSwibWFwcGluZ3MiOiJBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7Iiwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///./node_modules/vega/node_modules/d3-interpolate/src/value.js\n");

/***/ }),

/***/ "./node_modules/vega/node_modules/d3-interpolate/src/zoom.js":
/*!*******************************************************************!*\
  !*** ./node_modules/vega/node_modules/d3-interpolate/src/zoom.js ***!
  \*******************************************************************/
/*! exports provided: default */
/***/ (function(module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\nvar epsilon2 = 1e-12;\n\nfunction cosh(x) {\n  return ((x = Math.exp(x)) + 1 / x) / 2;\n}\n\nfunction sinh(x) {\n  return ((x = Math.exp(x)) - 1 / x) / 2;\n}\n\nfunction tanh(x) {\n  return ((x = Math.exp(2 * x)) - 1) / (x + 1);\n}\n\n/* harmony default export */ __webpack_exports__[\"default\"] = ((function zoomRho(rho, rho2, rho4) {\n\n  // p0 = [ux0, uy0, w0]\n  // p1 = [ux1, uy1, w1]\n  function zoom(p0, p1) {\n    var ux0 = p0[0], uy0 = p0[1], w0 = p0[2],\n        ux1 = p1[0], uy1 = p1[1], w1 = p1[2],\n        dx = ux1 - ux0,\n        dy = uy1 - uy0,\n        d2 = dx * dx + dy * dy,\n        i,\n        S;\n\n    // Special case for u0 ≅ u1.\n    if (d2 < epsilon2) {\n      S = Math.log(w1 / w0) / rho;\n      i = function(t) {\n        return [\n          ux0 + t * dx,\n          uy0 + t * dy,\n          w0 * Math.exp(rho * t * S)\n        ];\n      }\n    }\n\n    // General case.\n    else {\n      var d1 = Math.sqrt(d2),\n          b0 = (w1 * w1 - w0 * w0 + rho4 * d2) / (2 * w0 * rho2 * d1),\n          b1 = (w1 * w1 - w0 * w0 - rho4 * d2) / (2 * w1 * rho2 * d1),\n          r0 = Math.log(Math.sqrt(b0 * b0 + 1) - b0),\n          r1 = Math.log(Math.sqrt(b1 * b1 + 1) - b1);\n      S = (r1 - r0) / rho;\n      i = function(t) {\n        var s = t * S,\n            coshr0 = cosh(r0),\n            u = w0 / (rho2 * d1) * (coshr0 * tanh(rho * s + r0) - sinh(r0));\n        return [\n          ux0 + u * dx,\n          uy0 + u * dy,\n          w0 * coshr0 / cosh(rho * s + r0)\n        ];\n      }\n    }\n\n    i.duration = S * 1000 * rho / Math.SQRT2;\n\n    return i;\n  }\n\n  zoom.rho = function(_) {\n    var _1 = Math.max(1e-3, +_), _2 = _1 * _1, _4 = _2 * _2;\n    return zoomRho(_1, _2, _4);\n  };\n\n  return zoom;\n})(Math.SQRT2, 2, 4));\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvdmVnYS9ub2RlX21vZHVsZXMvZDMtaW50ZXJwb2xhdGUvc3JjL3pvb20uanMuanMiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvdmVnYS9ub2RlX21vZHVsZXMvZDMtaW50ZXJwb2xhdGUvc3JjL3pvb20uanM/Mjg0ZSJdLCJzb3VyY2VzQ29udGVudCI6WyJ2YXIgZXBzaWxvbjIgPSAxZS0xMjtcblxuZnVuY3Rpb24gY29zaCh4KSB7XG4gIHJldHVybiAoKHggPSBNYXRoLmV4cCh4KSkgKyAxIC8geCkgLyAyO1xufVxuXG5mdW5jdGlvbiBzaW5oKHgpIHtcbiAgcmV0dXJuICgoeCA9IE1hdGguZXhwKHgpKSAtIDEgLyB4KSAvIDI7XG59XG5cbmZ1bmN0aW9uIHRhbmgoeCkge1xuICByZXR1cm4gKCh4ID0gTWF0aC5leHAoMiAqIHgpKSAtIDEpIC8gKHggKyAxKTtcbn1cblxuZXhwb3J0IGRlZmF1bHQgKGZ1bmN0aW9uIHpvb21SaG8ocmhvLCByaG8yLCByaG80KSB7XG5cbiAgLy8gcDAgPSBbdXgwLCB1eTAsIHcwXVxuICAvLyBwMSA9IFt1eDEsIHV5MSwgdzFdXG4gIGZ1bmN0aW9uIHpvb20ocDAsIHAxKSB7XG4gICAgdmFyIHV4MCA9IHAwWzBdLCB1eTAgPSBwMFsxXSwgdzAgPSBwMFsyXSxcbiAgICAgICAgdXgxID0gcDFbMF0sIHV5MSA9IHAxWzFdLCB3MSA9IHAxWzJdLFxuICAgICAgICBkeCA9IHV4MSAtIHV4MCxcbiAgICAgICAgZHkgPSB1eTEgLSB1eTAsXG4gICAgICAgIGQyID0gZHggKiBkeCArIGR5ICogZHksXG4gICAgICAgIGksXG4gICAgICAgIFM7XG5cbiAgICAvLyBTcGVjaWFsIGNhc2UgZm9yIHUwIOKJhSB1MS5cbiAgICBpZiAoZDIgPCBlcHNpbG9uMikge1xuICAgICAgUyA9IE1hdGgubG9nKHcxIC8gdzApIC8gcmhvO1xuICAgICAgaSA9IGZ1bmN0aW9uKHQpIHtcbiAgICAgICAgcmV0dXJuIFtcbiAgICAgICAgICB1eDAgKyB0ICogZHgsXG4gICAgICAgICAgdXkwICsgdCAqIGR5LFxuICAgICAgICAgIHcwICogTWF0aC5leHAocmhvICogdCAqIFMpXG4gICAgICAgIF07XG4gICAgICB9XG4gICAgfVxuXG4gICAgLy8gR2VuZXJhbCBjYXNlLlxuICAgIGVsc2Uge1xuICAgICAgdmFyIGQxID0gTWF0aC5zcXJ0KGQyKSxcbiAgICAgICAgICBiMCA9ICh3MSAqIHcxIC0gdzAgKiB3MCArIHJobzQgKiBkMikgLyAoMiAqIHcwICogcmhvMiAqIGQxKSxcbiAgICAgICAgICBiMSA9ICh3MSAqIHcxIC0gdzAgKiB3MCAtIHJobzQgKiBkMikgLyAoMiAqIHcxICogcmhvMiAqIGQxKSxcbiAgICAgICAgICByMCA9IE1hdGgubG9nKE1hdGguc3FydChiMCAqIGIwICsgMSkgLSBiMCksXG4gICAgICAgICAgcjEgPSBNYXRoLmxvZyhNYXRoLnNxcnQoYjEgKiBiMSArIDEpIC0gYjEpO1xuICAgICAgUyA9IChyMSAtIHIwKSAvIHJobztcbiAgICAgIGkgPSBmdW5jdGlvbih0KSB7XG4gICAgICAgIHZhciBzID0gdCAqIFMsXG4gICAgICAgICAgICBjb3NocjAgPSBjb3NoKHIwKSxcbiAgICAgICAgICAgIHUgPSB3MCAvIChyaG8yICogZDEpICogKGNvc2hyMCAqIHRhbmgocmhvICogcyArIHIwKSAtIHNpbmgocjApKTtcbiAgICAgICAgcmV0dXJuIFtcbiAgICAgICAgICB1eDAgKyB1ICogZHgsXG4gICAgICAgICAgdXkwICsgdSAqIGR5LFxuICAgICAgICAgIHcwICogY29zaHIwIC8gY29zaChyaG8gKiBzICsgcjApXG4gICAgICAgIF07XG4gICAgICB9XG4gICAgfVxuXG4gICAgaS5kdXJhdGlvbiA9IFMgKiAxMDAwICogcmhvIC8gTWF0aC5TUVJUMjtcblxuICAgIHJldHVybiBpO1xuICB9XG5cbiAgem9vbS5yaG8gPSBmdW5jdGlvbihfKSB7XG4gICAgdmFyIF8xID0gTWF0aC5tYXgoMWUtMywgK18pLCBfMiA9IF8xICogXzEsIF80ID0gXzIgKiBfMjtcbiAgICByZXR1cm4gem9vbVJobyhfMSwgXzIsIF80KTtcbiAgfTtcblxuICByZXR1cm4gem9vbTtcbn0pKE1hdGguU1FSVDIsIDIsIDQpO1xuIl0sIm1hcHBpbmdzIjoiQUFBQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7Iiwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///./node_modules/vega/node_modules/d3-interpolate/src/zoom.js\n");

/***/ }),

/***/ "./node_modules/vega/node_modules/d3-path/src/index.js":
/*!*************************************************************!*\
  !*** ./node_modules/vega/node_modules/d3-path/src/index.js ***!
  \*************************************************************/
/*! exports provided: path */
/***/ (function(module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _path_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./path.js */ \"./node_modules/vega/node_modules/d3-path/src/path.js\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"path\", function() { return _path_js__WEBPACK_IMPORTED_MODULE_0__[\"default\"]; });\n\n\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvdmVnYS9ub2RlX21vZHVsZXMvZDMtcGF0aC9zcmMvaW5kZXguanMuanMiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvdmVnYS9ub2RlX21vZHVsZXMvZDMtcGF0aC9zcmMvaW5kZXguanM/YWQ4NyJdLCJzb3VyY2VzQ29udGVudCI6WyJleHBvcnQge2RlZmF1bHQgYXMgcGF0aH0gZnJvbSBcIi4vcGF0aC5qc1wiO1xuIl0sIm1hcHBpbmdzIjoiQUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBOyIsInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///./node_modules/vega/node_modules/d3-path/src/index.js\n");

/***/ }),

/***/ "./node_modules/vega/node_modules/d3-path/src/path.js":
/*!************************************************************!*\
  !*** ./node_modules/vega/node_modules/d3-path/src/path.js ***!
  \************************************************************/
/*! exports provided: default */
/***/ (function(module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\nconst pi = Math.PI,\n    tau = 2 * pi,\n    epsilon = 1e-6,\n    tauEpsilon = tau - epsilon;\n\nfunction Path() {\n  this._x0 = this._y0 = // start of current subpath\n  this._x1 = this._y1 = null; // end of current subpath\n  this._ = \"\";\n}\n\nfunction path() {\n  return new Path;\n}\n\nPath.prototype = path.prototype = {\n  constructor: Path,\n  moveTo: function(x, y) {\n    this._ += \"M\" + (this._x0 = this._x1 = +x) + \",\" + (this._y0 = this._y1 = +y);\n  },\n  closePath: function() {\n    if (this._x1 !== null) {\n      this._x1 = this._x0, this._y1 = this._y0;\n      this._ += \"Z\";\n    }\n  },\n  lineTo: function(x, y) {\n    this._ += \"L\" + (this._x1 = +x) + \",\" + (this._y1 = +y);\n  },\n  quadraticCurveTo: function(x1, y1, x, y) {\n    this._ += \"Q\" + (+x1) + \",\" + (+y1) + \",\" + (this._x1 = +x) + \",\" + (this._y1 = +y);\n  },\n  bezierCurveTo: function(x1, y1, x2, y2, x, y) {\n    this._ += \"C\" + (+x1) + \",\" + (+y1) + \",\" + (+x2) + \",\" + (+y2) + \",\" + (this._x1 = +x) + \",\" + (this._y1 = +y);\n  },\n  arcTo: function(x1, y1, x2, y2, r) {\n    x1 = +x1, y1 = +y1, x2 = +x2, y2 = +y2, r = +r;\n    var x0 = this._x1,\n        y0 = this._y1,\n        x21 = x2 - x1,\n        y21 = y2 - y1,\n        x01 = x0 - x1,\n        y01 = y0 - y1,\n        l01_2 = x01 * x01 + y01 * y01;\n\n    // Is the radius negative? Error.\n    if (r < 0) throw new Error(\"negative radius: \" + r);\n\n    // Is this path empty? Move to (x1,y1).\n    if (this._x1 === null) {\n      this._ += \"M\" + (this._x1 = x1) + \",\" + (this._y1 = y1);\n    }\n\n    // Or, is (x1,y1) coincident with (x0,y0)? Do nothing.\n    else if (!(l01_2 > epsilon));\n\n    // Or, are (x0,y0), (x1,y1) and (x2,y2) collinear?\n    // Equivalently, is (x1,y1) coincident with (x2,y2)?\n    // Or, is the radius zero? Line to (x1,y1).\n    else if (!(Math.abs(y01 * x21 - y21 * x01) > epsilon) || !r) {\n      this._ += \"L\" + (this._x1 = x1) + \",\" + (this._y1 = y1);\n    }\n\n    // Otherwise, draw an arc!\n    else {\n      var x20 = x2 - x0,\n          y20 = y2 - y0,\n          l21_2 = x21 * x21 + y21 * y21,\n          l20_2 = x20 * x20 + y20 * y20,\n          l21 = Math.sqrt(l21_2),\n          l01 = Math.sqrt(l01_2),\n          l = r * Math.tan((pi - Math.acos((l21_2 + l01_2 - l20_2) / (2 * l21 * l01))) / 2),\n          t01 = l / l01,\n          t21 = l / l21;\n\n      // If the start tangent is not coincident with (x0,y0), line to.\n      if (Math.abs(t01 - 1) > epsilon) {\n        this._ += \"L\" + (x1 + t01 * x01) + \",\" + (y1 + t01 * y01);\n      }\n\n      this._ += \"A\" + r + \",\" + r + \",0,0,\" + (+(y01 * x20 > x01 * y20)) + \",\" + (this._x1 = x1 + t21 * x21) + \",\" + (this._y1 = y1 + t21 * y21);\n    }\n  },\n  arc: function(x, y, r, a0, a1, ccw) {\n    x = +x, y = +y, r = +r, ccw = !!ccw;\n    var dx = r * Math.cos(a0),\n        dy = r * Math.sin(a0),\n        x0 = x + dx,\n        y0 = y + dy,\n        cw = 1 ^ ccw,\n        da = ccw ? a0 - a1 : a1 - a0;\n\n    // Is the radius negative? Error.\n    if (r < 0) throw new Error(\"negative radius: \" + r);\n\n    // Is this path empty? Move to (x0,y0).\n    if (this._x1 === null) {\n      this._ += \"M\" + x0 + \",\" + y0;\n    }\n\n    // Or, is (x0,y0) not coincident with the previous point? Line to (x0,y0).\n    else if (Math.abs(this._x1 - x0) > epsilon || Math.abs(this._y1 - y0) > epsilon) {\n      this._ += \"L\" + x0 + \",\" + y0;\n    }\n\n    // Is this arc empty? We’re done.\n    if (!r) return;\n\n    // Does the angle go the wrong way? Flip the direction.\n    if (da < 0) da = da % tau + tau;\n\n    // Is this a complete circle? Draw two arcs to complete the circle.\n    if (da > tauEpsilon) {\n      this._ += \"A\" + r + \",\" + r + \",0,1,\" + cw + \",\" + (x - dx) + \",\" + (y - dy) + \"A\" + r + \",\" + r + \",0,1,\" + cw + \",\" + (this._x1 = x0) + \",\" + (this._y1 = y0);\n    }\n\n    // Is this arc non-empty? Draw an arc!\n    else if (da > epsilon) {\n      this._ += \"A\" + r + \",\" + r + \",0,\" + (+(da >= pi)) + \",\" + cw + \",\" + (this._x1 = x + r * Math.cos(a1)) + \",\" + (this._y1 = y + r * Math.sin(a1));\n    }\n  },\n  rect: function(x, y, w, h) {\n    this._ += \"M\" + (this._x0 = this._x1 = +x) + \",\" + (this._y0 = this._y1 = +y) + \"h\" + (+w) + \"v\" + (+h) + \"h\" + (-w) + \"Z\";\n  },\n  toString: function() {\n    return this._;\n  }\n};\n\n/* harmony default export */ __webpack_exports__[\"default\"] = (path);\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,[encoded data, 7068 characters]\n//# sourceURL=webpack-internal:///./node_modules/vega/node_modules/d3-path/src/path.js\n");

/***/ }),

/***/ "./node_modules/vega/node_modules/d3-scale/src/band.js":
/*!*************************************************************!*\
  !*** ./node_modules/vega/node_modules/d3-scale/src/band.js ***!
  \*************************************************************/
/*! exports provided: default, point */
/***/ (function(module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"default\", function() { return band; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"point\", function() { return point; });\n/* harmony import */ var d3_array__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! d3-array */ \"./node_modules/d3-array/src/index.js\");\n/* harmony import */ var _init_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./init.js */ \"./node_modules/vega/node_modules/d3-scale/src/init.js\");\n/* harmony import */ var _ordinal_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./ordinal.js */ \"./node_modules/vega/node_modules/d3-scale/src/ordinal.js\");\n\n\n\n\nfunction band() {\n  var scale = Object(_ordinal_js__WEBPACK_IMPORTED_MODULE_2__[\"default\"])().unknown(undefined),\n      domain = scale.domain,\n      ordinalRange = scale.range,\n      r0 = 0,\n      r1 = 1,\n      step,\n      bandwidth,\n      round = false,\n      paddingInner = 0,\n      paddingOuter = 0,\n      align = 0.5;\n\n  delete scale.unknown;\n\n  function rescale() {\n    var n = domain().length,\n        reverse = r1 < r0,\n        start = reverse ? r1 : r0,\n        stop = reverse ? r0 : r1;\n    step = (stop - start) / Math.max(1, n - paddingInner + paddingOuter * 2);\n    if (round) step = Math.floor(step);\n    start += (stop - start - step * (n - paddingInner)) * align;\n    bandwidth = step * (1 - paddingInner);\n    if (round) start = Math.round(start), bandwidth = Math.round(bandwidth);\n    var values = Object(d3_array__WEBPACK_IMPORTED_MODULE_0__[\"range\"])(n).map(function(i) { return start + step * i; });\n    return ordinalRange(reverse ? values.reverse() : values);\n  }\n\n  scale.domain = function(_) {\n    return arguments.length ? (domain(_), rescale()) : domain();\n  };\n\n  scale.range = function(_) {\n    return arguments.length ? ([r0, r1] = _, r0 = +r0, r1 = +r1, rescale()) : [r0, r1];\n  };\n\n  scale.rangeRound = function(_) {\n    return [r0, r1] = _, r0 = +r0, r1 = +r1, round = true, rescale();\n  };\n\n  scale.bandwidth = function() {\n    return bandwidth;\n  };\n\n  scale.step = function() {\n    return step;\n  };\n\n  scale.round = function(_) {\n    return arguments.length ? (round = !!_, rescale()) : round;\n  };\n\n  scale.padding = function(_) {\n    return arguments.length ? (paddingInner = Math.min(1, paddingOuter = +_), rescale()) : paddingInner;\n  };\n\n  scale.paddingInner = function(_) {\n    return arguments.length ? (paddingInner = Math.min(1, _), rescale()) : paddingInner;\n  };\n\n  scale.paddingOuter = function(_) {\n    return arguments.length ? (paddingOuter = +_, rescale()) : paddingOuter;\n  };\n\n  scale.align = function(_) {\n    return arguments.length ? (align = Math.max(0, Math.min(1, _)), rescale()) : align;\n  };\n\n  scale.copy = function() {\n    return band(domain(), [r0, r1])\n        .round(round)\n        .paddingInner(paddingInner)\n        .paddingOuter(paddingOuter)\n        .align(align);\n  };\n\n  return _init_js__WEBPACK_IMPORTED_MODULE_1__[\"initRange\"].apply(rescale(), arguments);\n}\n\nfunction pointish(scale) {\n  var copy = scale.copy;\n\n  scale.padding = scale.paddingOuter;\n  delete scale.paddingInner;\n  delete scale.paddingOuter;\n\n  scale.copy = function() {\n    return pointish(copy());\n  };\n\n  return scale;\n}\n\nfunction point() {\n  return pointish(band.apply(null, arguments).paddingInner(1));\n}\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,[encoded data, 4680 characters]\n//# sourceURL=webpack-internal:///./node_modules/vega/node_modules/d3-scale/src/band.js\n");

/***/ }),

/***/ "./node_modules/vega/node_modules/d3-scale/src/constant.js":
/*!*****************************************************************!*\
  !*** ./node_modules/vega/node_modules/d3-scale/src/constant.js ***!
  \*****************************************************************/
/*! exports provided: default */
/***/ (function(module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"default\", function() { return constants; });\nfunction constants(x) {\n  return function() {\n    return x;\n  };\n}\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvdmVnYS9ub2RlX21vZHVsZXMvZDMtc2NhbGUvc3JjL2NvbnN0YW50LmpzLmpzIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL3ZlZ2Evbm9kZV9tb2R1bGVzL2QzLXNjYWxlL3NyYy9jb25zdGFudC5qcz80NjdiIl0sInNvdXJjZXNDb250ZW50IjpbImV4cG9ydCBkZWZhdWx0IGZ1bmN0aW9uIGNvbnN0YW50cyh4KSB7XG4gIHJldHVybiBmdW5jdGlvbigpIHtcbiAgICByZXR1cm4geDtcbiAgfTtcbn1cbiJdLCJtYXBwaW5ncyI6IkFBQUE7QUFBQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7Iiwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///./node_modules/vega/node_modules/d3-scale/src/constant.js\n");

/***/ }),

/***/ "./node_modules/vega/node_modules/d3-scale/src/continuous.js":
/*!*******************************************************************!*\
  !*** ./node_modules/vega/node_modules/d3-scale/src/continuous.js ***!
  \*******************************************************************/
/*! exports provided: identity, copy, transformer, default */
/***/ (function(module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"identity\", function() { return identity; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"copy\", function() { return copy; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"transformer\", function() { return transformer; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"default\", function() { return continuous; });\n/* harmony import */ var d3_array__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! d3-array */ \"./node_modules/d3-array/src/index.js\");\n/* harmony import */ var d3_interpolate__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! d3-interpolate */ \"./node_modules/vega/node_modules/d3-interpolate/src/index.js\");\n/* harmony import */ var _constant_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./constant.js */ \"./node_modules/vega/node_modules/d3-scale/src/constant.js\");\n/* harmony import */ var _number_js__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ./number.js */ \"./node_modules/vega/node_modules/d3-scale/src/number.js\");\n\n\n\n\n\nvar unit = [0, 1];\n\nfunction identity(x) {\n  return x;\n}\n\nfunction normalize(a, b) {\n  return (b -= (a = +a))\n      ? function(x) { return (x - a) / b; }\n      : Object(_constant_js__WEBPACK_IMPORTED_MODULE_2__[\"default\"])(isNaN(b) ? NaN : 0.5);\n}\n\nfunction clamper(a, b) {\n  var t;\n  if (a > b) t = a, a = b, b = t;\n  return function(x) { return Math.max(a, Math.min(b, x)); };\n}\n\n// normalize(a, b)(x) takes a domain value x in [a,b] and returns the corresponding parameter t in [0,1].\n// interpolate(a, b)(t) takes a parameter t in [0,1] and returns the corresponding range value x in [a,b].\nfunction bimap(domain, range, interpolate) {\n  var d0 = domain[0], d1 = domain[1], r0 = range[0], r1 = range[1];\n  if (d1 < d0) d0 = normalize(d1, d0), r0 = interpolate(r1, r0);\n  else d0 = normalize(d0, d1), r0 = interpolate(r0, r1);\n  return function(x) { return r0(d0(x)); };\n}\n\nfunction polymap(domain, range, interpolate) {\n  var j = Math.min(domain.length, range.length) - 1,\n      d = new Array(j),\n      r = new Array(j),\n      i = -1;\n\n  // Reverse descending domains.\n  if (domain[j] < domain[0]) {\n    domain = domain.slice().reverse();\n    range = range.slice().reverse();\n  }\n\n  while (++i < j) {\n    d[i] = normalize(domain[i], domain[i + 1]);\n    r[i] = interpolate(range[i], range[i + 1]);\n  }\n\n  return function(x) {\n    var i = Object(d3_array__WEBPACK_IMPORTED_MODULE_0__[\"bisect\"])(domain, x, 1, j) - 1;\n    return r[i](d[i](x));\n  };\n}\n\nfunction copy(source, target) {\n  return target\n      .domain(source.domain())\n      .range(source.range())\n      .interpolate(source.interpolate())\n      .clamp(source.clamp())\n      .unknown(source.unknown());\n}\n\nfunction transformer() {\n  var domain = unit,\n      range = unit,\n      interpolate = d3_interpolate__WEBPACK_IMPORTED_MODULE_1__[\"interpolate\"],\n      transform,\n      untransform,\n      unknown,\n      clamp = identity,\n      piecewise,\n      output,\n      input;\n\n  function rescale() {\n    var n = Math.min(domain.length, range.length);\n    if (clamp !== identity) clamp = clamper(domain[0], domain[n - 1]);\n    piecewise = n > 2 ? polymap : bimap;\n    output = input = null;\n    return scale;\n  }\n\n  function scale(x) {\n    return x == null || isNaN(x = +x) ? unknown : (output || (output = piecewise(domain.map(transform), range, interpolate)))(transform(clamp(x)));\n  }\n\n  scale.invert = function(y) {\n    return clamp(untransform((input || (input = piecewise(range, domain.map(transform), d3_interpolate__WEBPACK_IMPORTED_MODULE_1__[\"interpolateNumber\"])))(y)));\n  };\n\n  scale.domain = function(_) {\n    return arguments.length ? (domain = Array.from(_, _number_js__WEBPACK_IMPORTED_MODULE_3__[\"default\"]), rescale()) : domain.slice();\n  };\n\n  scale.range = function(_) {\n    return arguments.length ? (range = Array.from(_), rescale()) : range.slice();\n  };\n\n  scale.rangeRound = function(_) {\n    return range = Array.from(_), interpolate = d3_interpolate__WEBPACK_IMPORTED_MODULE_1__[\"interpolateRound\"], rescale();\n  };\n\n  scale.clamp = function(_) {\n    return arguments.length ? (clamp = _ ? true : identity, rescale()) : clamp !== identity;\n  };\n\n  scale.interpolate = function(_) {\n    return arguments.length ? (interpolate = _, rescale()) : interpolate;\n  };\n\n  scale.unknown = function(_) {\n    return arguments.length ? (unknown = _, scale) : unknown;\n  };\n\n  return function(t, u) {\n    transform = t, untransform = u;\n    return rescale();\n  };\n}\n\nfunction continuous() {\n  return transformer()(identity, identity);\n}\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,[encoded data, 6000 characters]\n//# sourceURL=webpack-internal:///./node_modules/vega/node_modules/d3-scale/src/continuous.js\n");

/***/ }),

/***/ "./node_modules/vega/node_modules/d3-scale/src/diverging.js":
/*!******************************************************************!*\
  !*** ./node_modules/vega/node_modules/d3-scale/src/diverging.js ***!
  \******************************************************************/
/*! exports provided: default, divergingLog, divergingSymlog, divergingPow, divergingSqrt */
/***/ (function(module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"default\", function() { return diverging; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"divergingLog\", function() { return divergingLog; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"divergingSymlog\", function() { return divergingSymlog; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"divergingPow\", function() { return divergingPow; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"divergingSqrt\", function() { return divergingSqrt; });\n/* harmony import */ var d3_interpolate__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! d3-interpolate */ \"./node_modules/vega/node_modules/d3-interpolate/src/index.js\");\n/* harmony import */ var _continuous_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./continuous.js */ \"./node_modules/vega/node_modules/d3-scale/src/continuous.js\");\n/* harmony import */ var _init_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./init.js */ \"./node_modules/vega/node_modules/d3-scale/src/init.js\");\n/* harmony import */ var _linear_js__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ./linear.js */ \"./node_modules/vega/node_modules/d3-scale/src/linear.js\");\n/* harmony import */ var _log_js__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ./log.js */ \"./node_modules/vega/node_modules/d3-scale/src/log.js\");\n/* harmony import */ var _sequential_js__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! ./sequential.js */ \"./node_modules/vega/node_modules/d3-scale/src/sequential.js\");\n/* harmony import */ var _symlog_js__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! ./symlog.js */ \"./node_modules/vega/node_modules/d3-scale/src/symlog.js\");\n/* harmony import */ var _pow_js__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! ./pow.js */ \"./node_modules/vega/node_modules/d3-scale/src/pow.js\");\n\n\n\n\n\n\n\n\n\nfunction transformer() {\n  var x0 = 0,\n      x1 = 0.5,\n      x2 = 1,\n      s = 1,\n      t0,\n      t1,\n      t2,\n      k10,\n      k21,\n      interpolator = _continuous_js__WEBPACK_IMPORTED_MODULE_1__[\"identity\"],\n      transform,\n      clamp = false,\n      unknown;\n\n  function scale(x) {\n    return isNaN(x = +x) ? unknown : (x = 0.5 + ((x = +transform(x)) - t1) * (s * x < s * t1 ? k10 : k21), interpolator(clamp ? Math.max(0, Math.min(1, x)) : x));\n  }\n\n  scale.domain = function(_) {\n    return arguments.length ? ([x0, x1, x2] = _, t0 = transform(x0 = +x0), t1 = transform(x1 = +x1), t2 = transform(x2 = +x2), k10 = t0 === t1 ? 0 : 0.5 / (t1 - t0), k21 = t1 === t2 ? 0 : 0.5 / (t2 - t1), s = t1 < t0 ? -1 : 1, scale) : [x0, x1, x2];\n  };\n\n  scale.clamp = function(_) {\n    return arguments.length ? (clamp = !!_, scale) : clamp;\n  };\n\n  scale.interpolator = function(_) {\n    return arguments.length ? (interpolator = _, scale) : interpolator;\n  };\n\n  function range(interpolate) {\n    return function(_) {\n      var r0, r1, r2;\n      return arguments.length ? ([r0, r1, r2] = _, interpolator = Object(d3_interpolate__WEBPACK_IMPORTED_MODULE_0__[\"piecewise\"])(interpolate, [r0, r1, r2]), scale) : [interpolator(0), interpolator(0.5), interpolator(1)];\n    };\n  }\n\n  scale.range = range(d3_interpolate__WEBPACK_IMPORTED_MODULE_0__[\"interpolate\"]);\n\n  scale.rangeRound = range(d3_interpolate__WEBPACK_IMPORTED_MODULE_0__[\"interpolateRound\"]);\n\n  scale.unknown = function(_) {\n    return arguments.length ? (unknown = _, scale) : unknown;\n  };\n\n  return function(t) {\n    transform = t, t0 = t(x0), t1 = t(x1), t2 = t(x2), k10 = t0 === t1 ? 0 : 0.5 / (t1 - t0), k21 = t1 === t2 ? 0 : 0.5 / (t2 - t1), s = t1 < t0 ? -1 : 1;\n    return scale;\n  };\n}\n\nfunction diverging() {\n  var scale = Object(_linear_js__WEBPACK_IMPORTED_MODULE_3__[\"linearish\"])(transformer()(_continuous_js__WEBPACK_IMPORTED_MODULE_1__[\"identity\"]));\n\n  scale.copy = function() {\n    return Object(_sequential_js__WEBPACK_IMPORTED_MODULE_5__[\"copy\"])(scale, diverging());\n  };\n\n  return _init_js__WEBPACK_IMPORTED_MODULE_2__[\"initInterpolator\"].apply(scale, arguments);\n}\n\nfunction divergingLog() {\n  var scale = Object(_log_js__WEBPACK_IMPORTED_MODULE_4__[\"loggish\"])(transformer()).domain([0.1, 1, 10]);\n\n  scale.copy = function() {\n    return Object(_sequential_js__WEBPACK_IMPORTED_MODULE_5__[\"copy\"])(scale, divergingLog()).base(scale.base());\n  };\n\n  return _init_js__WEBPACK_IMPORTED_MODULE_2__[\"initInterpolator\"].apply(scale, arguments);\n}\n\nfunction divergingSymlog() {\n  var scale = Object(_symlog_js__WEBPACK_IMPORTED_MODULE_6__[\"symlogish\"])(transformer());\n\n  scale.copy = function() {\n    return Object(_sequential_js__WEBPACK_IMPORTED_MODULE_5__[\"copy\"])(scale, divergingSymlog()).constant(scale.constant());\n  };\n\n  return _init_js__WEBPACK_IMPORTED_MODULE_2__[\"initInterpolator\"].apply(scale, arguments);\n}\n\nfunction divergingPow() {\n  var scale = Object(_pow_js__WEBPACK_IMPORTED_MODULE_7__[\"powish\"])(transformer());\n\n  scale.copy = function() {\n    return Object(_sequential_js__WEBPACK_IMPORTED_MODULE_5__[\"copy\"])(scale, divergingPow()).exponent(scale.exponent());\n  };\n\n  return _init_js__WEBPACK_IMPORTED_MODULE_2__[\"initInterpolator\"].apply(scale, arguments);\n}\n\nfunction divergingSqrt() {\n  return divergingPow.apply(null, arguments).exponent(0.5);\n}\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,[encoded data, 5124 characters]\n//# sourceURL=webpack-internal:///./node_modules/vega/node_modules/d3-scale/src/diverging.js\n");

/***/ }),

/***/ "./node_modules/vega/node_modules/d3-scale/src/identity.js":
/*!*****************************************************************!*\
  !*** ./node_modules/vega/node_modules/d3-scale/src/identity.js ***!
  \*****************************************************************/
/*! exports provided: default */
/***/ (function(module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"default\", function() { return identity; });\n/* harmony import */ var _linear_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./linear.js */ \"./node_modules/vega/node_modules/d3-scale/src/linear.js\");\n/* harmony import */ var _number_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./number.js */ \"./node_modules/vega/node_modules/d3-scale/src/number.js\");\n\n\n\nfunction identity(domain) {\n  var unknown;\n\n  function scale(x) {\n    return x == null || isNaN(x = +x) ? unknown : x;\n  }\n\n  scale.invert = scale;\n\n  scale.domain = scale.range = function(_) {\n    return arguments.length ? (domain = Array.from(_, _number_js__WEBPACK_IMPORTED_MODULE_1__[\"default\"]), scale) : domain.slice();\n  };\n\n  scale.unknown = function(_) {\n    return arguments.length ? (unknown = _, scale) : unknown;\n  };\n\n  scale.copy = function() {\n    return identity(domain).unknown(unknown);\n  };\n\n  domain = arguments.length ? Array.from(domain, _number_js__WEBPACK_IMPORTED_MODULE_1__[\"default\"]) : [0, 1];\n\n  return Object(_linear_js__WEBPACK_IMPORTED_MODULE_0__[\"linearish\"])(scale);\n}\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvdmVnYS9ub2RlX21vZHVsZXMvZDMtc2NhbGUvc3JjL2lkZW50aXR5LmpzLmpzIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL3ZlZ2Evbm9kZV9tb2R1bGVzL2QzLXNjYWxlL3NyYy9pZGVudGl0eS5qcz8zNjdjIl0sInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7bGluZWFyaXNofSBmcm9tIFwiLi9saW5lYXIuanNcIjtcbmltcG9ydCBudW1iZXIgZnJvbSBcIi4vbnVtYmVyLmpzXCI7XG5cbmV4cG9ydCBkZWZhdWx0IGZ1bmN0aW9uIGlkZW50aXR5KGRvbWFpbikge1xuICB2YXIgdW5rbm93bjtcblxuICBmdW5jdGlvbiBzY2FsZSh4KSB7XG4gICAgcmV0dXJuIHggPT0gbnVsbCB8fCBpc05hTih4ID0gK3gpID8gdW5rbm93biA6IHg7XG4gIH1cblxuICBzY2FsZS5pbnZlcnQgPSBzY2FsZTtcblxuICBzY2FsZS5kb21haW4gPSBzY2FsZS5yYW5nZSA9IGZ1bmN0aW9uKF8pIHtcbiAgICByZXR1cm4gYXJndW1lbnRzLmxlbmd0aCA/IChkb21haW4gPSBBcnJheS5mcm9tKF8sIG51bWJlciksIHNjYWxlKSA6IGRvbWFpbi5zbGljZSgpO1xuICB9O1xuXG4gIHNjYWxlLnVua25vd24gPSBmdW5jdGlvbihfKSB7XG4gICAgcmV0dXJuIGFyZ3VtZW50cy5sZW5ndGggPyAodW5rbm93biA9IF8sIHNjYWxlKSA6IHVua25vd247XG4gIH07XG5cbiAgc2NhbGUuY29weSA9IGZ1bmN0aW9uKCkge1xuICAgIHJldHVybiBpZGVudGl0eShkb21haW4pLnVua25vd24odW5rbm93bik7XG4gIH07XG5cbiAgZG9tYWluID0gYXJndW1lbnRzLmxlbmd0aCA/IEFycmF5LmZyb20oZG9tYWluLCBudW1iZXIpIDogWzAsIDFdO1xuXG4gIHJldHVybiBsaW5lYXJpc2goc2NhbGUpO1xufVxuIl0sIm1hcHBpbmdzIjoiQUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOyIsInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///./node_modules/vega/node_modules/d3-scale/src/identity.js\n");

/***/ }),

/***/ "./node_modules/vega/node_modules/d3-scale/src/index.js":
/*!**************************************************************!*\
  !*** ./node_modules/vega/node_modules/d3-scale/src/index.js ***!
  \**************************************************************/
/*! exports provided: scaleBand, scalePoint, scaleIdentity, scaleLinear, scaleLog, scaleSymlog, scaleOrdinal, scaleImplicit, scalePow, scaleSqrt, scaleRadial, scaleQuantile, scaleQuantize, scaleThreshold, scaleTime, scaleUtc, scaleSequential, scaleSequentialLog, scaleSequentialPow, scaleSequentialSqrt, scaleSequentialSymlog, scaleSequentialQuantile, scaleDiverging, scaleDivergingLog, scaleDivergingPow, scaleDivergingSqrt, scaleDivergingSymlog, tickFormat */
/***/ (function(module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _band_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./band.js */ \"./node_modules/vega/node_modules/d3-scale/src/band.js\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"scaleBand\", function() { return _band_js__WEBPACK_IMPORTED_MODULE_0__[\"default\"]; });\n\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"scalePoint\", function() { return _band_js__WEBPACK_IMPORTED_MODULE_0__[\"point\"]; });\n\n/* harmony import */ var _identity_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./identity.js */ \"./node_modules/vega/node_modules/d3-scale/src/identity.js\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"scaleIdentity\", function() { return _identity_js__WEBPACK_IMPORTED_MODULE_1__[\"default\"]; });\n\n/* harmony import */ var _linear_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./linear.js */ \"./node_modules/vega/node_modules/d3-scale/src/linear.js\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"scaleLinear\", function() { return _linear_js__WEBPACK_IMPORTED_MODULE_2__[\"default\"]; });\n\n/* harmony import */ var _log_js__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ./log.js */ \"./node_modules/vega/node_modules/d3-scale/src/log.js\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"scaleLog\", function() { return _log_js__WEBPACK_IMPORTED_MODULE_3__[\"default\"]; });\n\n/* harmony import */ var _symlog_js__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ./symlog.js */ \"./node_modules/vega/node_modules/d3-scale/src/symlog.js\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"scaleSymlog\", function() { return _symlog_js__WEBPACK_IMPORTED_MODULE_4__[\"default\"]; });\n\n/* harmony import */ var _ordinal_js__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! ./ordinal.js */ \"./node_modules/vega/node_modules/d3-scale/src/ordinal.js\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"scaleOrdinal\", function() { return _ordinal_js__WEBPACK_IMPORTED_MODULE_5__[\"default\"]; });\n\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"scaleImplicit\", function() { return _ordinal_js__WEBPACK_IMPORTED_MODULE_5__[\"implicit\"]; });\n\n/* harmony import */ var _pow_js__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! ./pow.js */ \"./node_modules/vega/node_modules/d3-scale/src/pow.js\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"scalePow\", function() { return _pow_js__WEBPACK_IMPORTED_MODULE_6__[\"default\"]; });\n\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"scaleSqrt\", function() { return _pow_js__WEBPACK_IMPORTED_MODULE_6__[\"sqrt\"]; });\n\n/* harmony import */ var _radial_js__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! ./radial.js */ \"./node_modules/vega/node_modules/d3-scale/src/radial.js\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"scaleRadial\", function() { return _radial_js__WEBPACK_IMPORTED_MODULE_7__[\"default\"]; });\n\n/* harmony import */ var _quantile_js__WEBPACK_IMPORTED_MODULE_8__ = __webpack_require__(/*! ./quantile.js */ \"./node_modules/vega/node_modules/d3-scale/src/quantile.js\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"scaleQuantile\", function() { return _quantile_js__WEBPACK_IMPORTED_MODULE_8__[\"default\"]; });\n\n/* harmony import */ var _quantize_js__WEBPACK_IMPORTED_MODULE_9__ = __webpack_require__(/*! ./quantize.js */ \"./node_modules/vega/node_modules/d3-scale/src/quantize.js\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"scaleQuantize\", function() { return _quantize_js__WEBPACK_IMPORTED_MODULE_9__[\"default\"]; });\n\n/* harmony import */ var _threshold_js__WEBPACK_IMPORTED_MODULE_10__ = __webpack_require__(/*! ./threshold.js */ \"./node_modules/vega/node_modules/d3-scale/src/threshold.js\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"scaleThreshold\", function() { return _threshold_js__WEBPACK_IMPORTED_MODULE_10__[\"default\"]; });\n\n/* harmony import */ var _time_js__WEBPACK_IMPORTED_MODULE_11__ = __webpack_require__(/*! ./time.js */ \"./node_modules/vega/node_modules/d3-scale/src/time.js\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"scaleTime\", function() { return _time_js__WEBPACK_IMPORTED_MODULE_11__[\"default\"]; });\n\n/* harmony import */ var _utcTime_js__WEBPACK_IMPORTED_MODULE_12__ = __webpack_require__(/*! ./utcTime.js */ \"./node_modules/vega/node_modules/d3-scale/src/utcTime.js\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"scaleUtc\", function() { return _utcTime_js__WEBPACK_IMPORTED_MODULE_12__[\"default\"]; });\n\n/* harmony import */ var _sequential_js__WEBPACK_IMPORTED_MODULE_13__ = __webpack_require__(/*! ./sequential.js */ \"./node_modules/vega/node_modules/d3-scale/src/sequential.js\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"scaleSequential\", function() { return _sequential_js__WEBPACK_IMPORTED_MODULE_13__[\"default\"]; });\n\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"scaleSequentialLog\", function() { return _sequential_js__WEBPACK_IMPORTED_MODULE_13__[\"sequentialLog\"]; });\n\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"scaleSequentialPow\", function() { return _sequential_js__WEBPACK_IMPORTED_MODULE_13__[\"sequentialPow\"]; });\n\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"scaleSequentialSqrt\", function() { return _sequential_js__WEBPACK_IMPORTED_MODULE_13__[\"sequentialSqrt\"]; });\n\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"scaleSequentialSymlog\", function() { return _sequential_js__WEBPACK_IMPORTED_MODULE_13__[\"sequentialSymlog\"]; });\n\n/* harmony import */ var _sequentialQuantile_js__WEBPACK_IMPORTED_MODULE_14__ = __webpack_require__(/*! ./sequentialQuantile.js */ \"./node_modules/vega/node_modules/d3-scale/src/sequentialQuantile.js\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"scaleSequentialQuantile\", function() { return _sequentialQuantile_js__WEBPACK_IMPORTED_MODULE_14__[\"default\"]; });\n\n/* harmony import */ var _diverging_js__WEBPACK_IMPORTED_MODULE_15__ = __webpack_require__(/*! ./diverging.js */ \"./node_modules/vega/node_modules/d3-scale/src/diverging.js\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"scaleDiverging\", function() { return _diverging_js__WEBPACK_IMPORTED_MODULE_15__[\"default\"]; });\n\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"scaleDivergingLog\", function() { return _diverging_js__WEBPACK_IMPORTED_MODULE_15__[\"divergingLog\"]; });\n\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"scaleDivergingPow\", function() { return _diverging_js__WEBPACK_IMPORTED_MODULE_15__[\"divergingPow\"]; });\n\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"scaleDivergingSqrt\", function() { return _diverging_js__WEBPACK_IMPORTED_MODULE_15__[\"divergingSqrt\"]; });\n\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"scaleDivergingSymlog\", function() { return _diverging_js__WEBPACK_IMPORTED_MODULE_15__[\"divergingSymlog\"]; });\n\n/* harmony import */ var _tickFormat_js__WEBPACK_IMPORTED_MODULE_16__ = __webpack_require__(/*! ./tickFormat.js */ \"./node_modules/vega/node_modules/d3-scale/src/tickFormat.js\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"tickFormat\", function() { return _tickFormat_js__WEBPACK_IMPORTED_MODULE_16__[\"default\"]; });\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvdmVnYS9ub2RlX21vZHVsZXMvZDMtc2NhbGUvc3JjL2luZGV4LmpzLmpzIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL3ZlZ2Evbm9kZV9tb2R1bGVzL2QzLXNjYWxlL3NyYy9pbmRleC5qcz9mMTc4Il0sInNvdXJjZXNDb250ZW50IjpbImV4cG9ydCB7XG4gIGRlZmF1bHQgYXMgc2NhbGVCYW5kLFxuICBwb2ludCBhcyBzY2FsZVBvaW50XG59IGZyb20gXCIuL2JhbmQuanNcIjtcblxuZXhwb3J0IHtcbiAgZGVmYXVsdCBhcyBzY2FsZUlkZW50aXR5XG59IGZyb20gXCIuL2lkZW50aXR5LmpzXCI7XG5cbmV4cG9ydCB7XG4gIGRlZmF1bHQgYXMgc2NhbGVMaW5lYXJcbn0gZnJvbSBcIi4vbGluZWFyLmpzXCI7XG5cbmV4cG9ydCB7XG4gIGRlZmF1bHQgYXMgc2NhbGVMb2dcbn0gZnJvbSBcIi4vbG9nLmpzXCI7XG5cbmV4cG9ydCB7XG4gIGRlZmF1bHQgYXMgc2NhbGVTeW1sb2dcbn0gZnJvbSBcIi4vc3ltbG9nLmpzXCI7XG5cbmV4cG9ydCB7XG4gIGRlZmF1bHQgYXMgc2NhbGVPcmRpbmFsLFxuICBpbXBsaWNpdCBhcyBzY2FsZUltcGxpY2l0XG59IGZyb20gXCIuL29yZGluYWwuanNcIjtcblxuZXhwb3J0IHtcbiAgZGVmYXVsdCBhcyBzY2FsZVBvdyxcbiAgc3FydCBhcyBzY2FsZVNxcnRcbn0gZnJvbSBcIi4vcG93LmpzXCI7XG5cbmV4cG9ydCB7XG4gIGRlZmF1bHQgYXMgc2NhbGVSYWRpYWxcbn0gZnJvbSBcIi4vcmFkaWFsLmpzXCI7XG5cbmV4cG9ydCB7XG4gIGRlZmF1bHQgYXMgc2NhbGVRdWFudGlsZVxufSBmcm9tIFwiLi9xdWFudGlsZS5qc1wiO1xuXG5leHBvcnQge1xuICBkZWZhdWx0IGFzIHNjYWxlUXVhbnRpemVcbn0gZnJvbSBcIi4vcXVhbnRpemUuanNcIjtcblxuZXhwb3J0IHtcbiAgZGVmYXVsdCBhcyBzY2FsZVRocmVzaG9sZFxufSBmcm9tIFwiLi90aHJlc2hvbGQuanNcIjtcblxuZXhwb3J0IHtcbiAgZGVmYXVsdCBhcyBzY2FsZVRpbWVcbn0gZnJvbSBcIi4vdGltZS5qc1wiO1xuXG5leHBvcnQge1xuICBkZWZhdWx0IGFzIHNjYWxlVXRjXG59IGZyb20gXCIuL3V0Y1RpbWUuanNcIjtcblxuZXhwb3J0IHtcbiAgZGVmYXVsdCBhcyBzY2FsZVNlcXVlbnRpYWwsXG4gIHNlcXVlbnRpYWxMb2cgYXMgc2NhbGVTZXF1ZW50aWFsTG9nLFxuICBzZXF1ZW50aWFsUG93IGFzIHNjYWxlU2VxdWVudGlhbFBvdyxcbiAgc2VxdWVudGlhbFNxcnQgYXMgc2NhbGVTZXF1ZW50aWFsU3FydCxcbiAgc2VxdWVudGlhbFN5bWxvZyBhcyBzY2FsZVNlcXVlbnRpYWxTeW1sb2dcbn0gZnJvbSBcIi4vc2VxdWVudGlhbC5qc1wiO1xuXG5leHBvcnQge1xuICBkZWZhdWx0IGFzIHNjYWxlU2VxdWVudGlhbFF1YW50aWxlXG59IGZyb20gXCIuL3NlcXVlbnRpYWxRdWFudGlsZS5qc1wiO1xuXG5leHBvcnQge1xuICBkZWZhdWx0IGFzIHNjYWxlRGl2ZXJnaW5nLFxuICBkaXZlcmdpbmdMb2cgYXMgc2NhbGVEaXZlcmdpbmdMb2csXG4gIGRpdmVyZ2luZ1BvdyBhcyBzY2FsZURpdmVyZ2luZ1BvdyxcbiAgZGl2ZXJnaW5nU3FydCBhcyBzY2FsZURpdmVyZ2luZ1NxcnQsXG4gIGRpdmVyZ2luZ1N5bWxvZyBhcyBzY2FsZURpdmVyZ2luZ1N5bWxvZ1xufSBmcm9tIFwiLi9kaXZlcmdpbmcuanNcIjtcblxuZXhwb3J0IHtcbiAgZGVmYXVsdCBhcyB0aWNrRm9ybWF0XG59IGZyb20gXCIuL3RpY2tGb3JtYXQuanNcIjtcbiJdLCJtYXBwaW5ncyI6IkFBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUdBO0FBQ0E7QUFHQTtBQUNBO0FBR0E7QUFDQTtBQUdBO0FBQ0E7QUFHQTtBQUNBO0FBSUE7QUFDQTtBQUlBO0FBQ0E7QUFHQTtBQUNBO0FBR0E7QUFDQTtBQUdBO0FBQ0E7QUFHQTtBQUNBO0FBR0E7QUFDQTtBQUdBO0FBQ0E7QUFPQTtBQUNBO0FBR0E7QUFDQTtBQU9BO0FBQ0E7QUFHQTsiLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///./node_modules/vega/node_modules/d3-scale/src/index.js\n");

/***/ }),

/***/ "./node_modules/vega/node_modules/d3-scale/src/init.js":
/*!*************************************************************!*\
  !*** ./node_modules/vega/node_modules/d3-scale/src/init.js ***!
  \*************************************************************/
/*! exports provided: initRange, initInterpolator */
/***/ (function(module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"initRange\", function() { return initRange; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"initInterpolator\", function() { return initInterpolator; });\nfunction initRange(domain, range) {\n  switch (arguments.length) {\n    case 0: break;\n    case 1: this.range(domain); break;\n    default: this.range(range).domain(domain); break;\n  }\n  return this;\n}\n\nfunction initInterpolator(domain, interpolator) {\n  switch (arguments.length) {\n    case 0: break;\n    case 1: {\n      if (typeof domain === \"function\") this.interpolator(domain);\n      else this.range(domain);\n      break;\n    }\n    default: {\n      this.domain(domain);\n      if (typeof interpolator === \"function\") this.interpolator(interpolator);\n      else this.range(interpolator);\n      break;\n    }\n  }\n  return this;\n}\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvdmVnYS9ub2RlX21vZHVsZXMvZDMtc2NhbGUvc3JjL2luaXQuanMuanMiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvdmVnYS9ub2RlX21vZHVsZXMvZDMtc2NhbGUvc3JjL2luaXQuanM/ZTQ5YiJdLCJzb3VyY2VzQ29udGVudCI6WyJleHBvcnQgZnVuY3Rpb24gaW5pdFJhbmdlKGRvbWFpbiwgcmFuZ2UpIHtcbiAgc3dpdGNoIChhcmd1bWVudHMubGVuZ3RoKSB7XG4gICAgY2FzZSAwOiBicmVhaztcbiAgICBjYXNlIDE6IHRoaXMucmFuZ2UoZG9tYWluKTsgYnJlYWs7XG4gICAgZGVmYXVsdDogdGhpcy5yYW5nZShyYW5nZSkuZG9tYWluKGRvbWFpbik7IGJyZWFrO1xuICB9XG4gIHJldHVybiB0aGlzO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gaW5pdEludGVycG9sYXRvcihkb21haW4sIGludGVycG9sYXRvcikge1xuICBzd2l0Y2ggKGFyZ3VtZW50cy5sZW5ndGgpIHtcbiAgICBjYXNlIDA6IGJyZWFrO1xuICAgIGNhc2UgMToge1xuICAgICAgaWYgKHR5cGVvZiBkb21haW4gPT09IFwiZnVuY3Rpb25cIikgdGhpcy5pbnRlcnBvbGF0b3IoZG9tYWluKTtcbiAgICAgIGVsc2UgdGhpcy5yYW5nZShkb21haW4pO1xuICAgICAgYnJlYWs7XG4gICAgfVxuICAgIGRlZmF1bHQ6IHtcbiAgICAgIHRoaXMuZG9tYWluKGRvbWFpbik7XG4gICAgICBpZiAodHlwZW9mIGludGVycG9sYXRvciA9PT0gXCJmdW5jdGlvblwiKSB0aGlzLmludGVycG9sYXRvcihpbnRlcnBvbGF0b3IpO1xuICAgICAgZWxzZSB0aGlzLnJhbmdlKGludGVycG9sYXRvcik7XG4gICAgICBicmVhaztcbiAgICB9XG4gIH1cbiAgcmV0dXJuIHRoaXM7XG59XG4iXSwibWFwcGluZ3MiOiJBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7Iiwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///./node_modules/vega/node_modules/d3-scale/src/init.js\n");

/***/ }),

/***/ "./node_modules/vega/node_modules/d3-scale/src/linear.js":
/*!***************************************************************!*\
  !*** ./node_modules/vega/node_modules/d3-scale/src/linear.js ***!
  \***************************************************************/
/*! exports provided: linearish, default */
/***/ (function(module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"linearish\", function() { return linearish; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"default\", function() { return linear; });\n/* harmony import */ var d3_array__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! d3-array */ \"./node_modules/d3-array/src/index.js\");\n/* harmony import */ var _continuous_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./continuous.js */ \"./node_modules/vega/node_modules/d3-scale/src/continuous.js\");\n/* harmony import */ var _init_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./init.js */ \"./node_modules/vega/node_modules/d3-scale/src/init.js\");\n/* harmony import */ var _tickFormat_js__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ./tickFormat.js */ \"./node_modules/vega/node_modules/d3-scale/src/tickFormat.js\");\n\n\n\n\n\nfunction linearish(scale) {\n  var domain = scale.domain;\n\n  scale.ticks = function(count) {\n    var d = domain();\n    return Object(d3_array__WEBPACK_IMPORTED_MODULE_0__[\"ticks\"])(d[0], d[d.length - 1], count == null ? 10 : count);\n  };\n\n  scale.tickFormat = function(count, specifier) {\n    var d = domain();\n    return Object(_tickFormat_js__WEBPACK_IMPORTED_MODULE_3__[\"default\"])(d[0], d[d.length - 1], count == null ? 10 : count, specifier);\n  };\n\n  scale.nice = function(count) {\n    if (count == null) count = 10;\n\n    var d = domain();\n    var i0 = 0;\n    var i1 = d.length - 1;\n    var start = d[i0];\n    var stop = d[i1];\n    var prestep;\n    var step;\n    var maxIter = 10;\n\n    if (stop < start) {\n      step = start, start = stop, stop = step;\n      step = i0, i0 = i1, i1 = step;\n    }\n    \n    while (maxIter-- > 0) {\n      step = Object(d3_array__WEBPACK_IMPORTED_MODULE_0__[\"tickIncrement\"])(start, stop, count);\n      if (step === prestep) {\n        d[i0] = start\n        d[i1] = stop\n        return domain(d);\n      } else if (step > 0) {\n        start = Math.floor(start / step) * step;\n        stop = Math.ceil(stop / step) * step;\n      } else if (step < 0) {\n        start = Math.ceil(start * step) / step;\n        stop = Math.floor(stop * step) / step;\n      } else {\n        break;\n      }\n      prestep = step;\n    }\n\n    return scale;\n  };\n\n  return scale;\n}\n\nfunction linear() {\n  var scale = Object(_continuous_js__WEBPACK_IMPORTED_MODULE_1__[\"default\"])();\n\n  scale.copy = function() {\n    return Object(_continuous_js__WEBPACK_IMPORTED_MODULE_1__[\"copy\"])(scale, linear());\n  };\n\n  _init_js__WEBPACK_IMPORTED_MODULE_2__[\"initRange\"].apply(scale, arguments);\n\n  return linearish(scale);\n}\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvdmVnYS9ub2RlX21vZHVsZXMvZDMtc2NhbGUvc3JjL2xpbmVhci5qcy5qcyIsInNvdXJjZXMiOlsid2VicGFjazovLy8uL25vZGVfbW9kdWxlcy92ZWdhL25vZGVfbW9kdWxlcy9kMy1zY2FsZS9zcmMvbGluZWFyLmpzPzU0MzciXSwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHt0aWNrcywgdGlja0luY3JlbWVudH0gZnJvbSBcImQzLWFycmF5XCI7XG5pbXBvcnQgY29udGludW91cywge2NvcHl9IGZyb20gXCIuL2NvbnRpbnVvdXMuanNcIjtcbmltcG9ydCB7aW5pdFJhbmdlfSBmcm9tIFwiLi9pbml0LmpzXCI7XG5pbXBvcnQgdGlja0Zvcm1hdCBmcm9tIFwiLi90aWNrRm9ybWF0LmpzXCI7XG5cbmV4cG9ydCBmdW5jdGlvbiBsaW5lYXJpc2goc2NhbGUpIHtcbiAgdmFyIGRvbWFpbiA9IHNjYWxlLmRvbWFpbjtcblxuICBzY2FsZS50aWNrcyA9IGZ1bmN0aW9uKGNvdW50KSB7XG4gICAgdmFyIGQgPSBkb21haW4oKTtcbiAgICByZXR1cm4gdGlja3MoZFswXSwgZFtkLmxlbmd0aCAtIDFdLCBjb3VudCA9PSBudWxsID8gMTAgOiBjb3VudCk7XG4gIH07XG5cbiAgc2NhbGUudGlja0Zvcm1hdCA9IGZ1bmN0aW9uKGNvdW50LCBzcGVjaWZpZXIpIHtcbiAgICB2YXIgZCA9IGRvbWFpbigpO1xuICAgIHJldHVybiB0aWNrRm9ybWF0KGRbMF0sIGRbZC5sZW5ndGggLSAxXSwgY291bnQgPT0gbnVsbCA/IDEwIDogY291bnQsIHNwZWNpZmllcik7XG4gIH07XG5cbiAgc2NhbGUubmljZSA9IGZ1bmN0aW9uKGNvdW50KSB7XG4gICAgaWYgKGNvdW50ID09IG51bGwpIGNvdW50ID0gMTA7XG5cbiAgICB2YXIgZCA9IGRvbWFpbigpO1xuICAgIHZhciBpMCA9IDA7XG4gICAgdmFyIGkxID0gZC5sZW5ndGggLSAxO1xuICAgIHZhciBzdGFydCA9IGRbaTBdO1xuICAgIHZhciBzdG9wID0gZFtpMV07XG4gICAgdmFyIHByZXN0ZXA7XG4gICAgdmFyIHN0ZXA7XG4gICAgdmFyIG1heEl0ZXIgPSAxMDtcblxuICAgIGlmIChzdG9wIDwgc3RhcnQpIHtcbiAgICAgIHN0ZXAgPSBzdGFydCwgc3RhcnQgPSBzdG9wLCBzdG9wID0gc3RlcDtcbiAgICAgIHN0ZXAgPSBpMCwgaTAgPSBpMSwgaTEgPSBzdGVwO1xuICAgIH1cbiAgICBcbiAgICB3aGlsZSAobWF4SXRlci0tID4gMCkge1xuICAgICAgc3RlcCA9IHRpY2tJbmNyZW1lbnQoc3RhcnQsIHN0b3AsIGNvdW50KTtcbiAgICAgIGlmIChzdGVwID09PSBwcmVzdGVwKSB7XG4gICAgICAgIGRbaTBdID0gc3RhcnRcbiAgICAgICAgZFtpMV0gPSBzdG9wXG4gICAgICAgIHJldHVybiBkb21haW4oZCk7XG4gICAgICB9IGVsc2UgaWYgKHN0ZXAgPiAwKSB7XG4gICAgICAgIHN0YXJ0ID0gTWF0aC5mbG9vcihzdGFydCAvIHN0ZXApICogc3RlcDtcbiAgICAgICAgc3RvcCA9IE1hdGguY2VpbChzdG9wIC8gc3RlcCkgKiBzdGVwO1xuICAgICAgfSBlbHNlIGlmIChzdGVwIDwgMCkge1xuICAgICAgICBzdGFydCA9IE1hdGguY2VpbChzdGFydCAqIHN0ZXApIC8gc3RlcDtcbiAgICAgICAgc3RvcCA9IE1hdGguZmxvb3Ioc3RvcCAqIHN0ZXApIC8gc3RlcDtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIGJyZWFrO1xuICAgICAgfVxuICAgICAgcHJlc3RlcCA9IHN0ZXA7XG4gICAgfVxuXG4gICAgcmV0dXJuIHNjYWxlO1xuICB9O1xuXG4gIHJldHVybiBzY2FsZTtcbn1cblxuZXhwb3J0IGRlZmF1bHQgZnVuY3Rpb24gbGluZWFyKCkge1xuICB2YXIgc2NhbGUgPSBjb250aW51b3VzKCk7XG5cbiAgc2NhbGUuY29weSA9IGZ1bmN0aW9uKCkge1xuICAgIHJldHVybiBjb3B5KHNjYWxlLCBsaW5lYXIoKSk7XG4gIH07XG5cbiAgaW5pdFJhbmdlLmFwcGx5KHNjYWxlLCBhcmd1bWVudHMpO1xuXG4gIHJldHVybiBsaW5lYXJpc2goc2NhbGUpO1xufVxuIl0sIm1hcHBpbmdzIjoiQUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOyIsInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///./node_modules/vega/node_modules/d3-scale/src/linear.js\n");

/***/ }),

/***/ "./node_modules/vega/node_modules/d3-scale/src/log.js":
/*!************************************************************!*\
  !*** ./node_modules/vega/node_modules/d3-scale/src/log.js ***!
  \************************************************************/
/*! exports provided: loggish, default */
/***/ (function(module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"loggish\", function() { return loggish; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"default\", function() { return log; });\n/* harmony import */ var d3_array__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! d3-array */ \"./node_modules/d3-array/src/index.js\");\n/* harmony import */ var d3_format__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! d3-format */ \"./node_modules/vega/node_modules/d3-format/src/index.js\");\n/* harmony import */ var _nice_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./nice.js */ \"./node_modules/vega/node_modules/d3-scale/src/nice.js\");\n/* harmony import */ var _continuous_js__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ./continuous.js */ \"./node_modules/vega/node_modules/d3-scale/src/continuous.js\");\n/* harmony import */ var _init_js__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ./init.js */ \"./node_modules/vega/node_modules/d3-scale/src/init.js\");\n\n\n\n\n\n\nfunction transformLog(x) {\n  return Math.log(x);\n}\n\nfunction transformExp(x) {\n  return Math.exp(x);\n}\n\nfunction transformLogn(x) {\n  return -Math.log(-x);\n}\n\nfunction transformExpn(x) {\n  return -Math.exp(-x);\n}\n\nfunction pow10(x) {\n  return isFinite(x) ? +(\"1e\" + x) : x < 0 ? 0 : x;\n}\n\nfunction powp(base) {\n  return base === 10 ? pow10\n      : base === Math.E ? Math.exp\n      : function(x) { return Math.pow(base, x); };\n}\n\nfunction logp(base) {\n  return base === Math.E ? Math.log\n      : base === 10 && Math.log10\n      || base === 2 && Math.log2\n      || (base = Math.log(base), function(x) { return Math.log(x) / base; });\n}\n\nfunction reflect(f) {\n  return function(x) {\n    return -f(-x);\n  };\n}\n\nfunction loggish(transform) {\n  var scale = transform(transformLog, transformExp),\n      domain = scale.domain,\n      base = 10,\n      logs,\n      pows;\n\n  function rescale() {\n    logs = logp(base), pows = powp(base);\n    if (domain()[0] < 0) {\n      logs = reflect(logs), pows = reflect(pows);\n      transform(transformLogn, transformExpn);\n    } else {\n      transform(transformLog, transformExp);\n    }\n    return scale;\n  }\n\n  scale.base = function(_) {\n    return arguments.length ? (base = +_, rescale()) : base;\n  };\n\n  scale.domain = function(_) {\n    return arguments.length ? (domain(_), rescale()) : domain();\n  };\n\n  scale.ticks = function(count) {\n    var d = domain(),\n        u = d[0],\n        v = d[d.length - 1],\n        r;\n\n    if (r = v < u) i = u, u = v, v = i;\n\n    var i = logs(u),\n        j = logs(v),\n        p,\n        k,\n        t,\n        n = count == null ? 10 : +count,\n        z = [];\n\n    if (!(base % 1) && j - i < n) {\n      i = Math.floor(i), j = Math.ceil(j);\n      if (u > 0) for (; i <= j; ++i) {\n        for (k = 1, p = pows(i); k < base; ++k) {\n          t = p * k;\n          if (t < u) continue;\n          if (t > v) break;\n          z.push(t);\n        }\n      } else for (; i <= j; ++i) {\n        for (k = base - 1, p = pows(i); k >= 1; --k) {\n          t = p * k;\n          if (t < u) continue;\n          if (t > v) break;\n          z.push(t);\n        }\n      }\n      if (z.length * 2 < n) z = Object(d3_array__WEBPACK_IMPORTED_MODULE_0__[\"ticks\"])(u, v, n);\n    } else {\n      z = Object(d3_array__WEBPACK_IMPORTED_MODULE_0__[\"ticks\"])(i, j, Math.min(j - i, n)).map(pows);\n    }\n\n    return r ? z.reverse() : z;\n  };\n\n  scale.tickFormat = function(count, specifier) {\n    if (specifier == null) specifier = base === 10 ? \".0e\" : \",\";\n    if (typeof specifier !== \"function\") specifier = Object(d3_format__WEBPACK_IMPORTED_MODULE_1__[\"format\"])(specifier);\n    if (count === Infinity) return specifier;\n    if (count == null) count = 10;\n    var k = Math.max(1, base * count / scale.ticks().length); // TODO fast estimate?\n    return function(d) {\n      var i = d / pows(Math.round(logs(d)));\n      if (i * base < base - 0.5) i *= base;\n      return i <= k ? specifier(d) : \"\";\n    };\n  };\n\n  scale.nice = function() {\n    return domain(Object(_nice_js__WEBPACK_IMPORTED_MODULE_2__[\"default\"])(domain(), {\n      floor: function(x) { return pows(Math.floor(logs(x))); },\n      ceil: function(x) { return pows(Math.ceil(logs(x))); }\n    }));\n  };\n\n  return scale;\n}\n\nfunction log() {\n  var scale = loggish(Object(_continuous_js__WEBPACK_IMPORTED_MODULE_3__[\"transformer\"])()).domain([1, 10]);\n\n  scale.copy = function() {\n    return Object(_continuous_js__WEBPACK_IMPORTED_MODULE_3__[\"copy\"])(scale, log()).base(scale.base());\n  };\n\n  _init_js__WEBPACK_IMPORTED_MODULE_4__[\"initRange\"].apply(scale, arguments);\n\n  return scale;\n}\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,[encoded data, 6112 characters]\n//# sourceURL=webpack-internal:///./node_modules/vega/node_modules/d3-scale/src/log.js\n");

/***/ }),

/***/ "./node_modules/vega/node_modules/d3-scale/src/nice.js":
/*!*************************************************************!*\
  !*** ./node_modules/vega/node_modules/d3-scale/src/nice.js ***!
  \*************************************************************/
/*! exports provided: default */
/***/ (function(module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"default\", function() { return nice; });\nfunction nice(domain, interval) {\n  domain = domain.slice();\n\n  var i0 = 0,\n      i1 = domain.length - 1,\n      x0 = domain[i0],\n      x1 = domain[i1],\n      t;\n\n  if (x1 < x0) {\n    t = i0, i0 = i1, i1 = t;\n    t = x0, x0 = x1, x1 = t;\n  }\n\n  domain[i0] = interval.floor(x0);\n  domain[i1] = interval.ceil(x1);\n  return domain;\n}\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvdmVnYS9ub2RlX21vZHVsZXMvZDMtc2NhbGUvc3JjL25pY2UuanMuanMiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvdmVnYS9ub2RlX21vZHVsZXMvZDMtc2NhbGUvc3JjL25pY2UuanM/NTJhNSJdLCJzb3VyY2VzQ29udGVudCI6WyJleHBvcnQgZGVmYXVsdCBmdW5jdGlvbiBuaWNlKGRvbWFpbiwgaW50ZXJ2YWwpIHtcbiAgZG9tYWluID0gZG9tYWluLnNsaWNlKCk7XG5cbiAgdmFyIGkwID0gMCxcbiAgICAgIGkxID0gZG9tYWluLmxlbmd0aCAtIDEsXG4gICAgICB4MCA9IGRvbWFpbltpMF0sXG4gICAgICB4MSA9IGRvbWFpbltpMV0sXG4gICAgICB0O1xuXG4gIGlmICh4MSA8IHgwKSB7XG4gICAgdCA9IGkwLCBpMCA9IGkxLCBpMSA9IHQ7XG4gICAgdCA9IHgwLCB4MCA9IHgxLCB4MSA9IHQ7XG4gIH1cblxuICBkb21haW5baTBdID0gaW50ZXJ2YWwuZmxvb3IoeDApO1xuICBkb21haW5baTFdID0gaW50ZXJ2YWwuY2VpbCh4MSk7XG4gIHJldHVybiBkb21haW47XG59XG4iXSwibWFwcGluZ3MiOiJBQUFBO0FBQUE7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7Iiwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///./node_modules/vega/node_modules/d3-scale/src/nice.js\n");

/***/ }),

/***/ "./node_modules/vega/node_modules/d3-scale/src/number.js":
/*!***************************************************************!*\
  !*** ./node_modules/vega/node_modules/d3-scale/src/number.js ***!
  \***************************************************************/
/*! exports provided: default */
/***/ (function(module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"default\", function() { return number; });\nfunction number(x) {\n  return +x;\n}\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvdmVnYS9ub2RlX21vZHVsZXMvZDMtc2NhbGUvc3JjL251bWJlci5qcy5qcyIsInNvdXJjZXMiOlsid2VicGFjazovLy8uL25vZGVfbW9kdWxlcy92ZWdhL25vZGVfbW9kdWxlcy9kMy1zY2FsZS9zcmMvbnVtYmVyLmpzPzczYmEiXSwic291cmNlc0NvbnRlbnQiOlsiZXhwb3J0IGRlZmF1bHQgZnVuY3Rpb24gbnVtYmVyKHgpIHtcbiAgcmV0dXJuICt4O1xufVxuIl0sIm1hcHBpbmdzIjoiQUFBQTtBQUFBO0FBQUE7QUFDQTtBQUNBOyIsInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///./node_modules/vega/node_modules/d3-scale/src/number.js\n");

/***/ }),

/***/ "./node_modules/vega/node_modules/d3-scale/src/ordinal.js":
/*!****************************************************************!*\
  !*** ./node_modules/vega/node_modules/d3-scale/src/ordinal.js ***!
  \****************************************************************/
/*! exports provided: implicit, default */
/***/ (function(module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"implicit\", function() { return implicit; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"default\", function() { return ordinal; });\n/* harmony import */ var _init_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./init.js */ \"./node_modules/vega/node_modules/d3-scale/src/init.js\");\n\n\nconst implicit = Symbol(\"implicit\");\n\nfunction ordinal() {\n  var index = new Map(),\n      domain = [],\n      range = [],\n      unknown = implicit;\n\n  function scale(d) {\n    var key = d + \"\", i = index.get(key);\n    if (!i) {\n      if (unknown !== implicit) return unknown;\n      index.set(key, i = domain.push(d));\n    }\n    return range[(i - 1) % range.length];\n  }\n\n  scale.domain = function(_) {\n    if (!arguments.length) return domain.slice();\n    domain = [], index = new Map();\n    for (const value of _) {\n      const key = value + \"\";\n      if (index.has(key)) continue;\n      index.set(key, domain.push(value));\n    }\n    return scale;\n  };\n\n  scale.range = function(_) {\n    return arguments.length ? (range = Array.from(_), scale) : range.slice();\n  };\n\n  scale.unknown = function(_) {\n    return arguments.length ? (unknown = _, scale) : unknown;\n  };\n\n  scale.copy = function() {\n    return ordinal(domain, range).unknown(unknown);\n  };\n\n  _init_js__WEBPACK_IMPORTED_MODULE_0__[\"initRange\"].apply(scale, arguments);\n\n  return scale;\n}\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvdmVnYS9ub2RlX21vZHVsZXMvZDMtc2NhbGUvc3JjL29yZGluYWwuanMuanMiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvdmVnYS9ub2RlX21vZHVsZXMvZDMtc2NhbGUvc3JjL29yZGluYWwuanM/MmRmMSJdLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge2luaXRSYW5nZX0gZnJvbSBcIi4vaW5pdC5qc1wiO1xuXG5leHBvcnQgY29uc3QgaW1wbGljaXQgPSBTeW1ib2woXCJpbXBsaWNpdFwiKTtcblxuZXhwb3J0IGRlZmF1bHQgZnVuY3Rpb24gb3JkaW5hbCgpIHtcbiAgdmFyIGluZGV4ID0gbmV3IE1hcCgpLFxuICAgICAgZG9tYWluID0gW10sXG4gICAgICByYW5nZSA9IFtdLFxuICAgICAgdW5rbm93biA9IGltcGxpY2l0O1xuXG4gIGZ1bmN0aW9uIHNjYWxlKGQpIHtcbiAgICB2YXIga2V5ID0gZCArIFwiXCIsIGkgPSBpbmRleC5nZXQoa2V5KTtcbiAgICBpZiAoIWkpIHtcbiAgICAgIGlmICh1bmtub3duICE9PSBpbXBsaWNpdCkgcmV0dXJuIHVua25vd247XG4gICAgICBpbmRleC5zZXQoa2V5LCBpID0gZG9tYWluLnB1c2goZCkpO1xuICAgIH1cbiAgICByZXR1cm4gcmFuZ2VbKGkgLSAxKSAlIHJhbmdlLmxlbmd0aF07XG4gIH1cblxuICBzY2FsZS5kb21haW4gPSBmdW5jdGlvbihfKSB7XG4gICAgaWYgKCFhcmd1bWVudHMubGVuZ3RoKSByZXR1cm4gZG9tYWluLnNsaWNlKCk7XG4gICAgZG9tYWluID0gW10sIGluZGV4ID0gbmV3IE1hcCgpO1xuICAgIGZvciAoY29uc3QgdmFsdWUgb2YgXykge1xuICAgICAgY29uc3Qga2V5ID0gdmFsdWUgKyBcIlwiO1xuICAgICAgaWYgKGluZGV4LmhhcyhrZXkpKSBjb250aW51ZTtcbiAgICAgIGluZGV4LnNldChrZXksIGRvbWFpbi5wdXNoKHZhbHVlKSk7XG4gICAgfVxuICAgIHJldHVybiBzY2FsZTtcbiAgfTtcblxuICBzY2FsZS5yYW5nZSA9IGZ1bmN0aW9uKF8pIHtcbiAgICByZXR1cm4gYXJndW1lbnRzLmxlbmd0aCA/IChyYW5nZSA9IEFycmF5LmZyb20oXyksIHNjYWxlKSA6IHJhbmdlLnNsaWNlKCk7XG4gIH07XG5cbiAgc2NhbGUudW5rbm93biA9IGZ1bmN0aW9uKF8pIHtcbiAgICByZXR1cm4gYXJndW1lbnRzLmxlbmd0aCA/ICh1bmtub3duID0gXywgc2NhbGUpIDogdW5rbm93bjtcbiAgfTtcblxuICBzY2FsZS5jb3B5ID0gZnVuY3Rpb24oKSB7XG4gICAgcmV0dXJuIG9yZGluYWwoZG9tYWluLCByYW5nZSkudW5rbm93bih1bmtub3duKTtcbiAgfTtcblxuICBpbml0UmFuZ2UuYXBwbHkoc2NhbGUsIGFyZ3VtZW50cyk7XG5cbiAgcmV0dXJuIHNjYWxlO1xufVxuIl0sIm1hcHBpbmdzIjoiQUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOyIsInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///./node_modules/vega/node_modules/d3-scale/src/ordinal.js\n");

/***/ }),

/***/ "./node_modules/vega/node_modules/d3-scale/src/pow.js":
/*!************************************************************!*\
  !*** ./node_modules/vega/node_modules/d3-scale/src/pow.js ***!
  \************************************************************/
/*! exports provided: powish, default, sqrt */
/***/ (function(module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"powish\", function() { return powish; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"default\", function() { return pow; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"sqrt\", function() { return sqrt; });\n/* harmony import */ var _linear_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./linear.js */ \"./node_modules/vega/node_modules/d3-scale/src/linear.js\");\n/* harmony import */ var _continuous_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./continuous.js */ \"./node_modules/vega/node_modules/d3-scale/src/continuous.js\");\n/* harmony import */ var _init_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./init.js */ \"./node_modules/vega/node_modules/d3-scale/src/init.js\");\n\n\n\n\nfunction transformPow(exponent) {\n  return function(x) {\n    return x < 0 ? -Math.pow(-x, exponent) : Math.pow(x, exponent);\n  };\n}\n\nfunction transformSqrt(x) {\n  return x < 0 ? -Math.sqrt(-x) : Math.sqrt(x);\n}\n\nfunction transformSquare(x) {\n  return x < 0 ? -x * x : x * x;\n}\n\nfunction powish(transform) {\n  var scale = transform(_continuous_js__WEBPACK_IMPORTED_MODULE_1__[\"identity\"], _continuous_js__WEBPACK_IMPORTED_MODULE_1__[\"identity\"]),\n      exponent = 1;\n\n  function rescale() {\n    return exponent === 1 ? transform(_continuous_js__WEBPACK_IMPORTED_MODULE_1__[\"identity\"], _continuous_js__WEBPACK_IMPORTED_MODULE_1__[\"identity\"])\n        : exponent === 0.5 ? transform(transformSqrt, transformSquare)\n        : transform(transformPow(exponent), transformPow(1 / exponent));\n  }\n\n  scale.exponent = function(_) {\n    return arguments.length ? (exponent = +_, rescale()) : exponent;\n  };\n\n  return Object(_linear_js__WEBPACK_IMPORTED_MODULE_0__[\"linearish\"])(scale);\n}\n\nfunction pow() {\n  var scale = powish(Object(_continuous_js__WEBPACK_IMPORTED_MODULE_1__[\"transformer\"])());\n\n  scale.copy = function() {\n    return Object(_continuous_js__WEBPACK_IMPORTED_MODULE_1__[\"copy\"])(scale, pow()).exponent(scale.exponent());\n  };\n\n  _init_js__WEBPACK_IMPORTED_MODULE_2__[\"initRange\"].apply(scale, arguments);\n\n  return scale;\n}\n\nfunction sqrt() {\n  return pow.apply(null, arguments).exponent(0.5);\n}\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvdmVnYS9ub2RlX21vZHVsZXMvZDMtc2NhbGUvc3JjL3Bvdy5qcy5qcyIsInNvdXJjZXMiOlsid2VicGFjazovLy8uL25vZGVfbW9kdWxlcy92ZWdhL25vZGVfbW9kdWxlcy9kMy1zY2FsZS9zcmMvcG93LmpzPzRhMjMiXSwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtsaW5lYXJpc2h9IGZyb20gXCIuL2xpbmVhci5qc1wiO1xuaW1wb3J0IHtjb3B5LCBpZGVudGl0eSwgdHJhbnNmb3JtZXJ9IGZyb20gXCIuL2NvbnRpbnVvdXMuanNcIjtcbmltcG9ydCB7aW5pdFJhbmdlfSBmcm9tIFwiLi9pbml0LmpzXCI7XG5cbmZ1bmN0aW9uIHRyYW5zZm9ybVBvdyhleHBvbmVudCkge1xuICByZXR1cm4gZnVuY3Rpb24oeCkge1xuICAgIHJldHVybiB4IDwgMCA/IC1NYXRoLnBvdygteCwgZXhwb25lbnQpIDogTWF0aC5wb3coeCwgZXhwb25lbnQpO1xuICB9O1xufVxuXG5mdW5jdGlvbiB0cmFuc2Zvcm1TcXJ0KHgpIHtcbiAgcmV0dXJuIHggPCAwID8gLU1hdGguc3FydCgteCkgOiBNYXRoLnNxcnQoeCk7XG59XG5cbmZ1bmN0aW9uIHRyYW5zZm9ybVNxdWFyZSh4KSB7XG4gIHJldHVybiB4IDwgMCA/IC14ICogeCA6IHggKiB4O1xufVxuXG5leHBvcnQgZnVuY3Rpb24gcG93aXNoKHRyYW5zZm9ybSkge1xuICB2YXIgc2NhbGUgPSB0cmFuc2Zvcm0oaWRlbnRpdHksIGlkZW50aXR5KSxcbiAgICAgIGV4cG9uZW50ID0gMTtcblxuICBmdW5jdGlvbiByZXNjYWxlKCkge1xuICAgIHJldHVybiBleHBvbmVudCA9PT0gMSA/IHRyYW5zZm9ybShpZGVudGl0eSwgaWRlbnRpdHkpXG4gICAgICAgIDogZXhwb25lbnQgPT09IDAuNSA/IHRyYW5zZm9ybSh0cmFuc2Zvcm1TcXJ0LCB0cmFuc2Zvcm1TcXVhcmUpXG4gICAgICAgIDogdHJhbnNmb3JtKHRyYW5zZm9ybVBvdyhleHBvbmVudCksIHRyYW5zZm9ybVBvdygxIC8gZXhwb25lbnQpKTtcbiAgfVxuXG4gIHNjYWxlLmV4cG9uZW50ID0gZnVuY3Rpb24oXykge1xuICAgIHJldHVybiBhcmd1bWVudHMubGVuZ3RoID8gKGV4cG9uZW50ID0gK18sIHJlc2NhbGUoKSkgOiBleHBvbmVudDtcbiAgfTtcblxuICByZXR1cm4gbGluZWFyaXNoKHNjYWxlKTtcbn1cblxuZXhwb3J0IGRlZmF1bHQgZnVuY3Rpb24gcG93KCkge1xuICB2YXIgc2NhbGUgPSBwb3dpc2godHJhbnNmb3JtZXIoKSk7XG5cbiAgc2NhbGUuY29weSA9IGZ1bmN0aW9uKCkge1xuICAgIHJldHVybiBjb3B5KHNjYWxlLCBwb3coKSkuZXhwb25lbnQoc2NhbGUuZXhwb25lbnQoKSk7XG4gIH07XG5cbiAgaW5pdFJhbmdlLmFwcGx5KHNjYWxlLCBhcmd1bWVudHMpO1xuXG4gIHJldHVybiBzY2FsZTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIHNxcnQoKSB7XG4gIHJldHVybiBwb3cuYXBwbHkobnVsbCwgYXJndW1lbnRzKS5leHBvbmVudCgwLjUpO1xufVxuIl0sIm1hcHBpbmdzIjoiQUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7Iiwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///./node_modules/vega/node_modules/d3-scale/src/pow.js\n");

/***/ }),

/***/ "./node_modules/vega/node_modules/d3-scale/src/quantile.js":
/*!*****************************************************************!*\
  !*** ./node_modules/vega/node_modules/d3-scale/src/quantile.js ***!
  \*****************************************************************/
/*! exports provided: default */
/***/ (function(module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"default\", function() { return quantile; });\n/* harmony import */ var d3_array__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! d3-array */ \"./node_modules/d3-array/src/index.js\");\n/* harmony import */ var _init_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./init.js */ \"./node_modules/vega/node_modules/d3-scale/src/init.js\");\n\n\n\nfunction quantile() {\n  var domain = [],\n      range = [],\n      thresholds = [],\n      unknown;\n\n  function rescale() {\n    var i = 0, n = Math.max(1, range.length);\n    thresholds = new Array(n - 1);\n    while (++i < n) thresholds[i - 1] = Object(d3_array__WEBPACK_IMPORTED_MODULE_0__[\"quantileSorted\"])(domain, i / n);\n    return scale;\n  }\n\n  function scale(x) {\n    return x == null || isNaN(x = +x) ? unknown : range[Object(d3_array__WEBPACK_IMPORTED_MODULE_0__[\"bisect\"])(thresholds, x)];\n  }\n\n  scale.invertExtent = function(y) {\n    var i = range.indexOf(y);\n    return i < 0 ? [NaN, NaN] : [\n      i > 0 ? thresholds[i - 1] : domain[0],\n      i < thresholds.length ? thresholds[i] : domain[domain.length - 1]\n    ];\n  };\n\n  scale.domain = function(_) {\n    if (!arguments.length) return domain.slice();\n    domain = [];\n    for (let d of _) if (d != null && !isNaN(d = +d)) domain.push(d);\n    domain.sort(d3_array__WEBPACK_IMPORTED_MODULE_0__[\"ascending\"]);\n    return rescale();\n  };\n\n  scale.range = function(_) {\n    return arguments.length ? (range = Array.from(_), rescale()) : range.slice();\n  };\n\n  scale.unknown = function(_) {\n    return arguments.length ? (unknown = _, scale) : unknown;\n  };\n\n  scale.quantiles = function() {\n    return thresholds.slice();\n  };\n\n  scale.copy = function() {\n    return quantile()\n        .domain(domain)\n        .range(range)\n        .unknown(unknown);\n  };\n\n  return _init_js__WEBPACK_IMPORTED_MODULE_1__[\"initRange\"].apply(scale, arguments);\n}\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvdmVnYS9ub2RlX21vZHVsZXMvZDMtc2NhbGUvc3JjL3F1YW50aWxlLmpzLmpzIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL3ZlZ2Evbm9kZV9tb2R1bGVzL2QzLXNjYWxlL3NyYy9xdWFudGlsZS5qcz9jMTFjIl0sInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7YXNjZW5kaW5nLCBiaXNlY3QsIHF1YW50aWxlU29ydGVkIGFzIHRocmVzaG9sZH0gZnJvbSBcImQzLWFycmF5XCI7XG5pbXBvcnQge2luaXRSYW5nZX0gZnJvbSBcIi4vaW5pdC5qc1wiO1xuXG5leHBvcnQgZGVmYXVsdCBmdW5jdGlvbiBxdWFudGlsZSgpIHtcbiAgdmFyIGRvbWFpbiA9IFtdLFxuICAgICAgcmFuZ2UgPSBbXSxcbiAgICAgIHRocmVzaG9sZHMgPSBbXSxcbiAgICAgIHVua25vd247XG5cbiAgZnVuY3Rpb24gcmVzY2FsZSgpIHtcbiAgICB2YXIgaSA9IDAsIG4gPSBNYXRoLm1heCgxLCByYW5nZS5sZW5ndGgpO1xuICAgIHRocmVzaG9sZHMgPSBuZXcgQXJyYXkobiAtIDEpO1xuICAgIHdoaWxlICgrK2kgPCBuKSB0aHJlc2hvbGRzW2kgLSAxXSA9IHRocmVzaG9sZChkb21haW4sIGkgLyBuKTtcbiAgICByZXR1cm4gc2NhbGU7XG4gIH1cblxuICBmdW5jdGlvbiBzY2FsZSh4KSB7XG4gICAgcmV0dXJuIHggPT0gbnVsbCB8fCBpc05hTih4ID0gK3gpID8gdW5rbm93biA6IHJhbmdlW2Jpc2VjdCh0aHJlc2hvbGRzLCB4KV07XG4gIH1cblxuICBzY2FsZS5pbnZlcnRFeHRlbnQgPSBmdW5jdGlvbih5KSB7XG4gICAgdmFyIGkgPSByYW5nZS5pbmRleE9mKHkpO1xuICAgIHJldHVybiBpIDwgMCA/IFtOYU4sIE5hTl0gOiBbXG4gICAgICBpID4gMCA/IHRocmVzaG9sZHNbaSAtIDFdIDogZG9tYWluWzBdLFxuICAgICAgaSA8IHRocmVzaG9sZHMubGVuZ3RoID8gdGhyZXNob2xkc1tpXSA6IGRvbWFpbltkb21haW4ubGVuZ3RoIC0gMV1cbiAgICBdO1xuICB9O1xuXG4gIHNjYWxlLmRvbWFpbiA9IGZ1bmN0aW9uKF8pIHtcbiAgICBpZiAoIWFyZ3VtZW50cy5sZW5ndGgpIHJldHVybiBkb21haW4uc2xpY2UoKTtcbiAgICBkb21haW4gPSBbXTtcbiAgICBmb3IgKGxldCBkIG9mIF8pIGlmIChkICE9IG51bGwgJiYgIWlzTmFOKGQgPSArZCkpIGRvbWFpbi5wdXNoKGQpO1xuICAgIGRvbWFpbi5zb3J0KGFzY2VuZGluZyk7XG4gICAgcmV0dXJuIHJlc2NhbGUoKTtcbiAgfTtcblxuICBzY2FsZS5yYW5nZSA9IGZ1bmN0aW9uKF8pIHtcbiAgICByZXR1cm4gYXJndW1lbnRzLmxlbmd0aCA/IChyYW5nZSA9IEFycmF5LmZyb20oXyksIHJlc2NhbGUoKSkgOiByYW5nZS5zbGljZSgpO1xuICB9O1xuXG4gIHNjYWxlLnVua25vd24gPSBmdW5jdGlvbihfKSB7XG4gICAgcmV0dXJuIGFyZ3VtZW50cy5sZW5ndGggPyAodW5rbm93biA9IF8sIHNjYWxlKSA6IHVua25vd247XG4gIH07XG5cbiAgc2NhbGUucXVhbnRpbGVzID0gZnVuY3Rpb24oKSB7XG4gICAgcmV0dXJuIHRocmVzaG9sZHMuc2xpY2UoKTtcbiAgfTtcblxuICBzY2FsZS5jb3B5ID0gZnVuY3Rpb24oKSB7XG4gICAgcmV0dXJuIHF1YW50aWxlKClcbiAgICAgICAgLmRvbWFpbihkb21haW4pXG4gICAgICAgIC5yYW5nZShyYW5nZSlcbiAgICAgICAgLnVua25vd24odW5rbm93bik7XG4gIH07XG5cbiAgcmV0dXJuIGluaXRSYW5nZS5hcHBseShzY2FsZSwgYXJndW1lbnRzKTtcbn1cbiJdLCJtYXBwaW5ncyI6IkFBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7Iiwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///./node_modules/vega/node_modules/d3-scale/src/quantile.js\n");

/***/ }),

/***/ "./node_modules/vega/node_modules/d3-scale/src/quantize.js":
/*!*****************************************************************!*\
  !*** ./node_modules/vega/node_modules/d3-scale/src/quantize.js ***!
  \*****************************************************************/
/*! exports provided: default */
/***/ (function(module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"default\", function() { return quantize; });\n/* harmony import */ var d3_array__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! d3-array */ \"./node_modules/d3-array/src/index.js\");\n/* harmony import */ var _linear_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./linear.js */ \"./node_modules/vega/node_modules/d3-scale/src/linear.js\");\n/* harmony import */ var _init_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./init.js */ \"./node_modules/vega/node_modules/d3-scale/src/init.js\");\n\n\n\n\nfunction quantize() {\n  var x0 = 0,\n      x1 = 1,\n      n = 1,\n      domain = [0.5],\n      range = [0, 1],\n      unknown;\n\n  function scale(x) {\n    return x != null && x <= x ? range[Object(d3_array__WEBPACK_IMPORTED_MODULE_0__[\"bisect\"])(domain, x, 0, n)] : unknown;\n  }\n\n  function rescale() {\n    var i = -1;\n    domain = new Array(n);\n    while (++i < n) domain[i] = ((i + 1) * x1 - (i - n) * x0) / (n + 1);\n    return scale;\n  }\n\n  scale.domain = function(_) {\n    return arguments.length ? ([x0, x1] = _, x0 = +x0, x1 = +x1, rescale()) : [x0, x1];\n  };\n\n  scale.range = function(_) {\n    return arguments.length ? (n = (range = Array.from(_)).length - 1, rescale()) : range.slice();\n  };\n\n  scale.invertExtent = function(y) {\n    var i = range.indexOf(y);\n    return i < 0 ? [NaN, NaN]\n        : i < 1 ? [x0, domain[0]]\n        : i >= n ? [domain[n - 1], x1]\n        : [domain[i - 1], domain[i]];\n  };\n\n  scale.unknown = function(_) {\n    return arguments.length ? (unknown = _, scale) : scale;\n  };\n\n  scale.thresholds = function() {\n    return domain.slice();\n  };\n\n  scale.copy = function() {\n    return quantize()\n        .domain([x0, x1])\n        .range(range)\n        .unknown(unknown);\n  };\n\n  return _init_js__WEBPACK_IMPORTED_MODULE_2__[\"initRange\"].apply(Object(_linear_js__WEBPACK_IMPORTED_MODULE_1__[\"linearish\"])(scale), arguments);\n}\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvdmVnYS9ub2RlX21vZHVsZXMvZDMtc2NhbGUvc3JjL3F1YW50aXplLmpzLmpzIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL3ZlZ2Evbm9kZV9tb2R1bGVzL2QzLXNjYWxlL3NyYy9xdWFudGl6ZS5qcz83YjBkIl0sInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7YmlzZWN0fSBmcm9tIFwiZDMtYXJyYXlcIjtcbmltcG9ydCB7bGluZWFyaXNofSBmcm9tIFwiLi9saW5lYXIuanNcIjtcbmltcG9ydCB7aW5pdFJhbmdlfSBmcm9tIFwiLi9pbml0LmpzXCI7XG5cbmV4cG9ydCBkZWZhdWx0IGZ1bmN0aW9uIHF1YW50aXplKCkge1xuICB2YXIgeDAgPSAwLFxuICAgICAgeDEgPSAxLFxuICAgICAgbiA9IDEsXG4gICAgICBkb21haW4gPSBbMC41XSxcbiAgICAgIHJhbmdlID0gWzAsIDFdLFxuICAgICAgdW5rbm93bjtcblxuICBmdW5jdGlvbiBzY2FsZSh4KSB7XG4gICAgcmV0dXJuIHggIT0gbnVsbCAmJiB4IDw9IHggPyByYW5nZVtiaXNlY3QoZG9tYWluLCB4LCAwLCBuKV0gOiB1bmtub3duO1xuICB9XG5cbiAgZnVuY3Rpb24gcmVzY2FsZSgpIHtcbiAgICB2YXIgaSA9IC0xO1xuICAgIGRvbWFpbiA9IG5ldyBBcnJheShuKTtcbiAgICB3aGlsZSAoKytpIDwgbikgZG9tYWluW2ldID0gKChpICsgMSkgKiB4MSAtIChpIC0gbikgKiB4MCkgLyAobiArIDEpO1xuICAgIHJldHVybiBzY2FsZTtcbiAgfVxuXG4gIHNjYWxlLmRvbWFpbiA9IGZ1bmN0aW9uKF8pIHtcbiAgICByZXR1cm4gYXJndW1lbnRzLmxlbmd0aCA/IChbeDAsIHgxXSA9IF8sIHgwID0gK3gwLCB4MSA9ICt4MSwgcmVzY2FsZSgpKSA6IFt4MCwgeDFdO1xuICB9O1xuXG4gIHNjYWxlLnJhbmdlID0gZnVuY3Rpb24oXykge1xuICAgIHJldHVybiBhcmd1bWVudHMubGVuZ3RoID8gKG4gPSAocmFuZ2UgPSBBcnJheS5mcm9tKF8pKS5sZW5ndGggLSAxLCByZXNjYWxlKCkpIDogcmFuZ2Uuc2xpY2UoKTtcbiAgfTtcblxuICBzY2FsZS5pbnZlcnRFeHRlbnQgPSBmdW5jdGlvbih5KSB7XG4gICAgdmFyIGkgPSByYW5nZS5pbmRleE9mKHkpO1xuICAgIHJldHVybiBpIDwgMCA/IFtOYU4sIE5hTl1cbiAgICAgICAgOiBpIDwgMSA/IFt4MCwgZG9tYWluWzBdXVxuICAgICAgICA6IGkgPj0gbiA/IFtkb21haW5bbiAtIDFdLCB4MV1cbiAgICAgICAgOiBbZG9tYWluW2kgLSAxXSwgZG9tYWluW2ldXTtcbiAgfTtcblxuICBzY2FsZS51bmtub3duID0gZnVuY3Rpb24oXykge1xuICAgIHJldHVybiBhcmd1bWVudHMubGVuZ3RoID8gKHVua25vd24gPSBfLCBzY2FsZSkgOiBzY2FsZTtcbiAgfTtcblxuICBzY2FsZS50aHJlc2hvbGRzID0gZnVuY3Rpb24oKSB7XG4gICAgcmV0dXJuIGRvbWFpbi5zbGljZSgpO1xuICB9O1xuXG4gIHNjYWxlLmNvcHkgPSBmdW5jdGlvbigpIHtcbiAgICByZXR1cm4gcXVhbnRpemUoKVxuICAgICAgICAuZG9tYWluKFt4MCwgeDFdKVxuICAgICAgICAucmFuZ2UocmFuZ2UpXG4gICAgICAgIC51bmtub3duKHVua25vd24pO1xuICB9O1xuXG4gIHJldHVybiBpbml0UmFuZ2UuYXBwbHkobGluZWFyaXNoKHNjYWxlKSwgYXJndW1lbnRzKTtcbn1cbiJdLCJtYXBwaW5ncyI6IkFBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7Iiwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///./node_modules/vega/node_modules/d3-scale/src/quantize.js\n");

/***/ }),

/***/ "./node_modules/vega/node_modules/d3-scale/src/radial.js":
/*!***************************************************************!*\
  !*** ./node_modules/vega/node_modules/d3-scale/src/radial.js ***!
  \***************************************************************/
/*! exports provided: default */
/***/ (function(module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"default\", function() { return radial; });\n/* harmony import */ var _continuous_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./continuous.js */ \"./node_modules/vega/node_modules/d3-scale/src/continuous.js\");\n/* harmony import */ var _init_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./init.js */ \"./node_modules/vega/node_modules/d3-scale/src/init.js\");\n/* harmony import */ var _linear_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./linear.js */ \"./node_modules/vega/node_modules/d3-scale/src/linear.js\");\n/* harmony import */ var _number_js__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ./number.js */ \"./node_modules/vega/node_modules/d3-scale/src/number.js\");\n\n\n\n\n\nfunction square(x) {\n  return Math.sign(x) * x * x;\n}\n\nfunction unsquare(x) {\n  return Math.sign(x) * Math.sqrt(Math.abs(x));\n}\n\nfunction radial() {\n  var squared = Object(_continuous_js__WEBPACK_IMPORTED_MODULE_0__[\"default\"])(),\n      range = [0, 1],\n      round = false,\n      unknown;\n\n  function scale(x) {\n    var y = unsquare(squared(x));\n    return isNaN(y) ? unknown : round ? Math.round(y) : y;\n  }\n\n  scale.invert = function(y) {\n    return squared.invert(square(y));\n  };\n\n  scale.domain = function(_) {\n    return arguments.length ? (squared.domain(_), scale) : squared.domain();\n  };\n\n  scale.range = function(_) {\n    return arguments.length ? (squared.range((range = Array.from(_, _number_js__WEBPACK_IMPORTED_MODULE_3__[\"default\"])).map(square)), scale) : range.slice();\n  };\n\n  scale.rangeRound = function(_) {\n    return scale.range(_).round(true);\n  };\n\n  scale.round = function(_) {\n    return arguments.length ? (round = !!_, scale) : round;\n  };\n\n  scale.clamp = function(_) {\n    return arguments.length ? (squared.clamp(_), scale) : squared.clamp();\n  };\n\n  scale.unknown = function(_) {\n    return arguments.length ? (unknown = _, scale) : unknown;\n  };\n\n  scale.copy = function() {\n    return radial(squared.domain(), range)\n        .round(round)\n        .clamp(squared.clamp())\n        .unknown(unknown);\n  };\n\n  _init_js__WEBPACK_IMPORTED_MODULE_1__[\"initRange\"].apply(scale, arguments);\n\n  return Object(_linear_js__WEBPACK_IMPORTED_MODULE_2__[\"linearish\"])(scale);\n}\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvdmVnYS9ub2RlX21vZHVsZXMvZDMtc2NhbGUvc3JjL3JhZGlhbC5qcy5qcyIsInNvdXJjZXMiOlsid2VicGFjazovLy8uL25vZGVfbW9kdWxlcy92ZWdhL25vZGVfbW9kdWxlcy9kMy1zY2FsZS9zcmMvcmFkaWFsLmpzPzgxYzkiXSwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IGNvbnRpbnVvdXMgZnJvbSBcIi4vY29udGludW91cy5qc1wiO1xuaW1wb3J0IHtpbml0UmFuZ2V9IGZyb20gXCIuL2luaXQuanNcIjtcbmltcG9ydCB7bGluZWFyaXNofSBmcm9tIFwiLi9saW5lYXIuanNcIjtcbmltcG9ydCBudW1iZXIgZnJvbSBcIi4vbnVtYmVyLmpzXCI7XG5cbmZ1bmN0aW9uIHNxdWFyZSh4KSB7XG4gIHJldHVybiBNYXRoLnNpZ24oeCkgKiB4ICogeDtcbn1cblxuZnVuY3Rpb24gdW5zcXVhcmUoeCkge1xuICByZXR1cm4gTWF0aC5zaWduKHgpICogTWF0aC5zcXJ0KE1hdGguYWJzKHgpKTtcbn1cblxuZXhwb3J0IGRlZmF1bHQgZnVuY3Rpb24gcmFkaWFsKCkge1xuICB2YXIgc3F1YXJlZCA9IGNvbnRpbnVvdXMoKSxcbiAgICAgIHJhbmdlID0gWzAsIDFdLFxuICAgICAgcm91bmQgPSBmYWxzZSxcbiAgICAgIHVua25vd247XG5cbiAgZnVuY3Rpb24gc2NhbGUoeCkge1xuICAgIHZhciB5ID0gdW5zcXVhcmUoc3F1YXJlZCh4KSk7XG4gICAgcmV0dXJuIGlzTmFOKHkpID8gdW5rbm93biA6IHJvdW5kID8gTWF0aC5yb3VuZCh5KSA6IHk7XG4gIH1cblxuICBzY2FsZS5pbnZlcnQgPSBmdW5jdGlvbih5KSB7XG4gICAgcmV0dXJuIHNxdWFyZWQuaW52ZXJ0KHNxdWFyZSh5KSk7XG4gIH07XG5cbiAgc2NhbGUuZG9tYWluID0gZnVuY3Rpb24oXykge1xuICAgIHJldHVybiBhcmd1bWVudHMubGVuZ3RoID8gKHNxdWFyZWQuZG9tYWluKF8pLCBzY2FsZSkgOiBzcXVhcmVkLmRvbWFpbigpO1xuICB9O1xuXG4gIHNjYWxlLnJhbmdlID0gZnVuY3Rpb24oXykge1xuICAgIHJldHVybiBhcmd1bWVudHMubGVuZ3RoID8gKHNxdWFyZWQucmFuZ2UoKHJhbmdlID0gQXJyYXkuZnJvbShfLCBudW1iZXIpKS5tYXAoc3F1YXJlKSksIHNjYWxlKSA6IHJhbmdlLnNsaWNlKCk7XG4gIH07XG5cbiAgc2NhbGUucmFuZ2VSb3VuZCA9IGZ1bmN0aW9uKF8pIHtcbiAgICByZXR1cm4gc2NhbGUucmFuZ2UoXykucm91bmQodHJ1ZSk7XG4gIH07XG5cbiAgc2NhbGUucm91bmQgPSBmdW5jdGlvbihfKSB7XG4gICAgcmV0dXJuIGFyZ3VtZW50cy5sZW5ndGggPyAocm91bmQgPSAhIV8sIHNjYWxlKSA6IHJvdW5kO1xuICB9O1xuXG4gIHNjYWxlLmNsYW1wID0gZnVuY3Rpb24oXykge1xuICAgIHJldHVybiBhcmd1bWVudHMubGVuZ3RoID8gKHNxdWFyZWQuY2xhbXAoXyksIHNjYWxlKSA6IHNxdWFyZWQuY2xhbXAoKTtcbiAgfTtcblxuICBzY2FsZS51bmtub3duID0gZnVuY3Rpb24oXykge1xuICAgIHJldHVybiBhcmd1bWVudHMubGVuZ3RoID8gKHVua25vd24gPSBfLCBzY2FsZSkgOiB1bmtub3duO1xuICB9O1xuXG4gIHNjYWxlLmNvcHkgPSBmdW5jdGlvbigpIHtcbiAgICByZXR1cm4gcmFkaWFsKHNxdWFyZWQuZG9tYWluKCksIHJhbmdlKVxuICAgICAgICAucm91bmQocm91bmQpXG4gICAgICAgIC5jbGFtcChzcXVhcmVkLmNsYW1wKCkpXG4gICAgICAgIC51bmtub3duKHVua25vd24pO1xuICB9O1xuXG4gIGluaXRSYW5nZS5hcHBseShzY2FsZSwgYXJndW1lbnRzKTtcblxuICByZXR1cm4gbGluZWFyaXNoKHNjYWxlKTtcbn1cbiJdLCJtYXBwaW5ncyI6IkFBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOyIsInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///./node_modules/vega/node_modules/d3-scale/src/radial.js\n");

/***/ }),

/***/ "./node_modules/vega/node_modules/d3-scale/src/sequential.js":
/*!*******************************************************************!*\
  !*** ./node_modules/vega/node_modules/d3-scale/src/sequential.js ***!
  \*******************************************************************/
/*! exports provided: copy, default, sequentialLog, sequentialSymlog, sequentialPow, sequentialSqrt */
/***/ (function(module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"copy\", function() { return copy; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"default\", function() { return sequential; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"sequentialLog\", function() { return sequentialLog; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"sequentialSymlog\", function() { return sequentialSymlog; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"sequentialPow\", function() { return sequentialPow; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"sequentialSqrt\", function() { return sequentialSqrt; });\n/* harmony import */ var d3_interpolate__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! d3-interpolate */ \"./node_modules/vega/node_modules/d3-interpolate/src/index.js\");\n/* harmony import */ var _continuous_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./continuous.js */ \"./node_modules/vega/node_modules/d3-scale/src/continuous.js\");\n/* harmony import */ var _init_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./init.js */ \"./node_modules/vega/node_modules/d3-scale/src/init.js\");\n/* harmony import */ var _linear_js__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ./linear.js */ \"./node_modules/vega/node_modules/d3-scale/src/linear.js\");\n/* harmony import */ var _log_js__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ./log.js */ \"./node_modules/vega/node_modules/d3-scale/src/log.js\");\n/* harmony import */ var _symlog_js__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! ./symlog.js */ \"./node_modules/vega/node_modules/d3-scale/src/symlog.js\");\n/* harmony import */ var _pow_js__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! ./pow.js */ \"./node_modules/vega/node_modules/d3-scale/src/pow.js\");\n\n\n\n\n\n\n\n\nfunction transformer() {\n  var x0 = 0,\n      x1 = 1,\n      t0,\n      t1,\n      k10,\n      transform,\n      interpolator = _continuous_js__WEBPACK_IMPORTED_MODULE_1__[\"identity\"],\n      clamp = false,\n      unknown;\n\n  function scale(x) {\n    return x == null || isNaN(x = +x) ? unknown : interpolator(k10 === 0 ? 0.5 : (x = (transform(x) - t0) * k10, clamp ? Math.max(0, Math.min(1, x)) : x));\n  }\n\n  scale.domain = function(_) {\n    return arguments.length ? ([x0, x1] = _, t0 = transform(x0 = +x0), t1 = transform(x1 = +x1), k10 = t0 === t1 ? 0 : 1 / (t1 - t0), scale) : [x0, x1];\n  };\n\n  scale.clamp = function(_) {\n    return arguments.length ? (clamp = !!_, scale) : clamp;\n  };\n\n  scale.interpolator = function(_) {\n    return arguments.length ? (interpolator = _, scale) : interpolator;\n  };\n\n  function range(interpolate) {\n    return function(_) {\n      var r0, r1;\n      return arguments.length ? ([r0, r1] = _, interpolator = interpolate(r0, r1), scale) : [interpolator(0), interpolator(1)];\n    };\n  }\n\n  scale.range = range(d3_interpolate__WEBPACK_IMPORTED_MODULE_0__[\"interpolate\"]);\n\n  scale.rangeRound = range(d3_interpolate__WEBPACK_IMPORTED_MODULE_0__[\"interpolateRound\"]);\n\n  scale.unknown = function(_) {\n    return arguments.length ? (unknown = _, scale) : unknown;\n  };\n\n  return function(t) {\n    transform = t, t0 = t(x0), t1 = t(x1), k10 = t0 === t1 ? 0 : 1 / (t1 - t0);\n    return scale;\n  };\n}\n\nfunction copy(source, target) {\n  return target\n      .domain(source.domain())\n      .interpolator(source.interpolator())\n      .clamp(source.clamp())\n      .unknown(source.unknown());\n}\n\nfunction sequential() {\n  var scale = Object(_linear_js__WEBPACK_IMPORTED_MODULE_3__[\"linearish\"])(transformer()(_continuous_js__WEBPACK_IMPORTED_MODULE_1__[\"identity\"]));\n\n  scale.copy = function() {\n    return copy(scale, sequential());\n  };\n\n  return _init_js__WEBPACK_IMPORTED_MODULE_2__[\"initInterpolator\"].apply(scale, arguments);\n}\n\nfunction sequentialLog() {\n  var scale = Object(_log_js__WEBPACK_IMPORTED_MODULE_4__[\"loggish\"])(transformer()).domain([1, 10]);\n\n  scale.copy = function() {\n    return copy(scale, sequentialLog()).base(scale.base());\n  };\n\n  return _init_js__WEBPACK_IMPORTED_MODULE_2__[\"initInterpolator\"].apply(scale, arguments);\n}\n\nfunction sequentialSymlog() {\n  var scale = Object(_symlog_js__WEBPACK_IMPORTED_MODULE_5__[\"symlogish\"])(transformer());\n\n  scale.copy = function() {\n    return copy(scale, sequentialSymlog()).constant(scale.constant());\n  };\n\n  return _init_js__WEBPACK_IMPORTED_MODULE_2__[\"initInterpolator\"].apply(scale, arguments);\n}\n\nfunction sequentialPow() {\n  var scale = Object(_pow_js__WEBPACK_IMPORTED_MODULE_6__[\"powish\"])(transformer());\n\n  scale.copy = function() {\n    return copy(scale, sequentialPow()).exponent(scale.exponent());\n  };\n\n  return _init_js__WEBPACK_IMPORTED_MODULE_2__[\"initInterpolator\"].apply(scale, arguments);\n}\n\nfunction sequentialSqrt() {\n  return sequentialPow.apply(null, arguments).exponent(0.5);\n}\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,[encoded data, 4988 characters]\n//# sourceURL=webpack-internal:///./node_modules/vega/node_modules/d3-scale/src/sequential.js\n");

/***/ }),

/***/ "./node_modules/vega/node_modules/d3-scale/src/sequentialQuantile.js":
/*!***************************************************************************!*\
  !*** ./node_modules/vega/node_modules/d3-scale/src/sequentialQuantile.js ***!
  \***************************************************************************/
/*! exports provided: default */
/***/ (function(module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"default\", function() { return sequentialQuantile; });\n/* harmony import */ var d3_array__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! d3-array */ \"./node_modules/d3-array/src/index.js\");\n/* harmony import */ var _continuous_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./continuous.js */ \"./node_modules/vega/node_modules/d3-scale/src/continuous.js\");\n/* harmony import */ var _init_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./init.js */ \"./node_modules/vega/node_modules/d3-scale/src/init.js\");\n\n\n\n\nfunction sequentialQuantile() {\n  var domain = [],\n      interpolator = _continuous_js__WEBPACK_IMPORTED_MODULE_1__[\"identity\"];\n\n  function scale(x) {\n    if (x != null && !isNaN(x = +x)) return interpolator((Object(d3_array__WEBPACK_IMPORTED_MODULE_0__[\"bisect\"])(domain, x, 1) - 1) / (domain.length - 1));\n  }\n\n  scale.domain = function(_) {\n    if (!arguments.length) return domain.slice();\n    domain = [];\n    for (let d of _) if (d != null && !isNaN(d = +d)) domain.push(d);\n    domain.sort(d3_array__WEBPACK_IMPORTED_MODULE_0__[\"ascending\"]);\n    return scale;\n  };\n\n  scale.interpolator = function(_) {\n    return arguments.length ? (interpolator = _, scale) : interpolator;\n  };\n\n  scale.range = function() {\n    return domain.map((d, i) => interpolator(i / (domain.length - 1)));\n  };\n\n  scale.quantiles = function(n) {\n    return Array.from({length: n + 1}, (_, i) => Object(d3_array__WEBPACK_IMPORTED_MODULE_0__[\"quantile\"])(domain, i / n));\n  };\n\n  scale.copy = function() {\n    return sequentialQuantile(interpolator).domain(domain);\n  };\n\n  return _init_js__WEBPACK_IMPORTED_MODULE_2__[\"initInterpolator\"].apply(scale, arguments);\n}\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvdmVnYS9ub2RlX21vZHVsZXMvZDMtc2NhbGUvc3JjL3NlcXVlbnRpYWxRdWFudGlsZS5qcy5qcyIsInNvdXJjZXMiOlsid2VicGFjazovLy8uL25vZGVfbW9kdWxlcy92ZWdhL25vZGVfbW9kdWxlcy9kMy1zY2FsZS9zcmMvc2VxdWVudGlhbFF1YW50aWxlLmpzP2Y5OGUiXSwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHthc2NlbmRpbmcsIGJpc2VjdCwgcXVhbnRpbGV9IGZyb20gXCJkMy1hcnJheVwiO1xuaW1wb3J0IHtpZGVudGl0eX0gZnJvbSBcIi4vY29udGludW91cy5qc1wiO1xuaW1wb3J0IHtpbml0SW50ZXJwb2xhdG9yfSBmcm9tIFwiLi9pbml0LmpzXCI7XG5cbmV4cG9ydCBkZWZhdWx0IGZ1bmN0aW9uIHNlcXVlbnRpYWxRdWFudGlsZSgpIHtcbiAgdmFyIGRvbWFpbiA9IFtdLFxuICAgICAgaW50ZXJwb2xhdG9yID0gaWRlbnRpdHk7XG5cbiAgZnVuY3Rpb24gc2NhbGUoeCkge1xuICAgIGlmICh4ICE9IG51bGwgJiYgIWlzTmFOKHggPSAreCkpIHJldHVybiBpbnRlcnBvbGF0b3IoKGJpc2VjdChkb21haW4sIHgsIDEpIC0gMSkgLyAoZG9tYWluLmxlbmd0aCAtIDEpKTtcbiAgfVxuXG4gIHNjYWxlLmRvbWFpbiA9IGZ1bmN0aW9uKF8pIHtcbiAgICBpZiAoIWFyZ3VtZW50cy5sZW5ndGgpIHJldHVybiBkb21haW4uc2xpY2UoKTtcbiAgICBkb21haW4gPSBbXTtcbiAgICBmb3IgKGxldCBkIG9mIF8pIGlmIChkICE9IG51bGwgJiYgIWlzTmFOKGQgPSArZCkpIGRvbWFpbi5wdXNoKGQpO1xuICAgIGRvbWFpbi5zb3J0KGFzY2VuZGluZyk7XG4gICAgcmV0dXJuIHNjYWxlO1xuICB9O1xuXG4gIHNjYWxlLmludGVycG9sYXRvciA9IGZ1bmN0aW9uKF8pIHtcbiAgICByZXR1cm4gYXJndW1lbnRzLmxlbmd0aCA/IChpbnRlcnBvbGF0b3IgPSBfLCBzY2FsZSkgOiBpbnRlcnBvbGF0b3I7XG4gIH07XG5cbiAgc2NhbGUucmFuZ2UgPSBmdW5jdGlvbigpIHtcbiAgICByZXR1cm4gZG9tYWluLm1hcCgoZCwgaSkgPT4gaW50ZXJwb2xhdG9yKGkgLyAoZG9tYWluLmxlbmd0aCAtIDEpKSk7XG4gIH07XG5cbiAgc2NhbGUucXVhbnRpbGVzID0gZnVuY3Rpb24obikge1xuICAgIHJldHVybiBBcnJheS5mcm9tKHtsZW5ndGg6IG4gKyAxfSwgKF8sIGkpID0+IHF1YW50aWxlKGRvbWFpbiwgaSAvIG4pKTtcbiAgfTtcblxuICBzY2FsZS5jb3B5ID0gZnVuY3Rpb24oKSB7XG4gICAgcmV0dXJuIHNlcXVlbnRpYWxRdWFudGlsZShpbnRlcnBvbGF0b3IpLmRvbWFpbihkb21haW4pO1xuICB9O1xuXG4gIHJldHVybiBpbml0SW50ZXJwb2xhdG9yLmFwcGx5KHNjYWxlLCBhcmd1bWVudHMpO1xufVxuIl0sIm1hcHBpbmdzIjoiQUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTsiLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///./node_modules/vega/node_modules/d3-scale/src/sequentialQuantile.js\n");

/***/ }),

/***/ "./node_modules/vega/node_modules/d3-scale/src/symlog.js":
/*!***************************************************************!*\
  !*** ./node_modules/vega/node_modules/d3-scale/src/symlog.js ***!
  \***************************************************************/
/*! exports provided: symlogish, default */
/***/ (function(module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"symlogish\", function() { return symlogish; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"default\", function() { return symlog; });\n/* harmony import */ var _linear_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./linear.js */ \"./node_modules/vega/node_modules/d3-scale/src/linear.js\");\n/* harmony import */ var _continuous_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./continuous.js */ \"./node_modules/vega/node_modules/d3-scale/src/continuous.js\");\n/* harmony import */ var _init_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./init.js */ \"./node_modules/vega/node_modules/d3-scale/src/init.js\");\n\n\n\n\nfunction transformSymlog(c) {\n  return function(x) {\n    return Math.sign(x) * Math.log1p(Math.abs(x / c));\n  };\n}\n\nfunction transformSymexp(c) {\n  return function(x) {\n    return Math.sign(x) * Math.expm1(Math.abs(x)) * c;\n  };\n}\n\nfunction symlogish(transform) {\n  var c = 1, scale = transform(transformSymlog(c), transformSymexp(c));\n\n  scale.constant = function(_) {\n    return arguments.length ? transform(transformSymlog(c = +_), transformSymexp(c)) : c;\n  };\n\n  return Object(_linear_js__WEBPACK_IMPORTED_MODULE_0__[\"linearish\"])(scale);\n}\n\nfunction symlog() {\n  var scale = symlogish(Object(_continuous_js__WEBPACK_IMPORTED_MODULE_1__[\"transformer\"])());\n\n  scale.copy = function() {\n    return Object(_continuous_js__WEBPACK_IMPORTED_MODULE_1__[\"copy\"])(scale, symlog()).constant(scale.constant());\n  };\n\n  return _init_js__WEBPACK_IMPORTED_MODULE_2__[\"initRange\"].apply(scale, arguments);\n}\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvdmVnYS9ub2RlX21vZHVsZXMvZDMtc2NhbGUvc3JjL3N5bWxvZy5qcy5qcyIsInNvdXJjZXMiOlsid2VicGFjazovLy8uL25vZGVfbW9kdWxlcy92ZWdhL25vZGVfbW9kdWxlcy9kMy1zY2FsZS9zcmMvc3ltbG9nLmpzPzY5MGIiXSwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtsaW5lYXJpc2h9IGZyb20gXCIuL2xpbmVhci5qc1wiO1xuaW1wb3J0IHtjb3B5LCB0cmFuc2Zvcm1lcn0gZnJvbSBcIi4vY29udGludW91cy5qc1wiO1xuaW1wb3J0IHtpbml0UmFuZ2V9IGZyb20gXCIuL2luaXQuanNcIjtcblxuZnVuY3Rpb24gdHJhbnNmb3JtU3ltbG9nKGMpIHtcbiAgcmV0dXJuIGZ1bmN0aW9uKHgpIHtcbiAgICByZXR1cm4gTWF0aC5zaWduKHgpICogTWF0aC5sb2cxcChNYXRoLmFicyh4IC8gYykpO1xuICB9O1xufVxuXG5mdW5jdGlvbiB0cmFuc2Zvcm1TeW1leHAoYykge1xuICByZXR1cm4gZnVuY3Rpb24oeCkge1xuICAgIHJldHVybiBNYXRoLnNpZ24oeCkgKiBNYXRoLmV4cG0xKE1hdGguYWJzKHgpKSAqIGM7XG4gIH07XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBzeW1sb2dpc2godHJhbnNmb3JtKSB7XG4gIHZhciBjID0gMSwgc2NhbGUgPSB0cmFuc2Zvcm0odHJhbnNmb3JtU3ltbG9nKGMpLCB0cmFuc2Zvcm1TeW1leHAoYykpO1xuXG4gIHNjYWxlLmNvbnN0YW50ID0gZnVuY3Rpb24oXykge1xuICAgIHJldHVybiBhcmd1bWVudHMubGVuZ3RoID8gdHJhbnNmb3JtKHRyYW5zZm9ybVN5bWxvZyhjID0gK18pLCB0cmFuc2Zvcm1TeW1leHAoYykpIDogYztcbiAgfTtcblxuICByZXR1cm4gbGluZWFyaXNoKHNjYWxlKTtcbn1cblxuZXhwb3J0IGRlZmF1bHQgZnVuY3Rpb24gc3ltbG9nKCkge1xuICB2YXIgc2NhbGUgPSBzeW1sb2dpc2godHJhbnNmb3JtZXIoKSk7XG5cbiAgc2NhbGUuY29weSA9IGZ1bmN0aW9uKCkge1xuICAgIHJldHVybiBjb3B5KHNjYWxlLCBzeW1sb2coKSkuY29uc3RhbnQoc2NhbGUuY29uc3RhbnQoKSk7XG4gIH07XG5cbiAgcmV0dXJuIGluaXRSYW5nZS5hcHBseShzY2FsZSwgYXJndW1lbnRzKTtcbn1cbiJdLCJtYXBwaW5ncyI6IkFBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTsiLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///./node_modules/vega/node_modules/d3-scale/src/symlog.js\n");

/***/ }),

/***/ "./node_modules/vega/node_modules/d3-scale/src/threshold.js":
/*!******************************************************************!*\
  !*** ./node_modules/vega/node_modules/d3-scale/src/threshold.js ***!
  \******************************************************************/
/*! exports provided: default */
/***/ (function(module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"default\", function() { return threshold; });\n/* harmony import */ var d3_array__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! d3-array */ \"./node_modules/d3-array/src/index.js\");\n/* harmony import */ var _init_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./init.js */ \"./node_modules/vega/node_modules/d3-scale/src/init.js\");\n\n\n\nfunction threshold() {\n  var domain = [0.5],\n      range = [0, 1],\n      unknown,\n      n = 1;\n\n  function scale(x) {\n    return x != null && x <= x ? range[Object(d3_array__WEBPACK_IMPORTED_MODULE_0__[\"bisect\"])(domain, x, 0, n)] : unknown;\n  }\n\n  scale.domain = function(_) {\n    return arguments.length ? (domain = Array.from(_), n = Math.min(domain.length, range.length - 1), scale) : domain.slice();\n  };\n\n  scale.range = function(_) {\n    return arguments.length ? (range = Array.from(_), n = Math.min(domain.length, range.length - 1), scale) : range.slice();\n  };\n\n  scale.invertExtent = function(y) {\n    var i = range.indexOf(y);\n    return [domain[i - 1], domain[i]];\n  };\n\n  scale.unknown = function(_) {\n    return arguments.length ? (unknown = _, scale) : unknown;\n  };\n\n  scale.copy = function() {\n    return threshold()\n        .domain(domain)\n        .range(range)\n        .unknown(unknown);\n  };\n\n  return _init_js__WEBPACK_IMPORTED_MODULE_1__[\"initRange\"].apply(scale, arguments);\n}\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvdmVnYS9ub2RlX21vZHVsZXMvZDMtc2NhbGUvc3JjL3RocmVzaG9sZC5qcy5qcyIsInNvdXJjZXMiOlsid2VicGFjazovLy8uL25vZGVfbW9kdWxlcy92ZWdhL25vZGVfbW9kdWxlcy9kMy1zY2FsZS9zcmMvdGhyZXNob2xkLmpzPzUwMzciXSwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtiaXNlY3R9IGZyb20gXCJkMy1hcnJheVwiO1xuaW1wb3J0IHtpbml0UmFuZ2V9IGZyb20gXCIuL2luaXQuanNcIjtcblxuZXhwb3J0IGRlZmF1bHQgZnVuY3Rpb24gdGhyZXNob2xkKCkge1xuICB2YXIgZG9tYWluID0gWzAuNV0sXG4gICAgICByYW5nZSA9IFswLCAxXSxcbiAgICAgIHVua25vd24sXG4gICAgICBuID0gMTtcblxuICBmdW5jdGlvbiBzY2FsZSh4KSB7XG4gICAgcmV0dXJuIHggIT0gbnVsbCAmJiB4IDw9IHggPyByYW5nZVtiaXNlY3QoZG9tYWluLCB4LCAwLCBuKV0gOiB1bmtub3duO1xuICB9XG5cbiAgc2NhbGUuZG9tYWluID0gZnVuY3Rpb24oXykge1xuICAgIHJldHVybiBhcmd1bWVudHMubGVuZ3RoID8gKGRvbWFpbiA9IEFycmF5LmZyb20oXyksIG4gPSBNYXRoLm1pbihkb21haW4ubGVuZ3RoLCByYW5nZS5sZW5ndGggLSAxKSwgc2NhbGUpIDogZG9tYWluLnNsaWNlKCk7XG4gIH07XG5cbiAgc2NhbGUucmFuZ2UgPSBmdW5jdGlvbihfKSB7XG4gICAgcmV0dXJuIGFyZ3VtZW50cy5sZW5ndGggPyAocmFuZ2UgPSBBcnJheS5mcm9tKF8pLCBuID0gTWF0aC5taW4oZG9tYWluLmxlbmd0aCwgcmFuZ2UubGVuZ3RoIC0gMSksIHNjYWxlKSA6IHJhbmdlLnNsaWNlKCk7XG4gIH07XG5cbiAgc2NhbGUuaW52ZXJ0RXh0ZW50ID0gZnVuY3Rpb24oeSkge1xuICAgIHZhciBpID0gcmFuZ2UuaW5kZXhPZih5KTtcbiAgICByZXR1cm4gW2RvbWFpbltpIC0gMV0sIGRvbWFpbltpXV07XG4gIH07XG5cbiAgc2NhbGUudW5rbm93biA9IGZ1bmN0aW9uKF8pIHtcbiAgICByZXR1cm4gYXJndW1lbnRzLmxlbmd0aCA/ICh1bmtub3duID0gXywgc2NhbGUpIDogdW5rbm93bjtcbiAgfTtcblxuICBzY2FsZS5jb3B5ID0gZnVuY3Rpb24oKSB7XG4gICAgcmV0dXJuIHRocmVzaG9sZCgpXG4gICAgICAgIC5kb21haW4oZG9tYWluKVxuICAgICAgICAucmFuZ2UocmFuZ2UpXG4gICAgICAgIC51bmtub3duKHVua25vd24pO1xuICB9O1xuXG4gIHJldHVybiBpbml0UmFuZ2UuYXBwbHkoc2NhbGUsIGFyZ3VtZW50cyk7XG59XG4iXSwibWFwcGluZ3MiOiJBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOyIsInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///./node_modules/vega/node_modules/d3-scale/src/threshold.js\n");

/***/ }),

/***/ "./node_modules/vega/node_modules/d3-scale/src/tickFormat.js":
/*!*******************************************************************!*\
  !*** ./node_modules/vega/node_modules/d3-scale/src/tickFormat.js ***!
  \*******************************************************************/
/*! exports provided: default */
/***/ (function(module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"default\", function() { return tickFormat; });\n/* harmony import */ var d3_array__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! d3-array */ \"./node_modules/d3-array/src/index.js\");\n/* harmony import */ var d3_format__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! d3-format */ \"./node_modules/vega/node_modules/d3-format/src/index.js\");\n\n\n\nfunction tickFormat(start, stop, count, specifier) {\n  var step = Object(d3_array__WEBPACK_IMPORTED_MODULE_0__[\"tickStep\"])(start, stop, count),\n      precision;\n  specifier = Object(d3_format__WEBPACK_IMPORTED_MODULE_1__[\"formatSpecifier\"])(specifier == null ? \",f\" : specifier);\n  switch (specifier.type) {\n    case \"s\": {\n      var value = Math.max(Math.abs(start), Math.abs(stop));\n      if (specifier.precision == null && !isNaN(precision = Object(d3_format__WEBPACK_IMPORTED_MODULE_1__[\"precisionPrefix\"])(step, value))) specifier.precision = precision;\n      return Object(d3_format__WEBPACK_IMPORTED_MODULE_1__[\"formatPrefix\"])(specifier, value);\n    }\n    case \"\":\n    case \"e\":\n    case \"g\":\n    case \"p\":\n    case \"r\": {\n      if (specifier.precision == null && !isNaN(precision = Object(d3_format__WEBPACK_IMPORTED_MODULE_1__[\"precisionRound\"])(step, Math.max(Math.abs(start), Math.abs(stop))))) specifier.precision = precision - (specifier.type === \"e\");\n      break;\n    }\n    case \"f\":\n    case \"%\": {\n      if (specifier.precision == null && !isNaN(precision = Object(d3_format__WEBPACK_IMPORTED_MODULE_1__[\"precisionFixed\"])(step))) specifier.precision = precision - (specifier.type === \"%\") * 2;\n      break;\n    }\n  }\n  return Object(d3_format__WEBPACK_IMPORTED_MODULE_1__[\"format\"])(specifier);\n}\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvdmVnYS9ub2RlX21vZHVsZXMvZDMtc2NhbGUvc3JjL3RpY2tGb3JtYXQuanMuanMiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvdmVnYS9ub2RlX21vZHVsZXMvZDMtc2NhbGUvc3JjL3RpY2tGb3JtYXQuanM/ZThiMiJdLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge3RpY2tTdGVwfSBmcm9tIFwiZDMtYXJyYXlcIjtcbmltcG9ydCB7Zm9ybWF0LCBmb3JtYXRQcmVmaXgsIGZvcm1hdFNwZWNpZmllciwgcHJlY2lzaW9uRml4ZWQsIHByZWNpc2lvblByZWZpeCwgcHJlY2lzaW9uUm91bmR9IGZyb20gXCJkMy1mb3JtYXRcIjtcblxuZXhwb3J0IGRlZmF1bHQgZnVuY3Rpb24gdGlja0Zvcm1hdChzdGFydCwgc3RvcCwgY291bnQsIHNwZWNpZmllcikge1xuICB2YXIgc3RlcCA9IHRpY2tTdGVwKHN0YXJ0LCBzdG9wLCBjb3VudCksXG4gICAgICBwcmVjaXNpb247XG4gIHNwZWNpZmllciA9IGZvcm1hdFNwZWNpZmllcihzcGVjaWZpZXIgPT0gbnVsbCA/IFwiLGZcIiA6IHNwZWNpZmllcik7XG4gIHN3aXRjaCAoc3BlY2lmaWVyLnR5cGUpIHtcbiAgICBjYXNlIFwic1wiOiB7XG4gICAgICB2YXIgdmFsdWUgPSBNYXRoLm1heChNYXRoLmFicyhzdGFydCksIE1hdGguYWJzKHN0b3ApKTtcbiAgICAgIGlmIChzcGVjaWZpZXIucHJlY2lzaW9uID09IG51bGwgJiYgIWlzTmFOKHByZWNpc2lvbiA9IHByZWNpc2lvblByZWZpeChzdGVwLCB2YWx1ZSkpKSBzcGVjaWZpZXIucHJlY2lzaW9uID0gcHJlY2lzaW9uO1xuICAgICAgcmV0dXJuIGZvcm1hdFByZWZpeChzcGVjaWZpZXIsIHZhbHVlKTtcbiAgICB9XG4gICAgY2FzZSBcIlwiOlxuICAgIGNhc2UgXCJlXCI6XG4gICAgY2FzZSBcImdcIjpcbiAgICBjYXNlIFwicFwiOlxuICAgIGNhc2UgXCJyXCI6IHtcbiAgICAgIGlmIChzcGVjaWZpZXIucHJlY2lzaW9uID09IG51bGwgJiYgIWlzTmFOKHByZWNpc2lvbiA9IHByZWNpc2lvblJvdW5kKHN0ZXAsIE1hdGgubWF4KE1hdGguYWJzKHN0YXJ0KSwgTWF0aC5hYnMoc3RvcCkpKSkpIHNwZWNpZmllci5wcmVjaXNpb24gPSBwcmVjaXNpb24gLSAoc3BlY2lmaWVyLnR5cGUgPT09IFwiZVwiKTtcbiAgICAgIGJyZWFrO1xuICAgIH1cbiAgICBjYXNlIFwiZlwiOlxuICAgIGNhc2UgXCIlXCI6IHtcbiAgICAgIGlmIChzcGVjaWZpZXIucHJlY2lzaW9uID09IG51bGwgJiYgIWlzTmFOKHByZWNpc2lvbiA9IHByZWNpc2lvbkZpeGVkKHN0ZXApKSkgc3BlY2lmaWVyLnByZWNpc2lvbiA9IHByZWNpc2lvbiAtIChzcGVjaWZpZXIudHlwZSA9PT0gXCIlXCIpICogMjtcbiAgICAgIGJyZWFrO1xuICAgIH1cbiAgfVxuICByZXR1cm4gZm9ybWF0KHNwZWNpZmllcik7XG59XG4iXSwibWFwcGluZ3MiOiJBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTsiLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///./node_modules/vega/node_modules/d3-scale/src/tickFormat.js\n");

/***/ }),

/***/ "./node_modules/vega/node_modules/d3-scale/src/time.js":
/*!*************************************************************!*\
  !*** ./node_modules/vega/node_modules/d3-scale/src/time.js ***!
  \*************************************************************/
/*! exports provided: calendar, default */
/***/ (function(module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"calendar\", function() { return calendar; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"default\", function() { return time; });\n/* harmony import */ var d3_time__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! d3-time */ \"./node_modules/vega/node_modules/d3-time/src/index.js\");\n/* harmony import */ var d3_time_format__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! d3-time-format */ \"./node_modules/vega/node_modules/d3-time-format/src/index.js\");\n/* harmony import */ var _continuous_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./continuous.js */ \"./node_modules/vega/node_modules/d3-scale/src/continuous.js\");\n/* harmony import */ var _init_js__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ./init.js */ \"./node_modules/vega/node_modules/d3-scale/src/init.js\");\n/* harmony import */ var _nice_js__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ./nice.js */ \"./node_modules/vega/node_modules/d3-scale/src/nice.js\");\n\n\n\n\n\n\nfunction date(t) {\n  return new Date(t);\n}\n\nfunction number(t) {\n  return t instanceof Date ? +t : +new Date(+t);\n}\n\nfunction calendar(ticks, tickInterval, year, month, week, day, hour, minute, second, format) {\n  var scale = Object(_continuous_js__WEBPACK_IMPORTED_MODULE_2__[\"default\"])(),\n      invert = scale.invert,\n      domain = scale.domain;\n\n  var formatMillisecond = format(\".%L\"),\n      formatSecond = format(\":%S\"),\n      formatMinute = format(\"%I:%M\"),\n      formatHour = format(\"%I %p\"),\n      formatDay = format(\"%a %d\"),\n      formatWeek = format(\"%b %d\"),\n      formatMonth = format(\"%B\"),\n      formatYear = format(\"%Y\");\n\n  function tickFormat(date) {\n    return (second(date) < date ? formatMillisecond\n        : minute(date) < date ? formatSecond\n        : hour(date) < date ? formatMinute\n        : day(date) < date ? formatHour\n        : month(date) < date ? (week(date) < date ? formatDay : formatWeek)\n        : year(date) < date ? formatMonth\n        : formatYear)(date);\n  }\n\n  scale.invert = function(y) {\n    return new Date(invert(y));\n  };\n\n  scale.domain = function(_) {\n    return arguments.length ? domain(Array.from(_, number)) : domain().map(date);\n  };\n\n  scale.ticks = function(interval) {\n    var d = domain();\n    return ticks(d[0], d[d.length - 1], interval == null ? 10 : interval);\n  };\n\n  scale.tickFormat = function(count, specifier) {\n    return specifier == null ? tickFormat : format(specifier);\n  };\n\n  scale.nice = function(interval) {\n    var d = domain();\n    if (!interval || typeof interval.range !== \"function\") interval = tickInterval(d[0], d[d.length - 1], interval == null ? 10 : interval);\n    return interval ? domain(Object(_nice_js__WEBPACK_IMPORTED_MODULE_4__[\"default\"])(d, interval)) : scale;\n  };\n\n  scale.copy = function() {\n    return Object(_continuous_js__WEBPACK_IMPORTED_MODULE_2__[\"copy\"])(scale, calendar(ticks, tickInterval, year, month, week, day, hour, minute, second, format));\n  };\n\n  return scale;\n}\n\nfunction time() {\n  return _init_js__WEBPACK_IMPORTED_MODULE_3__[\"initRange\"].apply(calendar(d3_time__WEBPACK_IMPORTED_MODULE_0__[\"timeTicks\"], d3_time__WEBPACK_IMPORTED_MODULE_0__[\"timeTickInterval\"], d3_time__WEBPACK_IMPORTED_MODULE_0__[\"timeYear\"], d3_time__WEBPACK_IMPORTED_MODULE_0__[\"timeMonth\"], d3_time__WEBPACK_IMPORTED_MODULE_0__[\"timeWeek\"], d3_time__WEBPACK_IMPORTED_MODULE_0__[\"timeDay\"], d3_time__WEBPACK_IMPORTED_MODULE_0__[\"timeHour\"], d3_time__WEBPACK_IMPORTED_MODULE_0__[\"timeMinute\"], d3_time__WEBPACK_IMPORTED_MODULE_0__[\"timeSecond\"], d3_time_format__WEBPACK_IMPORTED_MODULE_1__[\"timeFormat\"]).domain([new Date(2000, 0, 1), new Date(2000, 0, 2)]), arguments);\n}\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,[encoded data, 4104 characters]\n//# sourceURL=webpack-internal:///./node_modules/vega/node_modules/d3-scale/src/time.js\n");

/***/ }),

/***/ "./node_modules/vega/node_modules/d3-scale/src/utcTime.js":
/*!****************************************************************!*\
  !*** ./node_modules/vega/node_modules/d3-scale/src/utcTime.js ***!
  \****************************************************************/
/*! exports provided: default */
/***/ (function(module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"default\", function() { return utcTime; });\n/* harmony import */ var d3_time__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! d3-time */ \"./node_modules/vega/node_modules/d3-time/src/index.js\");\n/* harmony import */ var d3_time_format__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! d3-time-format */ \"./node_modules/vega/node_modules/d3-time-format/src/index.js\");\n/* harmony import */ var _time_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./time.js */ \"./node_modules/vega/node_modules/d3-scale/src/time.js\");\n/* harmony import */ var _init_js__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ./init.js */ \"./node_modules/vega/node_modules/d3-scale/src/init.js\");\n\n\n\n\n\nfunction utcTime() {\n  return _init_js__WEBPACK_IMPORTED_MODULE_3__[\"initRange\"].apply(Object(_time_js__WEBPACK_IMPORTED_MODULE_2__[\"calendar\"])(d3_time__WEBPACK_IMPORTED_MODULE_0__[\"utcTicks\"], d3_time__WEBPACK_IMPORTED_MODULE_0__[\"utcTickInterval\"], d3_time__WEBPACK_IMPORTED_MODULE_0__[\"utcYear\"], d3_time__WEBPACK_IMPORTED_MODULE_0__[\"utcMonth\"], d3_time__WEBPACK_IMPORTED_MODULE_0__[\"utcWeek\"], d3_time__WEBPACK_IMPORTED_MODULE_0__[\"utcDay\"], d3_time__WEBPACK_IMPORTED_MODULE_0__[\"utcHour\"], d3_time__WEBPACK_IMPORTED_MODULE_0__[\"utcMinute\"], d3_time__WEBPACK_IMPORTED_MODULE_0__[\"utcSecond\"], d3_time_format__WEBPACK_IMPORTED_MODULE_1__[\"utcFormat\"]).domain([Date.UTC(2000, 0, 1), Date.UTC(2000, 0, 2)]), arguments);\n}\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvdmVnYS9ub2RlX21vZHVsZXMvZDMtc2NhbGUvc3JjL3V0Y1RpbWUuanMuanMiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvdmVnYS9ub2RlX21vZHVsZXMvZDMtc2NhbGUvc3JjL3V0Y1RpbWUuanM/ZTMyZSJdLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge3V0Y1llYXIsIHV0Y01vbnRoLCB1dGNXZWVrLCB1dGNEYXksIHV0Y0hvdXIsIHV0Y01pbnV0ZSwgdXRjU2Vjb25kLCB1dGNUaWNrcywgdXRjVGlja0ludGVydmFsfSBmcm9tIFwiZDMtdGltZVwiO1xuaW1wb3J0IHt1dGNGb3JtYXR9IGZyb20gXCJkMy10aW1lLWZvcm1hdFwiO1xuaW1wb3J0IHtjYWxlbmRhcn0gZnJvbSBcIi4vdGltZS5qc1wiO1xuaW1wb3J0IHtpbml0UmFuZ2V9IGZyb20gXCIuL2luaXQuanNcIjtcblxuZXhwb3J0IGRlZmF1bHQgZnVuY3Rpb24gdXRjVGltZSgpIHtcbiAgcmV0dXJuIGluaXRSYW5nZS5hcHBseShjYWxlbmRhcih1dGNUaWNrcywgdXRjVGlja0ludGVydmFsLCB1dGNZZWFyLCB1dGNNb250aCwgdXRjV2VlaywgdXRjRGF5LCB1dGNIb3VyLCB1dGNNaW51dGUsIHV0Y1NlY29uZCwgdXRjRm9ybWF0KS5kb21haW4oW0RhdGUuVVRDKDIwMDAsIDAsIDEpLCBEYXRlLlVUQygyMDAwLCAwLCAyKV0pLCBhcmd1bWVudHMpO1xufVxuIl0sIm1hcHBpbmdzIjoiQUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOyIsInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///./node_modules/vega/node_modules/d3-scale/src/utcTime.js\n");

/***/ }),

/***/ "./node_modules/vega/node_modules/d3-shape/src/arc.js":
/*!************************************************************!*\
  !*** ./node_modules/vega/node_modules/d3-shape/src/arc.js ***!
  \************************************************************/
/*! exports provided: default */
/***/ (function(module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var d3_path__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! d3-path */ \"./node_modules/vega/node_modules/d3-path/src/index.js\");\n/* harmony import */ var _constant_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./constant.js */ \"./node_modules/vega/node_modules/d3-shape/src/constant.js\");\n/* harmony import */ var _math_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./math.js */ \"./node_modules/vega/node_modules/d3-shape/src/math.js\");\n\n\n\n\nfunction arcInnerRadius(d) {\n  return d.innerRadius;\n}\n\nfunction arcOuterRadius(d) {\n  return d.outerRadius;\n}\n\nfunction arcStartAngle(d) {\n  return d.startAngle;\n}\n\nfunction arcEndAngle(d) {\n  return d.endAngle;\n}\n\nfunction arcPadAngle(d) {\n  return d && d.padAngle; // Note: optional!\n}\n\nfunction intersect(x0, y0, x1, y1, x2, y2, x3, y3) {\n  var x10 = x1 - x0, y10 = y1 - y0,\n      x32 = x3 - x2, y32 = y3 - y2,\n      t = y32 * x10 - x32 * y10;\n  if (t * t < _math_js__WEBPACK_IMPORTED_MODULE_2__[\"epsilon\"]) return;\n  t = (x32 * (y0 - y2) - y32 * (x0 - x2)) / t;\n  return [x0 + t * x10, y0 + t * y10];\n}\n\n// Compute perpendicular offset line of length rc.\n// http://mathworld.wolfram.com/Circle-LineIntersection.html\nfunction cornerTangents(x0, y0, x1, y1, r1, rc, cw) {\n  var x01 = x0 - x1,\n      y01 = y0 - y1,\n      lo = (cw ? rc : -rc) / Object(_math_js__WEBPACK_IMPORTED_MODULE_2__[\"sqrt\"])(x01 * x01 + y01 * y01),\n      ox = lo * y01,\n      oy = -lo * x01,\n      x11 = x0 + ox,\n      y11 = y0 + oy,\n      x10 = x1 + ox,\n      y10 = y1 + oy,\n      x00 = (x11 + x10) / 2,\n      y00 = (y11 + y10) / 2,\n      dx = x10 - x11,\n      dy = y10 - y11,\n      d2 = dx * dx + dy * dy,\n      r = r1 - rc,\n      D = x11 * y10 - x10 * y11,\n      d = (dy < 0 ? -1 : 1) * Object(_math_js__WEBPACK_IMPORTED_MODULE_2__[\"sqrt\"])(Object(_math_js__WEBPACK_IMPORTED_MODULE_2__[\"max\"])(0, r * r * d2 - D * D)),\n      cx0 = (D * dy - dx * d) / d2,\n      cy0 = (-D * dx - dy * d) / d2,\n      cx1 = (D * dy + dx * d) / d2,\n      cy1 = (-D * dx + dy * d) / d2,\n      dx0 = cx0 - x00,\n      dy0 = cy0 - y00,\n      dx1 = cx1 - x00,\n      dy1 = cy1 - y00;\n\n  // Pick the closer of the two intersection points.\n  // TODO Is there a faster way to determine which intersection to use?\n  if (dx0 * dx0 + dy0 * dy0 > dx1 * dx1 + dy1 * dy1) cx0 = cx1, cy0 = cy1;\n\n  return {\n    cx: cx0,\n    cy: cy0,\n    x01: -ox,\n    y01: -oy,\n    x11: cx0 * (r1 / r - 1),\n    y11: cy0 * (r1 / r - 1)\n  };\n}\n\n/* harmony default export */ __webpack_exports__[\"default\"] = (function() {\n  var innerRadius = arcInnerRadius,\n      outerRadius = arcOuterRadius,\n      cornerRadius = Object(_constant_js__WEBPACK_IMPORTED_MODULE_1__[\"default\"])(0),\n      padRadius = null,\n      startAngle = arcStartAngle,\n      endAngle = arcEndAngle,\n      padAngle = arcPadAngle,\n      context = null;\n\n  function arc() {\n    var buffer,\n        r,\n        r0 = +innerRadius.apply(this, arguments),\n        r1 = +outerRadius.apply(this, arguments),\n        a0 = startAngle.apply(this, arguments) - _math_js__WEBPACK_IMPORTED_MODULE_2__[\"halfPi\"],\n        a1 = endAngle.apply(this, arguments) - _math_js__WEBPACK_IMPORTED_MODULE_2__[\"halfPi\"],\n        da = Object(_math_js__WEBPACK_IMPORTED_MODULE_2__[\"abs\"])(a1 - a0),\n        cw = a1 > a0;\n\n    if (!context) context = buffer = Object(d3_path__WEBPACK_IMPORTED_MODULE_0__[\"path\"])();\n\n    // Ensure that the outer radius is always larger than the inner radius.\n    if (r1 < r0) r = r1, r1 = r0, r0 = r;\n\n    // Is it a point?\n    if (!(r1 > _math_js__WEBPACK_IMPORTED_MODULE_2__[\"epsilon\"])) context.moveTo(0, 0);\n\n    // Or is it a circle or annulus?\n    else if (da > _math_js__WEBPACK_IMPORTED_MODULE_2__[\"tau\"] - _math_js__WEBPACK_IMPORTED_MODULE_2__[\"epsilon\"]) {\n      context.moveTo(r1 * Object(_math_js__WEBPACK_IMPORTED_MODULE_2__[\"cos\"])(a0), r1 * Object(_math_js__WEBPACK_IMPORTED_MODULE_2__[\"sin\"])(a0));\n      context.arc(0, 0, r1, a0, a1, !cw);\n      if (r0 > _math_js__WEBPACK_IMPORTED_MODULE_2__[\"epsilon\"]) {\n        context.moveTo(r0 * Object(_math_js__WEBPACK_IMPORTED_MODULE_2__[\"cos\"])(a1), r0 * Object(_math_js__WEBPACK_IMPORTED_MODULE_2__[\"sin\"])(a1));\n        context.arc(0, 0, r0, a1, a0, cw);\n      }\n    }\n\n    // Or is it a circular or annular sector?\n    else {\n      var a01 = a0,\n          a11 = a1,\n          a00 = a0,\n          a10 = a1,\n          da0 = da,\n          da1 = da,\n          ap = padAngle.apply(this, arguments) / 2,\n          rp = (ap > _math_js__WEBPACK_IMPORTED_MODULE_2__[\"epsilon\"]) && (padRadius ? +padRadius.apply(this, arguments) : Object(_math_js__WEBPACK_IMPORTED_MODULE_2__[\"sqrt\"])(r0 * r0 + r1 * r1)),\n          rc = Object(_math_js__WEBPACK_IMPORTED_MODULE_2__[\"min\"])(Object(_math_js__WEBPACK_IMPORTED_MODULE_2__[\"abs\"])(r1 - r0) / 2, +cornerRadius.apply(this, arguments)),\n          rc0 = rc,\n          rc1 = rc,\n          t0,\n          t1;\n\n      // Apply padding? Note that since r1 ≥ r0, da1 ≥ da0.\n      if (rp > _math_js__WEBPACK_IMPORTED_MODULE_2__[\"epsilon\"]) {\n        var p0 = Object(_math_js__WEBPACK_IMPORTED_MODULE_2__[\"asin\"])(rp / r0 * Object(_math_js__WEBPACK_IMPORTED_MODULE_2__[\"sin\"])(ap)),\n            p1 = Object(_math_js__WEBPACK_IMPORTED_MODULE_2__[\"asin\"])(rp / r1 * Object(_math_js__WEBPACK_IMPORTED_MODULE_2__[\"sin\"])(ap));\n        if ((da0 -= p0 * 2) > _math_js__WEBPACK_IMPORTED_MODULE_2__[\"epsilon\"]) p0 *= (cw ? 1 : -1), a00 += p0, a10 -= p0;\n        else da0 = 0, a00 = a10 = (a0 + a1) / 2;\n        if ((da1 -= p1 * 2) > _math_js__WEBPACK_IMPORTED_MODULE_2__[\"epsilon\"]) p1 *= (cw ? 1 : -1), a01 += p1, a11 -= p1;\n        else da1 = 0, a01 = a11 = (a0 + a1) / 2;\n      }\n\n      var x01 = r1 * Object(_math_js__WEBPACK_IMPORTED_MODULE_2__[\"cos\"])(a01),\n          y01 = r1 * Object(_math_js__WEBPACK_IMPORTED_MODULE_2__[\"sin\"])(a01),\n          x10 = r0 * Object(_math_js__WEBPACK_IMPORTED_MODULE_2__[\"cos\"])(a10),\n          y10 = r0 * Object(_math_js__WEBPACK_IMPORTED_MODULE_2__[\"sin\"])(a10);\n\n      // Apply rounded corners?\n      if (rc > _math_js__WEBPACK_IMPORTED_MODULE_2__[\"epsilon\"]) {\n        var x11 = r1 * Object(_math_js__WEBPACK_IMPORTED_MODULE_2__[\"cos\"])(a11),\n            y11 = r1 * Object(_math_js__WEBPACK_IMPORTED_MODULE_2__[\"sin\"])(a11),\n            x00 = r0 * Object(_math_js__WEBPACK_IMPORTED_MODULE_2__[\"cos\"])(a00),\n            y00 = r0 * Object(_math_js__WEBPACK_IMPORTED_MODULE_2__[\"sin\"])(a00),\n            oc;\n\n        // Restrict the corner radius according to the sector angle.\n        if (da < _math_js__WEBPACK_IMPORTED_MODULE_2__[\"pi\"] && (oc = intersect(x01, y01, x00, y00, x11, y11, x10, y10))) {\n          var ax = x01 - oc[0],\n              ay = y01 - oc[1],\n              bx = x11 - oc[0],\n              by = y11 - oc[1],\n              kc = 1 / Object(_math_js__WEBPACK_IMPORTED_MODULE_2__[\"sin\"])(Object(_math_js__WEBPACK_IMPORTED_MODULE_2__[\"acos\"])((ax * bx + ay * by) / (Object(_math_js__WEBPACK_IMPORTED_MODULE_2__[\"sqrt\"])(ax * ax + ay * ay) * Object(_math_js__WEBPACK_IMPORTED_MODULE_2__[\"sqrt\"])(bx * bx + by * by))) / 2),\n              lc = Object(_math_js__WEBPACK_IMPORTED_MODULE_2__[\"sqrt\"])(oc[0] * oc[0] + oc[1] * oc[1]);\n          rc0 = Object(_math_js__WEBPACK_IMPORTED_MODULE_2__[\"min\"])(rc, (r0 - lc) / (kc - 1));\n          rc1 = Object(_math_js__WEBPACK_IMPORTED_MODULE_2__[\"min\"])(rc, (r1 - lc) / (kc + 1));\n        }\n      }\n\n      // Is the sector collapsed to a line?\n      if (!(da1 > _math_js__WEBPACK_IMPORTED_MODULE_2__[\"epsilon\"])) context.moveTo(x01, y01);\n\n      // Does the sector’s outer ring have rounded corners?\n      else if (rc1 > _math_js__WEBPACK_IMPORTED_MODULE_2__[\"epsilon\"]) {\n        t0 = cornerTangents(x00, y00, x01, y01, r1, rc1, cw);\n        t1 = cornerTangents(x11, y11, x10, y10, r1, rc1, cw);\n\n        context.moveTo(t0.cx + t0.x01, t0.cy + t0.y01);\n\n        // Have the corners merged?\n        if (rc1 < rc) context.arc(t0.cx, t0.cy, rc1, Object(_math_js__WEBPACK_IMPORTED_MODULE_2__[\"atan2\"])(t0.y01, t0.x01), Object(_math_js__WEBPACK_IMPORTED_MODULE_2__[\"atan2\"])(t1.y01, t1.x01), !cw);\n\n        // Otherwise, draw the two corners and the ring.\n        else {\n          context.arc(t0.cx, t0.cy, rc1, Object(_math_js__WEBPACK_IMPORTED_MODULE_2__[\"atan2\"])(t0.y01, t0.x01), Object(_math_js__WEBPACK_IMPORTED_MODULE_2__[\"atan2\"])(t0.y11, t0.x11), !cw);\n          context.arc(0, 0, r1, Object(_math_js__WEBPACK_IMPORTED_MODULE_2__[\"atan2\"])(t0.cy + t0.y11, t0.cx + t0.x11), Object(_math_js__WEBPACK_IMPORTED_MODULE_2__[\"atan2\"])(t1.cy + t1.y11, t1.cx + t1.x11), !cw);\n          context.arc(t1.cx, t1.cy, rc1, Object(_math_js__WEBPACK_IMPORTED_MODULE_2__[\"atan2\"])(t1.y11, t1.x11), Object(_math_js__WEBPACK_IMPORTED_MODULE_2__[\"atan2\"])(t1.y01, t1.x01), !cw);\n        }\n      }\n\n      // Or is the outer ring just a circular arc?\n      else context.moveTo(x01, y01), context.arc(0, 0, r1, a01, a11, !cw);\n\n      // Is there no inner ring, and it’s a circular sector?\n      // Or perhaps it’s an annular sector collapsed due to padding?\n      if (!(r0 > _math_js__WEBPACK_IMPORTED_MODULE_2__[\"epsilon\"]) || !(da0 > _math_js__WEBPACK_IMPORTED_MODULE_2__[\"epsilon\"])) context.lineTo(x10, y10);\n\n      // Does the sector’s inner ring (or point) have rounded corners?\n      else if (rc0 > _math_js__WEBPACK_IMPORTED_MODULE_2__[\"epsilon\"]) {\n        t0 = cornerTangents(x10, y10, x11, y11, r0, -rc0, cw);\n        t1 = cornerTangents(x01, y01, x00, y00, r0, -rc0, cw);\n\n        context.lineTo(t0.cx + t0.x01, t0.cy + t0.y01);\n\n        // Have the corners merged?\n        if (rc0 < rc) context.arc(t0.cx, t0.cy, rc0, Object(_math_js__WEBPACK_IMPORTED_MODULE_2__[\"atan2\"])(t0.y01, t0.x01), Object(_math_js__WEBPACK_IMPORTED_MODULE_2__[\"atan2\"])(t1.y01, t1.x01), !cw);\n\n        // Otherwise, draw the two corners and the ring.\n        else {\n          context.arc(t0.cx, t0.cy, rc0, Object(_math_js__WEBPACK_IMPORTED_MODULE_2__[\"atan2\"])(t0.y01, t0.x01), Object(_math_js__WEBPACK_IMPORTED_MODULE_2__[\"atan2\"])(t0.y11, t0.x11), !cw);\n          context.arc(0, 0, r0, Object(_math_js__WEBPACK_IMPORTED_MODULE_2__[\"atan2\"])(t0.cy + t0.y11, t0.cx + t0.x11), Object(_math_js__WEBPACK_IMPORTED_MODULE_2__[\"atan2\"])(t1.cy + t1.y11, t1.cx + t1.x11), cw);\n          context.arc(t1.cx, t1.cy, rc0, Object(_math_js__WEBPACK_IMPORTED_MODULE_2__[\"atan2\"])(t1.y11, t1.x11), Object(_math_js__WEBPACK_IMPORTED_MODULE_2__[\"atan2\"])(t1.y01, t1.x01), !cw);\n        }\n      }\n\n      // Or is the inner ring just a circular arc?\n      else context.arc(0, 0, r0, a10, a00, cw);\n    }\n\n    context.closePath();\n\n    if (buffer) return context = null, buffer + \"\" || null;\n  }\n\n  arc.centroid = function() {\n    var r = (+innerRadius.apply(this, arguments) + +outerRadius.apply(this, arguments)) / 2,\n        a = (+startAngle.apply(this, arguments) + +endAngle.apply(this, arguments)) / 2 - _math_js__WEBPACK_IMPORTED_MODULE_2__[\"pi\"] / 2;\n    return [Object(_math_js__WEBPACK_IMPORTED_MODULE_2__[\"cos\"])(a) * r, Object(_math_js__WEBPACK_IMPORTED_MODULE_2__[\"sin\"])(a) * r];\n  };\n\n  arc.innerRadius = function(_) {\n    return arguments.length ? (innerRadius = typeof _ === \"function\" ? _ : Object(_constant_js__WEBPACK_IMPORTED_MODULE_1__[\"default\"])(+_), arc) : innerRadius;\n  };\n\n  arc.outerRadius = function(_) {\n    return arguments.length ? (outerRadius = typeof _ === \"function\" ? _ : Object(_constant_js__WEBPACK_IMPORTED_MODULE_1__[\"default\"])(+_), arc) : outerRadius;\n  };\n\n  arc.cornerRadius = function(_) {\n    return arguments.length ? (cornerRadius = typeof _ === \"function\" ? _ : Object(_constant_js__WEBPACK_IMPORTED_MODULE_1__[\"default\"])(+_), arc) : cornerRadius;\n  };\n\n  arc.padRadius = function(_) {\n    return arguments.length ? (padRadius = _ == null ? null : typeof _ === \"function\" ? _ : Object(_constant_js__WEBPACK_IMPORTED_MODULE_1__[\"default\"])(+_), arc) : padRadius;\n  };\n\n  arc.startAngle = function(_) {\n    return arguments.length ? (startAngle = typeof _ === \"function\" ? _ : Object(_constant_js__WEBPACK_IMPORTED_MODULE_1__[\"default\"])(+_), arc) : startAngle;\n  };\n\n  arc.endAngle = function(_) {\n    return arguments.length ? (endAngle = typeof _ === \"function\" ? _ : Object(_constant_js__WEBPACK_IMPORTED_MODULE_1__[\"default\"])(+_), arc) : endAngle;\n  };\n\n  arc.padAngle = function(_) {\n    return arguments.length ? (padAngle = typeof _ === \"function\" ? _ : Object(_constant_js__WEBPACK_IMPORTED_MODULE_1__[\"default\"])(+_), arc) : padAngle;\n  };\n\n  arc.context = function(_) {\n    return arguments.length ? ((context = _ == null ? null : _), arc) : context;\n  };\n\n  return arc;\n});\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,[encoded data, 13880 characters]\n//# sourceURL=webpack-internal:///./node_modules/vega/node_modules/d3-shape/src/arc.js\n");

/***/ }),

/***/ "./node_modules/vega/node_modules/d3-shape/src/area.js":
/*!*************************************************************!*\
  !*** ./node_modules/vega/node_modules/d3-shape/src/area.js ***!
  \*************************************************************/
/*! exports provided: default */
/***/ (function(module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var d3_path__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! d3-path */ \"./node_modules/vega/node_modules/d3-path/src/index.js\");\n/* harmony import */ var _array_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./array.js */ \"./node_modules/vega/node_modules/d3-shape/src/array.js\");\n/* harmony import */ var _constant_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./constant.js */ \"./node_modules/vega/node_modules/d3-shape/src/constant.js\");\n/* harmony import */ var _curve_linear_js__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ./curve/linear.js */ \"./node_modules/vega/node_modules/d3-shape/src/curve/linear.js\");\n/* harmony import */ var _line_js__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ./line.js */ \"./node_modules/vega/node_modules/d3-shape/src/line.js\");\n/* harmony import */ var _point_js__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! ./point.js */ \"./node_modules/vega/node_modules/d3-shape/src/point.js\");\n\n\n\n\n\n\n\n/* harmony default export */ __webpack_exports__[\"default\"] = (function(x0, y0, y1) {\n  var x1 = null,\n      defined = Object(_constant_js__WEBPACK_IMPORTED_MODULE_2__[\"default\"])(true),\n      context = null,\n      curve = _curve_linear_js__WEBPACK_IMPORTED_MODULE_3__[\"default\"],\n      output = null;\n\n  x0 = typeof x0 === \"function\" ? x0 : (x0 === undefined) ? _point_js__WEBPACK_IMPORTED_MODULE_5__[\"x\"] : Object(_constant_js__WEBPACK_IMPORTED_MODULE_2__[\"default\"])(+x0);\n  y0 = typeof y0 === \"function\" ? y0 : (y0 === undefined) ? Object(_constant_js__WEBPACK_IMPORTED_MODULE_2__[\"default\"])(0) : Object(_constant_js__WEBPACK_IMPORTED_MODULE_2__[\"default\"])(+y0);\n  y1 = typeof y1 === \"function\" ? y1 : (y1 === undefined) ? _point_js__WEBPACK_IMPORTED_MODULE_5__[\"y\"] : Object(_constant_js__WEBPACK_IMPORTED_MODULE_2__[\"default\"])(+y1);\n\n  function area(data) {\n    var i,\n        j,\n        k,\n        n = (data = Object(_array_js__WEBPACK_IMPORTED_MODULE_1__[\"default\"])(data)).length,\n        d,\n        defined0 = false,\n        buffer,\n        x0z = new Array(n),\n        y0z = new Array(n);\n\n    if (context == null) output = curve(buffer = Object(d3_path__WEBPACK_IMPORTED_MODULE_0__[\"path\"])());\n\n    for (i = 0; i <= n; ++i) {\n      if (!(i < n && defined(d = data[i], i, data)) === defined0) {\n        if (defined0 = !defined0) {\n          j = i;\n          output.areaStart();\n          output.lineStart();\n        } else {\n          output.lineEnd();\n          output.lineStart();\n          for (k = i - 1; k >= j; --k) {\n            output.point(x0z[k], y0z[k]);\n          }\n          output.lineEnd();\n          output.areaEnd();\n        }\n      }\n      if (defined0) {\n        x0z[i] = +x0(d, i, data), y0z[i] = +y0(d, i, data);\n        output.point(x1 ? +x1(d, i, data) : x0z[i], y1 ? +y1(d, i, data) : y0z[i]);\n      }\n    }\n\n    if (buffer) return output = null, buffer + \"\" || null;\n  }\n\n  function arealine() {\n    return Object(_line_js__WEBPACK_IMPORTED_MODULE_4__[\"default\"])().defined(defined).curve(curve).context(context);\n  }\n\n  area.x = function(_) {\n    return arguments.length ? (x0 = typeof _ === \"function\" ? _ : Object(_constant_js__WEBPACK_IMPORTED_MODULE_2__[\"default\"])(+_), x1 = null, area) : x0;\n  };\n\n  area.x0 = function(_) {\n    return arguments.length ? (x0 = typeof _ === \"function\" ? _ : Object(_constant_js__WEBPACK_IMPORTED_MODULE_2__[\"default\"])(+_), area) : x0;\n  };\n\n  area.x1 = function(_) {\n    return arguments.length ? (x1 = _ == null ? null : typeof _ === \"function\" ? _ : Object(_constant_js__WEBPACK_IMPORTED_MODULE_2__[\"default\"])(+_), area) : x1;\n  };\n\n  area.y = function(_) {\n    return arguments.length ? (y0 = typeof _ === \"function\" ? _ : Object(_constant_js__WEBPACK_IMPORTED_MODULE_2__[\"default\"])(+_), y1 = null, area) : y0;\n  };\n\n  area.y0 = function(_) {\n    return arguments.length ? (y0 = typeof _ === \"function\" ? _ : Object(_constant_js__WEBPACK_IMPORTED_MODULE_2__[\"default\"])(+_), area) : y0;\n  };\n\n  area.y1 = function(_) {\n    return arguments.length ? (y1 = _ == null ? null : typeof _ === \"function\" ? _ : Object(_constant_js__WEBPACK_IMPORTED_MODULE_2__[\"default\"])(+_), area) : y1;\n  };\n\n  area.lineX0 =\n  area.lineY0 = function() {\n    return arealine().x(x0).y(y0);\n  };\n\n  area.lineY1 = function() {\n    return arealine().x(x0).y(y1);\n  };\n\n  area.lineX1 = function() {\n    return arealine().x(x1).y(y0);\n  };\n\n  area.defined = function(_) {\n    return arguments.length ? (defined = typeof _ === \"function\" ? _ : Object(_constant_js__WEBPACK_IMPORTED_MODULE_2__[\"default\"])(!!_), area) : defined;\n  };\n\n  area.curve = function(_) {\n    return arguments.length ? (curve = _, context != null && (output = curve(context)), area) : curve;\n  };\n\n  area.context = function(_) {\n    return arguments.length ? (_ == null ? context = output = null : output = curve(context = _), area) : context;\n  };\n\n  return area;\n});\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,[encoded data, 5512 characters]\n//# sourceURL=webpack-internal:///./node_modules/vega/node_modules/d3-shape/src/area.js\n");

/***/ }),

/***/ "./node_modules/vega/node_modules/d3-shape/src/areaRadial.js":
/*!*******************************************************************!*\
  !*** ./node_modules/vega/node_modules/d3-shape/src/areaRadial.js ***!
  \*******************************************************************/
/*! exports provided: default */
/***/ (function(module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _curve_radial_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./curve/radial.js */ \"./node_modules/vega/node_modules/d3-shape/src/curve/radial.js\");\n/* harmony import */ var _area_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./area.js */ \"./node_modules/vega/node_modules/d3-shape/src/area.js\");\n/* harmony import */ var _lineRadial_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./lineRadial.js */ \"./node_modules/vega/node_modules/d3-shape/src/lineRadial.js\");\n\n\n\n\n/* harmony default export */ __webpack_exports__[\"default\"] = (function() {\n  var a = Object(_area_js__WEBPACK_IMPORTED_MODULE_1__[\"default\"])().curve(_curve_radial_js__WEBPACK_IMPORTED_MODULE_0__[\"curveRadialLinear\"]),\n      c = a.curve,\n      x0 = a.lineX0,\n      x1 = a.lineX1,\n      y0 = a.lineY0,\n      y1 = a.lineY1;\n\n  a.angle = a.x, delete a.x;\n  a.startAngle = a.x0, delete a.x0;\n  a.endAngle = a.x1, delete a.x1;\n  a.radius = a.y, delete a.y;\n  a.innerRadius = a.y0, delete a.y0;\n  a.outerRadius = a.y1, delete a.y1;\n  a.lineStartAngle = function() { return Object(_lineRadial_js__WEBPACK_IMPORTED_MODULE_2__[\"lineRadial\"])(x0()); }, delete a.lineX0;\n  a.lineEndAngle = function() { return Object(_lineRadial_js__WEBPACK_IMPORTED_MODULE_2__[\"lineRadial\"])(x1()); }, delete a.lineX1;\n  a.lineInnerRadius = function() { return Object(_lineRadial_js__WEBPACK_IMPORTED_MODULE_2__[\"lineRadial\"])(y0()); }, delete a.lineY0;\n  a.lineOuterRadius = function() { return Object(_lineRadial_js__WEBPACK_IMPORTED_MODULE_2__[\"lineRadial\"])(y1()); }, delete a.lineY1;\n\n  a.curve = function(_) {\n    return arguments.length ? c(Object(_curve_radial_js__WEBPACK_IMPORTED_MODULE_0__[\"default\"])(_)) : c()._curve;\n  };\n\n  return a;\n});\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvdmVnYS9ub2RlX21vZHVsZXMvZDMtc2hhcGUvc3JjL2FyZWFSYWRpYWwuanMuanMiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvdmVnYS9ub2RlX21vZHVsZXMvZDMtc2hhcGUvc3JjL2FyZWFSYWRpYWwuanM/ODk5ZCJdLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgY3VydmVSYWRpYWwsIHtjdXJ2ZVJhZGlhbExpbmVhcn0gZnJvbSBcIi4vY3VydmUvcmFkaWFsLmpzXCI7XG5pbXBvcnQgYXJlYSBmcm9tIFwiLi9hcmVhLmpzXCI7XG5pbXBvcnQge2xpbmVSYWRpYWx9IGZyb20gXCIuL2xpbmVSYWRpYWwuanNcIjtcblxuZXhwb3J0IGRlZmF1bHQgZnVuY3Rpb24oKSB7XG4gIHZhciBhID0gYXJlYSgpLmN1cnZlKGN1cnZlUmFkaWFsTGluZWFyKSxcbiAgICAgIGMgPSBhLmN1cnZlLFxuICAgICAgeDAgPSBhLmxpbmVYMCxcbiAgICAgIHgxID0gYS5saW5lWDEsXG4gICAgICB5MCA9IGEubGluZVkwLFxuICAgICAgeTEgPSBhLmxpbmVZMTtcblxuICBhLmFuZ2xlID0gYS54LCBkZWxldGUgYS54O1xuICBhLnN0YXJ0QW5nbGUgPSBhLngwLCBkZWxldGUgYS54MDtcbiAgYS5lbmRBbmdsZSA9IGEueDEsIGRlbGV0ZSBhLngxO1xuICBhLnJhZGl1cyA9IGEueSwgZGVsZXRlIGEueTtcbiAgYS5pbm5lclJhZGl1cyA9IGEueTAsIGRlbGV0ZSBhLnkwO1xuICBhLm91dGVyUmFkaXVzID0gYS55MSwgZGVsZXRlIGEueTE7XG4gIGEubGluZVN0YXJ0QW5nbGUgPSBmdW5jdGlvbigpIHsgcmV0dXJuIGxpbmVSYWRpYWwoeDAoKSk7IH0sIGRlbGV0ZSBhLmxpbmVYMDtcbiAgYS5saW5lRW5kQW5nbGUgPSBmdW5jdGlvbigpIHsgcmV0dXJuIGxpbmVSYWRpYWwoeDEoKSk7IH0sIGRlbGV0ZSBhLmxpbmVYMTtcbiAgYS5saW5lSW5uZXJSYWRpdXMgPSBmdW5jdGlvbigpIHsgcmV0dXJuIGxpbmVSYWRpYWwoeTAoKSk7IH0sIGRlbGV0ZSBhLmxpbmVZMDtcbiAgYS5saW5lT3V0ZXJSYWRpdXMgPSBmdW5jdGlvbigpIHsgcmV0dXJuIGxpbmVSYWRpYWwoeTEoKSk7IH0sIGRlbGV0ZSBhLmxpbmVZMTtcblxuICBhLmN1cnZlID0gZnVuY3Rpb24oXykge1xuICAgIHJldHVybiBhcmd1bWVudHMubGVuZ3RoID8gYyhjdXJ2ZVJhZGlhbChfKSkgOiBjKCkuX2N1cnZlO1xuICB9O1xuXG4gIHJldHVybiBhO1xufVxuIl0sIm1hcHBpbmdzIjoiQUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7Iiwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///./node_modules/vega/node_modules/d3-shape/src/areaRadial.js\n");

/***/ }),

/***/ "./node_modules/vega/node_modules/d3-shape/src/array.js":
/*!**************************************************************!*\
  !*** ./node_modules/vega/node_modules/d3-shape/src/array.js ***!
  \**************************************************************/
/*! exports provided: slice, default */
/***/ (function(module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"slice\", function() { return slice; });\nvar slice = Array.prototype.slice;\n\n/* harmony default export */ __webpack_exports__[\"default\"] = (function(x) {\n  return typeof x === \"object\" && \"length\" in x\n    ? x // Array, TypedArray, NodeList, array-like\n    : Array.from(x); // Map, Set, iterable, string, or anything else\n});\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvdmVnYS9ub2RlX21vZHVsZXMvZDMtc2hhcGUvc3JjL2FycmF5LmpzLmpzIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL3ZlZ2Evbm9kZV9tb2R1bGVzL2QzLXNoYXBlL3NyYy9hcnJheS5qcz8yZDIyIl0sInNvdXJjZXNDb250ZW50IjpbImV4cG9ydCB2YXIgc2xpY2UgPSBBcnJheS5wcm90b3R5cGUuc2xpY2U7XG5cbmV4cG9ydCBkZWZhdWx0IGZ1bmN0aW9uKHgpIHtcbiAgcmV0dXJuIHR5cGVvZiB4ID09PSBcIm9iamVjdFwiICYmIFwibGVuZ3RoXCIgaW4geFxuICAgID8geCAvLyBBcnJheSwgVHlwZWRBcnJheSwgTm9kZUxpc3QsIGFycmF5LWxpa2VcbiAgICA6IEFycmF5LmZyb20oeCk7IC8vIE1hcCwgU2V0LCBpdGVyYWJsZSwgc3RyaW5nLCBvciBhbnl0aGluZyBlbHNlXG59XG4iXSwibWFwcGluZ3MiOiJBQUFBO0FBQUE7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTsiLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///./node_modules/vega/node_modules/d3-shape/src/array.js\n");

/***/ }),

/***/ "./node_modules/vega/node_modules/d3-shape/src/constant.js":
/*!*****************************************************************!*\
  !*** ./node_modules/vega/node_modules/d3-shape/src/constant.js ***!
  \*****************************************************************/
/*! exports provided: default */
/***/ (function(module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony default export */ __webpack_exports__[\"default\"] = (function(x) {\n  return function constant() {\n    return x;\n  };\n});\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvdmVnYS9ub2RlX21vZHVsZXMvZDMtc2hhcGUvc3JjL2NvbnN0YW50LmpzLmpzIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL3ZlZ2Evbm9kZV9tb2R1bGVzL2QzLXNoYXBlL3NyYy9jb25zdGFudC5qcz9kMTE0Il0sInNvdXJjZXNDb250ZW50IjpbImV4cG9ydCBkZWZhdWx0IGZ1bmN0aW9uKHgpIHtcbiAgcmV0dXJuIGZ1bmN0aW9uIGNvbnN0YW50KCkge1xuICAgIHJldHVybiB4O1xuICB9O1xufVxuIl0sIm1hcHBpbmdzIjoiQUFBQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7Iiwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///./node_modules/vega/node_modules/d3-shape/src/constant.js\n");

/***/ }),

/***/ "./node_modules/vega/node_modules/d3-shape/src/curve/basis.js":
/*!********************************************************************!*\
  !*** ./node_modules/vega/node_modules/d3-shape/src/curve/basis.js ***!
  \********************************************************************/
/*! exports provided: point, Basis, default */
/***/ (function(module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"point\", function() { return point; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"Basis\", function() { return Basis; });\nfunction point(that, x, y) {\n  that._context.bezierCurveTo(\n    (2 * that._x0 + that._x1) / 3,\n    (2 * that._y0 + that._y1) / 3,\n    (that._x0 + 2 * that._x1) / 3,\n    (that._y0 + 2 * that._y1) / 3,\n    (that._x0 + 4 * that._x1 + x) / 6,\n    (that._y0 + 4 * that._y1 + y) / 6\n  );\n}\n\nfunction Basis(context) {\n  this._context = context;\n}\n\nBasis.prototype = {\n  areaStart: function() {\n    this._line = 0;\n  },\n  areaEnd: function() {\n    this._line = NaN;\n  },\n  lineStart: function() {\n    this._x0 = this._x1 =\n    this._y0 = this._y1 = NaN;\n    this._point = 0;\n  },\n  lineEnd: function() {\n    switch (this._point) {\n      case 3: point(this, this._x1, this._y1); // proceed\n      case 2: this._context.lineTo(this._x1, this._y1); break;\n    }\n    if (this._line || (this._line !== 0 && this._point === 1)) this._context.closePath();\n    this._line = 1 - this._line;\n  },\n  point: function(x, y) {\n    x = +x, y = +y;\n    switch (this._point) {\n      case 0: this._point = 1; this._line ? this._context.lineTo(x, y) : this._context.moveTo(x, y); break;\n      case 1: this._point = 2; break;\n      case 2: this._point = 3; this._context.lineTo((5 * this._x0 + this._x1) / 6, (5 * this._y0 + this._y1) / 6); // proceed\n      default: point(this, x, y); break;\n    }\n    this._x0 = this._x1, this._x1 = x;\n    this._y0 = this._y1, this._y1 = y;\n  }\n};\n\n/* harmony default export */ __webpack_exports__[\"default\"] = (function(context) {\n  return new Basis(context);\n});\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvdmVnYS9ub2RlX21vZHVsZXMvZDMtc2hhcGUvc3JjL2N1cnZlL2Jhc2lzLmpzLmpzIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL3ZlZ2Evbm9kZV9tb2R1bGVzL2QzLXNoYXBlL3NyYy9jdXJ2ZS9iYXNpcy5qcz9iYWJhIl0sInNvdXJjZXNDb250ZW50IjpbImV4cG9ydCBmdW5jdGlvbiBwb2ludCh0aGF0LCB4LCB5KSB7XG4gIHRoYXQuX2NvbnRleHQuYmV6aWVyQ3VydmVUbyhcbiAgICAoMiAqIHRoYXQuX3gwICsgdGhhdC5feDEpIC8gMyxcbiAgICAoMiAqIHRoYXQuX3kwICsgdGhhdC5feTEpIC8gMyxcbiAgICAodGhhdC5feDAgKyAyICogdGhhdC5feDEpIC8gMyxcbiAgICAodGhhdC5feTAgKyAyICogdGhhdC5feTEpIC8gMyxcbiAgICAodGhhdC5feDAgKyA0ICogdGhhdC5feDEgKyB4KSAvIDYsXG4gICAgKHRoYXQuX3kwICsgNCAqIHRoYXQuX3kxICsgeSkgLyA2XG4gICk7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBCYXNpcyhjb250ZXh0KSB7XG4gIHRoaXMuX2NvbnRleHQgPSBjb250ZXh0O1xufVxuXG5CYXNpcy5wcm90b3R5cGUgPSB7XG4gIGFyZWFTdGFydDogZnVuY3Rpb24oKSB7XG4gICAgdGhpcy5fbGluZSA9IDA7XG4gIH0sXG4gIGFyZWFFbmQ6IGZ1bmN0aW9uKCkge1xuICAgIHRoaXMuX2xpbmUgPSBOYU47XG4gIH0sXG4gIGxpbmVTdGFydDogZnVuY3Rpb24oKSB7XG4gICAgdGhpcy5feDAgPSB0aGlzLl94MSA9XG4gICAgdGhpcy5feTAgPSB0aGlzLl95MSA9IE5hTjtcbiAgICB0aGlzLl9wb2ludCA9IDA7XG4gIH0sXG4gIGxpbmVFbmQ6IGZ1bmN0aW9uKCkge1xuICAgIHN3aXRjaCAodGhpcy5fcG9pbnQpIHtcbiAgICAgIGNhc2UgMzogcG9pbnQodGhpcywgdGhpcy5feDEsIHRoaXMuX3kxKTsgLy8gcHJvY2VlZFxuICAgICAgY2FzZSAyOiB0aGlzLl9jb250ZXh0LmxpbmVUbyh0aGlzLl94MSwgdGhpcy5feTEpOyBicmVhaztcbiAgICB9XG4gICAgaWYgKHRoaXMuX2xpbmUgfHwgKHRoaXMuX2xpbmUgIT09IDAgJiYgdGhpcy5fcG9pbnQgPT09IDEpKSB0aGlzLl9jb250ZXh0LmNsb3NlUGF0aCgpO1xuICAgIHRoaXMuX2xpbmUgPSAxIC0gdGhpcy5fbGluZTtcbiAgfSxcbiAgcG9pbnQ6IGZ1bmN0aW9uKHgsIHkpIHtcbiAgICB4ID0gK3gsIHkgPSAreTtcbiAgICBzd2l0Y2ggKHRoaXMuX3BvaW50KSB7XG4gICAgICBjYXNlIDA6IHRoaXMuX3BvaW50ID0gMTsgdGhpcy5fbGluZSA/IHRoaXMuX2NvbnRleHQubGluZVRvKHgsIHkpIDogdGhpcy5fY29udGV4dC5tb3ZlVG8oeCwgeSk7IGJyZWFrO1xuICAgICAgY2FzZSAxOiB0aGlzLl9wb2ludCA9IDI7IGJyZWFrO1xuICAgICAgY2FzZSAyOiB0aGlzLl9wb2ludCA9IDM7IHRoaXMuX2NvbnRleHQubGluZVRvKCg1ICogdGhpcy5feDAgKyB0aGlzLl94MSkgLyA2LCAoNSAqIHRoaXMuX3kwICsgdGhpcy5feTEpIC8gNik7IC8vIHByb2NlZWRcbiAgICAgIGRlZmF1bHQ6IHBvaW50KHRoaXMsIHgsIHkpOyBicmVhaztcbiAgICB9XG4gICAgdGhpcy5feDAgPSB0aGlzLl94MSwgdGhpcy5feDEgPSB4O1xuICAgIHRoaXMuX3kwID0gdGhpcy5feTEsIHRoaXMuX3kxID0geTtcbiAgfVxufTtcblxuZXhwb3J0IGRlZmF1bHQgZnVuY3Rpb24oY29udGV4dCkge1xuICByZXR1cm4gbmV3IEJhc2lzKGNvbnRleHQpO1xufVxuIl0sIm1hcHBpbmdzIjoiQUFBQTtBQUFBO0FBQUE7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7Iiwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///./node_modules/vega/node_modules/d3-shape/src/curve/basis.js\n");

/***/ }),

/***/ "./node_modules/vega/node_modules/d3-shape/src/curve/basisClosed.js":
/*!**************************************************************************!*\
  !*** ./node_modules/vega/node_modules/d3-shape/src/curve/basisClosed.js ***!
  \**************************************************************************/
/*! exports provided: default */
/***/ (function(module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _noop_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../noop.js */ \"./node_modules/vega/node_modules/d3-shape/src/noop.js\");\n/* harmony import */ var _basis_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./basis.js */ \"./node_modules/vega/node_modules/d3-shape/src/curve/basis.js\");\n\n\n\nfunction BasisClosed(context) {\n  this._context = context;\n}\n\nBasisClosed.prototype = {\n  areaStart: _noop_js__WEBPACK_IMPORTED_MODULE_0__[\"default\"],\n  areaEnd: _noop_js__WEBPACK_IMPORTED_MODULE_0__[\"default\"],\n  lineStart: function() {\n    this._x0 = this._x1 = this._x2 = this._x3 = this._x4 =\n    this._y0 = this._y1 = this._y2 = this._y3 = this._y4 = NaN;\n    this._point = 0;\n  },\n  lineEnd: function() {\n    switch (this._point) {\n      case 1: {\n        this._context.moveTo(this._x2, this._y2);\n        this._context.closePath();\n        break;\n      }\n      case 2: {\n        this._context.moveTo((this._x2 + 2 * this._x3) / 3, (this._y2 + 2 * this._y3) / 3);\n        this._context.lineTo((this._x3 + 2 * this._x2) / 3, (this._y3 + 2 * this._y2) / 3);\n        this._context.closePath();\n        break;\n      }\n      case 3: {\n        this.point(this._x2, this._y2);\n        this.point(this._x3, this._y3);\n        this.point(this._x4, this._y4);\n        break;\n      }\n    }\n  },\n  point: function(x, y) {\n    x = +x, y = +y;\n    switch (this._point) {\n      case 0: this._point = 1; this._x2 = x, this._y2 = y; break;\n      case 1: this._point = 2; this._x3 = x, this._y3 = y; break;\n      case 2: this._point = 3; this._x4 = x, this._y4 = y; this._context.moveTo((this._x0 + 4 * this._x1 + x) / 6, (this._y0 + 4 * this._y1 + y) / 6); break;\n      default: Object(_basis_js__WEBPACK_IMPORTED_MODULE_1__[\"point\"])(this, x, y); break;\n    }\n    this._x0 = this._x1, this._x1 = x;\n    this._y0 = this._y1, this._y1 = y;\n  }\n};\n\n/* harmony default export */ __webpack_exports__[\"default\"] = (function(context) {\n  return new BasisClosed(context);\n});\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvdmVnYS9ub2RlX21vZHVsZXMvZDMtc2hhcGUvc3JjL2N1cnZlL2Jhc2lzQ2xvc2VkLmpzLmpzIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL3ZlZ2Evbm9kZV9tb2R1bGVzL2QzLXNoYXBlL3NyYy9jdXJ2ZS9iYXNpc0Nsb3NlZC5qcz81NjlkIl0sInNvdXJjZXNDb250ZW50IjpbImltcG9ydCBub29wIGZyb20gXCIuLi9ub29wLmpzXCI7XG5pbXBvcnQge3BvaW50fSBmcm9tIFwiLi9iYXNpcy5qc1wiO1xuXG5mdW5jdGlvbiBCYXNpc0Nsb3NlZChjb250ZXh0KSB7XG4gIHRoaXMuX2NvbnRleHQgPSBjb250ZXh0O1xufVxuXG5CYXNpc0Nsb3NlZC5wcm90b3R5cGUgPSB7XG4gIGFyZWFTdGFydDogbm9vcCxcbiAgYXJlYUVuZDogbm9vcCxcbiAgbGluZVN0YXJ0OiBmdW5jdGlvbigpIHtcbiAgICB0aGlzLl94MCA9IHRoaXMuX3gxID0gdGhpcy5feDIgPSB0aGlzLl94MyA9IHRoaXMuX3g0ID1cbiAgICB0aGlzLl95MCA9IHRoaXMuX3kxID0gdGhpcy5feTIgPSB0aGlzLl95MyA9IHRoaXMuX3k0ID0gTmFOO1xuICAgIHRoaXMuX3BvaW50ID0gMDtcbiAgfSxcbiAgbGluZUVuZDogZnVuY3Rpb24oKSB7XG4gICAgc3dpdGNoICh0aGlzLl9wb2ludCkge1xuICAgICAgY2FzZSAxOiB7XG4gICAgICAgIHRoaXMuX2NvbnRleHQubW92ZVRvKHRoaXMuX3gyLCB0aGlzLl95Mik7XG4gICAgICAgIHRoaXMuX2NvbnRleHQuY2xvc2VQYXRoKCk7XG4gICAgICAgIGJyZWFrO1xuICAgICAgfVxuICAgICAgY2FzZSAyOiB7XG4gICAgICAgIHRoaXMuX2NvbnRleHQubW92ZVRvKCh0aGlzLl94MiArIDIgKiB0aGlzLl94MykgLyAzLCAodGhpcy5feTIgKyAyICogdGhpcy5feTMpIC8gMyk7XG4gICAgICAgIHRoaXMuX2NvbnRleHQubGluZVRvKCh0aGlzLl94MyArIDIgKiB0aGlzLl94MikgLyAzLCAodGhpcy5feTMgKyAyICogdGhpcy5feTIpIC8gMyk7XG4gICAgICAgIHRoaXMuX2NvbnRleHQuY2xvc2VQYXRoKCk7XG4gICAgICAgIGJyZWFrO1xuICAgICAgfVxuICAgICAgY2FzZSAzOiB7XG4gICAgICAgIHRoaXMucG9pbnQodGhpcy5feDIsIHRoaXMuX3kyKTtcbiAgICAgICAgdGhpcy5wb2ludCh0aGlzLl94MywgdGhpcy5feTMpO1xuICAgICAgICB0aGlzLnBvaW50KHRoaXMuX3g0LCB0aGlzLl95NCk7XG4gICAgICAgIGJyZWFrO1xuICAgICAgfVxuICAgIH1cbiAgfSxcbiAgcG9pbnQ6IGZ1bmN0aW9uKHgsIHkpIHtcbiAgICB4ID0gK3gsIHkgPSAreTtcbiAgICBzd2l0Y2ggKHRoaXMuX3BvaW50KSB7XG4gICAgICBjYXNlIDA6IHRoaXMuX3BvaW50ID0gMTsgdGhpcy5feDIgPSB4LCB0aGlzLl95MiA9IHk7IGJyZWFrO1xuICAgICAgY2FzZSAxOiB0aGlzLl9wb2ludCA9IDI7IHRoaXMuX3gzID0geCwgdGhpcy5feTMgPSB5OyBicmVhaztcbiAgICAgIGNhc2UgMjogdGhpcy5fcG9pbnQgPSAzOyB0aGlzLl94NCA9IHgsIHRoaXMuX3k0ID0geTsgdGhpcy5fY29udGV4dC5tb3ZlVG8oKHRoaXMuX3gwICsgNCAqIHRoaXMuX3gxICsgeCkgLyA2LCAodGhpcy5feTAgKyA0ICogdGhpcy5feTEgKyB5KSAvIDYpOyBicmVhaztcbiAgICAgIGRlZmF1bHQ6IHBvaW50KHRoaXMsIHgsIHkpOyBicmVhaztcbiAgICB9XG4gICAgdGhpcy5feDAgPSB0aGlzLl94MSwgdGhpcy5feDEgPSB4O1xuICAgIHRoaXMuX3kwID0gdGhpcy5feTEsIHRoaXMuX3kxID0geTtcbiAgfVxufTtcblxuZXhwb3J0IGRlZmF1bHQgZnVuY3Rpb24oY29udGV4dCkge1xuICByZXR1cm4gbmV3IEJhc2lzQ2xvc2VkKGNvbnRleHQpO1xufVxuIl0sIm1hcHBpbmdzIjoiQUFBQTtBQUFBO0FBQUE7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTsiLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///./node_modules/vega/node_modules/d3-shape/src/curve/basisClosed.js\n");

/***/ }),

/***/ "./node_modules/vega/node_modules/d3-shape/src/curve/basisOpen.js":
/*!************************************************************************!*\
  !*** ./node_modules/vega/node_modules/d3-shape/src/curve/basisOpen.js ***!
  \************************************************************************/
/*! exports provided: default */
/***/ (function(module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _basis_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./basis.js */ \"./node_modules/vega/node_modules/d3-shape/src/curve/basis.js\");\n\n\nfunction BasisOpen(context) {\n  this._context = context;\n}\n\nBasisOpen.prototype = {\n  areaStart: function() {\n    this._line = 0;\n  },\n  areaEnd: function() {\n    this._line = NaN;\n  },\n  lineStart: function() {\n    this._x0 = this._x1 =\n    this._y0 = this._y1 = NaN;\n    this._point = 0;\n  },\n  lineEnd: function() {\n    if (this._line || (this._line !== 0 && this._point === 3)) this._context.closePath();\n    this._line = 1 - this._line;\n  },\n  point: function(x, y) {\n    x = +x, y = +y;\n    switch (this._point) {\n      case 0: this._point = 1; break;\n      case 1: this._point = 2; break;\n      case 2: this._point = 3; var x0 = (this._x0 + 4 * this._x1 + x) / 6, y0 = (this._y0 + 4 * this._y1 + y) / 6; this._line ? this._context.lineTo(x0, y0) : this._context.moveTo(x0, y0); break;\n      case 3: this._point = 4; // proceed\n      default: Object(_basis_js__WEBPACK_IMPORTED_MODULE_0__[\"point\"])(this, x, y); break;\n    }\n    this._x0 = this._x1, this._x1 = x;\n    this._y0 = this._y1, this._y1 = y;\n  }\n};\n\n/* harmony default export */ __webpack_exports__[\"default\"] = (function(context) {\n  return new BasisOpen(context);\n});\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvdmVnYS9ub2RlX21vZHVsZXMvZDMtc2hhcGUvc3JjL2N1cnZlL2Jhc2lzT3Blbi5qcy5qcyIsInNvdXJjZXMiOlsid2VicGFjazovLy8uL25vZGVfbW9kdWxlcy92ZWdhL25vZGVfbW9kdWxlcy9kMy1zaGFwZS9zcmMvY3VydmUvYmFzaXNPcGVuLmpzPzkwMmIiXSwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtwb2ludH0gZnJvbSBcIi4vYmFzaXMuanNcIjtcblxuZnVuY3Rpb24gQmFzaXNPcGVuKGNvbnRleHQpIHtcbiAgdGhpcy5fY29udGV4dCA9IGNvbnRleHQ7XG59XG5cbkJhc2lzT3Blbi5wcm90b3R5cGUgPSB7XG4gIGFyZWFTdGFydDogZnVuY3Rpb24oKSB7XG4gICAgdGhpcy5fbGluZSA9IDA7XG4gIH0sXG4gIGFyZWFFbmQ6IGZ1bmN0aW9uKCkge1xuICAgIHRoaXMuX2xpbmUgPSBOYU47XG4gIH0sXG4gIGxpbmVTdGFydDogZnVuY3Rpb24oKSB7XG4gICAgdGhpcy5feDAgPSB0aGlzLl94MSA9XG4gICAgdGhpcy5feTAgPSB0aGlzLl95MSA9IE5hTjtcbiAgICB0aGlzLl9wb2ludCA9IDA7XG4gIH0sXG4gIGxpbmVFbmQ6IGZ1bmN0aW9uKCkge1xuICAgIGlmICh0aGlzLl9saW5lIHx8ICh0aGlzLl9saW5lICE9PSAwICYmIHRoaXMuX3BvaW50ID09PSAzKSkgdGhpcy5fY29udGV4dC5jbG9zZVBhdGgoKTtcbiAgICB0aGlzLl9saW5lID0gMSAtIHRoaXMuX2xpbmU7XG4gIH0sXG4gIHBvaW50OiBmdW5jdGlvbih4LCB5KSB7XG4gICAgeCA9ICt4LCB5ID0gK3k7XG4gICAgc3dpdGNoICh0aGlzLl9wb2ludCkge1xuICAgICAgY2FzZSAwOiB0aGlzLl9wb2ludCA9IDE7IGJyZWFrO1xuICAgICAgY2FzZSAxOiB0aGlzLl9wb2ludCA9IDI7IGJyZWFrO1xuICAgICAgY2FzZSAyOiB0aGlzLl9wb2ludCA9IDM7IHZhciB4MCA9ICh0aGlzLl94MCArIDQgKiB0aGlzLl94MSArIHgpIC8gNiwgeTAgPSAodGhpcy5feTAgKyA0ICogdGhpcy5feTEgKyB5KSAvIDY7IHRoaXMuX2xpbmUgPyB0aGlzLl9jb250ZXh0LmxpbmVUbyh4MCwgeTApIDogdGhpcy5fY29udGV4dC5tb3ZlVG8oeDAsIHkwKTsgYnJlYWs7XG4gICAgICBjYXNlIDM6IHRoaXMuX3BvaW50ID0gNDsgLy8gcHJvY2VlZFxuICAgICAgZGVmYXVsdDogcG9pbnQodGhpcywgeCwgeSk7IGJyZWFrO1xuICAgIH1cbiAgICB0aGlzLl94MCA9IHRoaXMuX3gxLCB0aGlzLl94MSA9IHg7XG4gICAgdGhpcy5feTAgPSB0aGlzLl95MSwgdGhpcy5feTEgPSB5O1xuICB9XG59O1xuXG5leHBvcnQgZGVmYXVsdCBmdW5jdGlvbihjb250ZXh0KSB7XG4gIHJldHVybiBuZXcgQmFzaXNPcGVuKGNvbnRleHQpO1xufVxuIl0sIm1hcHBpbmdzIjoiQUFBQTtBQUFBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOyIsInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///./node_modules/vega/node_modules/d3-shape/src/curve/basisOpen.js\n");

/***/ }),

/***/ "./node_modules/vega/node_modules/d3-shape/src/curve/bump.js":
/*!*******************************************************************!*\
  !*** ./node_modules/vega/node_modules/d3-shape/src/curve/bump.js ***!
  \*******************************************************************/
/*! exports provided: bumpX, bumpY */
/***/ (function(module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"bumpX\", function() { return bumpX; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"bumpY\", function() { return bumpY; });\nclass Bump {\n  constructor(context, x) {\n    this._context = context;\n    this._x = x;\n  }\n  areaStart() {\n    this._line = 0;\n  }\n  areaEnd() {\n    this._line = NaN;\n  }\n  lineStart() {\n    this._point = 0;\n  }\n  lineEnd() {\n    if (this._line || (this._line !== 0 && this._point === 1)) this._context.closePath();\n    this._line = 1 - this._line;\n  }\n  point(x, y) {\n    x = +x, y = +y;\n    switch (this._point) {\n      case 0: {\n        this._point = 1;\n        if (this._line) this._context.lineTo(x, y);\n        else this._context.moveTo(x, y);\n        break;\n      }\n      case 1: this._point = 2; // proceed\n      default: {\n        if (this._x) this._context.bezierCurveTo(this._x0 = (this._x0 + x) / 2, this._y0, this._x0, y, x, y);\n        else this._context.bezierCurveTo(this._x0, this._y0 = (this._y0 + y) / 2, x, this._y0, x, y);\n        break;\n      }\n    }\n    this._x0 = x, this._y0 = y;\n  }\n}\n\nfunction bumpX(context) {\n  return new Bump(context, true);\n}\n\nfunction bumpY(context) {\n  return new Bump(context, false);\n}\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvdmVnYS9ub2RlX21vZHVsZXMvZDMtc2hhcGUvc3JjL2N1cnZlL2J1bXAuanMuanMiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvdmVnYS9ub2RlX21vZHVsZXMvZDMtc2hhcGUvc3JjL2N1cnZlL2J1bXAuanM/Y2ZmYSJdLCJzb3VyY2VzQ29udGVudCI6WyJjbGFzcyBCdW1wIHtcbiAgY29uc3RydWN0b3IoY29udGV4dCwgeCkge1xuICAgIHRoaXMuX2NvbnRleHQgPSBjb250ZXh0O1xuICAgIHRoaXMuX3ggPSB4O1xuICB9XG4gIGFyZWFTdGFydCgpIHtcbiAgICB0aGlzLl9saW5lID0gMDtcbiAgfVxuICBhcmVhRW5kKCkge1xuICAgIHRoaXMuX2xpbmUgPSBOYU47XG4gIH1cbiAgbGluZVN0YXJ0KCkge1xuICAgIHRoaXMuX3BvaW50ID0gMDtcbiAgfVxuICBsaW5lRW5kKCkge1xuICAgIGlmICh0aGlzLl9saW5lIHx8ICh0aGlzLl9saW5lICE9PSAwICYmIHRoaXMuX3BvaW50ID09PSAxKSkgdGhpcy5fY29udGV4dC5jbG9zZVBhdGgoKTtcbiAgICB0aGlzLl9saW5lID0gMSAtIHRoaXMuX2xpbmU7XG4gIH1cbiAgcG9pbnQoeCwgeSkge1xuICAgIHggPSAreCwgeSA9ICt5O1xuICAgIHN3aXRjaCAodGhpcy5fcG9pbnQpIHtcbiAgICAgIGNhc2UgMDoge1xuICAgICAgICB0aGlzLl9wb2ludCA9IDE7XG4gICAgICAgIGlmICh0aGlzLl9saW5lKSB0aGlzLl9jb250ZXh0LmxpbmVUbyh4LCB5KTtcbiAgICAgICAgZWxzZSB0aGlzLl9jb250ZXh0Lm1vdmVUbyh4LCB5KTtcbiAgICAgICAgYnJlYWs7XG4gICAgICB9XG4gICAgICBjYXNlIDE6IHRoaXMuX3BvaW50ID0gMjsgLy8gcHJvY2VlZFxuICAgICAgZGVmYXVsdDoge1xuICAgICAgICBpZiAodGhpcy5feCkgdGhpcy5fY29udGV4dC5iZXppZXJDdXJ2ZVRvKHRoaXMuX3gwID0gKHRoaXMuX3gwICsgeCkgLyAyLCB0aGlzLl95MCwgdGhpcy5feDAsIHksIHgsIHkpO1xuICAgICAgICBlbHNlIHRoaXMuX2NvbnRleHQuYmV6aWVyQ3VydmVUbyh0aGlzLl94MCwgdGhpcy5feTAgPSAodGhpcy5feTAgKyB5KSAvIDIsIHgsIHRoaXMuX3kwLCB4LCB5KTtcbiAgICAgICAgYnJlYWs7XG4gICAgICB9XG4gICAgfVxuICAgIHRoaXMuX3gwID0geCwgdGhpcy5feTAgPSB5O1xuICB9XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBidW1wWChjb250ZXh0KSB7XG4gIHJldHVybiBuZXcgQnVtcChjb250ZXh0LCB0cnVlKTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGJ1bXBZKGNvbnRleHQpIHtcbiAgcmV0dXJuIG5ldyBCdW1wKGNvbnRleHQsIGZhbHNlKTtcbn1cbiJdLCJtYXBwaW5ncyI6IkFBQUE7QUFBQTtBQUFBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOyIsInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///./node_modules/vega/node_modules/d3-shape/src/curve/bump.js\n");

/***/ }),

/***/ "./node_modules/vega/node_modules/d3-shape/src/curve/bundle.js":
/*!*********************************************************************!*\
  !*** ./node_modules/vega/node_modules/d3-shape/src/curve/bundle.js ***!
  \*********************************************************************/
/*! exports provided: default */
/***/ (function(module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _basis_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./basis.js */ \"./node_modules/vega/node_modules/d3-shape/src/curve/basis.js\");\n\n\nfunction Bundle(context, beta) {\n  this._basis = new _basis_js__WEBPACK_IMPORTED_MODULE_0__[\"Basis\"](context);\n  this._beta = beta;\n}\n\nBundle.prototype = {\n  lineStart: function() {\n    this._x = [];\n    this._y = [];\n    this._basis.lineStart();\n  },\n  lineEnd: function() {\n    var x = this._x,\n        y = this._y,\n        j = x.length - 1;\n\n    if (j > 0) {\n      var x0 = x[0],\n          y0 = y[0],\n          dx = x[j] - x0,\n          dy = y[j] - y0,\n          i = -1,\n          t;\n\n      while (++i <= j) {\n        t = i / j;\n        this._basis.point(\n          this._beta * x[i] + (1 - this._beta) * (x0 + t * dx),\n          this._beta * y[i] + (1 - this._beta) * (y0 + t * dy)\n        );\n      }\n    }\n\n    this._x = this._y = null;\n    this._basis.lineEnd();\n  },\n  point: function(x, y) {\n    this._x.push(+x);\n    this._y.push(+y);\n  }\n};\n\n/* harmony default export */ __webpack_exports__[\"default\"] = ((function custom(beta) {\n\n  function bundle(context) {\n    return beta === 1 ? new _basis_js__WEBPACK_IMPORTED_MODULE_0__[\"Basis\"](context) : new Bundle(context, beta);\n  }\n\n  bundle.beta = function(beta) {\n    return custom(+beta);\n  };\n\n  return bundle;\n})(0.85));\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvdmVnYS9ub2RlX21vZHVsZXMvZDMtc2hhcGUvc3JjL2N1cnZlL2J1bmRsZS5qcy5qcyIsInNvdXJjZXMiOlsid2VicGFjazovLy8uL25vZGVfbW9kdWxlcy92ZWdhL25vZGVfbW9kdWxlcy9kMy1zaGFwZS9zcmMvY3VydmUvYnVuZGxlLmpzPzgxM2EiXSwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtCYXNpc30gZnJvbSBcIi4vYmFzaXMuanNcIjtcblxuZnVuY3Rpb24gQnVuZGxlKGNvbnRleHQsIGJldGEpIHtcbiAgdGhpcy5fYmFzaXMgPSBuZXcgQmFzaXMoY29udGV4dCk7XG4gIHRoaXMuX2JldGEgPSBiZXRhO1xufVxuXG5CdW5kbGUucHJvdG90eXBlID0ge1xuICBsaW5lU3RhcnQ6IGZ1bmN0aW9uKCkge1xuICAgIHRoaXMuX3ggPSBbXTtcbiAgICB0aGlzLl95ID0gW107XG4gICAgdGhpcy5fYmFzaXMubGluZVN0YXJ0KCk7XG4gIH0sXG4gIGxpbmVFbmQ6IGZ1bmN0aW9uKCkge1xuICAgIHZhciB4ID0gdGhpcy5feCxcbiAgICAgICAgeSA9IHRoaXMuX3ksXG4gICAgICAgIGogPSB4Lmxlbmd0aCAtIDE7XG5cbiAgICBpZiAoaiA+IDApIHtcbiAgICAgIHZhciB4MCA9IHhbMF0sXG4gICAgICAgICAgeTAgPSB5WzBdLFxuICAgICAgICAgIGR4ID0geFtqXSAtIHgwLFxuICAgICAgICAgIGR5ID0geVtqXSAtIHkwLFxuICAgICAgICAgIGkgPSAtMSxcbiAgICAgICAgICB0O1xuXG4gICAgICB3aGlsZSAoKytpIDw9IGopIHtcbiAgICAgICAgdCA9IGkgLyBqO1xuICAgICAgICB0aGlzLl9iYXNpcy5wb2ludChcbiAgICAgICAgICB0aGlzLl9iZXRhICogeFtpXSArICgxIC0gdGhpcy5fYmV0YSkgKiAoeDAgKyB0ICogZHgpLFxuICAgICAgICAgIHRoaXMuX2JldGEgKiB5W2ldICsgKDEgLSB0aGlzLl9iZXRhKSAqICh5MCArIHQgKiBkeSlcbiAgICAgICAgKTtcbiAgICAgIH1cbiAgICB9XG5cbiAgICB0aGlzLl94ID0gdGhpcy5feSA9IG51bGw7XG4gICAgdGhpcy5fYmFzaXMubGluZUVuZCgpO1xuICB9LFxuICBwb2ludDogZnVuY3Rpb24oeCwgeSkge1xuICAgIHRoaXMuX3gucHVzaCgreCk7XG4gICAgdGhpcy5feS5wdXNoKCt5KTtcbiAgfVxufTtcblxuZXhwb3J0IGRlZmF1bHQgKGZ1bmN0aW9uIGN1c3RvbShiZXRhKSB7XG5cbiAgZnVuY3Rpb24gYnVuZGxlKGNvbnRleHQpIHtcbiAgICByZXR1cm4gYmV0YSA9PT0gMSA/IG5ldyBCYXNpcyhjb250ZXh0KSA6IG5ldyBCdW5kbGUoY29udGV4dCwgYmV0YSk7XG4gIH1cblxuICBidW5kbGUuYmV0YSA9IGZ1bmN0aW9uKGJldGEpIHtcbiAgICByZXR1cm4gY3VzdG9tKCtiZXRhKTtcbiAgfTtcblxuICByZXR1cm4gYnVuZGxlO1xufSkoMC44NSk7XG4iXSwibWFwcGluZ3MiOiJBQUFBO0FBQUE7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOyIsInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///./node_modules/vega/node_modules/d3-shape/src/curve/bundle.js\n");

/***/ }),

/***/ "./node_modules/vega/node_modules/d3-shape/src/curve/cardinal.js":
/*!***********************************************************************!*\
  !*** ./node_modules/vega/node_modules/d3-shape/src/curve/cardinal.js ***!
  \***********************************************************************/
/*! exports provided: point, Cardinal, default */
/***/ (function(module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"point\", function() { return point; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"Cardinal\", function() { return Cardinal; });\nfunction point(that, x, y) {\n  that._context.bezierCurveTo(\n    that._x1 + that._k * (that._x2 - that._x0),\n    that._y1 + that._k * (that._y2 - that._y0),\n    that._x2 + that._k * (that._x1 - x),\n    that._y2 + that._k * (that._y1 - y),\n    that._x2,\n    that._y2\n  );\n}\n\nfunction Cardinal(context, tension) {\n  this._context = context;\n  this._k = (1 - tension) / 6;\n}\n\nCardinal.prototype = {\n  areaStart: function() {\n    this._line = 0;\n  },\n  areaEnd: function() {\n    this._line = NaN;\n  },\n  lineStart: function() {\n    this._x0 = this._x1 = this._x2 =\n    this._y0 = this._y1 = this._y2 = NaN;\n    this._point = 0;\n  },\n  lineEnd: function() {\n    switch (this._point) {\n      case 2: this._context.lineTo(this._x2, this._y2); break;\n      case 3: point(this, this._x1, this._y1); break;\n    }\n    if (this._line || (this._line !== 0 && this._point === 1)) this._context.closePath();\n    this._line = 1 - this._line;\n  },\n  point: function(x, y) {\n    x = +x, y = +y;\n    switch (this._point) {\n      case 0: this._point = 1; this._line ? this._context.lineTo(x, y) : this._context.moveTo(x, y); break;\n      case 1: this._point = 2; this._x1 = x, this._y1 = y; break;\n      case 2: this._point = 3; // proceed\n      default: point(this, x, y); break;\n    }\n    this._x0 = this._x1, this._x1 = this._x2, this._x2 = x;\n    this._y0 = this._y1, this._y1 = this._y2, this._y2 = y;\n  }\n};\n\n/* harmony default export */ __webpack_exports__[\"default\"] = ((function custom(tension) {\n\n  function cardinal(context) {\n    return new Cardinal(context, tension);\n  }\n\n  cardinal.tension = function(tension) {\n    return custom(+tension);\n  };\n\n  return cardinal;\n})(0));\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvdmVnYS9ub2RlX21vZHVsZXMvZDMtc2hhcGUvc3JjL2N1cnZlL2NhcmRpbmFsLmpzLmpzIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL3ZlZ2Evbm9kZV9tb2R1bGVzL2QzLXNoYXBlL3NyYy9jdXJ2ZS9jYXJkaW5hbC5qcz8zMzNlIl0sInNvdXJjZXNDb250ZW50IjpbImV4cG9ydCBmdW5jdGlvbiBwb2ludCh0aGF0LCB4LCB5KSB7XG4gIHRoYXQuX2NvbnRleHQuYmV6aWVyQ3VydmVUbyhcbiAgICB0aGF0Ll94MSArIHRoYXQuX2sgKiAodGhhdC5feDIgLSB0aGF0Ll94MCksXG4gICAgdGhhdC5feTEgKyB0aGF0Ll9rICogKHRoYXQuX3kyIC0gdGhhdC5feTApLFxuICAgIHRoYXQuX3gyICsgdGhhdC5fayAqICh0aGF0Ll94MSAtIHgpLFxuICAgIHRoYXQuX3kyICsgdGhhdC5fayAqICh0aGF0Ll95MSAtIHkpLFxuICAgIHRoYXQuX3gyLFxuICAgIHRoYXQuX3kyXG4gICk7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBDYXJkaW5hbChjb250ZXh0LCB0ZW5zaW9uKSB7XG4gIHRoaXMuX2NvbnRleHQgPSBjb250ZXh0O1xuICB0aGlzLl9rID0gKDEgLSB0ZW5zaW9uKSAvIDY7XG59XG5cbkNhcmRpbmFsLnByb3RvdHlwZSA9IHtcbiAgYXJlYVN0YXJ0OiBmdW5jdGlvbigpIHtcbiAgICB0aGlzLl9saW5lID0gMDtcbiAgfSxcbiAgYXJlYUVuZDogZnVuY3Rpb24oKSB7XG4gICAgdGhpcy5fbGluZSA9IE5hTjtcbiAgfSxcbiAgbGluZVN0YXJ0OiBmdW5jdGlvbigpIHtcbiAgICB0aGlzLl94MCA9IHRoaXMuX3gxID0gdGhpcy5feDIgPVxuICAgIHRoaXMuX3kwID0gdGhpcy5feTEgPSB0aGlzLl95MiA9IE5hTjtcbiAgICB0aGlzLl9wb2ludCA9IDA7XG4gIH0sXG4gIGxpbmVFbmQ6IGZ1bmN0aW9uKCkge1xuICAgIHN3aXRjaCAodGhpcy5fcG9pbnQpIHtcbiAgICAgIGNhc2UgMjogdGhpcy5fY29udGV4dC5saW5lVG8odGhpcy5feDIsIHRoaXMuX3kyKTsgYnJlYWs7XG4gICAgICBjYXNlIDM6IHBvaW50KHRoaXMsIHRoaXMuX3gxLCB0aGlzLl95MSk7IGJyZWFrO1xuICAgIH1cbiAgICBpZiAodGhpcy5fbGluZSB8fCAodGhpcy5fbGluZSAhPT0gMCAmJiB0aGlzLl9wb2ludCA9PT0gMSkpIHRoaXMuX2NvbnRleHQuY2xvc2VQYXRoKCk7XG4gICAgdGhpcy5fbGluZSA9IDEgLSB0aGlzLl9saW5lO1xuICB9LFxuICBwb2ludDogZnVuY3Rpb24oeCwgeSkge1xuICAgIHggPSAreCwgeSA9ICt5O1xuICAgIHN3aXRjaCAodGhpcy5fcG9pbnQpIHtcbiAgICAgIGNhc2UgMDogdGhpcy5fcG9pbnQgPSAxOyB0aGlzLl9saW5lID8gdGhpcy5fY29udGV4dC5saW5lVG8oeCwgeSkgOiB0aGlzLl9jb250ZXh0Lm1vdmVUbyh4LCB5KTsgYnJlYWs7XG4gICAgICBjYXNlIDE6IHRoaXMuX3BvaW50ID0gMjsgdGhpcy5feDEgPSB4LCB0aGlzLl95MSA9IHk7IGJyZWFrO1xuICAgICAgY2FzZSAyOiB0aGlzLl9wb2ludCA9IDM7IC8vIHByb2NlZWRcbiAgICAgIGRlZmF1bHQ6IHBvaW50KHRoaXMsIHgsIHkpOyBicmVhaztcbiAgICB9XG4gICAgdGhpcy5feDAgPSB0aGlzLl94MSwgdGhpcy5feDEgPSB0aGlzLl94MiwgdGhpcy5feDIgPSB4O1xuICAgIHRoaXMuX3kwID0gdGhpcy5feTEsIHRoaXMuX3kxID0gdGhpcy5feTIsIHRoaXMuX3kyID0geTtcbiAgfVxufTtcblxuZXhwb3J0IGRlZmF1bHQgKGZ1bmN0aW9uIGN1c3RvbSh0ZW5zaW9uKSB7XG5cbiAgZnVuY3Rpb24gY2FyZGluYWwoY29udGV4dCkge1xuICAgIHJldHVybiBuZXcgQ2FyZGluYWwoY29udGV4dCwgdGVuc2lvbik7XG4gIH1cblxuICBjYXJkaW5hbC50ZW5zaW9uID0gZnVuY3Rpb24odGVuc2lvbikge1xuICAgIHJldHVybiBjdXN0b20oK3RlbnNpb24pO1xuICB9O1xuXG4gIHJldHVybiBjYXJkaW5hbDtcbn0pKDApO1xuIl0sIm1hcHBpbmdzIjoiQUFBQTtBQUFBO0FBQUE7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTsiLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///./node_modules/vega/node_modules/d3-shape/src/curve/cardinal.js\n");

/***/ }),

/***/ "./node_modules/vega/node_modules/d3-shape/src/curve/cardinalClosed.js":
/*!*****************************************************************************!*\
  !*** ./node_modules/vega/node_modules/d3-shape/src/curve/cardinalClosed.js ***!
  \*****************************************************************************/
/*! exports provided: CardinalClosed, default */
/***/ (function(module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"CardinalClosed\", function() { return CardinalClosed; });\n/* harmony import */ var _noop_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../noop.js */ \"./node_modules/vega/node_modules/d3-shape/src/noop.js\");\n/* harmony import */ var _cardinal_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./cardinal.js */ \"./node_modules/vega/node_modules/d3-shape/src/curve/cardinal.js\");\n\n\n\nfunction CardinalClosed(context, tension) {\n  this._context = context;\n  this._k = (1 - tension) / 6;\n}\n\nCardinalClosed.prototype = {\n  areaStart: _noop_js__WEBPACK_IMPORTED_MODULE_0__[\"default\"],\n  areaEnd: _noop_js__WEBPACK_IMPORTED_MODULE_0__[\"default\"],\n  lineStart: function() {\n    this._x0 = this._x1 = this._x2 = this._x3 = this._x4 = this._x5 =\n    this._y0 = this._y1 = this._y2 = this._y3 = this._y4 = this._y5 = NaN;\n    this._point = 0;\n  },\n  lineEnd: function() {\n    switch (this._point) {\n      case 1: {\n        this._context.moveTo(this._x3, this._y3);\n        this._context.closePath();\n        break;\n      }\n      case 2: {\n        this._context.lineTo(this._x3, this._y3);\n        this._context.closePath();\n        break;\n      }\n      case 3: {\n        this.point(this._x3, this._y3);\n        this.point(this._x4, this._y4);\n        this.point(this._x5, this._y5);\n        break;\n      }\n    }\n  },\n  point: function(x, y) {\n    x = +x, y = +y;\n    switch (this._point) {\n      case 0: this._point = 1; this._x3 = x, this._y3 = y; break;\n      case 1: this._point = 2; this._context.moveTo(this._x4 = x, this._y4 = y); break;\n      case 2: this._point = 3; this._x5 = x, this._y5 = y; break;\n      default: Object(_cardinal_js__WEBPACK_IMPORTED_MODULE_1__[\"point\"])(this, x, y); break;\n    }\n    this._x0 = this._x1, this._x1 = this._x2, this._x2 = x;\n    this._y0 = this._y1, this._y1 = this._y2, this._y2 = y;\n  }\n};\n\n/* harmony default export */ __webpack_exports__[\"default\"] = ((function custom(tension) {\n\n  function cardinal(context) {\n    return new CardinalClosed(context, tension);\n  }\n\n  cardinal.tension = function(tension) {\n    return custom(+tension);\n  };\n\n  return cardinal;\n})(0));\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvdmVnYS9ub2RlX21vZHVsZXMvZDMtc2hhcGUvc3JjL2N1cnZlL2NhcmRpbmFsQ2xvc2VkLmpzLmpzIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL3ZlZ2Evbm9kZV9tb2R1bGVzL2QzLXNoYXBlL3NyYy9jdXJ2ZS9jYXJkaW5hbENsb3NlZC5qcz9mYWMwIl0sInNvdXJjZXNDb250ZW50IjpbImltcG9ydCBub29wIGZyb20gXCIuLi9ub29wLmpzXCI7XG5pbXBvcnQge3BvaW50fSBmcm9tIFwiLi9jYXJkaW5hbC5qc1wiO1xuXG5leHBvcnQgZnVuY3Rpb24gQ2FyZGluYWxDbG9zZWQoY29udGV4dCwgdGVuc2lvbikge1xuICB0aGlzLl9jb250ZXh0ID0gY29udGV4dDtcbiAgdGhpcy5fayA9ICgxIC0gdGVuc2lvbikgLyA2O1xufVxuXG5DYXJkaW5hbENsb3NlZC5wcm90b3R5cGUgPSB7XG4gIGFyZWFTdGFydDogbm9vcCxcbiAgYXJlYUVuZDogbm9vcCxcbiAgbGluZVN0YXJ0OiBmdW5jdGlvbigpIHtcbiAgICB0aGlzLl94MCA9IHRoaXMuX3gxID0gdGhpcy5feDIgPSB0aGlzLl94MyA9IHRoaXMuX3g0ID0gdGhpcy5feDUgPVxuICAgIHRoaXMuX3kwID0gdGhpcy5feTEgPSB0aGlzLl95MiA9IHRoaXMuX3kzID0gdGhpcy5feTQgPSB0aGlzLl95NSA9IE5hTjtcbiAgICB0aGlzLl9wb2ludCA9IDA7XG4gIH0sXG4gIGxpbmVFbmQ6IGZ1bmN0aW9uKCkge1xuICAgIHN3aXRjaCAodGhpcy5fcG9pbnQpIHtcbiAgICAgIGNhc2UgMToge1xuICAgICAgICB0aGlzLl9jb250ZXh0Lm1vdmVUbyh0aGlzLl94MywgdGhpcy5feTMpO1xuICAgICAgICB0aGlzLl9jb250ZXh0LmNsb3NlUGF0aCgpO1xuICAgICAgICBicmVhaztcbiAgICAgIH1cbiAgICAgIGNhc2UgMjoge1xuICAgICAgICB0aGlzLl9jb250ZXh0LmxpbmVUbyh0aGlzLl94MywgdGhpcy5feTMpO1xuICAgICAgICB0aGlzLl9jb250ZXh0LmNsb3NlUGF0aCgpO1xuICAgICAgICBicmVhaztcbiAgICAgIH1cbiAgICAgIGNhc2UgMzoge1xuICAgICAgICB0aGlzLnBvaW50KHRoaXMuX3gzLCB0aGlzLl95Myk7XG4gICAgICAgIHRoaXMucG9pbnQodGhpcy5feDQsIHRoaXMuX3k0KTtcbiAgICAgICAgdGhpcy5wb2ludCh0aGlzLl94NSwgdGhpcy5feTUpO1xuICAgICAgICBicmVhaztcbiAgICAgIH1cbiAgICB9XG4gIH0sXG4gIHBvaW50OiBmdW5jdGlvbih4LCB5KSB7XG4gICAgeCA9ICt4LCB5ID0gK3k7XG4gICAgc3dpdGNoICh0aGlzLl9wb2ludCkge1xuICAgICAgY2FzZSAwOiB0aGlzLl9wb2ludCA9IDE7IHRoaXMuX3gzID0geCwgdGhpcy5feTMgPSB5OyBicmVhaztcbiAgICAgIGNhc2UgMTogdGhpcy5fcG9pbnQgPSAyOyB0aGlzLl9jb250ZXh0Lm1vdmVUbyh0aGlzLl94NCA9IHgsIHRoaXMuX3k0ID0geSk7IGJyZWFrO1xuICAgICAgY2FzZSAyOiB0aGlzLl9wb2ludCA9IDM7IHRoaXMuX3g1ID0geCwgdGhpcy5feTUgPSB5OyBicmVhaztcbiAgICAgIGRlZmF1bHQ6IHBvaW50KHRoaXMsIHgsIHkpOyBicmVhaztcbiAgICB9XG4gICAgdGhpcy5feDAgPSB0aGlzLl94MSwgdGhpcy5feDEgPSB0aGlzLl94MiwgdGhpcy5feDIgPSB4O1xuICAgIHRoaXMuX3kwID0gdGhpcy5feTEsIHRoaXMuX3kxID0gdGhpcy5feTIsIHRoaXMuX3kyID0geTtcbiAgfVxufTtcblxuZXhwb3J0IGRlZmF1bHQgKGZ1bmN0aW9uIGN1c3RvbSh0ZW5zaW9uKSB7XG5cbiAgZnVuY3Rpb24gY2FyZGluYWwoY29udGV4dCkge1xuICAgIHJldHVybiBuZXcgQ2FyZGluYWxDbG9zZWQoY29udGV4dCwgdGVuc2lvbik7XG4gIH1cblxuICBjYXJkaW5hbC50ZW5zaW9uID0gZnVuY3Rpb24odGVuc2lvbikge1xuICAgIHJldHVybiBjdXN0b20oK3RlbnNpb24pO1xuICB9O1xuXG4gIHJldHVybiBjYXJkaW5hbDtcbn0pKDApO1xuIl0sIm1hcHBpbmdzIjoiQUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOyIsInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///./node_modules/vega/node_modules/d3-shape/src/curve/cardinalClosed.js\n");

/***/ }),

/***/ "./node_modules/vega/node_modules/d3-shape/src/curve/cardinalOpen.js":
/*!***************************************************************************!*\
  !*** ./node_modules/vega/node_modules/d3-shape/src/curve/cardinalOpen.js ***!
  \***************************************************************************/
/*! exports provided: CardinalOpen, default */
/***/ (function(module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"CardinalOpen\", function() { return CardinalOpen; });\n/* harmony import */ var _cardinal_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./cardinal.js */ \"./node_modules/vega/node_modules/d3-shape/src/curve/cardinal.js\");\n\n\nfunction CardinalOpen(context, tension) {\n  this._context = context;\n  this._k = (1 - tension) / 6;\n}\n\nCardinalOpen.prototype = {\n  areaStart: function() {\n    this._line = 0;\n  },\n  areaEnd: function() {\n    this._line = NaN;\n  },\n  lineStart: function() {\n    this._x0 = this._x1 = this._x2 =\n    this._y0 = this._y1 = this._y2 = NaN;\n    this._point = 0;\n  },\n  lineEnd: function() {\n    if (this._line || (this._line !== 0 && this._point === 3)) this._context.closePath();\n    this._line = 1 - this._line;\n  },\n  point: function(x, y) {\n    x = +x, y = +y;\n    switch (this._point) {\n      case 0: this._point = 1; break;\n      case 1: this._point = 2; break;\n      case 2: this._point = 3; this._line ? this._context.lineTo(this._x2, this._y2) : this._context.moveTo(this._x2, this._y2); break;\n      case 3: this._point = 4; // proceed\n      default: Object(_cardinal_js__WEBPACK_IMPORTED_MODULE_0__[\"point\"])(this, x, y); break;\n    }\n    this._x0 = this._x1, this._x1 = this._x2, this._x2 = x;\n    this._y0 = this._y1, this._y1 = this._y2, this._y2 = y;\n  }\n};\n\n/* harmony default export */ __webpack_exports__[\"default\"] = ((function custom(tension) {\n\n  function cardinal(context) {\n    return new CardinalOpen(context, tension);\n  }\n\n  cardinal.tension = function(tension) {\n    return custom(+tension);\n  };\n\n  return cardinal;\n})(0));\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvdmVnYS9ub2RlX21vZHVsZXMvZDMtc2hhcGUvc3JjL2N1cnZlL2NhcmRpbmFsT3Blbi5qcy5qcyIsInNvdXJjZXMiOlsid2VicGFjazovLy8uL25vZGVfbW9kdWxlcy92ZWdhL25vZGVfbW9kdWxlcy9kMy1zaGFwZS9zcmMvY3VydmUvY2FyZGluYWxPcGVuLmpzP2M5ZmUiXSwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtwb2ludH0gZnJvbSBcIi4vY2FyZGluYWwuanNcIjtcblxuZXhwb3J0IGZ1bmN0aW9uIENhcmRpbmFsT3Blbihjb250ZXh0LCB0ZW5zaW9uKSB7XG4gIHRoaXMuX2NvbnRleHQgPSBjb250ZXh0O1xuICB0aGlzLl9rID0gKDEgLSB0ZW5zaW9uKSAvIDY7XG59XG5cbkNhcmRpbmFsT3Blbi5wcm90b3R5cGUgPSB7XG4gIGFyZWFTdGFydDogZnVuY3Rpb24oKSB7XG4gICAgdGhpcy5fbGluZSA9IDA7XG4gIH0sXG4gIGFyZWFFbmQ6IGZ1bmN0aW9uKCkge1xuICAgIHRoaXMuX2xpbmUgPSBOYU47XG4gIH0sXG4gIGxpbmVTdGFydDogZnVuY3Rpb24oKSB7XG4gICAgdGhpcy5feDAgPSB0aGlzLl94MSA9IHRoaXMuX3gyID1cbiAgICB0aGlzLl95MCA9IHRoaXMuX3kxID0gdGhpcy5feTIgPSBOYU47XG4gICAgdGhpcy5fcG9pbnQgPSAwO1xuICB9LFxuICBsaW5lRW5kOiBmdW5jdGlvbigpIHtcbiAgICBpZiAodGhpcy5fbGluZSB8fCAodGhpcy5fbGluZSAhPT0gMCAmJiB0aGlzLl9wb2ludCA9PT0gMykpIHRoaXMuX2NvbnRleHQuY2xvc2VQYXRoKCk7XG4gICAgdGhpcy5fbGluZSA9IDEgLSB0aGlzLl9saW5lO1xuICB9LFxuICBwb2ludDogZnVuY3Rpb24oeCwgeSkge1xuICAgIHggPSAreCwgeSA9ICt5O1xuICAgIHN3aXRjaCAodGhpcy5fcG9pbnQpIHtcbiAgICAgIGNhc2UgMDogdGhpcy5fcG9pbnQgPSAxOyBicmVhaztcbiAgICAgIGNhc2UgMTogdGhpcy5fcG9pbnQgPSAyOyBicmVhaztcbiAgICAgIGNhc2UgMjogdGhpcy5fcG9pbnQgPSAzOyB0aGlzLl9saW5lID8gdGhpcy5fY29udGV4dC5saW5lVG8odGhpcy5feDIsIHRoaXMuX3kyKSA6IHRoaXMuX2NvbnRleHQubW92ZVRvKHRoaXMuX3gyLCB0aGlzLl95Mik7IGJyZWFrO1xuICAgICAgY2FzZSAzOiB0aGlzLl9wb2ludCA9IDQ7IC8vIHByb2NlZWRcbiAgICAgIGRlZmF1bHQ6IHBvaW50KHRoaXMsIHgsIHkpOyBicmVhaztcbiAgICB9XG4gICAgdGhpcy5feDAgPSB0aGlzLl94MSwgdGhpcy5feDEgPSB0aGlzLl94MiwgdGhpcy5feDIgPSB4O1xuICAgIHRoaXMuX3kwID0gdGhpcy5feTEsIHRoaXMuX3kxID0gdGhpcy5feTIsIHRoaXMuX3kyID0geTtcbiAgfVxufTtcblxuZXhwb3J0IGRlZmF1bHQgKGZ1bmN0aW9uIGN1c3RvbSh0ZW5zaW9uKSB7XG5cbiAgZnVuY3Rpb24gY2FyZGluYWwoY29udGV4dCkge1xuICAgIHJldHVybiBuZXcgQ2FyZGluYWxPcGVuKGNvbnRleHQsIHRlbnNpb24pO1xuICB9XG5cbiAgY2FyZGluYWwudGVuc2lvbiA9IGZ1bmN0aW9uKHRlbnNpb24pIHtcbiAgICByZXR1cm4gY3VzdG9tKCt0ZW5zaW9uKTtcbiAgfTtcblxuICByZXR1cm4gY2FyZGluYWw7XG59KSgwKTtcbiJdLCJtYXBwaW5ncyI6IkFBQUE7QUFBQTtBQUFBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7Iiwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///./node_modules/vega/node_modules/d3-shape/src/curve/cardinalOpen.js\n");

/***/ }),

/***/ "./node_modules/vega/node_modules/d3-shape/src/curve/catmullRom.js":
/*!*************************************************************************!*\
  !*** ./node_modules/vega/node_modules/d3-shape/src/curve/catmullRom.js ***!
  \*************************************************************************/
/*! exports provided: point, default */
/***/ (function(module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"point\", function() { return point; });\n/* harmony import */ var _math_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../math.js */ \"./node_modules/vega/node_modules/d3-shape/src/math.js\");\n/* harmony import */ var _cardinal_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./cardinal.js */ \"./node_modules/vega/node_modules/d3-shape/src/curve/cardinal.js\");\n\n\n\nfunction point(that, x, y) {\n  var x1 = that._x1,\n      y1 = that._y1,\n      x2 = that._x2,\n      y2 = that._y2;\n\n  if (that._l01_a > _math_js__WEBPACK_IMPORTED_MODULE_0__[\"epsilon\"]) {\n    var a = 2 * that._l01_2a + 3 * that._l01_a * that._l12_a + that._l12_2a,\n        n = 3 * that._l01_a * (that._l01_a + that._l12_a);\n    x1 = (x1 * a - that._x0 * that._l12_2a + that._x2 * that._l01_2a) / n;\n    y1 = (y1 * a - that._y0 * that._l12_2a + that._y2 * that._l01_2a) / n;\n  }\n\n  if (that._l23_a > _math_js__WEBPACK_IMPORTED_MODULE_0__[\"epsilon\"]) {\n    var b = 2 * that._l23_2a + 3 * that._l23_a * that._l12_a + that._l12_2a,\n        m = 3 * that._l23_a * (that._l23_a + that._l12_a);\n    x2 = (x2 * b + that._x1 * that._l23_2a - x * that._l12_2a) / m;\n    y2 = (y2 * b + that._y1 * that._l23_2a - y * that._l12_2a) / m;\n  }\n\n  that._context.bezierCurveTo(x1, y1, x2, y2, that._x2, that._y2);\n}\n\nfunction CatmullRom(context, alpha) {\n  this._context = context;\n  this._alpha = alpha;\n}\n\nCatmullRom.prototype = {\n  areaStart: function() {\n    this._line = 0;\n  },\n  areaEnd: function() {\n    this._line = NaN;\n  },\n  lineStart: function() {\n    this._x0 = this._x1 = this._x2 =\n    this._y0 = this._y1 = this._y2 = NaN;\n    this._l01_a = this._l12_a = this._l23_a =\n    this._l01_2a = this._l12_2a = this._l23_2a =\n    this._point = 0;\n  },\n  lineEnd: function() {\n    switch (this._point) {\n      case 2: this._context.lineTo(this._x2, this._y2); break;\n      case 3: this.point(this._x2, this._y2); break;\n    }\n    if (this._line || (this._line !== 0 && this._point === 1)) this._context.closePath();\n    this._line = 1 - this._line;\n  },\n  point: function(x, y) {\n    x = +x, y = +y;\n\n    if (this._point) {\n      var x23 = this._x2 - x,\n          y23 = this._y2 - y;\n      this._l23_a = Math.sqrt(this._l23_2a = Math.pow(x23 * x23 + y23 * y23, this._alpha));\n    }\n\n    switch (this._point) {\n      case 0: this._point = 1; this._line ? this._context.lineTo(x, y) : this._context.moveTo(x, y); break;\n      case 1: this._point = 2; break;\n      case 2: this._point = 3; // proceed\n      default: point(this, x, y); break;\n    }\n\n    this._l01_a = this._l12_a, this._l12_a = this._l23_a;\n    this._l01_2a = this._l12_2a, this._l12_2a = this._l23_2a;\n    this._x0 = this._x1, this._x1 = this._x2, this._x2 = x;\n    this._y0 = this._y1, this._y1 = this._y2, this._y2 = y;\n  }\n};\n\n/* harmony default export */ __webpack_exports__[\"default\"] = ((function custom(alpha) {\n\n  function catmullRom(context) {\n    return alpha ? new CatmullRom(context, alpha) : new _cardinal_js__WEBPACK_IMPORTED_MODULE_1__[\"Cardinal\"](context, 0);\n  }\n\n  catmullRom.alpha = function(alpha) {\n    return custom(+alpha);\n  };\n\n  return catmullRom;\n})(0.5));\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,[encoded data, 4580 characters]\n//# sourceURL=webpack-internal:///./node_modules/vega/node_modules/d3-shape/src/curve/catmullRom.js\n");

/***/ }),

/***/ "./node_modules/vega/node_modules/d3-shape/src/curve/catmullRomClosed.js":
/*!*******************************************************************************!*\
  !*** ./node_modules/vega/node_modules/d3-shape/src/curve/catmullRomClosed.js ***!
  \*******************************************************************************/
/*! exports provided: default */
/***/ (function(module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _cardinalClosed_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./cardinalClosed.js */ \"./node_modules/vega/node_modules/d3-shape/src/curve/cardinalClosed.js\");\n/* harmony import */ var _noop_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../noop.js */ \"./node_modules/vega/node_modules/d3-shape/src/noop.js\");\n/* harmony import */ var _catmullRom_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./catmullRom.js */ \"./node_modules/vega/node_modules/d3-shape/src/curve/catmullRom.js\");\n\n\n\n\nfunction CatmullRomClosed(context, alpha) {\n  this._context = context;\n  this._alpha = alpha;\n}\n\nCatmullRomClosed.prototype = {\n  areaStart: _noop_js__WEBPACK_IMPORTED_MODULE_1__[\"default\"],\n  areaEnd: _noop_js__WEBPACK_IMPORTED_MODULE_1__[\"default\"],\n  lineStart: function() {\n    this._x0 = this._x1 = this._x2 = this._x3 = this._x4 = this._x5 =\n    this._y0 = this._y1 = this._y2 = this._y3 = this._y4 = this._y5 = NaN;\n    this._l01_a = this._l12_a = this._l23_a =\n    this._l01_2a = this._l12_2a = this._l23_2a =\n    this._point = 0;\n  },\n  lineEnd: function() {\n    switch (this._point) {\n      case 1: {\n        this._context.moveTo(this._x3, this._y3);\n        this._context.closePath();\n        break;\n      }\n      case 2: {\n        this._context.lineTo(this._x3, this._y3);\n        this._context.closePath();\n        break;\n      }\n      case 3: {\n        this.point(this._x3, this._y3);\n        this.point(this._x4, this._y4);\n        this.point(this._x5, this._y5);\n        break;\n      }\n    }\n  },\n  point: function(x, y) {\n    x = +x, y = +y;\n\n    if (this._point) {\n      var x23 = this._x2 - x,\n          y23 = this._y2 - y;\n      this._l23_a = Math.sqrt(this._l23_2a = Math.pow(x23 * x23 + y23 * y23, this._alpha));\n    }\n\n    switch (this._point) {\n      case 0: this._point = 1; this._x3 = x, this._y3 = y; break;\n      case 1: this._point = 2; this._context.moveTo(this._x4 = x, this._y4 = y); break;\n      case 2: this._point = 3; this._x5 = x, this._y5 = y; break;\n      default: Object(_catmullRom_js__WEBPACK_IMPORTED_MODULE_2__[\"point\"])(this, x, y); break;\n    }\n\n    this._l01_a = this._l12_a, this._l12_a = this._l23_a;\n    this._l01_2a = this._l12_2a, this._l12_2a = this._l23_2a;\n    this._x0 = this._x1, this._x1 = this._x2, this._x2 = x;\n    this._y0 = this._y1, this._y1 = this._y2, this._y2 = y;\n  }\n};\n\n/* harmony default export */ __webpack_exports__[\"default\"] = ((function custom(alpha) {\n\n  function catmullRom(context) {\n    return alpha ? new CatmullRomClosed(context, alpha) : new _cardinalClosed_js__WEBPACK_IMPORTED_MODULE_0__[\"CardinalClosed\"](context, 0);\n  }\n\n  catmullRom.alpha = function(alpha) {\n    return custom(+alpha);\n  };\n\n  return catmullRom;\n})(0.5));\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvdmVnYS9ub2RlX21vZHVsZXMvZDMtc2hhcGUvc3JjL2N1cnZlL2NhdG11bGxSb21DbG9zZWQuanMuanMiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvdmVnYS9ub2RlX21vZHVsZXMvZDMtc2hhcGUvc3JjL2N1cnZlL2NhdG11bGxSb21DbG9zZWQuanM/OGYyNSJdLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge0NhcmRpbmFsQ2xvc2VkfSBmcm9tIFwiLi9jYXJkaW5hbENsb3NlZC5qc1wiO1xuaW1wb3J0IG5vb3AgZnJvbSBcIi4uL25vb3AuanNcIjtcbmltcG9ydCB7cG9pbnR9IGZyb20gXCIuL2NhdG11bGxSb20uanNcIjtcblxuZnVuY3Rpb24gQ2F0bXVsbFJvbUNsb3NlZChjb250ZXh0LCBhbHBoYSkge1xuICB0aGlzLl9jb250ZXh0ID0gY29udGV4dDtcbiAgdGhpcy5fYWxwaGEgPSBhbHBoYTtcbn1cblxuQ2F0bXVsbFJvbUNsb3NlZC5wcm90b3R5cGUgPSB7XG4gIGFyZWFTdGFydDogbm9vcCxcbiAgYXJlYUVuZDogbm9vcCxcbiAgbGluZVN0YXJ0OiBmdW5jdGlvbigpIHtcbiAgICB0aGlzLl94MCA9IHRoaXMuX3gxID0gdGhpcy5feDIgPSB0aGlzLl94MyA9IHRoaXMuX3g0ID0gdGhpcy5feDUgPVxuICAgIHRoaXMuX3kwID0gdGhpcy5feTEgPSB0aGlzLl95MiA9IHRoaXMuX3kzID0gdGhpcy5feTQgPSB0aGlzLl95NSA9IE5hTjtcbiAgICB0aGlzLl9sMDFfYSA9IHRoaXMuX2wxMl9hID0gdGhpcy5fbDIzX2EgPVxuICAgIHRoaXMuX2wwMV8yYSA9IHRoaXMuX2wxMl8yYSA9IHRoaXMuX2wyM18yYSA9XG4gICAgdGhpcy5fcG9pbnQgPSAwO1xuICB9LFxuICBsaW5lRW5kOiBmdW5jdGlvbigpIHtcbiAgICBzd2l0Y2ggKHRoaXMuX3BvaW50KSB7XG4gICAgICBjYXNlIDE6IHtcbiAgICAgICAgdGhpcy5fY29udGV4dC5tb3ZlVG8odGhpcy5feDMsIHRoaXMuX3kzKTtcbiAgICAgICAgdGhpcy5fY29udGV4dC5jbG9zZVBhdGgoKTtcbiAgICAgICAgYnJlYWs7XG4gICAgICB9XG4gICAgICBjYXNlIDI6IHtcbiAgICAgICAgdGhpcy5fY29udGV4dC5saW5lVG8odGhpcy5feDMsIHRoaXMuX3kzKTtcbiAgICAgICAgdGhpcy5fY29udGV4dC5jbG9zZVBhdGgoKTtcbiAgICAgICAgYnJlYWs7XG4gICAgICB9XG4gICAgICBjYXNlIDM6IHtcbiAgICAgICAgdGhpcy5wb2ludCh0aGlzLl94MywgdGhpcy5feTMpO1xuICAgICAgICB0aGlzLnBvaW50KHRoaXMuX3g0LCB0aGlzLl95NCk7XG4gICAgICAgIHRoaXMucG9pbnQodGhpcy5feDUsIHRoaXMuX3k1KTtcbiAgICAgICAgYnJlYWs7XG4gICAgICB9XG4gICAgfVxuICB9LFxuICBwb2ludDogZnVuY3Rpb24oeCwgeSkge1xuICAgIHggPSAreCwgeSA9ICt5O1xuXG4gICAgaWYgKHRoaXMuX3BvaW50KSB7XG4gICAgICB2YXIgeDIzID0gdGhpcy5feDIgLSB4LFxuICAgICAgICAgIHkyMyA9IHRoaXMuX3kyIC0geTtcbiAgICAgIHRoaXMuX2wyM19hID0gTWF0aC5zcXJ0KHRoaXMuX2wyM18yYSA9IE1hdGgucG93KHgyMyAqIHgyMyArIHkyMyAqIHkyMywgdGhpcy5fYWxwaGEpKTtcbiAgICB9XG5cbiAgICBzd2l0Y2ggKHRoaXMuX3BvaW50KSB7XG4gICAgICBjYXNlIDA6IHRoaXMuX3BvaW50ID0gMTsgdGhpcy5feDMgPSB4LCB0aGlzLl95MyA9IHk7IGJyZWFrO1xuICAgICAgY2FzZSAxOiB0aGlzLl9wb2ludCA9IDI7IHRoaXMuX2NvbnRleHQubW92ZVRvKHRoaXMuX3g0ID0geCwgdGhpcy5feTQgPSB5KTsgYnJlYWs7XG4gICAgICBjYXNlIDI6IHRoaXMuX3BvaW50ID0gMzsgdGhpcy5feDUgPSB4LCB0aGlzLl95NSA9IHk7IGJyZWFrO1xuICAgICAgZGVmYXVsdDogcG9pbnQodGhpcywgeCwgeSk7IGJyZWFrO1xuICAgIH1cblxuICAgIHRoaXMuX2wwMV9hID0gdGhpcy5fbDEyX2EsIHRoaXMuX2wxMl9hID0gdGhpcy5fbDIzX2E7XG4gICAgdGhpcy5fbDAxXzJhID0gdGhpcy5fbDEyXzJhLCB0aGlzLl9sMTJfMmEgPSB0aGlzLl9sMjNfMmE7XG4gICAgdGhpcy5feDAgPSB0aGlzLl94MSwgdGhpcy5feDEgPSB0aGlzLl94MiwgdGhpcy5feDIgPSB4O1xuICAgIHRoaXMuX3kwID0gdGhpcy5feTEsIHRoaXMuX3kxID0gdGhpcy5feTIsIHRoaXMuX3kyID0geTtcbiAgfVxufTtcblxuZXhwb3J0IGRlZmF1bHQgKGZ1bmN0aW9uIGN1c3RvbShhbHBoYSkge1xuXG4gIGZ1bmN0aW9uIGNhdG11bGxSb20oY29udGV4dCkge1xuICAgIHJldHVybiBhbHBoYSA/IG5ldyBDYXRtdWxsUm9tQ2xvc2VkKGNvbnRleHQsIGFscGhhKSA6IG5ldyBDYXJkaW5hbENsb3NlZChjb250ZXh0LCAwKTtcbiAgfVxuXG4gIGNhdG11bGxSb20uYWxwaGEgPSBmdW5jdGlvbihhbHBoYSkge1xuICAgIHJldHVybiBjdXN0b20oK2FscGhhKTtcbiAgfTtcblxuICByZXR1cm4gY2F0bXVsbFJvbTtcbn0pKDAuNSk7XG4iXSwibWFwcGluZ3MiOiJBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTsiLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///./node_modules/vega/node_modules/d3-shape/src/curve/catmullRomClosed.js\n");

/***/ }),

/***/ "./node_modules/vega/node_modules/d3-shape/src/curve/catmullRomOpen.js":
/*!*****************************************************************************!*\
  !*** ./node_modules/vega/node_modules/d3-shape/src/curve/catmullRomOpen.js ***!
  \*****************************************************************************/
/*! exports provided: default */
/***/ (function(module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _cardinalOpen_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./cardinalOpen.js */ \"./node_modules/vega/node_modules/d3-shape/src/curve/cardinalOpen.js\");\n/* harmony import */ var _catmullRom_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./catmullRom.js */ \"./node_modules/vega/node_modules/d3-shape/src/curve/catmullRom.js\");\n\n\n\nfunction CatmullRomOpen(context, alpha) {\n  this._context = context;\n  this._alpha = alpha;\n}\n\nCatmullRomOpen.prototype = {\n  areaStart: function() {\n    this._line = 0;\n  },\n  areaEnd: function() {\n    this._line = NaN;\n  },\n  lineStart: function() {\n    this._x0 = this._x1 = this._x2 =\n    this._y0 = this._y1 = this._y2 = NaN;\n    this._l01_a = this._l12_a = this._l23_a =\n    this._l01_2a = this._l12_2a = this._l23_2a =\n    this._point = 0;\n  },\n  lineEnd: function() {\n    if (this._line || (this._line !== 0 && this._point === 3)) this._context.closePath();\n    this._line = 1 - this._line;\n  },\n  point: function(x, y) {\n    x = +x, y = +y;\n\n    if (this._point) {\n      var x23 = this._x2 - x,\n          y23 = this._y2 - y;\n      this._l23_a = Math.sqrt(this._l23_2a = Math.pow(x23 * x23 + y23 * y23, this._alpha));\n    }\n\n    switch (this._point) {\n      case 0: this._point = 1; break;\n      case 1: this._point = 2; break;\n      case 2: this._point = 3; this._line ? this._context.lineTo(this._x2, this._y2) : this._context.moveTo(this._x2, this._y2); break;\n      case 3: this._point = 4; // proceed\n      default: Object(_catmullRom_js__WEBPACK_IMPORTED_MODULE_1__[\"point\"])(this, x, y); break;\n    }\n\n    this._l01_a = this._l12_a, this._l12_a = this._l23_a;\n    this._l01_2a = this._l12_2a, this._l12_2a = this._l23_2a;\n    this._x0 = this._x1, this._x1 = this._x2, this._x2 = x;\n    this._y0 = this._y1, this._y1 = this._y2, this._y2 = y;\n  }\n};\n\n/* harmony default export */ __webpack_exports__[\"default\"] = ((function custom(alpha) {\n\n  function catmullRom(context) {\n    return alpha ? new CatmullRomOpen(context, alpha) : new _cardinalOpen_js__WEBPACK_IMPORTED_MODULE_0__[\"CardinalOpen\"](context, 0);\n  }\n\n  catmullRom.alpha = function(alpha) {\n    return custom(+alpha);\n  };\n\n  return catmullRom;\n})(0.5));\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvdmVnYS9ub2RlX21vZHVsZXMvZDMtc2hhcGUvc3JjL2N1cnZlL2NhdG11bGxSb21PcGVuLmpzLmpzIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL3ZlZ2Evbm9kZV9tb2R1bGVzL2QzLXNoYXBlL3NyYy9jdXJ2ZS9jYXRtdWxsUm9tT3Blbi5qcz85ZDg2Il0sInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7Q2FyZGluYWxPcGVufSBmcm9tIFwiLi9jYXJkaW5hbE9wZW4uanNcIjtcbmltcG9ydCB7cG9pbnR9IGZyb20gXCIuL2NhdG11bGxSb20uanNcIjtcblxuZnVuY3Rpb24gQ2F0bXVsbFJvbU9wZW4oY29udGV4dCwgYWxwaGEpIHtcbiAgdGhpcy5fY29udGV4dCA9IGNvbnRleHQ7XG4gIHRoaXMuX2FscGhhID0gYWxwaGE7XG59XG5cbkNhdG11bGxSb21PcGVuLnByb3RvdHlwZSA9IHtcbiAgYXJlYVN0YXJ0OiBmdW5jdGlvbigpIHtcbiAgICB0aGlzLl9saW5lID0gMDtcbiAgfSxcbiAgYXJlYUVuZDogZnVuY3Rpb24oKSB7XG4gICAgdGhpcy5fbGluZSA9IE5hTjtcbiAgfSxcbiAgbGluZVN0YXJ0OiBmdW5jdGlvbigpIHtcbiAgICB0aGlzLl94MCA9IHRoaXMuX3gxID0gdGhpcy5feDIgPVxuICAgIHRoaXMuX3kwID0gdGhpcy5feTEgPSB0aGlzLl95MiA9IE5hTjtcbiAgICB0aGlzLl9sMDFfYSA9IHRoaXMuX2wxMl9hID0gdGhpcy5fbDIzX2EgPVxuICAgIHRoaXMuX2wwMV8yYSA9IHRoaXMuX2wxMl8yYSA9IHRoaXMuX2wyM18yYSA9XG4gICAgdGhpcy5fcG9pbnQgPSAwO1xuICB9LFxuICBsaW5lRW5kOiBmdW5jdGlvbigpIHtcbiAgICBpZiAodGhpcy5fbGluZSB8fCAodGhpcy5fbGluZSAhPT0gMCAmJiB0aGlzLl9wb2ludCA9PT0gMykpIHRoaXMuX2NvbnRleHQuY2xvc2VQYXRoKCk7XG4gICAgdGhpcy5fbGluZSA9IDEgLSB0aGlzLl9saW5lO1xuICB9LFxuICBwb2ludDogZnVuY3Rpb24oeCwgeSkge1xuICAgIHggPSAreCwgeSA9ICt5O1xuXG4gICAgaWYgKHRoaXMuX3BvaW50KSB7XG4gICAgICB2YXIgeDIzID0gdGhpcy5feDIgLSB4LFxuICAgICAgICAgIHkyMyA9IHRoaXMuX3kyIC0geTtcbiAgICAgIHRoaXMuX2wyM19hID0gTWF0aC5zcXJ0KHRoaXMuX2wyM18yYSA9IE1hdGgucG93KHgyMyAqIHgyMyArIHkyMyAqIHkyMywgdGhpcy5fYWxwaGEpKTtcbiAgICB9XG5cbiAgICBzd2l0Y2ggKHRoaXMuX3BvaW50KSB7XG4gICAgICBjYXNlIDA6IHRoaXMuX3BvaW50ID0gMTsgYnJlYWs7XG4gICAgICBjYXNlIDE6IHRoaXMuX3BvaW50ID0gMjsgYnJlYWs7XG4gICAgICBjYXNlIDI6IHRoaXMuX3BvaW50ID0gMzsgdGhpcy5fbGluZSA/IHRoaXMuX2NvbnRleHQubGluZVRvKHRoaXMuX3gyLCB0aGlzLl95MikgOiB0aGlzLl9jb250ZXh0Lm1vdmVUbyh0aGlzLl94MiwgdGhpcy5feTIpOyBicmVhaztcbiAgICAgIGNhc2UgMzogdGhpcy5fcG9pbnQgPSA0OyAvLyBwcm9jZWVkXG4gICAgICBkZWZhdWx0OiBwb2ludCh0aGlzLCB4LCB5KTsgYnJlYWs7XG4gICAgfVxuXG4gICAgdGhpcy5fbDAxX2EgPSB0aGlzLl9sMTJfYSwgdGhpcy5fbDEyX2EgPSB0aGlzLl9sMjNfYTtcbiAgICB0aGlzLl9sMDFfMmEgPSB0aGlzLl9sMTJfMmEsIHRoaXMuX2wxMl8yYSA9IHRoaXMuX2wyM18yYTtcbiAgICB0aGlzLl94MCA9IHRoaXMuX3gxLCB0aGlzLl94MSA9IHRoaXMuX3gyLCB0aGlzLl94MiA9IHg7XG4gICAgdGhpcy5feTAgPSB0aGlzLl95MSwgdGhpcy5feTEgPSB0aGlzLl95MiwgdGhpcy5feTIgPSB5O1xuICB9XG59O1xuXG5leHBvcnQgZGVmYXVsdCAoZnVuY3Rpb24gY3VzdG9tKGFscGhhKSB7XG5cbiAgZnVuY3Rpb24gY2F0bXVsbFJvbShjb250ZXh0KSB7XG4gICAgcmV0dXJuIGFscGhhID8gbmV3IENhdG11bGxSb21PcGVuKGNvbnRleHQsIGFscGhhKSA6IG5ldyBDYXJkaW5hbE9wZW4oY29udGV4dCwgMCk7XG4gIH1cblxuICBjYXRtdWxsUm9tLmFscGhhID0gZnVuY3Rpb24oYWxwaGEpIHtcbiAgICByZXR1cm4gY3VzdG9tKCthbHBoYSk7XG4gIH07XG5cbiAgcmV0dXJuIGNhdG11bGxSb207XG59KSgwLjUpO1xuIl0sIm1hcHBpbmdzIjoiQUFBQTtBQUFBO0FBQUE7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOyIsInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///./node_modules/vega/node_modules/d3-shape/src/curve/catmullRomOpen.js\n");

/***/ }),

/***/ "./node_modules/vega/node_modules/d3-shape/src/curve/linear.js":
/*!*********************************************************************!*\
  !*** ./node_modules/vega/node_modules/d3-shape/src/curve/linear.js ***!
  \*********************************************************************/
/*! exports provided: default */
/***/ (function(module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\nfunction Linear(context) {\n  this._context = context;\n}\n\nLinear.prototype = {\n  areaStart: function() {\n    this._line = 0;\n  },\n  areaEnd: function() {\n    this._line = NaN;\n  },\n  lineStart: function() {\n    this._point = 0;\n  },\n  lineEnd: function() {\n    if (this._line || (this._line !== 0 && this._point === 1)) this._context.closePath();\n    this._line = 1 - this._line;\n  },\n  point: function(x, y) {\n    x = +x, y = +y;\n    switch (this._point) {\n      case 0: this._point = 1; this._line ? this._context.lineTo(x, y) : this._context.moveTo(x, y); break;\n      case 1: this._point = 2; // proceed\n      default: this._context.lineTo(x, y); break;\n    }\n  }\n};\n\n/* harmony default export */ __webpack_exports__[\"default\"] = (function(context) {\n  return new Linear(context);\n});\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvdmVnYS9ub2RlX21vZHVsZXMvZDMtc2hhcGUvc3JjL2N1cnZlL2xpbmVhci5qcy5qcyIsInNvdXJjZXMiOlsid2VicGFjazovLy8uL25vZGVfbW9kdWxlcy92ZWdhL25vZGVfbW9kdWxlcy9kMy1zaGFwZS9zcmMvY3VydmUvbGluZWFyLmpzPzBjZGUiXSwic291cmNlc0NvbnRlbnQiOlsiZnVuY3Rpb24gTGluZWFyKGNvbnRleHQpIHtcbiAgdGhpcy5fY29udGV4dCA9IGNvbnRleHQ7XG59XG5cbkxpbmVhci5wcm90b3R5cGUgPSB7XG4gIGFyZWFTdGFydDogZnVuY3Rpb24oKSB7XG4gICAgdGhpcy5fbGluZSA9IDA7XG4gIH0sXG4gIGFyZWFFbmQ6IGZ1bmN0aW9uKCkge1xuICAgIHRoaXMuX2xpbmUgPSBOYU47XG4gIH0sXG4gIGxpbmVTdGFydDogZnVuY3Rpb24oKSB7XG4gICAgdGhpcy5fcG9pbnQgPSAwO1xuICB9LFxuICBsaW5lRW5kOiBmdW5jdGlvbigpIHtcbiAgICBpZiAodGhpcy5fbGluZSB8fCAodGhpcy5fbGluZSAhPT0gMCAmJiB0aGlzLl9wb2ludCA9PT0gMSkpIHRoaXMuX2NvbnRleHQuY2xvc2VQYXRoKCk7XG4gICAgdGhpcy5fbGluZSA9IDEgLSB0aGlzLl9saW5lO1xuICB9LFxuICBwb2ludDogZnVuY3Rpb24oeCwgeSkge1xuICAgIHggPSAreCwgeSA9ICt5O1xuICAgIHN3aXRjaCAodGhpcy5fcG9pbnQpIHtcbiAgICAgIGNhc2UgMDogdGhpcy5fcG9pbnQgPSAxOyB0aGlzLl9saW5lID8gdGhpcy5fY29udGV4dC5saW5lVG8oeCwgeSkgOiB0aGlzLl9jb250ZXh0Lm1vdmVUbyh4LCB5KTsgYnJlYWs7XG4gICAgICBjYXNlIDE6IHRoaXMuX3BvaW50ID0gMjsgLy8gcHJvY2VlZFxuICAgICAgZGVmYXVsdDogdGhpcy5fY29udGV4dC5saW5lVG8oeCwgeSk7IGJyZWFrO1xuICAgIH1cbiAgfVxufTtcblxuZXhwb3J0IGRlZmF1bHQgZnVuY3Rpb24oY29udGV4dCkge1xuICByZXR1cm4gbmV3IExpbmVhcihjb250ZXh0KTtcbn1cbiJdLCJtYXBwaW5ncyI6IkFBQUE7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTsiLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///./node_modules/vega/node_modules/d3-shape/src/curve/linear.js\n");

/***/ }),

/***/ "./node_modules/vega/node_modules/d3-shape/src/curve/linearClosed.js":
/*!***************************************************************************!*\
  !*** ./node_modules/vega/node_modules/d3-shape/src/curve/linearClosed.js ***!
  \***************************************************************************/
/*! exports provided: default */
/***/ (function(module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _noop_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../noop.js */ \"./node_modules/vega/node_modules/d3-shape/src/noop.js\");\n\n\nfunction LinearClosed(context) {\n  this._context = context;\n}\n\nLinearClosed.prototype = {\n  areaStart: _noop_js__WEBPACK_IMPORTED_MODULE_0__[\"default\"],\n  areaEnd: _noop_js__WEBPACK_IMPORTED_MODULE_0__[\"default\"],\n  lineStart: function() {\n    this._point = 0;\n  },\n  lineEnd: function() {\n    if (this._point) this._context.closePath();\n  },\n  point: function(x, y) {\n    x = +x, y = +y;\n    if (this._point) this._context.lineTo(x, y);\n    else this._point = 1, this._context.moveTo(x, y);\n  }\n};\n\n/* harmony default export */ __webpack_exports__[\"default\"] = (function(context) {\n  return new LinearClosed(context);\n});\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvdmVnYS9ub2RlX21vZHVsZXMvZDMtc2hhcGUvc3JjL2N1cnZlL2xpbmVhckNsb3NlZC5qcy5qcyIsInNvdXJjZXMiOlsid2VicGFjazovLy8uL25vZGVfbW9kdWxlcy92ZWdhL25vZGVfbW9kdWxlcy9kMy1zaGFwZS9zcmMvY3VydmUvbGluZWFyQ2xvc2VkLmpzPzcyM2IiXSwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IG5vb3AgZnJvbSBcIi4uL25vb3AuanNcIjtcblxuZnVuY3Rpb24gTGluZWFyQ2xvc2VkKGNvbnRleHQpIHtcbiAgdGhpcy5fY29udGV4dCA9IGNvbnRleHQ7XG59XG5cbkxpbmVhckNsb3NlZC5wcm90b3R5cGUgPSB7XG4gIGFyZWFTdGFydDogbm9vcCxcbiAgYXJlYUVuZDogbm9vcCxcbiAgbGluZVN0YXJ0OiBmdW5jdGlvbigpIHtcbiAgICB0aGlzLl9wb2ludCA9IDA7XG4gIH0sXG4gIGxpbmVFbmQ6IGZ1bmN0aW9uKCkge1xuICAgIGlmICh0aGlzLl9wb2ludCkgdGhpcy5fY29udGV4dC5jbG9zZVBhdGgoKTtcbiAgfSxcbiAgcG9pbnQ6IGZ1bmN0aW9uKHgsIHkpIHtcbiAgICB4ID0gK3gsIHkgPSAreTtcbiAgICBpZiAodGhpcy5fcG9pbnQpIHRoaXMuX2NvbnRleHQubGluZVRvKHgsIHkpO1xuICAgIGVsc2UgdGhpcy5fcG9pbnQgPSAxLCB0aGlzLl9jb250ZXh0Lm1vdmVUbyh4LCB5KTtcbiAgfVxufTtcblxuZXhwb3J0IGRlZmF1bHQgZnVuY3Rpb24oY29udGV4dCkge1xuICByZXR1cm4gbmV3IExpbmVhckNsb3NlZChjb250ZXh0KTtcbn1cbiJdLCJtYXBwaW5ncyI6IkFBQUE7QUFBQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOyIsInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///./node_modules/vega/node_modules/d3-shape/src/curve/linearClosed.js\n");

/***/ }),

/***/ "./node_modules/vega/node_modules/d3-shape/src/curve/monotone.js":
/*!***********************************************************************!*\
  !*** ./node_modules/vega/node_modules/d3-shape/src/curve/monotone.js ***!
  \***********************************************************************/
/*! exports provided: monotoneX, monotoneY */
/***/ (function(module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"monotoneX\", function() { return monotoneX; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"monotoneY\", function() { return monotoneY; });\nfunction sign(x) {\n  return x < 0 ? -1 : 1;\n}\n\n// Calculate the slopes of the tangents (Hermite-type interpolation) based on\n// the following paper: Steffen, M. 1990. A Simple Method for Monotonic\n// Interpolation in One Dimension. Astronomy and Astrophysics, Vol. 239, NO.\n// NOV(II), P. 443, 1990.\nfunction slope3(that, x2, y2) {\n  var h0 = that._x1 - that._x0,\n      h1 = x2 - that._x1,\n      s0 = (that._y1 - that._y0) / (h0 || h1 < 0 && -0),\n      s1 = (y2 - that._y1) / (h1 || h0 < 0 && -0),\n      p = (s0 * h1 + s1 * h0) / (h0 + h1);\n  return (sign(s0) + sign(s1)) * Math.min(Math.abs(s0), Math.abs(s1), 0.5 * Math.abs(p)) || 0;\n}\n\n// Calculate a one-sided slope.\nfunction slope2(that, t) {\n  var h = that._x1 - that._x0;\n  return h ? (3 * (that._y1 - that._y0) / h - t) / 2 : t;\n}\n\n// According to https://en.wikipedia.org/wiki/Cubic_Hermite_spline#Representations\n// \"you can express cubic Hermite interpolation in terms of cubic Bézier curves\n// with respect to the four values p0, p0 + m0 / 3, p1 - m1 / 3, p1\".\nfunction point(that, t0, t1) {\n  var x0 = that._x0,\n      y0 = that._y0,\n      x1 = that._x1,\n      y1 = that._y1,\n      dx = (x1 - x0) / 3;\n  that._context.bezierCurveTo(x0 + dx, y0 + dx * t0, x1 - dx, y1 - dx * t1, x1, y1);\n}\n\nfunction MonotoneX(context) {\n  this._context = context;\n}\n\nMonotoneX.prototype = {\n  areaStart: function() {\n    this._line = 0;\n  },\n  areaEnd: function() {\n    this._line = NaN;\n  },\n  lineStart: function() {\n    this._x0 = this._x1 =\n    this._y0 = this._y1 =\n    this._t0 = NaN;\n    this._point = 0;\n  },\n  lineEnd: function() {\n    switch (this._point) {\n      case 2: this._context.lineTo(this._x1, this._y1); break;\n      case 3: point(this, this._t0, slope2(this, this._t0)); break;\n    }\n    if (this._line || (this._line !== 0 && this._point === 1)) this._context.closePath();\n    this._line = 1 - this._line;\n  },\n  point: function(x, y) {\n    var t1 = NaN;\n\n    x = +x, y = +y;\n    if (x === this._x1 && y === this._y1) return; // Ignore coincident points.\n    switch (this._point) {\n      case 0: this._point = 1; this._line ? this._context.lineTo(x, y) : this._context.moveTo(x, y); break;\n      case 1: this._point = 2; break;\n      case 2: this._point = 3; point(this, slope2(this, t1 = slope3(this, x, y)), t1); break;\n      default: point(this, this._t0, t1 = slope3(this, x, y)); break;\n    }\n\n    this._x0 = this._x1, this._x1 = x;\n    this._y0 = this._y1, this._y1 = y;\n    this._t0 = t1;\n  }\n}\n\nfunction MonotoneY(context) {\n  this._context = new ReflectContext(context);\n}\n\n(MonotoneY.prototype = Object.create(MonotoneX.prototype)).point = function(x, y) {\n  MonotoneX.prototype.point.call(this, y, x);\n};\n\nfunction ReflectContext(context) {\n  this._context = context;\n}\n\nReflectContext.prototype = {\n  moveTo: function(x, y) { this._context.moveTo(y, x); },\n  closePath: function() { this._context.closePath(); },\n  lineTo: function(x, y) { this._context.lineTo(y, x); },\n  bezierCurveTo: function(x1, y1, x2, y2, x, y) { this._context.bezierCurveTo(y1, x1, y2, x2, y, x); }\n};\n\nfunction monotoneX(context) {\n  return new MonotoneX(context);\n}\n\nfunction monotoneY(context) {\n  return new MonotoneY(context);\n}\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,[encoded data, 5440 characters]\n//# sourceURL=webpack-internal:///./node_modules/vega/node_modules/d3-shape/src/curve/monotone.js\n");

/***/ }),

/***/ "./node_modules/vega/node_modules/d3-shape/src/curve/natural.js":
/*!**********************************************************************!*\
  !*** ./node_modules/vega/node_modules/d3-shape/src/curve/natural.js ***!
  \**********************************************************************/
/*! exports provided: default */
/***/ (function(module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\nfunction Natural(context) {\n  this._context = context;\n}\n\nNatural.prototype = {\n  areaStart: function() {\n    this._line = 0;\n  },\n  areaEnd: function() {\n    this._line = NaN;\n  },\n  lineStart: function() {\n    this._x = [];\n    this._y = [];\n  },\n  lineEnd: function() {\n    var x = this._x,\n        y = this._y,\n        n = x.length;\n\n    if (n) {\n      this._line ? this._context.lineTo(x[0], y[0]) : this._context.moveTo(x[0], y[0]);\n      if (n === 2) {\n        this._context.lineTo(x[1], y[1]);\n      } else {\n        var px = controlPoints(x),\n            py = controlPoints(y);\n        for (var i0 = 0, i1 = 1; i1 < n; ++i0, ++i1) {\n          this._context.bezierCurveTo(px[0][i0], py[0][i0], px[1][i0], py[1][i0], x[i1], y[i1]);\n        }\n      }\n    }\n\n    if (this._line || (this._line !== 0 && n === 1)) this._context.closePath();\n    this._line = 1 - this._line;\n    this._x = this._y = null;\n  },\n  point: function(x, y) {\n    this._x.push(+x);\n    this._y.push(+y);\n  }\n};\n\n// See https://www.particleincell.com/2012/bezier-splines/ for derivation.\nfunction controlPoints(x) {\n  var i,\n      n = x.length - 1,\n      m,\n      a = new Array(n),\n      b = new Array(n),\n      r = new Array(n);\n  a[0] = 0, b[0] = 2, r[0] = x[0] + 2 * x[1];\n  for (i = 1; i < n - 1; ++i) a[i] = 1, b[i] = 4, r[i] = 4 * x[i] + 2 * x[i + 1];\n  a[n - 1] = 2, b[n - 1] = 7, r[n - 1] = 8 * x[n - 1] + x[n];\n  for (i = 1; i < n; ++i) m = a[i] / b[i - 1], b[i] -= m, r[i] -= m * r[i - 1];\n  a[n - 1] = r[n - 1] / b[n - 1];\n  for (i = n - 2; i >= 0; --i) a[i] = (r[i] - a[i + 1]) / b[i];\n  b[n - 1] = (x[n] + a[n - 1]) / 2;\n  for (i = 0; i < n - 1; ++i) b[i] = 2 * x[i + 1] - a[i + 1];\n  return [a, b];\n}\n\n/* harmony default export */ __webpack_exports__[\"default\"] = (function(context) {\n  return new Natural(context);\n});\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvdmVnYS9ub2RlX21vZHVsZXMvZDMtc2hhcGUvc3JjL2N1cnZlL25hdHVyYWwuanMuanMiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvdmVnYS9ub2RlX21vZHVsZXMvZDMtc2hhcGUvc3JjL2N1cnZlL25hdHVyYWwuanM/OWI1ZSJdLCJzb3VyY2VzQ29udGVudCI6WyJmdW5jdGlvbiBOYXR1cmFsKGNvbnRleHQpIHtcbiAgdGhpcy5fY29udGV4dCA9IGNvbnRleHQ7XG59XG5cbk5hdHVyYWwucHJvdG90eXBlID0ge1xuICBhcmVhU3RhcnQ6IGZ1bmN0aW9uKCkge1xuICAgIHRoaXMuX2xpbmUgPSAwO1xuICB9LFxuICBhcmVhRW5kOiBmdW5jdGlvbigpIHtcbiAgICB0aGlzLl9saW5lID0gTmFOO1xuICB9LFxuICBsaW5lU3RhcnQ6IGZ1bmN0aW9uKCkge1xuICAgIHRoaXMuX3ggPSBbXTtcbiAgICB0aGlzLl95ID0gW107XG4gIH0sXG4gIGxpbmVFbmQ6IGZ1bmN0aW9uKCkge1xuICAgIHZhciB4ID0gdGhpcy5feCxcbiAgICAgICAgeSA9IHRoaXMuX3ksXG4gICAgICAgIG4gPSB4Lmxlbmd0aDtcblxuICAgIGlmIChuKSB7XG4gICAgICB0aGlzLl9saW5lID8gdGhpcy5fY29udGV4dC5saW5lVG8oeFswXSwgeVswXSkgOiB0aGlzLl9jb250ZXh0Lm1vdmVUbyh4WzBdLCB5WzBdKTtcbiAgICAgIGlmIChuID09PSAyKSB7XG4gICAgICAgIHRoaXMuX2NvbnRleHQubGluZVRvKHhbMV0sIHlbMV0pO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgdmFyIHB4ID0gY29udHJvbFBvaW50cyh4KSxcbiAgICAgICAgICAgIHB5ID0gY29udHJvbFBvaW50cyh5KTtcbiAgICAgICAgZm9yICh2YXIgaTAgPSAwLCBpMSA9IDE7IGkxIDwgbjsgKytpMCwgKytpMSkge1xuICAgICAgICAgIHRoaXMuX2NvbnRleHQuYmV6aWVyQ3VydmVUbyhweFswXVtpMF0sIHB5WzBdW2kwXSwgcHhbMV1baTBdLCBweVsxXVtpMF0sIHhbaTFdLCB5W2kxXSk7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9XG5cbiAgICBpZiAodGhpcy5fbGluZSB8fCAodGhpcy5fbGluZSAhPT0gMCAmJiBuID09PSAxKSkgdGhpcy5fY29udGV4dC5jbG9zZVBhdGgoKTtcbiAgICB0aGlzLl9saW5lID0gMSAtIHRoaXMuX2xpbmU7XG4gICAgdGhpcy5feCA9IHRoaXMuX3kgPSBudWxsO1xuICB9LFxuICBwb2ludDogZnVuY3Rpb24oeCwgeSkge1xuICAgIHRoaXMuX3gucHVzaCgreCk7XG4gICAgdGhpcy5feS5wdXNoKCt5KTtcbiAgfVxufTtcblxuLy8gU2VlIGh0dHBzOi8vd3d3LnBhcnRpY2xlaW5jZWxsLmNvbS8yMDEyL2Jlemllci1zcGxpbmVzLyBmb3IgZGVyaXZhdGlvbi5cbmZ1bmN0aW9uIGNvbnRyb2xQb2ludHMoeCkge1xuICB2YXIgaSxcbiAgICAgIG4gPSB4Lmxlbmd0aCAtIDEsXG4gICAgICBtLFxuICAgICAgYSA9IG5ldyBBcnJheShuKSxcbiAgICAgIGIgPSBuZXcgQXJyYXkobiksXG4gICAgICByID0gbmV3IEFycmF5KG4pO1xuICBhWzBdID0gMCwgYlswXSA9IDIsIHJbMF0gPSB4WzBdICsgMiAqIHhbMV07XG4gIGZvciAoaSA9IDE7IGkgPCBuIC0gMTsgKytpKSBhW2ldID0gMSwgYltpXSA9IDQsIHJbaV0gPSA0ICogeFtpXSArIDIgKiB4W2kgKyAxXTtcbiAgYVtuIC0gMV0gPSAyLCBiW24gLSAxXSA9IDcsIHJbbiAtIDFdID0gOCAqIHhbbiAtIDFdICsgeFtuXTtcbiAgZm9yIChpID0gMTsgaSA8IG47ICsraSkgbSA9IGFbaV0gLyBiW2kgLSAxXSwgYltpXSAtPSBtLCByW2ldIC09IG0gKiByW2kgLSAxXTtcbiAgYVtuIC0gMV0gPSByW24gLSAxXSAvIGJbbiAtIDFdO1xuICBmb3IgKGkgPSBuIC0gMjsgaSA+PSAwOyAtLWkpIGFbaV0gPSAocltpXSAtIGFbaSArIDFdKSAvIGJbaV07XG4gIGJbbiAtIDFdID0gKHhbbl0gKyBhW24gLSAxXSkgLyAyO1xuICBmb3IgKGkgPSAwOyBpIDwgbiAtIDE7ICsraSkgYltpXSA9IDIgKiB4W2kgKyAxXSAtIGFbaSArIDFdO1xuICByZXR1cm4gW2EsIGJdO1xufVxuXG5leHBvcnQgZGVmYXVsdCBmdW5jdGlvbihjb250ZXh0KSB7XG4gIHJldHVybiBuZXcgTmF0dXJhbChjb250ZXh0KTtcbn1cbiJdLCJtYXBwaW5ncyI6IkFBQUE7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOyIsInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///./node_modules/vega/node_modules/d3-shape/src/curve/natural.js\n");

/***/ }),

/***/ "./node_modules/vega/node_modules/d3-shape/src/curve/radial.js":
/*!*********************************************************************!*\
  !*** ./node_modules/vega/node_modules/d3-shape/src/curve/radial.js ***!
  \*********************************************************************/
/*! exports provided: curveRadialLinear, default */
/***/ (function(module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"curveRadialLinear\", function() { return curveRadialLinear; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"default\", function() { return curveRadial; });\n/* harmony import */ var _linear_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./linear.js */ \"./node_modules/vega/node_modules/d3-shape/src/curve/linear.js\");\n\n\nvar curveRadialLinear = curveRadial(_linear_js__WEBPACK_IMPORTED_MODULE_0__[\"default\"]);\n\nfunction Radial(curve) {\n  this._curve = curve;\n}\n\nRadial.prototype = {\n  areaStart: function() {\n    this._curve.areaStart();\n  },\n  areaEnd: function() {\n    this._curve.areaEnd();\n  },\n  lineStart: function() {\n    this._curve.lineStart();\n  },\n  lineEnd: function() {\n    this._curve.lineEnd();\n  },\n  point: function(a, r) {\n    this._curve.point(r * Math.sin(a), r * -Math.cos(a));\n  }\n};\n\nfunction curveRadial(curve) {\n\n  function radial(context) {\n    return new Radial(curve(context));\n  }\n\n  radial._curve = curve;\n\n  return radial;\n}\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvdmVnYS9ub2RlX21vZHVsZXMvZDMtc2hhcGUvc3JjL2N1cnZlL3JhZGlhbC5qcy5qcyIsInNvdXJjZXMiOlsid2VicGFjazovLy8uL25vZGVfbW9kdWxlcy92ZWdhL25vZGVfbW9kdWxlcy9kMy1zaGFwZS9zcmMvY3VydmUvcmFkaWFsLmpzPzZkMmIiXSwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IGN1cnZlTGluZWFyIGZyb20gXCIuL2xpbmVhci5qc1wiO1xuXG5leHBvcnQgdmFyIGN1cnZlUmFkaWFsTGluZWFyID0gY3VydmVSYWRpYWwoY3VydmVMaW5lYXIpO1xuXG5mdW5jdGlvbiBSYWRpYWwoY3VydmUpIHtcbiAgdGhpcy5fY3VydmUgPSBjdXJ2ZTtcbn1cblxuUmFkaWFsLnByb3RvdHlwZSA9IHtcbiAgYXJlYVN0YXJ0OiBmdW5jdGlvbigpIHtcbiAgICB0aGlzLl9jdXJ2ZS5hcmVhU3RhcnQoKTtcbiAgfSxcbiAgYXJlYUVuZDogZnVuY3Rpb24oKSB7XG4gICAgdGhpcy5fY3VydmUuYXJlYUVuZCgpO1xuICB9LFxuICBsaW5lU3RhcnQ6IGZ1bmN0aW9uKCkge1xuICAgIHRoaXMuX2N1cnZlLmxpbmVTdGFydCgpO1xuICB9LFxuICBsaW5lRW5kOiBmdW5jdGlvbigpIHtcbiAgICB0aGlzLl9jdXJ2ZS5saW5lRW5kKCk7XG4gIH0sXG4gIHBvaW50OiBmdW5jdGlvbihhLCByKSB7XG4gICAgdGhpcy5fY3VydmUucG9pbnQociAqIE1hdGguc2luKGEpLCByICogLU1hdGguY29zKGEpKTtcbiAgfVxufTtcblxuZXhwb3J0IGRlZmF1bHQgZnVuY3Rpb24gY3VydmVSYWRpYWwoY3VydmUpIHtcblxuICBmdW5jdGlvbiByYWRpYWwoY29udGV4dCkge1xuICAgIHJldHVybiBuZXcgUmFkaWFsKGN1cnZlKGNvbnRleHQpKTtcbiAgfVxuXG4gIHJhZGlhbC5fY3VydmUgPSBjdXJ2ZTtcblxuICByZXR1cm4gcmFkaWFsO1xufVxuIl0sIm1hcHBpbmdzIjoiQUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTsiLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///./node_modules/vega/node_modules/d3-shape/src/curve/radial.js\n");

/***/ }),

/***/ "./node_modules/vega/node_modules/d3-shape/src/curve/step.js":
/*!*******************************************************************!*\
  !*** ./node_modules/vega/node_modules/d3-shape/src/curve/step.js ***!
  \*******************************************************************/
/*! exports provided: default, stepBefore, stepAfter */
/***/ (function(module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"stepBefore\", function() { return stepBefore; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"stepAfter\", function() { return stepAfter; });\nfunction Step(context, t) {\n  this._context = context;\n  this._t = t;\n}\n\nStep.prototype = {\n  areaStart: function() {\n    this._line = 0;\n  },\n  areaEnd: function() {\n    this._line = NaN;\n  },\n  lineStart: function() {\n    this._x = this._y = NaN;\n    this._point = 0;\n  },\n  lineEnd: function() {\n    if (0 < this._t && this._t < 1 && this._point === 2) this._context.lineTo(this._x, this._y);\n    if (this._line || (this._line !== 0 && this._point === 1)) this._context.closePath();\n    if (this._line >= 0) this._t = 1 - this._t, this._line = 1 - this._line;\n  },\n  point: function(x, y) {\n    x = +x, y = +y;\n    switch (this._point) {\n      case 0: this._point = 1; this._line ? this._context.lineTo(x, y) : this._context.moveTo(x, y); break;\n      case 1: this._point = 2; // proceed\n      default: {\n        if (this._t <= 0) {\n          this._context.lineTo(this._x, y);\n          this._context.lineTo(x, y);\n        } else {\n          var x1 = this._x * (1 - this._t) + x * this._t;\n          this._context.lineTo(x1, this._y);\n          this._context.lineTo(x1, y);\n        }\n        break;\n      }\n    }\n    this._x = x, this._y = y;\n  }\n};\n\n/* harmony default export */ __webpack_exports__[\"default\"] = (function(context) {\n  return new Step(context, 0.5);\n});\n\nfunction stepBefore(context) {\n  return new Step(context, 0);\n}\n\nfunction stepAfter(context) {\n  return new Step(context, 1);\n}\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvdmVnYS9ub2RlX21vZHVsZXMvZDMtc2hhcGUvc3JjL2N1cnZlL3N0ZXAuanMuanMiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvdmVnYS9ub2RlX21vZHVsZXMvZDMtc2hhcGUvc3JjL2N1cnZlL3N0ZXAuanM/Mzc3NiJdLCJzb3VyY2VzQ29udGVudCI6WyJmdW5jdGlvbiBTdGVwKGNvbnRleHQsIHQpIHtcbiAgdGhpcy5fY29udGV4dCA9IGNvbnRleHQ7XG4gIHRoaXMuX3QgPSB0O1xufVxuXG5TdGVwLnByb3RvdHlwZSA9IHtcbiAgYXJlYVN0YXJ0OiBmdW5jdGlvbigpIHtcbiAgICB0aGlzLl9saW5lID0gMDtcbiAgfSxcbiAgYXJlYUVuZDogZnVuY3Rpb24oKSB7XG4gICAgdGhpcy5fbGluZSA9IE5hTjtcbiAgfSxcbiAgbGluZVN0YXJ0OiBmdW5jdGlvbigpIHtcbiAgICB0aGlzLl94ID0gdGhpcy5feSA9IE5hTjtcbiAgICB0aGlzLl9wb2ludCA9IDA7XG4gIH0sXG4gIGxpbmVFbmQ6IGZ1bmN0aW9uKCkge1xuICAgIGlmICgwIDwgdGhpcy5fdCAmJiB0aGlzLl90IDwgMSAmJiB0aGlzLl9wb2ludCA9PT0gMikgdGhpcy5fY29udGV4dC5saW5lVG8odGhpcy5feCwgdGhpcy5feSk7XG4gICAgaWYgKHRoaXMuX2xpbmUgfHwgKHRoaXMuX2xpbmUgIT09IDAgJiYgdGhpcy5fcG9pbnQgPT09IDEpKSB0aGlzLl9jb250ZXh0LmNsb3NlUGF0aCgpO1xuICAgIGlmICh0aGlzLl9saW5lID49IDApIHRoaXMuX3QgPSAxIC0gdGhpcy5fdCwgdGhpcy5fbGluZSA9IDEgLSB0aGlzLl9saW5lO1xuICB9LFxuICBwb2ludDogZnVuY3Rpb24oeCwgeSkge1xuICAgIHggPSAreCwgeSA9ICt5O1xuICAgIHN3aXRjaCAodGhpcy5fcG9pbnQpIHtcbiAgICAgIGNhc2UgMDogdGhpcy5fcG9pbnQgPSAxOyB0aGlzLl9saW5lID8gdGhpcy5fY29udGV4dC5saW5lVG8oeCwgeSkgOiB0aGlzLl9jb250ZXh0Lm1vdmVUbyh4LCB5KTsgYnJlYWs7XG4gICAgICBjYXNlIDE6IHRoaXMuX3BvaW50ID0gMjsgLy8gcHJvY2VlZFxuICAgICAgZGVmYXVsdDoge1xuICAgICAgICBpZiAodGhpcy5fdCA8PSAwKSB7XG4gICAgICAgICAgdGhpcy5fY29udGV4dC5saW5lVG8odGhpcy5feCwgeSk7XG4gICAgICAgICAgdGhpcy5fY29udGV4dC5saW5lVG8oeCwgeSk7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgdmFyIHgxID0gdGhpcy5feCAqICgxIC0gdGhpcy5fdCkgKyB4ICogdGhpcy5fdDtcbiAgICAgICAgICB0aGlzLl9jb250ZXh0LmxpbmVUbyh4MSwgdGhpcy5feSk7XG4gICAgICAgICAgdGhpcy5fY29udGV4dC5saW5lVG8oeDEsIHkpO1xuICAgICAgICB9XG4gICAgICAgIGJyZWFrO1xuICAgICAgfVxuICAgIH1cbiAgICB0aGlzLl94ID0geCwgdGhpcy5feSA9IHk7XG4gIH1cbn07XG5cbmV4cG9ydCBkZWZhdWx0IGZ1bmN0aW9uKGNvbnRleHQpIHtcbiAgcmV0dXJuIG5ldyBTdGVwKGNvbnRleHQsIDAuNSk7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBzdGVwQmVmb3JlKGNvbnRleHQpIHtcbiAgcmV0dXJuIG5ldyBTdGVwKGNvbnRleHQsIDApO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gc3RlcEFmdGVyKGNvbnRleHQpIHtcbiAgcmV0dXJuIG5ldyBTdGVwKGNvbnRleHQsIDEpO1xufVxuIl0sIm1hcHBpbmdzIjoiQUFBQTtBQUFBO0FBQUE7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOyIsInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///./node_modules/vega/node_modules/d3-shape/src/curve/step.js\n");

/***/ }),

/***/ "./node_modules/vega/node_modules/d3-shape/src/descending.js":
/*!*******************************************************************!*\
  !*** ./node_modules/vega/node_modules/d3-shape/src/descending.js ***!
  \*******************************************************************/
/*! exports provided: default */
/***/ (function(module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony default export */ __webpack_exports__[\"default\"] = (function(a, b) {\n  return b < a ? -1 : b > a ? 1 : b >= a ? 0 : NaN;\n});\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvdmVnYS9ub2RlX21vZHVsZXMvZDMtc2hhcGUvc3JjL2Rlc2NlbmRpbmcuanMuanMiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvdmVnYS9ub2RlX21vZHVsZXMvZDMtc2hhcGUvc3JjL2Rlc2NlbmRpbmcuanM/ZTE5YyJdLCJzb3VyY2VzQ29udGVudCI6WyJleHBvcnQgZGVmYXVsdCBmdW5jdGlvbihhLCBiKSB7XG4gIHJldHVybiBiIDwgYSA/IC0xIDogYiA+IGEgPyAxIDogYiA+PSBhID8gMCA6IE5hTjtcbn1cbiJdLCJtYXBwaW5ncyI6IkFBQUE7QUFBQTtBQUNBO0FBQ0E7Iiwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///./node_modules/vega/node_modules/d3-shape/src/descending.js\n");

/***/ }),

/***/ "./node_modules/vega/node_modules/d3-shape/src/identity.js":
/*!*****************************************************************!*\
  !*** ./node_modules/vega/node_modules/d3-shape/src/identity.js ***!
  \*****************************************************************/
/*! exports provided: default */
/***/ (function(module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony default export */ __webpack_exports__[\"default\"] = (function(d) {\n  return d;\n});\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvdmVnYS9ub2RlX21vZHVsZXMvZDMtc2hhcGUvc3JjL2lkZW50aXR5LmpzLmpzIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL3ZlZ2Evbm9kZV9tb2R1bGVzL2QzLXNoYXBlL3NyYy9pZGVudGl0eS5qcz80MDI0Il0sInNvdXJjZXNDb250ZW50IjpbImV4cG9ydCBkZWZhdWx0IGZ1bmN0aW9uKGQpIHtcbiAgcmV0dXJuIGQ7XG59XG4iXSwibWFwcGluZ3MiOiJBQUFBO0FBQUE7QUFDQTtBQUNBOyIsInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///./node_modules/vega/node_modules/d3-shape/src/identity.js\n");

/***/ }),

/***/ "./node_modules/vega/node_modules/d3-shape/src/index.js":
/*!**************************************************************!*\
  !*** ./node_modules/vega/node_modules/d3-shape/src/index.js ***!
  \**************************************************************/
/*! exports provided: arc, area, line, pie, areaRadial, radialArea, lineRadial, radialLine, pointRadial, linkHorizontal, linkVertical, linkRadial, symbol, symbols, symbolCircle, symbolCross, symbolDiamond, symbolSquare, symbolStar, symbolTriangle, symbolWye, curveBasisClosed, curveBasisOpen, curveBasis, curveBumpX, curveBumpY, curveBundle, curveCardinalClosed, curveCardinalOpen, curveCardinal, curveCatmullRomClosed, curveCatmullRomOpen, curveCatmullRom, curveLinearClosed, curveLinear, curveMonotoneX, curveMonotoneY, curveNatural, curveStep, curveStepAfter, curveStepBefore, stack, stackOffsetExpand, stackOffsetDiverging, stackOffsetNone, stackOffsetSilhouette, stackOffsetWiggle, stackOrderAppearance, stackOrderAscending, stackOrderDescending, stackOrderInsideOut, stackOrderNone, stackOrderReverse */
/***/ (function(module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _arc_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./arc.js */ \"./node_modules/vega/node_modules/d3-shape/src/arc.js\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"arc\", function() { return _arc_js__WEBPACK_IMPORTED_MODULE_0__[\"default\"]; });\n\n/* harmony import */ var _area_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./area.js */ \"./node_modules/vega/node_modules/d3-shape/src/area.js\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"area\", function() { return _area_js__WEBPACK_IMPORTED_MODULE_1__[\"default\"]; });\n\n/* harmony import */ var _line_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./line.js */ \"./node_modules/vega/node_modules/d3-shape/src/line.js\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"line\", function() { return _line_js__WEBPACK_IMPORTED_MODULE_2__[\"default\"]; });\n\n/* harmony import */ var _pie_js__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ./pie.js */ \"./node_modules/vega/node_modules/d3-shape/src/pie.js\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"pie\", function() { return _pie_js__WEBPACK_IMPORTED_MODULE_3__[\"default\"]; });\n\n/* harmony import */ var _areaRadial_js__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ./areaRadial.js */ \"./node_modules/vega/node_modules/d3-shape/src/areaRadial.js\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"areaRadial\", function() { return _areaRadial_js__WEBPACK_IMPORTED_MODULE_4__[\"default\"]; });\n\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"radialArea\", function() { return _areaRadial_js__WEBPACK_IMPORTED_MODULE_4__[\"default\"]; });\n\n/* harmony import */ var _lineRadial_js__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! ./lineRadial.js */ \"./node_modules/vega/node_modules/d3-shape/src/lineRadial.js\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"lineRadial\", function() { return _lineRadial_js__WEBPACK_IMPORTED_MODULE_5__[\"default\"]; });\n\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"radialLine\", function() { return _lineRadial_js__WEBPACK_IMPORTED_MODULE_5__[\"default\"]; });\n\n/* harmony import */ var _pointRadial_js__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! ./pointRadial.js */ \"./node_modules/vega/node_modules/d3-shape/src/pointRadial.js\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"pointRadial\", function() { return _pointRadial_js__WEBPACK_IMPORTED_MODULE_6__[\"default\"]; });\n\n/* harmony import */ var _link_index_js__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! ./link/index.js */ \"./node_modules/vega/node_modules/d3-shape/src/link/index.js\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"linkHorizontal\", function() { return _link_index_js__WEBPACK_IMPORTED_MODULE_7__[\"linkHorizontal\"]; });\n\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"linkVertical\", function() { return _link_index_js__WEBPACK_IMPORTED_MODULE_7__[\"linkVertical\"]; });\n\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"linkRadial\", function() { return _link_index_js__WEBPACK_IMPORTED_MODULE_7__[\"linkRadial\"]; });\n\n/* harmony import */ var _symbol_js__WEBPACK_IMPORTED_MODULE_8__ = __webpack_require__(/*! ./symbol.js */ \"./node_modules/vega/node_modules/d3-shape/src/symbol.js\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"symbol\", function() { return _symbol_js__WEBPACK_IMPORTED_MODULE_8__[\"default\"]; });\n\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"symbols\", function() { return _symbol_js__WEBPACK_IMPORTED_MODULE_8__[\"symbols\"]; });\n\n/* harmony import */ var _symbol_circle_js__WEBPACK_IMPORTED_MODULE_9__ = __webpack_require__(/*! ./symbol/circle.js */ \"./node_modules/vega/node_modules/d3-shape/src/symbol/circle.js\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"symbolCircle\", function() { return _symbol_circle_js__WEBPACK_IMPORTED_MODULE_9__[\"default\"]; });\n\n/* harmony import */ var _symbol_cross_js__WEBPACK_IMPORTED_MODULE_10__ = __webpack_require__(/*! ./symbol/cross.js */ \"./node_modules/vega/node_modules/d3-shape/src/symbol/cross.js\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"symbolCross\", function() { return _symbol_cross_js__WEBPACK_IMPORTED_MODULE_10__[\"default\"]; });\n\n/* harmony import */ var _symbol_diamond_js__WEBPACK_IMPORTED_MODULE_11__ = __webpack_require__(/*! ./symbol/diamond.js */ \"./node_modules/vega/node_modules/d3-shape/src/symbol/diamond.js\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"symbolDiamond\", function() { return _symbol_diamond_js__WEBPACK_IMPORTED_MODULE_11__[\"default\"]; });\n\n/* harmony import */ var _symbol_square_js__WEBPACK_IMPORTED_MODULE_12__ = __webpack_require__(/*! ./symbol/square.js */ \"./node_modules/vega/node_modules/d3-shape/src/symbol/square.js\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"symbolSquare\", function() { return _symbol_square_js__WEBPACK_IMPORTED_MODULE_12__[\"default\"]; });\n\n/* harmony import */ var _symbol_star_js__WEBPACK_IMPORTED_MODULE_13__ = __webpack_require__(/*! ./symbol/star.js */ \"./node_modules/vega/node_modules/d3-shape/src/symbol/star.js\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"symbolStar\", function() { return _symbol_star_js__WEBPACK_IMPORTED_MODULE_13__[\"default\"]; });\n\n/* harmony import */ var _symbol_triangle_js__WEBPACK_IMPORTED_MODULE_14__ = __webpack_require__(/*! ./symbol/triangle.js */ \"./node_modules/vega/node_modules/d3-shape/src/symbol/triangle.js\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"symbolTriangle\", function() { return _symbol_triangle_js__WEBPACK_IMPORTED_MODULE_14__[\"default\"]; });\n\n/* harmony import */ var _symbol_wye_js__WEBPACK_IMPORTED_MODULE_15__ = __webpack_require__(/*! ./symbol/wye.js */ \"./node_modules/vega/node_modules/d3-shape/src/symbol/wye.js\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"symbolWye\", function() { return _symbol_wye_js__WEBPACK_IMPORTED_MODULE_15__[\"default\"]; });\n\n/* harmony import */ var _curve_basisClosed_js__WEBPACK_IMPORTED_MODULE_16__ = __webpack_require__(/*! ./curve/basisClosed.js */ \"./node_modules/vega/node_modules/d3-shape/src/curve/basisClosed.js\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"curveBasisClosed\", function() { return _curve_basisClosed_js__WEBPACK_IMPORTED_MODULE_16__[\"default\"]; });\n\n/* harmony import */ var _curve_basisOpen_js__WEBPACK_IMPORTED_MODULE_17__ = __webpack_require__(/*! ./curve/basisOpen.js */ \"./node_modules/vega/node_modules/d3-shape/src/curve/basisOpen.js\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"curveBasisOpen\", function() { return _curve_basisOpen_js__WEBPACK_IMPORTED_MODULE_17__[\"default\"]; });\n\n/* harmony import */ var _curve_basis_js__WEBPACK_IMPORTED_MODULE_18__ = __webpack_require__(/*! ./curve/basis.js */ \"./node_modules/vega/node_modules/d3-shape/src/curve/basis.js\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"curveBasis\", function() { return _curve_basis_js__WEBPACK_IMPORTED_MODULE_18__[\"default\"]; });\n\n/* harmony import */ var _curve_bump_js__WEBPACK_IMPORTED_MODULE_19__ = __webpack_require__(/*! ./curve/bump.js */ \"./node_modules/vega/node_modules/d3-shape/src/curve/bump.js\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"curveBumpX\", function() { return _curve_bump_js__WEBPACK_IMPORTED_MODULE_19__[\"bumpX\"]; });\n\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"curveBumpY\", function() { return _curve_bump_js__WEBPACK_IMPORTED_MODULE_19__[\"bumpY\"]; });\n\n/* harmony import */ var _curve_bundle_js__WEBPACK_IMPORTED_MODULE_20__ = __webpack_require__(/*! ./curve/bundle.js */ \"./node_modules/vega/node_modules/d3-shape/src/curve/bundle.js\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"curveBundle\", function() { return _curve_bundle_js__WEBPACK_IMPORTED_MODULE_20__[\"default\"]; });\n\n/* harmony import */ var _curve_cardinalClosed_js__WEBPACK_IMPORTED_MODULE_21__ = __webpack_require__(/*! ./curve/cardinalClosed.js */ \"./node_modules/vega/node_modules/d3-shape/src/curve/cardinalClosed.js\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"curveCardinalClosed\", function() { return _curve_cardinalClosed_js__WEBPACK_IMPORTED_MODULE_21__[\"default\"]; });\n\n/* harmony import */ var _curve_cardinalOpen_js__WEBPACK_IMPORTED_MODULE_22__ = __webpack_require__(/*! ./curve/cardinalOpen.js */ \"./node_modules/vega/node_modules/d3-shape/src/curve/cardinalOpen.js\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"curveCardinalOpen\", function() { return _curve_cardinalOpen_js__WEBPACK_IMPORTED_MODULE_22__[\"default\"]; });\n\n/* harmony import */ var _curve_cardinal_js__WEBPACK_IMPORTED_MODULE_23__ = __webpack_require__(/*! ./curve/cardinal.js */ \"./node_modules/vega/node_modules/d3-shape/src/curve/cardinal.js\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"curveCardinal\", function() { return _curve_cardinal_js__WEBPACK_IMPORTED_MODULE_23__[\"default\"]; });\n\n/* harmony import */ var _curve_catmullRomClosed_js__WEBPACK_IMPORTED_MODULE_24__ = __webpack_require__(/*! ./curve/catmullRomClosed.js */ \"./node_modules/vega/node_modules/d3-shape/src/curve/catmullRomClosed.js\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"curveCatmullRomClosed\", function() { return _curve_catmullRomClosed_js__WEBPACK_IMPORTED_MODULE_24__[\"default\"]; });\n\n/* harmony import */ var _curve_catmullRomOpen_js__WEBPACK_IMPORTED_MODULE_25__ = __webpack_require__(/*! ./curve/catmullRomOpen.js */ \"./node_modules/vega/node_modules/d3-shape/src/curve/catmullRomOpen.js\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"curveCatmullRomOpen\", function() { return _curve_catmullRomOpen_js__WEBPACK_IMPORTED_MODULE_25__[\"default\"]; });\n\n/* harmony import */ var _curve_catmullRom_js__WEBPACK_IMPORTED_MODULE_26__ = __webpack_require__(/*! ./curve/catmullRom.js */ \"./node_modules/vega/node_modules/d3-shape/src/curve/catmullRom.js\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"curveCatmullRom\", function() { return _curve_catmullRom_js__WEBPACK_IMPORTED_MODULE_26__[\"default\"]; });\n\n/* harmony import */ var _curve_linearClosed_js__WEBPACK_IMPORTED_MODULE_27__ = __webpack_require__(/*! ./curve/linearClosed.js */ \"./node_modules/vega/node_modules/d3-shape/src/curve/linearClosed.js\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"curveLinearClosed\", function() { return _curve_linearClosed_js__WEBPACK_IMPORTED_MODULE_27__[\"default\"]; });\n\n/* harmony import */ var _curve_linear_js__WEBPACK_IMPORTED_MODULE_28__ = __webpack_require__(/*! ./curve/linear.js */ \"./node_modules/vega/node_modules/d3-shape/src/curve/linear.js\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"curveLinear\", function() { return _curve_linear_js__WEBPACK_IMPORTED_MODULE_28__[\"default\"]; });\n\n/* harmony import */ var _curve_monotone_js__WEBPACK_IMPORTED_MODULE_29__ = __webpack_require__(/*! ./curve/monotone.js */ \"./node_modules/vega/node_modules/d3-shape/src/curve/monotone.js\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"curveMonotoneX\", function() { return _curve_monotone_js__WEBPACK_IMPORTED_MODULE_29__[\"monotoneX\"]; });\n\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"curveMonotoneY\", function() { return _curve_monotone_js__WEBPACK_IMPORTED_MODULE_29__[\"monotoneY\"]; });\n\n/* harmony import */ var _curve_natural_js__WEBPACK_IMPORTED_MODULE_30__ = __webpack_require__(/*! ./curve/natural.js */ \"./node_modules/vega/node_modules/d3-shape/src/curve/natural.js\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"curveNatural\", function() { return _curve_natural_js__WEBPACK_IMPORTED_MODULE_30__[\"default\"]; });\n\n/* harmony import */ var _curve_step_js__WEBPACK_IMPORTED_MODULE_31__ = __webpack_require__(/*! ./curve/step.js */ \"./node_modules/vega/node_modules/d3-shape/src/curve/step.js\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"curveStep\", function() { return _curve_step_js__WEBPACK_IMPORTED_MODULE_31__[\"default\"]; });\n\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"curveStepAfter\", function() { return _curve_step_js__WEBPACK_IMPORTED_MODULE_31__[\"stepAfter\"]; });\n\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"curveStepBefore\", function() { return _curve_step_js__WEBPACK_IMPORTED_MODULE_31__[\"stepBefore\"]; });\n\n/* harmony import */ var _stack_js__WEBPACK_IMPORTED_MODULE_32__ = __webpack_require__(/*! ./stack.js */ \"./node_modules/vega/node_modules/d3-shape/src/stack.js\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"stack\", function() { return _stack_js__WEBPACK_IMPORTED_MODULE_32__[\"default\"]; });\n\n/* harmony import */ var _offset_expand_js__WEBPACK_IMPORTED_MODULE_33__ = __webpack_require__(/*! ./offset/expand.js */ \"./node_modules/vega/node_modules/d3-shape/src/offset/expand.js\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"stackOffsetExpand\", function() { return _offset_expand_js__WEBPACK_IMPORTED_MODULE_33__[\"default\"]; });\n\n/* harmony import */ var _offset_diverging_js__WEBPACK_IMPORTED_MODULE_34__ = __webpack_require__(/*! ./offset/diverging.js */ \"./node_modules/vega/node_modules/d3-shape/src/offset/diverging.js\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"stackOffsetDiverging\", function() { return _offset_diverging_js__WEBPACK_IMPORTED_MODULE_34__[\"default\"]; });\n\n/* harmony import */ var _offset_none_js__WEBPACK_IMPORTED_MODULE_35__ = __webpack_require__(/*! ./offset/none.js */ \"./node_modules/vega/node_modules/d3-shape/src/offset/none.js\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"stackOffsetNone\", function() { return _offset_none_js__WEBPACK_IMPORTED_MODULE_35__[\"default\"]; });\n\n/* harmony import */ var _offset_silhouette_js__WEBPACK_IMPORTED_MODULE_36__ = __webpack_require__(/*! ./offset/silhouette.js */ \"./node_modules/vega/node_modules/d3-shape/src/offset/silhouette.js\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"stackOffsetSilhouette\", function() { return _offset_silhouette_js__WEBPACK_IMPORTED_MODULE_36__[\"default\"]; });\n\n/* harmony import */ var _offset_wiggle_js__WEBPACK_IMPORTED_MODULE_37__ = __webpack_require__(/*! ./offset/wiggle.js */ \"./node_modules/vega/node_modules/d3-shape/src/offset/wiggle.js\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"stackOffsetWiggle\", function() { return _offset_wiggle_js__WEBPACK_IMPORTED_MODULE_37__[\"default\"]; });\n\n/* harmony import */ var _order_appearance_js__WEBPACK_IMPORTED_MODULE_38__ = __webpack_require__(/*! ./order/appearance.js */ \"./node_modules/vega/node_modules/d3-shape/src/order/appearance.js\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"stackOrderAppearance\", function() { return _order_appearance_js__WEBPACK_IMPORTED_MODULE_38__[\"default\"]; });\n\n/* harmony import */ var _order_ascending_js__WEBPACK_IMPORTED_MODULE_39__ = __webpack_require__(/*! ./order/ascending.js */ \"./node_modules/vega/node_modules/d3-shape/src/order/ascending.js\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"stackOrderAscending\", function() { return _order_ascending_js__WEBPACK_IMPORTED_MODULE_39__[\"default\"]; });\n\n/* harmony import */ var _order_descending_js__WEBPACK_IMPORTED_MODULE_40__ = __webpack_require__(/*! ./order/descending.js */ \"./node_modules/vega/node_modules/d3-shape/src/order/descending.js\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"stackOrderDescending\", function() { return _order_descending_js__WEBPACK_IMPORTED_MODULE_40__[\"default\"]; });\n\n/* harmony import */ var _order_insideOut_js__WEBPACK_IMPORTED_MODULE_41__ = __webpack_require__(/*! ./order/insideOut.js */ \"./node_modules/vega/node_modules/d3-shape/src/order/insideOut.js\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"stackOrderInsideOut\", function() { return _order_insideOut_js__WEBPACK_IMPORTED_MODULE_41__[\"default\"]; });\n\n/* harmony import */ var _order_none_js__WEBPACK_IMPORTED_MODULE_42__ = __webpack_require__(/*! ./order/none.js */ \"./node_modules/vega/node_modules/d3-shape/src/order/none.js\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"stackOrderNone\", function() { return _order_none_js__WEBPACK_IMPORTED_MODULE_42__[\"default\"]; });\n\n/* harmony import */ var _order_reverse_js__WEBPACK_IMPORTED_MODULE_43__ = __webpack_require__(/*! ./order/reverse.js */ \"./node_modules/vega/node_modules/d3-shape/src/order/reverse.js\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"stackOrderReverse\", function() { return _order_reverse_js__WEBPACK_IMPORTED_MODULE_43__[\"default\"]; });\n\n\n\n\n\n // Note: radialArea is deprecated!\n // Note: radialLine is deprecated!\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,[encoded data, 5688 characters]\n//# sourceURL=webpack-internal:///./node_modules/vega/node_modules/d3-shape/src/index.js\n");

/***/ }),

/***/ "./node_modules/vega/node_modules/d3-shape/src/line.js":
/*!*************************************************************!*\
  !*** ./node_modules/vega/node_modules/d3-shape/src/line.js ***!
  \*************************************************************/
/*! exports provided: default */
/***/ (function(module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var d3_path__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! d3-path */ \"./node_modules/vega/node_modules/d3-path/src/index.js\");\n/* harmony import */ var _array_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./array.js */ \"./node_modules/vega/node_modules/d3-shape/src/array.js\");\n/* harmony import */ var _constant_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./constant.js */ \"./node_modules/vega/node_modules/d3-shape/src/constant.js\");\n/* harmony import */ var _curve_linear_js__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ./curve/linear.js */ \"./node_modules/vega/node_modules/d3-shape/src/curve/linear.js\");\n/* harmony import */ var _point_js__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ./point.js */ \"./node_modules/vega/node_modules/d3-shape/src/point.js\");\n\n\n\n\n\n\n/* harmony default export */ __webpack_exports__[\"default\"] = (function(x, y) {\n  var defined = Object(_constant_js__WEBPACK_IMPORTED_MODULE_2__[\"default\"])(true),\n      context = null,\n      curve = _curve_linear_js__WEBPACK_IMPORTED_MODULE_3__[\"default\"],\n      output = null;\n\n  x = typeof x === \"function\" ? x : (x === undefined) ? _point_js__WEBPACK_IMPORTED_MODULE_4__[\"x\"] : Object(_constant_js__WEBPACK_IMPORTED_MODULE_2__[\"default\"])(x);\n  y = typeof y === \"function\" ? y : (y === undefined) ? _point_js__WEBPACK_IMPORTED_MODULE_4__[\"y\"] : Object(_constant_js__WEBPACK_IMPORTED_MODULE_2__[\"default\"])(y);\n\n  function line(data) {\n    var i,\n        n = (data = Object(_array_js__WEBPACK_IMPORTED_MODULE_1__[\"default\"])(data)).length,\n        d,\n        defined0 = false,\n        buffer;\n\n    if (context == null) output = curve(buffer = Object(d3_path__WEBPACK_IMPORTED_MODULE_0__[\"path\"])());\n\n    for (i = 0; i <= n; ++i) {\n      if (!(i < n && defined(d = data[i], i, data)) === defined0) {\n        if (defined0 = !defined0) output.lineStart();\n        else output.lineEnd();\n      }\n      if (defined0) output.point(+x(d, i, data), +y(d, i, data));\n    }\n\n    if (buffer) return output = null, buffer + \"\" || null;\n  }\n\n  line.x = function(_) {\n    return arguments.length ? (x = typeof _ === \"function\" ? _ : Object(_constant_js__WEBPACK_IMPORTED_MODULE_2__[\"default\"])(+_), line) : x;\n  };\n\n  line.y = function(_) {\n    return arguments.length ? (y = typeof _ === \"function\" ? _ : Object(_constant_js__WEBPACK_IMPORTED_MODULE_2__[\"default\"])(+_), line) : y;\n  };\n\n  line.defined = function(_) {\n    return arguments.length ? (defined = typeof _ === \"function\" ? _ : Object(_constant_js__WEBPACK_IMPORTED_MODULE_2__[\"default\"])(!!_), line) : defined;\n  };\n\n  line.curve = function(_) {\n    return arguments.length ? (curve = _, context != null && (output = curve(context)), line) : curve;\n  };\n\n  line.context = function(_) {\n    return arguments.length ? (_ == null ? context = output = null : output = curve(context = _), line) : context;\n  };\n\n  return line;\n});\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvdmVnYS9ub2RlX21vZHVsZXMvZDMtc2hhcGUvc3JjL2xpbmUuanMuanMiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvdmVnYS9ub2RlX21vZHVsZXMvZDMtc2hhcGUvc3JjL2xpbmUuanM/MWQxYSJdLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge3BhdGh9IGZyb20gXCJkMy1wYXRoXCI7XG5pbXBvcnQgYXJyYXkgZnJvbSBcIi4vYXJyYXkuanNcIjtcbmltcG9ydCBjb25zdGFudCBmcm9tIFwiLi9jb25zdGFudC5qc1wiO1xuaW1wb3J0IGN1cnZlTGluZWFyIGZyb20gXCIuL2N1cnZlL2xpbmVhci5qc1wiO1xuaW1wb3J0IHt4IGFzIHBvaW50WCwgeSBhcyBwb2ludFl9IGZyb20gXCIuL3BvaW50LmpzXCI7XG5cbmV4cG9ydCBkZWZhdWx0IGZ1bmN0aW9uKHgsIHkpIHtcbiAgdmFyIGRlZmluZWQgPSBjb25zdGFudCh0cnVlKSxcbiAgICAgIGNvbnRleHQgPSBudWxsLFxuICAgICAgY3VydmUgPSBjdXJ2ZUxpbmVhcixcbiAgICAgIG91dHB1dCA9IG51bGw7XG5cbiAgeCA9IHR5cGVvZiB4ID09PSBcImZ1bmN0aW9uXCIgPyB4IDogKHggPT09IHVuZGVmaW5lZCkgPyBwb2ludFggOiBjb25zdGFudCh4KTtcbiAgeSA9IHR5cGVvZiB5ID09PSBcImZ1bmN0aW9uXCIgPyB5IDogKHkgPT09IHVuZGVmaW5lZCkgPyBwb2ludFkgOiBjb25zdGFudCh5KTtcblxuICBmdW5jdGlvbiBsaW5lKGRhdGEpIHtcbiAgICB2YXIgaSxcbiAgICAgICAgbiA9IChkYXRhID0gYXJyYXkoZGF0YSkpLmxlbmd0aCxcbiAgICAgICAgZCxcbiAgICAgICAgZGVmaW5lZDAgPSBmYWxzZSxcbiAgICAgICAgYnVmZmVyO1xuXG4gICAgaWYgKGNvbnRleHQgPT0gbnVsbCkgb3V0cHV0ID0gY3VydmUoYnVmZmVyID0gcGF0aCgpKTtcblxuICAgIGZvciAoaSA9IDA7IGkgPD0gbjsgKytpKSB7XG4gICAgICBpZiAoIShpIDwgbiAmJiBkZWZpbmVkKGQgPSBkYXRhW2ldLCBpLCBkYXRhKSkgPT09IGRlZmluZWQwKSB7XG4gICAgICAgIGlmIChkZWZpbmVkMCA9ICFkZWZpbmVkMCkgb3V0cHV0LmxpbmVTdGFydCgpO1xuICAgICAgICBlbHNlIG91dHB1dC5saW5lRW5kKCk7XG4gICAgICB9XG4gICAgICBpZiAoZGVmaW5lZDApIG91dHB1dC5wb2ludCgreChkLCBpLCBkYXRhKSwgK3koZCwgaSwgZGF0YSkpO1xuICAgIH1cblxuICAgIGlmIChidWZmZXIpIHJldHVybiBvdXRwdXQgPSBudWxsLCBidWZmZXIgKyBcIlwiIHx8IG51bGw7XG4gIH1cblxuICBsaW5lLnggPSBmdW5jdGlvbihfKSB7XG4gICAgcmV0dXJuIGFyZ3VtZW50cy5sZW5ndGggPyAoeCA9IHR5cGVvZiBfID09PSBcImZ1bmN0aW9uXCIgPyBfIDogY29uc3RhbnQoK18pLCBsaW5lKSA6IHg7XG4gIH07XG5cbiAgbGluZS55ID0gZnVuY3Rpb24oXykge1xuICAgIHJldHVybiBhcmd1bWVudHMubGVuZ3RoID8gKHkgPSB0eXBlb2YgXyA9PT0gXCJmdW5jdGlvblwiID8gXyA6IGNvbnN0YW50KCtfKSwgbGluZSkgOiB5O1xuICB9O1xuXG4gIGxpbmUuZGVmaW5lZCA9IGZ1bmN0aW9uKF8pIHtcbiAgICByZXR1cm4gYXJndW1lbnRzLmxlbmd0aCA/IChkZWZpbmVkID0gdHlwZW9mIF8gPT09IFwiZnVuY3Rpb25cIiA/IF8gOiBjb25zdGFudCghIV8pLCBsaW5lKSA6IGRlZmluZWQ7XG4gIH07XG5cbiAgbGluZS5jdXJ2ZSA9IGZ1bmN0aW9uKF8pIHtcbiAgICByZXR1cm4gYXJndW1lbnRzLmxlbmd0aCA/IChjdXJ2ZSA9IF8sIGNvbnRleHQgIT0gbnVsbCAmJiAob3V0cHV0ID0gY3VydmUoY29udGV4dCkpLCBsaW5lKSA6IGN1cnZlO1xuICB9O1xuXG4gIGxpbmUuY29udGV4dCA9IGZ1bmN0aW9uKF8pIHtcbiAgICByZXR1cm4gYXJndW1lbnRzLmxlbmd0aCA/IChfID09IG51bGwgPyBjb250ZXh0ID0gb3V0cHV0ID0gbnVsbCA6IG91dHB1dCA9IGN1cnZlKGNvbnRleHQgPSBfKSwgbGluZSkgOiBjb250ZXh0O1xuICB9O1xuXG4gIHJldHVybiBsaW5lO1xufVxuIl0sIm1hcHBpbmdzIjoiQUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7Iiwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///./node_modules/vega/node_modules/d3-shape/src/line.js\n");

/***/ }),

/***/ "./node_modules/vega/node_modules/d3-shape/src/lineRadial.js":
/*!*******************************************************************!*\
  !*** ./node_modules/vega/node_modules/d3-shape/src/lineRadial.js ***!
  \*******************************************************************/
/*! exports provided: lineRadial, default */
/***/ (function(module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"lineRadial\", function() { return lineRadial; });\n/* harmony import */ var _curve_radial_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./curve/radial.js */ \"./node_modules/vega/node_modules/d3-shape/src/curve/radial.js\");\n/* harmony import */ var _line_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./line.js */ \"./node_modules/vega/node_modules/d3-shape/src/line.js\");\n\n\n\nfunction lineRadial(l) {\n  var c = l.curve;\n\n  l.angle = l.x, delete l.x;\n  l.radius = l.y, delete l.y;\n\n  l.curve = function(_) {\n    return arguments.length ? c(Object(_curve_radial_js__WEBPACK_IMPORTED_MODULE_0__[\"default\"])(_)) : c()._curve;\n  };\n\n  return l;\n}\n\n/* harmony default export */ __webpack_exports__[\"default\"] = (function() {\n  return lineRadial(Object(_line_js__WEBPACK_IMPORTED_MODULE_1__[\"default\"])().curve(_curve_radial_js__WEBPACK_IMPORTED_MODULE_0__[\"curveRadialLinear\"]));\n});\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvdmVnYS9ub2RlX21vZHVsZXMvZDMtc2hhcGUvc3JjL2xpbmVSYWRpYWwuanMuanMiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvdmVnYS9ub2RlX21vZHVsZXMvZDMtc2hhcGUvc3JjL2xpbmVSYWRpYWwuanM/MzIyYiJdLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgY3VydmVSYWRpYWwsIHtjdXJ2ZVJhZGlhbExpbmVhcn0gZnJvbSBcIi4vY3VydmUvcmFkaWFsLmpzXCI7XG5pbXBvcnQgbGluZSBmcm9tIFwiLi9saW5lLmpzXCI7XG5cbmV4cG9ydCBmdW5jdGlvbiBsaW5lUmFkaWFsKGwpIHtcbiAgdmFyIGMgPSBsLmN1cnZlO1xuXG4gIGwuYW5nbGUgPSBsLngsIGRlbGV0ZSBsLng7XG4gIGwucmFkaXVzID0gbC55LCBkZWxldGUgbC55O1xuXG4gIGwuY3VydmUgPSBmdW5jdGlvbihfKSB7XG4gICAgcmV0dXJuIGFyZ3VtZW50cy5sZW5ndGggPyBjKGN1cnZlUmFkaWFsKF8pKSA6IGMoKS5fY3VydmU7XG4gIH07XG5cbiAgcmV0dXJuIGw7XG59XG5cbmV4cG9ydCBkZWZhdWx0IGZ1bmN0aW9uKCkge1xuICByZXR1cm4gbGluZVJhZGlhbChsaW5lKCkuY3VydmUoY3VydmVSYWRpYWxMaW5lYXIpKTtcbn1cbiJdLCJtYXBwaW5ncyI6IkFBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTsiLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///./node_modules/vega/node_modules/d3-shape/src/lineRadial.js\n");

/***/ }),

/***/ "./node_modules/vega/node_modules/d3-shape/src/link/index.js":
/*!*******************************************************************!*\
  !*** ./node_modules/vega/node_modules/d3-shape/src/link/index.js ***!
  \*******************************************************************/
/*! exports provided: linkHorizontal, linkVertical, linkRadial */
/***/ (function(module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"linkHorizontal\", function() { return linkHorizontal; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"linkVertical\", function() { return linkVertical; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"linkRadial\", function() { return linkRadial; });\n/* harmony import */ var d3_path__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! d3-path */ \"./node_modules/vega/node_modules/d3-path/src/index.js\");\n/* harmony import */ var _array_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../array.js */ \"./node_modules/vega/node_modules/d3-shape/src/array.js\");\n/* harmony import */ var _constant_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ../constant.js */ \"./node_modules/vega/node_modules/d3-shape/src/constant.js\");\n/* harmony import */ var _point_js__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ../point.js */ \"./node_modules/vega/node_modules/d3-shape/src/point.js\");\n/* harmony import */ var _pointRadial_js__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ../pointRadial.js */ \"./node_modules/vega/node_modules/d3-shape/src/pointRadial.js\");\n\n\n\n\n\n\nfunction linkSource(d) {\n  return d.source;\n}\n\nfunction linkTarget(d) {\n  return d.target;\n}\n\nfunction link(curve) {\n  var source = linkSource,\n      target = linkTarget,\n      x = _point_js__WEBPACK_IMPORTED_MODULE_3__[\"x\"],\n      y = _point_js__WEBPACK_IMPORTED_MODULE_3__[\"y\"],\n      context = null;\n\n  function link() {\n    var buffer, argv = _array_js__WEBPACK_IMPORTED_MODULE_1__[\"slice\"].call(arguments), s = source.apply(this, argv), t = target.apply(this, argv);\n    if (!context) context = buffer = Object(d3_path__WEBPACK_IMPORTED_MODULE_0__[\"path\"])();\n    curve(context, +x.apply(this, (argv[0] = s, argv)), +y.apply(this, argv), +x.apply(this, (argv[0] = t, argv)), +y.apply(this, argv));\n    if (buffer) return context = null, buffer + \"\" || null;\n  }\n\n  link.source = function(_) {\n    return arguments.length ? (source = _, link) : source;\n  };\n\n  link.target = function(_) {\n    return arguments.length ? (target = _, link) : target;\n  };\n\n  link.x = function(_) {\n    return arguments.length ? (x = typeof _ === \"function\" ? _ : Object(_constant_js__WEBPACK_IMPORTED_MODULE_2__[\"default\"])(+_), link) : x;\n  };\n\n  link.y = function(_) {\n    return arguments.length ? (y = typeof _ === \"function\" ? _ : Object(_constant_js__WEBPACK_IMPORTED_MODULE_2__[\"default\"])(+_), link) : y;\n  };\n\n  link.context = function(_) {\n    return arguments.length ? ((context = _ == null ? null : _), link) : context;\n  };\n\n  return link;\n}\n\nfunction curveHorizontal(context, x0, y0, x1, y1) {\n  context.moveTo(x0, y0);\n  context.bezierCurveTo(x0 = (x0 + x1) / 2, y0, x0, y1, x1, y1);\n}\n\nfunction curveVertical(context, x0, y0, x1, y1) {\n  context.moveTo(x0, y0);\n  context.bezierCurveTo(x0, y0 = (y0 + y1) / 2, x1, y0, x1, y1);\n}\n\nfunction curveRadial(context, x0, y0, x1, y1) {\n  var p0 = Object(_pointRadial_js__WEBPACK_IMPORTED_MODULE_4__[\"default\"])(x0, y0),\n      p1 = Object(_pointRadial_js__WEBPACK_IMPORTED_MODULE_4__[\"default\"])(x0, y0 = (y0 + y1) / 2),\n      p2 = Object(_pointRadial_js__WEBPACK_IMPORTED_MODULE_4__[\"default\"])(x1, y0),\n      p3 = Object(_pointRadial_js__WEBPACK_IMPORTED_MODULE_4__[\"default\"])(x1, y1);\n  context.moveTo(p0[0], p0[1]);\n  context.bezierCurveTo(p1[0], p1[1], p2[0], p2[1], p3[0], p3[1]);\n}\n\nfunction linkHorizontal() {\n  return link(curveHorizontal);\n}\n\nfunction linkVertical() {\n  return link(curveVertical);\n}\n\nfunction linkRadial() {\n  var l = link(curveRadial);\n  l.angle = l.x, delete l.x;\n  l.radius = l.y, delete l.y;\n  return l;\n}\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvdmVnYS9ub2RlX21vZHVsZXMvZDMtc2hhcGUvc3JjL2xpbmsvaW5kZXguanMuanMiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvdmVnYS9ub2RlX21vZHVsZXMvZDMtc2hhcGUvc3JjL2xpbmsvaW5kZXguanM/MGI0ZSJdLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge3BhdGh9IGZyb20gXCJkMy1wYXRoXCI7XG5pbXBvcnQge3NsaWNlfSBmcm9tIFwiLi4vYXJyYXkuanNcIjtcbmltcG9ydCBjb25zdGFudCBmcm9tIFwiLi4vY29uc3RhbnQuanNcIjtcbmltcG9ydCB7eCBhcyBwb2ludFgsIHkgYXMgcG9pbnRZfSBmcm9tIFwiLi4vcG9pbnQuanNcIjtcbmltcG9ydCBwb2ludFJhZGlhbCBmcm9tIFwiLi4vcG9pbnRSYWRpYWwuanNcIjtcblxuZnVuY3Rpb24gbGlua1NvdXJjZShkKSB7XG4gIHJldHVybiBkLnNvdXJjZTtcbn1cblxuZnVuY3Rpb24gbGlua1RhcmdldChkKSB7XG4gIHJldHVybiBkLnRhcmdldDtcbn1cblxuZnVuY3Rpb24gbGluayhjdXJ2ZSkge1xuICB2YXIgc291cmNlID0gbGlua1NvdXJjZSxcbiAgICAgIHRhcmdldCA9IGxpbmtUYXJnZXQsXG4gICAgICB4ID0gcG9pbnRYLFxuICAgICAgeSA9IHBvaW50WSxcbiAgICAgIGNvbnRleHQgPSBudWxsO1xuXG4gIGZ1bmN0aW9uIGxpbmsoKSB7XG4gICAgdmFyIGJ1ZmZlciwgYXJndiA9IHNsaWNlLmNhbGwoYXJndW1lbnRzKSwgcyA9IHNvdXJjZS5hcHBseSh0aGlzLCBhcmd2KSwgdCA9IHRhcmdldC5hcHBseSh0aGlzLCBhcmd2KTtcbiAgICBpZiAoIWNvbnRleHQpIGNvbnRleHQgPSBidWZmZXIgPSBwYXRoKCk7XG4gICAgY3VydmUoY29udGV4dCwgK3guYXBwbHkodGhpcywgKGFyZ3ZbMF0gPSBzLCBhcmd2KSksICt5LmFwcGx5KHRoaXMsIGFyZ3YpLCAreC5hcHBseSh0aGlzLCAoYXJndlswXSA9IHQsIGFyZ3YpKSwgK3kuYXBwbHkodGhpcywgYXJndikpO1xuICAgIGlmIChidWZmZXIpIHJldHVybiBjb250ZXh0ID0gbnVsbCwgYnVmZmVyICsgXCJcIiB8fCBudWxsO1xuICB9XG5cbiAgbGluay5zb3VyY2UgPSBmdW5jdGlvbihfKSB7XG4gICAgcmV0dXJuIGFyZ3VtZW50cy5sZW5ndGggPyAoc291cmNlID0gXywgbGluaykgOiBzb3VyY2U7XG4gIH07XG5cbiAgbGluay50YXJnZXQgPSBmdW5jdGlvbihfKSB7XG4gICAgcmV0dXJuIGFyZ3VtZW50cy5sZW5ndGggPyAodGFyZ2V0ID0gXywgbGluaykgOiB0YXJnZXQ7XG4gIH07XG5cbiAgbGluay54ID0gZnVuY3Rpb24oXykge1xuICAgIHJldHVybiBhcmd1bWVudHMubGVuZ3RoID8gKHggPSB0eXBlb2YgXyA9PT0gXCJmdW5jdGlvblwiID8gXyA6IGNvbnN0YW50KCtfKSwgbGluaykgOiB4O1xuICB9O1xuXG4gIGxpbmsueSA9IGZ1bmN0aW9uKF8pIHtcbiAgICByZXR1cm4gYXJndW1lbnRzLmxlbmd0aCA/ICh5ID0gdHlwZW9mIF8gPT09IFwiZnVuY3Rpb25cIiA/IF8gOiBjb25zdGFudCgrXyksIGxpbmspIDogeTtcbiAgfTtcblxuICBsaW5rLmNvbnRleHQgPSBmdW5jdGlvbihfKSB7XG4gICAgcmV0dXJuIGFyZ3VtZW50cy5sZW5ndGggPyAoKGNvbnRleHQgPSBfID09IG51bGwgPyBudWxsIDogXyksIGxpbmspIDogY29udGV4dDtcbiAgfTtcblxuICByZXR1cm4gbGluaztcbn1cblxuZnVuY3Rpb24gY3VydmVIb3Jpem9udGFsKGNvbnRleHQsIHgwLCB5MCwgeDEsIHkxKSB7XG4gIGNvbnRleHQubW92ZVRvKHgwLCB5MCk7XG4gIGNvbnRleHQuYmV6aWVyQ3VydmVUbyh4MCA9ICh4MCArIHgxKSAvIDIsIHkwLCB4MCwgeTEsIHgxLCB5MSk7XG59XG5cbmZ1bmN0aW9uIGN1cnZlVmVydGljYWwoY29udGV4dCwgeDAsIHkwLCB4MSwgeTEpIHtcbiAgY29udGV4dC5tb3ZlVG8oeDAsIHkwKTtcbiAgY29udGV4dC5iZXppZXJDdXJ2ZVRvKHgwLCB5MCA9ICh5MCArIHkxKSAvIDIsIHgxLCB5MCwgeDEsIHkxKTtcbn1cblxuZnVuY3Rpb24gY3VydmVSYWRpYWwoY29udGV4dCwgeDAsIHkwLCB4MSwgeTEpIHtcbiAgdmFyIHAwID0gcG9pbnRSYWRpYWwoeDAsIHkwKSxcbiAgICAgIHAxID0gcG9pbnRSYWRpYWwoeDAsIHkwID0gKHkwICsgeTEpIC8gMiksXG4gICAgICBwMiA9IHBvaW50UmFkaWFsKHgxLCB5MCksXG4gICAgICBwMyA9IHBvaW50UmFkaWFsKHgxLCB5MSk7XG4gIGNvbnRleHQubW92ZVRvKHAwWzBdLCBwMFsxXSk7XG4gIGNvbnRleHQuYmV6aWVyQ3VydmVUbyhwMVswXSwgcDFbMV0sIHAyWzBdLCBwMlsxXSwgcDNbMF0sIHAzWzFdKTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGxpbmtIb3Jpem9udGFsKCkge1xuICByZXR1cm4gbGluayhjdXJ2ZUhvcml6b250YWwpO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gbGlua1ZlcnRpY2FsKCkge1xuICByZXR1cm4gbGluayhjdXJ2ZVZlcnRpY2FsKTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGxpbmtSYWRpYWwoKSB7XG4gIHZhciBsID0gbGluayhjdXJ2ZVJhZGlhbCk7XG4gIGwuYW5nbGUgPSBsLngsIGRlbGV0ZSBsLng7XG4gIGwucmFkaXVzID0gbC55LCBkZWxldGUgbC55O1xuICByZXR1cm4gbDtcbn1cbiJdLCJtYXBwaW5ncyI6IkFBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOyIsInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///./node_modules/vega/node_modules/d3-shape/src/link/index.js\n");

/***/ }),

/***/ "./node_modules/vega/node_modules/d3-shape/src/math.js":
/*!*************************************************************!*\
  !*** ./node_modules/vega/node_modules/d3-shape/src/math.js ***!
  \*************************************************************/
/*! exports provided: abs, atan2, cos, max, min, sin, sqrt, epsilon, pi, halfPi, tau, acos, asin */
/***/ (function(module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"abs\", function() { return abs; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"atan2\", function() { return atan2; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"cos\", function() { return cos; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"max\", function() { return max; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"min\", function() { return min; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"sin\", function() { return sin; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"sqrt\", function() { return sqrt; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"epsilon\", function() { return epsilon; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"pi\", function() { return pi; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"halfPi\", function() { return halfPi; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"tau\", function() { return tau; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"acos\", function() { return acos; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"asin\", function() { return asin; });\nvar abs = Math.abs;\nvar atan2 = Math.atan2;\nvar cos = Math.cos;\nvar max = Math.max;\nvar min = Math.min;\nvar sin = Math.sin;\nvar sqrt = Math.sqrt;\n\nvar epsilon = 1e-12;\nvar pi = Math.PI;\nvar halfPi = pi / 2;\nvar tau = 2 * pi;\n\nfunction acos(x) {\n  return x > 1 ? 0 : x < -1 ? pi : Math.acos(x);\n}\n\nfunction asin(x) {\n  return x >= 1 ? halfPi : x <= -1 ? -halfPi : Math.asin(x);\n}\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvdmVnYS9ub2RlX21vZHVsZXMvZDMtc2hhcGUvc3JjL21hdGguanMuanMiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvdmVnYS9ub2RlX21vZHVsZXMvZDMtc2hhcGUvc3JjL21hdGguanM/MWY2MCJdLCJzb3VyY2VzQ29udGVudCI6WyJleHBvcnQgdmFyIGFicyA9IE1hdGguYWJzO1xuZXhwb3J0IHZhciBhdGFuMiA9IE1hdGguYXRhbjI7XG5leHBvcnQgdmFyIGNvcyA9IE1hdGguY29zO1xuZXhwb3J0IHZhciBtYXggPSBNYXRoLm1heDtcbmV4cG9ydCB2YXIgbWluID0gTWF0aC5taW47XG5leHBvcnQgdmFyIHNpbiA9IE1hdGguc2luO1xuZXhwb3J0IHZhciBzcXJ0ID0gTWF0aC5zcXJ0O1xuXG5leHBvcnQgdmFyIGVwc2lsb24gPSAxZS0xMjtcbmV4cG9ydCB2YXIgcGkgPSBNYXRoLlBJO1xuZXhwb3J0IHZhciBoYWxmUGkgPSBwaSAvIDI7XG5leHBvcnQgdmFyIHRhdSA9IDIgKiBwaTtcblxuZXhwb3J0IGZ1bmN0aW9uIGFjb3MoeCkge1xuICByZXR1cm4geCA+IDEgPyAwIDogeCA8IC0xID8gcGkgOiBNYXRoLmFjb3MoeCk7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBhc2luKHgpIHtcbiAgcmV0dXJuIHggPj0gMSA/IGhhbGZQaSA6IHggPD0gLTEgPyAtaGFsZlBpIDogTWF0aC5hc2luKHgpO1xufVxuIl0sIm1hcHBpbmdzIjoiQUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTsiLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///./node_modules/vega/node_modules/d3-shape/src/math.js\n");

/***/ }),

/***/ "./node_modules/vega/node_modules/d3-shape/src/noop.js":
/*!*************************************************************!*\
  !*** ./node_modules/vega/node_modules/d3-shape/src/noop.js ***!
  \*************************************************************/
/*! exports provided: default */
/***/ (function(module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony default export */ __webpack_exports__[\"default\"] = (function() {});\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvdmVnYS9ub2RlX21vZHVsZXMvZDMtc2hhcGUvc3JjL25vb3AuanMuanMiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvdmVnYS9ub2RlX21vZHVsZXMvZDMtc2hhcGUvc3JjL25vb3AuanM/MGEyYiJdLCJzb3VyY2VzQ29udGVudCI6WyJleHBvcnQgZGVmYXVsdCBmdW5jdGlvbigpIHt9XG4iXSwibWFwcGluZ3MiOiJBQUFBO0FBQUE7Iiwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///./node_modules/vega/node_modules/d3-shape/src/noop.js\n");

/***/ }),

/***/ "./node_modules/vega/node_modules/d3-shape/src/offset/diverging.js":
/*!*************************************************************************!*\
  !*** ./node_modules/vega/node_modules/d3-shape/src/offset/diverging.js ***!
  \*************************************************************************/
/*! exports provided: default */
/***/ (function(module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony default export */ __webpack_exports__[\"default\"] = (function(series, order) {\n  if (!((n = series.length) > 0)) return;\n  for (var i, j = 0, d, dy, yp, yn, n, m = series[order[0]].length; j < m; ++j) {\n    for (yp = yn = 0, i = 0; i < n; ++i) {\n      if ((dy = (d = series[order[i]][j])[1] - d[0]) > 0) {\n        d[0] = yp, d[1] = yp += dy;\n      } else if (dy < 0) {\n        d[1] = yn, d[0] = yn += dy;\n      } else {\n        d[0] = 0, d[1] = dy;\n      }\n    }\n  }\n});\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvdmVnYS9ub2RlX21vZHVsZXMvZDMtc2hhcGUvc3JjL29mZnNldC9kaXZlcmdpbmcuanMuanMiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvdmVnYS9ub2RlX21vZHVsZXMvZDMtc2hhcGUvc3JjL29mZnNldC9kaXZlcmdpbmcuanM/YjZmZCJdLCJzb3VyY2VzQ29udGVudCI6WyJleHBvcnQgZGVmYXVsdCBmdW5jdGlvbihzZXJpZXMsIG9yZGVyKSB7XG4gIGlmICghKChuID0gc2VyaWVzLmxlbmd0aCkgPiAwKSkgcmV0dXJuO1xuICBmb3IgKHZhciBpLCBqID0gMCwgZCwgZHksIHlwLCB5biwgbiwgbSA9IHNlcmllc1tvcmRlclswXV0ubGVuZ3RoOyBqIDwgbTsgKytqKSB7XG4gICAgZm9yICh5cCA9IHluID0gMCwgaSA9IDA7IGkgPCBuOyArK2kpIHtcbiAgICAgIGlmICgoZHkgPSAoZCA9IHNlcmllc1tvcmRlcltpXV1bal0pWzFdIC0gZFswXSkgPiAwKSB7XG4gICAgICAgIGRbMF0gPSB5cCwgZFsxXSA9IHlwICs9IGR5O1xuICAgICAgfSBlbHNlIGlmIChkeSA8IDApIHtcbiAgICAgICAgZFsxXSA9IHluLCBkWzBdID0geW4gKz0gZHk7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICBkWzBdID0gMCwgZFsxXSA9IGR5O1xuICAgICAgfVxuICAgIH1cbiAgfVxufVxuIl0sIm1hcHBpbmdzIjoiQUFBQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7Iiwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///./node_modules/vega/node_modules/d3-shape/src/offset/diverging.js\n");

/***/ }),

/***/ "./node_modules/vega/node_modules/d3-shape/src/offset/expand.js":
/*!**********************************************************************!*\
  !*** ./node_modules/vega/node_modules/d3-shape/src/offset/expand.js ***!
  \**********************************************************************/
/*! exports provided: default */
/***/ (function(module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _none_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./none.js */ \"./node_modules/vega/node_modules/d3-shape/src/offset/none.js\");\n\n\n/* harmony default export */ __webpack_exports__[\"default\"] = (function(series, order) {\n  if (!((n = series.length) > 0)) return;\n  for (var i, n, j = 0, m = series[0].length, y; j < m; ++j) {\n    for (y = i = 0; i < n; ++i) y += series[i][j][1] || 0;\n    if (y) for (i = 0; i < n; ++i) series[i][j][1] /= y;\n  }\n  Object(_none_js__WEBPACK_IMPORTED_MODULE_0__[\"default\"])(series, order);\n});\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvdmVnYS9ub2RlX21vZHVsZXMvZDMtc2hhcGUvc3JjL29mZnNldC9leHBhbmQuanMuanMiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvdmVnYS9ub2RlX21vZHVsZXMvZDMtc2hhcGUvc3JjL29mZnNldC9leHBhbmQuanM/OWM1NSJdLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgbm9uZSBmcm9tIFwiLi9ub25lLmpzXCI7XG5cbmV4cG9ydCBkZWZhdWx0IGZ1bmN0aW9uKHNlcmllcywgb3JkZXIpIHtcbiAgaWYgKCEoKG4gPSBzZXJpZXMubGVuZ3RoKSA+IDApKSByZXR1cm47XG4gIGZvciAodmFyIGksIG4sIGogPSAwLCBtID0gc2VyaWVzWzBdLmxlbmd0aCwgeTsgaiA8IG07ICsraikge1xuICAgIGZvciAoeSA9IGkgPSAwOyBpIDwgbjsgKytpKSB5ICs9IHNlcmllc1tpXVtqXVsxXSB8fCAwO1xuICAgIGlmICh5KSBmb3IgKGkgPSAwOyBpIDwgbjsgKytpKSBzZXJpZXNbaV1bal1bMV0gLz0geTtcbiAgfVxuICBub25lKHNlcmllcywgb3JkZXIpO1xufVxuIl0sIm1hcHBpbmdzIjoiQUFBQTtBQUFBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7Iiwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///./node_modules/vega/node_modules/d3-shape/src/offset/expand.js\n");

/***/ }),

/***/ "./node_modules/vega/node_modules/d3-shape/src/offset/none.js":
/*!********************************************************************!*\
  !*** ./node_modules/vega/node_modules/d3-shape/src/offset/none.js ***!
  \********************************************************************/
/*! exports provided: default */
/***/ (function(module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony default export */ __webpack_exports__[\"default\"] = (function(series, order) {\n  if (!((n = series.length) > 1)) return;\n  for (var i = 1, j, s0, s1 = series[order[0]], n, m = s1.length; i < n; ++i) {\n    s0 = s1, s1 = series[order[i]];\n    for (j = 0; j < m; ++j) {\n      s1[j][1] += s1[j][0] = isNaN(s0[j][1]) ? s0[j][0] : s0[j][1];\n    }\n  }\n});\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvdmVnYS9ub2RlX21vZHVsZXMvZDMtc2hhcGUvc3JjL29mZnNldC9ub25lLmpzLmpzIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL3ZlZ2Evbm9kZV9tb2R1bGVzL2QzLXNoYXBlL3NyYy9vZmZzZXQvbm9uZS5qcz81OTI5Il0sInNvdXJjZXNDb250ZW50IjpbImV4cG9ydCBkZWZhdWx0IGZ1bmN0aW9uKHNlcmllcywgb3JkZXIpIHtcbiAgaWYgKCEoKG4gPSBzZXJpZXMubGVuZ3RoKSA+IDEpKSByZXR1cm47XG4gIGZvciAodmFyIGkgPSAxLCBqLCBzMCwgczEgPSBzZXJpZXNbb3JkZXJbMF1dLCBuLCBtID0gczEubGVuZ3RoOyBpIDwgbjsgKytpKSB7XG4gICAgczAgPSBzMSwgczEgPSBzZXJpZXNbb3JkZXJbaV1dO1xuICAgIGZvciAoaiA9IDA7IGogPCBtOyArK2opIHtcbiAgICAgIHMxW2pdWzFdICs9IHMxW2pdWzBdID0gaXNOYU4oczBbal1bMV0pID8gczBbal1bMF0gOiBzMFtqXVsxXTtcbiAgICB9XG4gIH1cbn1cbiJdLCJtYXBwaW5ncyI6IkFBQUE7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7Iiwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///./node_modules/vega/node_modules/d3-shape/src/offset/none.js\n");

/***/ }),

/***/ "./node_modules/vega/node_modules/d3-shape/src/offset/silhouette.js":
/*!**************************************************************************!*\
  !*** ./node_modules/vega/node_modules/d3-shape/src/offset/silhouette.js ***!
  \**************************************************************************/
/*! exports provided: default */
/***/ (function(module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _none_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./none.js */ \"./node_modules/vega/node_modules/d3-shape/src/offset/none.js\");\n\n\n/* harmony default export */ __webpack_exports__[\"default\"] = (function(series, order) {\n  if (!((n = series.length) > 0)) return;\n  for (var j = 0, s0 = series[order[0]], n, m = s0.length; j < m; ++j) {\n    for (var i = 0, y = 0; i < n; ++i) y += series[i][j][1] || 0;\n    s0[j][1] += s0[j][0] = -y / 2;\n  }\n  Object(_none_js__WEBPACK_IMPORTED_MODULE_0__[\"default\"])(series, order);\n});\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvdmVnYS9ub2RlX21vZHVsZXMvZDMtc2hhcGUvc3JjL29mZnNldC9zaWxob3VldHRlLmpzLmpzIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL3ZlZ2Evbm9kZV9tb2R1bGVzL2QzLXNoYXBlL3NyYy9vZmZzZXQvc2lsaG91ZXR0ZS5qcz85YjJkIl0sInNvdXJjZXNDb250ZW50IjpbImltcG9ydCBub25lIGZyb20gXCIuL25vbmUuanNcIjtcblxuZXhwb3J0IGRlZmF1bHQgZnVuY3Rpb24oc2VyaWVzLCBvcmRlcikge1xuICBpZiAoISgobiA9IHNlcmllcy5sZW5ndGgpID4gMCkpIHJldHVybjtcbiAgZm9yICh2YXIgaiA9IDAsIHMwID0gc2VyaWVzW29yZGVyWzBdXSwgbiwgbSA9IHMwLmxlbmd0aDsgaiA8IG07ICsraikge1xuICAgIGZvciAodmFyIGkgPSAwLCB5ID0gMDsgaSA8IG47ICsraSkgeSArPSBzZXJpZXNbaV1bal1bMV0gfHwgMDtcbiAgICBzMFtqXVsxXSArPSBzMFtqXVswXSA9IC15IC8gMjtcbiAgfVxuICBub25lKHNlcmllcywgb3JkZXIpO1xufVxuIl0sIm1hcHBpbmdzIjoiQUFBQTtBQUFBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7Iiwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///./node_modules/vega/node_modules/d3-shape/src/offset/silhouette.js\n");

/***/ }),

/***/ "./node_modules/vega/node_modules/d3-shape/src/offset/wiggle.js":
/*!**********************************************************************!*\
  !*** ./node_modules/vega/node_modules/d3-shape/src/offset/wiggle.js ***!
  \**********************************************************************/
/*! exports provided: default */
/***/ (function(module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _none_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./none.js */ \"./node_modules/vega/node_modules/d3-shape/src/offset/none.js\");\n\n\n/* harmony default export */ __webpack_exports__[\"default\"] = (function(series, order) {\n  if (!((n = series.length) > 0) || !((m = (s0 = series[order[0]]).length) > 0)) return;\n  for (var y = 0, j = 1, s0, m, n; j < m; ++j) {\n    for (var i = 0, s1 = 0, s2 = 0; i < n; ++i) {\n      var si = series[order[i]],\n          sij0 = si[j][1] || 0,\n          sij1 = si[j - 1][1] || 0,\n          s3 = (sij0 - sij1) / 2;\n      for (var k = 0; k < i; ++k) {\n        var sk = series[order[k]],\n            skj0 = sk[j][1] || 0,\n            skj1 = sk[j - 1][1] || 0;\n        s3 += skj0 - skj1;\n      }\n      s1 += sij0, s2 += s3 * sij0;\n    }\n    s0[j - 1][1] += s0[j - 1][0] = y;\n    if (s1) y -= s2 / s1;\n  }\n  s0[j - 1][1] += s0[j - 1][0] = y;\n  Object(_none_js__WEBPACK_IMPORTED_MODULE_0__[\"default\"])(series, order);\n});\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvdmVnYS9ub2RlX21vZHVsZXMvZDMtc2hhcGUvc3JjL29mZnNldC93aWdnbGUuanMuanMiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvdmVnYS9ub2RlX21vZHVsZXMvZDMtc2hhcGUvc3JjL29mZnNldC93aWdnbGUuanM/MDE5MyJdLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgbm9uZSBmcm9tIFwiLi9ub25lLmpzXCI7XG5cbmV4cG9ydCBkZWZhdWx0IGZ1bmN0aW9uKHNlcmllcywgb3JkZXIpIHtcbiAgaWYgKCEoKG4gPSBzZXJpZXMubGVuZ3RoKSA+IDApIHx8ICEoKG0gPSAoczAgPSBzZXJpZXNbb3JkZXJbMF1dKS5sZW5ndGgpID4gMCkpIHJldHVybjtcbiAgZm9yICh2YXIgeSA9IDAsIGogPSAxLCBzMCwgbSwgbjsgaiA8IG07ICsraikge1xuICAgIGZvciAodmFyIGkgPSAwLCBzMSA9IDAsIHMyID0gMDsgaSA8IG47ICsraSkge1xuICAgICAgdmFyIHNpID0gc2VyaWVzW29yZGVyW2ldXSxcbiAgICAgICAgICBzaWowID0gc2lbal1bMV0gfHwgMCxcbiAgICAgICAgICBzaWoxID0gc2lbaiAtIDFdWzFdIHx8IDAsXG4gICAgICAgICAgczMgPSAoc2lqMCAtIHNpajEpIC8gMjtcbiAgICAgIGZvciAodmFyIGsgPSAwOyBrIDwgaTsgKytrKSB7XG4gICAgICAgIHZhciBzayA9IHNlcmllc1tvcmRlcltrXV0sXG4gICAgICAgICAgICBza2owID0gc2tbal1bMV0gfHwgMCxcbiAgICAgICAgICAgIHNrajEgPSBza1tqIC0gMV1bMV0gfHwgMDtcbiAgICAgICAgczMgKz0gc2tqMCAtIHNrajE7XG4gICAgICB9XG4gICAgICBzMSArPSBzaWowLCBzMiArPSBzMyAqIHNpajA7XG4gICAgfVxuICAgIHMwW2ogLSAxXVsxXSArPSBzMFtqIC0gMV1bMF0gPSB5O1xuICAgIGlmIChzMSkgeSAtPSBzMiAvIHMxO1xuICB9XG4gIHMwW2ogLSAxXVsxXSArPSBzMFtqIC0gMV1bMF0gPSB5O1xuICBub25lKHNlcmllcywgb3JkZXIpO1xufVxuIl0sIm1hcHBpbmdzIjoiQUFBQTtBQUFBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOyIsInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///./node_modules/vega/node_modules/d3-shape/src/offset/wiggle.js\n");

/***/ }),

/***/ "./node_modules/vega/node_modules/d3-shape/src/order/appearance.js":
/*!*************************************************************************!*\
  !*** ./node_modules/vega/node_modules/d3-shape/src/order/appearance.js ***!
  \*************************************************************************/
/*! exports provided: default */
/***/ (function(module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _none_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./none.js */ \"./node_modules/vega/node_modules/d3-shape/src/order/none.js\");\n\n\n/* harmony default export */ __webpack_exports__[\"default\"] = (function(series) {\n  var peaks = series.map(peak);\n  return Object(_none_js__WEBPACK_IMPORTED_MODULE_0__[\"default\"])(series).sort(function(a, b) { return peaks[a] - peaks[b]; });\n});\n\nfunction peak(series) {\n  var i = -1, j = 0, n = series.length, vi, vj = -Infinity;\n  while (++i < n) if ((vi = +series[i][1]) > vj) vj = vi, j = i;\n  return j;\n}\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvdmVnYS9ub2RlX21vZHVsZXMvZDMtc2hhcGUvc3JjL29yZGVyL2FwcGVhcmFuY2UuanMuanMiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvdmVnYS9ub2RlX21vZHVsZXMvZDMtc2hhcGUvc3JjL29yZGVyL2FwcGVhcmFuY2UuanM/NzY0OCJdLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgbm9uZSBmcm9tIFwiLi9ub25lLmpzXCI7XG5cbmV4cG9ydCBkZWZhdWx0IGZ1bmN0aW9uKHNlcmllcykge1xuICB2YXIgcGVha3MgPSBzZXJpZXMubWFwKHBlYWspO1xuICByZXR1cm4gbm9uZShzZXJpZXMpLnNvcnQoZnVuY3Rpb24oYSwgYikgeyByZXR1cm4gcGVha3NbYV0gLSBwZWFrc1tiXTsgfSk7XG59XG5cbmZ1bmN0aW9uIHBlYWsoc2VyaWVzKSB7XG4gIHZhciBpID0gLTEsIGogPSAwLCBuID0gc2VyaWVzLmxlbmd0aCwgdmksIHZqID0gLUluZmluaXR5O1xuICB3aGlsZSAoKytpIDwgbikgaWYgKCh2aSA9ICtzZXJpZXNbaV1bMV0pID4gdmopIHZqID0gdmksIGogPSBpO1xuICByZXR1cm4gajtcbn1cbiJdLCJtYXBwaW5ncyI6IkFBQUE7QUFBQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTsiLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///./node_modules/vega/node_modules/d3-shape/src/order/appearance.js\n");

/***/ }),

/***/ "./node_modules/vega/node_modules/d3-shape/src/order/ascending.js":
/*!************************************************************************!*\
  !*** ./node_modules/vega/node_modules/d3-shape/src/order/ascending.js ***!
  \************************************************************************/
/*! exports provided: default, sum */
/***/ (function(module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"sum\", function() { return sum; });\n/* harmony import */ var _none_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./none.js */ \"./node_modules/vega/node_modules/d3-shape/src/order/none.js\");\n\n\n/* harmony default export */ __webpack_exports__[\"default\"] = (function(series) {\n  var sums = series.map(sum);\n  return Object(_none_js__WEBPACK_IMPORTED_MODULE_0__[\"default\"])(series).sort(function(a, b) { return sums[a] - sums[b]; });\n});\n\nfunction sum(series) {\n  var s = 0, i = -1, n = series.length, v;\n  while (++i < n) if (v = +series[i][1]) s += v;\n  return s;\n}\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvdmVnYS9ub2RlX21vZHVsZXMvZDMtc2hhcGUvc3JjL29yZGVyL2FzY2VuZGluZy5qcy5qcyIsInNvdXJjZXMiOlsid2VicGFjazovLy8uL25vZGVfbW9kdWxlcy92ZWdhL25vZGVfbW9kdWxlcy9kMy1zaGFwZS9zcmMvb3JkZXIvYXNjZW5kaW5nLmpzPzNhMDkiXSwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IG5vbmUgZnJvbSBcIi4vbm9uZS5qc1wiO1xuXG5leHBvcnQgZGVmYXVsdCBmdW5jdGlvbihzZXJpZXMpIHtcbiAgdmFyIHN1bXMgPSBzZXJpZXMubWFwKHN1bSk7XG4gIHJldHVybiBub25lKHNlcmllcykuc29ydChmdW5jdGlvbihhLCBiKSB7IHJldHVybiBzdW1zW2FdIC0gc3Vtc1tiXTsgfSk7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBzdW0oc2VyaWVzKSB7XG4gIHZhciBzID0gMCwgaSA9IC0xLCBuID0gc2VyaWVzLmxlbmd0aCwgdjtcbiAgd2hpbGUgKCsraSA8IG4pIGlmICh2ID0gK3Nlcmllc1tpXVsxXSkgcyArPSB2O1xuICByZXR1cm4gcztcbn1cbiJdLCJtYXBwaW5ncyI6IkFBQUE7QUFBQTtBQUFBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOyIsInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///./node_modules/vega/node_modules/d3-shape/src/order/ascending.js\n");

/***/ }),

/***/ "./node_modules/vega/node_modules/d3-shape/src/order/descending.js":
/*!*************************************************************************!*\
  !*** ./node_modules/vega/node_modules/d3-shape/src/order/descending.js ***!
  \*************************************************************************/
/*! exports provided: default */
/***/ (function(module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _ascending_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./ascending.js */ \"./node_modules/vega/node_modules/d3-shape/src/order/ascending.js\");\n\n\n/* harmony default export */ __webpack_exports__[\"default\"] = (function(series) {\n  return Object(_ascending_js__WEBPACK_IMPORTED_MODULE_0__[\"default\"])(series).reverse();\n});\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvdmVnYS9ub2RlX21vZHVsZXMvZDMtc2hhcGUvc3JjL29yZGVyL2Rlc2NlbmRpbmcuanMuanMiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvdmVnYS9ub2RlX21vZHVsZXMvZDMtc2hhcGUvc3JjL29yZGVyL2Rlc2NlbmRpbmcuanM/NTVmZiJdLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgYXNjZW5kaW5nIGZyb20gXCIuL2FzY2VuZGluZy5qc1wiO1xuXG5leHBvcnQgZGVmYXVsdCBmdW5jdGlvbihzZXJpZXMpIHtcbiAgcmV0dXJuIGFzY2VuZGluZyhzZXJpZXMpLnJldmVyc2UoKTtcbn1cbiJdLCJtYXBwaW5ncyI6IkFBQUE7QUFBQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7Iiwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///./node_modules/vega/node_modules/d3-shape/src/order/descending.js\n");

/***/ }),

/***/ "./node_modules/vega/node_modules/d3-shape/src/order/insideOut.js":
/*!************************************************************************!*\
  !*** ./node_modules/vega/node_modules/d3-shape/src/order/insideOut.js ***!
  \************************************************************************/
/*! exports provided: default */
/***/ (function(module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _appearance_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./appearance.js */ \"./node_modules/vega/node_modules/d3-shape/src/order/appearance.js\");\n/* harmony import */ var _ascending_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./ascending.js */ \"./node_modules/vega/node_modules/d3-shape/src/order/ascending.js\");\n\n\n\n/* harmony default export */ __webpack_exports__[\"default\"] = (function(series) {\n  var n = series.length,\n      i,\n      j,\n      sums = series.map(_ascending_js__WEBPACK_IMPORTED_MODULE_1__[\"sum\"]),\n      order = Object(_appearance_js__WEBPACK_IMPORTED_MODULE_0__[\"default\"])(series),\n      top = 0,\n      bottom = 0,\n      tops = [],\n      bottoms = [];\n\n  for (i = 0; i < n; ++i) {\n    j = order[i];\n    if (top < bottom) {\n      top += sums[j];\n      tops.push(j);\n    } else {\n      bottom += sums[j];\n      bottoms.push(j);\n    }\n  }\n\n  return bottoms.reverse().concat(tops);\n});\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvdmVnYS9ub2RlX21vZHVsZXMvZDMtc2hhcGUvc3JjL29yZGVyL2luc2lkZU91dC5qcy5qcyIsInNvdXJjZXMiOlsid2VicGFjazovLy8uL25vZGVfbW9kdWxlcy92ZWdhL25vZGVfbW9kdWxlcy9kMy1zaGFwZS9zcmMvb3JkZXIvaW5zaWRlT3V0LmpzPzlkYmEiXSwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IGFwcGVhcmFuY2UgZnJvbSBcIi4vYXBwZWFyYW5jZS5qc1wiO1xuaW1wb3J0IHtzdW19IGZyb20gXCIuL2FzY2VuZGluZy5qc1wiO1xuXG5leHBvcnQgZGVmYXVsdCBmdW5jdGlvbihzZXJpZXMpIHtcbiAgdmFyIG4gPSBzZXJpZXMubGVuZ3RoLFxuICAgICAgaSxcbiAgICAgIGosXG4gICAgICBzdW1zID0gc2VyaWVzLm1hcChzdW0pLFxuICAgICAgb3JkZXIgPSBhcHBlYXJhbmNlKHNlcmllcyksXG4gICAgICB0b3AgPSAwLFxuICAgICAgYm90dG9tID0gMCxcbiAgICAgIHRvcHMgPSBbXSxcbiAgICAgIGJvdHRvbXMgPSBbXTtcblxuICBmb3IgKGkgPSAwOyBpIDwgbjsgKytpKSB7XG4gICAgaiA9IG9yZGVyW2ldO1xuICAgIGlmICh0b3AgPCBib3R0b20pIHtcbiAgICAgIHRvcCArPSBzdW1zW2pdO1xuICAgICAgdG9wcy5wdXNoKGopO1xuICAgIH0gZWxzZSB7XG4gICAgICBib3R0b20gKz0gc3Vtc1tqXTtcbiAgICAgIGJvdHRvbXMucHVzaChqKTtcbiAgICB9XG4gIH1cblxuICByZXR1cm4gYm90dG9tcy5yZXZlcnNlKCkuY29uY2F0KHRvcHMpO1xufVxuIl0sIm1hcHBpbmdzIjoiQUFBQTtBQUFBO0FBQUE7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7Iiwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///./node_modules/vega/node_modules/d3-shape/src/order/insideOut.js\n");

/***/ }),

/***/ "./node_modules/vega/node_modules/d3-shape/src/order/none.js":
/*!*******************************************************************!*\
  !*** ./node_modules/vega/node_modules/d3-shape/src/order/none.js ***!
  \*******************************************************************/
/*! exports provided: default */
/***/ (function(module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony default export */ __webpack_exports__[\"default\"] = (function(series) {\n  var n = series.length, o = new Array(n);\n  while (--n >= 0) o[n] = n;\n  return o;\n});\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvdmVnYS9ub2RlX21vZHVsZXMvZDMtc2hhcGUvc3JjL29yZGVyL25vbmUuanMuanMiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvdmVnYS9ub2RlX21vZHVsZXMvZDMtc2hhcGUvc3JjL29yZGVyL25vbmUuanM/MjY3MyJdLCJzb3VyY2VzQ29udGVudCI6WyJleHBvcnQgZGVmYXVsdCBmdW5jdGlvbihzZXJpZXMpIHtcbiAgdmFyIG4gPSBzZXJpZXMubGVuZ3RoLCBvID0gbmV3IEFycmF5KG4pO1xuICB3aGlsZSAoLS1uID49IDApIG9bbl0gPSBuO1xuICByZXR1cm4gbztcbn1cbiJdLCJtYXBwaW5ncyI6IkFBQUE7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOyIsInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///./node_modules/vega/node_modules/d3-shape/src/order/none.js\n");

/***/ }),

/***/ "./node_modules/vega/node_modules/d3-shape/src/order/reverse.js":
/*!**********************************************************************!*\
  !*** ./node_modules/vega/node_modules/d3-shape/src/order/reverse.js ***!
  \**********************************************************************/
/*! exports provided: default */
/***/ (function(module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _none_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./none.js */ \"./node_modules/vega/node_modules/d3-shape/src/order/none.js\");\n\n\n/* harmony default export */ __webpack_exports__[\"default\"] = (function(series) {\n  return Object(_none_js__WEBPACK_IMPORTED_MODULE_0__[\"default\"])(series).reverse();\n});\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvdmVnYS9ub2RlX21vZHVsZXMvZDMtc2hhcGUvc3JjL29yZGVyL3JldmVyc2UuanMuanMiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvdmVnYS9ub2RlX21vZHVsZXMvZDMtc2hhcGUvc3JjL29yZGVyL3JldmVyc2UuanM/YWMwNiJdLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgbm9uZSBmcm9tIFwiLi9ub25lLmpzXCI7XG5cbmV4cG9ydCBkZWZhdWx0IGZ1bmN0aW9uKHNlcmllcykge1xuICByZXR1cm4gbm9uZShzZXJpZXMpLnJldmVyc2UoKTtcbn1cbiJdLCJtYXBwaW5ncyI6IkFBQUE7QUFBQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7Iiwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///./node_modules/vega/node_modules/d3-shape/src/order/reverse.js\n");

/***/ }),

/***/ "./node_modules/vega/node_modules/d3-shape/src/pie.js":
/*!************************************************************!*\
  !*** ./node_modules/vega/node_modules/d3-shape/src/pie.js ***!
  \************************************************************/
/*! exports provided: default */
/***/ (function(module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _array_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./array.js */ \"./node_modules/vega/node_modules/d3-shape/src/array.js\");\n/* harmony import */ var _constant_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./constant.js */ \"./node_modules/vega/node_modules/d3-shape/src/constant.js\");\n/* harmony import */ var _descending_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./descending.js */ \"./node_modules/vega/node_modules/d3-shape/src/descending.js\");\n/* harmony import */ var _identity_js__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ./identity.js */ \"./node_modules/vega/node_modules/d3-shape/src/identity.js\");\n/* harmony import */ var _math_js__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ./math.js */ \"./node_modules/vega/node_modules/d3-shape/src/math.js\");\n\n\n\n\n\n\n/* harmony default export */ __webpack_exports__[\"default\"] = (function() {\n  var value = _identity_js__WEBPACK_IMPORTED_MODULE_3__[\"default\"],\n      sortValues = _descending_js__WEBPACK_IMPORTED_MODULE_2__[\"default\"],\n      sort = null,\n      startAngle = Object(_constant_js__WEBPACK_IMPORTED_MODULE_1__[\"default\"])(0),\n      endAngle = Object(_constant_js__WEBPACK_IMPORTED_MODULE_1__[\"default\"])(_math_js__WEBPACK_IMPORTED_MODULE_4__[\"tau\"]),\n      padAngle = Object(_constant_js__WEBPACK_IMPORTED_MODULE_1__[\"default\"])(0);\n\n  function pie(data) {\n    var i,\n        n = (data = Object(_array_js__WEBPACK_IMPORTED_MODULE_0__[\"default\"])(data)).length,\n        j,\n        k,\n        sum = 0,\n        index = new Array(n),\n        arcs = new Array(n),\n        a0 = +startAngle.apply(this, arguments),\n        da = Math.min(_math_js__WEBPACK_IMPORTED_MODULE_4__[\"tau\"], Math.max(-_math_js__WEBPACK_IMPORTED_MODULE_4__[\"tau\"], endAngle.apply(this, arguments) - a0)),\n        a1,\n        p = Math.min(Math.abs(da) / n, padAngle.apply(this, arguments)),\n        pa = p * (da < 0 ? -1 : 1),\n        v;\n\n    for (i = 0; i < n; ++i) {\n      if ((v = arcs[index[i] = i] = +value(data[i], i, data)) > 0) {\n        sum += v;\n      }\n    }\n\n    // Optionally sort the arcs by previously-computed values or by data.\n    if (sortValues != null) index.sort(function(i, j) { return sortValues(arcs[i], arcs[j]); });\n    else if (sort != null) index.sort(function(i, j) { return sort(data[i], data[j]); });\n\n    // Compute the arcs! They are stored in the original data's order.\n    for (i = 0, k = sum ? (da - n * pa) / sum : 0; i < n; ++i, a0 = a1) {\n      j = index[i], v = arcs[j], a1 = a0 + (v > 0 ? v * k : 0) + pa, arcs[j] = {\n        data: data[j],\n        index: i,\n        value: v,\n        startAngle: a0,\n        endAngle: a1,\n        padAngle: p\n      };\n    }\n\n    return arcs;\n  }\n\n  pie.value = function(_) {\n    return arguments.length ? (value = typeof _ === \"function\" ? _ : Object(_constant_js__WEBPACK_IMPORTED_MODULE_1__[\"default\"])(+_), pie) : value;\n  };\n\n  pie.sortValues = function(_) {\n    return arguments.length ? (sortValues = _, sort = null, pie) : sortValues;\n  };\n\n  pie.sort = function(_) {\n    return arguments.length ? (sort = _, sortValues = null, pie) : sort;\n  };\n\n  pie.startAngle = function(_) {\n    return arguments.length ? (startAngle = typeof _ === \"function\" ? _ : Object(_constant_js__WEBPACK_IMPORTED_MODULE_1__[\"default\"])(+_), pie) : startAngle;\n  };\n\n  pie.endAngle = function(_) {\n    return arguments.length ? (endAngle = typeof _ === \"function\" ? _ : Object(_constant_js__WEBPACK_IMPORTED_MODULE_1__[\"default\"])(+_), pie) : endAngle;\n  };\n\n  pie.padAngle = function(_) {\n    return arguments.length ? (padAngle = typeof _ === \"function\" ? _ : Object(_constant_js__WEBPACK_IMPORTED_MODULE_1__[\"default\"])(+_), pie) : padAngle;\n  };\n\n  return pie;\n});\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,[encoded data, 4184 characters]\n//# sourceURL=webpack-internal:///./node_modules/vega/node_modules/d3-shape/src/pie.js\n");

/***/ }),

/***/ "./node_modules/vega/node_modules/d3-shape/src/point.js":
/*!**************************************************************!*\
  !*** ./node_modules/vega/node_modules/d3-shape/src/point.js ***!
  \**************************************************************/
/*! exports provided: x, y */
/***/ (function(module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"x\", function() { return x; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"y\", function() { return y; });\nfunction x(p) {\n  return p[0];\n}\n\nfunction y(p) {\n  return p[1];\n}\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvdmVnYS9ub2RlX21vZHVsZXMvZDMtc2hhcGUvc3JjL3BvaW50LmpzLmpzIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL3ZlZ2Evbm9kZV9tb2R1bGVzL2QzLXNoYXBlL3NyYy9wb2ludC5qcz83ZDg0Il0sInNvdXJjZXNDb250ZW50IjpbImV4cG9ydCBmdW5jdGlvbiB4KHApIHtcbiAgcmV0dXJuIHBbMF07XG59XG5cbmV4cG9ydCBmdW5jdGlvbiB5KHApIHtcbiAgcmV0dXJuIHBbMV07XG59XG4iXSwibWFwcGluZ3MiOiJBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOyIsInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///./node_modules/vega/node_modules/d3-shape/src/point.js\n");

/***/ }),

/***/ "./node_modules/vega/node_modules/d3-shape/src/pointRadial.js":
/*!********************************************************************!*\
  !*** ./node_modules/vega/node_modules/d3-shape/src/pointRadial.js ***!
  \********************************************************************/
/*! exports provided: default */
/***/ (function(module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony default export */ __webpack_exports__[\"default\"] = (function(x, y) {\n  return [(y = +y) * Math.cos(x -= Math.PI / 2), y * Math.sin(x)];\n});\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvdmVnYS9ub2RlX21vZHVsZXMvZDMtc2hhcGUvc3JjL3BvaW50UmFkaWFsLmpzLmpzIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL3ZlZ2Evbm9kZV9tb2R1bGVzL2QzLXNoYXBlL3NyYy9wb2ludFJhZGlhbC5qcz9lYmJmIl0sInNvdXJjZXNDb250ZW50IjpbImV4cG9ydCBkZWZhdWx0IGZ1bmN0aW9uKHgsIHkpIHtcbiAgcmV0dXJuIFsoeSA9ICt5KSAqIE1hdGguY29zKHggLT0gTWF0aC5QSSAvIDIpLCB5ICogTWF0aC5zaW4oeCldO1xufVxuIl0sIm1hcHBpbmdzIjoiQUFBQTtBQUFBO0FBQ0E7QUFDQTsiLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///./node_modules/vega/node_modules/d3-shape/src/pointRadial.js\n");

/***/ }),

/***/ "./node_modules/vega/node_modules/d3-shape/src/stack.js":
/*!**************************************************************!*\
  !*** ./node_modules/vega/node_modules/d3-shape/src/stack.js ***!
  \**************************************************************/
/*! exports provided: default */
/***/ (function(module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _array_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./array.js */ \"./node_modules/vega/node_modules/d3-shape/src/array.js\");\n/* harmony import */ var _constant_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./constant.js */ \"./node_modules/vega/node_modules/d3-shape/src/constant.js\");\n/* harmony import */ var _offset_none_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./offset/none.js */ \"./node_modules/vega/node_modules/d3-shape/src/offset/none.js\");\n/* harmony import */ var _order_none_js__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ./order/none.js */ \"./node_modules/vega/node_modules/d3-shape/src/order/none.js\");\n\n\n\n\n\nfunction stackValue(d, key) {\n  return d[key];\n}\n\nfunction stackSeries(key) {\n  const series = [];\n  series.key = key;\n  return series;\n}\n\n/* harmony default export */ __webpack_exports__[\"default\"] = (function() {\n  var keys = Object(_constant_js__WEBPACK_IMPORTED_MODULE_1__[\"default\"])([]),\n      order = _order_none_js__WEBPACK_IMPORTED_MODULE_3__[\"default\"],\n      offset = _offset_none_js__WEBPACK_IMPORTED_MODULE_2__[\"default\"],\n      value = stackValue;\n\n  function stack(data) {\n    var sz = Array.from(keys.apply(this, arguments), stackSeries),\n        i, n = sz.length, j = -1,\n        oz;\n\n    for (const d of data) {\n      for (i = 0, ++j; i < n; ++i) {\n        (sz[i][j] = [0, +value(d, sz[i].key, j, data)]).data = d;\n      }\n    }\n\n    for (i = 0, oz = Object(_array_js__WEBPACK_IMPORTED_MODULE_0__[\"default\"])(order(sz)); i < n; ++i) {\n      sz[oz[i]].index = i;\n    }\n\n    offset(sz, oz);\n    return sz;\n  }\n\n  stack.keys = function(_) {\n    return arguments.length ? (keys = typeof _ === \"function\" ? _ : Object(_constant_js__WEBPACK_IMPORTED_MODULE_1__[\"default\"])(Array.from(_)), stack) : keys;\n  };\n\n  stack.value = function(_) {\n    return arguments.length ? (value = typeof _ === \"function\" ? _ : Object(_constant_js__WEBPACK_IMPORTED_MODULE_1__[\"default\"])(+_), stack) : value;\n  };\n\n  stack.order = function(_) {\n    return arguments.length ? (order = _ == null ? _order_none_js__WEBPACK_IMPORTED_MODULE_3__[\"default\"] : typeof _ === \"function\" ? _ : Object(_constant_js__WEBPACK_IMPORTED_MODULE_1__[\"default\"])(Array.from(_)), stack) : order;\n  };\n\n  stack.offset = function(_) {\n    return arguments.length ? (offset = _ == null ? _offset_none_js__WEBPACK_IMPORTED_MODULE_2__[\"default\"] : _, stack) : offset;\n  };\n\n  return stack;\n});\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvdmVnYS9ub2RlX21vZHVsZXMvZDMtc2hhcGUvc3JjL3N0YWNrLmpzLmpzIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL3ZlZ2Evbm9kZV9tb2R1bGVzL2QzLXNoYXBlL3NyYy9zdGFjay5qcz84MWUzIl0sInNvdXJjZXNDb250ZW50IjpbImltcG9ydCBhcnJheSBmcm9tIFwiLi9hcnJheS5qc1wiO1xuaW1wb3J0IGNvbnN0YW50IGZyb20gXCIuL2NvbnN0YW50LmpzXCI7XG5pbXBvcnQgb2Zmc2V0Tm9uZSBmcm9tIFwiLi9vZmZzZXQvbm9uZS5qc1wiO1xuaW1wb3J0IG9yZGVyTm9uZSBmcm9tIFwiLi9vcmRlci9ub25lLmpzXCI7XG5cbmZ1bmN0aW9uIHN0YWNrVmFsdWUoZCwga2V5KSB7XG4gIHJldHVybiBkW2tleV07XG59XG5cbmZ1bmN0aW9uIHN0YWNrU2VyaWVzKGtleSkge1xuICBjb25zdCBzZXJpZXMgPSBbXTtcbiAgc2VyaWVzLmtleSA9IGtleTtcbiAgcmV0dXJuIHNlcmllcztcbn1cblxuZXhwb3J0IGRlZmF1bHQgZnVuY3Rpb24oKSB7XG4gIHZhciBrZXlzID0gY29uc3RhbnQoW10pLFxuICAgICAgb3JkZXIgPSBvcmRlck5vbmUsXG4gICAgICBvZmZzZXQgPSBvZmZzZXROb25lLFxuICAgICAgdmFsdWUgPSBzdGFja1ZhbHVlO1xuXG4gIGZ1bmN0aW9uIHN0YWNrKGRhdGEpIHtcbiAgICB2YXIgc3ogPSBBcnJheS5mcm9tKGtleXMuYXBwbHkodGhpcywgYXJndW1lbnRzKSwgc3RhY2tTZXJpZXMpLFxuICAgICAgICBpLCBuID0gc3oubGVuZ3RoLCBqID0gLTEsXG4gICAgICAgIG96O1xuXG4gICAgZm9yIChjb25zdCBkIG9mIGRhdGEpIHtcbiAgICAgIGZvciAoaSA9IDAsICsrajsgaSA8IG47ICsraSkge1xuICAgICAgICAoc3pbaV1bal0gPSBbMCwgK3ZhbHVlKGQsIHN6W2ldLmtleSwgaiwgZGF0YSldKS5kYXRhID0gZDtcbiAgICAgIH1cbiAgICB9XG5cbiAgICBmb3IgKGkgPSAwLCBveiA9IGFycmF5KG9yZGVyKHN6KSk7IGkgPCBuOyArK2kpIHtcbiAgICAgIHN6W296W2ldXS5pbmRleCA9IGk7XG4gICAgfVxuXG4gICAgb2Zmc2V0KHN6LCBveik7XG4gICAgcmV0dXJuIHN6O1xuICB9XG5cbiAgc3RhY2sua2V5cyA9IGZ1bmN0aW9uKF8pIHtcbiAgICByZXR1cm4gYXJndW1lbnRzLmxlbmd0aCA/IChrZXlzID0gdHlwZW9mIF8gPT09IFwiZnVuY3Rpb25cIiA/IF8gOiBjb25zdGFudChBcnJheS5mcm9tKF8pKSwgc3RhY2spIDoga2V5cztcbiAgfTtcblxuICBzdGFjay52YWx1ZSA9IGZ1bmN0aW9uKF8pIHtcbiAgICByZXR1cm4gYXJndW1lbnRzLmxlbmd0aCA/ICh2YWx1ZSA9IHR5cGVvZiBfID09PSBcImZ1bmN0aW9uXCIgPyBfIDogY29uc3RhbnQoK18pLCBzdGFjaykgOiB2YWx1ZTtcbiAgfTtcblxuICBzdGFjay5vcmRlciA9IGZ1bmN0aW9uKF8pIHtcbiAgICByZXR1cm4gYXJndW1lbnRzLmxlbmd0aCA/IChvcmRlciA9IF8gPT0gbnVsbCA/IG9yZGVyTm9uZSA6IHR5cGVvZiBfID09PSBcImZ1bmN0aW9uXCIgPyBfIDogY29uc3RhbnQoQXJyYXkuZnJvbShfKSksIHN0YWNrKSA6IG9yZGVyO1xuICB9O1xuXG4gIHN0YWNrLm9mZnNldCA9IGZ1bmN0aW9uKF8pIHtcbiAgICByZXR1cm4gYXJndW1lbnRzLmxlbmd0aCA/IChvZmZzZXQgPSBfID09IG51bGwgPyBvZmZzZXROb25lIDogXywgc3RhY2spIDogb2Zmc2V0O1xuICB9O1xuXG4gIHJldHVybiBzdGFjaztcbn1cbiJdLCJtYXBwaW5ncyI6IkFBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOyIsInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///./node_modules/vega/node_modules/d3-shape/src/stack.js\n");

/***/ }),

/***/ "./node_modules/vega/node_modules/d3-shape/src/symbol.js":
/*!***************************************************************!*\
  !*** ./node_modules/vega/node_modules/d3-shape/src/symbol.js ***!
  \***************************************************************/
/*! exports provided: symbols, default */
/***/ (function(module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"symbols\", function() { return symbols; });\n/* harmony import */ var d3_path__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! d3-path */ \"./node_modules/vega/node_modules/d3-path/src/index.js\");\n/* harmony import */ var _symbol_circle_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./symbol/circle.js */ \"./node_modules/vega/node_modules/d3-shape/src/symbol/circle.js\");\n/* harmony import */ var _symbol_cross_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./symbol/cross.js */ \"./node_modules/vega/node_modules/d3-shape/src/symbol/cross.js\");\n/* harmony import */ var _symbol_diamond_js__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ./symbol/diamond.js */ \"./node_modules/vega/node_modules/d3-shape/src/symbol/diamond.js\");\n/* harmony import */ var _symbol_star_js__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ./symbol/star.js */ \"./node_modules/vega/node_modules/d3-shape/src/symbol/star.js\");\n/* harmony import */ var _symbol_square_js__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! ./symbol/square.js */ \"./node_modules/vega/node_modules/d3-shape/src/symbol/square.js\");\n/* harmony import */ var _symbol_triangle_js__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! ./symbol/triangle.js */ \"./node_modules/vega/node_modules/d3-shape/src/symbol/triangle.js\");\n/* harmony import */ var _symbol_wye_js__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! ./symbol/wye.js */ \"./node_modules/vega/node_modules/d3-shape/src/symbol/wye.js\");\n/* harmony import */ var _constant_js__WEBPACK_IMPORTED_MODULE_8__ = __webpack_require__(/*! ./constant.js */ \"./node_modules/vega/node_modules/d3-shape/src/constant.js\");\n\n\n\n\n\n\n\n\n\n\nvar symbols = [\n  _symbol_circle_js__WEBPACK_IMPORTED_MODULE_1__[\"default\"],\n  _symbol_cross_js__WEBPACK_IMPORTED_MODULE_2__[\"default\"],\n  _symbol_diamond_js__WEBPACK_IMPORTED_MODULE_3__[\"default\"],\n  _symbol_square_js__WEBPACK_IMPORTED_MODULE_5__[\"default\"],\n  _symbol_star_js__WEBPACK_IMPORTED_MODULE_4__[\"default\"],\n  _symbol_triangle_js__WEBPACK_IMPORTED_MODULE_6__[\"default\"],\n  _symbol_wye_js__WEBPACK_IMPORTED_MODULE_7__[\"default\"]\n];\n\n/* harmony default export */ __webpack_exports__[\"default\"] = (function(type, size) {\n  var context = null;\n  type = typeof type === \"function\" ? type : Object(_constant_js__WEBPACK_IMPORTED_MODULE_8__[\"default\"])(type || _symbol_circle_js__WEBPACK_IMPORTED_MODULE_1__[\"default\"]);\n  size = typeof size === \"function\" ? size : Object(_constant_js__WEBPACK_IMPORTED_MODULE_8__[\"default\"])(size === undefined ? 64 : +size);\n\n  function symbol() {\n    var buffer;\n    if (!context) context = buffer = Object(d3_path__WEBPACK_IMPORTED_MODULE_0__[\"path\"])();\n    type.apply(this, arguments).draw(context, +size.apply(this, arguments));\n    if (buffer) return context = null, buffer + \"\" || null;\n  }\n\n  symbol.type = function(_) {\n    return arguments.length ? (type = typeof _ === \"function\" ? _ : Object(_constant_js__WEBPACK_IMPORTED_MODULE_8__[\"default\"])(_), symbol) : type;\n  };\n\n  symbol.size = function(_) {\n    return arguments.length ? (size = typeof _ === \"function\" ? _ : Object(_constant_js__WEBPACK_IMPORTED_MODULE_8__[\"default\"])(+_), symbol) : size;\n  };\n\n  symbol.context = function(_) {\n    return arguments.length ? (context = _ == null ? null : _, symbol) : context;\n  };\n\n  return symbol;\n});\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvdmVnYS9ub2RlX21vZHVsZXMvZDMtc2hhcGUvc3JjL3N5bWJvbC5qcy5qcyIsInNvdXJjZXMiOlsid2VicGFjazovLy8uL25vZGVfbW9kdWxlcy92ZWdhL25vZGVfbW9kdWxlcy9kMy1zaGFwZS9zcmMvc3ltYm9sLmpzP2VhOGYiXSwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtwYXRofSBmcm9tIFwiZDMtcGF0aFwiO1xuaW1wb3J0IGNpcmNsZSBmcm9tIFwiLi9zeW1ib2wvY2lyY2xlLmpzXCI7XG5pbXBvcnQgY3Jvc3MgZnJvbSBcIi4vc3ltYm9sL2Nyb3NzLmpzXCI7XG5pbXBvcnQgZGlhbW9uZCBmcm9tIFwiLi9zeW1ib2wvZGlhbW9uZC5qc1wiO1xuaW1wb3J0IHN0YXIgZnJvbSBcIi4vc3ltYm9sL3N0YXIuanNcIjtcbmltcG9ydCBzcXVhcmUgZnJvbSBcIi4vc3ltYm9sL3NxdWFyZS5qc1wiO1xuaW1wb3J0IHRyaWFuZ2xlIGZyb20gXCIuL3N5bWJvbC90cmlhbmdsZS5qc1wiO1xuaW1wb3J0IHd5ZSBmcm9tIFwiLi9zeW1ib2wvd3llLmpzXCI7XG5pbXBvcnQgY29uc3RhbnQgZnJvbSBcIi4vY29uc3RhbnQuanNcIjtcblxuZXhwb3J0IHZhciBzeW1ib2xzID0gW1xuICBjaXJjbGUsXG4gIGNyb3NzLFxuICBkaWFtb25kLFxuICBzcXVhcmUsXG4gIHN0YXIsXG4gIHRyaWFuZ2xlLFxuICB3eWVcbl07XG5cbmV4cG9ydCBkZWZhdWx0IGZ1bmN0aW9uKHR5cGUsIHNpemUpIHtcbiAgdmFyIGNvbnRleHQgPSBudWxsO1xuICB0eXBlID0gdHlwZW9mIHR5cGUgPT09IFwiZnVuY3Rpb25cIiA/IHR5cGUgOiBjb25zdGFudCh0eXBlIHx8IGNpcmNsZSk7XG4gIHNpemUgPSB0eXBlb2Ygc2l6ZSA9PT0gXCJmdW5jdGlvblwiID8gc2l6ZSA6IGNvbnN0YW50KHNpemUgPT09IHVuZGVmaW5lZCA/IDY0IDogK3NpemUpO1xuXG4gIGZ1bmN0aW9uIHN5bWJvbCgpIHtcbiAgICB2YXIgYnVmZmVyO1xuICAgIGlmICghY29udGV4dCkgY29udGV4dCA9IGJ1ZmZlciA9IHBhdGgoKTtcbiAgICB0eXBlLmFwcGx5KHRoaXMsIGFyZ3VtZW50cykuZHJhdyhjb250ZXh0LCArc2l6ZS5hcHBseSh0aGlzLCBhcmd1bWVudHMpKTtcbiAgICBpZiAoYnVmZmVyKSByZXR1cm4gY29udGV4dCA9IG51bGwsIGJ1ZmZlciArIFwiXCIgfHwgbnVsbDtcbiAgfVxuXG4gIHN5bWJvbC50eXBlID0gZnVuY3Rpb24oXykge1xuICAgIHJldHVybiBhcmd1bWVudHMubGVuZ3RoID8gKHR5cGUgPSB0eXBlb2YgXyA9PT0gXCJmdW5jdGlvblwiID8gXyA6IGNvbnN0YW50KF8pLCBzeW1ib2wpIDogdHlwZTtcbiAgfTtcblxuICBzeW1ib2wuc2l6ZSA9IGZ1bmN0aW9uKF8pIHtcbiAgICByZXR1cm4gYXJndW1lbnRzLmxlbmd0aCA/IChzaXplID0gdHlwZW9mIF8gPT09IFwiZnVuY3Rpb25cIiA/IF8gOiBjb25zdGFudCgrXyksIHN5bWJvbCkgOiBzaXplO1xuICB9O1xuXG4gIHN5bWJvbC5jb250ZXh0ID0gZnVuY3Rpb24oXykge1xuICAgIHJldHVybiBhcmd1bWVudHMubGVuZ3RoID8gKGNvbnRleHQgPSBfID09IG51bGwgPyBudWxsIDogXywgc3ltYm9sKSA6IGNvbnRleHQ7XG4gIH07XG5cbiAgcmV0dXJuIHN5bWJvbDtcbn1cbiJdLCJtYXBwaW5ncyI6IkFBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOyIsInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///./node_modules/vega/node_modules/d3-shape/src/symbol.js\n");

/***/ }),

/***/ "./node_modules/vega/node_modules/d3-shape/src/symbol/circle.js":
/*!**********************************************************************!*\
  !*** ./node_modules/vega/node_modules/d3-shape/src/symbol/circle.js ***!
  \**********************************************************************/
/*! exports provided: default */
/***/ (function(module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _math_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../math.js */ \"./node_modules/vega/node_modules/d3-shape/src/math.js\");\n\n\n/* harmony default export */ __webpack_exports__[\"default\"] = ({\n  draw: function(context, size) {\n    var r = Math.sqrt(size / _math_js__WEBPACK_IMPORTED_MODULE_0__[\"pi\"]);\n    context.moveTo(r, 0);\n    context.arc(0, 0, r, 0, _math_js__WEBPACK_IMPORTED_MODULE_0__[\"tau\"]);\n  }\n});\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvdmVnYS9ub2RlX21vZHVsZXMvZDMtc2hhcGUvc3JjL3N5bWJvbC9jaXJjbGUuanMuanMiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvdmVnYS9ub2RlX21vZHVsZXMvZDMtc2hhcGUvc3JjL3N5bWJvbC9jaXJjbGUuanM/YjJkMSJdLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge3BpLCB0YXV9IGZyb20gXCIuLi9tYXRoLmpzXCI7XG5cbmV4cG9ydCBkZWZhdWx0IHtcbiAgZHJhdzogZnVuY3Rpb24oY29udGV4dCwgc2l6ZSkge1xuICAgIHZhciByID0gTWF0aC5zcXJ0KHNpemUgLyBwaSk7XG4gICAgY29udGV4dC5tb3ZlVG8ociwgMCk7XG4gICAgY29udGV4dC5hcmMoMCwgMCwgciwgMCwgdGF1KTtcbiAgfVxufTtcbiJdLCJtYXBwaW5ncyI6IkFBQUE7QUFBQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTsiLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///./node_modules/vega/node_modules/d3-shape/src/symbol/circle.js\n");

/***/ }),

/***/ "./node_modules/vega/node_modules/d3-shape/src/symbol/cross.js":
/*!*********************************************************************!*\
  !*** ./node_modules/vega/node_modules/d3-shape/src/symbol/cross.js ***!
  \*********************************************************************/
/*! exports provided: default */
/***/ (function(module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony default export */ __webpack_exports__[\"default\"] = ({\n  draw: function(context, size) {\n    var r = Math.sqrt(size / 5) / 2;\n    context.moveTo(-3 * r, -r);\n    context.lineTo(-r, -r);\n    context.lineTo(-r, -3 * r);\n    context.lineTo(r, -3 * r);\n    context.lineTo(r, -r);\n    context.lineTo(3 * r, -r);\n    context.lineTo(3 * r, r);\n    context.lineTo(r, r);\n    context.lineTo(r, 3 * r);\n    context.lineTo(-r, 3 * r);\n    context.lineTo(-r, r);\n    context.lineTo(-3 * r, r);\n    context.closePath();\n  }\n});\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvdmVnYS9ub2RlX21vZHVsZXMvZDMtc2hhcGUvc3JjL3N5bWJvbC9jcm9zcy5qcy5qcyIsInNvdXJjZXMiOlsid2VicGFjazovLy8uL25vZGVfbW9kdWxlcy92ZWdhL25vZGVfbW9kdWxlcy9kMy1zaGFwZS9zcmMvc3ltYm9sL2Nyb3NzLmpzP2JlNmMiXSwic291cmNlc0NvbnRlbnQiOlsiZXhwb3J0IGRlZmF1bHQge1xuICBkcmF3OiBmdW5jdGlvbihjb250ZXh0LCBzaXplKSB7XG4gICAgdmFyIHIgPSBNYXRoLnNxcnQoc2l6ZSAvIDUpIC8gMjtcbiAgICBjb250ZXh0Lm1vdmVUbygtMyAqIHIsIC1yKTtcbiAgICBjb250ZXh0LmxpbmVUbygtciwgLXIpO1xuICAgIGNvbnRleHQubGluZVRvKC1yLCAtMyAqIHIpO1xuICAgIGNvbnRleHQubGluZVRvKHIsIC0zICogcik7XG4gICAgY29udGV4dC5saW5lVG8ociwgLXIpO1xuICAgIGNvbnRleHQubGluZVRvKDMgKiByLCAtcik7XG4gICAgY29udGV4dC5saW5lVG8oMyAqIHIsIHIpO1xuICAgIGNvbnRleHQubGluZVRvKHIsIHIpO1xuICAgIGNvbnRleHQubGluZVRvKHIsIDMgKiByKTtcbiAgICBjb250ZXh0LmxpbmVUbygtciwgMyAqIHIpO1xuICAgIGNvbnRleHQubGluZVRvKC1yLCByKTtcbiAgICBjb250ZXh0LmxpbmVUbygtMyAqIHIsIHIpO1xuICAgIGNvbnRleHQuY2xvc2VQYXRoKCk7XG4gIH1cbn07XG4iXSwibWFwcGluZ3MiOiJBQUFBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOyIsInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///./node_modules/vega/node_modules/d3-shape/src/symbol/cross.js\n");

/***/ }),

/***/ "./node_modules/vega/node_modules/d3-shape/src/symbol/diamond.js":
/*!***********************************************************************!*\
  !*** ./node_modules/vega/node_modules/d3-shape/src/symbol/diamond.js ***!
  \***********************************************************************/
/*! exports provided: default */
/***/ (function(module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\nvar tan30 = Math.sqrt(1 / 3),\n    tan30_2 = tan30 * 2;\n\n/* harmony default export */ __webpack_exports__[\"default\"] = ({\n  draw: function(context, size) {\n    var y = Math.sqrt(size / tan30_2),\n        x = y * tan30;\n    context.moveTo(0, -y);\n    context.lineTo(x, 0);\n    context.lineTo(0, y);\n    context.lineTo(-x, 0);\n    context.closePath();\n  }\n});\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvdmVnYS9ub2RlX21vZHVsZXMvZDMtc2hhcGUvc3JjL3N5bWJvbC9kaWFtb25kLmpzLmpzIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL3ZlZ2Evbm9kZV9tb2R1bGVzL2QzLXNoYXBlL3NyYy9zeW1ib2wvZGlhbW9uZC5qcz8yNTc5Il0sInNvdXJjZXNDb250ZW50IjpbInZhciB0YW4zMCA9IE1hdGguc3FydCgxIC8gMyksXG4gICAgdGFuMzBfMiA9IHRhbjMwICogMjtcblxuZXhwb3J0IGRlZmF1bHQge1xuICBkcmF3OiBmdW5jdGlvbihjb250ZXh0LCBzaXplKSB7XG4gICAgdmFyIHkgPSBNYXRoLnNxcnQoc2l6ZSAvIHRhbjMwXzIpLFxuICAgICAgICB4ID0geSAqIHRhbjMwO1xuICAgIGNvbnRleHQubW92ZVRvKDAsIC15KTtcbiAgICBjb250ZXh0LmxpbmVUbyh4LCAwKTtcbiAgICBjb250ZXh0LmxpbmVUbygwLCB5KTtcbiAgICBjb250ZXh0LmxpbmVUbygteCwgMCk7XG4gICAgY29udGV4dC5jbG9zZVBhdGgoKTtcbiAgfVxufTtcbiJdLCJtYXBwaW5ncyI6IkFBQUE7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOyIsInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///./node_modules/vega/node_modules/d3-shape/src/symbol/diamond.js\n");

/***/ }),

/***/ "./node_modules/vega/node_modules/d3-shape/src/symbol/square.js":
/*!**********************************************************************!*\
  !*** ./node_modules/vega/node_modules/d3-shape/src/symbol/square.js ***!
  \**********************************************************************/
/*! exports provided: default */
/***/ (function(module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony default export */ __webpack_exports__[\"default\"] = ({\n  draw: function(context, size) {\n    var w = Math.sqrt(size),\n        x = -w / 2;\n    context.rect(x, x, w, w);\n  }\n});\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvdmVnYS9ub2RlX21vZHVsZXMvZDMtc2hhcGUvc3JjL3N5bWJvbC9zcXVhcmUuanMuanMiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvdmVnYS9ub2RlX21vZHVsZXMvZDMtc2hhcGUvc3JjL3N5bWJvbC9zcXVhcmUuanM/NGEwMiJdLCJzb3VyY2VzQ29udGVudCI6WyJleHBvcnQgZGVmYXVsdCB7XG4gIGRyYXc6IGZ1bmN0aW9uKGNvbnRleHQsIHNpemUpIHtcbiAgICB2YXIgdyA9IE1hdGguc3FydChzaXplKSxcbiAgICAgICAgeCA9IC13IC8gMjtcbiAgICBjb250ZXh0LnJlY3QoeCwgeCwgdywgdyk7XG4gIH1cbn07XG4iXSwibWFwcGluZ3MiOiJBQUFBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7Iiwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///./node_modules/vega/node_modules/d3-shape/src/symbol/square.js\n");

/***/ }),

/***/ "./node_modules/vega/node_modules/d3-shape/src/symbol/star.js":
/*!********************************************************************!*\
  !*** ./node_modules/vega/node_modules/d3-shape/src/symbol/star.js ***!
  \********************************************************************/
/*! exports provided: default */
/***/ (function(module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _math_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../math.js */ \"./node_modules/vega/node_modules/d3-shape/src/math.js\");\n\n\nvar ka = 0.89081309152928522810,\n    kr = Math.sin(_math_js__WEBPACK_IMPORTED_MODULE_0__[\"pi\"] / 10) / Math.sin(7 * _math_js__WEBPACK_IMPORTED_MODULE_0__[\"pi\"] / 10),\n    kx = Math.sin(_math_js__WEBPACK_IMPORTED_MODULE_0__[\"tau\"] / 10) * kr,\n    ky = -Math.cos(_math_js__WEBPACK_IMPORTED_MODULE_0__[\"tau\"] / 10) * kr;\n\n/* harmony default export */ __webpack_exports__[\"default\"] = ({\n  draw: function(context, size) {\n    var r = Math.sqrt(size * ka),\n        x = kx * r,\n        y = ky * r;\n    context.moveTo(0, -r);\n    context.lineTo(x, y);\n    for (var i = 1; i < 5; ++i) {\n      var a = _math_js__WEBPACK_IMPORTED_MODULE_0__[\"tau\"] * i / 5,\n          c = Math.cos(a),\n          s = Math.sin(a);\n      context.lineTo(s * r, -c * r);\n      context.lineTo(c * x - s * y, s * x + c * y);\n    }\n    context.closePath();\n  }\n});\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvdmVnYS9ub2RlX21vZHVsZXMvZDMtc2hhcGUvc3JjL3N5bWJvbC9zdGFyLmpzLmpzIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL3ZlZ2Evbm9kZV9tb2R1bGVzL2QzLXNoYXBlL3NyYy9zeW1ib2wvc3Rhci5qcz8yYTE1Il0sInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7cGksIHRhdX0gZnJvbSBcIi4uL21hdGguanNcIjtcblxudmFyIGthID0gMC44OTA4MTMwOTE1MjkyODUyMjgxMCxcbiAgICBrciA9IE1hdGguc2luKHBpIC8gMTApIC8gTWF0aC5zaW4oNyAqIHBpIC8gMTApLFxuICAgIGt4ID0gTWF0aC5zaW4odGF1IC8gMTApICoga3IsXG4gICAga3kgPSAtTWF0aC5jb3ModGF1IC8gMTApICoga3I7XG5cbmV4cG9ydCBkZWZhdWx0IHtcbiAgZHJhdzogZnVuY3Rpb24oY29udGV4dCwgc2l6ZSkge1xuICAgIHZhciByID0gTWF0aC5zcXJ0KHNpemUgKiBrYSksXG4gICAgICAgIHggPSBreCAqIHIsXG4gICAgICAgIHkgPSBreSAqIHI7XG4gICAgY29udGV4dC5tb3ZlVG8oMCwgLXIpO1xuICAgIGNvbnRleHQubGluZVRvKHgsIHkpO1xuICAgIGZvciAodmFyIGkgPSAxOyBpIDwgNTsgKytpKSB7XG4gICAgICB2YXIgYSA9IHRhdSAqIGkgLyA1LFxuICAgICAgICAgIGMgPSBNYXRoLmNvcyhhKSxcbiAgICAgICAgICBzID0gTWF0aC5zaW4oYSk7XG4gICAgICBjb250ZXh0LmxpbmVUbyhzICogciwgLWMgKiByKTtcbiAgICAgIGNvbnRleHQubGluZVRvKGMgKiB4IC0gcyAqIHksIHMgKiB4ICsgYyAqIHkpO1xuICAgIH1cbiAgICBjb250ZXh0LmNsb3NlUGF0aCgpO1xuICB9XG59O1xuIl0sIm1hcHBpbmdzIjoiQUFBQTtBQUFBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOyIsInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///./node_modules/vega/node_modules/d3-shape/src/symbol/star.js\n");

/***/ }),

/***/ "./node_modules/vega/node_modules/d3-shape/src/symbol/triangle.js":
/*!************************************************************************!*\
  !*** ./node_modules/vega/node_modules/d3-shape/src/symbol/triangle.js ***!
  \************************************************************************/
/*! exports provided: default */
/***/ (function(module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\nvar sqrt3 = Math.sqrt(3);\n\n/* harmony default export */ __webpack_exports__[\"default\"] = ({\n  draw: function(context, size) {\n    var y = -Math.sqrt(size / (sqrt3 * 3));\n    context.moveTo(0, y * 2);\n    context.lineTo(-sqrt3 * y, -y);\n    context.lineTo(sqrt3 * y, -y);\n    context.closePath();\n  }\n});\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvdmVnYS9ub2RlX21vZHVsZXMvZDMtc2hhcGUvc3JjL3N5bWJvbC90cmlhbmdsZS5qcy5qcyIsInNvdXJjZXMiOlsid2VicGFjazovLy8uL25vZGVfbW9kdWxlcy92ZWdhL25vZGVfbW9kdWxlcy9kMy1zaGFwZS9zcmMvc3ltYm9sL3RyaWFuZ2xlLmpzP2JkMGMiXSwic291cmNlc0NvbnRlbnQiOlsidmFyIHNxcnQzID0gTWF0aC5zcXJ0KDMpO1xuXG5leHBvcnQgZGVmYXVsdCB7XG4gIGRyYXc6IGZ1bmN0aW9uKGNvbnRleHQsIHNpemUpIHtcbiAgICB2YXIgeSA9IC1NYXRoLnNxcnQoc2l6ZSAvIChzcXJ0MyAqIDMpKTtcbiAgICBjb250ZXh0Lm1vdmVUbygwLCB5ICogMik7XG4gICAgY29udGV4dC5saW5lVG8oLXNxcnQzICogeSwgLXkpO1xuICAgIGNvbnRleHQubGluZVRvKHNxcnQzICogeSwgLXkpO1xuICAgIGNvbnRleHQuY2xvc2VQYXRoKCk7XG4gIH1cbn07XG4iXSwibWFwcGluZ3MiOiJBQUFBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTsiLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///./node_modules/vega/node_modules/d3-shape/src/symbol/triangle.js\n");

/***/ }),

/***/ "./node_modules/vega/node_modules/d3-shape/src/symbol/wye.js":
/*!*******************************************************************!*\
  !*** ./node_modules/vega/node_modules/d3-shape/src/symbol/wye.js ***!
  \*******************************************************************/
/*! exports provided: default */
/***/ (function(module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\nvar c = -0.5,\n    s = Math.sqrt(3) / 2,\n    k = 1 / Math.sqrt(12),\n    a = (k / 2 + 1) * 3;\n\n/* harmony default export */ __webpack_exports__[\"default\"] = ({\n  draw: function(context, size) {\n    var r = Math.sqrt(size / a),\n        x0 = r / 2,\n        y0 = r * k,\n        x1 = x0,\n        y1 = r * k + r,\n        x2 = -x1,\n        y2 = y1;\n    context.moveTo(x0, y0);\n    context.lineTo(x1, y1);\n    context.lineTo(x2, y2);\n    context.lineTo(c * x0 - s * y0, s * x0 + c * y0);\n    context.lineTo(c * x1 - s * y1, s * x1 + c * y1);\n    context.lineTo(c * x2 - s * y2, s * x2 + c * y2);\n    context.lineTo(c * x0 + s * y0, c * y0 - s * x0);\n    context.lineTo(c * x1 + s * y1, c * y1 - s * x1);\n    context.lineTo(c * x2 + s * y2, c * y2 - s * x2);\n    context.closePath();\n  }\n});\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvdmVnYS9ub2RlX21vZHVsZXMvZDMtc2hhcGUvc3JjL3N5bWJvbC93eWUuanMuanMiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvdmVnYS9ub2RlX21vZHVsZXMvZDMtc2hhcGUvc3JjL3N5bWJvbC93eWUuanM/YWY2NCJdLCJzb3VyY2VzQ29udGVudCI6WyJ2YXIgYyA9IC0wLjUsXG4gICAgcyA9IE1hdGguc3FydCgzKSAvIDIsXG4gICAgayA9IDEgLyBNYXRoLnNxcnQoMTIpLFxuICAgIGEgPSAoayAvIDIgKyAxKSAqIDM7XG5cbmV4cG9ydCBkZWZhdWx0IHtcbiAgZHJhdzogZnVuY3Rpb24oY29udGV4dCwgc2l6ZSkge1xuICAgIHZhciByID0gTWF0aC5zcXJ0KHNpemUgLyBhKSxcbiAgICAgICAgeDAgPSByIC8gMixcbiAgICAgICAgeTAgPSByICogayxcbiAgICAgICAgeDEgPSB4MCxcbiAgICAgICAgeTEgPSByICogayArIHIsXG4gICAgICAgIHgyID0gLXgxLFxuICAgICAgICB5MiA9IHkxO1xuICAgIGNvbnRleHQubW92ZVRvKHgwLCB5MCk7XG4gICAgY29udGV4dC5saW5lVG8oeDEsIHkxKTtcbiAgICBjb250ZXh0LmxpbmVUbyh4MiwgeTIpO1xuICAgIGNvbnRleHQubGluZVRvKGMgKiB4MCAtIHMgKiB5MCwgcyAqIHgwICsgYyAqIHkwKTtcbiAgICBjb250ZXh0LmxpbmVUbyhjICogeDEgLSBzICogeTEsIHMgKiB4MSArIGMgKiB5MSk7XG4gICAgY29udGV4dC5saW5lVG8oYyAqIHgyIC0gcyAqIHkyLCBzICogeDIgKyBjICogeTIpO1xuICAgIGNvbnRleHQubGluZVRvKGMgKiB4MCArIHMgKiB5MCwgYyAqIHkwIC0gcyAqIHgwKTtcbiAgICBjb250ZXh0LmxpbmVUbyhjICogeDEgKyBzICogeTEsIGMgKiB5MSAtIHMgKiB4MSk7XG4gICAgY29udGV4dC5saW5lVG8oYyAqIHgyICsgcyAqIHkyLCBjICogeTIgLSBzICogeDIpO1xuICAgIGNvbnRleHQuY2xvc2VQYXRoKCk7XG4gIH1cbn07XG4iXSwibWFwcGluZ3MiOiJBQUFBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTsiLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///./node_modules/vega/node_modules/d3-shape/src/symbol/wye.js\n");

/***/ }),

/***/ "./node_modules/vega/node_modules/d3-time-format/src/defaultLocale.js":
/*!****************************************************************************!*\
  !*** ./node_modules/vega/node_modules/d3-time-format/src/defaultLocale.js ***!
  \****************************************************************************/
/*! exports provided: timeFormat, timeParse, utcFormat, utcParse, default */
/***/ (function(module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"timeFormat\", function() { return timeFormat; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"timeParse\", function() { return timeParse; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"utcFormat\", function() { return utcFormat; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"utcParse\", function() { return utcParse; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"default\", function() { return defaultLocale; });\n/* harmony import */ var _locale_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./locale.js */ \"./node_modules/vega/node_modules/d3-time-format/src/locale.js\");\n\n\nvar locale;\nvar timeFormat;\nvar timeParse;\nvar utcFormat;\nvar utcParse;\n\ndefaultLocale({\n  dateTime: \"%x, %X\",\n  date: \"%-m/%-d/%Y\",\n  time: \"%-I:%M:%S %p\",\n  periods: [\"AM\", \"PM\"],\n  days: [\"Sunday\", \"Monday\", \"Tuesday\", \"Wednesday\", \"Thursday\", \"Friday\", \"Saturday\"],\n  shortDays: [\"Sun\", \"Mon\", \"Tue\", \"Wed\", \"Thu\", \"Fri\", \"Sat\"],\n  months: [\"January\", \"February\", \"March\", \"April\", \"May\", \"June\", \"July\", \"August\", \"September\", \"October\", \"November\", \"December\"],\n  shortMonths: [\"Jan\", \"Feb\", \"Mar\", \"Apr\", \"May\", \"Jun\", \"Jul\", \"Aug\", \"Sep\", \"Oct\", \"Nov\", \"Dec\"]\n});\n\nfunction defaultLocale(definition) {\n  locale = Object(_locale_js__WEBPACK_IMPORTED_MODULE_0__[\"default\"])(definition);\n  timeFormat = locale.format;\n  timeParse = locale.parse;\n  utcFormat = locale.utcFormat;\n  utcParse = locale.utcParse;\n  return locale;\n}\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvdmVnYS9ub2RlX21vZHVsZXMvZDMtdGltZS1mb3JtYXQvc3JjL2RlZmF1bHRMb2NhbGUuanMuanMiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvdmVnYS9ub2RlX21vZHVsZXMvZDMtdGltZS1mb3JtYXQvc3JjL2RlZmF1bHRMb2NhbGUuanM/NjcwOSJdLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgZm9ybWF0TG9jYWxlIGZyb20gXCIuL2xvY2FsZS5qc1wiO1xuXG52YXIgbG9jYWxlO1xuZXhwb3J0IHZhciB0aW1lRm9ybWF0O1xuZXhwb3J0IHZhciB0aW1lUGFyc2U7XG5leHBvcnQgdmFyIHV0Y0Zvcm1hdDtcbmV4cG9ydCB2YXIgdXRjUGFyc2U7XG5cbmRlZmF1bHRMb2NhbGUoe1xuICBkYXRlVGltZTogXCIleCwgJVhcIixcbiAgZGF0ZTogXCIlLW0vJS1kLyVZXCIsXG4gIHRpbWU6IFwiJS1JOiVNOiVTICVwXCIsXG4gIHBlcmlvZHM6IFtcIkFNXCIsIFwiUE1cIl0sXG4gIGRheXM6IFtcIlN1bmRheVwiLCBcIk1vbmRheVwiLCBcIlR1ZXNkYXlcIiwgXCJXZWRuZXNkYXlcIiwgXCJUaHVyc2RheVwiLCBcIkZyaWRheVwiLCBcIlNhdHVyZGF5XCJdLFxuICBzaG9ydERheXM6IFtcIlN1blwiLCBcIk1vblwiLCBcIlR1ZVwiLCBcIldlZFwiLCBcIlRodVwiLCBcIkZyaVwiLCBcIlNhdFwiXSxcbiAgbW9udGhzOiBbXCJKYW51YXJ5XCIsIFwiRmVicnVhcnlcIiwgXCJNYXJjaFwiLCBcIkFwcmlsXCIsIFwiTWF5XCIsIFwiSnVuZVwiLCBcIkp1bHlcIiwgXCJBdWd1c3RcIiwgXCJTZXB0ZW1iZXJcIiwgXCJPY3RvYmVyXCIsIFwiTm92ZW1iZXJcIiwgXCJEZWNlbWJlclwiXSxcbiAgc2hvcnRNb250aHM6IFtcIkphblwiLCBcIkZlYlwiLCBcIk1hclwiLCBcIkFwclwiLCBcIk1heVwiLCBcIkp1blwiLCBcIkp1bFwiLCBcIkF1Z1wiLCBcIlNlcFwiLCBcIk9jdFwiLCBcIk5vdlwiLCBcIkRlY1wiXVxufSk7XG5cbmV4cG9ydCBkZWZhdWx0IGZ1bmN0aW9uIGRlZmF1bHRMb2NhbGUoZGVmaW5pdGlvbikge1xuICBsb2NhbGUgPSBmb3JtYXRMb2NhbGUoZGVmaW5pdGlvbik7XG4gIHRpbWVGb3JtYXQgPSBsb2NhbGUuZm9ybWF0O1xuICB0aW1lUGFyc2UgPSBsb2NhbGUucGFyc2U7XG4gIHV0Y0Zvcm1hdCA9IGxvY2FsZS51dGNGb3JtYXQ7XG4gIHV0Y1BhcnNlID0gbG9jYWxlLnV0Y1BhcnNlO1xuICByZXR1cm4gbG9jYWxlO1xufVxuIl0sIm1hcHBpbmdzIjoiQUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTsiLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///./node_modules/vega/node_modules/d3-time-format/src/defaultLocale.js\n");

/***/ }),

/***/ "./node_modules/vega/node_modules/d3-time-format/src/index.js":
/*!********************************************************************!*\
  !*** ./node_modules/vega/node_modules/d3-time-format/src/index.js ***!
  \********************************************************************/
/*! exports provided: timeFormatDefaultLocale, timeFormat, timeParse, utcFormat, utcParse, timeFormatLocale, isoFormat, isoParse */
/***/ (function(module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _defaultLocale_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./defaultLocale.js */ \"./node_modules/vega/node_modules/d3-time-format/src/defaultLocale.js\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"timeFormatDefaultLocale\", function() { return _defaultLocale_js__WEBPACK_IMPORTED_MODULE_0__[\"default\"]; });\n\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"timeFormat\", function() { return _defaultLocale_js__WEBPACK_IMPORTED_MODULE_0__[\"timeFormat\"]; });\n\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"timeParse\", function() { return _defaultLocale_js__WEBPACK_IMPORTED_MODULE_0__[\"timeParse\"]; });\n\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"utcFormat\", function() { return _defaultLocale_js__WEBPACK_IMPORTED_MODULE_0__[\"utcFormat\"]; });\n\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"utcParse\", function() { return _defaultLocale_js__WEBPACK_IMPORTED_MODULE_0__[\"utcParse\"]; });\n\n/* harmony import */ var _locale_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./locale.js */ \"./node_modules/vega/node_modules/d3-time-format/src/locale.js\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"timeFormatLocale\", function() { return _locale_js__WEBPACK_IMPORTED_MODULE_1__[\"default\"]; });\n\n/* harmony import */ var _isoFormat_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./isoFormat.js */ \"./node_modules/vega/node_modules/d3-time-format/src/isoFormat.js\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"isoFormat\", function() { return _isoFormat_js__WEBPACK_IMPORTED_MODULE_2__[\"default\"]; });\n\n/* harmony import */ var _isoParse_js__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ./isoParse.js */ \"./node_modules/vega/node_modules/d3-time-format/src/isoParse.js\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"isoParse\", function() { return _isoParse_js__WEBPACK_IMPORTED_MODULE_3__[\"default\"]; });\n\n\n\n\n\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvdmVnYS9ub2RlX21vZHVsZXMvZDMtdGltZS1mb3JtYXQvc3JjL2luZGV4LmpzLmpzIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL3ZlZ2Evbm9kZV9tb2R1bGVzL2QzLXRpbWUtZm9ybWF0L3NyYy9pbmRleC5qcz8yZWY4Il0sInNvdXJjZXNDb250ZW50IjpbImV4cG9ydCB7ZGVmYXVsdCBhcyB0aW1lRm9ybWF0RGVmYXVsdExvY2FsZSwgdGltZUZvcm1hdCwgdGltZVBhcnNlLCB1dGNGb3JtYXQsIHV0Y1BhcnNlfSBmcm9tIFwiLi9kZWZhdWx0TG9jYWxlLmpzXCI7XG5leHBvcnQge2RlZmF1bHQgYXMgdGltZUZvcm1hdExvY2FsZX0gZnJvbSBcIi4vbG9jYWxlLmpzXCI7XG5leHBvcnQge2RlZmF1bHQgYXMgaXNvRm9ybWF0fSBmcm9tIFwiLi9pc29Gb3JtYXQuanNcIjtcbmV4cG9ydCB7ZGVmYXVsdCBhcyBpc29QYXJzZX0gZnJvbSBcIi4vaXNvUGFyc2UuanNcIjtcbiJdLCJtYXBwaW5ncyI6IkFBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7Iiwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///./node_modules/vega/node_modules/d3-time-format/src/index.js\n");

/***/ }),

/***/ "./node_modules/vega/node_modules/d3-time-format/src/isoFormat.js":
/*!************************************************************************!*\
  !*** ./node_modules/vega/node_modules/d3-time-format/src/isoFormat.js ***!
  \************************************************************************/
/*! exports provided: isoSpecifier, default */
/***/ (function(module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"isoSpecifier\", function() { return isoSpecifier; });\n/* harmony import */ var _defaultLocale_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./defaultLocale.js */ \"./node_modules/vega/node_modules/d3-time-format/src/defaultLocale.js\");\n\n\nvar isoSpecifier = \"%Y-%m-%dT%H:%M:%S.%LZ\";\n\nfunction formatIsoNative(date) {\n  return date.toISOString();\n}\n\nvar formatIso = Date.prototype.toISOString\n    ? formatIsoNative\n    : Object(_defaultLocale_js__WEBPACK_IMPORTED_MODULE_0__[\"utcFormat\"])(isoSpecifier);\n\n/* harmony default export */ __webpack_exports__[\"default\"] = (formatIso);\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvdmVnYS9ub2RlX21vZHVsZXMvZDMtdGltZS1mb3JtYXQvc3JjL2lzb0Zvcm1hdC5qcy5qcyIsInNvdXJjZXMiOlsid2VicGFjazovLy8uL25vZGVfbW9kdWxlcy92ZWdhL25vZGVfbW9kdWxlcy9kMy10aW1lLWZvcm1hdC9zcmMvaXNvRm9ybWF0LmpzPzg0MWYiXSwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHt1dGNGb3JtYXR9IGZyb20gXCIuL2RlZmF1bHRMb2NhbGUuanNcIjtcblxuZXhwb3J0IHZhciBpc29TcGVjaWZpZXIgPSBcIiVZLSVtLSVkVCVIOiVNOiVTLiVMWlwiO1xuXG5mdW5jdGlvbiBmb3JtYXRJc29OYXRpdmUoZGF0ZSkge1xuICByZXR1cm4gZGF0ZS50b0lTT1N0cmluZygpO1xufVxuXG52YXIgZm9ybWF0SXNvID0gRGF0ZS5wcm90b3R5cGUudG9JU09TdHJpbmdcbiAgICA/IGZvcm1hdElzb05hdGl2ZVxuICAgIDogdXRjRm9ybWF0KGlzb1NwZWNpZmllcik7XG5cbmV4cG9ydCBkZWZhdWx0IGZvcm1hdElzbztcbiJdLCJtYXBwaW5ncyI6IkFBQUE7QUFBQTtBQUFBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7Iiwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///./node_modules/vega/node_modules/d3-time-format/src/isoFormat.js\n");

/***/ }),

/***/ "./node_modules/vega/node_modules/d3-time-format/src/isoParse.js":
/*!***********************************************************************!*\
  !*** ./node_modules/vega/node_modules/d3-time-format/src/isoParse.js ***!
  \***********************************************************************/
/*! exports provided: default */
/***/ (function(module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _isoFormat_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./isoFormat.js */ \"./node_modules/vega/node_modules/d3-time-format/src/isoFormat.js\");\n/* harmony import */ var _defaultLocale_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./defaultLocale.js */ \"./node_modules/vega/node_modules/d3-time-format/src/defaultLocale.js\");\n\n\n\nfunction parseIsoNative(string) {\n  var date = new Date(string);\n  return isNaN(date) ? null : date;\n}\n\nvar parseIso = +new Date(\"2000-01-01T00:00:00.000Z\")\n    ? parseIsoNative\n    : Object(_defaultLocale_js__WEBPACK_IMPORTED_MODULE_1__[\"utcParse\"])(_isoFormat_js__WEBPACK_IMPORTED_MODULE_0__[\"isoSpecifier\"]);\n\n/* harmony default export */ __webpack_exports__[\"default\"] = (parseIso);\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvdmVnYS9ub2RlX21vZHVsZXMvZDMtdGltZS1mb3JtYXQvc3JjL2lzb1BhcnNlLmpzLmpzIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL3ZlZ2Evbm9kZV9tb2R1bGVzL2QzLXRpbWUtZm9ybWF0L3NyYy9pc29QYXJzZS5qcz9iODM5Il0sInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7aXNvU3BlY2lmaWVyfSBmcm9tIFwiLi9pc29Gb3JtYXQuanNcIjtcbmltcG9ydCB7dXRjUGFyc2V9IGZyb20gXCIuL2RlZmF1bHRMb2NhbGUuanNcIjtcblxuZnVuY3Rpb24gcGFyc2VJc29OYXRpdmUoc3RyaW5nKSB7XG4gIHZhciBkYXRlID0gbmV3IERhdGUoc3RyaW5nKTtcbiAgcmV0dXJuIGlzTmFOKGRhdGUpID8gbnVsbCA6IGRhdGU7XG59XG5cbnZhciBwYXJzZUlzbyA9ICtuZXcgRGF0ZShcIjIwMDAtMDEtMDFUMDA6MDA6MDAuMDAwWlwiKVxuICAgID8gcGFyc2VJc29OYXRpdmVcbiAgICA6IHV0Y1BhcnNlKGlzb1NwZWNpZmllcik7XG5cbmV4cG9ydCBkZWZhdWx0IHBhcnNlSXNvO1xuIl0sIm1hcHBpbmdzIjoiQUFBQTtBQUFBO0FBQUE7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTsiLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///./node_modules/vega/node_modules/d3-time-format/src/isoParse.js\n");

/***/ }),

/***/ "./node_modules/vega/node_modules/d3-time-format/src/locale.js":
/*!*********************************************************************!*\
  !*** ./node_modules/vega/node_modules/d3-time-format/src/locale.js ***!
  \*********************************************************************/
/*! exports provided: default */
/***/ (function(module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"default\", function() { return formatLocale; });\n/* harmony import */ var d3_time__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! d3-time */ \"./node_modules/vega/node_modules/d3-time/src/index.js\");\n\n\nfunction localDate(d) {\n  if (0 <= d.y && d.y < 100) {\n    var date = new Date(-1, d.m, d.d, d.H, d.M, d.S, d.L);\n    date.setFullYear(d.y);\n    return date;\n  }\n  return new Date(d.y, d.m, d.d, d.H, d.M, d.S, d.L);\n}\n\nfunction utcDate(d) {\n  if (0 <= d.y && d.y < 100) {\n    var date = new Date(Date.UTC(-1, d.m, d.d, d.H, d.M, d.S, d.L));\n    date.setUTCFullYear(d.y);\n    return date;\n  }\n  return new Date(Date.UTC(d.y, d.m, d.d, d.H, d.M, d.S, d.L));\n}\n\nfunction newDate(y, m, d) {\n  return {y: y, m: m, d: d, H: 0, M: 0, S: 0, L: 0};\n}\n\nfunction formatLocale(locale) {\n  var locale_dateTime = locale.dateTime,\n      locale_date = locale.date,\n      locale_time = locale.time,\n      locale_periods = locale.periods,\n      locale_weekdays = locale.days,\n      locale_shortWeekdays = locale.shortDays,\n      locale_months = locale.months,\n      locale_shortMonths = locale.shortMonths;\n\n  var periodRe = formatRe(locale_periods),\n      periodLookup = formatLookup(locale_periods),\n      weekdayRe = formatRe(locale_weekdays),\n      weekdayLookup = formatLookup(locale_weekdays),\n      shortWeekdayRe = formatRe(locale_shortWeekdays),\n      shortWeekdayLookup = formatLookup(locale_shortWeekdays),\n      monthRe = formatRe(locale_months),\n      monthLookup = formatLookup(locale_months),\n      shortMonthRe = formatRe(locale_shortMonths),\n      shortMonthLookup = formatLookup(locale_shortMonths);\n\n  var formats = {\n    \"a\": formatShortWeekday,\n    \"A\": formatWeekday,\n    \"b\": formatShortMonth,\n    \"B\": formatMonth,\n    \"c\": null,\n    \"d\": formatDayOfMonth,\n    \"e\": formatDayOfMonth,\n    \"f\": formatMicroseconds,\n    \"g\": formatYearISO,\n    \"G\": formatFullYearISO,\n    \"H\": formatHour24,\n    \"I\": formatHour12,\n    \"j\": formatDayOfYear,\n    \"L\": formatMilliseconds,\n    \"m\": formatMonthNumber,\n    \"M\": formatMinutes,\n    \"p\": formatPeriod,\n    \"q\": formatQuarter,\n    \"Q\": formatUnixTimestamp,\n    \"s\": formatUnixTimestampSeconds,\n    \"S\": formatSeconds,\n    \"u\": formatWeekdayNumberMonday,\n    \"U\": formatWeekNumberSunday,\n    \"V\": formatWeekNumberISO,\n    \"w\": formatWeekdayNumberSunday,\n    \"W\": formatWeekNumberMonday,\n    \"x\": null,\n    \"X\": null,\n    \"y\": formatYear,\n    \"Y\": formatFullYear,\n    \"Z\": formatZone,\n    \"%\": formatLiteralPercent\n  };\n\n  var utcFormats = {\n    \"a\": formatUTCShortWeekday,\n    \"A\": formatUTCWeekday,\n    \"b\": formatUTCShortMonth,\n    \"B\": formatUTCMonth,\n    \"c\": null,\n    \"d\": formatUTCDayOfMonth,\n    \"e\": formatUTCDayOfMonth,\n    \"f\": formatUTCMicroseconds,\n    \"g\": formatUTCYearISO,\n    \"G\": formatUTCFullYearISO,\n    \"H\": formatUTCHour24,\n    \"I\": formatUTCHour12,\n    \"j\": formatUTCDayOfYear,\n    \"L\": formatUTCMilliseconds,\n    \"m\": formatUTCMonthNumber,\n    \"M\": formatUTCMinutes,\n    \"p\": formatUTCPeriod,\n    \"q\": formatUTCQuarter,\n    \"Q\": formatUnixTimestamp,\n    \"s\": formatUnixTimestampSeconds,\n    \"S\": formatUTCSeconds,\n    \"u\": formatUTCWeekdayNumberMonday,\n    \"U\": formatUTCWeekNumberSunday,\n    \"V\": formatUTCWeekNumberISO,\n    \"w\": formatUTCWeekdayNumberSunday,\n    \"W\": formatUTCWeekNumberMonday,\n    \"x\": null,\n    \"X\": null,\n    \"y\": formatUTCYear,\n    \"Y\": formatUTCFullYear,\n    \"Z\": formatUTCZone,\n    \"%\": formatLiteralPercent\n  };\n\n  var parses = {\n    \"a\": parseShortWeekday,\n    \"A\": parseWeekday,\n    \"b\": parseShortMonth,\n    \"B\": parseMonth,\n    \"c\": parseLocaleDateTime,\n    \"d\": parseDayOfMonth,\n    \"e\": parseDayOfMonth,\n    \"f\": parseMicroseconds,\n    \"g\": parseYear,\n    \"G\": parseFullYear,\n    \"H\": parseHour24,\n    \"I\": parseHour24,\n    \"j\": parseDayOfYear,\n    \"L\": parseMilliseconds,\n    \"m\": parseMonthNumber,\n    \"M\": parseMinutes,\n    \"p\": parsePeriod,\n    \"q\": parseQuarter,\n    \"Q\": parseUnixTimestamp,\n    \"s\": parseUnixTimestampSeconds,\n    \"S\": parseSeconds,\n    \"u\": parseWeekdayNumberMonday,\n    \"U\": parseWeekNumberSunday,\n    \"V\": parseWeekNumberISO,\n    \"w\": parseWeekdayNumberSunday,\n    \"W\": parseWeekNumberMonday,\n    \"x\": parseLocaleDate,\n    \"X\": parseLocaleTime,\n    \"y\": parseYear,\n    \"Y\": parseFullYear,\n    \"Z\": parseZone,\n    \"%\": parseLiteralPercent\n  };\n\n  // These recursive directive definitions must be deferred.\n  formats.x = newFormat(locale_date, formats);\n  formats.X = newFormat(locale_time, formats);\n  formats.c = newFormat(locale_dateTime, formats);\n  utcFormats.x = newFormat(locale_date, utcFormats);\n  utcFormats.X = newFormat(locale_time, utcFormats);\n  utcFormats.c = newFormat(locale_dateTime, utcFormats);\n\n  function newFormat(specifier, formats) {\n    return function(date) {\n      var string = [],\n          i = -1,\n          j = 0,\n          n = specifier.length,\n          c,\n          pad,\n          format;\n\n      if (!(date instanceof Date)) date = new Date(+date);\n\n      while (++i < n) {\n        if (specifier.charCodeAt(i) === 37) {\n          string.push(specifier.slice(j, i));\n          if ((pad = pads[c = specifier.charAt(++i)]) != null) c = specifier.charAt(++i);\n          else pad = c === \"e\" ? \" \" : \"0\";\n          if (format = formats[c]) c = format(date, pad);\n          string.push(c);\n          j = i + 1;\n        }\n      }\n\n      string.push(specifier.slice(j, i));\n      return string.join(\"\");\n    };\n  }\n\n  function newParse(specifier, Z) {\n    return function(string) {\n      var d = newDate(1900, undefined, 1),\n          i = parseSpecifier(d, specifier, string += \"\", 0),\n          week, day;\n      if (i != string.length) return null;\n\n      // If a UNIX timestamp is specified, return it.\n      if (\"Q\" in d) return new Date(d.Q);\n      if (\"s\" in d) return new Date(d.s * 1000 + (\"L\" in d ? d.L : 0));\n\n      // If this is utcParse, never use the local timezone.\n      if (Z && !(\"Z\" in d)) d.Z = 0;\n\n      // The am-pm flag is 0 for AM, and 1 for PM.\n      if (\"p\" in d) d.H = d.H % 12 + d.p * 12;\n\n      // If the month was not specified, inherit from the quarter.\n      if (d.m === undefined) d.m = \"q\" in d ? d.q : 0;\n\n      // Convert day-of-week and week-of-year to day-of-year.\n      if (\"V\" in d) {\n        if (d.V < 1 || d.V > 53) return null;\n        if (!(\"w\" in d)) d.w = 1;\n        if (\"Z\" in d) {\n          week = utcDate(newDate(d.y, 0, 1)), day = week.getUTCDay();\n          week = day > 4 || day === 0 ? d3_time__WEBPACK_IMPORTED_MODULE_0__[\"utcMonday\"].ceil(week) : Object(d3_time__WEBPACK_IMPORTED_MODULE_0__[\"utcMonday\"])(week);\n          week = d3_time__WEBPACK_IMPORTED_MODULE_0__[\"utcDay\"].offset(week, (d.V - 1) * 7);\n          d.y = week.getUTCFullYear();\n          d.m = week.getUTCMonth();\n          d.d = week.getUTCDate() + (d.w + 6) % 7;\n        } else {\n          week = localDate(newDate(d.y, 0, 1)), day = week.getDay();\n          week = day > 4 || day === 0 ? d3_time__WEBPACK_IMPORTED_MODULE_0__[\"timeMonday\"].ceil(week) : Object(d3_time__WEBPACK_IMPORTED_MODULE_0__[\"timeMonday\"])(week);\n          week = d3_time__WEBPACK_IMPORTED_MODULE_0__[\"timeDay\"].offset(week, (d.V - 1) * 7);\n          d.y = week.getFullYear();\n          d.m = week.getMonth();\n          d.d = week.getDate() + (d.w + 6) % 7;\n        }\n      } else if (\"W\" in d || \"U\" in d) {\n        if (!(\"w\" in d)) d.w = \"u\" in d ? d.u % 7 : \"W\" in d ? 1 : 0;\n        day = \"Z\" in d ? utcDate(newDate(d.y, 0, 1)).getUTCDay() : localDate(newDate(d.y, 0, 1)).getDay();\n        d.m = 0;\n        d.d = \"W\" in d ? (d.w + 6) % 7 + d.W * 7 - (day + 5) % 7 : d.w + d.U * 7 - (day + 6) % 7;\n      }\n\n      // If a time zone is specified, all fields are interpreted as UTC and then\n      // offset according to the specified time zone.\n      if (\"Z\" in d) {\n        d.H += d.Z / 100 | 0;\n        d.M += d.Z % 100;\n        return utcDate(d);\n      }\n\n      // Otherwise, all fields are in local time.\n      return localDate(d);\n    };\n  }\n\n  function parseSpecifier(d, specifier, string, j) {\n    var i = 0,\n        n = specifier.length,\n        m = string.length,\n        c,\n        parse;\n\n    while (i < n) {\n      if (j >= m) return -1;\n      c = specifier.charCodeAt(i++);\n      if (c === 37) {\n        c = specifier.charAt(i++);\n        parse = parses[c in pads ? specifier.charAt(i++) : c];\n        if (!parse || ((j = parse(d, string, j)) < 0)) return -1;\n      } else if (c != string.charCodeAt(j++)) {\n        return -1;\n      }\n    }\n\n    return j;\n  }\n\n  function parsePeriod(d, string, i) {\n    var n = periodRe.exec(string.slice(i));\n    return n ? (d.p = periodLookup.get(n[0].toLowerCase()), i + n[0].length) : -1;\n  }\n\n  function parseShortWeekday(d, string, i) {\n    var n = shortWeekdayRe.exec(string.slice(i));\n    return n ? (d.w = shortWeekdayLookup.get(n[0].toLowerCase()), i + n[0].length) : -1;\n  }\n\n  function parseWeekday(d, string, i) {\n    var n = weekdayRe.exec(string.slice(i));\n    return n ? (d.w = weekdayLookup.get(n[0].toLowerCase()), i + n[0].length) : -1;\n  }\n\n  function parseShortMonth(d, string, i) {\n    var n = shortMonthRe.exec(string.slice(i));\n    return n ? (d.m = shortMonthLookup.get(n[0].toLowerCase()), i + n[0].length) : -1;\n  }\n\n  function parseMonth(d, string, i) {\n    var n = monthRe.exec(string.slice(i));\n    return n ? (d.m = monthLookup.get(n[0].toLowerCase()), i + n[0].length) : -1;\n  }\n\n  function parseLocaleDateTime(d, string, i) {\n    return parseSpecifier(d, locale_dateTime, string, i);\n  }\n\n  function parseLocaleDate(d, string, i) {\n    return parseSpecifier(d, locale_date, string, i);\n  }\n\n  function parseLocaleTime(d, string, i) {\n    return parseSpecifier(d, locale_time, string, i);\n  }\n\n  function formatShortWeekday(d) {\n    return locale_shortWeekdays[d.getDay()];\n  }\n\n  function formatWeekday(d) {\n    return locale_weekdays[d.getDay()];\n  }\n\n  function formatShortMonth(d) {\n    return locale_shortMonths[d.getMonth()];\n  }\n\n  function formatMonth(d) {\n    return locale_months[d.getMonth()];\n  }\n\n  function formatPeriod(d) {\n    return locale_periods[+(d.getHours() >= 12)];\n  }\n\n  function formatQuarter(d) {\n    return 1 + ~~(d.getMonth() / 3);\n  }\n\n  function formatUTCShortWeekday(d) {\n    return locale_shortWeekdays[d.getUTCDay()];\n  }\n\n  function formatUTCWeekday(d) {\n    return locale_weekdays[d.getUTCDay()];\n  }\n\n  function formatUTCShortMonth(d) {\n    return locale_shortMonths[d.getUTCMonth()];\n  }\n\n  function formatUTCMonth(d) {\n    return locale_months[d.getUTCMonth()];\n  }\n\n  function formatUTCPeriod(d) {\n    return locale_periods[+(d.getUTCHours() >= 12)];\n  }\n\n  function formatUTCQuarter(d) {\n    return 1 + ~~(d.getUTCMonth() / 3);\n  }\n\n  return {\n    format: function(specifier) {\n      var f = newFormat(specifier += \"\", formats);\n      f.toString = function() { return specifier; };\n      return f;\n    },\n    parse: function(specifier) {\n      var p = newParse(specifier += \"\", false);\n      p.toString = function() { return specifier; };\n      return p;\n    },\n    utcFormat: function(specifier) {\n      var f = newFormat(specifier += \"\", utcFormats);\n      f.toString = function() { return specifier; };\n      return f;\n    },\n    utcParse: function(specifier) {\n      var p = newParse(specifier += \"\", true);\n      p.toString = function() { return specifier; };\n      return p;\n    }\n  };\n}\n\nvar pads = {\"-\": \"\", \"_\": \" \", \"0\": \"0\"},\n    numberRe = /^\\s*\\d+/, // note: ignores next directive\n    percentRe = /^%/,\n    requoteRe = /[\\\\^$*+?|[\\]().{}]/g;\n\nfunction pad(value, fill, width) {\n  var sign = value < 0 ? \"-\" : \"\",\n      string = (sign ? -value : value) + \"\",\n      length = string.length;\n  return sign + (length < width ? new Array(width - length + 1).join(fill) + string : string);\n}\n\nfunction requote(s) {\n  return s.replace(requoteRe, \"\\\\$&\");\n}\n\nfunction formatRe(names) {\n  return new RegExp(\"^(?:\" + names.map(requote).join(\"|\") + \")\", \"i\");\n}\n\nfunction formatLookup(names) {\n  return new Map(names.map((name, i) => [name.toLowerCase(), i]));\n}\n\nfunction parseWeekdayNumberSunday(d, string, i) {\n  var n = numberRe.exec(string.slice(i, i + 1));\n  return n ? (d.w = +n[0], i + n[0].length) : -1;\n}\n\nfunction parseWeekdayNumberMonday(d, string, i) {\n  var n = numberRe.exec(string.slice(i, i + 1));\n  return n ? (d.u = +n[0], i + n[0].length) : -1;\n}\n\nfunction parseWeekNumberSunday(d, string, i) {\n  var n = numberRe.exec(string.slice(i, i + 2));\n  return n ? (d.U = +n[0], i + n[0].length) : -1;\n}\n\nfunction parseWeekNumberISO(d, string, i) {\n  var n = numberRe.exec(string.slice(i, i + 2));\n  return n ? (d.V = +n[0], i + n[0].length) : -1;\n}\n\nfunction parseWeekNumberMonday(d, string, i) {\n  var n = numberRe.exec(string.slice(i, i + 2));\n  return n ? (d.W = +n[0], i + n[0].length) : -1;\n}\n\nfunction parseFullYear(d, string, i) {\n  var n = numberRe.exec(string.slice(i, i + 4));\n  return n ? (d.y = +n[0], i + n[0].length) : -1;\n}\n\nfunction parseYear(d, string, i) {\n  var n = numberRe.exec(string.slice(i, i + 2));\n  return n ? (d.y = +n[0] + (+n[0] > 68 ? 1900 : 2000), i + n[0].length) : -1;\n}\n\nfunction parseZone(d, string, i) {\n  var n = /^(Z)|([+-]\\d\\d)(?::?(\\d\\d))?/.exec(string.slice(i, i + 6));\n  return n ? (d.Z = n[1] ? 0 : -(n[2] + (n[3] || \"00\")), i + n[0].length) : -1;\n}\n\nfunction parseQuarter(d, string, i) {\n  var n = numberRe.exec(string.slice(i, i + 1));\n  return n ? (d.q = n[0] * 3 - 3, i + n[0].length) : -1;\n}\n\nfunction parseMonthNumber(d, string, i) {\n  var n = numberRe.exec(string.slice(i, i + 2));\n  return n ? (d.m = n[0] - 1, i + n[0].length) : -1;\n}\n\nfunction parseDayOfMonth(d, string, i) {\n  var n = numberRe.exec(string.slice(i, i + 2));\n  return n ? (d.d = +n[0], i + n[0].length) : -1;\n}\n\nfunction parseDayOfYear(d, string, i) {\n  var n = numberRe.exec(string.slice(i, i + 3));\n  return n ? (d.m = 0, d.d = +n[0], i + n[0].length) : -1;\n}\n\nfunction parseHour24(d, string, i) {\n  var n = numberRe.exec(string.slice(i, i + 2));\n  return n ? (d.H = +n[0], i + n[0].length) : -1;\n}\n\nfunction parseMinutes(d, string, i) {\n  var n = numberRe.exec(string.slice(i, i + 2));\n  return n ? (d.M = +n[0], i + n[0].length) : -1;\n}\n\nfunction parseSeconds(d, string, i) {\n  var n = numberRe.exec(string.slice(i, i + 2));\n  return n ? (d.S = +n[0], i + n[0].length) : -1;\n}\n\nfunction parseMilliseconds(d, string, i) {\n  var n = numberRe.exec(string.slice(i, i + 3));\n  return n ? (d.L = +n[0], i + n[0].length) : -1;\n}\n\nfunction parseMicroseconds(d, string, i) {\n  var n = numberRe.exec(string.slice(i, i + 6));\n  return n ? (d.L = Math.floor(n[0] / 1000), i + n[0].length) : -1;\n}\n\nfunction parseLiteralPercent(d, string, i) {\n  var n = percentRe.exec(string.slice(i, i + 1));\n  return n ? i + n[0].length : -1;\n}\n\nfunction parseUnixTimestamp(d, string, i) {\n  var n = numberRe.exec(string.slice(i));\n  return n ? (d.Q = +n[0], i + n[0].length) : -1;\n}\n\nfunction parseUnixTimestampSeconds(d, string, i) {\n  var n = numberRe.exec(string.slice(i));\n  return n ? (d.s = +n[0], i + n[0].length) : -1;\n}\n\nfunction formatDayOfMonth(d, p) {\n  return pad(d.getDate(), p, 2);\n}\n\nfunction formatHour24(d, p) {\n  return pad(d.getHours(), p, 2);\n}\n\nfunction formatHour12(d, p) {\n  return pad(d.getHours() % 12 || 12, p, 2);\n}\n\nfunction formatDayOfYear(d, p) {\n  return pad(1 + d3_time__WEBPACK_IMPORTED_MODULE_0__[\"timeDay\"].count(Object(d3_time__WEBPACK_IMPORTED_MODULE_0__[\"timeYear\"])(d), d), p, 3);\n}\n\nfunction formatMilliseconds(d, p) {\n  return pad(d.getMilliseconds(), p, 3);\n}\n\nfunction formatMicroseconds(d, p) {\n  return formatMilliseconds(d, p) + \"000\";\n}\n\nfunction formatMonthNumber(d, p) {\n  return pad(d.getMonth() + 1, p, 2);\n}\n\nfunction formatMinutes(d, p) {\n  return pad(d.getMinutes(), p, 2);\n}\n\nfunction formatSeconds(d, p) {\n  return pad(d.getSeconds(), p, 2);\n}\n\nfunction formatWeekdayNumberMonday(d) {\n  var day = d.getDay();\n  return day === 0 ? 7 : day;\n}\n\nfunction formatWeekNumberSunday(d, p) {\n  return pad(d3_time__WEBPACK_IMPORTED_MODULE_0__[\"timeSunday\"].count(Object(d3_time__WEBPACK_IMPORTED_MODULE_0__[\"timeYear\"])(d) - 1, d), p, 2);\n}\n\nfunction dISO(d) {\n  var day = d.getDay();\n  return (day >= 4 || day === 0) ? Object(d3_time__WEBPACK_IMPORTED_MODULE_0__[\"timeThursday\"])(d) : d3_time__WEBPACK_IMPORTED_MODULE_0__[\"timeThursday\"].ceil(d);\n}\n\nfunction formatWeekNumberISO(d, p) {\n  d = dISO(d);\n  return pad(d3_time__WEBPACK_IMPORTED_MODULE_0__[\"timeThursday\"].count(Object(d3_time__WEBPACK_IMPORTED_MODULE_0__[\"timeYear\"])(d), d) + (Object(d3_time__WEBPACK_IMPORTED_MODULE_0__[\"timeYear\"])(d).getDay() === 4), p, 2);\n}\n\nfunction formatWeekdayNumberSunday(d) {\n  return d.getDay();\n}\n\nfunction formatWeekNumberMonday(d, p) {\n  return pad(d3_time__WEBPACK_IMPORTED_MODULE_0__[\"timeMonday\"].count(Object(d3_time__WEBPACK_IMPORTED_MODULE_0__[\"timeYear\"])(d) - 1, d), p, 2);\n}\n\nfunction formatYear(d, p) {\n  return pad(d.getFullYear() % 100, p, 2);\n}\n\nfunction formatYearISO(d, p) {\n  d = dISO(d);\n  return pad(d.getFullYear() % 100, p, 2);\n}\n\nfunction formatFullYear(d, p) {\n  return pad(d.getFullYear() % 10000, p, 4);\n}\n\nfunction formatFullYearISO(d, p) {\n  var day = d.getDay();\n  d = (day >= 4 || day === 0) ? Object(d3_time__WEBPACK_IMPORTED_MODULE_0__[\"timeThursday\"])(d) : d3_time__WEBPACK_IMPORTED_MODULE_0__[\"timeThursday\"].ceil(d);\n  return pad(d.getFullYear() % 10000, p, 4);\n}\n\nfunction formatZone(d) {\n  var z = d.getTimezoneOffset();\n  return (z > 0 ? \"-\" : (z *= -1, \"+\"))\n      + pad(z / 60 | 0, \"0\", 2)\n      + pad(z % 60, \"0\", 2);\n}\n\nfunction formatUTCDayOfMonth(d, p) {\n  return pad(d.getUTCDate(), p, 2);\n}\n\nfunction formatUTCHour24(d, p) {\n  return pad(d.getUTCHours(), p, 2);\n}\n\nfunction formatUTCHour12(d, p) {\n  return pad(d.getUTCHours() % 12 || 12, p, 2);\n}\n\nfunction formatUTCDayOfYear(d, p) {\n  return pad(1 + d3_time__WEBPACK_IMPORTED_MODULE_0__[\"utcDay\"].count(Object(d3_time__WEBPACK_IMPORTED_MODULE_0__[\"utcYear\"])(d), d), p, 3);\n}\n\nfunction formatUTCMilliseconds(d, p) {\n  return pad(d.getUTCMilliseconds(), p, 3);\n}\n\nfunction formatUTCMicroseconds(d, p) {\n  return formatUTCMilliseconds(d, p) + \"000\";\n}\n\nfunction formatUTCMonthNumber(d, p) {\n  return pad(d.getUTCMonth() + 1, p, 2);\n}\n\nfunction formatUTCMinutes(d, p) {\n  return pad(d.getUTCMinutes(), p, 2);\n}\n\nfunction formatUTCSeconds(d, p) {\n  return pad(d.getUTCSeconds(), p, 2);\n}\n\nfunction formatUTCWeekdayNumberMonday(d) {\n  var dow = d.getUTCDay();\n  return dow === 0 ? 7 : dow;\n}\n\nfunction formatUTCWeekNumberSunday(d, p) {\n  return pad(d3_time__WEBPACK_IMPORTED_MODULE_0__[\"utcSunday\"].count(Object(d3_time__WEBPACK_IMPORTED_MODULE_0__[\"utcYear\"])(d) - 1, d), p, 2);\n}\n\nfunction UTCdISO(d) {\n  var day = d.getUTCDay();\n  return (day >= 4 || day === 0) ? Object(d3_time__WEBPACK_IMPORTED_MODULE_0__[\"utcThursday\"])(d) : d3_time__WEBPACK_IMPORTED_MODULE_0__[\"utcThursday\"].ceil(d);\n}\n\nfunction formatUTCWeekNumberISO(d, p) {\n  d = UTCdISO(d);\n  return pad(d3_time__WEBPACK_IMPORTED_MODULE_0__[\"utcThursday\"].count(Object(d3_time__WEBPACK_IMPORTED_MODULE_0__[\"utcYear\"])(d), d) + (Object(d3_time__WEBPACK_IMPORTED_MODULE_0__[\"utcYear\"])(d).getUTCDay() === 4), p, 2);\n}\n\nfunction formatUTCWeekdayNumberSunday(d) {\n  return d.getUTCDay();\n}\n\nfunction formatUTCWeekNumberMonday(d, p) {\n  return pad(d3_time__WEBPACK_IMPORTED_MODULE_0__[\"utcMonday\"].count(Object(d3_time__WEBPACK_IMPORTED_MODULE_0__[\"utcYear\"])(d) - 1, d), p, 2);\n}\n\nfunction formatUTCYear(d, p) {\n  return pad(d.getUTCFullYear() % 100, p, 2);\n}\n\nfunction formatUTCYearISO(d, p) {\n  d = UTCdISO(d);\n  return pad(d.getUTCFullYear() % 100, p, 2);\n}\n\nfunction formatUTCFullYear(d, p) {\n  return pad(d.getUTCFullYear() % 10000, p, 4);\n}\n\nfunction formatUTCFullYearISO(d, p) {\n  var day = d.getUTCDay();\n  d = (day >= 4 || day === 0) ? Object(d3_time__WEBPACK_IMPORTED_MODULE_0__[\"utcThursday\"])(d) : d3_time__WEBPACK_IMPORTED_MODULE_0__[\"utcThursday\"].ceil(d);\n  return pad(d.getUTCFullYear() % 10000, p, 4);\n}\n\nfunction formatUTCZone() {\n  return \"+0000\";\n}\n\nfunction formatLiteralPercent() {\n  return \"%\";\n}\n\nfunction formatUnixTimestamp(d) {\n  return +d;\n}\n\nfunction formatUnixTimestampSeconds(d) {\n  return Math.floor(+d / 1000);\n}\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,[encoded data, 31004 characters]\n//# sourceURL=webpack-internal:///./node_modules/vega/node_modules/d3-time-format/src/locale.js\n");

/***/ }),

/***/ "./node_modules/vega/node_modules/d3-time/src/day.js":
/*!***********************************************************!*\
  !*** ./node_modules/vega/node_modules/d3-time/src/day.js ***!
  \***********************************************************/
/*! exports provided: default, days */
/***/ (function(module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"days\", function() { return days; });\n/* harmony import */ var _interval_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./interval.js */ \"./node_modules/vega/node_modules/d3-time/src/interval.js\");\n/* harmony import */ var _duration_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./duration.js */ \"./node_modules/vega/node_modules/d3-time/src/duration.js\");\n\n\n\nvar day = Object(_interval_js__WEBPACK_IMPORTED_MODULE_0__[\"default\"])(\n  date => date.setHours(0, 0, 0, 0),\n  (date, step) => date.setDate(date.getDate() + step),\n  (start, end) => (end - start - (end.getTimezoneOffset() - start.getTimezoneOffset()) * _duration_js__WEBPACK_IMPORTED_MODULE_1__[\"durationMinute\"]) / _duration_js__WEBPACK_IMPORTED_MODULE_1__[\"durationDay\"],\n  date => date.getDate() - 1\n);\n\n/* harmony default export */ __webpack_exports__[\"default\"] = (day);\nvar days = day.range;\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvdmVnYS9ub2RlX21vZHVsZXMvZDMtdGltZS9zcmMvZGF5LmpzLmpzIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL3ZlZ2Evbm9kZV9tb2R1bGVzL2QzLXRpbWUvc3JjL2RheS5qcz81ZDUzIl0sInNvdXJjZXNDb250ZW50IjpbImltcG9ydCBpbnRlcnZhbCBmcm9tIFwiLi9pbnRlcnZhbC5qc1wiO1xuaW1wb3J0IHtkdXJhdGlvbkRheSwgZHVyYXRpb25NaW51dGV9IGZyb20gXCIuL2R1cmF0aW9uLmpzXCI7XG5cbnZhciBkYXkgPSBpbnRlcnZhbChcbiAgZGF0ZSA9PiBkYXRlLnNldEhvdXJzKDAsIDAsIDAsIDApLFxuICAoZGF0ZSwgc3RlcCkgPT4gZGF0ZS5zZXREYXRlKGRhdGUuZ2V0RGF0ZSgpICsgc3RlcCksXG4gIChzdGFydCwgZW5kKSA9PiAoZW5kIC0gc3RhcnQgLSAoZW5kLmdldFRpbWV6b25lT2Zmc2V0KCkgLSBzdGFydC5nZXRUaW1lem9uZU9mZnNldCgpKSAqIGR1cmF0aW9uTWludXRlKSAvIGR1cmF0aW9uRGF5LFxuICBkYXRlID0+IGRhdGUuZ2V0RGF0ZSgpIC0gMVxuKTtcblxuZXhwb3J0IGRlZmF1bHQgZGF5O1xuZXhwb3J0IHZhciBkYXlzID0gZGF5LnJhbmdlO1xuIl0sIm1hcHBpbmdzIjoiQUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTsiLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///./node_modules/vega/node_modules/d3-time/src/day.js\n");

/***/ }),

/***/ "./node_modules/vega/node_modules/d3-time/src/duration.js":
/*!****************************************************************!*\
  !*** ./node_modules/vega/node_modules/d3-time/src/duration.js ***!
  \****************************************************************/
/*! exports provided: durationSecond, durationMinute, durationHour, durationDay, durationWeek, durationMonth, durationYear */
/***/ (function(module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"durationSecond\", function() { return durationSecond; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"durationMinute\", function() { return durationMinute; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"durationHour\", function() { return durationHour; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"durationDay\", function() { return durationDay; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"durationWeek\", function() { return durationWeek; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"durationMonth\", function() { return durationMonth; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"durationYear\", function() { return durationYear; });\nconst durationSecond = 1000;\nconst durationMinute = durationSecond * 60;\nconst durationHour = durationMinute * 60;\nconst durationDay = durationHour * 24;\nconst durationWeek = durationDay * 7;\nconst durationMonth = durationDay * 30;\nconst durationYear = durationDay * 365;\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvdmVnYS9ub2RlX21vZHVsZXMvZDMtdGltZS9zcmMvZHVyYXRpb24uanMuanMiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvdmVnYS9ub2RlX21vZHVsZXMvZDMtdGltZS9zcmMvZHVyYXRpb24uanM/OTgzMiJdLCJzb3VyY2VzQ29udGVudCI6WyJleHBvcnQgY29uc3QgZHVyYXRpb25TZWNvbmQgPSAxMDAwO1xuZXhwb3J0IGNvbnN0IGR1cmF0aW9uTWludXRlID0gZHVyYXRpb25TZWNvbmQgKiA2MDtcbmV4cG9ydCBjb25zdCBkdXJhdGlvbkhvdXIgPSBkdXJhdGlvbk1pbnV0ZSAqIDYwO1xuZXhwb3J0IGNvbnN0IGR1cmF0aW9uRGF5ID0gZHVyYXRpb25Ib3VyICogMjQ7XG5leHBvcnQgY29uc3QgZHVyYXRpb25XZWVrID0gZHVyYXRpb25EYXkgKiA3O1xuZXhwb3J0IGNvbnN0IGR1cmF0aW9uTW9udGggPSBkdXJhdGlvbkRheSAqIDMwO1xuZXhwb3J0IGNvbnN0IGR1cmF0aW9uWWVhciA9IGR1cmF0aW9uRGF5ICogMzY1O1xuIl0sIm1hcHBpbmdzIjoiQUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7Iiwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///./node_modules/vega/node_modules/d3-time/src/duration.js\n");

/***/ }),

/***/ "./node_modules/vega/node_modules/d3-time/src/hour.js":
/*!************************************************************!*\
  !*** ./node_modules/vega/node_modules/d3-time/src/hour.js ***!
  \************************************************************/
/*! exports provided: default, hours */
/***/ (function(module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"hours\", function() { return hours; });\n/* harmony import */ var _interval_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./interval.js */ \"./node_modules/vega/node_modules/d3-time/src/interval.js\");\n/* harmony import */ var _duration_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./duration.js */ \"./node_modules/vega/node_modules/d3-time/src/duration.js\");\n\n\n\nvar hour = Object(_interval_js__WEBPACK_IMPORTED_MODULE_0__[\"default\"])(function(date) {\n  date.setTime(date - date.getMilliseconds() - date.getSeconds() * _duration_js__WEBPACK_IMPORTED_MODULE_1__[\"durationSecond\"] - date.getMinutes() * _duration_js__WEBPACK_IMPORTED_MODULE_1__[\"durationMinute\"]);\n}, function(date, step) {\n  date.setTime(+date + step * _duration_js__WEBPACK_IMPORTED_MODULE_1__[\"durationHour\"]);\n}, function(start, end) {\n  return (end - start) / _duration_js__WEBPACK_IMPORTED_MODULE_1__[\"durationHour\"];\n}, function(date) {\n  return date.getHours();\n});\n\n/* harmony default export */ __webpack_exports__[\"default\"] = (hour);\nvar hours = hour.range;\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvdmVnYS9ub2RlX21vZHVsZXMvZDMtdGltZS9zcmMvaG91ci5qcy5qcyIsInNvdXJjZXMiOlsid2VicGFjazovLy8uL25vZGVfbW9kdWxlcy92ZWdhL25vZGVfbW9kdWxlcy9kMy10aW1lL3NyYy9ob3VyLmpzP2NjMGYiXSwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IGludGVydmFsIGZyb20gXCIuL2ludGVydmFsLmpzXCI7XG5pbXBvcnQge2R1cmF0aW9uSG91ciwgZHVyYXRpb25NaW51dGUsIGR1cmF0aW9uU2Vjb25kfSBmcm9tIFwiLi9kdXJhdGlvbi5qc1wiO1xuXG52YXIgaG91ciA9IGludGVydmFsKGZ1bmN0aW9uKGRhdGUpIHtcbiAgZGF0ZS5zZXRUaW1lKGRhdGUgLSBkYXRlLmdldE1pbGxpc2Vjb25kcygpIC0gZGF0ZS5nZXRTZWNvbmRzKCkgKiBkdXJhdGlvblNlY29uZCAtIGRhdGUuZ2V0TWludXRlcygpICogZHVyYXRpb25NaW51dGUpO1xufSwgZnVuY3Rpb24oZGF0ZSwgc3RlcCkge1xuICBkYXRlLnNldFRpbWUoK2RhdGUgKyBzdGVwICogZHVyYXRpb25Ib3VyKTtcbn0sIGZ1bmN0aW9uKHN0YXJ0LCBlbmQpIHtcbiAgcmV0dXJuIChlbmQgLSBzdGFydCkgLyBkdXJhdGlvbkhvdXI7XG59LCBmdW5jdGlvbihkYXRlKSB7XG4gIHJldHVybiBkYXRlLmdldEhvdXJzKCk7XG59KTtcblxuZXhwb3J0IGRlZmF1bHQgaG91cjtcbmV4cG9ydCB2YXIgaG91cnMgPSBob3VyLnJhbmdlO1xuIl0sIm1hcHBpbmdzIjoiQUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTsiLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///./node_modules/vega/node_modules/d3-time/src/hour.js\n");

/***/ }),

/***/ "./node_modules/vega/node_modules/d3-time/src/index.js":
/*!*************************************************************!*\
  !*** ./node_modules/vega/node_modules/d3-time/src/index.js ***!
  \*************************************************************/
/*! exports provided: timeInterval, timeMillisecond, timeMilliseconds, utcMillisecond, utcMilliseconds, timeSecond, timeSeconds, utcSecond, utcSeconds, timeMinute, timeMinutes, timeHour, timeHours, timeDay, timeDays, timeWeek, timeWeeks, timeSunday, timeSundays, timeMonday, timeMondays, timeTuesday, timeTuesdays, timeWednesday, timeWednesdays, timeThursday, timeThursdays, timeFriday, timeFridays, timeSaturday, timeSaturdays, timeMonth, timeMonths, timeYear, timeYears, utcMinute, utcMinutes, utcHour, utcHours, utcDay, utcDays, utcWeek, utcWeeks, utcSunday, utcSundays, utcMonday, utcMondays, utcTuesday, utcTuesdays, utcWednesday, utcWednesdays, utcThursday, utcThursdays, utcFriday, utcFridays, utcSaturday, utcSaturdays, utcMonth, utcMonths, utcYear, utcYears, utcTicks, utcTickInterval, timeTicks, timeTickInterval */
/***/ (function(module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _interval_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./interval.js */ \"./node_modules/vega/node_modules/d3-time/src/interval.js\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"timeInterval\", function() { return _interval_js__WEBPACK_IMPORTED_MODULE_0__[\"default\"]; });\n\n/* harmony import */ var _millisecond_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./millisecond.js */ \"./node_modules/vega/node_modules/d3-time/src/millisecond.js\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"timeMillisecond\", function() { return _millisecond_js__WEBPACK_IMPORTED_MODULE_1__[\"default\"]; });\n\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"timeMilliseconds\", function() { return _millisecond_js__WEBPACK_IMPORTED_MODULE_1__[\"milliseconds\"]; });\n\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"utcMillisecond\", function() { return _millisecond_js__WEBPACK_IMPORTED_MODULE_1__[\"default\"]; });\n\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"utcMilliseconds\", function() { return _millisecond_js__WEBPACK_IMPORTED_MODULE_1__[\"milliseconds\"]; });\n\n/* harmony import */ var _second_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./second.js */ \"./node_modules/vega/node_modules/d3-time/src/second.js\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"timeSecond\", function() { return _second_js__WEBPACK_IMPORTED_MODULE_2__[\"default\"]; });\n\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"timeSeconds\", function() { return _second_js__WEBPACK_IMPORTED_MODULE_2__[\"seconds\"]; });\n\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"utcSecond\", function() { return _second_js__WEBPACK_IMPORTED_MODULE_2__[\"default\"]; });\n\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"utcSeconds\", function() { return _second_js__WEBPACK_IMPORTED_MODULE_2__[\"seconds\"]; });\n\n/* harmony import */ var _minute_js__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ./minute.js */ \"./node_modules/vega/node_modules/d3-time/src/minute.js\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"timeMinute\", function() { return _minute_js__WEBPACK_IMPORTED_MODULE_3__[\"default\"]; });\n\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"timeMinutes\", function() { return _minute_js__WEBPACK_IMPORTED_MODULE_3__[\"minutes\"]; });\n\n/* harmony import */ var _hour_js__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ./hour.js */ \"./node_modules/vega/node_modules/d3-time/src/hour.js\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"timeHour\", function() { return _hour_js__WEBPACK_IMPORTED_MODULE_4__[\"default\"]; });\n\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"timeHours\", function() { return _hour_js__WEBPACK_IMPORTED_MODULE_4__[\"hours\"]; });\n\n/* harmony import */ var _day_js__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! ./day.js */ \"./node_modules/vega/node_modules/d3-time/src/day.js\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"timeDay\", function() { return _day_js__WEBPACK_IMPORTED_MODULE_5__[\"default\"]; });\n\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"timeDays\", function() { return _day_js__WEBPACK_IMPORTED_MODULE_5__[\"days\"]; });\n\n/* harmony import */ var _week_js__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! ./week.js */ \"./node_modules/vega/node_modules/d3-time/src/week.js\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"timeWeek\", function() { return _week_js__WEBPACK_IMPORTED_MODULE_6__[\"sunday\"]; });\n\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"timeWeeks\", function() { return _week_js__WEBPACK_IMPORTED_MODULE_6__[\"sundays\"]; });\n\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"timeSunday\", function() { return _week_js__WEBPACK_IMPORTED_MODULE_6__[\"sunday\"]; });\n\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"timeSundays\", function() { return _week_js__WEBPACK_IMPORTED_MODULE_6__[\"sundays\"]; });\n\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"timeMonday\", function() { return _week_js__WEBPACK_IMPORTED_MODULE_6__[\"monday\"]; });\n\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"timeMondays\", function() { return _week_js__WEBPACK_IMPORTED_MODULE_6__[\"mondays\"]; });\n\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"timeTuesday\", function() { return _week_js__WEBPACK_IMPORTED_MODULE_6__[\"tuesday\"]; });\n\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"timeTuesdays\", function() { return _week_js__WEBPACK_IMPORTED_MODULE_6__[\"tuesdays\"]; });\n\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"timeWednesday\", function() { return _week_js__WEBPACK_IMPORTED_MODULE_6__[\"wednesday\"]; });\n\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"timeWednesdays\", function() { return _week_js__WEBPACK_IMPORTED_MODULE_6__[\"wednesdays\"]; });\n\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"timeThursday\", function() { return _week_js__WEBPACK_IMPORTED_MODULE_6__[\"thursday\"]; });\n\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"timeThursdays\", function() { return _week_js__WEBPACK_IMPORTED_MODULE_6__[\"thursdays\"]; });\n\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"timeFriday\", function() { return _week_js__WEBPACK_IMPORTED_MODULE_6__[\"friday\"]; });\n\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"timeFridays\", function() { return _week_js__WEBPACK_IMPORTED_MODULE_6__[\"fridays\"]; });\n\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"timeSaturday\", function() { return _week_js__WEBPACK_IMPORTED_MODULE_6__[\"saturday\"]; });\n\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"timeSaturdays\", function() { return _week_js__WEBPACK_IMPORTED_MODULE_6__[\"saturdays\"]; });\n\n/* harmony import */ var _month_js__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! ./month.js */ \"./node_modules/vega/node_modules/d3-time/src/month.js\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"timeMonth\", function() { return _month_js__WEBPACK_IMPORTED_MODULE_7__[\"default\"]; });\n\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"timeMonths\", function() { return _month_js__WEBPACK_IMPORTED_MODULE_7__[\"months\"]; });\n\n/* harmony import */ var _year_js__WEBPACK_IMPORTED_MODULE_8__ = __webpack_require__(/*! ./year.js */ \"./node_modules/vega/node_modules/d3-time/src/year.js\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"timeYear\", function() { return _year_js__WEBPACK_IMPORTED_MODULE_8__[\"default\"]; });\n\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"timeYears\", function() { return _year_js__WEBPACK_IMPORTED_MODULE_8__[\"years\"]; });\n\n/* harmony import */ var _utcMinute_js__WEBPACK_IMPORTED_MODULE_9__ = __webpack_require__(/*! ./utcMinute.js */ \"./node_modules/vega/node_modules/d3-time/src/utcMinute.js\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"utcMinute\", function() { return _utcMinute_js__WEBPACK_IMPORTED_MODULE_9__[\"default\"]; });\n\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"utcMinutes\", function() { return _utcMinute_js__WEBPACK_IMPORTED_MODULE_9__[\"utcMinutes\"]; });\n\n/* harmony import */ var _utcHour_js__WEBPACK_IMPORTED_MODULE_10__ = __webpack_require__(/*! ./utcHour.js */ \"./node_modules/vega/node_modules/d3-time/src/utcHour.js\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"utcHour\", function() { return _utcHour_js__WEBPACK_IMPORTED_MODULE_10__[\"default\"]; });\n\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"utcHours\", function() { return _utcHour_js__WEBPACK_IMPORTED_MODULE_10__[\"utcHours\"]; });\n\n/* harmony import */ var _utcDay_js__WEBPACK_IMPORTED_MODULE_11__ = __webpack_require__(/*! ./utcDay.js */ \"./node_modules/vega/node_modules/d3-time/src/utcDay.js\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"utcDay\", function() { return _utcDay_js__WEBPACK_IMPORTED_MODULE_11__[\"default\"]; });\n\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"utcDays\", function() { return _utcDay_js__WEBPACK_IMPORTED_MODULE_11__[\"utcDays\"]; });\n\n/* harmony import */ var _utcWeek_js__WEBPACK_IMPORTED_MODULE_12__ = __webpack_require__(/*! ./utcWeek.js */ \"./node_modules/vega/node_modules/d3-time/src/utcWeek.js\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"utcWeek\", function() { return _utcWeek_js__WEBPACK_IMPORTED_MODULE_12__[\"utcSunday\"]; });\n\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"utcWeeks\", function() { return _utcWeek_js__WEBPACK_IMPORTED_MODULE_12__[\"utcSundays\"]; });\n\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"utcSunday\", function() { return _utcWeek_js__WEBPACK_IMPORTED_MODULE_12__[\"utcSunday\"]; });\n\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"utcSundays\", function() { return _utcWeek_js__WEBPACK_IMPORTED_MODULE_12__[\"utcSundays\"]; });\n\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"utcMonday\", function() { return _utcWeek_js__WEBPACK_IMPORTED_MODULE_12__[\"utcMonday\"]; });\n\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"utcMondays\", function() { return _utcWeek_js__WEBPACK_IMPORTED_MODULE_12__[\"utcMondays\"]; });\n\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"utcTuesday\", function() { return _utcWeek_js__WEBPACK_IMPORTED_MODULE_12__[\"utcTuesday\"]; });\n\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"utcTuesdays\", function() { return _utcWeek_js__WEBPACK_IMPORTED_MODULE_12__[\"utcTuesdays\"]; });\n\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"utcWednesday\", function() { return _utcWeek_js__WEBPACK_IMPORTED_MODULE_12__[\"utcWednesday\"]; });\n\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"utcWednesdays\", function() { return _utcWeek_js__WEBPACK_IMPORTED_MODULE_12__[\"utcWednesdays\"]; });\n\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"utcThursday\", function() { return _utcWeek_js__WEBPACK_IMPORTED_MODULE_12__[\"utcThursday\"]; });\n\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"utcThursdays\", function() { return _utcWeek_js__WEBPACK_IMPORTED_MODULE_12__[\"utcThursdays\"]; });\n\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"utcFriday\", function() { return _utcWeek_js__WEBPACK_IMPORTED_MODULE_12__[\"utcFriday\"]; });\n\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"utcFridays\", function() { return _utcWeek_js__WEBPACK_IMPORTED_MODULE_12__[\"utcFridays\"]; });\n\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"utcSaturday\", function() { return _utcWeek_js__WEBPACK_IMPORTED_MODULE_12__[\"utcSaturday\"]; });\n\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"utcSaturdays\", function() { return _utcWeek_js__WEBPACK_IMPORTED_MODULE_12__[\"utcSaturdays\"]; });\n\n/* harmony import */ var _utcMonth_js__WEBPACK_IMPORTED_MODULE_13__ = __webpack_require__(/*! ./utcMonth.js */ \"./node_modules/vega/node_modules/d3-time/src/utcMonth.js\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"utcMonth\", function() { return _utcMonth_js__WEBPACK_IMPORTED_MODULE_13__[\"default\"]; });\n\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"utcMonths\", function() { return _utcMonth_js__WEBPACK_IMPORTED_MODULE_13__[\"utcMonths\"]; });\n\n/* harmony import */ var _utcYear_js__WEBPACK_IMPORTED_MODULE_14__ = __webpack_require__(/*! ./utcYear.js */ \"./node_modules/vega/node_modules/d3-time/src/utcYear.js\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"utcYear\", function() { return _utcYear_js__WEBPACK_IMPORTED_MODULE_14__[\"default\"]; });\n\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"utcYears\", function() { return _utcYear_js__WEBPACK_IMPORTED_MODULE_14__[\"utcYears\"]; });\n\n/* harmony import */ var _ticks_js__WEBPACK_IMPORTED_MODULE_15__ = __webpack_require__(/*! ./ticks.js */ \"./node_modules/vega/node_modules/d3-time/src/ticks.js\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"utcTicks\", function() { return _ticks_js__WEBPACK_IMPORTED_MODULE_15__[\"utcTicks\"]; });\n\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"utcTickInterval\", function() { return _ticks_js__WEBPACK_IMPORTED_MODULE_15__[\"utcTickInterval\"]; });\n\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"timeTicks\", function() { return _ticks_js__WEBPACK_IMPORTED_MODULE_15__[\"timeTicks\"]; });\n\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"timeTickInterval\", function() { return _ticks_js__WEBPACK_IMPORTED_MODULE_15__[\"timeTickInterval\"]; });\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,[encoded data, 4568 characters]\n//# sourceURL=webpack-internal:///./node_modules/vega/node_modules/d3-time/src/index.js\n");

/***/ }),

/***/ "./node_modules/vega/node_modules/d3-time/src/interval.js":
/*!****************************************************************!*\
  !*** ./node_modules/vega/node_modules/d3-time/src/interval.js ***!
  \****************************************************************/
/*! exports provided: default */
/***/ (function(module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"default\", function() { return newInterval; });\nvar t0 = new Date,\n    t1 = new Date;\n\nfunction newInterval(floori, offseti, count, field) {\n\n  function interval(date) {\n    return floori(date = arguments.length === 0 ? new Date : new Date(+date)), date;\n  }\n\n  interval.floor = function(date) {\n    return floori(date = new Date(+date)), date;\n  };\n\n  interval.ceil = function(date) {\n    return floori(date = new Date(date - 1)), offseti(date, 1), floori(date), date;\n  };\n\n  interval.round = function(date) {\n    var d0 = interval(date),\n        d1 = interval.ceil(date);\n    return date - d0 < d1 - date ? d0 : d1;\n  };\n\n  interval.offset = function(date, step) {\n    return offseti(date = new Date(+date), step == null ? 1 : Math.floor(step)), date;\n  };\n\n  interval.range = function(start, stop, step) {\n    var range = [], previous;\n    start = interval.ceil(start);\n    step = step == null ? 1 : Math.floor(step);\n    if (!(start < stop) || !(step > 0)) return range; // also handles Invalid Date\n    do range.push(previous = new Date(+start)), offseti(start, step), floori(start);\n    while (previous < start && start < stop);\n    return range;\n  };\n\n  interval.filter = function(test) {\n    return newInterval(function(date) {\n      if (date >= date) while (floori(date), !test(date)) date.setTime(date - 1);\n    }, function(date, step) {\n      if (date >= date) {\n        if (step < 0) while (++step <= 0) {\n          while (offseti(date, -1), !test(date)) {} // eslint-disable-line no-empty\n        } else while (--step >= 0) {\n          while (offseti(date, +1), !test(date)) {} // eslint-disable-line no-empty\n        }\n      }\n    });\n  };\n\n  if (count) {\n    interval.count = function(start, end) {\n      t0.setTime(+start), t1.setTime(+end);\n      floori(t0), floori(t1);\n      return Math.floor(count(t0, t1));\n    };\n\n    interval.every = function(step) {\n      step = Math.floor(step);\n      return !isFinite(step) || !(step > 0) ? null\n          : !(step > 1) ? interval\n          : interval.filter(field\n              ? function(d) { return field(d) % step === 0; }\n              : function(d) { return interval.count(0, d) % step === 0; });\n    };\n  }\n\n  return interval;\n}\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvdmVnYS9ub2RlX21vZHVsZXMvZDMtdGltZS9zcmMvaW50ZXJ2YWwuanMuanMiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvdmVnYS9ub2RlX21vZHVsZXMvZDMtdGltZS9zcmMvaW50ZXJ2YWwuanM/MDhmMCJdLCJzb3VyY2VzQ29udGVudCI6WyJ2YXIgdDAgPSBuZXcgRGF0ZSxcbiAgICB0MSA9IG5ldyBEYXRlO1xuXG5leHBvcnQgZGVmYXVsdCBmdW5jdGlvbiBuZXdJbnRlcnZhbChmbG9vcmksIG9mZnNldGksIGNvdW50LCBmaWVsZCkge1xuXG4gIGZ1bmN0aW9uIGludGVydmFsKGRhdGUpIHtcbiAgICByZXR1cm4gZmxvb3JpKGRhdGUgPSBhcmd1bWVudHMubGVuZ3RoID09PSAwID8gbmV3IERhdGUgOiBuZXcgRGF0ZSgrZGF0ZSkpLCBkYXRlO1xuICB9XG5cbiAgaW50ZXJ2YWwuZmxvb3IgPSBmdW5jdGlvbihkYXRlKSB7XG4gICAgcmV0dXJuIGZsb29yaShkYXRlID0gbmV3IERhdGUoK2RhdGUpKSwgZGF0ZTtcbiAgfTtcblxuICBpbnRlcnZhbC5jZWlsID0gZnVuY3Rpb24oZGF0ZSkge1xuICAgIHJldHVybiBmbG9vcmkoZGF0ZSA9IG5ldyBEYXRlKGRhdGUgLSAxKSksIG9mZnNldGkoZGF0ZSwgMSksIGZsb29yaShkYXRlKSwgZGF0ZTtcbiAgfTtcblxuICBpbnRlcnZhbC5yb3VuZCA9IGZ1bmN0aW9uKGRhdGUpIHtcbiAgICB2YXIgZDAgPSBpbnRlcnZhbChkYXRlKSxcbiAgICAgICAgZDEgPSBpbnRlcnZhbC5jZWlsKGRhdGUpO1xuICAgIHJldHVybiBkYXRlIC0gZDAgPCBkMSAtIGRhdGUgPyBkMCA6IGQxO1xuICB9O1xuXG4gIGludGVydmFsLm9mZnNldCA9IGZ1bmN0aW9uKGRhdGUsIHN0ZXApIHtcbiAgICByZXR1cm4gb2Zmc2V0aShkYXRlID0gbmV3IERhdGUoK2RhdGUpLCBzdGVwID09IG51bGwgPyAxIDogTWF0aC5mbG9vcihzdGVwKSksIGRhdGU7XG4gIH07XG5cbiAgaW50ZXJ2YWwucmFuZ2UgPSBmdW5jdGlvbihzdGFydCwgc3RvcCwgc3RlcCkge1xuICAgIHZhciByYW5nZSA9IFtdLCBwcmV2aW91cztcbiAgICBzdGFydCA9IGludGVydmFsLmNlaWwoc3RhcnQpO1xuICAgIHN0ZXAgPSBzdGVwID09IG51bGwgPyAxIDogTWF0aC5mbG9vcihzdGVwKTtcbiAgICBpZiAoIShzdGFydCA8IHN0b3ApIHx8ICEoc3RlcCA+IDApKSByZXR1cm4gcmFuZ2U7IC8vIGFsc28gaGFuZGxlcyBJbnZhbGlkIERhdGVcbiAgICBkbyByYW5nZS5wdXNoKHByZXZpb3VzID0gbmV3IERhdGUoK3N0YXJ0KSksIG9mZnNldGkoc3RhcnQsIHN0ZXApLCBmbG9vcmkoc3RhcnQpO1xuICAgIHdoaWxlIChwcmV2aW91cyA8IHN0YXJ0ICYmIHN0YXJ0IDwgc3RvcCk7XG4gICAgcmV0dXJuIHJhbmdlO1xuICB9O1xuXG4gIGludGVydmFsLmZpbHRlciA9IGZ1bmN0aW9uKHRlc3QpIHtcbiAgICByZXR1cm4gbmV3SW50ZXJ2YWwoZnVuY3Rpb24oZGF0ZSkge1xuICAgICAgaWYgKGRhdGUgPj0gZGF0ZSkgd2hpbGUgKGZsb29yaShkYXRlKSwgIXRlc3QoZGF0ZSkpIGRhdGUuc2V0VGltZShkYXRlIC0gMSk7XG4gICAgfSwgZnVuY3Rpb24oZGF0ZSwgc3RlcCkge1xuICAgICAgaWYgKGRhdGUgPj0gZGF0ZSkge1xuICAgICAgICBpZiAoc3RlcCA8IDApIHdoaWxlICgrK3N0ZXAgPD0gMCkge1xuICAgICAgICAgIHdoaWxlIChvZmZzZXRpKGRhdGUsIC0xKSwgIXRlc3QoZGF0ZSkpIHt9IC8vIGVzbGludC1kaXNhYmxlLWxpbmUgbm8tZW1wdHlcbiAgICAgICAgfSBlbHNlIHdoaWxlICgtLXN0ZXAgPj0gMCkge1xuICAgICAgICAgIHdoaWxlIChvZmZzZXRpKGRhdGUsICsxKSwgIXRlc3QoZGF0ZSkpIHt9IC8vIGVzbGludC1kaXNhYmxlLWxpbmUgbm8tZW1wdHlcbiAgICAgICAgfVxuICAgICAgfVxuICAgIH0pO1xuICB9O1xuXG4gIGlmIChjb3VudCkge1xuICAgIGludGVydmFsLmNvdW50ID0gZnVuY3Rpb24oc3RhcnQsIGVuZCkge1xuICAgICAgdDAuc2V0VGltZSgrc3RhcnQpLCB0MS5zZXRUaW1lKCtlbmQpO1xuICAgICAgZmxvb3JpKHQwKSwgZmxvb3JpKHQxKTtcbiAgICAgIHJldHVybiBNYXRoLmZsb29yKGNvdW50KHQwLCB0MSkpO1xuICAgIH07XG5cbiAgICBpbnRlcnZhbC5ldmVyeSA9IGZ1bmN0aW9uKHN0ZXApIHtcbiAgICAgIHN0ZXAgPSBNYXRoLmZsb29yKHN0ZXApO1xuICAgICAgcmV0dXJuICFpc0Zpbml0ZShzdGVwKSB8fCAhKHN0ZXAgPiAwKSA/IG51bGxcbiAgICAgICAgICA6ICEoc3RlcCA+IDEpID8gaW50ZXJ2YWxcbiAgICAgICAgICA6IGludGVydmFsLmZpbHRlcihmaWVsZFxuICAgICAgICAgICAgICA/IGZ1bmN0aW9uKGQpIHsgcmV0dXJuIGZpZWxkKGQpICUgc3RlcCA9PT0gMDsgfVxuICAgICAgICAgICAgICA6IGZ1bmN0aW9uKGQpIHsgcmV0dXJuIGludGVydmFsLmNvdW50KDAsIGQpICUgc3RlcCA9PT0gMDsgfSk7XG4gICAgfTtcbiAgfVxuXG4gIHJldHVybiBpbnRlcnZhbDtcbn1cbiJdLCJtYXBwaW5ncyI6IkFBQUE7QUFBQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOyIsInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///./node_modules/vega/node_modules/d3-time/src/interval.js\n");

/***/ }),

/***/ "./node_modules/vega/node_modules/d3-time/src/millisecond.js":
/*!*******************************************************************!*\
  !*** ./node_modules/vega/node_modules/d3-time/src/millisecond.js ***!
  \*******************************************************************/
/*! exports provided: default, milliseconds */
/***/ (function(module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"milliseconds\", function() { return milliseconds; });\n/* harmony import */ var _interval_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./interval.js */ \"./node_modules/vega/node_modules/d3-time/src/interval.js\");\n\n\nvar millisecond = Object(_interval_js__WEBPACK_IMPORTED_MODULE_0__[\"default\"])(function() {\n  // noop\n}, function(date, step) {\n  date.setTime(+date + step);\n}, function(start, end) {\n  return end - start;\n});\n\n// An optimized implementation for this simple case.\nmillisecond.every = function(k) {\n  k = Math.floor(k);\n  if (!isFinite(k) || !(k > 0)) return null;\n  if (!(k > 1)) return millisecond;\n  return Object(_interval_js__WEBPACK_IMPORTED_MODULE_0__[\"default\"])(function(date) {\n    date.setTime(Math.floor(date / k) * k);\n  }, function(date, step) {\n    date.setTime(+date + step * k);\n  }, function(start, end) {\n    return (end - start) / k;\n  });\n};\n\n/* harmony default export */ __webpack_exports__[\"default\"] = (millisecond);\nvar milliseconds = millisecond.range;\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvdmVnYS9ub2RlX21vZHVsZXMvZDMtdGltZS9zcmMvbWlsbGlzZWNvbmQuanMuanMiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvdmVnYS9ub2RlX21vZHVsZXMvZDMtdGltZS9zcmMvbWlsbGlzZWNvbmQuanM/M2E2MSJdLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgaW50ZXJ2YWwgZnJvbSBcIi4vaW50ZXJ2YWwuanNcIjtcblxudmFyIG1pbGxpc2Vjb25kID0gaW50ZXJ2YWwoZnVuY3Rpb24oKSB7XG4gIC8vIG5vb3Bcbn0sIGZ1bmN0aW9uKGRhdGUsIHN0ZXApIHtcbiAgZGF0ZS5zZXRUaW1lKCtkYXRlICsgc3RlcCk7XG59LCBmdW5jdGlvbihzdGFydCwgZW5kKSB7XG4gIHJldHVybiBlbmQgLSBzdGFydDtcbn0pO1xuXG4vLyBBbiBvcHRpbWl6ZWQgaW1wbGVtZW50YXRpb24gZm9yIHRoaXMgc2ltcGxlIGNhc2UuXG5taWxsaXNlY29uZC5ldmVyeSA9IGZ1bmN0aW9uKGspIHtcbiAgayA9IE1hdGguZmxvb3Ioayk7XG4gIGlmICghaXNGaW5pdGUoaykgfHwgIShrID4gMCkpIHJldHVybiBudWxsO1xuICBpZiAoIShrID4gMSkpIHJldHVybiBtaWxsaXNlY29uZDtcbiAgcmV0dXJuIGludGVydmFsKGZ1bmN0aW9uKGRhdGUpIHtcbiAgICBkYXRlLnNldFRpbWUoTWF0aC5mbG9vcihkYXRlIC8gaykgKiBrKTtcbiAgfSwgZnVuY3Rpb24oZGF0ZSwgc3RlcCkge1xuICAgIGRhdGUuc2V0VGltZSgrZGF0ZSArIHN0ZXAgKiBrKTtcbiAgfSwgZnVuY3Rpb24oc3RhcnQsIGVuZCkge1xuICAgIHJldHVybiAoZW5kIC0gc3RhcnQpIC8gaztcbiAgfSk7XG59O1xuXG5leHBvcnQgZGVmYXVsdCBtaWxsaXNlY29uZDtcbmV4cG9ydCB2YXIgbWlsbGlzZWNvbmRzID0gbWlsbGlzZWNvbmQucmFuZ2U7XG4iXSwibWFwcGluZ3MiOiJBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7Iiwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///./node_modules/vega/node_modules/d3-time/src/millisecond.js\n");

/***/ }),

/***/ "./node_modules/vega/node_modules/d3-time/src/minute.js":
/*!**************************************************************!*\
  !*** ./node_modules/vega/node_modules/d3-time/src/minute.js ***!
  \**************************************************************/
/*! exports provided: default, minutes */
/***/ (function(module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"minutes\", function() { return minutes; });\n/* harmony import */ var _interval_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./interval.js */ \"./node_modules/vega/node_modules/d3-time/src/interval.js\");\n/* harmony import */ var _duration_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./duration.js */ \"./node_modules/vega/node_modules/d3-time/src/duration.js\");\n\n\n\nvar minute = Object(_interval_js__WEBPACK_IMPORTED_MODULE_0__[\"default\"])(function(date) {\n  date.setTime(date - date.getMilliseconds() - date.getSeconds() * _duration_js__WEBPACK_IMPORTED_MODULE_1__[\"durationSecond\"]);\n}, function(date, step) {\n  date.setTime(+date + step * _duration_js__WEBPACK_IMPORTED_MODULE_1__[\"durationMinute\"]);\n}, function(start, end) {\n  return (end - start) / _duration_js__WEBPACK_IMPORTED_MODULE_1__[\"durationMinute\"];\n}, function(date) {\n  return date.getMinutes();\n});\n\n/* harmony default export */ __webpack_exports__[\"default\"] = (minute);\nvar minutes = minute.range;\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvdmVnYS9ub2RlX21vZHVsZXMvZDMtdGltZS9zcmMvbWludXRlLmpzLmpzIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL3ZlZ2Evbm9kZV9tb2R1bGVzL2QzLXRpbWUvc3JjL21pbnV0ZS5qcz8xZmQ4Il0sInNvdXJjZXNDb250ZW50IjpbImltcG9ydCBpbnRlcnZhbCBmcm9tIFwiLi9pbnRlcnZhbC5qc1wiO1xuaW1wb3J0IHtkdXJhdGlvbk1pbnV0ZSwgZHVyYXRpb25TZWNvbmR9IGZyb20gXCIuL2R1cmF0aW9uLmpzXCI7XG5cbnZhciBtaW51dGUgPSBpbnRlcnZhbChmdW5jdGlvbihkYXRlKSB7XG4gIGRhdGUuc2V0VGltZShkYXRlIC0gZGF0ZS5nZXRNaWxsaXNlY29uZHMoKSAtIGRhdGUuZ2V0U2Vjb25kcygpICogZHVyYXRpb25TZWNvbmQpO1xufSwgZnVuY3Rpb24oZGF0ZSwgc3RlcCkge1xuICBkYXRlLnNldFRpbWUoK2RhdGUgKyBzdGVwICogZHVyYXRpb25NaW51dGUpO1xufSwgZnVuY3Rpb24oc3RhcnQsIGVuZCkge1xuICByZXR1cm4gKGVuZCAtIHN0YXJ0KSAvIGR1cmF0aW9uTWludXRlO1xufSwgZnVuY3Rpb24oZGF0ZSkge1xuICByZXR1cm4gZGF0ZS5nZXRNaW51dGVzKCk7XG59KTtcblxuZXhwb3J0IGRlZmF1bHQgbWludXRlO1xuZXhwb3J0IHZhciBtaW51dGVzID0gbWludXRlLnJhbmdlO1xuIl0sIm1hcHBpbmdzIjoiQUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTsiLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///./node_modules/vega/node_modules/d3-time/src/minute.js\n");

/***/ }),

/***/ "./node_modules/vega/node_modules/d3-time/src/month.js":
/*!*************************************************************!*\
  !*** ./node_modules/vega/node_modules/d3-time/src/month.js ***!
  \*************************************************************/
/*! exports provided: default, months */
/***/ (function(module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"months\", function() { return months; });\n/* harmony import */ var _interval_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./interval.js */ \"./node_modules/vega/node_modules/d3-time/src/interval.js\");\n\n\nvar month = Object(_interval_js__WEBPACK_IMPORTED_MODULE_0__[\"default\"])(function(date) {\n  date.setDate(1);\n  date.setHours(0, 0, 0, 0);\n}, function(date, step) {\n  date.setMonth(date.getMonth() + step);\n}, function(start, end) {\n  return end.getMonth() - start.getMonth() + (end.getFullYear() - start.getFullYear()) * 12;\n}, function(date) {\n  return date.getMonth();\n});\n\n/* harmony default export */ __webpack_exports__[\"default\"] = (month);\nvar months = month.range;\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvdmVnYS9ub2RlX21vZHVsZXMvZDMtdGltZS9zcmMvbW9udGguanMuanMiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvdmVnYS9ub2RlX21vZHVsZXMvZDMtdGltZS9zcmMvbW9udGguanM/NGMyZCJdLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgaW50ZXJ2YWwgZnJvbSBcIi4vaW50ZXJ2YWwuanNcIjtcblxudmFyIG1vbnRoID0gaW50ZXJ2YWwoZnVuY3Rpb24oZGF0ZSkge1xuICBkYXRlLnNldERhdGUoMSk7XG4gIGRhdGUuc2V0SG91cnMoMCwgMCwgMCwgMCk7XG59LCBmdW5jdGlvbihkYXRlLCBzdGVwKSB7XG4gIGRhdGUuc2V0TW9udGgoZGF0ZS5nZXRNb250aCgpICsgc3RlcCk7XG59LCBmdW5jdGlvbihzdGFydCwgZW5kKSB7XG4gIHJldHVybiBlbmQuZ2V0TW9udGgoKSAtIHN0YXJ0LmdldE1vbnRoKCkgKyAoZW5kLmdldEZ1bGxZZWFyKCkgLSBzdGFydC5nZXRGdWxsWWVhcigpKSAqIDEyO1xufSwgZnVuY3Rpb24oZGF0ZSkge1xuICByZXR1cm4gZGF0ZS5nZXRNb250aCgpO1xufSk7XG5cbmV4cG9ydCBkZWZhdWx0IG1vbnRoO1xuZXhwb3J0IHZhciBtb250aHMgPSBtb250aC5yYW5nZTtcbiJdLCJtYXBwaW5ncyI6IkFBQUE7QUFBQTtBQUFBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOyIsInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///./node_modules/vega/node_modules/d3-time/src/month.js\n");

/***/ }),

/***/ "./node_modules/vega/node_modules/d3-time/src/second.js":
/*!**************************************************************!*\
  !*** ./node_modules/vega/node_modules/d3-time/src/second.js ***!
  \**************************************************************/
/*! exports provided: default, seconds */
/***/ (function(module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"seconds\", function() { return seconds; });\n/* harmony import */ var _interval_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./interval.js */ \"./node_modules/vega/node_modules/d3-time/src/interval.js\");\n/* harmony import */ var _duration_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./duration.js */ \"./node_modules/vega/node_modules/d3-time/src/duration.js\");\n\n\n\nvar second = Object(_interval_js__WEBPACK_IMPORTED_MODULE_0__[\"default\"])(function(date) {\n  date.setTime(date - date.getMilliseconds());\n}, function(date, step) {\n  date.setTime(+date + step * _duration_js__WEBPACK_IMPORTED_MODULE_1__[\"durationSecond\"]);\n}, function(start, end) {\n  return (end - start) / _duration_js__WEBPACK_IMPORTED_MODULE_1__[\"durationSecond\"];\n}, function(date) {\n  return date.getUTCSeconds();\n});\n\n/* harmony default export */ __webpack_exports__[\"default\"] = (second);\nvar seconds = second.range;\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvdmVnYS9ub2RlX21vZHVsZXMvZDMtdGltZS9zcmMvc2Vjb25kLmpzLmpzIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL3ZlZ2Evbm9kZV9tb2R1bGVzL2QzLXRpbWUvc3JjL3NlY29uZC5qcz81ZDEwIl0sInNvdXJjZXNDb250ZW50IjpbImltcG9ydCBpbnRlcnZhbCBmcm9tIFwiLi9pbnRlcnZhbC5qc1wiO1xuaW1wb3J0IHtkdXJhdGlvblNlY29uZH0gZnJvbSBcIi4vZHVyYXRpb24uanNcIjtcblxudmFyIHNlY29uZCA9IGludGVydmFsKGZ1bmN0aW9uKGRhdGUpIHtcbiAgZGF0ZS5zZXRUaW1lKGRhdGUgLSBkYXRlLmdldE1pbGxpc2Vjb25kcygpKTtcbn0sIGZ1bmN0aW9uKGRhdGUsIHN0ZXApIHtcbiAgZGF0ZS5zZXRUaW1lKCtkYXRlICsgc3RlcCAqIGR1cmF0aW9uU2Vjb25kKTtcbn0sIGZ1bmN0aW9uKHN0YXJ0LCBlbmQpIHtcbiAgcmV0dXJuIChlbmQgLSBzdGFydCkgLyBkdXJhdGlvblNlY29uZDtcbn0sIGZ1bmN0aW9uKGRhdGUpIHtcbiAgcmV0dXJuIGRhdGUuZ2V0VVRDU2Vjb25kcygpO1xufSk7XG5cbmV4cG9ydCBkZWZhdWx0IHNlY29uZDtcbmV4cG9ydCB2YXIgc2Vjb25kcyA9IHNlY29uZC5yYW5nZTtcbiJdLCJtYXBwaW5ncyI6IkFBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7Iiwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///./node_modules/vega/node_modules/d3-time/src/second.js\n");

/***/ }),

/***/ "./node_modules/vega/node_modules/d3-time/src/ticks.js":
/*!*************************************************************!*\
  !*** ./node_modules/vega/node_modules/d3-time/src/ticks.js ***!
  \*************************************************************/
/*! exports provided: utcTicks, utcTickInterval, timeTicks, timeTickInterval */
/***/ (function(module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"utcTicks\", function() { return utcTicks; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"utcTickInterval\", function() { return utcTickInterval; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"timeTicks\", function() { return timeTicks; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"timeTickInterval\", function() { return timeTickInterval; });\n/* harmony import */ var d3_array__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! d3-array */ \"./node_modules/d3-array/src/index.js\");\n/* harmony import */ var _duration_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./duration.js */ \"./node_modules/vega/node_modules/d3-time/src/duration.js\");\n/* harmony import */ var _millisecond_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./millisecond.js */ \"./node_modules/vega/node_modules/d3-time/src/millisecond.js\");\n/* harmony import */ var _second_js__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ./second.js */ \"./node_modules/vega/node_modules/d3-time/src/second.js\");\n/* harmony import */ var _minute_js__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ./minute.js */ \"./node_modules/vega/node_modules/d3-time/src/minute.js\");\n/* harmony import */ var _hour_js__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! ./hour.js */ \"./node_modules/vega/node_modules/d3-time/src/hour.js\");\n/* harmony import */ var _day_js__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! ./day.js */ \"./node_modules/vega/node_modules/d3-time/src/day.js\");\n/* harmony import */ var _week_js__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! ./week.js */ \"./node_modules/vega/node_modules/d3-time/src/week.js\");\n/* harmony import */ var _month_js__WEBPACK_IMPORTED_MODULE_8__ = __webpack_require__(/*! ./month.js */ \"./node_modules/vega/node_modules/d3-time/src/month.js\");\n/* harmony import */ var _year_js__WEBPACK_IMPORTED_MODULE_9__ = __webpack_require__(/*! ./year.js */ \"./node_modules/vega/node_modules/d3-time/src/year.js\");\n/* harmony import */ var _utcMinute_js__WEBPACK_IMPORTED_MODULE_10__ = __webpack_require__(/*! ./utcMinute.js */ \"./node_modules/vega/node_modules/d3-time/src/utcMinute.js\");\n/* harmony import */ var _utcHour_js__WEBPACK_IMPORTED_MODULE_11__ = __webpack_require__(/*! ./utcHour.js */ \"./node_modules/vega/node_modules/d3-time/src/utcHour.js\");\n/* harmony import */ var _utcDay_js__WEBPACK_IMPORTED_MODULE_12__ = __webpack_require__(/*! ./utcDay.js */ \"./node_modules/vega/node_modules/d3-time/src/utcDay.js\");\n/* harmony import */ var _utcWeek_js__WEBPACK_IMPORTED_MODULE_13__ = __webpack_require__(/*! ./utcWeek.js */ \"./node_modules/vega/node_modules/d3-time/src/utcWeek.js\");\n/* harmony import */ var _utcMonth_js__WEBPACK_IMPORTED_MODULE_14__ = __webpack_require__(/*! ./utcMonth.js */ \"./node_modules/vega/node_modules/d3-time/src/utcMonth.js\");\n/* harmony import */ var _utcYear_js__WEBPACK_IMPORTED_MODULE_15__ = __webpack_require__(/*! ./utcYear.js */ \"./node_modules/vega/node_modules/d3-time/src/utcYear.js\");\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\nfunction ticker(year, month, week, day, hour, minute) {\n\n  const tickIntervals = [\n    [_second_js__WEBPACK_IMPORTED_MODULE_3__[\"default\"],  1,      _duration_js__WEBPACK_IMPORTED_MODULE_1__[\"durationSecond\"]],\n    [_second_js__WEBPACK_IMPORTED_MODULE_3__[\"default\"],  5,  5 * _duration_js__WEBPACK_IMPORTED_MODULE_1__[\"durationSecond\"]],\n    [_second_js__WEBPACK_IMPORTED_MODULE_3__[\"default\"], 15, 15 * _duration_js__WEBPACK_IMPORTED_MODULE_1__[\"durationSecond\"]],\n    [_second_js__WEBPACK_IMPORTED_MODULE_3__[\"default\"], 30, 30 * _duration_js__WEBPACK_IMPORTED_MODULE_1__[\"durationSecond\"]],\n    [minute,  1,      _duration_js__WEBPACK_IMPORTED_MODULE_1__[\"durationMinute\"]],\n    [minute,  5,  5 * _duration_js__WEBPACK_IMPORTED_MODULE_1__[\"durationMinute\"]],\n    [minute, 15, 15 * _duration_js__WEBPACK_IMPORTED_MODULE_1__[\"durationMinute\"]],\n    [minute, 30, 30 * _duration_js__WEBPACK_IMPORTED_MODULE_1__[\"durationMinute\"]],\n    [  hour,  1,      _duration_js__WEBPACK_IMPORTED_MODULE_1__[\"durationHour\"]  ],\n    [  hour,  3,  3 * _duration_js__WEBPACK_IMPORTED_MODULE_1__[\"durationHour\"]  ],\n    [  hour,  6,  6 * _duration_js__WEBPACK_IMPORTED_MODULE_1__[\"durationHour\"]  ],\n    [  hour, 12, 12 * _duration_js__WEBPACK_IMPORTED_MODULE_1__[\"durationHour\"]  ],\n    [   day,  1,      _duration_js__WEBPACK_IMPORTED_MODULE_1__[\"durationDay\"]   ],\n    [   day,  2,  2 * _duration_js__WEBPACK_IMPORTED_MODULE_1__[\"durationDay\"]   ],\n    [  week,  1,      _duration_js__WEBPACK_IMPORTED_MODULE_1__[\"durationWeek\"]  ],\n    [ month,  1,      _duration_js__WEBPACK_IMPORTED_MODULE_1__[\"durationMonth\"] ],\n    [ month,  3,  3 * _duration_js__WEBPACK_IMPORTED_MODULE_1__[\"durationMonth\"] ],\n    [  year,  1,      _duration_js__WEBPACK_IMPORTED_MODULE_1__[\"durationYear\"]  ]\n  ];\n\n  function ticks(start, stop, count) {\n    const reverse = stop < start;\n    if (reverse) [start, stop] = [stop, start];\n    const interval = count && typeof count.range === \"function\" ? count : tickInterval(start, stop, count);\n    const ticks = interval ? interval.range(start, +stop + 1) : []; // inclusive stop\n    return reverse ? ticks.reverse() : ticks;\n  }\n\n  function tickInterval(start, stop, count) {\n    const target = Math.abs(stop - start) / count;\n    const i = Object(d3_array__WEBPACK_IMPORTED_MODULE_0__[\"bisector\"])(([,, step]) => step).right(tickIntervals, target);\n    if (i === tickIntervals.length) return year.every(Object(d3_array__WEBPACK_IMPORTED_MODULE_0__[\"tickStep\"])(start / _duration_js__WEBPACK_IMPORTED_MODULE_1__[\"durationYear\"], stop / _duration_js__WEBPACK_IMPORTED_MODULE_1__[\"durationYear\"], count));\n    if (i === 0) return _millisecond_js__WEBPACK_IMPORTED_MODULE_2__[\"default\"].every(Math.max(Object(d3_array__WEBPACK_IMPORTED_MODULE_0__[\"tickStep\"])(start, stop, count), 1));\n    const [t, step] = tickIntervals[target / tickIntervals[i - 1][2] < tickIntervals[i][2] / target ? i - 1 : i];\n    return t.every(step);\n  }\n\n  return [ticks, tickInterval];\n}\n\nconst [utcTicks, utcTickInterval] = ticker(_utcYear_js__WEBPACK_IMPORTED_MODULE_15__[\"default\"], _utcMonth_js__WEBPACK_IMPORTED_MODULE_14__[\"default\"], _utcWeek_js__WEBPACK_IMPORTED_MODULE_13__[\"utcSunday\"], _utcDay_js__WEBPACK_IMPORTED_MODULE_12__[\"default\"], _utcHour_js__WEBPACK_IMPORTED_MODULE_11__[\"default\"], _utcMinute_js__WEBPACK_IMPORTED_MODULE_10__[\"default\"]);\nconst [timeTicks, timeTickInterval] = ticker(_year_js__WEBPACK_IMPORTED_MODULE_9__[\"default\"], _month_js__WEBPACK_IMPORTED_MODULE_8__[\"default\"], _week_js__WEBPACK_IMPORTED_MODULE_7__[\"sunday\"], _day_js__WEBPACK_IMPORTED_MODULE_6__[\"default\"], _hour_js__WEBPACK_IMPORTED_MODULE_5__[\"default\"], _minute_js__WEBPACK_IMPORTED_MODULE_4__[\"default\"]);\n\n\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,[encoded data, 4512 characters]\n//# sourceURL=webpack-internal:///./node_modules/vega/node_modules/d3-time/src/ticks.js\n");

/***/ }),

/***/ "./node_modules/vega/node_modules/d3-time/src/utcDay.js":
/*!**************************************************************!*\
  !*** ./node_modules/vega/node_modules/d3-time/src/utcDay.js ***!
  \**************************************************************/
/*! exports provided: default, utcDays */
/***/ (function(module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"utcDays\", function() { return utcDays; });\n/* harmony import */ var _interval_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./interval.js */ \"./node_modules/vega/node_modules/d3-time/src/interval.js\");\n/* harmony import */ var _duration_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./duration.js */ \"./node_modules/vega/node_modules/d3-time/src/duration.js\");\n\n\n\nvar utcDay = Object(_interval_js__WEBPACK_IMPORTED_MODULE_0__[\"default\"])(function(date) {\n  date.setUTCHours(0, 0, 0, 0);\n}, function(date, step) {\n  date.setUTCDate(date.getUTCDate() + step);\n}, function(start, end) {\n  return (end - start) / _duration_js__WEBPACK_IMPORTED_MODULE_1__[\"durationDay\"];\n}, function(date) {\n  return date.getUTCDate() - 1;\n});\n\n/* harmony default export */ __webpack_exports__[\"default\"] = (utcDay);\nvar utcDays = utcDay.range;\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvdmVnYS9ub2RlX21vZHVsZXMvZDMtdGltZS9zcmMvdXRjRGF5LmpzLmpzIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL3ZlZ2Evbm9kZV9tb2R1bGVzL2QzLXRpbWUvc3JjL3V0Y0RheS5qcz9iZDE3Il0sInNvdXJjZXNDb250ZW50IjpbImltcG9ydCBpbnRlcnZhbCBmcm9tIFwiLi9pbnRlcnZhbC5qc1wiO1xuaW1wb3J0IHtkdXJhdGlvbkRheX0gZnJvbSBcIi4vZHVyYXRpb24uanNcIjtcblxudmFyIHV0Y0RheSA9IGludGVydmFsKGZ1bmN0aW9uKGRhdGUpIHtcbiAgZGF0ZS5zZXRVVENIb3VycygwLCAwLCAwLCAwKTtcbn0sIGZ1bmN0aW9uKGRhdGUsIHN0ZXApIHtcbiAgZGF0ZS5zZXRVVENEYXRlKGRhdGUuZ2V0VVRDRGF0ZSgpICsgc3RlcCk7XG59LCBmdW5jdGlvbihzdGFydCwgZW5kKSB7XG4gIHJldHVybiAoZW5kIC0gc3RhcnQpIC8gZHVyYXRpb25EYXk7XG59LCBmdW5jdGlvbihkYXRlKSB7XG4gIHJldHVybiBkYXRlLmdldFVUQ0RhdGUoKSAtIDE7XG59KTtcblxuZXhwb3J0IGRlZmF1bHQgdXRjRGF5O1xuZXhwb3J0IHZhciB1dGNEYXlzID0gdXRjRGF5LnJhbmdlO1xuIl0sIm1hcHBpbmdzIjoiQUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTsiLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///./node_modules/vega/node_modules/d3-time/src/utcDay.js\n");

/***/ }),

/***/ "./node_modules/vega/node_modules/d3-time/src/utcHour.js":
/*!***************************************************************!*\
  !*** ./node_modules/vega/node_modules/d3-time/src/utcHour.js ***!
  \***************************************************************/
/*! exports provided: default, utcHours */
/***/ (function(module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"utcHours\", function() { return utcHours; });\n/* harmony import */ var _interval_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./interval.js */ \"./node_modules/vega/node_modules/d3-time/src/interval.js\");\n/* harmony import */ var _duration_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./duration.js */ \"./node_modules/vega/node_modules/d3-time/src/duration.js\");\n\n\n\nvar utcHour = Object(_interval_js__WEBPACK_IMPORTED_MODULE_0__[\"default\"])(function(date) {\n  date.setUTCMinutes(0, 0, 0);\n}, function(date, step) {\n  date.setTime(+date + step * _duration_js__WEBPACK_IMPORTED_MODULE_1__[\"durationHour\"]);\n}, function(start, end) {\n  return (end - start) / _duration_js__WEBPACK_IMPORTED_MODULE_1__[\"durationHour\"];\n}, function(date) {\n  return date.getUTCHours();\n});\n\n/* harmony default export */ __webpack_exports__[\"default\"] = (utcHour);\nvar utcHours = utcHour.range;\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvdmVnYS9ub2RlX21vZHVsZXMvZDMtdGltZS9zcmMvdXRjSG91ci5qcy5qcyIsInNvdXJjZXMiOlsid2VicGFjazovLy8uL25vZGVfbW9kdWxlcy92ZWdhL25vZGVfbW9kdWxlcy9kMy10aW1lL3NyYy91dGNIb3VyLmpzPzAzNTciXSwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IGludGVydmFsIGZyb20gXCIuL2ludGVydmFsLmpzXCI7XG5pbXBvcnQge2R1cmF0aW9uSG91cn0gZnJvbSBcIi4vZHVyYXRpb24uanNcIjtcblxudmFyIHV0Y0hvdXIgPSBpbnRlcnZhbChmdW5jdGlvbihkYXRlKSB7XG4gIGRhdGUuc2V0VVRDTWludXRlcygwLCAwLCAwKTtcbn0sIGZ1bmN0aW9uKGRhdGUsIHN0ZXApIHtcbiAgZGF0ZS5zZXRUaW1lKCtkYXRlICsgc3RlcCAqIGR1cmF0aW9uSG91cik7XG59LCBmdW5jdGlvbihzdGFydCwgZW5kKSB7XG4gIHJldHVybiAoZW5kIC0gc3RhcnQpIC8gZHVyYXRpb25Ib3VyO1xufSwgZnVuY3Rpb24oZGF0ZSkge1xuICByZXR1cm4gZGF0ZS5nZXRVVENIb3VycygpO1xufSk7XG5cbmV4cG9ydCBkZWZhdWx0IHV0Y0hvdXI7XG5leHBvcnQgdmFyIHV0Y0hvdXJzID0gdXRjSG91ci5yYW5nZTtcbiJdLCJtYXBwaW5ncyI6IkFBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7Iiwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///./node_modules/vega/node_modules/d3-time/src/utcHour.js\n");

/***/ }),

/***/ "./node_modules/vega/node_modules/d3-time/src/utcMinute.js":
/*!*****************************************************************!*\
  !*** ./node_modules/vega/node_modules/d3-time/src/utcMinute.js ***!
  \*****************************************************************/
/*! exports provided: default, utcMinutes */
/***/ (function(module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"utcMinutes\", function() { return utcMinutes; });\n/* harmony import */ var _interval_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./interval.js */ \"./node_modules/vega/node_modules/d3-time/src/interval.js\");\n/* harmony import */ var _duration_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./duration.js */ \"./node_modules/vega/node_modules/d3-time/src/duration.js\");\n\n\n\nvar utcMinute = Object(_interval_js__WEBPACK_IMPORTED_MODULE_0__[\"default\"])(function(date) {\n  date.setUTCSeconds(0, 0);\n}, function(date, step) {\n  date.setTime(+date + step * _duration_js__WEBPACK_IMPORTED_MODULE_1__[\"durationMinute\"]);\n}, function(start, end) {\n  return (end - start) / _duration_js__WEBPACK_IMPORTED_MODULE_1__[\"durationMinute\"];\n}, function(date) {\n  return date.getUTCMinutes();\n});\n\n/* harmony default export */ __webpack_exports__[\"default\"] = (utcMinute);\nvar utcMinutes = utcMinute.range;\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvdmVnYS9ub2RlX21vZHVsZXMvZDMtdGltZS9zcmMvdXRjTWludXRlLmpzLmpzIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL3ZlZ2Evbm9kZV9tb2R1bGVzL2QzLXRpbWUvc3JjL3V0Y01pbnV0ZS5qcz8zOWM5Il0sInNvdXJjZXNDb250ZW50IjpbImltcG9ydCBpbnRlcnZhbCBmcm9tIFwiLi9pbnRlcnZhbC5qc1wiO1xuaW1wb3J0IHtkdXJhdGlvbk1pbnV0ZX0gZnJvbSBcIi4vZHVyYXRpb24uanNcIjtcblxudmFyIHV0Y01pbnV0ZSA9IGludGVydmFsKGZ1bmN0aW9uKGRhdGUpIHtcbiAgZGF0ZS5zZXRVVENTZWNvbmRzKDAsIDApO1xufSwgZnVuY3Rpb24oZGF0ZSwgc3RlcCkge1xuICBkYXRlLnNldFRpbWUoK2RhdGUgKyBzdGVwICogZHVyYXRpb25NaW51dGUpO1xufSwgZnVuY3Rpb24oc3RhcnQsIGVuZCkge1xuICByZXR1cm4gKGVuZCAtIHN0YXJ0KSAvIGR1cmF0aW9uTWludXRlO1xufSwgZnVuY3Rpb24oZGF0ZSkge1xuICByZXR1cm4gZGF0ZS5nZXRVVENNaW51dGVzKCk7XG59KTtcblxuZXhwb3J0IGRlZmF1bHQgdXRjTWludXRlO1xuZXhwb3J0IHZhciB1dGNNaW51dGVzID0gdXRjTWludXRlLnJhbmdlO1xuIl0sIm1hcHBpbmdzIjoiQUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTsiLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///./node_modules/vega/node_modules/d3-time/src/utcMinute.js\n");

/***/ }),

/***/ "./node_modules/vega/node_modules/d3-time/src/utcMonth.js":
/*!****************************************************************!*\
  !*** ./node_modules/vega/node_modules/d3-time/src/utcMonth.js ***!
  \****************************************************************/
/*! exports provided: default, utcMonths */
/***/ (function(module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"utcMonths\", function() { return utcMonths; });\n/* harmony import */ var _interval_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./interval.js */ \"./node_modules/vega/node_modules/d3-time/src/interval.js\");\n\n\nvar utcMonth = Object(_interval_js__WEBPACK_IMPORTED_MODULE_0__[\"default\"])(function(date) {\n  date.setUTCDate(1);\n  date.setUTCHours(0, 0, 0, 0);\n}, function(date, step) {\n  date.setUTCMonth(date.getUTCMonth() + step);\n}, function(start, end) {\n  return end.getUTCMonth() - start.getUTCMonth() + (end.getUTCFullYear() - start.getUTCFullYear()) * 12;\n}, function(date) {\n  return date.getUTCMonth();\n});\n\n/* harmony default export */ __webpack_exports__[\"default\"] = (utcMonth);\nvar utcMonths = utcMonth.range;\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvdmVnYS9ub2RlX21vZHVsZXMvZDMtdGltZS9zcmMvdXRjTW9udGguanMuanMiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvdmVnYS9ub2RlX21vZHVsZXMvZDMtdGltZS9zcmMvdXRjTW9udGguanM/NzM0MCJdLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgaW50ZXJ2YWwgZnJvbSBcIi4vaW50ZXJ2YWwuanNcIjtcblxudmFyIHV0Y01vbnRoID0gaW50ZXJ2YWwoZnVuY3Rpb24oZGF0ZSkge1xuICBkYXRlLnNldFVUQ0RhdGUoMSk7XG4gIGRhdGUuc2V0VVRDSG91cnMoMCwgMCwgMCwgMCk7XG59LCBmdW5jdGlvbihkYXRlLCBzdGVwKSB7XG4gIGRhdGUuc2V0VVRDTW9udGgoZGF0ZS5nZXRVVENNb250aCgpICsgc3RlcCk7XG59LCBmdW5jdGlvbihzdGFydCwgZW5kKSB7XG4gIHJldHVybiBlbmQuZ2V0VVRDTW9udGgoKSAtIHN0YXJ0LmdldFVUQ01vbnRoKCkgKyAoZW5kLmdldFVUQ0Z1bGxZZWFyKCkgLSBzdGFydC5nZXRVVENGdWxsWWVhcigpKSAqIDEyO1xufSwgZnVuY3Rpb24oZGF0ZSkge1xuICByZXR1cm4gZGF0ZS5nZXRVVENNb250aCgpO1xufSk7XG5cbmV4cG9ydCBkZWZhdWx0IHV0Y01vbnRoO1xuZXhwb3J0IHZhciB1dGNNb250aHMgPSB1dGNNb250aC5yYW5nZTtcbiJdLCJtYXBwaW5ncyI6IkFBQUE7QUFBQTtBQUFBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOyIsInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///./node_modules/vega/node_modules/d3-time/src/utcMonth.js\n");

/***/ }),

/***/ "./node_modules/vega/node_modules/d3-time/src/utcWeek.js":
/*!***************************************************************!*\
  !*** ./node_modules/vega/node_modules/d3-time/src/utcWeek.js ***!
  \***************************************************************/
/*! exports provided: utcSunday, utcMonday, utcTuesday, utcWednesday, utcThursday, utcFriday, utcSaturday, utcSundays, utcMondays, utcTuesdays, utcWednesdays, utcThursdays, utcFridays, utcSaturdays */
/***/ (function(module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"utcSunday\", function() { return utcSunday; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"utcMonday\", function() { return utcMonday; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"utcTuesday\", function() { return utcTuesday; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"utcWednesday\", function() { return utcWednesday; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"utcThursday\", function() { return utcThursday; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"utcFriday\", function() { return utcFriday; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"utcSaturday\", function() { return utcSaturday; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"utcSundays\", function() { return utcSundays; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"utcMondays\", function() { return utcMondays; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"utcTuesdays\", function() { return utcTuesdays; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"utcWednesdays\", function() { return utcWednesdays; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"utcThursdays\", function() { return utcThursdays; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"utcFridays\", function() { return utcFridays; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"utcSaturdays\", function() { return utcSaturdays; });\n/* harmony import */ var _interval_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./interval.js */ \"./node_modules/vega/node_modules/d3-time/src/interval.js\");\n/* harmony import */ var _duration_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./duration.js */ \"./node_modules/vega/node_modules/d3-time/src/duration.js\");\n\n\n\nfunction utcWeekday(i) {\n  return Object(_interval_js__WEBPACK_IMPORTED_MODULE_0__[\"default\"])(function(date) {\n    date.setUTCDate(date.getUTCDate() - (date.getUTCDay() + 7 - i) % 7);\n    date.setUTCHours(0, 0, 0, 0);\n  }, function(date, step) {\n    date.setUTCDate(date.getUTCDate() + step * 7);\n  }, function(start, end) {\n    return (end - start) / _duration_js__WEBPACK_IMPORTED_MODULE_1__[\"durationWeek\"];\n  });\n}\n\nvar utcSunday = utcWeekday(0);\nvar utcMonday = utcWeekday(1);\nvar utcTuesday = utcWeekday(2);\nvar utcWednesday = utcWeekday(3);\nvar utcThursday = utcWeekday(4);\nvar utcFriday = utcWeekday(5);\nvar utcSaturday = utcWeekday(6);\n\nvar utcSundays = utcSunday.range;\nvar utcMondays = utcMonday.range;\nvar utcTuesdays = utcTuesday.range;\nvar utcWednesdays = utcWednesday.range;\nvar utcThursdays = utcThursday.range;\nvar utcFridays = utcFriday.range;\nvar utcSaturdays = utcSaturday.range;\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvdmVnYS9ub2RlX21vZHVsZXMvZDMtdGltZS9zcmMvdXRjV2Vlay5qcy5qcyIsInNvdXJjZXMiOlsid2VicGFjazovLy8uL25vZGVfbW9kdWxlcy92ZWdhL25vZGVfbW9kdWxlcy9kMy10aW1lL3NyYy91dGNXZWVrLmpzPzQzYjEiXSwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IGludGVydmFsIGZyb20gXCIuL2ludGVydmFsLmpzXCI7XG5pbXBvcnQge2R1cmF0aW9uV2Vla30gZnJvbSBcIi4vZHVyYXRpb24uanNcIjtcblxuZnVuY3Rpb24gdXRjV2Vla2RheShpKSB7XG4gIHJldHVybiBpbnRlcnZhbChmdW5jdGlvbihkYXRlKSB7XG4gICAgZGF0ZS5zZXRVVENEYXRlKGRhdGUuZ2V0VVRDRGF0ZSgpIC0gKGRhdGUuZ2V0VVRDRGF5KCkgKyA3IC0gaSkgJSA3KTtcbiAgICBkYXRlLnNldFVUQ0hvdXJzKDAsIDAsIDAsIDApO1xuICB9LCBmdW5jdGlvbihkYXRlLCBzdGVwKSB7XG4gICAgZGF0ZS5zZXRVVENEYXRlKGRhdGUuZ2V0VVRDRGF0ZSgpICsgc3RlcCAqIDcpO1xuICB9LCBmdW5jdGlvbihzdGFydCwgZW5kKSB7XG4gICAgcmV0dXJuIChlbmQgLSBzdGFydCkgLyBkdXJhdGlvbldlZWs7XG4gIH0pO1xufVxuXG5leHBvcnQgdmFyIHV0Y1N1bmRheSA9IHV0Y1dlZWtkYXkoMCk7XG5leHBvcnQgdmFyIHV0Y01vbmRheSA9IHV0Y1dlZWtkYXkoMSk7XG5leHBvcnQgdmFyIHV0Y1R1ZXNkYXkgPSB1dGNXZWVrZGF5KDIpO1xuZXhwb3J0IHZhciB1dGNXZWRuZXNkYXkgPSB1dGNXZWVrZGF5KDMpO1xuZXhwb3J0IHZhciB1dGNUaHVyc2RheSA9IHV0Y1dlZWtkYXkoNCk7XG5leHBvcnQgdmFyIHV0Y0ZyaWRheSA9IHV0Y1dlZWtkYXkoNSk7XG5leHBvcnQgdmFyIHV0Y1NhdHVyZGF5ID0gdXRjV2Vla2RheSg2KTtcblxuZXhwb3J0IHZhciB1dGNTdW5kYXlzID0gdXRjU3VuZGF5LnJhbmdlO1xuZXhwb3J0IHZhciB1dGNNb25kYXlzID0gdXRjTW9uZGF5LnJhbmdlO1xuZXhwb3J0IHZhciB1dGNUdWVzZGF5cyA9IHV0Y1R1ZXNkYXkucmFuZ2U7XG5leHBvcnQgdmFyIHV0Y1dlZG5lc2RheXMgPSB1dGNXZWRuZXNkYXkucmFuZ2U7XG5leHBvcnQgdmFyIHV0Y1RodXJzZGF5cyA9IHV0Y1RodXJzZGF5LnJhbmdlO1xuZXhwb3J0IHZhciB1dGNGcmlkYXlzID0gdXRjRnJpZGF5LnJhbmdlO1xuZXhwb3J0IHZhciB1dGNTYXR1cmRheXMgPSB1dGNTYXR1cmRheS5yYW5nZTtcbiJdLCJtYXBwaW5ncyI6IkFBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7Iiwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///./node_modules/vega/node_modules/d3-time/src/utcWeek.js\n");

/***/ }),

/***/ "./node_modules/vega/node_modules/d3-time/src/utcYear.js":
/*!***************************************************************!*\
  !*** ./node_modules/vega/node_modules/d3-time/src/utcYear.js ***!
  \***************************************************************/
/*! exports provided: default, utcYears */
/***/ (function(module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"utcYears\", function() { return utcYears; });\n/* harmony import */ var _interval_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./interval.js */ \"./node_modules/vega/node_modules/d3-time/src/interval.js\");\n\n\nvar utcYear = Object(_interval_js__WEBPACK_IMPORTED_MODULE_0__[\"default\"])(function(date) {\n  date.setUTCMonth(0, 1);\n  date.setUTCHours(0, 0, 0, 0);\n}, function(date, step) {\n  date.setUTCFullYear(date.getUTCFullYear() + step);\n}, function(start, end) {\n  return end.getUTCFullYear() - start.getUTCFullYear();\n}, function(date) {\n  return date.getUTCFullYear();\n});\n\n// An optimized implementation for this simple case.\nutcYear.every = function(k) {\n  return !isFinite(k = Math.floor(k)) || !(k > 0) ? null : Object(_interval_js__WEBPACK_IMPORTED_MODULE_0__[\"default\"])(function(date) {\n    date.setUTCFullYear(Math.floor(date.getUTCFullYear() / k) * k);\n    date.setUTCMonth(0, 1);\n    date.setUTCHours(0, 0, 0, 0);\n  }, function(date, step) {\n    date.setUTCFullYear(date.getUTCFullYear() + step * k);\n  });\n};\n\n/* harmony default export */ __webpack_exports__[\"default\"] = (utcYear);\nvar utcYears = utcYear.range;\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvdmVnYS9ub2RlX21vZHVsZXMvZDMtdGltZS9zcmMvdXRjWWVhci5qcy5qcyIsInNvdXJjZXMiOlsid2VicGFjazovLy8uL25vZGVfbW9kdWxlcy92ZWdhL25vZGVfbW9kdWxlcy9kMy10aW1lL3NyYy91dGNZZWFyLmpzPzFkMWIiXSwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IGludGVydmFsIGZyb20gXCIuL2ludGVydmFsLmpzXCI7XG5cbnZhciB1dGNZZWFyID0gaW50ZXJ2YWwoZnVuY3Rpb24oZGF0ZSkge1xuICBkYXRlLnNldFVUQ01vbnRoKDAsIDEpO1xuICBkYXRlLnNldFVUQ0hvdXJzKDAsIDAsIDAsIDApO1xufSwgZnVuY3Rpb24oZGF0ZSwgc3RlcCkge1xuICBkYXRlLnNldFVUQ0Z1bGxZZWFyKGRhdGUuZ2V0VVRDRnVsbFllYXIoKSArIHN0ZXApO1xufSwgZnVuY3Rpb24oc3RhcnQsIGVuZCkge1xuICByZXR1cm4gZW5kLmdldFVUQ0Z1bGxZZWFyKCkgLSBzdGFydC5nZXRVVENGdWxsWWVhcigpO1xufSwgZnVuY3Rpb24oZGF0ZSkge1xuICByZXR1cm4gZGF0ZS5nZXRVVENGdWxsWWVhcigpO1xufSk7XG5cbi8vIEFuIG9wdGltaXplZCBpbXBsZW1lbnRhdGlvbiBmb3IgdGhpcyBzaW1wbGUgY2FzZS5cbnV0Y1llYXIuZXZlcnkgPSBmdW5jdGlvbihrKSB7XG4gIHJldHVybiAhaXNGaW5pdGUoayA9IE1hdGguZmxvb3IoaykpIHx8ICEoayA+IDApID8gbnVsbCA6IGludGVydmFsKGZ1bmN0aW9uKGRhdGUpIHtcbiAgICBkYXRlLnNldFVUQ0Z1bGxZZWFyKE1hdGguZmxvb3IoZGF0ZS5nZXRVVENGdWxsWWVhcigpIC8gaykgKiBrKTtcbiAgICBkYXRlLnNldFVUQ01vbnRoKDAsIDEpO1xuICAgIGRhdGUuc2V0VVRDSG91cnMoMCwgMCwgMCwgMCk7XG4gIH0sIGZ1bmN0aW9uKGRhdGUsIHN0ZXApIHtcbiAgICBkYXRlLnNldFVUQ0Z1bGxZZWFyKGRhdGUuZ2V0VVRDRnVsbFllYXIoKSArIHN0ZXAgKiBrKTtcbiAgfSk7XG59O1xuXG5leHBvcnQgZGVmYXVsdCB1dGNZZWFyO1xuZXhwb3J0IHZhciB1dGNZZWFycyA9IHV0Y1llYXIucmFuZ2U7XG4iXSwibWFwcGluZ3MiOiJBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7Iiwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///./node_modules/vega/node_modules/d3-time/src/utcYear.js\n");

/***/ }),

/***/ "./node_modules/vega/node_modules/d3-time/src/week.js":
/*!************************************************************!*\
  !*** ./node_modules/vega/node_modules/d3-time/src/week.js ***!
  \************************************************************/
/*! exports provided: sunday, monday, tuesday, wednesday, thursday, friday, saturday, sundays, mondays, tuesdays, wednesdays, thursdays, fridays, saturdays */
/***/ (function(module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"sunday\", function() { return sunday; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"monday\", function() { return monday; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"tuesday\", function() { return tuesday; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"wednesday\", function() { return wednesday; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"thursday\", function() { return thursday; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"friday\", function() { return friday; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"saturday\", function() { return saturday; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"sundays\", function() { return sundays; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"mondays\", function() { return mondays; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"tuesdays\", function() { return tuesdays; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"wednesdays\", function() { return wednesdays; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"thursdays\", function() { return thursdays; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"fridays\", function() { return fridays; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"saturdays\", function() { return saturdays; });\n/* harmony import */ var _interval_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./interval.js */ \"./node_modules/vega/node_modules/d3-time/src/interval.js\");\n/* harmony import */ var _duration_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./duration.js */ \"./node_modules/vega/node_modules/d3-time/src/duration.js\");\n\n\n\nfunction weekday(i) {\n  return Object(_interval_js__WEBPACK_IMPORTED_MODULE_0__[\"default\"])(function(date) {\n    date.setDate(date.getDate() - (date.getDay() + 7 - i) % 7);\n    date.setHours(0, 0, 0, 0);\n  }, function(date, step) {\n    date.setDate(date.getDate() + step * 7);\n  }, function(start, end) {\n    return (end - start - (end.getTimezoneOffset() - start.getTimezoneOffset()) * _duration_js__WEBPACK_IMPORTED_MODULE_1__[\"durationMinute\"]) / _duration_js__WEBPACK_IMPORTED_MODULE_1__[\"durationWeek\"];\n  });\n}\n\nvar sunday = weekday(0);\nvar monday = weekday(1);\nvar tuesday = weekday(2);\nvar wednesday = weekday(3);\nvar thursday = weekday(4);\nvar friday = weekday(5);\nvar saturday = weekday(6);\n\nvar sundays = sunday.range;\nvar mondays = monday.range;\nvar tuesdays = tuesday.range;\nvar wednesdays = wednesday.range;\nvar thursdays = thursday.range;\nvar fridays = friday.range;\nvar saturdays = saturday.range;\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvdmVnYS9ub2RlX21vZHVsZXMvZDMtdGltZS9zcmMvd2Vlay5qcy5qcyIsInNvdXJjZXMiOlsid2VicGFjazovLy8uL25vZGVfbW9kdWxlcy92ZWdhL25vZGVfbW9kdWxlcy9kMy10aW1lL3NyYy93ZWVrLmpzPzJjNTUiXSwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IGludGVydmFsIGZyb20gXCIuL2ludGVydmFsLmpzXCI7XG5pbXBvcnQge2R1cmF0aW9uTWludXRlLCBkdXJhdGlvbldlZWt9IGZyb20gXCIuL2R1cmF0aW9uLmpzXCI7XG5cbmZ1bmN0aW9uIHdlZWtkYXkoaSkge1xuICByZXR1cm4gaW50ZXJ2YWwoZnVuY3Rpb24oZGF0ZSkge1xuICAgIGRhdGUuc2V0RGF0ZShkYXRlLmdldERhdGUoKSAtIChkYXRlLmdldERheSgpICsgNyAtIGkpICUgNyk7XG4gICAgZGF0ZS5zZXRIb3VycygwLCAwLCAwLCAwKTtcbiAgfSwgZnVuY3Rpb24oZGF0ZSwgc3RlcCkge1xuICAgIGRhdGUuc2V0RGF0ZShkYXRlLmdldERhdGUoKSArIHN0ZXAgKiA3KTtcbiAgfSwgZnVuY3Rpb24oc3RhcnQsIGVuZCkge1xuICAgIHJldHVybiAoZW5kIC0gc3RhcnQgLSAoZW5kLmdldFRpbWV6b25lT2Zmc2V0KCkgLSBzdGFydC5nZXRUaW1lem9uZU9mZnNldCgpKSAqIGR1cmF0aW9uTWludXRlKSAvIGR1cmF0aW9uV2VlaztcbiAgfSk7XG59XG5cbmV4cG9ydCB2YXIgc3VuZGF5ID0gd2Vla2RheSgwKTtcbmV4cG9ydCB2YXIgbW9uZGF5ID0gd2Vla2RheSgxKTtcbmV4cG9ydCB2YXIgdHVlc2RheSA9IHdlZWtkYXkoMik7XG5leHBvcnQgdmFyIHdlZG5lc2RheSA9IHdlZWtkYXkoMyk7XG5leHBvcnQgdmFyIHRodXJzZGF5ID0gd2Vla2RheSg0KTtcbmV4cG9ydCB2YXIgZnJpZGF5ID0gd2Vla2RheSg1KTtcbmV4cG9ydCB2YXIgc2F0dXJkYXkgPSB3ZWVrZGF5KDYpO1xuXG5leHBvcnQgdmFyIHN1bmRheXMgPSBzdW5kYXkucmFuZ2U7XG5leHBvcnQgdmFyIG1vbmRheXMgPSBtb25kYXkucmFuZ2U7XG5leHBvcnQgdmFyIHR1ZXNkYXlzID0gdHVlc2RheS5yYW5nZTtcbmV4cG9ydCB2YXIgd2VkbmVzZGF5cyA9IHdlZG5lc2RheS5yYW5nZTtcbmV4cG9ydCB2YXIgdGh1cnNkYXlzID0gdGh1cnNkYXkucmFuZ2U7XG5leHBvcnQgdmFyIGZyaWRheXMgPSBmcmlkYXkucmFuZ2U7XG5leHBvcnQgdmFyIHNhdHVyZGF5cyA9IHNhdHVyZGF5LnJhbmdlO1xuIl0sIm1hcHBpbmdzIjoiQUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTsiLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///./node_modules/vega/node_modules/d3-time/src/week.js\n");

/***/ }),

/***/ "./node_modules/vega/node_modules/d3-time/src/year.js":
/*!************************************************************!*\
  !*** ./node_modules/vega/node_modules/d3-time/src/year.js ***!
  \************************************************************/
/*! exports provided: default, years */
/***/ (function(module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"years\", function() { return years; });\n/* harmony import */ var _interval_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./interval.js */ \"./node_modules/vega/node_modules/d3-time/src/interval.js\");\n\n\nvar year = Object(_interval_js__WEBPACK_IMPORTED_MODULE_0__[\"default\"])(function(date) {\n  date.setMonth(0, 1);\n  date.setHours(0, 0, 0, 0);\n}, function(date, step) {\n  date.setFullYear(date.getFullYear() + step);\n}, function(start, end) {\n  return end.getFullYear() - start.getFullYear();\n}, function(date) {\n  return date.getFullYear();\n});\n\n// An optimized implementation for this simple case.\nyear.every = function(k) {\n  return !isFinite(k = Math.floor(k)) || !(k > 0) ? null : Object(_interval_js__WEBPACK_IMPORTED_MODULE_0__[\"default\"])(function(date) {\n    date.setFullYear(Math.floor(date.getFullYear() / k) * k);\n    date.setMonth(0, 1);\n    date.setHours(0, 0, 0, 0);\n  }, function(date, step) {\n    date.setFullYear(date.getFullYear() + step * k);\n  });\n};\n\n/* harmony default export */ __webpack_exports__[\"default\"] = (year);\nvar years = year.range;\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvdmVnYS9ub2RlX21vZHVsZXMvZDMtdGltZS9zcmMveWVhci5qcy5qcyIsInNvdXJjZXMiOlsid2VicGFjazovLy8uL25vZGVfbW9kdWxlcy92ZWdhL25vZGVfbW9kdWxlcy9kMy10aW1lL3NyYy95ZWFyLmpzPzJhM2UiXSwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IGludGVydmFsIGZyb20gXCIuL2ludGVydmFsLmpzXCI7XG5cbnZhciB5ZWFyID0gaW50ZXJ2YWwoZnVuY3Rpb24oZGF0ZSkge1xuICBkYXRlLnNldE1vbnRoKDAsIDEpO1xuICBkYXRlLnNldEhvdXJzKDAsIDAsIDAsIDApO1xufSwgZnVuY3Rpb24oZGF0ZSwgc3RlcCkge1xuICBkYXRlLnNldEZ1bGxZZWFyKGRhdGUuZ2V0RnVsbFllYXIoKSArIHN0ZXApO1xufSwgZnVuY3Rpb24oc3RhcnQsIGVuZCkge1xuICByZXR1cm4gZW5kLmdldEZ1bGxZZWFyKCkgLSBzdGFydC5nZXRGdWxsWWVhcigpO1xufSwgZnVuY3Rpb24oZGF0ZSkge1xuICByZXR1cm4gZGF0ZS5nZXRGdWxsWWVhcigpO1xufSk7XG5cbi8vIEFuIG9wdGltaXplZCBpbXBsZW1lbnRhdGlvbiBmb3IgdGhpcyBzaW1wbGUgY2FzZS5cbnllYXIuZXZlcnkgPSBmdW5jdGlvbihrKSB7XG4gIHJldHVybiAhaXNGaW5pdGUoayA9IE1hdGguZmxvb3IoaykpIHx8ICEoayA+IDApID8gbnVsbCA6IGludGVydmFsKGZ1bmN0aW9uKGRhdGUpIHtcbiAgICBkYXRlLnNldEZ1bGxZZWFyKE1hdGguZmxvb3IoZGF0ZS5nZXRGdWxsWWVhcigpIC8gaykgKiBrKTtcbiAgICBkYXRlLnNldE1vbnRoKDAsIDEpO1xuICAgIGRhdGUuc2V0SG91cnMoMCwgMCwgMCwgMCk7XG4gIH0sIGZ1bmN0aW9uKGRhdGUsIHN0ZXApIHtcbiAgICBkYXRlLnNldEZ1bGxZZWFyKGRhdGUuZ2V0RnVsbFllYXIoKSArIHN0ZXAgKiBrKTtcbiAgfSk7XG59O1xuXG5leHBvcnQgZGVmYXVsdCB5ZWFyO1xuZXhwb3J0IHZhciB5ZWFycyA9IHllYXIucmFuZ2U7XG4iXSwibWFwcGluZ3MiOiJBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7Iiwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///./node_modules/vega/node_modules/d3-time/src/year.js\n");

/***/ }),

/***/ "./node_modules/vega/node_modules/vega-crossfilter/build/vega-crossfilter.module.js":
/*!******************************************************************************************!*\
  !*** ./node_modules/vega/node_modules/vega-crossfilter/build/vega-crossfilter.module.js ***!
  \******************************************************************************************/
/*! exports provided: crossfilter, resolvefilter */
/***/ (function(module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"crossfilter\", function() { return CrossFilter; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"resolvefilter\", function() { return ResolveFilter; });\n/* harmony import */ var d3_array__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! d3-array */ \"./node_modules/d3-array/src/index.js\");\n/* harmony import */ var vega_dataflow__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! vega-dataflow */ \"./node_modules/vega/node_modules/vega-dataflow/build/vega-dataflow.module.js\");\n/* harmony import */ var vega_util__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! vega-util */ \"./node_modules/vega/node_modules/vega-util/build/vega-util.module.js\");\n\n\n\n\nconst array8 = n => new Uint8Array(n);\nconst array16 = n => new Uint16Array(n);\nconst array32 = n => new Uint32Array(n);\n\n/**\n * Maintains CrossFilter state.\n */\n\nfunction Bitmaps() {\n  let width = 8,\n      data = [],\n      seen = array32(0),\n      curr = array(0, width),\n      prev = array(0, width);\n  return {\n    data: () => data,\n    seen: () => seen = lengthen(seen, data.length),\n\n    add(array) {\n      for (let i = 0, j = data.length, n = array.length, t; i < n; ++i) {\n        t = array[i];\n        t._index = j++;\n        data.push(t);\n      }\n    },\n\n    remove(num, map) {\n      // map: index -> boolean (true => remove)\n      const n = data.length,\n            copy = Array(n - num),\n            reindex = data; // reuse old data array for index map\n\n      let t, i, j; // seek forward to first removal\n\n      for (i = 0; !map[i] && i < n; ++i) {\n        copy[i] = data[i];\n        reindex[i] = i;\n      } // condense arrays\n\n\n      for (j = i; i < n; ++i) {\n        t = data[i];\n\n        if (!map[i]) {\n          reindex[i] = j;\n          curr[j] = curr[i];\n          prev[j] = prev[i];\n          copy[j] = t;\n          t._index = j++;\n        } else {\n          reindex[i] = -1;\n        }\n\n        curr[i] = 0; // clear unused bits\n      }\n\n      data = copy;\n      return reindex;\n    },\n\n    size: () => data.length,\n    curr: () => curr,\n    prev: () => prev,\n    reset: k => prev[k] = curr[k],\n    all: () => width < 0x101 ? 0xff : width < 0x10001 ? 0xffff : 0xffffffff,\n\n    set(k, one) {\n      curr[k] |= one;\n    },\n\n    clear(k, one) {\n      curr[k] &= ~one;\n    },\n\n    resize(n, m) {\n      const k = curr.length;\n\n      if (n > k || m > width) {\n        width = Math.max(m, width);\n        curr = array(n, width, curr);\n        prev = array(n, width);\n      }\n    }\n\n  };\n}\n\nfunction lengthen(array, length, copy) {\n  if (array.length >= length) return array;\n  copy = copy || new array.constructor(length);\n  copy.set(array);\n  return copy;\n}\n\nfunction array(n, m, array) {\n  const copy = (m < 0x101 ? array8 : m < 0x10001 ? array16 : array32)(n);\n  if (array) copy.set(array);\n  return copy;\n}\n\nfunction Dimension (index, i, query) {\n  const bit = 1 << i;\n  return {\n    one: bit,\n    zero: ~bit,\n    range: query.slice(),\n    bisect: index.bisect,\n    index: index.index,\n    size: index.size,\n\n    onAdd(added, curr) {\n      const dim = this,\n            range = dim.bisect(dim.range, added.value),\n            idx = added.index,\n            lo = range[0],\n            hi = range[1],\n            n1 = idx.length;\n      let i;\n\n      for (i = 0; i < lo; ++i) curr[idx[i]] |= bit;\n\n      for (i = hi; i < n1; ++i) curr[idx[i]] |= bit;\n\n      return dim;\n    }\n\n  };\n}\n\n/**\n * Maintains a list of values, sorted by key.\n */\n\nfunction SortedIndex() {\n  let index = array32(0),\n      value = [],\n      size = 0;\n\n  function insert(key, data, base) {\n    if (!data.length) return [];\n    const n0 = size,\n          n1 = data.length,\n          addi = array32(n1);\n    let addv = Array(n1),\n        oldv,\n        oldi,\n        i;\n\n    for (i = 0; i < n1; ++i) {\n      addv[i] = key(data[i]);\n      addi[i] = i;\n    }\n\n    addv = sort(addv, addi);\n\n    if (n0) {\n      oldv = value;\n      oldi = index;\n      value = Array(n0 + n1);\n      index = array32(n0 + n1);\n      merge(base, oldv, oldi, n0, addv, addi, n1, value, index);\n    } else {\n      if (base > 0) for (i = 0; i < n1; ++i) {\n        addi[i] += base;\n      }\n      value = addv;\n      index = addi;\n    }\n\n    size = n0 + n1;\n    return {\n      index: addi,\n      value: addv\n    };\n  }\n\n  function remove(num, map) {\n    // map: index -> remove\n    const n = size;\n    let idx, i, j; // seek forward to first removal\n\n    for (i = 0; !map[index[i]] && i < n; ++i); // condense index and value arrays\n\n\n    for (j = i; i < n; ++i) {\n      if (!map[idx = index[i]]) {\n        index[j] = idx;\n        value[j] = value[i];\n        ++j;\n      }\n    }\n\n    size = n - num;\n  }\n\n  function reindex(map) {\n    for (let i = 0, n = size; i < n; ++i) {\n      index[i] = map[index[i]];\n    }\n  }\n\n  function bisect(range, array) {\n    let n;\n\n    if (array) {\n      n = array.length;\n    } else {\n      array = value;\n      n = size;\n    }\n\n    return [Object(d3_array__WEBPACK_IMPORTED_MODULE_0__[\"bisectLeft\"])(array, range[0], 0, n), Object(d3_array__WEBPACK_IMPORTED_MODULE_0__[\"bisectRight\"])(array, range[1], 0, n)];\n  }\n\n  return {\n    insert: insert,\n    remove: remove,\n    bisect: bisect,\n    reindex: reindex,\n    index: () => index,\n    size: () => size\n  };\n}\n\nfunction sort(values, index) {\n  values.sort.call(index, (a, b) => {\n    const x = values[a],\n          y = values[b];\n    return x < y ? -1 : x > y ? 1 : 0;\n  });\n  return Object(d3_array__WEBPACK_IMPORTED_MODULE_0__[\"permute\"])(values, index);\n}\n\nfunction merge(base, value0, index0, n0, value1, index1, n1, value, index) {\n  let i0 = 0,\n      i1 = 0,\n      i;\n\n  for (i = 0; i0 < n0 && i1 < n1; ++i) {\n    if (value0[i0] < value1[i1]) {\n      value[i] = value0[i0];\n      index[i] = index0[i0++];\n    } else {\n      value[i] = value1[i1];\n      index[i] = index1[i1++] + base;\n    }\n  }\n\n  for (; i0 < n0; ++i0, ++i) {\n    value[i] = value0[i0];\n    index[i] = index0[i0];\n  }\n\n  for (; i1 < n1; ++i1, ++i) {\n    value[i] = value1[i1];\n    index[i] = index1[i1] + base;\n  }\n}\n\n/**\n * An indexed multi-dimensional filter.\n * @constructor\n * @param {object} params - The parameters for this operator.\n * @param {Array<function(object): *>} params.fields - An array of dimension accessors to filter.\n * @param {Array} params.query - An array of per-dimension range queries.\n */\n\nfunction CrossFilter(params) {\n  vega_dataflow__WEBPACK_IMPORTED_MODULE_1__[\"Transform\"].call(this, Bitmaps(), params);\n  this._indices = null;\n  this._dims = null;\n}\nCrossFilter.Definition = {\n  'type': 'CrossFilter',\n  'metadata': {},\n  'params': [{\n    'name': 'fields',\n    'type': 'field',\n    'array': true,\n    'required': true\n  }, {\n    'name': 'query',\n    'type': 'array',\n    'array': true,\n    'required': true,\n    'content': {\n      'type': 'number',\n      'array': true,\n      'length': 2\n    }\n  }]\n};\nObject(vega_util__WEBPACK_IMPORTED_MODULE_2__[\"inherits\"])(CrossFilter, vega_dataflow__WEBPACK_IMPORTED_MODULE_1__[\"Transform\"], {\n  transform(_, pulse) {\n    if (!this._dims) {\n      return this.init(_, pulse);\n    } else {\n      var init = _.modified('fields') || _.fields.some(f => pulse.modified(f.fields));\n\n      return init ? this.reinit(_, pulse) : this.eval(_, pulse);\n    }\n  },\n\n  init(_, pulse) {\n    const fields = _.fields,\n          query = _.query,\n          indices = this._indices = {},\n          dims = this._dims = [],\n          m = query.length;\n    let i = 0,\n        key,\n        index; // instantiate indices and dimensions\n\n    for (; i < m; ++i) {\n      key = fields[i].fname;\n      index = indices[key] || (indices[key] = SortedIndex());\n      dims.push(Dimension(index, i, query[i]));\n    }\n\n    return this.eval(_, pulse);\n  },\n\n  reinit(_, pulse) {\n    const output = pulse.materialize().fork(),\n          fields = _.fields,\n          query = _.query,\n          indices = this._indices,\n          dims = this._dims,\n          bits = this.value,\n          curr = bits.curr(),\n          prev = bits.prev(),\n          all = bits.all(),\n          out = output.rem = output.add,\n          mod = output.mod,\n          m = query.length,\n          adds = {};\n    let add, index, key, mods, remMap, modMap, i, n, f; // set prev to current state\n\n    prev.set(curr); // if pulse has remove tuples, process them first\n\n    if (pulse.rem.length) {\n      remMap = this.remove(_, pulse, output);\n    } // if pulse has added tuples, add them to state\n\n\n    if (pulse.add.length) {\n      bits.add(pulse.add);\n    } // if pulse has modified tuples, create an index map\n\n\n    if (pulse.mod.length) {\n      modMap = {};\n\n      for (mods = pulse.mod, i = 0, n = mods.length; i < n; ++i) {\n        modMap[mods[i]._index] = 1;\n      }\n    } // re-initialize indices as needed, update curr bitmap\n\n\n    for (i = 0; i < m; ++i) {\n      f = fields[i];\n\n      if (!dims[i] || _.modified('fields', i) || pulse.modified(f.fields)) {\n        key = f.fname;\n\n        if (!(add = adds[key])) {\n          indices[key] = index = SortedIndex();\n          adds[key] = add = index.insert(f, pulse.source, 0);\n        }\n\n        dims[i] = Dimension(index, i, query[i]).onAdd(add, curr);\n      }\n    } // visit each tuple\n    // if filter state changed, push index to add/rem\n    // else if in mod and passes a filter, push index to mod\n\n\n    for (i = 0, n = bits.data().length; i < n; ++i) {\n      if (remMap[i]) {\n        // skip if removed tuple\n        continue;\n      } else if (prev[i] !== curr[i]) {\n        // add if state changed\n        out.push(i);\n      } else if (modMap[i] && curr[i] !== all) {\n        // otherwise, pass mods through\n        mod.push(i);\n      }\n    }\n\n    bits.mask = (1 << m) - 1;\n    return output;\n  },\n\n  eval(_, pulse) {\n    const output = pulse.materialize().fork(),\n          m = this._dims.length;\n    let mask = 0;\n\n    if (pulse.rem.length) {\n      this.remove(_, pulse, output);\n      mask |= (1 << m) - 1;\n    }\n\n    if (_.modified('query') && !_.modified('fields')) {\n      mask |= this.update(_, pulse, output);\n    }\n\n    if (pulse.add.length) {\n      this.insert(_, pulse, output);\n      mask |= (1 << m) - 1;\n    }\n\n    if (pulse.mod.length) {\n      this.modify(pulse, output);\n      mask |= (1 << m) - 1;\n    }\n\n    this.value.mask = mask;\n    return output;\n  },\n\n  insert(_, pulse, output) {\n    const tuples = pulse.add,\n          bits = this.value,\n          dims = this._dims,\n          indices = this._indices,\n          fields = _.fields,\n          adds = {},\n          out = output.add,\n          n = bits.size() + tuples.length,\n          m = dims.length;\n    let k = bits.size(),\n        j,\n        key,\n        add; // resize bitmaps and add tuples as needed\n\n    bits.resize(n, m);\n    bits.add(tuples);\n    const curr = bits.curr(),\n          prev = bits.prev(),\n          all = bits.all(); // add to dimensional indices\n\n    for (j = 0; j < m; ++j) {\n      key = fields[j].fname;\n      add = adds[key] || (adds[key] = indices[key].insert(fields[j], tuples, k));\n      dims[j].onAdd(add, curr);\n    } // set previous filters, output if passes at least one filter\n\n\n    for (; k < n; ++k) {\n      prev[k] = all;\n      if (curr[k] !== all) out.push(k);\n    }\n  },\n\n  modify(pulse, output) {\n    const out = output.mod,\n          bits = this.value,\n          curr = bits.curr(),\n          all = bits.all(),\n          tuples = pulse.mod;\n    let i, n, k;\n\n    for (i = 0, n = tuples.length; i < n; ++i) {\n      k = tuples[i]._index;\n      if (curr[k] !== all) out.push(k);\n    }\n  },\n\n  remove(_, pulse, output) {\n    const indices = this._indices,\n          bits = this.value,\n          curr = bits.curr(),\n          prev = bits.prev(),\n          all = bits.all(),\n          map = {},\n          out = output.rem,\n          tuples = pulse.rem;\n    let i, n, k, f; // process tuples, output if passes at least one filter\n\n    for (i = 0, n = tuples.length; i < n; ++i) {\n      k = tuples[i]._index;\n      map[k] = 1; // build index map\n\n      prev[k] = f = curr[k];\n      curr[k] = all;\n      if (f !== all) out.push(k);\n    } // remove from dimensional indices\n\n\n    for (k in indices) {\n      indices[k].remove(n, map);\n    }\n\n    this.reindex(pulse, n, map);\n    return map;\n  },\n\n  // reindex filters and indices after propagation completes\n  reindex(pulse, num, map) {\n    const indices = this._indices,\n          bits = this.value;\n    pulse.runAfter(() => {\n      const indexMap = bits.remove(num, map);\n\n      for (const key in indices) indices[key].reindex(indexMap);\n    });\n  },\n\n  update(_, pulse, output) {\n    const dims = this._dims,\n          query = _.query,\n          stamp = pulse.stamp,\n          m = dims.length;\n    let mask = 0,\n        i,\n        q; // survey how many queries have changed\n\n    output.filters = 0;\n\n    for (q = 0; q < m; ++q) {\n      if (_.modified('query', q)) {\n        i = q;\n        ++mask;\n      }\n    }\n\n    if (mask === 1) {\n      // only one query changed, use more efficient update\n      mask = dims[i].one;\n      this.incrementOne(dims[i], query[i], output.add, output.rem);\n    } else {\n      // multiple queries changed, perform full record keeping\n      for (q = 0, mask = 0; q < m; ++q) {\n        if (!_.modified('query', q)) continue;\n        mask |= dims[q].one;\n        this.incrementAll(dims[q], query[q], stamp, output.add);\n        output.rem = output.add; // duplicate add/rem for downstream resolve\n      }\n    }\n\n    return mask;\n  },\n\n  incrementAll(dim, query, stamp, out) {\n    const bits = this.value,\n          seen = bits.seen(),\n          curr = bits.curr(),\n          prev = bits.prev(),\n          index = dim.index(),\n          old = dim.bisect(dim.range),\n          range = dim.bisect(query),\n          lo1 = range[0],\n          hi1 = range[1],\n          lo0 = old[0],\n          hi0 = old[1],\n          one = dim.one;\n    let i, j, k; // Fast incremental update based on previous lo index.\n\n    if (lo1 < lo0) {\n      for (i = lo1, j = Math.min(lo0, hi1); i < j; ++i) {\n        k = index[i];\n\n        if (seen[k] !== stamp) {\n          prev[k] = curr[k];\n          seen[k] = stamp;\n          out.push(k);\n        }\n\n        curr[k] ^= one;\n      }\n    } else if (lo1 > lo0) {\n      for (i = lo0, j = Math.min(lo1, hi0); i < j; ++i) {\n        k = index[i];\n\n        if (seen[k] !== stamp) {\n          prev[k] = curr[k];\n          seen[k] = stamp;\n          out.push(k);\n        }\n\n        curr[k] ^= one;\n      }\n    } // Fast incremental update based on previous hi index.\n\n\n    if (hi1 > hi0) {\n      for (i = Math.max(lo1, hi0), j = hi1; i < j; ++i) {\n        k = index[i];\n\n        if (seen[k] !== stamp) {\n          prev[k] = curr[k];\n          seen[k] = stamp;\n          out.push(k);\n        }\n\n        curr[k] ^= one;\n      }\n    } else if (hi1 < hi0) {\n      for (i = Math.max(lo0, hi1), j = hi0; i < j; ++i) {\n        k = index[i];\n\n        if (seen[k] !== stamp) {\n          prev[k] = curr[k];\n          seen[k] = stamp;\n          out.push(k);\n        }\n\n        curr[k] ^= one;\n      }\n    }\n\n    dim.range = query.slice();\n  },\n\n  incrementOne(dim, query, add, rem) {\n    const bits = this.value,\n          curr = bits.curr(),\n          index = dim.index(),\n          old = dim.bisect(dim.range),\n          range = dim.bisect(query),\n          lo1 = range[0],\n          hi1 = range[1],\n          lo0 = old[0],\n          hi0 = old[1],\n          one = dim.one;\n    let i, j, k; // Fast incremental update based on previous lo index.\n\n    if (lo1 < lo0) {\n      for (i = lo1, j = Math.min(lo0, hi1); i < j; ++i) {\n        k = index[i];\n        curr[k] ^= one;\n        add.push(k);\n      }\n    } else if (lo1 > lo0) {\n      for (i = lo0, j = Math.min(lo1, hi0); i < j; ++i) {\n        k = index[i];\n        curr[k] ^= one;\n        rem.push(k);\n      }\n    } // Fast incremental update based on previous hi index.\n\n\n    if (hi1 > hi0) {\n      for (i = Math.max(lo1, hi0), j = hi1; i < j; ++i) {\n        k = index[i];\n        curr[k] ^= one;\n        add.push(k);\n      }\n    } else if (hi1 < hi0) {\n      for (i = Math.max(lo0, hi1), j = hi0; i < j; ++i) {\n        k = index[i];\n        curr[k] ^= one;\n        rem.push(k);\n      }\n    }\n\n    dim.range = query.slice();\n  }\n\n});\n\n/**\n * Selectively filters tuples by resolving against a filter bitmap.\n * Useful for processing the output of a cross-filter transform.\n * @constructor\n * @param {object} params - The parameters for this operator.\n * @param {object} params.ignore - A bit mask indicating which filters to ignore.\n * @param {object} params.filter - The per-tuple filter bitmaps. Typically this\n *   parameter value is a reference to a {@link CrossFilter} transform.\n */\n\nfunction ResolveFilter(params) {\n  vega_dataflow__WEBPACK_IMPORTED_MODULE_1__[\"Transform\"].call(this, null, params);\n}\nResolveFilter.Definition = {\n  'type': 'ResolveFilter',\n  'metadata': {},\n  'params': [{\n    'name': 'ignore',\n    'type': 'number',\n    'required': true,\n    'description': 'A bit mask indicating which filters to ignore.'\n  }, {\n    'name': 'filter',\n    'type': 'object',\n    'required': true,\n    'description': 'Per-tuple filter bitmaps from a CrossFilter transform.'\n  }]\n};\nObject(vega_util__WEBPACK_IMPORTED_MODULE_2__[\"inherits\"])(ResolveFilter, vega_dataflow__WEBPACK_IMPORTED_MODULE_1__[\"Transform\"], {\n  transform(_, pulse) {\n    const ignore = ~(_.ignore || 0),\n          // bit mask where zeros -> dims to ignore\n    bitmap = _.filter,\n          mask = bitmap.mask; // exit early if no relevant filter changes\n\n    if ((mask & ignore) === 0) return pulse.StopPropagation;\n\n    const output = pulse.fork(pulse.ALL),\n          data = bitmap.data(),\n          curr = bitmap.curr(),\n          prev = bitmap.prev(),\n          pass = k => !(curr[k] & ignore) ? data[k] : null; // propagate all mod tuples that pass the filter\n\n\n    output.filter(output.MOD, pass); // determine add & rem tuples via filter functions\n    // for efficiency, we do *not* populate new arrays,\n    // instead we add filter functions applied downstream\n\n    if (!(mask & mask - 1)) {\n      // only one filter changed\n      output.filter(output.ADD, pass);\n      output.filter(output.REM, k => (curr[k] & ignore) === mask ? data[k] : null);\n    } else {\n      // multiple filters changed\n      output.filter(output.ADD, k => {\n        const c = curr[k] & ignore,\n              f = !c && c ^ prev[k] & ignore;\n        return f ? data[k] : null;\n      });\n      output.filter(output.REM, k => {\n        const c = curr[k] & ignore,\n              f = c && !(c ^ (c ^ prev[k] & ignore));\n        return f ? data[k] : null;\n      });\n    } // add filter to source data in case of reflow...\n\n\n    return output.filter(output.SOURCE, t => pass(t._index));\n  }\n\n});\n\n\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,[encoded data, 29996 characters]\n//# sourceURL=webpack-internal:///./node_modules/vega/node_modules/vega-crossfilter/build/vega-crossfilter.module.js\n");

/***/ }),

/***/ "./node_modules/vega/node_modules/vega-dataflow/build/vega-dataflow.module.js":
/*!************************************************************************************!*\
  !*** ./node_modules/vega/node_modules/vega-dataflow/build/vega-dataflow.module.js ***!
  \************************************************************************************/
/*! exports provided: Dataflow, EventStream, MultiPulse, Operator, Parameters, Pulse, Transform, UniqueList, asyncCallback, changeset, definition, derive, ingest, isChangeSet, isTuple, rederive, replace, stableCompare, transform, transforms, tupleid */
/***/ (function(module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"Dataflow\", function() { return Dataflow; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"EventStream\", function() { return EventStream; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"MultiPulse\", function() { return MultiPulse; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"Operator\", function() { return Operator; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"Parameters\", function() { return Parameters; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"Pulse\", function() { return Pulse; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"Transform\", function() { return Transform; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"UniqueList\", function() { return UniqueList; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"asyncCallback\", function() { return asyncCallback; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"changeset\", function() { return changeset; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"definition\", function() { return definition; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"derive\", function() { return derive; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"ingest\", function() { return ingest$1; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"isChangeSet\", function() { return isChangeSet; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"isTuple\", function() { return isTuple; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"rederive\", function() { return rederive; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"replace\", function() { return replace; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"stableCompare\", function() { return stableCompare; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"transform\", function() { return transform; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"transforms\", function() { return transforms; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"tupleid\", function() { return tupleid; });\n/* harmony import */ var vega_util__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! vega-util */ \"./node_modules/vega/node_modules/vega-util/build/vega-util.module.js\");\n/* harmony import */ var vega_loader__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! vega-loader */ \"./node_modules/vega/node_modules/vega-loader/index.browser.js\");\n/* harmony import */ var vega_format__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! vega-format */ \"./node_modules/vega-format/build/vega-format.module.js\");\n\n\n\n\nfunction UniqueList(idFunc) {\n  const $ = idFunc || vega_util__WEBPACK_IMPORTED_MODULE_0__[\"identity\"],\n        list = [],\n        ids = {};\n\n  list.add = _ => {\n    const id = $(_);\n\n    if (!ids[id]) {\n      ids[id] = 1;\n      list.push(_);\n    }\n\n    return list;\n  };\n\n  list.remove = _ => {\n    const id = $(_);\n\n    if (ids[id]) {\n      ids[id] = 0;\n      const idx = list.indexOf(_);\n      if (idx >= 0) list.splice(idx, 1);\n    }\n\n    return list;\n  };\n\n  return list;\n}\n\n/**\n * Invoke and await a potentially async callback function. If\n * an error occurs, trap it and route to Dataflow.error.\n * @param {Dataflow} df - The dataflow instance\n * @param {function} callback - A callback function to invoke\n *   and then await. The dataflow will be passed as the single\n *   argument to the function.\n */\nasync function asyncCallback (df, callback) {\n  try {\n    await callback(df);\n  } catch (err) {\n    df.error(err);\n  }\n}\n\nconst TUPLE_ID_KEY = Symbol('vega_id');\nlet TUPLE_ID = 1;\n/**\n * Checks if an input value is a registered tuple.\n * @param {*} t - The value to check.\n * @return {boolean} True if the input is a tuple, false otherwise.\n */\n\nfunction isTuple(t) {\n  return !!(t && tupleid(t));\n}\n/**\n * Returns the id of a tuple.\n * @param {object} t - The input tuple.\n * @return {*} the tuple id.\n */\n\nfunction tupleid(t) {\n  return t[TUPLE_ID_KEY];\n}\n/**\n * Sets the id of a tuple.\n * @param {object} t - The input tuple.\n * @param {*} id - The id value to set.\n * @return {object} the input tuple.\n */\n\nfunction setid(t, id) {\n  t[TUPLE_ID_KEY] = id;\n  return t;\n}\n/**\n * Ingest an object or value as a data tuple.\n * If the input value is an object, an id field will be added to it. For\n * efficiency, the input object is modified directly. A copy is not made.\n * If the input value is a literal, it will be wrapped in a new object\n * instance, with the value accessible as the 'data' property.\n * @param datum - The value to ingest.\n * @return {object} The ingested data tuple.\n */\n\n\nfunction ingest$1(datum) {\n  const t = datum === Object(datum) ? datum : {\n    data: datum\n  };\n  return tupleid(t) ? t : setid(t, TUPLE_ID++);\n}\n/**\n * Given a source tuple, return a derived copy.\n * @param {object} t - The source tuple.\n * @return {object} The derived tuple.\n */\n\nfunction derive(t) {\n  return rederive(t, ingest$1({}));\n}\n/**\n * Rederive a derived tuple by copying values from the source tuple.\n * @param {object} t - The source tuple.\n * @param {object} d - The derived tuple.\n * @return {object} The derived tuple.\n */\n\nfunction rederive(t, d) {\n  for (const k in t) d[k] = t[k];\n\n  return d;\n}\n/**\n * Replace an existing tuple with a new tuple.\n * @param {object} t - The existing data tuple.\n * @param {object} d - The new tuple that replaces the old.\n * @return {object} The new tuple.\n */\n\nfunction replace(t, d) {\n  return setid(d, tupleid(t));\n}\n/**\n * Generate an augmented comparator function that provides stable\n * sorting by tuple id when the given comparator produces ties.\n * @param {function} cmp - The comparator to augment.\n * @param {function} [f] - Optional tuple accessor function.\n * @return {function} An augmented comparator function.\n */\n\nfunction stableCompare(cmp, f) {\n  return !cmp ? null : f ? (a, b) => cmp(a, b) || tupleid(f(a)) - tupleid(f(b)) : (a, b) => cmp(a, b) || tupleid(a) - tupleid(b);\n}\n\nfunction isChangeSet(v) {\n  return v && v.constructor === changeset;\n}\nfunction changeset() {\n  const add = [],\n        // insert tuples\n  rem = [],\n        // remove tuples\n  mod = [],\n        // modify tuples\n  remp = [],\n        // remove by predicate\n  modp = []; // modify by predicate\n\n  let clean = null,\n      reflow = false;\n  return {\n    constructor: changeset,\n\n    insert(t) {\n      const d = Object(vega_util__WEBPACK_IMPORTED_MODULE_0__[\"array\"])(t),\n            n = d.length;\n\n      for (let i = 0; i < n; ++i) add.push(d[i]);\n\n      return this;\n    },\n\n    remove(t) {\n      const a = Object(vega_util__WEBPACK_IMPORTED_MODULE_0__[\"isFunction\"])(t) ? remp : rem,\n            d = Object(vega_util__WEBPACK_IMPORTED_MODULE_0__[\"array\"])(t),\n            n = d.length;\n\n      for (let i = 0; i < n; ++i) a.push(d[i]);\n\n      return this;\n    },\n\n    modify(t, field, value) {\n      const m = {\n        field: field,\n        value: Object(vega_util__WEBPACK_IMPORTED_MODULE_0__[\"constant\"])(value)\n      };\n\n      if (Object(vega_util__WEBPACK_IMPORTED_MODULE_0__[\"isFunction\"])(t)) {\n        m.filter = t;\n        modp.push(m);\n      } else {\n        m.tuple = t;\n        mod.push(m);\n      }\n\n      return this;\n    },\n\n    encode(t, set) {\n      if (Object(vega_util__WEBPACK_IMPORTED_MODULE_0__[\"isFunction\"])(t)) modp.push({\n        filter: t,\n        field: set\n      });else mod.push({\n        tuple: t,\n        field: set\n      });\n      return this;\n    },\n\n    clean(value) {\n      clean = value;\n      return this;\n    },\n\n    reflow() {\n      reflow = true;\n      return this;\n    },\n\n    pulse(pulse, tuples) {\n      const cur = {},\n            out = {};\n      let i, n, m, f, t, id; // build lookup table of current tuples\n\n      for (i = 0, n = tuples.length; i < n; ++i) {\n        cur[tupleid(tuples[i])] = 1;\n      } // process individual tuples to remove\n\n\n      for (i = 0, n = rem.length; i < n; ++i) {\n        t = rem[i];\n        cur[tupleid(t)] = -1;\n      } // process predicate-based removals\n\n\n      for (i = 0, n = remp.length; i < n; ++i) {\n        f = remp[i];\n        tuples.forEach(t => {\n          if (f(t)) cur[tupleid(t)] = -1;\n        });\n      } // process all add tuples\n\n\n      for (i = 0, n = add.length; i < n; ++i) {\n        t = add[i];\n        id = tupleid(t);\n\n        if (cur[id]) {\n          // tuple already resides in dataset\n          // if flagged for both add and remove, cancel\n          cur[id] = 1;\n        } else {\n          // tuple does not reside in dataset, add\n          pulse.add.push(ingest$1(add[i]));\n        }\n      } // populate pulse rem list\n\n\n      for (i = 0, n = tuples.length; i < n; ++i) {\n        t = tuples[i];\n        if (cur[tupleid(t)] < 0) pulse.rem.push(t);\n      } // modify helper method\n\n\n      function modify(t, f, v) {\n        if (v) {\n          t[f] = v(t);\n        } else {\n          pulse.encode = f;\n        }\n\n        if (!reflow) out[tupleid(t)] = t;\n      } // process individual tuples to modify\n\n\n      for (i = 0, n = mod.length; i < n; ++i) {\n        m = mod[i];\n        t = m.tuple;\n        f = m.field;\n        id = cur[tupleid(t)];\n\n        if (id > 0) {\n          modify(t, f, m.value);\n          pulse.modifies(f);\n        }\n      } // process predicate-based modifications\n\n\n      for (i = 0, n = modp.length; i < n; ++i) {\n        m = modp[i];\n        f = m.filter;\n        tuples.forEach(t => {\n          if (f(t) && cur[tupleid(t)] > 0) {\n            modify(t, m.field, m.value);\n          }\n        });\n        pulse.modifies(m.field);\n      } // upon reflow request, populate mod with all non-removed tuples\n      // otherwise, populate mod with modified tuples only\n\n\n      if (reflow) {\n        pulse.mod = rem.length || remp.length ? tuples.filter(t => cur[tupleid(t)] > 0) : tuples.slice();\n      } else {\n        for (id in out) pulse.mod.push(out[id]);\n      } // set pulse garbage collection request\n\n\n      if (clean || clean == null && (rem.length || remp.length)) {\n        pulse.clean(true);\n      }\n\n      return pulse;\n    }\n\n  };\n}\n\nconst CACHE = '_:mod:_';\n/**\n * Hash that tracks modifications to assigned values.\n * Callers *must* use the set method to update values.\n */\n\nfunction Parameters() {\n  Object.defineProperty(this, CACHE, {\n    writable: true,\n    value: {}\n  });\n}\nParameters.prototype = {\n  /**\n   * Set a parameter value. If the parameter value changes, the parameter\n   * will be recorded as modified.\n   * @param {string} name - The parameter name.\n   * @param {number} index - The index into an array-value parameter. Ignored if\n   *   the argument is undefined, null or less than zero.\n   * @param {*} value - The parameter value to set.\n   * @param {boolean} [force=false] - If true, records the parameter as modified\n   *   even if the value is unchanged.\n   * @return {Parameters} - This parameter object.\n   */\n  set(name, index, value, force) {\n    const o = this,\n          v = o[name],\n          mod = o[CACHE];\n\n    if (index != null && index >= 0) {\n      if (v[index] !== value || force) {\n        v[index] = value;\n        mod[index + ':' + name] = -1;\n        mod[name] = -1;\n      }\n    } else if (v !== value || force) {\n      o[name] = value;\n      mod[name] = Object(vega_util__WEBPACK_IMPORTED_MODULE_0__[\"isArray\"])(value) ? 1 + value.length : -1;\n    }\n\n    return o;\n  },\n\n  /**\n   * Tests if one or more parameters has been modified. If invoked with no\n   * arguments, returns true if any parameter value has changed. If the first\n   * argument is array, returns trues if any parameter name in the array has\n   * changed. Otherwise, tests if the given name and optional array index has\n   * changed.\n   * @param {string} name - The parameter name to test.\n   * @param {number} [index=undefined] - The parameter array index to test.\n   * @return {boolean} - Returns true if a queried parameter was modified.\n   */\n  modified(name, index) {\n    const mod = this[CACHE];\n\n    if (!arguments.length) {\n      for (const k in mod) {\n        if (mod[k]) return true;\n      }\n\n      return false;\n    } else if (Object(vega_util__WEBPACK_IMPORTED_MODULE_0__[\"isArray\"])(name)) {\n      for (let k = 0; k < name.length; ++k) {\n        if (mod[name[k]]) return true;\n      }\n\n      return false;\n    }\n\n    return index != null && index >= 0 ? index + 1 < mod[name] || !!mod[index + ':' + name] : !!mod[name];\n  },\n\n  /**\n   * Clears the modification records. After calling this method,\n   * all parameters are considered unmodified.\n   */\n  clear() {\n    this[CACHE] = {};\n    return this;\n  }\n\n};\n\nlet OP_ID = 0;\nconst PULSE = 'pulse',\n      NO_PARAMS = new Parameters(); // Boolean Flags\n\nconst SKIP$1 = 1,\n      MODIFIED = 2;\n/**\n * An Operator is a processing node in a dataflow graph.\n * Each operator stores a value and an optional value update function.\n * Operators can accept a hash of named parameters. Parameter values can\n * either be direct (JavaScript literals, arrays, objects) or indirect\n * (other operators whose values will be pulled dynamically). Operators\n * included as parameters will have this operator added as a dependency.\n * @constructor\n * @param {*} [init] - The initial value for this operator.\n * @param {function(object, Pulse)} [update] - An update function. Upon\n *   evaluation of this operator, the update function will be invoked and the\n *   return value will be used as the new value of this operator.\n * @param {object} [params] - The parameters for this operator.\n * @param {boolean} [react=true] - Flag indicating if this operator should\n *   listen for changes to upstream operators included as parameters.\n * @see parameters\n */\n\nfunction Operator(init, update, params, react) {\n  this.id = ++OP_ID;\n  this.value = init;\n  this.stamp = -1;\n  this.rank = -1;\n  this.qrank = -1;\n  this.flags = 0;\n\n  if (update) {\n    this._update = update;\n  }\n\n  if (params) this.parameters(params, react);\n}\n\nfunction flag(bit) {\n  return function (state) {\n    const f = this.flags;\n    if (arguments.length === 0) return !!(f & bit);\n    this.flags = state ? f | bit : f & ~bit;\n    return this;\n  };\n}\n\nOperator.prototype = {\n  /**\n   * Returns a list of target operators dependent on this operator.\n   * If this list does not exist, it is created and then returned.\n   * @return {UniqueList}\n   */\n  targets() {\n    return this._targets || (this._targets = UniqueList(vega_util__WEBPACK_IMPORTED_MODULE_0__[\"id\"]));\n  },\n\n  /**\n   * Sets the value of this operator.\n   * @param {*} value - the value to set.\n   * @return {Number} Returns 1 if the operator value has changed\n   *   according to strict equality, returns 0 otherwise.\n   */\n  set(value) {\n    if (this.value !== value) {\n      this.value = value;\n      return 1;\n    } else {\n      return 0;\n    }\n  },\n\n  /**\n   * Indicates that operator evaluation should be skipped on the next pulse.\n   * This operator will still propagate incoming pulses, but its update function\n   * will not be invoked. The skip flag is reset after every pulse, so calling\n   * this method will affect processing of the next pulse only.\n   */\n  skip: flag(SKIP$1),\n\n  /**\n   * Indicates that this operator's value has been modified on its most recent\n   * pulse. Normally modification is checked via strict equality; however, in\n   * some cases it is more efficient to update the internal state of an object.\n   * In those cases, the modified flag can be used to trigger propagation. Once\n   * set, the modification flag persists across pulses until unset. The flag can\n   * be used with the last timestamp to test if a modification is recent.\n   */\n  modified: flag(MODIFIED),\n\n  /**\n   * Sets the parameters for this operator. The parameter values are analyzed for\n   * operator instances. If found, this operator will be added as a dependency\n   * of the parameterizing operator. Operator values are dynamically marshalled\n   * from each operator parameter prior to evaluation. If a parameter value is\n   * an array, the array will also be searched for Operator instances. However,\n   * the search does not recurse into sub-arrays or object properties.\n   * @param {object} params - A hash of operator parameters.\n   * @param {boolean} [react=true] - A flag indicating if this operator should\n   *   automatically update (react) when parameter values change. In other words,\n   *   this flag determines if the operator registers itself as a listener on\n   *   any upstream operators included in the parameters.\n   * @param {boolean} [initonly=false] - A flag indicating if this operator\n   *   should calculate an update only upon its initiatal evaluation, then\n   *   deregister dependencies and suppress all future update invocations.\n   * @return {Operator[]} - An array of upstream dependencies.\n   */\n  parameters(params, react, initonly) {\n    react = react !== false;\n    const argval = this._argval = this._argval || new Parameters(),\n          argops = this._argops = this._argops || [],\n          deps = [];\n    let name, value, n, i;\n\n    const add = (name, index, value) => {\n      if (value instanceof Operator) {\n        if (value !== this) {\n          if (react) value.targets().add(this);\n          deps.push(value);\n        }\n\n        argops.push({\n          op: value,\n          name: name,\n          index: index\n        });\n      } else {\n        argval.set(name, index, value);\n      }\n    };\n\n    for (name in params) {\n      value = params[name];\n\n      if (name === PULSE) {\n        Object(vega_util__WEBPACK_IMPORTED_MODULE_0__[\"array\"])(value).forEach(op => {\n          if (!(op instanceof Operator)) {\n            Object(vega_util__WEBPACK_IMPORTED_MODULE_0__[\"error\"])('Pulse parameters must be operator instances.');\n          } else if (op !== this) {\n            op.targets().add(this);\n            deps.push(op);\n          }\n        });\n        this.source = value;\n      } else if (Object(vega_util__WEBPACK_IMPORTED_MODULE_0__[\"isArray\"])(value)) {\n        argval.set(name, -1, Array(n = value.length));\n\n        for (i = 0; i < n; ++i) add(name, i, value[i]);\n      } else {\n        add(name, -1, value);\n      }\n    }\n\n    this.marshall().clear(); // initialize values\n\n    if (initonly) argops.initonly = true;\n    return deps;\n  },\n\n  /**\n   * Internal method for marshalling parameter values.\n   * Visits each operator dependency to pull the latest value.\n   * @return {Parameters} A Parameters object to pass to the update function.\n   */\n  marshall(stamp) {\n    const argval = this._argval || NO_PARAMS,\n          argops = this._argops;\n    let item, i, op, mod;\n\n    if (argops) {\n      const n = argops.length;\n\n      for (i = 0; i < n; ++i) {\n        item = argops[i];\n        op = item.op;\n        mod = op.modified() && op.stamp === stamp;\n        argval.set(item.name, item.index, op.value, mod);\n      }\n\n      if (argops.initonly) {\n        for (i = 0; i < n; ++i) {\n          item = argops[i];\n          item.op.targets().remove(this);\n        }\n\n        this._argops = null;\n        this._update = null;\n      }\n    }\n\n    return argval;\n  },\n\n  /**\n   * Detach this operator from the dataflow.\n   * Unregisters listeners on upstream dependencies.\n   */\n  detach() {\n    const argops = this._argops;\n    let i, n, item, op;\n\n    if (argops) {\n      for (i = 0, n = argops.length; i < n; ++i) {\n        item = argops[i];\n        op = item.op;\n\n        if (op._targets) {\n          op._targets.remove(this);\n        }\n      }\n    } // remove references to the source and pulse object,\n    // if present, to prevent memory leaks of old data.\n\n\n    this.pulse = null;\n    this.source = null;\n  },\n\n  /**\n   * Delegate method to perform operator processing.\n   * Subclasses can override this method to perform custom processing.\n   * By default, it marshalls parameters and calls the update function\n   * if that function is defined. If the update function does not\n   * change the operator value then StopPropagation is returned.\n   * If no update function is defined, this method does nothing.\n   * @param {Pulse} pulse - the current dataflow pulse.\n   * @return The output pulse or StopPropagation. A falsy return value\n   *   (including undefined) will let the input pulse pass through.\n   */\n  evaluate(pulse) {\n    const update = this._update;\n\n    if (update) {\n      const params = this.marshall(pulse.stamp),\n            v = update.call(this, params, pulse);\n      params.clear();\n\n      if (v !== this.value) {\n        this.value = v;\n      } else if (!this.modified()) {\n        return pulse.StopPropagation;\n      }\n    }\n  },\n\n  /**\n   * Run this operator for the current pulse. If this operator has already\n   * been run at (or after) the pulse timestamp, returns StopPropagation.\n   * Internally, this method calls {@link evaluate} to perform processing.\n   * If {@link evaluate} returns a falsy value, the input pulse is returned.\n   * This method should NOT be overridden, instead overrride {@link evaluate}.\n   * @param {Pulse} pulse - the current dataflow pulse.\n   * @return the output pulse for this operator (or StopPropagation)\n   */\n  run(pulse) {\n    if (pulse.stamp < this.stamp) return pulse.StopPropagation;\n    let rv;\n\n    if (this.skip()) {\n      this.skip(false);\n      rv = 0;\n    } else {\n      rv = this.evaluate(pulse);\n    }\n\n    return this.pulse = rv || pulse;\n  }\n\n};\n\n/**\n * Add an operator to the dataflow graph. This function accepts a\n * variety of input argument types. The basic signature supports an\n * initial value, update function and parameters. If the first parameter\n * is an Operator instance, it will be added directly. If it is a\n * constructor for an Operator subclass, a new instance will be instantiated.\n * Otherwise, if the first parameter is a function instance, it will be used\n * as the update function and a null initial value is assumed.\n * @param {*} init - One of: the operator to add, the initial value of\n *   the operator, an operator class to instantiate, or an update function.\n * @param {function} [update] - The operator update function.\n * @param {object} [params] - The operator parameters.\n * @param {boolean} [react=true] - Flag indicating if this operator should\n *   listen for changes to upstream operators included as parameters.\n * @return {Operator} - The added operator.\n */\n\nfunction add (init, update, params, react) {\n  let shift = 1,\n      op;\n\n  if (init instanceof Operator) {\n    op = init;\n  } else if (init && init.prototype instanceof Operator) {\n    op = new init();\n  } else if (Object(vega_util__WEBPACK_IMPORTED_MODULE_0__[\"isFunction\"])(init)) {\n    op = new Operator(null, init);\n  } else {\n    shift = 0;\n    op = new Operator(init, update);\n  }\n\n  this.rank(op);\n\n  if (shift) {\n    react = params;\n    params = update;\n  }\n\n  if (params) this.connect(op, op.parameters(params, react));\n  this.touch(op);\n  return op;\n}\n\n/**\n * Connect a target operator as a dependent of source operators.\n * If necessary, this method will rerank the target operator and its\n * dependents to ensure propagation proceeds in a topologically sorted order.\n * @param {Operator} target - The target operator.\n * @param {Array<Operator>} - The source operators that should propagate\n *   to the target operator.\n */\nfunction connect (target, sources) {\n  const targetRank = target.rank,\n        n = sources.length;\n\n  for (let i = 0; i < n; ++i) {\n    if (targetRank < sources[i].rank) {\n      this.rerank(target);\n      return;\n    }\n  }\n}\n\nlet STREAM_ID = 0;\n/**\n * Models an event stream.\n * @constructor\n * @param {function(Object, number): boolean} [filter] - Filter predicate.\n *   Events pass through when truthy, events are suppressed when falsy.\n * @param {function(Object): *} [apply] - Applied to input events to produce\n *   new event values.\n * @param {function(Object)} [receive] - Event callback function to invoke\n *   upon receipt of a new event. Use to override standard event processing.\n */\n\nfunction EventStream(filter, apply, receive) {\n  this.id = ++STREAM_ID;\n  this.value = null;\n  if (receive) this.receive = receive;\n  if (filter) this._filter = filter;\n  if (apply) this._apply = apply;\n}\n/**\n * Creates a new event stream instance with the provided\n * (optional) filter, apply and receive functions.\n * @param {function(Object, number): boolean} [filter] - Filter predicate.\n *   Events pass through when truthy, events are suppressed when falsy.\n * @param {function(Object): *} [apply] - Applied to input events to produce\n *   new event values.\n * @see EventStream\n */\n\nfunction stream(filter, apply, receive) {\n  return new EventStream(filter, apply, receive);\n}\nEventStream.prototype = {\n  _filter: vega_util__WEBPACK_IMPORTED_MODULE_0__[\"truthy\"],\n  _apply: vega_util__WEBPACK_IMPORTED_MODULE_0__[\"identity\"],\n\n  targets() {\n    return this._targets || (this._targets = UniqueList(vega_util__WEBPACK_IMPORTED_MODULE_0__[\"id\"]));\n  },\n\n  consume(_) {\n    if (!arguments.length) return !!this._consume;\n    this._consume = !!_;\n    return this;\n  },\n\n  receive(evt) {\n    if (this._filter(evt)) {\n      const val = this.value = this._apply(evt),\n            trg = this._targets,\n            n = trg ? trg.length : 0;\n\n      for (let i = 0; i < n; ++i) trg[i].receive(val);\n\n      if (this._consume) {\n        evt.preventDefault();\n        evt.stopPropagation();\n      }\n    }\n  },\n\n  filter(filter) {\n    const s = stream(filter);\n    this.targets().add(s);\n    return s;\n  },\n\n  apply(apply) {\n    const s = stream(null, apply);\n    this.targets().add(s);\n    return s;\n  },\n\n  merge() {\n    const s = stream();\n    this.targets().add(s);\n\n    for (let i = 0, n = arguments.length; i < n; ++i) {\n      arguments[i].targets().add(s);\n    }\n\n    return s;\n  },\n\n  throttle(pause) {\n    let t = -1;\n    return this.filter(() => {\n      const now = Date.now();\n\n      if (now - t > pause) {\n        t = now;\n        return 1;\n      } else {\n        return 0;\n      }\n    });\n  },\n\n  debounce(delay) {\n    const s = stream();\n    this.targets().add(stream(null, null, Object(vega_util__WEBPACK_IMPORTED_MODULE_0__[\"debounce\"])(delay, e => {\n      const df = e.dataflow;\n      s.receive(e);\n      if (df && df.run) df.run();\n    })));\n    return s;\n  },\n\n  between(a, b) {\n    let active = false;\n    a.targets().add(stream(null, null, () => active = true));\n    b.targets().add(stream(null, null, () => active = false));\n    return this.filter(() => active);\n  },\n\n  detach() {\n    // ensures compatibility with operators (#2753)\n    // remove references to other streams and filter functions that may\n    // be bound to subcontexts that need to be garbage collected.\n    this._filter = vega_util__WEBPACK_IMPORTED_MODULE_0__[\"truthy\"];\n    this._targets = null;\n  }\n\n};\n\n/**\n * Create a new event stream from an event source.\n * @param {object} source - The event source to monitor. The input must\n *  support the addEventListener method.\n * @param {string} type - The event type.\n * @param {function(object): boolean} [filter] - Event filter function.\n * @param {function(object): *} [apply] - Event application function.\n *   If provided, this function will be invoked and the result will be\n *   used as the downstream event value.\n * @return {EventStream}\n */\n\nfunction events (source, type, filter, apply) {\n  const df = this,\n        s = stream(filter, apply),\n        send = function (e) {\n    e.dataflow = df;\n\n    try {\n      s.receive(e);\n    } catch (error) {\n      df.error(error);\n    } finally {\n      df.run();\n    }\n  };\n\n  let sources;\n\n  if (typeof source === 'string' && typeof document !== 'undefined') {\n    sources = document.querySelectorAll(source);\n  } else {\n    sources = Object(vega_util__WEBPACK_IMPORTED_MODULE_0__[\"array\"])(source);\n  }\n\n  const n = sources.length;\n\n  for (let i = 0; i < n; ++i) {\n    sources[i].addEventListener(type, send);\n  }\n\n  return s;\n}\n\nfunction parse(data, format) {\n  const locale = this.locale();\n  return Object(vega_loader__WEBPACK_IMPORTED_MODULE_1__[\"read\"])(data, format, locale.timeParse, locale.utcParse);\n}\n/**\n * Ingests new data into the dataflow. First parses the data using the\n * vega-loader read method, then pulses a changeset to the target operator.\n * @param {Operator} target - The Operator to target with ingested data,\n *   typically a Collect transform instance.\n * @param {*} data - The input data, prior to parsing. For JSON this may\n *   be a string or an object. For CSV, TSV, etc should be a string.\n * @param {object} format - The data format description for parsing\n *   loaded data. This object is passed to the vega-loader read method.\n * @returns {Dataflow}\n */\n\nfunction ingest(target, data, format) {\n  data = this.parse(data, format);\n  return this.pulse(target, this.changeset().insert(data));\n}\n/**\n * Request data from an external source, parse it, and return a Promise.\n * @param {string} url - The URL from which to load the data. This string\n *   is passed to the vega-loader load method.\n * @param {object} [format] - The data format description for parsing\n *   loaded data. This object is passed to the vega-loader read method.\n * @return {Promise} A Promise that resolves upon completion of the request.\n *   The resolved object contains the following properties:\n *   - data: an array of parsed data (or null upon error)\n *   - status: a code for success (0), load fail (-1), or parse fail (-2)\n */\n\nasync function request(url, format) {\n  const df = this;\n  let status = 0,\n      data;\n\n  try {\n    data = await df.loader().load(url, {\n      context: 'dataflow',\n      response: Object(vega_loader__WEBPACK_IMPORTED_MODULE_1__[\"responseType\"])(format && format.type)\n    });\n\n    try {\n      data = df.parse(data, format);\n    } catch (err) {\n      status = -2;\n      df.warn('Data ingestion failed', url, err);\n    }\n  } catch (err) {\n    status = -1;\n    df.warn('Loading failed', url, err);\n  }\n\n  return {\n    data,\n    status\n  };\n}\nasync function preload(target, url, format) {\n  const df = this,\n        pending = df._pending || loadPending(df);\n  pending.requests += 1;\n  const res = await df.request(url, format);\n  df.pulse(target, df.changeset().remove(vega_util__WEBPACK_IMPORTED_MODULE_0__[\"truthy\"]).insert(res.data || []));\n  pending.done();\n  return res;\n}\n\nfunction loadPending(df) {\n  let accept;\n  const pending = new Promise(a => accept = a);\n  pending.requests = 0;\n\n  pending.done = () => {\n    if (--pending.requests === 0) {\n      df._pending = null;\n      accept(df);\n    }\n  };\n\n  return df._pending = pending;\n}\n\nconst SKIP = {\n  skip: true\n};\n/**\n * Perform operator updates in response to events. Applies an\n * update function to compute a new operator value. If the update function\n * returns a {@link ChangeSet}, the operator will be pulsed with those tuple\n * changes. Otherwise, the operator value will be updated to the return value.\n * @param {EventStream|Operator} source - The event source to react to.\n *   This argument can be either an EventStream or an Operator.\n * @param {Operator|function(object):Operator} target - The operator to update.\n *   This argument can either be an Operator instance or (if the source\n *   argument is an EventStream), a function that accepts an event object as\n *   input and returns an Operator to target.\n * @param {function(Parameters,Event): *} [update] - Optional update function\n *   to compute the new operator value, or a literal value to set. Update\n *   functions expect to receive a parameter object and event as arguments.\n *   This function can either return a new operator value or (if the source\n *   argument is an EventStream) a {@link ChangeSet} instance to pulse\n *   the target operator with tuple changes.\n * @param {object} [params] - The update function parameters.\n * @param {object} [options] - Additional options hash. If not overridden,\n *   updated operators will be skipped by default.\n * @param {boolean} [options.skip] - If true, the operator will\n *  be skipped: it will not be evaluated, but its dependents will be.\n * @param {boolean} [options.force] - If true, the operator will\n *   be re-evaluated even if its value has not changed.\n * @return {Dataflow}\n */\n\nfunction on (source, target, update, params, options) {\n  const fn = source instanceof Operator ? onOperator : onStream;\n  fn(this, source, target, update, params, options);\n  return this;\n}\n\nfunction onStream(df, stream, target, update, params, options) {\n  const opt = Object(vega_util__WEBPACK_IMPORTED_MODULE_0__[\"extend\"])({}, options, SKIP);\n  let func, op;\n  if (!Object(vega_util__WEBPACK_IMPORTED_MODULE_0__[\"isFunction\"])(target)) target = Object(vega_util__WEBPACK_IMPORTED_MODULE_0__[\"constant\"])(target);\n\n  if (update === undefined) {\n    func = e => df.touch(target(e));\n  } else if (Object(vega_util__WEBPACK_IMPORTED_MODULE_0__[\"isFunction\"])(update)) {\n    op = new Operator(null, update, params, false);\n\n    func = e => {\n      op.evaluate(e);\n      const t = target(e),\n            v = op.value;\n      isChangeSet(v) ? df.pulse(t, v, options) : df.update(t, v, opt);\n    };\n  } else {\n    func = e => df.update(target(e), update, opt);\n  }\n\n  stream.apply(func);\n}\n\nfunction onOperator(df, source, target, update, params, options) {\n  if (update === undefined) {\n    source.targets().add(target);\n  } else {\n    const opt = options || {},\n          op = new Operator(null, updater(target, update), params, false);\n    op.modified(opt.force);\n    op.rank = source.rank; // immediately follow source\n\n    source.targets().add(op); // add dependency\n\n    if (target) {\n      op.skip(true); // skip first invocation\n\n      op.value = target.value; // initialize value\n\n      op.targets().add(target); // chain dependencies\n\n      df.connect(target, [op]); // rerank as needed, #1672\n    }\n  }\n}\n\nfunction updater(target, update) {\n  update = Object(vega_util__WEBPACK_IMPORTED_MODULE_0__[\"isFunction\"])(update) ? update : Object(vega_util__WEBPACK_IMPORTED_MODULE_0__[\"constant\"])(update);\n  return target ? function (_, pulse) {\n    const value = update(_, pulse);\n\n    if (!target.skip()) {\n      target.skip(value !== this.value).value = value;\n    }\n\n    return value;\n  } : update;\n}\n\n/**\n * Assigns a rank to an operator. Ranks are assigned in increasing order\n * by incrementing an internal rank counter.\n * @param {Operator} op - The operator to assign a rank.\n */\n\nfunction rank(op) {\n  op.rank = ++this._rank;\n}\n/**\n * Re-ranks an operator and all downstream target dependencies. This\n * is necessary when upstream dependencies of higher rank are added to\n * a target operator.\n * @param {Operator} op - The operator to re-rank.\n */\n\nfunction rerank(op) {\n  const queue = [op];\n  let cur, list, i;\n\n  while (queue.length) {\n    this.rank(cur = queue.pop());\n\n    if (list = cur._targets) {\n      for (i = list.length; --i >= 0;) {\n        queue.push(cur = list[i]);\n        if (cur === op) Object(vega_util__WEBPACK_IMPORTED_MODULE_0__[\"error\"])('Cycle detected in dataflow graph.');\n      }\n    }\n  }\n}\n\n/**\n * Sentinel value indicating pulse propagation should stop.\n */\n\nconst StopPropagation = {}; // Pulse visit type flags\n\nconst ADD = 1 << 0,\n      REM = 1 << 1,\n      MOD = 1 << 2,\n      ADD_REM = ADD | REM,\n      ADD_MOD = ADD | MOD,\n      ALL = ADD | REM | MOD,\n      REFLOW = 1 << 3,\n      SOURCE = 1 << 4,\n      NO_SOURCE = 1 << 5,\n      NO_FIELDS = 1 << 6;\n/**\n * A Pulse enables inter-operator communication during a run of the\n * dataflow graph. In addition to the current timestamp, a pulse may also\n * contain a change-set of added, removed or modified data tuples, as well as\n * a pointer to a full backing data source. Tuple change sets may not\n * be fully materialized; for example, to prevent needless array creation\n * a change set may include larger arrays and corresponding filter functions.\n * The pulse provides a {@link visit} method to enable proper and efficient\n * iteration over requested data tuples.\n *\n * In addition, each pulse can track modification flags for data tuple fields.\n * Responsible transform operators should call the {@link modifies} method to\n * indicate changes to data fields. The {@link modified} method enables\n * querying of this modification state.\n *\n * @constructor\n * @param {Dataflow} dataflow - The backing dataflow instance.\n * @param {number} stamp - The current propagation timestamp.\n * @param {string} [encode] - An optional encoding set name, which is then\n *   accessible as Pulse.encode. Operators can respond to (or ignore) this\n *   setting as appropriate. This parameter can be used in conjunction with\n *   the Encode transform in the vega-encode module.\n */\n\nfunction Pulse(dataflow, stamp, encode) {\n  this.dataflow = dataflow;\n  this.stamp = stamp == null ? -1 : stamp;\n  this.add = [];\n  this.rem = [];\n  this.mod = [];\n  this.fields = null;\n  this.encode = encode || null;\n}\n\nfunction materialize(data, filter) {\n  const out = [];\n  Object(vega_util__WEBPACK_IMPORTED_MODULE_0__[\"visitArray\"])(data, filter, _ => out.push(_));\n  return out;\n}\n\nfunction filter(pulse, flags) {\n  const map = {};\n  pulse.visit(flags, t => {\n    map[tupleid(t)] = 1;\n  });\n  return t => map[tupleid(t)] ? null : t;\n}\n\nfunction addFilter(a, b) {\n  return a ? (t, i) => a(t, i) && b(t, i) : b;\n}\n\nPulse.prototype = {\n  /**\n   * Sentinel value indicating pulse propagation should stop.\n   */\n  StopPropagation,\n\n  /**\n   * Boolean flag indicating ADD (added) tuples.\n   */\n  ADD,\n\n  /**\n   * Boolean flag indicating REM (removed) tuples.\n   */\n  REM,\n\n  /**\n   * Boolean flag indicating MOD (modified) tuples.\n   */\n  MOD,\n\n  /**\n   * Boolean flag indicating ADD (added) and REM (removed) tuples.\n   */\n  ADD_REM,\n\n  /**\n   * Boolean flag indicating ADD (added) and MOD (modified) tuples.\n   */\n  ADD_MOD,\n\n  /**\n   * Boolean flag indicating ADD, REM and MOD tuples.\n   */\n  ALL,\n\n  /**\n   * Boolean flag indicating all tuples in a data source\n   * except for the ADD, REM and MOD tuples.\n   */\n  REFLOW,\n\n  /**\n   * Boolean flag indicating a 'pass-through' to a\n   * backing data source, ignoring ADD, REM and MOD tuples.\n   */\n  SOURCE,\n\n  /**\n   * Boolean flag indicating that source data should be\n   * suppressed when creating a forked pulse.\n   */\n  NO_SOURCE,\n\n  /**\n   * Boolean flag indicating that field modifications should be\n   * suppressed when creating a forked pulse.\n   */\n  NO_FIELDS,\n\n  /**\n   * Creates a new pulse based on the values of this pulse.\n   * The dataflow, time stamp and field modification values are copied over.\n   * By default, new empty ADD, REM and MOD arrays are created.\n   * @param {number} flags - Integer of boolean flags indicating which (if any)\n   *   tuple arrays should be copied to the new pulse. The supported flag values\n   *   are ADD, REM and MOD. Array references are copied directly: new array\n   *   instances are not created.\n   * @return {Pulse} - The forked pulse instance.\n   * @see init\n   */\n  fork(flags) {\n    return new Pulse(this.dataflow).init(this, flags);\n  },\n\n  /**\n   * Creates a copy of this pulse with new materialized array\n   * instances for the ADD, REM, MOD, and SOURCE arrays.\n   * The dataflow, time stamp and field modification values are copied over.\n   * @return {Pulse} - The cloned pulse instance.\n   * @see init\n   */\n  clone() {\n    const p = this.fork(ALL);\n    p.add = p.add.slice();\n    p.rem = p.rem.slice();\n    p.mod = p.mod.slice();\n    if (p.source) p.source = p.source.slice();\n    return p.materialize(ALL | SOURCE);\n  },\n\n  /**\n   * Returns a pulse that adds all tuples from a backing source. This is\n   * useful for cases where operators are added to a dataflow after an\n   * upstream data pipeline has already been processed, ensuring that\n   * new operators can observe all tuples within a stream.\n   * @return {Pulse} - A pulse instance with all source tuples included\n   *   in the add array. If the current pulse already has all source\n   *   tuples in its add array, it is returned directly. If the current\n   *   pulse does not have a backing source, it is returned directly.\n   */\n  addAll() {\n    let p = this;\n    const reuse = !p.source || p.add === p.rem // special case for indexed set (e.g., crossfilter)\n    || !p.rem.length && p.source.length === p.add.length;\n\n    if (reuse) {\n      return p;\n    } else {\n      p = new Pulse(this.dataflow).init(this);\n      p.add = p.source;\n      p.rem = []; // new operators can ignore rem #2769\n\n      return p;\n    }\n  },\n\n  /**\n   * Initialize this pulse based on the values of another pulse. This method\n   * is used internally by {@link fork} to initialize a new forked tuple.\n   * The dataflow, time stamp and field modification values are copied over.\n   * By default, new empty ADD, REM and MOD arrays are created.\n   * @param {Pulse} src - The source pulse to copy from.\n   * @param {number} flags - Integer of boolean flags indicating which (if any)\n   *   tuple arrays should be copied to the new pulse. The supported flag values\n   *   are ADD, REM and MOD. Array references are copied directly: new array\n   *   instances are not created. By default, source data arrays are copied\n   *   to the new pulse. Use the NO_SOURCE flag to enforce a null source.\n   * @return {Pulse} - Returns this Pulse instance.\n   */\n  init(src, flags) {\n    const p = this;\n    p.stamp = src.stamp;\n    p.encode = src.encode;\n\n    if (src.fields && !(flags & NO_FIELDS)) {\n      p.fields = src.fields;\n    }\n\n    if (flags & ADD) {\n      p.addF = src.addF;\n      p.add = src.add;\n    } else {\n      p.addF = null;\n      p.add = [];\n    }\n\n    if (flags & REM) {\n      p.remF = src.remF;\n      p.rem = src.rem;\n    } else {\n      p.remF = null;\n      p.rem = [];\n    }\n\n    if (flags & MOD) {\n      p.modF = src.modF;\n      p.mod = src.mod;\n    } else {\n      p.modF = null;\n      p.mod = [];\n    }\n\n    if (flags & NO_SOURCE) {\n      p.srcF = null;\n      p.source = null;\n    } else {\n      p.srcF = src.srcF;\n      p.source = src.source;\n      if (src.cleans) p.cleans = src.cleans;\n    }\n\n    return p;\n  },\n\n  /**\n   * Schedules a function to run after pulse propagation completes.\n   * @param {function} func - The function to run.\n   */\n  runAfter(func) {\n    this.dataflow.runAfter(func);\n  },\n\n  /**\n   * Indicates if tuples have been added, removed or modified.\n   * @param {number} [flags] - The tuple types (ADD, REM or MOD) to query.\n   *   Defaults to ALL, returning true if any tuple type has changed.\n   * @return {boolean} - Returns true if one or more queried tuple types have\n   *   changed, false otherwise.\n   */\n  changed(flags) {\n    const f = flags || ALL;\n    return f & ADD && this.add.length || f & REM && this.rem.length || f & MOD && this.mod.length;\n  },\n\n  /**\n   * Forces a \"reflow\" of tuple values, such that all tuples in the backing\n   * source are added to the MOD set, unless already present in the ADD set.\n   * @param {boolean} [fork=false] - If true, returns a forked copy of this\n   *   pulse, and invokes reflow on that derived pulse.\n   * @return {Pulse} - The reflowed pulse instance.\n   */\n  reflow(fork) {\n    if (fork) return this.fork(ALL).reflow();\n    const len = this.add.length,\n          src = this.source && this.source.length;\n\n    if (src && src !== len) {\n      this.mod = this.source;\n      if (len) this.filter(MOD, filter(this, ADD));\n    }\n\n    return this;\n  },\n\n  /**\n   * Get/set metadata to pulse requesting garbage collection\n   * to reclaim currently unused resources.\n   */\n  clean(value) {\n    if (arguments.length) {\n      this.cleans = !!value;\n      return this;\n    } else {\n      return this.cleans;\n    }\n  },\n\n  /**\n   * Marks one or more data field names as modified to assist dependency\n   * tracking and incremental processing by transform operators.\n   * @param {string|Array<string>} _ - The field(s) to mark as modified.\n   * @return {Pulse} - This pulse instance.\n   */\n  modifies(_) {\n    const hash = this.fields || (this.fields = {});\n\n    if (Object(vega_util__WEBPACK_IMPORTED_MODULE_0__[\"isArray\"])(_)) {\n      _.forEach(f => hash[f] = true);\n    } else {\n      hash[_] = true;\n    }\n\n    return this;\n  },\n\n  /**\n   * Checks if one or more data fields have been modified during this pulse\n   * propagation timestamp.\n   * @param {string|Array<string>} _ - The field(s) to check for modified.\n   * @param {boolean} nomod - If true, will check the modified flag even if\n   *   no mod tuples exist. If false (default), mod tuples must be present.\n   * @return {boolean} - Returns true if any of the provided fields has been\n   *   marked as modified, false otherwise.\n   */\n  modified(_, nomod) {\n    const fields = this.fields;\n    return !((nomod || this.mod.length) && fields) ? false : !arguments.length ? !!fields : Object(vega_util__WEBPACK_IMPORTED_MODULE_0__[\"isArray\"])(_) ? _.some(f => fields[f]) : fields[_];\n  },\n\n  /**\n   * Adds a filter function to one more tuple sets. Filters are applied to\n   * backing tuple arrays, to determine the actual set of tuples considered\n   * added, removed or modified. They can be used to delay materialization of\n   * a tuple set in order to avoid expensive array copies. In addition, the\n   * filter functions can serve as value transformers: unlike standard predicate\n   * function (which return boolean values), Pulse filters should return the\n   * actual tuple value to process. If a tuple set is already filtered, the\n   * new filter function will be appended into a conjuntive ('and') query.\n   * @param {number} flags - Flags indicating the tuple set(s) to filter.\n   * @param {function(*):object} filter - Filter function that will be applied\n   *   to the tuple set array, and should return a data tuple if the value\n   *   should be included in the tuple set, and falsy (or null) otherwise.\n   * @return {Pulse} - Returns this pulse instance.\n   */\n  filter(flags, filter) {\n    const p = this;\n    if (flags & ADD) p.addF = addFilter(p.addF, filter);\n    if (flags & REM) p.remF = addFilter(p.remF, filter);\n    if (flags & MOD) p.modF = addFilter(p.modF, filter);\n    if (flags & SOURCE) p.srcF = addFilter(p.srcF, filter);\n    return p;\n  },\n\n  /**\n   * Materialize one or more tuple sets in this pulse. If the tuple set(s) have\n   * a registered filter function, it will be applied and the tuple set(s) will\n   * be replaced with materialized tuple arrays.\n   * @param {number} flags - Flags indicating the tuple set(s) to materialize.\n   * @return {Pulse} - Returns this pulse instance.\n   */\n  materialize(flags) {\n    flags = flags || ALL;\n    const p = this;\n\n    if (flags & ADD && p.addF) {\n      p.add = materialize(p.add, p.addF);\n      p.addF = null;\n    }\n\n    if (flags & REM && p.remF) {\n      p.rem = materialize(p.rem, p.remF);\n      p.remF = null;\n    }\n\n    if (flags & MOD && p.modF) {\n      p.mod = materialize(p.mod, p.modF);\n      p.modF = null;\n    }\n\n    if (flags & SOURCE && p.srcF) {\n      p.source = p.source.filter(p.srcF);\n      p.srcF = null;\n    }\n\n    return p;\n  },\n\n  /**\n   * Visit one or more tuple sets in this pulse.\n   * @param {number} flags - Flags indicating the tuple set(s) to visit.\n   *   Legal values are ADD, REM, MOD and SOURCE (if a backing data source\n   *   has been set).\n   * @param {function(object):*} - Visitor function invoked per-tuple.\n   * @return {Pulse} - Returns this pulse instance.\n   */\n  visit(flags, visitor) {\n    const p = this,\n          v = visitor;\n\n    if (flags & SOURCE) {\n      Object(vega_util__WEBPACK_IMPORTED_MODULE_0__[\"visitArray\"])(p.source, p.srcF, v);\n      return p;\n    }\n\n    if (flags & ADD) Object(vega_util__WEBPACK_IMPORTED_MODULE_0__[\"visitArray\"])(p.add, p.addF, v);\n    if (flags & REM) Object(vega_util__WEBPACK_IMPORTED_MODULE_0__[\"visitArray\"])(p.rem, p.remF, v);\n    if (flags & MOD) Object(vega_util__WEBPACK_IMPORTED_MODULE_0__[\"visitArray\"])(p.mod, p.modF, v);\n    const src = p.source;\n\n    if (flags & REFLOW && src) {\n      const sum = p.add.length + p.mod.length;\n\n      if (sum === src.length) ; else if (sum) {\n        Object(vega_util__WEBPACK_IMPORTED_MODULE_0__[\"visitArray\"])(src, filter(p, ADD_MOD), v);\n      } else {\n        // if no add/rem/mod tuples, visit source\n        Object(vega_util__WEBPACK_IMPORTED_MODULE_0__[\"visitArray\"])(src, p.srcF, v);\n      }\n    }\n\n    return p;\n  }\n\n};\n\n/**\n * Represents a set of multiple pulses. Used as input for operators\n * that accept multiple pulses at a time. Contained pulses are\n * accessible via the public \"pulses\" array property. This pulse doe\n * not carry added, removed or modified tuples directly. However,\n * the visit method can be used to traverse all such tuples contained\n * in sub-pulses with a timestamp matching this parent multi-pulse.\n * @constructor\n * @param {Dataflow} dataflow - The backing dataflow instance.\n * @param {number} stamp - The timestamp.\n * @param {Array<Pulse>} pulses - The sub-pulses for this multi-pulse.\n */\n\nfunction MultiPulse(dataflow, stamp, pulses, encode) {\n  const p = this,\n        n = pulses.length;\n  let c = 0;\n  this.dataflow = dataflow;\n  this.stamp = stamp;\n  this.fields = null;\n  this.encode = encode || null;\n  this.pulses = pulses;\n\n  for (let i = 0; i < n; ++i) {\n    const pulse = pulses[i];\n    if (pulse.stamp !== stamp) continue;\n\n    if (pulse.fields) {\n      const hash = p.fields || (p.fields = {});\n\n      for (const f in pulse.fields) {\n        hash[f] = 1;\n      }\n    }\n\n    if (pulse.changed(p.ADD)) c |= p.ADD;\n    if (pulse.changed(p.REM)) c |= p.REM;\n    if (pulse.changed(p.MOD)) c |= p.MOD;\n  }\n\n  this.changes = c;\n}\nObject(vega_util__WEBPACK_IMPORTED_MODULE_0__[\"inherits\"])(MultiPulse, Pulse, {\n  /**\n   * Creates a new pulse based on the values of this pulse.\n   * The dataflow, time stamp and field modification values are copied over.\n   * @return {Pulse}\n   */\n  fork(flags) {\n    const p = new Pulse(this.dataflow).init(this, flags & this.NO_FIELDS);\n\n    if (flags !== undefined) {\n      if (flags & p.ADD) this.visit(p.ADD, t => p.add.push(t));\n      if (flags & p.REM) this.visit(p.REM, t => p.rem.push(t));\n      if (flags & p.MOD) this.visit(p.MOD, t => p.mod.push(t));\n    }\n\n    return p;\n  },\n\n  changed(flags) {\n    return this.changes & flags;\n  },\n\n  modified(_) {\n    const p = this,\n          fields = p.fields;\n    return !(fields && p.changes & p.MOD) ? 0 : Object(vega_util__WEBPACK_IMPORTED_MODULE_0__[\"isArray\"])(_) ? _.some(f => fields[f]) : fields[_];\n  },\n\n  filter() {\n    Object(vega_util__WEBPACK_IMPORTED_MODULE_0__[\"error\"])('MultiPulse does not support filtering.');\n  },\n\n  materialize() {\n    Object(vega_util__WEBPACK_IMPORTED_MODULE_0__[\"error\"])('MultiPulse does not support materialization.');\n  },\n\n  visit(flags, visitor) {\n    const p = this,\n          pulses = p.pulses,\n          n = pulses.length;\n    let i = 0;\n\n    if (flags & p.SOURCE) {\n      for (; i < n; ++i) {\n        pulses[i].visit(flags, visitor);\n      }\n    } else {\n      for (; i < n; ++i) {\n        if (pulses[i].stamp === p.stamp) {\n          pulses[i].visit(flags, visitor);\n        }\n      }\n    }\n\n    return p;\n  }\n\n});\n\n/* eslint-disable require-atomic-updates */\n/**\n * Evaluates the dataflow and returns a Promise that resolves when pulse\n * propagation completes. This method will increment the current timestamp\n * and process all updated, pulsed and touched operators. When invoked for\n * the first time, all registered operators will be processed. This method\n * should not be invoked by third-party clients, use {@link runAsync} or\n * {@link run} instead.\n * @param {string} [encode] - The name of an encoding set to invoke during\n *   propagation. This value is added to generated Pulse instances;\n *   operators can then respond to (or ignore) this setting as appropriate.\n *   This parameter can be used in conjunction with the Encode transform in\n *   the vega-encode package.\n * @param {function} [prerun] - An optional callback function to invoke\n *   immediately before dataflow evaluation commences.\n * @param {function} [postrun] - An optional callback function to invoke\n *   after dataflow evaluation completes. The callback will be invoked\n *   after those registered via {@link runAfter}.\n * @return {Promise} - A promise that resolves to this dataflow after\n *   evaluation completes.\n */\n\nasync function evaluate(encode, prerun, postrun) {\n  const df = this,\n        async = []; // if the pulse value is set, this is a re-entrant call\n\n  if (df._pulse) return reentrant(df); // wait for pending datasets to load\n\n  if (df._pending) await df._pending; // invoke prerun function, if provided\n\n  if (prerun) await asyncCallback(df, prerun); // exit early if there are no updates\n\n  if (!df._touched.length) {\n    df.debug('Dataflow invoked, but nothing to do.');\n    return df;\n  } // increment timestamp clock\n\n\n  const stamp = ++df._clock; // set the current pulse\n\n  df._pulse = new Pulse(df, stamp, encode); // initialize priority queue, reset touched operators\n\n  df._touched.forEach(op => df._enqueue(op, true));\n\n  df._touched = UniqueList(vega_util__WEBPACK_IMPORTED_MODULE_0__[\"id\"]);\n  let count = 0,\n      op,\n      next,\n      error;\n\n  try {\n    while (df._heap.size() > 0) {\n      // dequeue operator with highest priority\n      op = df._heap.pop(); // re-queue if rank changed\n\n      if (op.rank !== op.qrank) {\n        df._enqueue(op, true);\n\n        continue;\n      } // otherwise, evaluate the operator\n\n\n      next = op.run(df._getPulse(op, encode));\n\n      if (next.then) {\n        // await if operator returns a promise directly\n        next = await next;\n      } else if (next.async) {\n        // queue parallel asynchronous execution\n        async.push(next.async);\n        next = StopPropagation;\n      } // propagate evaluation, enqueue dependent operators\n\n\n      if (next !== StopPropagation) {\n        if (op._targets) op._targets.forEach(op => df._enqueue(op));\n      } // increment visit counter\n\n\n      ++count;\n    }\n  } catch (err) {\n    df._heap.clear();\n\n    error = err;\n  } // reset pulse map\n\n\n  df._input = {};\n  df._pulse = null;\n  df.debug(`Pulse ${stamp}: ${count} operators`);\n\n  if (error) {\n    df._postrun = [];\n    df.error(error);\n  } // invoke callbacks queued via runAfter\n\n\n  if (df._postrun.length) {\n    const pr = df._postrun.sort((a, b) => b.priority - a.priority);\n\n    df._postrun = [];\n\n    for (let i = 0; i < pr.length; ++i) {\n      await asyncCallback(df, pr[i].callback);\n    }\n  } // invoke postrun function, if provided\n\n\n  if (postrun) await asyncCallback(df, postrun); // handle non-blocking asynchronous callbacks\n\n  if (async.length) {\n    Promise.all(async).then(cb => df.runAsync(null, () => {\n      cb.forEach(f => {\n        try {\n          f(df);\n        } catch (err) {\n          df.error(err);\n        }\n      });\n    }));\n  }\n\n  return df;\n}\n/**\n * Queues dataflow evaluation to run once any other queued evaluations have\n * completed and returns a Promise that resolves when the queued pulse\n * propagation completes. If provided, a callback function will be invoked\n * immediately before evaluation commences. This method will ensure a\n * separate evaluation is invoked for each time it is called.\n * @param {string} [encode] - The name of an encoding set to invoke during\n *   propagation. This value is added to generated Pulse instances;\n *   operators can then respond to (or ignore) this setting as appropriate.\n *   This parameter can be used in conjunction with the Encode transform in\n *   the vega-encode package.\n * @param {function} [prerun] - An optional callback function to invoke\n *   immediately before dataflow evaluation commences.\n * @param {function} [postrun] - An optional callback function to invoke\n *   after dataflow evaluation completes. The callback will be invoked\n *   after those registered via {@link runAfter}.\n * @return {Promise} - A promise that resolves to this dataflow after\n *   evaluation completes.\n */\n\nasync function runAsync(encode, prerun, postrun) {\n  // await previously queued functions\n  while (this._running) await this._running; // run dataflow, manage running promise\n\n\n  const clear = () => this._running = null;\n\n  (this._running = this.evaluate(encode, prerun, postrun)).then(clear, clear);\n  return this._running;\n}\n/**\n * Requests dataflow evaluation and the immediately returns this dataflow\n * instance. If there are pending data loading or other asynchronous\n * operations, the dataflow will evaluate asynchronously after this method\n * has been invoked. To track when dataflow evaluation completes, use the\n * {@link runAsync} method instead. This method will raise an error if\n * invoked while the dataflow is already in the midst of evaluation.\n * @param {string} [encode] - The name of an encoding set to invoke during\n *   propagation. This value is added to generated Pulse instances;\n *   operators can then respond to (or ignore) this setting as appropriate.\n *   This parameter can be used in conjunction with the Encode transform in\n *   the vega-encode module.\n * @param {function} [prerun] - An optional callback function to invoke\n *   immediately before dataflow evaluation commences.\n * @param {function} [postrun] - An optional callback function to invoke\n *   after dataflow evaluation completes. The callback will be invoked\n *   after those registered via {@link runAfter}.\n * @return {Dataflow} - This dataflow instance.\n */\n\nfunction run(encode, prerun, postrun) {\n  return this._pulse ? reentrant(this) : (this.evaluate(encode, prerun, postrun), this);\n}\n/**\n * Schedules a callback function to be invoked after the current pulse\n * propagation completes. If no propagation is currently occurring,\n * the function is invoked immediately. Callbacks scheduled via runAfter\n * are invoked immediately upon completion of the current cycle, before\n * any request queued via runAsync. This method is primarily intended for\n * internal use. Third-party callers using runAfter to schedule a callback\n * that invokes {@link run} or {@link runAsync} should not use this method,\n * but instead use {@link runAsync} with prerun or postrun arguments.\n * @param {function(Dataflow)} callback - The callback function to run.\n *   The callback will be invoked with this Dataflow instance as its\n *   sole argument.\n * @param {boolean} enqueue - A boolean flag indicating that the\n *   callback should be queued up to run after the next propagation\n *   cycle, suppressing immediate invocation when propagation is not\n *   currently occurring.\n * @param {number} [priority] - A priority value used to sort registered\n *   callbacks to determine execution order. This argument is intended\n *   for internal Vega use only.\n */\n\nfunction runAfter(callback, enqueue, priority) {\n  if (this._pulse || enqueue) {\n    // pulse propagation is currently running, queue to run after\n    this._postrun.push({\n      priority: priority || 0,\n      callback: callback\n    });\n  } else {\n    // pulse propagation already complete, invoke immediately\n    try {\n      callback(this);\n    } catch (err) {\n      this.error(err);\n    }\n  }\n}\n/**\n * Raise an error for re-entrant dataflow evaluation.\n */\n\nfunction reentrant(df) {\n  df.error('Dataflow already running. Use runAsync() to chain invocations.');\n  return df;\n}\n/**\n * Enqueue an operator into the priority queue for evaluation. The operator\n * will be enqueued if it has no registered pulse for the current cycle, or if\n * the force argument is true. Upon enqueue, this method also sets the\n * operator's qrank to the current rank value.\n * @param {Operator} op - The operator to enqueue.\n * @param {boolean} [force] - A flag indicating if the operator should be\n *   forceably added to the queue, even if it has already been previously\n *   enqueued during the current pulse propagation. This is useful when the\n *   dataflow graph is dynamically modified and the operator rank changes.\n */\n\n\nfunction enqueue(op, force) {\n  const q = op.stamp < this._clock;\n  if (q) op.stamp = this._clock;\n\n  if (q || force) {\n    op.qrank = op.rank;\n\n    this._heap.push(op);\n  }\n}\n/**\n * Provide a correct pulse for evaluating an operator. If the operator has an\n * explicit source operator, we will try to pull the pulse(s) from it.\n * If there is an array of source operators, we build a multi-pulse.\n * Otherwise, we return a current pulse with correct source data.\n * If the pulse is the pulse map has an explicit target set, we use that.\n * Else if the pulse on the upstream source operator is current, we use that.\n * Else we use the pulse from the pulse map, but copy the source tuple array.\n * @param {Operator} op - The operator for which to get an input pulse.\n * @param {string} [encode] - An (optional) encoding set name with which to\n *   annotate the returned pulse. See {@link run} for more information.\n */\n\nfunction getPulse(op, encode) {\n  const s = op.source,\n        stamp = this._clock;\n  return s && Object(vega_util__WEBPACK_IMPORTED_MODULE_0__[\"isArray\"])(s) ? new MultiPulse(this, stamp, s.map(_ => _.pulse), encode) : this._input[op.id] || singlePulse(this._pulse, s && s.pulse);\n}\n\nfunction singlePulse(p, s) {\n  if (s && s.stamp === p.stamp) {\n    return s;\n  }\n\n  p = p.fork();\n\n  if (s && s !== StopPropagation) {\n    p.source = s.source;\n  }\n\n  return p;\n}\n\nconst NO_OPT = {\n  skip: false,\n  force: false\n};\n/**\n * Touches an operator, scheduling it to be evaluated. If invoked outside of\n * a pulse propagation, the operator will be evaluated the next time this\n * dataflow is run. If invoked in the midst of pulse propagation, the operator\n * will be queued for evaluation if and only if the operator has not yet been\n * evaluated on the current propagation timestamp.\n * @param {Operator} op - The operator to touch.\n * @param {object} [options] - Additional options hash.\n * @param {boolean} [options.skip] - If true, the operator will\n *   be skipped: it will not be evaluated, but its dependents will be.\n * @return {Dataflow}\n */\n\nfunction touch(op, options) {\n  const opt = options || NO_OPT;\n\n  if (this._pulse) {\n    // if in midst of propagation, add to priority queue\n    this._enqueue(op);\n  } else {\n    // otherwise, queue for next propagation\n    this._touched.add(op);\n  }\n\n  if (opt.skip) op.skip(true);\n  return this;\n}\n/**\n * Updates the value of the given operator.\n * @param {Operator} op - The operator to update.\n * @param {*} value - The value to set.\n * @param {object} [options] - Additional options hash.\n * @param {boolean} [options.force] - If true, the operator will\n *   be re-evaluated even if its value has not changed.\n * @param {boolean} [options.skip] - If true, the operator will\n *   be skipped: it will not be evaluated, but its dependents will be.\n * @return {Dataflow}\n */\n\nfunction update(op, value, options) {\n  const opt = options || NO_OPT;\n\n  if (op.set(value) || opt.force) {\n    this.touch(op, opt);\n  }\n\n  return this;\n}\n/**\n * Pulses an operator with a changeset of tuples. If invoked outside of\n * a pulse propagation, the pulse will be applied the next time this\n * dataflow is run. If invoked in the midst of pulse propagation, the pulse\n * will be added to the set of active pulses and will be applied if and\n * only if the target operator has not yet been evaluated on the current\n * propagation timestamp.\n * @param {Operator} op - The operator to pulse.\n * @param {ChangeSet} value - The tuple changeset to apply.\n * @param {object} [options] - Additional options hash.\n * @param {boolean} [options.skip] - If true, the operator will\n *   be skipped: it will not be evaluated, but its dependents will be.\n * @return {Dataflow}\n */\n\nfunction pulse(op, changeset, options) {\n  this.touch(op, options || NO_OPT);\n  const p = new Pulse(this, this._clock + (this._pulse ? 0 : 1)),\n        t = op.pulse && op.pulse.source || [];\n  p.target = op;\n  this._input[op.id] = changeset.pulse(p, t);\n  return this;\n}\n\nfunction Heap(cmp) {\n  let nodes = [];\n  return {\n    clear: () => nodes = [],\n    size: () => nodes.length,\n    peek: () => nodes[0],\n    push: x => {\n      nodes.push(x);\n      return siftdown(nodes, 0, nodes.length - 1, cmp);\n    },\n    pop: () => {\n      const last = nodes.pop();\n      let item;\n\n      if (nodes.length) {\n        item = nodes[0];\n        nodes[0] = last;\n        siftup(nodes, 0, cmp);\n      } else {\n        item = last;\n      }\n\n      return item;\n    }\n  };\n}\n\nfunction siftdown(array, start, idx, cmp) {\n  let parent, pidx;\n  const item = array[idx];\n\n  while (idx > start) {\n    pidx = idx - 1 >> 1;\n    parent = array[pidx];\n\n    if (cmp(item, parent) < 0) {\n      array[idx] = parent;\n      idx = pidx;\n      continue;\n    }\n\n    break;\n  }\n\n  return array[idx] = item;\n}\n\nfunction siftup(array, idx, cmp) {\n  const start = idx,\n        end = array.length,\n        item = array[idx];\n  let cidx = (idx << 1) + 1,\n      ridx;\n\n  while (cidx < end) {\n    ridx = cidx + 1;\n\n    if (ridx < end && cmp(array[cidx], array[ridx]) >= 0) {\n      cidx = ridx;\n    }\n\n    array[idx] = array[cidx];\n    idx = cidx;\n    cidx = (idx << 1) + 1;\n  }\n\n  array[idx] = item;\n  return siftdown(array, start, idx, cmp);\n}\n\n/**\n * A dataflow graph for reactive processing of data streams.\n * @constructor\n */\n\nfunction Dataflow() {\n  this.logger(Object(vega_util__WEBPACK_IMPORTED_MODULE_0__[\"logger\"])());\n  this.logLevel(vega_util__WEBPACK_IMPORTED_MODULE_0__[\"Error\"]);\n  this._clock = 0;\n  this._rank = 0;\n  this._locale = Object(vega_format__WEBPACK_IMPORTED_MODULE_2__[\"defaultLocale\"])();\n\n  try {\n    this._loader = Object(vega_loader__WEBPACK_IMPORTED_MODULE_1__[\"loader\"])();\n  } catch (e) {// do nothing if loader module is unavailable\n  }\n\n  this._touched = UniqueList(vega_util__WEBPACK_IMPORTED_MODULE_0__[\"id\"]);\n  this._input = {};\n  this._pulse = null;\n  this._heap = Heap((a, b) => a.qrank - b.qrank);\n  this._postrun = [];\n}\n\nfunction logMethod(method) {\n  return function () {\n    return this._log[method].apply(this, arguments);\n  };\n}\n\nDataflow.prototype = {\n  /**\n   * The current timestamp of this dataflow. This value reflects the\n   * timestamp of the previous dataflow run. The dataflow is initialized\n   * with a stamp value of 0. The initial run of the dataflow will have\n   * a timestap of 1, and so on. This value will match the\n   * {@link Pulse.stamp} property.\n   * @return {number} - The current timestamp value.\n   */\n  stamp() {\n    return this._clock;\n  },\n\n  /**\n   * Gets or sets the loader instance to use for data file loading. A\n   * loader object must provide a \"load\" method for loading files and a\n   * \"sanitize\" method for checking URL/filename validity. Both methods\n   * should accept a URI and options hash as arguments, and return a Promise\n   * that resolves to the loaded file contents (load) or a hash containing\n   * sanitized URI data with the sanitized url assigned to the \"href\" property\n   * (sanitize).\n   * @param {object} _ - The loader instance to use.\n   * @return {object|Dataflow} - If no arguments are provided, returns\n   *   the current loader instance. Otherwise returns this Dataflow instance.\n   */\n  loader(_) {\n    if (arguments.length) {\n      this._loader = _;\n      return this;\n    } else {\n      return this._loader;\n    }\n  },\n\n  /**\n   * Gets or sets the locale instance to use for formatting and parsing\n   * string values. The locale object should be provided by the\n   * vega-format library, and include methods such as format, timeFormat,\n   * utcFormat, timeParse, and utcParse.\n   * @param {object} _ - The locale instance to use.\n   * @return {object|Dataflow} - If no arguments are provided, returns\n   *   the current locale instance. Otherwise returns this Dataflow instance.\n   */\n  locale(_) {\n    if (arguments.length) {\n      this._locale = _;\n      return this;\n    } else {\n      return this._locale;\n    }\n  },\n\n  /**\n   * Get or set the logger instance used to log messages. If no arguments are\n   * provided, returns the current logger instance. Otherwise, sets the logger\n   * and return this Dataflow instance. Provided loggers must support the full\n   * API of logger objects generated by the vega-util logger method. Note that\n   * by default the log level of the new logger will be used; use the logLevel\n   * method to adjust the log level as needed.\n   */\n  logger(logger) {\n    if (arguments.length) {\n      this._log = logger;\n      return this;\n    } else {\n      return this._log;\n    }\n  },\n\n  /**\n   * Logs an error message. By default, logged messages are written to console\n   * output. The message will only be logged if the current log level is high\n   * enough to permit error messages.\n   */\n  error: logMethod('error'),\n\n  /**\n   * Logs a warning message. By default, logged messages are written to console\n   * output. The message will only be logged if the current log level is high\n   * enough to permit warning messages.\n   */\n  warn: logMethod('warn'),\n\n  /**\n   * Logs a information message. By default, logged messages are written to\n   * console output. The message will only be logged if the current log level is\n   * high enough to permit information messages.\n   */\n  info: logMethod('info'),\n\n  /**\n   * Logs a debug message. By default, logged messages are written to console\n   * output. The message will only be logged if the current log level is high\n   * enough to permit debug messages.\n   */\n  debug: logMethod('debug'),\n\n  /**\n   * Get or set the current log level. If an argument is provided, it\n   * will be used as the new log level.\n   * @param {number} [level] - Should be one of None, Warn, Info\n   * @return {number} - The current log level.\n   */\n  logLevel: logMethod('level'),\n\n  /**\n   * Empty entry threshold for garbage cleaning. Map data structures will\n   * perform cleaning once the number of empty entries exceeds this value.\n   */\n  cleanThreshold: 1e4,\n  // OPERATOR REGISTRATION\n  add,\n  connect,\n  rank,\n  rerank,\n  // OPERATOR UPDATES\n  pulse,\n  touch,\n  update,\n  changeset,\n  // DATA LOADING\n  ingest,\n  parse,\n  preload,\n  request,\n  // EVENT HANDLING\n  events,\n  on,\n  // PULSE PROPAGATION\n  evaluate,\n  run,\n  runAsync,\n  runAfter,\n  _enqueue: enqueue,\n  _getPulse: getPulse\n};\n\n/**\n * Abstract class for operators that process data tuples.\n * Subclasses must provide a {@link transform} method for operator processing.\n * @constructor\n * @param {*} [init] - The initial value for this operator.\n * @param {object} [params] - The parameters for this operator.\n * @param {Operator} [source] - The operator from which to receive pulses.\n */\n\nfunction Transform(init, params) {\n  Operator.call(this, init, null, params);\n}\nObject(vega_util__WEBPACK_IMPORTED_MODULE_0__[\"inherits\"])(Transform, Operator, {\n  /**\n   * Overrides {@link Operator.evaluate} for transform operators.\n   * Internally, this method calls {@link evaluate} to perform processing.\n   * If {@link evaluate} returns a falsy value, the input pulse is returned.\n   * This method should NOT be overridden, instead overrride {@link evaluate}.\n   * @param {Pulse} pulse - the current dataflow pulse.\n   * @return the output pulse for this operator (or StopPropagation)\n   */\n  run(pulse) {\n    if (pulse.stamp < this.stamp) return pulse.StopPropagation;\n    let rv;\n\n    if (this.skip()) {\n      this.skip(false);\n    } else {\n      rv = this.evaluate(pulse);\n    }\n\n    rv = rv || pulse;\n\n    if (rv.then) {\n      rv = rv.then(_ => this.pulse = _);\n    } else if (rv !== pulse.StopPropagation) {\n      this.pulse = rv;\n    }\n\n    return rv;\n  },\n\n  /**\n   * Overrides {@link Operator.evaluate} for transform operators.\n   * Marshalls parameter values and then invokes {@link transform}.\n   * @param {Pulse} pulse - the current dataflow pulse.\n   * @return {Pulse} The output pulse (or StopPropagation). A falsy return\n       value (including undefined) will let the input pulse pass through.\n  */\n  evaluate(pulse) {\n    const params = this.marshall(pulse.stamp),\n          out = this.transform(params, pulse);\n    params.clear();\n    return out;\n  },\n\n  /**\n   * Process incoming pulses.\n   * Subclasses should override this method to implement transforms.\n   * @param {Parameters} _ - The operator parameter values.\n   * @param {Pulse} pulse - The current dataflow pulse.\n   * @return {Pulse} The output pulse (or StopPropagation). A falsy return\n   *   value (including undefined) will let the input pulse pass through.\n   */\n  transform() {}\n\n});\n\nconst transforms = {};\nfunction definition(type) {\n  const t = transform(type);\n  return t && t.Definition || null;\n}\nfunction transform(type) {\n  type = type && type.toLowerCase();\n  return Object(vega_util__WEBPACK_IMPORTED_MODULE_0__[\"hasOwnProperty\"])(transforms, type) ? transforms[type] : null;\n}\n\n\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,[encoded data, 109476 characters]\n//# sourceURL=webpack-internal:///./node_modules/vega/node_modules/vega-dataflow/build/vega-dataflow.module.js\n");

/***/ }),

/***/ "./node_modules/vega/node_modules/vega-encode/build/vega-encode.module.js":
/*!********************************************************************************!*\
  !*** ./node_modules/vega/node_modules/vega-encode/build/vega-encode.module.js ***!
  \********************************************************************************/
/*! exports provided: axisticks, datajoin, encode, legendentries, linkpath, pie, scale, sortitems, stack */
/***/ (function(module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"axisticks\", function() { return AxisTicks; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"datajoin\", function() { return DataJoin; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"encode\", function() { return Encode; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"legendentries\", function() { return LegendEntries; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"linkpath\", function() { return LinkPath; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"pie\", function() { return Pie; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"scale\", function() { return Scale; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"sortitems\", function() { return SortItems; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"stack\", function() { return Stack; });\n/* harmony import */ var vega_dataflow__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! vega-dataflow */ \"./node_modules/vega/node_modules/vega-dataflow/build/vega-dataflow.module.js\");\n/* harmony import */ var vega_scale__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! vega-scale */ \"./node_modules/vega/node_modules/vega-scale/build/vega-scale.module.js\");\n/* harmony import */ var vega_util__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! vega-util */ \"./node_modules/vega/node_modules/vega-util/build/vega-util.module.js\");\n/* harmony import */ var d3_array__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! d3-array */ \"./node_modules/d3-array/src/index.js\");\n/* harmony import */ var d3_interpolate__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! d3-interpolate */ \"./node_modules/vega/node_modules/d3-interpolate/src/index.js\");\n\n\n\n\n\n\n/**\n * Generates axis ticks for visualizing a spatial scale.\n * @constructor\n * @param {object} params - The parameters for this operator.\n * @param {Scale} params.scale - The scale to generate ticks for.\n * @param {*} [params.count=10] - The approximate number of ticks, or\n *   desired tick interval, to use.\n * @param {Array<*>} [params.values] - The exact tick values to use.\n *   These must be legal domain values for the provided scale.\n *   If provided, the count argument is ignored.\n * @param {function(*):string} [params.formatSpecifier] - A format specifier\n *   to use in conjunction with scale.tickFormat. Legal values are\n *   any valid d3 4.0 format specifier.\n * @param {function(*):string} [params.format] - The format function to use.\n *   If provided, the formatSpecifier argument is ignored.\n */\n\nfunction AxisTicks(params) {\n  vega_dataflow__WEBPACK_IMPORTED_MODULE_0__[\"Transform\"].call(this, null, params);\n}\nObject(vega_util__WEBPACK_IMPORTED_MODULE_2__[\"inherits\"])(AxisTicks, vega_dataflow__WEBPACK_IMPORTED_MODULE_0__[\"Transform\"], {\n  transform(_, pulse) {\n    if (this.value && !_.modified()) {\n      return pulse.StopPropagation;\n    }\n\n    var locale = pulse.dataflow.locale(),\n        out = pulse.fork(pulse.NO_SOURCE | pulse.NO_FIELDS),\n        ticks = this.value,\n        scale = _.scale,\n        tally = _.count == null ? _.values ? _.values.length : 10 : _.count,\n        count = Object(vega_scale__WEBPACK_IMPORTED_MODULE_1__[\"tickCount\"])(scale, tally, _.minstep),\n        format = _.format || Object(vega_scale__WEBPACK_IMPORTED_MODULE_1__[\"tickFormat\"])(locale, scale, count, _.formatSpecifier, _.formatType, !!_.values),\n        values = _.values ? Object(vega_scale__WEBPACK_IMPORTED_MODULE_1__[\"validTicks\"])(scale, _.values, count) : Object(vega_scale__WEBPACK_IMPORTED_MODULE_1__[\"tickValues\"])(scale, count);\n    if (ticks) out.rem = ticks;\n    ticks = values.map((value, i) => Object(vega_dataflow__WEBPACK_IMPORTED_MODULE_0__[\"ingest\"])({\n      index: i / (values.length - 1 || 1),\n      value: value,\n      label: format(value)\n    }));\n\n    if (_.extra && ticks.length) {\n      // add an extra tick pegged to the initial domain value\n      // this is used to generate axes with 'binned' domains\n      ticks.push(Object(vega_dataflow__WEBPACK_IMPORTED_MODULE_0__[\"ingest\"])({\n        index: -1,\n        extra: {\n          value: ticks[0].value\n        },\n        label: ''\n      }));\n    }\n\n    out.source = ticks;\n    out.add = ticks;\n    this.value = ticks;\n    return out;\n  }\n\n});\n\n/**\n * Joins a set of data elements against a set of visual items.\n * @constructor\n * @param {object} params - The parameters for this operator.\n * @param {function(object): object} [params.item] - An item generator function.\n * @param {function(object): *} [params.key] - The key field associating data and visual items.\n */\n\nfunction DataJoin(params) {\n  vega_dataflow__WEBPACK_IMPORTED_MODULE_0__[\"Transform\"].call(this, null, params);\n}\n\nfunction defaultItemCreate() {\n  return Object(vega_dataflow__WEBPACK_IMPORTED_MODULE_0__[\"ingest\"])({});\n}\n\nfunction newMap(key) {\n  const map = Object(vega_util__WEBPACK_IMPORTED_MODULE_2__[\"fastmap\"])().test(t => t.exit);\n\n  map.lookup = t => map.get(key(t));\n\n  return map;\n}\n\nObject(vega_util__WEBPACK_IMPORTED_MODULE_2__[\"inherits\"])(DataJoin, vega_dataflow__WEBPACK_IMPORTED_MODULE_0__[\"Transform\"], {\n  transform(_, pulse) {\n    var df = pulse.dataflow,\n        out = pulse.fork(pulse.NO_SOURCE | pulse.NO_FIELDS),\n        item = _.item || defaultItemCreate,\n        key = _.key || vega_dataflow__WEBPACK_IMPORTED_MODULE_0__[\"tupleid\"],\n        map = this.value; // prevent transient (e.g., hover) requests from\n    // cascading across marks derived from marks\n\n    if (Object(vega_util__WEBPACK_IMPORTED_MODULE_2__[\"isArray\"])(out.encode)) {\n      out.encode = null;\n    }\n\n    if (map && (_.modified('key') || pulse.modified(key))) {\n      Object(vega_util__WEBPACK_IMPORTED_MODULE_2__[\"error\"])('DataJoin does not support modified key function or fields.');\n    }\n\n    if (!map) {\n      pulse = pulse.addAll();\n      this.value = map = newMap(key);\n    }\n\n    pulse.visit(pulse.ADD, t => {\n      const k = key(t);\n      let x = map.get(k);\n\n      if (x) {\n        if (x.exit) {\n          map.empty--;\n          out.add.push(x);\n        } else {\n          out.mod.push(x);\n        }\n      } else {\n        x = item(t);\n        map.set(k, x);\n        out.add.push(x);\n      }\n\n      x.datum = t;\n      x.exit = false;\n    });\n    pulse.visit(pulse.MOD, t => {\n      const k = key(t),\n            x = map.get(k);\n\n      if (x) {\n        x.datum = t;\n        out.mod.push(x);\n      }\n    });\n    pulse.visit(pulse.REM, t => {\n      const k = key(t),\n            x = map.get(k);\n\n      if (t === x.datum && !x.exit) {\n        out.rem.push(x);\n        x.exit = true;\n        ++map.empty;\n      }\n    });\n    if (pulse.changed(pulse.ADD_MOD)) out.modifies('datum');\n\n    if (pulse.clean() || _.clean && map.empty > df.cleanThreshold) {\n      df.runAfter(map.clean);\n    }\n\n    return out;\n  }\n\n});\n\n/**\n * Invokes encoding functions for visual items.\n * @constructor\n * @param {object} params - The parameters to the encoding functions. This\n *   parameter object will be passed through to all invoked encoding functions.\n * @param {object} [params.mod=false] - Flag indicating if tuples in the input\n *   mod set that are unmodified by encoders should be included in the output.\n * @param {object} param.encoders - The encoding functions\n * @param {function(object, object): boolean} [param.encoders.update] - Update encoding set\n * @param {function(object, object): boolean} [param.encoders.enter] - Enter encoding set\n * @param {function(object, object): boolean} [param.encoders.exit] - Exit encoding set\n */\n\nfunction Encode(params) {\n  vega_dataflow__WEBPACK_IMPORTED_MODULE_0__[\"Transform\"].call(this, null, params);\n}\nObject(vega_util__WEBPACK_IMPORTED_MODULE_2__[\"inherits\"])(Encode, vega_dataflow__WEBPACK_IMPORTED_MODULE_0__[\"Transform\"], {\n  transform(_, pulse) {\n    var out = pulse.fork(pulse.ADD_REM),\n        fmod = _.mod || false,\n        encoders = _.encoders,\n        encode = pulse.encode; // if an array, the encode directive includes additional sets\n    // that must be defined in order for the primary set to be invoked\n    // e.g., only run the update set if the hover set is defined\n\n    if (Object(vega_util__WEBPACK_IMPORTED_MODULE_2__[\"isArray\"])(encode)) {\n      if (out.changed() || encode.every(e => encoders[e])) {\n        encode = encode[0];\n        out.encode = null; // consume targeted encode directive\n      } else {\n        return pulse.StopPropagation;\n      }\n    } // marshall encoder functions\n\n\n    var reenter = encode === 'enter',\n        update = encoders.update || vega_util__WEBPACK_IMPORTED_MODULE_2__[\"falsy\"],\n        enter = encoders.enter || vega_util__WEBPACK_IMPORTED_MODULE_2__[\"falsy\"],\n        exit = encoders.exit || vega_util__WEBPACK_IMPORTED_MODULE_2__[\"falsy\"],\n        set = (encode && !reenter ? encoders[encode] : update) || vega_util__WEBPACK_IMPORTED_MODULE_2__[\"falsy\"];\n\n    if (pulse.changed(pulse.ADD)) {\n      pulse.visit(pulse.ADD, t => {\n        enter(t, _);\n        update(t, _);\n      });\n      out.modifies(enter.output);\n      out.modifies(update.output);\n\n      if (set !== vega_util__WEBPACK_IMPORTED_MODULE_2__[\"falsy\"] && set !== update) {\n        pulse.visit(pulse.ADD, t => {\n          set(t, _);\n        });\n        out.modifies(set.output);\n      }\n    }\n\n    if (pulse.changed(pulse.REM) && exit !== vega_util__WEBPACK_IMPORTED_MODULE_2__[\"falsy\"]) {\n      pulse.visit(pulse.REM, t => {\n        exit(t, _);\n      });\n      out.modifies(exit.output);\n    }\n\n    if (reenter || set !== vega_util__WEBPACK_IMPORTED_MODULE_2__[\"falsy\"]) {\n      const flag = pulse.MOD | (_.modified() ? pulse.REFLOW : 0);\n\n      if (reenter) {\n        pulse.visit(flag, t => {\n          const mod = enter(t, _) || fmod;\n          if (set(t, _) || mod) out.mod.push(t);\n        });\n        if (out.mod.length) out.modifies(enter.output);\n      } else {\n        pulse.visit(flag, t => {\n          if (set(t, _) || fmod) out.mod.push(t);\n        });\n      }\n\n      if (out.mod.length) out.modifies(set.output);\n    }\n\n    return out.changed() ? out : pulse.StopPropagation;\n  }\n\n});\n\n/**\n * Generates legend entries for visualizing a scale.\n * @constructor\n * @param {object} params - The parameters for this operator.\n * @param {Scale} params.scale - The scale to generate items for.\n * @param {*} [params.count=5] - The approximate number of items, or\n *   desired tick interval, to use.\n * @param {*} [params.limit] - The maximum number of entries to\n *   include in a symbol legend.\n * @param {Array<*>} [params.values] - The exact tick values to use.\n *   These must be legal domain values for the provided scale.\n *   If provided, the count argument is ignored.\n * @param {string} [params.formatSpecifier] - A format specifier\n *   to use in conjunction with scale.tickFormat. Legal values are\n *   any valid D3 format specifier string.\n * @param {function(*):string} [params.format] - The format function to use.\n *   If provided, the formatSpecifier argument is ignored.\n */\n\nfunction LegendEntries(params) {\n  vega_dataflow__WEBPACK_IMPORTED_MODULE_0__[\"Transform\"].call(this, [], params);\n}\nObject(vega_util__WEBPACK_IMPORTED_MODULE_2__[\"inherits\"])(LegendEntries, vega_dataflow__WEBPACK_IMPORTED_MODULE_0__[\"Transform\"], {\n  transform(_, pulse) {\n    if (this.value != null && !_.modified()) {\n      return pulse.StopPropagation;\n    }\n\n    var locale = pulse.dataflow.locale(),\n        out = pulse.fork(pulse.NO_SOURCE | pulse.NO_FIELDS),\n        items = this.value,\n        type = _.type || vega_scale__WEBPACK_IMPORTED_MODULE_1__[\"SymbolLegend\"],\n        scale = _.scale,\n        limit = +_.limit,\n        count = Object(vega_scale__WEBPACK_IMPORTED_MODULE_1__[\"tickCount\"])(scale, _.count == null ? 5 : _.count, _.minstep),\n        lskip = !!_.values || type === vega_scale__WEBPACK_IMPORTED_MODULE_1__[\"SymbolLegend\"],\n        format = _.format || Object(vega_scale__WEBPACK_IMPORTED_MODULE_1__[\"labelFormat\"])(locale, scale, count, type, _.formatSpecifier, _.formatType, lskip),\n        values = _.values || Object(vega_scale__WEBPACK_IMPORTED_MODULE_1__[\"labelValues\"])(scale, count),\n        domain,\n        fraction,\n        size,\n        offset,\n        ellipsis;\n    if (items) out.rem = items;\n\n    if (type === vega_scale__WEBPACK_IMPORTED_MODULE_1__[\"SymbolLegend\"]) {\n      if (limit && values.length > limit) {\n        pulse.dataflow.warn('Symbol legend count exceeds limit, filtering items.');\n        items = values.slice(0, limit - 1);\n        ellipsis = true;\n      } else {\n        items = values;\n      }\n\n      if (Object(vega_util__WEBPACK_IMPORTED_MODULE_2__[\"isFunction\"])(size = _.size)) {\n        // if first value maps to size zero, remove from list (vega#717)\n        if (!_.values && scale(items[0]) === 0) {\n          items = items.slice(1);\n        } // compute size offset for legend entries\n\n\n        offset = items.reduce((max, value) => Math.max(max, size(value, _)), 0);\n      } else {\n        size = Object(vega_util__WEBPACK_IMPORTED_MODULE_2__[\"constant\"])(offset = size || 8);\n      }\n\n      items = items.map((value, index) => Object(vega_dataflow__WEBPACK_IMPORTED_MODULE_0__[\"ingest\"])({\n        index: index,\n        label: format(value, index, items),\n        value: value,\n        offset: offset,\n        size: size(value, _)\n      }));\n\n      if (ellipsis) {\n        ellipsis = values[items.length];\n        items.push(Object(vega_dataflow__WEBPACK_IMPORTED_MODULE_0__[\"ingest\"])({\n          index: items.length,\n          label: \"\\u2026\".concat(values.length - items.length, \" entries\"),\n          value: ellipsis,\n          offset: offset,\n          size: size(ellipsis, _)\n        }));\n      }\n    } else if (type === vega_scale__WEBPACK_IMPORTED_MODULE_1__[\"GradientLegend\"]) {\n      domain = scale.domain(), fraction = Object(vega_scale__WEBPACK_IMPORTED_MODULE_1__[\"scaleFraction\"])(scale, domain[0], Object(vega_util__WEBPACK_IMPORTED_MODULE_2__[\"peek\"])(domain)); // if automatic label generation produces 2 or fewer values,\n      // use the domain end points instead (fixes vega/vega#1364)\n\n      if (values.length < 3 && !_.values && domain[0] !== Object(vega_util__WEBPACK_IMPORTED_MODULE_2__[\"peek\"])(domain)) {\n        values = [domain[0], Object(vega_util__WEBPACK_IMPORTED_MODULE_2__[\"peek\"])(domain)];\n      }\n\n      items = values.map((value, index) => Object(vega_dataflow__WEBPACK_IMPORTED_MODULE_0__[\"ingest\"])({\n        index: index,\n        label: format(value, index, values),\n        value: value,\n        perc: fraction(value)\n      }));\n    } else {\n      size = values.length - 1;\n      fraction = Object(vega_scale__WEBPACK_IMPORTED_MODULE_1__[\"labelFraction\"])(scale);\n      items = values.map((value, index) => Object(vega_dataflow__WEBPACK_IMPORTED_MODULE_0__[\"ingest\"])({\n        index: index,\n        label: format(value, index, values),\n        value: value,\n        perc: index ? fraction(value) : 0,\n        perc2: index === size ? 1 : fraction(values[index + 1])\n      }));\n    }\n\n    out.source = items;\n    out.add = items;\n    this.value = items;\n    return out;\n  }\n\n});\n\nconst sourceX = t => t.source.x;\n\nconst sourceY = t => t.source.y;\n\nconst targetX = t => t.target.x;\n\nconst targetY = t => t.target.y;\n/**\n * Layout paths linking source and target elements.\n * @constructor\n * @param {object} params - The parameters for this operator.\n */\n\n\nfunction LinkPath(params) {\n  vega_dataflow__WEBPACK_IMPORTED_MODULE_0__[\"Transform\"].call(this, {}, params);\n}\nLinkPath.Definition = {\n  'type': 'LinkPath',\n  'metadata': {\n    'modifies': true\n  },\n  'params': [{\n    'name': 'sourceX',\n    'type': 'field',\n    'default': 'source.x'\n  }, {\n    'name': 'sourceY',\n    'type': 'field',\n    'default': 'source.y'\n  }, {\n    'name': 'targetX',\n    'type': 'field',\n    'default': 'target.x'\n  }, {\n    'name': 'targetY',\n    'type': 'field',\n    'default': 'target.y'\n  }, {\n    'name': 'orient',\n    'type': 'enum',\n    'default': 'vertical',\n    'values': ['horizontal', 'vertical', 'radial']\n  }, {\n    'name': 'shape',\n    'type': 'enum',\n    'default': 'line',\n    'values': ['line', 'arc', 'curve', 'diagonal', 'orthogonal']\n  }, {\n    'name': 'require',\n    'type': 'signal'\n  }, {\n    'name': 'as',\n    'type': 'string',\n    'default': 'path'\n  }]\n};\nObject(vega_util__WEBPACK_IMPORTED_MODULE_2__[\"inherits\"])(LinkPath, vega_dataflow__WEBPACK_IMPORTED_MODULE_0__[\"Transform\"], {\n  transform(_, pulse) {\n    var sx = _.sourceX || sourceX,\n        sy = _.sourceY || sourceY,\n        tx = _.targetX || targetX,\n        ty = _.targetY || targetY,\n        as = _.as || 'path',\n        orient = _.orient || 'vertical',\n        shape = _.shape || 'line',\n        path = Paths.get(shape + '-' + orient) || Paths.get(shape);\n\n    if (!path) {\n      Object(vega_util__WEBPACK_IMPORTED_MODULE_2__[\"error\"])('LinkPath unsupported type: ' + _.shape + (_.orient ? '-' + _.orient : ''));\n    }\n\n    pulse.visit(pulse.SOURCE, t => {\n      t[as] = path(sx(t), sy(t), tx(t), ty(t));\n    });\n    return pulse.reflow(_.modified()).modifies(as);\n  }\n\n});\n\nconst line = (sx, sy, tx, ty) => 'M' + sx + ',' + sy + 'L' + tx + ',' + ty;\n\nconst lineR = (sa, sr, ta, tr) => line(sr * Math.cos(sa), sr * Math.sin(sa), tr * Math.cos(ta), tr * Math.sin(ta));\n\nconst arc = (sx, sy, tx, ty) => {\n  var dx = tx - sx,\n      dy = ty - sy,\n      rr = Math.sqrt(dx * dx + dy * dy) / 2,\n      ra = 180 * Math.atan2(dy, dx) / Math.PI;\n  return 'M' + sx + ',' + sy + 'A' + rr + ',' + rr + ' ' + ra + ' 0 1' + ' ' + tx + ',' + ty;\n};\n\nconst arcR = (sa, sr, ta, tr) => arc(sr * Math.cos(sa), sr * Math.sin(sa), tr * Math.cos(ta), tr * Math.sin(ta));\n\nconst curve = (sx, sy, tx, ty) => {\n  const dx = tx - sx,\n        dy = ty - sy,\n        ix = 0.2 * (dx + dy),\n        iy = 0.2 * (dy - dx);\n  return 'M' + sx + ',' + sy + 'C' + (sx + ix) + ',' + (sy + iy) + ' ' + (tx + iy) + ',' + (ty - ix) + ' ' + tx + ',' + ty;\n};\n\nconst curveR = (sa, sr, ta, tr) => curve(sr * Math.cos(sa), sr * Math.sin(sa), tr * Math.cos(ta), tr * Math.sin(ta));\n\nconst orthoX = (sx, sy, tx, ty) => 'M' + sx + ',' + sy + 'V' + ty + 'H' + tx;\n\nconst orthoY = (sx, sy, tx, ty) => 'M' + sx + ',' + sy + 'H' + tx + 'V' + ty;\n\nconst orthoR = (sa, sr, ta, tr) => {\n  const sc = Math.cos(sa),\n        ss = Math.sin(sa),\n        tc = Math.cos(ta),\n        ts = Math.sin(ta),\n        sf = Math.abs(ta - sa) > Math.PI ? ta <= sa : ta > sa;\n  return 'M' + sr * sc + ',' + sr * ss + 'A' + sr + ',' + sr + ' 0 0,' + (sf ? 1 : 0) + ' ' + sr * tc + ',' + sr * ts + 'L' + tr * tc + ',' + tr * ts;\n};\n\nconst diagonalX = (sx, sy, tx, ty) => {\n  const m = (sx + tx) / 2;\n  return 'M' + sx + ',' + sy + 'C' + m + ',' + sy + ' ' + m + ',' + ty + ' ' + tx + ',' + ty;\n};\n\nconst diagonalY = (sx, sy, tx, ty) => {\n  const m = (sy + ty) / 2;\n  return 'M' + sx + ',' + sy + 'C' + sx + ',' + m + ' ' + tx + ',' + m + ' ' + tx + ',' + ty;\n};\n\nconst diagonalR = (sa, sr, ta, tr) => {\n  const sc = Math.cos(sa),\n        ss = Math.sin(sa),\n        tc = Math.cos(ta),\n        ts = Math.sin(ta),\n        mr = (sr + tr) / 2;\n  return 'M' + sr * sc + ',' + sr * ss + 'C' + mr * sc + ',' + mr * ss + ' ' + mr * tc + ',' + mr * ts + ' ' + tr * tc + ',' + tr * ts;\n};\n\nconst Paths = Object(vega_util__WEBPACK_IMPORTED_MODULE_2__[\"fastmap\"])({\n  'line': line,\n  'line-radial': lineR,\n  'arc': arc,\n  'arc-radial': arcR,\n  'curve': curve,\n  'curve-radial': curveR,\n  'orthogonal-horizontal': orthoX,\n  'orthogonal-vertical': orthoY,\n  'orthogonal-radial': orthoR,\n  'diagonal-horizontal': diagonalX,\n  'diagonal-vertical': diagonalY,\n  'diagonal-radial': diagonalR\n});\n\n/**\n * Pie and donut chart layout.\n * @constructor\n * @param {object} params - The parameters for this operator.\n * @param {function(object): *} params.field - The value field to size pie segments.\n * @param {number} [params.startAngle=0] - The start angle (in radians) of the layout.\n * @param {number} [params.endAngle=2π] - The end angle (in radians) of the layout.\n * @param {boolean} [params.sort] - Boolean flag for sorting sectors by value.\n */\n\nfunction Pie(params) {\n  vega_dataflow__WEBPACK_IMPORTED_MODULE_0__[\"Transform\"].call(this, null, params);\n}\nPie.Definition = {\n  'type': 'Pie',\n  'metadata': {\n    'modifies': true\n  },\n  'params': [{\n    'name': 'field',\n    'type': 'field'\n  }, {\n    'name': 'startAngle',\n    'type': 'number',\n    'default': 0\n  }, {\n    'name': 'endAngle',\n    'type': 'number',\n    'default': 6.283185307179586\n  }, {\n    'name': 'sort',\n    'type': 'boolean',\n    'default': false\n  }, {\n    'name': 'as',\n    'type': 'string',\n    'array': true,\n    'length': 2,\n    'default': ['startAngle', 'endAngle']\n  }]\n};\nObject(vega_util__WEBPACK_IMPORTED_MODULE_2__[\"inherits\"])(Pie, vega_dataflow__WEBPACK_IMPORTED_MODULE_0__[\"Transform\"], {\n  transform(_, pulse) {\n    var as = _.as || ['startAngle', 'endAngle'],\n        startAngle = as[0],\n        endAngle = as[1],\n        field = _.field || vega_util__WEBPACK_IMPORTED_MODULE_2__[\"one\"],\n        start = _.startAngle || 0,\n        stop = _.endAngle != null ? _.endAngle : 2 * Math.PI,\n        data = pulse.source,\n        values = data.map(field),\n        n = values.length,\n        a = start,\n        k = (stop - start) / Object(d3_array__WEBPACK_IMPORTED_MODULE_3__[\"sum\"])(values),\n        index = Object(d3_array__WEBPACK_IMPORTED_MODULE_3__[\"range\"])(n),\n        i,\n        t,\n        v;\n\n    if (_.sort) {\n      index.sort((a, b) => values[a] - values[b]);\n    }\n\n    for (i = 0; i < n; ++i) {\n      v = values[index[i]];\n      t = data[index[i]];\n      t[startAngle] = a;\n      t[endAngle] = a += v * k;\n    }\n\n    this.value = values;\n    return pulse.reflow(_.modified()).modifies(as);\n  }\n\n});\n\nconst DEFAULT_COUNT = 5;\n\nfunction includeZero(scale) {\n  const type = scale.type;\n  return !scale.bins && (type === vega_scale__WEBPACK_IMPORTED_MODULE_1__[\"Linear\"] || type === vega_scale__WEBPACK_IMPORTED_MODULE_1__[\"Pow\"] || type === vega_scale__WEBPACK_IMPORTED_MODULE_1__[\"Sqrt\"]);\n}\n\nfunction includePad(type) {\n  return Object(vega_scale__WEBPACK_IMPORTED_MODULE_1__[\"isContinuous\"])(type) && type !== vega_scale__WEBPACK_IMPORTED_MODULE_1__[\"Sequential\"];\n}\n\nconst SKIP = Object(vega_util__WEBPACK_IMPORTED_MODULE_2__[\"toSet\"])(['set', 'modified', 'clear', 'type', 'scheme', 'schemeExtent', 'schemeCount', 'domain', 'domainMin', 'domainMid', 'domainMax', 'domainRaw', 'domainImplicit', 'nice', 'zero', 'bins', 'range', 'rangeStep', 'round', 'reverse', 'interpolate', 'interpolateGamma']);\n/**\n * Maintains a scale function mapping data values to visual channels.\n * @constructor\n * @param {object} params - The parameters for this operator.\n */\n\nfunction Scale(params) {\n  vega_dataflow__WEBPACK_IMPORTED_MODULE_0__[\"Transform\"].call(this, null, params);\n  this.modified(true); // always treat as modified\n}\nObject(vega_util__WEBPACK_IMPORTED_MODULE_2__[\"inherits\"])(Scale, vega_dataflow__WEBPACK_IMPORTED_MODULE_0__[\"Transform\"], {\n  transform(_, pulse) {\n    var df = pulse.dataflow,\n        scale$1 = this.value,\n        key = scaleKey(_);\n\n    if (!scale$1 || key !== scale$1.type) {\n      this.value = scale$1 = Object(vega_scale__WEBPACK_IMPORTED_MODULE_1__[\"scale\"])(key)();\n    }\n\n    for (key in _) if (!SKIP[key]) {\n      // padding is a scale property for band/point but not others\n      if (key === 'padding' && includePad(scale$1.type)) continue; // invoke scale property setter, raise warning if not found\n\n      Object(vega_util__WEBPACK_IMPORTED_MODULE_2__[\"isFunction\"])(scale$1[key]) ? scale$1[key](_[key]) : df.warn('Unsupported scale property: ' + key);\n    }\n\n    configureRange(scale$1, _, configureBins(scale$1, _, configureDomain(scale$1, _, df)));\n    return pulse.fork(pulse.NO_SOURCE | pulse.NO_FIELDS);\n  }\n\n});\n\nfunction scaleKey(_) {\n  var t = _.type,\n      d = '',\n      n; // backwards compatibility pre Vega 5.\n\n  if (t === vega_scale__WEBPACK_IMPORTED_MODULE_1__[\"Sequential\"]) return vega_scale__WEBPACK_IMPORTED_MODULE_1__[\"Sequential\"] + '-' + vega_scale__WEBPACK_IMPORTED_MODULE_1__[\"Linear\"];\n\n  if (isContinuousColor(_)) {\n    n = _.rawDomain ? _.rawDomain.length : _.domain ? _.domain.length + +(_.domainMid != null) : 0;\n    d = n === 2 ? vega_scale__WEBPACK_IMPORTED_MODULE_1__[\"Sequential\"] + '-' : n === 3 ? vega_scale__WEBPACK_IMPORTED_MODULE_1__[\"Diverging\"] + '-' : '';\n  }\n\n  return (d + t || vega_scale__WEBPACK_IMPORTED_MODULE_1__[\"Linear\"]).toLowerCase();\n}\n\nfunction isContinuousColor(_) {\n  const t = _.type;\n  return Object(vega_scale__WEBPACK_IMPORTED_MODULE_1__[\"isContinuous\"])(t) && t !== vega_scale__WEBPACK_IMPORTED_MODULE_1__[\"Time\"] && t !== vega_scale__WEBPACK_IMPORTED_MODULE_1__[\"UTC\"] && (_.scheme || _.range && _.range.length && _.range.every(vega_util__WEBPACK_IMPORTED_MODULE_2__[\"isString\"]));\n}\n\nfunction configureDomain(scale, _, df) {\n  // check raw domain, if provided use that and exit early\n  const raw = rawDomain(scale, _.domainRaw, df);\n  if (raw > -1) return raw;\n  var domain = _.domain,\n      type = scale.type,\n      zero = _.zero || _.zero === undefined && includeZero(scale),\n      n,\n      mid;\n  if (!domain) return 0; // adjust continuous domain for minimum pixel padding\n\n  if (includePad(type) && _.padding && domain[0] !== Object(vega_util__WEBPACK_IMPORTED_MODULE_2__[\"peek\"])(domain)) {\n    domain = padDomain(type, domain, _.range, _.padding, _.exponent, _.constant);\n  } // adjust domain based on zero, min, max settings\n\n\n  if (zero || _.domainMin != null || _.domainMax != null || _.domainMid != null) {\n    n = (domain = domain.slice()).length - 1 || 1;\n\n    if (zero) {\n      if (domain[0] > 0) domain[0] = 0;\n      if (domain[n] < 0) domain[n] = 0;\n    }\n\n    if (_.domainMin != null) domain[0] = _.domainMin;\n    if (_.domainMax != null) domain[n] = _.domainMax;\n\n    if (_.domainMid != null) {\n      mid = _.domainMid;\n      const i = mid > domain[n] ? n + 1 : mid < domain[0] ? 0 : n;\n      if (i !== n) df.warn('Scale domainMid exceeds domain min or max.', mid);\n      domain.splice(i, 0, mid);\n    }\n  } // set the scale domain\n\n\n  scale.domain(domainCheck(type, domain, df)); // if ordinal scale domain is defined, prevent implicit\n  // domain construction as side-effect of scale lookup\n\n  if (type === vega_scale__WEBPACK_IMPORTED_MODULE_1__[\"Ordinal\"]) {\n    scale.unknown(_.domainImplicit ? vega_scale__WEBPACK_IMPORTED_MODULE_1__[\"scaleImplicit\"] : undefined);\n  } // perform 'nice' adjustment as requested\n\n\n  if (_.nice && scale.nice) {\n    scale.nice(_.nice !== true && Object(vega_scale__WEBPACK_IMPORTED_MODULE_1__[\"tickCount\"])(scale, _.nice) || null);\n  } // return the cardinality of the domain\n\n\n  return domain.length;\n}\n\nfunction rawDomain(scale, raw, df) {\n  if (raw) {\n    scale.domain(domainCheck(scale.type, raw, df));\n    return raw.length;\n  } else {\n    return -1;\n  }\n}\n\nfunction padDomain(type, domain, range, pad, exponent, constant) {\n  var span = Math.abs(Object(vega_util__WEBPACK_IMPORTED_MODULE_2__[\"peek\"])(range) - range[0]),\n      frac = span / (span - 2 * pad),\n      d = type === vega_scale__WEBPACK_IMPORTED_MODULE_1__[\"Log\"] ? Object(vega_util__WEBPACK_IMPORTED_MODULE_2__[\"zoomLog\"])(domain, null, frac) : type === vega_scale__WEBPACK_IMPORTED_MODULE_1__[\"Sqrt\"] ? Object(vega_util__WEBPACK_IMPORTED_MODULE_2__[\"zoomPow\"])(domain, null, frac, 0.5) : type === vega_scale__WEBPACK_IMPORTED_MODULE_1__[\"Pow\"] ? Object(vega_util__WEBPACK_IMPORTED_MODULE_2__[\"zoomPow\"])(domain, null, frac, exponent || 1) : type === vega_scale__WEBPACK_IMPORTED_MODULE_1__[\"Symlog\"] ? Object(vega_util__WEBPACK_IMPORTED_MODULE_2__[\"zoomSymlog\"])(domain, null, frac, constant || 1) : Object(vega_util__WEBPACK_IMPORTED_MODULE_2__[\"zoomLinear\"])(domain, null, frac);\n  domain = domain.slice();\n  domain[0] = d[0];\n  domain[domain.length - 1] = d[1];\n  return domain;\n}\n\nfunction domainCheck(type, domain, df) {\n  if (Object(vega_scale__WEBPACK_IMPORTED_MODULE_1__[\"isLogarithmic\"])(type)) {\n    // sum signs of domain values\n    // if all pos or all neg, abs(sum) === domain.length\n    var s = Math.abs(domain.reduce((s, v) => s + (v < 0 ? -1 : v > 0 ? 1 : 0), 0));\n\n    if (s !== domain.length) {\n      df.warn('Log scale domain includes zero: ' + Object(vega_util__WEBPACK_IMPORTED_MODULE_2__[\"stringValue\"])(domain));\n    }\n  }\n\n  return domain;\n}\n\nfunction configureBins(scale, _, count) {\n  let bins = _.bins;\n\n  if (bins && !Object(vega_util__WEBPACK_IMPORTED_MODULE_2__[\"isArray\"])(bins)) {\n    // generate bin boundary array\n    const domain = scale.domain(),\n          lo = domain[0],\n          hi = Object(vega_util__WEBPACK_IMPORTED_MODULE_2__[\"peek\"])(domain),\n          step = bins.step;\n    let start = bins.start == null ? lo : bins.start,\n        stop = bins.stop == null ? hi : bins.stop;\n    if (!step) Object(vega_util__WEBPACK_IMPORTED_MODULE_2__[\"error\"])('Scale bins parameter missing step property.');\n    if (start < lo) start = step * Math.ceil(lo / step);\n    if (stop > hi) stop = step * Math.floor(hi / step);\n    bins = Object(d3_array__WEBPACK_IMPORTED_MODULE_3__[\"range\"])(start, stop + step / 2, step);\n  }\n\n  if (bins) {\n    // assign bin boundaries to scale instance\n    scale.bins = bins;\n  } else if (scale.bins) {\n    // no current bins, remove bins if previously set\n    delete scale.bins;\n  } // special handling for bin-ordinal scales\n\n\n  if (scale.type === vega_scale__WEBPACK_IMPORTED_MODULE_1__[\"BinOrdinal\"]) {\n    if (!bins) {\n      // the domain specifies the bins\n      scale.bins = scale.domain();\n    } else if (!_.domain && !_.domainRaw) {\n      // the bins specify the domain\n      scale.domain(bins);\n      count = bins.length;\n    }\n  } // return domain cardinality\n\n\n  return count;\n}\n\nfunction configureRange(scale, _, count) {\n  var type = scale.type,\n      round = _.round || false,\n      range = _.range; // if range step specified, calculate full range extent\n\n  if (_.rangeStep != null) {\n    range = configureRangeStep(type, _, count);\n  } // else if a range scheme is defined, use that\n  else if (_.scheme) {\n      range = configureScheme(type, _, count);\n\n      if (Object(vega_util__WEBPACK_IMPORTED_MODULE_2__[\"isFunction\"])(range)) {\n        if (scale.interpolator) {\n          return scale.interpolator(range);\n        } else {\n          Object(vega_util__WEBPACK_IMPORTED_MODULE_2__[\"error\"])(\"Scale type \".concat(type, \" does not support interpolating color schemes.\"));\n        }\n      }\n    } // given a range array for an interpolating scale, convert to interpolator\n\n\n  if (range && Object(vega_scale__WEBPACK_IMPORTED_MODULE_1__[\"isInterpolating\"])(type)) {\n    return scale.interpolator(Object(vega_scale__WEBPACK_IMPORTED_MODULE_1__[\"interpolateColors\"])(flip(range, _.reverse), _.interpolate, _.interpolateGamma));\n  } // configure rounding / interpolation\n\n\n  if (range && _.interpolate && scale.interpolate) {\n    scale.interpolate(Object(vega_scale__WEBPACK_IMPORTED_MODULE_1__[\"interpolate\"])(_.interpolate, _.interpolateGamma));\n  } else if (Object(vega_util__WEBPACK_IMPORTED_MODULE_2__[\"isFunction\"])(scale.round)) {\n    scale.round(round);\n  } else if (Object(vega_util__WEBPACK_IMPORTED_MODULE_2__[\"isFunction\"])(scale.rangeRound)) {\n    scale.interpolate(round ? d3_interpolate__WEBPACK_IMPORTED_MODULE_4__[\"interpolateRound\"] : d3_interpolate__WEBPACK_IMPORTED_MODULE_4__[\"interpolate\"]);\n  }\n\n  if (range) scale.range(flip(range, _.reverse));\n}\n\nfunction configureRangeStep(type, _, count) {\n  if (type !== vega_scale__WEBPACK_IMPORTED_MODULE_1__[\"Band\"] && type !== vega_scale__WEBPACK_IMPORTED_MODULE_1__[\"Point\"]) {\n    Object(vega_util__WEBPACK_IMPORTED_MODULE_2__[\"error\"])('Only band and point scales support rangeStep.');\n  } // calculate full range based on requested step size and padding\n\n\n  var outer = (_.paddingOuter != null ? _.paddingOuter : _.padding) || 0,\n      inner = type === vega_scale__WEBPACK_IMPORTED_MODULE_1__[\"Point\"] ? 1 : (_.paddingInner != null ? _.paddingInner : _.padding) || 0;\n  return [0, _.rangeStep * Object(vega_scale__WEBPACK_IMPORTED_MODULE_1__[\"bandSpace\"])(count, inner, outer)];\n}\n\nfunction configureScheme(type, _, count) {\n  var extent = _.schemeExtent,\n      name,\n      scheme$1;\n\n  if (Object(vega_util__WEBPACK_IMPORTED_MODULE_2__[\"isArray\"])(_.scheme)) {\n    scheme$1 = Object(vega_scale__WEBPACK_IMPORTED_MODULE_1__[\"interpolateColors\"])(_.scheme, _.interpolate, _.interpolateGamma);\n  } else {\n    name = _.scheme.toLowerCase();\n    scheme$1 = Object(vega_scale__WEBPACK_IMPORTED_MODULE_1__[\"scheme\"])(name);\n    if (!scheme$1) Object(vega_util__WEBPACK_IMPORTED_MODULE_2__[\"error\"])(\"Unrecognized scheme name: \".concat(_.scheme));\n  } // determine size for potential discrete range\n\n\n  count = type === vega_scale__WEBPACK_IMPORTED_MODULE_1__[\"Threshold\"] ? count + 1 : type === vega_scale__WEBPACK_IMPORTED_MODULE_1__[\"BinOrdinal\"] ? count - 1 : type === vega_scale__WEBPACK_IMPORTED_MODULE_1__[\"Quantile\"] || type === vega_scale__WEBPACK_IMPORTED_MODULE_1__[\"Quantize\"] ? +_.schemeCount || DEFAULT_COUNT : count; // adjust and/or quantize scheme as appropriate\n\n  return Object(vega_scale__WEBPACK_IMPORTED_MODULE_1__[\"isInterpolating\"])(type) ? adjustScheme(scheme$1, extent, _.reverse) : Object(vega_util__WEBPACK_IMPORTED_MODULE_2__[\"isFunction\"])(scheme$1) ? Object(vega_scale__WEBPACK_IMPORTED_MODULE_1__[\"quantizeInterpolator\"])(adjustScheme(scheme$1, extent), count) : type === vega_scale__WEBPACK_IMPORTED_MODULE_1__[\"Ordinal\"] ? scheme$1 : scheme$1.slice(0, count);\n}\n\nfunction adjustScheme(scheme, extent, reverse) {\n  return Object(vega_util__WEBPACK_IMPORTED_MODULE_2__[\"isFunction\"])(scheme) && (extent || reverse) ? Object(vega_scale__WEBPACK_IMPORTED_MODULE_1__[\"interpolateRange\"])(scheme, flip(extent || [0, 1], reverse)) : scheme;\n}\n\nfunction flip(array, reverse) {\n  return reverse ? array.slice().reverse() : array;\n}\n\n/**\n * Sorts scenegraph items in the pulse source array.\n * @constructor\n * @param {object} params - The parameters for this operator.\n * @param {function(*,*): number} [params.sort] - A comparator\n *   function for sorting tuples.\n */\n\nfunction SortItems(params) {\n  vega_dataflow__WEBPACK_IMPORTED_MODULE_0__[\"Transform\"].call(this, null, params);\n}\nObject(vega_util__WEBPACK_IMPORTED_MODULE_2__[\"inherits\"])(SortItems, vega_dataflow__WEBPACK_IMPORTED_MODULE_0__[\"Transform\"], {\n  transform(_, pulse) {\n    const mod = _.modified('sort') || pulse.changed(pulse.ADD) || pulse.modified(_.sort.fields) || pulse.modified('datum');\n    if (mod) pulse.source.sort(Object(vega_dataflow__WEBPACK_IMPORTED_MODULE_0__[\"stableCompare\"])(_.sort));\n    this.modified(mod);\n    return pulse;\n  }\n\n});\n\nconst Zero = 'zero',\n      Center = 'center',\n      Normalize = 'normalize',\n      DefOutput = ['y0', 'y1'];\n/**\n * Stack layout for visualization elements.\n * @constructor\n * @param {object} params - The parameters for this operator.\n * @param {function(object): *} params.field - The value field to stack.\n * @param {Array<function(object): *>} [params.groupby] - An array of accessors to groupby.\n * @param {function(object,object): number} [params.sort] - A comparator for stack sorting.\n * @param {string} [offset='zero'] - Stack baseline offset. One of 'zero', 'center', 'normalize'.\n */\n\nfunction Stack(params) {\n  vega_dataflow__WEBPACK_IMPORTED_MODULE_0__[\"Transform\"].call(this, null, params);\n}\nStack.Definition = {\n  'type': 'Stack',\n  'metadata': {\n    'modifies': true\n  },\n  'params': [{\n    'name': 'field',\n    'type': 'field'\n  }, {\n    'name': 'groupby',\n    'type': 'field',\n    'array': true\n  }, {\n    'name': 'sort',\n    'type': 'compare'\n  }, {\n    'name': 'offset',\n    'type': 'enum',\n    'default': Zero,\n    'values': [Zero, Center, Normalize]\n  }, {\n    'name': 'as',\n    'type': 'string',\n    'array': true,\n    'length': 2,\n    'default': DefOutput\n  }]\n};\nObject(vega_util__WEBPACK_IMPORTED_MODULE_2__[\"inherits\"])(Stack, vega_dataflow__WEBPACK_IMPORTED_MODULE_0__[\"Transform\"], {\n  transform(_, pulse) {\n    var as = _.as || DefOutput,\n        y0 = as[0],\n        y1 = as[1],\n        sort = Object(vega_dataflow__WEBPACK_IMPORTED_MODULE_0__[\"stableCompare\"])(_.sort),\n        field = _.field || vega_util__WEBPACK_IMPORTED_MODULE_2__[\"one\"],\n        stack = _.offset === Center ? stackCenter : _.offset === Normalize ? stackNormalize : stackZero,\n        groups,\n        i,\n        n,\n        max; // partition, sum, and sort the stack groups\n\n    groups = partition(pulse.source, _.groupby, sort, field); // compute stack layouts per group\n\n    for (i = 0, n = groups.length, max = groups.max; i < n; ++i) {\n      stack(groups[i], max, field, y0, y1);\n    }\n\n    return pulse.reflow(_.modified()).modifies(as);\n  }\n\n});\n\nfunction stackCenter(group, max, field, y0, y1) {\n  var last = (max - group.sum) / 2,\n      m = group.length,\n      j = 0,\n      t;\n\n  for (; j < m; ++j) {\n    t = group[j];\n    t[y0] = last;\n    t[y1] = last += Math.abs(field(t));\n  }\n}\n\nfunction stackNormalize(group, max, field, y0, y1) {\n  var scale = 1 / group.sum,\n      last = 0,\n      m = group.length,\n      j = 0,\n      v = 0,\n      t;\n\n  for (; j < m; ++j) {\n    t = group[j];\n    t[y0] = last;\n    t[y1] = last = scale * (v += Math.abs(field(t)));\n  }\n}\n\nfunction stackZero(group, max, field, y0, y1) {\n  var lastPos = 0,\n      lastNeg = 0,\n      m = group.length,\n      j = 0,\n      v,\n      t;\n\n  for (; j < m; ++j) {\n    t = group[j];\n    v = +field(t);\n\n    if (v < 0) {\n      t[y0] = lastNeg;\n      t[y1] = lastNeg += v;\n    } else {\n      t[y0] = lastPos;\n      t[y1] = lastPos += v;\n    }\n  }\n}\n\nfunction partition(data, groupby, sort, field) {\n  var groups = [],\n      get = f => f(t),\n      map,\n      i,\n      n,\n      m,\n      t,\n      k,\n      g,\n      s,\n      max; // partition data points into stack groups\n\n\n  if (groupby == null) {\n    groups.push(data.slice());\n  } else {\n    for (map = {}, i = 0, n = data.length; i < n; ++i) {\n      t = data[i];\n      k = groupby.map(get);\n      g = map[k];\n\n      if (!g) {\n        map[k] = g = [];\n        groups.push(g);\n      }\n\n      g.push(t);\n    }\n  } // compute sums of groups, sort groups as needed\n\n\n  for (k = 0, max = 0, m = groups.length; k < m; ++k) {\n    g = groups[k];\n\n    for (i = 0, s = 0, n = g.length; i < n; ++i) {\n      s += Math.abs(field(g[i]));\n    }\n\n    g.sum = s;\n    if (s > max) max = s;\n    if (sort) g.sort(sort);\n  }\n\n  groups.max = max;\n  return groups;\n}\n\n\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,[encoded data, 50156 characters]\n//# sourceURL=webpack-internal:///./node_modules/vega/node_modules/vega-encode/build/vega-encode.module.js\n");

/***/ }),

/***/ "./node_modules/vega/node_modules/vega-expression/build/vega-expression.module.js":
/*!****************************************************************************************!*\
  !*** ./node_modules/vega/node_modules/vega-expression/build/vega-expression.module.js ***!
  \****************************************************************************************/
/*! exports provided: ASTNode, ArrayExpression, BinaryExpression, CallExpression, ConditionalExpression, Identifier, Literal, LogicalExpression, MemberExpression, ObjectExpression, Property, RawCode, UnaryExpression, codegen, constants, functions, parse */
/***/ (function(module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"ASTNode\", function() { return ASTNode; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"ArrayExpression\", function() { return ArrayExpression; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"BinaryExpression\", function() { return BinaryExpression; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"CallExpression\", function() { return CallExpression; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"ConditionalExpression\", function() { return ConditionalExpression; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"Identifier\", function() { return Identifier; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"Literal\", function() { return Literal; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"LogicalExpression\", function() { return LogicalExpression; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"MemberExpression\", function() { return MemberExpression; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"ObjectExpression\", function() { return ObjectExpression; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"Property\", function() { return Property; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"RawCode\", function() { return RawCode; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"UnaryExpression\", function() { return UnaryExpression; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"codegen\", function() { return codegen; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"constants\", function() { return Constants; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"functions\", function() { return Functions; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"parse\", function() { return parser; });\n/* harmony import */ var vega_util__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! vega-util */ \"./node_modules/vega/node_modules/vega-util/build/vega-util.module.js\");\n\n\nconst RawCode = 'RawCode';\nconst Literal = 'Literal';\nconst Property = 'Property';\nconst Identifier = 'Identifier';\nconst ArrayExpression = 'ArrayExpression';\nconst BinaryExpression = 'BinaryExpression';\nconst CallExpression = 'CallExpression';\nconst ConditionalExpression = 'ConditionalExpression';\nconst LogicalExpression = 'LogicalExpression';\nconst MemberExpression = 'MemberExpression';\nconst ObjectExpression = 'ObjectExpression';\nconst UnaryExpression = 'UnaryExpression';\nfunction ASTNode(type) {\n  this.type = type;\n}\n\nASTNode.prototype.visit = function (visitor) {\n  let c, i, n;\n  if (visitor(this)) return 1;\n\n  for (c = children(this), i = 0, n = c.length; i < n; ++i) {\n    if (c[i].visit(visitor)) return 1;\n  }\n};\n\nfunction children(node) {\n  switch (node.type) {\n    case ArrayExpression:\n      return node.elements;\n\n    case BinaryExpression:\n    case LogicalExpression:\n      return [node.left, node.right];\n\n    case CallExpression:\n      return [node.callee].concat(node.arguments);\n\n    case ConditionalExpression:\n      return [node.test, node.consequent, node.alternate];\n\n    case MemberExpression:\n      return [node.object, node.property];\n\n    case ObjectExpression:\n      return node.properties;\n\n    case Property:\n      return [node.key, node.value];\n\n    case UnaryExpression:\n      return [node.argument];\n\n    case Identifier:\n    case Literal:\n    case RawCode:\n    default:\n      return [];\n  }\n}\n\n/*\n  The following expression parser is based on Esprima (http://esprima.org/).\n  Original header comment and license for Esprima is included here:\n\n  Copyright (C) 2013 Ariya Hidayat <ariya.hidayat@gmail.com>\n  Copyright (C) 2013 Thaddee Tyl <thaddee.tyl@gmail.com>\n  Copyright (C) 2013 Mathias Bynens <mathias@qiwi.be>\n  Copyright (C) 2012 Ariya Hidayat <ariya.hidayat@gmail.com>\n  Copyright (C) 2012 Mathias Bynens <mathias@qiwi.be>\n  Copyright (C) 2012 Joost-Wim Boekesteijn <joost-wim@boekesteijn.nl>\n  Copyright (C) 2012 Kris Kowal <kris.kowal@cixar.com>\n  Copyright (C) 2012 Yusuke Suzuki <utatane.tea@gmail.com>\n  Copyright (C) 2012 Arpad Borsos <arpad.borsos@googlemail.com>\n  Copyright (C) 2011 Ariya Hidayat <ariya.hidayat@gmail.com>\n\n  Redistribution and use in source and binary forms, with or without\n  modification, are permitted provided that the following conditions are met:\n\n    * Redistributions of source code must retain the above copyright\n      notice, this list of conditions and the following disclaimer.\n    * Redistributions in binary form must reproduce the above copyright\n      notice, this list of conditions and the following disclaimer in the\n      documentation and/or other materials provided with the distribution.\n\n  THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS \"AS IS\"\n  AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE\n  IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE\n  ARE DISCLAIMED. IN NO EVENT SHALL <COPYRIGHT HOLDER> BE LIABLE FOR ANY\n  DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES\n  (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;\n  LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND\n  ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT\n  (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF\n  THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.\n*/\nvar TokenName, source, index, length, lookahead;\nvar TokenBooleanLiteral = 1,\n    TokenEOF = 2,\n    TokenIdentifier = 3,\n    TokenKeyword = 4,\n    TokenNullLiteral = 5,\n    TokenNumericLiteral = 6,\n    TokenPunctuator = 7,\n    TokenStringLiteral = 8,\n    TokenRegularExpression = 9;\nTokenName = {};\nTokenName[TokenBooleanLiteral] = 'Boolean';\nTokenName[TokenEOF] = '<end>';\nTokenName[TokenIdentifier] = 'Identifier';\nTokenName[TokenKeyword] = 'Keyword';\nTokenName[TokenNullLiteral] = 'Null';\nTokenName[TokenNumericLiteral] = 'Numeric';\nTokenName[TokenPunctuator] = 'Punctuator';\nTokenName[TokenStringLiteral] = 'String';\nTokenName[TokenRegularExpression] = 'RegularExpression';\nvar SyntaxArrayExpression = 'ArrayExpression',\n    SyntaxBinaryExpression = 'BinaryExpression',\n    SyntaxCallExpression = 'CallExpression',\n    SyntaxConditionalExpression = 'ConditionalExpression',\n    SyntaxIdentifier = 'Identifier',\n    SyntaxLiteral = 'Literal',\n    SyntaxLogicalExpression = 'LogicalExpression',\n    SyntaxMemberExpression = 'MemberExpression',\n    SyntaxObjectExpression = 'ObjectExpression',\n    SyntaxProperty = 'Property',\n    SyntaxUnaryExpression = 'UnaryExpression'; // Error messages should be identical to V8.\n\nvar MessageUnexpectedToken = 'Unexpected token %0',\n    MessageUnexpectedNumber = 'Unexpected number',\n    MessageUnexpectedString = 'Unexpected string',\n    MessageUnexpectedIdentifier = 'Unexpected identifier',\n    MessageUnexpectedReserved = 'Unexpected reserved word',\n    MessageUnexpectedEOS = 'Unexpected end of input',\n    MessageInvalidRegExp = 'Invalid regular expression',\n    MessageUnterminatedRegExp = 'Invalid regular expression: missing /',\n    MessageStrictOctalLiteral = 'Octal literals are not allowed in strict mode.',\n    MessageStrictDuplicateProperty = 'Duplicate data property in object literal not allowed in strict mode';\nvar ILLEGAL = 'ILLEGAL',\n    DISABLED = 'Disabled.'; // See also tools/generate-unicode-regex.py.\n\nvar RegexNonAsciiIdentifierStart = new RegExp('[\\\\xAA\\\\xB5\\\\xBA\\\\xC0-\\\\xD6\\\\xD8-\\\\xF6\\\\xF8-\\\\u02C1\\\\u02C6-\\\\u02D1\\\\u02E0-\\\\u02E4\\\\u02EC\\\\u02EE\\\\u0370-\\\\u0374\\\\u0376\\\\u0377\\\\u037A-\\\\u037D\\\\u037F\\\\u0386\\\\u0388-\\\\u038A\\\\u038C\\\\u038E-\\\\u03A1\\\\u03A3-\\\\u03F5\\\\u03F7-\\\\u0481\\\\u048A-\\\\u052F\\\\u0531-\\\\u0556\\\\u0559\\\\u0561-\\\\u0587\\\\u05D0-\\\\u05EA\\\\u05F0-\\\\u05F2\\\\u0620-\\\\u064A\\\\u066E\\\\u066F\\\\u0671-\\\\u06D3\\\\u06D5\\\\u06E5\\\\u06E6\\\\u06EE\\\\u06EF\\\\u06FA-\\\\u06FC\\\\u06FF\\\\u0710\\\\u0712-\\\\u072F\\\\u074D-\\\\u07A5\\\\u07B1\\\\u07CA-\\\\u07EA\\\\u07F4\\\\u07F5\\\\u07FA\\\\u0800-\\\\u0815\\\\u081A\\\\u0824\\\\u0828\\\\u0840-\\\\u0858\\\\u08A0-\\\\u08B2\\\\u0904-\\\\u0939\\\\u093D\\\\u0950\\\\u0958-\\\\u0961\\\\u0971-\\\\u0980\\\\u0985-\\\\u098C\\\\u098F\\\\u0990\\\\u0993-\\\\u09A8\\\\u09AA-\\\\u09B0\\\\u09B2\\\\u09B6-\\\\u09B9\\\\u09BD\\\\u09CE\\\\u09DC\\\\u09DD\\\\u09DF-\\\\u09E1\\\\u09F0\\\\u09F1\\\\u0A05-\\\\u0A0A\\\\u0A0F\\\\u0A10\\\\u0A13-\\\\u0A28\\\\u0A2A-\\\\u0A30\\\\u0A32\\\\u0A33\\\\u0A35\\\\u0A36\\\\u0A38\\\\u0A39\\\\u0A59-\\\\u0A5C\\\\u0A5E\\\\u0A72-\\\\u0A74\\\\u0A85-\\\\u0A8D\\\\u0A8F-\\\\u0A91\\\\u0A93-\\\\u0AA8\\\\u0AAA-\\\\u0AB0\\\\u0AB2\\\\u0AB3\\\\u0AB5-\\\\u0AB9\\\\u0ABD\\\\u0AD0\\\\u0AE0\\\\u0AE1\\\\u0B05-\\\\u0B0C\\\\u0B0F\\\\u0B10\\\\u0B13-\\\\u0B28\\\\u0B2A-\\\\u0B30\\\\u0B32\\\\u0B33\\\\u0B35-\\\\u0B39\\\\u0B3D\\\\u0B5C\\\\u0B5D\\\\u0B5F-\\\\u0B61\\\\u0B71\\\\u0B83\\\\u0B85-\\\\u0B8A\\\\u0B8E-\\\\u0B90\\\\u0B92-\\\\u0B95\\\\u0B99\\\\u0B9A\\\\u0B9C\\\\u0B9E\\\\u0B9F\\\\u0BA3\\\\u0BA4\\\\u0BA8-\\\\u0BAA\\\\u0BAE-\\\\u0BB9\\\\u0BD0\\\\u0C05-\\\\u0C0C\\\\u0C0E-\\\\u0C10\\\\u0C12-\\\\u0C28\\\\u0C2A-\\\\u0C39\\\\u0C3D\\\\u0C58\\\\u0C59\\\\u0C60\\\\u0C61\\\\u0C85-\\\\u0C8C\\\\u0C8E-\\\\u0C90\\\\u0C92-\\\\u0CA8\\\\u0CAA-\\\\u0CB3\\\\u0CB5-\\\\u0CB9\\\\u0CBD\\\\u0CDE\\\\u0CE0\\\\u0CE1\\\\u0CF1\\\\u0CF2\\\\u0D05-\\\\u0D0C\\\\u0D0E-\\\\u0D10\\\\u0D12-\\\\u0D3A\\\\u0D3D\\\\u0D4E\\\\u0D60\\\\u0D61\\\\u0D7A-\\\\u0D7F\\\\u0D85-\\\\u0D96\\\\u0D9A-\\\\u0DB1\\\\u0DB3-\\\\u0DBB\\\\u0DBD\\\\u0DC0-\\\\u0DC6\\\\u0E01-\\\\u0E30\\\\u0E32\\\\u0E33\\\\u0E40-\\\\u0E46\\\\u0E81\\\\u0E82\\\\u0E84\\\\u0E87\\\\u0E88\\\\u0E8A\\\\u0E8D\\\\u0E94-\\\\u0E97\\\\u0E99-\\\\u0E9F\\\\u0EA1-\\\\u0EA3\\\\u0EA5\\\\u0EA7\\\\u0EAA\\\\u0EAB\\\\u0EAD-\\\\u0EB0\\\\u0EB2\\\\u0EB3\\\\u0EBD\\\\u0EC0-\\\\u0EC4\\\\u0EC6\\\\u0EDC-\\\\u0EDF\\\\u0F00\\\\u0F40-\\\\u0F47\\\\u0F49-\\\\u0F6C\\\\u0F88-\\\\u0F8C\\\\u1000-\\\\u102A\\\\u103F\\\\u1050-\\\\u1055\\\\u105A-\\\\u105D\\\\u1061\\\\u1065\\\\u1066\\\\u106E-\\\\u1070\\\\u1075-\\\\u1081\\\\u108E\\\\u10A0-\\\\u10C5\\\\u10C7\\\\u10CD\\\\u10D0-\\\\u10FA\\\\u10FC-\\\\u1248\\\\u124A-\\\\u124D\\\\u1250-\\\\u1256\\\\u1258\\\\u125A-\\\\u125D\\\\u1260-\\\\u1288\\\\u128A-\\\\u128D\\\\u1290-\\\\u12B0\\\\u12B2-\\\\u12B5\\\\u12B8-\\\\u12BE\\\\u12C0\\\\u12C2-\\\\u12C5\\\\u12C8-\\\\u12D6\\\\u12D8-\\\\u1310\\\\u1312-\\\\u1315\\\\u1318-\\\\u135A\\\\u1380-\\\\u138F\\\\u13A0-\\\\u13F4\\\\u1401-\\\\u166C\\\\u166F-\\\\u167F\\\\u1681-\\\\u169A\\\\u16A0-\\\\u16EA\\\\u16EE-\\\\u16F8\\\\u1700-\\\\u170C\\\\u170E-\\\\u1711\\\\u1720-\\\\u1731\\\\u1740-\\\\u1751\\\\u1760-\\\\u176C\\\\u176E-\\\\u1770\\\\u1780-\\\\u17B3\\\\u17D7\\\\u17DC\\\\u1820-\\\\u1877\\\\u1880-\\\\u18A8\\\\u18AA\\\\u18B0-\\\\u18F5\\\\u1900-\\\\u191E\\\\u1950-\\\\u196D\\\\u1970-\\\\u1974\\\\u1980-\\\\u19AB\\\\u19C1-\\\\u19C7\\\\u1A00-\\\\u1A16\\\\u1A20-\\\\u1A54\\\\u1AA7\\\\u1B05-\\\\u1B33\\\\u1B45-\\\\u1B4B\\\\u1B83-\\\\u1BA0\\\\u1BAE\\\\u1BAF\\\\u1BBA-\\\\u1BE5\\\\u1C00-\\\\u1C23\\\\u1C4D-\\\\u1C4F\\\\u1C5A-\\\\u1C7D\\\\u1CE9-\\\\u1CEC\\\\u1CEE-\\\\u1CF1\\\\u1CF5\\\\u1CF6\\\\u1D00-\\\\u1DBF\\\\u1E00-\\\\u1F15\\\\u1F18-\\\\u1F1D\\\\u1F20-\\\\u1F45\\\\u1F48-\\\\u1F4D\\\\u1F50-\\\\u1F57\\\\u1F59\\\\u1F5B\\\\u1F5D\\\\u1F5F-\\\\u1F7D\\\\u1F80-\\\\u1FB4\\\\u1FB6-\\\\u1FBC\\\\u1FBE\\\\u1FC2-\\\\u1FC4\\\\u1FC6-\\\\u1FCC\\\\u1FD0-\\\\u1FD3\\\\u1FD6-\\\\u1FDB\\\\u1FE0-\\\\u1FEC\\\\u1FF2-\\\\u1FF4\\\\u1FF6-\\\\u1FFC\\\\u2071\\\\u207F\\\\u2090-\\\\u209C\\\\u2102\\\\u2107\\\\u210A-\\\\u2113\\\\u2115\\\\u2119-\\\\u211D\\\\u2124\\\\u2126\\\\u2128\\\\u212A-\\\\u212D\\\\u212F-\\\\u2139\\\\u213C-\\\\u213F\\\\u2145-\\\\u2149\\\\u214E\\\\u2160-\\\\u2188\\\\u2C00-\\\\u2C2E\\\\u2C30-\\\\u2C5E\\\\u2C60-\\\\u2CE4\\\\u2CEB-\\\\u2CEE\\\\u2CF2\\\\u2CF3\\\\u2D00-\\\\u2D25\\\\u2D27\\\\u2D2D\\\\u2D30-\\\\u2D67\\\\u2D6F\\\\u2D80-\\\\u2D96\\\\u2DA0-\\\\u2DA6\\\\u2DA8-\\\\u2DAE\\\\u2DB0-\\\\u2DB6\\\\u2DB8-\\\\u2DBE\\\\u2DC0-\\\\u2DC6\\\\u2DC8-\\\\u2DCE\\\\u2DD0-\\\\u2DD6\\\\u2DD8-\\\\u2DDE\\\\u2E2F\\\\u3005-\\\\u3007\\\\u3021-\\\\u3029\\\\u3031-\\\\u3035\\\\u3038-\\\\u303C\\\\u3041-\\\\u3096\\\\u309D-\\\\u309F\\\\u30A1-\\\\u30FA\\\\u30FC-\\\\u30FF\\\\u3105-\\\\u312D\\\\u3131-\\\\u318E\\\\u31A0-\\\\u31BA\\\\u31F0-\\\\u31FF\\\\u3400-\\\\u4DB5\\\\u4E00-\\\\u9FCC\\\\uA000-\\\\uA48C\\\\uA4D0-\\\\uA4FD\\\\uA500-\\\\uA60C\\\\uA610-\\\\uA61F\\\\uA62A\\\\uA62B\\\\uA640-\\\\uA66E\\\\uA67F-\\\\uA69D\\\\uA6A0-\\\\uA6EF\\\\uA717-\\\\uA71F\\\\uA722-\\\\uA788\\\\uA78B-\\\\uA78E\\\\uA790-\\\\uA7AD\\\\uA7B0\\\\uA7B1\\\\uA7F7-\\\\uA801\\\\uA803-\\\\uA805\\\\uA807-\\\\uA80A\\\\uA80C-\\\\uA822\\\\uA840-\\\\uA873\\\\uA882-\\\\uA8B3\\\\uA8F2-\\\\uA8F7\\\\uA8FB\\\\uA90A-\\\\uA925\\\\uA930-\\\\uA946\\\\uA960-\\\\uA97C\\\\uA984-\\\\uA9B2\\\\uA9CF\\\\uA9E0-\\\\uA9E4\\\\uA9E6-\\\\uA9EF\\\\uA9FA-\\\\uA9FE\\\\uAA00-\\\\uAA28\\\\uAA40-\\\\uAA42\\\\uAA44-\\\\uAA4B\\\\uAA60-\\\\uAA76\\\\uAA7A\\\\uAA7E-\\\\uAAAF\\\\uAAB1\\\\uAAB5\\\\uAAB6\\\\uAAB9-\\\\uAABD\\\\uAAC0\\\\uAAC2\\\\uAADB-\\\\uAADD\\\\uAAE0-\\\\uAAEA\\\\uAAF2-\\\\uAAF4\\\\uAB01-\\\\uAB06\\\\uAB09-\\\\uAB0E\\\\uAB11-\\\\uAB16\\\\uAB20-\\\\uAB26\\\\uAB28-\\\\uAB2E\\\\uAB30-\\\\uAB5A\\\\uAB5C-\\\\uAB5F\\\\uAB64\\\\uAB65\\\\uABC0-\\\\uABE2\\\\uAC00-\\\\uD7A3\\\\uD7B0-\\\\uD7C6\\\\uD7CB-\\\\uD7FB\\\\uF900-\\\\uFA6D\\\\uFA70-\\\\uFAD9\\\\uFB00-\\\\uFB06\\\\uFB13-\\\\uFB17\\\\uFB1D\\\\uFB1F-\\\\uFB28\\\\uFB2A-\\\\uFB36\\\\uFB38-\\\\uFB3C\\\\uFB3E\\\\uFB40\\\\uFB41\\\\uFB43\\\\uFB44\\\\uFB46-\\\\uFBB1\\\\uFBD3-\\\\uFD3D\\\\uFD50-\\\\uFD8F\\\\uFD92-\\\\uFDC7\\\\uFDF0-\\\\uFDFB\\\\uFE70-\\\\uFE74\\\\uFE76-\\\\uFEFC\\\\uFF21-\\\\uFF3A\\\\uFF41-\\\\uFF5A\\\\uFF66-\\\\uFFBE\\\\uFFC2-\\\\uFFC7\\\\uFFCA-\\\\uFFCF\\\\uFFD2-\\\\uFFD7\\\\uFFDA-\\\\uFFDC]'),\n    // eslint-disable-next-line no-misleading-character-class\nRegexNonAsciiIdentifierPart = new RegExp('[\\\\xAA\\\\xB5\\\\xBA\\\\xC0-\\\\xD6\\\\xD8-\\\\xF6\\\\xF8-\\\\u02C1\\\\u02C6-\\\\u02D1\\\\u02E0-\\\\u02E4\\\\u02EC\\\\u02EE\\\\u0300-\\\\u0374\\\\u0376\\\\u0377\\\\u037A-\\\\u037D\\\\u037F\\\\u0386\\\\u0388-\\\\u038A\\\\u038C\\\\u038E-\\\\u03A1\\\\u03A3-\\\\u03F5\\\\u03F7-\\\\u0481\\\\u0483-\\\\u0487\\\\u048A-\\\\u052F\\\\u0531-\\\\u0556\\\\u0559\\\\u0561-\\\\u0587\\\\u0591-\\\\u05BD\\\\u05BF\\\\u05C1\\\\u05C2\\\\u05C4\\\\u05C5\\\\u05C7\\\\u05D0-\\\\u05EA\\\\u05F0-\\\\u05F2\\\\u0610-\\\\u061A\\\\u0620-\\\\u0669\\\\u066E-\\\\u06D3\\\\u06D5-\\\\u06DC\\\\u06DF-\\\\u06E8\\\\u06EA-\\\\u06FC\\\\u06FF\\\\u0710-\\\\u074A\\\\u074D-\\\\u07B1\\\\u07C0-\\\\u07F5\\\\u07FA\\\\u0800-\\\\u082D\\\\u0840-\\\\u085B\\\\u08A0-\\\\u08B2\\\\u08E4-\\\\u0963\\\\u0966-\\\\u096F\\\\u0971-\\\\u0983\\\\u0985-\\\\u098C\\\\u098F\\\\u0990\\\\u0993-\\\\u09A8\\\\u09AA-\\\\u09B0\\\\u09B2\\\\u09B6-\\\\u09B9\\\\u09BC-\\\\u09C4\\\\u09C7\\\\u09C8\\\\u09CB-\\\\u09CE\\\\u09D7\\\\u09DC\\\\u09DD\\\\u09DF-\\\\u09E3\\\\u09E6-\\\\u09F1\\\\u0A01-\\\\u0A03\\\\u0A05-\\\\u0A0A\\\\u0A0F\\\\u0A10\\\\u0A13-\\\\u0A28\\\\u0A2A-\\\\u0A30\\\\u0A32\\\\u0A33\\\\u0A35\\\\u0A36\\\\u0A38\\\\u0A39\\\\u0A3C\\\\u0A3E-\\\\u0A42\\\\u0A47\\\\u0A48\\\\u0A4B-\\\\u0A4D\\\\u0A51\\\\u0A59-\\\\u0A5C\\\\u0A5E\\\\u0A66-\\\\u0A75\\\\u0A81-\\\\u0A83\\\\u0A85-\\\\u0A8D\\\\u0A8F-\\\\u0A91\\\\u0A93-\\\\u0AA8\\\\u0AAA-\\\\u0AB0\\\\u0AB2\\\\u0AB3\\\\u0AB5-\\\\u0AB9\\\\u0ABC-\\\\u0AC5\\\\u0AC7-\\\\u0AC9\\\\u0ACB-\\\\u0ACD\\\\u0AD0\\\\u0AE0-\\\\u0AE3\\\\u0AE6-\\\\u0AEF\\\\u0B01-\\\\u0B03\\\\u0B05-\\\\u0B0C\\\\u0B0F\\\\u0B10\\\\u0B13-\\\\u0B28\\\\u0B2A-\\\\u0B30\\\\u0B32\\\\u0B33\\\\u0B35-\\\\u0B39\\\\u0B3C-\\\\u0B44\\\\u0B47\\\\u0B48\\\\u0B4B-\\\\u0B4D\\\\u0B56\\\\u0B57\\\\u0B5C\\\\u0B5D\\\\u0B5F-\\\\u0B63\\\\u0B66-\\\\u0B6F\\\\u0B71\\\\u0B82\\\\u0B83\\\\u0B85-\\\\u0B8A\\\\u0B8E-\\\\u0B90\\\\u0B92-\\\\u0B95\\\\u0B99\\\\u0B9A\\\\u0B9C\\\\u0B9E\\\\u0B9F\\\\u0BA3\\\\u0BA4\\\\u0BA8-\\\\u0BAA\\\\u0BAE-\\\\u0BB9\\\\u0BBE-\\\\u0BC2\\\\u0BC6-\\\\u0BC8\\\\u0BCA-\\\\u0BCD\\\\u0BD0\\\\u0BD7\\\\u0BE6-\\\\u0BEF\\\\u0C00-\\\\u0C03\\\\u0C05-\\\\u0C0C\\\\u0C0E-\\\\u0C10\\\\u0C12-\\\\u0C28\\\\u0C2A-\\\\u0C39\\\\u0C3D-\\\\u0C44\\\\u0C46-\\\\u0C48\\\\u0C4A-\\\\u0C4D\\\\u0C55\\\\u0C56\\\\u0C58\\\\u0C59\\\\u0C60-\\\\u0C63\\\\u0C66-\\\\u0C6F\\\\u0C81-\\\\u0C83\\\\u0C85-\\\\u0C8C\\\\u0C8E-\\\\u0C90\\\\u0C92-\\\\u0CA8\\\\u0CAA-\\\\u0CB3\\\\u0CB5-\\\\u0CB9\\\\u0CBC-\\\\u0CC4\\\\u0CC6-\\\\u0CC8\\\\u0CCA-\\\\u0CCD\\\\u0CD5\\\\u0CD6\\\\u0CDE\\\\u0CE0-\\\\u0CE3\\\\u0CE6-\\\\u0CEF\\\\u0CF1\\\\u0CF2\\\\u0D01-\\\\u0D03\\\\u0D05-\\\\u0D0C\\\\u0D0E-\\\\u0D10\\\\u0D12-\\\\u0D3A\\\\u0D3D-\\\\u0D44\\\\u0D46-\\\\u0D48\\\\u0D4A-\\\\u0D4E\\\\u0D57\\\\u0D60-\\\\u0D63\\\\u0D66-\\\\u0D6F\\\\u0D7A-\\\\u0D7F\\\\u0D82\\\\u0D83\\\\u0D85-\\\\u0D96\\\\u0D9A-\\\\u0DB1\\\\u0DB3-\\\\u0DBB\\\\u0DBD\\\\u0DC0-\\\\u0DC6\\\\u0DCA\\\\u0DCF-\\\\u0DD4\\\\u0DD6\\\\u0DD8-\\\\u0DDF\\\\u0DE6-\\\\u0DEF\\\\u0DF2\\\\u0DF3\\\\u0E01-\\\\u0E3A\\\\u0E40-\\\\u0E4E\\\\u0E50-\\\\u0E59\\\\u0E81\\\\u0E82\\\\u0E84\\\\u0E87\\\\u0E88\\\\u0E8A\\\\u0E8D\\\\u0E94-\\\\u0E97\\\\u0E99-\\\\u0E9F\\\\u0EA1-\\\\u0EA3\\\\u0EA5\\\\u0EA7\\\\u0EAA\\\\u0EAB\\\\u0EAD-\\\\u0EB9\\\\u0EBB-\\\\u0EBD\\\\u0EC0-\\\\u0EC4\\\\u0EC6\\\\u0EC8-\\\\u0ECD\\\\u0ED0-\\\\u0ED9\\\\u0EDC-\\\\u0EDF\\\\u0F00\\\\u0F18\\\\u0F19\\\\u0F20-\\\\u0F29\\\\u0F35\\\\u0F37\\\\u0F39\\\\u0F3E-\\\\u0F47\\\\u0F49-\\\\u0F6C\\\\u0F71-\\\\u0F84\\\\u0F86-\\\\u0F97\\\\u0F99-\\\\u0FBC\\\\u0FC6\\\\u1000-\\\\u1049\\\\u1050-\\\\u109D\\\\u10A0-\\\\u10C5\\\\u10C7\\\\u10CD\\\\u10D0-\\\\u10FA\\\\u10FC-\\\\u1248\\\\u124A-\\\\u124D\\\\u1250-\\\\u1256\\\\u1258\\\\u125A-\\\\u125D\\\\u1260-\\\\u1288\\\\u128A-\\\\u128D\\\\u1290-\\\\u12B0\\\\u12B2-\\\\u12B5\\\\u12B8-\\\\u12BE\\\\u12C0\\\\u12C2-\\\\u12C5\\\\u12C8-\\\\u12D6\\\\u12D8-\\\\u1310\\\\u1312-\\\\u1315\\\\u1318-\\\\u135A\\\\u135D-\\\\u135F\\\\u1380-\\\\u138F\\\\u13A0-\\\\u13F4\\\\u1401-\\\\u166C\\\\u166F-\\\\u167F\\\\u1681-\\\\u169A\\\\u16A0-\\\\u16EA\\\\u16EE-\\\\u16F8\\\\u1700-\\\\u170C\\\\u170E-\\\\u1714\\\\u1720-\\\\u1734\\\\u1740-\\\\u1753\\\\u1760-\\\\u176C\\\\u176E-\\\\u1770\\\\u1772\\\\u1773\\\\u1780-\\\\u17D3\\\\u17D7\\\\u17DC\\\\u17DD\\\\u17E0-\\\\u17E9\\\\u180B-\\\\u180D\\\\u1810-\\\\u1819\\\\u1820-\\\\u1877\\\\u1880-\\\\u18AA\\\\u18B0-\\\\u18F5\\\\u1900-\\\\u191E\\\\u1920-\\\\u192B\\\\u1930-\\\\u193B\\\\u1946-\\\\u196D\\\\u1970-\\\\u1974\\\\u1980-\\\\u19AB\\\\u19B0-\\\\u19C9\\\\u19D0-\\\\u19D9\\\\u1A00-\\\\u1A1B\\\\u1A20-\\\\u1A5E\\\\u1A60-\\\\u1A7C\\\\u1A7F-\\\\u1A89\\\\u1A90-\\\\u1A99\\\\u1AA7\\\\u1AB0-\\\\u1ABD\\\\u1B00-\\\\u1B4B\\\\u1B50-\\\\u1B59\\\\u1B6B-\\\\u1B73\\\\u1B80-\\\\u1BF3\\\\u1C00-\\\\u1C37\\\\u1C40-\\\\u1C49\\\\u1C4D-\\\\u1C7D\\\\u1CD0-\\\\u1CD2\\\\u1CD4-\\\\u1CF6\\\\u1CF8\\\\u1CF9\\\\u1D00-\\\\u1DF5\\\\u1DFC-\\\\u1F15\\\\u1F18-\\\\u1F1D\\\\u1F20-\\\\u1F45\\\\u1F48-\\\\u1F4D\\\\u1F50-\\\\u1F57\\\\u1F59\\\\u1F5B\\\\u1F5D\\\\u1F5F-\\\\u1F7D\\\\u1F80-\\\\u1FB4\\\\u1FB6-\\\\u1FBC\\\\u1FBE\\\\u1FC2-\\\\u1FC4\\\\u1FC6-\\\\u1FCC\\\\u1FD0-\\\\u1FD3\\\\u1FD6-\\\\u1FDB\\\\u1FE0-\\\\u1FEC\\\\u1FF2-\\\\u1FF4\\\\u1FF6-\\\\u1FFC\\\\u200C\\\\u200D\\\\u203F\\\\u2040\\\\u2054\\\\u2071\\\\u207F\\\\u2090-\\\\u209C\\\\u20D0-\\\\u20DC\\\\u20E1\\\\u20E5-\\\\u20F0\\\\u2102\\\\u2107\\\\u210A-\\\\u2113\\\\u2115\\\\u2119-\\\\u211D\\\\u2124\\\\u2126\\\\u2128\\\\u212A-\\\\u212D\\\\u212F-\\\\u2139\\\\u213C-\\\\u213F\\\\u2145-\\\\u2149\\\\u214E\\\\u2160-\\\\u2188\\\\u2C00-\\\\u2C2E\\\\u2C30-\\\\u2C5E\\\\u2C60-\\\\u2CE4\\\\u2CEB-\\\\u2CF3\\\\u2D00-\\\\u2D25\\\\u2D27\\\\u2D2D\\\\u2D30-\\\\u2D67\\\\u2D6F\\\\u2D7F-\\\\u2D96\\\\u2DA0-\\\\u2DA6\\\\u2DA8-\\\\u2DAE\\\\u2DB0-\\\\u2DB6\\\\u2DB8-\\\\u2DBE\\\\u2DC0-\\\\u2DC6\\\\u2DC8-\\\\u2DCE\\\\u2DD0-\\\\u2DD6\\\\u2DD8-\\\\u2DDE\\\\u2DE0-\\\\u2DFF\\\\u2E2F\\\\u3005-\\\\u3007\\\\u3021-\\\\u302F\\\\u3031-\\\\u3035\\\\u3038-\\\\u303C\\\\u3041-\\\\u3096\\\\u3099\\\\u309A\\\\u309D-\\\\u309F\\\\u30A1-\\\\u30FA\\\\u30FC-\\\\u30FF\\\\u3105-\\\\u312D\\\\u3131-\\\\u318E\\\\u31A0-\\\\u31BA\\\\u31F0-\\\\u31FF\\\\u3400-\\\\u4DB5\\\\u4E00-\\\\u9FCC\\\\uA000-\\\\uA48C\\\\uA4D0-\\\\uA4FD\\\\uA500-\\\\uA60C\\\\uA610-\\\\uA62B\\\\uA640-\\\\uA66F\\\\uA674-\\\\uA67D\\\\uA67F-\\\\uA69D\\\\uA69F-\\\\uA6F1\\\\uA717-\\\\uA71F\\\\uA722-\\\\uA788\\\\uA78B-\\\\uA78E\\\\uA790-\\\\uA7AD\\\\uA7B0\\\\uA7B1\\\\uA7F7-\\\\uA827\\\\uA840-\\\\uA873\\\\uA880-\\\\uA8C4\\\\uA8D0-\\\\uA8D9\\\\uA8E0-\\\\uA8F7\\\\uA8FB\\\\uA900-\\\\uA92D\\\\uA930-\\\\uA953\\\\uA960-\\\\uA97C\\\\uA980-\\\\uA9C0\\\\uA9CF-\\\\uA9D9\\\\uA9E0-\\\\uA9FE\\\\uAA00-\\\\uAA36\\\\uAA40-\\\\uAA4D\\\\uAA50-\\\\uAA59\\\\uAA60-\\\\uAA76\\\\uAA7A-\\\\uAAC2\\\\uAADB-\\\\uAADD\\\\uAAE0-\\\\uAAEF\\\\uAAF2-\\\\uAAF6\\\\uAB01-\\\\uAB06\\\\uAB09-\\\\uAB0E\\\\uAB11-\\\\uAB16\\\\uAB20-\\\\uAB26\\\\uAB28-\\\\uAB2E\\\\uAB30-\\\\uAB5A\\\\uAB5C-\\\\uAB5F\\\\uAB64\\\\uAB65\\\\uABC0-\\\\uABEA\\\\uABEC\\\\uABED\\\\uABF0-\\\\uABF9\\\\uAC00-\\\\uD7A3\\\\uD7B0-\\\\uD7C6\\\\uD7CB-\\\\uD7FB\\\\uF900-\\\\uFA6D\\\\uFA70-\\\\uFAD9\\\\uFB00-\\\\uFB06\\\\uFB13-\\\\uFB17\\\\uFB1D-\\\\uFB28\\\\uFB2A-\\\\uFB36\\\\uFB38-\\\\uFB3C\\\\uFB3E\\\\uFB40\\\\uFB41\\\\uFB43\\\\uFB44\\\\uFB46-\\\\uFBB1\\\\uFBD3-\\\\uFD3D\\\\uFD50-\\\\uFD8F\\\\uFD92-\\\\uFDC7\\\\uFDF0-\\\\uFDFB\\\\uFE00-\\\\uFE0F\\\\uFE20-\\\\uFE2D\\\\uFE33\\\\uFE34\\\\uFE4D-\\\\uFE4F\\\\uFE70-\\\\uFE74\\\\uFE76-\\\\uFEFC\\\\uFF10-\\\\uFF19\\\\uFF21-\\\\uFF3A\\\\uFF3F\\\\uFF41-\\\\uFF5A\\\\uFF66-\\\\uFFBE\\\\uFFC2-\\\\uFFC7\\\\uFFCA-\\\\uFFCF\\\\uFFD2-\\\\uFFD7\\\\uFFDA-\\\\uFFDC]'); // Ensure the condition is true, otherwise throw an error.\n// This is only to have a better contract semantic, i.e. another safety net\n// to catch a logic error. The condition shall be fulfilled in normal case.\n// Do NOT use this to enforce a certain condition on any user input.\n\nfunction assert(condition, message) {\n  /* istanbul ignore next */\n  if (!condition) {\n    throw new Error('ASSERT: ' + message);\n  }\n}\n\nfunction isDecimalDigit(ch) {\n  return ch >= 0x30 && ch <= 0x39; // 0..9\n}\n\nfunction isHexDigit(ch) {\n  return '0123456789abcdefABCDEF'.indexOf(ch) >= 0;\n}\n\nfunction isOctalDigit(ch) {\n  return '01234567'.indexOf(ch) >= 0;\n} // 7.2 White Space\n\n\nfunction isWhiteSpace(ch) {\n  return ch === 0x20 || ch === 0x09 || ch === 0x0B || ch === 0x0C || ch === 0xA0 || ch >= 0x1680 && [0x1680, 0x180E, 0x2000, 0x2001, 0x2002, 0x2003, 0x2004, 0x2005, 0x2006, 0x2007, 0x2008, 0x2009, 0x200A, 0x202F, 0x205F, 0x3000, 0xFEFF].indexOf(ch) >= 0;\n} // 7.3 Line Terminators\n\n\nfunction isLineTerminator(ch) {\n  return ch === 0x0A || ch === 0x0D || ch === 0x2028 || ch === 0x2029;\n} // 7.6 Identifier Names and Identifiers\n\n\nfunction isIdentifierStart(ch) {\n  return ch === 0x24 || ch === 0x5F || // $ (dollar) and _ (underscore)\n  ch >= 0x41 && ch <= 0x5A || // A..Z\n  ch >= 0x61 && ch <= 0x7A || // a..z\n  ch === 0x5C || // \\ (backslash)\n  ch >= 0x80 && RegexNonAsciiIdentifierStart.test(String.fromCharCode(ch));\n}\n\nfunction isIdentifierPart(ch) {\n  return ch === 0x24 || ch === 0x5F || // $ (dollar) and _ (underscore)\n  ch >= 0x41 && ch <= 0x5A || // A..Z\n  ch >= 0x61 && ch <= 0x7A || // a..z\n  ch >= 0x30 && ch <= 0x39 || // 0..9\n  ch === 0x5C || // \\ (backslash)\n  ch >= 0x80 && RegexNonAsciiIdentifierPart.test(String.fromCharCode(ch));\n} // 7.6.1.1 Keywords\n\n\nconst keywords = {\n  'if': 1,\n  'in': 1,\n  'do': 1,\n  'var': 1,\n  'for': 1,\n  'new': 1,\n  'try': 1,\n  'let': 1,\n  'this': 1,\n  'else': 1,\n  'case': 1,\n  'void': 1,\n  'with': 1,\n  'enum': 1,\n  'while': 1,\n  'break': 1,\n  'catch': 1,\n  'throw': 1,\n  'const': 1,\n  'yield': 1,\n  'class': 1,\n  'super': 1,\n  'return': 1,\n  'typeof': 1,\n  'delete': 1,\n  'switch': 1,\n  'export': 1,\n  'import': 1,\n  'public': 1,\n  'static': 1,\n  'default': 1,\n  'finally': 1,\n  'extends': 1,\n  'package': 1,\n  'private': 1,\n  'function': 1,\n  'continue': 1,\n  'debugger': 1,\n  'interface': 1,\n  'protected': 1,\n  'instanceof': 1,\n  'implements': 1\n};\n\nfunction skipComment() {\n  while (index < length) {\n    const ch = source.charCodeAt(index);\n\n    if (isWhiteSpace(ch) || isLineTerminator(ch)) {\n      ++index;\n    } else {\n      break;\n    }\n  }\n}\n\nfunction scanHexEscape(prefix) {\n  var i,\n      len,\n      ch,\n      code = 0;\n  len = prefix === 'u' ? 4 : 2;\n\n  for (i = 0; i < len; ++i) {\n    if (index < length && isHexDigit(source[index])) {\n      ch = source[index++];\n      code = code * 16 + '0123456789abcdef'.indexOf(ch.toLowerCase());\n    } else {\n      throwError({}, MessageUnexpectedToken, ILLEGAL);\n    }\n  }\n\n  return String.fromCharCode(code);\n}\n\nfunction scanUnicodeCodePointEscape() {\n  var ch, code, cu1, cu2;\n  ch = source[index];\n  code = 0; // At least, one hex digit is required.\n\n  if (ch === '}') {\n    throwError({}, MessageUnexpectedToken, ILLEGAL);\n  }\n\n  while (index < length) {\n    ch = source[index++];\n\n    if (!isHexDigit(ch)) {\n      break;\n    }\n\n    code = code * 16 + '0123456789abcdef'.indexOf(ch.toLowerCase());\n  }\n\n  if (code > 0x10FFFF || ch !== '}') {\n    throwError({}, MessageUnexpectedToken, ILLEGAL);\n  } // UTF-16 Encoding\n\n\n  if (code <= 0xFFFF) {\n    return String.fromCharCode(code);\n  }\n\n  cu1 = (code - 0x10000 >> 10) + 0xD800;\n  cu2 = (code - 0x10000 & 1023) + 0xDC00;\n  return String.fromCharCode(cu1, cu2);\n}\n\nfunction getEscapedIdentifier() {\n  var ch, id;\n  ch = source.charCodeAt(index++);\n  id = String.fromCharCode(ch); // '\\u' (U+005C, U+0075) denotes an escaped character.\n\n  if (ch === 0x5C) {\n    if (source.charCodeAt(index) !== 0x75) {\n      throwError({}, MessageUnexpectedToken, ILLEGAL);\n    }\n\n    ++index;\n    ch = scanHexEscape('u');\n\n    if (!ch || ch === '\\\\' || !isIdentifierStart(ch.charCodeAt(0))) {\n      throwError({}, MessageUnexpectedToken, ILLEGAL);\n    }\n\n    id = ch;\n  }\n\n  while (index < length) {\n    ch = source.charCodeAt(index);\n\n    if (!isIdentifierPart(ch)) {\n      break;\n    }\n\n    ++index;\n    id += String.fromCharCode(ch); // '\\u' (U+005C, U+0075) denotes an escaped character.\n\n    if (ch === 0x5C) {\n      id = id.substr(0, id.length - 1);\n\n      if (source.charCodeAt(index) !== 0x75) {\n        throwError({}, MessageUnexpectedToken, ILLEGAL);\n      }\n\n      ++index;\n      ch = scanHexEscape('u');\n\n      if (!ch || ch === '\\\\' || !isIdentifierPart(ch.charCodeAt(0))) {\n        throwError({}, MessageUnexpectedToken, ILLEGAL);\n      }\n\n      id += ch;\n    }\n  }\n\n  return id;\n}\n\nfunction getIdentifier() {\n  var start, ch;\n  start = index++;\n\n  while (index < length) {\n    ch = source.charCodeAt(index);\n\n    if (ch === 0x5C) {\n      // Blackslash (U+005C) marks Unicode escape sequence.\n      index = start;\n      return getEscapedIdentifier();\n    }\n\n    if (isIdentifierPart(ch)) {\n      ++index;\n    } else {\n      break;\n    }\n  }\n\n  return source.slice(start, index);\n}\n\nfunction scanIdentifier() {\n  var start, id, type;\n  start = index; // Backslash (U+005C) starts an escaped character.\n\n  id = source.charCodeAt(index) === 0x5C ? getEscapedIdentifier() : getIdentifier(); // There is no keyword or literal with only one character.\n  // Thus, it must be an identifier.\n\n  if (id.length === 1) {\n    type = TokenIdentifier;\n  } else if (keywords.hasOwnProperty(id)) {\n    // eslint-disable-line no-prototype-builtins\n    type = TokenKeyword;\n  } else if (id === 'null') {\n    type = TokenNullLiteral;\n  } else if (id === 'true' || id === 'false') {\n    type = TokenBooleanLiteral;\n  } else {\n    type = TokenIdentifier;\n  }\n\n  return {\n    type: type,\n    value: id,\n    start: start,\n    end: index\n  };\n} // 7.7 Punctuators\n\n\nfunction scanPunctuator() {\n  var start = index,\n      code = source.charCodeAt(index),\n      code2,\n      ch1 = source[index],\n      ch2,\n      ch3,\n      ch4;\n\n  switch (code) {\n    // Check for most common single-character punctuators.\n    case 0x2E: // . dot\n\n    case 0x28: // ( open bracket\n\n    case 0x29: // ) close bracket\n\n    case 0x3B: // ; semicolon\n\n    case 0x2C: // , comma\n\n    case 0x7B: // { open curly brace\n\n    case 0x7D: // } close curly brace\n\n    case 0x5B: // [\n\n    case 0x5D: // ]\n\n    case 0x3A: // :\n\n    case 0x3F: // ?\n\n    case 0x7E:\n      // ~\n      ++index;\n      return {\n        type: TokenPunctuator,\n        value: String.fromCharCode(code),\n        start: start,\n        end: index\n      };\n\n    default:\n      code2 = source.charCodeAt(index + 1); // '=' (U+003D) marks an assignment or comparison operator.\n\n      if (code2 === 0x3D) {\n        switch (code) {\n          case 0x2B: // +\n\n          case 0x2D: // -\n\n          case 0x2F: // /\n\n          case 0x3C: // <\n\n          case 0x3E: // >\n\n          case 0x5E: // ^\n\n          case 0x7C: // |\n\n          case 0x25: // %\n\n          case 0x26: // &\n\n          case 0x2A:\n            // *\n            index += 2;\n            return {\n              type: TokenPunctuator,\n              value: String.fromCharCode(code) + String.fromCharCode(code2),\n              start: start,\n              end: index\n            };\n\n          case 0x21: // !\n\n          case 0x3D:\n            // =\n            index += 2; // !== and ===\n\n            if (source.charCodeAt(index) === 0x3D) {\n              ++index;\n            }\n\n            return {\n              type: TokenPunctuator,\n              value: source.slice(start, index),\n              start: start,\n              end: index\n            };\n        }\n      }\n\n  } // 4-character punctuator: >>>=\n\n\n  ch4 = source.substr(index, 4);\n\n  if (ch4 === '>>>=') {\n    index += 4;\n    return {\n      type: TokenPunctuator,\n      value: ch4,\n      start: start,\n      end: index\n    };\n  } // 3-character punctuators: === !== >>> <<= >>=\n\n\n  ch3 = ch4.substr(0, 3);\n\n  if (ch3 === '>>>' || ch3 === '<<=' || ch3 === '>>=') {\n    index += 3;\n    return {\n      type: TokenPunctuator,\n      value: ch3,\n      start: start,\n      end: index\n    };\n  } // Other 2-character punctuators: ++ -- << >> && ||\n\n\n  ch2 = ch3.substr(0, 2);\n\n  if (ch1 === ch2[1] && '+-<>&|'.indexOf(ch1) >= 0 || ch2 === '=>') {\n    index += 2;\n    return {\n      type: TokenPunctuator,\n      value: ch2,\n      start: start,\n      end: index\n    };\n  }\n\n  if (ch2 === '//') {\n    throwError({}, MessageUnexpectedToken, ILLEGAL);\n  } // 1-character punctuators: < > = ! + - * % & | ^ /\n\n\n  if ('<>=!+-*%&|^/'.indexOf(ch1) >= 0) {\n    ++index;\n    return {\n      type: TokenPunctuator,\n      value: ch1,\n      start: start,\n      end: index\n    };\n  }\n\n  throwError({}, MessageUnexpectedToken, ILLEGAL);\n} // 7.8.3 Numeric Literals\n\n\nfunction scanHexLiteral(start) {\n  let number = '';\n\n  while (index < length) {\n    if (!isHexDigit(source[index])) {\n      break;\n    }\n\n    number += source[index++];\n  }\n\n  if (number.length === 0) {\n    throwError({}, MessageUnexpectedToken, ILLEGAL);\n  }\n\n  if (isIdentifierStart(source.charCodeAt(index))) {\n    throwError({}, MessageUnexpectedToken, ILLEGAL);\n  }\n\n  return {\n    type: TokenNumericLiteral,\n    value: parseInt('0x' + number, 16),\n    start: start,\n    end: index\n  };\n}\n\nfunction scanOctalLiteral(start) {\n  let number = '0' + source[index++];\n\n  while (index < length) {\n    if (!isOctalDigit(source[index])) {\n      break;\n    }\n\n    number += source[index++];\n  }\n\n  if (isIdentifierStart(source.charCodeAt(index)) || isDecimalDigit(source.charCodeAt(index))) {\n    throwError({}, MessageUnexpectedToken, ILLEGAL);\n  }\n\n  return {\n    type: TokenNumericLiteral,\n    value: parseInt(number, 8),\n    octal: true,\n    start: start,\n    end: index\n  };\n}\n\nfunction scanNumericLiteral() {\n  var number, start, ch;\n  ch = source[index];\n  assert(isDecimalDigit(ch.charCodeAt(0)) || ch === '.', 'Numeric literal must start with a decimal digit or a decimal point');\n  start = index;\n  number = '';\n\n  if (ch !== '.') {\n    number = source[index++];\n    ch = source[index]; // Hex number starts with '0x'.\n    // Octal number starts with '0'.\n\n    if (number === '0') {\n      if (ch === 'x' || ch === 'X') {\n        ++index;\n        return scanHexLiteral(start);\n      }\n\n      if (isOctalDigit(ch)) {\n        return scanOctalLiteral(start);\n      } // decimal number starts with '0' such as '09' is illegal.\n\n\n      if (ch && isDecimalDigit(ch.charCodeAt(0))) {\n        throwError({}, MessageUnexpectedToken, ILLEGAL);\n      }\n    }\n\n    while (isDecimalDigit(source.charCodeAt(index))) {\n      number += source[index++];\n    }\n\n    ch = source[index];\n  }\n\n  if (ch === '.') {\n    number += source[index++];\n\n    while (isDecimalDigit(source.charCodeAt(index))) {\n      number += source[index++];\n    }\n\n    ch = source[index];\n  }\n\n  if (ch === 'e' || ch === 'E') {\n    number += source[index++];\n    ch = source[index];\n\n    if (ch === '+' || ch === '-') {\n      number += source[index++];\n    }\n\n    if (isDecimalDigit(source.charCodeAt(index))) {\n      while (isDecimalDigit(source.charCodeAt(index))) {\n        number += source[index++];\n      }\n    } else {\n      throwError({}, MessageUnexpectedToken, ILLEGAL);\n    }\n  }\n\n  if (isIdentifierStart(source.charCodeAt(index))) {\n    throwError({}, MessageUnexpectedToken, ILLEGAL);\n  }\n\n  return {\n    type: TokenNumericLiteral,\n    value: parseFloat(number),\n    start: start,\n    end: index\n  };\n} // 7.8.4 String Literals\n\n\nfunction scanStringLiteral() {\n  var str = '',\n      quote,\n      start,\n      ch,\n      code,\n      octal = false;\n  quote = source[index];\n  assert(quote === '\\'' || quote === '\"', 'String literal must starts with a quote');\n  start = index;\n  ++index;\n\n  while (index < length) {\n    ch = source[index++];\n\n    if (ch === quote) {\n      quote = '';\n      break;\n    } else if (ch === '\\\\') {\n      ch = source[index++];\n\n      if (!ch || !isLineTerminator(ch.charCodeAt(0))) {\n        switch (ch) {\n          case 'u':\n          case 'x':\n            if (source[index] === '{') {\n              ++index;\n              str += scanUnicodeCodePointEscape();\n            } else {\n              str += scanHexEscape(ch);\n            }\n\n            break;\n\n          case 'n':\n            str += '\\n';\n            break;\n\n          case 'r':\n            str += '\\r';\n            break;\n\n          case 't':\n            str += '\\t';\n            break;\n\n          case 'b':\n            str += '\\b';\n            break;\n\n          case 'f':\n            str += '\\f';\n            break;\n\n          case 'v':\n            str += '\\x0B';\n            break;\n\n          default:\n            if (isOctalDigit(ch)) {\n              code = '01234567'.indexOf(ch); // \\0 is not octal escape sequence\n\n              if (code !== 0) {\n                octal = true;\n              }\n\n              if (index < length && isOctalDigit(source[index])) {\n                octal = true;\n                code = code * 8 + '01234567'.indexOf(source[index++]); // 3 digits are only allowed when string starts\n                // with 0, 1, 2, 3\n\n                if ('0123'.indexOf(ch) >= 0 && index < length && isOctalDigit(source[index])) {\n                  code = code * 8 + '01234567'.indexOf(source[index++]);\n                }\n              }\n\n              str += String.fromCharCode(code);\n            } else {\n              str += ch;\n            }\n\n            break;\n        }\n      } else {\n        if (ch === '\\r' && source[index] === '\\n') {\n          ++index;\n        }\n      }\n    } else if (isLineTerminator(ch.charCodeAt(0))) {\n      break;\n    } else {\n      str += ch;\n    }\n  }\n\n  if (quote !== '') {\n    throwError({}, MessageUnexpectedToken, ILLEGAL);\n  }\n\n  return {\n    type: TokenStringLiteral,\n    value: str,\n    octal: octal,\n    start: start,\n    end: index\n  };\n}\n\nfunction testRegExp(pattern, flags) {\n  let tmp = pattern;\n\n  if (flags.indexOf('u') >= 0) {\n    // Replace each astral symbol and every Unicode code point\n    // escape sequence with a single ASCII symbol to avoid throwing on\n    // regular expressions that are only valid in combination with the\n    // `/u` flag.\n    // Note: replacing with the ASCII symbol `x` might cause false\n    // negatives in unlikely scenarios. For example, `[\\u{61}-b]` is a\n    // perfectly valid pattern that is equivalent to `[a-b]`, but it\n    // would be replaced by `[x-b]` which throws an error.\n    tmp = tmp.replace(/\\\\u\\{([0-9a-fA-F]+)\\}/g, ($0, $1) => {\n      if (parseInt($1, 16) <= 0x10FFFF) {\n        return 'x';\n      }\n\n      throwError({}, MessageInvalidRegExp);\n    }).replace(/[\\uD800-\\uDBFF][\\uDC00-\\uDFFF]/g, 'x');\n  } // First, detect invalid regular expressions.\n\n\n  try {\n    new RegExp(tmp);\n  } catch (e) {\n    throwError({}, MessageInvalidRegExp);\n  } // Return a regular expression object for this pattern-flag pair, or\n  // `null` in case the current environment doesn't support the flags it\n  // uses.\n\n\n  try {\n    return new RegExp(pattern, flags);\n  } catch (exception) {\n    return null;\n  }\n}\n\nfunction scanRegExpBody() {\n  var ch, str, classMarker, terminated, body;\n  ch = source[index];\n  assert(ch === '/', 'Regular expression literal must start with a slash');\n  str = source[index++];\n  classMarker = false;\n  terminated = false;\n\n  while (index < length) {\n    ch = source[index++];\n    str += ch;\n\n    if (ch === '\\\\') {\n      ch = source[index++]; // ECMA-262 7.8.5\n\n      if (isLineTerminator(ch.charCodeAt(0))) {\n        throwError({}, MessageUnterminatedRegExp);\n      }\n\n      str += ch;\n    } else if (isLineTerminator(ch.charCodeAt(0))) {\n      throwError({}, MessageUnterminatedRegExp);\n    } else if (classMarker) {\n      if (ch === ']') {\n        classMarker = false;\n      }\n    } else {\n      if (ch === '/') {\n        terminated = true;\n        break;\n      } else if (ch === '[') {\n        classMarker = true;\n      }\n    }\n  }\n\n  if (!terminated) {\n    throwError({}, MessageUnterminatedRegExp);\n  } // Exclude leading and trailing slash.\n\n\n  body = str.substr(1, str.length - 2);\n  return {\n    value: body,\n    literal: str\n  };\n}\n\nfunction scanRegExpFlags() {\n  var ch, str, flags;\n  str = '';\n  flags = '';\n\n  while (index < length) {\n    ch = source[index];\n\n    if (!isIdentifierPart(ch.charCodeAt(0))) {\n      break;\n    }\n\n    ++index;\n\n    if (ch === '\\\\' && index < length) {\n      throwError({}, MessageUnexpectedToken, ILLEGAL);\n    } else {\n      flags += ch;\n      str += ch;\n    }\n  }\n\n  if (flags.search(/[^gimuy]/g) >= 0) {\n    throwError({}, MessageInvalidRegExp, flags);\n  }\n\n  return {\n    value: flags,\n    literal: str\n  };\n}\n\nfunction scanRegExp() {\n  var start, body, flags, value;\n  lookahead = null;\n  skipComment();\n  start = index;\n  body = scanRegExpBody();\n  flags = scanRegExpFlags();\n  value = testRegExp(body.value, flags.value);\n  return {\n    literal: body.literal + flags.literal,\n    value: value,\n    regex: {\n      pattern: body.value,\n      flags: flags.value\n    },\n    start: start,\n    end: index\n  };\n}\n\nfunction isIdentifierName(token) {\n  return token.type === TokenIdentifier || token.type === TokenKeyword || token.type === TokenBooleanLiteral || token.type === TokenNullLiteral;\n}\n\nfunction advance() {\n  skipComment();\n\n  if (index >= length) {\n    return {\n      type: TokenEOF,\n      start: index,\n      end: index\n    };\n  }\n\n  const ch = source.charCodeAt(index);\n\n  if (isIdentifierStart(ch)) {\n    return scanIdentifier();\n  } // Very common: ( and ) and ;\n\n\n  if (ch === 0x28 || ch === 0x29 || ch === 0x3B) {\n    return scanPunctuator();\n  } // String literal starts with single quote (U+0027) or double quote (U+0022).\n\n\n  if (ch === 0x27 || ch === 0x22) {\n    return scanStringLiteral();\n  } // Dot (.) U+002E can also start a floating-point number, hence the need\n  // to check the next character.\n\n\n  if (ch === 0x2E) {\n    if (isDecimalDigit(source.charCodeAt(index + 1))) {\n      return scanNumericLiteral();\n    }\n\n    return scanPunctuator();\n  }\n\n  if (isDecimalDigit(ch)) {\n    return scanNumericLiteral();\n  }\n\n  return scanPunctuator();\n}\n\nfunction lex() {\n  const token = lookahead;\n  index = token.end;\n  lookahead = advance();\n  index = token.end;\n  return token;\n}\n\nfunction peek() {\n  const pos = index;\n  lookahead = advance();\n  index = pos;\n}\n\nfunction finishArrayExpression(elements) {\n  const node = new ASTNode(SyntaxArrayExpression);\n  node.elements = elements;\n  return node;\n}\n\nfunction finishBinaryExpression(operator, left, right) {\n  const node = new ASTNode(operator === '||' || operator === '&&' ? SyntaxLogicalExpression : SyntaxBinaryExpression);\n  node.operator = operator;\n  node.left = left;\n  node.right = right;\n  return node;\n}\n\nfunction finishCallExpression(callee, args) {\n  const node = new ASTNode(SyntaxCallExpression);\n  node.callee = callee;\n  node.arguments = args;\n  return node;\n}\n\nfunction finishConditionalExpression(test, consequent, alternate) {\n  const node = new ASTNode(SyntaxConditionalExpression);\n  node.test = test;\n  node.consequent = consequent;\n  node.alternate = alternate;\n  return node;\n}\n\nfunction finishIdentifier(name) {\n  const node = new ASTNode(SyntaxIdentifier);\n  node.name = name;\n  return node;\n}\n\nfunction finishLiteral(token) {\n  const node = new ASTNode(SyntaxLiteral);\n  node.value = token.value;\n  node.raw = source.slice(token.start, token.end);\n\n  if (token.regex) {\n    if (node.raw === '//') {\n      node.raw = '/(?:)/';\n    }\n\n    node.regex = token.regex;\n  }\n\n  return node;\n}\n\nfunction finishMemberExpression(accessor, object, property) {\n  const node = new ASTNode(SyntaxMemberExpression);\n  node.computed = accessor === '[';\n  node.object = object;\n  node.property = property;\n  if (!node.computed) property.member = true;\n  return node;\n}\n\nfunction finishObjectExpression(properties) {\n  const node = new ASTNode(SyntaxObjectExpression);\n  node.properties = properties;\n  return node;\n}\n\nfunction finishProperty(kind, key, value) {\n  const node = new ASTNode(SyntaxProperty);\n  node.key = key;\n  node.value = value;\n  node.kind = kind;\n  return node;\n}\n\nfunction finishUnaryExpression(operator, argument) {\n  const node = new ASTNode(SyntaxUnaryExpression);\n  node.operator = operator;\n  node.argument = argument;\n  node.prefix = true;\n  return node;\n} // Throw an exception\n\n\nfunction throwError(token, messageFormat) {\n  var error,\n      args = Array.prototype.slice.call(arguments, 2),\n      msg = messageFormat.replace(/%(\\d)/g, (whole, index) => {\n    assert(index < args.length, 'Message reference must be in range');\n    return args[index];\n  });\n  error = new Error(msg);\n  error.index = index;\n  error.description = msg;\n  throw error;\n} // Throw an exception because of the token.\n\n\nfunction throwUnexpected(token) {\n  if (token.type === TokenEOF) {\n    throwError(token, MessageUnexpectedEOS);\n  }\n\n  if (token.type === TokenNumericLiteral) {\n    throwError(token, MessageUnexpectedNumber);\n  }\n\n  if (token.type === TokenStringLiteral) {\n    throwError(token, MessageUnexpectedString);\n  }\n\n  if (token.type === TokenIdentifier) {\n    throwError(token, MessageUnexpectedIdentifier);\n  }\n\n  if (token.type === TokenKeyword) {\n    throwError(token, MessageUnexpectedReserved);\n  } // BooleanLiteral, NullLiteral, or Punctuator.\n\n\n  throwError(token, MessageUnexpectedToken, token.value);\n} // Expect the next token to match the specified punctuator.\n// If not, an exception will be thrown.\n\n\nfunction expect(value) {\n  const token = lex();\n\n  if (token.type !== TokenPunctuator || token.value !== value) {\n    throwUnexpected(token);\n  }\n} // Return true if the next token matches the specified punctuator.\n\n\nfunction match(value) {\n  return lookahead.type === TokenPunctuator && lookahead.value === value;\n} // Return true if the next token matches the specified keyword\n\n\nfunction matchKeyword(keyword) {\n  return lookahead.type === TokenKeyword && lookahead.value === keyword;\n} // 11.1.4 Array Initialiser\n\n\nfunction parseArrayInitialiser() {\n  const elements = [];\n  index = lookahead.start;\n  expect('[');\n\n  while (!match(']')) {\n    if (match(',')) {\n      lex();\n      elements.push(null);\n    } else {\n      elements.push(parseConditionalExpression());\n\n      if (!match(']')) {\n        expect(',');\n      }\n    }\n  }\n\n  lex();\n  return finishArrayExpression(elements);\n} // 11.1.5 Object Initialiser\n\n\nfunction parseObjectPropertyKey() {\n  index = lookahead.start;\n  const token = lex(); // Note: This function is called only from parseObjectProperty(), where\n  // EOF and Punctuator tokens are already filtered out.\n\n  if (token.type === TokenStringLiteral || token.type === TokenNumericLiteral) {\n    if (token.octal) {\n      throwError(token, MessageStrictOctalLiteral);\n    }\n\n    return finishLiteral(token);\n  }\n\n  return finishIdentifier(token.value);\n}\n\nfunction parseObjectProperty() {\n  var token, key, id, value;\n  index = lookahead.start;\n  token = lookahead;\n\n  if (token.type === TokenIdentifier) {\n    id = parseObjectPropertyKey();\n    expect(':');\n    value = parseConditionalExpression();\n    return finishProperty('init', id, value);\n  }\n\n  if (token.type === TokenEOF || token.type === TokenPunctuator) {\n    throwUnexpected(token);\n  } else {\n    key = parseObjectPropertyKey();\n    expect(':');\n    value = parseConditionalExpression();\n    return finishProperty('init', key, value);\n  }\n}\n\nfunction parseObjectInitialiser() {\n  var properties = [],\n      property,\n      name,\n      key,\n      map = {},\n      toString = String;\n  index = lookahead.start;\n  expect('{');\n\n  while (!match('}')) {\n    property = parseObjectProperty();\n\n    if (property.key.type === SyntaxIdentifier) {\n      name = property.key.name;\n    } else {\n      name = toString(property.key.value);\n    }\n\n    key = '$' + name;\n\n    if (Object.prototype.hasOwnProperty.call(map, key)) {\n      throwError({}, MessageStrictDuplicateProperty);\n    } else {\n      map[key] = true;\n    }\n\n    properties.push(property);\n\n    if (!match('}')) {\n      expect(',');\n    }\n  }\n\n  expect('}');\n  return finishObjectExpression(properties);\n} // 11.1.6 The Grouping Operator\n\n\nfunction parseGroupExpression() {\n  expect('(');\n  const expr = parseExpression();\n  expect(')');\n  return expr;\n} // 11.1 Primary Expressions\n\n\nconst legalKeywords = {\n  'if': 1\n};\n\nfunction parsePrimaryExpression() {\n  var type, token, expr;\n\n  if (match('(')) {\n    return parseGroupExpression();\n  }\n\n  if (match('[')) {\n    return parseArrayInitialiser();\n  }\n\n  if (match('{')) {\n    return parseObjectInitialiser();\n  }\n\n  type = lookahead.type;\n  index = lookahead.start;\n\n  if (type === TokenIdentifier || legalKeywords[lookahead.value]) {\n    expr = finishIdentifier(lex().value);\n  } else if (type === TokenStringLiteral || type === TokenNumericLiteral) {\n    if (lookahead.octal) {\n      throwError(lookahead, MessageStrictOctalLiteral);\n    }\n\n    expr = finishLiteral(lex());\n  } else if (type === TokenKeyword) {\n    throw new Error(DISABLED);\n  } else if (type === TokenBooleanLiteral) {\n    token = lex();\n    token.value = token.value === 'true';\n    expr = finishLiteral(token);\n  } else if (type === TokenNullLiteral) {\n    token = lex();\n    token.value = null;\n    expr = finishLiteral(token);\n  } else if (match('/') || match('/=')) {\n    expr = finishLiteral(scanRegExp());\n    peek();\n  } else {\n    throwUnexpected(lex());\n  }\n\n  return expr;\n} // 11.2 Left-Hand-Side Expressions\n\n\nfunction parseArguments() {\n  const args = [];\n  expect('(');\n\n  if (!match(')')) {\n    while (index < length) {\n      args.push(parseConditionalExpression());\n\n      if (match(')')) {\n        break;\n      }\n\n      expect(',');\n    }\n  }\n\n  expect(')');\n  return args;\n}\n\nfunction parseNonComputedProperty() {\n  index = lookahead.start;\n  const token = lex();\n\n  if (!isIdentifierName(token)) {\n    throwUnexpected(token);\n  }\n\n  return finishIdentifier(token.value);\n}\n\nfunction parseNonComputedMember() {\n  expect('.');\n  return parseNonComputedProperty();\n}\n\nfunction parseComputedMember() {\n  expect('[');\n  const expr = parseExpression();\n  expect(']');\n  return expr;\n}\n\nfunction parseLeftHandSideExpressionAllowCall() {\n  var expr, args, property;\n  expr = parsePrimaryExpression();\n\n  for (;;) {\n    if (match('.')) {\n      property = parseNonComputedMember();\n      expr = finishMemberExpression('.', expr, property);\n    } else if (match('(')) {\n      args = parseArguments();\n      expr = finishCallExpression(expr, args);\n    } else if (match('[')) {\n      property = parseComputedMember();\n      expr = finishMemberExpression('[', expr, property);\n    } else {\n      break;\n    }\n  }\n\n  return expr;\n} // 11.3 Postfix Expressions\n\n\nfunction parsePostfixExpression() {\n  const expr = parseLeftHandSideExpressionAllowCall();\n\n  if (lookahead.type === TokenPunctuator) {\n    if (match('++') || match('--')) {\n      throw new Error(DISABLED);\n    }\n  }\n\n  return expr;\n} // 11.4 Unary Operators\n\n\nfunction parseUnaryExpression() {\n  var token, expr;\n\n  if (lookahead.type !== TokenPunctuator && lookahead.type !== TokenKeyword) {\n    expr = parsePostfixExpression();\n  } else if (match('++') || match('--')) {\n    throw new Error(DISABLED);\n  } else if (match('+') || match('-') || match('~') || match('!')) {\n    token = lex();\n    expr = parseUnaryExpression();\n    expr = finishUnaryExpression(token.value, expr);\n  } else if (matchKeyword('delete') || matchKeyword('void') || matchKeyword('typeof')) {\n    throw new Error(DISABLED);\n  } else {\n    expr = parsePostfixExpression();\n  }\n\n  return expr;\n}\n\nfunction binaryPrecedence(token) {\n  let prec = 0;\n\n  if (token.type !== TokenPunctuator && token.type !== TokenKeyword) {\n    return 0;\n  }\n\n  switch (token.value) {\n    case '||':\n      prec = 1;\n      break;\n\n    case '&&':\n      prec = 2;\n      break;\n\n    case '|':\n      prec = 3;\n      break;\n\n    case '^':\n      prec = 4;\n      break;\n\n    case '&':\n      prec = 5;\n      break;\n\n    case '==':\n    case '!=':\n    case '===':\n    case '!==':\n      prec = 6;\n      break;\n\n    case '<':\n    case '>':\n    case '<=':\n    case '>=':\n    case 'instanceof':\n    case 'in':\n      prec = 7;\n      break;\n\n    case '<<':\n    case '>>':\n    case '>>>':\n      prec = 8;\n      break;\n\n    case '+':\n    case '-':\n      prec = 9;\n      break;\n\n    case '*':\n    case '/':\n    case '%':\n      prec = 11;\n      break;\n  }\n\n  return prec;\n} // 11.5 Multiplicative Operators\n// 11.6 Additive Operators\n// 11.7 Bitwise Shift Operators\n// 11.8 Relational Operators\n// 11.9 Equality Operators\n// 11.10 Binary Bitwise Operators\n// 11.11 Binary Logical Operators\n\n\nfunction parseBinaryExpression() {\n  var marker, markers, expr, token, prec, stack, right, operator, left, i;\n  marker = lookahead;\n  left = parseUnaryExpression();\n  token = lookahead;\n  prec = binaryPrecedence(token);\n\n  if (prec === 0) {\n    return left;\n  }\n\n  token.prec = prec;\n  lex();\n  markers = [marker, lookahead];\n  right = parseUnaryExpression();\n  stack = [left, token, right];\n\n  while ((prec = binaryPrecedence(lookahead)) > 0) {\n    // Reduce: make a binary expression from the three topmost entries.\n    while (stack.length > 2 && prec <= stack[stack.length - 2].prec) {\n      right = stack.pop();\n      operator = stack.pop().value;\n      left = stack.pop();\n      markers.pop();\n      expr = finishBinaryExpression(operator, left, right);\n      stack.push(expr);\n    } // Shift.\n\n\n    token = lex();\n    token.prec = prec;\n    stack.push(token);\n    markers.push(lookahead);\n    expr = parseUnaryExpression();\n    stack.push(expr);\n  } // Final reduce to clean-up the stack.\n\n\n  i = stack.length - 1;\n  expr = stack[i];\n  markers.pop();\n\n  while (i > 1) {\n    markers.pop();\n    expr = finishBinaryExpression(stack[i - 1].value, stack[i - 2], expr);\n    i -= 2;\n  }\n\n  return expr;\n} // 11.12 Conditional Operator\n\n\nfunction parseConditionalExpression() {\n  var expr, consequent, alternate;\n  expr = parseBinaryExpression();\n\n  if (match('?')) {\n    lex();\n    consequent = parseConditionalExpression();\n    expect(':');\n    alternate = parseConditionalExpression();\n    expr = finishConditionalExpression(expr, consequent, alternate);\n  }\n\n  return expr;\n} // 11.14 Comma Operator\n\n\nfunction parseExpression() {\n  const expr = parseConditionalExpression();\n\n  if (match(',')) {\n    throw new Error(DISABLED); // no sequence expressions\n  }\n\n  return expr;\n}\n\nfunction parser (code) {\n  source = code;\n  index = 0;\n  length = source.length;\n  lookahead = null;\n  peek();\n  const expr = parseExpression();\n\n  if (lookahead.type !== TokenEOF) {\n    throw new Error('Unexpect token after expression.');\n  }\n\n  return expr;\n}\n\nvar Constants = {\n  NaN: 'NaN',\n  E: 'Math.E',\n  LN2: 'Math.LN2',\n  LN10: 'Math.LN10',\n  LOG2E: 'Math.LOG2E',\n  LOG10E: 'Math.LOG10E',\n  PI: 'Math.PI',\n  SQRT1_2: 'Math.SQRT1_2',\n  SQRT2: 'Math.SQRT2',\n  MIN_VALUE: 'Number.MIN_VALUE',\n  MAX_VALUE: 'Number.MAX_VALUE'\n};\n\nfunction Functions (codegen) {\n  function fncall(name, args, cast, type) {\n    let obj = codegen(args[0]);\n\n    if (cast) {\n      obj = cast + '(' + obj + ')';\n      if (cast.lastIndexOf('new ', 0) === 0) obj = '(' + obj + ')';\n    }\n\n    return obj + '.' + name + (type < 0 ? '' : type === 0 ? '()' : '(' + args.slice(1).map(codegen).join(',') + ')');\n  }\n\n  function fn(name, cast, type) {\n    return args => fncall(name, args, cast, type);\n  }\n\n  const DATE = 'new Date',\n        STRING = 'String',\n        REGEXP = 'RegExp';\n  return {\n    // MATH functions\n    isNaN: 'Number.isNaN',\n    isFinite: 'Number.isFinite',\n    abs: 'Math.abs',\n    acos: 'Math.acos',\n    asin: 'Math.asin',\n    atan: 'Math.atan',\n    atan2: 'Math.atan2',\n    ceil: 'Math.ceil',\n    cos: 'Math.cos',\n    exp: 'Math.exp',\n    floor: 'Math.floor',\n    log: 'Math.log',\n    max: 'Math.max',\n    min: 'Math.min',\n    pow: 'Math.pow',\n    random: 'Math.random',\n    round: 'Math.round',\n    sin: 'Math.sin',\n    sqrt: 'Math.sqrt',\n    tan: 'Math.tan',\n    clamp: function (args) {\n      if (args.length < 3) Object(vega_util__WEBPACK_IMPORTED_MODULE_0__[\"error\"])('Missing arguments to clamp function.');\n      if (args.length > 3) Object(vega_util__WEBPACK_IMPORTED_MODULE_0__[\"error\"])('Too many arguments to clamp function.');\n      const a = args.map(codegen);\n      return 'Math.max(' + a[1] + ', Math.min(' + a[2] + ',' + a[0] + '))';\n    },\n    // DATE functions\n    now: 'Date.now',\n    utc: 'Date.UTC',\n    datetime: DATE,\n    date: fn('getDate', DATE, 0),\n    day: fn('getDay', DATE, 0),\n    year: fn('getFullYear', DATE, 0),\n    month: fn('getMonth', DATE, 0),\n    hours: fn('getHours', DATE, 0),\n    minutes: fn('getMinutes', DATE, 0),\n    seconds: fn('getSeconds', DATE, 0),\n    milliseconds: fn('getMilliseconds', DATE, 0),\n    time: fn('getTime', DATE, 0),\n    timezoneoffset: fn('getTimezoneOffset', DATE, 0),\n    utcdate: fn('getUTCDate', DATE, 0),\n    utcday: fn('getUTCDay', DATE, 0),\n    utcyear: fn('getUTCFullYear', DATE, 0),\n    utcmonth: fn('getUTCMonth', DATE, 0),\n    utchours: fn('getUTCHours', DATE, 0),\n    utcminutes: fn('getUTCMinutes', DATE, 0),\n    utcseconds: fn('getUTCSeconds', DATE, 0),\n    utcmilliseconds: fn('getUTCMilliseconds', DATE, 0),\n    // sequence functions\n    length: fn('length', null, -1),\n    // STRING functions\n    parseFloat: 'parseFloat',\n    parseInt: 'parseInt',\n    upper: fn('toUpperCase', STRING, 0),\n    lower: fn('toLowerCase', STRING, 0),\n    substring: fn('substring', STRING),\n    split: fn('split', STRING),\n    trim: fn('trim', STRING, 0),\n    // REGEXP functions\n    regexp: REGEXP,\n    test: fn('test', REGEXP),\n    // Control Flow functions\n    if: function (args) {\n      if (args.length < 3) Object(vega_util__WEBPACK_IMPORTED_MODULE_0__[\"error\"])('Missing arguments to if function.');\n      if (args.length > 3) Object(vega_util__WEBPACK_IMPORTED_MODULE_0__[\"error\"])('Too many arguments to if function.');\n      const a = args.map(codegen);\n      return '(' + a[0] + '?' + a[1] + ':' + a[2] + ')';\n    }\n  };\n}\n\nfunction stripQuotes(s) {\n  const n = s && s.length - 1;\n  return n && (s[0] === '\"' && s[n] === '\"' || s[0] === '\\'' && s[n] === '\\'') ? s.slice(1, -1) : s;\n}\n\nfunction codegen (opt) {\n  opt = opt || {};\n  const allowed = opt.allowed ? Object(vega_util__WEBPACK_IMPORTED_MODULE_0__[\"toSet\"])(opt.allowed) : {},\n        forbidden = opt.forbidden ? Object(vega_util__WEBPACK_IMPORTED_MODULE_0__[\"toSet\"])(opt.forbidden) : {},\n        constants = opt.constants || Constants,\n        functions = (opt.functions || Functions)(visit),\n        globalvar = opt.globalvar,\n        fieldvar = opt.fieldvar,\n        outputGlobal = Object(vega_util__WEBPACK_IMPORTED_MODULE_0__[\"isFunction\"])(globalvar) ? globalvar : id => \"\".concat(globalvar, \"[\\\"\").concat(id, \"\\\"]\");\n  let globals = {},\n      fields = {},\n      memberDepth = 0;\n\n  function visit(ast) {\n    if (Object(vega_util__WEBPACK_IMPORTED_MODULE_0__[\"isString\"])(ast)) return ast;\n    const generator = Generators[ast.type];\n    if (generator == null) Object(vega_util__WEBPACK_IMPORTED_MODULE_0__[\"error\"])('Unsupported type: ' + ast.type);\n    return generator(ast);\n  }\n\n  const Generators = {\n    Literal: n => n.raw,\n    Identifier: n => {\n      const id = n.name;\n\n      if (memberDepth > 0) {\n        return id;\n      } else if (Object(vega_util__WEBPACK_IMPORTED_MODULE_0__[\"hasOwnProperty\"])(forbidden, id)) {\n        return Object(vega_util__WEBPACK_IMPORTED_MODULE_0__[\"error\"])('Illegal identifier: ' + id);\n      } else if (Object(vega_util__WEBPACK_IMPORTED_MODULE_0__[\"hasOwnProperty\"])(constants, id)) {\n        return constants[id];\n      } else if (Object(vega_util__WEBPACK_IMPORTED_MODULE_0__[\"hasOwnProperty\"])(allowed, id)) {\n        return id;\n      } else {\n        globals[id] = 1;\n        return outputGlobal(id);\n      }\n    },\n    MemberExpression: n => {\n      const d = !n.computed,\n            o = visit(n.object);\n      if (d) memberDepth += 1;\n      const p = visit(n.property);\n\n      if (o === fieldvar) {\n        // strip quotes to sanitize field name (#1653)\n        fields[stripQuotes(p)] = 1;\n      }\n\n      if (d) memberDepth -= 1;\n      return o + (d ? '.' + p : '[' + p + ']');\n    },\n    CallExpression: n => {\n      if (n.callee.type !== 'Identifier') {\n        Object(vega_util__WEBPACK_IMPORTED_MODULE_0__[\"error\"])('Illegal callee type: ' + n.callee.type);\n      }\n\n      const callee = n.callee.name,\n            args = n.arguments,\n            fn = Object(vega_util__WEBPACK_IMPORTED_MODULE_0__[\"hasOwnProperty\"])(functions, callee) && functions[callee];\n      if (!fn) Object(vega_util__WEBPACK_IMPORTED_MODULE_0__[\"error\"])('Unrecognized function: ' + callee);\n      return Object(vega_util__WEBPACK_IMPORTED_MODULE_0__[\"isFunction\"])(fn) ? fn(args) : fn + '(' + args.map(visit).join(',') + ')';\n    },\n    ArrayExpression: n => '[' + n.elements.map(visit).join(',') + ']',\n    BinaryExpression: n => '(' + visit(n.left) + ' ' + n.operator + ' ' + visit(n.right) + ')',\n    UnaryExpression: n => '(' + n.operator + visit(n.argument) + ')',\n    ConditionalExpression: n => '(' + visit(n.test) + '?' + visit(n.consequent) + ':' + visit(n.alternate) + ')',\n    LogicalExpression: n => '(' + visit(n.left) + n.operator + visit(n.right) + ')',\n    ObjectExpression: n => '{' + n.properties.map(visit).join(',') + '}',\n    Property: n => {\n      memberDepth += 1;\n      const k = visit(n.key);\n      memberDepth -= 1;\n      return k + ':' + visit(n.value);\n    }\n  };\n\n  function codegen(ast) {\n    const result = {\n      code: visit(ast),\n      globals: Object.keys(globals),\n      fields: Object.keys(fields)\n    };\n    globals = {};\n    fields = {};\n    return result;\n  }\n\n  codegen.functions = functions;\n  codegen.constants = constants;\n  return codegen;\n}\n\n\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,[encoded data, 90244 characters]\n//# sourceURL=webpack-internal:///./node_modules/vega/node_modules/vega-expression/build/vega-expression.module.js\n");

/***/ }),

/***/ "./node_modules/vega/node_modules/vega-force/build/vega-force.module.js":
/*!******************************************************************************!*\
  !*** ./node_modules/vega/node_modules/vega-force/build/vega-force.module.js ***!
  \******************************************************************************/
/*! exports provided: force */
/***/ (function(module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"force\", function() { return Force; });\n/* harmony import */ var vega_dataflow__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! vega-dataflow */ \"./node_modules/vega/node_modules/vega-dataflow/build/vega-dataflow.module.js\");\n/* harmony import */ var vega_util__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! vega-util */ \"./node_modules/vega/node_modules/vega-util/build/vega-util.module.js\");\n/* harmony import */ var d3_force__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! d3-force */ \"./node_modules/vega/node_modules/d3-force/src/index.js\");\n\n\n\n\nconst ForceMap = {\n  center: d3_force__WEBPACK_IMPORTED_MODULE_2__[\"forceCenter\"],\n  collide: d3_force__WEBPACK_IMPORTED_MODULE_2__[\"forceCollide\"],\n  nbody: d3_force__WEBPACK_IMPORTED_MODULE_2__[\"forceManyBody\"],\n  link: d3_force__WEBPACK_IMPORTED_MODULE_2__[\"forceLink\"],\n  x: d3_force__WEBPACK_IMPORTED_MODULE_2__[\"forceX\"],\n  y: d3_force__WEBPACK_IMPORTED_MODULE_2__[\"forceY\"]\n};\nconst Forces = 'forces',\n      ForceParams = ['alpha', 'alphaMin', 'alphaTarget', 'velocityDecay', 'forces'],\n      ForceConfig = ['static', 'iterations'],\n      ForceOutput = ['x', 'y', 'vx', 'vy'];\n/**\n * Force simulation layout.\n * @constructor\n * @param {object} params - The parameters for this operator.\n * @param {Array<object>} params.forces - The forces to apply.\n */\n\nfunction Force(params) {\n  vega_dataflow__WEBPACK_IMPORTED_MODULE_0__[\"Transform\"].call(this, null, params);\n}\nForce.Definition = {\n  'type': 'Force',\n  'metadata': {\n    'modifies': true\n  },\n  'params': [{\n    'name': 'static',\n    'type': 'boolean',\n    'default': false\n  }, {\n    'name': 'restart',\n    'type': 'boolean',\n    'default': false\n  }, {\n    'name': 'iterations',\n    'type': 'number',\n    'default': 300\n  }, {\n    'name': 'alpha',\n    'type': 'number',\n    'default': 1\n  }, {\n    'name': 'alphaMin',\n    'type': 'number',\n    'default': 0.001\n  }, {\n    'name': 'alphaTarget',\n    'type': 'number',\n    'default': 0\n  }, {\n    'name': 'velocityDecay',\n    'type': 'number',\n    'default': 0.4\n  }, {\n    'name': 'forces',\n    'type': 'param',\n    'array': true,\n    'params': [{\n      'key': {\n        'force': 'center'\n      },\n      'params': [{\n        'name': 'x',\n        'type': 'number',\n        'default': 0\n      }, {\n        'name': 'y',\n        'type': 'number',\n        'default': 0\n      }]\n    }, {\n      'key': {\n        'force': 'collide'\n      },\n      'params': [{\n        'name': 'radius',\n        'type': 'number',\n        'expr': true\n      }, {\n        'name': 'strength',\n        'type': 'number',\n        'default': 0.7\n      }, {\n        'name': 'iterations',\n        'type': 'number',\n        'default': 1\n      }]\n    }, {\n      'key': {\n        'force': 'nbody'\n      },\n      'params': [{\n        'name': 'strength',\n        'type': 'number',\n        'default': -30\n      }, {\n        'name': 'theta',\n        'type': 'number',\n        'default': 0.9\n      }, {\n        'name': 'distanceMin',\n        'type': 'number',\n        'default': 1\n      }, {\n        'name': 'distanceMax',\n        'type': 'number'\n      }]\n    }, {\n      'key': {\n        'force': 'link'\n      },\n      'params': [{\n        'name': 'links',\n        'type': 'data'\n      }, {\n        'name': 'id',\n        'type': 'field'\n      }, {\n        'name': 'distance',\n        'type': 'number',\n        'default': 30,\n        'expr': true\n      }, {\n        'name': 'strength',\n        'type': 'number',\n        'expr': true\n      }, {\n        'name': 'iterations',\n        'type': 'number',\n        'default': 1\n      }]\n    }, {\n      'key': {\n        'force': 'x'\n      },\n      'params': [{\n        'name': 'strength',\n        'type': 'number',\n        'default': 0.1\n      }, {\n        'name': 'x',\n        'type': 'field'\n      }]\n    }, {\n      'key': {\n        'force': 'y'\n      },\n      'params': [{\n        'name': 'strength',\n        'type': 'number',\n        'default': 0.1\n      }, {\n        'name': 'y',\n        'type': 'field'\n      }]\n    }]\n  }, {\n    'name': 'as',\n    'type': 'string',\n    'array': true,\n    'modify': false,\n    'default': ForceOutput\n  }]\n};\nObject(vega_util__WEBPACK_IMPORTED_MODULE_1__[\"inherits\"])(Force, vega_dataflow__WEBPACK_IMPORTED_MODULE_0__[\"Transform\"], {\n  transform(_, pulse) {\n    var sim = this.value,\n        change = pulse.changed(pulse.ADD_REM),\n        params = _.modified(ForceParams),\n        iters = _.iterations || 300; // configure simulation\n\n\n    if (!sim) {\n      this.value = sim = simulation(pulse.source, _);\n      sim.on('tick', rerun(pulse.dataflow, this));\n\n      if (!_.static) {\n        change = true;\n        sim.tick(); // ensure we run on init\n      }\n\n      pulse.modifies('index');\n    } else {\n      if (change) {\n        pulse.modifies('index');\n        sim.nodes(pulse.source);\n      }\n\n      if (params || pulse.changed(pulse.MOD)) {\n        setup(sim, _, 0, pulse);\n      }\n    } // run simulation\n\n\n    if (params || change || _.modified(ForceConfig) || pulse.changed() && _.restart) {\n      sim.alpha(Math.max(sim.alpha(), _.alpha || 1)).alphaDecay(1 - Math.pow(sim.alphaMin(), 1 / iters));\n\n      if (_.static) {\n        for (sim.stop(); --iters >= 0;) sim.tick();\n      } else {\n        if (sim.stopped()) sim.restart();\n        if (!change) return pulse.StopPropagation; // defer to sim ticks\n      }\n    }\n\n    return this.finish(_, pulse);\n  },\n\n  finish(_, pulse) {\n    const dataflow = pulse.dataflow; // inspect dependencies, touch link source data\n\n    for (let args = this._argops, j = 0, m = args.length, arg; j < m; ++j) {\n      arg = args[j];\n\n      if (arg.name !== Forces || arg.op._argval.force !== 'link') {\n        continue;\n      }\n\n      for (var ops = arg.op._argops, i = 0, n = ops.length, op; i < n; ++i) {\n        if (ops[i].name === 'links' && (op = ops[i].op.source)) {\n          dataflow.pulse(op, dataflow.changeset().reflow());\n          break;\n        }\n      }\n    } // reflow all nodes\n\n\n    return pulse.reflow(_.modified()).modifies(ForceOutput);\n  }\n\n});\n\nfunction rerun(df, op) {\n  return () => df.touch(op).run();\n}\n\nfunction simulation(nodes, _) {\n  const sim = Object(d3_force__WEBPACK_IMPORTED_MODULE_2__[\"forceSimulation\"])(nodes),\n        stop = sim.stop,\n        restart = sim.restart;\n  let stopped = false;\n\n  sim.stopped = () => stopped;\n\n  sim.restart = () => (stopped = false, restart());\n\n  sim.stop = () => (stopped = true, stop());\n\n  return setup(sim, _, true).on('end', () => stopped = true);\n}\n\nfunction setup(sim, _, init, pulse) {\n  var f = Object(vega_util__WEBPACK_IMPORTED_MODULE_1__[\"array\"])(_.forces),\n      i,\n      n,\n      p,\n      name;\n\n  for (i = 0, n = ForceParams.length; i < n; ++i) {\n    p = ForceParams[i];\n    if (p !== Forces && _.modified(p)) sim[p](_[p]);\n  }\n\n  for (i = 0, n = f.length; i < n; ++i) {\n    name = Forces + i;\n    p = init || _.modified(Forces, i) ? getForce(f[i]) : pulse && modified(f[i], pulse) ? sim.force(name) : null;\n    if (p) sim.force(name, p);\n  }\n\n  for (n = sim.numForces || 0; i < n; ++i) {\n    sim.force(Forces + i, null); // remove\n  }\n\n  sim.numForces = f.length;\n  return sim;\n}\n\nfunction modified(f, pulse) {\n  var k, v;\n\n  for (k in f) {\n    if (Object(vega_util__WEBPACK_IMPORTED_MODULE_1__[\"isFunction\"])(v = f[k]) && pulse.modified(Object(vega_util__WEBPACK_IMPORTED_MODULE_1__[\"accessorFields\"])(v))) return 1;\n  }\n\n  return 0;\n}\n\nfunction getForce(_) {\n  var f, p;\n\n  if (!Object(vega_util__WEBPACK_IMPORTED_MODULE_1__[\"hasOwnProperty\"])(ForceMap, _.force)) {\n    Object(vega_util__WEBPACK_IMPORTED_MODULE_1__[\"error\"])('Unrecognized force: ' + _.force);\n  }\n\n  f = ForceMap[_.force]();\n\n  for (p in _) {\n    if (Object(vega_util__WEBPACK_IMPORTED_MODULE_1__[\"isFunction\"])(f[p])) setForceParam(f[p], _[p], _);\n  }\n\n  return f;\n}\n\nfunction setForceParam(f, v, _) {\n  f(Object(vega_util__WEBPACK_IMPORTED_MODULE_1__[\"isFunction\"])(v) ? d => v(d, _) : v);\n}\n\n\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,[encoded data, 11988 characters]\n//# sourceURL=webpack-internal:///./node_modules/vega/node_modules/vega-force/build/vega-force.module.js\n");

/***/ }),

/***/ "./node_modules/vega/node_modules/vega-geo/build/vega-geo.module.js":
/*!**************************************************************************!*\
  !*** ./node_modules/vega/node_modules/vega-geo/build/vega-geo.module.js ***!
  \**************************************************************************/
/*! exports provided: contour, geojson, geopath, geopoint, geoshape, graticule, heatmap, isocontour, kde2d, projection */
/***/ (function(module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"contour\", function() { return Contour; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"geojson\", function() { return GeoJSON; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"geopath\", function() { return GeoPath; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"geopoint\", function() { return GeoPoint; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"geoshape\", function() { return GeoShape; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"graticule\", function() { return Graticule; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"heatmap\", function() { return Heatmap; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"isocontour\", function() { return Isocontour; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"kde2d\", function() { return KDE2D; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"projection\", function() { return Projection; });\n/* harmony import */ var vega_dataflow__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! vega-dataflow */ \"./node_modules/vega/node_modules/vega-dataflow/build/vega-dataflow.module.js\");\n/* harmony import */ var vega_util__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! vega-util */ \"./node_modules/vega/node_modules/vega-util/build/vega-util.module.js\");\n/* harmony import */ var d3_array__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! d3-array */ \"./node_modules/d3-array/src/index.js\");\n/* harmony import */ var vega_statistics__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! vega-statistics */ \"./node_modules/vega-statistics/build/vega-statistics.module.js\");\n/* harmony import */ var vega_projection__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! vega-projection */ \"./node_modules/vega-projection/build/vega-projection.module.js\");\n/* harmony import */ var d3_geo__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! d3-geo */ \"./node_modules/vega/node_modules/d3-geo/src/index.js\");\n/* harmony import */ var d3_color__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! d3-color */ \"./node_modules/vega/node_modules/vega-geo/node_modules/d3-color/src/index.js\");\n/* harmony import */ var vega_canvas__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! vega-canvas */ \"./node_modules/vega-canvas/index.browser.js\");\n\n\n\n\n\n\n\n\n\nfunction noop() {}\n\nconst cases = [[], [[[1.0, 1.5], [0.5, 1.0]]], [[[1.5, 1.0], [1.0, 1.5]]], [[[1.5, 1.0], [0.5, 1.0]]], [[[1.0, 0.5], [1.5, 1.0]]], [[[1.0, 1.5], [0.5, 1.0]], [[1.0, 0.5], [1.5, 1.0]]], [[[1.0, 0.5], [1.0, 1.5]]], [[[1.0, 0.5], [0.5, 1.0]]], [[[0.5, 1.0], [1.0, 0.5]]], [[[1.0, 1.5], [1.0, 0.5]]], [[[0.5, 1.0], [1.0, 0.5]], [[1.5, 1.0], [1.0, 1.5]]], [[[1.5, 1.0], [1.0, 0.5]]], [[[0.5, 1.0], [1.5, 1.0]]], [[[1.0, 1.5], [1.5, 1.0]]], [[[0.5, 1.0], [1.0, 1.5]]], []]; // Implementation adapted from d3/d3-contour. Thanks!\n\nfunction contours () {\n  var dx = 1,\n      dy = 1,\n      smooth = smoothLinear;\n\n  function contours(values, tz) {\n    return tz.map(value => contour(values, value));\n  } // Accumulate, smooth contour rings, assign holes to exterior rings.\n  // Based on https://github.com/mbostock/shapefile/blob/v0.6.2/shp/polygon.js\n\n\n  function contour(values, value) {\n    var polygons = [],\n        holes = [];\n    isorings(values, value, ring => {\n      smooth(ring, values, value);\n      if (area(ring) > 0) polygons.push([ring]);else holes.push(ring);\n    });\n    holes.forEach(hole => {\n      for (var i = 0, n = polygons.length, polygon; i < n; ++i) {\n        if (contains((polygon = polygons[i])[0], hole) !== -1) {\n          polygon.push(hole);\n          return;\n        }\n      }\n    });\n    return {\n      type: 'MultiPolygon',\n      value: value,\n      coordinates: polygons\n    };\n  } // Marching squares with isolines stitched into rings.\n  // Based on https://github.com/topojson/topojson-client/blob/v3.0.0/src/stitch.js\n\n\n  function isorings(values, value, callback) {\n    var fragmentByStart = new Array(),\n        fragmentByEnd = new Array(),\n        x,\n        y,\n        t0,\n        t1,\n        t2,\n        t3; // Special case for the first row (y = -1, t2 = t3 = 0).\n\n    x = y = -1;\n    t1 = values[0] >= value;\n    cases[t1 << 1].forEach(stitch);\n\n    while (++x < dx - 1) {\n      t0 = t1, t1 = values[x + 1] >= value;\n      cases[t0 | t1 << 1].forEach(stitch);\n    }\n\n    cases[t1 << 0].forEach(stitch); // General case for the intermediate rows.\n\n    while (++y < dy - 1) {\n      x = -1;\n      t1 = values[y * dx + dx] >= value;\n      t2 = values[y * dx] >= value;\n      cases[t1 << 1 | t2 << 2].forEach(stitch);\n\n      while (++x < dx - 1) {\n        t0 = t1, t1 = values[y * dx + dx + x + 1] >= value;\n        t3 = t2, t2 = values[y * dx + x + 1] >= value;\n        cases[t0 | t1 << 1 | t2 << 2 | t3 << 3].forEach(stitch);\n      }\n\n      cases[t1 | t2 << 3].forEach(stitch);\n    } // Special case for the last row (y = dy - 1, t0 = t1 = 0).\n\n\n    x = -1;\n    t2 = values[y * dx] >= value;\n    cases[t2 << 2].forEach(stitch);\n\n    while (++x < dx - 1) {\n      t3 = t2, t2 = values[y * dx + x + 1] >= value;\n      cases[t2 << 2 | t3 << 3].forEach(stitch);\n    }\n\n    cases[t2 << 3].forEach(stitch);\n\n    function stitch(line) {\n      var start = [line[0][0] + x, line[0][1] + y],\n          end = [line[1][0] + x, line[1][1] + y],\n          startIndex = index(start),\n          endIndex = index(end),\n          f,\n          g;\n\n      if (f = fragmentByEnd[startIndex]) {\n        if (g = fragmentByStart[endIndex]) {\n          delete fragmentByEnd[f.end];\n          delete fragmentByStart[g.start];\n\n          if (f === g) {\n            f.ring.push(end);\n            callback(f.ring);\n          } else {\n            fragmentByStart[f.start] = fragmentByEnd[g.end] = {\n              start: f.start,\n              end: g.end,\n              ring: f.ring.concat(g.ring)\n            };\n          }\n        } else {\n          delete fragmentByEnd[f.end];\n          f.ring.push(end);\n          fragmentByEnd[f.end = endIndex] = f;\n        }\n      } else if (f = fragmentByStart[endIndex]) {\n        if (g = fragmentByEnd[startIndex]) {\n          delete fragmentByStart[f.start];\n          delete fragmentByEnd[g.end];\n\n          if (f === g) {\n            f.ring.push(end);\n            callback(f.ring);\n          } else {\n            fragmentByStart[g.start] = fragmentByEnd[f.end] = {\n              start: g.start,\n              end: f.end,\n              ring: g.ring.concat(f.ring)\n            };\n          }\n        } else {\n          delete fragmentByStart[f.start];\n          f.ring.unshift(start);\n          fragmentByStart[f.start = startIndex] = f;\n        }\n      } else {\n        fragmentByStart[startIndex] = fragmentByEnd[endIndex] = {\n          start: startIndex,\n          end: endIndex,\n          ring: [start, end]\n        };\n      }\n    }\n  }\n\n  function index(point) {\n    return point[0] * 2 + point[1] * (dx + 1) * 4;\n  }\n\n  function smoothLinear(ring, values, value) {\n    ring.forEach(point => {\n      var x = point[0],\n          y = point[1],\n          xt = x | 0,\n          yt = y | 0,\n          v0,\n          v1 = values[yt * dx + xt];\n\n      if (x > 0 && x < dx && xt === x) {\n        v0 = values[yt * dx + xt - 1];\n        point[0] = x + (value - v0) / (v1 - v0) - 0.5;\n      }\n\n      if (y > 0 && y < dy && yt === y) {\n        v0 = values[(yt - 1) * dx + xt];\n        point[1] = y + (value - v0) / (v1 - v0) - 0.5;\n      }\n    });\n  }\n\n  contours.contour = contour;\n\n  contours.size = function (_) {\n    if (!arguments.length) return [dx, dy];\n\n    var _0 = Math.floor(_[0]),\n        _1 = Math.floor(_[1]);\n\n    if (!(_0 >= 0 && _1 >= 0)) Object(vega_util__WEBPACK_IMPORTED_MODULE_1__[\"error\"])('invalid size');\n    return dx = _0, dy = _1, contours;\n  };\n\n  contours.smooth = function (_) {\n    return arguments.length ? (smooth = _ ? smoothLinear : noop, contours) : smooth === smoothLinear;\n  };\n\n  return contours;\n}\n\nfunction area(ring) {\n  var i = 0,\n      n = ring.length,\n      area = ring[n - 1][1] * ring[0][0] - ring[n - 1][0] * ring[0][1];\n\n  while (++i < n) area += ring[i - 1][1] * ring[i][0] - ring[i - 1][0] * ring[i][1];\n\n  return area;\n}\n\nfunction contains(ring, hole) {\n  var i = -1,\n      n = hole.length,\n      c;\n\n  while (++i < n) if (c = ringContains(ring, hole[i])) return c;\n\n  return 0;\n}\n\nfunction ringContains(ring, point) {\n  var x = point[0],\n      y = point[1],\n      contains = -1;\n\n  for (var i = 0, n = ring.length, j = n - 1; i < n; j = i++) {\n    var pi = ring[i],\n        xi = pi[0],\n        yi = pi[1],\n        pj = ring[j],\n        xj = pj[0],\n        yj = pj[1];\n    if (segmentContains(pi, pj, point)) return 0;\n    if (yi > y !== yj > y && x < (xj - xi) * (y - yi) / (yj - yi) + xi) contains = -contains;\n  }\n\n  return contains;\n}\n\nfunction segmentContains(a, b, c) {\n  var i;\n  return collinear(a, b, c) && within(a[i = +(a[0] === b[0])], c[i], b[i]);\n}\n\nfunction collinear(a, b, c) {\n  return (b[0] - a[0]) * (c[1] - a[1]) === (c[0] - a[0]) * (b[1] - a[1]);\n}\n\nfunction within(p, q, r) {\n  return p <= q && q <= r || r <= q && q <= p;\n}\n\nfunction quantize (k, nice, zero) {\n  return function (values) {\n    var ex = Object(vega_util__WEBPACK_IMPORTED_MODULE_1__[\"extent\"])(values),\n        start = zero ? Math.min(ex[0], 0) : ex[0],\n        stop = ex[1],\n        span = stop - start,\n        step = nice ? Object(d3_array__WEBPACK_IMPORTED_MODULE_2__[\"tickStep\"])(start, stop, k) : span / (k + 1);\n    return Object(d3_array__WEBPACK_IMPORTED_MODULE_2__[\"range\"])(start + step, stop, step);\n  };\n}\n\n/**\n * Generate isocontours (level sets) based on input raster grid data.\n * @constructor\n * @param {object} params - The parameters for this operator.\n * @param {function(object): *} [params.field] - The field with raster grid\n *   data. If unspecified, the tuple itself is interpreted as a raster grid.\n * @param {Array<number>} [params.thresholds] - Contour threshold array. If\n *   specified, the levels, nice, resolve, and zero parameters are ignored.\n * @param {number} [params.levels] - The desired number of contour levels.\n * @param {boolean} [params.nice] - Boolean flag indicating if the contour\n *   threshold values should be automatically aligned to \"nice\"\n *   human-friendly values. Setting this flag may cause the number of\n *   thresholds to deviate from the specified levels.\n * @param {string} [params.resolve] - The method for resolving thresholds\n *   across multiple input grids. If 'independent' (the default), threshold\n *   calculation will be performed separately for each grid. If 'shared', a\n *   single set of threshold values will be used for all input grids.\n * @param {boolean} [params.zero] - Boolean flag indicating if the contour\n *   threshold values should include zero.\n * @param {boolean} [params.smooth] - Boolean flag indicating if the contour\n *   polygons should be smoothed using linear interpolation. The default is\n *   true. The parameter is ignored when using density estimation.\n * @param {boolean} [params.scale] - Optional numerical value by which to\n *   scale the output isocontour coordinates. This parameter can be useful\n *   to scale the contours to match a desired output resolution.\n * @param {string} [params.as='contour'] - The output field in which to store\n *   the generated isocontour data (default 'contour').\n */\n\nfunction Isocontour(params) {\n  vega_dataflow__WEBPACK_IMPORTED_MODULE_0__[\"Transform\"].call(this, null, params);\n}\nIsocontour.Definition = {\n  'type': 'Isocontour',\n  'metadata': {\n    'generates': true\n  },\n  'params': [{\n    'name': 'field',\n    'type': 'field'\n  }, {\n    'name': 'thresholds',\n    'type': 'number',\n    'array': true\n  }, {\n    'name': 'levels',\n    'type': 'number'\n  }, {\n    'name': 'nice',\n    'type': 'boolean',\n    'default': false\n  }, {\n    'name': 'resolve',\n    'type': 'enum',\n    'values': ['shared', 'independent'],\n    'default': 'independent'\n  }, {\n    'name': 'zero',\n    'type': 'boolean',\n    'default': true\n  }, {\n    'name': 'smooth',\n    'type': 'boolean',\n    'default': true\n  }, {\n    'name': 'scale',\n    'type': 'number',\n    'expr': true\n  }, {\n    'name': 'translate',\n    'type': 'number',\n    'array': true,\n    'expr': true\n  }, {\n    'name': 'as',\n    'type': 'string',\n    'null': true,\n    'default': 'contour'\n  }]\n};\nObject(vega_util__WEBPACK_IMPORTED_MODULE_1__[\"inherits\"])(Isocontour, vega_dataflow__WEBPACK_IMPORTED_MODULE_0__[\"Transform\"], {\n  transform(_, pulse) {\n    if (this.value && !pulse.changed() && !_.modified()) {\n      return pulse.StopPropagation;\n    }\n\n    var out = pulse.fork(pulse.NO_SOURCE | pulse.NO_FIELDS),\n        source = pulse.materialize(pulse.SOURCE).source,\n        field = _.field || vega_util__WEBPACK_IMPORTED_MODULE_1__[\"identity\"],\n        contour = contours().smooth(_.smooth !== false),\n        tz = _.thresholds || levels(source, field, _),\n        as = _.as === null ? null : _.as || 'contour',\n        values = [];\n    source.forEach(t => {\n      const grid = field(t); // generate contour paths in GeoJSON format\n\n      const paths = contour.size([grid.width, grid.height])(grid.values, Object(vega_util__WEBPACK_IMPORTED_MODULE_1__[\"isArray\"])(tz) ? tz : tz(grid.values)); // adjust contour path coordinates as needed\n\n      transformPaths(paths, grid, t, _); // ingest; copy source data properties to output\n\n      paths.forEach(p => {\n        values.push(Object(vega_dataflow__WEBPACK_IMPORTED_MODULE_0__[\"rederive\"])(t, Object(vega_dataflow__WEBPACK_IMPORTED_MODULE_0__[\"ingest\"])(as != null ? {\n          [as]: p\n        } : p)));\n      });\n    });\n    if (this.value) out.rem = this.value;\n    this.value = out.source = out.add = values;\n    return out;\n  }\n\n});\n\nfunction levels(values, f, _) {\n  const q = quantize(_.levels || 10, _.nice, _.zero !== false);\n  return _.resolve !== 'shared' ? q : q(values.map(t => Object(d3_array__WEBPACK_IMPORTED_MODULE_2__[\"max\"])(f(t).values)));\n}\n\nfunction transformPaths(paths, grid, datum, _) {\n  let s = _.scale || grid.scale,\n      t = _.translate || grid.translate;\n  if (Object(vega_util__WEBPACK_IMPORTED_MODULE_1__[\"isFunction\"])(s)) s = s(datum, _);\n  if (Object(vega_util__WEBPACK_IMPORTED_MODULE_1__[\"isFunction\"])(t)) t = t(datum, _);\n  if ((s === 1 || s == null) && !t) return;\n  const sx = (Object(vega_util__WEBPACK_IMPORTED_MODULE_1__[\"isNumber\"])(s) ? s : s[0]) || 1,\n        sy = (Object(vega_util__WEBPACK_IMPORTED_MODULE_1__[\"isNumber\"])(s) ? s : s[1]) || 1,\n        tx = t && t[0] || 0,\n        ty = t && t[1] || 0;\n  paths.forEach(transform(grid, sx, sy, tx, ty));\n}\n\nfunction transform(grid, sx, sy, tx, ty) {\n  const x1 = grid.x1 || 0,\n        y1 = grid.y1 || 0,\n        flip = sx * sy < 0;\n\n  function transformPolygon(coordinates) {\n    coordinates.forEach(transformRing);\n  }\n\n  function transformRing(coordinates) {\n    if (flip) coordinates.reverse(); // maintain winding order\n\n    coordinates.forEach(transformPoint);\n  }\n\n  function transformPoint(coordinates) {\n    coordinates[0] = (coordinates[0] - x1) * sx + tx;\n    coordinates[1] = (coordinates[1] - y1) * sy + ty;\n  }\n\n  return function (geometry) {\n    geometry.coordinates.forEach(transformPolygon);\n    return geometry;\n  };\n}\n\nfunction radius(bw, data, f) {\n  const v = bw >= 0 ? bw : Object(vega_statistics__WEBPACK_IMPORTED_MODULE_3__[\"bandwidthNRD\"])(data, f);\n  return Math.round((Math.sqrt(4 * v * v + 1) - 1) / 2);\n}\n\nfunction number(_) {\n  return Object(vega_util__WEBPACK_IMPORTED_MODULE_1__[\"isFunction\"])(_) ? _ : Object(vega_util__WEBPACK_IMPORTED_MODULE_1__[\"constant\"])(+_);\n} // Implementation adapted from d3/d3-contour. Thanks!\n\n\nfunction density2D () {\n  var x = d => d[0],\n      y = d => d[1],\n      weight = vega_util__WEBPACK_IMPORTED_MODULE_1__[\"one\"],\n      bandwidth = [-1, -1],\n      dx = 960,\n      dy = 500,\n      k = 2; // log2(cellSize)\n\n\n  function density(data, counts) {\n    const rx = radius(bandwidth[0], data, x) >> k,\n          // blur x-radius\n    ry = radius(bandwidth[1], data, y) >> k,\n          // blur y-radius\n    ox = rx ? rx + 2 : 0,\n          // x-offset padding for blur\n    oy = ry ? ry + 2 : 0,\n          // y-offset padding for blur\n    n = 2 * ox + (dx >> k),\n          // grid width\n    m = 2 * oy + (dy >> k),\n          // grid height\n    values0 = new Float32Array(n * m),\n          values1 = new Float32Array(n * m);\n    let values = values0;\n    data.forEach(d => {\n      const xi = ox + (+x(d) >> k),\n            yi = oy + (+y(d) >> k);\n\n      if (xi >= 0 && xi < n && yi >= 0 && yi < m) {\n        values0[xi + yi * n] += +weight(d);\n      }\n    });\n\n    if (rx > 0 && ry > 0) {\n      blurX(n, m, values0, values1, rx);\n      blurY(n, m, values1, values0, ry);\n      blurX(n, m, values0, values1, rx);\n      blurY(n, m, values1, values0, ry);\n      blurX(n, m, values0, values1, rx);\n      blurY(n, m, values1, values0, ry);\n    } else if (rx > 0) {\n      blurX(n, m, values0, values1, rx);\n      blurX(n, m, values1, values0, rx);\n      blurX(n, m, values0, values1, rx);\n      values = values1;\n    } else if (ry > 0) {\n      blurY(n, m, values0, values1, ry);\n      blurY(n, m, values1, values0, ry);\n      blurY(n, m, values0, values1, ry);\n      values = values1;\n    } // scale density estimates\n    // density in points per square pixel or probability density\n\n\n    const s = counts ? Math.pow(2, -2 * k) : 1 / Object(d3_array__WEBPACK_IMPORTED_MODULE_2__[\"sum\"])(values);\n\n    for (let i = 0, sz = n * m; i < sz; ++i) values[i] *= s;\n\n    return {\n      values: values,\n      scale: 1 << k,\n      width: n,\n      height: m,\n      x1: ox,\n      y1: oy,\n      x2: ox + (dx >> k),\n      y2: oy + (dy >> k)\n    };\n  }\n\n  density.x = function (_) {\n    return arguments.length ? (x = number(_), density) : x;\n  };\n\n  density.y = function (_) {\n    return arguments.length ? (y = number(_), density) : y;\n  };\n\n  density.weight = function (_) {\n    return arguments.length ? (weight = number(_), density) : weight;\n  };\n\n  density.size = function (_) {\n    if (!arguments.length) return [dx, dy];\n\n    var _0 = +_[0],\n        _1 = +_[1];\n\n    if (!(_0 >= 0 && _1 >= 0)) Object(vega_util__WEBPACK_IMPORTED_MODULE_1__[\"error\"])('invalid size');\n    return dx = _0, dy = _1, density;\n  };\n\n  density.cellSize = function (_) {\n    if (!arguments.length) return 1 << k;\n    if (!((_ = +_) >= 1)) Object(vega_util__WEBPACK_IMPORTED_MODULE_1__[\"error\"])('invalid cell size');\n    k = Math.floor(Math.log(_) / Math.LN2);\n    return density;\n  };\n\n  density.bandwidth = function (_) {\n    if (!arguments.length) return bandwidth;\n    _ = Object(vega_util__WEBPACK_IMPORTED_MODULE_1__[\"array\"])(_);\n    if (_.length === 1) _ = [+_[0], +_[0]];\n    if (_.length !== 2) Object(vega_util__WEBPACK_IMPORTED_MODULE_1__[\"error\"])('invalid bandwidth');\n    return bandwidth = _, density;\n  };\n\n  return density;\n}\n\nfunction blurX(n, m, source, target, r) {\n  const w = (r << 1) + 1;\n\n  for (let j = 0; j < m; ++j) {\n    for (let i = 0, sr = 0; i < n + r; ++i) {\n      if (i < n) {\n        sr += source[i + j * n];\n      }\n\n      if (i >= r) {\n        if (i >= w) {\n          sr -= source[i - w + j * n];\n        }\n\n        target[i - r + j * n] = sr / Math.min(i + 1, n - 1 + w - i, w);\n      }\n    }\n  }\n}\n\nfunction blurY(n, m, source, target, r) {\n  const w = (r << 1) + 1;\n\n  for (let i = 0; i < n; ++i) {\n    for (let j = 0, sr = 0; j < m + r; ++j) {\n      if (j < m) {\n        sr += source[i + j * n];\n      }\n\n      if (j >= r) {\n        if (j >= w) {\n          sr -= source[i + (j - w) * n];\n        }\n\n        target[i + (j - r) * n] = sr / Math.min(j + 1, m - 1 + w - j, w);\n      }\n    }\n  }\n}\n\n/**\n * Perform 2D kernel-density estimation of point data.\n * @constructor\n * @param {object} params - The parameters for this operator.\n * @param {Array<number>} params.size - The [width, height] extent (in\n *   units of input pixels) over which to perform density estimation.\n * @param {function(object): number} params.x - The x-coordinate accessor.\n * @param {function(object): number} params.y - The y-coordinate accessor.\n * @param {function(object): number} [params.weight] - The weight accessor.\n * @param {Array<function(object): *>} [params.groupby] - An array of accessors\n *   to groupby.\n * @param {number} [params.cellSize] - Contour density calculation cell size.\n *   This parameter determines the level of spatial approximation. For example,\n *   the default value of 4 maps to 2x reductions in both x- and y- dimensions.\n *   A value of 1 will result in an output raster grid whose dimensions exactly\n *   matches the size parameter.\n * @param {Array<number>} [params.bandwidth] - The KDE kernel bandwidths,\n *   in pixels. The input can be a two-element array specifying separate\n *   x and y bandwidths, or a single-element array specifying both. If the\n *   bandwidth is unspecified or less than zero, the bandwidth will be\n *   automatically determined.\n * @param {boolean} [params.counts=false] - A boolean flag indicating if the\n *   output values should be probability estimates (false, default) or\n *   smoothed counts (true).\n * @param {string} [params.as='grid'] - The output field in which to store\n *   the generated raster grid (default 'grid').\n */\n\nfunction KDE2D(params) {\n  vega_dataflow__WEBPACK_IMPORTED_MODULE_0__[\"Transform\"].call(this, null, params);\n}\nKDE2D.Definition = {\n  'type': 'KDE2D',\n  'metadata': {\n    'generates': true\n  },\n  'params': [{\n    'name': 'size',\n    'type': 'number',\n    'array': true,\n    'length': 2,\n    'required': true\n  }, {\n    'name': 'x',\n    'type': 'field',\n    'required': true\n  }, {\n    'name': 'y',\n    'type': 'field',\n    'required': true\n  }, {\n    'name': 'weight',\n    'type': 'field'\n  }, {\n    'name': 'groupby',\n    'type': 'field',\n    'array': true\n  }, {\n    'name': 'cellSize',\n    'type': 'number'\n  }, {\n    'name': 'bandwidth',\n    'type': 'number',\n    'array': true,\n    'length': 2\n  }, {\n    'name': 'counts',\n    'type': 'boolean',\n    'default': false\n  }, {\n    'name': 'as',\n    'type': 'string',\n    'default': 'grid'\n  }]\n};\nconst PARAMS = ['x', 'y', 'weight', 'size', 'cellSize', 'bandwidth'];\nfunction params(obj, _) {\n  PARAMS.forEach(param => _[param] != null ? obj[param](_[param]) : 0);\n  return obj;\n}\nObject(vega_util__WEBPACK_IMPORTED_MODULE_1__[\"inherits\"])(KDE2D, vega_dataflow__WEBPACK_IMPORTED_MODULE_0__[\"Transform\"], {\n  transform(_, pulse) {\n    if (this.value && !pulse.changed() && !_.modified()) return pulse.StopPropagation;\n    var out = pulse.fork(pulse.NO_SOURCE | pulse.NO_FIELDS),\n        source = pulse.materialize(pulse.SOURCE).source,\n        groups = partition(source, _.groupby),\n        names = (_.groupby || []).map(vega_util__WEBPACK_IMPORTED_MODULE_1__[\"accessorName\"]),\n        kde = params(density2D(), _),\n        as = _.as || 'grid',\n        values = [];\n\n    function set(t, vals) {\n      for (let i = 0; i < names.length; ++i) t[names[i]] = vals[i];\n\n      return t;\n    } // generate density raster grids\n\n\n    values = groups.map(g => Object(vega_dataflow__WEBPACK_IMPORTED_MODULE_0__[\"ingest\"])(set({\n      [as]: kde(g, _.counts)\n    }, g.dims)));\n    if (this.value) out.rem = this.value;\n    this.value = out.source = out.add = values;\n    return out;\n  }\n\n});\nfunction partition(data, groupby) {\n  var groups = [],\n      get = f => f(t),\n      map,\n      i,\n      n,\n      t,\n      k,\n      g; // partition data points into groups\n\n\n  if (groupby == null) {\n    groups.push(data);\n  } else {\n    for (map = {}, i = 0, n = data.length; i < n; ++i) {\n      t = data[i];\n      k = groupby.map(get);\n      g = map[k];\n\n      if (!g) {\n        map[k] = g = [];\n        g.dims = k;\n        groups.push(g);\n      }\n\n      g.push(t);\n    }\n  }\n\n  return groups;\n}\n\n/**\n * Generate contours based on kernel-density estimation of point data.\n * @constructor\n * @param {object} params - The parameters for this operator.\n * @param {Array<number>} params.size - The dimensions [width, height] over which to compute contours.\n *  If the values parameter is provided, this must be the dimensions of the input data.\n *  If density estimation is performed, this is the output view dimensions in pixels.\n * @param {Array<number>} [params.values] - An array of numeric values representing an\n *  width x height grid of values over which to compute contours. If unspecified, this\n *  transform will instead attempt to compute contours for the kernel density estimate\n *  using values drawn from data tuples in the input pulse.\n * @param {function(object): number} [params.x] - The pixel x-coordinate accessor for density estimation.\n * @param {function(object): number} [params.y] - The pixel y-coordinate accessor for density estimation.\n * @param {function(object): number} [params.weight] - The data point weight accessor for density estimation.\n * @param {number} [params.cellSize] - Contour density calculation cell size.\n * @param {number} [params.bandwidth] - Kernel density estimation bandwidth.\n * @param {Array<number>} [params.thresholds] - Contour threshold array. If\n *   this parameter is set, the count and nice parameters will be ignored.\n * @param {number} [params.count] - The desired number of contours.\n * @param {boolean} [params.nice] - Boolean flag indicating if the contour\n *   threshold values should be automatically aligned to \"nice\"\n *   human-friendly values. Setting this flag may cause the number of\n *   thresholds to deviate from the specified count.\n * @param {boolean} [params.smooth] - Boolean flag indicating if the contour\n *   polygons should be smoothed using linear interpolation. The default is\n *   true. The parameter is ignored when using density estimation.\n */\n\nfunction Contour(params) {\n  vega_dataflow__WEBPACK_IMPORTED_MODULE_0__[\"Transform\"].call(this, null, params);\n}\nContour.Definition = {\n  'type': 'Contour',\n  'metadata': {\n    'generates': true\n  },\n  'params': [{\n    'name': 'size',\n    'type': 'number',\n    'array': true,\n    'length': 2,\n    'required': true\n  }, {\n    'name': 'values',\n    'type': 'number',\n    'array': true\n  }, {\n    'name': 'x',\n    'type': 'field'\n  }, {\n    'name': 'y',\n    'type': 'field'\n  }, {\n    'name': 'weight',\n    'type': 'field'\n  }, {\n    'name': 'cellSize',\n    'type': 'number'\n  }, {\n    'name': 'bandwidth',\n    'type': 'number'\n  }, {\n    'name': 'count',\n    'type': 'number'\n  }, {\n    'name': 'nice',\n    'type': 'boolean',\n    'default': false\n  }, {\n    'name': 'thresholds',\n    'type': 'number',\n    'array': true\n  }, {\n    'name': 'smooth',\n    'type': 'boolean',\n    'default': true\n  }]\n};\nObject(vega_util__WEBPACK_IMPORTED_MODULE_1__[\"inherits\"])(Contour, vega_dataflow__WEBPACK_IMPORTED_MODULE_0__[\"Transform\"], {\n  transform(_, pulse) {\n    if (this.value && !pulse.changed() && !_.modified()) {\n      return pulse.StopPropagation;\n    }\n\n    var out = pulse.fork(pulse.NO_SOURCE | pulse.NO_FIELDS),\n        contour = contours().smooth(_.smooth !== false),\n        values = _.values,\n        thresh = _.thresholds || quantize(_.count || 10, _.nice, !!values),\n        size = _.size,\n        grid,\n        post;\n\n    if (!values) {\n      values = pulse.materialize(pulse.SOURCE).source;\n      grid = params(density2D(), _)(values, true);\n      post = transform(grid, grid.scale || 1, grid.scale || 1, 0, 0);\n      size = [grid.width, grid.height];\n      values = grid.values;\n    }\n\n    thresh = Object(vega_util__WEBPACK_IMPORTED_MODULE_1__[\"isArray\"])(thresh) ? thresh : thresh(values);\n    values = contour.size(size)(values, thresh);\n    if (post) values.forEach(post);\n    if (this.value) out.rem = this.value;\n    this.value = out.source = out.add = (values || []).map(vega_dataflow__WEBPACK_IMPORTED_MODULE_0__[\"ingest\"]);\n    return out;\n  }\n\n});\n\nconst Feature = 'Feature';\nconst FeatureCollection = 'FeatureCollection';\nconst MultiPoint = 'MultiPoint';\n\n/**\n * Consolidate an array of [longitude, latitude] points or GeoJSON features\n * into a combined GeoJSON object. This transform is particularly useful for\n * combining geo data for a Projection's fit argument. The resulting GeoJSON\n * data is available as this transform's value. Input pulses are unchanged.\n * @constructor\n * @param {object} params - The parameters for this operator.\n * @param {Array<function(object): *>} [params.fields] - A two-element array\n *   of field accessors for the longitude and latitude values.\n * @param {function(object): *} params.geojson - A field accessor for\n *   retrieving GeoJSON feature data.\n */\n\nfunction GeoJSON(params) {\n  vega_dataflow__WEBPACK_IMPORTED_MODULE_0__[\"Transform\"].call(this, null, params);\n}\nGeoJSON.Definition = {\n  'type': 'GeoJSON',\n  'metadata': {},\n  'params': [{\n    'name': 'fields',\n    'type': 'field',\n    'array': true,\n    'length': 2\n  }, {\n    'name': 'geojson',\n    'type': 'field'\n  }]\n};\nObject(vega_util__WEBPACK_IMPORTED_MODULE_1__[\"inherits\"])(GeoJSON, vega_dataflow__WEBPACK_IMPORTED_MODULE_0__[\"Transform\"], {\n  transform(_, pulse) {\n    var features = this._features,\n        points = this._points,\n        fields = _.fields,\n        lon = fields && fields[0],\n        lat = fields && fields[1],\n        geojson = _.geojson || !fields && vega_util__WEBPACK_IMPORTED_MODULE_1__[\"identity\"],\n        flag = pulse.ADD,\n        mod;\n    mod = _.modified() || pulse.changed(pulse.REM) || pulse.modified(Object(vega_util__WEBPACK_IMPORTED_MODULE_1__[\"accessorFields\"])(geojson)) || lon && pulse.modified(Object(vega_util__WEBPACK_IMPORTED_MODULE_1__[\"accessorFields\"])(lon)) || lat && pulse.modified(Object(vega_util__WEBPACK_IMPORTED_MODULE_1__[\"accessorFields\"])(lat));\n\n    if (!this.value || mod) {\n      flag = pulse.SOURCE;\n      this._features = features = [];\n      this._points = points = [];\n    }\n\n    if (geojson) {\n      pulse.visit(flag, t => features.push(geojson(t)));\n    }\n\n    if (lon && lat) {\n      pulse.visit(flag, t => {\n        var x = lon(t),\n            y = lat(t);\n\n        if (x != null && y != null && (x = +x) === x && (y = +y) === y) {\n          points.push([x, y]);\n        }\n      });\n      features = features.concat({\n        type: Feature,\n        geometry: {\n          type: MultiPoint,\n          coordinates: points\n        }\n      });\n    }\n\n    this.value = {\n      type: FeatureCollection,\n      features: features\n    };\n  }\n\n});\n\n/**\n * Map GeoJSON data to an SVG path string.\n * @constructor\n * @param {object} params - The parameters for this operator.\n * @param {function(number, number): *} params.projection - The cartographic\n *   projection to apply.\n * @param {function(object): *} [params.field] - The field with GeoJSON data,\n *   or null if the tuple itself is a GeoJSON feature.\n * @param {string} [params.as='path'] - The output field in which to store\n *   the generated path data (default 'path').\n */\n\nfunction GeoPath(params) {\n  vega_dataflow__WEBPACK_IMPORTED_MODULE_0__[\"Transform\"].call(this, null, params);\n}\nGeoPath.Definition = {\n  'type': 'GeoPath',\n  'metadata': {\n    'modifies': true\n  },\n  'params': [{\n    'name': 'projection',\n    'type': 'projection'\n  }, {\n    'name': 'field',\n    'type': 'field'\n  }, {\n    'name': 'pointRadius',\n    'type': 'number',\n    'expr': true\n  }, {\n    'name': 'as',\n    'type': 'string',\n    'default': 'path'\n  }]\n};\nObject(vega_util__WEBPACK_IMPORTED_MODULE_1__[\"inherits\"])(GeoPath, vega_dataflow__WEBPACK_IMPORTED_MODULE_0__[\"Transform\"], {\n  transform(_, pulse) {\n    var out = pulse.fork(pulse.ALL),\n        path = this.value,\n        field = _.field || vega_util__WEBPACK_IMPORTED_MODULE_1__[\"identity\"],\n        as = _.as || 'path',\n        flag = out.SOURCE;\n\n    if (!path || _.modified()) {\n      // parameters updated, reset and reflow\n      this.value = path = Object(vega_projection__WEBPACK_IMPORTED_MODULE_4__[\"getProjectionPath\"])(_.projection);\n      out.materialize().reflow();\n    } else {\n      flag = field === vega_util__WEBPACK_IMPORTED_MODULE_1__[\"identity\"] || pulse.modified(field.fields) ? out.ADD_MOD : out.ADD;\n    }\n\n    const prev = initPath(path, _.pointRadius);\n    out.visit(flag, t => t[as] = path(field(t)));\n    path.pointRadius(prev);\n    return out.modifies(as);\n  }\n\n});\n\nfunction initPath(path, pointRadius) {\n  const prev = path.pointRadius();\n  path.context(null);\n\n  if (pointRadius != null) {\n    path.pointRadius(pointRadius);\n  }\n\n  return prev;\n}\n\n/**\n * Geo-code a longitude/latitude point to an x/y coordinate.\n * @constructor\n * @param {object} params - The parameters for this operator.\n * @param {function(number, number): *} params.projection - The cartographic\n *   projection to apply.\n * @param {Array<function(object): *>} params.fields - A two-element array of\n *   field accessors for the longitude and latitude values.\n * @param {Array<string>} [params.as] - A two-element array of field names\n *   under which to store the result. Defaults to ['x','y'].\n */\n\nfunction GeoPoint(params) {\n  vega_dataflow__WEBPACK_IMPORTED_MODULE_0__[\"Transform\"].call(this, null, params);\n}\nGeoPoint.Definition = {\n  'type': 'GeoPoint',\n  'metadata': {\n    'modifies': true\n  },\n  'params': [{\n    'name': 'projection',\n    'type': 'projection',\n    'required': true\n  }, {\n    'name': 'fields',\n    'type': 'field',\n    'array': true,\n    'required': true,\n    'length': 2\n  }, {\n    'name': 'as',\n    'type': 'string',\n    'array': true,\n    'length': 2,\n    'default': ['x', 'y']\n  }]\n};\nObject(vega_util__WEBPACK_IMPORTED_MODULE_1__[\"inherits\"])(GeoPoint, vega_dataflow__WEBPACK_IMPORTED_MODULE_0__[\"Transform\"], {\n  transform(_, pulse) {\n    var proj = _.projection,\n        lon = _.fields[0],\n        lat = _.fields[1],\n        as = _.as || ['x', 'y'],\n        x = as[0],\n        y = as[1],\n        mod;\n\n    function set(t) {\n      const xy = proj([lon(t), lat(t)]);\n\n      if (xy) {\n        t[x] = xy[0];\n        t[y] = xy[1];\n      } else {\n        t[x] = undefined;\n        t[y] = undefined;\n      }\n    }\n\n    if (_.modified()) {\n      // parameters updated, reflow\n      pulse = pulse.materialize().reflow(true).visit(pulse.SOURCE, set);\n    } else {\n      mod = pulse.modified(lon.fields) || pulse.modified(lat.fields);\n      pulse.visit(mod ? pulse.ADD_MOD : pulse.ADD, set);\n    }\n\n    return pulse.modifies(as);\n  }\n\n});\n\n/**\n * Annotate items with a geopath shape generator.\n * @constructor\n * @param {object} params - The parameters for this operator.\n * @param {function(number, number): *} params.projection - The cartographic\n *   projection to apply.\n * @param {function(object): *} [params.field] - The field with GeoJSON data,\n *   or null if the tuple itself is a GeoJSON feature.\n * @param {string} [params.as='shape'] - The output field in which to store\n *   the generated path data (default 'shape').\n */\n\nfunction GeoShape(params) {\n  vega_dataflow__WEBPACK_IMPORTED_MODULE_0__[\"Transform\"].call(this, null, params);\n}\nGeoShape.Definition = {\n  'type': 'GeoShape',\n  'metadata': {\n    'modifies': true,\n    'nomod': true\n  },\n  'params': [{\n    'name': 'projection',\n    'type': 'projection'\n  }, {\n    'name': 'field',\n    'type': 'field',\n    'default': 'datum'\n  }, {\n    'name': 'pointRadius',\n    'type': 'number',\n    'expr': true\n  }, {\n    'name': 'as',\n    'type': 'string',\n    'default': 'shape'\n  }]\n};\nObject(vega_util__WEBPACK_IMPORTED_MODULE_1__[\"inherits\"])(GeoShape, vega_dataflow__WEBPACK_IMPORTED_MODULE_0__[\"Transform\"], {\n  transform(_, pulse) {\n    var out = pulse.fork(pulse.ALL),\n        shape = this.value,\n        as = _.as || 'shape',\n        flag = out.ADD;\n\n    if (!shape || _.modified()) {\n      // parameters updated, reset and reflow\n      this.value = shape = shapeGenerator(Object(vega_projection__WEBPACK_IMPORTED_MODULE_4__[\"getProjectionPath\"])(_.projection), _.field || Object(vega_util__WEBPACK_IMPORTED_MODULE_1__[\"field\"])('datum'), _.pointRadius);\n      out.materialize().reflow();\n      flag = out.SOURCE;\n    }\n\n    out.visit(flag, t => t[as] = shape);\n    return out.modifies(as);\n  }\n\n});\n\nfunction shapeGenerator(path, field, pointRadius) {\n  const shape = pointRadius == null ? _ => path(field(_)) : _ => {\n    var prev = path.pointRadius(),\n        value = path.pointRadius(pointRadius)(field(_));\n    path.pointRadius(prev);\n    return value;\n  };\n\n  shape.context = _ => {\n    path.context(_);\n    return shape;\n  };\n\n  return shape;\n}\n\n/**\n * GeoJSON feature generator for creating graticules.\n * @constructor\n */\n\nfunction Graticule(params) {\n  vega_dataflow__WEBPACK_IMPORTED_MODULE_0__[\"Transform\"].call(this, [], params);\n  this.generator = Object(d3_geo__WEBPACK_IMPORTED_MODULE_5__[\"geoGraticule\"])();\n}\nGraticule.Definition = {\n  'type': 'Graticule',\n  'metadata': {\n    'changes': true,\n    'generates': true\n  },\n  'params': [{\n    'name': 'extent',\n    'type': 'array',\n    'array': true,\n    'length': 2,\n    'content': {\n      'type': 'number',\n      'array': true,\n      'length': 2\n    }\n  }, {\n    'name': 'extentMajor',\n    'type': 'array',\n    'array': true,\n    'length': 2,\n    'content': {\n      'type': 'number',\n      'array': true,\n      'length': 2\n    }\n  }, {\n    'name': 'extentMinor',\n    'type': 'array',\n    'array': true,\n    'length': 2,\n    'content': {\n      'type': 'number',\n      'array': true,\n      'length': 2\n    }\n  }, {\n    'name': 'step',\n    'type': 'number',\n    'array': true,\n    'length': 2\n  }, {\n    'name': 'stepMajor',\n    'type': 'number',\n    'array': true,\n    'length': 2,\n    'default': [90, 360]\n  }, {\n    'name': 'stepMinor',\n    'type': 'number',\n    'array': true,\n    'length': 2,\n    'default': [10, 10]\n  }, {\n    'name': 'precision',\n    'type': 'number',\n    'default': 2.5\n  }]\n};\nObject(vega_util__WEBPACK_IMPORTED_MODULE_1__[\"inherits\"])(Graticule, vega_dataflow__WEBPACK_IMPORTED_MODULE_0__[\"Transform\"], {\n  transform(_, pulse) {\n    var src = this.value,\n        gen = this.generator,\n        t;\n\n    if (!src.length || _.modified()) {\n      for (const prop in _) {\n        if (Object(vega_util__WEBPACK_IMPORTED_MODULE_1__[\"isFunction\"])(gen[prop])) {\n          gen[prop](_[prop]);\n        }\n      }\n    }\n\n    t = gen();\n\n    if (src.length) {\n      pulse.mod.push(Object(vega_dataflow__WEBPACK_IMPORTED_MODULE_0__[\"replace\"])(src[0], t));\n    } else {\n      pulse.add.push(Object(vega_dataflow__WEBPACK_IMPORTED_MODULE_0__[\"ingest\"])(t));\n    }\n\n    src[0] = t;\n    return pulse;\n  }\n\n});\n\n/**\n * Render a heatmap image for input raster grid data.\n * @constructor\n * @param {object} params - The parameters for this operator.\n * @param {function(object): *} [params.field] - The field with raster grid\n *   data. If unspecified, the tuple itself is interpreted as a raster grid.\n * @param {string} [params.color] - A constant color value or function for\n *   individual pixel color. If a function, it will be invoked with an input\n *   object that includes $x, $y, $value, and $max fields for the grid.\n * @param {number} [params.opacity] - A constant opacity value or function for\n *   individual pixel opacity. If a function, it will be invoked with an input\n *   object that includes $x, $y, $value, and $max fields for the grid.\n * @param {string} [params.resolve] - The method for resolving maximum values\n *   across multiple input grids. If 'independent' (the default), maximum\n *   calculation will be performed separately for each grid. If 'shared',\n *   a single global maximum will be used for all input grids.\n * @param {string} [params.as='image'] - The output field in which to store\n *   the generated bitmap canvas images (default 'image').\n */\n\nfunction Heatmap(params) {\n  vega_dataflow__WEBPACK_IMPORTED_MODULE_0__[\"Transform\"].call(this, null, params);\n}\nHeatmap.Definition = {\n  'type': 'heatmap',\n  'metadata': {\n    'modifies': true\n  },\n  'params': [{\n    'name': 'field',\n    'type': 'field'\n  }, {\n    'name': 'color',\n    'type': 'string',\n    'expr': true\n  }, {\n    'name': 'opacity',\n    'type': 'number',\n    'expr': true\n  }, {\n    'name': 'resolve',\n    'type': 'enum',\n    'values': ['shared', 'independent'],\n    'default': 'independent'\n  }, {\n    'name': 'as',\n    'type': 'string',\n    'default': 'image'\n  }]\n};\nObject(vega_util__WEBPACK_IMPORTED_MODULE_1__[\"inherits\"])(Heatmap, vega_dataflow__WEBPACK_IMPORTED_MODULE_0__[\"Transform\"], {\n  transform(_, pulse) {\n    if (!pulse.changed() && !_.modified()) {\n      return pulse.StopPropagation;\n    }\n\n    var source = pulse.materialize(pulse.SOURCE).source,\n        shared = _.resolve === 'shared',\n        field = _.field || vega_util__WEBPACK_IMPORTED_MODULE_1__[\"identity\"],\n        opacity = opacity_(_.opacity, _),\n        color = color_(_.color, _),\n        as = _.as || 'image',\n        obj = {\n      $x: 0,\n      $y: 0,\n      $value: 0,\n      $max: shared ? Object(d3_array__WEBPACK_IMPORTED_MODULE_2__[\"max\"])(source.map(t => Object(d3_array__WEBPACK_IMPORTED_MODULE_2__[\"max\"])(field(t).values))) : 0\n    };\n    source.forEach(t => {\n      const v = field(t); // build proxy data object\n\n      const o = Object(vega_util__WEBPACK_IMPORTED_MODULE_1__[\"extend\"])({}, t, obj); // set maximum value if not globally shared\n\n      if (!shared) o.$max = Object(d3_array__WEBPACK_IMPORTED_MODULE_2__[\"max\"])(v.values || []); // generate canvas image\n      // optimize color/opacity if not pixel-dependent\n\n      t[as] = toCanvas(v, o, color.dep ? color : Object(vega_util__WEBPACK_IMPORTED_MODULE_1__[\"constant\"])(color(o)), opacity.dep ? opacity : Object(vega_util__WEBPACK_IMPORTED_MODULE_1__[\"constant\"])(opacity(o)));\n    });\n    return pulse.reflow(true).modifies(as);\n  }\n\n}); // get image color function\n\nfunction color_(color, _) {\n  let f;\n\n  if (Object(vega_util__WEBPACK_IMPORTED_MODULE_1__[\"isFunction\"])(color)) {\n    f = obj => Object(d3_color__WEBPACK_IMPORTED_MODULE_6__[\"rgb\"])(color(obj, _));\n\n    f.dep = dependency(color);\n  } else {\n    // default to mid-grey\n    f = Object(vega_util__WEBPACK_IMPORTED_MODULE_1__[\"constant\"])(Object(d3_color__WEBPACK_IMPORTED_MODULE_6__[\"rgb\"])(color || '#888'));\n  }\n\n  return f;\n} // get image opacity function\n\n\nfunction opacity_(opacity, _) {\n  let f;\n\n  if (Object(vega_util__WEBPACK_IMPORTED_MODULE_1__[\"isFunction\"])(opacity)) {\n    f = obj => opacity(obj, _);\n\n    f.dep = dependency(opacity);\n  } else if (opacity) {\n    f = Object(vega_util__WEBPACK_IMPORTED_MODULE_1__[\"constant\"])(opacity);\n  } else {\n    // default to [0, max] opacity gradient\n    f = obj => obj.$value / obj.$max || 0;\n\n    f.dep = true;\n  }\n\n  return f;\n} // check if function depends on individual pixel data\n\n\nfunction dependency(f) {\n  if (!Object(vega_util__WEBPACK_IMPORTED_MODULE_1__[\"isFunction\"])(f)) return false;\n  const set = Object(vega_util__WEBPACK_IMPORTED_MODULE_1__[\"toSet\"])(Object(vega_util__WEBPACK_IMPORTED_MODULE_1__[\"accessorFields\"])(f));\n  return set.$x || set.$y || set.$value || set.$max;\n} // render raster grid to canvas\n\n\nfunction toCanvas(grid, obj, color, opacity) {\n  const n = grid.width,\n        m = grid.height,\n        x1 = grid.x1 || 0,\n        y1 = grid.y1 || 0,\n        x2 = grid.x2 || n,\n        y2 = grid.y2 || m,\n        val = grid.values,\n        value = val ? i => val[i] : vega_util__WEBPACK_IMPORTED_MODULE_1__[\"zero\"],\n        can = Object(vega_canvas__WEBPACK_IMPORTED_MODULE_7__[\"canvas\"])(x2 - x1, y2 - y1),\n        ctx = can.getContext('2d'),\n        img = ctx.getImageData(0, 0, x2 - x1, y2 - y1),\n        pix = img.data;\n\n  for (let j = y1, k = 0; j < y2; ++j) {\n    obj.$y = j - y1;\n\n    for (let i = x1, r = j * n; i < x2; ++i, k += 4) {\n      obj.$x = i - x1;\n      obj.$value = value(i + r);\n      const v = color(obj);\n      pix[k + 0] = v.r;\n      pix[k + 1] = v.g;\n      pix[k + 2] = v.b;\n      pix[k + 3] = ~~(255 * opacity(obj));\n    }\n  }\n\n  ctx.putImageData(img, 0, 0);\n  return can;\n}\n\n/**\n * Maintains a cartographic projection.\n * @constructor\n * @param {object} params - The parameters for this operator.\n */\n\nfunction Projection(params) {\n  vega_dataflow__WEBPACK_IMPORTED_MODULE_0__[\"Transform\"].call(this, null, params);\n  this.modified(true); // always treat as modified\n}\nObject(vega_util__WEBPACK_IMPORTED_MODULE_1__[\"inherits\"])(Projection, vega_dataflow__WEBPACK_IMPORTED_MODULE_0__[\"Transform\"], {\n  transform(_, pulse) {\n    let proj = this.value;\n\n    if (!proj || _.modified('type')) {\n      this.value = proj = create(_.type);\n      vega_projection__WEBPACK_IMPORTED_MODULE_4__[\"projectionProperties\"].forEach(prop => {\n        if (_[prop] != null) set(proj, prop, _[prop]);\n      });\n    } else {\n      vega_projection__WEBPACK_IMPORTED_MODULE_4__[\"projectionProperties\"].forEach(prop => {\n        if (_.modified(prop)) set(proj, prop, _[prop]);\n      });\n    }\n\n    if (_.pointRadius != null) proj.path.pointRadius(_.pointRadius);\n    if (_.fit) fit(proj, _);\n    return pulse.fork(pulse.NO_SOURCE | pulse.NO_FIELDS);\n  }\n\n});\n\nfunction fit(proj, _) {\n  const data = collectGeoJSON(_.fit);\n  _.extent ? proj.fitExtent(_.extent, data) : _.size ? proj.fitSize(_.size, data) : 0;\n}\n\nfunction create(type) {\n  const constructor = Object(vega_projection__WEBPACK_IMPORTED_MODULE_4__[\"projection\"])((type || 'mercator').toLowerCase());\n  if (!constructor) Object(vega_util__WEBPACK_IMPORTED_MODULE_1__[\"error\"])('Unrecognized projection type: ' + type);\n  return constructor();\n}\n\nfunction set(proj, key, value) {\n  if (Object(vega_util__WEBPACK_IMPORTED_MODULE_1__[\"isFunction\"])(proj[key])) proj[key](value);\n}\n\nfunction collectGeoJSON(data) {\n  data = Object(vega_util__WEBPACK_IMPORTED_MODULE_1__[\"array\"])(data);\n  return data.length === 1 ? data[0] : {\n    type: FeatureCollection,\n    features: data.reduce((a, f) => a.concat(featurize(f)), [])\n  };\n}\n\nfunction featurize(f) {\n  return f.type === FeatureCollection ? f.features : Object(vega_util__WEBPACK_IMPORTED_MODULE_1__[\"array\"])(f).filter(d => d != null).map(d => d.type === Feature ? d : {\n    type: Feature,\n    geometry: d\n  });\n}\n\n\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,[encoded data, 64936 characters]\n//# sourceURL=webpack-internal:///./node_modules/vega/node_modules/vega-geo/build/vega-geo.module.js\n");

/***/ }),

/***/ "./node_modules/vega/node_modules/vega-geo/node_modules/d3-color/src/color.js":
/*!************************************************************************************!*\
  !*** ./node_modules/vega/node_modules/vega-geo/node_modules/d3-color/src/color.js ***!
  \************************************************************************************/
/*! exports provided: Color, darker, brighter, default, rgbConvert, rgb, Rgb, hslConvert, hsl */
/***/ (function(module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"Color\", function() { return Color; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"darker\", function() { return darker; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"brighter\", function() { return brighter; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"default\", function() { return color; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"rgbConvert\", function() { return rgbConvert; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"rgb\", function() { return rgb; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"Rgb\", function() { return Rgb; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"hslConvert\", function() { return hslConvert; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"hsl\", function() { return hsl; });\n/* harmony import */ var _define_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./define.js */ \"./node_modules/vega/node_modules/vega-geo/node_modules/d3-color/src/define.js\");\n\n\nfunction Color() {}\n\nvar darker = 0.7;\nvar brighter = 1 / darker;\n\nvar reI = \"\\\\s*([+-]?\\\\d+)\\\\s*\",\n    reN = \"\\\\s*([+-]?\\\\d*\\\\.?\\\\d+(?:[eE][+-]?\\\\d+)?)\\\\s*\",\n    reP = \"\\\\s*([+-]?\\\\d*\\\\.?\\\\d+(?:[eE][+-]?\\\\d+)?)%\\\\s*\",\n    reHex = /^#([0-9a-f]{3,8})$/,\n    reRgbInteger = new RegExp(\"^rgb\\\\(\" + [reI, reI, reI] + \"\\\\)$\"),\n    reRgbPercent = new RegExp(\"^rgb\\\\(\" + [reP, reP, reP] + \"\\\\)$\"),\n    reRgbaInteger = new RegExp(\"^rgba\\\\(\" + [reI, reI, reI, reN] + \"\\\\)$\"),\n    reRgbaPercent = new RegExp(\"^rgba\\\\(\" + [reP, reP, reP, reN] + \"\\\\)$\"),\n    reHslPercent = new RegExp(\"^hsl\\\\(\" + [reN, reP, reP] + \"\\\\)$\"),\n    reHslaPercent = new RegExp(\"^hsla\\\\(\" + [reN, reP, reP, reN] + \"\\\\)$\");\n\nvar named = {\n  aliceblue: 0xf0f8ff,\n  antiquewhite: 0xfaebd7,\n  aqua: 0x00ffff,\n  aquamarine: 0x7fffd4,\n  azure: 0xf0ffff,\n  beige: 0xf5f5dc,\n  bisque: 0xffe4c4,\n  black: 0x000000,\n  blanchedalmond: 0xffebcd,\n  blue: 0x0000ff,\n  blueviolet: 0x8a2be2,\n  brown: 0xa52a2a,\n  burlywood: 0xdeb887,\n  cadetblue: 0x5f9ea0,\n  chartreuse: 0x7fff00,\n  chocolate: 0xd2691e,\n  coral: 0xff7f50,\n  cornflowerblue: 0x6495ed,\n  cornsilk: 0xfff8dc,\n  crimson: 0xdc143c,\n  cyan: 0x00ffff,\n  darkblue: 0x00008b,\n  darkcyan: 0x008b8b,\n  darkgoldenrod: 0xb8860b,\n  darkgray: 0xa9a9a9,\n  darkgreen: 0x006400,\n  darkgrey: 0xa9a9a9,\n  darkkhaki: 0xbdb76b,\n  darkmagenta: 0x8b008b,\n  darkolivegreen: 0x556b2f,\n  darkorange: 0xff8c00,\n  darkorchid: 0x9932cc,\n  darkred: 0x8b0000,\n  darksalmon: 0xe9967a,\n  darkseagreen: 0x8fbc8f,\n  darkslateblue: 0x483d8b,\n  darkslategray: 0x2f4f4f,\n  darkslategrey: 0x2f4f4f,\n  darkturquoise: 0x00ced1,\n  darkviolet: 0x9400d3,\n  deeppink: 0xff1493,\n  deepskyblue: 0x00bfff,\n  dimgray: 0x696969,\n  dimgrey: 0x696969,\n  dodgerblue: 0x1e90ff,\n  firebrick: 0xb22222,\n  floralwhite: 0xfffaf0,\n  forestgreen: 0x228b22,\n  fuchsia: 0xff00ff,\n  gainsboro: 0xdcdcdc,\n  ghostwhite: 0xf8f8ff,\n  gold: 0xffd700,\n  goldenrod: 0xdaa520,\n  gray: 0x808080,\n  green: 0x008000,\n  greenyellow: 0xadff2f,\n  grey: 0x808080,\n  honeydew: 0xf0fff0,\n  hotpink: 0xff69b4,\n  indianred: 0xcd5c5c,\n  indigo: 0x4b0082,\n  ivory: 0xfffff0,\n  khaki: 0xf0e68c,\n  lavender: 0xe6e6fa,\n  lavenderblush: 0xfff0f5,\n  lawngreen: 0x7cfc00,\n  lemonchiffon: 0xfffacd,\n  lightblue: 0xadd8e6,\n  lightcoral: 0xf08080,\n  lightcyan: 0xe0ffff,\n  lightgoldenrodyellow: 0xfafad2,\n  lightgray: 0xd3d3d3,\n  lightgreen: 0x90ee90,\n  lightgrey: 0xd3d3d3,\n  lightpink: 0xffb6c1,\n  lightsalmon: 0xffa07a,\n  lightseagreen: 0x20b2aa,\n  lightskyblue: 0x87cefa,\n  lightslategray: 0x778899,\n  lightslategrey: 0x778899,\n  lightsteelblue: 0xb0c4de,\n  lightyellow: 0xffffe0,\n  lime: 0x00ff00,\n  limegreen: 0x32cd32,\n  linen: 0xfaf0e6,\n  magenta: 0xff00ff,\n  maroon: 0x800000,\n  mediumaquamarine: 0x66cdaa,\n  mediumblue: 0x0000cd,\n  mediumorchid: 0xba55d3,\n  mediumpurple: 0x9370db,\n  mediumseagreen: 0x3cb371,\n  mediumslateblue: 0x7b68ee,\n  mediumspringgreen: 0x00fa9a,\n  mediumturquoise: 0x48d1cc,\n  mediumvioletred: 0xc71585,\n  midnightblue: 0x191970,\n  mintcream: 0xf5fffa,\n  mistyrose: 0xffe4e1,\n  moccasin: 0xffe4b5,\n  navajowhite: 0xffdead,\n  navy: 0x000080,\n  oldlace: 0xfdf5e6,\n  olive: 0x808000,\n  olivedrab: 0x6b8e23,\n  orange: 0xffa500,\n  orangered: 0xff4500,\n  orchid: 0xda70d6,\n  palegoldenrod: 0xeee8aa,\n  palegreen: 0x98fb98,\n  paleturquoise: 0xafeeee,\n  palevioletred: 0xdb7093,\n  papayawhip: 0xffefd5,\n  peachpuff: 0xffdab9,\n  peru: 0xcd853f,\n  pink: 0xffc0cb,\n  plum: 0xdda0dd,\n  powderblue: 0xb0e0e6,\n  purple: 0x800080,\n  rebeccapurple: 0x663399,\n  red: 0xff0000,\n  rosybrown: 0xbc8f8f,\n  royalblue: 0x4169e1,\n  saddlebrown: 0x8b4513,\n  salmon: 0xfa8072,\n  sandybrown: 0xf4a460,\n  seagreen: 0x2e8b57,\n  seashell: 0xfff5ee,\n  sienna: 0xa0522d,\n  silver: 0xc0c0c0,\n  skyblue: 0x87ceeb,\n  slateblue: 0x6a5acd,\n  slategray: 0x708090,\n  slategrey: 0x708090,\n  snow: 0xfffafa,\n  springgreen: 0x00ff7f,\n  steelblue: 0x4682b4,\n  tan: 0xd2b48c,\n  teal: 0x008080,\n  thistle: 0xd8bfd8,\n  tomato: 0xff6347,\n  turquoise: 0x40e0d0,\n  violet: 0xee82ee,\n  wheat: 0xf5deb3,\n  white: 0xffffff,\n  whitesmoke: 0xf5f5f5,\n  yellow: 0xffff00,\n  yellowgreen: 0x9acd32\n};\n\nObject(_define_js__WEBPACK_IMPORTED_MODULE_0__[\"default\"])(Color, color, {\n  copy: function(channels) {\n    return Object.assign(new this.constructor, this, channels);\n  },\n  displayable: function() {\n    return this.rgb().displayable();\n  },\n  hex: color_formatHex, // Deprecated! Use color.formatHex.\n  formatHex: color_formatHex,\n  formatHsl: color_formatHsl,\n  formatRgb: color_formatRgb,\n  toString: color_formatRgb\n});\n\nfunction color_formatHex() {\n  return this.rgb().formatHex();\n}\n\nfunction color_formatHsl() {\n  return hslConvert(this).formatHsl();\n}\n\nfunction color_formatRgb() {\n  return this.rgb().formatRgb();\n}\n\nfunction color(format) {\n  var m, l;\n  format = (format + \"\").trim().toLowerCase();\n  return (m = reHex.exec(format)) ? (l = m[1].length, m = parseInt(m[1], 16), l === 6 ? rgbn(m) // #ff0000\n      : l === 3 ? new Rgb((m >> 8 & 0xf) | (m >> 4 & 0xf0), (m >> 4 & 0xf) | (m & 0xf0), ((m & 0xf) << 4) | (m & 0xf), 1) // #f00\n      : l === 8 ? rgba(m >> 24 & 0xff, m >> 16 & 0xff, m >> 8 & 0xff, (m & 0xff) / 0xff) // #ff000000\n      : l === 4 ? rgba((m >> 12 & 0xf) | (m >> 8 & 0xf0), (m >> 8 & 0xf) | (m >> 4 & 0xf0), (m >> 4 & 0xf) | (m & 0xf0), (((m & 0xf) << 4) | (m & 0xf)) / 0xff) // #f000\n      : null) // invalid hex\n      : (m = reRgbInteger.exec(format)) ? new Rgb(m[1], m[2], m[3], 1) // rgb(255, 0, 0)\n      : (m = reRgbPercent.exec(format)) ? new Rgb(m[1] * 255 / 100, m[2] * 255 / 100, m[3] * 255 / 100, 1) // rgb(100%, 0%, 0%)\n      : (m = reRgbaInteger.exec(format)) ? rgba(m[1], m[2], m[3], m[4]) // rgba(255, 0, 0, 1)\n      : (m = reRgbaPercent.exec(format)) ? rgba(m[1] * 255 / 100, m[2] * 255 / 100, m[3] * 255 / 100, m[4]) // rgb(100%, 0%, 0%, 1)\n      : (m = reHslPercent.exec(format)) ? hsla(m[1], m[2] / 100, m[3] / 100, 1) // hsl(120, 50%, 50%)\n      : (m = reHslaPercent.exec(format)) ? hsla(m[1], m[2] / 100, m[3] / 100, m[4]) // hsla(120, 50%, 50%, 1)\n      : named.hasOwnProperty(format) ? rgbn(named[format]) // eslint-disable-line no-prototype-builtins\n      : format === \"transparent\" ? new Rgb(NaN, NaN, NaN, 0)\n      : null;\n}\n\nfunction rgbn(n) {\n  return new Rgb(n >> 16 & 0xff, n >> 8 & 0xff, n & 0xff, 1);\n}\n\nfunction rgba(r, g, b, a) {\n  if (a <= 0) r = g = b = NaN;\n  return new Rgb(r, g, b, a);\n}\n\nfunction rgbConvert(o) {\n  if (!(o instanceof Color)) o = color(o);\n  if (!o) return new Rgb;\n  o = o.rgb();\n  return new Rgb(o.r, o.g, o.b, o.opacity);\n}\n\nfunction rgb(r, g, b, opacity) {\n  return arguments.length === 1 ? rgbConvert(r) : new Rgb(r, g, b, opacity == null ? 1 : opacity);\n}\n\nfunction Rgb(r, g, b, opacity) {\n  this.r = +r;\n  this.g = +g;\n  this.b = +b;\n  this.opacity = +opacity;\n}\n\nObject(_define_js__WEBPACK_IMPORTED_MODULE_0__[\"default\"])(Rgb, rgb, Object(_define_js__WEBPACK_IMPORTED_MODULE_0__[\"extend\"])(Color, {\n  brighter: function(k) {\n    k = k == null ? brighter : Math.pow(brighter, k);\n    return new Rgb(this.r * k, this.g * k, this.b * k, this.opacity);\n  },\n  darker: function(k) {\n    k = k == null ? darker : Math.pow(darker, k);\n    return new Rgb(this.r * k, this.g * k, this.b * k, this.opacity);\n  },\n  rgb: function() {\n    return this;\n  },\n  displayable: function() {\n    return (-0.5 <= this.r && this.r < 255.5)\n        && (-0.5 <= this.g && this.g < 255.5)\n        && (-0.5 <= this.b && this.b < 255.5)\n        && (0 <= this.opacity && this.opacity <= 1);\n  },\n  hex: rgb_formatHex, // Deprecated! Use color.formatHex.\n  formatHex: rgb_formatHex,\n  formatRgb: rgb_formatRgb,\n  toString: rgb_formatRgb\n}));\n\nfunction rgb_formatHex() {\n  return \"#\" + hex(this.r) + hex(this.g) + hex(this.b);\n}\n\nfunction rgb_formatRgb() {\n  var a = this.opacity; a = isNaN(a) ? 1 : Math.max(0, Math.min(1, a));\n  return (a === 1 ? \"rgb(\" : \"rgba(\")\n      + Math.max(0, Math.min(255, Math.round(this.r) || 0)) + \", \"\n      + Math.max(0, Math.min(255, Math.round(this.g) || 0)) + \", \"\n      + Math.max(0, Math.min(255, Math.round(this.b) || 0))\n      + (a === 1 ? \")\" : \", \" + a + \")\");\n}\n\nfunction hex(value) {\n  value = Math.max(0, Math.min(255, Math.round(value) || 0));\n  return (value < 16 ? \"0\" : \"\") + value.toString(16);\n}\n\nfunction hsla(h, s, l, a) {\n  if (a <= 0) h = s = l = NaN;\n  else if (l <= 0 || l >= 1) h = s = NaN;\n  else if (s <= 0) h = NaN;\n  return new Hsl(h, s, l, a);\n}\n\nfunction hslConvert(o) {\n  if (o instanceof Hsl) return new Hsl(o.h, o.s, o.l, o.opacity);\n  if (!(o instanceof Color)) o = color(o);\n  if (!o) return new Hsl;\n  if (o instanceof Hsl) return o;\n  o = o.rgb();\n  var r = o.r / 255,\n      g = o.g / 255,\n      b = o.b / 255,\n      min = Math.min(r, g, b),\n      max = Math.max(r, g, b),\n      h = NaN,\n      s = max - min,\n      l = (max + min) / 2;\n  if (s) {\n    if (r === max) h = (g - b) / s + (g < b) * 6;\n    else if (g === max) h = (b - r) / s + 2;\n    else h = (r - g) / s + 4;\n    s /= l < 0.5 ? max + min : 2 - max - min;\n    h *= 60;\n  } else {\n    s = l > 0 && l < 1 ? 0 : h;\n  }\n  return new Hsl(h, s, l, o.opacity);\n}\n\nfunction hsl(h, s, l, opacity) {\n  return arguments.length === 1 ? hslConvert(h) : new Hsl(h, s, l, opacity == null ? 1 : opacity);\n}\n\nfunction Hsl(h, s, l, opacity) {\n  this.h = +h;\n  this.s = +s;\n  this.l = +l;\n  this.opacity = +opacity;\n}\n\nObject(_define_js__WEBPACK_IMPORTED_MODULE_0__[\"default\"])(Hsl, hsl, Object(_define_js__WEBPACK_IMPORTED_MODULE_0__[\"extend\"])(Color, {\n  brighter: function(k) {\n    k = k == null ? brighter : Math.pow(brighter, k);\n    return new Hsl(this.h, this.s, this.l * k, this.opacity);\n  },\n  darker: function(k) {\n    k = k == null ? darker : Math.pow(darker, k);\n    return new Hsl(this.h, this.s, this.l * k, this.opacity);\n  },\n  rgb: function() {\n    var h = this.h % 360 + (this.h < 0) * 360,\n        s = isNaN(h) || isNaN(this.s) ? 0 : this.s,\n        l = this.l,\n        m2 = l + (l < 0.5 ? l : 1 - l) * s,\n        m1 = 2 * l - m2;\n    return new Rgb(\n      hsl2rgb(h >= 240 ? h - 240 : h + 120, m1, m2),\n      hsl2rgb(h, m1, m2),\n      hsl2rgb(h < 120 ? h + 240 : h - 120, m1, m2),\n      this.opacity\n    );\n  },\n  displayable: function() {\n    return (0 <= this.s && this.s <= 1 || isNaN(this.s))\n        && (0 <= this.l && this.l <= 1)\n        && (0 <= this.opacity && this.opacity <= 1);\n  },\n  formatHsl: function() {\n    var a = this.opacity; a = isNaN(a) ? 1 : Math.max(0, Math.min(1, a));\n    return (a === 1 ? \"hsl(\" : \"hsla(\")\n        + (this.h || 0) + \", \"\n        + (this.s || 0) * 100 + \"%, \"\n        + (this.l || 0) * 100 + \"%\"\n        + (a === 1 ? \")\" : \", \" + a + \")\");\n  }\n}));\n\n/* From FvD 13.37, CSS Color Module Level 3 */\nfunction hsl2rgb(h, m1, m2) {\n  return (h < 60 ? m1 + (m2 - m1) * h / 60\n      : h < 180 ? m2\n      : h < 240 ? m1 + (m2 - m1) * (240 - h) / 60\n      : m1) * 255;\n}\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,[encoded data, 17780 characters]\n//# sourceURL=webpack-internal:///./node_modules/vega/node_modules/vega-geo/node_modules/d3-color/src/color.js\n");

/***/ }),

/***/ "./node_modules/vega/node_modules/vega-geo/node_modules/d3-color/src/cubehelix.js":
/*!****************************************************************************************!*\
  !*** ./node_modules/vega/node_modules/vega-geo/node_modules/d3-color/src/cubehelix.js ***!
  \****************************************************************************************/
/*! exports provided: default, Cubehelix */
/***/ (function(module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"default\", function() { return cubehelix; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"Cubehelix\", function() { return Cubehelix; });\n/* harmony import */ var _define_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./define.js */ \"./node_modules/vega/node_modules/vega-geo/node_modules/d3-color/src/define.js\");\n/* harmony import */ var _color_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./color.js */ \"./node_modules/vega/node_modules/vega-geo/node_modules/d3-color/src/color.js\");\n/* harmony import */ var _math_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./math.js */ \"./node_modules/vega/node_modules/vega-geo/node_modules/d3-color/src/math.js\");\n\n\n\n\nvar A = -0.14861,\n    B = +1.78277,\n    C = -0.29227,\n    D = -0.90649,\n    E = +1.97294,\n    ED = E * D,\n    EB = E * B,\n    BC_DA = B * C - D * A;\n\nfunction cubehelixConvert(o) {\n  if (o instanceof Cubehelix) return new Cubehelix(o.h, o.s, o.l, o.opacity);\n  if (!(o instanceof _color_js__WEBPACK_IMPORTED_MODULE_1__[\"Rgb\"])) o = Object(_color_js__WEBPACK_IMPORTED_MODULE_1__[\"rgbConvert\"])(o);\n  var r = o.r / 255,\n      g = o.g / 255,\n      b = o.b / 255,\n      l = (BC_DA * b + ED * r - EB * g) / (BC_DA + ED - EB),\n      bl = b - l,\n      k = (E * (g - l) - C * bl) / D,\n      s = Math.sqrt(k * k + bl * bl) / (E * l * (1 - l)), // NaN if l=0 or l=1\n      h = s ? Math.atan2(k, bl) * _math_js__WEBPACK_IMPORTED_MODULE_2__[\"degrees\"] - 120 : NaN;\n  return new Cubehelix(h < 0 ? h + 360 : h, s, l, o.opacity);\n}\n\nfunction cubehelix(h, s, l, opacity) {\n  return arguments.length === 1 ? cubehelixConvert(h) : new Cubehelix(h, s, l, opacity == null ? 1 : opacity);\n}\n\nfunction Cubehelix(h, s, l, opacity) {\n  this.h = +h;\n  this.s = +s;\n  this.l = +l;\n  this.opacity = +opacity;\n}\n\nObject(_define_js__WEBPACK_IMPORTED_MODULE_0__[\"default\"])(Cubehelix, cubehelix, Object(_define_js__WEBPACK_IMPORTED_MODULE_0__[\"extend\"])(_color_js__WEBPACK_IMPORTED_MODULE_1__[\"Color\"], {\n  brighter: function(k) {\n    k = k == null ? _color_js__WEBPACK_IMPORTED_MODULE_1__[\"brighter\"] : Math.pow(_color_js__WEBPACK_IMPORTED_MODULE_1__[\"brighter\"], k);\n    return new Cubehelix(this.h, this.s, this.l * k, this.opacity);\n  },\n  darker: function(k) {\n    k = k == null ? _color_js__WEBPACK_IMPORTED_MODULE_1__[\"darker\"] : Math.pow(_color_js__WEBPACK_IMPORTED_MODULE_1__[\"darker\"], k);\n    return new Cubehelix(this.h, this.s, this.l * k, this.opacity);\n  },\n  rgb: function() {\n    var h = isNaN(this.h) ? 0 : (this.h + 120) * _math_js__WEBPACK_IMPORTED_MODULE_2__[\"radians\"],\n        l = +this.l,\n        a = isNaN(this.s) ? 0 : this.s * l * (1 - l),\n        cosh = Math.cos(h),\n        sinh = Math.sin(h);\n    return new _color_js__WEBPACK_IMPORTED_MODULE_1__[\"Rgb\"](\n      255 * (l + a * (A * cosh + B * sinh)),\n      255 * (l + a * (C * cosh + D * sinh)),\n      255 * (l + a * (E * cosh)),\n      this.opacity\n    );\n  }\n}));\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvdmVnYS9ub2RlX21vZHVsZXMvdmVnYS1nZW8vbm9kZV9tb2R1bGVzL2QzLWNvbG9yL3NyYy9jdWJlaGVsaXguanMuanMiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvdmVnYS9ub2RlX21vZHVsZXMvdmVnYS1nZW8vbm9kZV9tb2R1bGVzL2QzLWNvbG9yL3NyYy9jdWJlaGVsaXguanM/YTMxOSJdLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgZGVmaW5lLCB7ZXh0ZW5kfSBmcm9tIFwiLi9kZWZpbmUuanNcIjtcbmltcG9ydCB7Q29sb3IsIHJnYkNvbnZlcnQsIFJnYiwgZGFya2VyLCBicmlnaHRlcn0gZnJvbSBcIi4vY29sb3IuanNcIjtcbmltcG9ydCB7ZGVncmVlcywgcmFkaWFuc30gZnJvbSBcIi4vbWF0aC5qc1wiO1xuXG52YXIgQSA9IC0wLjE0ODYxLFxuICAgIEIgPSArMS43ODI3NyxcbiAgICBDID0gLTAuMjkyMjcsXG4gICAgRCA9IC0wLjkwNjQ5LFxuICAgIEUgPSArMS45NzI5NCxcbiAgICBFRCA9IEUgKiBELFxuICAgIEVCID0gRSAqIEIsXG4gICAgQkNfREEgPSBCICogQyAtIEQgKiBBO1xuXG5mdW5jdGlvbiBjdWJlaGVsaXhDb252ZXJ0KG8pIHtcbiAgaWYgKG8gaW5zdGFuY2VvZiBDdWJlaGVsaXgpIHJldHVybiBuZXcgQ3ViZWhlbGl4KG8uaCwgby5zLCBvLmwsIG8ub3BhY2l0eSk7XG4gIGlmICghKG8gaW5zdGFuY2VvZiBSZ2IpKSBvID0gcmdiQ29udmVydChvKTtcbiAgdmFyIHIgPSBvLnIgLyAyNTUsXG4gICAgICBnID0gby5nIC8gMjU1LFxuICAgICAgYiA9IG8uYiAvIDI1NSxcbiAgICAgIGwgPSAoQkNfREEgKiBiICsgRUQgKiByIC0gRUIgKiBnKSAvIChCQ19EQSArIEVEIC0gRUIpLFxuICAgICAgYmwgPSBiIC0gbCxcbiAgICAgIGsgPSAoRSAqIChnIC0gbCkgLSBDICogYmwpIC8gRCxcbiAgICAgIHMgPSBNYXRoLnNxcnQoayAqIGsgKyBibCAqIGJsKSAvIChFICogbCAqICgxIC0gbCkpLCAvLyBOYU4gaWYgbD0wIG9yIGw9MVxuICAgICAgaCA9IHMgPyBNYXRoLmF0YW4yKGssIGJsKSAqIGRlZ3JlZXMgLSAxMjAgOiBOYU47XG4gIHJldHVybiBuZXcgQ3ViZWhlbGl4KGggPCAwID8gaCArIDM2MCA6IGgsIHMsIGwsIG8ub3BhY2l0eSk7XG59XG5cbmV4cG9ydCBkZWZhdWx0IGZ1bmN0aW9uIGN1YmVoZWxpeChoLCBzLCBsLCBvcGFjaXR5KSB7XG4gIHJldHVybiBhcmd1bWVudHMubGVuZ3RoID09PSAxID8gY3ViZWhlbGl4Q29udmVydChoKSA6IG5ldyBDdWJlaGVsaXgoaCwgcywgbCwgb3BhY2l0eSA9PSBudWxsID8gMSA6IG9wYWNpdHkpO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gQ3ViZWhlbGl4KGgsIHMsIGwsIG9wYWNpdHkpIHtcbiAgdGhpcy5oID0gK2g7XG4gIHRoaXMucyA9ICtzO1xuICB0aGlzLmwgPSArbDtcbiAgdGhpcy5vcGFjaXR5ID0gK29wYWNpdHk7XG59XG5cbmRlZmluZShDdWJlaGVsaXgsIGN1YmVoZWxpeCwgZXh0ZW5kKENvbG9yLCB7XG4gIGJyaWdodGVyOiBmdW5jdGlvbihrKSB7XG4gICAgayA9IGsgPT0gbnVsbCA/IGJyaWdodGVyIDogTWF0aC5wb3coYnJpZ2h0ZXIsIGspO1xuICAgIHJldHVybiBuZXcgQ3ViZWhlbGl4KHRoaXMuaCwgdGhpcy5zLCB0aGlzLmwgKiBrLCB0aGlzLm9wYWNpdHkpO1xuICB9LFxuICBkYXJrZXI6IGZ1bmN0aW9uKGspIHtcbiAgICBrID0gayA9PSBudWxsID8gZGFya2VyIDogTWF0aC5wb3coZGFya2VyLCBrKTtcbiAgICByZXR1cm4gbmV3IEN1YmVoZWxpeCh0aGlzLmgsIHRoaXMucywgdGhpcy5sICogaywgdGhpcy5vcGFjaXR5KTtcbiAgfSxcbiAgcmdiOiBmdW5jdGlvbigpIHtcbiAgICB2YXIgaCA9IGlzTmFOKHRoaXMuaCkgPyAwIDogKHRoaXMuaCArIDEyMCkgKiByYWRpYW5zLFxuICAgICAgICBsID0gK3RoaXMubCxcbiAgICAgICAgYSA9IGlzTmFOKHRoaXMucykgPyAwIDogdGhpcy5zICogbCAqICgxIC0gbCksXG4gICAgICAgIGNvc2ggPSBNYXRoLmNvcyhoKSxcbiAgICAgICAgc2luaCA9IE1hdGguc2luKGgpO1xuICAgIHJldHVybiBuZXcgUmdiKFxuICAgICAgMjU1ICogKGwgKyBhICogKEEgKiBjb3NoICsgQiAqIHNpbmgpKSxcbiAgICAgIDI1NSAqIChsICsgYSAqIChDICogY29zaCArIEQgKiBzaW5oKSksXG4gICAgICAyNTUgKiAobCArIGEgKiAoRSAqIGNvc2gpKSxcbiAgICAgIHRoaXMub3BhY2l0eVxuICAgICk7XG4gIH1cbn0pKTtcbiJdLCJtYXBwaW5ncyI6IkFBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7Iiwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///./node_modules/vega/node_modules/vega-geo/node_modules/d3-color/src/cubehelix.js\n");

/***/ }),

/***/ "./node_modules/vega/node_modules/vega-geo/node_modules/d3-color/src/define.js":
/*!*************************************************************************************!*\
  !*** ./node_modules/vega/node_modules/vega-geo/node_modules/d3-color/src/define.js ***!
  \*************************************************************************************/
/*! exports provided: default, extend */
/***/ (function(module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"extend\", function() { return extend; });\n/* harmony default export */ __webpack_exports__[\"default\"] = (function(constructor, factory, prototype) {\n  constructor.prototype = factory.prototype = prototype;\n  prototype.constructor = constructor;\n});\n\nfunction extend(parent, definition) {\n  var prototype = Object.create(parent.prototype);\n  for (var key in definition) prototype[key] = definition[key];\n  return prototype;\n}\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvdmVnYS9ub2RlX21vZHVsZXMvdmVnYS1nZW8vbm9kZV9tb2R1bGVzL2QzLWNvbG9yL3NyYy9kZWZpbmUuanMuanMiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvdmVnYS9ub2RlX21vZHVsZXMvdmVnYS1nZW8vbm9kZV9tb2R1bGVzL2QzLWNvbG9yL3NyYy9kZWZpbmUuanM/MzEzNiJdLCJzb3VyY2VzQ29udGVudCI6WyJleHBvcnQgZGVmYXVsdCBmdW5jdGlvbihjb25zdHJ1Y3RvciwgZmFjdG9yeSwgcHJvdG90eXBlKSB7XG4gIGNvbnN0cnVjdG9yLnByb3RvdHlwZSA9IGZhY3RvcnkucHJvdG90eXBlID0gcHJvdG90eXBlO1xuICBwcm90b3R5cGUuY29uc3RydWN0b3IgPSBjb25zdHJ1Y3Rvcjtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGV4dGVuZChwYXJlbnQsIGRlZmluaXRpb24pIHtcbiAgdmFyIHByb3RvdHlwZSA9IE9iamVjdC5jcmVhdGUocGFyZW50LnByb3RvdHlwZSk7XG4gIGZvciAodmFyIGtleSBpbiBkZWZpbml0aW9uKSBwcm90b3R5cGVba2V5XSA9IGRlZmluaXRpb25ba2V5XTtcbiAgcmV0dXJuIHByb3RvdHlwZTtcbn1cbiJdLCJtYXBwaW5ncyI6IkFBQUE7QUFBQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOyIsInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///./node_modules/vega/node_modules/vega-geo/node_modules/d3-color/src/define.js\n");

/***/ }),

/***/ "./node_modules/vega/node_modules/vega-geo/node_modules/d3-color/src/index.js":
/*!************************************************************************************!*\
  !*** ./node_modules/vega/node_modules/vega-geo/node_modules/d3-color/src/index.js ***!
  \************************************************************************************/
/*! exports provided: color, rgb, hsl, lab, hcl, lch, gray, cubehelix */
/***/ (function(module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _color_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./color.js */ \"./node_modules/vega/node_modules/vega-geo/node_modules/d3-color/src/color.js\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"color\", function() { return _color_js__WEBPACK_IMPORTED_MODULE_0__[\"default\"]; });\n\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"rgb\", function() { return _color_js__WEBPACK_IMPORTED_MODULE_0__[\"rgb\"]; });\n\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"hsl\", function() { return _color_js__WEBPACK_IMPORTED_MODULE_0__[\"hsl\"]; });\n\n/* harmony import */ var _lab_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./lab.js */ \"./node_modules/vega/node_modules/vega-geo/node_modules/d3-color/src/lab.js\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"lab\", function() { return _lab_js__WEBPACK_IMPORTED_MODULE_1__[\"default\"]; });\n\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"hcl\", function() { return _lab_js__WEBPACK_IMPORTED_MODULE_1__[\"hcl\"]; });\n\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"lch\", function() { return _lab_js__WEBPACK_IMPORTED_MODULE_1__[\"lch\"]; });\n\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"gray\", function() { return _lab_js__WEBPACK_IMPORTED_MODULE_1__[\"gray\"]; });\n\n/* harmony import */ var _cubehelix_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./cubehelix.js */ \"./node_modules/vega/node_modules/vega-geo/node_modules/d3-color/src/cubehelix.js\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"cubehelix\", function() { return _cubehelix_js__WEBPACK_IMPORTED_MODULE_2__[\"default\"]; });\n\n\n\n\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvdmVnYS9ub2RlX21vZHVsZXMvdmVnYS1nZW8vbm9kZV9tb2R1bGVzL2QzLWNvbG9yL3NyYy9pbmRleC5qcy5qcyIsInNvdXJjZXMiOlsid2VicGFjazovLy8uL25vZGVfbW9kdWxlcy92ZWdhL25vZGVfbW9kdWxlcy92ZWdhLWdlby9ub2RlX21vZHVsZXMvZDMtY29sb3Ivc3JjL2luZGV4LmpzPzBjMjciXSwic291cmNlc0NvbnRlbnQiOlsiZXhwb3J0IHtkZWZhdWx0IGFzIGNvbG9yLCByZ2IsIGhzbH0gZnJvbSBcIi4vY29sb3IuanNcIjtcbmV4cG9ydCB7ZGVmYXVsdCBhcyBsYWIsIGhjbCwgbGNoLCBncmF5fSBmcm9tIFwiLi9sYWIuanNcIjtcbmV4cG9ydCB7ZGVmYXVsdCBhcyBjdWJlaGVsaXh9IGZyb20gXCIuL2N1YmVoZWxpeC5qc1wiO1xuIl0sIm1hcHBpbmdzIjoiQUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFDQTtBQUNBOyIsInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///./node_modules/vega/node_modules/vega-geo/node_modules/d3-color/src/index.js\n");

/***/ }),

/***/ "./node_modules/vega/node_modules/vega-geo/node_modules/d3-color/src/lab.js":
/*!**********************************************************************************!*\
  !*** ./node_modules/vega/node_modules/vega-geo/node_modules/d3-color/src/lab.js ***!
  \**********************************************************************************/
/*! exports provided: gray, default, Lab, lch, hcl, Hcl */
/***/ (function(module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"gray\", function() { return gray; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"default\", function() { return lab; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"Lab\", function() { return Lab; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"lch\", function() { return lch; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"hcl\", function() { return hcl; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"Hcl\", function() { return Hcl; });\n/* harmony import */ var _define_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./define.js */ \"./node_modules/vega/node_modules/vega-geo/node_modules/d3-color/src/define.js\");\n/* harmony import */ var _color_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./color.js */ \"./node_modules/vega/node_modules/vega-geo/node_modules/d3-color/src/color.js\");\n/* harmony import */ var _math_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./math.js */ \"./node_modules/vega/node_modules/vega-geo/node_modules/d3-color/src/math.js\");\n\n\n\n\n// https://observablehq.com/@mbostock/lab-and-rgb\nconst K = 18,\n    Xn = 0.96422,\n    Yn = 1,\n    Zn = 0.82521,\n    t0 = 4 / 29,\n    t1 = 6 / 29,\n    t2 = 3 * t1 * t1,\n    t3 = t1 * t1 * t1;\n\nfunction labConvert(o) {\n  if (o instanceof Lab) return new Lab(o.l, o.a, o.b, o.opacity);\n  if (o instanceof Hcl) return hcl2lab(o);\n  if (!(o instanceof _color_js__WEBPACK_IMPORTED_MODULE_1__[\"Rgb\"])) o = Object(_color_js__WEBPACK_IMPORTED_MODULE_1__[\"rgbConvert\"])(o);\n  var r = rgb2lrgb(o.r),\n      g = rgb2lrgb(o.g),\n      b = rgb2lrgb(o.b),\n      y = xyz2lab((0.2225045 * r + 0.7168786 * g + 0.0606169 * b) / Yn), x, z;\n  if (r === g && g === b) x = z = y; else {\n    x = xyz2lab((0.4360747 * r + 0.3850649 * g + 0.1430804 * b) / Xn);\n    z = xyz2lab((0.0139322 * r + 0.0971045 * g + 0.7141733 * b) / Zn);\n  }\n  return new Lab(116 * y - 16, 500 * (x - y), 200 * (y - z), o.opacity);\n}\n\nfunction gray(l, opacity) {\n  return new Lab(l, 0, 0, opacity == null ? 1 : opacity);\n}\n\nfunction lab(l, a, b, opacity) {\n  return arguments.length === 1 ? labConvert(l) : new Lab(l, a, b, opacity == null ? 1 : opacity);\n}\n\nfunction Lab(l, a, b, opacity) {\n  this.l = +l;\n  this.a = +a;\n  this.b = +b;\n  this.opacity = +opacity;\n}\n\nObject(_define_js__WEBPACK_IMPORTED_MODULE_0__[\"default\"])(Lab, lab, Object(_define_js__WEBPACK_IMPORTED_MODULE_0__[\"extend\"])(_color_js__WEBPACK_IMPORTED_MODULE_1__[\"Color\"], {\n  brighter: function(k) {\n    return new Lab(this.l + K * (k == null ? 1 : k), this.a, this.b, this.opacity);\n  },\n  darker: function(k) {\n    return new Lab(this.l - K * (k == null ? 1 : k), this.a, this.b, this.opacity);\n  },\n  rgb: function() {\n    var y = (this.l + 16) / 116,\n        x = isNaN(this.a) ? y : y + this.a / 500,\n        z = isNaN(this.b) ? y : y - this.b / 200;\n    x = Xn * lab2xyz(x);\n    y = Yn * lab2xyz(y);\n    z = Zn * lab2xyz(z);\n    return new _color_js__WEBPACK_IMPORTED_MODULE_1__[\"Rgb\"](\n      lrgb2rgb( 3.1338561 * x - 1.6168667 * y - 0.4906146 * z),\n      lrgb2rgb(-0.9787684 * x + 1.9161415 * y + 0.0334540 * z),\n      lrgb2rgb( 0.0719453 * x - 0.2289914 * y + 1.4052427 * z),\n      this.opacity\n    );\n  }\n}));\n\nfunction xyz2lab(t) {\n  return t > t3 ? Math.pow(t, 1 / 3) : t / t2 + t0;\n}\n\nfunction lab2xyz(t) {\n  return t > t1 ? t * t * t : t2 * (t - t0);\n}\n\nfunction lrgb2rgb(x) {\n  return 255 * (x <= 0.0031308 ? 12.92 * x : 1.055 * Math.pow(x, 1 / 2.4) - 0.055);\n}\n\nfunction rgb2lrgb(x) {\n  return (x /= 255) <= 0.04045 ? x / 12.92 : Math.pow((x + 0.055) / 1.055, 2.4);\n}\n\nfunction hclConvert(o) {\n  if (o instanceof Hcl) return new Hcl(o.h, o.c, o.l, o.opacity);\n  if (!(o instanceof Lab)) o = labConvert(o);\n  if (o.a === 0 && o.b === 0) return new Hcl(NaN, 0 < o.l && o.l < 100 ? 0 : NaN, o.l, o.opacity);\n  var h = Math.atan2(o.b, o.a) * _math_js__WEBPACK_IMPORTED_MODULE_2__[\"degrees\"];\n  return new Hcl(h < 0 ? h + 360 : h, Math.sqrt(o.a * o.a + o.b * o.b), o.l, o.opacity);\n}\n\nfunction lch(l, c, h, opacity) {\n  return arguments.length === 1 ? hclConvert(l) : new Hcl(h, c, l, opacity == null ? 1 : opacity);\n}\n\nfunction hcl(h, c, l, opacity) {\n  return arguments.length === 1 ? hclConvert(h) : new Hcl(h, c, l, opacity == null ? 1 : opacity);\n}\n\nfunction Hcl(h, c, l, opacity) {\n  this.h = +h;\n  this.c = +c;\n  this.l = +l;\n  this.opacity = +opacity;\n}\n\nfunction hcl2lab(o) {\n  if (isNaN(o.h)) return new Lab(o.l, 0, 0, o.opacity);\n  var h = o.h * _math_js__WEBPACK_IMPORTED_MODULE_2__[\"radians\"];\n  return new Lab(o.l, Math.cos(h) * o.c, Math.sin(h) * o.c, o.opacity);\n}\n\nObject(_define_js__WEBPACK_IMPORTED_MODULE_0__[\"default\"])(Hcl, hcl, Object(_define_js__WEBPACK_IMPORTED_MODULE_0__[\"extend\"])(_color_js__WEBPACK_IMPORTED_MODULE_1__[\"Color\"], {\n  brighter: function(k) {\n    return new Hcl(this.h, this.c, this.l + K * (k == null ? 1 : k), this.opacity);\n  },\n  darker: function(k) {\n    return new Hcl(this.h, this.c, this.l - K * (k == null ? 1 : k), this.opacity);\n  },\n  rgb: function() {\n    return hcl2lab(this).rgb();\n  }\n}));\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,[encoded data, 6288 characters]\n//# sourceURL=webpack-internal:///./node_modules/vega/node_modules/vega-geo/node_modules/d3-color/src/lab.js\n");

/***/ }),

/***/ "./node_modules/vega/node_modules/vega-geo/node_modules/d3-color/src/math.js":
/*!***********************************************************************************!*\
  !*** ./node_modules/vega/node_modules/vega-geo/node_modules/d3-color/src/math.js ***!
  \***********************************************************************************/
/*! exports provided: radians, degrees */
/***/ (function(module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"radians\", function() { return radians; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"degrees\", function() { return degrees; });\nconst radians = Math.PI / 180;\nconst degrees = 180 / Math.PI;\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvdmVnYS9ub2RlX21vZHVsZXMvdmVnYS1nZW8vbm9kZV9tb2R1bGVzL2QzLWNvbG9yL3NyYy9tYXRoLmpzLmpzIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL3ZlZ2Evbm9kZV9tb2R1bGVzL3ZlZ2EtZ2VvL25vZGVfbW9kdWxlcy9kMy1jb2xvci9zcmMvbWF0aC5qcz8yNmZiIl0sInNvdXJjZXNDb250ZW50IjpbImV4cG9ydCBjb25zdCByYWRpYW5zID0gTWF0aC5QSSAvIDE4MDtcbmV4cG9ydCBjb25zdCBkZWdyZWVzID0gMTgwIC8gTWF0aC5QSTtcbiJdLCJtYXBwaW5ncyI6IkFBQUE7QUFBQTtBQUFBO0FBQUE7QUFDQTsiLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///./node_modules/vega/node_modules/vega-geo/node_modules/d3-color/src/math.js\n");

/***/ }),

/***/ "./node_modules/vega/node_modules/vega-hierarchy/build/vega-hierarchy.module.js":
/*!**************************************************************************************!*\
  !*** ./node_modules/vega/node_modules/vega-hierarchy/build/vega-hierarchy.module.js ***!
  \**************************************************************************************/
/*! exports provided: nest, pack, partition, stratify, tree, treelinks, treemap */
/***/ (function(module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"nest\", function() { return Nest; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"pack\", function() { return Pack; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"partition\", function() { return Partition; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"stratify\", function() { return Stratify; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"tree\", function() { return Tree; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"treelinks\", function() { return TreeLinks; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"treemap\", function() { return Treemap; });\n/* harmony import */ var vega_dataflow__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! vega-dataflow */ \"./node_modules/vega/node_modules/vega-dataflow/build/vega-dataflow.module.js\");\n/* harmony import */ var vega_util__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! vega-util */ \"./node_modules/vega/node_modules/vega-util/build/vega-util.module.js\");\n/* harmony import */ var d3_hierarchy__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! d3-hierarchy */ \"./node_modules/vega/node_modules/d3-hierarchy/src/index.js\");\n\n\n\n\n// Build lookup table mapping tuple keys to tree node instances\nfunction lookup (tree, key, filter) {\n  const map = {};\n  tree.each(node => {\n    const t = node.data;\n    if (filter(t)) map[key(t)] = node;\n  });\n  tree.lookup = map;\n  return tree;\n}\n\n/**\n * Nest tuples into a tree structure, grouped by key values.\n * @constructor\n * @param {object} params - The parameters for this operator.\n * @param {Array<function(object): *>} params.keys - The key fields to nest by, in order.\n * @param {boolean} [params.generate=false] - A boolean flag indicating if\n *   non-leaf nodes generated by this transform should be included in the\n *   output. The default (false) includes only the input data (leaf nodes)\n *   in the data stream.\n */\n\nfunction Nest(params) {\n  vega_dataflow__WEBPACK_IMPORTED_MODULE_0__[\"Transform\"].call(this, null, params);\n}\nNest.Definition = {\n  'type': 'Nest',\n  'metadata': {\n    'treesource': true,\n    'changes': true\n  },\n  'params': [{\n    'name': 'keys',\n    'type': 'field',\n    'array': true\n  }, {\n    'name': 'generate',\n    'type': 'boolean'\n  }]\n};\n\nconst children = n => n.values;\n\nObject(vega_util__WEBPACK_IMPORTED_MODULE_1__[\"inherits\"])(Nest, vega_dataflow__WEBPACK_IMPORTED_MODULE_0__[\"Transform\"], {\n  transform(_, pulse) {\n    if (!pulse.source) {\n      Object(vega_util__WEBPACK_IMPORTED_MODULE_1__[\"error\"])('Nest transform requires an upstream data source.');\n    }\n\n    var gen = _.generate,\n        mod = _.modified(),\n        out = pulse.clone(),\n        tree = this.value;\n\n    if (!tree || mod || pulse.changed()) {\n      // collect nodes to remove\n      if (tree) {\n        tree.each(node => {\n          if (node.children && Object(vega_dataflow__WEBPACK_IMPORTED_MODULE_0__[\"isTuple\"])(node.data)) {\n            out.rem.push(node.data);\n          }\n        });\n      } // generate new tree structure\n\n\n      this.value = tree = Object(d3_hierarchy__WEBPACK_IMPORTED_MODULE_2__[\"hierarchy\"])({\n        values: Object(vega_util__WEBPACK_IMPORTED_MODULE_1__[\"array\"])(_.keys).reduce((n, k) => {\n          n.key(k);\n          return n;\n        }, nest()).entries(out.source)\n      }, children); // collect nodes to add\n\n      if (gen) {\n        tree.each(node => {\n          if (node.children) {\n            node = Object(vega_dataflow__WEBPACK_IMPORTED_MODULE_0__[\"ingest\"])(node.data);\n            out.add.push(node);\n            out.source.push(node);\n          }\n        });\n      } // build lookup table\n\n\n      lookup(tree, vega_dataflow__WEBPACK_IMPORTED_MODULE_0__[\"tupleid\"], vega_dataflow__WEBPACK_IMPORTED_MODULE_0__[\"tupleid\"]);\n    }\n\n    out.source.root = tree;\n    return out;\n  }\n\n});\n\nfunction nest() {\n  const keys = [],\n        nest = {\n    entries: array => entries(apply(array, 0), 0),\n    key: d => (keys.push(d), nest)\n  };\n\n  function apply(array, depth) {\n    if (depth >= keys.length) {\n      return array;\n    }\n\n    const n = array.length,\n          key = keys[depth++],\n          valuesByKey = {},\n          result = {};\n    let i = -1,\n        keyValue,\n        value,\n        values;\n\n    while (++i < n) {\n      keyValue = key(value = array[i]) + '';\n\n      if (values = valuesByKey[keyValue]) {\n        values.push(value);\n      } else {\n        valuesByKey[keyValue] = [value];\n      }\n    }\n\n    for (keyValue in valuesByKey) {\n      result[keyValue] = apply(valuesByKey[keyValue], depth);\n    }\n\n    return result;\n  }\n\n  function entries(map, depth) {\n    if (++depth > keys.length) return map;\n    const array = [];\n\n    for (const key in map) {\n      array.push({\n        key,\n        values: entries(map[key], depth)\n      });\n    }\n\n    return array;\n  }\n\n  return nest;\n}\n\n/**\n * Abstract class for tree layout.\n * @constructor\n * @param {object} params - The parameters for this operator.\n */\n\nfunction HierarchyLayout(params) {\n  vega_dataflow__WEBPACK_IMPORTED_MODULE_0__[\"Transform\"].call(this, null, params);\n}\n\nconst defaultSeparation = (a, b) => a.parent === b.parent ? 1 : 2;\n\nObject(vega_util__WEBPACK_IMPORTED_MODULE_1__[\"inherits\"])(HierarchyLayout, vega_dataflow__WEBPACK_IMPORTED_MODULE_0__[\"Transform\"], {\n  transform(_, pulse) {\n    if (!pulse.source || !pulse.source.root) {\n      Object(vega_util__WEBPACK_IMPORTED_MODULE_1__[\"error\"])(this.constructor.name + ' transform requires a backing tree data source.');\n    }\n\n    const layout = this.layout(_.method),\n          fields = this.fields,\n          root = pulse.source.root,\n          as = _.as || fields;\n    if (_.field) root.sum(_.field);else root.count();\n    if (_.sort) root.sort(Object(vega_dataflow__WEBPACK_IMPORTED_MODULE_0__[\"stableCompare\"])(_.sort, d => d.data));\n    setParams(layout, this.params, _);\n\n    if (layout.separation) {\n      layout.separation(_.separation !== false ? defaultSeparation : vega_util__WEBPACK_IMPORTED_MODULE_1__[\"one\"]);\n    }\n\n    try {\n      this.value = layout(root);\n    } catch (err) {\n      Object(vega_util__WEBPACK_IMPORTED_MODULE_1__[\"error\"])(err);\n    }\n\n    root.each(node => setFields(node, fields, as));\n    return pulse.reflow(_.modified()).modifies(as).modifies('leaf');\n  }\n\n});\n\nfunction setParams(layout, params, _) {\n  for (let p, i = 0, n = params.length; i < n; ++i) {\n    p = params[i];\n    if (p in _) layout[p](_[p]);\n  }\n}\n\nfunction setFields(node, fields, as) {\n  const t = node.data,\n        n = fields.length - 1;\n\n  for (let i = 0; i < n; ++i) {\n    t[as[i]] = node[fields[i]];\n  }\n\n  t[as[n]] = node.children ? node.children.length : 0;\n}\n\nconst Output = ['x', 'y', 'r', 'depth', 'children'];\n/**\n * Packed circle tree layout.\n * @constructor\n * @param {object} params - The parameters for this operator.\n * @param {function(object): *} params.field - The value field to size nodes.\n */\n\nfunction Pack(params) {\n  HierarchyLayout.call(this, params);\n}\nPack.Definition = {\n  'type': 'Pack',\n  'metadata': {\n    'tree': true,\n    'modifies': true\n  },\n  'params': [{\n    'name': 'field',\n    'type': 'field'\n  }, {\n    'name': 'sort',\n    'type': 'compare'\n  }, {\n    'name': 'padding',\n    'type': 'number',\n    'default': 0\n  }, {\n    'name': 'radius',\n    'type': 'field',\n    'default': null\n  }, {\n    'name': 'size',\n    'type': 'number',\n    'array': true,\n    'length': 2\n  }, {\n    'name': 'as',\n    'type': 'string',\n    'array': true,\n    'length': Output.length,\n    'default': Output\n  }]\n};\nObject(vega_util__WEBPACK_IMPORTED_MODULE_1__[\"inherits\"])(Pack, HierarchyLayout, {\n  layout: d3_hierarchy__WEBPACK_IMPORTED_MODULE_2__[\"pack\"],\n  params: ['radius', 'size', 'padding'],\n  fields: Output\n});\n\nconst Output$1 = ['x0', 'y0', 'x1', 'y1', 'depth', 'children'];\n/**\n * Partition tree layout.\n * @constructor\n * @param {object} params - The parameters for this operator.\n * @param {function(object): *} params.field - The value field to size nodes.\n */\n\nfunction Partition(params) {\n  HierarchyLayout.call(this, params);\n}\nPartition.Definition = {\n  'type': 'Partition',\n  'metadata': {\n    'tree': true,\n    'modifies': true\n  },\n  'params': [{\n    'name': 'field',\n    'type': 'field'\n  }, {\n    'name': 'sort',\n    'type': 'compare'\n  }, {\n    'name': 'padding',\n    'type': 'number',\n    'default': 0\n  }, {\n    'name': 'round',\n    'type': 'boolean',\n    'default': false\n  }, {\n    'name': 'size',\n    'type': 'number',\n    'array': true,\n    'length': 2\n  }, {\n    'name': 'as',\n    'type': 'string',\n    'array': true,\n    'length': Output$1.length,\n    'default': Output$1\n  }]\n};\nObject(vega_util__WEBPACK_IMPORTED_MODULE_1__[\"inherits\"])(Partition, HierarchyLayout, {\n  layout: d3_hierarchy__WEBPACK_IMPORTED_MODULE_2__[\"partition\"],\n  params: ['size', 'round', 'padding'],\n  fields: Output$1\n});\n\n/**\n * Stratify a collection of tuples into a tree structure based on\n * id and parent id fields.\n * @constructor\n * @param {object} params - The parameters for this operator.\n * @param {function(object): *} params.key - Unique key field for each tuple.\n * @param {function(object): *} params.parentKey - Field with key for parent tuple.\n */\n\nfunction Stratify(params) {\n  vega_dataflow__WEBPACK_IMPORTED_MODULE_0__[\"Transform\"].call(this, null, params);\n}\nStratify.Definition = {\n  'type': 'Stratify',\n  'metadata': {\n    'treesource': true\n  },\n  'params': [{\n    'name': 'key',\n    'type': 'field',\n    'required': true\n  }, {\n    'name': 'parentKey',\n    'type': 'field',\n    'required': true\n  }]\n};\nObject(vega_util__WEBPACK_IMPORTED_MODULE_1__[\"inherits\"])(Stratify, vega_dataflow__WEBPACK_IMPORTED_MODULE_0__[\"Transform\"], {\n  transform(_, pulse) {\n    if (!pulse.source) {\n      Object(vega_util__WEBPACK_IMPORTED_MODULE_1__[\"error\"])('Stratify transform requires an upstream data source.');\n    }\n\n    let tree = this.value;\n\n    const mod = _.modified(),\n          out = pulse.fork(pulse.ALL).materialize(pulse.SOURCE),\n          run = !tree || mod || pulse.changed(pulse.ADD_REM) || pulse.modified(_.key.fields) || pulse.modified(_.parentKey.fields); // prevent upstream source pollution\n\n\n    out.source = out.source.slice();\n\n    if (run) {\n      tree = out.source.length ? lookup(Object(d3_hierarchy__WEBPACK_IMPORTED_MODULE_2__[\"stratify\"])().id(_.key).parentId(_.parentKey)(out.source), _.key, vega_util__WEBPACK_IMPORTED_MODULE_1__[\"truthy\"]) : lookup(Object(d3_hierarchy__WEBPACK_IMPORTED_MODULE_2__[\"stratify\"])()([{}]), _.key, _.key);\n    }\n\n    out.source.root = this.value = tree;\n    return out;\n  }\n\n});\n\nconst Layouts = {\n  tidy: d3_hierarchy__WEBPACK_IMPORTED_MODULE_2__[\"tree\"],\n  cluster: d3_hierarchy__WEBPACK_IMPORTED_MODULE_2__[\"cluster\"]\n};\nconst Output$2 = ['x', 'y', 'depth', 'children'];\n/**\n * Tree layout. Depending on the method parameter, performs either\n * Reingold-Tilford 'tidy' layout or dendrogram 'cluster' layout.\n * @constructor\n * @param {object} params - The parameters for this operator.\n */\n\nfunction Tree(params) {\n  HierarchyLayout.call(this, params);\n}\nTree.Definition = {\n  'type': 'Tree',\n  'metadata': {\n    'tree': true,\n    'modifies': true\n  },\n  'params': [{\n    'name': 'field',\n    'type': 'field'\n  }, {\n    'name': 'sort',\n    'type': 'compare'\n  }, {\n    'name': 'method',\n    'type': 'enum',\n    'default': 'tidy',\n    'values': ['tidy', 'cluster']\n  }, {\n    'name': 'size',\n    'type': 'number',\n    'array': true,\n    'length': 2\n  }, {\n    'name': 'nodeSize',\n    'type': 'number',\n    'array': true,\n    'length': 2\n  }, {\n    'name': 'separation',\n    'type': 'boolean',\n    'default': true\n  }, {\n    'name': 'as',\n    'type': 'string',\n    'array': true,\n    'length': Output$2.length,\n    'default': Output$2\n  }]\n};\nObject(vega_util__WEBPACK_IMPORTED_MODULE_1__[\"inherits\"])(Tree, HierarchyLayout, {\n  /**\n   * Tree layout generator. Supports both 'tidy' and 'cluster' layouts.\n   */\n  layout(method) {\n    const m = method || 'tidy';\n    if (Object(vega_util__WEBPACK_IMPORTED_MODULE_1__[\"hasOwnProperty\"])(Layouts, m)) return Layouts[m]();else Object(vega_util__WEBPACK_IMPORTED_MODULE_1__[\"error\"])('Unrecognized Tree layout method: ' + m);\n  },\n\n  params: ['size', 'nodeSize'],\n  fields: Output$2\n});\n\n/**\n * Generate tuples representing links between tree nodes.\n * The resulting tuples will contain 'source' and 'target' fields,\n * which point to parent and child node tuples, respectively.\n * @constructor\n * @param {object} params - The parameters for this operator.\n */\n\nfunction TreeLinks(params) {\n  vega_dataflow__WEBPACK_IMPORTED_MODULE_0__[\"Transform\"].call(this, [], params);\n}\nTreeLinks.Definition = {\n  'type': 'TreeLinks',\n  'metadata': {\n    'tree': true,\n    'generates': true,\n    'changes': true\n  },\n  'params': []\n};\nObject(vega_util__WEBPACK_IMPORTED_MODULE_1__[\"inherits\"])(TreeLinks, vega_dataflow__WEBPACK_IMPORTED_MODULE_0__[\"Transform\"], {\n  transform(_, pulse) {\n    const links = this.value,\n          tree = pulse.source && pulse.source.root,\n          out = pulse.fork(pulse.NO_SOURCE),\n          lut = {};\n    if (!tree) Object(vega_util__WEBPACK_IMPORTED_MODULE_1__[\"error\"])('TreeLinks transform requires a tree data source.');\n\n    if (pulse.changed(pulse.ADD_REM)) {\n      // remove previous links\n      out.rem = links; // build lookup table of valid tuples\n\n      pulse.visit(pulse.SOURCE, t => lut[Object(vega_dataflow__WEBPACK_IMPORTED_MODULE_0__[\"tupleid\"])(t)] = 1); // generate links for all edges incident on valid tuples\n\n      tree.each(node => {\n        const t = node.data,\n              p = node.parent && node.parent.data;\n\n        if (p && lut[Object(vega_dataflow__WEBPACK_IMPORTED_MODULE_0__[\"tupleid\"])(t)] && lut[Object(vega_dataflow__WEBPACK_IMPORTED_MODULE_0__[\"tupleid\"])(p)]) {\n          out.add.push(Object(vega_dataflow__WEBPACK_IMPORTED_MODULE_0__[\"ingest\"])({\n            source: p,\n            target: t\n          }));\n        }\n      });\n      this.value = out.add;\n    } else if (pulse.changed(pulse.MOD)) {\n      // build lookup table of modified tuples\n      pulse.visit(pulse.MOD, t => lut[Object(vega_dataflow__WEBPACK_IMPORTED_MODULE_0__[\"tupleid\"])(t)] = 1); // gather links incident on modified tuples\n\n      links.forEach(link => {\n        if (lut[Object(vega_dataflow__WEBPACK_IMPORTED_MODULE_0__[\"tupleid\"])(link.source)] || lut[Object(vega_dataflow__WEBPACK_IMPORTED_MODULE_0__[\"tupleid\"])(link.target)]) {\n          out.mod.push(link);\n        }\n      });\n    }\n\n    return out;\n  }\n\n});\n\nconst Tiles = {\n  binary: d3_hierarchy__WEBPACK_IMPORTED_MODULE_2__[\"treemapBinary\"],\n  dice: d3_hierarchy__WEBPACK_IMPORTED_MODULE_2__[\"treemapDice\"],\n  slice: d3_hierarchy__WEBPACK_IMPORTED_MODULE_2__[\"treemapSlice\"],\n  slicedice: d3_hierarchy__WEBPACK_IMPORTED_MODULE_2__[\"treemapSliceDice\"],\n  squarify: d3_hierarchy__WEBPACK_IMPORTED_MODULE_2__[\"treemapSquarify\"],\n  resquarify: d3_hierarchy__WEBPACK_IMPORTED_MODULE_2__[\"treemapResquarify\"]\n};\nconst Output$3 = ['x0', 'y0', 'x1', 'y1', 'depth', 'children'];\n/**\n * Treemap layout.\n * @constructor\n * @param {object} params - The parameters for this operator.\n * @param {function(object): *} params.field - The value field to size nodes.\n */\n\nfunction Treemap(params) {\n  HierarchyLayout.call(this, params);\n}\nTreemap.Definition = {\n  'type': 'Treemap',\n  'metadata': {\n    'tree': true,\n    'modifies': true\n  },\n  'params': [{\n    'name': 'field',\n    'type': 'field'\n  }, {\n    'name': 'sort',\n    'type': 'compare'\n  }, {\n    'name': 'method',\n    'type': 'enum',\n    'default': 'squarify',\n    'values': ['squarify', 'resquarify', 'binary', 'dice', 'slice', 'slicedice']\n  }, {\n    'name': 'padding',\n    'type': 'number',\n    'default': 0\n  }, {\n    'name': 'paddingInner',\n    'type': 'number',\n    'default': 0\n  }, {\n    'name': 'paddingOuter',\n    'type': 'number',\n    'default': 0\n  }, {\n    'name': 'paddingTop',\n    'type': 'number',\n    'default': 0\n  }, {\n    'name': 'paddingRight',\n    'type': 'number',\n    'default': 0\n  }, {\n    'name': 'paddingBottom',\n    'type': 'number',\n    'default': 0\n  }, {\n    'name': 'paddingLeft',\n    'type': 'number',\n    'default': 0\n  }, {\n    'name': 'ratio',\n    'type': 'number',\n    'default': 1.618033988749895\n  }, {\n    'name': 'round',\n    'type': 'boolean',\n    'default': false\n  }, {\n    'name': 'size',\n    'type': 'number',\n    'array': true,\n    'length': 2\n  }, {\n    'name': 'as',\n    'type': 'string',\n    'array': true,\n    'length': Output$3.length,\n    'default': Output$3\n  }]\n};\nObject(vega_util__WEBPACK_IMPORTED_MODULE_1__[\"inherits\"])(Treemap, HierarchyLayout, {\n  /**\n   * Treemap layout generator. Adds 'method' and 'ratio' parameters\n   * to configure the underlying tile method.\n   */\n  layout() {\n    const x = Object(d3_hierarchy__WEBPACK_IMPORTED_MODULE_2__[\"treemap\"])();\n\n    x.ratio = _ => {\n      const t = x.tile();\n      if (t.ratio) x.tile(t.ratio(_));\n    };\n\n    x.method = _ => {\n      if (Object(vega_util__WEBPACK_IMPORTED_MODULE_1__[\"hasOwnProperty\"])(Tiles, _)) x.tile(Tiles[_]);else Object(vega_util__WEBPACK_IMPORTED_MODULE_1__[\"error\"])('Unrecognized Treemap layout method: ' + _);\n    };\n\n    return x;\n  },\n\n  params: ['method', 'ratio', 'size', 'round', 'padding', 'paddingInner', 'paddingOuter', 'paddingTop', 'paddingRight', 'paddingBottom', 'paddingLeft'],\n  fields: Output$3\n});\n\n\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,[encoded data, 23916 characters]\n//# sourceURL=webpack-internal:///./node_modules/vega/node_modules/vega-hierarchy/build/vega-hierarchy.module.js\n");

/***/ }),

/***/ "./node_modules/vega/node_modules/vega-loader/index.browser.js":
/*!*********************************************************************!*\
  !*** ./node_modules/vega/node_modules/vega-loader/index.browser.js ***!
  \*********************************************************************/
/*! exports provided: loader, read, inferType, inferTypes, typeParsers, format, formats, responseType */
/***/ (function(module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"loader\", function() { return loader; });\n/* harmony import */ var _src_loader__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./src/loader */ \"./node_modules/vega/node_modules/vega-loader/src/loader.js\");\n/* harmony import */ var _src_read__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./src/read */ \"./node_modules/vega/node_modules/vega-loader/src/read.js\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"read\", function() { return _src_read__WEBPACK_IMPORTED_MODULE_1__[\"default\"]; });\n\n/* harmony import */ var _src_type__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./src/type */ \"./node_modules/vega/node_modules/vega-loader/src/type.js\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"inferType\", function() { return _src_type__WEBPACK_IMPORTED_MODULE_2__[\"inferType\"]; });\n\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"inferTypes\", function() { return _src_type__WEBPACK_IMPORTED_MODULE_2__[\"inferTypes\"]; });\n\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"typeParsers\", function() { return _src_type__WEBPACK_IMPORTED_MODULE_2__[\"typeParsers\"]; });\n\n/* harmony import */ var _src_formats_index__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ./src/formats/index */ \"./node_modules/vega/node_modules/vega-loader/src/formats/index.js\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"format\", function() { return _src_formats_index__WEBPACK_IMPORTED_MODULE_3__[\"format\"]; });\n\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"formats\", function() { return _src_formats_index__WEBPACK_IMPORTED_MODULE_3__[\"formats\"]; });\n\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"responseType\", function() { return _src_formats_index__WEBPACK_IMPORTED_MODULE_3__[\"responseType\"]; });\n\n\n\nconst loader = Object(_src_loader__WEBPACK_IMPORTED_MODULE_0__[\"default\"])(\n  typeof fetch !== 'undefined' && fetch, // use built-in fetch API\n  null // no file system access\n);\n\n\n\n\n\n\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvdmVnYS9ub2RlX21vZHVsZXMvdmVnYS1sb2FkZXIvaW5kZXguYnJvd3Nlci5qcy5qcyIsInNvdXJjZXMiOlsid2VicGFjazovLy8uL25vZGVfbW9kdWxlcy92ZWdhL25vZGVfbW9kdWxlcy92ZWdhLWxvYWRlci9pbmRleC5icm93c2VyLmpzPzMxNzgiXSwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IGxvYWRlckZhY3RvcnkgZnJvbSAnLi9zcmMvbG9hZGVyJztcblxuZXhwb3J0IGNvbnN0IGxvYWRlciA9IGxvYWRlckZhY3RvcnkoXG4gIHR5cGVvZiBmZXRjaCAhPT0gJ3VuZGVmaW5lZCcgJiYgZmV0Y2gsIC8vIHVzZSBidWlsdC1pbiBmZXRjaCBBUElcbiAgbnVsbCAvLyBubyBmaWxlIHN5c3RlbSBhY2Nlc3Ncbik7XG5cbmV4cG9ydCB7XG4gIGRlZmF1bHQgYXMgcmVhZFxufSBmcm9tICcuL3NyYy9yZWFkJztcblxuZXhwb3J0IHtcbiAgaW5mZXJUeXBlLFxuICBpbmZlclR5cGVzLFxuICB0eXBlUGFyc2Vyc1xufSBmcm9tICcuL3NyYy90eXBlJztcblxuZXhwb3J0IHtcbiAgZm9ybWF0LFxuICBmb3JtYXRzLFxuICByZXNwb25zZVR5cGVcbn0gZnJvbSAnLi9zcmMvZm9ybWF0cy9pbmRleCc7XG4iXSwibWFwcGluZ3MiOiJBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUdBO0FBQ0E7QUFLQTtBQUNBO0FBS0E7Iiwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///./node_modules/vega/node_modules/vega-loader/index.browser.js\n");

/***/ }),

/***/ "./node_modules/vega/node_modules/vega-loader/src/formats/dsv.js":
/*!***********************************************************************!*\
  !*** ./node_modules/vega/node_modules/vega-loader/src/formats/dsv.js ***!
  \***********************************************************************/
/*! exports provided: delimitedFormat, default */
/***/ (function(module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"delimitedFormat\", function() { return delimitedFormat; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"default\", function() { return dsv; });\n/* harmony import */ var d3_dsv__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! d3-dsv */ \"./node_modules/vega/node_modules/d3-dsv/src/index.js\");\n/* harmony import */ var vega_util__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! vega-util */ \"./node_modules/vega/node_modules/vega-util/build/vega-util.module.js\");\n\n\n\nfunction delimitedFormat(delimiter) {\n  const parse = function(data, format) {\n    const delim = {delimiter: delimiter};\n    return dsv(data, format ? Object(vega_util__WEBPACK_IMPORTED_MODULE_1__[\"extend\"])(format, delim) : delim);\n  };\n\n  parse.responseType = 'text';\n\n  return parse;\n}\n\nfunction dsv(data, format) {\n  if (format.header) {\n    data = format.header\n      .map(vega_util__WEBPACK_IMPORTED_MODULE_1__[\"stringValue\"])\n      .join(format.delimiter) + '\\n' + data;\n  }\n  return Object(d3_dsv__WEBPACK_IMPORTED_MODULE_0__[\"dsvFormat\"])(format.delimiter).parse(data + '');\n}\n\ndsv.responseType = 'text';\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvdmVnYS9ub2RlX21vZHVsZXMvdmVnYS1sb2FkZXIvc3JjL2Zvcm1hdHMvZHN2LmpzLmpzIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL3ZlZ2Evbm9kZV9tb2R1bGVzL3ZlZ2EtbG9hZGVyL3NyYy9mb3JtYXRzL2Rzdi5qcz9iZDgyIl0sInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7ZHN2Rm9ybWF0fSBmcm9tICdkMy1kc3YnO1xuaW1wb3J0IHtleHRlbmQsIHN0cmluZ1ZhbHVlfSBmcm9tICd2ZWdhLXV0aWwnO1xuXG5leHBvcnQgZnVuY3Rpb24gZGVsaW1pdGVkRm9ybWF0KGRlbGltaXRlcikge1xuICBjb25zdCBwYXJzZSA9IGZ1bmN0aW9uKGRhdGEsIGZvcm1hdCkge1xuICAgIGNvbnN0IGRlbGltID0ge2RlbGltaXRlcjogZGVsaW1pdGVyfTtcbiAgICByZXR1cm4gZHN2KGRhdGEsIGZvcm1hdCA/IGV4dGVuZChmb3JtYXQsIGRlbGltKSA6IGRlbGltKTtcbiAgfTtcblxuICBwYXJzZS5yZXNwb25zZVR5cGUgPSAndGV4dCc7XG5cbiAgcmV0dXJuIHBhcnNlO1xufVxuXG5leHBvcnQgZGVmYXVsdCBmdW5jdGlvbiBkc3YoZGF0YSwgZm9ybWF0KSB7XG4gIGlmIChmb3JtYXQuaGVhZGVyKSB7XG4gICAgZGF0YSA9IGZvcm1hdC5oZWFkZXJcbiAgICAgIC5tYXAoc3RyaW5nVmFsdWUpXG4gICAgICAuam9pbihmb3JtYXQuZGVsaW1pdGVyKSArICdcXG4nICsgZGF0YTtcbiAgfVxuICByZXR1cm4gZHN2Rm9ybWF0KGZvcm1hdC5kZWxpbWl0ZXIpLnBhcnNlKGRhdGEgKyAnJyk7XG59XG5cbmRzdi5yZXNwb25zZVR5cGUgPSAndGV4dCc7XG4iXSwibWFwcGluZ3MiOiJBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7Iiwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///./node_modules/vega/node_modules/vega-loader/src/formats/dsv.js\n");

/***/ }),

/***/ "./node_modules/vega/node_modules/vega-loader/src/formats/index.js":
/*!*************************************************************************!*\
  !*** ./node_modules/vega/node_modules/vega-loader/src/formats/index.js ***!
  \*************************************************************************/
/*! exports provided: format, formats, responseType */
/***/ (function(module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"format\", function() { return format; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"formats\", function() { return formats; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"responseType\", function() { return responseType; });\n/* harmony import */ var _dsv__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./dsv */ \"./node_modules/vega/node_modules/vega-loader/src/formats/dsv.js\");\n/* harmony import */ var _json__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./json */ \"./node_modules/vega/node_modules/vega-loader/src/formats/json.js\");\n/* harmony import */ var _topojson__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./topojson */ \"./node_modules/vega/node_modules/vega-loader/src/formats/topojson.js\");\n/* harmony import */ var vega_util__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! vega-util */ \"./node_modules/vega/node_modules/vega-util/build/vega-util.module.js\");\n\n\n\n\n\nconst format = {\n  dsv: _dsv__WEBPACK_IMPORTED_MODULE_0__[\"default\"],\n  csv: Object(_dsv__WEBPACK_IMPORTED_MODULE_0__[\"delimitedFormat\"])(','),\n  tsv: Object(_dsv__WEBPACK_IMPORTED_MODULE_0__[\"delimitedFormat\"])('\\t'),\n  json: _json__WEBPACK_IMPORTED_MODULE_1__[\"default\"],\n  topojson: _topojson__WEBPACK_IMPORTED_MODULE_2__[\"default\"]\n};\n\nfunction formats(name, reader) {\n  if (arguments.length > 1) {\n    format[name] = reader;\n    return this;\n  } else {\n    return Object(vega_util__WEBPACK_IMPORTED_MODULE_3__[\"hasOwnProperty\"])(format, name) ? format[name] : null;\n  }\n}\n\nfunction responseType(type) {\n  const f = formats(type);\n  return f && f.responseType || 'text';\n}\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvdmVnYS9ub2RlX21vZHVsZXMvdmVnYS1sb2FkZXIvc3JjL2Zvcm1hdHMvaW5kZXguanMuanMiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvdmVnYS9ub2RlX21vZHVsZXMvdmVnYS1sb2FkZXIvc3JjL2Zvcm1hdHMvaW5kZXguanM/OGU2YiJdLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge2RlbGltaXRlZEZvcm1hdCwgZGVmYXVsdCBhcyBkc3Z9IGZyb20gJy4vZHN2JztcbmltcG9ydCBqc29uIGZyb20gJy4vanNvbic7XG5pbXBvcnQgdG9wb2pzb24gZnJvbSAnLi90b3BvanNvbic7XG5pbXBvcnQge2hhc093blByb3BlcnR5fSBmcm9tICd2ZWdhLXV0aWwnO1xuXG5leHBvcnQgY29uc3QgZm9ybWF0ID0ge1xuICBkc3Y6IGRzdixcbiAgY3N2OiBkZWxpbWl0ZWRGb3JtYXQoJywnKSxcbiAgdHN2OiBkZWxpbWl0ZWRGb3JtYXQoJ1xcdCcpLFxuICBqc29uOiBqc29uLFxuICB0b3BvanNvbjogdG9wb2pzb25cbn07XG5cbmV4cG9ydCBmdW5jdGlvbiBmb3JtYXRzKG5hbWUsIHJlYWRlcikge1xuICBpZiAoYXJndW1lbnRzLmxlbmd0aCA+IDEpIHtcbiAgICBmb3JtYXRbbmFtZV0gPSByZWFkZXI7XG4gICAgcmV0dXJuIHRoaXM7XG4gIH0gZWxzZSB7XG4gICAgcmV0dXJuIGhhc093blByb3BlcnR5KGZvcm1hdCwgbmFtZSkgPyBmb3JtYXRbbmFtZV0gOiBudWxsO1xuICB9XG59XG5cbmV4cG9ydCBmdW5jdGlvbiByZXNwb25zZVR5cGUodHlwZSkge1xuICBjb25zdCBmID0gZm9ybWF0cyh0eXBlKTtcbiAgcmV0dXJuIGYgJiYgZi5yZXNwb25zZVR5cGUgfHwgJ3RleHQnO1xufVxuIl0sIm1hcHBpbmdzIjoiQUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTsiLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///./node_modules/vega/node_modules/vega-loader/src/formats/index.js\n");

/***/ }),

/***/ "./node_modules/vega/node_modules/vega-loader/src/formats/json.js":
/*!************************************************************************!*\
  !*** ./node_modules/vega/node_modules/vega-loader/src/formats/json.js ***!
  \************************************************************************/
/*! exports provided: default */
/***/ (function(module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* WEBPACK VAR INJECTION */(function(Buffer) {/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"default\", function() { return json; });\n/* harmony import */ var vega_util__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! vega-util */ \"./node_modules/vega/node_modules/vega-util/build/vega-util.module.js\");\n\n\nfunction isBuffer(_) {\n  return (typeof Buffer === 'function' && Object(vega_util__WEBPACK_IMPORTED_MODULE_0__[\"isFunction\"])(Buffer.isBuffer))\n    ? Buffer.isBuffer(_) : false;\n}\n\nfunction json(data, format) {\n  const prop = (format && format.property) ? Object(vega_util__WEBPACK_IMPORTED_MODULE_0__[\"field\"])(format.property) : vega_util__WEBPACK_IMPORTED_MODULE_0__[\"identity\"];\n  return Object(vega_util__WEBPACK_IMPORTED_MODULE_0__[\"isObject\"])(data) && !isBuffer(data)\n    ? parseJSON(prop(data), format)\n    : prop(JSON.parse(data));\n}\n\njson.responseType = 'json';\n\nfunction parseJSON(data, format) {\n  if (!Object(vega_util__WEBPACK_IMPORTED_MODULE_0__[\"isArray\"])(data) && Object(vega_util__WEBPACK_IMPORTED_MODULE_0__[\"isIterable\"])(data)) {\n    data = [...data];\n  }\n  return (format && format.copy)\n    ? JSON.parse(JSON.stringify(data))\n    : data;\n}\n\n/* WEBPACK VAR INJECTION */}.call(this, __webpack_require__(/*! ./../../../../../buffer/index.js */ \"./node_modules/buffer/index.js\").Buffer))//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvdmVnYS9ub2RlX21vZHVsZXMvdmVnYS1sb2FkZXIvc3JjL2Zvcm1hdHMvanNvbi5qcy5qcyIsInNvdXJjZXMiOlsid2VicGFjazovLy8uL25vZGVfbW9kdWxlcy92ZWdhL25vZGVfbW9kdWxlcy92ZWdhLWxvYWRlci9zcmMvZm9ybWF0cy9qc29uLmpzPzc5OTAiXSwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtcbiAgZmllbGQsIGlkZW50aXR5LCBpc0FycmF5LCBpc0Z1bmN0aW9uLCBpc0l0ZXJhYmxlLCBpc09iamVjdFxufSBmcm9tICd2ZWdhLXV0aWwnO1xuXG5mdW5jdGlvbiBpc0J1ZmZlcihfKSB7XG4gIHJldHVybiAodHlwZW9mIEJ1ZmZlciA9PT0gJ2Z1bmN0aW9uJyAmJiBpc0Z1bmN0aW9uKEJ1ZmZlci5pc0J1ZmZlcikpXG4gICAgPyBCdWZmZXIuaXNCdWZmZXIoXykgOiBmYWxzZTtcbn1cblxuZXhwb3J0IGRlZmF1bHQgZnVuY3Rpb24ganNvbihkYXRhLCBmb3JtYXQpIHtcbiAgY29uc3QgcHJvcCA9IChmb3JtYXQgJiYgZm9ybWF0LnByb3BlcnR5KSA/IGZpZWxkKGZvcm1hdC5wcm9wZXJ0eSkgOiBpZGVudGl0eTtcbiAgcmV0dXJuIGlzT2JqZWN0KGRhdGEpICYmICFpc0J1ZmZlcihkYXRhKVxuICAgID8gcGFyc2VKU09OKHByb3AoZGF0YSksIGZvcm1hdClcbiAgICA6IHByb3AoSlNPTi5wYXJzZShkYXRhKSk7XG59XG5cbmpzb24ucmVzcG9uc2VUeXBlID0gJ2pzb24nO1xuXG5mdW5jdGlvbiBwYXJzZUpTT04oZGF0YSwgZm9ybWF0KSB7XG4gIGlmICghaXNBcnJheShkYXRhKSAmJiBpc0l0ZXJhYmxlKGRhdGEpKSB7XG4gICAgZGF0YSA9IFsuLi5kYXRhXTtcbiAgfVxuICByZXR1cm4gKGZvcm1hdCAmJiBmb3JtYXQuY29weSlcbiAgICA/IEpTT04ucGFyc2UoSlNPTi5zdHJpbmdpZnkoZGF0YSkpXG4gICAgOiBkYXRhO1xufVxuIl0sIm1hcHBpbmdzIjoiQUFBQTtBQUFBO0FBQUE7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0EiLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///./node_modules/vega/node_modules/vega-loader/src/formats/json.js\n");

/***/ }),

/***/ "./node_modules/vega/node_modules/vega-loader/src/formats/topojson.js":
/*!****************************************************************************!*\
  !*** ./node_modules/vega/node_modules/vega-loader/src/formats/topojson.js ***!
  \****************************************************************************/
/*! exports provided: default */
/***/ (function(module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"default\", function() { return topojson; });\n/* harmony import */ var _json__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./json */ \"./node_modules/vega/node_modules/vega-loader/src/formats/json.js\");\n/* harmony import */ var topojson_client__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! topojson-client */ \"./node_modules/topojson-client/src/index.js\");\n/* harmony import */ var vega_util__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! vega-util */ \"./node_modules/vega/node_modules/vega-util/build/vega-util.module.js\");\n\n\n\n\nconst filters = {\n  interior: (a, b) => a !== b,\n  exterior: (a, b) => a === b\n};\n\nfunction topojson(data, format) {\n  let method, object, property, filter;\n  data = Object(_json__WEBPACK_IMPORTED_MODULE_0__[\"default\"])(data, format);\n\n  if (format && format.feature) {\n    method = topojson_client__WEBPACK_IMPORTED_MODULE_1__[\"feature\"];\n    property = format.feature;\n  } else if (format && format.mesh) {\n    method = topojson_client__WEBPACK_IMPORTED_MODULE_1__[\"mesh\"];\n    property = format.mesh;\n    filter = filters[format.filter];\n  } else {\n    Object(vega_util__WEBPACK_IMPORTED_MODULE_2__[\"error\"])('Missing TopoJSON feature or mesh parameter.');\n  }\n\n  object = (object = data.objects[property])\n    ? method(data, object, filter)\n    : Object(vega_util__WEBPACK_IMPORTED_MODULE_2__[\"error\"])('Invalid TopoJSON object: ' + property);\n\n  return object && object.features || [object];\n}\n\ntopojson.responseType = 'json';\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvdmVnYS9ub2RlX21vZHVsZXMvdmVnYS1sb2FkZXIvc3JjL2Zvcm1hdHMvdG9wb2pzb24uanMuanMiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvdmVnYS9ub2RlX21vZHVsZXMvdmVnYS1sb2FkZXIvc3JjL2Zvcm1hdHMvdG9wb2pzb24uanM/ZTMyMyJdLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQganNvbiBmcm9tICcuL2pzb24nO1xuaW1wb3J0IHtmZWF0dXJlLCBtZXNofSBmcm9tICd0b3BvanNvbi1jbGllbnQnO1xuaW1wb3J0IHtlcnJvcn0gZnJvbSAndmVnYS11dGlsJztcblxuY29uc3QgZmlsdGVycyA9IHtcbiAgaW50ZXJpb3I6IChhLCBiKSA9PiBhICE9PSBiLFxuICBleHRlcmlvcjogKGEsIGIpID0+IGEgPT09IGJcbn07XG5cbmV4cG9ydCBkZWZhdWx0IGZ1bmN0aW9uIHRvcG9qc29uKGRhdGEsIGZvcm1hdCkge1xuICBsZXQgbWV0aG9kLCBvYmplY3QsIHByb3BlcnR5LCBmaWx0ZXI7XG4gIGRhdGEgPSBqc29uKGRhdGEsIGZvcm1hdCk7XG5cbiAgaWYgKGZvcm1hdCAmJiBmb3JtYXQuZmVhdHVyZSkge1xuICAgIG1ldGhvZCA9IGZlYXR1cmU7XG4gICAgcHJvcGVydHkgPSBmb3JtYXQuZmVhdHVyZTtcbiAgfSBlbHNlIGlmIChmb3JtYXQgJiYgZm9ybWF0Lm1lc2gpIHtcbiAgICBtZXRob2QgPSBtZXNoO1xuICAgIHByb3BlcnR5ID0gZm9ybWF0Lm1lc2g7XG4gICAgZmlsdGVyID0gZmlsdGVyc1tmb3JtYXQuZmlsdGVyXTtcbiAgfSBlbHNlIHtcbiAgICBlcnJvcignTWlzc2luZyBUb3BvSlNPTiBmZWF0dXJlIG9yIG1lc2ggcGFyYW1ldGVyLicpO1xuICB9XG5cbiAgb2JqZWN0ID0gKG9iamVjdCA9IGRhdGEub2JqZWN0c1twcm9wZXJ0eV0pXG4gICAgPyBtZXRob2QoZGF0YSwgb2JqZWN0LCBmaWx0ZXIpXG4gICAgOiBlcnJvcignSW52YWxpZCBUb3BvSlNPTiBvYmplY3Q6ICcgKyBwcm9wZXJ0eSk7XG5cbiAgcmV0dXJuIG9iamVjdCAmJiBvYmplY3QuZmVhdHVyZXMgfHwgW29iamVjdF07XG59XG5cbnRvcG9qc29uLnJlc3BvbnNlVHlwZSA9ICdqc29uJztcbiJdLCJtYXBwaW5ncyI6IkFBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7Iiwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///./node_modules/vega/node_modules/vega-loader/src/formats/topojson.js\n");

/***/ }),

/***/ "./node_modules/vega/node_modules/vega-loader/src/loader.js":
/*!******************************************************************!*\
  !*** ./node_modules/vega/node_modules/vega-loader/src/loader.js ***!
  \******************************************************************/
/*! exports provided: default */
/***/ (function(module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var vega_util__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! vega-util */ \"./node_modules/vega/node_modules/vega-util/build/vega-util.module.js\");\n\n\n// Matches absolute URLs with optional protocol\n//   https://...    file://...    //...\nconst protocol_re = /^([A-Za-z]+:)?\\/\\//;\n\n// Matches allowed URIs. From https://github.com/cure53/DOMPurify/blob/master/src/regexp.js with added file://\nconst allowed_re = /^(?:(?:(?:f|ht)tps?|mailto|tel|callto|cid|xmpp|file|data):|[^a-z]|[a-z+.\\-]+(?:[^a-z+.\\-:]|$))/i; // eslint-disable-line no-useless-escape\nconst whitespace_re = /[\\u0000-\\u0020\\u00A0\\u1680\\u180E\\u2000-\\u2029\\u205f\\u3000]/g; // eslint-disable-line no-control-regex\n\n\n// Special treatment in node.js for the file: protocol\nconst fileProtocol = 'file://';\n\n/**\n * Factory for a loader constructor that provides methods for requesting\n * files from either the network or disk, and for sanitizing request URIs.\n * @param {function} fetch - The Fetch API for HTTP network requests.\n *   If null or undefined, HTTP loading will be disabled.\n * @param {object} fs - The file system interface for file loading.\n *   If null or undefined, local file loading will be disabled.\n * @return {function} A loader constructor with the following signature:\n *   param {object} [options] - Optional default loading options to use.\n *   return {object} - A new loader instance.\n */\n/* harmony default export */ __webpack_exports__[\"default\"] = (function(fetch, fs) {\n  return options => ({\n    options: options || {},\n    sanitize: sanitize,\n    load: load,\n    fileAccess: !!fs,\n    file: fileLoader(fs),\n    http: httpLoader(fetch)\n  });\n});\n\n/**\n * Load an external resource, typically either from the web or from the local\n * filesystem. This function uses {@link sanitize} to first sanitize the uri,\n * then calls either {@link http} (for web requests) or {@link file} (for\n * filesystem loading).\n * @param {string} uri - The resource indicator (e.g., URL or filename).\n * @param {object} [options] - Optional loading options. These options will\n *   override any existing default options.\n * @return {Promise} - A promise that resolves to the loaded content.\n */\nasync function load(uri, options) {\n  const opt = await this.sanitize(uri, options),\n        url = opt.href;\n\n  return opt.localFile\n    ? this.file(url)\n    : this.http(url, options);\n}\n\n/**\n * URI sanitizer function.\n * @param {string} uri - The uri (url or filename) to sanity check.\n * @param {object} options - An options hash.\n * @return {Promise} - A promise that resolves to an object containing\n *  sanitized uri data, or rejects it the input uri is deemed invalid.\n *  The properties of the resolved object are assumed to be\n *  valid attributes for an HTML 'a' tag. The sanitized uri *must* be\n *  provided by the 'href' property of the returned object.\n */\nasync function sanitize(uri, options) {\n  options = Object(vega_util__WEBPACK_IMPORTED_MODULE_0__[\"extend\"])({}, this.options, options);\n\n  const fileAccess = this.fileAccess,\n        result = {href: null};\n\n  let isFile, loadFile, base;\n\n  const isAllowed = allowed_re.test(uri.replace(whitespace_re, ''));\n\n  if (uri == null || typeof uri !== 'string' || !isAllowed) {\n    Object(vega_util__WEBPACK_IMPORTED_MODULE_0__[\"error\"])('Sanitize failure, invalid URI: ' + Object(vega_util__WEBPACK_IMPORTED_MODULE_0__[\"stringValue\"])(uri));\n  }\n\n  const hasProtocol = protocol_re.test(uri);\n\n  // if relative url (no protocol/host), prepend baseURL\n  if ((base = options.baseURL) && !hasProtocol) {\n    // Ensure that there is a slash between the baseURL (e.g. hostname) and url\n    if (!uri.startsWith('/') && base[base.length-1] !== '/') {\n      uri = '/' + uri;\n    }\n    uri = base + uri;\n  }\n\n  // should we load from file system?\n  loadFile = (isFile = uri.startsWith(fileProtocol))\n    || options.mode === 'file'\n    || options.mode !== 'http' && !hasProtocol && fileAccess;\n\n  if (isFile) {\n    // strip file protocol\n    uri = uri.slice(fileProtocol.length);\n  } else if (uri.startsWith('//')) {\n    if (options.defaultProtocol === 'file') {\n      // if is file, strip protocol and set loadFile flag\n      uri = uri.slice(2);\n      loadFile = true;\n    } else {\n      // if relative protocol (starts with '//'), prepend default protocol\n      uri = (options.defaultProtocol || 'http') + ':' + uri;\n    }\n  }\n\n  // set non-enumerable mode flag to indicate local file load\n  Object.defineProperty(result, 'localFile', {value: !!loadFile});\n\n  // set uri\n  result.href = uri;\n\n  // set default result target, if specified\n  if (options.target) {\n    result.target = options.target + '';\n  }\n\n  // set default result rel, if specified (#1542)\n  if (options.rel) {\n    result.rel = options.rel + '';\n  }\n\n  // provide control over cross-origin image handling (#2238)\n  // https://developer.mozilla.org/en-US/docs/Web/HTML/CORS_enabled_image\n  if (options.context === 'image' && options.crossOrigin) {\n    result.crossOrigin = options.crossOrigin + '';\n  }\n\n  // return\n  return result;\n}\n\n/**\n * File system loader factory.\n * @param {object} fs - The file system interface.\n * @return {function} - A file loader with the following signature:\n *   param {string} filename - The file system path to load.\n *   param {string} filename - The file system path to load.\n *   return {Promise} A promise that resolves to the file contents.\n */\nfunction fileLoader(fs) {\n  return fs\n    ? filename => new Promise((accept, reject) => {\n        fs.readFile(filename, (error, data) => {\n          if (error) reject(error);\n          else accept(data);\n        });\n      })\n    : fileReject;\n}\n\n/**\n * Default file system loader that simply rejects.\n */\nasync function fileReject() {\n  Object(vega_util__WEBPACK_IMPORTED_MODULE_0__[\"error\"])('No file system access.');\n}\n\n/**\n * HTTP request handler factory.\n * @param {function} fetch - The Fetch API method.\n * @return {function} - An http loader with the following signature:\n *   param {string} url - The url to request.\n *   param {object} options - An options hash.\n *   return {Promise} - A promise that resolves to the file contents.\n */\nfunction httpLoader(fetch) {\n  return fetch\n    ? async function(url, options) {\n        const opt = Object(vega_util__WEBPACK_IMPORTED_MODULE_0__[\"extend\"])({}, this.options.http, options),\n              type = options && options.response,\n              response = await fetch(url, opt);\n\n        return !response.ok\n          ? Object(vega_util__WEBPACK_IMPORTED_MODULE_0__[\"error\"])(response.status + '' + response.statusText)\n          : Object(vega_util__WEBPACK_IMPORTED_MODULE_0__[\"isFunction\"])(response[type]) ? response[type]()\n          : response.text();\n      }\n    : httpReject;\n}\n\n/**\n * Default http request handler that simply rejects.\n */\nasync function httpReject() {\n  Object(vega_util__WEBPACK_IMPORTED_MODULE_0__[\"error\"])('No HTTP fetch method available.');\n}\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,[encoded data, 10336 characters]\n//# sourceURL=webpack-internal:///./node_modules/vega/node_modules/vega-loader/src/loader.js\n");

/***/ }),

/***/ "./node_modules/vega/node_modules/vega-loader/src/read.js":
/*!****************************************************************!*\
  !*** ./node_modules/vega/node_modules/vega-loader/src/read.js ***!
  \****************************************************************/
/*! exports provided: default */
/***/ (function(module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _type__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./type */ \"./node_modules/vega/node_modules/vega-loader/src/type.js\");\n/* harmony import */ var _formats_index__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./formats/index */ \"./node_modules/vega/node_modules/vega-loader/src/formats/index.js\");\n/* harmony import */ var vega_format__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! vega-format */ \"./node_modules/vega-format/build/vega-format.module.js\");\n/* harmony import */ var vega_util__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! vega-util */ \"./node_modules/vega/node_modules/vega-util/build/vega-util.module.js\");\n\n\n\n\n\n/* harmony default export */ __webpack_exports__[\"default\"] = (function(data, schema, timeParser, utcParser) {\n  schema = schema || {};\n\n  const reader = Object(_formats_index__WEBPACK_IMPORTED_MODULE_1__[\"formats\"])(schema.type || 'json');\n  if (!reader) Object(vega_util__WEBPACK_IMPORTED_MODULE_3__[\"error\"])('Unknown data format type: ' + schema.type);\n\n  data = reader(data, schema);\n  if (schema.parse) parse(data, schema.parse, timeParser, utcParser);\n\n  if (Object(vega_util__WEBPACK_IMPORTED_MODULE_3__[\"hasOwnProperty\"])(data, 'columns')) delete data.columns;\n  return data;\n});\n\nfunction parse(data, types, timeParser, utcParser) {\n  if (!data.length) return; // early exit for empty data\n\n  const locale = Object(vega_format__WEBPACK_IMPORTED_MODULE_2__[\"timeFormatDefaultLocale\"])();\n  timeParser = timeParser || locale.timeParse;\n  utcParser = utcParser || locale.utcParse;\n\n  let fields = data.columns || Object.keys(data[0]),\n      datum, field, i, j, n, m;\n\n  if (types === 'auto') types = Object(_type__WEBPACK_IMPORTED_MODULE_0__[\"inferTypes\"])(data, fields);\n\n  fields = Object.keys(types);\n  const parsers = fields.map(field => {\n    const type = types[field];\n    let parts, pattern;\n\n    if (type && (type.startsWith('date:') || type.startsWith('utc:'))) {\n      parts = type.split(/:(.+)?/, 2);  // split on first :\n      pattern = parts[1];\n\n      if ((pattern[0] === '\\'' && pattern[pattern.length-1] === '\\'') ||\n          (pattern[0] === '\"'  && pattern[pattern.length-1] === '\"')) {\n        pattern = pattern.slice(1, -1);\n      }\n\n      const parse = parts[0] === 'utc' ? utcParser : timeParser;\n      return parse(pattern);\n    }\n\n    if (!_type__WEBPACK_IMPORTED_MODULE_0__[\"typeParsers\"][type]) {\n      throw Error('Illegal format pattern: ' + field + ':' + type);\n    }\n\n    return _type__WEBPACK_IMPORTED_MODULE_0__[\"typeParsers\"][type];\n  });\n\n  for (i=0, n=data.length, m=fields.length; i<n; ++i) {\n    datum = data[i];\n    for (j=0; j<m; ++j) {\n      field = fields[j];\n      datum[field] = parsers[j](datum[field]);\n    }\n  }\n}\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvdmVnYS9ub2RlX21vZHVsZXMvdmVnYS1sb2FkZXIvc3JjL3JlYWQuanMuanMiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvdmVnYS9ub2RlX21vZHVsZXMvdmVnYS1sb2FkZXIvc3JjL3JlYWQuanM/NmJiMyJdLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge2luZmVyVHlwZXMsIHR5cGVQYXJzZXJzfSBmcm9tICcuL3R5cGUnO1xuaW1wb3J0IHtmb3JtYXRzfSBmcm9tICcuL2Zvcm1hdHMvaW5kZXgnO1xuaW1wb3J0IHt0aW1lRm9ybWF0RGVmYXVsdExvY2FsZX0gZnJvbSAndmVnYS1mb3JtYXQnO1xuaW1wb3J0IHtlcnJvciwgaGFzT3duUHJvcGVydHl9IGZyb20gJ3ZlZ2EtdXRpbCc7XG5cbmV4cG9ydCBkZWZhdWx0IGZ1bmN0aW9uKGRhdGEsIHNjaGVtYSwgdGltZVBhcnNlciwgdXRjUGFyc2VyKSB7XG4gIHNjaGVtYSA9IHNjaGVtYSB8fCB7fTtcblxuICBjb25zdCByZWFkZXIgPSBmb3JtYXRzKHNjaGVtYS50eXBlIHx8ICdqc29uJyk7XG4gIGlmICghcmVhZGVyKSBlcnJvcignVW5rbm93biBkYXRhIGZvcm1hdCB0eXBlOiAnICsgc2NoZW1hLnR5cGUpO1xuXG4gIGRhdGEgPSByZWFkZXIoZGF0YSwgc2NoZW1hKTtcbiAgaWYgKHNjaGVtYS5wYXJzZSkgcGFyc2UoZGF0YSwgc2NoZW1hLnBhcnNlLCB0aW1lUGFyc2VyLCB1dGNQYXJzZXIpO1xuXG4gIGlmIChoYXNPd25Qcm9wZXJ0eShkYXRhLCAnY29sdW1ucycpKSBkZWxldGUgZGF0YS5jb2x1bW5zO1xuICByZXR1cm4gZGF0YTtcbn1cblxuZnVuY3Rpb24gcGFyc2UoZGF0YSwgdHlwZXMsIHRpbWVQYXJzZXIsIHV0Y1BhcnNlcikge1xuICBpZiAoIWRhdGEubGVuZ3RoKSByZXR1cm47IC8vIGVhcmx5IGV4aXQgZm9yIGVtcHR5IGRhdGFcblxuICBjb25zdCBsb2NhbGUgPSB0aW1lRm9ybWF0RGVmYXVsdExvY2FsZSgpO1xuICB0aW1lUGFyc2VyID0gdGltZVBhcnNlciB8fCBsb2NhbGUudGltZVBhcnNlO1xuICB1dGNQYXJzZXIgPSB1dGNQYXJzZXIgfHwgbG9jYWxlLnV0Y1BhcnNlO1xuXG4gIGxldCBmaWVsZHMgPSBkYXRhLmNvbHVtbnMgfHwgT2JqZWN0LmtleXMoZGF0YVswXSksXG4gICAgICBkYXR1bSwgZmllbGQsIGksIGosIG4sIG07XG5cbiAgaWYgKHR5cGVzID09PSAnYXV0bycpIHR5cGVzID0gaW5mZXJUeXBlcyhkYXRhLCBmaWVsZHMpO1xuXG4gIGZpZWxkcyA9IE9iamVjdC5rZXlzKHR5cGVzKTtcbiAgY29uc3QgcGFyc2VycyA9IGZpZWxkcy5tYXAoZmllbGQgPT4ge1xuICAgIGNvbnN0IHR5cGUgPSB0eXBlc1tmaWVsZF07XG4gICAgbGV0IHBhcnRzLCBwYXR0ZXJuO1xuXG4gICAgaWYgKHR5cGUgJiYgKHR5cGUuc3RhcnRzV2l0aCgnZGF0ZTonKSB8fCB0eXBlLnN0YXJ0c1dpdGgoJ3V0YzonKSkpIHtcbiAgICAgIHBhcnRzID0gdHlwZS5zcGxpdCgvOiguKyk/LywgMik7ICAvLyBzcGxpdCBvbiBmaXJzdCA6XG4gICAgICBwYXR0ZXJuID0gcGFydHNbMV07XG5cbiAgICAgIGlmICgocGF0dGVyblswXSA9PT0gJ1xcJycgJiYgcGF0dGVybltwYXR0ZXJuLmxlbmd0aC0xXSA9PT0gJ1xcJycpIHx8XG4gICAgICAgICAgKHBhdHRlcm5bMF0gPT09ICdcIicgICYmIHBhdHRlcm5bcGF0dGVybi5sZW5ndGgtMV0gPT09ICdcIicpKSB7XG4gICAgICAgIHBhdHRlcm4gPSBwYXR0ZXJuLnNsaWNlKDEsIC0xKTtcbiAgICAgIH1cblxuICAgICAgY29uc3QgcGFyc2UgPSBwYXJ0c1swXSA9PT0gJ3V0YycgPyB1dGNQYXJzZXIgOiB0aW1lUGFyc2VyO1xuICAgICAgcmV0dXJuIHBhcnNlKHBhdHRlcm4pO1xuICAgIH1cblxuICAgIGlmICghdHlwZVBhcnNlcnNbdHlwZV0pIHtcbiAgICAgIHRocm93IEVycm9yKCdJbGxlZ2FsIGZvcm1hdCBwYXR0ZXJuOiAnICsgZmllbGQgKyAnOicgKyB0eXBlKTtcbiAgICB9XG5cbiAgICByZXR1cm4gdHlwZVBhcnNlcnNbdHlwZV07XG4gIH0pO1xuXG4gIGZvciAoaT0wLCBuPWRhdGEubGVuZ3RoLCBtPWZpZWxkcy5sZW5ndGg7IGk8bjsgKytpKSB7XG4gICAgZGF0dW0gPSBkYXRhW2ldO1xuICAgIGZvciAoaj0wOyBqPG07ICsraikge1xuICAgICAgZmllbGQgPSBmaWVsZHNbal07XG4gICAgICBkYXR1bVtmaWVsZF0gPSBwYXJzZXJzW2pdKGRhdHVtW2ZpZWxkXSk7XG4gICAgfVxuICB9XG59XG4iXSwibWFwcGluZ3MiOiJBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7Iiwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///./node_modules/vega/node_modules/vega-loader/src/read.js\n");

/***/ }),

/***/ "./node_modules/vega/node_modules/vega-loader/src/type.js":
/*!****************************************************************!*\
  !*** ./node_modules/vega/node_modules/vega-loader/src/type.js ***!
  \****************************************************************/
/*! exports provided: typeParsers, inferType, inferTypes */
/***/ (function(module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"typeParsers\", function() { return typeParsers; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"inferType\", function() { return inferType; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"inferTypes\", function() { return inferTypes; });\n/* harmony import */ var vega_util__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! vega-util */ \"./node_modules/vega/node_modules/vega-util/build/vega-util.module.js\");\n\n\nconst isValid = _ => _ != null && _ === _;\n\nconst isBoolean = _ => _ === 'true'\n  || _ === 'false'\n  || _ === true\n  || _ === false;\n\nconst isDate = _ => !Number.isNaN(Date.parse(_));\n\nconst isNumber = _ => !Number.isNaN(+_) && !(_ instanceof Date);\n\nconst isInteger = _ => isNumber(_) && Number.isInteger(+_);\n\nconst typeParsers = {\n  boolean: vega_util__WEBPACK_IMPORTED_MODULE_0__[\"toBoolean\"],\n  integer: vega_util__WEBPACK_IMPORTED_MODULE_0__[\"toNumber\"],\n  number:  vega_util__WEBPACK_IMPORTED_MODULE_0__[\"toNumber\"],\n  date:    vega_util__WEBPACK_IMPORTED_MODULE_0__[\"toDate\"],\n  string:  vega_util__WEBPACK_IMPORTED_MODULE_0__[\"toString\"],\n  unknown: vega_util__WEBPACK_IMPORTED_MODULE_0__[\"identity\"]\n};\n\nconst typeTests = [\n  isBoolean,\n  isInteger,\n  isNumber,\n  isDate\n];\n\nconst typeList = [\n  'boolean',\n  'integer',\n  'number',\n  'date'\n];\n\nfunction inferType(values, field) {\n  if (!values || !values.length) return 'unknown';\n\n  const n = values.length,\n        m = typeTests.length,\n        a = typeTests.map((_, i) => i + 1);\n\n  for (let i = 0, t = 0, j, value; i < n; ++i) {\n    value = field ? values[i][field] : values[i];\n    for (j = 0; j < m; ++j) {\n      if (a[j] && isValid(value) && !typeTests[j](value)) {\n        a[j] = 0;\n        ++t;\n        if (t === typeTests.length) return 'string';\n      }\n    }\n  }\n\n  return typeList[\n    a.reduce((u, v) => u === 0 ? v : u, 0) - 1\n  ];\n}\n\nfunction inferTypes(data, fields) {\n  return fields.reduce((types, field) => {\n    types[field] = inferType(data, field);\n    return types;\n  }, {});\n}\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvdmVnYS9ub2RlX21vZHVsZXMvdmVnYS1sb2FkZXIvc3JjL3R5cGUuanMuanMiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvdmVnYS9ub2RlX21vZHVsZXMvdmVnYS1sb2FkZXIvc3JjL3R5cGUuanM/YTk2MyJdLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge2lkZW50aXR5LCB0b0Jvb2xlYW4sIHRvRGF0ZSwgdG9OdW1iZXIsIHRvU3RyaW5nfSBmcm9tICd2ZWdhLXV0aWwnO1xuXG5jb25zdCBpc1ZhbGlkID0gXyA9PiBfICE9IG51bGwgJiYgXyA9PT0gXztcblxuY29uc3QgaXNCb29sZWFuID0gXyA9PiBfID09PSAndHJ1ZSdcbiAgfHwgXyA9PT0gJ2ZhbHNlJ1xuICB8fCBfID09PSB0cnVlXG4gIHx8IF8gPT09IGZhbHNlO1xuXG5jb25zdCBpc0RhdGUgPSBfID0+ICFOdW1iZXIuaXNOYU4oRGF0ZS5wYXJzZShfKSk7XG5cbmNvbnN0IGlzTnVtYmVyID0gXyA9PiAhTnVtYmVyLmlzTmFOKCtfKSAmJiAhKF8gaW5zdGFuY2VvZiBEYXRlKTtcblxuY29uc3QgaXNJbnRlZ2VyID0gXyA9PiBpc051bWJlcihfKSAmJiBOdW1iZXIuaXNJbnRlZ2VyKCtfKTtcblxuZXhwb3J0IGNvbnN0IHR5cGVQYXJzZXJzID0ge1xuICBib29sZWFuOiB0b0Jvb2xlYW4sXG4gIGludGVnZXI6IHRvTnVtYmVyLFxuICBudW1iZXI6ICB0b051bWJlcixcbiAgZGF0ZTogICAgdG9EYXRlLFxuICBzdHJpbmc6ICB0b1N0cmluZyxcbiAgdW5rbm93bjogaWRlbnRpdHlcbn07XG5cbmNvbnN0IHR5cGVUZXN0cyA9IFtcbiAgaXNCb29sZWFuLFxuICBpc0ludGVnZXIsXG4gIGlzTnVtYmVyLFxuICBpc0RhdGVcbl07XG5cbmNvbnN0IHR5cGVMaXN0ID0gW1xuICAnYm9vbGVhbicsXG4gICdpbnRlZ2VyJyxcbiAgJ251bWJlcicsXG4gICdkYXRlJ1xuXTtcblxuZXhwb3J0IGZ1bmN0aW9uIGluZmVyVHlwZSh2YWx1ZXMsIGZpZWxkKSB7XG4gIGlmICghdmFsdWVzIHx8ICF2YWx1ZXMubGVuZ3RoKSByZXR1cm4gJ3Vua25vd24nO1xuXG4gIGNvbnN0IG4gPSB2YWx1ZXMubGVuZ3RoLFxuICAgICAgICBtID0gdHlwZVRlc3RzLmxlbmd0aCxcbiAgICAgICAgYSA9IHR5cGVUZXN0cy5tYXAoKF8sIGkpID0+IGkgKyAxKTtcblxuICBmb3IgKGxldCBpID0gMCwgdCA9IDAsIGosIHZhbHVlOyBpIDwgbjsgKytpKSB7XG4gICAgdmFsdWUgPSBmaWVsZCA/IHZhbHVlc1tpXVtmaWVsZF0gOiB2YWx1ZXNbaV07XG4gICAgZm9yIChqID0gMDsgaiA8IG07ICsraikge1xuICAgICAgaWYgKGFbal0gJiYgaXNWYWxpZCh2YWx1ZSkgJiYgIXR5cGVUZXN0c1tqXSh2YWx1ZSkpIHtcbiAgICAgICAgYVtqXSA9IDA7XG4gICAgICAgICsrdDtcbiAgICAgICAgaWYgKHQgPT09IHR5cGVUZXN0cy5sZW5ndGgpIHJldHVybiAnc3RyaW5nJztcbiAgICAgIH1cbiAgICB9XG4gIH1cblxuICByZXR1cm4gdHlwZUxpc3RbXG4gICAgYS5yZWR1Y2UoKHUsIHYpID0+IHUgPT09IDAgPyB2IDogdSwgMCkgLSAxXG4gIF07XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBpbmZlclR5cGVzKGRhdGEsIGZpZWxkcykge1xuICByZXR1cm4gZmllbGRzLnJlZHVjZSgodHlwZXMsIGZpZWxkKSA9PiB7XG4gICAgdHlwZXNbZmllbGRdID0gaW5mZXJUeXBlKGRhdGEsIGZpZWxkKTtcbiAgICByZXR1cm4gdHlwZXM7XG4gIH0sIHt9KTtcbn1cbiJdLCJtYXBwaW5ncyI6IkFBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOyIsInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///./node_modules/vega/node_modules/vega-loader/src/type.js\n");

/***/ }),

/***/ "./node_modules/vega/node_modules/vega-parser/build/vega-parser.module.js":
/*!********************************************************************************!*\
  !*** ./node_modules/vega/node_modules/vega-parser/build/vega-parser.module.js ***!
  \********************************************************************************/
/*! exports provided: AxisDomainRole, AxisGridRole, AxisLabelRole, AxisRole, AxisTickRole, AxisTitleRole, DataScope, FrameRole, LegendEntryRole, LegendLabelRole, LegendRole, LegendSymbolRole, LegendTitleRole, MarkRole, Scope, ScopeRole, config, parse, signal, signalUpdates, stream */
/***/ (function(module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"AxisDomainRole\", function() { return AxisDomainRole; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"AxisGridRole\", function() { return AxisGridRole; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"AxisLabelRole\", function() { return AxisLabelRole; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"AxisRole\", function() { return AxisRole; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"AxisTickRole\", function() { return AxisTickRole; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"AxisTitleRole\", function() { return AxisTitleRole; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"DataScope\", function() { return DataScope; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"FrameRole\", function() { return FrameRole; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"LegendEntryRole\", function() { return LegendEntryRole; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"LegendLabelRole\", function() { return LegendLabelRole; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"LegendRole\", function() { return LegendRole; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"LegendSymbolRole\", function() { return LegendSymbolRole; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"LegendTitleRole\", function() { return LegendTitleRole; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"MarkRole\", function() { return MarkRole; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"Scope\", function() { return Scope$1; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"ScopeRole\", function() { return ScopeRole; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"config\", function() { return defaults; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"parse\", function() { return parse$1; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"signal\", function() { return parseSignal; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"signalUpdates\", function() { return parseSignalUpdates; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"stream\", function() { return parseStream; });\n/* harmony import */ var vega_util__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! vega-util */ \"./node_modules/vega/node_modules/vega-util/build/vega-util.module.js\");\n/* harmony import */ var vega_functions__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! vega-functions */ \"./node_modules/vega-functions/build/vega-functions.module.js\");\n/* harmony import */ var vega_event_selector__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! vega-event-selector */ \"./node_modules/vega-event-selector/build/vega-event-selector.module.js\");\n/* harmony import */ var vega_scale__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! vega-scale */ \"./node_modules/vega/node_modules/vega-scale/build/vega-scale.module.js\");\n/* harmony import */ var vega_dataflow__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! vega-dataflow */ \"./node_modules/vega/node_modules/vega-dataflow/build/vega-dataflow.module.js\");\n\n\n\n\n\n\nfunction parseAutosize (spec) {\n  return Object(vega_util__WEBPACK_IMPORTED_MODULE_0__[\"isObject\"])(spec) ? spec : {\n    type: spec || 'pad'\n  };\n}\n\nconst number = _ => +_ || 0;\n\nconst paddingObject = _ => ({\n  top: _,\n  bottom: _,\n  left: _,\n  right: _\n});\n\nfunction parsePadding (spec) {\n  return !Object(vega_util__WEBPACK_IMPORTED_MODULE_0__[\"isObject\"])(spec) ? paddingObject(number(spec)) : spec.signal ? spec : {\n    top: number(spec.top),\n    bottom: number(spec.bottom),\n    left: number(spec.left),\n    right: number(spec.right)\n  };\n}\n\nconst encoder = _ => Object(vega_util__WEBPACK_IMPORTED_MODULE_0__[\"isObject\"])(_) && !Object(vega_util__WEBPACK_IMPORTED_MODULE_0__[\"isArray\"])(_) ? Object(vega_util__WEBPACK_IMPORTED_MODULE_0__[\"extend\"])({}, _) : {\n  value: _\n};\nfunction addEncode(object, name, value, set) {\n  if (value != null) {\n    const isEncoder = Object(vega_util__WEBPACK_IMPORTED_MODULE_0__[\"isObject\"])(value) && !Object(vega_util__WEBPACK_IMPORTED_MODULE_0__[\"isArray\"])(value) || Object(vega_util__WEBPACK_IMPORTED_MODULE_0__[\"isArray\"])(value) && value.length && Object(vega_util__WEBPACK_IMPORTED_MODULE_0__[\"isObject\"])(value[0]); // Always assign signal to update, even if the signal is from the enter block\n\n    if (isEncoder) {\n      object.update[name] = value;\n    } else {\n      object[set || 'enter'][name] = {\n        value: value\n      };\n    }\n\n    return 1;\n  } else {\n    return 0;\n  }\n}\nfunction addEncoders(object, enter, update) {\n  for (const name in enter) {\n    addEncode(object, name, enter[name]);\n  }\n\n  for (const name in update) {\n    addEncode(object, name, update[name], 'update');\n  }\n}\nfunction extendEncode(encode, extra, skip) {\n  for (const name in extra) {\n    if (skip && Object(vega_util__WEBPACK_IMPORTED_MODULE_0__[\"hasOwnProperty\"])(skip, name)) continue;\n    encode[name] = Object(vega_util__WEBPACK_IMPORTED_MODULE_0__[\"extend\"])(encode[name] || {}, extra[name]);\n  }\n\n  return encode;\n}\nfunction has(key, encode) {\n  return encode && (encode.enter && encode.enter[key] || encode.update && encode.update[key]);\n}\n\nconst MarkRole = 'mark';\nconst FrameRole = 'frame';\nconst ScopeRole = 'scope';\nconst AxisRole = 'axis';\nconst AxisDomainRole = 'axis-domain';\nconst AxisGridRole = 'axis-grid';\nconst AxisLabelRole = 'axis-label';\nconst AxisTickRole = 'axis-tick';\nconst AxisTitleRole = 'axis-title';\nconst LegendRole = 'legend';\nconst LegendBandRole = 'legend-band';\nconst LegendEntryRole = 'legend-entry';\nconst LegendGradientRole = 'legend-gradient';\nconst LegendLabelRole = 'legend-label';\nconst LegendSymbolRole = 'legend-symbol';\nconst LegendTitleRole = 'legend-title';\nconst TitleRole = 'title';\nconst TitleTextRole = 'title-text';\nconst TitleSubtitleRole = 'title-subtitle';\n\nfunction applyDefaults (encode, type, role, style, config) {\n  const defaults = {},\n        enter = {};\n  let update, key, skip, props; // if text mark, apply global lineBreak settings (#2370)\n\n  key = 'lineBreak';\n\n  if (type === 'text' && config[key] != null && !has(key, encode)) {\n    applyDefault(defaults, key, config[key]);\n  } // ignore legend and axis roles\n\n\n  if (role == 'legend' || String(role).startsWith('axis')) {\n    role = null;\n  } // resolve mark config\n\n\n  props = role === FrameRole ? config.group : role === MarkRole ? Object(vega_util__WEBPACK_IMPORTED_MODULE_0__[\"extend\"])({}, config.mark, config[type]) : null;\n\n  for (key in props) {\n    // do not apply defaults if relevant fields are defined\n    skip = has(key, encode) || (key === 'fill' || key === 'stroke') && (has('fill', encode) || has('stroke', encode));\n    if (!skip) applyDefault(defaults, key, props[key]);\n  } // resolve styles, apply with increasing precedence\n\n\n  Object(vega_util__WEBPACK_IMPORTED_MODULE_0__[\"array\"])(style).forEach(name => {\n    const props = config.style && config.style[name];\n\n    for (const key in props) {\n      if (!has(key, encode)) {\n        applyDefault(defaults, key, props[key]);\n      }\n    }\n  });\n  encode = Object(vega_util__WEBPACK_IMPORTED_MODULE_0__[\"extend\"])({}, encode); // defensive copy\n\n  for (key in defaults) {\n    props = defaults[key];\n\n    if (props.signal) {\n      (update = update || {})[key] = props;\n    } else {\n      enter[key] = props;\n    }\n  }\n\n  encode.enter = Object(vega_util__WEBPACK_IMPORTED_MODULE_0__[\"extend\"])(enter, encode.enter);\n  if (update) encode.update = Object(vega_util__WEBPACK_IMPORTED_MODULE_0__[\"extend\"])(update, encode.update);\n  return encode;\n}\n\nfunction applyDefault(defaults, key, value) {\n  defaults[key] = value && value.signal ? {\n    signal: value.signal\n  } : {\n    value: value\n  };\n}\n\nconst scaleRef = scale => Object(vega_util__WEBPACK_IMPORTED_MODULE_0__[\"isString\"])(scale) ? Object(vega_util__WEBPACK_IMPORTED_MODULE_0__[\"stringValue\"])(scale) : scale.signal ? \"(\".concat(scale.signal, \")\") : field(scale);\n\nfunction entry(enc) {\n  if (enc.gradient != null) {\n    return gradient(enc);\n  }\n\n  let value = enc.signal ? \"(\".concat(enc.signal, \")\") : enc.color ? color(enc.color) : enc.field != null ? field(enc.field) : enc.value !== undefined ? Object(vega_util__WEBPACK_IMPORTED_MODULE_0__[\"stringValue\"])(enc.value) : undefined;\n\n  if (enc.scale != null) {\n    value = scale(enc, value);\n  }\n\n  if (value === undefined) {\n    value = null;\n  }\n\n  if (enc.exponent != null) {\n    value = \"pow(\".concat(value, \",\").concat(property(enc.exponent), \")\");\n  }\n\n  if (enc.mult != null) {\n    value += \"*\".concat(property(enc.mult));\n  }\n\n  if (enc.offset != null) {\n    value += \"+\".concat(property(enc.offset));\n  }\n\n  if (enc.round) {\n    value = \"round(\".concat(value, \")\");\n  }\n\n  return value;\n}\n\nconst _color = (type, x, y, z) => \"(\".concat(type, \"(\").concat([x, y, z].map(entry).join(','), \")+'')\");\n\nfunction color(enc) {\n  return enc.c ? _color('hcl', enc.h, enc.c, enc.l) : enc.h || enc.s ? _color('hsl', enc.h, enc.s, enc.l) : enc.l || enc.a ? _color('lab', enc.l, enc.a, enc.b) : enc.r || enc.g || enc.b ? _color('rgb', enc.r, enc.g, enc.b) : null;\n}\n\nfunction gradient(enc) {\n  // map undefined to null; expression lang does not allow undefined\n  const args = [enc.start, enc.stop, enc.count].map(_ => _ == null ? null : Object(vega_util__WEBPACK_IMPORTED_MODULE_0__[\"stringValue\"])(_)); // trim null inputs from the end\n\n  while (args.length && Object(vega_util__WEBPACK_IMPORTED_MODULE_0__[\"peek\"])(args) == null) args.pop();\n\n  args.unshift(scaleRef(enc.gradient));\n  return \"gradient(\".concat(args.join(','), \")\");\n}\n\nfunction property(property) {\n  return Object(vega_util__WEBPACK_IMPORTED_MODULE_0__[\"isObject\"])(property) ? '(' + entry(property) + ')' : property;\n}\n\nfunction field(ref) {\n  return resolveField(Object(vega_util__WEBPACK_IMPORTED_MODULE_0__[\"isObject\"])(ref) ? ref : {\n    datum: ref\n  });\n}\n\nfunction resolveField(ref) {\n  let object, level, field;\n\n  if (ref.signal) {\n    object = 'datum';\n    field = ref.signal;\n  } else if (ref.group || ref.parent) {\n    level = Math.max(1, ref.level || 1);\n    object = 'item';\n\n    while (level-- > 0) {\n      object += '.mark.group';\n    }\n\n    if (ref.parent) {\n      field = ref.parent;\n      object += '.datum';\n    } else {\n      field = ref.group;\n    }\n  } else if (ref.datum) {\n    object = 'datum';\n    field = ref.datum;\n  } else {\n    Object(vega_util__WEBPACK_IMPORTED_MODULE_0__[\"error\"])('Invalid field reference: ' + Object(vega_util__WEBPACK_IMPORTED_MODULE_0__[\"stringValue\"])(ref));\n  }\n\n  if (!ref.signal) {\n    field = Object(vega_util__WEBPACK_IMPORTED_MODULE_0__[\"isString\"])(field) ? Object(vega_util__WEBPACK_IMPORTED_MODULE_0__[\"splitAccessPath\"])(field).map(vega_util__WEBPACK_IMPORTED_MODULE_0__[\"stringValue\"]).join('][') : resolveField(field);\n  }\n\n  return object + '[' + field + ']';\n}\n\nfunction scale(enc, value) {\n  const scale = scaleRef(enc.scale);\n\n  if (enc.range != null) {\n    // pull value from scale range\n    value = \"lerp(_range(\".concat(scale, \"), \").concat(+enc.range, \")\");\n  } else {\n    // run value through scale and/or pull scale bandwidth\n    if (value !== undefined) value = \"_scale(\".concat(scale, \", \").concat(value, \")\");\n\n    if (enc.band) {\n      value = (value ? value + '+' : '') + \"_bandwidth(\".concat(scale, \")\") + (+enc.band === 1 ? '' : '*' + property(enc.band));\n\n      if (enc.extra) {\n        // include logic to handle extraneous elements\n        value = \"(datum.extra ? _scale(\".concat(scale, \", datum.extra.value) : \").concat(value, \")\");\n      }\n    }\n\n    if (value == null) value = '0';\n  }\n\n  return value;\n}\n\nfunction rule (enc) {\n  let code = '';\n  enc.forEach(rule => {\n    const value = entry(rule);\n    code += rule.test ? \"(\".concat(rule.test, \")?\").concat(value, \":\") : value;\n  }); // if no else clause, terminate with null (#1366)\n\n  if (Object(vega_util__WEBPACK_IMPORTED_MODULE_0__[\"peek\"])(code) === ':') {\n    code += 'null';\n  }\n\n  return code;\n}\n\nfunction parseEncode (encode, type, role, style, scope, params) {\n  const enc = {};\n  params = params || {};\n  params.encoders = {\n    $encode: enc\n  };\n  encode = applyDefaults(encode, type, role, style, scope.config);\n\n  for (const key in encode) {\n    enc[key] = parseBlock(encode[key], type, params, scope);\n  }\n\n  return params;\n}\n\nfunction parseBlock(block, marktype, params, scope) {\n  const channels = {},\n        fields = {};\n\n  for (const name in block) {\n    if (block[name] != null) {\n      // skip any null entries\n      channels[name] = parse(expr(block[name]), scope, params, fields);\n    }\n  }\n\n  return {\n    $expr: {\n      marktype,\n      channels\n    },\n    $fields: Object.keys(fields),\n    $output: Object.keys(block)\n  };\n}\n\nfunction expr(enc) {\n  return Object(vega_util__WEBPACK_IMPORTED_MODULE_0__[\"isArray\"])(enc) ? rule(enc) : entry(enc);\n}\n\nfunction parse(code, scope, params, fields) {\n  const expr = Object(vega_functions__WEBPACK_IMPORTED_MODULE_1__[\"parseExpression\"])(code, scope);\n  expr.$fields.forEach(name => fields[name] = 1);\n  Object(vega_util__WEBPACK_IMPORTED_MODULE_0__[\"extend\"])(params, expr.$params);\n  return expr.$expr;\n}\n\nconst OUTER = 'outer',\n      OUTER_INVALID = ['value', 'update', 'init', 'react', 'bind'];\n\nfunction outerError(prefix, name) {\n  Object(vega_util__WEBPACK_IMPORTED_MODULE_0__[\"error\"])(prefix + ' for \"outer\" push: ' + Object(vega_util__WEBPACK_IMPORTED_MODULE_0__[\"stringValue\"])(name));\n}\n\nfunction parseSignal (signal, scope) {\n  const name = signal.name;\n\n  if (signal.push === OUTER) {\n    // signal must already be defined, raise error if not\n    if (!scope.signals[name]) outerError('No prior signal definition', name); // signal push must not use properties reserved for standard definition\n\n    OUTER_INVALID.forEach(prop => {\n      if (signal[prop] !== undefined) outerError('Invalid property ', prop);\n    });\n  } else {\n    // define a new signal in the current scope\n    const op = scope.addSignal(name, signal.value);\n    if (signal.react === false) op.react = false;\n    if (signal.bind) scope.addBinding(name, signal.bind);\n  }\n}\n\nfunction Entry(type, value, params, parent) {\n  this.id = -1;\n  this.type = type;\n  this.value = value;\n  this.params = params;\n  if (parent) this.parent = parent;\n}\nfunction entry$1(type, value, params, parent) {\n  return new Entry(type, value, params, parent);\n}\nfunction operator(value, params) {\n  return entry$1('operator', value, params);\n} // -----\n\nfunction ref(op) {\n  const ref = {\n    $ref: op.id\n  }; // if operator not yet registered, cache ref to resolve later\n\n  if (op.id < 0) (op.refs = op.refs || []).push(ref);\n  return ref;\n}\nfunction fieldRef(field, name) {\n  return name ? {\n    $field: field,\n    $name: name\n  } : {\n    $field: field\n  };\n}\nconst keyFieldRef = fieldRef('key');\nfunction compareRef(fields, orders) {\n  return {\n    $compare: fields,\n    $order: orders\n  };\n}\nfunction keyRef(fields, flat) {\n  const ref = {\n    $key: fields\n  };\n  if (flat) ref.$flat = true;\n  return ref;\n} // -----\n\nconst Ascending = 'ascending';\nconst Descending = 'descending';\nfunction sortKey(sort) {\n  return !Object(vega_util__WEBPACK_IMPORTED_MODULE_0__[\"isObject\"])(sort) ? '' : (sort.order === Descending ? '-' : '+') + aggrField(sort.op, sort.field);\n}\nfunction aggrField(op, field) {\n  return (op && op.signal ? '$' + op.signal : op || '') + (op && field ? '_' : '') + (field && field.signal ? '$' + field.signal : field || '');\n} // -----\n\nconst Scope = 'scope';\nconst View = 'view';\nfunction isSignal(_) {\n  return _ && _.signal;\n}\nfunction isExpr(_) {\n  return _ && _.expr;\n}\nfunction hasSignal(_) {\n  if (isSignal(_)) return true;\n  if (Object(vega_util__WEBPACK_IMPORTED_MODULE_0__[\"isObject\"])(_)) for (const key in _) {\n    if (hasSignal(_[key])) return true;\n  }\n  return false;\n}\nfunction value(specValue, defaultValue) {\n  return specValue != null ? specValue : defaultValue;\n}\nfunction deref(v) {\n  return v && v.signal || v;\n}\n\nconst Timer = 'timer';\nfunction parseStream(stream, scope) {\n  const method = stream.merge ? mergeStream : stream.stream ? nestedStream : stream.type ? eventStream : Object(vega_util__WEBPACK_IMPORTED_MODULE_0__[\"error\"])('Invalid stream specification: ' + Object(vega_util__WEBPACK_IMPORTED_MODULE_0__[\"stringValue\"])(stream));\n  return method(stream, scope);\n}\n\nfunction eventSource(source) {\n  return source === Scope ? View : source || View;\n}\n\nfunction mergeStream(stream, scope) {\n  const list = stream.merge.map(s => parseStream(s, scope)),\n        entry = streamParameters({\n    merge: list\n  }, stream, scope);\n  return scope.addStream(entry).id;\n}\n\nfunction nestedStream(stream, scope) {\n  const id = parseStream(stream.stream, scope),\n        entry = streamParameters({\n    stream: id\n  }, stream, scope);\n  return scope.addStream(entry).id;\n}\n\nfunction eventStream(stream, scope) {\n  let id;\n\n  if (stream.type === Timer) {\n    id = scope.event(Timer, stream.throttle);\n    stream = {\n      between: stream.between,\n      filter: stream.filter\n    };\n  } else {\n    id = scope.event(eventSource(stream.source), stream.type);\n  }\n\n  const entry = streamParameters({\n    stream: id\n  }, stream, scope);\n  return Object.keys(entry).length === 1 ? id : scope.addStream(entry).id;\n}\n\nfunction streamParameters(entry, stream, scope) {\n  let param = stream.between;\n\n  if (param) {\n    if (param.length !== 2) {\n      Object(vega_util__WEBPACK_IMPORTED_MODULE_0__[\"error\"])('Stream \"between\" parameter must have 2 entries: ' + Object(vega_util__WEBPACK_IMPORTED_MODULE_0__[\"stringValue\"])(stream));\n    }\n\n    entry.between = [parseStream(param[0], scope), parseStream(param[1], scope)];\n  }\n\n  param = stream.filter ? [].concat(stream.filter) : [];\n\n  if (stream.marktype || stream.markname || stream.markrole) {\n    // add filter for mark type, name and/or role\n    param.push(filterMark(stream.marktype, stream.markname, stream.markrole));\n  }\n\n  if (stream.source === Scope) {\n    // add filter to limit events from sub-scope only\n    param.push('inScope(event.item)');\n  }\n\n  if (param.length) {\n    entry.filter = Object(vega_functions__WEBPACK_IMPORTED_MODULE_1__[\"parseExpression\"])('(' + param.join(')&&(') + ')', scope).$expr;\n  }\n\n  if ((param = stream.throttle) != null) {\n    entry.throttle = +param;\n  }\n\n  if ((param = stream.debounce) != null) {\n    entry.debounce = +param;\n  }\n\n  if (stream.consume) {\n    entry.consume = true;\n  }\n\n  return entry;\n}\n\nfunction filterMark(type, name, role) {\n  const item = 'event.item';\n  return item + (type && type !== '*' ? '&&' + item + '.mark.marktype===\\'' + type + '\\'' : '') + (role ? '&&' + item + '.mark.role===\\'' + role + '\\'' : '') + (name ? '&&' + item + '.mark.name===\\'' + name + '\\'' : '');\n}\n\nconst OP_VALUE_EXPR = {\n  code: '_.$value',\n  ast: {\n    type: 'Identifier',\n    value: 'value'\n  }\n};\nfunction parseUpdate (spec, scope, target) {\n  const encode = spec.encode,\n        entry = {\n    target: target\n  };\n  let events = spec.events,\n      update = spec.update,\n      sources = [];\n\n  if (!events) {\n    Object(vega_util__WEBPACK_IMPORTED_MODULE_0__[\"error\"])('Signal update missing events specification.');\n  } // interpret as an event selector string\n\n\n  if (Object(vega_util__WEBPACK_IMPORTED_MODULE_0__[\"isString\"])(events)) {\n    events = Object(vega_event_selector__WEBPACK_IMPORTED_MODULE_2__[\"selector\"])(events, scope.isSubscope() ? Scope : View);\n  } // separate event streams from signal updates\n\n\n  events = Object(vega_util__WEBPACK_IMPORTED_MODULE_0__[\"array\"])(events).filter(s => s.signal || s.scale ? (sources.push(s), 0) : 1); // merge internal operator listeners\n\n  if (sources.length > 1) {\n    sources = [mergeSources(sources)];\n  } // merge event streams, include as source\n\n\n  if (events.length) {\n    sources.push(events.length > 1 ? {\n      merge: events\n    } : events[0]);\n  }\n\n  if (encode != null) {\n    if (update) Object(vega_util__WEBPACK_IMPORTED_MODULE_0__[\"error\"])('Signal encode and update are mutually exclusive.');\n    update = 'encode(item(),' + Object(vega_util__WEBPACK_IMPORTED_MODULE_0__[\"stringValue\"])(encode) + ')';\n  } // resolve update value\n\n\n  entry.update = Object(vega_util__WEBPACK_IMPORTED_MODULE_0__[\"isString\"])(update) ? Object(vega_functions__WEBPACK_IMPORTED_MODULE_1__[\"parseExpression\"])(update, scope) : update.expr != null ? Object(vega_functions__WEBPACK_IMPORTED_MODULE_1__[\"parseExpression\"])(update.expr, scope) : update.value != null ? update.value : update.signal != null ? {\n    $expr: OP_VALUE_EXPR,\n    $params: {\n      $value: scope.signalRef(update.signal)\n    }\n  } : Object(vega_util__WEBPACK_IMPORTED_MODULE_0__[\"error\"])('Invalid signal update specification.');\n\n  if (spec.force) {\n    entry.options = {\n      force: true\n    };\n  }\n\n  sources.forEach(source => scope.addUpdate(Object(vega_util__WEBPACK_IMPORTED_MODULE_0__[\"extend\"])(streamSource(source, scope), entry)));\n}\n\nfunction streamSource(stream, scope) {\n  return {\n    source: stream.signal ? scope.signalRef(stream.signal) : stream.scale ? scope.scaleRef(stream.scale) : parseStream(stream, scope)\n  };\n}\n\nfunction mergeSources(sources) {\n  return {\n    signal: '[' + sources.map(s => s.scale ? 'scale(\"' + s.scale + '\")' : s.signal) + ']'\n  };\n}\n\nfunction parseSignalUpdates (signal, scope) {\n  const op = scope.getSignal(signal.name);\n  let expr = signal.update;\n\n  if (signal.init) {\n    if (expr) {\n      Object(vega_util__WEBPACK_IMPORTED_MODULE_0__[\"error\"])('Signals can not include both init and update expressions.');\n    } else {\n      expr = signal.init;\n      op.initonly = true;\n    }\n  }\n\n  if (expr) {\n    expr = Object(vega_functions__WEBPACK_IMPORTED_MODULE_1__[\"parseExpression\"])(expr, scope);\n    op.update = expr.$expr;\n    op.params = expr.$params;\n  }\n\n  if (signal.on) {\n    signal.on.forEach(_ => parseUpdate(_, scope, op.id));\n  }\n}\n\nconst transform = name => (params, value, parent) => entry$1(name, value, params || undefined, parent);\n\nconst Aggregate = transform('aggregate');\nconst AxisTicks = transform('axisticks');\nconst Bound = transform('bound');\nconst Collect = transform('collect');\nconst Compare = transform('compare');\nconst DataJoin = transform('datajoin');\nconst Encode = transform('encode');\nconst Expression = transform('expression');\nconst Facet = transform('facet');\nconst Field = transform('field');\nconst Key = transform('key');\nconst LegendEntries = transform('legendentries');\nconst Load = transform('load');\nconst Mark = transform('mark');\nconst MultiExtent = transform('multiextent');\nconst MultiValues = transform('multivalues');\nconst Overlap = transform('overlap');\nconst Params = transform('params');\nconst PreFacet = transform('prefacet');\nconst Projection = transform('projection');\nconst Proxy = transform('proxy');\nconst Relay = transform('relay');\nconst Render = transform('render');\nconst Scale = transform('scale');\nconst Sieve = transform('sieve');\nconst SortItems = transform('sortitems');\nconst ViewLayout = transform('viewlayout');\nconst Values = transform('values');\n\nlet FIELD_REF_ID = 0;\nconst MULTIDOMAIN_SORT_OPS = {\n  min: 'min',\n  max: 'max',\n  count: 'sum'\n};\nfunction initScale(spec, scope) {\n  const type = spec.type || 'linear';\n\n  if (!Object(vega_scale__WEBPACK_IMPORTED_MODULE_3__[\"isValidScaleType\"])(type)) {\n    Object(vega_util__WEBPACK_IMPORTED_MODULE_0__[\"error\"])('Unrecognized scale type: ' + Object(vega_util__WEBPACK_IMPORTED_MODULE_0__[\"stringValue\"])(type));\n  }\n\n  scope.addScale(spec.name, {\n    type,\n    domain: undefined\n  });\n}\nfunction parseScale(spec, scope) {\n  const params = scope.getScale(spec.name).params;\n  let key;\n  params.domain = parseScaleDomain(spec.domain, spec, scope);\n\n  if (spec.range != null) {\n    params.range = parseScaleRange(spec, scope, params);\n  }\n\n  if (spec.interpolate != null) {\n    parseScaleInterpolate(spec.interpolate, params);\n  }\n\n  if (spec.nice != null) {\n    params.nice = parseScaleNice(spec.nice);\n  }\n\n  if (spec.bins != null) {\n    params.bins = parseScaleBins(spec.bins, scope);\n  }\n\n  for (key in spec) {\n    if (Object(vega_util__WEBPACK_IMPORTED_MODULE_0__[\"hasOwnProperty\"])(params, key) || key === 'name') continue;\n    params[key] = parseLiteral(spec[key], scope);\n  }\n}\n\nfunction parseLiteral(v, scope) {\n  return !Object(vega_util__WEBPACK_IMPORTED_MODULE_0__[\"isObject\"])(v) ? v : v.signal ? scope.signalRef(v.signal) : Object(vega_util__WEBPACK_IMPORTED_MODULE_0__[\"error\"])('Unsupported object: ' + Object(vega_util__WEBPACK_IMPORTED_MODULE_0__[\"stringValue\"])(v));\n}\n\nfunction parseArray(v, scope) {\n  return v.signal ? scope.signalRef(v.signal) : v.map(v => parseLiteral(v, scope));\n}\n\nfunction dataLookupError(name) {\n  Object(vega_util__WEBPACK_IMPORTED_MODULE_0__[\"error\"])('Can not find data set: ' + Object(vega_util__WEBPACK_IMPORTED_MODULE_0__[\"stringValue\"])(name));\n} // -- SCALE DOMAIN ----\n\n\nfunction parseScaleDomain(domain, spec, scope) {\n  if (!domain) {\n    if (spec.domainMin != null || spec.domainMax != null) {\n      Object(vega_util__WEBPACK_IMPORTED_MODULE_0__[\"error\"])('No scale domain defined for domainMin/domainMax to override.');\n    }\n\n    return; // default domain\n  }\n\n  return domain.signal ? scope.signalRef(domain.signal) : (Object(vega_util__WEBPACK_IMPORTED_MODULE_0__[\"isArray\"])(domain) ? explicitDomain : domain.fields ? multipleDomain : singularDomain)(domain, spec, scope);\n}\n\nfunction explicitDomain(domain, spec, scope) {\n  return domain.map(v => parseLiteral(v, scope));\n}\n\nfunction singularDomain(domain, spec, scope) {\n  const data = scope.getData(domain.data);\n  if (!data) dataLookupError(domain.data);\n  return Object(vega_scale__WEBPACK_IMPORTED_MODULE_3__[\"isDiscrete\"])(spec.type) ? data.valuesRef(scope, domain.field, parseSort(domain.sort, false)) : Object(vega_scale__WEBPACK_IMPORTED_MODULE_3__[\"isQuantile\"])(spec.type) ? data.domainRef(scope, domain.field) : data.extentRef(scope, domain.field);\n}\n\nfunction multipleDomain(domain, spec, scope) {\n  const data = domain.data,\n        fields = domain.fields.reduce((dom, d) => {\n    d = Object(vega_util__WEBPACK_IMPORTED_MODULE_0__[\"isString\"])(d) ? {\n      data: data,\n      field: d\n    } : Object(vega_util__WEBPACK_IMPORTED_MODULE_0__[\"isArray\"])(d) || d.signal ? fieldRef$1(d, scope) : d;\n    dom.push(d);\n    return dom;\n  }, []);\n  return (Object(vega_scale__WEBPACK_IMPORTED_MODULE_3__[\"isDiscrete\"])(spec.type) ? ordinalMultipleDomain : Object(vega_scale__WEBPACK_IMPORTED_MODULE_3__[\"isQuantile\"])(spec.type) ? quantileMultipleDomain : numericMultipleDomain)(domain, scope, fields);\n}\n\nfunction fieldRef$1(data, scope) {\n  const name = '_:vega:_' + FIELD_REF_ID++,\n        coll = Collect({});\n\n  if (Object(vega_util__WEBPACK_IMPORTED_MODULE_0__[\"isArray\"])(data)) {\n    coll.value = {\n      $ingest: data\n    };\n  } else if (data.signal) {\n    const code = 'setdata(' + Object(vega_util__WEBPACK_IMPORTED_MODULE_0__[\"stringValue\"])(name) + ',' + data.signal + ')';\n    coll.params.input = scope.signalRef(code);\n  }\n\n  scope.addDataPipeline(name, [coll, Sieve({})]);\n  return {\n    data: name,\n    field: 'data'\n  };\n}\n\nfunction ordinalMultipleDomain(domain, scope, fields) {\n  const sort = parseSort(domain.sort, true);\n  let a, v; // get value counts for each domain field\n\n  const counts = fields.map(f => {\n    const data = scope.getData(f.data);\n    if (!data) dataLookupError(f.data);\n    return data.countsRef(scope, f.field, sort);\n  }); // aggregate the results from each domain field\n\n  const p = {\n    groupby: keyFieldRef,\n    pulse: counts\n  };\n\n  if (sort) {\n    a = sort.op || 'count';\n    v = sort.field ? aggrField(a, sort.field) : 'count';\n    p.ops = [MULTIDOMAIN_SORT_OPS[a]];\n    p.fields = [scope.fieldRef(v)];\n    p.as = [v];\n  }\n\n  a = scope.add(Aggregate(p)); // collect aggregate output\n\n  const c = scope.add(Collect({\n    pulse: ref(a)\n  })); // extract values for combined domain\n\n  v = scope.add(Values({\n    field: keyFieldRef,\n    sort: scope.sortRef(sort),\n    pulse: ref(c)\n  }));\n  return ref(v);\n}\n\nfunction parseSort(sort, multidomain) {\n  if (sort) {\n    if (!sort.field && !sort.op) {\n      if (Object(vega_util__WEBPACK_IMPORTED_MODULE_0__[\"isObject\"])(sort)) sort.field = 'key';else sort = {\n        field: 'key'\n      };\n    } else if (!sort.field && sort.op !== 'count') {\n      Object(vega_util__WEBPACK_IMPORTED_MODULE_0__[\"error\"])('No field provided for sort aggregate op: ' + sort.op);\n    } else if (multidomain && sort.field) {\n      if (sort.op && !MULTIDOMAIN_SORT_OPS[sort.op]) {\n        Object(vega_util__WEBPACK_IMPORTED_MODULE_0__[\"error\"])('Multiple domain scales can not be sorted using ' + sort.op);\n      }\n    }\n  }\n\n  return sort;\n}\n\nfunction quantileMultipleDomain(domain, scope, fields) {\n  // get value arrays for each domain field\n  const values = fields.map(f => {\n    const data = scope.getData(f.data);\n    if (!data) dataLookupError(f.data);\n    return data.domainRef(scope, f.field);\n  }); // combine value arrays\n\n  return ref(scope.add(MultiValues({\n    values: values\n  })));\n}\n\nfunction numericMultipleDomain(domain, scope, fields) {\n  // get extents for each domain field\n  const extents = fields.map(f => {\n    const data = scope.getData(f.data);\n    if (!data) dataLookupError(f.data);\n    return data.extentRef(scope, f.field);\n  }); // combine extents\n\n  return ref(scope.add(MultiExtent({\n    extents: extents\n  })));\n} // -- SCALE BINS -----\n\n\nfunction parseScaleBins(v, scope) {\n  return v.signal || Object(vega_util__WEBPACK_IMPORTED_MODULE_0__[\"isArray\"])(v) ? parseArray(v, scope) : scope.objectProperty(v);\n} // -- SCALE NICE -----\n\n\nfunction parseScaleNice(nice) {\n  return Object(vega_util__WEBPACK_IMPORTED_MODULE_0__[\"isObject\"])(nice) ? {\n    interval: parseLiteral(nice.interval),\n    step: parseLiteral(nice.step)\n  } : parseLiteral(nice);\n} // -- SCALE INTERPOLATION -----\n\n\nfunction parseScaleInterpolate(interpolate, params) {\n  params.interpolate = parseLiteral(interpolate.type || interpolate);\n\n  if (interpolate.gamma != null) {\n    params.interpolateGamma = parseLiteral(interpolate.gamma);\n  }\n} // -- SCALE RANGE -----\n\n\nfunction parseScaleRange(spec, scope, params) {\n  const config = scope.config.range;\n  let range = spec.range;\n\n  if (range.signal) {\n    return scope.signalRef(range.signal);\n  } else if (Object(vega_util__WEBPACK_IMPORTED_MODULE_0__[\"isString\"])(range)) {\n    if (config && Object(vega_util__WEBPACK_IMPORTED_MODULE_0__[\"hasOwnProperty\"])(config, range)) {\n      spec = Object(vega_util__WEBPACK_IMPORTED_MODULE_0__[\"extend\"])({}, spec, {\n        range: config[range]\n      });\n      return parseScaleRange(spec, scope, params);\n    } else if (range === 'width') {\n      range = [0, {\n        signal: 'width'\n      }];\n    } else if (range === 'height') {\n      range = Object(vega_scale__WEBPACK_IMPORTED_MODULE_3__[\"isDiscrete\"])(spec.type) ? [0, {\n        signal: 'height'\n      }] : [{\n        signal: 'height'\n      }, 0];\n    } else {\n      Object(vega_util__WEBPACK_IMPORTED_MODULE_0__[\"error\"])('Unrecognized scale range value: ' + Object(vega_util__WEBPACK_IMPORTED_MODULE_0__[\"stringValue\"])(range));\n    }\n  } else if (range.scheme) {\n    params.scheme = Object(vega_util__WEBPACK_IMPORTED_MODULE_0__[\"isArray\"])(range.scheme) ? parseArray(range.scheme, scope) : parseLiteral(range.scheme, scope);\n    if (range.extent) params.schemeExtent = parseArray(range.extent, scope);\n    if (range.count) params.schemeCount = parseLiteral(range.count, scope);\n    return;\n  } else if (range.step) {\n    params.rangeStep = parseLiteral(range.step, scope);\n    return;\n  } else if (Object(vega_scale__WEBPACK_IMPORTED_MODULE_3__[\"isDiscrete\"])(spec.type) && !Object(vega_util__WEBPACK_IMPORTED_MODULE_0__[\"isArray\"])(range)) {\n    return parseScaleDomain(range, spec, scope);\n  } else if (!Object(vega_util__WEBPACK_IMPORTED_MODULE_0__[\"isArray\"])(range)) {\n    Object(vega_util__WEBPACK_IMPORTED_MODULE_0__[\"error\"])('Unsupported range type: ' + Object(vega_util__WEBPACK_IMPORTED_MODULE_0__[\"stringValue\"])(range));\n  }\n\n  return range.map(v => (Object(vega_util__WEBPACK_IMPORTED_MODULE_0__[\"isArray\"])(v) ? parseArray : parseLiteral)(v, scope));\n}\n\nfunction parseProjection (proj, scope) {\n  const config = scope.config.projection || {},\n        params = {};\n\n  for (const name in proj) {\n    if (name === 'name') continue;\n    params[name] = parseParameter(proj[name], name, scope);\n  } // apply projection defaults from config\n\n\n  for (const name in config) {\n    if (params[name] == null) {\n      params[name] = parseParameter(config[name], name, scope);\n    }\n  }\n\n  scope.addProjection(proj.name, params);\n}\n\nfunction parseParameter(_, name, scope) {\n  return Object(vega_util__WEBPACK_IMPORTED_MODULE_0__[\"isArray\"])(_) ? _.map(_ => parseParameter(_, name, scope)) : !Object(vega_util__WEBPACK_IMPORTED_MODULE_0__[\"isObject\"])(_) ? _ : _.signal ? scope.signalRef(_.signal) : name === 'fit' ? _ : Object(vega_util__WEBPACK_IMPORTED_MODULE_0__[\"error\"])('Unsupported parameter object: ' + Object(vega_util__WEBPACK_IMPORTED_MODULE_0__[\"stringValue\"])(_));\n}\n\nconst Top = 'top';\nconst Left = 'left';\nconst Right = 'right';\nconst Bottom = 'bottom';\nconst Center = 'center';\nconst Vertical = 'vertical';\nconst Start = 'start';\nconst Middle = 'middle';\nconst End = 'end';\nconst Index = 'index';\nconst Label = 'label';\nconst Offset = 'offset';\nconst Perc = 'perc';\nconst Perc2 = 'perc2';\nconst Value = 'value';\nconst GuideLabelStyle = 'guide-label';\nconst GuideTitleStyle = 'guide-title';\nconst GroupTitleStyle = 'group-title';\nconst GroupSubtitleStyle = 'group-subtitle';\nconst Symbols = 'symbol';\nconst Gradient = 'gradient';\nconst Discrete = 'discrete';\nconst Size = 'size';\nconst Shape = 'shape';\nconst Fill = 'fill';\nconst Stroke = 'stroke';\nconst StrokeWidth = 'strokeWidth';\nconst StrokeDash = 'strokeDash';\nconst Opacity = 'opacity'; // Encoding channels supported by legends\n// In priority order of 'canonical' scale\n\nconst LegendScales = [Size, Shape, Fill, Stroke, StrokeWidth, StrokeDash, Opacity];\nconst Skip = {\n  name: 1,\n  style: 1,\n  interactive: 1\n};\nconst zero = {\n  value: 0\n};\nconst one = {\n  value: 1\n};\n\nconst GroupMark = 'group';\nconst RectMark = 'rect';\nconst RuleMark = 'rule';\nconst SymbolMark = 'symbol';\nconst TextMark = 'text';\n\nfunction guideGroup (mark) {\n  mark.type = GroupMark;\n  mark.interactive = mark.interactive || false;\n  return mark;\n}\n\nfunction lookup(spec, config) {\n  const _ = (name, dflt) => value(spec[name], value(config[name], dflt));\n\n  _.isVertical = s => Vertical === value(spec.direction, config.direction || (s ? config.symbolDirection : config.gradientDirection));\n\n  _.gradientLength = () => value(spec.gradientLength, config.gradientLength || config.gradientWidth);\n\n  _.gradientThickness = () => value(spec.gradientThickness, config.gradientThickness || config.gradientHeight);\n\n  _.entryColumns = () => value(spec.columns, value(config.columns, +_.isVertical(true)));\n\n  return _;\n}\nfunction getEncoding(name, encode) {\n  const v = encode && (encode.update && encode.update[name] || encode.enter && encode.enter[name]);\n  return v && v.signal ? v : v ? v.value : null;\n}\nfunction getStyle(name, scope, style) {\n  const s = scope.config.style[style];\n  return s && s[name];\n}\nfunction anchorExpr(s, e, m) {\n  return \"item.anchor === '\".concat(Start, \"' ? \").concat(s, \" : item.anchor === '\").concat(End, \"' ? \").concat(e, \" : \").concat(m);\n}\nconst alignExpr = anchorExpr(Object(vega_util__WEBPACK_IMPORTED_MODULE_0__[\"stringValue\"])(Left), Object(vega_util__WEBPACK_IMPORTED_MODULE_0__[\"stringValue\"])(Right), Object(vega_util__WEBPACK_IMPORTED_MODULE_0__[\"stringValue\"])(Center));\nfunction tickBand(_) {\n  const v = _('tickBand');\n\n  let offset = _('tickOffset'),\n      band,\n      extra;\n\n  if (!v) {\n    // if no tick band entry, fall back on other properties\n    band = _('bandPosition');\n    extra = _('tickExtra');\n  } else if (v.signal) {\n    // if signal, augment code to interpret values\n    band = {\n      signal: \"(\".concat(v.signal, \") === 'extent' ? 1 : 0.5\")\n    };\n    extra = {\n      signal: \"(\".concat(v.signal, \") === 'extent'\")\n    };\n\n    if (!Object(vega_util__WEBPACK_IMPORTED_MODULE_0__[\"isObject\"])(offset)) {\n      offset = {\n        signal: \"(\".concat(v.signal, \") === 'extent' ? 0 : \").concat(offset)\n      };\n    }\n  } else if (v === 'extent') {\n    // if constant, simply set values\n    band = 1;\n    extra = true;\n    offset = 0;\n  } else {\n    band = 0.5;\n    extra = false;\n  }\n\n  return {\n    extra,\n    band,\n    offset\n  };\n}\nfunction extendOffset(value, offset) {\n  return !offset ? value : !value ? offset : !Object(vega_util__WEBPACK_IMPORTED_MODULE_0__[\"isObject\"])(value) ? {\n    value,\n    offset\n  } : Object.assign({}, value, {\n    offset: extendOffset(value.offset, offset)\n  });\n}\n\nfunction guideMark (mark, extras) {\n  if (extras) {\n    mark.name = extras.name;\n    mark.style = extras.style || mark.style;\n    mark.interactive = !!extras.interactive;\n    mark.encode = extendEncode(mark.encode, extras, Skip);\n  } else {\n    mark.interactive = false;\n  }\n\n  return mark;\n}\n\nfunction legendGradient (spec, scale, config, userEncode) {\n  const _ = lookup(spec, config),\n        vertical = _.isVertical(),\n        thickness = _.gradientThickness(),\n        length = _.gradientLength();\n\n  let enter, start, stop, width, height;\n\n  if (vertical) {\n    start = [0, 1];\n    stop = [0, 0];\n    width = thickness;\n    height = length;\n  } else {\n    start = [0, 0];\n    stop = [1, 0];\n    width = length;\n    height = thickness;\n  }\n\n  const encode = {\n    enter: enter = {\n      opacity: zero,\n      x: zero,\n      y: zero,\n      width: encoder(width),\n      height: encoder(height)\n    },\n    update: Object(vega_util__WEBPACK_IMPORTED_MODULE_0__[\"extend\"])({}, enter, {\n      opacity: one,\n      fill: {\n        gradient: scale,\n        start: start,\n        stop: stop\n      }\n    }),\n    exit: {\n      opacity: zero\n    }\n  };\n  addEncoders(encode, {\n    stroke: _('gradientStrokeColor'),\n    strokeWidth: _('gradientStrokeWidth')\n  }, {\n    // update\n    opacity: _('gradientOpacity')\n  });\n  return guideMark({\n    type: RectMark,\n    role: LegendGradientRole,\n    encode\n  }, userEncode);\n}\n\nfunction legendGradientDiscrete (spec, scale, config, userEncode, dataRef) {\n  const _ = lookup(spec, config),\n        vertical = _.isVertical(),\n        thickness = _.gradientThickness(),\n        length = _.gradientLength();\n\n  let u,\n      v,\n      uu,\n      vv,\n      adjust = '';\n  vertical ? (u = 'y', uu = 'y2', v = 'x', vv = 'width', adjust = '1-') : (u = 'x', uu = 'x2', v = 'y', vv = 'height');\n  const enter = {\n    opacity: zero,\n    fill: {\n      scale: scale,\n      field: Value\n    }\n  };\n  enter[u] = {\n    signal: adjust + 'datum.' + Perc,\n    mult: length\n  };\n  enter[v] = zero;\n  enter[uu] = {\n    signal: adjust + 'datum.' + Perc2,\n    mult: length\n  };\n  enter[vv] = encoder(thickness);\n  const encode = {\n    enter: enter,\n    update: Object(vega_util__WEBPACK_IMPORTED_MODULE_0__[\"extend\"])({}, enter, {\n      opacity: one\n    }),\n    exit: {\n      opacity: zero\n    }\n  };\n  addEncoders(encode, {\n    stroke: _('gradientStrokeColor'),\n    strokeWidth: _('gradientStrokeWidth')\n  }, {\n    // update\n    opacity: _('gradientOpacity')\n  });\n  return guideMark({\n    type: RectMark,\n    role: LegendBandRole,\n    key: Value,\n    from: dataRef,\n    encode\n  }, userEncode);\n}\n\nconst alignExpr$1 = \"datum.\".concat(Perc, \"<=0?\\\"\").concat(Left, \"\\\":datum.\").concat(Perc, \">=1?\\\"\").concat(Right, \"\\\":\\\"\").concat(Center, \"\\\"\"),\n      baselineExpr = \"datum.\".concat(Perc, \"<=0?\\\"\").concat(Bottom, \"\\\":datum.\").concat(Perc, \">=1?\\\"\").concat(Top, \"\\\":\\\"\").concat(Middle, \"\\\"\");\nfunction legendGradientLabels (spec, config, userEncode, dataRef) {\n  const _ = lookup(spec, config),\n        vertical = _.isVertical(),\n        thickness = encoder(_.gradientThickness()),\n        length = _.gradientLength();\n\n  let overlap = _('labelOverlap'),\n      enter,\n      update,\n      u,\n      v,\n      adjust = '';\n\n  const encode = {\n    enter: enter = {\n      opacity: zero\n    },\n    update: update = {\n      opacity: one,\n      text: {\n        field: Label\n      }\n    },\n    exit: {\n      opacity: zero\n    }\n  };\n  addEncoders(encode, {\n    fill: _('labelColor'),\n    fillOpacity: _('labelOpacity'),\n    font: _('labelFont'),\n    fontSize: _('labelFontSize'),\n    fontStyle: _('labelFontStyle'),\n    fontWeight: _('labelFontWeight'),\n    limit: value(spec.labelLimit, config.gradientLabelLimit)\n  });\n\n  if (vertical) {\n    enter.align = {\n      value: 'left'\n    };\n    enter.baseline = update.baseline = {\n      signal: baselineExpr\n    };\n    u = 'y';\n    v = 'x';\n    adjust = '1-';\n  } else {\n    enter.align = update.align = {\n      signal: alignExpr$1\n    };\n    enter.baseline = {\n      value: 'top'\n    };\n    u = 'x';\n    v = 'y';\n  }\n\n  enter[u] = update[u] = {\n    signal: adjust + 'datum.' + Perc,\n    mult: length\n  };\n  enter[v] = update[v] = thickness;\n  thickness.offset = value(spec.labelOffset, config.gradientLabelOffset) || 0;\n  overlap = overlap ? {\n    separation: _('labelSeparation'),\n    method: overlap,\n    order: 'datum.' + Index\n  } : undefined; // type, role, style, key, dataRef, encode, extras\n\n  return guideMark({\n    type: TextMark,\n    role: LegendLabelRole,\n    style: GuideLabelStyle,\n    key: Value,\n    from: dataRef,\n    encode,\n    overlap\n  }, userEncode);\n}\n\nfunction legendSymbolGroups (spec, config, userEncode, dataRef, columns) {\n  const _ = lookup(spec, config),\n        entries = userEncode.entries,\n        interactive = !!(entries && entries.interactive),\n        name = entries ? entries.name : undefined,\n        height = _('clipHeight'),\n        symbolOffset = _('symbolOffset'),\n        valueRef = {\n    data: 'value'\n  },\n        xSignal = \"(\".concat(columns, \") ? datum.\").concat(Offset, \" : datum.\").concat(Size),\n        yEncode = height ? encoder(height) : {\n    field: Size\n  },\n        index = \"datum.\".concat(Index),\n        ncols = \"max(1, \".concat(columns, \")\");\n\n  let encode, enter, update, nrows, sort;\n  yEncode.mult = 0.5; // -- LEGEND SYMBOLS --\n\n  encode = {\n    enter: enter = {\n      opacity: zero,\n      x: {\n        signal: xSignal,\n        mult: 0.5,\n        offset: symbolOffset\n      },\n      y: yEncode\n    },\n    update: update = {\n      opacity: one,\n      x: enter.x,\n      y: enter.y\n    },\n    exit: {\n      opacity: zero\n    }\n  };\n  let baseFill = null,\n      baseStroke = null;\n\n  if (!spec.fill) {\n    baseFill = config.symbolBaseFillColor;\n    baseStroke = config.symbolBaseStrokeColor;\n  }\n\n  addEncoders(encode, {\n    fill: _('symbolFillColor', baseFill),\n    shape: _('symbolType'),\n    size: _('symbolSize'),\n    stroke: _('symbolStrokeColor', baseStroke),\n    strokeDash: _('symbolDash'),\n    strokeDashOffset: _('symbolDashOffset'),\n    strokeWidth: _('symbolStrokeWidth')\n  }, {\n    // update\n    opacity: _('symbolOpacity')\n  });\n  LegendScales.forEach(scale => {\n    if (spec[scale]) {\n      update[scale] = enter[scale] = {\n        scale: spec[scale],\n        field: Value\n      };\n    }\n  });\n  const symbols = guideMark({\n    type: SymbolMark,\n    role: LegendSymbolRole,\n    key: Value,\n    from: valueRef,\n    clip: height ? true : undefined,\n    encode\n  }, userEncode.symbols); // -- LEGEND LABELS --\n\n  const labelOffset = encoder(symbolOffset);\n  labelOffset.offset = _('labelOffset');\n  encode = {\n    enter: enter = {\n      opacity: zero,\n      x: {\n        signal: xSignal,\n        offset: labelOffset\n      },\n      y: yEncode\n    },\n    update: update = {\n      opacity: one,\n      text: {\n        field: Label\n      },\n      x: enter.x,\n      y: enter.y\n    },\n    exit: {\n      opacity: zero\n    }\n  };\n  addEncoders(encode, {\n    align: _('labelAlign'),\n    baseline: _('labelBaseline'),\n    fill: _('labelColor'),\n    fillOpacity: _('labelOpacity'),\n    font: _('labelFont'),\n    fontSize: _('labelFontSize'),\n    fontStyle: _('labelFontStyle'),\n    fontWeight: _('labelFontWeight'),\n    limit: _('labelLimit')\n  });\n  const labels = guideMark({\n    type: TextMark,\n    role: LegendLabelRole,\n    style: GuideLabelStyle,\n    key: Value,\n    from: valueRef,\n    encode\n  }, userEncode.labels); // -- LEGEND ENTRY GROUPS --\n\n  encode = {\n    enter: {\n      noBound: {\n        value: !height\n      },\n      // ignore width/height in bounds calc\n      width: zero,\n      height: height ? encoder(height) : zero,\n      opacity: zero\n    },\n    exit: {\n      opacity: zero\n    },\n    update: update = {\n      opacity: one,\n      row: {\n        signal: null\n      },\n      column: {\n        signal: null\n      }\n    }\n  }; // annotate and sort groups to ensure correct ordering\n\n  if (_.isVertical(true)) {\n    nrows = \"ceil(item.mark.items.length / \".concat(ncols, \")\");\n    update.row.signal = \"\".concat(index, \"%\").concat(nrows);\n    update.column.signal = \"floor(\".concat(index, \" / \").concat(nrows, \")\");\n    sort = {\n      field: ['row', index]\n    };\n  } else {\n    update.row.signal = \"floor(\".concat(index, \" / \").concat(ncols, \")\");\n    update.column.signal = \"\".concat(index, \" % \").concat(ncols);\n    sort = {\n      field: index\n    };\n  } // handle zero column case (implies infinite columns)\n\n\n  update.column.signal = \"(\".concat(columns, \")?\").concat(update.column.signal, \":\").concat(index); // facet legend entries into sub-groups\n\n  dataRef = {\n    facet: {\n      data: dataRef,\n      name: 'value',\n      groupby: Index\n    }\n  };\n  return guideGroup({\n    role: ScopeRole,\n    from: dataRef,\n    encode: extendEncode(encode, entries, Skip),\n    marks: [symbols, labels],\n    name,\n    interactive,\n    sort\n  });\n}\nfunction legendSymbolLayout(spec, config) {\n  const _ = lookup(spec, config); // layout parameters for legend entries\n\n\n  return {\n    align: _('gridAlign'),\n    columns: _.entryColumns(),\n    center: {\n      row: true,\n      column: false\n    },\n    padding: {\n      row: _('rowPadding'),\n      column: _('columnPadding')\n    }\n  };\n}\n\nconst isL = 'item.orient === \"left\"',\n      isR = 'item.orient === \"right\"',\n      isLR = \"(\".concat(isL, \" || \").concat(isR, \")\"),\n      isVG = \"datum.vgrad && \".concat(isLR),\n      baseline = anchorExpr('\"top\"', '\"bottom\"', '\"middle\"'),\n      alignFlip = anchorExpr('\"right\"', '\"left\"', '\"center\"'),\n      exprAlign = \"datum.vgrad && \".concat(isR, \" ? (\").concat(alignFlip, \") : (\").concat(isLR, \" && !(datum.vgrad && \").concat(isL, \")) ? \\\"left\\\" : \").concat(alignExpr),\n      exprAnchor = \"item._anchor || (\".concat(isLR, \" ? \\\"middle\\\" : \\\"start\\\")\"),\n      exprAngle = \"\".concat(isVG, \" ? (\").concat(isL, \" ? -90 : 90) : 0\"),\n      exprBaseline = \"\".concat(isLR, \" ? (datum.vgrad ? (\").concat(isR, \" ? \\\"bottom\\\" : \\\"top\\\") : \").concat(baseline, \") : \\\"top\\\"\");\nfunction legendTitle (spec, config, userEncode, dataRef) {\n  const _ = lookup(spec, config);\n\n  const encode = {\n    enter: {\n      opacity: zero\n    },\n    update: {\n      opacity: one,\n      x: {\n        field: {\n          group: 'padding'\n        }\n      },\n      y: {\n        field: {\n          group: 'padding'\n        }\n      }\n    },\n    exit: {\n      opacity: zero\n    }\n  };\n  addEncoders(encode, {\n    orient: _('titleOrient'),\n    _anchor: _('titleAnchor'),\n    anchor: {\n      signal: exprAnchor\n    },\n    angle: {\n      signal: exprAngle\n    },\n    align: {\n      signal: exprAlign\n    },\n    baseline: {\n      signal: exprBaseline\n    },\n    text: spec.title,\n    fill: _('titleColor'),\n    fillOpacity: _('titleOpacity'),\n    font: _('titleFont'),\n    fontSize: _('titleFontSize'),\n    fontStyle: _('titleFontStyle'),\n    fontWeight: _('titleFontWeight'),\n    limit: _('titleLimit'),\n    lineHeight: _('titleLineHeight')\n  }, {\n    // require update\n    align: _('titleAlign'),\n    baseline: _('titleBaseline')\n  });\n  return guideMark({\n    type: TextMark,\n    role: LegendTitleRole,\n    style: GuideTitleStyle,\n    from: dataRef,\n    encode\n  }, userEncode);\n}\n\nfunction clip (clip, scope) {\n  let expr;\n\n  if (Object(vega_util__WEBPACK_IMPORTED_MODULE_0__[\"isObject\"])(clip)) {\n    if (clip.signal) {\n      expr = clip.signal;\n    } else if (clip.path) {\n      expr = 'pathShape(' + param(clip.path) + ')';\n    } else if (clip.sphere) {\n      expr = 'geoShape(' + param(clip.sphere) + ', {type: \"Sphere\"})';\n    }\n  }\n\n  return expr ? scope.signalRef(expr) : !!clip;\n}\n\nfunction param(value) {\n  return Object(vega_util__WEBPACK_IMPORTED_MODULE_0__[\"isObject\"])(value) && value.signal ? value.signal : Object(vega_util__WEBPACK_IMPORTED_MODULE_0__[\"stringValue\"])(value);\n}\n\nfunction getRole (spec) {\n  const role = spec.role || '';\n  return !role.indexOf('axis') || !role.indexOf('legend') || !role.indexOf('title') ? role : spec.type === GroupMark ? ScopeRole : role || MarkRole;\n}\n\nfunction definition (spec) {\n  return {\n    marktype: spec.type,\n    name: spec.name || undefined,\n    role: spec.role || getRole(spec),\n    zindex: +spec.zindex || undefined,\n    aria: spec.aria,\n    description: spec.description\n  };\n}\n\nfunction interactive (spec, scope) {\n  return spec && spec.signal ? scope.signalRef(spec.signal) : spec === false ? false : true;\n}\n\n/**\n * Parse a data transform specification.\n */\n\nfunction parseTransform (spec, scope) {\n  const def = Object(vega_dataflow__WEBPACK_IMPORTED_MODULE_4__[\"definition\"])(spec.type);\n  if (!def) Object(vega_util__WEBPACK_IMPORTED_MODULE_0__[\"error\"])('Unrecognized transform type: ' + Object(vega_util__WEBPACK_IMPORTED_MODULE_0__[\"stringValue\"])(spec.type));\n  const t = entry$1(def.type.toLowerCase(), null, parseParameters(def, spec, scope));\n  if (spec.signal) scope.addSignal(spec.signal, scope.proxy(t));\n  t.metadata = def.metadata || {};\n  return t;\n}\n/**\n * Parse all parameters of a data transform.\n */\n\nfunction parseParameters(def, spec, scope) {\n  const params = {},\n        n = def.params.length;\n\n  for (let i = 0; i < n; ++i) {\n    const pdef = def.params[i];\n    params[pdef.name] = parseParameter$1(pdef, spec, scope);\n  }\n\n  return params;\n}\n/**\n * Parse a data transform parameter.\n */\n\n\nfunction parseParameter$1(def, spec, scope) {\n  const type = def.type,\n        value = spec[def.name];\n\n  if (type === 'index') {\n    return parseIndexParameter(def, spec, scope);\n  } else if (value === undefined) {\n    if (def.required) {\n      Object(vega_util__WEBPACK_IMPORTED_MODULE_0__[\"error\"])('Missing required ' + Object(vega_util__WEBPACK_IMPORTED_MODULE_0__[\"stringValue\"])(spec.type) + ' parameter: ' + Object(vega_util__WEBPACK_IMPORTED_MODULE_0__[\"stringValue\"])(def.name));\n    }\n\n    return;\n  } else if (type === 'param') {\n    return parseSubParameters(def, spec, scope);\n  } else if (type === 'projection') {\n    return scope.projectionRef(spec[def.name]);\n  }\n\n  return def.array && !isSignal(value) ? value.map(v => parameterValue(def, v, scope)) : parameterValue(def, value, scope);\n}\n/**\n * Parse a single parameter value.\n */\n\n\nfunction parameterValue(def, value, scope) {\n  const type = def.type;\n\n  if (isSignal(value)) {\n    return isExpr$1(type) ? Object(vega_util__WEBPACK_IMPORTED_MODULE_0__[\"error\"])('Expression references can not be signals.') : isField(type) ? scope.fieldRef(value) : isCompare(type) ? scope.compareRef(value) : scope.signalRef(value.signal);\n  } else {\n    const expr = def.expr || isField(type);\n    return expr && outerExpr(value) ? scope.exprRef(value.expr, value.as) : expr && outerField(value) ? fieldRef(value.field, value.as) : isExpr$1(type) ? Object(vega_functions__WEBPACK_IMPORTED_MODULE_1__[\"parseExpression\"])(value, scope) : isData(type) ? ref(scope.getData(value).values) : isField(type) ? fieldRef(value) : isCompare(type) ? scope.compareRef(value) : value;\n  }\n}\n/**\n * Parse parameter for accessing an index of another data set.\n */\n\n\nfunction parseIndexParameter(def, spec, scope) {\n  if (!Object(vega_util__WEBPACK_IMPORTED_MODULE_0__[\"isString\"])(spec.from)) {\n    Object(vega_util__WEBPACK_IMPORTED_MODULE_0__[\"error\"])('Lookup \"from\" parameter must be a string literal.');\n  }\n\n  return scope.getData(spec.from).lookupRef(scope, spec.key);\n}\n/**\n * Parse a parameter that contains one or more sub-parameter objects.\n */\n\n\nfunction parseSubParameters(def, spec, scope) {\n  const value = spec[def.name];\n\n  if (def.array) {\n    if (!Object(vega_util__WEBPACK_IMPORTED_MODULE_0__[\"isArray\"])(value)) {\n      // signals not allowed!\n      Object(vega_util__WEBPACK_IMPORTED_MODULE_0__[\"error\"])('Expected an array of sub-parameters. Instead: ' + Object(vega_util__WEBPACK_IMPORTED_MODULE_0__[\"stringValue\"])(value));\n    }\n\n    return value.map(v => parseSubParameter(def, v, scope));\n  } else {\n    return parseSubParameter(def, value, scope);\n  }\n}\n/**\n * Parse a sub-parameter object.\n */\n\n\nfunction parseSubParameter(def, value, scope) {\n  const n = def.params.length;\n  let pdef; // loop over defs to find matching key\n\n  for (let i = 0; i < n; ++i) {\n    pdef = def.params[i];\n\n    for (const k in pdef.key) {\n      if (pdef.key[k] !== value[k]) {\n        pdef = null;\n        break;\n      }\n    }\n\n    if (pdef) break;\n  } // raise error if matching key not found\n\n\n  if (!pdef) Object(vega_util__WEBPACK_IMPORTED_MODULE_0__[\"error\"])('Unsupported parameter: ' + Object(vega_util__WEBPACK_IMPORTED_MODULE_0__[\"stringValue\"])(value)); // parse params, create Params transform, return ref\n\n  const params = Object(vega_util__WEBPACK_IMPORTED_MODULE_0__[\"extend\"])(parseParameters(pdef, value, scope), pdef.key);\n  return ref(scope.add(Params(params)));\n} // -- Utilities -----\n\n\nconst outerExpr = _ => _ && _.expr;\nconst outerField = _ => _ && _.field;\nconst isData = _ => _ === 'data';\nconst isExpr$1 = _ => _ === 'expr';\nconst isField = _ => _ === 'field';\nconst isCompare = _ => _ === 'compare';\n\nfunction parseData (from, group, scope) {\n  let facet, key, op, dataRef, parent; // if no source data, generate singleton datum\n\n  if (!from) {\n    dataRef = ref(scope.add(Collect(null, [{}])));\n  } // if faceted, process facet specification\n  else if (facet = from.facet) {\n      if (!group) Object(vega_util__WEBPACK_IMPORTED_MODULE_0__[\"error\"])('Only group marks can be faceted.'); // use pre-faceted source data, if available\n\n      if (facet.field != null) {\n        dataRef = parent = getDataRef(facet, scope);\n      } else {\n        // generate facet aggregates if no direct data specification\n        if (!from.data) {\n          op = parseTransform(Object(vega_util__WEBPACK_IMPORTED_MODULE_0__[\"extend\"])({\n            type: 'aggregate',\n            groupby: Object(vega_util__WEBPACK_IMPORTED_MODULE_0__[\"array\"])(facet.groupby)\n          }, facet.aggregate), scope);\n          op.params.key = scope.keyRef(facet.groupby);\n          op.params.pulse = getDataRef(facet, scope);\n          dataRef = parent = ref(scope.add(op));\n        } else {\n          parent = ref(scope.getData(from.data).aggregate);\n        }\n\n        key = scope.keyRef(facet.groupby, true);\n      }\n    } // if not yet defined, get source data reference\n\n\n  if (!dataRef) {\n    dataRef = getDataRef(from, scope);\n  }\n\n  return {\n    key: key,\n    pulse: dataRef,\n    parent: parent\n  };\n}\nfunction getDataRef(from, scope) {\n  return from.$ref ? from : from.data && from.data.$ref ? from.data : ref(scope.getData(from.data).output);\n}\n\nfunction DataScope(scope, input, output, values, aggr) {\n  this.scope = scope; // parent scope object\n\n  this.input = input; // first operator in pipeline (tuple input)\n\n  this.output = output; // last operator in pipeline (tuple output)\n\n  this.values = values; // operator for accessing tuples (but not tuple flow)\n  // last aggregate in transform pipeline\n\n  this.aggregate = aggr; // lookup table of field indices\n\n  this.index = {};\n}\n\nDataScope.fromEntries = function (scope, entries) {\n  const n = entries.length,\n        values = entries[n - 1],\n        output = entries[n - 2];\n  let input = entries[0],\n      aggr = null,\n      i = 1;\n\n  if (input && input.type === 'load') {\n    input = entries[1];\n  } // add operator entries to this scope, wire up pulse chain\n\n\n  scope.add(entries[0]);\n\n  for (; i < n; ++i) {\n    entries[i].params.pulse = ref(entries[i - 1]);\n    scope.add(entries[i]);\n    if (entries[i].type === 'aggregate') aggr = entries[i];\n  }\n\n  return new DataScope(scope, input, output, values, aggr);\n};\n\nfunction fieldKey(field) {\n  return Object(vega_util__WEBPACK_IMPORTED_MODULE_0__[\"isString\"])(field) ? field : null;\n}\n\nfunction addSortField(scope, p, sort) {\n  const as = aggrField(sort.op, sort.field);\n  let s;\n\n  if (p.ops) {\n    for (let i = 0, n = p.as.length; i < n; ++i) {\n      if (p.as[i] === as) return;\n    }\n  } else {\n    p.ops = ['count'];\n    p.fields = [null];\n    p.as = ['count'];\n  }\n\n  if (sort.op) {\n    p.ops.push((s = sort.op.signal) ? scope.signalRef(s) : sort.op);\n    p.fields.push(scope.fieldRef(sort.field));\n    p.as.push(as);\n  }\n}\n\nfunction cache(scope, ds, name, optype, field, counts, index) {\n  const cache = ds[name] || (ds[name] = {}),\n        sort = sortKey(counts);\n  let k = fieldKey(field),\n      v,\n      op;\n\n  if (k != null) {\n    scope = ds.scope;\n    k = k + (sort ? '|' + sort : '');\n    v = cache[k];\n  }\n\n  if (!v) {\n    const params = counts ? {\n      field: keyFieldRef,\n      pulse: ds.countsRef(scope, field, counts)\n    } : {\n      field: scope.fieldRef(field),\n      pulse: ref(ds.output)\n    };\n    if (sort) params.sort = scope.sortRef(counts);\n    op = scope.add(entry$1(optype, undefined, params));\n    if (index) ds.index[field] = op;\n    v = ref(op);\n    if (k != null) cache[k] = v;\n  }\n\n  return v;\n}\n\nDataScope.prototype = {\n  countsRef(scope, field, sort) {\n    const ds = this,\n          cache = ds.counts || (ds.counts = {}),\n          k = fieldKey(field);\n    let v, a, p;\n\n    if (k != null) {\n      scope = ds.scope;\n      v = cache[k];\n    }\n\n    if (!v) {\n      p = {\n        groupby: scope.fieldRef(field, 'key'),\n        pulse: ref(ds.output)\n      };\n      if (sort && sort.field) addSortField(scope, p, sort);\n      a = scope.add(Aggregate(p));\n      v = scope.add(Collect({\n        pulse: ref(a)\n      }));\n      v = {\n        agg: a,\n        ref: ref(v)\n      };\n      if (k != null) cache[k] = v;\n    } else if (sort && sort.field) {\n      addSortField(scope, v.agg.params, sort);\n    }\n\n    return v.ref;\n  },\n\n  tuplesRef() {\n    return ref(this.values);\n  },\n\n  extentRef(scope, field) {\n    return cache(scope, this, 'extent', 'extent', field, false);\n  },\n\n  domainRef(scope, field) {\n    return cache(scope, this, 'domain', 'values', field, false);\n  },\n\n  valuesRef(scope, field, sort) {\n    return cache(scope, this, 'vals', 'values', field, sort || true);\n  },\n\n  lookupRef(scope, field) {\n    return cache(scope, this, 'lookup', 'tupleindex', field, false);\n  },\n\n  indataRef(scope, field) {\n    return cache(scope, this, 'indata', 'tupleindex', field, true, true);\n  }\n\n};\n\nfunction parseFacet (spec, scope, group) {\n  const facet = spec.from.facet,\n        name = facet.name,\n        data = getDataRef(facet, scope);\n  let op;\n\n  if (!facet.name) {\n    Object(vega_util__WEBPACK_IMPORTED_MODULE_0__[\"error\"])('Facet must have a name: ' + Object(vega_util__WEBPACK_IMPORTED_MODULE_0__[\"stringValue\"])(facet));\n  }\n\n  if (!facet.data) {\n    Object(vega_util__WEBPACK_IMPORTED_MODULE_0__[\"error\"])('Facet must reference a data set: ' + Object(vega_util__WEBPACK_IMPORTED_MODULE_0__[\"stringValue\"])(facet));\n  }\n\n  if (facet.field) {\n    op = scope.add(PreFacet({\n      field: scope.fieldRef(facet.field),\n      pulse: data\n    }));\n  } else if (facet.groupby) {\n    op = scope.add(Facet({\n      key: scope.keyRef(facet.groupby),\n      group: ref(scope.proxy(group.parent)),\n      pulse: data\n    }));\n  } else {\n    Object(vega_util__WEBPACK_IMPORTED_MODULE_0__[\"error\"])('Facet must specify groupby or field: ' + Object(vega_util__WEBPACK_IMPORTED_MODULE_0__[\"stringValue\"])(facet));\n  } // initialize facet subscope\n\n\n  const subscope = scope.fork(),\n        source = subscope.add(Collect()),\n        values = subscope.add(Sieve({\n    pulse: ref(source)\n  }));\n  subscope.addData(name, new DataScope(subscope, source, source, values));\n  subscope.addSignal('parent', null); // parse faceted subflow\n\n  op.params.subflow = {\n    $subflow: subscope.parse(spec).toRuntime()\n  };\n}\n\nfunction parseSubflow (spec, scope, input) {\n  const op = scope.add(PreFacet({\n    pulse: input.pulse\n  })),\n        subscope = scope.fork();\n  subscope.add(Sieve());\n  subscope.addSignal('parent', null); // parse group mark subflow\n\n  op.params.subflow = {\n    $subflow: subscope.parse(spec).toRuntime()\n  };\n}\n\nfunction parseTrigger (spec, scope, name) {\n  const remove = spec.remove,\n        insert = spec.insert,\n        toggle = spec.toggle,\n        modify = spec.modify,\n        values = spec.values,\n        op = scope.add(operator());\n  const update = 'if(' + spec.trigger + ',modify(\"' + name + '\",' + [insert, remove, toggle, modify, values].map(_ => _ == null ? 'null' : _).join(',') + '),0)';\n  const expr = Object(vega_functions__WEBPACK_IMPORTED_MODULE_1__[\"parseExpression\"])(update, scope);\n  op.update = expr.$expr;\n  op.params = expr.$params;\n}\n\nfunction parseMark (spec, scope) {\n  const role = getRole(spec),\n        group = spec.type === GroupMark,\n        facet = spec.from && spec.from.facet,\n        overlap = spec.overlap;\n  let layout = spec.layout || role === ScopeRole || role === FrameRole,\n      ops,\n      op,\n      store,\n      enc,\n      name,\n      layoutRef,\n      boundRef;\n  const nested = role === MarkRole || layout || facet; // resolve input data\n\n  const input = parseData(spec.from, group, scope); // data join to map tuples to visual items\n\n  op = scope.add(DataJoin({\n    key: input.key || (spec.key ? fieldRef(spec.key) : undefined),\n    pulse: input.pulse,\n    clean: !group\n  }));\n  const joinRef = ref(op); // collect visual items\n\n  op = store = scope.add(Collect({\n    pulse: joinRef\n  })); // connect visual items to scenegraph\n\n  op = scope.add(Mark({\n    markdef: definition(spec),\n    interactive: interactive(spec.interactive, scope),\n    clip: clip(spec.clip, scope),\n    context: {\n      $context: true\n    },\n    groups: scope.lookup(),\n    parent: scope.signals.parent ? scope.signalRef('parent') : null,\n    index: scope.markpath(),\n    pulse: ref(op)\n  }));\n  const markRef = ref(op); // add visual encoders\n\n  op = enc = scope.add(Encode(parseEncode(spec.encode, spec.type, role, spec.style, scope, {\n    mod: false,\n    pulse: markRef\n  }))); // monitor parent marks to propagate changes\n\n  op.params.parent = scope.encode(); // add post-encoding transforms, if defined\n\n  if (spec.transform) {\n    spec.transform.forEach(_ => {\n      const tx = parseTransform(_, scope),\n            md = tx.metadata;\n\n      if (md.generates || md.changes) {\n        Object(vega_util__WEBPACK_IMPORTED_MODULE_0__[\"error\"])('Mark transforms should not generate new data.');\n      }\n\n      if (!md.nomod) enc.params.mod = true; // update encode mod handling\n\n      tx.params.pulse = ref(op);\n      scope.add(op = tx);\n    });\n  } // if item sort specified, perform post-encoding\n\n\n  if (spec.sort) {\n    op = scope.add(SortItems({\n      sort: scope.compareRef(spec.sort),\n      pulse: ref(op)\n    }));\n  }\n\n  const encodeRef = ref(op); // add view layout operator if needed\n\n  if (facet || layout) {\n    layout = scope.add(ViewLayout({\n      layout: scope.objectProperty(spec.layout),\n      legends: scope.legends,\n      mark: markRef,\n      pulse: encodeRef\n    }));\n    layoutRef = ref(layout);\n  } // compute bounding boxes\n\n\n  const bound = scope.add(Bound({\n    mark: markRef,\n    pulse: layoutRef || encodeRef\n  }));\n  boundRef = ref(bound); // if group mark, recurse to parse nested content\n\n  if (group) {\n    // juggle layout & bounds to ensure they run *after* any faceting transforms\n    if (nested) {\n      ops = scope.operators;\n      ops.pop();\n      if (layout) ops.pop();\n    }\n\n    scope.pushState(encodeRef, layoutRef || boundRef, joinRef);\n    facet ? parseFacet(spec, scope, input) // explicit facet\n    : nested ? parseSubflow(spec, scope, input) // standard mark group\n    : scope.parse(spec); // guide group, we can avoid nested scopes\n\n    scope.popState();\n\n    if (nested) {\n      if (layout) ops.push(layout);\n      ops.push(bound);\n    }\n  } // if requested, add overlap removal transform\n\n\n  if (overlap) {\n    boundRef = parseOverlap(overlap, boundRef, scope);\n  } // render / sieve items\n\n\n  const render = scope.add(Render({\n    pulse: boundRef\n  })),\n        sieve = scope.add(Sieve({\n    pulse: ref(render)\n  }, undefined, scope.parent())); // if mark is named, make accessible as reactive geometry\n  // add trigger updates if defined\n\n  if (spec.name != null) {\n    name = spec.name;\n    scope.addData(name, new DataScope(scope, store, render, sieve));\n    if (spec.on) spec.on.forEach(on => {\n      if (on.insert || on.remove || on.toggle) {\n        Object(vega_util__WEBPACK_IMPORTED_MODULE_0__[\"error\"])('Marks only support modify triggers.');\n      }\n\n      parseTrigger(on, scope, name);\n    });\n  }\n}\n\nfunction parseOverlap(overlap, source, scope) {\n  const method = overlap.method,\n        bound = overlap.bound,\n        sep = overlap.separation;\n  const params = {\n    separation: isSignal(sep) ? scope.signalRef(sep.signal) : sep,\n    method: isSignal(method) ? scope.signalRef(method.signal) : method,\n    pulse: source\n  };\n\n  if (overlap.order) {\n    params.sort = scope.compareRef({\n      field: overlap.order\n    });\n  }\n\n  if (bound) {\n    const tol = bound.tolerance;\n    params.boundTolerance = isSignal(tol) ? scope.signalRef(tol.signal) : +tol;\n    params.boundScale = scope.scaleRef(bound.scale);\n    params.boundOrient = bound.orient;\n  }\n\n  return ref(scope.add(Overlap(params)));\n}\n\nfunction parseLegend (spec, scope) {\n  const config = scope.config.legend,\n        encode = spec.encode || {},\n        _ = lookup(spec, config),\n        legendEncode = encode.legend || {},\n        name = legendEncode.name || undefined,\n        interactive = legendEncode.interactive,\n        style = legendEncode.style,\n        scales = {};\n\n  let scale = 0,\n      entryLayout,\n      params,\n      children; // resolve scales and 'canonical' scale name\n\n  LegendScales.forEach(s => spec[s] ? (scales[s] = spec[s], scale = scale || spec[s]) : 0);\n  if (!scale) Object(vega_util__WEBPACK_IMPORTED_MODULE_0__[\"error\"])('Missing valid scale for legend.'); // resolve legend type (symbol, gradient, or discrete gradient)\n\n  const type = legendType(spec, scope.scaleType(scale)); // single-element data source for legend group\n\n  const datum = {\n    title: spec.title != null,\n    scales: scales,\n    type: type,\n    vgrad: type !== 'symbol' && _.isVertical()\n  };\n  const dataRef = ref(scope.add(Collect(null, [datum]))); // encoding properties for legend entry sub-group\n\n  const entryEncode = {\n    enter: {\n      x: {\n        value: 0\n      },\n      y: {\n        value: 0\n      }\n    }\n  }; // data source for legend values\n\n  const entryRef = ref(scope.add(LegendEntries(params = {\n    type: type,\n    scale: scope.scaleRef(scale),\n    count: scope.objectProperty(_('tickCount')),\n    limit: scope.property(_('symbolLimit')),\n    values: scope.objectProperty(spec.values),\n    minstep: scope.property(spec.tickMinStep),\n    formatType: scope.property(spec.formatType),\n    formatSpecifier: scope.property(spec.format)\n  }))); // continuous gradient legend\n\n  if (type === Gradient) {\n    children = [legendGradient(spec, scale, config, encode.gradient), legendGradientLabels(spec, config, encode.labels, entryRef)]; // adjust default tick count based on the gradient length\n\n    params.count = params.count || scope.signalRef(\"max(2,2*floor((\".concat(deref(_.gradientLength()), \")/100))\"));\n  } // discrete gradient legend\n  else if (type === Discrete) {\n      children = [legendGradientDiscrete(spec, scale, config, encode.gradient, entryRef), legendGradientLabels(spec, config, encode.labels, entryRef)];\n    } // symbol legend\n    else {\n        // determine legend symbol group layout\n        entryLayout = legendSymbolLayout(spec, config);\n        children = [legendSymbolGroups(spec, config, encode, entryRef, deref(entryLayout.columns))]; // pass symbol size information to legend entry generator\n\n        params.size = sizeExpression(spec, scope, children[0].marks);\n      } // generate legend marks\n\n\n  children = [guideGroup({\n    role: LegendEntryRole,\n    from: dataRef,\n    encode: entryEncode,\n    marks: children,\n    layout: entryLayout,\n    interactive\n  })]; // include legend title if defined\n\n  if (datum.title) {\n    children.push(legendTitle(spec, config, encode.title, dataRef));\n  } // parse legend specification\n\n\n  return parseMark(guideGroup({\n    role: LegendRole,\n    from: dataRef,\n    encode: extendEncode(buildLegendEncode(_, spec, config), legendEncode, Skip),\n    marks: children,\n    aria: _('aria'),\n    description: _('description'),\n    zindex: _('zindex'),\n    name,\n    interactive,\n    style\n  }), scope);\n}\n\nfunction legendType(spec, scaleType) {\n  let type = spec.type || Symbols;\n\n  if (!spec.type && scaleCount(spec) === 1 && (spec.fill || spec.stroke)) {\n    type = Object(vega_scale__WEBPACK_IMPORTED_MODULE_3__[\"isContinuous\"])(scaleType) ? Gradient : Object(vega_scale__WEBPACK_IMPORTED_MODULE_3__[\"isDiscretizing\"])(scaleType) ? Discrete : Symbols;\n  }\n\n  return type !== Gradient ? type : Object(vega_scale__WEBPACK_IMPORTED_MODULE_3__[\"isDiscretizing\"])(scaleType) ? Discrete : Gradient;\n}\n\nfunction scaleCount(spec) {\n  return LegendScales.reduce((count, type) => count + (spec[type] ? 1 : 0), 0);\n}\n\nfunction buildLegendEncode(_, spec, config) {\n  const encode = {\n    enter: {},\n    update: {}\n  };\n  addEncoders(encode, {\n    orient: _('orient'),\n    offset: _('offset'),\n    padding: _('padding'),\n    titlePadding: _('titlePadding'),\n    cornerRadius: _('cornerRadius'),\n    fill: _('fillColor'),\n    stroke: _('strokeColor'),\n    strokeWidth: config.strokeWidth,\n    strokeDash: config.strokeDash,\n    x: _('legendX'),\n    y: _('legendY'),\n    // accessibility support\n    format: spec.format,\n    formatType: spec.formatType\n  });\n  return encode;\n}\n\nfunction sizeExpression(spec, scope, marks) {\n  const size = deref(getChannel('size', spec, marks)),\n        strokeWidth = deref(getChannel('strokeWidth', spec, marks)),\n        fontSize = deref(getFontSize(marks[1].encode, scope, GuideLabelStyle));\n  return Object(vega_functions__WEBPACK_IMPORTED_MODULE_1__[\"parseExpression\"])(\"max(ceil(sqrt(\".concat(size, \")+\").concat(strokeWidth, \"),\").concat(fontSize, \")\"), scope);\n}\n\nfunction getChannel(name, spec, marks) {\n  return spec[name] ? \"scale(\\\"\".concat(spec[name], \"\\\",datum)\") : getEncoding(name, marks[0].encode);\n}\n\nfunction getFontSize(encode, scope, style) {\n  return getEncoding('fontSize', encode) || getStyle('fontSize', scope, style);\n}\n\nconst angleExpr = \"item.orient===\\\"\".concat(Left, \"\\\"?-90:item.orient===\\\"\").concat(Right, \"\\\"?90:0\");\nfunction parseTitle (spec, scope) {\n  spec = Object(vega_util__WEBPACK_IMPORTED_MODULE_0__[\"isString\"])(spec) ? {\n    text: spec\n  } : spec;\n\n  const _ = lookup(spec, scope.config.title),\n        encode = spec.encode || {},\n        userEncode = encode.group || {},\n        name = userEncode.name || undefined,\n        interactive = userEncode.interactive,\n        style = userEncode.style,\n        children = []; // single-element data source for group title\n\n\n  const datum = {},\n        dataRef = ref(scope.add(Collect(null, [datum]))); // include title text\n\n  children.push(buildTitle(spec, _, titleEncode(spec), dataRef)); // include subtitle text\n\n  if (spec.subtitle) {\n    children.push(buildSubTitle(spec, _, encode.subtitle, dataRef));\n  } // parse title specification\n\n\n  return parseMark(guideGroup({\n    role: TitleRole,\n    from: dataRef,\n    encode: groupEncode(_, userEncode),\n    marks: children,\n    aria: _('aria'),\n    description: _('description'),\n    zindex: _('zindex'),\n    name,\n    interactive,\n    style\n  }), scope);\n} // provide backwards-compatibility for title custom encode;\n// the top-level encode block has been *deprecated*.\n\nfunction titleEncode(spec) {\n  const encode = spec.encode;\n  return encode && encode.title || Object(vega_util__WEBPACK_IMPORTED_MODULE_0__[\"extend\"])({\n    name: spec.name,\n    interactive: spec.interactive,\n    style: spec.style\n  }, encode);\n}\n\nfunction groupEncode(_, userEncode) {\n  const encode = {\n    enter: {},\n    update: {}\n  };\n  addEncoders(encode, {\n    orient: _('orient'),\n    anchor: _('anchor'),\n    align: {\n      signal: alignExpr\n    },\n    angle: {\n      signal: angleExpr\n    },\n    limit: _('limit'),\n    frame: _('frame'),\n    offset: _('offset') || 0,\n    padding: _('subtitlePadding')\n  });\n  return extendEncode(encode, userEncode, Skip);\n}\n\nfunction buildTitle(spec, _, userEncode, dataRef) {\n  const zero = {\n    value: 0\n  },\n        text = spec.text,\n        encode = {\n    enter: {\n      opacity: zero\n    },\n    update: {\n      opacity: {\n        value: 1\n      }\n    },\n    exit: {\n      opacity: zero\n    }\n  };\n  addEncoders(encode, {\n    text: text,\n    align: {\n      signal: 'item.mark.group.align'\n    },\n    angle: {\n      signal: 'item.mark.group.angle'\n    },\n    limit: {\n      signal: 'item.mark.group.limit'\n    },\n    baseline: 'top',\n    dx: _('dx'),\n    dy: _('dy'),\n    fill: _('color'),\n    font: _('font'),\n    fontSize: _('fontSize'),\n    fontStyle: _('fontStyle'),\n    fontWeight: _('fontWeight'),\n    lineHeight: _('lineHeight')\n  }, {\n    // update\n    align: _('align'),\n    angle: _('angle'),\n    baseline: _('baseline')\n  });\n  return guideMark({\n    type: TextMark,\n    role: TitleTextRole,\n    style: GroupTitleStyle,\n    from: dataRef,\n    encode\n  }, userEncode);\n}\n\nfunction buildSubTitle(spec, _, userEncode, dataRef) {\n  const zero = {\n    value: 0\n  },\n        text = spec.subtitle,\n        encode = {\n    enter: {\n      opacity: zero\n    },\n    update: {\n      opacity: {\n        value: 1\n      }\n    },\n    exit: {\n      opacity: zero\n    }\n  };\n  addEncoders(encode, {\n    text: text,\n    align: {\n      signal: 'item.mark.group.align'\n    },\n    angle: {\n      signal: 'item.mark.group.angle'\n    },\n    limit: {\n      signal: 'item.mark.group.limit'\n    },\n    baseline: 'top',\n    dx: _('dx'),\n    dy: _('dy'),\n    fill: _('subtitleColor'),\n    font: _('subtitleFont'),\n    fontSize: _('subtitleFontSize'),\n    fontStyle: _('subtitleFontStyle'),\n    fontWeight: _('subtitleFontWeight'),\n    lineHeight: _('subtitleLineHeight')\n  }, {\n    // update\n    align: _('align'),\n    angle: _('angle'),\n    baseline: _('baseline')\n  });\n  return guideMark({\n    type: TextMark,\n    role: TitleSubtitleRole,\n    style: GroupSubtitleStyle,\n    from: dataRef,\n    encode\n  }, userEncode);\n}\n\nfunction parseData$1(data, scope) {\n  const transforms = [];\n\n  if (data.transform) {\n    data.transform.forEach(tx => {\n      transforms.push(parseTransform(tx, scope));\n    });\n  }\n\n  if (data.on) {\n    data.on.forEach(on => {\n      parseTrigger(on, scope, data.name);\n    });\n  }\n\n  scope.addDataPipeline(data.name, analyze(data, scope, transforms));\n}\n/**\n * Analyze a data pipeline, add needed operators.\n */\n\nfunction analyze(data, scope, ops) {\n  const output = [];\n  let source = null,\n      modify = false,\n      generate = false,\n      upstream,\n      i,\n      n,\n      t,\n      m;\n\n  if (data.values) {\n    // hard-wired input data set\n    if (isSignal(data.values) || hasSignal(data.format)) {\n      // if either values is signal or format has signal, use dynamic loader\n      output.push(load(scope, data));\n      output.push(source = collect());\n    } else {\n      // otherwise, ingest upon dataflow init\n      output.push(source = collect({\n        $ingest: data.values,\n        $format: data.format\n      }));\n    }\n  } else if (data.url) {\n    // load data from external source\n    if (hasSignal(data.url) || hasSignal(data.format)) {\n      // if either url or format has signal, use dynamic loader\n      output.push(load(scope, data));\n      output.push(source = collect());\n    } else {\n      // otherwise, request load upon dataflow init\n      output.push(source = collect({\n        $request: data.url,\n        $format: data.format\n      }));\n    }\n  } else if (data.source) {\n    // derives from one or more other data sets\n    source = upstream = Object(vega_util__WEBPACK_IMPORTED_MODULE_0__[\"array\"])(data.source).map(d => ref(scope.getData(d).output));\n    output.push(null); // populate later\n  } // scan data transforms, add collectors as needed\n\n\n  for (i = 0, n = ops.length; i < n; ++i) {\n    t = ops[i];\n    m = t.metadata;\n\n    if (!source && !m.source) {\n      output.push(source = collect());\n    }\n\n    output.push(t);\n    if (m.generates) generate = true;\n    if (m.modifies && !generate) modify = true;\n    if (m.source) source = t;else if (m.changes) source = null;\n  }\n\n  if (upstream) {\n    n = upstream.length - 1;\n    output[0] = Relay({\n      derive: modify,\n      pulse: n ? upstream : upstream[0]\n    });\n\n    if (modify || n) {\n      // collect derived and multi-pulse tuples\n      output.splice(1, 0, collect());\n    }\n  }\n\n  if (!source) output.push(collect());\n  output.push(Sieve({}));\n  return output;\n}\n\nfunction collect(values) {\n  const s = Collect({}, values);\n  s.metadata = {\n    source: true\n  };\n  return s;\n}\n\nfunction load(scope, data) {\n  return Load({\n    url: data.url ? scope.property(data.url) : undefined,\n    async: data.async ? scope.property(data.async) : undefined,\n    values: data.values ? scope.property(data.values) : undefined,\n    format: scope.objectProperty(data.format)\n  });\n}\n\nconst isX = orient => orient === Bottom || orient === Top; // get sign coefficient based on axis orient\n\n\nconst getSign = (orient, a, b) => isSignal(orient) ? ifLeftTopExpr(orient.signal, a, b) : orient === Left || orient === Top ? a : b; // condition on axis x-direction\n\nconst ifX = (orient, a, b) => isSignal(orient) ? ifXEnc(orient.signal, a, b) : isX(orient) ? a : b; // condition on axis y-direction\n\nconst ifY = (orient, a, b) => isSignal(orient) ? ifYEnc(orient.signal, a, b) : isX(orient) ? b : a;\nconst ifTop = (orient, a, b) => isSignal(orient) ? ifTopExpr(orient.signal, a, b) : orient === Top ? {\n  value: a\n} : {\n  value: b\n};\nconst ifRight = (orient, a, b) => isSignal(orient) ? ifRightExpr(orient.signal, a, b) : orient === Right ? {\n  value: a\n} : {\n  value: b\n};\n\nconst ifXEnc = ($orient, a, b) => ifEnc(\"\".concat($orient, \" === '\").concat(Top, \"' || \").concat($orient, \" === '\").concat(Bottom, \"'\"), a, b);\n\nconst ifYEnc = ($orient, a, b) => ifEnc(\"\".concat($orient, \" !== '\").concat(Top, \"' && \").concat($orient, \" !== '\").concat(Bottom, \"'\"), a, b);\n\nconst ifLeftTopExpr = ($orient, a, b) => ifExpr(\"\".concat($orient, \" === '\").concat(Left, \"' || \").concat($orient, \" === '\").concat(Top, \"'\"), a, b);\n\nconst ifTopExpr = ($orient, a, b) => ifExpr(\"\".concat($orient, \" === '\").concat(Top, \"'\"), a, b);\n\nconst ifRightExpr = ($orient, a, b) => ifExpr(\"\".concat($orient, \" === '\").concat(Right, \"'\"), a, b);\n\nconst ifEnc = (test, a, b) => {\n  // ensure inputs are encoder objects (or null)\n  a = a != null ? encoder(a) : a;\n  b = b != null ? encoder(b) : b;\n\n  if (isSimple(a) && isSimple(b)) {\n    // if possible generate simple signal expression\n    a = a ? a.signal || Object(vega_util__WEBPACK_IMPORTED_MODULE_0__[\"stringValue\"])(a.value) : null;\n    b = b ? b.signal || Object(vega_util__WEBPACK_IMPORTED_MODULE_0__[\"stringValue\"])(b.value) : null;\n    return {\n      signal: \"\".concat(test, \" ? (\").concat(a, \") : (\").concat(b, \")\")\n    };\n  } else {\n    // otherwise generate rule set\n    return [Object(vega_util__WEBPACK_IMPORTED_MODULE_0__[\"extend\"])({\n      test\n    }, a)].concat(b || []);\n  }\n};\n\nconst isSimple = enc => enc == null || Object.keys(enc).length === 1;\n\nconst ifExpr = (test, a, b) => ({\n  signal: \"\".concat(test, \" ? (\").concat(toExpr(a), \") : (\").concat(toExpr(b), \")\")\n});\n\nconst ifOrient = ($orient, t, b, l, r) => ({\n  signal: (l != null ? \"\".concat($orient, \" === '\").concat(Left, \"' ? (\").concat(toExpr(l), \") : \") : '') + (b != null ? \"\".concat($orient, \" === '\").concat(Bottom, \"' ? (\").concat(toExpr(b), \") : \") : '') + (r != null ? \"\".concat($orient, \" === '\").concat(Right, \"' ? (\").concat(toExpr(r), \") : \") : '') + (t != null ? \"\".concat($orient, \" === '\").concat(Top, \"' ? (\").concat(toExpr(t), \") : \") : '') + '(null)'\n});\n\nconst toExpr = v => isSignal(v) ? v.signal : v == null ? null : Object(vega_util__WEBPACK_IMPORTED_MODULE_0__[\"stringValue\"])(v);\n\nconst mult = (sign, value) => value === 0 ? 0 : isSignal(sign) ? {\n  signal: \"(\".concat(sign.signal, \") * \").concat(value)\n} : {\n  value: sign * value\n};\nconst patch = (value, base) => {\n  const s = value.signal;\n  return s && s.endsWith('(null)') ? {\n    signal: s.slice(0, -6) + base.signal\n  } : value;\n};\n\nfunction fallback(prop, config, axisConfig, style) {\n  let styleProp;\n\n  if (config && Object(vega_util__WEBPACK_IMPORTED_MODULE_0__[\"hasOwnProperty\"])(config, prop)) {\n    return config[prop];\n  } else if (Object(vega_util__WEBPACK_IMPORTED_MODULE_0__[\"hasOwnProperty\"])(axisConfig, prop)) {\n    return axisConfig[prop];\n  } else if (prop.startsWith('title')) {\n    switch (prop) {\n      case 'titleColor':\n        styleProp = 'fill';\n        break;\n\n      case 'titleFont':\n      case 'titleFontSize':\n      case 'titleFontWeight':\n        styleProp = prop[5].toLowerCase() + prop.slice(6);\n    }\n\n    return style[GuideTitleStyle][styleProp];\n  } else if (prop.startsWith('label')) {\n    switch (prop) {\n      case 'labelColor':\n        styleProp = 'fill';\n        break;\n\n      case 'labelFont':\n      case 'labelFontSize':\n        styleProp = prop[5].toLowerCase() + prop.slice(6);\n    }\n\n    return style[GuideLabelStyle][styleProp];\n  }\n\n  return null;\n}\n\nfunction keys(objects) {\n  const map = {};\n\n  for (const obj of objects) {\n    if (!obj) continue;\n\n    for (const key in obj) map[key] = 1;\n  }\n\n  return Object.keys(map);\n}\n\nfunction axisConfig (spec, scope) {\n  var config = scope.config,\n      style = config.style,\n      axis = config.axis,\n      band = scope.scaleType(spec.scale) === 'band' && config.axisBand,\n      orient = spec.orient,\n      xy,\n      or,\n      key;\n\n  if (isSignal(orient)) {\n    const xyKeys = keys([config.axisX, config.axisY]),\n          orientKeys = keys([config.axisTop, config.axisBottom, config.axisLeft, config.axisRight]);\n    xy = {};\n\n    for (key of xyKeys) {\n      xy[key] = ifX(orient, fallback(key, config.axisX, axis, style), fallback(key, config.axisY, axis, style));\n    }\n\n    or = {};\n\n    for (key of orientKeys) {\n      or[key] = ifOrient(orient.signal, fallback(key, config.axisTop, axis, style), fallback(key, config.axisBottom, axis, style), fallback(key, config.axisLeft, axis, style), fallback(key, config.axisRight, axis, style));\n    }\n  } else {\n    xy = orient === Top || orient === Bottom ? config.axisX : config.axisY;\n    or = config['axis' + orient[0].toUpperCase() + orient.slice(1)];\n  }\n\n  const result = xy || or || band ? Object(vega_util__WEBPACK_IMPORTED_MODULE_0__[\"extend\"])({}, axis, xy, or, band) : axis;\n  return result;\n}\n\nfunction axisDomain (spec, config, userEncode, dataRef) {\n  const _ = lookup(spec, config),\n        orient = spec.orient;\n\n  let enter, update;\n  const encode = {\n    enter: enter = {\n      opacity: zero\n    },\n    update: update = {\n      opacity: one\n    },\n    exit: {\n      opacity: zero\n    }\n  };\n  addEncoders(encode, {\n    stroke: _('domainColor'),\n    strokeCap: _('domainCap'),\n    strokeDash: _('domainDash'),\n    strokeDashOffset: _('domainDashOffset'),\n    strokeWidth: _('domainWidth'),\n    strokeOpacity: _('domainOpacity')\n  });\n  const pos0 = position(spec, 0);\n  const pos1 = position(spec, 1);\n  enter.x = update.x = ifX(orient, pos0, zero);\n  enter.x2 = update.x2 = ifX(orient, pos1);\n  enter.y = update.y = ifY(orient, pos0, zero);\n  enter.y2 = update.y2 = ifY(orient, pos1);\n  return guideMark({\n    type: RuleMark,\n    role: AxisDomainRole,\n    from: dataRef,\n    encode\n  }, userEncode);\n}\n\nfunction position(spec, pos) {\n  return {\n    scale: spec.scale,\n    range: pos\n  };\n}\n\nfunction axisGrid (spec, config, userEncode, dataRef, band) {\n  const _ = lookup(spec, config),\n        orient = spec.orient,\n        vscale = spec.gridScale,\n        sign = getSign(orient, 1, -1),\n        offset = offsetValue(spec.offset, sign);\n\n  let enter, exit, update;\n  const encode = {\n    enter: enter = {\n      opacity: zero\n    },\n    update: update = {\n      opacity: one\n    },\n    exit: exit = {\n      opacity: zero\n    }\n  };\n  addEncoders(encode, {\n    stroke: _('gridColor'),\n    strokeCap: _('gridCap'),\n    strokeDash: _('gridDash'),\n    strokeDashOffset: _('gridDashOffset'),\n    strokeOpacity: _('gridOpacity'),\n    strokeWidth: _('gridWidth')\n  });\n  const tickPos = {\n    scale: spec.scale,\n    field: Value,\n    band: band.band,\n    extra: band.extra,\n    offset: band.offset,\n    round: _('tickRound')\n  };\n  const sz = ifX(orient, {\n    signal: 'height'\n  }, {\n    signal: 'width'\n  });\n  const gridStart = vscale ? {\n    scale: vscale,\n    range: 0,\n    mult: sign,\n    offset: offset\n  } : {\n    value: 0,\n    offset: offset\n  };\n  const gridEnd = vscale ? {\n    scale: vscale,\n    range: 1,\n    mult: sign,\n    offset: offset\n  } : Object(vega_util__WEBPACK_IMPORTED_MODULE_0__[\"extend\"])(sz, {\n    mult: sign,\n    offset: offset\n  });\n  enter.x = update.x = ifX(orient, tickPos, gridStart);\n  enter.y = update.y = ifY(orient, tickPos, gridStart);\n  enter.x2 = update.x2 = ifY(orient, gridEnd);\n  enter.y2 = update.y2 = ifX(orient, gridEnd);\n  exit.x = ifX(orient, tickPos);\n  exit.y = ifY(orient, tickPos);\n  return guideMark({\n    type: RuleMark,\n    role: AxisGridRole,\n    key: Value,\n    from: dataRef,\n    encode\n  }, userEncode);\n}\n\nfunction offsetValue(offset, sign) {\n  if (sign === 1) ; else if (!Object(vega_util__WEBPACK_IMPORTED_MODULE_0__[\"isObject\"])(offset)) {\n    offset = isSignal(sign) ? {\n      signal: \"(\".concat(sign.signal, \") * (\").concat(offset || 0, \")\")\n    } : sign * (offset || 0);\n  } else {\n    let entry = offset = Object(vega_util__WEBPACK_IMPORTED_MODULE_0__[\"extend\"])({}, offset);\n\n    while (entry.mult != null) {\n      if (!Object(vega_util__WEBPACK_IMPORTED_MODULE_0__[\"isObject\"])(entry.mult)) {\n        entry.mult = isSignal(sign) // no offset if sign === 1\n        ? {\n          signal: \"(\".concat(entry.mult, \") * (\").concat(sign.signal, \")\")\n        } : entry.mult * sign;\n        return offset;\n      } else {\n        entry = entry.mult = Object(vega_util__WEBPACK_IMPORTED_MODULE_0__[\"extend\"])({}, entry.mult);\n      }\n    }\n\n    entry.mult = sign;\n  }\n\n  return offset;\n}\n\nfunction axisTicks (spec, config, userEncode, dataRef, size, band) {\n  const _ = lookup(spec, config),\n        orient = spec.orient,\n        sign = getSign(orient, -1, 1);\n\n  let enter, exit, update;\n  const encode = {\n    enter: enter = {\n      opacity: zero\n    },\n    update: update = {\n      opacity: one\n    },\n    exit: exit = {\n      opacity: zero\n    }\n  };\n  addEncoders(encode, {\n    stroke: _('tickColor'),\n    strokeCap: _('tickCap'),\n    strokeDash: _('tickDash'),\n    strokeDashOffset: _('tickDashOffset'),\n    strokeOpacity: _('tickOpacity'),\n    strokeWidth: _('tickWidth')\n  });\n  const tickSize = encoder(size);\n  tickSize.mult = sign;\n  const tickPos = {\n    scale: spec.scale,\n    field: Value,\n    band: band.band,\n    extra: band.extra,\n    offset: band.offset,\n    round: _('tickRound')\n  };\n  update.y = enter.y = ifX(orient, zero, tickPos);\n  update.y2 = enter.y2 = ifX(orient, tickSize);\n  exit.x = ifX(orient, tickPos);\n  update.x = enter.x = ifY(orient, zero, tickPos);\n  update.x2 = enter.x2 = ifY(orient, tickSize);\n  exit.y = ifY(orient, tickPos);\n  return guideMark({\n    type: RuleMark,\n    role: AxisTickRole,\n    key: Value,\n    from: dataRef,\n    encode\n  }, userEncode);\n}\n\nfunction flushExpr(scale, threshold, a, b, c) {\n  return {\n    signal: 'flush(range(\"' + scale + '\"), ' + 'scale(\"' + scale + '\", datum.value), ' + threshold + ',' + a + ',' + b + ',' + c + ')'\n  };\n}\n\nfunction axisLabels (spec, config, userEncode, dataRef, size, band) {\n  const _ = lookup(spec, config),\n        orient = spec.orient,\n        scale = spec.scale,\n        sign = getSign(orient, -1, 1),\n        flush = deref(_('labelFlush')),\n        flushOffset = deref(_('labelFlushOffset')),\n        labelAlign = _('labelAlign'),\n        labelBaseline = _('labelBaseline');\n\n  let flushOn = flush === 0 || !!flush,\n      update;\n  const tickSize = encoder(size);\n  tickSize.mult = sign;\n  tickSize.offset = encoder(_('labelPadding') || 0);\n  tickSize.offset.mult = sign;\n  const tickPos = {\n    scale: scale,\n    field: Value,\n    band: 0.5,\n    offset: extendOffset(band.offset, _('labelOffset'))\n  };\n  const align = ifX(orient, flushOn ? flushExpr(scale, flush, '\"left\"', '\"right\"', '\"center\"') : {\n    value: 'center'\n  }, ifRight(orient, 'left', 'right'));\n  const baseline = ifX(orient, ifTop(orient, 'bottom', 'top'), flushOn ? flushExpr(scale, flush, '\"top\"', '\"bottom\"', '\"middle\"') : {\n    value: 'middle'\n  });\n  const offsetExpr = flushExpr(scale, flush, \"-(\".concat(flushOffset, \")\"), flushOffset, 0);\n  flushOn = flushOn && flushOffset;\n  const enter = {\n    opacity: zero,\n    x: ifX(orient, tickPos, tickSize),\n    y: ifY(orient, tickPos, tickSize)\n  };\n  const encode = {\n    enter: enter,\n    update: update = {\n      opacity: one,\n      text: {\n        field: Label\n      },\n      x: enter.x,\n      y: enter.y,\n      align,\n      baseline\n    },\n    exit: {\n      opacity: zero,\n      x: enter.x,\n      y: enter.y\n    }\n  };\n  addEncoders(encode, {\n    dx: !labelAlign && flushOn ? ifX(orient, offsetExpr) : null,\n    dy: !labelBaseline && flushOn ? ifY(orient, offsetExpr) : null\n  });\n  addEncoders(encode, {\n    angle: _('labelAngle'),\n    fill: _('labelColor'),\n    fillOpacity: _('labelOpacity'),\n    font: _('labelFont'),\n    fontSize: _('labelFontSize'),\n    fontWeight: _('labelFontWeight'),\n    fontStyle: _('labelFontStyle'),\n    limit: _('labelLimit'),\n    lineHeight: _('labelLineHeight')\n  }, {\n    align: labelAlign,\n    baseline: labelBaseline\n  });\n\n  const bound = _('labelBound');\n\n  let overlap = _('labelOverlap'); // if overlap method or bound defined, request label overlap removal\n\n\n  overlap = overlap || bound ? {\n    separation: _('labelSeparation'),\n    method: overlap,\n    order: 'datum.index',\n    bound: bound ? {\n      scale,\n      orient,\n      tolerance: bound\n    } : null\n  } : undefined;\n\n  if (update.align !== align) {\n    update.align = patch(update.align, align);\n  }\n\n  if (update.baseline !== baseline) {\n    update.baseline = patch(update.baseline, baseline);\n  }\n\n  return guideMark({\n    type: TextMark,\n    role: AxisLabelRole,\n    style: GuideLabelStyle,\n    key: Value,\n    from: dataRef,\n    encode,\n    overlap\n  }, userEncode);\n}\n\nfunction axisTitle (spec, config, userEncode, dataRef) {\n  const _ = lookup(spec, config),\n        orient = spec.orient,\n        sign = getSign(orient, -1, 1);\n\n  let enter, update;\n  const encode = {\n    enter: enter = {\n      opacity: zero,\n      anchor: encoder(_('titleAnchor', null)),\n      align: {\n        signal: alignExpr\n      }\n    },\n    update: update = Object(vega_util__WEBPACK_IMPORTED_MODULE_0__[\"extend\"])({}, enter, {\n      opacity: one,\n      text: encoder(spec.title)\n    }),\n    exit: {\n      opacity: zero\n    }\n  };\n  const titlePos = {\n    signal: \"lerp(range(\\\"\".concat(spec.scale, \"\\\"), \").concat(anchorExpr(0, 1, 0.5), \")\")\n  };\n  update.x = ifX(orient, titlePos);\n  update.y = ifY(orient, titlePos);\n  enter.angle = ifX(orient, zero, mult(sign, 90));\n  enter.baseline = ifX(orient, ifTop(orient, Bottom, Top), {\n    value: Bottom\n  });\n  update.angle = enter.angle;\n  update.baseline = enter.baseline;\n  addEncoders(encode, {\n    fill: _('titleColor'),\n    fillOpacity: _('titleOpacity'),\n    font: _('titleFont'),\n    fontSize: _('titleFontSize'),\n    fontStyle: _('titleFontStyle'),\n    fontWeight: _('titleFontWeight'),\n    limit: _('titleLimit'),\n    lineHeight: _('titleLineHeight')\n  }, {\n    // require update\n    align: _('titleAlign'),\n    angle: _('titleAngle'),\n    baseline: _('titleBaseline')\n  });\n  autoLayout(_, orient, encode, userEncode);\n  encode.update.align = patch(encode.update.align, enter.align);\n  encode.update.angle = patch(encode.update.angle, enter.angle);\n  encode.update.baseline = patch(encode.update.baseline, enter.baseline);\n  return guideMark({\n    type: TextMark,\n    role: AxisTitleRole,\n    style: GuideTitleStyle,\n    from: dataRef,\n    encode\n  }, userEncode);\n}\n\nfunction autoLayout(_, orient, encode, userEncode) {\n  const auto = (value, dim) => value != null ? (encode.update[dim] = patch(encoder(value), encode.update[dim]), false) : !has(dim, userEncode) ? true : false;\n\n  const autoY = auto(_('titleX'), 'x'),\n        autoX = auto(_('titleY'), 'y');\n  encode.enter.auto = autoX === autoY ? encoder(autoX) : ifX(orient, encoder(autoX), encoder(autoY));\n}\n\nfunction parseAxis (spec, scope) {\n  const config = axisConfig(spec, scope),\n        encode = spec.encode || {},\n        axisEncode = encode.axis || {},\n        name = axisEncode.name || undefined,\n        interactive = axisEncode.interactive,\n        style = axisEncode.style,\n        _ = lookup(spec, config),\n        band = tickBand(_); // single-element data source for axis group\n\n\n  const datum = {\n    scale: spec.scale,\n    ticks: !!_('ticks'),\n    labels: !!_('labels'),\n    grid: !!_('grid'),\n    domain: !!_('domain'),\n    title: spec.title != null\n  };\n  const dataRef = ref(scope.add(Collect({}, [datum]))); // data source for axis ticks\n\n  const ticksRef = ref(scope.add(AxisTicks({\n    scale: scope.scaleRef(spec.scale),\n    extra: scope.property(band.extra),\n    count: scope.objectProperty(spec.tickCount),\n    values: scope.objectProperty(spec.values),\n    minstep: scope.property(spec.tickMinStep),\n    formatType: scope.property(spec.formatType),\n    formatSpecifier: scope.property(spec.format)\n  }))); // generate axis marks\n\n  const children = [];\n  let size; // include axis gridlines if requested\n\n  if (datum.grid) {\n    children.push(axisGrid(spec, config, encode.grid, ticksRef, band));\n  } // include axis ticks if requested\n\n\n  if (datum.ticks) {\n    size = _('tickSize');\n    children.push(axisTicks(spec, config, encode.ticks, ticksRef, size, band));\n  } // include axis labels if requested\n\n\n  if (datum.labels) {\n    size = datum.ticks ? size : 0;\n    children.push(axisLabels(spec, config, encode.labels, ticksRef, size, band));\n  } // include axis domain path if requested\n\n\n  if (datum.domain) {\n    children.push(axisDomain(spec, config, encode.domain, dataRef));\n  } // include axis title if defined\n\n\n  if (datum.title) {\n    children.push(axisTitle(spec, config, encode.title, dataRef));\n  } // parse axis specification\n\n\n  return parseMark(guideGroup({\n    role: AxisRole,\n    from: dataRef,\n    encode: extendEncode(buildAxisEncode(_, spec), axisEncode, Skip),\n    marks: children,\n    aria: _('aria'),\n    description: _('description'),\n    zindex: _('zindex'),\n    name,\n    interactive,\n    style\n  }), scope);\n}\n\nfunction buildAxisEncode(_, spec) {\n  const encode = {\n    enter: {},\n    update: {}\n  };\n  addEncoders(encode, {\n    orient: _('orient'),\n    offset: _('offset') || 0,\n    position: value(spec.position, 0),\n    titlePadding: _('titlePadding'),\n    minExtent: _('minExtent'),\n    maxExtent: _('maxExtent'),\n    range: {\n      signal: \"abs(span(range(\\\"\".concat(spec.scale, \"\\\")))\")\n    },\n    translate: _('translate'),\n    // accessibility support\n    format: spec.format,\n    formatType: spec.formatType\n  });\n  return encode;\n}\n\nfunction parseScope (spec, scope, preprocessed) {\n  const signals = Object(vega_util__WEBPACK_IMPORTED_MODULE_0__[\"array\"])(spec.signals),\n        scales = Object(vega_util__WEBPACK_IMPORTED_MODULE_0__[\"array\"])(spec.scales); // parse signal definitions, if not already preprocessed\n\n  if (!preprocessed) signals.forEach(_ => parseSignal(_, scope)); // parse cartographic projection definitions\n\n  Object(vega_util__WEBPACK_IMPORTED_MODULE_0__[\"array\"])(spec.projections).forEach(_ => parseProjection(_, scope)); // initialize scale references\n\n  scales.forEach(_ => initScale(_, scope)); // parse data sources\n\n  Object(vega_util__WEBPACK_IMPORTED_MODULE_0__[\"array\"])(spec.data).forEach(_ => parseData$1(_, scope)); // parse scale definitions\n\n  scales.forEach(_ => parseScale(_, scope)); // parse signal updates\n\n  (preprocessed || signals).forEach(_ => parseSignalUpdates(_, scope)); // parse axis definitions\n\n  Object(vega_util__WEBPACK_IMPORTED_MODULE_0__[\"array\"])(spec.axes).forEach(_ => parseAxis(_, scope)); // parse mark definitions\n\n  Object(vega_util__WEBPACK_IMPORTED_MODULE_0__[\"array\"])(spec.marks).forEach(_ => parseMark(_, scope)); // parse legend definitions\n\n  Object(vega_util__WEBPACK_IMPORTED_MODULE_0__[\"array\"])(spec.legends).forEach(_ => parseLegend(_, scope)); // parse title, if defined\n\n  if (spec.title) parseTitle(spec.title, scope); // parse collected lambda (anonymous) expressions\n\n  scope.parseLambdas();\n  return scope;\n}\n\nconst rootEncode = spec => extendEncode({\n  enter: {\n    x: {\n      value: 0\n    },\n    y: {\n      value: 0\n    }\n  },\n  update: {\n    width: {\n      signal: 'width'\n    },\n    height: {\n      signal: 'height'\n    }\n  }\n}, spec);\n\nfunction parseView(spec, scope) {\n  const config = scope.config; // add scenegraph root\n\n  const root = ref(scope.root = scope.add(operator())); // parse top-level signal definitions\n\n  const signals = collectSignals(spec, config);\n  signals.forEach(_ => parseSignal(_, scope)); // assign description, event, legend, and locale configuration\n\n  scope.description = spec.description || config.description;\n  scope.eventConfig = config.events;\n  scope.legends = scope.objectProperty(config.legend && config.legend.layout);\n  scope.locale = config.locale; // store root group item\n\n  const input = scope.add(Collect()); // encode root group item\n\n  const encode = scope.add(Encode(parseEncode(rootEncode(spec.encode), GroupMark, FrameRole, spec.style, scope, {\n    pulse: ref(input)\n  }))); // perform view layout\n\n  const parent = scope.add(ViewLayout({\n    layout: scope.objectProperty(spec.layout),\n    legends: scope.legends,\n    autosize: scope.signalRef('autosize'),\n    mark: root,\n    pulse: ref(encode)\n  }));\n  scope.operators.pop(); // parse remainder of specification\n\n  scope.pushState(ref(encode), ref(parent), null);\n  parseScope(spec, scope, signals);\n  scope.operators.push(parent); // bound / render / sieve root item\n\n  let op = scope.add(Bound({\n    mark: root,\n    pulse: ref(parent)\n  }));\n  op = scope.add(Render({\n    pulse: ref(op)\n  }));\n  op = scope.add(Sieve({\n    pulse: ref(op)\n  })); // track metadata for root item\n\n  scope.addData('root', new DataScope(scope, input, input, op));\n  return scope;\n}\n\nfunction signalObject(name, value) {\n  return value && value.signal ? {\n    name,\n    update: value.signal\n  } : {\n    name,\n    value\n  };\n}\n/**\n * Collect top-level signals, merging values as needed. Signals\n * defined in the config signals arrays are added only if that\n * signal is not explicitly defined in the specification.\n * Built-in signals (autosize, background, padding, width, height)\n * receive special treatment. They are initialized using the\n * top-level spec property, or, if undefined in the spec, using\n * the corresponding top-level config property. If this property\n * is a signal reference object, the signal expression maps to the\n * signal 'update' property. If the spec's top-level signal array\n * contains an entry that matches a built-in signal, that entry\n * will be merged with the built-in specification, potentially\n * overwriting existing 'value' or 'update' properties.\n */\n\n\nfunction collectSignals(spec, config) {\n  const _ = name => value(spec[name], config[name]),\n        signals = [signalObject('background', _('background')), signalObject('autosize', parseAutosize(_('autosize'))), signalObject('padding', parsePadding(_('padding'))), signalObject('width', _('width') || 0), signalObject('height', _('height') || 0)],\n        pre = signals.reduce((p, s) => (p[s.name] = s, p), {}),\n        map = {}; // add spec signal array\n\n\n  Object(vega_util__WEBPACK_IMPORTED_MODULE_0__[\"array\"])(spec.signals).forEach(s => {\n    if (Object(vega_util__WEBPACK_IMPORTED_MODULE_0__[\"hasOwnProperty\"])(pre, s.name)) {\n      // merge if built-in signal\n      s = Object(vega_util__WEBPACK_IMPORTED_MODULE_0__[\"extend\"])(pre[s.name], s);\n    } else {\n      // otherwise add to signal list\n      signals.push(s);\n    }\n\n    map[s.name] = s;\n  }); // add config signal array\n\n  Object(vega_util__WEBPACK_IMPORTED_MODULE_0__[\"array\"])(config.signals).forEach(s => {\n    if (!Object(vega_util__WEBPACK_IMPORTED_MODULE_0__[\"hasOwnProperty\"])(map, s.name) && !Object(vega_util__WEBPACK_IMPORTED_MODULE_0__[\"hasOwnProperty\"])(pre, s.name)) {\n      // add to signal list if not already defined\n      signals.push(s);\n    }\n  });\n  return signals;\n}\n\nfunction Scope$1(config, options) {\n  this.config = config || {};\n  this.options = options || {};\n  this.bindings = [];\n  this.field = {};\n  this.signals = {};\n  this.lambdas = {};\n  this.scales = {};\n  this.events = {};\n  this.data = {};\n  this.streams = [];\n  this.updates = [];\n  this.operators = [];\n  this.eventConfig = null;\n  this.locale = null;\n  this._id = 0;\n  this._subid = 0;\n  this._nextsub = [0];\n  this._parent = [];\n  this._encode = [];\n  this._lookup = [];\n  this._markpath = [];\n}\n\nfunction Subscope(scope) {\n  this.config = scope.config;\n  this.options = scope.options;\n  this.legends = scope.legends;\n  this.field = Object.create(scope.field);\n  this.signals = Object.create(scope.signals);\n  this.lambdas = Object.create(scope.lambdas);\n  this.scales = Object.create(scope.scales);\n  this.events = Object.create(scope.events);\n  this.data = Object.create(scope.data);\n  this.streams = [];\n  this.updates = [];\n  this.operators = [];\n  this._id = 0;\n  this._subid = ++scope._nextsub[0];\n  this._nextsub = scope._nextsub;\n  this._parent = scope._parent.slice();\n  this._encode = scope._encode.slice();\n  this._lookup = scope._lookup.slice();\n  this._markpath = scope._markpath;\n}\n\nScope$1.prototype = Subscope.prototype = {\n  parse(spec) {\n    return parseScope(spec, this);\n  },\n\n  fork() {\n    return new Subscope(this);\n  },\n\n  isSubscope() {\n    return this._subid > 0;\n  },\n\n  toRuntime() {\n    this.finish();\n    return {\n      description: this.description,\n      operators: this.operators,\n      streams: this.streams,\n      updates: this.updates,\n      bindings: this.bindings,\n      eventConfig: this.eventConfig,\n      locale: this.locale\n    };\n  },\n\n  id() {\n    return (this._subid ? this._subid + ':' : 0) + this._id++;\n  },\n\n  add(op) {\n    this.operators.push(op);\n    op.id = this.id(); // if pre-registration references exist, resolve them now\n\n    if (op.refs) {\n      op.refs.forEach(ref => {\n        ref.$ref = op.id;\n      });\n      op.refs = null;\n    }\n\n    return op;\n  },\n\n  proxy(op) {\n    const vref = op instanceof Entry ? ref(op) : op;\n    return this.add(Proxy({\n      value: vref\n    }));\n  },\n\n  addStream(stream) {\n    this.streams.push(stream);\n    stream.id = this.id();\n    return stream;\n  },\n\n  addUpdate(update) {\n    this.updates.push(update);\n    return update;\n  },\n\n  // Apply metadata\n  finish() {\n    let name, ds; // annotate root\n\n    if (this.root) this.root.root = true; // annotate signals\n\n    for (name in this.signals) {\n      this.signals[name].signal = name;\n    } // annotate scales\n\n\n    for (name in this.scales) {\n      this.scales[name].scale = name;\n    } // annotate data sets\n\n\n    function annotate(op, name, type) {\n      let data, list;\n\n      if (op) {\n        data = op.data || (op.data = {});\n        list = data[name] || (data[name] = []);\n        list.push(type);\n      }\n    }\n\n    for (name in this.data) {\n      ds = this.data[name];\n      annotate(ds.input, name, 'input');\n      annotate(ds.output, name, 'output');\n      annotate(ds.values, name, 'values');\n\n      for (const field in ds.index) {\n        annotate(ds.index[field], name, 'index:' + field);\n      }\n    }\n\n    return this;\n  },\n\n  // ----\n  pushState(encode, parent, lookup) {\n    this._encode.push(ref(this.add(Sieve({\n      pulse: encode\n    }))));\n\n    this._parent.push(parent);\n\n    this._lookup.push(lookup ? ref(this.proxy(lookup)) : null);\n\n    this._markpath.push(-1);\n  },\n\n  popState() {\n    this._encode.pop();\n\n    this._parent.pop();\n\n    this._lookup.pop();\n\n    this._markpath.pop();\n  },\n\n  parent() {\n    return Object(vega_util__WEBPACK_IMPORTED_MODULE_0__[\"peek\"])(this._parent);\n  },\n\n  encode() {\n    return Object(vega_util__WEBPACK_IMPORTED_MODULE_0__[\"peek\"])(this._encode);\n  },\n\n  lookup() {\n    return Object(vega_util__WEBPACK_IMPORTED_MODULE_0__[\"peek\"])(this._lookup);\n  },\n\n  markpath() {\n    const p = this._markpath;\n    return ++p[p.length - 1];\n  },\n\n  // ----\n  fieldRef(field, name) {\n    if (Object(vega_util__WEBPACK_IMPORTED_MODULE_0__[\"isString\"])(field)) return fieldRef(field, name);\n\n    if (!field.signal) {\n      Object(vega_util__WEBPACK_IMPORTED_MODULE_0__[\"error\"])('Unsupported field reference: ' + Object(vega_util__WEBPACK_IMPORTED_MODULE_0__[\"stringValue\"])(field));\n    }\n\n    const s = field.signal;\n    let f = this.field[s];\n\n    if (!f) {\n      const params = {\n        name: this.signalRef(s)\n      };\n      if (name) params.as = name;\n      this.field[s] = f = ref(this.add(Field(params)));\n    }\n\n    return f;\n  },\n\n  compareRef(cmp) {\n    let signal = false;\n\n    const check = _ => isSignal(_) ? (signal = true, this.signalRef(_.signal)) : isExpr(_) ? (signal = true, this.exprRef(_.expr)) : _;\n\n    const fields = Object(vega_util__WEBPACK_IMPORTED_MODULE_0__[\"array\"])(cmp.field).map(check),\n          orders = Object(vega_util__WEBPACK_IMPORTED_MODULE_0__[\"array\"])(cmp.order).map(check);\n    return signal ? ref(this.add(Compare({\n      fields: fields,\n      orders: orders\n    }))) : compareRef(fields, orders);\n  },\n\n  keyRef(fields, flat) {\n    let signal = false;\n\n    const check = _ => isSignal(_) ? (signal = true, ref(sig[_.signal])) : _;\n\n    const sig = this.signals;\n    fields = Object(vega_util__WEBPACK_IMPORTED_MODULE_0__[\"array\"])(fields).map(check);\n    return signal ? ref(this.add(Key({\n      fields: fields,\n      flat: flat\n    }))) : keyRef(fields, flat);\n  },\n\n  sortRef(sort) {\n    if (!sort) return sort; // including id ensures stable sorting\n\n    const a = aggrField(sort.op, sort.field),\n          o = sort.order || Ascending;\n    return o.signal ? ref(this.add(Compare({\n      fields: a,\n      orders: this.signalRef(o.signal)\n    }))) : compareRef(a, o);\n  },\n\n  // ----\n  event(source, type) {\n    const key = source + ':' + type;\n\n    if (!this.events[key]) {\n      const id = this.id();\n      this.streams.push({\n        id: id,\n        source: source,\n        type: type\n      });\n      this.events[key] = id;\n    }\n\n    return this.events[key];\n  },\n\n  // ----\n  hasOwnSignal(name) {\n    return Object(vega_util__WEBPACK_IMPORTED_MODULE_0__[\"hasOwnProperty\"])(this.signals, name);\n  },\n\n  addSignal(name, value) {\n    if (this.hasOwnSignal(name)) {\n      Object(vega_util__WEBPACK_IMPORTED_MODULE_0__[\"error\"])('Duplicate signal name: ' + Object(vega_util__WEBPACK_IMPORTED_MODULE_0__[\"stringValue\"])(name));\n    }\n\n    const op = value instanceof Entry ? value : this.add(operator(value));\n    return this.signals[name] = op;\n  },\n\n  getSignal(name) {\n    if (!this.signals[name]) {\n      Object(vega_util__WEBPACK_IMPORTED_MODULE_0__[\"error\"])('Unrecognized signal name: ' + Object(vega_util__WEBPACK_IMPORTED_MODULE_0__[\"stringValue\"])(name));\n    }\n\n    return this.signals[name];\n  },\n\n  signalRef(s) {\n    if (this.signals[s]) {\n      return ref(this.signals[s]);\n    } else if (!Object(vega_util__WEBPACK_IMPORTED_MODULE_0__[\"hasOwnProperty\"])(this.lambdas, s)) {\n      this.lambdas[s] = this.add(operator(null));\n    }\n\n    return ref(this.lambdas[s]);\n  },\n\n  parseLambdas() {\n    const code = Object.keys(this.lambdas);\n\n    for (let i = 0, n = code.length; i < n; ++i) {\n      const s = code[i],\n            e = Object(vega_functions__WEBPACK_IMPORTED_MODULE_1__[\"parseExpression\"])(s, this),\n            op = this.lambdas[s];\n      op.params = e.$params;\n      op.update = e.$expr;\n    }\n  },\n\n  property(spec) {\n    return spec && spec.signal ? this.signalRef(spec.signal) : spec;\n  },\n\n  objectProperty(spec) {\n    return !spec || !Object(vega_util__WEBPACK_IMPORTED_MODULE_0__[\"isObject\"])(spec) ? spec : this.signalRef(spec.signal || propertyLambda(spec));\n  },\n\n  exprRef(code, name) {\n    const params = {\n      expr: Object(vega_functions__WEBPACK_IMPORTED_MODULE_1__[\"parseExpression\"])(code, this)\n    };\n    if (name) params.expr.$name = name;\n    return ref(this.add(Expression(params)));\n  },\n\n  addBinding(name, bind) {\n    if (!this.bindings) {\n      Object(vega_util__WEBPACK_IMPORTED_MODULE_0__[\"error\"])('Nested signals do not support binding: ' + Object(vega_util__WEBPACK_IMPORTED_MODULE_0__[\"stringValue\"])(name));\n    }\n\n    this.bindings.push(Object(vega_util__WEBPACK_IMPORTED_MODULE_0__[\"extend\"])({\n      signal: name\n    }, bind));\n  },\n\n  // ----\n  addScaleProj(name, transform) {\n    if (Object(vega_util__WEBPACK_IMPORTED_MODULE_0__[\"hasOwnProperty\"])(this.scales, name)) {\n      Object(vega_util__WEBPACK_IMPORTED_MODULE_0__[\"error\"])('Duplicate scale or projection name: ' + Object(vega_util__WEBPACK_IMPORTED_MODULE_0__[\"stringValue\"])(name));\n    }\n\n    this.scales[name] = this.add(transform);\n  },\n\n  addScale(name, params) {\n    this.addScaleProj(name, Scale(params));\n  },\n\n  addProjection(name, params) {\n    this.addScaleProj(name, Projection(params));\n  },\n\n  getScale(name) {\n    if (!this.scales[name]) {\n      Object(vega_util__WEBPACK_IMPORTED_MODULE_0__[\"error\"])('Unrecognized scale name: ' + Object(vega_util__WEBPACK_IMPORTED_MODULE_0__[\"stringValue\"])(name));\n    }\n\n    return this.scales[name];\n  },\n\n  scaleRef(name) {\n    return ref(this.getScale(name));\n  },\n\n  scaleType(name) {\n    return this.getScale(name).params.type;\n  },\n\n  projectionRef(name) {\n    return this.scaleRef(name);\n  },\n\n  projectionType(name) {\n    return this.scaleType(name);\n  },\n\n  // ----\n  addData(name, dataScope) {\n    if (Object(vega_util__WEBPACK_IMPORTED_MODULE_0__[\"hasOwnProperty\"])(this.data, name)) {\n      Object(vega_util__WEBPACK_IMPORTED_MODULE_0__[\"error\"])('Duplicate data set name: ' + Object(vega_util__WEBPACK_IMPORTED_MODULE_0__[\"stringValue\"])(name));\n    }\n\n    return this.data[name] = dataScope;\n  },\n\n  getData(name) {\n    if (!this.data[name]) {\n      Object(vega_util__WEBPACK_IMPORTED_MODULE_0__[\"error\"])('Undefined data set name: ' + Object(vega_util__WEBPACK_IMPORTED_MODULE_0__[\"stringValue\"])(name));\n    }\n\n    return this.data[name];\n  },\n\n  addDataPipeline(name, entries) {\n    if (Object(vega_util__WEBPACK_IMPORTED_MODULE_0__[\"hasOwnProperty\"])(this.data, name)) {\n      Object(vega_util__WEBPACK_IMPORTED_MODULE_0__[\"error\"])('Duplicate data set name: ' + Object(vega_util__WEBPACK_IMPORTED_MODULE_0__[\"stringValue\"])(name));\n    }\n\n    return this.addData(name, DataScope.fromEntries(this, entries));\n  }\n\n};\n\nfunction propertyLambda(spec) {\n  return (Object(vega_util__WEBPACK_IMPORTED_MODULE_0__[\"isArray\"])(spec) ? arrayLambda : objectLambda)(spec);\n}\n\nfunction arrayLambda(array) {\n  const n = array.length;\n  let code = '[';\n\n  for (let i = 0; i < n; ++i) {\n    const value = array[i];\n    code += (i > 0 ? ',' : '') + (Object(vega_util__WEBPACK_IMPORTED_MODULE_0__[\"isObject\"])(value) ? value.signal || propertyLambda(value) : Object(vega_util__WEBPACK_IMPORTED_MODULE_0__[\"stringValue\"])(value));\n  }\n\n  return code + ']';\n}\n\nfunction objectLambda(obj) {\n  let code = '{',\n      i = 0,\n      key,\n      value;\n\n  for (key in obj) {\n    value = obj[key];\n    code += (++i > 1 ? ',' : '') + Object(vega_util__WEBPACK_IMPORTED_MODULE_0__[\"stringValue\"])(key) + ':' + (Object(vega_util__WEBPACK_IMPORTED_MODULE_0__[\"isObject\"])(value) ? value.signal || propertyLambda(value) : Object(vega_util__WEBPACK_IMPORTED_MODULE_0__[\"stringValue\"])(value));\n  }\n\n  return code + '}';\n}\n\n/**\n * Standard configuration defaults for Vega specification parsing.\n * Users can provide their own (sub-)set of these default values\n * by passing in a config object to the top-level parse method.\n */\nfunction defaults () {\n  const defaultFont = 'sans-serif',\n        defaultSymbolSize = 30,\n        defaultStrokeWidth = 2,\n        defaultColor = '#4c78a8',\n        black = '#000',\n        gray = '#888',\n        lightGray = '#ddd';\n  return {\n    // default visualization description\n    description: 'Vega visualization',\n    // default padding around visualization\n    padding: 0,\n    // default for automatic sizing; options: 'none', 'pad', 'fit'\n    // or provide an object (e.g., {'type': 'pad', 'resize': true})\n    autosize: 'pad',\n    // default view background color\n    // covers the entire view component\n    background: null,\n    // default event handling configuration\n    // preventDefault for view-sourced event types except 'wheel'\n    events: {\n      defaults: {\n        allow: ['wheel']\n      }\n    },\n    // defaults for top-level group marks\n    // accepts mark properties (fill, stroke, etc)\n    // covers the data rectangle within group width/height\n    group: null,\n    // defaults for basic mark types\n    // each subset accepts mark properties (fill, stroke, etc)\n    mark: null,\n    arc: {\n      fill: defaultColor\n    },\n    area: {\n      fill: defaultColor\n    },\n    image: null,\n    line: {\n      stroke: defaultColor,\n      strokeWidth: defaultStrokeWidth\n    },\n    path: {\n      stroke: defaultColor\n    },\n    rect: {\n      fill: defaultColor\n    },\n    rule: {\n      stroke: black\n    },\n    shape: {\n      stroke: defaultColor\n    },\n    symbol: {\n      fill: defaultColor,\n      size: 64\n    },\n    text: {\n      fill: black,\n      font: defaultFont,\n      fontSize: 11\n    },\n    trail: {\n      fill: defaultColor,\n      size: defaultStrokeWidth\n    },\n    // style definitions\n    style: {\n      // axis & legend labels\n      'guide-label': {\n        fill: black,\n        font: defaultFont,\n        fontSize: 10\n      },\n      // axis & legend titles\n      'guide-title': {\n        fill: black,\n        font: defaultFont,\n        fontSize: 11,\n        fontWeight: 'bold'\n      },\n      // headers, including chart title\n      'group-title': {\n        fill: black,\n        font: defaultFont,\n        fontSize: 13,\n        fontWeight: 'bold'\n      },\n      // chart subtitle\n      'group-subtitle': {\n        fill: black,\n        font: defaultFont,\n        fontSize: 12\n      },\n      // defaults for styled point marks in Vega-Lite\n      point: {\n        size: defaultSymbolSize,\n        strokeWidth: defaultStrokeWidth,\n        shape: 'circle'\n      },\n      circle: {\n        size: defaultSymbolSize,\n        strokeWidth: defaultStrokeWidth\n      },\n      square: {\n        size: defaultSymbolSize,\n        strokeWidth: defaultStrokeWidth,\n        shape: 'square'\n      },\n      // defaults for styled group marks in Vega-Lite\n      cell: {\n        fill: 'transparent',\n        stroke: lightGray\n      }\n    },\n    // defaults for title\n    title: {\n      orient: 'top',\n      anchor: 'middle',\n      offset: 4,\n      subtitlePadding: 3\n    },\n    // defaults for axes\n    axis: {\n      minExtent: 0,\n      maxExtent: 200,\n      bandPosition: 0.5,\n      domain: true,\n      domainWidth: 1,\n      domainColor: gray,\n      grid: false,\n      gridWidth: 1,\n      gridColor: lightGray,\n      labels: true,\n      labelAngle: 0,\n      labelLimit: 180,\n      labelOffset: 0,\n      labelPadding: 2,\n      ticks: true,\n      tickColor: gray,\n      tickOffset: 0,\n      tickRound: true,\n      tickSize: 5,\n      tickWidth: 1,\n      titlePadding: 4\n    },\n    // correction for centering bias\n    axisBand: {\n      tickOffset: -0.5\n    },\n    // defaults for cartographic projection\n    projection: {\n      type: 'mercator'\n    },\n    // defaults for legends\n    legend: {\n      orient: 'right',\n      padding: 0,\n      gridAlign: 'each',\n      columnPadding: 10,\n      rowPadding: 2,\n      symbolDirection: 'vertical',\n      gradientDirection: 'vertical',\n      gradientLength: 200,\n      gradientThickness: 16,\n      gradientStrokeColor: lightGray,\n      gradientStrokeWidth: 0,\n      gradientLabelOffset: 2,\n      labelAlign: 'left',\n      labelBaseline: 'middle',\n      labelLimit: 160,\n      labelOffset: 4,\n      labelOverlap: true,\n      symbolLimit: 30,\n      symbolType: 'circle',\n      symbolSize: 100,\n      symbolOffset: 0,\n      symbolStrokeWidth: 1.5,\n      symbolBaseFillColor: 'transparent',\n      symbolBaseStrokeColor: gray,\n      titleLimit: 180,\n      titleOrient: 'top',\n      titlePadding: 5,\n      layout: {\n        offset: 18,\n        direction: 'horizontal',\n        left: {\n          direction: 'vertical'\n        },\n        right: {\n          direction: 'vertical'\n        }\n      }\n    },\n    // defaults for scale ranges\n    range: {\n      category: {\n        scheme: 'tableau10'\n      },\n      ordinal: {\n        scheme: 'blues'\n      },\n      heatmap: {\n        scheme: 'yellowgreenblue'\n      },\n      ramp: {\n        scheme: 'blues'\n      },\n      diverging: {\n        scheme: 'blueorange',\n        extent: [1, 0]\n      },\n      symbol: ['circle', 'square', 'triangle-up', 'cross', 'diamond', 'triangle-right', 'triangle-down', 'triangle-left']\n    }\n  };\n}\n\nfunction parse$1 (spec, config, options) {\n  if (!Object(vega_util__WEBPACK_IMPORTED_MODULE_0__[\"isObject\"])(spec)) {\n    Object(vega_util__WEBPACK_IMPORTED_MODULE_0__[\"error\"])('Input Vega specification must be an object.');\n  }\n\n  config = Object(vega_util__WEBPACK_IMPORTED_MODULE_0__[\"mergeConfig\"])(defaults(), config, spec.config);\n  return parseView(spec, new Scope$1(config, options)).toRuntime();\n}\n\n\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,[encoded data, 173472 characters]\n//# sourceURL=webpack-internal:///./node_modules/vega/node_modules/vega-parser/build/vega-parser.module.js\n");

/***/ }),

/***/ "./node_modules/vega/node_modules/vega-runtime/build/vega-runtime.module.js":
/*!**********************************************************************************!*\
  !*** ./node_modules/vega/node_modules/vega-runtime/build/vega-runtime.module.js ***!
  \**********************************************************************************/
/*! exports provided: context */
/***/ (function(module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"context\", function() { return context; });\n/* harmony import */ var vega_util__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! vega-util */ \"./node_modules/vega/node_modules/vega-util/build/vega-util.module.js\");\n/* harmony import */ var vega_dataflow__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! vega-dataflow */ \"./node_modules/vega/node_modules/vega-dataflow/build/vega-dataflow.module.js\");\n\n\n\n/**\n * Parse a serialized dataflow specification.\n */\nfunction parse (spec) {\n  const ctx = this,\n        operators = spec.operators || []; // parse background\n\n  if (spec.background) {\n    ctx.background = spec.background;\n  } // parse event configuration\n\n\n  if (spec.eventConfig) {\n    ctx.eventConfig = spec.eventConfig;\n  } // parse locale configuration\n\n\n  if (spec.locale) {\n    ctx.locale = spec.locale;\n  } // parse operators\n\n\n  operators.forEach(entry => ctx.parseOperator(entry)); // parse operator parameters\n\n  operators.forEach(entry => ctx.parseOperatorParameters(entry)); // parse streams\n\n  (spec.streams || []).forEach(entry => ctx.parseStream(entry)); // parse updates\n\n  (spec.updates || []).forEach(entry => ctx.parseUpdate(entry));\n  return ctx.resolve();\n}\n\nconst Skip = Object(vega_util__WEBPACK_IMPORTED_MODULE_0__[\"toSet\"])(['rule']),\n      Swap = Object(vega_util__WEBPACK_IMPORTED_MODULE_0__[\"toSet\"])(['group', 'image', 'rect']);\nfunction adjustSpatial(encode, marktype) {\n  let code = '';\n  if (Skip[marktype]) return code;\n\n  if (encode.x2) {\n    if (encode.x) {\n      if (Swap[marktype]) {\n        code += 'if(o.x>o.x2)$=o.x,o.x=o.x2,o.x2=$;';\n      }\n\n      code += 'o.width=o.x2-o.x;';\n    } else {\n      code += 'o.x=o.x2-(o.width||0);';\n    }\n  }\n\n  if (encode.xc) {\n    code += 'o.x=o.xc-(o.width||0)/2;';\n  }\n\n  if (encode.y2) {\n    if (encode.y) {\n      if (Swap[marktype]) {\n        code += 'if(o.y>o.y2)$=o.y,o.y=o.y2,o.y2=$;';\n      }\n\n      code += 'o.height=o.y2-o.y;';\n    } else {\n      code += 'o.y=o.y2-(o.height||0);';\n    }\n  }\n\n  if (encode.yc) {\n    code += 'o.y=o.yc-(o.height||0)/2;';\n  }\n\n  return code;\n}\nfunction canonicalType(type) {\n  return (type + '').toLowerCase();\n}\nfunction isOperator(type) {\n  return canonicalType(type) === 'operator';\n}\nfunction isCollect(type) {\n  return canonicalType(type) === 'collect';\n}\n\nfunction expression(ctx, args, code) {\n  // wrap code in return statement if expression does not terminate\n  if (code[code.length - 1] !== ';') {\n    code = 'return(' + code + ');';\n  }\n\n  const fn = Function(...args.concat(code));\n  return ctx && ctx.functions ? fn.bind(ctx.functions) : fn;\n} // generate code for comparing a single field\n\n\nfunction _compare(u, v, lt, gt) {\n  return \"((u = \".concat(u, \") < (v = \").concat(v, \") || u == null) && v != null ? \").concat(lt, \"\\n  : (u > v || v == null) && u != null ? \").concat(gt, \"\\n  : ((v = v instanceof Date ? +v : v), (u = u instanceof Date ? +u : u)) !== u && v === v ? \").concat(lt, \"\\n  : v !== v && u === u ? \").concat(gt, \" : \");\n}\n\nvar expressionCodegen = {\n  /**\n   * Parse an expression used to update an operator value.\n   */\n  operator: (ctx, expr) => expression(ctx, ['_'], expr.code),\n\n  /**\n   * Parse an expression provided as an operator parameter value.\n   */\n  parameter: (ctx, expr) => expression(ctx, ['datum', '_'], expr.code),\n\n  /**\n   * Parse an expression applied to an event stream.\n   */\n  event: (ctx, expr) => expression(ctx, ['event'], expr.code),\n\n  /**\n   * Parse an expression used to handle an event-driven operator update.\n   */\n  handler: (ctx, expr) => {\n    const code = \"var datum=event.item&&event.item.datum;return \".concat(expr.code, \";\");\n    return expression(ctx, ['_', 'event'], code);\n  },\n\n  /**\n   * Parse an expression that performs visual encoding.\n   */\n  encode: (ctx, encode) => {\n    const {\n      marktype,\n      channels\n    } = encode;\n    let code = 'var o=item,datum=o.datum,m=0,$;';\n\n    for (const name in channels) {\n      const o = 'o[' + Object(vega_util__WEBPACK_IMPORTED_MODULE_0__[\"stringValue\"])(name) + ']';\n      code += \"$=\".concat(channels[name].code, \";if(\").concat(o, \"!==$)\").concat(o, \"=$,m=1;\");\n    }\n\n    code += adjustSpatial(channels, marktype);\n    code += 'return m;';\n    return expression(ctx, ['item', '_'], code);\n  },\n\n  /**\n   * Optimized code generators for access and comparison.\n   */\n  codegen: {\n    get(path) {\n      const ref = \"[\".concat(path.map(vega_util__WEBPACK_IMPORTED_MODULE_0__[\"stringValue\"]).join(']['), \"]\");\n      const get = Function('_', \"return _\".concat(ref, \";\"));\n      get.path = ref;\n      return get;\n    },\n\n    comparator(fields, orders) {\n      let t;\n\n      const map = (f, i) => {\n        const o = orders[i];\n        let u, v;\n\n        if (f.path) {\n          u = \"a\".concat(f.path);\n          v = \"b\".concat(f.path);\n        } else {\n          (t = t || {})['f' + i] = f;\n          u = \"this.f\".concat(i, \"(a)\");\n          v = \"this.f\".concat(i, \"(b)\");\n        }\n\n        return _compare(u, v, -o, o);\n      };\n\n      const fn = Function('a', 'b', 'var u, v; return ' + fields.map(map).join('') + '0;');\n      return t ? fn.bind(t) : fn;\n    }\n\n  }\n};\n\n/**\n * Parse a dataflow operator.\n */\n\nfunction parseOperator(spec) {\n  const ctx = this;\n\n  if (isOperator(spec.type) || !spec.type) {\n    ctx.operator(spec, spec.update ? ctx.operatorExpression(spec.update) : null);\n  } else {\n    ctx.transform(spec, spec.type);\n  }\n}\n/**\n * Parse and assign operator parameters.\n */\n\nfunction parseOperatorParameters(spec) {\n  const ctx = this;\n\n  if (spec.params) {\n    const op = ctx.get(spec.id);\n    if (!op) Object(vega_util__WEBPACK_IMPORTED_MODULE_0__[\"error\"])('Invalid operator id: ' + spec.id);\n    ctx.dataflow.connect(op, op.parameters(ctx.parseParameters(spec.params), spec.react, spec.initonly));\n  }\n}\n\n/**\n * Parse a set of operator parameters.\n */\n\nfunction parseParameters(spec, params) {\n  params = params || {};\n  const ctx = this;\n\n  for (const key in spec) {\n    const value = spec[key];\n    params[key] = Object(vega_util__WEBPACK_IMPORTED_MODULE_0__[\"isArray\"])(value) ? value.map(v => parseParameter(v, ctx, params)) : parseParameter(value, ctx, params);\n  }\n\n  return params;\n}\n/**\n * Parse a single parameter.\n */\n\nfunction parseParameter(spec, ctx, params) {\n  if (!spec || !Object(vega_util__WEBPACK_IMPORTED_MODULE_0__[\"isObject\"])(spec)) return spec;\n\n  for (let i = 0, n = PARSERS.length, p; i < n; ++i) {\n    p = PARSERS[i];\n\n    if (Object(vega_util__WEBPACK_IMPORTED_MODULE_0__[\"hasOwnProperty\"])(spec, p.key)) {\n      return p.parse(spec, ctx, params);\n    }\n  }\n\n  return spec;\n}\n/** Reference parsers. */\n\n\nvar PARSERS = [{\n  key: '$ref',\n  parse: getOperator\n}, {\n  key: '$key',\n  parse: getKey\n}, {\n  key: '$expr',\n  parse: getExpression\n}, {\n  key: '$field',\n  parse: getField\n}, {\n  key: '$encode',\n  parse: getEncode\n}, {\n  key: '$compare',\n  parse: getCompare\n}, {\n  key: '$context',\n  parse: getContext\n}, {\n  key: '$subflow',\n  parse: getSubflow\n}, {\n  key: '$tupleid',\n  parse: getTupleId\n}];\n/**\n * Resolve an operator reference.\n */\n\nfunction getOperator(_, ctx) {\n  return ctx.get(_.$ref) || Object(vega_util__WEBPACK_IMPORTED_MODULE_0__[\"error\"])('Operator not defined: ' + _.$ref);\n}\n/**\n * Resolve an expression reference.\n */\n\n\nfunction getExpression(_, ctx, params) {\n  if (_.$params) {\n    // parse expression parameters\n    ctx.parseParameters(_.$params, params);\n  }\n\n  const k = 'e:' + _.$expr.code + '_' + _.$name;\n  return ctx.fn[k] || (ctx.fn[k] = Object(vega_util__WEBPACK_IMPORTED_MODULE_0__[\"accessor\"])(ctx.parameterExpression(_.$expr), _.$fields, _.$name));\n}\n/**\n * Resolve a key accessor reference.\n */\n\n\nfunction getKey(_, ctx) {\n  const k = 'k:' + _.$key + '_' + !!_.$flat;\n  return ctx.fn[k] || (ctx.fn[k] = Object(vega_util__WEBPACK_IMPORTED_MODULE_0__[\"key\"])(_.$key, _.$flat, ctx.expr.codegen));\n}\n/**\n * Resolve a field accessor reference.\n */\n\n\nfunction getField(_, ctx) {\n  if (!_.$field) return null;\n  const k = 'f:' + _.$field + '_' + _.$name;\n  return ctx.fn[k] || (ctx.fn[k] = Object(vega_util__WEBPACK_IMPORTED_MODULE_0__[\"field\"])(_.$field, _.$name, ctx.expr.codegen));\n}\n/**\n * Resolve a comparator function reference.\n */\n\n\nfunction getCompare(_, ctx) {\n  // As of Vega 5.5.3, $tupleid sort is no longer used.\n  // Keep here for now for backwards compatibility.\n  const k = 'c:' + _.$compare + '_' + _.$order,\n        c = Object(vega_util__WEBPACK_IMPORTED_MODULE_0__[\"array\"])(_.$compare).map(_ => _ && _.$tupleid ? vega_dataflow__WEBPACK_IMPORTED_MODULE_1__[\"tupleid\"] : _);\n  return ctx.fn[k] || (ctx.fn[k] = Object(vega_util__WEBPACK_IMPORTED_MODULE_0__[\"compare\"])(c, _.$order, ctx.expr.codegen));\n}\n/**\n * Resolve an encode operator reference.\n */\n\n\nfunction getEncode(_, ctx) {\n  const spec = _.$encode,\n        encode = {};\n\n  for (const name in spec) {\n    const enc = spec[name];\n    encode[name] = Object(vega_util__WEBPACK_IMPORTED_MODULE_0__[\"accessor\"])(ctx.encodeExpression(enc.$expr), enc.$fields);\n    encode[name].output = enc.$output;\n  }\n\n  return encode;\n}\n/**\n * Resolve a context reference.\n */\n\n\nfunction getContext(_, ctx) {\n  return ctx;\n}\n/**\n * Resolve a recursive subflow specification.\n */\n\n\nfunction getSubflow(_, ctx) {\n  const spec = _.$subflow;\n  return function (dataflow, key, parent) {\n    const subctx = ctx.fork().parse(spec),\n          op = subctx.get(spec.operators[0].id),\n          p = subctx.signals.parent;\n    if (p) p.set(parent);\n\n    op.detachSubflow = () => ctx.detach(subctx);\n\n    return op;\n  };\n}\n/**\n * Resolve a tuple id reference.\n */\n\n\nfunction getTupleId() {\n  return vega_dataflow__WEBPACK_IMPORTED_MODULE_1__[\"tupleid\"];\n}\n\n/**\n * Parse an event stream specification.\n */\n\nfunction parseStream (spec) {\n  var ctx = this,\n      filter = spec.filter != null ? ctx.eventExpression(spec.filter) : undefined,\n      stream = spec.stream != null ? ctx.get(spec.stream) : undefined,\n      args;\n\n  if (spec.source) {\n    stream = ctx.events(spec.source, spec.type, filter);\n  } else if (spec.merge) {\n    args = spec.merge.map(_ => ctx.get(_));\n    stream = args[0].merge.apply(args[0], args.slice(1));\n  }\n\n  if (spec.between) {\n    args = spec.between.map(_ => ctx.get(_));\n    stream = stream.between(args[0], args[1]);\n  }\n\n  if (spec.filter) {\n    stream = stream.filter(filter);\n  }\n\n  if (spec.throttle != null) {\n    stream = stream.throttle(+spec.throttle);\n  }\n\n  if (spec.debounce != null) {\n    stream = stream.debounce(+spec.debounce);\n  }\n\n  if (stream == null) {\n    Object(vega_util__WEBPACK_IMPORTED_MODULE_0__[\"error\"])('Invalid stream definition: ' + JSON.stringify(spec));\n  }\n\n  if (spec.consume) stream.consume(true);\n  ctx.stream(spec, stream);\n}\n\n/**\n * Parse an event-driven operator update.\n */\n\nfunction parseUpdate (spec) {\n  var ctx = this,\n      srcid = Object(vega_util__WEBPACK_IMPORTED_MODULE_0__[\"isObject\"])(srcid = spec.source) ? srcid.$ref : srcid,\n      source = ctx.get(srcid),\n      target = null,\n      update = spec.update,\n      params = undefined;\n  if (!source) Object(vega_util__WEBPACK_IMPORTED_MODULE_0__[\"error\"])('Source not defined: ' + spec.source);\n  target = spec.target && spec.target.$expr ? ctx.eventExpression(spec.target.$expr) : ctx.get(spec.target);\n\n  if (update && update.$expr) {\n    if (update.$params) {\n      params = ctx.parseParameters(update.$params);\n    }\n\n    update = ctx.handlerExpression(update.$expr);\n  }\n\n  ctx.update(spec, source, target, update, params);\n}\n\nconst SKIP = {\n  skip: true\n};\nfunction getState(options) {\n  var ctx = this,\n      state = {};\n\n  if (options.signals) {\n    var signals = state.signals = {};\n    Object.keys(ctx.signals).forEach(key => {\n      const op = ctx.signals[key];\n\n      if (options.signals(key, op)) {\n        signals[key] = op.value;\n      }\n    });\n  }\n\n  if (options.data) {\n    var data = state.data = {};\n    Object.keys(ctx.data).forEach(key => {\n      const dataset = ctx.data[key];\n\n      if (options.data(key, dataset)) {\n        data[key] = dataset.input.value;\n      }\n    });\n  }\n\n  if (ctx.subcontext && options.recurse !== false) {\n    state.subcontext = ctx.subcontext.map(ctx => ctx.getState(options));\n  }\n\n  return state;\n}\nfunction setState(state) {\n  var ctx = this,\n      df = ctx.dataflow,\n      data = state.data,\n      signals = state.signals;\n  Object.keys(signals || {}).forEach(key => {\n    df.update(ctx.signals[key], signals[key], SKIP);\n  });\n  Object.keys(data || {}).forEach(key => {\n    df.pulse(ctx.data[key].input, df.changeset().remove(vega_util__WEBPACK_IMPORTED_MODULE_0__[\"truthy\"]).insert(data[key]));\n  });\n  (state.subcontext || []).forEach((substate, i) => {\n    const subctx = ctx.subcontext[i];\n    if (subctx) subctx.setState(substate);\n  });\n}\n\n/**\n * Context objects store the current parse state.\n * Enables lookup of parsed operators, event streams, accessors, etc.\n * Provides a 'fork' method for creating child contexts for subflows.\n */\n\nfunction context (df, transforms, functions, expr) {\n  return new Context(df, transforms, functions, expr);\n}\n\nfunction Context(df, transforms, functions, expr) {\n  this.dataflow = df;\n  this.transforms = transforms;\n  this.events = df.events.bind(df);\n  this.expr = expr || expressionCodegen, this.signals = {};\n  this.scales = {};\n  this.nodes = {};\n  this.data = {};\n  this.fn = {};\n\n  if (functions) {\n    this.functions = Object.create(functions);\n    this.functions.context = this;\n  }\n}\n\nfunction Subcontext(ctx) {\n  this.dataflow = ctx.dataflow;\n  this.transforms = ctx.transforms;\n  this.events = ctx.events;\n  this.expr = ctx.expr;\n  this.signals = Object.create(ctx.signals);\n  this.scales = Object.create(ctx.scales);\n  this.nodes = Object.create(ctx.nodes);\n  this.data = Object.create(ctx.data);\n  this.fn = Object.create(ctx.fn);\n\n  if (ctx.functions) {\n    this.functions = Object.create(ctx.functions);\n    this.functions.context = this;\n  }\n}\n\nContext.prototype = Subcontext.prototype = {\n  fork() {\n    const ctx = new Subcontext(this);\n    (this.subcontext || (this.subcontext = [])).push(ctx);\n    return ctx;\n  },\n\n  detach(ctx) {\n    this.subcontext = this.subcontext.filter(c => c !== ctx); // disconnect all nodes in the subcontext\n    // wipe out targets first for better efficiency\n\n    const keys = Object.keys(ctx.nodes);\n\n    for (const key of keys) ctx.nodes[key]._targets = null;\n\n    for (const key of keys) ctx.nodes[key].detach();\n\n    ctx.nodes = null;\n  },\n\n  get(id) {\n    return this.nodes[id];\n  },\n\n  set(id, node) {\n    return this.nodes[id] = node;\n  },\n\n  add(spec, op) {\n    const ctx = this,\n          df = ctx.dataflow,\n          data = spec.value;\n    ctx.set(spec.id, op);\n\n    if (isCollect(spec.type) && data) {\n      if (data.$ingest) {\n        df.ingest(op, data.$ingest, data.$format);\n      } else if (data.$request) {\n        df.preload(op, data.$request, data.$format);\n      } else {\n        df.pulse(op, df.changeset().insert(data));\n      }\n    }\n\n    if (spec.root) {\n      ctx.root = op;\n    }\n\n    if (spec.parent) {\n      let p = ctx.get(spec.parent.$ref);\n\n      if (p) {\n        df.connect(p, [op]);\n        op.targets().add(p);\n      } else {\n        (ctx.unresolved = ctx.unresolved || []).push(() => {\n          p = ctx.get(spec.parent.$ref);\n          df.connect(p, [op]);\n          op.targets().add(p);\n        });\n      }\n    }\n\n    if (spec.signal) {\n      ctx.signals[spec.signal] = op;\n    }\n\n    if (spec.scale) {\n      ctx.scales[spec.scale] = op;\n    }\n\n    if (spec.data) {\n      for (const name in spec.data) {\n        const data = ctx.data[name] || (ctx.data[name] = {});\n        spec.data[name].forEach(role => data[role] = op);\n      }\n    }\n  },\n\n  resolve() {\n    (this.unresolved || []).forEach(fn => fn());\n    delete this.unresolved;\n    return this;\n  },\n\n  operator(spec, update) {\n    this.add(spec, this.dataflow.add(spec.value, update));\n  },\n\n  transform(spec, type) {\n    this.add(spec, this.dataflow.add(this.transforms[canonicalType(type)]));\n  },\n\n  stream(spec, stream) {\n    this.set(spec.id, stream);\n  },\n\n  update(spec, stream, target, update, params) {\n    this.dataflow.on(stream, target, update, params, spec.options);\n  },\n\n  // expression parsing\n  operatorExpression(expr) {\n    return this.expr.operator(this, expr);\n  },\n\n  parameterExpression(expr) {\n    return this.expr.parameter(this, expr);\n  },\n\n  eventExpression(expr) {\n    return this.expr.event(this, expr);\n  },\n\n  handlerExpression(expr) {\n    return this.expr.handler(this, expr);\n  },\n\n  encodeExpression(encode) {\n    return this.expr.encode(this, encode);\n  },\n\n  // parse methods\n  parse,\n  parseOperator,\n  parseOperatorParameters,\n  parseParameters,\n  parseStream,\n  parseUpdate,\n  // state methods\n  getState,\n  setState\n};\n\n\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,[encoded data, 26448 characters]\n//# sourceURL=webpack-internal:///./node_modules/vega/node_modules/vega-runtime/build/vega-runtime.module.js\n");

/***/ }),

/***/ "./node_modules/vega/node_modules/vega-scale/build/vega-scale.module.js":
/*!******************************************************************************!*\
  !*** ./node_modules/vega/node_modules/vega-scale/build/vega-scale.module.js ***!
  \******************************************************************************/
/*! exports provided: scaleImplicit, Band, BinOrdinal, DiscreteLegend, Diverging, GradientLegend, Identity, Linear, Log, Ordinal, Point, Pow, Quantile, Quantize, Sequential, Sqrt, SymbolLegend, Symlog, Threshold, Time, UTC, bandSpace, domainCaption, interpolate, interpolateColors, interpolateRange, isContinuous, isDiscrete, isDiscretizing, isInterpolating, isLogarithmic, isQuantile, isTemporal, isValidScaleType, labelFormat, labelFraction, labelValues, quantizeInterpolator, scale, scaleCopy, scaleFraction, scheme, tickCount, tickFormat, tickValues, validTicks */
/***/ (function(module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"Band\", function() { return Band; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"BinOrdinal\", function() { return BinOrdinal; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"DiscreteLegend\", function() { return DiscreteLegend; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"Diverging\", function() { return Diverging; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"GradientLegend\", function() { return GradientLegend; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"Identity\", function() { return Identity; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"Linear\", function() { return Linear; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"Log\", function() { return Log; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"Ordinal\", function() { return Ordinal; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"Point\", function() { return Point; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"Pow\", function() { return Pow; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"Quantile\", function() { return Quantile; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"Quantize\", function() { return Quantize; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"Sequential\", function() { return Sequential; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"Sqrt\", function() { return Sqrt; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"SymbolLegend\", function() { return SymbolLegend; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"Symlog\", function() { return Symlog; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"Threshold\", function() { return Threshold; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"Time\", function() { return Time; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"UTC\", function() { return UTC; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"bandSpace\", function() { return bandSpace; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"domainCaption\", function() { return domainCaption; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"interpolate\", function() { return interpolate; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"interpolateColors\", function() { return interpolateColors; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"interpolateRange\", function() { return interpolateRange; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"isContinuous\", function() { return isContinuous; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"isDiscrete\", function() { return isDiscrete; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"isDiscretizing\", function() { return isDiscretizing; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"isInterpolating\", function() { return isInterpolating; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"isLogarithmic\", function() { return isLogarithmic; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"isQuantile\", function() { return isQuantile; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"isTemporal\", function() { return isTemporal; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"isValidScaleType\", function() { return isValidScaleType; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"labelFormat\", function() { return labelFormat; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"labelFraction\", function() { return labelFraction; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"labelValues\", function() { return labelValues; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"quantizeInterpolator\", function() { return quantizeInterpolator; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"scale\", function() { return scale; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"scaleCopy\", function() { return scaleCopy; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"scaleFraction\", function() { return scaleFraction; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"scheme\", function() { return scheme; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"tickCount\", function() { return tickCount; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"tickFormat\", function() { return tickFormat; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"tickValues\", function() { return tickValues; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"validTicks\", function() { return validTicks; });\n/* harmony import */ var vega_util__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! vega-util */ \"./node_modules/vega/node_modules/vega-util/build/vega-util.module.js\");\n/* harmony import */ var d3_array__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! d3-array */ \"./node_modules/d3-array/src/index.js\");\n/* harmony import */ var d3_scale__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! d3-scale */ \"./node_modules/vega/node_modules/d3-scale/src/index.js\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"scaleImplicit\", function() { return d3_scale__WEBPACK_IMPORTED_MODULE_2__[\"scaleImplicit\"]; });\n\n/* harmony import */ var d3_interpolate__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! d3-interpolate */ \"./node_modules/vega/node_modules/d3-interpolate/src/index.js\");\n/* harmony import */ var vega_time__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! vega-time */ \"./node_modules/vega-time/build/vega-time.module.js\");\n\n\n\n\n\n\n\n\nfunction bandSpace (count, paddingInner, paddingOuter) {\n  const space = count - paddingInner + paddingOuter * 2;\n  return count ? space > 0 ? space : 1 : 0;\n}\n\nconst Identity = 'identity';\nconst Linear = 'linear';\nconst Log = 'log';\nconst Pow = 'pow';\nconst Sqrt = 'sqrt';\nconst Symlog = 'symlog';\nconst Time = 'time';\nconst UTC = 'utc';\nconst Sequential = 'sequential';\nconst Diverging = 'diverging';\nconst Quantile = 'quantile';\nconst Quantize = 'quantize';\nconst Threshold = 'threshold';\nconst Ordinal = 'ordinal';\nconst Point = 'point';\nconst Band = 'band';\nconst BinOrdinal = 'bin-ordinal'; // categories\n\nconst Continuous = 'continuous';\nconst Discrete = 'discrete';\nconst Discretizing = 'discretizing';\nconst Interpolating = 'interpolating';\nconst Temporal = 'temporal';\n\nfunction invertRange (scale) {\n  return function (_) {\n    let lo = _[0],\n        hi = _[1],\n        t;\n\n    if (hi < lo) {\n      t = lo;\n      lo = hi;\n      hi = t;\n    }\n\n    return [scale.invert(lo), scale.invert(hi)];\n  };\n}\n\nfunction invertRangeExtent (scale) {\n  return function (_) {\n    const range = scale.range();\n    let lo = _[0],\n        hi = _[1],\n        min = -1,\n        max,\n        t,\n        i,\n        n;\n\n    if (hi < lo) {\n      t = lo;\n      lo = hi;\n      hi = t;\n    }\n\n    for (i = 0, n = range.length; i < n; ++i) {\n      if (range[i] >= lo && range[i] <= hi) {\n        if (min < 0) min = i;\n        max = i;\n      }\n    }\n\n    if (min < 0) return undefined;\n    lo = scale.invertExtent(range[min]);\n    hi = scale.invertExtent(range[max]);\n    return [lo[0] === undefined ? lo[1] : lo[0], hi[1] === undefined ? hi[0] : hi[1]];\n  };\n}\n\nfunction band() {\n  const scale = Object(d3_scale__WEBPACK_IMPORTED_MODULE_2__[\"scaleOrdinal\"])().unknown(undefined),\n        domain = scale.domain,\n        ordinalRange = scale.range;\n  let range$1 = [0, 1],\n      step,\n      bandwidth,\n      round = false,\n      paddingInner = 0,\n      paddingOuter = 0,\n      align = 0.5;\n  delete scale.unknown;\n\n  function rescale() {\n    const n = domain().length,\n          reverse = range$1[1] < range$1[0],\n          stop = range$1[1 - reverse],\n          space = bandSpace(n, paddingInner, paddingOuter);\n    let start = range$1[reverse - 0];\n    step = (stop - start) / (space || 1);\n\n    if (round) {\n      step = Math.floor(step);\n    }\n\n    start += (stop - start - step * (n - paddingInner)) * align;\n    bandwidth = step * (1 - paddingInner);\n\n    if (round) {\n      start = Math.round(start);\n      bandwidth = Math.round(bandwidth);\n    }\n\n    const values = Object(d3_array__WEBPACK_IMPORTED_MODULE_1__[\"range\"])(n).map(i => start + step * i);\n    return ordinalRange(reverse ? values.reverse() : values);\n  }\n\n  scale.domain = function (_) {\n    if (arguments.length) {\n      domain(_);\n      return rescale();\n    } else {\n      return domain();\n    }\n  };\n\n  scale.range = function (_) {\n    if (arguments.length) {\n      range$1 = [+_[0], +_[1]];\n      return rescale();\n    } else {\n      return range$1.slice();\n    }\n  };\n\n  scale.rangeRound = function (_) {\n    range$1 = [+_[0], +_[1]];\n    round = true;\n    return rescale();\n  };\n\n  scale.bandwidth = function () {\n    return bandwidth;\n  };\n\n  scale.step = function () {\n    return step;\n  };\n\n  scale.round = function (_) {\n    if (arguments.length) {\n      round = !!_;\n      return rescale();\n    } else {\n      return round;\n    }\n  };\n\n  scale.padding = function (_) {\n    if (arguments.length) {\n      paddingOuter = Math.max(0, Math.min(1, _));\n      paddingInner = paddingOuter;\n      return rescale();\n    } else {\n      return paddingInner;\n    }\n  };\n\n  scale.paddingInner = function (_) {\n    if (arguments.length) {\n      paddingInner = Math.max(0, Math.min(1, _));\n      return rescale();\n    } else {\n      return paddingInner;\n    }\n  };\n\n  scale.paddingOuter = function (_) {\n    if (arguments.length) {\n      paddingOuter = Math.max(0, Math.min(1, _));\n      return rescale();\n    } else {\n      return paddingOuter;\n    }\n  };\n\n  scale.align = function (_) {\n    if (arguments.length) {\n      align = Math.max(0, Math.min(1, _));\n      return rescale();\n    } else {\n      return align;\n    }\n  };\n\n  scale.invertRange = function (_) {\n    // bail if range has null or undefined values\n    if (_[0] == null || _[1] == null) return;\n    const reverse = range$1[1] < range$1[0],\n          values = reverse ? ordinalRange().reverse() : ordinalRange(),\n          n = values.length - 1;\n    let lo = +_[0],\n        hi = +_[1],\n        a,\n        b,\n        t; // bail if either range endpoint is invalid\n\n    if (lo !== lo || hi !== hi) return; // order range inputs, bail if outside of scale range\n\n    if (hi < lo) {\n      t = lo;\n      lo = hi;\n      hi = t;\n    }\n\n    if (hi < values[0] || lo > range$1[1 - reverse]) return; // binary search to index into scale range\n\n    a = Math.max(0, Object(d3_array__WEBPACK_IMPORTED_MODULE_1__[\"bisectRight\"])(values, lo) - 1);\n    b = lo === hi ? a : Object(d3_array__WEBPACK_IMPORTED_MODULE_1__[\"bisectRight\"])(values, hi) - 1; // increment index a if lo is within padding gap\n\n    if (lo - values[a] > bandwidth + 1e-10) ++a;\n\n    if (reverse) {\n      // map + swap\n      t = a;\n      a = n - b;\n      b = n - t;\n    }\n\n    return a > b ? undefined : domain().slice(a, b + 1);\n  };\n\n  scale.invert = function (_) {\n    const value = scale.invertRange([_, _]);\n    return value ? value[0] : value;\n  };\n\n  scale.copy = function () {\n    return band().domain(domain()).range(range$1).round(round).paddingInner(paddingInner).paddingOuter(paddingOuter).align(align);\n  };\n\n  return rescale();\n}\n\nfunction pointish(scale) {\n  const copy = scale.copy;\n  scale.padding = scale.paddingOuter;\n  delete scale.paddingInner;\n\n  scale.copy = function () {\n    return pointish(copy());\n  };\n\n  return scale;\n}\n\nfunction point() {\n  return pointish(band().paddingInner(1));\n}\n\nvar map = Array.prototype.map;\nfunction numbers(_) {\n  return map.call(_, vega_util__WEBPACK_IMPORTED_MODULE_0__[\"toNumber\"]);\n}\n\nconst slice = Array.prototype.slice;\n\nfunction scaleBinOrdinal() {\n  let domain = [],\n      range = [];\n\n  function scale(x) {\n    return x == null || x !== x ? undefined : range[(Object(d3_array__WEBPACK_IMPORTED_MODULE_1__[\"bisect\"])(domain, x) - 1) % range.length];\n  }\n\n  scale.domain = function (_) {\n    if (arguments.length) {\n      domain = numbers(_);\n      return scale;\n    } else {\n      return domain.slice();\n    }\n  };\n\n  scale.range = function (_) {\n    if (arguments.length) {\n      range = slice.call(_);\n      return scale;\n    } else {\n      return range.slice();\n    }\n  };\n\n  scale.tickFormat = function (count, specifier) {\n    return Object(d3_scale__WEBPACK_IMPORTED_MODULE_2__[\"tickFormat\"])(domain[0], Object(vega_util__WEBPACK_IMPORTED_MODULE_0__[\"peek\"])(domain), count == null ? 10 : count, specifier);\n  };\n\n  scale.copy = function () {\n    return scaleBinOrdinal().domain(scale.domain()).range(scale.range());\n  };\n\n  return scale;\n}\n\nconst scales = {};\n/**\n * Augment scales with their type and needed inverse methods.\n */\n\nfunction create(type, constructor, metadata) {\n  const ctr = function scale() {\n    const s = constructor();\n\n    if (!s.invertRange) {\n      s.invertRange = s.invert ? invertRange(s) : s.invertExtent ? invertRangeExtent(s) : undefined;\n    }\n\n    s.type = type;\n    return s;\n  };\n\n  ctr.metadata = Object(vega_util__WEBPACK_IMPORTED_MODULE_0__[\"toSet\"])(Object(vega_util__WEBPACK_IMPORTED_MODULE_0__[\"array\"])(metadata));\n  return ctr;\n}\n\nfunction scale(type, scale, metadata) {\n  if (arguments.length > 1) {\n    scales[type] = create(type, scale, metadata);\n    return this;\n  } else {\n    return isValidScaleType(type) ? scales[type] : undefined;\n  }\n} // identity scale\n\nscale(Identity, d3_scale__WEBPACK_IMPORTED_MODULE_2__[\"scaleIdentity\"]); // continuous scales\n\nscale(Linear, d3_scale__WEBPACK_IMPORTED_MODULE_2__[\"scaleLinear\"], Continuous);\nscale(Log, d3_scale__WEBPACK_IMPORTED_MODULE_2__[\"scaleLog\"], [Continuous, Log]);\nscale(Pow, d3_scale__WEBPACK_IMPORTED_MODULE_2__[\"scalePow\"], Continuous);\nscale(Sqrt, d3_scale__WEBPACK_IMPORTED_MODULE_2__[\"scaleSqrt\"], Continuous);\nscale(Symlog, d3_scale__WEBPACK_IMPORTED_MODULE_2__[\"scaleSymlog\"], Continuous);\nscale(Time, d3_scale__WEBPACK_IMPORTED_MODULE_2__[\"scaleTime\"], [Continuous, Temporal]);\nscale(UTC, d3_scale__WEBPACK_IMPORTED_MODULE_2__[\"scaleUtc\"], [Continuous, Temporal]); // sequential scales\n\nscale(Sequential, d3_scale__WEBPACK_IMPORTED_MODULE_2__[\"scaleSequential\"], [Continuous, Interpolating]); // backwards compat\n\nscale(\"\".concat(Sequential, \"-\").concat(Linear), d3_scale__WEBPACK_IMPORTED_MODULE_2__[\"scaleSequential\"], [Continuous, Interpolating]);\nscale(\"\".concat(Sequential, \"-\").concat(Log), d3_scale__WEBPACK_IMPORTED_MODULE_2__[\"scaleSequentialLog\"], [Continuous, Interpolating, Log]);\nscale(\"\".concat(Sequential, \"-\").concat(Pow), d3_scale__WEBPACK_IMPORTED_MODULE_2__[\"scaleSequentialPow\"], [Continuous, Interpolating]);\nscale(\"\".concat(Sequential, \"-\").concat(Sqrt), d3_scale__WEBPACK_IMPORTED_MODULE_2__[\"scaleSequentialSqrt\"], [Continuous, Interpolating]);\nscale(\"\".concat(Sequential, \"-\").concat(Symlog), d3_scale__WEBPACK_IMPORTED_MODULE_2__[\"scaleSequentialSymlog\"], [Continuous, Interpolating]); // diverging scales\n\nscale(\"\".concat(Diverging, \"-\").concat(Linear), d3_scale__WEBPACK_IMPORTED_MODULE_2__[\"scaleDiverging\"], [Continuous, Interpolating]);\nscale(\"\".concat(Diverging, \"-\").concat(Log), d3_scale__WEBPACK_IMPORTED_MODULE_2__[\"scaleDivergingLog\"], [Continuous, Interpolating, Log]);\nscale(\"\".concat(Diverging, \"-\").concat(Pow), d3_scale__WEBPACK_IMPORTED_MODULE_2__[\"scaleDivergingPow\"], [Continuous, Interpolating]);\nscale(\"\".concat(Diverging, \"-\").concat(Sqrt), d3_scale__WEBPACK_IMPORTED_MODULE_2__[\"scaleDivergingSqrt\"], [Continuous, Interpolating]);\nscale(\"\".concat(Diverging, \"-\").concat(Symlog), d3_scale__WEBPACK_IMPORTED_MODULE_2__[\"scaleDivergingSymlog\"], [Continuous, Interpolating]); // discretizing scales\n\nscale(Quantile, d3_scale__WEBPACK_IMPORTED_MODULE_2__[\"scaleQuantile\"], [Discretizing, Quantile]);\nscale(Quantize, d3_scale__WEBPACK_IMPORTED_MODULE_2__[\"scaleQuantize\"], Discretizing);\nscale(Threshold, d3_scale__WEBPACK_IMPORTED_MODULE_2__[\"scaleThreshold\"], Discretizing); // discrete scales\n\nscale(BinOrdinal, scaleBinOrdinal, [Discrete, Discretizing]);\nscale(Ordinal, d3_scale__WEBPACK_IMPORTED_MODULE_2__[\"scaleOrdinal\"], Discrete);\nscale(Band, band, Discrete);\nscale(Point, point, Discrete);\nfunction isValidScaleType(type) {\n  return Object(vega_util__WEBPACK_IMPORTED_MODULE_0__[\"hasOwnProperty\"])(scales, type);\n}\n\nfunction hasType(key, type) {\n  const s = scales[key];\n  return s && s.metadata[type];\n}\n\nfunction isContinuous(key) {\n  return hasType(key, Continuous);\n}\nfunction isDiscrete(key) {\n  return hasType(key, Discrete);\n}\nfunction isDiscretizing(key) {\n  return hasType(key, Discretizing);\n}\nfunction isLogarithmic(key) {\n  return hasType(key, Log);\n}\nfunction isTemporal(key) {\n  return hasType(key, Temporal);\n}\nfunction isInterpolating(key) {\n  return hasType(key, Interpolating);\n}\nfunction isQuantile(key) {\n  return hasType(key, Quantile);\n}\n\nconst scaleProps = ['clamp', 'base', 'constant', 'exponent'];\nfunction interpolateRange(interpolator, range) {\n  const start = range[0],\n        span = Object(vega_util__WEBPACK_IMPORTED_MODULE_0__[\"peek\"])(range) - start;\n  return function (i) {\n    return interpolator(start + i * span);\n  };\n}\nfunction interpolateColors(colors, type, gamma) {\n  return Object(d3_interpolate__WEBPACK_IMPORTED_MODULE_3__[\"piecewise\"])(interpolate(type || 'rgb', gamma), colors);\n}\nfunction quantizeInterpolator(interpolator, count) {\n  const samples = new Array(count),\n        n = count + 1;\n\n  for (let i = 0; i < count;) samples[i] = interpolator(++i / n);\n\n  return samples;\n}\nfunction scaleCopy(scale) {\n  const t = scale.type,\n        s = scale.copy();\n  s.type = t;\n  return s;\n}\nfunction scaleFraction(scale$1, min, max) {\n  const delta = max - min;\n  let i, t, s;\n\n  if (!delta || !Number.isFinite(delta)) {\n    return Object(vega_util__WEBPACK_IMPORTED_MODULE_0__[\"constant\"])(0.5);\n  } else {\n    i = (t = scale$1.type).indexOf('-');\n    t = i < 0 ? t : t.slice(i + 1);\n    s = scale(t)().domain([min, max]).range([0, 1]);\n    scaleProps.forEach(m => scale$1[m] ? s[m](scale$1[m]()) : 0);\n    return s;\n  }\n}\nfunction interpolate(type, gamma) {\n  const interp = d3_interpolate__WEBPACK_IMPORTED_MODULE_3__[method(type)];\n  return gamma != null && interp && interp.gamma ? interp.gamma(gamma) : interp;\n}\n\nfunction method(type) {\n  return 'interpolate' + type.toLowerCase().split('-').map(s => s[0].toUpperCase() + s.slice(1)).join('');\n}\n\nconst continuous = {\n  blues: 'cfe1f2bed8eca8cee58fc1de74b2d75ba3cf4592c63181bd206fb2125ca40a4a90',\n  greens: 'd3eecdc0e6baabdda594d3917bc77d60ba6c46ab5e329a512089430e7735036429',\n  greys: 'e2e2e2d4d4d4c4c4c4b1b1b19d9d9d8888887575756262624d4d4d3535351e1e1e',\n  oranges: 'fdd8b3fdc998fdb87bfda55efc9244f87f2cf06b18e4580bd14904b93d029f3303',\n  purples: 'e2e1efd4d4e8c4c5e0b4b3d6a3a0cc928ec3827cb97566ae684ea25c3696501f8c',\n  reds: 'fdc9b4fcb49afc9e80fc8767fa7051f6573fec3f2fdc2a25c81b1db21218970b13',\n  blueGreen: 'd5efedc1e8e0a7ddd18bd2be70c6a958ba9144ad77319c5d2089460e7736036429',\n  bluePurple: 'ccddecbad0e4a8c2dd9ab0d4919cc98d85be8b6db28a55a6873c99822287730f71',\n  greenBlue: 'd3eecec5e8c3b1e1bb9bd8bb82cec269c2ca51b2cd3c9fc7288abd1675b10b60a1',\n  orangeRed: 'fddcaffdcf9bfdc18afdad77fb9562f67d53ee6545e24932d32d1ebf130da70403',\n  purpleBlue: 'dbdaebc8cee4b1c3de97b7d87bacd15b9fc93a90c01e7fb70b70ab056199045281',\n  purpleBlueGreen: 'dbd8eac8cee4b0c3de93b7d872acd1549fc83892bb1c88a3097f8702736b016353',\n  purpleRed: 'dcc9e2d3b3d7ce9eccd186c0da6bb2e14da0e23189d91e6fc61159ab07498f023a',\n  redPurple: 'fccfccfcbec0faa9b8f98faff571a5ec539ddb3695c41b8aa908808d0179700174',\n  yellowGreen: 'e4f4acd1eca0b9e2949ed68880c97c62bb6e47aa5e3297502083440e723b036034',\n  yellowOrangeBrown: 'feeaa1fedd84fecc63feb746fca031f68921eb7215db5e0bc54c05ab3d038f3204',\n  yellowOrangeRed: 'fee087fed16ffebd59fea849fd903efc7335f9522bee3423de1b20ca0b22af0225',\n  blueOrange: '134b852f78b35da2cb9dcae1d2e5eff2f0ebfce0bafbbf74e8932fc5690d994a07',\n  brownBlueGreen: '704108a0651ac79548e3c78af3e6c6eef1eac9e9e48ed1c74da79e187a72025147',\n  purpleGreen: '5b1667834792a67fb6c9aed3e6d6e8eff0efd9efd5aedda971bb75368e490e5e29',\n  purpleOrange: '4114696647968f83b7b9b4d6dadbebf3eeeafce0bafbbf74e8932fc5690d994a07',\n  redBlue: '8c0d25bf363adf745ef4ae91fbdbc9f2efeed2e5ef9dcae15da2cb2f78b3134b85',\n  redGrey: '8c0d25bf363adf745ef4ae91fcdccbfaf4f1e2e2e2c0c0c0969696646464343434',\n  yellowGreenBlue: 'eff9bddbf1b4bde5b594d5b969c5be45b4c22c9ec02182b82163aa23479c1c3185',\n  redYellowBlue: 'a50026d4322cf16e43fcac64fedd90faf8c1dcf1ecabd6e875abd04a74b4313695',\n  redYellowGreen: 'a50026d4322cf16e43fcac63fedd8df9f7aed7ee8ea4d86e64bc6122964f006837',\n  pinkYellowGreen: '8e0152c0267edd72adf0b3d6faddedf5f3efe1f2cab6de8780bb474f9125276419',\n  spectral: '9e0142d13c4bf0704afcac63fedd8dfbf8b0e0f3a1a9dda269bda94288b55e4fa2',\n  viridis: '440154470e61481a6c482575472f7d443a834144873d4e8a39568c35608d31688e2d708e2a788e27818e23888e21918d1f988b1fa08822a8842ab07f35b77943bf7154c56866cc5d7ad1518fd744a5db36bcdf27d2e21be9e51afde725',\n  magma: '0000040404130b0924150e3720114b2c11603b0f704a107957157e651a80721f817f24828c29819a2e80a8327db6377ac43c75d1426fde4968e95462f1605df76f5cfa7f5efc8f65fe9f6dfeaf78febf84fece91fddea0fcedaffcfdbf',\n  inferno: '0000040403130c0826170c3b240c4f330a5f420a68500d6c5d126e6b176e781c6d86216b932667a12b62ae305cbb3755c73e4cd24644dd513ae65c30ed6925f3771af8850ffb9506fca50afcb519fac62df6d645f2e661f3f484fcffa4',\n  plasma: '0d088723069033059742039d5002a25d01a66a00a87801a88405a7900da49c179ea72198b12a90ba3488c33d80cb4779d35171da5a69e16462e76e5bed7953f2834cf68f44fa9a3dfca636fdb32ffec029fcce25f9dc24f5ea27f0f921',\n  cividis: '00205100235800265d002961012b65042e670831690d346b11366c16396d1c3c6e213f6e26426e2c456e31476e374a6e3c4d6e42506e47536d4c566d51586e555b6e5a5e6e5e616e62646f66676f6a6a706e6d717270717573727976737c79747f7c75827f758682768985778c8877908b78938e789691789a94789e9778a19b78a59e77a9a177aea575b2a874b6ab73bbaf71c0b26fc5b66dc9b96acebd68d3c065d8c462ddc85fe2cb5ce7cf58ebd355f0d652f3da4ff7de4cfae249fce647',\n  rainbow: '6e40aa883eb1a43db3bf3cafd83fa4ee4395fe4b83ff576eff6659ff7847ff8c38f3a130e2b72fcfcc36bee044aff05b8ff4576ff65b52f6673af27828ea8d1ddfa319d0b81cbecb23abd82f96e03d82e14c6edb5a5dd0664dbf6e40aa',\n  sinebow: 'ff4040fc582af47218e78d0bd5a703bfbf00a7d5038de70b72f41858fc2a40ff402afc5818f4720be78d03d5a700bfbf03a7d50b8de71872f42a58fc4040ff582afc7218f48d0be7a703d5bf00bfd503a7e70b8df41872fc2a58ff4040',\n  turbo: '23171b32204a3e2a71453493493eae4b49c54a53d7485ee44569ee4074f53c7ff8378af93295f72e9ff42ba9ef28b3e926bce125c5d925cdcf27d5c629dcbc2de3b232e9a738ee9d3ff39347f68950f9805afc7765fd6e70fe667cfd5e88fc5795fb51a1f84badf545b9f140c5ec3cd0e637dae034e4d931ecd12ef4c92bfac029ffb626ffad24ffa223ff9821ff8d1fff821dff771cfd6c1af76118f05616e84b14df4111d5380fcb2f0dc0260ab61f07ac1805a313029b0f00950c00910b00',\n  browns: 'eedbbdecca96e9b97ae4a865dc9856d18954c7784cc0673fb85536ad44339f3632',\n  tealBlues: 'bce4d89dd3d181c3cb65b3c245a2b9368fae347da0306a932c5985',\n  teals: 'bbdfdfa2d4d58ac9c975bcbb61b0af4da5a43799982b8b8c1e7f7f127273006667',\n  warmGreys: 'dcd4d0cec5c1c0b8b4b3aaa7a59c9998908c8b827f7e7673726866665c5a59504e',\n  goldGreen: 'f4d166d5ca60b6c35c98bb597cb25760a6564b9c533f8f4f33834a257740146c36',\n  goldOrange: 'f4d166f8be5cf8aa4cf5983bf3852aef701be2621fd65322c54923b142239e3a26',\n  goldRed: 'f4d166f6be59f9aa51fc964ef6834bee734ae56249db5247cf4244c43141b71d3e',\n  lightGreyRed: 'efe9e6e1dad7d5cbc8c8bdb9bbaea9cd967ddc7b43e15f19df4011dc000b',\n  lightGreyTeal: 'e4eaead6dcddc8ced2b7c2c7a6b4bc64b0bf22a6c32295c11f85be1876bc',\n  lightMulti: 'e0f1f2c4e9d0b0de9fd0e181f6e072f6c053f3993ef77440ef4a3c',\n  lightOrange: 'f2e7daf7d5baf9c499fab184fa9c73f68967ef7860e8645bde515bd43d5b',\n  lightTealBlue: 'e3e9e0c0dccf9aceca7abfc859afc0389fb9328dad2f7ca0276b95255988',\n  darkBlue: '3232322d46681a5c930074af008cbf05a7ce25c0dd38daed50f3faffffff',\n  darkGold: '3c3c3c584b37725e348c7631ae8b2bcfa424ecc31ef9de30fff184ffffff',\n  darkGreen: '3a3a3a215748006f4d048942489e4276b340a6c63dd2d836ffeb2cffffaa',\n  darkMulti: '3737371f5287197d8c29a86995ce3fffe800ffffff',\n  darkRed: '3434347036339e3c38cc4037e75d1eec8620eeab29f0ce32ffeb2c'\n};\nconst discrete = {\n  category10: '1f77b4ff7f0e2ca02cd627289467bd8c564be377c27f7f7fbcbd2217becf',\n  category20: '1f77b4aec7e8ff7f0effbb782ca02c98df8ad62728ff98969467bdc5b0d58c564bc49c94e377c2f7b6d27f7f7fc7c7c7bcbd22dbdb8d17becf9edae5',\n  category20b: '393b795254a36b6ecf9c9ede6379398ca252b5cf6bcedb9c8c6d31bd9e39e7ba52e7cb94843c39ad494ad6616be7969c7b4173a55194ce6dbdde9ed6',\n  category20c: '3182bd6baed69ecae1c6dbefe6550dfd8d3cfdae6bfdd0a231a35474c476a1d99bc7e9c0756bb19e9ac8bcbddcdadaeb636363969696bdbdbdd9d9d9',\n  tableau10: '4c78a8f58518e4575672b7b254a24beeca3bb279a2ff9da69d755dbab0ac',\n  tableau20: '4c78a89ecae9f58518ffbf7954a24b88d27ab79a20f2cf5b43989483bcb6e45756ff9d9879706ebab0acd67195fcbfd2b279a2d6a5c99e765fd8b5a5',\n  accent: '7fc97fbeaed4fdc086ffff99386cb0f0027fbf5b17666666',\n  dark2: '1b9e77d95f027570b3e7298a66a61ee6ab02a6761d666666',\n  paired: 'a6cee31f78b4b2df8a33a02cfb9a99e31a1cfdbf6fff7f00cab2d66a3d9affff99b15928',\n  pastel1: 'fbb4aeb3cde3ccebc5decbe4fed9a6ffffcce5d8bdfddaecf2f2f2',\n  pastel2: 'b3e2cdfdcdaccbd5e8f4cae4e6f5c9fff2aef1e2cccccccc',\n  set1: 'e41a1c377eb84daf4a984ea3ff7f00ffff33a65628f781bf999999',\n  set2: '66c2a5fc8d628da0cbe78ac3a6d854ffd92fe5c494b3b3b3',\n  set3: '8dd3c7ffffb3bebadafb807280b1d3fdb462b3de69fccde5d9d9d9bc80bdccebc5ffed6f'\n};\n\nfunction colors(palette) {\n  const n = palette.length / 6 | 0,\n        c = new Array(n);\n\n  for (let i = 0; i < n;) {\n    c[i] = '#' + palette.slice(i * 6, ++i * 6);\n  }\n\n  return c;\n}\n\nfunction apply(_, f) {\n  for (const k in _) scheme(k, f(_[k]));\n}\n\nconst schemes = {};\napply(discrete, colors);\napply(continuous, _ => interpolateColors(colors(_)));\nfunction scheme(name, scheme) {\n  name = name && name.toLowerCase();\n\n  if (arguments.length > 1) {\n    schemes[name] = scheme;\n    return this;\n  } else {\n    return schemes[name];\n  }\n}\n\nconst SymbolLegend = 'symbol';\nconst DiscreteLegend = 'discrete';\nconst GradientLegend = 'gradient';\n\nconst defaultFormatter = value => Object(vega_util__WEBPACK_IMPORTED_MODULE_0__[\"isArray\"])(value) ? value.map(v => String(v)) : String(value);\n\nconst ascending = (a, b) => a[1] - b[1];\n\nconst descending = (a, b) => b[1] - a[1];\n/**\n * Determine the tick count or interval function.\n * @param {Scale} scale - The scale for which to generate tick values.\n * @param {*} count - The desired tick count or interval specifier.\n * @param {number} minStep - The desired minimum step between tick values.\n * @return {*} - The tick count or interval function.\n */\n\n\nfunction tickCount(scale, count, minStep) {\n  let step;\n\n  if (Object(vega_util__WEBPACK_IMPORTED_MODULE_0__[\"isNumber\"])(count)) {\n    if (scale.bins) {\n      count = Math.max(count, scale.bins.length);\n    }\n\n    if (minStep != null) {\n      count = Math.min(count, Math.floor(Object(vega_util__WEBPACK_IMPORTED_MODULE_0__[\"span\"])(scale.domain()) / minStep || 1));\n    }\n  }\n\n  if (Object(vega_util__WEBPACK_IMPORTED_MODULE_0__[\"isObject\"])(count)) {\n    step = count.step;\n    count = count.interval;\n  }\n\n  if (Object(vega_util__WEBPACK_IMPORTED_MODULE_0__[\"isString\"])(count)) {\n    count = scale.type === Time ? Object(vega_time__WEBPACK_IMPORTED_MODULE_4__[\"timeInterval\"])(count) : scale.type == UTC ? Object(vega_time__WEBPACK_IMPORTED_MODULE_4__[\"utcInterval\"])(count) : Object(vega_util__WEBPACK_IMPORTED_MODULE_0__[\"error\"])('Only time and utc scales accept interval strings.');\n    if (step) count = count.every(step);\n  }\n\n  return count;\n}\n/**\n * Filter a set of candidate tick values, ensuring that only tick values\n * that lie within the scale range are included.\n * @param {Scale} scale - The scale for which to generate tick values.\n * @param {Array<*>} ticks - The candidate tick values.\n * @param {*} count - The tick count or interval function.\n * @return {Array<*>} - The filtered tick values.\n */\n\nfunction validTicks(scale, ticks, count) {\n  let range = scale.range(),\n      lo = range[0],\n      hi = Object(vega_util__WEBPACK_IMPORTED_MODULE_0__[\"peek\"])(range),\n      cmp = ascending;\n\n  if (lo > hi) {\n    range = hi;\n    hi = lo;\n    lo = range;\n    cmp = descending;\n  }\n\n  lo = Math.floor(lo);\n  hi = Math.ceil(hi); // filter ticks to valid values within the range\n  // additionally sort ticks in range order (#2579)\n\n  ticks = ticks.map(v => [v, scale(v)]).filter(_ => lo <= _[1] && _[1] <= hi).sort(cmp).map(_ => _[0]);\n\n  if (count > 0 && ticks.length > 1) {\n    const endpoints = [ticks[0], Object(vega_util__WEBPACK_IMPORTED_MODULE_0__[\"peek\"])(ticks)];\n\n    while (ticks.length > count && ticks.length >= 3) {\n      ticks = ticks.filter((_, i) => !(i % 2));\n    }\n\n    if (ticks.length < 3) {\n      ticks = endpoints;\n    }\n  }\n\n  return ticks;\n}\n/**\n * Generate tick values for the given scale and approximate tick count or\n * interval value. If the scale has a 'ticks' method, it will be used to\n * generate the ticks, with the count argument passed as a parameter. If the\n * scale lacks a 'ticks' method, the full scale domain will be returned.\n * @param {Scale} scale - The scale for which to generate tick values.\n * @param {*} [count] - The approximate number of desired ticks.\n * @return {Array<*>} - The generated tick values.\n */\n\nfunction tickValues(scale, count) {\n  return scale.bins ? validTicks(scale, scale.bins) : scale.ticks ? scale.ticks(count) : scale.domain();\n}\n/**\n * Generate a label format function for a scale. If the scale has a\n * 'tickFormat' method, it will be used to generate the formatter, with the\n * count and specifier arguments passed as parameters. If the scale lacks a\n * 'tickFormat' method, the returned formatter performs simple string coercion.\n * If the input scale is a logarithmic scale and the format specifier does not\n * indicate a desired decimal precision, a special variable precision formatter\n * that automatically trims trailing zeroes will be generated.\n * @param {Scale} scale - The scale for which to generate the label formatter.\n * @param {*} [count] - The approximate number of desired ticks.\n * @param {string} [specifier] - The format specifier. Must be a legal d3\n *   specifier string (see https://github.com/d3/d3-format#formatSpecifier) or\n *   time multi-format specifier object.\n * @return {function(*):string} - The generated label formatter.\n */\n\nfunction tickFormat(locale, scale, count, specifier, formatType, noSkip) {\n  const type = scale.type;\n  let format = defaultFormatter;\n\n  if (type === Time || formatType === Time) {\n    format = locale.timeFormat(specifier);\n  } else if (type === UTC || formatType === UTC) {\n    format = locale.utcFormat(specifier);\n  } else if (isLogarithmic(type)) {\n    const varfmt = locale.formatFloat(specifier);\n\n    if (noSkip || scale.bins) {\n      format = varfmt;\n    } else {\n      const test = tickLog(scale, count, false);\n\n      format = _ => test(_) ? varfmt(_) : '';\n    }\n  } else if (scale.tickFormat) {\n    // if d3 scale has tickFormat, it must be continuous\n    const d = scale.domain();\n    format = locale.formatSpan(d[0], d[d.length - 1], count, specifier);\n  } else if (specifier) {\n    format = locale.format(specifier);\n  }\n\n  return format;\n}\nfunction tickLog(scale, count, values) {\n  const ticks = tickValues(scale, count),\n        base = scale.base(),\n        logb = Math.log(base),\n        k = Math.max(1, base * count / ticks.length); // apply d3-scale's log format filter criteria\n\n  const test = d => {\n    let i = d / Math.pow(base, Math.round(Math.log(d) / logb));\n    if (i * base < base - 0.5) i *= base;\n    return i <= k;\n  };\n\n  return values ? ticks.filter(test) : test;\n}\n\nconst symbols = {\n  [Quantile]: 'quantiles',\n  [Quantize]: 'thresholds',\n  [Threshold]: 'domain'\n};\nconst formats = {\n  [Quantile]: 'quantiles',\n  [Quantize]: 'domain'\n};\nfunction labelValues(scale, count) {\n  return scale.bins ? binValues(scale.bins) : scale.type === Log ? tickLog(scale, count, true) : symbols[scale.type] ? thresholdValues(scale[symbols[scale.type]]()) : tickValues(scale, count);\n}\nfunction thresholdFormat(locale, scale, specifier) {\n  const _ = scale[formats[scale.type]](),\n        n = _.length;\n\n  let d = n > 1 ? _[1] - _[0] : _[0],\n      i;\n\n  for (i = 1; i < n; ++i) {\n    d = Math.min(d, _[i] - _[i - 1]);\n  } // tickCount = 3 ticks times 10 for increased resolution\n\n\n  return locale.formatSpan(0, d, 3 * 10, specifier);\n}\n\nfunction thresholdValues(thresholds) {\n  const values = [-Infinity].concat(thresholds);\n  values.max = +Infinity;\n  return values;\n}\n\nfunction binValues(bins) {\n  const values = bins.slice(0, -1);\n  values.max = Object(vega_util__WEBPACK_IMPORTED_MODULE_0__[\"peek\"])(bins);\n  return values;\n}\n\nconst isDiscreteRange = scale => symbols[scale.type] || scale.bins;\n\nfunction labelFormat(locale, scale, count, type, specifier, formatType, noSkip) {\n  const format = formats[scale.type] && formatType !== Time && formatType !== UTC ? thresholdFormat(locale, scale, specifier) : tickFormat(locale, scale, count, specifier, formatType, noSkip);\n  return type === SymbolLegend && isDiscreteRange(scale) ? formatRange(format) : type === DiscreteLegend ? formatDiscrete(format) : formatPoint(format);\n}\n\nconst formatRange = format => (value, index, array) => {\n  const limit = get(array[index + 1], get(array.max, +Infinity)),\n        lo = formatValue(value, format),\n        hi = formatValue(limit, format);\n  return lo && hi ? lo + ' \\u2013 ' + hi : hi ? '< ' + hi : '\\u2265 ' + lo;\n};\n\nconst get = (value, dflt) => value != null ? value : dflt;\n\nconst formatDiscrete = format => (value, index) => index ? format(value) : null;\n\nconst formatPoint = format => value => format(value);\n\nconst formatValue = (value, format) => Number.isFinite(value) ? format(value) : null;\n\nfunction labelFraction(scale) {\n  const domain = scale.domain(),\n        count = domain.length - 1;\n  let lo = +domain[0],\n      hi = +Object(vega_util__WEBPACK_IMPORTED_MODULE_0__[\"peek\"])(domain),\n      span = hi - lo;\n\n  if (scale.type === Threshold) {\n    const adjust = count ? span / count : 0.1;\n    lo -= adjust;\n    hi += adjust;\n    span = hi - lo;\n  }\n\n  return value => (value - lo) / span;\n}\n\nfunction format(locale, scale, specifier, formatType) {\n  const type = formatType || scale.type; // replace abbreviated time specifiers to improve screen reader experience\n\n  if (Object(vega_util__WEBPACK_IMPORTED_MODULE_0__[\"isString\"])(specifier) && isTemporal(type)) {\n    specifier = specifier.replace(/%a/g, '%A').replace(/%b/g, '%B');\n  }\n\n  return !specifier && type === Time ? locale.timeFormat('%A, %d %B %Y, %X') : !specifier && type === UTC ? locale.utcFormat('%A, %d %B %Y, %X UTC') : labelFormat(locale, scale, 5, null, specifier, formatType, true);\n}\n\nfunction domainCaption(locale, scale, opt) {\n  opt = opt || {};\n  const max = Math.max(3, opt.maxlen || 7),\n        fmt = format(locale, scale, opt.format, opt.formatType); // if scale breaks domain into bins, describe boundaries\n\n  if (isDiscretizing(scale.type)) {\n    const v = labelValues(scale).slice(1).map(fmt),\n          n = v.length;\n    return \"\".concat(n, \" boundar\").concat(n === 1 ? 'y' : 'ies', \": \").concat(v.join(', '));\n  } // if scale domain is discrete, list values\n  else if (isDiscrete(scale.type)) {\n      const d = scale.domain(),\n            n = d.length,\n            v = n > max ? d.slice(0, max - 2).map(fmt).join(', ') + ', ending with ' + d.slice(-1).map(fmt) : d.map(fmt).join(', ');\n      return \"\".concat(n, \" value\").concat(n === 1 ? '' : 's', \": \").concat(v);\n    } // if scale domain is continuous, describe value range\n    else {\n        const d = scale.domain();\n        return \"values from \".concat(fmt(d[0]), \" to \").concat(fmt(Object(vega_util__WEBPACK_IMPORTED_MODULE_0__[\"peek\"])(d)));\n      }\n}\n\n\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,[encoded data, 45968 characters]\n//# sourceURL=webpack-internal:///./node_modules/vega/node_modules/vega-scale/build/vega-scale.module.js\n");

/***/ }),

/***/ "./node_modules/vega/node_modules/vega-scenegraph/build/vega-scenegraph.module.js":
/*!****************************************************************************************!*\
  !*** ./node_modules/vega/node_modules/vega-scenegraph/build/vega-scenegraph.module.js ***!
  \****************************************************************************************/
/*! exports provided: Bounds, CanvasHandler, CanvasRenderer, Gradient, GroupItem, Handler, Item, Marks, RenderType, Renderer, ResourceLoader, SVGHandler, SVGRenderer, SVGStringRenderer, Scenegraph, boundClip, boundContext, boundItem, boundMark, boundStroke, domChild, domClear, domCreate, domFind, font, fontFamily, fontSize, intersect, intersectBoxLine, intersectPath, intersectPoint, intersectRule, lineHeight, markup, multiLineOffset, pathCurves, pathEqual, pathParse, pathRectangle, pathRender, pathSymbols, pathTrail, point, renderModule, resetSVGClipId, resetSVGDefIds, sceneEqual, sceneFromJSON, scenePickVisit, sceneToJSON, sceneVisit, sceneZOrder, serializeXML, textMetrics */
/***/ (function(module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"Bounds\", function() { return Bounds; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"CanvasHandler\", function() { return CanvasHandler; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"CanvasRenderer\", function() { return CanvasRenderer; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"Gradient\", function() { return Gradient; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"GroupItem\", function() { return GroupItem; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"Handler\", function() { return Handler; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"Item\", function() { return Item; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"Marks\", function() { return Marks; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"RenderType\", function() { return RenderType; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"Renderer\", function() { return Renderer; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"ResourceLoader\", function() { return ResourceLoader; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"SVGHandler\", function() { return SVGHandler; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"SVGRenderer\", function() { return SVGRenderer; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"SVGStringRenderer\", function() { return SVGStringRenderer; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"Scenegraph\", function() { return Scenegraph; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"boundClip\", function() { return boundClip; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"boundContext\", function() { return boundContext; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"boundItem\", function() { return boundItem; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"boundMark\", function() { return boundMark; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"boundStroke\", function() { return boundStroke; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"domChild\", function() { return domChild; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"domClear\", function() { return domClear; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"domCreate\", function() { return domCreate; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"domFind\", function() { return domFind; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"font\", function() { return font; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"fontFamily\", function() { return fontFamily; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"fontSize\", function() { return fontSize; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"intersect\", function() { return intersect; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"intersectBoxLine\", function() { return intersectBoxLine; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"intersectPath\", function() { return intersectPath; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"intersectPoint\", function() { return intersectPoint; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"intersectRule\", function() { return intersectRule; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"lineHeight\", function() { return lineHeight; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"markup\", function() { return markup; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"multiLineOffset\", function() { return multiLineOffset; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"pathCurves\", function() { return curves; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"pathEqual\", function() { return pathEqual; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"pathParse\", function() { return pathParse; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"pathRectangle\", function() { return vg_rect; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"pathRender\", function() { return pathRender; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"pathSymbols\", function() { return symbols; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"pathTrail\", function() { return vg_trail; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"point\", function() { return point; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"renderModule\", function() { return renderModule; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"resetSVGClipId\", function() { return resetSVGClipId; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"resetSVGDefIds\", function() { return resetSVGDefIds; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"sceneEqual\", function() { return sceneEqual; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"sceneFromJSON\", function() { return sceneFromJSON; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"scenePickVisit\", function() { return pickVisit; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"sceneToJSON\", function() { return sceneToJSON; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"sceneVisit\", function() { return visit; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"sceneZOrder\", function() { return zorder; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"serializeXML\", function() { return serializeXML; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"textMetrics\", function() { return textMetrics; });\n/* harmony import */ var vega_util__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! vega-util */ \"./node_modules/vega/node_modules/vega-util/build/vega-util.module.js\");\n/* harmony import */ var d3_shape__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! d3-shape */ \"./node_modules/vega/node_modules/d3-shape/src/index.js\");\n/* harmony import */ var d3_path__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! d3-path */ \"./node_modules/vega/node_modules/d3-path/src/index.js\");\n/* harmony import */ var vega_canvas__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! vega-canvas */ \"./node_modules/vega-canvas/index.browser.js\");\n/* harmony import */ var vega_loader__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! vega-loader */ \"./node_modules/vega/node_modules/vega-loader/index.browser.js\");\n/* harmony import */ var vega_scale__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! vega-scale */ \"./node_modules/vega/node_modules/vega-scale/build/vega-scale.module.js\");\n\n\n\n\n\n\n\nlet gradient_id = 0;\nfunction resetSVGGradientId() {\n  gradient_id = 0;\n}\nconst patternPrefix = 'p_';\nfunction isGradient(value) {\n  return value && value.gradient;\n}\nfunction gradientRef(g, defs, base) {\n  const type = g.gradient;\n  let id = g.id,\n      prefix = type === 'radial' ? patternPrefix : ''; // check id, assign default values as needed\n\n  if (!id) {\n    id = g.id = 'gradient_' + gradient_id++;\n\n    if (type === 'radial') {\n      g.x1 = get(g.x1, 0.5);\n      g.y1 = get(g.y1, 0.5);\n      g.r1 = get(g.r1, 0);\n      g.x2 = get(g.x2, 0.5);\n      g.y2 = get(g.y2, 0.5);\n      g.r2 = get(g.r2, 0.5);\n      prefix = patternPrefix;\n    } else {\n      g.x1 = get(g.x1, 0);\n      g.y1 = get(g.y1, 0);\n      g.x2 = get(g.x2, 1);\n      g.y2 = get(g.y2, 0);\n    }\n  } // register definition\n\n\n  defs[id] = g; // return url reference\n\n  return 'url(' + (base || '') + '#' + prefix + id + ')';\n}\n\nfunction get(val, def) {\n  return val != null ? val : def;\n}\n\nfunction Gradient (p0, p1) {\n  var stops = [],\n      gradient;\n  return gradient = {\n    gradient: 'linear',\n    x1: p0 ? p0[0] : 0,\n    y1: p0 ? p0[1] : 0,\n    x2: p1 ? p1[0] : 1,\n    y2: p1 ? p1[1] : 0,\n    stops: stops,\n    stop: function (offset, color) {\n      stops.push({\n        offset: offset,\n        color: color\n      });\n      return gradient;\n    }\n  };\n}\n\nconst lookup = {\n  'basis': {\n    curve: d3_shape__WEBPACK_IMPORTED_MODULE_1__[\"curveBasis\"]\n  },\n  'basis-closed': {\n    curve: d3_shape__WEBPACK_IMPORTED_MODULE_1__[\"curveBasisClosed\"]\n  },\n  'basis-open': {\n    curve: d3_shape__WEBPACK_IMPORTED_MODULE_1__[\"curveBasisOpen\"]\n  },\n  'bundle': {\n    curve: d3_shape__WEBPACK_IMPORTED_MODULE_1__[\"curveBundle\"],\n    tension: 'beta',\n    value: 0.85\n  },\n  'cardinal': {\n    curve: d3_shape__WEBPACK_IMPORTED_MODULE_1__[\"curveCardinal\"],\n    tension: 'tension',\n    value: 0\n  },\n  'cardinal-open': {\n    curve: d3_shape__WEBPACK_IMPORTED_MODULE_1__[\"curveCardinalOpen\"],\n    tension: 'tension',\n    value: 0\n  },\n  'cardinal-closed': {\n    curve: d3_shape__WEBPACK_IMPORTED_MODULE_1__[\"curveCardinalClosed\"],\n    tension: 'tension',\n    value: 0\n  },\n  'catmull-rom': {\n    curve: d3_shape__WEBPACK_IMPORTED_MODULE_1__[\"curveCatmullRom\"],\n    tension: 'alpha',\n    value: 0.5\n  },\n  'catmull-rom-closed': {\n    curve: d3_shape__WEBPACK_IMPORTED_MODULE_1__[\"curveCatmullRomClosed\"],\n    tension: 'alpha',\n    value: 0.5\n  },\n  'catmull-rom-open': {\n    curve: d3_shape__WEBPACK_IMPORTED_MODULE_1__[\"curveCatmullRomOpen\"],\n    tension: 'alpha',\n    value: 0.5\n  },\n  'linear': {\n    curve: d3_shape__WEBPACK_IMPORTED_MODULE_1__[\"curveLinear\"]\n  },\n  'linear-closed': {\n    curve: d3_shape__WEBPACK_IMPORTED_MODULE_1__[\"curveLinearClosed\"]\n  },\n  'monotone': {\n    horizontal: d3_shape__WEBPACK_IMPORTED_MODULE_1__[\"curveMonotoneY\"],\n    vertical: d3_shape__WEBPACK_IMPORTED_MODULE_1__[\"curveMonotoneX\"]\n  },\n  'natural': {\n    curve: d3_shape__WEBPACK_IMPORTED_MODULE_1__[\"curveNatural\"]\n  },\n  'step': {\n    curve: d3_shape__WEBPACK_IMPORTED_MODULE_1__[\"curveStep\"]\n  },\n  'step-after': {\n    curve: d3_shape__WEBPACK_IMPORTED_MODULE_1__[\"curveStepAfter\"]\n  },\n  'step-before': {\n    curve: d3_shape__WEBPACK_IMPORTED_MODULE_1__[\"curveStepBefore\"]\n  }\n};\nfunction curves(type, orientation, tension) {\n  var entry = Object(vega_util__WEBPACK_IMPORTED_MODULE_0__[\"hasOwnProperty\"])(lookup, type) && lookup[type],\n      curve = null;\n\n  if (entry) {\n    curve = entry.curve || entry[orientation || 'vertical'];\n\n    if (entry.tension && tension != null) {\n      curve = curve[entry.tension](tension);\n    }\n  }\n\n  return curve;\n}\n\n// Path parsing and rendering code adapted from fabric.js -- Thanks!\nconst cmdlen = {\n  m: 2,\n  l: 2,\n  h: 1,\n  v: 1,\n  c: 6,\n  s: 4,\n  q: 4,\n  t: 2,\n  a: 7\n},\n      regexp = [/([MLHVCSQTAZmlhvcsqtaz])/g, /###/, /(\\.\\d+)(\\.\\d)/g, /(\\d)([-+])/g, /\\s|,|###/];\nfunction pathParse (pathstr) {\n  const result = [];\n  let curr, chunks, parsed, param, cmd, len, i, j, n, m; // First, break path into command sequence\n\n  const path = pathstr.slice().replace(regexp[0], '###$1').split(regexp[1]).slice(1); // Next, parse each command in turn\n\n  for (i = 0, n = path.length; i < n; ++i) {\n    curr = path[i];\n    chunks = curr.slice(1).trim().replace(regexp[2], '$1###$2').replace(regexp[3], '$1###$2').split(regexp[4]);\n    cmd = curr.charAt(0);\n    parsed = [cmd];\n\n    for (j = 0, m = chunks.length; j < m; ++j) {\n      if ((param = +chunks[j]) === param) {\n        // not NaN\n        parsed.push(param);\n      }\n    }\n\n    len = cmdlen[cmd.toLowerCase()];\n\n    if (parsed.length - 1 > len) {\n      const m = parsed.length;\n      j = 1;\n      result.push([cmd].concat(parsed.slice(j, j += len))); // handle implicit lineTo (#2803)\n\n      cmd = cmd === 'M' ? 'L' : cmd === 'm' ? 'l' : cmd;\n\n      for (; j < m; j += len) {\n        result.push([cmd].concat(parsed.slice(j, j + len)));\n      }\n    } else {\n      result.push(parsed);\n    }\n  }\n\n  return result;\n}\n\nconst DegToRad = Math.PI / 180;\nconst Epsilon = 1e-14;\nconst HalfPi = Math.PI / 2;\nconst Tau = Math.PI * 2;\nconst HalfSqrt3 = Math.sqrt(3) / 2;\n\nvar segmentCache = {};\nvar bezierCache = {};\nvar join = [].join; // Copied from Inkscape svgtopdf, thanks!\n\nfunction segments(x, y, rx, ry, large, sweep, rotateX, ox, oy) {\n  const key = join.call(arguments);\n\n  if (segmentCache[key]) {\n    return segmentCache[key];\n  }\n\n  const th = rotateX * DegToRad;\n  const sin_th = Math.sin(th);\n  const cos_th = Math.cos(th);\n  rx = Math.abs(rx);\n  ry = Math.abs(ry);\n  const px = cos_th * (ox - x) * 0.5 + sin_th * (oy - y) * 0.5;\n  const py = cos_th * (oy - y) * 0.5 - sin_th * (ox - x) * 0.5;\n  let pl = px * px / (rx * rx) + py * py / (ry * ry);\n\n  if (pl > 1) {\n    pl = Math.sqrt(pl);\n    rx *= pl;\n    ry *= pl;\n  }\n\n  const a00 = cos_th / rx;\n  const a01 = sin_th / rx;\n  const a10 = -sin_th / ry;\n  const a11 = cos_th / ry;\n  const x0 = a00 * ox + a01 * oy;\n  const y0 = a10 * ox + a11 * oy;\n  const x1 = a00 * x + a01 * y;\n  const y1 = a10 * x + a11 * y;\n  const d = (x1 - x0) * (x1 - x0) + (y1 - y0) * (y1 - y0);\n  let sfactor_sq = 1 / d - 0.25;\n  if (sfactor_sq < 0) sfactor_sq = 0;\n  let sfactor = Math.sqrt(sfactor_sq);\n  if (sweep == large) sfactor = -sfactor;\n  const xc = 0.5 * (x0 + x1) - sfactor * (y1 - y0);\n  const yc = 0.5 * (y0 + y1) + sfactor * (x1 - x0);\n  const th0 = Math.atan2(y0 - yc, x0 - xc);\n  const th1 = Math.atan2(y1 - yc, x1 - xc);\n  let th_arc = th1 - th0;\n\n  if (th_arc < 0 && sweep === 1) {\n    th_arc += Tau;\n  } else if (th_arc > 0 && sweep === 0) {\n    th_arc -= Tau;\n  }\n\n  const segs = Math.ceil(Math.abs(th_arc / (HalfPi + 0.001)));\n  const result = [];\n\n  for (let i = 0; i < segs; ++i) {\n    const th2 = th0 + i * th_arc / segs;\n    const th3 = th0 + (i + 1) * th_arc / segs;\n    result[i] = [xc, yc, th2, th3, rx, ry, sin_th, cos_th];\n  }\n\n  return segmentCache[key] = result;\n}\nfunction bezier(params) {\n  const key = join.call(params);\n\n  if (bezierCache[key]) {\n    return bezierCache[key];\n  }\n\n  var cx = params[0],\n      cy = params[1],\n      th0 = params[2],\n      th1 = params[3],\n      rx = params[4],\n      ry = params[5],\n      sin_th = params[6],\n      cos_th = params[7];\n  const a00 = cos_th * rx;\n  const a01 = -sin_th * ry;\n  const a10 = sin_th * rx;\n  const a11 = cos_th * ry;\n  const cos_th0 = Math.cos(th0);\n  const sin_th0 = Math.sin(th0);\n  const cos_th1 = Math.cos(th1);\n  const sin_th1 = Math.sin(th1);\n  const th_half = 0.5 * (th1 - th0);\n  const sin_th_h2 = Math.sin(th_half * 0.5);\n  const t = 8 / 3 * sin_th_h2 * sin_th_h2 / Math.sin(th_half);\n  const x1 = cx + cos_th0 - t * sin_th0;\n  const y1 = cy + sin_th0 + t * cos_th0;\n  const x3 = cx + cos_th1;\n  const y3 = cy + sin_th1;\n  const x2 = x3 + t * sin_th1;\n  const y2 = y3 - t * cos_th1;\n  return bezierCache[key] = [a00 * x1 + a01 * y1, a10 * x1 + a11 * y1, a00 * x2 + a01 * y2, a10 * x2 + a11 * y2, a00 * x3 + a01 * y3, a10 * x3 + a11 * y3];\n}\n\nconst temp = ['l', 0, 0, 0, 0, 0, 0, 0];\n\nfunction scale$1(current, sX, sY) {\n  const c = temp[0] = current[0];\n\n  if (c === 'a' || c === 'A') {\n    temp[1] = sX * current[1];\n    temp[2] = sY * current[2];\n    temp[3] = current[3];\n    temp[4] = current[4];\n    temp[5] = current[5];\n    temp[6] = sX * current[6];\n    temp[7] = sY * current[7];\n  } else if (c === 'h' || c === 'H') {\n    temp[1] = sX * current[1];\n  } else if (c === 'v' || c === 'V') {\n    temp[1] = sY * current[1];\n  } else {\n    for (var i = 1, n = current.length; i < n; ++i) {\n      temp[i] = (i % 2 == 1 ? sX : sY) * current[i];\n    }\n  }\n\n  return temp;\n}\n\nfunction pathRender (context, path, l, t, sX, sY) {\n  var current,\n      // current instruction\n  previous = null,\n      x = 0,\n      // current x\n  y = 0,\n      // current y\n  controlX = 0,\n      // current control point x\n  controlY = 0,\n      // current control point y\n  tempX,\n      tempY,\n      tempControlX,\n      tempControlY;\n  if (l == null) l = 0;\n  if (t == null) t = 0;\n  if (sX == null) sX = 1;\n  if (sY == null) sY = sX;\n  if (context.beginPath) context.beginPath();\n\n  for (var i = 0, len = path.length; i < len; ++i) {\n    current = path[i];\n\n    if (sX !== 1 || sY !== 1) {\n      current = scale$1(current, sX, sY);\n    }\n\n    switch (current[0]) {\n      // first letter\n      case 'l':\n        // lineto, relative\n        x += current[1];\n        y += current[2];\n        context.lineTo(x + l, y + t);\n        break;\n\n      case 'L':\n        // lineto, absolute\n        x = current[1];\n        y = current[2];\n        context.lineTo(x + l, y + t);\n        break;\n\n      case 'h':\n        // horizontal lineto, relative\n        x += current[1];\n        context.lineTo(x + l, y + t);\n        break;\n\n      case 'H':\n        // horizontal lineto, absolute\n        x = current[1];\n        context.lineTo(x + l, y + t);\n        break;\n\n      case 'v':\n        // vertical lineto, relative\n        y += current[1];\n        context.lineTo(x + l, y + t);\n        break;\n\n      case 'V':\n        // verical lineto, absolute\n        y = current[1];\n        context.lineTo(x + l, y + t);\n        break;\n\n      case 'm':\n        // moveTo, relative\n        x += current[1];\n        y += current[2];\n        context.moveTo(x + l, y + t);\n        break;\n\n      case 'M':\n        // moveTo, absolute\n        x = current[1];\n        y = current[2];\n        context.moveTo(x + l, y + t);\n        break;\n\n      case 'c':\n        // bezierCurveTo, relative\n        tempX = x + current[5];\n        tempY = y + current[6];\n        controlX = x + current[3];\n        controlY = y + current[4];\n        context.bezierCurveTo(x + current[1] + l, // x1\n        y + current[2] + t, // y1\n        controlX + l, // x2\n        controlY + t, // y2\n        tempX + l, tempY + t);\n        x = tempX;\n        y = tempY;\n        break;\n\n      case 'C':\n        // bezierCurveTo, absolute\n        x = current[5];\n        y = current[6];\n        controlX = current[3];\n        controlY = current[4];\n        context.bezierCurveTo(current[1] + l, current[2] + t, controlX + l, controlY + t, x + l, y + t);\n        break;\n\n      case 's':\n        // shorthand cubic bezierCurveTo, relative\n        // transform to absolute x,y\n        tempX = x + current[3];\n        tempY = y + current[4]; // calculate reflection of previous control points\n\n        controlX = 2 * x - controlX;\n        controlY = 2 * y - controlY;\n        context.bezierCurveTo(controlX + l, controlY + t, x + current[1] + l, y + current[2] + t, tempX + l, tempY + t); // set control point to 2nd one of this command\n        // the first control point is assumed to be the reflection of\n        // the second control point on the previous command relative\n        // to the current point.\n\n        controlX = x + current[1];\n        controlY = y + current[2];\n        x = tempX;\n        y = tempY;\n        break;\n\n      case 'S':\n        // shorthand cubic bezierCurveTo, absolute\n        tempX = current[3];\n        tempY = current[4]; // calculate reflection of previous control points\n\n        controlX = 2 * x - controlX;\n        controlY = 2 * y - controlY;\n        context.bezierCurveTo(controlX + l, controlY + t, current[1] + l, current[2] + t, tempX + l, tempY + t);\n        x = tempX;\n        y = tempY; // set control point to 2nd one of this command\n        // the first control point is assumed to be the reflection of\n        // the second control point on the previous command relative\n        // to the current point.\n\n        controlX = current[1];\n        controlY = current[2];\n        break;\n\n      case 'q':\n        // quadraticCurveTo, relative\n        // transform to absolute x,y\n        tempX = x + current[3];\n        tempY = y + current[4];\n        controlX = x + current[1];\n        controlY = y + current[2];\n        context.quadraticCurveTo(controlX + l, controlY + t, tempX + l, tempY + t);\n        x = tempX;\n        y = tempY;\n        break;\n\n      case 'Q':\n        // quadraticCurveTo, absolute\n        tempX = current[3];\n        tempY = current[4];\n        context.quadraticCurveTo(current[1] + l, current[2] + t, tempX + l, tempY + t);\n        x = tempX;\n        y = tempY;\n        controlX = current[1];\n        controlY = current[2];\n        break;\n\n      case 't':\n        // shorthand quadraticCurveTo, relative\n        // transform to absolute x,y\n        tempX = x + current[1];\n        tempY = y + current[2];\n\n        if (previous[0].match(/[QqTt]/) === null) {\n          // If there is no previous command or if the previous command was not a Q, q, T or t,\n          // assume the control point is coincident with the current point\n          controlX = x;\n          controlY = y;\n        } else if (previous[0] === 't') {\n          // calculate reflection of previous control points for t\n          controlX = 2 * x - tempControlX;\n          controlY = 2 * y - tempControlY;\n        } else if (previous[0] === 'q') {\n          // calculate reflection of previous control points for q\n          controlX = 2 * x - controlX;\n          controlY = 2 * y - controlY;\n        }\n\n        tempControlX = controlX;\n        tempControlY = controlY;\n        context.quadraticCurveTo(controlX + l, controlY + t, tempX + l, tempY + t);\n        x = tempX;\n        y = tempY;\n        controlX = x + current[1];\n        controlY = y + current[2];\n        break;\n\n      case 'T':\n        tempX = current[1];\n        tempY = current[2]; // calculate reflection of previous control points\n\n        controlX = 2 * x - controlX;\n        controlY = 2 * y - controlY;\n        context.quadraticCurveTo(controlX + l, controlY + t, tempX + l, tempY + t);\n        x = tempX;\n        y = tempY;\n        break;\n\n      case 'a':\n        drawArc(context, x + l, y + t, [current[1], current[2], current[3], current[4], current[5], current[6] + x + l, current[7] + y + t]);\n        x += current[6];\n        y += current[7];\n        break;\n\n      case 'A':\n        drawArc(context, x + l, y + t, [current[1], current[2], current[3], current[4], current[5], current[6] + l, current[7] + t]);\n        x = current[6];\n        y = current[7];\n        break;\n\n      case 'z':\n      case 'Z':\n        context.closePath();\n        break;\n    }\n\n    previous = current;\n  }\n}\n\nfunction drawArc(context, x, y, coords) {\n  const seg = segments(coords[5], // end x\n  coords[6], // end y\n  coords[0], // radius x\n  coords[1], // radius y\n  coords[3], // large flag\n  coords[4], // sweep flag\n  coords[2], // rotation\n  x, y);\n\n  for (let i = 0; i < seg.length; ++i) {\n    const bez = bezier(seg[i]);\n    context.bezierCurveTo(bez[0], bez[1], bez[2], bez[3], bez[4], bez[5]);\n  }\n}\n\nconst Tan30 = 0.5773502691896257;\nconst builtins = {\n  'circle': {\n    draw: function (context, size) {\n      const r = Math.sqrt(size) / 2;\n      context.moveTo(r, 0);\n      context.arc(0, 0, r, 0, Tau);\n    }\n  },\n  'cross': {\n    draw: function (context, size) {\n      var r = Math.sqrt(size) / 2,\n          s = r / 2.5;\n      context.moveTo(-r, -s);\n      context.lineTo(-r, s);\n      context.lineTo(-s, s);\n      context.lineTo(-s, r);\n      context.lineTo(s, r);\n      context.lineTo(s, s);\n      context.lineTo(r, s);\n      context.lineTo(r, -s);\n      context.lineTo(s, -s);\n      context.lineTo(s, -r);\n      context.lineTo(-s, -r);\n      context.lineTo(-s, -s);\n      context.closePath();\n    }\n  },\n  'diamond': {\n    draw: function (context, size) {\n      const r = Math.sqrt(size) / 2;\n      context.moveTo(-r, 0);\n      context.lineTo(0, -r);\n      context.lineTo(r, 0);\n      context.lineTo(0, r);\n      context.closePath();\n    }\n  },\n  'square': {\n    draw: function (context, size) {\n      var w = Math.sqrt(size),\n          x = -w / 2;\n      context.rect(x, x, w, w);\n    }\n  },\n  'arrow': {\n    draw: function (context, size) {\n      var r = Math.sqrt(size) / 2,\n          s = r / 7,\n          t = r / 2.5,\n          v = r / 8;\n      context.moveTo(-s, r);\n      context.lineTo(s, r);\n      context.lineTo(s, -v);\n      context.lineTo(t, -v);\n      context.lineTo(0, -r);\n      context.lineTo(-t, -v);\n      context.lineTo(-s, -v);\n      context.closePath();\n    }\n  },\n  'wedge': {\n    draw: function (context, size) {\n      var r = Math.sqrt(size) / 2,\n          h = HalfSqrt3 * r,\n          o = h - r * Tan30,\n          b = r / 4;\n      context.moveTo(0, -h - o);\n      context.lineTo(-b, h - o);\n      context.lineTo(b, h - o);\n      context.closePath();\n    }\n  },\n  'triangle': {\n    draw: function (context, size) {\n      var r = Math.sqrt(size) / 2,\n          h = HalfSqrt3 * r,\n          o = h - r * Tan30;\n      context.moveTo(0, -h - o);\n      context.lineTo(-r, h - o);\n      context.lineTo(r, h - o);\n      context.closePath();\n    }\n  },\n  'triangle-up': {\n    draw: function (context, size) {\n      var r = Math.sqrt(size) / 2,\n          h = HalfSqrt3 * r;\n      context.moveTo(0, -h);\n      context.lineTo(-r, h);\n      context.lineTo(r, h);\n      context.closePath();\n    }\n  },\n  'triangle-down': {\n    draw: function (context, size) {\n      var r = Math.sqrt(size) / 2,\n          h = HalfSqrt3 * r;\n      context.moveTo(0, h);\n      context.lineTo(-r, -h);\n      context.lineTo(r, -h);\n      context.closePath();\n    }\n  },\n  'triangle-right': {\n    draw: function (context, size) {\n      var r = Math.sqrt(size) / 2,\n          h = HalfSqrt3 * r;\n      context.moveTo(h, 0);\n      context.lineTo(-h, -r);\n      context.lineTo(-h, r);\n      context.closePath();\n    }\n  },\n  'triangle-left': {\n    draw: function (context, size) {\n      var r = Math.sqrt(size) / 2,\n          h = HalfSqrt3 * r;\n      context.moveTo(-h, 0);\n      context.lineTo(h, -r);\n      context.lineTo(h, r);\n      context.closePath();\n    }\n  },\n  'stroke': {\n    draw: function (context, size) {\n      const r = Math.sqrt(size) / 2;\n      context.moveTo(-r, 0);\n      context.lineTo(r, 0);\n    }\n  }\n};\nfunction symbols(_) {\n  return Object(vega_util__WEBPACK_IMPORTED_MODULE_0__[\"hasOwnProperty\"])(builtins, _) ? builtins[_] : customSymbol(_);\n}\nvar custom = {};\n\nfunction customSymbol(path) {\n  if (!Object(vega_util__WEBPACK_IMPORTED_MODULE_0__[\"hasOwnProperty\"])(custom, path)) {\n    const parsed = pathParse(path);\n    custom[path] = {\n      draw: function (context, size) {\n        pathRender(context, parsed, 0, 0, Math.sqrt(size) / 2);\n      }\n    };\n  }\n\n  return custom[path];\n}\n\nconst C = 0.448084975506; // C = 1 - c\n\nfunction rectangleX(d) {\n  return d.x;\n}\n\nfunction rectangleY(d) {\n  return d.y;\n}\n\nfunction rectangleWidth(d) {\n  return d.width;\n}\n\nfunction rectangleHeight(d) {\n  return d.height;\n}\n\nfunction number(_) {\n  return typeof _ === 'function' ? _ : () => +_;\n}\n\nfunction clamp(value, min, max) {\n  return Math.max(min, Math.min(value, max));\n}\n\nfunction vg_rect () {\n  var x = rectangleX,\n      y = rectangleY,\n      width = rectangleWidth,\n      height = rectangleHeight,\n      crTL = number(0),\n      crTR = crTL,\n      crBL = crTL,\n      crBR = crTL,\n      context = null;\n\n  function rectangle(_, x0, y0) {\n    var buffer,\n        x1 = x0 != null ? x0 : +x.call(this, _),\n        y1 = y0 != null ? y0 : +y.call(this, _),\n        w = +width.call(this, _),\n        h = +height.call(this, _),\n        s = Math.min(w, h) / 2,\n        tl = clamp(+crTL.call(this, _), 0, s),\n        tr = clamp(+crTR.call(this, _), 0, s),\n        bl = clamp(+crBL.call(this, _), 0, s),\n        br = clamp(+crBR.call(this, _), 0, s);\n    if (!context) context = buffer = Object(d3_path__WEBPACK_IMPORTED_MODULE_2__[\"path\"])();\n\n    if (tl <= 0 && tr <= 0 && bl <= 0 && br <= 0) {\n      context.rect(x1, y1, w, h);\n    } else {\n      var x2 = x1 + w,\n          y2 = y1 + h;\n      context.moveTo(x1 + tl, y1);\n      context.lineTo(x2 - tr, y1);\n      context.bezierCurveTo(x2 - C * tr, y1, x2, y1 + C * tr, x2, y1 + tr);\n      context.lineTo(x2, y2 - br);\n      context.bezierCurveTo(x2, y2 - C * br, x2 - C * br, y2, x2 - br, y2);\n      context.lineTo(x1 + bl, y2);\n      context.bezierCurveTo(x1 + C * bl, y2, x1, y2 - C * bl, x1, y2 - bl);\n      context.lineTo(x1, y1 + tl);\n      context.bezierCurveTo(x1, y1 + C * tl, x1 + C * tl, y1, x1 + tl, y1);\n      context.closePath();\n    }\n\n    if (buffer) {\n      context = null;\n      return buffer + '' || null;\n    }\n  }\n\n  rectangle.x = function (_) {\n    if (arguments.length) {\n      x = number(_);\n      return rectangle;\n    } else {\n      return x;\n    }\n  };\n\n  rectangle.y = function (_) {\n    if (arguments.length) {\n      y = number(_);\n      return rectangle;\n    } else {\n      return y;\n    }\n  };\n\n  rectangle.width = function (_) {\n    if (arguments.length) {\n      width = number(_);\n      return rectangle;\n    } else {\n      return width;\n    }\n  };\n\n  rectangle.height = function (_) {\n    if (arguments.length) {\n      height = number(_);\n      return rectangle;\n    } else {\n      return height;\n    }\n  };\n\n  rectangle.cornerRadius = function (tl, tr, br, bl) {\n    if (arguments.length) {\n      crTL = number(tl);\n      crTR = tr != null ? number(tr) : crTL;\n      crBR = br != null ? number(br) : crTL;\n      crBL = bl != null ? number(bl) : crTR;\n      return rectangle;\n    } else {\n      return crTL;\n    }\n  };\n\n  rectangle.context = function (_) {\n    if (arguments.length) {\n      context = _ == null ? null : _;\n      return rectangle;\n    } else {\n      return context;\n    }\n  };\n\n  return rectangle;\n}\n\nfunction vg_trail () {\n  var x,\n      y,\n      size,\n      defined,\n      context = null,\n      ready,\n      x1,\n      y1,\n      r1;\n\n  function point(x2, y2, w2) {\n    const r2 = w2 / 2;\n\n    if (ready) {\n      var ux = y1 - y2,\n          uy = x2 - x1;\n\n      if (ux || uy) {\n        // get normal vector\n        var ud = Math.sqrt(ux * ux + uy * uy),\n            rx = (ux /= ud) * r1,\n            ry = (uy /= ud) * r1,\n            t = Math.atan2(uy, ux); // draw segment\n\n        context.moveTo(x1 - rx, y1 - ry);\n        context.lineTo(x2 - ux * r2, y2 - uy * r2);\n        context.arc(x2, y2, r2, t - Math.PI, t);\n        context.lineTo(x1 + rx, y1 + ry);\n        context.arc(x1, y1, r1, t, t + Math.PI);\n      } else {\n        context.arc(x2, y2, r2, 0, Tau);\n      }\n\n      context.closePath();\n    } else {\n      ready = 1;\n    }\n\n    x1 = x2;\n    y1 = y2;\n    r1 = r2;\n  }\n\n  function trail(data) {\n    var i,\n        n = data.length,\n        d,\n        defined0 = false,\n        buffer;\n    if (context == null) context = buffer = Object(d3_path__WEBPACK_IMPORTED_MODULE_2__[\"path\"])();\n\n    for (i = 0; i <= n; ++i) {\n      if (!(i < n && defined(d = data[i], i, data)) === defined0) {\n        if (defined0 = !defined0) ready = 0;\n      }\n\n      if (defined0) point(+x(d, i, data), +y(d, i, data), +size(d, i, data));\n    }\n\n    if (buffer) {\n      context = null;\n      return buffer + '' || null;\n    }\n  }\n\n  trail.x = function (_) {\n    if (arguments.length) {\n      x = _;\n      return trail;\n    } else {\n      return x;\n    }\n  };\n\n  trail.y = function (_) {\n    if (arguments.length) {\n      y = _;\n      return trail;\n    } else {\n      return y;\n    }\n  };\n\n  trail.size = function (_) {\n    if (arguments.length) {\n      size = _;\n      return trail;\n    } else {\n      return size;\n    }\n  };\n\n  trail.defined = function (_) {\n    if (arguments.length) {\n      defined = _;\n      return trail;\n    } else {\n      return defined;\n    }\n  };\n\n  trail.context = function (_) {\n    if (arguments.length) {\n      if (_ == null) {\n        context = null;\n      } else {\n        context = _;\n      }\n\n      return trail;\n    } else {\n      return context;\n    }\n  };\n\n  return trail;\n}\n\nfunction value$1(a, b) {\n  return a != null ? a : b;\n}\n\nconst x = item => item.x || 0,\n      y = item => item.y || 0,\n      w = item => item.width || 0,\n      h = item => item.height || 0,\n      xw = item => (item.x || 0) + (item.width || 0),\n      yh = item => (item.y || 0) + (item.height || 0),\n      sa = item => item.startAngle || 0,\n      ea = item => item.endAngle || 0,\n      pa = item => item.padAngle || 0,\n      ir = item => item.innerRadius || 0,\n      or = item => item.outerRadius || 0,\n      cr = item => item.cornerRadius || 0,\n      tl = item => value$1(item.cornerRadiusTopLeft, item.cornerRadius) || 0,\n      tr = item => value$1(item.cornerRadiusTopRight, item.cornerRadius) || 0,\n      br = item => value$1(item.cornerRadiusBottomRight, item.cornerRadius) || 0,\n      bl = item => value$1(item.cornerRadiusBottomLeft, item.cornerRadius) || 0,\n      sz = item => value$1(item.size, 64),\n      ts = item => item.size || 1,\n      def = item => !(item.defined === false),\n      type = item => symbols(item.shape || 'circle');\n\nconst arcShape = Object(d3_shape__WEBPACK_IMPORTED_MODULE_1__[\"arc\"])().startAngle(sa).endAngle(ea).padAngle(pa).innerRadius(ir).outerRadius(or).cornerRadius(cr),\n      areavShape = Object(d3_shape__WEBPACK_IMPORTED_MODULE_1__[\"area\"])().x(x).y1(y).y0(yh).defined(def),\n      areahShape = Object(d3_shape__WEBPACK_IMPORTED_MODULE_1__[\"area\"])().y(y).x1(x).x0(xw).defined(def),\n      lineShape = Object(d3_shape__WEBPACK_IMPORTED_MODULE_1__[\"line\"])().x(x).y(y).defined(def),\n      rectShape = vg_rect().x(x).y(y).width(w).height(h).cornerRadius(tl, tr, br, bl),\n      symbolShape = Object(d3_shape__WEBPACK_IMPORTED_MODULE_1__[\"symbol\"])().type(type).size(sz),\n      trailShape = vg_trail().x(x).y(y).defined(def).size(ts);\nfunction hasCornerRadius(item) {\n  return item.cornerRadius || item.cornerRadiusTopLeft || item.cornerRadiusTopRight || item.cornerRadiusBottomRight || item.cornerRadiusBottomLeft;\n}\nfunction arc$1(context, item) {\n  return arcShape.context(context)(item);\n}\nfunction area$1(context, items) {\n  const item = items[0],\n        interp = item.interpolate || 'linear';\n  return (item.orient === 'horizontal' ? areahShape : areavShape).curve(curves(interp, item.orient, item.tension)).context(context)(items);\n}\nfunction line$1(context, items) {\n  const item = items[0],\n        interp = item.interpolate || 'linear';\n  return lineShape.curve(curves(interp, item.orient, item.tension)).context(context)(items);\n}\nfunction rectangle(context, item, x, y) {\n  return rectShape.context(context)(item, x, y);\n}\nfunction shape$1(context, item) {\n  return (item.mark.shape || item.shape).context(context)(item);\n}\nfunction symbol$1(context, item) {\n  return symbolShape.context(context)(item);\n}\nfunction trail$1(context, items) {\n  return trailShape.context(context)(items);\n}\n\nvar clip_id = 1;\nfunction resetSVGClipId() {\n  clip_id = 1;\n}\nfunction clip$1 (renderer, item, size) {\n  var clip = item.clip,\n      defs = renderer._defs,\n      id = item.clip_id || (item.clip_id = 'clip' + clip_id++),\n      c = defs.clipping[id] || (defs.clipping[id] = {\n    id: id\n  });\n\n  if (Object(vega_util__WEBPACK_IMPORTED_MODULE_0__[\"isFunction\"])(clip)) {\n    c.path = clip(null);\n  } else if (hasCornerRadius(size)) {\n    c.path = rectangle(null, size, 0, 0);\n  } else {\n    c.width = size.width || 0;\n    c.height = size.height || 0;\n  }\n\n  return 'url(#' + id + ')';\n}\n\nfunction Bounds(b) {\n  this.clear();\n  if (b) this.union(b);\n}\nBounds.prototype = {\n  clone() {\n    return new Bounds(this);\n  },\n\n  clear() {\n    this.x1 = +Number.MAX_VALUE;\n    this.y1 = +Number.MAX_VALUE;\n    this.x2 = -Number.MAX_VALUE;\n    this.y2 = -Number.MAX_VALUE;\n    return this;\n  },\n\n  empty() {\n    return this.x1 === +Number.MAX_VALUE && this.y1 === +Number.MAX_VALUE && this.x2 === -Number.MAX_VALUE && this.y2 === -Number.MAX_VALUE;\n  },\n\n  equals(b) {\n    return this.x1 === b.x1 && this.y1 === b.y1 && this.x2 === b.x2 && this.y2 === b.y2;\n  },\n\n  set(x1, y1, x2, y2) {\n    if (x2 < x1) {\n      this.x2 = x1;\n      this.x1 = x2;\n    } else {\n      this.x1 = x1;\n      this.x2 = x2;\n    }\n\n    if (y2 < y1) {\n      this.y2 = y1;\n      this.y1 = y2;\n    } else {\n      this.y1 = y1;\n      this.y2 = y2;\n    }\n\n    return this;\n  },\n\n  add(x, y) {\n    if (x < this.x1) this.x1 = x;\n    if (y < this.y1) this.y1 = y;\n    if (x > this.x2) this.x2 = x;\n    if (y > this.y2) this.y2 = y;\n    return this;\n  },\n\n  expand(d) {\n    this.x1 -= d;\n    this.y1 -= d;\n    this.x2 += d;\n    this.y2 += d;\n    return this;\n  },\n\n  round() {\n    this.x1 = Math.floor(this.x1);\n    this.y1 = Math.floor(this.y1);\n    this.x2 = Math.ceil(this.x2);\n    this.y2 = Math.ceil(this.y2);\n    return this;\n  },\n\n  scale(s) {\n    this.x1 *= s;\n    this.y1 *= s;\n    this.x2 *= s;\n    this.y2 *= s;\n    return this;\n  },\n\n  translate(dx, dy) {\n    this.x1 += dx;\n    this.x2 += dx;\n    this.y1 += dy;\n    this.y2 += dy;\n    return this;\n  },\n\n  rotate(angle, x, y) {\n    const p = this.rotatedPoints(angle, x, y);\n    return this.clear().add(p[0], p[1]).add(p[2], p[3]).add(p[4], p[5]).add(p[6], p[7]);\n  },\n\n  rotatedPoints(angle, x, y) {\n    var {\n      x1,\n      y1,\n      x2,\n      y2\n    } = this,\n        cos = Math.cos(angle),\n        sin = Math.sin(angle),\n        cx = x - x * cos + y * sin,\n        cy = y - x * sin - y * cos;\n    return [cos * x1 - sin * y1 + cx, sin * x1 + cos * y1 + cy, cos * x1 - sin * y2 + cx, sin * x1 + cos * y2 + cy, cos * x2 - sin * y1 + cx, sin * x2 + cos * y1 + cy, cos * x2 - sin * y2 + cx, sin * x2 + cos * y2 + cy];\n  },\n\n  union(b) {\n    if (b.x1 < this.x1) this.x1 = b.x1;\n    if (b.y1 < this.y1) this.y1 = b.y1;\n    if (b.x2 > this.x2) this.x2 = b.x2;\n    if (b.y2 > this.y2) this.y2 = b.y2;\n    return this;\n  },\n\n  intersect(b) {\n    if (b.x1 > this.x1) this.x1 = b.x1;\n    if (b.y1 > this.y1) this.y1 = b.y1;\n    if (b.x2 < this.x2) this.x2 = b.x2;\n    if (b.y2 < this.y2) this.y2 = b.y2;\n    return this;\n  },\n\n  encloses(b) {\n    return b && this.x1 <= b.x1 && this.x2 >= b.x2 && this.y1 <= b.y1 && this.y2 >= b.y2;\n  },\n\n  alignsWith(b) {\n    return b && (this.x1 == b.x1 || this.x2 == b.x2 || this.y1 == b.y1 || this.y2 == b.y2);\n  },\n\n  intersects(b) {\n    return b && !(this.x2 < b.x1 || this.x1 > b.x2 || this.y2 < b.y1 || this.y1 > b.y2);\n  },\n\n  contains(x, y) {\n    return !(x < this.x1 || x > this.x2 || y < this.y1 || y > this.y2);\n  },\n\n  width() {\n    return this.x2 - this.x1;\n  },\n\n  height() {\n    return this.y2 - this.y1;\n  }\n\n};\n\nfunction Item(mark) {\n  this.mark = mark;\n  this.bounds = this.bounds || new Bounds();\n}\n\nfunction GroupItem(mark) {\n  Item.call(this, mark);\n  this.items = this.items || [];\n}\nObject(vega_util__WEBPACK_IMPORTED_MODULE_0__[\"inherits\"])(GroupItem, Item);\n\nfunction ResourceLoader(customLoader) {\n  this._pending = 0;\n  this._loader = customLoader || Object(vega_loader__WEBPACK_IMPORTED_MODULE_4__[\"loader\"])();\n}\n\nfunction increment(loader) {\n  loader._pending += 1;\n}\n\nfunction decrement(loader) {\n  loader._pending -= 1;\n}\n\nResourceLoader.prototype = {\n  pending() {\n    return this._pending;\n  },\n\n  sanitizeURL(uri) {\n    const loader = this;\n    increment(loader);\n    return loader._loader.sanitize(uri, {\n      context: 'href'\n    }).then(opt => {\n      decrement(loader);\n      return opt;\n    }).catch(() => {\n      decrement(loader);\n      return null;\n    });\n  },\n\n  loadImage(uri) {\n    const loader = this,\n          Image = Object(vega_canvas__WEBPACK_IMPORTED_MODULE_3__[\"image\"])();\n    increment(loader);\n    return loader._loader.sanitize(uri, {\n      context: 'image'\n    }).then(opt => {\n      const url = opt.href;\n      if (!url || !Image) throw {\n        url: url\n      };\n      const img = new Image(); // set crossOrigin only if cors is defined; empty string sets anonymous mode\n      // https://developer.mozilla.org/en-US/docs/Web/API/HTMLImageElement/crossOrigin\n\n      const cors = Object(vega_util__WEBPACK_IMPORTED_MODULE_0__[\"hasOwnProperty\"])(opt, 'crossOrigin') ? opt.crossOrigin : 'anonymous';\n      if (cors != null) img.crossOrigin = cors; // attempt to load image resource\n\n      img.onload = () => decrement(loader);\n\n      img.onerror = () => decrement(loader);\n\n      img.src = url;\n      return img;\n    }).catch(e => {\n      decrement(loader);\n      return {\n        complete: false,\n        width: 0,\n        height: 0,\n        src: e && e.url || ''\n      };\n    });\n  },\n\n  ready() {\n    const loader = this;\n    return new Promise(accept => {\n      function poll(value) {\n        if (!loader.pending()) accept(value);else setTimeout(() => {\n          poll(true);\n        }, 10);\n      }\n\n      poll(false);\n    });\n  }\n\n};\n\nfunction boundStroke (bounds, item, miter) {\n  if (item.stroke && item.opacity !== 0 && item.strokeOpacity !== 0) {\n    const sw = item.strokeWidth != null ? +item.strokeWidth : 1;\n    bounds.expand(sw + (miter ? miterAdjustment(item, sw) : 0));\n  }\n\n  return bounds;\n}\n\nfunction miterAdjustment(item, strokeWidth) {\n  // TODO: more sophisticated adjustment? Or miter support in boundContext?\n  return item.strokeJoin && item.strokeJoin !== 'miter' ? 0 : strokeWidth;\n}\n\nconst circleThreshold = Tau - 1e-8;\nlet bounds, lx, ly, rot, ma, mb, mc, md;\n\nconst add = (x, y) => bounds.add(x, y);\n\nconst addL = (x, y) => add(lx = x, ly = y);\n\nconst addX = x => add(x, bounds.y1);\n\nconst addY = y => add(bounds.x1, y);\n\nconst px = (x, y) => ma * x + mc * y;\n\nconst py = (x, y) => mb * x + md * y;\n\nconst addp = (x, y) => add(px(x, y), py(x, y));\n\nconst addpL = (x, y) => addL(px(x, y), py(x, y));\n\nfunction boundContext (_, deg) {\n  bounds = _;\n\n  if (deg) {\n    rot = deg * DegToRad;\n    ma = md = Math.cos(rot);\n    mb = Math.sin(rot);\n    mc = -mb;\n  } else {\n    ma = md = 1;\n    rot = mb = mc = 0;\n  }\n\n  return context$1;\n}\nconst context$1 = {\n  beginPath() {},\n\n  closePath() {},\n\n  moveTo: addpL,\n  lineTo: addpL,\n\n  rect(x, y, w, h) {\n    if (rot) {\n      addp(x + w, y);\n      addp(x + w, y + h);\n      addp(x, y + h);\n      addpL(x, y);\n    } else {\n      add(x + w, y + h);\n      addL(x, y);\n    }\n  },\n\n  quadraticCurveTo(x1, y1, x2, y2) {\n    const px1 = px(x1, y1),\n          py1 = py(x1, y1),\n          px2 = px(x2, y2),\n          py2 = py(x2, y2);\n    quadExtrema(lx, px1, px2, addX);\n    quadExtrema(ly, py1, py2, addY);\n    addL(px2, py2);\n  },\n\n  bezierCurveTo(x1, y1, x2, y2, x3, y3) {\n    const px1 = px(x1, y1),\n          py1 = py(x1, y1),\n          px2 = px(x2, y2),\n          py2 = py(x2, y2),\n          px3 = px(x3, y3),\n          py3 = py(x3, y3);\n    cubicExtrema(lx, px1, px2, px3, addX);\n    cubicExtrema(ly, py1, py2, py3, addY);\n    addL(px3, py3);\n  },\n\n  arc(cx, cy, r, sa, ea, ccw) {\n    sa += rot;\n    ea += rot; // store last point on path\n\n    lx = r * Math.cos(ea) + cx;\n    ly = r * Math.sin(ea) + cy;\n\n    if (Math.abs(ea - sa) > circleThreshold) {\n      // treat as full circle\n      add(cx - r, cy - r);\n      add(cx + r, cy + r);\n    } else {\n      const update = a => add(r * Math.cos(a) + cx, r * Math.sin(a) + cy);\n\n      let s, i; // sample end points\n\n      update(sa);\n      update(ea); // sample interior points aligned with 90 degrees\n\n      if (ea !== sa) {\n        sa = sa % Tau;\n        if (sa < 0) sa += Tau;\n        ea = ea % Tau;\n        if (ea < 0) ea += Tau;\n\n        if (ea < sa) {\n          ccw = !ccw; // flip direction\n\n          s = sa;\n          sa = ea;\n          ea = s; // swap end-points\n        }\n\n        if (ccw) {\n          ea -= Tau;\n          s = sa - sa % HalfPi;\n\n          for (i = 0; i < 4 && s > ea; ++i, s -= HalfPi) update(s);\n        } else {\n          s = sa - sa % HalfPi + HalfPi;\n\n          for (i = 0; i < 4 && s < ea; ++i, s = s + HalfPi) update(s);\n        }\n      }\n    }\n  }\n\n};\n\nfunction quadExtrema(x0, x1, x2, cb) {\n  const t = (x0 - x1) / (x0 + x2 - 2 * x1);\n  if (0 < t && t < 1) cb(x0 + (x1 - x0) * t);\n}\n\nfunction cubicExtrema(x0, x1, x2, x3, cb) {\n  const a = x3 - x0 + 3 * x1 - 3 * x2,\n        b = x0 + x2 - 2 * x1,\n        c = x0 - x1;\n  let t0 = 0,\n      t1 = 0,\n      r; // solve for parameter t\n\n  if (Math.abs(a) > Epsilon) {\n    // quadratic equation\n    r = b * b + c * a;\n\n    if (r >= 0) {\n      r = Math.sqrt(r);\n      t0 = (-b + r) / a;\n      t1 = (-b - r) / a;\n    }\n  } else {\n    // linear equation\n    t0 = 0.5 * c / b;\n  } // calculate position\n\n\n  if (0 < t0 && t0 < 1) cb(cubic(t0, x0, x1, x2, x3));\n  if (0 < t1 && t1 < 1) cb(cubic(t1, x0, x1, x2, x3));\n}\n\nfunction cubic(t, x0, x1, x2, x3) {\n  const s = 1 - t,\n        s2 = s * s,\n        t2 = t * t;\n  return s2 * s * x0 + 3 * s2 * t * x1 + 3 * s * t2 * x2 + t2 * t * x3;\n}\n\nvar context = (context = Object(vega_canvas__WEBPACK_IMPORTED_MODULE_3__[\"canvas\"])(1, 1)) ? context.getContext('2d') : null;\n\nconst b = new Bounds();\nfunction intersectPath(draw) {\n  return function (item, brush) {\n    // rely on (inaccurate) bounds intersection if no context\n    if (!context) return true; // add path to offscreen graphics context\n\n    draw(context, item); // get bounds intersection region\n\n    b.clear().union(item.bounds).intersect(brush).round();\n    const {\n      x1,\n      y1,\n      x2,\n      y2\n    } = b; // iterate over intersection region\n    // perform fine grained inclusion test\n\n    for (let y = y1; y <= y2; ++y) {\n      for (let x = x1; x <= x2; ++x) {\n        if (context.isPointInPath(x, y)) {\n          return true;\n        }\n      }\n    } // false if no hits in intersection region\n\n\n    return false;\n  };\n}\nfunction intersectPoint(item, box) {\n  return box.contains(item.x || 0, item.y || 0);\n}\nfunction intersectRect(item, box) {\n  const x = item.x || 0,\n        y = item.y || 0,\n        w = item.width || 0,\n        h = item.height || 0;\n  return box.intersects(b.set(x, y, x + w, y + h));\n}\nfunction intersectRule(item, box) {\n  const x = item.x || 0,\n        y = item.y || 0,\n        x2 = item.x2 != null ? item.x2 : x,\n        y2 = item.y2 != null ? item.y2 : y;\n  return intersectBoxLine(box, x, y, x2, y2);\n}\nfunction intersectBoxLine(box, x, y, u, v) {\n  const {\n    x1,\n    y1,\n    x2,\n    y2\n  } = box,\n        dx = u - x,\n        dy = v - y;\n  let t0 = 0,\n      t1 = 1,\n      p,\n      q,\n      r,\n      e;\n\n  for (e = 0; e < 4; ++e) {\n    if (e === 0) {\n      p = -dx;\n      q = -(x1 - x);\n    }\n\n    if (e === 1) {\n      p = dx;\n      q = x2 - x;\n    }\n\n    if (e === 2) {\n      p = -dy;\n      q = -(y1 - y);\n    }\n\n    if (e === 3) {\n      p = dy;\n      q = y2 - y;\n    }\n\n    if (Math.abs(p) < 1e-10 && q < 0) return false;\n    r = q / p;\n\n    if (p < 0) {\n      if (r > t1) return false;else if (r > t0) t0 = r;\n    } else if (p > 0) {\n      if (r < t0) return false;else if (r < t1) t1 = r;\n    }\n  }\n\n  return true;\n}\n\nfunction blend (context, item) {\n  context.globalCompositeOperation = item.blend || 'source-over';\n}\n\nfunction value (value, dflt) {\n  return value == null ? dflt : value;\n}\n\nfunction addStops(gradient, stops) {\n  const n = stops.length;\n\n  for (let i = 0; i < n; ++i) {\n    gradient.addColorStop(stops[i].offset, stops[i].color);\n  }\n\n  return gradient;\n}\n\nfunction gradient (context, spec, bounds) {\n  const w = bounds.width(),\n        h = bounds.height();\n  let gradient;\n\n  if (spec.gradient === 'radial') {\n    gradient = context.createRadialGradient(bounds.x1 + value(spec.x1, 0.5) * w, bounds.y1 + value(spec.y1, 0.5) * h, Math.max(w, h) * value(spec.r1, 0), bounds.x1 + value(spec.x2, 0.5) * w, bounds.y1 + value(spec.y2, 0.5) * h, Math.max(w, h) * value(spec.r2, 0.5));\n  } else {\n    // linear gradient\n    const x1 = value(spec.x1, 0),\n          y1 = value(spec.y1, 0),\n          x2 = value(spec.x2, 1),\n          y2 = value(spec.y2, 0);\n\n    if (x1 === x2 || y1 === y2 || w === h) {\n      // axis aligned: use normal gradient\n      gradient = context.createLinearGradient(bounds.x1 + x1 * w, bounds.y1 + y1 * h, bounds.x1 + x2 * w, bounds.y1 + y2 * h);\n    } else {\n      // not axis aligned: render gradient into a pattern (#2365)\n      // this allows us to use normalized bounding box coordinates\n      const image = Object(vega_canvas__WEBPACK_IMPORTED_MODULE_3__[\"canvas\"])(Math.ceil(w), Math.ceil(h)),\n            ictx = image.getContext('2d');\n      ictx.scale(w, h);\n      ictx.fillStyle = addStops(ictx.createLinearGradient(x1, y1, x2, y2), spec.stops);\n      ictx.fillRect(0, 0, w, h);\n      return context.createPattern(image, 'no-repeat');\n    }\n  }\n\n  return addStops(gradient, spec.stops);\n}\n\nfunction color (context, item, value) {\n  return isGradient(value) ? gradient(context, value, item.bounds) : value;\n}\n\nfunction fill (context, item, opacity) {\n  opacity *= item.fillOpacity == null ? 1 : item.fillOpacity;\n\n  if (opacity > 0) {\n    context.globalAlpha = opacity;\n    context.fillStyle = color(context, item, item.fill);\n    return true;\n  } else {\n    return false;\n  }\n}\n\nvar Empty = [];\nfunction stroke (context, item, opacity) {\n  var lw = (lw = item.strokeWidth) != null ? lw : 1;\n  if (lw <= 0) return false;\n  opacity *= item.strokeOpacity == null ? 1 : item.strokeOpacity;\n\n  if (opacity > 0) {\n    context.globalAlpha = opacity;\n    context.strokeStyle = color(context, item, item.stroke);\n    context.lineWidth = lw;\n    context.lineCap = item.strokeCap || 'butt';\n    context.lineJoin = item.strokeJoin || 'miter';\n    context.miterLimit = item.strokeMiterLimit || 10;\n\n    if (context.setLineDash) {\n      context.setLineDash(item.strokeDash || Empty);\n      context.lineDashOffset = item.strokeDashOffset || 0;\n    }\n\n    return true;\n  } else {\n    return false;\n  }\n}\n\nfunction compare(a, b) {\n  return a.zindex - b.zindex || a.index - b.index;\n}\n\nfunction zorder(scene) {\n  if (!scene.zdirty) return scene.zitems;\n  var items = scene.items,\n      output = [],\n      item,\n      i,\n      n;\n\n  for (i = 0, n = items.length; i < n; ++i) {\n    item = items[i];\n    item.index = i;\n    if (item.zindex) output.push(item);\n  }\n\n  scene.zdirty = false;\n  return scene.zitems = output.sort(compare);\n}\nfunction visit(scene, visitor) {\n  var items = scene.items,\n      i,\n      n;\n  if (!items || !items.length) return;\n  const zitems = zorder(scene);\n\n  if (zitems && zitems.length) {\n    for (i = 0, n = items.length; i < n; ++i) {\n      if (!items[i].zindex) visitor(items[i]);\n    }\n\n    items = zitems;\n  }\n\n  for (i = 0, n = items.length; i < n; ++i) {\n    visitor(items[i]);\n  }\n}\nfunction pickVisit(scene, visitor) {\n  var items = scene.items,\n      hit,\n      i;\n  if (!items || !items.length) return null;\n  const zitems = zorder(scene);\n  if (zitems && zitems.length) items = zitems;\n\n  for (i = items.length; --i >= 0;) {\n    if (hit = visitor(items[i])) return hit;\n  }\n\n  if (items === zitems) {\n    for (items = scene.items, i = items.length; --i >= 0;) {\n      if (!items[i].zindex) {\n        if (hit = visitor(items[i])) return hit;\n      }\n    }\n  }\n\n  return null;\n}\n\nfunction drawAll(path) {\n  return function (context, scene, bounds) {\n    visit(scene, item => {\n      if (!bounds || bounds.intersects(item.bounds)) {\n        drawPath(path, context, item, item);\n      }\n    });\n  };\n}\nfunction drawOne(path) {\n  return function (context, scene, bounds) {\n    if (scene.items.length && (!bounds || bounds.intersects(scene.bounds))) {\n      drawPath(path, context, scene.items[0], scene.items);\n    }\n  };\n}\n\nfunction drawPath(path, context, item, items) {\n  var opacity = item.opacity == null ? 1 : item.opacity;\n  if (opacity === 0) return;\n  if (path(context, items)) return;\n  blend(context, item);\n\n  if (item.fill && fill(context, item, opacity)) {\n    context.fill();\n  }\n\n  if (item.stroke && stroke(context, item, opacity)) {\n    context.stroke();\n  }\n}\n\nfunction pick$1(test) {\n  test = test || vega_util__WEBPACK_IMPORTED_MODULE_0__[\"truthy\"];\n  return function (context, scene, x, y, gx, gy) {\n    x *= context.pixelRatio;\n    y *= context.pixelRatio;\n    return pickVisit(scene, item => {\n      const b = item.bounds; // first hit test against bounding box\n\n      if (b && !b.contains(gx, gy) || !b) return; // if in bounding box, perform more careful test\n\n      if (test(context, item, x, y, gx, gy)) return item;\n    });\n  };\n}\nfunction hitPath(path, filled) {\n  return function (context, o, x, y) {\n    var item = Array.isArray(o) ? o[0] : o,\n        fill = filled == null ? item.fill : filled,\n        stroke = item.stroke && context.isPointInStroke,\n        lw,\n        lc;\n\n    if (stroke) {\n      lw = item.strokeWidth;\n      lc = item.strokeCap;\n      context.lineWidth = lw != null ? lw : 1;\n      context.lineCap = lc != null ? lc : 'butt';\n    }\n\n    return path(context, o) ? false : fill && context.isPointInPath(x, y) || stroke && context.isPointInStroke(x, y);\n  };\n}\nfunction pickPath(path) {\n  return pick$1(hitPath(path));\n}\n\nfunction translate(x, y) {\n  return 'translate(' + x + ',' + y + ')';\n}\nfunction rotate(a) {\n  return 'rotate(' + a + ')';\n}\nfunction scale(scaleX, scaleY) {\n  return 'scale(' + scaleX + ',' + scaleY + ')';\n}\nfunction translateItem(item) {\n  return translate(item.x || 0, item.y || 0);\n}\nfunction rotateItem(item) {\n  return translate(item.x || 0, item.y || 0) + (item.angle ? ' ' + rotate(item.angle) : '');\n}\nfunction transformItem(item) {\n  return translate(item.x || 0, item.y || 0) + (item.angle ? ' ' + rotate(item.angle) : '') + (item.scaleX || item.scaleY ? ' ' + scale(item.scaleX || 1, item.scaleY || 1) : '');\n}\n\nfunction markItemPath (type, shape, isect) {\n  function attr(emit, item) {\n    emit('transform', rotateItem(item));\n    emit('d', shape(null, item));\n  }\n\n  function bound(bounds, item) {\n    shape(boundContext(bounds, item.angle), item);\n    return boundStroke(bounds, item).translate(item.x || 0, item.y || 0);\n  }\n\n  function draw(context, item) {\n    var x = item.x || 0,\n        y = item.y || 0,\n        a = item.angle || 0;\n    context.translate(x, y);\n    if (a) context.rotate(a *= DegToRad);\n    context.beginPath();\n    shape(context, item);\n    if (a) context.rotate(-a);\n    context.translate(-x, -y);\n  }\n\n  return {\n    type: type,\n    tag: 'path',\n    nested: false,\n    attr: attr,\n    bound: bound,\n    draw: drawAll(draw),\n    pick: pickPath(draw),\n    isect: isect || intersectPath(draw)\n  };\n}\n\nvar arc = markItemPath('arc', arc$1);\n\nfunction pickArea(a, p) {\n  var v = a[0].orient === 'horizontal' ? p[1] : p[0],\n      z = a[0].orient === 'horizontal' ? 'y' : 'x',\n      i = a.length,\n      min = +Infinity,\n      hit,\n      d;\n\n  while (--i >= 0) {\n    if (a[i].defined === false) continue;\n    d = Math.abs(a[i][z] - v);\n\n    if (d < min) {\n      min = d;\n      hit = a[i];\n    }\n  }\n\n  return hit;\n}\nfunction pickLine(a, p) {\n  var t = Math.pow(a[0].strokeWidth || 1, 2),\n      i = a.length,\n      dx,\n      dy,\n      dd;\n\n  while (--i >= 0) {\n    if (a[i].defined === false) continue;\n    dx = a[i].x - p[0];\n    dy = a[i].y - p[1];\n    dd = dx * dx + dy * dy;\n    if (dd < t) return a[i];\n  }\n\n  return null;\n}\nfunction pickTrail(a, p) {\n  var i = a.length,\n      dx,\n      dy,\n      dd;\n\n  while (--i >= 0) {\n    if (a[i].defined === false) continue;\n    dx = a[i].x - p[0];\n    dy = a[i].y - p[1];\n    dd = dx * dx + dy * dy;\n    dx = a[i].size || 1;\n    if (dd < dx * dx) return a[i];\n  }\n\n  return null;\n}\n\nfunction markMultiItemPath (type, shape, tip) {\n  function attr(emit, item) {\n    var items = item.mark.items;\n    if (items.length) emit('d', shape(null, items));\n  }\n\n  function bound(bounds, mark) {\n    var items = mark.items;\n\n    if (items.length === 0) {\n      return bounds;\n    } else {\n      shape(boundContext(bounds), items);\n      return boundStroke(bounds, items[0]);\n    }\n  }\n\n  function draw(context, items) {\n    context.beginPath();\n    shape(context, items);\n  }\n\n  const hit = hitPath(draw);\n\n  function pick(context, scene, x, y, gx, gy) {\n    var items = scene.items,\n        b = scene.bounds;\n\n    if (!items || !items.length || b && !b.contains(gx, gy)) {\n      return null;\n    }\n\n    x *= context.pixelRatio;\n    y *= context.pixelRatio;\n    return hit(context, items, x, y) ? items[0] : null;\n  }\n\n  return {\n    type: type,\n    tag: 'path',\n    nested: true,\n    attr: attr,\n    bound: bound,\n    draw: drawOne(draw),\n    pick: pick,\n    isect: intersectPoint,\n    tip: tip\n  };\n}\n\nvar area = markMultiItemPath('area', area$1, pickArea);\n\nfunction clip (context, scene) {\n  var clip = scene.clip;\n  context.save();\n\n  if (Object(vega_util__WEBPACK_IMPORTED_MODULE_0__[\"isFunction\"])(clip)) {\n    context.beginPath();\n    clip(context);\n    context.clip();\n  } else {\n    clipGroup(context, scene.group);\n  }\n}\nfunction clipGroup(context, group) {\n  context.beginPath();\n  hasCornerRadius(group) ? rectangle(context, group, 0, 0) : context.rect(0, 0, group.width || 0, group.height || 0);\n  context.clip();\n}\n\nfunction offset$1(item) {\n  const sw = value(item.strokeWidth, 1);\n  return item.strokeOffset != null ? item.strokeOffset : item.stroke && sw > 0.5 && sw < 1.5 ? 0.5 - Math.abs(sw - 1) : 0;\n}\n\nfunction attr$5(emit, item) {\n  emit('transform', translateItem(item));\n}\n\nfunction emitRectangle(emit, item) {\n  const off = offset$1(item);\n  emit('d', rectangle(null, item, off, off));\n}\n\nfunction background(emit, item) {\n  emit('class', 'background');\n  emit('aria-hidden', true);\n  emitRectangle(emit, item);\n}\n\nfunction foreground(emit, item) {\n  emit('class', 'foreground');\n  emit('aria-hidden', true);\n\n  if (item.strokeForeground) {\n    emitRectangle(emit, item);\n  } else {\n    emit('d', '');\n  }\n}\n\nfunction content(emit, item, renderer) {\n  const url = item.clip ? clip$1(renderer, item, item) : null;\n  emit('clip-path', url);\n}\n\nfunction bound$5(bounds, group) {\n  if (!group.clip && group.items) {\n    const items = group.items,\n          m = items.length;\n\n    for (let j = 0; j < m; ++j) {\n      bounds.union(items[j].bounds);\n    }\n  }\n\n  if ((group.clip || group.width || group.height) && !group.noBound) {\n    bounds.add(0, 0).add(group.width || 0, group.height || 0);\n  }\n\n  boundStroke(bounds, group);\n  return bounds.translate(group.x || 0, group.y || 0);\n}\n\nfunction rectanglePath(context, group, x, y) {\n  const off = offset$1(group);\n  context.beginPath();\n  rectangle(context, group, (x || 0) + off, (y || 0) + off);\n}\n\nconst hitBackground = hitPath(rectanglePath);\nconst hitForeground = hitPath(rectanglePath, false);\nconst hitCorner = hitPath(rectanglePath, true);\n\nfunction draw$4(context, scene, bounds) {\n  visit(scene, group => {\n    const gx = group.x || 0,\n          gy = group.y || 0,\n          fore = group.strokeForeground,\n          opacity = group.opacity == null ? 1 : group.opacity; // draw group background\n\n    if ((group.stroke || group.fill) && opacity) {\n      rectanglePath(context, group, gx, gy);\n      blend(context, group);\n\n      if (group.fill && fill(context, group, opacity)) {\n        context.fill();\n      }\n\n      if (group.stroke && !fore && stroke(context, group, opacity)) {\n        context.stroke();\n      }\n    } // setup graphics context, set clip and bounds\n\n\n    context.save();\n    context.translate(gx, gy);\n    if (group.clip) clipGroup(context, group);\n    if (bounds) bounds.translate(-gx, -gy); // draw group contents\n\n    visit(group, item => {\n      this.draw(context, item, bounds);\n    }); // restore graphics context\n\n    if (bounds) bounds.translate(gx, gy);\n    context.restore(); // draw group foreground\n\n    if (fore && group.stroke && opacity) {\n      rectanglePath(context, group, gx, gy);\n      blend(context, group);\n\n      if (stroke(context, group, opacity)) {\n        context.stroke();\n      }\n    }\n  });\n}\n\nfunction pick(context, scene, x, y, gx, gy) {\n  if (scene.bounds && !scene.bounds.contains(gx, gy) || !scene.items) {\n    return null;\n  }\n\n  const cx = x * context.pixelRatio,\n        cy = y * context.pixelRatio;\n  return pickVisit(scene, group => {\n    let hit, dx, dy; // first hit test bounding box\n\n    const b = group.bounds;\n    if (b && !b.contains(gx, gy)) return; // passed bounds check, test rectangular clip\n\n    dx = group.x || 0;\n    dy = group.y || 0;\n    const dw = dx + (group.width || 0),\n          dh = dy + (group.height || 0),\n          c = group.clip;\n    if (c && (gx < dx || gx > dw || gy < dy || gy > dh)) return; // adjust coordinate system\n\n    context.save();\n    context.translate(dx, dy);\n    dx = gx - dx;\n    dy = gy - dy; // test background for rounded corner clip\n\n    if (c && hasCornerRadius(group) && !hitCorner(context, group, cx, cy)) {\n      context.restore();\n      return null;\n    }\n\n    const fore = group.strokeForeground,\n          ix = scene.interactive !== false; // hit test against group foreground\n\n    if (ix && fore && group.stroke && hitForeground(context, group, cx, cy)) {\n      context.restore();\n      return group;\n    } // hit test against contained marks\n\n\n    hit = pickVisit(group, mark => pickMark(mark, dx, dy) ? this.pick(mark, x, y, dx, dy) : null); // hit test against group background\n\n    if (!hit && ix && (group.fill || !fore && group.stroke) && hitBackground(context, group, cx, cy)) {\n      hit = group;\n    } // restore state and return\n\n\n    context.restore();\n    return hit || null;\n  });\n}\n\nfunction pickMark(mark, x, y) {\n  return (mark.interactive !== false || mark.marktype === 'group') && mark.bounds && mark.bounds.contains(x, y);\n}\n\nvar group = {\n  type: 'group',\n  tag: 'g',\n  nested: false,\n  attr: attr$5,\n  bound: bound$5,\n  draw: draw$4,\n  pick: pick,\n  isect: intersectRect,\n  content: content,\n  background: background,\n  foreground: foreground\n};\n\nvar metadata = {\n  'xmlns': 'http://www.w3.org/2000/svg',\n  'xmlns:xlink': 'http://www.w3.org/1999/xlink',\n  'version': '1.1'\n};\n\nfunction getImage(item, renderer) {\n  var image = item.image;\n\n  if (!image || item.url && item.url !== image.url) {\n    image = {\n      complete: false,\n      width: 0,\n      height: 0\n    };\n    renderer.loadImage(item.url).then(image => {\n      item.image = image;\n      item.image.url = item.url;\n    });\n  }\n\n  return image;\n}\n\nfunction imageWidth(item, image) {\n  return item.width != null ? item.width : !image || !image.width ? 0 : item.aspect !== false && item.height ? item.height * image.width / image.height : image.width;\n}\n\nfunction imageHeight(item, image) {\n  return item.height != null ? item.height : !image || !image.height ? 0 : item.aspect !== false && item.width ? item.width * image.height / image.width : image.height;\n}\n\nfunction imageXOffset(align, w) {\n  return align === 'center' ? w / 2 : align === 'right' ? w : 0;\n}\n\nfunction imageYOffset(baseline, h) {\n  return baseline === 'middle' ? h / 2 : baseline === 'bottom' ? h : 0;\n}\n\nfunction attr$4(emit, item, renderer) {\n  const img = getImage(item, renderer),\n        w = imageWidth(item, img),\n        h = imageHeight(item, img),\n        x = (item.x || 0) - imageXOffset(item.align, w),\n        y = (item.y || 0) - imageYOffset(item.baseline, h),\n        i = !img.src && img.toDataURL ? img.toDataURL() : img.src || '';\n  emit('href', i, metadata['xmlns:xlink'], 'xlink:href');\n  emit('transform', translate(x, y));\n  emit('width', w);\n  emit('height', h);\n  emit('preserveAspectRatio', item.aspect === false ? 'none' : 'xMidYMid');\n}\n\nfunction bound$4(bounds, item) {\n  const img = item.image,\n        w = imageWidth(item, img),\n        h = imageHeight(item, img),\n        x = (item.x || 0) - imageXOffset(item.align, w),\n        y = (item.y || 0) - imageYOffset(item.baseline, h);\n  return bounds.set(x, y, x + w, y + h);\n}\n\nfunction draw$3(context, scene, bounds) {\n  visit(scene, item => {\n    if (bounds && !bounds.intersects(item.bounds)) return; // bounds check\n\n    const img = getImage(item, this);\n    let w = imageWidth(item, img);\n    let h = imageHeight(item, img);\n    if (w === 0 || h === 0) return; // early exit\n\n    let x = (item.x || 0) - imageXOffset(item.align, w),\n        y = (item.y || 0) - imageYOffset(item.baseline, h),\n        opacity,\n        ar0,\n        ar1,\n        t;\n\n    if (item.aspect !== false) {\n      ar0 = img.width / img.height;\n      ar1 = item.width / item.height;\n\n      if (ar0 === ar0 && ar1 === ar1 && ar0 !== ar1) {\n        if (ar1 < ar0) {\n          t = w / ar0;\n          y += (h - t) / 2;\n          h = t;\n        } else {\n          t = h * ar0;\n          x += (w - t) / 2;\n          w = t;\n        }\n      }\n    }\n\n    if (img.complete || img.toDataURL) {\n      blend(context, item);\n      context.globalAlpha = (opacity = item.opacity) != null ? opacity : 1;\n      context.imageSmoothingEnabled = item.smooth !== false;\n      context.drawImage(img, x, y, w, h);\n    }\n  });\n}\n\nvar image = {\n  type: 'image',\n  tag: 'image',\n  nested: false,\n  attr: attr$4,\n  bound: bound$4,\n  draw: draw$3,\n  pick: pick$1(),\n  isect: vega_util__WEBPACK_IMPORTED_MODULE_0__[\"truthy\"],\n  // bounds check is sufficient\n  get: getImage,\n  xOffset: imageXOffset,\n  yOffset: imageYOffset\n};\n\nvar line = markMultiItemPath('line', line$1, pickLine);\n\nfunction attr$3(emit, item) {\n  var sx = item.scaleX || 1,\n      sy = item.scaleY || 1;\n\n  if (sx !== 1 || sy !== 1) {\n    emit('vector-effect', 'non-scaling-stroke');\n  }\n\n  emit('transform', transformItem(item));\n  emit('d', item.path);\n}\n\nfunction path$1(context, item) {\n  var path = item.path;\n  if (path == null) return true;\n  var x = item.x || 0,\n      y = item.y || 0,\n      sx = item.scaleX || 1,\n      sy = item.scaleY || 1,\n      a = (item.angle || 0) * DegToRad,\n      cache = item.pathCache;\n\n  if (!cache || cache.path !== path) {\n    (item.pathCache = cache = pathParse(path)).path = path;\n  }\n\n  if (a && context.rotate && context.translate) {\n    context.translate(x, y);\n    context.rotate(a);\n    pathRender(context, cache, 0, 0, sx, sy);\n    context.rotate(-a);\n    context.translate(-x, -y);\n  } else {\n    pathRender(context, cache, x, y, sx, sy);\n  }\n}\n\nfunction bound$3(bounds, item) {\n  return path$1(boundContext(bounds, item.angle), item) ? bounds.set(0, 0, 0, 0) : boundStroke(bounds, item, true);\n}\n\nvar path$2 = {\n  type: 'path',\n  tag: 'path',\n  nested: false,\n  attr: attr$3,\n  bound: bound$3,\n  draw: drawAll(path$1),\n  pick: pickPath(path$1),\n  isect: intersectPath(path$1)\n};\n\nfunction attr$2(emit, item) {\n  emit('d', rectangle(null, item));\n}\n\nfunction bound$2(bounds, item) {\n  var x, y;\n  return boundStroke(bounds.set(x = item.x || 0, y = item.y || 0, x + item.width || 0, y + item.height || 0), item);\n}\n\nfunction draw$2(context, item) {\n  context.beginPath();\n  rectangle(context, item);\n}\n\nvar rect = {\n  type: 'rect',\n  tag: 'path',\n  nested: false,\n  attr: attr$2,\n  bound: bound$2,\n  draw: drawAll(draw$2),\n  pick: pickPath(draw$2),\n  isect: intersectRect\n};\n\nfunction attr$1(emit, item) {\n  emit('transform', translateItem(item));\n  emit('x2', item.x2 != null ? item.x2 - (item.x || 0) : 0);\n  emit('y2', item.y2 != null ? item.y2 - (item.y || 0) : 0);\n}\n\nfunction bound$1(bounds, item) {\n  var x1, y1;\n  return boundStroke(bounds.set(x1 = item.x || 0, y1 = item.y || 0, item.x2 != null ? item.x2 : x1, item.y2 != null ? item.y2 : y1), item);\n}\n\nfunction path(context, item, opacity) {\n  var x1, y1, x2, y2;\n\n  if (item.stroke && stroke(context, item, opacity)) {\n    x1 = item.x || 0;\n    y1 = item.y || 0;\n    x2 = item.x2 != null ? item.x2 : x1;\n    y2 = item.y2 != null ? item.y2 : y1;\n    context.beginPath();\n    context.moveTo(x1, y1);\n    context.lineTo(x2, y2);\n    return true;\n  }\n\n  return false;\n}\n\nfunction draw$1(context, scene, bounds) {\n  visit(scene, item => {\n    if (bounds && !bounds.intersects(item.bounds)) return; // bounds check\n\n    var opacity = item.opacity == null ? 1 : item.opacity;\n\n    if (opacity && path(context, item, opacity)) {\n      blend(context, item);\n      context.stroke();\n    }\n  });\n}\n\nfunction hit$1(context, item, x, y) {\n  if (!context.isPointInStroke) return false;\n  return path(context, item, 1) && context.isPointInStroke(x, y);\n}\n\nvar rule = {\n  type: 'rule',\n  tag: 'line',\n  nested: false,\n  attr: attr$1,\n  bound: bound$1,\n  draw: draw$1,\n  pick: pick$1(hit$1),\n  isect: intersectRule\n};\n\nvar shape = markItemPath('shape', shape$1);\n\nvar symbol = markItemPath('symbol', symbol$1, intersectPoint);\n\nconst widthCache = Object(vega_util__WEBPACK_IMPORTED_MODULE_0__[\"lruCache\"])();\nvar textMetrics = {\n  height: fontSize,\n  measureWidth: measureWidth,\n  estimateWidth: estimateWidth,\n  width: estimateWidth,\n  canvas: useCanvas\n};\nuseCanvas(true);\n\nfunction useCanvas(use) {\n  textMetrics.width = use && context ? measureWidth : estimateWidth;\n} // make simple estimate if no canvas is available\n\n\nfunction estimateWidth(item, text) {\n  return _estimateWidth(textValue(item, text), fontSize(item));\n}\n\nfunction _estimateWidth(text, currentFontHeight) {\n  return ~~(0.8 * text.length * currentFontHeight);\n} // measure text width if canvas is available\n\n\nfunction measureWidth(item, text) {\n  return fontSize(item) <= 0 || !(text = textValue(item, text)) ? 0 : _measureWidth(text, font(item));\n}\n\nfunction _measureWidth(text, currentFont) {\n  const key = `(${currentFont}) ${text}`;\n  let width = widthCache.get(key);\n\n  if (width === undefined) {\n    context.font = currentFont;\n    width = context.measureText(text).width;\n    widthCache.set(key, width);\n  }\n\n  return width;\n}\n\nfunction fontSize(item) {\n  return item.fontSize != null ? +item.fontSize || 0 : 11;\n}\nfunction lineHeight(item) {\n  return item.lineHeight != null ? item.lineHeight : fontSize(item) + 2;\n}\n\nfunction lineArray(_) {\n  return Object(vega_util__WEBPACK_IMPORTED_MODULE_0__[\"isArray\"])(_) ? _.length > 1 ? _ : _[0] : _;\n}\n\nfunction textLines(item) {\n  return lineArray(item.lineBreak && item.text && !Object(vega_util__WEBPACK_IMPORTED_MODULE_0__[\"isArray\"])(item.text) ? item.text.split(item.lineBreak) : item.text);\n}\nfunction multiLineOffset(item) {\n  const tl = textLines(item);\n  return (Object(vega_util__WEBPACK_IMPORTED_MODULE_0__[\"isArray\"])(tl) ? tl.length - 1 : 0) * lineHeight(item);\n}\nfunction textValue(item, line) {\n  const text = line == null ? '' : (line + '').trim();\n  return item.limit > 0 && text.length ? truncate(item, text) : text;\n}\n\nfunction widthGetter(item) {\n  if (textMetrics.width === measureWidth) {\n    // we are using canvas\n    const currentFont = font(item);\n    return text => _measureWidth(text, currentFont);\n  } else {\n    // we are relying on estimates\n    const currentFontHeight = fontSize(item);\n    return text => _estimateWidth(text, currentFontHeight);\n  }\n}\n\nfunction truncate(item, text) {\n  var limit = +item.limit,\n      width = widthGetter(item);\n  if (width(text) < limit) return text;\n  var ellipsis = item.ellipsis || '\\u2026',\n      rtl = item.dir === 'rtl',\n      lo = 0,\n      hi = text.length,\n      mid;\n  limit -= width(ellipsis);\n\n  if (rtl) {\n    while (lo < hi) {\n      mid = lo + hi >>> 1;\n      if (width(text.slice(mid)) > limit) lo = mid + 1;else hi = mid;\n    }\n\n    return ellipsis + text.slice(lo);\n  } else {\n    while (lo < hi) {\n      mid = 1 + (lo + hi >>> 1);\n      if (width(text.slice(0, mid)) < limit) lo = mid;else hi = mid - 1;\n    }\n\n    return text.slice(0, lo) + ellipsis;\n  }\n}\n\nfunction fontFamily(item, quote) {\n  var font = item.font;\n  return (quote && font ? String(font).replace(/\"/g, '\\'') : font) || 'sans-serif';\n}\nfunction font(item, quote) {\n  return '' + (item.fontStyle ? item.fontStyle + ' ' : '') + (item.fontVariant ? item.fontVariant + ' ' : '') + (item.fontWeight ? item.fontWeight + ' ' : '') + fontSize(item) + 'px ' + fontFamily(item, quote);\n}\nfunction offset(item) {\n  // perform our own font baseline calculation\n  // why? not all browsers support SVG 1.1 'alignment-baseline' :(\n  // this also ensures consistent layout across renderers\n  var baseline = item.baseline,\n      h = fontSize(item);\n  return Math.round(baseline === 'top' ? 0.79 * h : baseline === 'middle' ? 0.30 * h : baseline === 'bottom' ? -0.21 * h : baseline === 'line-top' ? 0.29 * h + 0.5 * lineHeight(item) : baseline === 'line-bottom' ? 0.29 * h - 0.5 * lineHeight(item) : 0);\n}\n\nconst textAlign = {\n  'left': 'start',\n  'center': 'middle',\n  'right': 'end'\n};\nconst tempBounds = new Bounds();\n\nfunction anchorPoint(item) {\n  var x = item.x || 0,\n      y = item.y || 0,\n      r = item.radius || 0,\n      t;\n\n  if (r) {\n    t = (item.theta || 0) - HalfPi;\n    x += r * Math.cos(t);\n    y += r * Math.sin(t);\n  }\n\n  tempBounds.x1 = x;\n  tempBounds.y1 = y;\n  return tempBounds;\n}\n\nfunction attr(emit, item) {\n  var dx = item.dx || 0,\n      dy = (item.dy || 0) + offset(item),\n      p = anchorPoint(item),\n      x = p.x1,\n      y = p.y1,\n      a = item.angle || 0,\n      t;\n  emit('text-anchor', textAlign[item.align] || 'start');\n\n  if (a) {\n    t = translate(x, y) + ' ' + rotate(a);\n    if (dx || dy) t += ' ' + translate(dx, dy);\n  } else {\n    t = translate(x + dx, y + dy);\n  }\n\n  emit('transform', t);\n}\n\nfunction bound(bounds, item, mode) {\n  var h = textMetrics.height(item),\n      a = item.align,\n      p = anchorPoint(item),\n      x = p.x1,\n      y = p.y1,\n      dx = item.dx || 0,\n      dy = (item.dy || 0) + offset(item) - Math.round(0.8 * h),\n      // use 4/5 offset\n  tl = textLines(item),\n      w; // get dimensions\n\n  if (Object(vega_util__WEBPACK_IMPORTED_MODULE_0__[\"isArray\"])(tl)) {\n    // multi-line text\n    h += lineHeight(item) * (tl.length - 1);\n    w = tl.reduce((w, t) => Math.max(w, textMetrics.width(item, t)), 0);\n  } else {\n    // single-line text\n    w = textMetrics.width(item, tl);\n  } // horizontal alignment\n\n\n  if (a === 'center') {\n    dx -= w / 2;\n  } else if (a === 'right') {\n    dx -= w;\n  } else ;\n\n  bounds.set(dx += x, dy += y, dx + w, dy + h);\n\n  if (item.angle && !mode) {\n    bounds.rotate(item.angle * DegToRad, x, y);\n  } else if (mode === 2) {\n    return bounds.rotatedPoints(item.angle * DegToRad, x, y);\n  }\n\n  return bounds;\n}\n\nfunction draw(context, scene, bounds) {\n  visit(scene, item => {\n    var opacity = item.opacity == null ? 1 : item.opacity,\n        p,\n        x,\n        y,\n        i,\n        lh,\n        tl,\n        str;\n    if (bounds && !bounds.intersects(item.bounds) || // bounds check\n    opacity === 0 || item.fontSize <= 0 || item.text == null || item.text.length === 0) return;\n    context.font = font(item);\n    context.textAlign = item.align || 'left';\n    p = anchorPoint(item);\n    x = p.x1, y = p.y1;\n\n    if (item.angle) {\n      context.save();\n      context.translate(x, y);\n      context.rotate(item.angle * DegToRad);\n      x = y = 0; // reset x, y\n    }\n\n    x += item.dx || 0;\n    y += (item.dy || 0) + offset(item);\n    tl = textLines(item);\n    blend(context, item);\n\n    if (Object(vega_util__WEBPACK_IMPORTED_MODULE_0__[\"isArray\"])(tl)) {\n      lh = lineHeight(item);\n\n      for (i = 0; i < tl.length; ++i) {\n        str = textValue(item, tl[i]);\n\n        if (item.fill && fill(context, item, opacity)) {\n          context.fillText(str, x, y);\n        }\n\n        if (item.stroke && stroke(context, item, opacity)) {\n          context.strokeText(str, x, y);\n        }\n\n        y += lh;\n      }\n    } else {\n      str = textValue(item, tl);\n\n      if (item.fill && fill(context, item, opacity)) {\n        context.fillText(str, x, y);\n      }\n\n      if (item.stroke && stroke(context, item, opacity)) {\n        context.strokeText(str, x, y);\n      }\n    }\n\n    if (item.angle) context.restore();\n  });\n}\n\nfunction hit(context, item, x, y, gx, gy) {\n  if (item.fontSize <= 0) return false;\n  if (!item.angle) return true; // bounds sufficient if no rotation\n  // project point into space of unrotated bounds\n\n  var p = anchorPoint(item),\n      ax = p.x1,\n      ay = p.y1,\n      b = bound(tempBounds, item, 1),\n      a = -item.angle * DegToRad,\n      cos = Math.cos(a),\n      sin = Math.sin(a),\n      px = cos * gx - sin * gy + (ax - cos * ax + sin * ay),\n      py = sin * gx + cos * gy + (ay - sin * ax - cos * ay);\n  return b.contains(px, py);\n}\n\nfunction intersectText(item, box) {\n  const p = bound(tempBounds, item, 2);\n  return intersectBoxLine(box, p[0], p[1], p[2], p[3]) || intersectBoxLine(box, p[0], p[1], p[4], p[5]) || intersectBoxLine(box, p[4], p[5], p[6], p[7]) || intersectBoxLine(box, p[2], p[3], p[6], p[7]);\n}\n\nvar text = {\n  type: 'text',\n  tag: 'text',\n  nested: false,\n  attr: attr,\n  bound: bound,\n  draw: draw,\n  pick: pick$1(hit),\n  isect: intersectText\n};\n\nvar trail = markMultiItemPath('trail', trail$1, pickTrail);\n\nvar Marks = {\n  arc: arc,\n  area: area,\n  group: group,\n  image: image,\n  line: line,\n  path: path$2,\n  rect: rect,\n  rule: rule,\n  shape: shape,\n  symbol: symbol,\n  text: text,\n  trail: trail\n};\n\nfunction boundItem (item, func, opt) {\n  var type = Marks[item.mark.marktype],\n      bound = func || type.bound;\n  if (type.nested) item = item.mark;\n  return bound(item.bounds || (item.bounds = new Bounds()), item, opt);\n}\n\nvar DUMMY = {\n  mark: null\n};\nfunction boundMark (mark, bounds, opt) {\n  var type = Marks[mark.marktype],\n      bound = type.bound,\n      items = mark.items,\n      hasItems = items && items.length,\n      i,\n      n,\n      item,\n      b;\n\n  if (type.nested) {\n    if (hasItems) {\n      item = items[0];\n    } else {\n      // no items, fake it\n      DUMMY.mark = mark;\n      item = DUMMY;\n    }\n\n    b = boundItem(item, bound, opt);\n    bounds = bounds && bounds.union(b) || b;\n    return bounds;\n  }\n\n  bounds = bounds || mark.bounds && mark.bounds.clear() || new Bounds();\n\n  if (hasItems) {\n    for (i = 0, n = items.length; i < n; ++i) {\n      bounds.union(boundItem(items[i], bound, opt));\n    }\n  }\n\n  return mark.bounds = bounds;\n}\n\nconst keys = ['marktype', 'name', 'role', 'interactive', 'clip', 'items', 'zindex', 'x', 'y', 'width', 'height', 'align', 'baseline', // layout\n'fill', 'fillOpacity', 'opacity', 'blend', // fill\n'stroke', 'strokeOpacity', 'strokeWidth', 'strokeCap', // stroke\n'strokeDash', 'strokeDashOffset', // stroke dash\n'strokeForeground', 'strokeOffset', // group\n'startAngle', 'endAngle', 'innerRadius', 'outerRadius', // arc\n'cornerRadius', 'padAngle', // arc, rect\n'cornerRadiusTopLeft', 'cornerRadiusTopRight', // rect, group\n'cornerRadiusBottomLeft', 'cornerRadiusBottomRight', 'interpolate', 'tension', 'orient', 'defined', // area, line\n'url', 'aspect', 'smooth', // image\n'path', 'scaleX', 'scaleY', // path\n'x2', 'y2', // rule\n'size', 'shape', // symbol\n'text', 'angle', 'theta', 'radius', 'dir', 'dx', 'dy', // text\n'ellipsis', 'limit', 'lineBreak', 'lineHeight', 'font', 'fontSize', 'fontWeight', 'fontStyle', 'fontVariant', // font\n'description', 'aria', 'ariaRole', 'ariaRoleDescription' // aria\n];\nfunction sceneToJSON(scene, indent) {\n  return JSON.stringify(scene, keys, indent);\n}\nfunction sceneFromJSON(json) {\n  const scene = typeof json === 'string' ? JSON.parse(json) : json;\n  return initialize(scene);\n}\n\nfunction initialize(scene) {\n  var type = scene.marktype,\n      items = scene.items,\n      parent,\n      i,\n      n;\n\n  if (items) {\n    for (i = 0, n = items.length; i < n; ++i) {\n      parent = type ? 'mark' : 'group';\n      items[i][parent] = scene;\n      if (items[i].zindex) items[i][parent].zdirty = true;\n      if ('group' === (type || parent)) initialize(items[i]);\n    }\n  }\n\n  if (type) boundMark(scene);\n  return scene;\n}\n\nfunction Scenegraph(scene) {\n  if (arguments.length) {\n    this.root = sceneFromJSON(scene);\n  } else {\n    this.root = createMark({\n      marktype: 'group',\n      name: 'root',\n      role: 'frame'\n    });\n    this.root.items = [new GroupItem(this.root)];\n  }\n}\nScenegraph.prototype = {\n  toJSON(indent) {\n    return sceneToJSON(this.root, indent || 0);\n  },\n\n  mark(markdef, group, index) {\n    group = group || this.root.items[0];\n    const mark = createMark(markdef, group);\n    group.items[index] = mark;\n    if (mark.zindex) mark.group.zdirty = true;\n    return mark;\n  }\n\n};\n\nfunction createMark(def, group) {\n  const mark = {\n    bounds: new Bounds(),\n    clip: !!def.clip,\n    group: group,\n    interactive: def.interactive === false ? false : true,\n    items: [],\n    marktype: def.marktype,\n    name: def.name || undefined,\n    role: def.role || undefined,\n    zindex: def.zindex || 0\n  }; // add accessibility properties if defined\n\n  if (def.aria != null) {\n    mark.aria = def.aria;\n  }\n\n  if (def.description) {\n    mark.description = def.description;\n  }\n\n  return mark;\n}\n\n// create a new DOM element\nfunction domCreate(doc, tag, ns) {\n  if (!doc && typeof document !== 'undefined' && document.createElement) {\n    doc = document;\n  }\n\n  return doc ? ns ? doc.createElementNS(ns, tag) : doc.createElement(tag) : null;\n} // find first child element with matching tag\n\nfunction domFind(el, tag) {\n  tag = tag.toLowerCase();\n  var nodes = el.childNodes,\n      i = 0,\n      n = nodes.length;\n\n  for (; i < n; ++i) if (nodes[i].tagName.toLowerCase() === tag) {\n    return nodes[i];\n  }\n} // retrieve child element at given index\n// create & insert if doesn't exist or if tags do not match\n\nfunction domChild(el, index, tag, ns) {\n  var a = el.childNodes[index],\n      b;\n\n  if (!a || a.tagName.toLowerCase() !== tag.toLowerCase()) {\n    b = a || null;\n    a = domCreate(el.ownerDocument, tag, ns);\n    el.insertBefore(a, b);\n  }\n\n  return a;\n} // remove all child elements at or above the given index\n\nfunction domClear(el, index) {\n  var nodes = el.childNodes,\n      curr = nodes.length;\n\n  while (curr > index) el.removeChild(nodes[--curr]);\n\n  return el;\n} // generate css class name for mark\n\nfunction cssClass(mark) {\n  return 'mark-' + mark.marktype + (mark.role ? ' role-' + mark.role : '') + (mark.name ? ' ' + mark.name : '');\n}\n\nfunction point (event, el) {\n  const rect = el.getBoundingClientRect();\n  return [event.clientX - rect.left - (el.clientLeft || 0), event.clientY - rect.top - (el.clientTop || 0)];\n}\n\nfunction resolveItem (item, event, el, origin) {\n  var mark = item && item.mark,\n      mdef,\n      p;\n\n  if (mark && (mdef = Marks[mark.marktype]).tip) {\n    p = point(event, el);\n    p[0] -= origin[0];\n    p[1] -= origin[1];\n\n    while (item = item.mark.group) {\n      p[0] -= item.x || 0;\n      p[1] -= item.y || 0;\n    }\n\n    item = mdef.tip(mark.items, p);\n  }\n\n  return item;\n}\n\n/**\n * Create a new Handler instance.\n * @param {object} [customLoader] - Optional loader instance for\n *   href URL sanitization. If not specified, a standard loader\n *   instance will be generated.\n * @param {function} [customTooltip] - Optional tooltip handler\n *   function for custom tooltip display.\n * @constructor\n */\n\nfunction Handler(customLoader, customTooltip) {\n  this._active = null;\n  this._handlers = {};\n  this._loader = customLoader || Object(vega_loader__WEBPACK_IMPORTED_MODULE_4__[\"loader\"])();\n  this._tooltip = customTooltip || defaultTooltip;\n} // The default tooltip display handler.\n// Sets the HTML title attribute on the visualization container.\n\nfunction defaultTooltip(handler, event, item, value) {\n  handler.element().setAttribute('title', value || '');\n}\n\nHandler.prototype = {\n  /**\n   * Initialize a new Handler instance.\n   * @param {DOMElement} el - The containing DOM element for the display.\n   * @param {Array<number>} origin - The origin of the display, in pixels.\n   *   The coordinate system will be translated to this point.\n   * @param {object} [obj] - Optional context object that should serve as\n   *   the \"this\" context for event callbacks.\n   * @return {Handler} - This handler instance.\n   */\n  initialize(el, origin, obj) {\n    this._el = el;\n    this._obj = obj || null;\n    return this.origin(origin);\n  },\n\n  /**\n   * Returns the parent container element for a visualization.\n   * @return {DOMElement} - The containing DOM element.\n   */\n  element() {\n    return this._el;\n  },\n\n  /**\n   * Returns the scene element (e.g., canvas or SVG) of the visualization\n   * Subclasses must override if the first child is not the scene element.\n   * @return {DOMElement} - The scene (e.g., canvas or SVG) element.\n   */\n  canvas() {\n    return this._el && this._el.firstChild;\n  },\n\n  /**\n   * Get / set the origin coordinates of the visualization.\n   */\n  origin(origin) {\n    if (arguments.length) {\n      this._origin = origin || [0, 0];\n      return this;\n    } else {\n      return this._origin.slice();\n    }\n  },\n\n  /**\n   * Get / set the scenegraph root.\n   */\n  scene(scene) {\n    if (!arguments.length) return this._scene;\n    this._scene = scene;\n    return this;\n  },\n\n  /**\n   * Add an event handler. Subclasses should override this method.\n   */\n  on()\n  /*type, handler*/\n  {},\n\n  /**\n   * Remove an event handler. Subclasses should override this method.\n   */\n  off()\n  /*type, handler*/\n  {},\n\n  /**\n   * Utility method for finding the array index of an event handler.\n   * @param {Array} h - An array of registered event handlers.\n   * @param {string} type - The event type.\n   * @param {function} handler - The event handler instance to find.\n   * @return {number} - The handler's array index or -1 if not registered.\n   */\n  _handlerIndex(h, type, handler) {\n    for (let i = h ? h.length : 0; --i >= 0;) {\n      if (h[i].type === type && (!handler || h[i].handler === handler)) {\n        return i;\n      }\n    }\n\n    return -1;\n  },\n\n  /**\n   * Returns an array with registered event handlers.\n   * @param {string} [type] - The event type to query. Any annotations\n   *   are ignored; for example, for the argument \"click.foo\", \".foo\" will\n   *   be ignored and the method returns all \"click\" handlers. If type is\n   *   null or unspecified, this method returns handlers for all types.\n   * @return {Array} - A new array containing all registered event handlers.\n   */\n  handlers(type) {\n    const h = this._handlers,\n          a = [];\n\n    if (type) {\n      a.push(...h[this.eventName(type)]);\n    } else {\n      for (const k in h) {\n        a.push(...h[k]);\n      }\n    }\n\n    return a;\n  },\n\n  /**\n   * Parses an event name string to return the specific event type.\n   * For example, given \"click.foo\" returns \"click\"\n   * @param {string} name - The input event type string.\n   * @return {string} - A string with the event type only.\n   */\n  eventName(name) {\n    const i = name.indexOf('.');\n    return i < 0 ? name : name.slice(0, i);\n  },\n\n  /**\n   * Handle hyperlink navigation in response to an item.href value.\n   * @param {Event} event - The event triggering hyperlink navigation.\n   * @param {Item} item - The scenegraph item.\n   * @param {string} href - The URL to navigate to.\n   */\n  handleHref(event, item, href) {\n    this._loader.sanitize(href, {\n      context: 'href'\n    }).then(opt => {\n      const e = new MouseEvent(event.type, event),\n            a = domCreate(null, 'a');\n\n      for (const name in opt) a.setAttribute(name, opt[name]);\n\n      a.dispatchEvent(e);\n    }).catch(() => {\n      /* do nothing */\n    });\n  },\n\n  /**\n   * Handle tooltip display in response to an item.tooltip value.\n   * @param {Event} event - The event triggering tooltip display.\n   * @param {Item} item - The scenegraph item.\n   * @param {boolean} show - A boolean flag indicating whether\n   *   to show or hide a tooltip for the given item.\n   */\n  handleTooltip(event, item, show) {\n    if (item && item.tooltip != null) {\n      item = resolveItem(item, event, this.canvas(), this._origin);\n      const value = show && item && item.tooltip || null;\n\n      this._tooltip.call(this._obj, this, event, item, value);\n    }\n  },\n\n  /**\n   * Returns the size of a scenegraph item and its position relative\n   * to the viewport.\n   * @param {Item} item - The scenegraph item.\n   * @return {object} - A bounding box object (compatible with the\n   *   DOMRect type) consisting of x, y, width, heigh, top, left,\n   *   right, and bottom properties.\n   */\n  getItemBoundingClientRect(item) {\n    const el = this.canvas();\n    if (!el) return;\n    const rect = el.getBoundingClientRect(),\n          origin = this._origin,\n          bounds = item.bounds,\n          width = bounds.width(),\n          height = bounds.height();\n    let x = bounds.x1 + origin[0] + rect.left,\n        y = bounds.y1 + origin[1] + rect.top; // translate coordinate for each parent group\n\n    while (item.mark && (item = item.mark.group)) {\n      x += item.x || 0;\n      y += item.y || 0;\n    } // return DOMRect-compatible bounding box\n\n\n    return {\n      x,\n      y,\n      width,\n      height,\n      left: x,\n      top: y,\n      right: x + width,\n      bottom: y + height\n    };\n  }\n\n};\n\n/**\n * Create a new Renderer instance.\n * @param {object} [loader] - Optional loader instance for\n *   image and href URL sanitization. If not specified, a\n *   standard loader instance will be generated.\n * @constructor\n */\n\nfunction Renderer(loader) {\n  this._el = null;\n  this._bgcolor = null;\n  this._loader = new ResourceLoader(loader);\n}\nRenderer.prototype = {\n  /**\n   * Initialize a new Renderer instance.\n   * @param {DOMElement} el - The containing DOM element for the display.\n   * @param {number} width - The coordinate width of the display, in pixels.\n   * @param {number} height - The coordinate height of the display, in pixels.\n   * @param {Array<number>} origin - The origin of the display, in pixels.\n   *   The coordinate system will be translated to this point.\n   * @param {number} [scaleFactor=1] - Optional scaleFactor by which to multiply\n   *   the width and height to determine the final pixel size.\n   * @return {Renderer} - This renderer instance.\n   */\n  initialize(el, width, height, origin, scaleFactor) {\n    this._el = el;\n    return this.resize(width, height, origin, scaleFactor);\n  },\n\n  /**\n   * Returns the parent container element for a visualization.\n   * @return {DOMElement} - The containing DOM element.\n   */\n  element() {\n    return this._el;\n  },\n\n  /**\n   * Returns the scene element (e.g., canvas or SVG) of the visualization\n   * Subclasses must override if the first child is not the scene element.\n   * @return {DOMElement} - The scene (e.g., canvas or SVG) element.\n   */\n  canvas() {\n    return this._el && this._el.firstChild;\n  },\n\n  /**\n   * Get / set the background color.\n   */\n  background(bgcolor) {\n    if (arguments.length === 0) return this._bgcolor;\n    this._bgcolor = bgcolor;\n    return this;\n  },\n\n  /**\n   * Resize the display.\n   * @param {number} width - The new coordinate width of the display, in pixels.\n   * @param {number} height - The new coordinate height of the display, in pixels.\n   * @param {Array<number>} origin - The new origin of the display, in pixels.\n   *   The coordinate system will be translated to this point.\n   * @param {number} [scaleFactor=1] - Optional scaleFactor by which to multiply\n   *   the width and height to determine the final pixel size.\n   * @return {Renderer} - This renderer instance;\n   */\n  resize(width, height, origin, scaleFactor) {\n    this._width = width;\n    this._height = height;\n    this._origin = origin || [0, 0];\n    this._scale = scaleFactor || 1;\n    return this;\n  },\n\n  /**\n   * Report a dirty item whose bounds should be redrawn.\n   * This base class method does nothing. Subclasses that perform\n   * incremental should implement this method.\n   * @param {Item} item - The dirty item whose bounds should be redrawn.\n   */\n  dirty()\n  /*item*/\n  {},\n\n  /**\n   * Render an input scenegraph, potentially with a set of dirty items.\n   * This method will perform an immediate rendering with available resources.\n   * The renderer may also need to perform image loading to perform a complete\n   * render. This process can lead to asynchronous re-rendering of the scene\n   * after this method returns. To receive notification when rendering is\n   * complete, use the renderAsync method instead.\n   * @param {object} scene - The root mark of a scenegraph to render.\n   * @return {Renderer} - This renderer instance.\n   */\n  render(scene) {\n    const r = this; // bind arguments into a render call, and cache it\n    // this function may be subsequently called for async redraw\n\n    r._call = function () {\n      r._render(scene);\n    }; // invoke the renderer\n\n\n    r._call(); // clear the cached call for garbage collection\n    // async redraws will stash their own copy\n\n\n    r._call = null;\n    return r;\n  },\n\n  /**\n   * Internal rendering method. Renderer subclasses should override this\n   * method to actually perform rendering.\n   * @param {object} scene - The root mark of a scenegraph to render.\n   */\n  _render()\n  /*scene*/\n  {// subclasses to override\n  },\n\n  /**\n   * Asynchronous rendering method. Similar to render, but returns a Promise\n   * that resolves when all rendering is completed. Sometimes a renderer must\n   * perform image loading to get a complete rendering. The returned\n   * Promise will not resolve until this process completes.\n   * @param {object} scene - The root mark of a scenegraph to render.\n   * @return {Promise} - A Promise that resolves when rendering is complete.\n   */\n  renderAsync(scene) {\n    const r = this.render(scene);\n    return this._ready ? this._ready.then(() => r) : Promise.resolve(r);\n  },\n\n  /**\n   * Internal method for asynchronous resource loading.\n   * Proxies method calls to the ImageLoader, and tracks loading\n   * progress to invoke a re-render once complete.\n   * @param {string} method - The method name to invoke on the ImageLoader.\n   * @param {string} uri - The URI for the requested resource.\n   * @return {Promise} - A Promise that resolves to the requested resource.\n   */\n  _load(method, uri) {\n    var r = this,\n        p = r._loader[method](uri);\n\n    if (!r._ready) {\n      // re-render the scene when loading completes\n      const call = r._call;\n      r._ready = r._loader.ready().then(redraw => {\n        if (redraw) call();\n        r._ready = null;\n      });\n    }\n\n    return p;\n  },\n\n  /**\n   * Sanitize a URL to include as a hyperlink in the rendered scene.\n   * This method proxies a call to ImageLoader.sanitizeURL, but also tracks\n   * image loading progress and invokes a re-render once complete.\n   * @param {string} uri - The URI string to sanitize.\n   * @return {Promise} - A Promise that resolves to the sanitized URL.\n   */\n  sanitizeURL(uri) {\n    return this._load('sanitizeURL', uri);\n  },\n\n  /**\n   * Requests an image to include in the rendered scene.\n   * This method proxies a call to ImageLoader.loadImage, but also tracks\n   * image loading progress and invokes a re-render once complete.\n   * @param {string} uri - The URI string of the image.\n   * @return {Promise} - A Promise that resolves to the loaded Image.\n   */\n  loadImage(uri) {\n    return this._load('loadImage', uri);\n  }\n\n};\n\nconst KeyDownEvent = 'keydown';\nconst KeyPressEvent = 'keypress';\nconst KeyUpEvent = 'keyup';\nconst DragEnterEvent = 'dragenter';\nconst DragLeaveEvent = 'dragleave';\nconst DragOverEvent = 'dragover';\nconst MouseDownEvent = 'mousedown';\nconst MouseUpEvent = 'mouseup';\nconst MouseMoveEvent = 'mousemove';\nconst MouseOutEvent = 'mouseout';\nconst MouseOverEvent = 'mouseover';\nconst ClickEvent = 'click';\nconst DoubleClickEvent = 'dblclick';\nconst WheelEvent = 'wheel';\nconst MouseWheelEvent = 'mousewheel';\nconst TouchStartEvent = 'touchstart';\nconst TouchMoveEvent = 'touchmove';\nconst TouchEndEvent = 'touchend';\nconst Events = [KeyDownEvent, KeyPressEvent, KeyUpEvent, DragEnterEvent, DragLeaveEvent, DragOverEvent, MouseDownEvent, MouseUpEvent, MouseMoveEvent, MouseOutEvent, MouseOverEvent, ClickEvent, DoubleClickEvent, WheelEvent, MouseWheelEvent, TouchStartEvent, TouchMoveEvent, TouchEndEvent];\nconst TooltipShowEvent = MouseMoveEvent;\nconst TooltipHideEvent = MouseOutEvent;\nconst HrefEvent = ClickEvent;\n\nfunction CanvasHandler(loader, tooltip) {\n  Handler.call(this, loader, tooltip);\n  this._down = null;\n  this._touch = null;\n  this._first = true;\n  this._events = {};\n}\n\nconst eventBundle = type => type === TouchStartEvent || type === TouchMoveEvent || type === TouchEndEvent ? [TouchStartEvent, TouchMoveEvent, TouchEndEvent] : [type]; // lazily add listeners to the canvas as needed\n\n\nfunction eventListenerCheck(handler, type) {\n  eventBundle(type).forEach(_ => addEventListener(handler, _));\n}\n\nfunction addEventListener(handler, type) {\n  const canvas = handler.canvas();\n\n  if (canvas && !handler._events[type]) {\n    handler._events[type] = 1;\n    canvas.addEventListener(type, handler[type] ? evt => handler[type](evt) : evt => handler.fire(type, evt));\n  }\n}\n\nfunction move(moveEvent, overEvent, outEvent) {\n  return function (evt) {\n    const a = this._active,\n          p = this.pickEvent(evt);\n\n    if (p === a) {\n      // active item and picked item are the same\n      this.fire(moveEvent, evt); // fire move\n    } else {\n      // active item and picked item are different\n      if (!a || !a.exit) {\n        // fire out for prior active item\n        // suppress if active item was removed from scene\n        this.fire(outEvent, evt);\n      }\n\n      this._active = p; // set new active item\n\n      this.fire(overEvent, evt); // fire over for new active item\n\n      this.fire(moveEvent, evt); // fire move for new active item\n    }\n  };\n}\n\nfunction inactive(type) {\n  return function (evt) {\n    this.fire(type, evt);\n    this._active = null;\n  };\n}\n\nObject(vega_util__WEBPACK_IMPORTED_MODULE_0__[\"inherits\"])(CanvasHandler, Handler, {\n  initialize(el, origin, obj) {\n    this._canvas = el && domFind(el, 'canvas'); // add minimal events required for proper state management\n\n    [ClickEvent, MouseDownEvent, MouseMoveEvent, MouseOutEvent, DragLeaveEvent].forEach(type => eventListenerCheck(this, type));\n    return Handler.prototype.initialize.call(this, el, origin, obj);\n  },\n\n  // return the backing canvas instance\n  canvas() {\n    return this._canvas;\n  },\n\n  // retrieve the current canvas context\n  context() {\n    return this._canvas.getContext('2d');\n  },\n\n  // supported events\n  events: Events,\n\n  // to keep old versions of firefox happy\n  DOMMouseScroll(evt) {\n    this.fire(MouseWheelEvent, evt);\n  },\n\n  mousemove: move(MouseMoveEvent, MouseOverEvent, MouseOutEvent),\n  dragover: move(DragOverEvent, DragEnterEvent, DragLeaveEvent),\n  mouseout: inactive(MouseOutEvent),\n  dragleave: inactive(DragLeaveEvent),\n\n  mousedown(evt) {\n    this._down = this._active;\n    this.fire(MouseDownEvent, evt);\n  },\n\n  click(evt) {\n    if (this._down === this._active) {\n      this.fire(ClickEvent, evt);\n      this._down = null;\n    }\n  },\n\n  touchstart(evt) {\n    this._touch = this.pickEvent(evt.changedTouches[0]);\n\n    if (this._first) {\n      this._active = this._touch;\n      this._first = false;\n    }\n\n    this.fire(TouchStartEvent, evt, true);\n  },\n\n  touchmove(evt) {\n    this.fire(TouchMoveEvent, evt, true);\n  },\n\n  touchend(evt) {\n    this.fire(TouchEndEvent, evt, true);\n    this._touch = null;\n  },\n\n  // fire an event\n  fire(type, evt, touch) {\n    const a = touch ? this._touch : this._active,\n          h = this._handlers[type]; // set event type relative to scenegraph items\n\n    evt.vegaType = type; // handle hyperlinks and tooltips first\n\n    if (type === HrefEvent && a && a.href) {\n      this.handleHref(evt, a, a.href);\n    } else if (type === TooltipShowEvent || type === TooltipHideEvent) {\n      this.handleTooltip(evt, a, type !== TooltipHideEvent);\n    } // invoke all registered handlers\n\n\n    if (h) {\n      for (let i = 0, len = h.length; i < len; ++i) {\n        h[i].handler.call(this._obj, evt, a);\n      }\n    }\n  },\n\n  // add an event handler\n  on(type, handler) {\n    const name = this.eventName(type),\n          h = this._handlers,\n          i = this._handlerIndex(h[name], type, handler);\n\n    if (i < 0) {\n      eventListenerCheck(this, type);\n      (h[name] || (h[name] = [])).push({\n        type: type,\n        handler: handler\n      });\n    }\n\n    return this;\n  },\n\n  // remove an event handler\n  off(type, handler) {\n    const name = this.eventName(type),\n          h = this._handlers[name],\n          i = this._handlerIndex(h, type, handler);\n\n    if (i >= 0) {\n      h.splice(i, 1);\n    }\n\n    return this;\n  },\n\n  pickEvent(evt) {\n    const p = point(evt, this._canvas),\n          o = this._origin;\n    return this.pick(this._scene, p[0], p[1], p[0] - o[0], p[1] - o[1]);\n  },\n\n  // find the scenegraph item at the current mouse position\n  // x, y -- the absolute x, y mouse coordinates on the canvas element\n  // gx, gy -- the relative coordinates within the current group\n  pick(scene, x, y, gx, gy) {\n    const g = this.context(),\n          mark = Marks[scene.marktype];\n    return mark.pick.call(this, g, scene, x, y, gx, gy);\n  }\n\n});\n\nfunction devicePixelRatio() {\n  return typeof window !== 'undefined' ? window.devicePixelRatio || 1 : 1;\n}\n\nvar pixelRatio = devicePixelRatio();\nfunction resize (canvas, width, height, origin, scaleFactor, opt) {\n  const inDOM = typeof HTMLElement !== 'undefined' && canvas instanceof HTMLElement && canvas.parentNode != null,\n        context = canvas.getContext('2d'),\n        ratio = inDOM ? pixelRatio : scaleFactor;\n  canvas.width = width * ratio;\n  canvas.height = height * ratio;\n\n  for (const key in opt) {\n    context[key] = opt[key];\n  }\n\n  if (inDOM && ratio !== 1) {\n    canvas.style.width = width + 'px';\n    canvas.style.height = height + 'px';\n  }\n\n  context.pixelRatio = ratio;\n  context.setTransform(ratio, 0, 0, ratio, ratio * origin[0], ratio * origin[1]);\n  return canvas;\n}\n\nfunction CanvasRenderer(loader) {\n  Renderer.call(this, loader);\n  this._options = {};\n  this._redraw = false;\n  this._dirty = new Bounds();\n  this._tempb = new Bounds();\n}\nconst base$1 = Renderer.prototype;\n\nconst viewBounds = (origin, width, height) => new Bounds().set(0, 0, width, height).translate(-origin[0], -origin[1]);\n\nfunction clipToBounds(g, b, origin) {\n  // expand bounds by 1 pixel, then round to pixel boundaries\n  b.expand(1).round(); // align to base pixel grid in case of non-integer scaling (#2425)\n\n  if (g.pixelRatio % 1) {\n    b.scale(g.pixelRatio).round().scale(1 / g.pixelRatio);\n  } // to avoid artifacts translate if origin has fractional pixels\n\n\n  b.translate(-(origin[0] % 1), -(origin[1] % 1)); // set clip path\n\n  g.beginPath();\n  g.rect(b.x1, b.y1, b.width(), b.height());\n  g.clip();\n  return b;\n}\n\nObject(vega_util__WEBPACK_IMPORTED_MODULE_0__[\"inherits\"])(CanvasRenderer, Renderer, {\n  initialize(el, width, height, origin, scaleFactor, options) {\n    this._options = options || {};\n    this._canvas = this._options.externalContext ? null : Object(vega_canvas__WEBPACK_IMPORTED_MODULE_3__[\"canvas\"])(1, 1, this._options.type); // instantiate a small canvas\n\n    if (el && this._canvas) {\n      domClear(el, 0).appendChild(this._canvas);\n\n      this._canvas.setAttribute('class', 'marks');\n    } // this method will invoke resize to size the canvas appropriately\n\n\n    return base$1.initialize.call(this, el, width, height, origin, scaleFactor);\n  },\n\n  resize(width, height, origin, scaleFactor) {\n    base$1.resize.call(this, width, height, origin, scaleFactor);\n\n    if (this._canvas) {\n      // configure canvas size and transform\n      resize(this._canvas, this._width, this._height, this._origin, this._scale, this._options.context);\n    } else {\n      // external context needs to be scaled and positioned to origin\n      const ctx = this._options.externalContext;\n      if (!ctx) Object(vega_util__WEBPACK_IMPORTED_MODULE_0__[\"error\"])('CanvasRenderer is missing a valid canvas or context');\n      ctx.scale(this._scale, this._scale);\n      ctx.translate(this._origin[0], this._origin[1]);\n    }\n\n    this._redraw = true;\n    return this;\n  },\n\n  canvas() {\n    return this._canvas;\n  },\n\n  context() {\n    return this._options.externalContext || (this._canvas ? this._canvas.getContext('2d') : null);\n  },\n\n  dirty(item) {\n    const b = this._tempb.clear().union(item.bounds);\n\n    let g = item.mark.group;\n\n    while (g) {\n      b.translate(g.x || 0, g.y || 0);\n      g = g.mark.group;\n    }\n\n    this._dirty.union(b);\n  },\n\n  _render(scene) {\n    const g = this.context(),\n          o = this._origin,\n          w = this._width,\n          h = this._height,\n          db = this._dirty,\n          vb = viewBounds(o, w, h); // setup\n\n    g.save();\n    const b = this._redraw || db.empty() ? (this._redraw = false, vb.expand(1)) : clipToBounds(g, vb.intersect(db), o);\n    this.clear(-o[0], -o[1], w, h); // render\n\n    this.draw(g, scene, b); // takedown\n\n    g.restore();\n    db.clear();\n    return this;\n  },\n\n  draw(ctx, scene, bounds) {\n    const mark = Marks[scene.marktype];\n    if (scene.clip) clip(ctx, scene);\n    mark.draw.call(this, ctx, scene, bounds);\n    if (scene.clip) ctx.restore();\n  },\n\n  clear(x, y, w, h) {\n    const opt = this._options,\n          g = this.context();\n\n    if (opt.type !== 'pdf' && !opt.externalContext) {\n      // calling clear rect voids vector output in pdf mode\n      // and could remove external context content (#2615)\n      g.clearRect(x, y, w, h);\n    }\n\n    if (this._bgcolor != null) {\n      g.fillStyle = this._bgcolor;\n      g.fillRect(x, y, w, h);\n    }\n  }\n\n});\n\nfunction SVGHandler(loader, tooltip) {\n  Handler.call(this, loader, tooltip);\n  const h = this;\n  h._hrefHandler = listener(h, (evt, item) => {\n    if (item && item.href) h.handleHref(evt, item, item.href);\n  });\n  h._tooltipHandler = listener(h, (evt, item) => {\n    h.handleTooltip(evt, item, evt.type !== TooltipHideEvent);\n  });\n} // wrap an event listener for the SVG DOM\n\nconst listener = (context, handler) => evt => {\n  let item = evt.target.__data__;\n  item = Array.isArray(item) ? item[0] : item;\n  evt.vegaType = evt.type;\n  handler.call(context._obj, evt, item);\n};\n\nObject(vega_util__WEBPACK_IMPORTED_MODULE_0__[\"inherits\"])(SVGHandler, Handler, {\n  initialize(el, origin, obj) {\n    let svg = this._svg;\n\n    if (svg) {\n      svg.removeEventListener(HrefEvent, this._hrefHandler);\n      svg.removeEventListener(TooltipShowEvent, this._tooltipHandler);\n      svg.removeEventListener(TooltipHideEvent, this._tooltipHandler);\n    }\n\n    this._svg = svg = el && domFind(el, 'svg');\n\n    if (svg) {\n      svg.addEventListener(HrefEvent, this._hrefHandler);\n      svg.addEventListener(TooltipShowEvent, this._tooltipHandler);\n      svg.addEventListener(TooltipHideEvent, this._tooltipHandler);\n    }\n\n    return Handler.prototype.initialize.call(this, el, origin, obj);\n  },\n\n  canvas() {\n    return this._svg;\n  },\n\n  // add an event handler\n  on(type, handler) {\n    const name = this.eventName(type),\n          h = this._handlers,\n          i = this._handlerIndex(h[name], type, handler);\n\n    if (i < 0) {\n      const x = {\n        type,\n        handler,\n        listener: listener(this, handler)\n      };\n      (h[name] || (h[name] = [])).push(x);\n\n      if (this._svg) {\n        this._svg.addEventListener(name, x.listener);\n      }\n    }\n\n    return this;\n  },\n\n  // remove an event handler\n  off(type, handler) {\n    const name = this.eventName(type),\n          h = this._handlers[name],\n          i = this._handlerIndex(h, type, handler);\n\n    if (i >= 0) {\n      if (this._svg) {\n        this._svg.removeEventListener(name, h[i].listener);\n      }\n\n      h.splice(i, 1);\n    }\n\n    return this;\n  }\n\n});\n\nconst ARIA_HIDDEN = 'aria-hidden';\nconst ARIA_LABEL = 'aria-label';\nconst ARIA_ROLE = 'role';\nconst ARIA_ROLEDESCRIPTION = 'aria-roledescription';\nconst GRAPHICS_OBJECT = 'graphics-object';\nconst GRAPHICS_SYMBOL = 'graphics-symbol';\n\nconst bundle = (role, roledesc, label) => ({\n  [ARIA_ROLE]: role,\n  [ARIA_ROLEDESCRIPTION]: roledesc,\n  [ARIA_LABEL]: label || undefined\n}); // these roles are covered by related roles\n// we can ignore them, no need to generate attributes\n\n\nconst AriaIgnore = Object(vega_util__WEBPACK_IMPORTED_MODULE_0__[\"toSet\"])(['axis-domain', 'axis-grid', 'axis-label', 'axis-tick', 'axis-title', 'legend-band', 'legend-entry', 'legend-gradient', 'legend-label', 'legend-title', 'legend-symbol', 'title']); // aria attribute generators for guide roles\n\nconst AriaGuides = {\n  'axis': {\n    desc: 'axis',\n    caption: axisCaption\n  },\n  'legend': {\n    desc: 'legend',\n    caption: legendCaption\n  },\n  'title-text': {\n    desc: 'title',\n    caption: item => `Title text '${titleCaption(item)}'`\n  },\n  'title-subtitle': {\n    desc: 'subtitle',\n    caption: item => `Subtitle text '${titleCaption(item)}'`\n  }\n}; // aria properties generated for mark item encoding channels\n\nconst AriaEncode = {\n  ariaRole: ARIA_ROLE,\n  ariaRoleDescription: ARIA_ROLEDESCRIPTION,\n  description: ARIA_LABEL\n};\nfunction ariaItemAttributes(emit, item) {\n  const hide = item.aria === false;\n  emit(ARIA_HIDDEN, hide || undefined);\n\n  if (hide || item.description == null) {\n    for (const prop in AriaEncode) {\n      emit(AriaEncode[prop], undefined);\n    }\n  } else {\n    const type = item.mark.marktype;\n    emit(ARIA_LABEL, item.description);\n    emit(ARIA_ROLE, item.ariaRole || (type === 'group' ? GRAPHICS_OBJECT : GRAPHICS_SYMBOL));\n    emit(ARIA_ROLEDESCRIPTION, item.ariaRoleDescription || `${type} mark`);\n  }\n}\nfunction ariaMarkAttributes(mark) {\n  return mark.aria === false ? {\n    [ARIA_HIDDEN]: true\n  } : AriaIgnore[mark.role] ? null : AriaGuides[mark.role] ? ariaGuide(mark, AriaGuides[mark.role]) : ariaMark(mark);\n}\n\nfunction ariaMark(mark) {\n  const type = mark.marktype;\n  const recurse = type === 'group' || type === 'text' || mark.items.some(_ => _.description != null && _.aria !== false);\n  return bundle(recurse ? GRAPHICS_OBJECT : GRAPHICS_SYMBOL, `${type} mark container`, mark.description);\n}\n\nfunction ariaGuide(mark, opt) {\n  try {\n    const item = mark.items[0],\n          caption = opt.caption || (() => '');\n\n    return bundle(opt.role || GRAPHICS_SYMBOL, opt.desc, item.description || caption(item));\n  } catch (err) {\n    return null;\n  }\n}\n\nfunction titleCaption(item) {\n  return Object(vega_util__WEBPACK_IMPORTED_MODULE_0__[\"array\"])(item.text).join(' ');\n}\n\nfunction axisCaption(item) {\n  const datum = item.datum,\n        orient = item.orient,\n        title = datum.title ? extractTitle(item) : null,\n        ctx = item.context,\n        scale = ctx.scales[datum.scale].value,\n        locale = ctx.dataflow.locale(),\n        type = scale.type,\n        xy = orient === 'left' || orient === 'right' ? 'Y' : 'X';\n  return `${xy}-axis` + (title ? ` titled '${title}'` : '') + ` for a ${Object(vega_scale__WEBPACK_IMPORTED_MODULE_5__[\"isDiscrete\"])(type) ? 'discrete' : type} scale` + ` with ${Object(vega_scale__WEBPACK_IMPORTED_MODULE_5__[\"domainCaption\"])(locale, scale, item)}`;\n}\n\nfunction legendCaption(item) {\n  const datum = item.datum,\n        title = datum.title ? extractTitle(item) : null,\n        type = `${datum.type || ''} legend`.trim(),\n        scales = datum.scales,\n        props = Object.keys(scales),\n        ctx = item.context,\n        scale = ctx.scales[scales[props[0]]].value,\n        locale = ctx.dataflow.locale();\n  return capitalize(type) + (title ? ` titled '${title}'` : '') + ` for ${channelCaption(props)}` + ` with ${Object(vega_scale__WEBPACK_IMPORTED_MODULE_5__[\"domainCaption\"])(locale, scale, item)}`;\n}\n\nfunction extractTitle(item) {\n  try {\n    return Object(vega_util__WEBPACK_IMPORTED_MODULE_0__[\"array\"])(Object(vega_util__WEBPACK_IMPORTED_MODULE_0__[\"peek\"])(item.items).items[0].text).join(' ');\n  } catch (err) {\n    return null;\n  }\n}\n\nfunction channelCaption(props) {\n  props = props.map(p => p + (p === 'fill' || p === 'stroke' ? ' color' : ''));\n  return props.length < 2 ? props[0] : props.slice(0, -1).join(', ') + ' and ' + Object(vega_util__WEBPACK_IMPORTED_MODULE_0__[\"peek\"])(props);\n}\n\nfunction capitalize(s) {\n  return s.length ? s[0].toUpperCase() + s.slice(1) : s;\n}\n\nconst innerText = val => (val + '').replace(/&/g, '&amp;').replace(/</g, '&lt;').replace(/>/g, '&gt;');\n\nconst attrText = val => innerText(val).replace(/\"/g, '&quot;').replace(/\\t/g, '&#x9;').replace(/\\n/g, '&#xA;').replace(/\\r/g, '&#xD;');\n\nfunction markup() {\n  let buf = '',\n      outer = '',\n      inner = '';\n\n  const stack = [],\n        clear = () => outer = inner = '',\n        push = tag => {\n    if (outer) {\n      buf += `${outer}>${inner}`;\n      clear();\n    }\n\n    stack.push(tag);\n  },\n        attr = (name, value) => {\n    if (value != null) outer += ` ${name}=\"${attrText(value)}\"`;\n    return m;\n  },\n        m = {\n    open(tag, ...attrs) {\n      push(tag);\n      outer = '<' + tag;\n\n      for (const set of attrs) {\n        for (const key in set) attr(key, set[key]);\n      }\n\n      return m;\n    },\n\n    close() {\n      const tag = stack.pop();\n\n      if (outer) {\n        buf += outer + (inner ? `>${inner}</${tag}>` : '/>');\n      } else {\n        buf += `</${tag}>`;\n      }\n\n      clear();\n      return m;\n    },\n\n    attr,\n    text: t => (inner += innerText(t), m),\n    toString: () => buf\n  };\n\n  return m;\n}\nconst serializeXML = node => _serialize(markup(), node) + '';\n\nfunction _serialize(m, node) {\n  m.open(node.tagName);\n\n  if (node.hasAttributes()) {\n    const attrs = node.attributes,\n          n = attrs.length;\n\n    for (let i = 0; i < n; ++i) {\n      m.attr(attrs[i].name, attrs[i].value);\n    }\n  }\n\n  if (node.hasChildNodes()) {\n    const children = node.childNodes,\n          n = children.length;\n\n    for (let i = 0; i < n; i++) {\n      const child = children[i];\n      child.nodeType === 3 // text node\n      ? m.text(child.nodeValue) : _serialize(m, child);\n    }\n  }\n\n  return m.close();\n}\n\nconst styles = {\n  fill: 'fill',\n  fillOpacity: 'fill-opacity',\n  stroke: 'stroke',\n  strokeOpacity: 'stroke-opacity',\n  strokeWidth: 'stroke-width',\n  strokeCap: 'stroke-linecap',\n  strokeJoin: 'stroke-linejoin',\n  strokeDash: 'stroke-dasharray',\n  strokeDashOffset: 'stroke-dashoffset',\n  strokeMiterLimit: 'stroke-miterlimit',\n  opacity: 'opacity',\n  blend: 'mix-blend-mode'\n}; // ensure miter limit default is consistent with canvas (#2498)\n\nconst rootAttributes = {\n  'fill': 'none',\n  'stroke-miterlimit': 10\n};\n\nconst RootIndex = 0,\n      xmlns = 'http://www.w3.org/2000/xmlns/',\n      svgns = metadata.xmlns;\nfunction SVGRenderer(loader) {\n  Renderer.call(this, loader);\n  this._dirtyID = 0;\n  this._dirty = [];\n  this._svg = null;\n  this._root = null;\n  this._defs = null;\n}\nconst base = Renderer.prototype;\nObject(vega_util__WEBPACK_IMPORTED_MODULE_0__[\"inherits\"])(SVGRenderer, Renderer, {\n  /**\n   * Initialize a new SVGRenderer instance.\n   * @param {DOMElement} el - The containing DOM element for the display.\n   * @param {number} width - The coordinate width of the display, in pixels.\n   * @param {number} height - The coordinate height of the display, in pixels.\n   * @param {Array<number>} origin - The origin of the display, in pixels.\n   *   The coordinate system will be translated to this point.\n   * @param {number} [scaleFactor=1] - Optional scaleFactor by which to multiply\n   *   the width and height to determine the final pixel size.\n   * @return {SVGRenderer} - This renderer instance.\n   */\n  initialize(el, width, height, origin, scaleFactor) {\n    // create the svg definitions cache\n    this._defs = {};\n\n    this._clearDefs();\n\n    if (el) {\n      this._svg = domChild(el, 0, 'svg', svgns);\n\n      this._svg.setAttributeNS(xmlns, 'xmlns', svgns);\n\n      this._svg.setAttributeNS(xmlns, 'xmlns:xlink', metadata['xmlns:xlink']);\n\n      this._svg.setAttribute('version', metadata['version']);\n\n      this._svg.setAttribute('class', 'marks');\n\n      domClear(el, 1); // set the svg root group\n\n      this._root = domChild(this._svg, RootIndex, 'g', svgns);\n      setAttributes(this._root, rootAttributes); // ensure no additional child elements\n\n      domClear(this._svg, RootIndex + 1);\n    } // set background color if defined\n\n\n    this.background(this._bgcolor);\n    return base.initialize.call(this, el, width, height, origin, scaleFactor);\n  },\n\n  /**\n   * Get / set the background color.\n   */\n  background(bgcolor) {\n    if (arguments.length && this._svg) {\n      this._svg.style.setProperty('background-color', bgcolor);\n    }\n\n    return base.background.apply(this, arguments);\n  },\n\n  /**\n   * Resize the display.\n   * @param {number} width - The new coordinate width of the display, in pixels.\n   * @param {number} height - The new coordinate height of the display, in pixels.\n   * @param {Array<number>} origin - The new origin of the display, in pixels.\n   *   The coordinate system will be translated to this point.\n   * @param {number} [scaleFactor=1] - Optional scaleFactor by which to multiply\n   *   the width and height to determine the final pixel size.\n   * @return {SVGRenderer} - This renderer instance;\n   */\n  resize(width, height, origin, scaleFactor) {\n    base.resize.call(this, width, height, origin, scaleFactor);\n\n    if (this._svg) {\n      setAttributes(this._svg, {\n        width: this._width * this._scale,\n        height: this._height * this._scale,\n        viewBox: `0 0 ${this._width} ${this._height}`\n      });\n\n      this._root.setAttribute('transform', `translate(${this._origin})`);\n    }\n\n    this._dirty = [];\n    return this;\n  },\n\n  /**\n   * Returns the SVG element of the visualization.\n   * @return {DOMElement} - The SVG element.\n   */\n  canvas() {\n    return this._svg;\n  },\n\n  /**\n   * Returns an SVG text string for the rendered content,\n   * or null if this renderer is currently headless.\n   */\n  svg() {\n    const svg = this._svg,\n          bg = this._bgcolor;\n    if (!svg) return null;\n    let node;\n\n    if (bg) {\n      svg.removeAttribute('style');\n      node = domChild(svg, RootIndex, 'rect', svgns);\n      setAttributes(node, {\n        width: this._width,\n        height: this._height,\n        fill: bg\n      });\n    }\n\n    const text = serializeXML(svg);\n\n    if (bg) {\n      svg.removeChild(node);\n\n      this._svg.style.setProperty('background-color', bg);\n    }\n\n    return text;\n  },\n\n  /**\n   * Internal rendering method.\n   * @param {object} scene - The root mark of a scenegraph to render.\n   */\n  _render(scene) {\n    // perform spot updates and re-render markup\n    if (this._dirtyCheck()) {\n      if (this._dirtyAll) this._clearDefs();\n      this.mark(this._root, scene);\n      domClear(this._root, 1);\n    }\n\n    this.defs();\n    this._dirty = [];\n    ++this._dirtyID;\n    return this;\n  },\n\n  // -- Manage rendering of items marked as dirty --\n\n  /**\n   * Flag a mark item as dirty.\n   * @param {Item} item - The mark item.\n   */\n  dirty(item) {\n    if (item.dirty !== this._dirtyID) {\n      item.dirty = this._dirtyID;\n\n      this._dirty.push(item);\n    }\n  },\n\n  /**\n   * Check if a mark item is considered dirty.\n   * @param {Item} item - The mark item.\n   */\n  isDirty(item) {\n    return this._dirtyAll || !item._svg || item.dirty === this._dirtyID;\n  },\n\n  /**\n   * Internal method to check dirty status and, if possible,\n   * make targetted updates without a full rendering pass.\n   */\n  _dirtyCheck() {\n    this._dirtyAll = true;\n    const items = this._dirty;\n    if (!items.length || !this._dirtyID) return true;\n    const id = ++this._dirtyID;\n    let item, mark, type, mdef, i, n, o;\n\n    for (i = 0, n = items.length; i < n; ++i) {\n      item = items[i];\n      mark = item.mark;\n\n      if (mark.marktype !== type) {\n        // memoize mark instance lookup\n        type = mark.marktype;\n        mdef = Marks[type];\n      }\n\n      if (mark.zdirty && mark.dirty !== id) {\n        this._dirtyAll = false;\n        dirtyParents(item, id);\n        mark.items.forEach(i => {\n          i.dirty = id;\n        });\n      }\n\n      if (mark.zdirty) continue; // handle in standard drawing pass\n\n      if (item.exit) {\n        // EXIT\n        if (mdef.nested && mark.items.length) {\n          // if nested mark with remaining points, update instead\n          o = mark.items[0];\n          if (o._svg) this._update(mdef, o._svg, o);\n        } else if (item._svg) {\n          // otherwise remove from DOM\n          o = item._svg.parentNode;\n          if (o) o.removeChild(item._svg);\n        }\n\n        item._svg = null;\n        continue;\n      }\n\n      item = mdef.nested ? mark.items[0] : item;\n      if (item._update === id) continue; // already visited\n\n      if (!item._svg || !item._svg.ownerSVGElement) {\n        // ENTER\n        this._dirtyAll = false;\n        dirtyParents(item, id);\n      } else {\n        // IN-PLACE UPDATE\n        this._update(mdef, item._svg, item);\n      }\n\n      item._update = id;\n    }\n\n    return !this._dirtyAll;\n  },\n\n  // -- Construct & maintain scenegraph to SVG mapping ---\n\n  /**\n   * Render a set of mark items.\n   * @param {SVGElement} el - The parent element in the SVG tree.\n   * @param {object} scene - The mark parent to render.\n   * @param {SVGElement} prev - The previous sibling in the SVG tree.\n   */\n  mark(el, scene, prev) {\n    if (!this.isDirty(scene)) return scene._svg;\n    const svg = this._svg,\n          mdef = Marks[scene.marktype],\n          events = scene.interactive === false ? 'none' : null,\n          isGroup = mdef.tag === 'g';\n    let sibling = null,\n        i = 0;\n    const parent = bind(scene, el, prev, 'g', svg);\n    parent.setAttribute('class', cssClass(scene)); // apply aria attributes to parent container element\n\n    const aria = ariaMarkAttributes(scene);\n\n    for (const key in aria) setAttribute(parent, key, aria[key]);\n\n    if (!isGroup) {\n      setAttribute(parent, 'pointer-events', events);\n    }\n\n    setAttribute(parent, 'clip-path', scene.clip ? clip$1(this, scene, scene.group) : null);\n\n    const process = item => {\n      const dirty = this.isDirty(item),\n            node = bind(item, parent, sibling, mdef.tag, svg);\n\n      if (dirty) {\n        this._update(mdef, node, item);\n\n        if (isGroup) recurse(this, node, item);\n      }\n\n      sibling = node;\n      ++i;\n    };\n\n    if (mdef.nested) {\n      if (scene.items.length) process(scene.items[0]);\n    } else {\n      visit(scene, process);\n    }\n\n    domClear(parent, i);\n    return parent;\n  },\n\n  /**\n   * Update the attributes of an SVG element for a mark item.\n   * @param {object} mdef - The mark definition object\n   * @param {SVGElement} el - The SVG element.\n   * @param {Item} item - The mark item.\n   */\n  _update(mdef, el, item) {\n    // set dom element and values cache\n    // provides access to emit method\n    element = el;\n    values = el.__values__; // apply aria-specific properties\n\n    ariaItemAttributes(emit, item); // apply svg attributes\n\n    mdef.attr(emit, item, this); // some marks need special treatment\n\n    const extra = mark_extras[mdef.type];\n    if (extra) extra.call(this, mdef, el, item); // apply svg style attributes\n    // note: element state may have been modified by 'extra' method\n\n    if (element) this.style(element, item);\n  },\n\n  /**\n   * Update the presentation attributes of an SVG element for a mark item.\n   * @param {SVGElement} el - The SVG element.\n   * @param {Item} item - The mark item.\n   */\n  style(el, item) {\n    if (item == null) return;\n\n    for (const prop in styles) {\n      let value = prop === 'font' ? fontFamily(item) : item[prop];\n      if (value === values[prop]) continue;\n      const name = styles[prop];\n\n      if (value == null) {\n        el.removeAttribute(name);\n      } else {\n        if (isGradient(value)) {\n          value = gradientRef(value, this._defs.gradient, href());\n        }\n\n        el.setAttribute(name, value + '');\n      }\n\n      values[prop] = value;\n    }\n  },\n\n  /**\n   * Render SVG defs, as needed.\n   * Must be called *after* marks have been processed to ensure the\n   * collected state is current and accurate.\n   */\n  defs() {\n    const svg = this._svg,\n          defs = this._defs;\n    let el = defs.el,\n        index = 0;\n\n    for (const id in defs.gradient) {\n      if (!el) defs.el = el = domChild(svg, RootIndex + 1, 'defs', svgns);\n      index = updateGradient(el, defs.gradient[id], index);\n    }\n\n    for (const id in defs.clipping) {\n      if (!el) defs.el = el = domChild(svg, RootIndex + 1, 'defs', svgns);\n      index = updateClipping(el, defs.clipping[id], index);\n    } // clean-up\n\n\n    if (el) {\n      index === 0 ? (svg.removeChild(el), defs.el = null) : domClear(el, index);\n    }\n  },\n\n  /**\n   * Clear defs caches.\n   */\n  _clearDefs() {\n    const def = this._defs;\n    def.gradient = {};\n    def.clipping = {};\n  }\n\n}); // mark ancestor chain with a dirty id\n\nfunction dirtyParents(item, id) {\n  for (; item && item.dirty !== id; item = item.mark.group) {\n    item.dirty = id;\n\n    if (item.mark && item.mark.dirty !== id) {\n      item.mark.dirty = id;\n    } else return;\n  }\n} // update gradient definitions\n\n\nfunction updateGradient(el, grad, index) {\n  let i, n, stop;\n\n  if (grad.gradient === 'radial') {\n    // SVG radial gradients automatically transform to normalized bbox\n    // coordinates, in a way that is cumbersome to replicate in canvas.\n    // We wrap the radial gradient in a pattern element, allowing us to\n    // maintain a circular gradient that matches what canvas provides.\n    let pt = domChild(el, index++, 'pattern', svgns);\n    setAttributes(pt, {\n      id: patternPrefix + grad.id,\n      viewBox: '0,0,1,1',\n      width: '100%',\n      height: '100%',\n      preserveAspectRatio: 'xMidYMid slice'\n    });\n    pt = domChild(pt, 0, 'rect', svgns);\n    setAttributes(pt, {\n      width: 1,\n      height: 1,\n      fill: `url(${href()}#${grad.id})`\n    });\n    el = domChild(el, index++, 'radialGradient', svgns);\n    setAttributes(el, {\n      id: grad.id,\n      fx: grad.x1,\n      fy: grad.y1,\n      fr: grad.r1,\n      cx: grad.x2,\n      cy: grad.y2,\n      r: grad.r2\n    });\n  } else {\n    el = domChild(el, index++, 'linearGradient', svgns);\n    setAttributes(el, {\n      id: grad.id,\n      x1: grad.x1,\n      x2: grad.x2,\n      y1: grad.y1,\n      y2: grad.y2\n    });\n  }\n\n  for (i = 0, n = grad.stops.length; i < n; ++i) {\n    stop = domChild(el, i, 'stop', svgns);\n    stop.setAttribute('offset', grad.stops[i].offset);\n    stop.setAttribute('stop-color', grad.stops[i].color);\n  }\n\n  domClear(el, i);\n  return index;\n} // update clipping path definitions\n\n\nfunction updateClipping(el, clip, index) {\n  let mask;\n  el = domChild(el, index, 'clipPath', svgns);\n  el.setAttribute('id', clip.id);\n\n  if (clip.path) {\n    mask = domChild(el, 0, 'path', svgns);\n    mask.setAttribute('d', clip.path);\n  } else {\n    mask = domChild(el, 0, 'rect', svgns);\n    setAttributes(mask, {\n      x: 0,\n      y: 0,\n      width: clip.width,\n      height: clip.height\n    });\n  }\n\n  domClear(el, 1);\n  return index + 1;\n} // Recursively process group contents.\n\n\nfunction recurse(renderer, el, group) {\n  el = el.lastChild.previousSibling;\n  let prev,\n      idx = 0;\n  visit(group, item => {\n    prev = renderer.mark(el, item, prev);\n    ++idx;\n  }); // remove any extraneous DOM elements\n\n  domClear(el, 1 + idx);\n} // Bind a scenegraph item to an SVG DOM element.\n// Create new SVG elements as needed.\n\n\nfunction bind(item, el, sibling, tag, svg) {\n  let node = item._svg,\n      doc; // create a new dom node if needed\n\n  if (!node) {\n    doc = el.ownerDocument;\n    node = domCreate(doc, tag, svgns);\n    item._svg = node;\n\n    if (item.mark) {\n      node.__data__ = item;\n      node.__values__ = {\n        fill: 'default'\n      }; // if group, create background, content, and foreground elements\n\n      if (tag === 'g') {\n        const bg = domCreate(doc, 'path', svgns);\n        node.appendChild(bg);\n        bg.__data__ = item;\n        const cg = domCreate(doc, 'g', svgns);\n        node.appendChild(cg);\n        cg.__data__ = item;\n        const fg = domCreate(doc, 'path', svgns);\n        node.appendChild(fg);\n        fg.__data__ = item;\n        fg.__values__ = {\n          fill: 'default'\n        };\n      }\n    }\n  } // (re-)insert if (a) not contained in SVG or (b) sibling order has changed\n\n\n  if (node.ownerSVGElement !== svg || siblingCheck(node, sibling)) {\n    el.insertBefore(node, sibling ? sibling.nextSibling : el.firstChild);\n  }\n\n  return node;\n} // check if two nodes are ordered siblings\n\n\nfunction siblingCheck(node, sibling) {\n  return node.parentNode && node.parentNode.childNodes.length > 1 && node.previousSibling != sibling; // treat null/undefined the same\n} // -- Set attributes & styles on SVG elements ---\n\n\nlet element = null,\n    // temp var for current SVG element\nvalues = null; // temp var for current values hash\n// Extra configuration for certain mark types\n\nconst mark_extras = {\n  group(mdef, el, item) {\n    const fg = element = el.childNodes[2];\n    values = fg.__values__;\n    mdef.foreground(emit, item, this);\n    values = el.__values__; // use parent's values hash\n\n    element = el.childNodes[1];\n    mdef.content(emit, item, this);\n    const bg = element = el.childNodes[0];\n    mdef.background(emit, item, this);\n    const value = item.mark.interactive === false ? 'none' : null;\n\n    if (value !== values.events) {\n      setAttribute(fg, 'pointer-events', value);\n      setAttribute(bg, 'pointer-events', value);\n      values.events = value;\n    }\n\n    if (item.strokeForeground && item.stroke) {\n      const fill = item.fill;\n      setAttribute(fg, 'display', null); // set style of background\n\n      this.style(bg, item);\n      setAttribute(bg, 'stroke', null); // set style of foreground\n\n      if (fill) item.fill = null;\n      values = fg.__values__;\n      this.style(fg, item);\n      if (fill) item.fill = fill; // leave element null to prevent downstream styling\n\n      element = null;\n    } else {\n      // ensure foreground is ignored\n      setAttribute(fg, 'display', 'none');\n    }\n  },\n\n  image(mdef, el, item) {\n    if (item.smooth === false) {\n      setStyle(el, 'image-rendering', 'optimizeSpeed');\n      setStyle(el, 'image-rendering', 'pixelated');\n    } else {\n      setStyle(el, 'image-rendering', null);\n    }\n  },\n\n  text(mdef, el, item) {\n    const tl = textLines(item);\n    let key, value, doc, lh;\n\n    if (Object(vega_util__WEBPACK_IMPORTED_MODULE_0__[\"isArray\"])(tl)) {\n      // multi-line text\n      value = tl.map(_ => textValue(item, _));\n      key = value.join('\\n'); // content cache key\n\n      if (key !== values.text) {\n        domClear(el, 0);\n        doc = el.ownerDocument;\n        lh = lineHeight(item);\n        value.forEach((t, i) => {\n          const ts = domCreate(doc, 'tspan', svgns);\n          ts.__data__ = item; // data binding\n\n          ts.textContent = t;\n\n          if (i) {\n            ts.setAttribute('x', 0);\n            ts.setAttribute('dy', lh);\n          }\n\n          el.appendChild(ts);\n        });\n        values.text = key;\n      }\n    } else {\n      // single-line text\n      value = textValue(item, tl);\n\n      if (value !== values.text) {\n        el.textContent = value;\n        values.text = value;\n      }\n    }\n\n    setAttribute(el, 'font-family', fontFamily(item));\n    setAttribute(el, 'font-size', fontSize(item) + 'px');\n    setAttribute(el, 'font-style', item.fontStyle);\n    setAttribute(el, 'font-variant', item.fontVariant);\n    setAttribute(el, 'font-weight', item.fontWeight);\n  }\n\n};\n\nfunction emit(name, value, ns) {\n  // early exit if value is unchanged\n  if (value === values[name]) return; // use appropriate method given namespace (ns)\n\n  if (ns) {\n    setAttributeNS(element, name, value, ns);\n  } else {\n    setAttribute(element, name, value);\n  } // note current value for future comparison\n\n\n  values[name] = value;\n}\n\nfunction setStyle(el, name, value) {\n  if (value !== values[name]) {\n    if (value == null) {\n      el.style.removeProperty(name);\n    } else {\n      el.style.setProperty(name, value + '');\n    }\n\n    values[name] = value;\n  }\n}\n\nfunction setAttributes(el, attrs) {\n  for (const key in attrs) {\n    setAttribute(el, key, attrs[key]);\n  }\n}\n\nfunction setAttribute(el, name, value) {\n  if (value != null) {\n    // if value is provided, update DOM attribute\n    el.setAttribute(name, value);\n  } else {\n    // else remove DOM attribute\n    el.removeAttribute(name);\n  }\n}\n\nfunction setAttributeNS(el, name, value, ns) {\n  if (value != null) {\n    // if value is provided, update DOM attribute\n    el.setAttributeNS(ns, name, value);\n  } else {\n    // else remove DOM attribute\n    el.removeAttributeNS(ns, name);\n  }\n}\n\nfunction href() {\n  let loc;\n  return typeof window === 'undefined' ? '' : (loc = window.location).hash ? loc.href.slice(0, -loc.hash.length) : loc.href;\n}\n\nfunction SVGStringRenderer(loader) {\n  Renderer.call(this, loader);\n  this._text = null;\n  this._defs = {\n    gradient: {},\n    clipping: {}\n  };\n}\nObject(vega_util__WEBPACK_IMPORTED_MODULE_0__[\"inherits\"])(SVGStringRenderer, Renderer, {\n  /**\n   * Returns the rendered SVG text string,\n   * or null if rendering has not yet occurred.\n   */\n  svg() {\n    return this._text;\n  },\n\n  /**\n   * Internal rendering method.\n   * @param {object} scene - The root mark of a scenegraph to render.\n   */\n  _render(scene) {\n    const m = markup(); // svg tag\n\n    m.open('svg', Object(vega_util__WEBPACK_IMPORTED_MODULE_0__[\"extend\"])({}, metadata, {\n      class: 'marks',\n      width: this._width * this._scale,\n      height: this._height * this._scale,\n      viewBox: `0 0 ${this._width} ${this._height}`\n    })); // background, if defined\n\n    const bg = this._bgcolor;\n\n    if (bg && bg !== 'transparent' && bg !== 'none') {\n      m.open('rect', {\n        width: this._width,\n        height: this._height,\n        fill: bg\n      }).close();\n    } // root content group\n\n\n    m.open('g', rootAttributes, {\n      transform: 'translate(' + this._origin + ')'\n    });\n    this.mark(m, scene);\n    m.close(); // </g>\n    // defs\n\n    this.defs(m); // get SVG text string\n\n    this._text = m.close() + '';\n    return this;\n  },\n\n  /**\n   * Render a set of mark items.\n   * @param {object} m - The markup context.\n   * @param {object} scene - The mark parent to render.\n   */\n  mark(m, scene) {\n    const mdef = Marks[scene.marktype],\n          tag = mdef.tag,\n          attrList = [ariaItemAttributes, mdef.attr]; // render opening group tag\n\n    m.open('g', {\n      'class': cssClass(scene),\n      'clip-path': scene.clip ? clip$1(this, scene, scene.group) : null\n    }, ariaMarkAttributes(scene), {\n      'pointer-events': tag !== 'g' && scene.interactive === false ? 'none' : null\n    }); // render contained elements\n\n    const process = item => {\n      const href = this.href(item);\n      if (href) m.open('a', href);\n      m.open(tag, this.attr(scene, item, attrList, tag !== 'g' ? tag : null));\n\n      if (tag === 'text') {\n        const tl = textLines(item);\n\n        if (Object(vega_util__WEBPACK_IMPORTED_MODULE_0__[\"isArray\"])(tl)) {\n          // multi-line text\n          const attrs = {\n            x: 0,\n            dy: lineHeight(item)\n          };\n\n          for (let i = 0; i < tl.length; ++i) {\n            m.open('tspan', i ? attrs : null).text(textValue(item, tl[i])).close();\n          }\n        } else {\n          // single-line text\n          m.text(textValue(item, tl));\n        }\n      } else if (tag === 'g') {\n        const fore = item.strokeForeground,\n              fill = item.fill,\n              stroke = item.stroke;\n\n        if (fore && stroke) {\n          item.stroke = null;\n        }\n\n        m.open('path', this.attr(scene, item, mdef.background, 'bgrect')).close(); // recurse for group content\n\n        m.open('g', this.attr(scene, item, mdef.content));\n        visit(item, scene => this.mark(m, scene));\n        m.close();\n\n        if (fore && stroke) {\n          if (fill) item.fill = null;\n          item.stroke = stroke;\n          m.open('path', this.attr(scene, item, mdef.foreground, 'bgrect')).close();\n          if (fill) item.fill = fill;\n        } else {\n          m.open('path', this.attr(scene, item, mdef.foreground, 'bgfore')).close();\n        }\n      }\n\n      m.close(); // </tag>\n\n      if (href) m.close(); // </a>\n    };\n\n    if (mdef.nested) {\n      if (scene.items && scene.items.length) process(scene.items[0]);\n    } else {\n      visit(scene, process);\n    } // render closing group tag\n\n\n    return m.close(); // </g>\n  },\n\n  /**\n   * Get href attributes for a hyperlinked mark item.\n   * @param {Item} item - The mark item.\n   */\n  href(item) {\n    const href = item.href;\n    let attr;\n\n    if (href) {\n      if (attr = this._hrefs && this._hrefs[href]) {\n        return attr;\n      } else {\n        this.sanitizeURL(href).then(attr => {\n          // rewrite to use xlink namespace\n          attr['xlink:href'] = attr.href;\n          attr.href = null;\n          (this._hrefs || (this._hrefs = {}))[href] = attr;\n        });\n      }\n    }\n\n    return null;\n  },\n\n  /**\n   * Get an object of SVG attributes for a mark item.\n   * @param {object} scene - The mark parent.\n   * @param {Item} item - The mark item.\n   * @param {array|function} attrs - One or more attribute emitters.\n   * @param {string} tag - The tag being rendered.\n   */\n  attr(scene, item, attrs, tag) {\n    const object = {},\n          emit = (name, value, ns, prefixed) => {\n      object[prefixed || name] = value;\n    }; // apply mark specific attributes\n\n\n    if (Array.isArray(attrs)) {\n      attrs.forEach(fn => fn(emit, item, this));\n    } else {\n      attrs(emit, item, this);\n    } // apply style attributes\n\n\n    if (tag) {\n      style(object, item, scene, tag, this._defs);\n    }\n\n    return object;\n  },\n\n  /**\n   * Render SVG defs, as needed.\n   * Must be called *after* marks have been processed to ensure the\n   * collected state is current and accurate.\n   * @param {object} m - The markup context.\n   */\n  defs(m) {\n    const gradient = this._defs.gradient,\n          clipping = this._defs.clipping,\n          count = Object.keys(gradient).length + Object.keys(clipping).length;\n    if (count === 0) return; // nothing to do\n\n    m.open('defs');\n\n    for (const id in gradient) {\n      const def = gradient[id],\n            stops = def.stops;\n\n      if (def.gradient === 'radial') {\n        // SVG radial gradients automatically transform to normalized bbox\n        // coordinates, in a way that is cumbersome to replicate in canvas.\n        // We wrap the radial gradient in a pattern element, allowing us to\n        // maintain a circular gradient that matches what canvas provides.\n        m.open('pattern', {\n          id: patternPrefix + id,\n          viewBox: '0,0,1,1',\n          width: '100%',\n          height: '100%',\n          preserveAspectRatio: 'xMidYMid slice'\n        });\n        m.open('rect', {\n          width: '1',\n          height: '1',\n          fill: 'url(#' + id + ')'\n        }).close();\n        m.close(); // </pattern>\n\n        m.open('radialGradient', {\n          id: id,\n          fx: def.x1,\n          fy: def.y1,\n          fr: def.r1,\n          cx: def.x2,\n          cy: def.y2,\n          r: def.r2\n        });\n      } else {\n        m.open('linearGradient', {\n          id: id,\n          x1: def.x1,\n          x2: def.x2,\n          y1: def.y1,\n          y2: def.y2\n        });\n      }\n\n      for (let i = 0; i < stops.length; ++i) {\n        m.open('stop', {\n          offset: stops[i].offset,\n          'stop-color': stops[i].color\n        }).close();\n      }\n\n      m.close();\n    }\n\n    for (const id in clipping) {\n      const def = clipping[id];\n      m.open('clipPath', {\n        id: id\n      });\n\n      if (def.path) {\n        m.open('path', {\n          d: def.path\n        }).close();\n      } else {\n        m.open('rect', {\n          x: 0,\n          y: 0,\n          width: def.width,\n          height: def.height\n        }).close();\n      }\n\n      m.close();\n    }\n\n    m.close();\n  }\n\n}); // Helper function for attr for style presentation attributes\n\nfunction style(s, item, scene, tag, defs) {\n  if (item == null) return s;\n\n  if (tag === 'bgrect' && scene.interactive === false) {\n    s['pointer-events'] = 'none';\n  }\n\n  if (tag === 'bgfore') {\n    if (scene.interactive === false) {\n      s['pointer-events'] = 'none';\n    }\n\n    s.display = 'none';\n    if (item.fill !== null) return s;\n  }\n\n  if (tag === 'image' && item.smooth === false) {\n    s.style = 'image-rendering: optimizeSpeed; image-rendering: pixelated;';\n  }\n\n  if (tag === 'text') {\n    s['font-family'] = fontFamily(item);\n    s['font-size'] = fontSize(item) + 'px';\n    s['font-style'] = item.fontStyle;\n    s['font-variant'] = item.fontVariant;\n    s['font-weight'] = item.fontWeight;\n  }\n\n  for (const prop in styles) {\n    let value = item[prop];\n    const name = styles[prop];\n\n    if (value === 'transparent' && (name === 'fill' || name === 'stroke')) ; else if (value != null) {\n      if (isGradient(value)) {\n        value = gradientRef(value, defs.gradient, '');\n      }\n\n      s[name] = value;\n    }\n  }\n\n  return s;\n}\n\nconst Canvas = 'canvas';\nconst PNG = 'png';\nconst SVG = 'svg';\nconst None = 'none';\nconst RenderType = {\n  Canvas: Canvas,\n  PNG: PNG,\n  SVG: SVG,\n  None: None\n};\nconst modules = {};\nmodules[Canvas] = modules[PNG] = {\n  renderer: CanvasRenderer,\n  headless: CanvasRenderer,\n  handler: CanvasHandler\n};\nmodules[SVG] = {\n  renderer: SVGRenderer,\n  headless: SVGStringRenderer,\n  handler: SVGHandler\n};\nmodules[None] = {};\nfunction renderModule(name, _) {\n  name = String(name || '').toLowerCase();\n\n  if (arguments.length > 1) {\n    modules[name] = _;\n    return this;\n  } else {\n    return modules[name];\n  }\n}\n\nfunction intersect(scene, bounds, filter) {\n  const hits = [],\n        // intersection results\n  box = new Bounds().union(bounds),\n        // defensive copy\n  type = scene.marktype;\n  return type ? intersectMark(scene, box, filter, hits) : type === 'group' ? intersectGroup(scene, box, filter, hits) : Object(vega_util__WEBPACK_IMPORTED_MODULE_0__[\"error\"])('Intersect scene must be mark node or group item.');\n}\n\nfunction intersectMark(mark, box, filter, hits) {\n  if (visitMark(mark, box, filter)) {\n    const items = mark.items,\n          type = mark.marktype,\n          n = items.length;\n    let i = 0;\n\n    if (type === 'group') {\n      for (; i < n; ++i) {\n        intersectGroup(items[i], box, filter, hits);\n      }\n    } else {\n      for (const test = Marks[type].isect; i < n; ++i) {\n        const item = items[i];\n        if (intersectItem(item, box, test)) hits.push(item);\n      }\n    }\n  }\n\n  return hits;\n}\n\nfunction visitMark(mark, box, filter) {\n  // process if bounds intersect and if\n  // (1) mark is a group mark (so we must recurse), or\n  // (2) mark is interactive and passes filter\n  return mark.bounds && box.intersects(mark.bounds) && (mark.marktype === 'group' || mark.interactive !== false && (!filter || filter(mark)));\n}\n\nfunction intersectGroup(group, box, filter, hits) {\n  // test intersect against group\n  // skip groups by default unless filter says otherwise\n  if (filter && filter(group.mark) && intersectItem(group, box, Marks.group.isect)) {\n    hits.push(group);\n  } // recursively test children marks\n  // translate box to group coordinate space\n\n\n  const marks = group.items,\n        n = marks && marks.length;\n\n  if (n) {\n    const x = group.x || 0,\n          y = group.y || 0;\n    box.translate(-x, -y);\n\n    for (let i = 0; i < n; ++i) {\n      intersectMark(marks[i], box, filter, hits);\n    }\n\n    box.translate(x, y);\n  }\n\n  return hits;\n}\n\nfunction intersectItem(item, box, test) {\n  // test bounds enclosure, bounds intersection, then detailed test\n  const bounds = item.bounds;\n  return box.encloses(bounds) || box.intersects(bounds) && test(item, box);\n}\n\nconst clipBounds = new Bounds();\nfunction boundClip (mark) {\n  const clip = mark.clip;\n\n  if (Object(vega_util__WEBPACK_IMPORTED_MODULE_0__[\"isFunction\"])(clip)) {\n    clip(boundContext(clipBounds.clear()));\n  } else if (clip) {\n    clipBounds.set(0, 0, mark.group.width, mark.group.height);\n  } else return;\n\n  mark.bounds.intersect(clipBounds);\n}\n\nconst TOLERANCE = 1e-9;\nfunction sceneEqual(a, b, key) {\n  return a === b ? true : key === 'path' ? pathEqual(a, b) : a instanceof Date && b instanceof Date ? +a === +b : Object(vega_util__WEBPACK_IMPORTED_MODULE_0__[\"isNumber\"])(a) && Object(vega_util__WEBPACK_IMPORTED_MODULE_0__[\"isNumber\"])(b) ? Math.abs(a - b) <= TOLERANCE : !a || !b || !Object(vega_util__WEBPACK_IMPORTED_MODULE_0__[\"isObject\"])(a) && !Object(vega_util__WEBPACK_IMPORTED_MODULE_0__[\"isObject\"])(b) ? a == b : objectEqual(a, b);\n}\nfunction pathEqual(a, b) {\n  return sceneEqual(pathParse(a), pathParse(b));\n}\n\nfunction objectEqual(a, b) {\n  var ka = Object.keys(a),\n      kb = Object.keys(b),\n      key,\n      i;\n  if (ka.length !== kb.length) return false;\n  ka.sort();\n  kb.sort();\n\n  for (i = ka.length - 1; i >= 0; i--) {\n    if (ka[i] != kb[i]) return false;\n  }\n\n  for (i = ka.length - 1; i >= 0; i--) {\n    key = ka[i];\n    if (!sceneEqual(a[key], b[key], key)) return false;\n  }\n\n  return typeof a === typeof b;\n}\n\nfunction resetSVGDefIds() {\n  resetSVGClipId();\n  resetSVGGradientId();\n}\n\n\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,[encoded data, 222116 characters]\n//# sourceURL=webpack-internal:///./node_modules/vega/node_modules/vega-scenegraph/build/vega-scenegraph.module.js\n");

/***/ }),

/***/ "./node_modules/vega/node_modules/vega-transforms/build/vega-transforms.module.js":
/*!****************************************************************************************!*\
  !*** ./node_modules/vega/node_modules/vega-transforms/build/vega-transforms.module.js ***!
  \****************************************************************************************/
/*! exports provided: aggregate, bin, collect, compare, countpattern, cross, density, dotbin, expression, extent, facet, field, filter, flatten, fold, formula, generate, impute, joinaggregate, kde, key, load, lookup, multiextent, multivalues, params, pivot, prefacet, project, proxy, quantile, relay, sample, sequence, sieve, subflow, timeunit, tupleindex, values, window */
/***/ (function(module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"aggregate\", function() { return Aggregate; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"bin\", function() { return Bin; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"collect\", function() { return Collect; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"compare\", function() { return Compare; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"countpattern\", function() { return CountPattern; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"cross\", function() { return Cross; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"density\", function() { return Density; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"dotbin\", function() { return DotBin; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"expression\", function() { return Expression; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"extent\", function() { return Extent; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"facet\", function() { return Facet; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"field\", function() { return Field; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"filter\", function() { return Filter; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"flatten\", function() { return Flatten; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"fold\", function() { return Fold; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"formula\", function() { return Formula; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"generate\", function() { return Generate; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"impute\", function() { return Impute; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"joinaggregate\", function() { return JoinAggregate; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"kde\", function() { return KDE; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"key\", function() { return Key; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"load\", function() { return Load; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"lookup\", function() { return Lookup; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"multiextent\", function() { return MultiExtent; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"multivalues\", function() { return MultiValues; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"params\", function() { return Params; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"pivot\", function() { return Pivot; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"prefacet\", function() { return PreFacet; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"project\", function() { return Project; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"proxy\", function() { return Proxy; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"quantile\", function() { return Quantile; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"relay\", function() { return Relay; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"sample\", function() { return Sample; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"sequence\", function() { return Sequence; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"sieve\", function() { return Sieve; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"subflow\", function() { return Subflow; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"timeunit\", function() { return TimeUnit; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"tupleindex\", function() { return TupleIndex; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"values\", function() { return Values; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"window\", function() { return Window; });\n/* harmony import */ var vega_util__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! vega-util */ \"./node_modules/vega/node_modules/vega-util/build/vega-util.module.js\");\n/* harmony import */ var vega_dataflow__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! vega-dataflow */ \"./node_modules/vega/node_modules/vega-dataflow/build/vega-dataflow.module.js\");\n/* harmony import */ var vega_statistics__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! vega-statistics */ \"./node_modules/vega-statistics/build/vega-statistics.module.js\");\n/* harmony import */ var d3_array__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! d3-array */ \"./node_modules/d3-array/src/index.js\");\n/* harmony import */ var vega_time__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! vega-time */ \"./node_modules/vega-time/build/vega-time.module.js\");\n\n\n\n\n\n\nfunction multikey(f) {\n  return x => {\n    const n = f.length;\n    let i = 1,\n        k = String(f[0](x));\n\n    for (; i < n; ++i) {\n      k += '|' + f[i](x);\n    }\n\n    return k;\n  };\n}\nfunction groupkey(fields) {\n  return !fields || !fields.length ? function () {\n    return '';\n  } : fields.length === 1 ? fields[0] : multikey(fields);\n}\n\nfunction measureName(op, field, as) {\n  return as || op + (!field ? '' : '_' + field);\n}\n\nconst noop = () => {};\n\nconst base_op = {\n  init: noop,\n  add: noop,\n  rem: noop,\n  idx: 0\n};\nconst AggregateOps = {\n  values: {\n    init: m => m.cell.store = true,\n    value: m => m.cell.data.values(),\n    idx: -1\n  },\n  count: {\n    value: m => m.cell.num\n  },\n  __count__: {\n    value: m => m.missing + m.valid\n  },\n  missing: {\n    value: m => m.missing\n  },\n  valid: {\n    value: m => m.valid\n  },\n  sum: {\n    init: m => m.sum = 0,\n    value: m => m.sum,\n    add: (m, v) => m.sum += +v,\n    rem: (m, v) => m.sum -= v\n  },\n  product: {\n    init: m => m.product = 1,\n    value: m => m.valid ? m.product : undefined,\n    add: (m, v) => m.product *= v,\n    rem: (m, v) => m.product /= v\n  },\n  mean: {\n    init: m => m.mean = 0,\n    value: m => m.valid ? m.mean : undefined,\n    add: (m, v) => (m.mean_d = v - m.mean, m.mean += m.mean_d / m.valid),\n    rem: (m, v) => (m.mean_d = v - m.mean, m.mean -= m.valid ? m.mean_d / m.valid : m.mean)\n  },\n  average: {\n    value: m => m.valid ? m.mean : undefined,\n    req: ['mean'],\n    idx: 1\n  },\n  variance: {\n    init: m => m.dev = 0,\n    value: m => m.valid > 1 ? m.dev / (m.valid - 1) : undefined,\n    add: (m, v) => m.dev += m.mean_d * (v - m.mean),\n    rem: (m, v) => m.dev -= m.mean_d * (v - m.mean),\n    req: ['mean'],\n    idx: 1\n  },\n  variancep: {\n    value: m => m.valid > 1 ? m.dev / m.valid : undefined,\n    req: ['variance'],\n    idx: 2\n  },\n  stdev: {\n    value: m => m.valid > 1 ? Math.sqrt(m.dev / (m.valid - 1)) : undefined,\n    req: ['variance'],\n    idx: 2\n  },\n  stdevp: {\n    value: m => m.valid > 1 ? Math.sqrt(m.dev / m.valid) : undefined,\n    req: ['variance'],\n    idx: 2\n  },\n  stderr: {\n    value: m => m.valid > 1 ? Math.sqrt(m.dev / (m.valid * (m.valid - 1))) : undefined,\n    req: ['variance'],\n    idx: 2\n  },\n  distinct: {\n    value: m => m.cell.data.distinct(m.get),\n    req: ['values'],\n    idx: 3\n  },\n  ci0: {\n    value: m => m.cell.data.ci0(m.get),\n    req: ['values'],\n    idx: 3\n  },\n  ci1: {\n    value: m => m.cell.data.ci1(m.get),\n    req: ['values'],\n    idx: 3\n  },\n  median: {\n    value: m => m.cell.data.q2(m.get),\n    req: ['values'],\n    idx: 3\n  },\n  q1: {\n    value: m => m.cell.data.q1(m.get),\n    req: ['values'],\n    idx: 3\n  },\n  q3: {\n    value: m => m.cell.data.q3(m.get),\n    req: ['values'],\n    idx: 3\n  },\n  min: {\n    init: m => m.min = undefined,\n    value: m => m.min = Number.isNaN(m.min) ? m.cell.data.min(m.get) : m.min,\n    add: (m, v) => {\n      if (v < m.min || m.min === undefined) m.min = v;\n    },\n    rem: (m, v) => {\n      if (v <= m.min) m.min = NaN;\n    },\n    req: ['values'],\n    idx: 4\n  },\n  max: {\n    init: m => m.max = undefined,\n    value: m => m.max = Number.isNaN(m.max) ? m.cell.data.max(m.get) : m.max,\n    add: (m, v) => {\n      if (v > m.max || m.max === undefined) m.max = v;\n    },\n    rem: (m, v) => {\n      if (v >= m.max) m.max = NaN;\n    },\n    req: ['values'],\n    idx: 4\n  },\n  argmin: {\n    init: m => m.argmin = undefined,\n    value: m => m.argmin || m.cell.data.argmin(m.get),\n    add: (m, v, t) => {\n      if (v < m.min) m.argmin = t;\n    },\n    rem: (m, v) => {\n      if (v <= m.min) m.argmin = undefined;\n    },\n    req: ['min', 'values'],\n    idx: 3\n  },\n  argmax: {\n    init: m => m.argmax = undefined,\n    value: m => m.argmax || m.cell.data.argmax(m.get),\n    add: (m, v, t) => {\n      if (v > m.max) m.argmax = t;\n    },\n    rem: (m, v) => {\n      if (v >= m.max) m.argmax = undefined;\n    },\n    req: ['max', 'values'],\n    idx: 3\n  }\n};\nconst ValidAggregateOps = Object.keys(AggregateOps);\n\nfunction measure(key, value) {\n  return out => Object(vega_util__WEBPACK_IMPORTED_MODULE_0__[\"extend\"])({\n    name: key,\n    out: out || key\n  }, base_op, value);\n}\n\nValidAggregateOps.forEach(key => {\n  AggregateOps[key] = measure(key, AggregateOps[key]);\n});\nfunction createMeasure(op, name) {\n  return AggregateOps[op](name);\n}\n\nfunction compareIndex(a, b) {\n  return a.idx - b.idx;\n}\n\nfunction resolve(agg) {\n  const map = {};\n  agg.forEach(a => map[a.name] = a);\n\n  const getreqs = a => {\n    if (!a.req) return;\n    a.req.forEach(key => {\n      if (!map[key]) getreqs(map[key] = AggregateOps[key]());\n    });\n  };\n\n  agg.forEach(getreqs);\n  return Object.values(map).sort(compareIndex);\n}\n\nfunction init() {\n  this.valid = 0;\n  this.missing = 0;\n\n  this._ops.forEach(op => op.init(this));\n}\n\nfunction add(v, t) {\n  if (v == null || v === '') {\n    ++this.missing;\n    return;\n  }\n\n  if (v !== v) return;\n  ++this.valid;\n\n  this._ops.forEach(op => op.add(this, v, t));\n}\n\nfunction rem(v, t) {\n  if (v == null || v === '') {\n    --this.missing;\n    return;\n  }\n\n  if (v !== v) return;\n  --this.valid;\n\n  this._ops.forEach(op => op.rem(this, v, t));\n}\n\nfunction set(t) {\n  this._out.forEach(op => t[op.out] = op.value(this));\n\n  return t;\n}\n\nfunction compileMeasures(agg, field) {\n  const get = field || vega_util__WEBPACK_IMPORTED_MODULE_0__[\"identity\"],\n        ops = resolve(agg),\n        out = agg.slice().sort(compareIndex);\n\n  function ctr(cell) {\n    this._ops = ops;\n    this._out = out;\n    this.cell = cell;\n    this.init();\n  }\n\n  ctr.prototype.init = init;\n  ctr.prototype.add = add;\n  ctr.prototype.rem = rem;\n  ctr.prototype.set = set;\n  ctr.prototype.get = get;\n  ctr.fields = agg.map(op => op.out);\n  return ctr;\n}\n\nfunction TupleStore(key) {\n  this._key = key ? Object(vega_util__WEBPACK_IMPORTED_MODULE_0__[\"field\"])(key) : vega_dataflow__WEBPACK_IMPORTED_MODULE_1__[\"tupleid\"];\n  this.reset();\n}\nconst prototype$1 = TupleStore.prototype;\n\nprototype$1.reset = function () {\n  this._add = [];\n  this._rem = [];\n  this._ext = null;\n  this._get = null;\n  this._q = null;\n};\n\nprototype$1.add = function (v) {\n  this._add.push(v);\n};\n\nprototype$1.rem = function (v) {\n  this._rem.push(v);\n};\n\nprototype$1.values = function () {\n  this._get = null;\n  if (this._rem.length === 0) return this._add;\n  const a = this._add,\n        r = this._rem,\n        k = this._key,\n        n = a.length,\n        m = r.length,\n        x = Array(n - m),\n        map = {};\n  let i, j, v; // use unique key field to clear removed values\n\n  for (i = 0; i < m; ++i) {\n    map[k(r[i])] = 1;\n  }\n\n  for (i = 0, j = 0; i < n; ++i) {\n    if (map[k(v = a[i])]) {\n      map[k(v)] = 0;\n    } else {\n      x[j++] = v;\n    }\n  }\n\n  this._rem = [];\n  return this._add = x;\n}; // memoizing statistics methods\n\n\nprototype$1.distinct = function (get) {\n  const v = this.values(),\n        map = {};\n  let n = v.length,\n      count = 0,\n      s;\n\n  while (--n >= 0) {\n    s = get(v[n]) + '';\n\n    if (!Object(vega_util__WEBPACK_IMPORTED_MODULE_0__[\"hasOwnProperty\"])(map, s)) {\n      map[s] = 1;\n      ++count;\n    }\n  }\n\n  return count;\n};\n\nprototype$1.extent = function (get) {\n  if (this._get !== get || !this._ext) {\n    const v = this.values(),\n          i = Object(vega_util__WEBPACK_IMPORTED_MODULE_0__[\"extentIndex\"])(v, get);\n    this._ext = [v[i[0]], v[i[1]]];\n    this._get = get;\n  }\n\n  return this._ext;\n};\n\nprototype$1.argmin = function (get) {\n  return this.extent(get)[0] || {};\n};\n\nprototype$1.argmax = function (get) {\n  return this.extent(get)[1] || {};\n};\n\nprototype$1.min = function (get) {\n  const m = this.extent(get)[0];\n  return m != null ? get(m) : undefined;\n};\n\nprototype$1.max = function (get) {\n  const m = this.extent(get)[1];\n  return m != null ? get(m) : undefined;\n};\n\nprototype$1.quartile = function (get) {\n  if (this._get !== get || !this._q) {\n    this._q = Object(vega_statistics__WEBPACK_IMPORTED_MODULE_2__[\"quartiles\"])(this.values(), get);\n    this._get = get;\n  }\n\n  return this._q;\n};\n\nprototype$1.q1 = function (get) {\n  return this.quartile(get)[0];\n};\n\nprototype$1.q2 = function (get) {\n  return this.quartile(get)[1];\n};\n\nprototype$1.q3 = function (get) {\n  return this.quartile(get)[2];\n};\n\nprototype$1.ci = function (get) {\n  if (this._get !== get || !this._ci) {\n    this._ci = Object(vega_statistics__WEBPACK_IMPORTED_MODULE_2__[\"bootstrapCI\"])(this.values(), 1000, 0.05, get);\n    this._get = get;\n  }\n\n  return this._ci;\n};\n\nprototype$1.ci0 = function (get) {\n  return this.ci(get)[0];\n};\n\nprototype$1.ci1 = function (get) {\n  return this.ci(get)[1];\n};\n\n/**\n * Group-by aggregation operator.\n * @constructor\n * @param {object} params - The parameters for this operator.\n * @param {Array<function(object): *>} [params.groupby] - An array of accessors to groupby.\n * @param {Array<function(object): *>} [params.fields] - An array of accessors to aggregate.\n * @param {Array<string>} [params.ops] - An array of strings indicating aggregation operations.\n * @param {Array<string>} [params.as] - An array of output field names for aggregated values.\n * @param {boolean} [params.cross=false] - A flag indicating that the full\n *   cross-product of groupby values should be generated, including empty cells.\n *   If true, the drop parameter is ignored and empty cells are retained.\n * @param {boolean} [params.drop=true] - A flag indicating if empty cells should be removed.\n */\n\nfunction Aggregate(params) {\n  vega_dataflow__WEBPACK_IMPORTED_MODULE_1__[\"Transform\"].call(this, null, params);\n  this._adds = []; // array of added output tuples\n\n  this._mods = []; // array of modified output tuples\n\n  this._alen = 0; // number of active added tuples\n\n  this._mlen = 0; // number of active modified tuples\n\n  this._drop = true; // should empty aggregation cells be removed\n\n  this._cross = false; // produce full cross-product of group-by values\n\n  this._dims = []; // group-by dimension accessors\n\n  this._dnames = []; // group-by dimension names\n\n  this._measures = []; // collection of aggregation monoids\n\n  this._countOnly = false; // flag indicating only count aggregation\n\n  this._counts = null; // collection of count fields\n\n  this._prev = null; // previous aggregation cells\n\n  this._inputs = null; // array of dependent input tuple field names\n\n  this._outputs = null; // array of output tuple field names\n}\nAggregate.Definition = {\n  'type': 'Aggregate',\n  'metadata': {\n    'generates': true,\n    'changes': true\n  },\n  'params': [{\n    'name': 'groupby',\n    'type': 'field',\n    'array': true\n  }, {\n    'name': 'ops',\n    'type': 'enum',\n    'array': true,\n    'values': ValidAggregateOps\n  }, {\n    'name': 'fields',\n    'type': 'field',\n    'null': true,\n    'array': true\n  }, {\n    'name': 'as',\n    'type': 'string',\n    'null': true,\n    'array': true\n  }, {\n    'name': 'drop',\n    'type': 'boolean',\n    'default': true\n  }, {\n    'name': 'cross',\n    'type': 'boolean',\n    'default': false\n  }, {\n    'name': 'key',\n    'type': 'field'\n  }]\n};\nObject(vega_util__WEBPACK_IMPORTED_MODULE_0__[\"inherits\"])(Aggregate, vega_dataflow__WEBPACK_IMPORTED_MODULE_1__[\"Transform\"], {\n  transform(_, pulse) {\n    const aggr = this,\n          out = pulse.fork(pulse.NO_SOURCE | pulse.NO_FIELDS),\n          mod = _.modified();\n\n    aggr.stamp = out.stamp;\n\n    if (aggr.value && (mod || pulse.modified(aggr._inputs, true))) {\n      aggr._prev = aggr.value;\n      aggr.value = mod ? aggr.init(_) : {};\n      pulse.visit(pulse.SOURCE, t => aggr.add(t));\n    } else {\n      aggr.value = aggr.value || aggr.init(_);\n      pulse.visit(pulse.REM, t => aggr.rem(t));\n      pulse.visit(pulse.ADD, t => aggr.add(t));\n    } // Indicate output fields and return aggregate tuples.\n\n\n    out.modifies(aggr._outputs); // Should empty cells be dropped?\n\n    aggr._drop = _.drop !== false; // If domain cross-product requested, generate empty cells as needed\n    // and ensure that empty cells are not dropped\n\n    if (_.cross && aggr._dims.length > 1) {\n      aggr._drop = false;\n      aggr.cross();\n    }\n\n    if (pulse.clean() && aggr._drop) {\n      out.clean(true).runAfter(() => this.clean());\n    }\n\n    return aggr.changes(out);\n  },\n\n  cross() {\n    const aggr = this,\n          curr = aggr.value,\n          dims = aggr._dnames,\n          vals = dims.map(() => ({})),\n          n = dims.length; // collect all group-by domain values\n\n    function collect(cells) {\n      let key, i, t, v;\n\n      for (key in cells) {\n        t = cells[key].tuple;\n\n        for (i = 0; i < n; ++i) {\n          vals[i][v = t[dims[i]]] = v;\n        }\n      }\n    }\n\n    collect(aggr._prev);\n    collect(curr); // iterate over key cross-product, create cells as needed\n\n    function generate(base, tuple, index) {\n      const name = dims[index],\n            v = vals[index++];\n\n      for (const k in v) {\n        const key = base ? base + '|' + k : k;\n        tuple[name] = v[k];\n        if (index < n) generate(key, tuple, index);else if (!curr[key]) aggr.cell(key, tuple);\n      }\n    }\n\n    generate('', {}, 0);\n  },\n\n  init(_) {\n    // initialize input and output fields\n    const inputs = this._inputs = [],\n          outputs = this._outputs = [],\n          inputMap = {};\n\n    function inputVisit(get) {\n      const fields = Object(vega_util__WEBPACK_IMPORTED_MODULE_0__[\"array\"])(Object(vega_util__WEBPACK_IMPORTED_MODULE_0__[\"accessorFields\"])(get)),\n            n = fields.length;\n      let i = 0,\n          f;\n\n      for (; i < n; ++i) {\n        if (!inputMap[f = fields[i]]) {\n          inputMap[f] = 1;\n          inputs.push(f);\n        }\n      }\n    } // initialize group-by dimensions\n\n\n    this._dims = Object(vega_util__WEBPACK_IMPORTED_MODULE_0__[\"array\"])(_.groupby);\n    this._dnames = this._dims.map(d => {\n      const dname = Object(vega_util__WEBPACK_IMPORTED_MODULE_0__[\"accessorName\"])(d);\n      inputVisit(d);\n      outputs.push(dname);\n      return dname;\n    });\n    this.cellkey = _.key ? _.key : groupkey(this._dims); // initialize aggregate measures\n\n    this._countOnly = true;\n    this._counts = [];\n    this._measures = [];\n    const fields = _.fields || [null],\n          ops = _.ops || ['count'],\n          as = _.as || [],\n          n = fields.length,\n          map = {};\n    let field, op, m, mname, outname, i;\n\n    if (n !== ops.length) {\n      Object(vega_util__WEBPACK_IMPORTED_MODULE_0__[\"error\"])('Unmatched number of fields and aggregate ops.');\n    }\n\n    for (i = 0; i < n; ++i) {\n      field = fields[i];\n      op = ops[i];\n\n      if (field == null && op !== 'count') {\n        Object(vega_util__WEBPACK_IMPORTED_MODULE_0__[\"error\"])('Null aggregate field specified.');\n      }\n\n      mname = Object(vega_util__WEBPACK_IMPORTED_MODULE_0__[\"accessorName\"])(field);\n      outname = measureName(op, mname, as[i]);\n      outputs.push(outname);\n\n      if (op === 'count') {\n        this._counts.push(outname);\n\n        continue;\n      }\n\n      m = map[mname];\n\n      if (!m) {\n        inputVisit(field);\n        m = map[mname] = [];\n        m.field = field;\n\n        this._measures.push(m);\n      }\n\n      if (op !== 'count') this._countOnly = false;\n      m.push(createMeasure(op, outname));\n    }\n\n    this._measures = this._measures.map(m => compileMeasures(m, m.field));\n    return {}; // aggregation cells (this.value)\n  },\n\n  // -- Cell Management -----\n  cellkey: groupkey(),\n\n  cell(key, t) {\n    let cell = this.value[key];\n\n    if (!cell) {\n      cell = this.value[key] = this.newcell(key, t);\n      this._adds[this._alen++] = cell;\n    } else if (cell.num === 0 && this._drop && cell.stamp < this.stamp) {\n      cell.stamp = this.stamp;\n      this._adds[this._alen++] = cell;\n    } else if (cell.stamp < this.stamp) {\n      cell.stamp = this.stamp;\n      this._mods[this._mlen++] = cell;\n    }\n\n    return cell;\n  },\n\n  newcell(key, t) {\n    const cell = {\n      key: key,\n      num: 0,\n      agg: null,\n      tuple: this.newtuple(t, this._prev && this._prev[key]),\n      stamp: this.stamp,\n      store: false\n    };\n\n    if (!this._countOnly) {\n      const measures = this._measures,\n            n = measures.length;\n      cell.agg = Array(n);\n\n      for (let i = 0; i < n; ++i) {\n        cell.agg[i] = new measures[i](cell);\n      }\n    }\n\n    if (cell.store) {\n      cell.data = new TupleStore();\n    }\n\n    return cell;\n  },\n\n  newtuple(t, p) {\n    const names = this._dnames,\n          dims = this._dims,\n          n = dims.length,\n          x = {};\n\n    for (let i = 0; i < n; ++i) {\n      x[names[i]] = dims[i](t);\n    }\n\n    return p ? Object(vega_dataflow__WEBPACK_IMPORTED_MODULE_1__[\"replace\"])(p.tuple, x) : Object(vega_dataflow__WEBPACK_IMPORTED_MODULE_1__[\"ingest\"])(x);\n  },\n\n  clean() {\n    const cells = this.value;\n\n    for (const key in cells) {\n      if (cells[key].num === 0) {\n        delete cells[key];\n      }\n    }\n  },\n\n  // -- Process Tuples -----\n  add(t) {\n    const key = this.cellkey(t),\n          cell = this.cell(key, t);\n    cell.num += 1;\n    if (this._countOnly) return;\n    if (cell.store) cell.data.add(t);\n    const agg = cell.agg;\n\n    for (let i = 0, n = agg.length; i < n; ++i) {\n      agg[i].add(agg[i].get(t), t);\n    }\n  },\n\n  rem(t) {\n    const key = this.cellkey(t),\n          cell = this.cell(key, t);\n    cell.num -= 1;\n    if (this._countOnly) return;\n    if (cell.store) cell.data.rem(t);\n    const agg = cell.agg;\n\n    for (let i = 0, n = agg.length; i < n; ++i) {\n      agg[i].rem(agg[i].get(t), t);\n    }\n  },\n\n  celltuple(cell) {\n    const tuple = cell.tuple,\n          counts = this._counts; // consolidate stored values\n\n    if (cell.store) {\n      cell.data.values();\n    } // update tuple properties\n\n\n    for (let i = 0, n = counts.length; i < n; ++i) {\n      tuple[counts[i]] = cell.num;\n    }\n\n    if (!this._countOnly) {\n      const agg = cell.agg;\n\n      for (let i = 0, n = agg.length; i < n; ++i) {\n        agg[i].set(tuple);\n      }\n    }\n\n    return tuple;\n  },\n\n  changes(out) {\n    const adds = this._adds,\n          mods = this._mods,\n          prev = this._prev,\n          drop = this._drop,\n          add = out.add,\n          rem = out.rem,\n          mod = out.mod;\n    let cell, key, i, n;\n    if (prev) for (key in prev) {\n      cell = prev[key];\n      if (!drop || cell.num) rem.push(cell.tuple);\n    }\n\n    for (i = 0, n = this._alen; i < n; ++i) {\n      add.push(this.celltuple(adds[i]));\n      adds[i] = null; // for garbage collection\n    }\n\n    for (i = 0, n = this._mlen; i < n; ++i) {\n      cell = mods[i];\n      (cell.num === 0 && drop ? rem : mod).push(this.celltuple(cell));\n      mods[i] = null; // for garbage collection\n    }\n\n    this._alen = this._mlen = 0; // reset list of active cells\n\n    this._prev = null;\n    return out;\n  }\n\n});\n\nconst EPSILON$1 = 1e-14;\n/**\n * Generates a binning function for discretizing data.\n * @constructor\n * @param {object} params - The parameters for this operator. The\n *   provided values should be valid options for the {@link bin} function.\n * @param {function(object): *} params.field - The data field to bin.\n */\n\nfunction Bin(params) {\n  vega_dataflow__WEBPACK_IMPORTED_MODULE_1__[\"Transform\"].call(this, null, params);\n}\nBin.Definition = {\n  'type': 'Bin',\n  'metadata': {\n    'modifies': true\n  },\n  'params': [{\n    'name': 'field',\n    'type': 'field',\n    'required': true\n  }, {\n    'name': 'interval',\n    'type': 'boolean',\n    'default': true\n  }, {\n    'name': 'anchor',\n    'type': 'number'\n  }, {\n    'name': 'maxbins',\n    'type': 'number',\n    'default': 20\n  }, {\n    'name': 'base',\n    'type': 'number',\n    'default': 10\n  }, {\n    'name': 'divide',\n    'type': 'number',\n    'array': true,\n    'default': [5, 2]\n  }, {\n    'name': 'extent',\n    'type': 'number',\n    'array': true,\n    'length': 2,\n    'required': true\n  }, {\n    'name': 'span',\n    'type': 'number'\n  }, {\n    'name': 'step',\n    'type': 'number'\n  }, {\n    'name': 'steps',\n    'type': 'number',\n    'array': true\n  }, {\n    'name': 'minstep',\n    'type': 'number',\n    'default': 0\n  }, {\n    'name': 'nice',\n    'type': 'boolean',\n    'default': true\n  }, {\n    'name': 'name',\n    'type': 'string'\n  }, {\n    'name': 'as',\n    'type': 'string',\n    'array': true,\n    'length': 2,\n    'default': ['bin0', 'bin1']\n  }]\n};\nObject(vega_util__WEBPACK_IMPORTED_MODULE_0__[\"inherits\"])(Bin, vega_dataflow__WEBPACK_IMPORTED_MODULE_1__[\"Transform\"], {\n  transform(_, pulse) {\n    const band = _.interval !== false,\n          bins = this._bins(_),\n          start = bins.start,\n          step = bins.step,\n          as = _.as || ['bin0', 'bin1'],\n          b0 = as[0],\n          b1 = as[1];\n\n    let flag;\n\n    if (_.modified()) {\n      pulse = pulse.reflow(true);\n      flag = pulse.SOURCE;\n    } else {\n      flag = pulse.modified(Object(vega_util__WEBPACK_IMPORTED_MODULE_0__[\"accessorFields\"])(_.field)) ? pulse.ADD_MOD : pulse.ADD;\n    }\n\n    pulse.visit(flag, band ? t => {\n      const v = bins(t); // minimum bin value (inclusive)\n\n      t[b0] = v; // maximum bin value (exclusive)\n      // use convoluted math for better floating point agreement\n      // see https://github.com/vega/vega/issues/830\n      // infinite values propagate through this formula! #2227\n\n      t[b1] = v == null ? null : start + step * (1 + (v - start) / step);\n    } : t => t[b0] = bins(t));\n    return pulse.modifies(band ? as : b0);\n  },\n\n  _bins(_) {\n    if (this.value && !_.modified()) {\n      return this.value;\n    }\n\n    const field = _.field,\n          bins = Object(vega_statistics__WEBPACK_IMPORTED_MODULE_2__[\"bin\"])(_),\n          step = bins.step;\n    let start = bins.start,\n        stop = start + Math.ceil((bins.stop - start) / step) * step,\n        a,\n        d;\n\n    if ((a = _.anchor) != null) {\n      d = a - (start + step * Math.floor((a - start) / step));\n      start += d;\n      stop += d;\n    }\n\n    const f = function (t) {\n      let v = Object(vega_util__WEBPACK_IMPORTED_MODULE_0__[\"toNumber\"])(field(t));\n      return v == null ? null : v < start ? -Infinity : v > stop ? +Infinity : (v = Math.max(start, Math.min(v, stop - step)), start + step * Math.floor(EPSILON$1 + (v - start) / step));\n    };\n\n    f.start = start;\n    f.stop = bins.stop;\n    f.step = step;\n    return this.value = Object(vega_util__WEBPACK_IMPORTED_MODULE_0__[\"accessor\"])(f, Object(vega_util__WEBPACK_IMPORTED_MODULE_0__[\"accessorFields\"])(field), _.name || 'bin_' + Object(vega_util__WEBPACK_IMPORTED_MODULE_0__[\"accessorName\"])(field));\n  }\n\n});\n\nfunction SortedList (idFunc, source, input) {\n  const $ = idFunc;\n  let data = source || [],\n      add = input || [],\n      rem = {},\n      cnt = 0;\n  return {\n    add: t => add.push(t),\n    remove: t => rem[$(t)] = ++cnt,\n    size: () => data.length,\n    data: (compare, resort) => {\n      if (cnt) {\n        data = data.filter(t => !rem[$(t)]);\n        rem = {};\n        cnt = 0;\n      }\n\n      if (resort && compare) {\n        data.sort(compare);\n      }\n\n      if (add.length) {\n        data = compare ? Object(vega_util__WEBPACK_IMPORTED_MODULE_0__[\"merge\"])(compare, data, add.sort(compare)) : data.concat(add);\n        add = [];\n      }\n\n      return data;\n    }\n  };\n}\n\n/**\n * Collects all data tuples that pass through this operator.\n * @constructor\n * @param {object} params - The parameters for this operator.\n * @param {function(*,*): number} [params.sort] - An optional\n *   comparator function for additionally sorting the collected tuples.\n */\n\nfunction Collect(params) {\n  vega_dataflow__WEBPACK_IMPORTED_MODULE_1__[\"Transform\"].call(this, [], params);\n}\nCollect.Definition = {\n  'type': 'Collect',\n  'metadata': {\n    'source': true\n  },\n  'params': [{\n    'name': 'sort',\n    'type': 'compare'\n  }]\n};\nObject(vega_util__WEBPACK_IMPORTED_MODULE_0__[\"inherits\"])(Collect, vega_dataflow__WEBPACK_IMPORTED_MODULE_1__[\"Transform\"], {\n  transform(_, pulse) {\n    const out = pulse.fork(pulse.ALL),\n          list = SortedList(vega_dataflow__WEBPACK_IMPORTED_MODULE_1__[\"tupleid\"], this.value, out.materialize(out.ADD).add),\n          sort = _.sort,\n          mod = pulse.changed() || sort && (_.modified('sort') || pulse.modified(sort.fields));\n    out.visit(out.REM, list.remove);\n    this.modified(mod);\n    this.value = out.source = list.data(Object(vega_dataflow__WEBPACK_IMPORTED_MODULE_1__[\"stableCompare\"])(sort), mod); // propagate tree root if defined\n\n    if (pulse.source && pulse.source.root) {\n      this.value.root = pulse.source.root;\n    }\n\n    return out;\n  }\n\n});\n\n/**\n * Generates a comparator function.\n * @constructor\n * @param {object} params - The parameters for this operator.\n * @param {Array<string|function>} params.fields - The fields to compare.\n * @param {Array<string>} [params.orders] - The sort orders.\n *   Each entry should be one of \"ascending\" (default) or \"descending\".\n */\n\nfunction Compare(params) {\n  vega_dataflow__WEBPACK_IMPORTED_MODULE_1__[\"Operator\"].call(this, null, update$5, params);\n}\nObject(vega_util__WEBPACK_IMPORTED_MODULE_0__[\"inherits\"])(Compare, vega_dataflow__WEBPACK_IMPORTED_MODULE_1__[\"Operator\"]);\n\nfunction update$5(_) {\n  return this.value && !_.modified() ? this.value : Object(vega_util__WEBPACK_IMPORTED_MODULE_0__[\"compare\"])(_.fields, _.orders);\n}\n\n/**\n * Count regexp-defined pattern occurrences in a text field.\n * @constructor\n * @param {object} params - The parameters for this operator.\n * @param {function(object): *} params.field - An accessor for the text field.\n * @param {string} [params.pattern] - RegExp string defining the text pattern.\n * @param {string} [params.case] - One of 'lower', 'upper' or null (mixed) case.\n * @param {string} [params.stopwords] - RegExp string of words to ignore.\n */\n\nfunction CountPattern(params) {\n  vega_dataflow__WEBPACK_IMPORTED_MODULE_1__[\"Transform\"].call(this, null, params);\n}\nCountPattern.Definition = {\n  'type': 'CountPattern',\n  'metadata': {\n    'generates': true,\n    'changes': true\n  },\n  'params': [{\n    'name': 'field',\n    'type': 'field',\n    'required': true\n  }, {\n    'name': 'case',\n    'type': 'enum',\n    'values': ['upper', 'lower', 'mixed'],\n    'default': 'mixed'\n  }, {\n    'name': 'pattern',\n    'type': 'string',\n    'default': '[\\\\w\"]+'\n  }, {\n    'name': 'stopwords',\n    'type': 'string',\n    'default': ''\n  }, {\n    'name': 'as',\n    'type': 'string',\n    'array': true,\n    'length': 2,\n    'default': ['text', 'count']\n  }]\n};\n\nfunction tokenize(text, tcase, match) {\n  switch (tcase) {\n    case 'upper':\n      text = text.toUpperCase();\n      break;\n\n    case 'lower':\n      text = text.toLowerCase();\n      break;\n  }\n\n  return text.match(match);\n}\n\nObject(vega_util__WEBPACK_IMPORTED_MODULE_0__[\"inherits\"])(CountPattern, vega_dataflow__WEBPACK_IMPORTED_MODULE_1__[\"Transform\"], {\n  transform(_, pulse) {\n    const process = update => tuple => {\n      var tokens = tokenize(get(tuple), _.case, match) || [],\n          t;\n\n      for (var i = 0, n = tokens.length; i < n; ++i) {\n        if (!stop.test(t = tokens[i])) update(t);\n      }\n    };\n\n    const init = this._parameterCheck(_, pulse),\n          counts = this._counts,\n          match = this._match,\n          stop = this._stop,\n          get = _.field,\n          as = _.as || ['text', 'count'],\n          add = process(t => counts[t] = 1 + (counts[t] || 0)),\n          rem = process(t => counts[t] -= 1);\n\n    if (init) {\n      pulse.visit(pulse.SOURCE, add);\n    } else {\n      pulse.visit(pulse.ADD, add);\n      pulse.visit(pulse.REM, rem);\n    }\n\n    return this._finish(pulse, as); // generate output tuples\n  },\n\n  _parameterCheck(_, pulse) {\n    let init = false;\n\n    if (_.modified('stopwords') || !this._stop) {\n      this._stop = new RegExp('^' + (_.stopwords || '') + '$', 'i');\n      init = true;\n    }\n\n    if (_.modified('pattern') || !this._match) {\n      this._match = new RegExp(_.pattern || '[\\\\w\\']+', 'g');\n      init = true;\n    }\n\n    if (_.modified('field') || pulse.modified(_.field.fields)) {\n      init = true;\n    }\n\n    if (init) this._counts = {};\n    return init;\n  },\n\n  _finish(pulse, as) {\n    const counts = this._counts,\n          tuples = this._tuples || (this._tuples = {}),\n          text = as[0],\n          count = as[1],\n          out = pulse.fork(pulse.NO_SOURCE | pulse.NO_FIELDS);\n    let w, t, c;\n\n    for (w in counts) {\n      t = tuples[w];\n      c = counts[w] || 0;\n\n      if (!t && c) {\n        tuples[w] = t = Object(vega_dataflow__WEBPACK_IMPORTED_MODULE_1__[\"ingest\"])({});\n        t[text] = w;\n        t[count] = c;\n        out.add.push(t);\n      } else if (c === 0) {\n        if (t) out.rem.push(t);\n        counts[w] = null;\n        tuples[w] = null;\n      } else if (t[count] !== c) {\n        t[count] = c;\n        out.mod.push(t);\n      }\n    }\n\n    return out.modifies(as);\n  }\n\n});\n\n/**\n * Perform a cross-product of a tuple stream with itself.\n * @constructor\n * @param {object} params - The parameters for this operator.\n * @param {function(object):boolean} [params.filter] - An optional filter\n *   function for selectively including tuples in the cross product.\n * @param {Array<string>} [params.as] - The names of the output fields.\n */\n\nfunction Cross(params) {\n  vega_dataflow__WEBPACK_IMPORTED_MODULE_1__[\"Transform\"].call(this, null, params);\n}\nCross.Definition = {\n  'type': 'Cross',\n  'metadata': {\n    'generates': true\n  },\n  'params': [{\n    'name': 'filter',\n    'type': 'expr'\n  }, {\n    'name': 'as',\n    'type': 'string',\n    'array': true,\n    'length': 2,\n    'default': ['a', 'b']\n  }]\n};\nObject(vega_util__WEBPACK_IMPORTED_MODULE_0__[\"inherits\"])(Cross, vega_dataflow__WEBPACK_IMPORTED_MODULE_1__[\"Transform\"], {\n  transform(_, pulse) {\n    const out = pulse.fork(pulse.NO_SOURCE),\n          as = _.as || ['a', 'b'],\n          a = as[0],\n          b = as[1],\n          reset = !this.value || pulse.changed(pulse.ADD_REM) || _.modified('as') || _.modified('filter');\n\n    let data = this.value;\n\n    if (reset) {\n      if (data) out.rem = data;\n      data = pulse.materialize(pulse.SOURCE).source;\n      out.add = this.value = cross(data, a, b, _.filter || vega_util__WEBPACK_IMPORTED_MODULE_0__[\"truthy\"]);\n    } else {\n      out.mod = data;\n    }\n\n    out.source = this.value;\n    return out.modifies(as);\n  }\n\n});\n\nfunction cross(input, a, b, filter) {\n  var data = [],\n      t = {},\n      n = input.length,\n      i = 0,\n      j,\n      left;\n\n  for (; i < n; ++i) {\n    t[a] = left = input[i];\n\n    for (j = 0; j < n; ++j) {\n      t[b] = input[j];\n\n      if (filter(t)) {\n        data.push(Object(vega_dataflow__WEBPACK_IMPORTED_MODULE_1__[\"ingest\"])(t));\n        t = {};\n        t[a] = left;\n      }\n    }\n  }\n\n  return data;\n}\n\nconst Distributions = {\n  kde: vega_statistics__WEBPACK_IMPORTED_MODULE_2__[\"randomKDE\"],\n  mixture: vega_statistics__WEBPACK_IMPORTED_MODULE_2__[\"randomMixture\"],\n  normal: vega_statistics__WEBPACK_IMPORTED_MODULE_2__[\"randomNormal\"],\n  lognormal: vega_statistics__WEBPACK_IMPORTED_MODULE_2__[\"randomLogNormal\"],\n  uniform: vega_statistics__WEBPACK_IMPORTED_MODULE_2__[\"randomUniform\"]\n};\nconst DISTRIBUTIONS = 'distributions',\n      FUNCTION = 'function',\n      FIELD = 'field';\n/**\n * Parse a parameter object for a probability distribution.\n * @param {object} def - The distribution parameter object.\n * @param {function():Array<object>} - A method for requesting\n *   source data. Used for distributions (such as KDE) that\n *   require sample data points. This method will only be\n *   invoked if the 'from' parameter for a target data source\n *   is not provided. Typically this method returns backing\n *   source data for a Pulse object.\n * @return {object} - The output distribution object.\n */\n\nfunction parse(def, data) {\n  const func = def[FUNCTION];\n\n  if (!Object(vega_util__WEBPACK_IMPORTED_MODULE_0__[\"hasOwnProperty\"])(Distributions, func)) {\n    Object(vega_util__WEBPACK_IMPORTED_MODULE_0__[\"error\"])('Unknown distribution function: ' + func);\n  }\n\n  const d = Distributions[func]();\n\n  for (const name in def) {\n    // if data field, extract values\n    if (name === FIELD) {\n      d.data((def.from || data()).map(def[name]));\n    } // if distribution mixture, recurse to parse each definition\n    else if (name === DISTRIBUTIONS) {\n        d[name](def[name].map(_ => parse(_, data)));\n      } // otherwise, simply set the parameter\n      else if (typeof d[name] === FUNCTION) {\n          d[name](def[name]);\n        }\n  }\n\n  return d;\n}\n\n/**\n * Grid sample points for a probability density. Given a distribution and\n * a sampling extent, will generate points suitable for plotting either\n * PDF (probability density function) or CDF (cumulative distribution\n * function) curves.\n * @constructor\n * @param {object} params - The parameters for this operator.\n * @param {object} params.distribution - The probability distribution. This\n *   is an object parameter dependent on the distribution type.\n * @param {string} [params.method='pdf'] - The distribution method to sample.\n *   One of 'pdf' or 'cdf'.\n * @param {Array<number>} [params.extent] - The [min, max] extent over which\n *   to sample the distribution. This argument is required in most cases, but\n *   can be omitted if the distribution (e.g., 'kde') supports a 'data' method\n *   that returns numerical sample points from which the extent can be deduced.\n * @param {number} [params.minsteps=25] - The minimum number of curve samples\n *   for plotting the density.\n * @param {number} [params.maxsteps=200] - The maximum number of curve samples\n *   for plotting the density.\n * @param {number} [params.steps] - The exact number of curve samples for\n *   plotting the density. If specified, overrides both minsteps and maxsteps\n *   to set an exact number of uniform samples. Useful in conjunction with\n *   a fixed extent to ensure consistent sample points for stacked densities.\n */\n\nfunction Density(params) {\n  vega_dataflow__WEBPACK_IMPORTED_MODULE_1__[\"Transform\"].call(this, null, params);\n}\nconst distributions = [{\n  'key': {\n    'function': 'normal'\n  },\n  'params': [{\n    'name': 'mean',\n    'type': 'number',\n    'default': 0\n  }, {\n    'name': 'stdev',\n    'type': 'number',\n    'default': 1\n  }]\n}, {\n  'key': {\n    'function': 'lognormal'\n  },\n  'params': [{\n    'name': 'mean',\n    'type': 'number',\n    'default': 0\n  }, {\n    'name': 'stdev',\n    'type': 'number',\n    'default': 1\n  }]\n}, {\n  'key': {\n    'function': 'uniform'\n  },\n  'params': [{\n    'name': 'min',\n    'type': 'number',\n    'default': 0\n  }, {\n    'name': 'max',\n    'type': 'number',\n    'default': 1\n  }]\n}, {\n  'key': {\n    'function': 'kde'\n  },\n  'params': [{\n    'name': 'field',\n    'type': 'field',\n    'required': true\n  }, {\n    'name': 'from',\n    'type': 'data'\n  }, {\n    'name': 'bandwidth',\n    'type': 'number',\n    'default': 0\n  }]\n}];\nconst mixture = {\n  'key': {\n    'function': 'mixture'\n  },\n  'params': [{\n    'name': 'distributions',\n    'type': 'param',\n    'array': true,\n    'params': distributions\n  }, {\n    'name': 'weights',\n    'type': 'number',\n    'array': true\n  }]\n};\nDensity.Definition = {\n  'type': 'Density',\n  'metadata': {\n    'generates': true\n  },\n  'params': [{\n    'name': 'extent',\n    'type': 'number',\n    'array': true,\n    'length': 2\n  }, {\n    'name': 'steps',\n    'type': 'number'\n  }, {\n    'name': 'minsteps',\n    'type': 'number',\n    'default': 25\n  }, {\n    'name': 'maxsteps',\n    'type': 'number',\n    'default': 200\n  }, {\n    'name': 'method',\n    'type': 'string',\n    'default': 'pdf',\n    'values': ['pdf', 'cdf']\n  }, {\n    'name': 'distribution',\n    'type': 'param',\n    'params': distributions.concat(mixture)\n  }, {\n    'name': 'as',\n    'type': 'string',\n    'array': true,\n    'default': ['value', 'density']\n  }]\n};\nObject(vega_util__WEBPACK_IMPORTED_MODULE_0__[\"inherits\"])(Density, vega_dataflow__WEBPACK_IMPORTED_MODULE_1__[\"Transform\"], {\n  transform(_, pulse) {\n    const out = pulse.fork(pulse.NO_SOURCE | pulse.NO_FIELDS);\n\n    if (!this.value || pulse.changed() || _.modified()) {\n      const dist = parse(_.distribution, source(pulse)),\n            minsteps = _.steps || _.minsteps || 25,\n            maxsteps = _.steps || _.maxsteps || 200;\n      let method = _.method || 'pdf';\n\n      if (method !== 'pdf' && method !== 'cdf') {\n        Object(vega_util__WEBPACK_IMPORTED_MODULE_0__[\"error\"])('Invalid density method: ' + method);\n      }\n\n      if (!_.extent && !dist.data) {\n        Object(vega_util__WEBPACK_IMPORTED_MODULE_0__[\"error\"])('Missing density extent parameter.');\n      }\n\n      method = dist[method];\n      const as = _.as || ['value', 'density'],\n            domain = _.extent || Object(vega_util__WEBPACK_IMPORTED_MODULE_0__[\"extent\"])(dist.data()),\n            values = Object(vega_statistics__WEBPACK_IMPORTED_MODULE_2__[\"sampleCurve\"])(method, domain, minsteps, maxsteps).map(v => {\n        const tuple = {};\n        tuple[as[0]] = v[0];\n        tuple[as[1]] = v[1];\n        return Object(vega_dataflow__WEBPACK_IMPORTED_MODULE_1__[\"ingest\"])(tuple);\n      });\n      if (this.value) out.rem = this.value;\n      this.value = out.add = out.source = values;\n    }\n\n    return out;\n  }\n\n});\n\nfunction source(pulse) {\n  return () => pulse.materialize(pulse.SOURCE).source;\n}\n\nfunction fieldNames(fields, as) {\n  if (!fields) return null;\n  return fields.map((f, i) => as[i] || Object(vega_util__WEBPACK_IMPORTED_MODULE_0__[\"accessorName\"])(f));\n}\nfunction partition$1(data, groupby, field) {\n  const groups = [],\n        get = f => f(t);\n\n  let map, i, n, t, k, g; // partition data points into groups\n\n  if (groupby == null) {\n    groups.push(data.map(field));\n  } else {\n    for (map = {}, i = 0, n = data.length; i < n; ++i) {\n      t = data[i];\n      k = groupby.map(get);\n      g = map[k];\n\n      if (!g) {\n        map[k] = g = [];\n        g.dims = k;\n        groups.push(g);\n      }\n\n      g.push(field(t));\n    }\n  }\n\n  return groups;\n}\n\nconst Output = 'bin';\n/**\n * Dot density binning for dot plot construction.\n * Based on Leland Wilkinson, Dot Plots, The American Statistician, 1999.\n * https://www.cs.uic.edu/~wilkinson/Publications/dotplots.pdf\n * @constructor\n * @param {object} params - The parameters for this operator.\n * @param {function(object): *} params.field - The value field to bin.\n * @param {Array<function(object): *>} [params.groupby] - An array of accessors to groupby.\n * @param {number} [params.step] - The step size (bin width) within which dots should be\n *   stacked. Defaults to 1/30 of the extent of the data *field*.\n * @param {boolean} [params.smooth=false] - A boolean flag indicating if dot density\n *   stacks should be smoothed to reduce variance.\n */\n\nfunction DotBin(params) {\n  vega_dataflow__WEBPACK_IMPORTED_MODULE_1__[\"Transform\"].call(this, null, params);\n}\nDotBin.Definition = {\n  'type': 'DotBin',\n  'metadata': {\n    'modifies': true\n  },\n  'params': [{\n    'name': 'field',\n    'type': 'field',\n    'required': true\n  }, {\n    'name': 'groupby',\n    'type': 'field',\n    'array': true\n  }, {\n    'name': 'step',\n    'type': 'number'\n  }, {\n    'name': 'smooth',\n    'type': 'boolean',\n    'default': false\n  }, {\n    'name': 'as',\n    'type': 'string',\n    'default': Output\n  }]\n};\n\nconst autostep = (data, field) => Object(vega_util__WEBPACK_IMPORTED_MODULE_0__[\"span\"])(Object(vega_util__WEBPACK_IMPORTED_MODULE_0__[\"extent\"])(data, field)) / 30;\n\nObject(vega_util__WEBPACK_IMPORTED_MODULE_0__[\"inherits\"])(DotBin, vega_dataflow__WEBPACK_IMPORTED_MODULE_1__[\"Transform\"], {\n  transform(_, pulse) {\n    if (this.value && !(_.modified() || pulse.changed())) {\n      return pulse; // early exit\n    }\n\n    const source = pulse.materialize(pulse.SOURCE).source,\n          groups = partition$1(pulse.source, _.groupby, vega_util__WEBPACK_IMPORTED_MODULE_0__[\"identity\"]),\n          smooth = _.smooth || false,\n          field = _.field,\n          step = _.step || autostep(source, field),\n          sort = Object(vega_dataflow__WEBPACK_IMPORTED_MODULE_1__[\"stableCompare\"])((a, b) => field(a) - field(b)),\n          as = _.as || Output,\n          n = groups.length; // compute dotplot bins per group\n\n    let min = Infinity,\n        max = -Infinity,\n        i = 0,\n        j;\n\n    for (; i < n; ++i) {\n      const g = groups[i].sort(sort);\n      j = -1;\n\n      for (const v of Object(vega_statistics__WEBPACK_IMPORTED_MODULE_2__[\"dotbin\"])(g, step, smooth, field)) {\n        if (v < min) min = v;\n        if (v > max) max = v;\n        g[++j][as] = v;\n      }\n    }\n\n    this.value = {\n      start: min,\n      stop: max,\n      step: step\n    };\n    return pulse.reflow(true).modifies(as);\n  }\n\n});\n\n/**\n * Wraps an expression function with access to external parameters.\n * @constructor\n * @param {object} params - The parameters for this operator.\n * @param {function} params.expr - The expression function. The\n *  function should accept both a datum and a parameter object.\n *  This operator's value will be a new function that wraps the\n *  expression function with access to this operator's parameters.\n */\n\nfunction Expression(params) {\n  vega_dataflow__WEBPACK_IMPORTED_MODULE_1__[\"Operator\"].call(this, null, update$4, params);\n  this.modified(true);\n}\nObject(vega_util__WEBPACK_IMPORTED_MODULE_0__[\"inherits\"])(Expression, vega_dataflow__WEBPACK_IMPORTED_MODULE_1__[\"Operator\"]);\n\nfunction update$4(_) {\n  const expr = _.expr;\n  return this.value && !_.modified('expr') ? this.value : Object(vega_util__WEBPACK_IMPORTED_MODULE_0__[\"accessor\"])(datum => expr(datum, _), Object(vega_util__WEBPACK_IMPORTED_MODULE_0__[\"accessorFields\"])(expr), Object(vega_util__WEBPACK_IMPORTED_MODULE_0__[\"accessorName\"])(expr));\n}\n\n/**\n * Computes extents (min/max) for a data field.\n * @constructor\n * @param {object} params - The parameters for this operator.\n * @param {function(object): *} params.field - The field over which to compute extends.\n */\n\nfunction Extent(params) {\n  vega_dataflow__WEBPACK_IMPORTED_MODULE_1__[\"Transform\"].call(this, [undefined, undefined], params);\n}\nExtent.Definition = {\n  'type': 'Extent',\n  'metadata': {},\n  'params': [{\n    'name': 'field',\n    'type': 'field',\n    'required': true\n  }]\n};\nObject(vega_util__WEBPACK_IMPORTED_MODULE_0__[\"inherits\"])(Extent, vega_dataflow__WEBPACK_IMPORTED_MODULE_1__[\"Transform\"], {\n  transform(_, pulse) {\n    const extent = this.value,\n          field = _.field,\n          mod = pulse.changed() || pulse.modified(field.fields) || _.modified('field');\n\n    let min = extent[0],\n        max = extent[1];\n\n    if (mod || min == null) {\n      min = +Infinity;\n      max = -Infinity;\n    }\n\n    pulse.visit(mod ? pulse.SOURCE : pulse.ADD, t => {\n      const v = Object(vega_util__WEBPACK_IMPORTED_MODULE_0__[\"toNumber\"])(field(t));\n\n      if (v != null) {\n        // NaNs will fail all comparisons!\n        if (v < min) min = v;\n        if (v > max) max = v;\n      }\n    });\n\n    if (!Number.isFinite(min) || !Number.isFinite(max)) {\n      let name = Object(vega_util__WEBPACK_IMPORTED_MODULE_0__[\"accessorName\"])(field);\n      if (name) name = ` for field \"${name}\"`;\n      pulse.dataflow.warn(`Infinite extent${name}: [${min}, ${max}]`);\n      min = max = undefined;\n    }\n\n    this.value = [min, max];\n  }\n\n});\n\n/**\n * Provides a bridge between a parent transform and a target subflow that\n * consumes only a subset of the tuples that pass through the parent.\n * @constructor\n * @param {Pulse} pulse - A pulse to use as the value of this operator.\n * @param {Transform} parent - The parent transform (typically a Facet instance).\n */\n\nfunction Subflow(pulse, parent) {\n  vega_dataflow__WEBPACK_IMPORTED_MODULE_1__[\"Operator\"].call(this, pulse);\n  this.parent = parent;\n  this.count = 0;\n}\nObject(vega_util__WEBPACK_IMPORTED_MODULE_0__[\"inherits\"])(Subflow, vega_dataflow__WEBPACK_IMPORTED_MODULE_1__[\"Operator\"], {\n  /**\n   * Routes pulses from this subflow to a target transform.\n   * @param {Transform} target - A transform that receives the subflow of tuples.\n   */\n  connect(target) {\n    this.detachSubflow = target.detachSubflow;\n    this.targets().add(target);\n    return target.source = this;\n  },\n\n  /**\n   * Add an 'add' tuple to the subflow pulse.\n   * @param {Tuple} t - The tuple being added.\n   */\n  add(t) {\n    this.count += 1;\n    this.value.add.push(t);\n  },\n\n  /**\n   * Add a 'rem' tuple to the subflow pulse.\n   * @param {Tuple} t - The tuple being removed.\n   */\n  rem(t) {\n    this.count -= 1;\n    this.value.rem.push(t);\n  },\n\n  /**\n   * Add a 'mod' tuple to the subflow pulse.\n   * @param {Tuple} t - The tuple being modified.\n   */\n  mod(t) {\n    this.value.mod.push(t);\n  },\n\n  /**\n   * Re-initialize this operator's pulse value.\n   * @param {Pulse} pulse - The pulse to copy from.\n   * @see Pulse.init\n   */\n  init(pulse) {\n    this.value.init(pulse, pulse.NO_SOURCE);\n  },\n\n  /**\n   * Evaluate this operator. This method overrides the\n   * default behavior to simply return the contained pulse value.\n   * @return {Pulse}\n   */\n  evaluate() {\n    // assert: this.value.stamp === pulse.stamp\n    return this.value;\n  }\n\n});\n\n/**\n * Facets a dataflow into a set of subflows based on a key.\n * @constructor\n * @param {object} params - The parameters for this operator.\n * @param {function(Dataflow, string): Operator} params.subflow - A function\n *   that generates a subflow of operators and returns its root operator.\n * @param {function(object): *} params.key - The key field to facet by.\n */\n\nfunction Facet(params) {\n  vega_dataflow__WEBPACK_IMPORTED_MODULE_1__[\"Transform\"].call(this, {}, params);\n  this._keys = Object(vega_util__WEBPACK_IMPORTED_MODULE_0__[\"fastmap\"])(); // cache previously calculated key values\n  // keep track of active subflows, use as targets array for listeners\n  // this allows us to limit propagation to only updated subflows\n\n  const a = this._targets = [];\n  a.active = 0;\n\n  a.forEach = f => {\n    for (let i = 0, n = a.active; i < n; ++i) {\n      f(a[i], i, a);\n    }\n  };\n}\nObject(vega_util__WEBPACK_IMPORTED_MODULE_0__[\"inherits\"])(Facet, vega_dataflow__WEBPACK_IMPORTED_MODULE_1__[\"Transform\"], {\n  activate(flow) {\n    this._targets[this._targets.active++] = flow;\n  },\n\n  // parent argument provided by PreFacet subclass\n  subflow(key, flow, pulse, parent) {\n    const flows = this.value;\n    let sf = Object(vega_util__WEBPACK_IMPORTED_MODULE_0__[\"hasOwnProperty\"])(flows, key) && flows[key],\n        df,\n        p;\n\n    if (!sf) {\n      p = parent || (p = this._group[key]) && p.tuple;\n      df = pulse.dataflow;\n      sf = new Subflow(pulse.fork(pulse.NO_SOURCE), this);\n      df.add(sf).connect(flow(df, key, p));\n      flows[key] = sf;\n      this.activate(sf);\n    } else if (sf.value.stamp < pulse.stamp) {\n      sf.init(pulse);\n      this.activate(sf);\n    }\n\n    return sf;\n  },\n\n  clean() {\n    const flows = this.value;\n    let detached = 0;\n\n    for (const key in flows) {\n      if (flows[key].count === 0) {\n        const detach = flows[key].detachSubflow;\n        if (detach) detach();\n        delete flows[key];\n        ++detached;\n      }\n    } // remove inactive targets from the active targets array\n\n\n    if (detached) {\n      const active = this._targets.filter(sf => sf && sf.count > 0);\n\n      this.initTargets(active);\n    }\n  },\n\n  initTargets(act) {\n    const a = this._targets,\n          n = a.length,\n          m = act ? act.length : 0;\n    let i = 0;\n\n    for (; i < m; ++i) {\n      a[i] = act[i];\n    }\n\n    for (; i < n && a[i] != null; ++i) {\n      a[i] = null; // ensure old flows can be garbage collected\n    }\n\n    a.active = m;\n  },\n\n  transform(_, pulse) {\n    const df = pulse.dataflow,\n          key = _.key,\n          flow = _.subflow,\n          cache = this._keys,\n          rekey = _.modified('key'),\n          subflow = key => this.subflow(key, flow, pulse);\n\n    this._group = _.group || {};\n    this.initTargets(); // reset list of active subflows\n\n    pulse.visit(pulse.REM, t => {\n      const id = Object(vega_dataflow__WEBPACK_IMPORTED_MODULE_1__[\"tupleid\"])(t),\n            k = cache.get(id);\n\n      if (k !== undefined) {\n        cache.delete(id);\n        subflow(k).rem(t);\n      }\n    });\n    pulse.visit(pulse.ADD, t => {\n      const k = key(t);\n      cache.set(Object(vega_dataflow__WEBPACK_IMPORTED_MODULE_1__[\"tupleid\"])(t), k);\n      subflow(k).add(t);\n    });\n\n    if (rekey || pulse.modified(key.fields)) {\n      pulse.visit(pulse.MOD, t => {\n        const id = Object(vega_dataflow__WEBPACK_IMPORTED_MODULE_1__[\"tupleid\"])(t),\n              k0 = cache.get(id),\n              k1 = key(t);\n\n        if (k0 === k1) {\n          subflow(k1).mod(t);\n        } else {\n          cache.set(id, k1);\n          subflow(k0).rem(t);\n          subflow(k1).add(t);\n        }\n      });\n    } else if (pulse.changed(pulse.MOD)) {\n      pulse.visit(pulse.MOD, t => {\n        subflow(cache.get(Object(vega_dataflow__WEBPACK_IMPORTED_MODULE_1__[\"tupleid\"])(t))).mod(t);\n      });\n    }\n\n    if (rekey) {\n      pulse.visit(pulse.REFLOW, t => {\n        const id = Object(vega_dataflow__WEBPACK_IMPORTED_MODULE_1__[\"tupleid\"])(t),\n              k0 = cache.get(id),\n              k1 = key(t);\n\n        if (k0 !== k1) {\n          cache.set(id, k1);\n          subflow(k0).rem(t);\n          subflow(k1).add(t);\n        }\n      });\n    }\n\n    if (pulse.clean()) {\n      df.runAfter(() => {\n        this.clean();\n        cache.clean();\n      });\n    } else if (cache.empty > df.cleanThreshold) {\n      df.runAfter(cache.clean);\n    }\n\n    return pulse;\n  }\n\n});\n\n/**\n * Generates one or more field accessor functions.\n * If the 'name' parameter is an array, an array of field accessors\n * will be created and the 'as' parameter will be ignored.\n * @constructor\n * @param {object} params - The parameters for this operator.\n * @param {string} params.name - The field name(s) to access.\n * @param {string} params.as - The accessor function name.\n */\n\nfunction Field(params) {\n  vega_dataflow__WEBPACK_IMPORTED_MODULE_1__[\"Operator\"].call(this, null, update$3, params);\n}\nObject(vega_util__WEBPACK_IMPORTED_MODULE_0__[\"inherits\"])(Field, vega_dataflow__WEBPACK_IMPORTED_MODULE_1__[\"Operator\"]);\n\nfunction update$3(_) {\n  return this.value && !_.modified() ? this.value : Object(vega_util__WEBPACK_IMPORTED_MODULE_0__[\"isArray\"])(_.name) ? Object(vega_util__WEBPACK_IMPORTED_MODULE_0__[\"array\"])(_.name).map(f => Object(vega_util__WEBPACK_IMPORTED_MODULE_0__[\"field\"])(f)) : Object(vega_util__WEBPACK_IMPORTED_MODULE_0__[\"field\"])(_.name, _.as);\n}\n\n/**\n * Filters data tuples according to a predicate function.\n * @constructor\n * @param {object} params - The parameters for this operator.\n * @param {function(object): *} params.expr - The predicate expression function\n *   that determines a tuple's filter status. Truthy values pass the filter.\n */\n\nfunction Filter(params) {\n  vega_dataflow__WEBPACK_IMPORTED_MODULE_1__[\"Transform\"].call(this, Object(vega_util__WEBPACK_IMPORTED_MODULE_0__[\"fastmap\"])(), params);\n}\nFilter.Definition = {\n  'type': 'Filter',\n  'metadata': {\n    'changes': true\n  },\n  'params': [{\n    'name': 'expr',\n    'type': 'expr',\n    'required': true\n  }]\n};\nObject(vega_util__WEBPACK_IMPORTED_MODULE_0__[\"inherits\"])(Filter, vega_dataflow__WEBPACK_IMPORTED_MODULE_1__[\"Transform\"], {\n  transform(_, pulse) {\n    const df = pulse.dataflow,\n          cache = this.value,\n          // cache ids of filtered tuples\n    output = pulse.fork(),\n          add = output.add,\n          rem = output.rem,\n          mod = output.mod,\n          test = _.expr;\n    let isMod = true;\n    pulse.visit(pulse.REM, t => {\n      const id = Object(vega_dataflow__WEBPACK_IMPORTED_MODULE_1__[\"tupleid\"])(t);\n      if (!cache.has(id)) rem.push(t);else cache.delete(id);\n    });\n    pulse.visit(pulse.ADD, t => {\n      if (test(t, _)) add.push(t);else cache.set(Object(vega_dataflow__WEBPACK_IMPORTED_MODULE_1__[\"tupleid\"])(t), 1);\n    });\n\n    function revisit(t) {\n      const id = Object(vega_dataflow__WEBPACK_IMPORTED_MODULE_1__[\"tupleid\"])(t),\n            b = test(t, _),\n            s = cache.get(id);\n\n      if (b && s) {\n        cache.delete(id);\n        add.push(t);\n      } else if (!b && !s) {\n        cache.set(id, 1);\n        rem.push(t);\n      } else if (isMod && b && !s) {\n        mod.push(t);\n      }\n    }\n\n    pulse.visit(pulse.MOD, revisit);\n\n    if (_.modified()) {\n      isMod = false;\n      pulse.visit(pulse.REFLOW, revisit);\n    }\n\n    if (cache.empty > df.cleanThreshold) df.runAfter(cache.clean);\n    return output;\n  }\n\n});\n\n/**\n * Flattens array-typed field values into new data objects.\n * If multiple fields are specified, they are treated as parallel arrays,\n * with output values included for each matching index (or null if missing).\n * @constructor\n * @param {object} params - The parameters for this operator.\n * @param {Array<function(object): *>} params.fields - An array of field\n *   accessors for the tuple fields that should be flattened.\n * @param {string} [params.index] - Optional output field name for index\n *   value. If unspecified, no index field is included in the output.\n * @param {Array<string>} [params.as] - Output field names for flattened\n *   array fields. Any unspecified fields will use the field name provided\n *   by the fields accessors.\n */\n\nfunction Flatten(params) {\n  vega_dataflow__WEBPACK_IMPORTED_MODULE_1__[\"Transform\"].call(this, [], params);\n}\nFlatten.Definition = {\n  'type': 'Flatten',\n  'metadata': {\n    'generates': true\n  },\n  'params': [{\n    'name': 'fields',\n    'type': 'field',\n    'array': true,\n    'required': true\n  }, {\n    'name': 'index',\n    'type': 'string'\n  }, {\n    'name': 'as',\n    'type': 'string',\n    'array': true\n  }]\n};\nObject(vega_util__WEBPACK_IMPORTED_MODULE_0__[\"inherits\"])(Flatten, vega_dataflow__WEBPACK_IMPORTED_MODULE_1__[\"Transform\"], {\n  transform(_, pulse) {\n    const out = pulse.fork(pulse.NO_SOURCE),\n          fields = _.fields,\n          as = fieldNames(fields, _.as || []),\n          index = _.index || null,\n          m = as.length; // remove any previous results\n\n    out.rem = this.value; // generate flattened tuples\n\n    pulse.visit(pulse.SOURCE, t => {\n      const arrays = fields.map(f => f(t)),\n            maxlen = arrays.reduce((l, a) => Math.max(l, a.length), 0);\n      let i = 0,\n          j,\n          d,\n          v;\n\n      for (; i < maxlen; ++i) {\n        d = Object(vega_dataflow__WEBPACK_IMPORTED_MODULE_1__[\"derive\"])(t);\n\n        for (j = 0; j < m; ++j) {\n          d[as[j]] = (v = arrays[j][i]) == null ? null : v;\n        }\n\n        if (index) {\n          d[index] = i;\n        }\n\n        out.add.push(d);\n      }\n    });\n    this.value = out.source = out.add;\n    if (index) out.modifies(index);\n    return out.modifies(as);\n  }\n\n});\n\n/**\n * Folds one more tuple fields into multiple tuples in which the field\n * name and values are available under new 'key' and 'value' fields.\n * @constructor\n * @param {object} params - The parameters for this operator.\n * @param {function(object): *} params.fields - An array of field accessors\n *   for the tuple fields that should be folded.\n * @param {Array<string>} [params.as] - Output field names for folded key\n *   and value fields, defaults to ['key', 'value'].\n */\n\nfunction Fold(params) {\n  vega_dataflow__WEBPACK_IMPORTED_MODULE_1__[\"Transform\"].call(this, [], params);\n}\nFold.Definition = {\n  'type': 'Fold',\n  'metadata': {\n    'generates': true\n  },\n  'params': [{\n    'name': 'fields',\n    'type': 'field',\n    'array': true,\n    'required': true\n  }, {\n    'name': 'as',\n    'type': 'string',\n    'array': true,\n    'length': 2,\n    'default': ['key', 'value']\n  }]\n};\nObject(vega_util__WEBPACK_IMPORTED_MODULE_0__[\"inherits\"])(Fold, vega_dataflow__WEBPACK_IMPORTED_MODULE_1__[\"Transform\"], {\n  transform(_, pulse) {\n    const out = pulse.fork(pulse.NO_SOURCE),\n          fields = _.fields,\n          fnames = fields.map(vega_util__WEBPACK_IMPORTED_MODULE_0__[\"accessorName\"]),\n          as = _.as || ['key', 'value'],\n          k = as[0],\n          v = as[1],\n          n = fields.length;\n    out.rem = this.value;\n    pulse.visit(pulse.SOURCE, t => {\n      for (let i = 0, d; i < n; ++i) {\n        d = Object(vega_dataflow__WEBPACK_IMPORTED_MODULE_1__[\"derive\"])(t);\n        d[k] = fnames[i];\n        d[v] = fields[i](t);\n        out.add.push(d);\n      }\n    });\n    this.value = out.source = out.add;\n    return out.modifies(as);\n  }\n\n});\n\n/**\n * Invokes a function for each data tuple and saves the results as a new field.\n * @constructor\n * @param {object} params - The parameters for this operator.\n * @param {function(object): *} params.expr - The formula function to invoke for each tuple.\n * @param {string} params.as - The field name under which to save the result.\n * @param {boolean} [params.initonly=false] - If true, the formula is applied to\n *   added tuples only, and does not update in response to modifications.\n */\n\nfunction Formula(params) {\n  vega_dataflow__WEBPACK_IMPORTED_MODULE_1__[\"Transform\"].call(this, null, params);\n}\nFormula.Definition = {\n  'type': 'Formula',\n  'metadata': {\n    'modifies': true\n  },\n  'params': [{\n    'name': 'expr',\n    'type': 'expr',\n    'required': true\n  }, {\n    'name': 'as',\n    'type': 'string',\n    'required': true\n  }, {\n    'name': 'initonly',\n    'type': 'boolean'\n  }]\n};\nObject(vega_util__WEBPACK_IMPORTED_MODULE_0__[\"inherits\"])(Formula, vega_dataflow__WEBPACK_IMPORTED_MODULE_1__[\"Transform\"], {\n  transform(_, pulse) {\n    const func = _.expr,\n          as = _.as,\n          mod = _.modified(),\n          flag = _.initonly ? pulse.ADD : mod ? pulse.SOURCE : pulse.modified(func.fields) || pulse.modified(as) ? pulse.ADD_MOD : pulse.ADD;\n\n    if (mod) {\n      // parameters updated, need to reflow\n      pulse = pulse.materialize().reflow(true);\n    }\n\n    if (!_.initonly) {\n      pulse.modifies(as);\n    }\n\n    return pulse.visit(flag, t => t[as] = func(t, _));\n  }\n\n});\n\n/**\n * Generates data tuples using a provided generator function.\n * @constructor\n * @param {object} params - The parameters for this operator.\n * @param {function(Parameters): object} params.generator - A tuple generator\n *   function. This function is given the operator parameters as input.\n *   Changes to any additional parameters will not trigger re-calculation\n *   of previously generated tuples. Only future tuples are affected.\n * @param {number} params.size - The number of tuples to produce.\n */\n\nfunction Generate(params) {\n  vega_dataflow__WEBPACK_IMPORTED_MODULE_1__[\"Transform\"].call(this, [], params);\n}\nObject(vega_util__WEBPACK_IMPORTED_MODULE_0__[\"inherits\"])(Generate, vega_dataflow__WEBPACK_IMPORTED_MODULE_1__[\"Transform\"], {\n  transform(_, pulse) {\n    const out = pulse.fork(pulse.ALL),\n          gen = _.generator;\n    let data = this.value,\n        num = _.size - data.length,\n        add,\n        rem,\n        t;\n\n    if (num > 0) {\n      // need more tuples, generate and add\n      for (add = []; --num >= 0;) {\n        add.push(t = Object(vega_dataflow__WEBPACK_IMPORTED_MODULE_1__[\"ingest\"])(gen(_)));\n        data.push(t);\n      }\n\n      out.add = out.add.length ? out.materialize(out.ADD).add.concat(add) : add;\n    } else {\n      // need fewer tuples, remove\n      rem = data.slice(0, -num);\n      out.rem = out.rem.length ? out.materialize(out.REM).rem.concat(rem) : rem;\n      data = data.slice(-num);\n    }\n\n    out.source = this.value = data;\n    return out;\n  }\n\n});\n\nconst Methods = {\n  value: 'value',\n  median: d3_array__WEBPACK_IMPORTED_MODULE_3__[\"median\"],\n  mean: d3_array__WEBPACK_IMPORTED_MODULE_3__[\"mean\"],\n  min: d3_array__WEBPACK_IMPORTED_MODULE_3__[\"min\"],\n  max: d3_array__WEBPACK_IMPORTED_MODULE_3__[\"max\"]\n};\nconst Empty = [];\n/**\n * Impute missing values.\n * @constructor\n * @param {object} params - The parameters for this operator.\n * @param {function(object): *} params.field - The value field to impute.\n * @param {Array<function(object): *>} [params.groupby] - An array of\n *   accessors to determine series within which to perform imputation.\n * @param {function(object): *} params.key - An accessor for a key value.\n *   Each key value should be unique within a group. New tuples will be\n *   imputed for any key values that are not found within a group.\n * @param {Array<*>} [params.keyvals] - Optional array of required key\n *   values. New tuples will be imputed for any key values that are not\n *   found within a group. In addition, these values will be automatically\n *   augmented with the key values observed in the input data.\n * @param {string} [method='value'] - The imputation method to use. One of\n *   'value', 'mean', 'median', 'max', 'min'.\n * @param {*} [value=0] - The constant value to use for imputation\n *   when using method 'value'.\n */\n\nfunction Impute(params) {\n  vega_dataflow__WEBPACK_IMPORTED_MODULE_1__[\"Transform\"].call(this, [], params);\n}\nImpute.Definition = {\n  'type': 'Impute',\n  'metadata': {\n    'changes': true\n  },\n  'params': [{\n    'name': 'field',\n    'type': 'field',\n    'required': true\n  }, {\n    'name': 'key',\n    'type': 'field',\n    'required': true\n  }, {\n    'name': 'keyvals',\n    'array': true\n  }, {\n    'name': 'groupby',\n    'type': 'field',\n    'array': true\n  }, {\n    'name': 'method',\n    'type': 'enum',\n    'default': 'value',\n    'values': ['value', 'mean', 'median', 'max', 'min']\n  }, {\n    'name': 'value',\n    'default': 0\n  }]\n};\n\nfunction getValue(_) {\n  var m = _.method || Methods.value,\n      v;\n\n  if (Methods[m] == null) {\n    Object(vega_util__WEBPACK_IMPORTED_MODULE_0__[\"error\"])('Unrecognized imputation method: ' + m);\n  } else if (m === Methods.value) {\n    v = _.value !== undefined ? _.value : 0;\n    return () => v;\n  } else {\n    return Methods[m];\n  }\n}\n\nfunction getField(_) {\n  const f = _.field;\n  return t => t ? f(t) : NaN;\n}\n\nObject(vega_util__WEBPACK_IMPORTED_MODULE_0__[\"inherits\"])(Impute, vega_dataflow__WEBPACK_IMPORTED_MODULE_1__[\"Transform\"], {\n  transform(_, pulse) {\n    var out = pulse.fork(pulse.ALL),\n        impute = getValue(_),\n        field = getField(_),\n        fName = Object(vega_util__WEBPACK_IMPORTED_MODULE_0__[\"accessorName\"])(_.field),\n        kName = Object(vega_util__WEBPACK_IMPORTED_MODULE_0__[\"accessorName\"])(_.key),\n        gNames = (_.groupby || []).map(vega_util__WEBPACK_IMPORTED_MODULE_0__[\"accessorName\"]),\n        groups = partition(pulse.source, _.groupby, _.key, _.keyvals),\n        curr = [],\n        prev = this.value,\n        m = groups.domain.length,\n        group,\n        value,\n        gVals,\n        kVal,\n        g,\n        i,\n        j,\n        l,\n        n,\n        t;\n\n    for (g = 0, l = groups.length; g < l; ++g) {\n      group = groups[g];\n      gVals = group.values;\n      value = NaN; // add tuples for missing values\n\n      for (j = 0; j < m; ++j) {\n        if (group[j] != null) continue;\n        kVal = groups.domain[j];\n        t = {\n          _impute: true\n        };\n\n        for (i = 0, n = gVals.length; i < n; ++i) t[gNames[i]] = gVals[i];\n\n        t[kName] = kVal;\n        t[fName] = Number.isNaN(value) ? value = impute(group, field) : value;\n        curr.push(Object(vega_dataflow__WEBPACK_IMPORTED_MODULE_1__[\"ingest\"])(t));\n      }\n    } // update pulse with imputed tuples\n\n\n    if (curr.length) out.add = out.materialize(out.ADD).add.concat(curr);\n    if (prev.length) out.rem = out.materialize(out.REM).rem.concat(prev);\n    this.value = curr;\n    return out;\n  }\n\n});\n\nfunction partition(data, groupby, key, keyvals) {\n  var get = f => f(t),\n      groups = [],\n      domain = keyvals ? keyvals.slice() : [],\n      kMap = {},\n      gMap = {},\n      gVals,\n      gKey,\n      group,\n      i,\n      j,\n      k,\n      n,\n      t;\n\n  domain.forEach((k, i) => kMap[k] = i + 1);\n\n  for (i = 0, n = data.length; i < n; ++i) {\n    t = data[i];\n    k = key(t);\n    j = kMap[k] || (kMap[k] = domain.push(k));\n    gKey = (gVals = groupby ? groupby.map(get) : Empty) + '';\n\n    if (!(group = gMap[gKey])) {\n      group = gMap[gKey] = [];\n      groups.push(group);\n      group.values = gVals;\n    }\n\n    group[j - 1] = t;\n  }\n\n  groups.domain = domain;\n  return groups;\n}\n\n/**\n * Extend input tuples with aggregate values.\n * Calcuates aggregate values and joins them with the input stream.\n * @constructor\n */\n\nfunction JoinAggregate(params) {\n  Aggregate.call(this, params);\n}\nJoinAggregate.Definition = {\n  'type': 'JoinAggregate',\n  'metadata': {\n    'modifies': true\n  },\n  'params': [{\n    'name': 'groupby',\n    'type': 'field',\n    'array': true\n  }, {\n    'name': 'fields',\n    'type': 'field',\n    'null': true,\n    'array': true\n  }, {\n    'name': 'ops',\n    'type': 'enum',\n    'array': true,\n    'values': ValidAggregateOps\n  }, {\n    'name': 'as',\n    'type': 'string',\n    'null': true,\n    'array': true\n  }, {\n    'name': 'key',\n    'type': 'field'\n  }]\n};\nObject(vega_util__WEBPACK_IMPORTED_MODULE_0__[\"inherits\"])(JoinAggregate, Aggregate, {\n  transform(_, pulse) {\n    const aggr = this,\n          mod = _.modified();\n\n    let cells; // process all input tuples to calculate aggregates\n\n    if (aggr.value && (mod || pulse.modified(aggr._inputs, true))) {\n      cells = aggr.value = mod ? aggr.init(_) : {};\n      pulse.visit(pulse.SOURCE, t => aggr.add(t));\n    } else {\n      cells = aggr.value = aggr.value || this.init(_);\n      pulse.visit(pulse.REM, t => aggr.rem(t));\n      pulse.visit(pulse.ADD, t => aggr.add(t));\n    } // update aggregation cells\n\n\n    aggr.changes(); // write aggregate values to input tuples\n\n    pulse.visit(pulse.SOURCE, t => {\n      Object(vega_util__WEBPACK_IMPORTED_MODULE_0__[\"extend\"])(t, cells[aggr.cellkey(t)].tuple);\n    });\n    return pulse.reflow(mod).modifies(this._outputs);\n  },\n\n  changes() {\n    const adds = this._adds,\n          mods = this._mods;\n    let i, n;\n\n    for (i = 0, n = this._alen; i < n; ++i) {\n      this.celltuple(adds[i]);\n      adds[i] = null; // for garbage collection\n    }\n\n    for (i = 0, n = this._mlen; i < n; ++i) {\n      this.celltuple(mods[i]);\n      mods[i] = null; // for garbage collection\n    }\n\n    this._alen = this._mlen = 0; // reset list of active cells\n  }\n\n});\n\n/**\n * Compute kernel density estimates (KDE) for one or more data groups.\n * @constructor\n * @param {object} params - The parameters for this operator.\n * @param {Array<function(object): *>} [params.groupby] - An array of accessors\n *   to groupby.\n * @param {function(object): *} params.field - An accessor for the data field\n *   to estimate.\n * @param {number} [params.bandwidth=0] - The KDE kernel bandwidth.\n *   If zero or unspecified, the bandwidth is automatically determined.\n * @param {boolean} [params.counts=false] - A boolean flag indicating if the\n *   output values should be probability estimates (false, default) or\n *   smoothed counts (true).\n * @param {string} [params.cumulative=false] - A boolean flag indicating if a\n *   density (false) or cumulative distribution (true) should be generated.\n * @param {Array<number>} [params.extent] - The domain extent over which to\n *   plot the density. If unspecified, the [min, max] data extent is used.\n * @param {string} [params.resolve='independent'] - Indicates how parameters for\n *   multiple densities should be resolved. If \"independent\" (the default), each\n *   density may have its own domain extent and dynamic number of curve sample\n *   steps. If \"shared\", the KDE transform will ensure that all densities are\n *   defined over a shared domain and curve steps, enabling stacking.\n * @param {number} [params.minsteps=25] - The minimum number of curve samples\n *   for plotting the density.\n * @param {number} [params.maxsteps=200] - The maximum number of curve samples\n *   for plotting the density.\n * @param {number} [params.steps] - The exact number of curve samples for\n *   plotting the density. If specified, overrides both minsteps and maxsteps\n *   to set an exact number of uniform samples. Useful in conjunction with\n *   a fixed extent to ensure consistent sample points for stacked densities.\n */\n\nfunction KDE(params) {\n  vega_dataflow__WEBPACK_IMPORTED_MODULE_1__[\"Transform\"].call(this, null, params);\n}\nKDE.Definition = {\n  'type': 'KDE',\n  'metadata': {\n    'generates': true\n  },\n  'params': [{\n    'name': 'groupby',\n    'type': 'field',\n    'array': true\n  }, {\n    'name': 'field',\n    'type': 'field',\n    'required': true\n  }, {\n    'name': 'cumulative',\n    'type': 'boolean',\n    'default': false\n  }, {\n    'name': 'counts',\n    'type': 'boolean',\n    'default': false\n  }, {\n    'name': 'bandwidth',\n    'type': 'number',\n    'default': 0\n  }, {\n    'name': 'extent',\n    'type': 'number',\n    'array': true,\n    'length': 2\n  }, {\n    'name': 'resolve',\n    'type': 'enum',\n    'values': ['shared', 'independent'],\n    'default': 'independent'\n  }, {\n    'name': 'steps',\n    'type': 'number'\n  }, {\n    'name': 'minsteps',\n    'type': 'number',\n    'default': 25\n  }, {\n    'name': 'maxsteps',\n    'type': 'number',\n    'default': 200\n  }, {\n    'name': 'as',\n    'type': 'string',\n    'array': true,\n    'default': ['value', 'density']\n  }]\n};\nObject(vega_util__WEBPACK_IMPORTED_MODULE_0__[\"inherits\"])(KDE, vega_dataflow__WEBPACK_IMPORTED_MODULE_1__[\"Transform\"], {\n  transform(_, pulse) {\n    const out = pulse.fork(pulse.NO_SOURCE | pulse.NO_FIELDS);\n\n    if (!this.value || pulse.changed() || _.modified()) {\n      const source = pulse.materialize(pulse.SOURCE).source,\n            groups = partition$1(source, _.groupby, _.field),\n            names = (_.groupby || []).map(vega_util__WEBPACK_IMPORTED_MODULE_0__[\"accessorName\"]),\n            bandwidth = _.bandwidth,\n            method = _.cumulative ? 'cdf' : 'pdf',\n            as = _.as || ['value', 'density'],\n            values = [];\n      let domain = _.extent,\n          minsteps = _.steps || _.minsteps || 25,\n          maxsteps = _.steps || _.maxsteps || 200;\n\n      if (method !== 'pdf' && method !== 'cdf') {\n        Object(vega_util__WEBPACK_IMPORTED_MODULE_0__[\"error\"])('Invalid density method: ' + method);\n      }\n\n      if (_.resolve === 'shared') {\n        if (!domain) domain = Object(vega_util__WEBPACK_IMPORTED_MODULE_0__[\"extent\"])(source, _.field);\n        minsteps = maxsteps = _.steps || maxsteps;\n      }\n\n      groups.forEach(g => {\n        const density = Object(vega_statistics__WEBPACK_IMPORTED_MODULE_2__[\"randomKDE\"])(g, bandwidth)[method],\n              scale = _.counts ? g.length : 1,\n              local = domain || Object(vega_util__WEBPACK_IMPORTED_MODULE_0__[\"extent\"])(g);\n        Object(vega_statistics__WEBPACK_IMPORTED_MODULE_2__[\"sampleCurve\"])(density, local, minsteps, maxsteps).forEach(v => {\n          const t = {};\n\n          for (let i = 0; i < names.length; ++i) {\n            t[names[i]] = g.dims[i];\n          }\n\n          t[as[0]] = v[0];\n          t[as[1]] = v[1] * scale;\n          values.push(Object(vega_dataflow__WEBPACK_IMPORTED_MODULE_1__[\"ingest\"])(t));\n        });\n      });\n      if (this.value) out.rem = this.value;\n      this.value = out.add = out.source = values;\n    }\n\n    return out;\n  }\n\n});\n\n/**\n * Generates a key function.\n * @constructor\n * @param {object} params - The parameters for this operator.\n * @param {Array<string>} params.fields - The field name(s) for the key function.\n * @param {boolean} params.flat - A boolean flag indicating if the field names\n *  should be treated as flat property names, side-stepping nested field\n *  lookups normally indicated by dot or bracket notation.\n */\n\nfunction Key(params) {\n  vega_dataflow__WEBPACK_IMPORTED_MODULE_1__[\"Operator\"].call(this, null, update$2, params);\n}\nObject(vega_util__WEBPACK_IMPORTED_MODULE_0__[\"inherits\"])(Key, vega_dataflow__WEBPACK_IMPORTED_MODULE_1__[\"Operator\"]);\n\nfunction update$2(_) {\n  return this.value && !_.modified() ? this.value : Object(vega_util__WEBPACK_IMPORTED_MODULE_0__[\"key\"])(_.fields, _.flat);\n}\n\n/**\n * Load and parse data from an external source. Marshalls parameter\n * values and then invokes the Dataflow request method.\n * @constructor\n * @param {object} params - The parameters for this operator.\n * @param {string} params.url - The URL to load from.\n * @param {object} params.format - The data format options.\n */\n\nfunction Load(params) {\n  vega_dataflow__WEBPACK_IMPORTED_MODULE_1__[\"Transform\"].call(this, [], params);\n  this._pending = null;\n}\nObject(vega_util__WEBPACK_IMPORTED_MODULE_0__[\"inherits\"])(Load, vega_dataflow__WEBPACK_IMPORTED_MODULE_1__[\"Transform\"], {\n  transform(_, pulse) {\n    const df = pulse.dataflow;\n\n    if (this._pending) {\n      // update state and return pulse\n      return output(this, pulse, this._pending);\n    }\n\n    if (stop(_)) return pulse.StopPropagation;\n\n    if (_.values) {\n      // parse and ingest values, return output pulse\n      return output(this, pulse, df.parse(_.values, _.format));\n    } else if (_.async) {\n      // return promise for non-blocking async loading\n      const p = df.request(_.url, _.format).then(res => {\n        this._pending = Object(vega_util__WEBPACK_IMPORTED_MODULE_0__[\"array\"])(res.data);\n        return df => df.touch(this);\n      });\n      return {\n        async: p\n      };\n    } else {\n      // return promise for synchronous loading\n      return df.request(_.url, _.format).then(res => output(this, pulse, Object(vega_util__WEBPACK_IMPORTED_MODULE_0__[\"array\"])(res.data)));\n    }\n  }\n\n});\n\nfunction stop(_) {\n  return _.modified('async') && !(_.modified('values') || _.modified('url') || _.modified('format'));\n}\n\nfunction output(op, pulse, data) {\n  data.forEach(vega_dataflow__WEBPACK_IMPORTED_MODULE_1__[\"ingest\"]);\n  const out = pulse.fork(pulse.NO_FIELDS & pulse.NO_SOURCE);\n  out.rem = op.value;\n  op.value = out.source = out.add = data;\n  op._pending = null;\n  if (out.rem.length) out.clean(true);\n  return out;\n}\n\n/**\n * Extend tuples by joining them with values from a lookup table.\n * @constructor\n * @param {object} params - The parameters for this operator.\n * @param {Map} params.index - The lookup table map.\n * @param {Array<function(object): *} params.fields - The fields to lookup.\n * @param {Array<string>} params.as - Output field names for each lookup value.\n * @param {*} [params.default] - A default value to use if lookup fails.\n */\n\nfunction Lookup(params) {\n  vega_dataflow__WEBPACK_IMPORTED_MODULE_1__[\"Transform\"].call(this, {}, params);\n}\nLookup.Definition = {\n  'type': 'Lookup',\n  'metadata': {\n    'modifies': true\n  },\n  'params': [{\n    'name': 'index',\n    'type': 'index',\n    'params': [{\n      'name': 'from',\n      'type': 'data',\n      'required': true\n    }, {\n      'name': 'key',\n      'type': 'field',\n      'required': true\n    }]\n  }, {\n    'name': 'values',\n    'type': 'field',\n    'array': true\n  }, {\n    'name': 'fields',\n    'type': 'field',\n    'array': true,\n    'required': true\n  }, {\n    'name': 'as',\n    'type': 'string',\n    'array': true\n  }, {\n    'name': 'default',\n    'default': null\n  }]\n};\nObject(vega_util__WEBPACK_IMPORTED_MODULE_0__[\"inherits\"])(Lookup, vega_dataflow__WEBPACK_IMPORTED_MODULE_1__[\"Transform\"], {\n  transform(_, pulse) {\n    const keys = _.fields,\n          index = _.index,\n          values = _.values,\n          defaultValue = _.default == null ? null : _.default,\n          reset = _.modified(),\n          n = keys.length;\n\n    let flag = reset ? pulse.SOURCE : pulse.ADD,\n        out = pulse,\n        as = _.as,\n        set,\n        m,\n        mods;\n\n    if (values) {\n      m = values.length;\n\n      if (n > 1 && !as) {\n        Object(vega_util__WEBPACK_IMPORTED_MODULE_0__[\"error\"])('Multi-field lookup requires explicit \"as\" parameter.');\n      }\n\n      if (as && as.length !== n * m) {\n        Object(vega_util__WEBPACK_IMPORTED_MODULE_0__[\"error\"])('The \"as\" parameter has too few output field names.');\n      }\n\n      as = as || values.map(vega_util__WEBPACK_IMPORTED_MODULE_0__[\"accessorName\"]);\n\n      set = function (t) {\n        for (var i = 0, k = 0, j, v; i < n; ++i) {\n          v = index.get(keys[i](t));\n          if (v == null) for (j = 0; j < m; ++j, ++k) t[as[k]] = defaultValue;else for (j = 0; j < m; ++j, ++k) t[as[k]] = values[j](v);\n        }\n      };\n    } else {\n      if (!as) {\n        Object(vega_util__WEBPACK_IMPORTED_MODULE_0__[\"error\"])('Missing output field names.');\n      }\n\n      set = function (t) {\n        for (var i = 0, v; i < n; ++i) {\n          v = index.get(keys[i](t));\n          t[as[i]] = v == null ? defaultValue : v;\n        }\n      };\n    }\n\n    if (reset) {\n      out = pulse.reflow(true);\n    } else {\n      mods = keys.some(k => pulse.modified(k.fields));\n      flag |= mods ? pulse.MOD : 0;\n    }\n\n    pulse.visit(flag, set);\n    return out.modifies(as);\n  }\n\n});\n\n/**\n * Computes global min/max extents over a collection of extents.\n * @constructor\n * @param {object} params - The parameters for this operator.\n * @param {Array<Array<number>>} params.extents - The input extents.\n */\n\nfunction MultiExtent(params) {\n  vega_dataflow__WEBPACK_IMPORTED_MODULE_1__[\"Operator\"].call(this, null, update$1, params);\n}\nObject(vega_util__WEBPACK_IMPORTED_MODULE_0__[\"inherits\"])(MultiExtent, vega_dataflow__WEBPACK_IMPORTED_MODULE_1__[\"Operator\"]);\n\nfunction update$1(_) {\n  if (this.value && !_.modified()) {\n    return this.value;\n  }\n\n  const ext = _.extents,\n        n = ext.length;\n  let min = +Infinity,\n      max = -Infinity,\n      i,\n      e;\n\n  for (i = 0; i < n; ++i) {\n    e = ext[i];\n    if (e[0] < min) min = e[0];\n    if (e[1] > max) max = e[1];\n  }\n\n  return [min, max];\n}\n\n/**\n * Merge a collection of value arrays.\n * @constructor\n * @param {object} params - The parameters for this operator.\n * @param {Array<Array<*>>} params.values - The input value arrrays.\n */\n\nfunction MultiValues(params) {\n  vega_dataflow__WEBPACK_IMPORTED_MODULE_1__[\"Operator\"].call(this, null, update, params);\n}\nObject(vega_util__WEBPACK_IMPORTED_MODULE_0__[\"inherits\"])(MultiValues, vega_dataflow__WEBPACK_IMPORTED_MODULE_1__[\"Operator\"]);\n\nfunction update(_) {\n  return this.value && !_.modified() ? this.value : _.values.reduce((data, _) => data.concat(_), []);\n}\n\n/**\n * Operator whose value is simply its parameter hash. This operator is\n * useful for enabling reactive updates to values of nested objects.\n * @constructor\n * @param {object} params - The parameters for this operator.\n */\n\nfunction Params(params) {\n  vega_dataflow__WEBPACK_IMPORTED_MODULE_1__[\"Transform\"].call(this, null, params);\n}\nObject(vega_util__WEBPACK_IMPORTED_MODULE_0__[\"inherits\"])(Params, vega_dataflow__WEBPACK_IMPORTED_MODULE_1__[\"Transform\"], {\n  transform(_, pulse) {\n    this.modified(_.modified());\n    this.value = _;\n    return pulse.fork(pulse.NO_SOURCE | pulse.NO_FIELDS); // do not pass tuples\n  }\n\n});\n\n/**\n * Aggregate and pivot selected field values to become new fields.\n * This operator is useful to construction cross-tabulations.\n * @constructor\n * @param {Array<function(object): *>} [params.groupby] - An array of accessors\n *  to groupby. These fields act just like groupby fields of an Aggregate transform.\n * @param {function(object): *} params.field - The field to pivot on. The unique\n *  values of this field become new field names in the output stream.\n * @param {function(object): *} params.value - The field to populate pivoted fields.\n *  The aggregate values of this field become the values of the new pivoted fields.\n * @param {string} [params.op] - The aggregation operation for the value field,\n *  applied per cell in the output stream. The default is \"sum\".\n * @param {number} [params.limit] - An optional parameter indicating the maximum\n *  number of pivoted fields to generate. The pivoted field names are sorted in\n *  ascending order prior to enforcing the limit.\n */\n\nfunction Pivot(params) {\n  Aggregate.call(this, params);\n}\nPivot.Definition = {\n  'type': 'Pivot',\n  'metadata': {\n    'generates': true,\n    'changes': true\n  },\n  'params': [{\n    'name': 'groupby',\n    'type': 'field',\n    'array': true\n  }, {\n    'name': 'field',\n    'type': 'field',\n    'required': true\n  }, {\n    'name': 'value',\n    'type': 'field',\n    'required': true\n  }, {\n    'name': 'op',\n    'type': 'enum',\n    'values': ValidAggregateOps,\n    'default': 'sum'\n  }, {\n    'name': 'limit',\n    'type': 'number',\n    'default': 0\n  }, {\n    'name': 'key',\n    'type': 'field'\n  }]\n};\nObject(vega_util__WEBPACK_IMPORTED_MODULE_0__[\"inherits\"])(Pivot, Aggregate, {\n  _transform: Aggregate.prototype.transform,\n\n  transform(_, pulse) {\n    return this._transform(aggregateParams(_, pulse), pulse);\n  }\n\n}); // Shoehorn a pivot transform into an aggregate transform!\n// First collect all unique pivot field values.\n// Then generate aggregate fields for each output pivot field.\n\nfunction aggregateParams(_, pulse) {\n  const key = _.field,\n        value = _.value,\n        op = (_.op === 'count' ? '__count__' : _.op) || 'sum',\n        fields = Object(vega_util__WEBPACK_IMPORTED_MODULE_0__[\"accessorFields\"])(key).concat(Object(vega_util__WEBPACK_IMPORTED_MODULE_0__[\"accessorFields\"])(value)),\n        keys = pivotKeys(key, _.limit || 0, pulse); // if data stream content changes, pivot fields may change\n  // flag parameter modification to ensure re-initialization\n\n  if (pulse.changed()) _.set('__pivot__', null, null, true);\n  return {\n    key: _.key,\n    groupby: _.groupby,\n    ops: keys.map(() => op),\n    fields: keys.map(k => get(k, key, value, fields)),\n    as: keys.map(k => k + ''),\n    modified: _.modified.bind(_)\n  };\n} // Generate aggregate field accessor.\n// Output NaN for non-existent values; aggregator will ignore!\n\n\nfunction get(k, key, value, fields) {\n  return Object(vega_util__WEBPACK_IMPORTED_MODULE_0__[\"accessor\"])(d => key(d) === k ? value(d) : NaN, fields, k + '');\n} // Collect (and optionally limit) all unique pivot values.\n\n\nfunction pivotKeys(key, limit, pulse) {\n  const map = {},\n        list = [];\n  pulse.visit(pulse.SOURCE, t => {\n    const k = key(t);\n\n    if (!map[k]) {\n      map[k] = 1;\n      list.push(k);\n    }\n  });\n  list.sort(vega_util__WEBPACK_IMPORTED_MODULE_0__[\"ascending\"]);\n  return limit ? list.slice(0, limit) : list;\n}\n\n/**\n * Partitions pre-faceted data into tuple subflows.\n * @constructor\n * @param {object} params - The parameters for this operator.\n * @param {function(Dataflow, string): Operator} params.subflow - A function\n *   that generates a subflow of operators and returns its root operator.\n * @param {function(object): Array<object>} params.field - The field\n *   accessor for an array of subflow tuple objects.\n */\n\nfunction PreFacet(params) {\n  Facet.call(this, params);\n}\nObject(vega_util__WEBPACK_IMPORTED_MODULE_0__[\"inherits\"])(PreFacet, Facet, {\n  transform(_, pulse) {\n    const flow = _.subflow,\n          field = _.field,\n          subflow = t => this.subflow(Object(vega_dataflow__WEBPACK_IMPORTED_MODULE_1__[\"tupleid\"])(t), flow, pulse, t);\n\n    if (_.modified('field') || field && pulse.modified(Object(vega_util__WEBPACK_IMPORTED_MODULE_0__[\"accessorFields\"])(field))) {\n      Object(vega_util__WEBPACK_IMPORTED_MODULE_0__[\"error\"])('PreFacet does not support field modification.');\n    }\n\n    this.initTargets(); // reset list of active subflows\n\n    if (field) {\n      pulse.visit(pulse.MOD, t => {\n        const sf = subflow(t);\n        field(t).forEach(_ => sf.mod(_));\n      });\n      pulse.visit(pulse.ADD, t => {\n        const sf = subflow(t);\n        field(t).forEach(_ => sf.add(Object(vega_dataflow__WEBPACK_IMPORTED_MODULE_1__[\"ingest\"])(_)));\n      });\n      pulse.visit(pulse.REM, t => {\n        const sf = subflow(t);\n        field(t).forEach(_ => sf.rem(_));\n      });\n    } else {\n      pulse.visit(pulse.MOD, t => subflow(t).mod(t));\n      pulse.visit(pulse.ADD, t => subflow(t).add(t));\n      pulse.visit(pulse.REM, t => subflow(t).rem(t));\n    }\n\n    if (pulse.clean()) {\n      pulse.runAfter(() => this.clean());\n    }\n\n    return pulse;\n  }\n\n});\n\n/**\n * Performs a relational projection, copying selected fields from source\n * tuples to a new set of derived tuples.\n * @constructor\n * @param {object} params - The parameters for this operator.\n * @param {Array<function(object): *} params.fields - The fields to project,\n *   as an array of field accessors. If unspecified, all fields will be\n *   copied with names unchanged.\n * @param {Array<string>} [params.as] - Output field names for each projected\n *   field. Any unspecified fields will use the field name provided by\n *   the field accessor.\n */\n\nfunction Project(params) {\n  vega_dataflow__WEBPACK_IMPORTED_MODULE_1__[\"Transform\"].call(this, null, params);\n}\nProject.Definition = {\n  'type': 'Project',\n  'metadata': {\n    'generates': true,\n    'changes': true\n  },\n  'params': [{\n    'name': 'fields',\n    'type': 'field',\n    'array': true\n  }, {\n    'name': 'as',\n    'type': 'string',\n    'null': true,\n    'array': true\n  }]\n};\nObject(vega_util__WEBPACK_IMPORTED_MODULE_0__[\"inherits\"])(Project, vega_dataflow__WEBPACK_IMPORTED_MODULE_1__[\"Transform\"], {\n  transform(_, pulse) {\n    const out = pulse.fork(pulse.NO_SOURCE),\n          fields = _.fields,\n          as = fieldNames(_.fields, _.as || []),\n          derive = fields ? (s, t) => project(s, t, fields, as) : vega_dataflow__WEBPACK_IMPORTED_MODULE_1__[\"rederive\"];\n    let lut;\n\n    if (this.value) {\n      lut = this.value;\n    } else {\n      pulse = pulse.addAll();\n      lut = this.value = {};\n    }\n\n    pulse.visit(pulse.REM, t => {\n      const id = Object(vega_dataflow__WEBPACK_IMPORTED_MODULE_1__[\"tupleid\"])(t);\n      out.rem.push(lut[id]);\n      lut[id] = null;\n    });\n    pulse.visit(pulse.ADD, t => {\n      const dt = derive(t, Object(vega_dataflow__WEBPACK_IMPORTED_MODULE_1__[\"ingest\"])({}));\n      lut[Object(vega_dataflow__WEBPACK_IMPORTED_MODULE_1__[\"tupleid\"])(t)] = dt;\n      out.add.push(dt);\n    });\n    pulse.visit(pulse.MOD, t => {\n      out.mod.push(derive(t, lut[Object(vega_dataflow__WEBPACK_IMPORTED_MODULE_1__[\"tupleid\"])(t)]));\n    });\n    return out;\n  }\n\n});\n\nfunction project(s, t, fields, as) {\n  for (let i = 0, n = fields.length; i < n; ++i) {\n    t[as[i]] = fields[i](s);\n  }\n\n  return t;\n}\n\n/**\n * Proxy the value of another operator as a pure signal value.\n * Ensures no tuples are propagated.\n * @constructor\n * @param {object} params - The parameters for this operator.\n * @param {*} params.value - The value to proxy, becomes the value of this operator.\n */\n\nfunction Proxy(params) {\n  vega_dataflow__WEBPACK_IMPORTED_MODULE_1__[\"Transform\"].call(this, null, params);\n}\nObject(vega_util__WEBPACK_IMPORTED_MODULE_0__[\"inherits\"])(Proxy, vega_dataflow__WEBPACK_IMPORTED_MODULE_1__[\"Transform\"], {\n  transform(_, pulse) {\n    this.value = _.value;\n    return _.modified('value') ? pulse.fork(pulse.NO_SOURCE | pulse.NO_FIELDS) : pulse.StopPropagation;\n  }\n\n});\n\n/**\n * Generates sample quantile values from an input data stream.\n * @constructor\n * @param {object} params - The parameters for this operator.\n * @param {function(object): *} params.field - An accessor for the data field\n *   over which to calculate quantile values.\n * @param {Array<function(object): *>} [params.groupby] - An array of accessors\n *   to groupby.\n * @param {Array<number>} [params.probs] - An array of probabilities in\n *   the range (0, 1) for which to compute quantile values. If not specified,\n *   the *step* parameter will be used.\n * @param {Array<number>} [params.step=0.01] - A probability step size for\n *   sampling quantile values. All values from one-half the step size up to\n *   1 (exclusive) will be sampled. This parameter is only used if the\n *   *quantiles* parameter is not provided.\n */\n\nfunction Quantile(params) {\n  vega_dataflow__WEBPACK_IMPORTED_MODULE_1__[\"Transform\"].call(this, null, params);\n}\nQuantile.Definition = {\n  'type': 'Quantile',\n  'metadata': {\n    'generates': true,\n    'changes': true\n  },\n  'params': [{\n    'name': 'groupby',\n    'type': 'field',\n    'array': true\n  }, {\n    'name': 'field',\n    'type': 'field',\n    'required': true\n  }, {\n    'name': 'probs',\n    'type': 'number',\n    'array': true\n  }, {\n    'name': 'step',\n    'type': 'number',\n    'default': 0.01\n  }, {\n    'name': 'as',\n    'type': 'string',\n    'array': true,\n    'default': ['prob', 'value']\n  }]\n};\nconst EPSILON = 1e-14;\nObject(vega_util__WEBPACK_IMPORTED_MODULE_0__[\"inherits\"])(Quantile, vega_dataflow__WEBPACK_IMPORTED_MODULE_1__[\"Transform\"], {\n  transform(_, pulse) {\n    const out = pulse.fork(pulse.NO_SOURCE | pulse.NO_FIELDS),\n          as = _.as || ['prob', 'value'];\n\n    if (this.value && !_.modified() && !pulse.changed()) {\n      out.source = this.value;\n      return out;\n    }\n\n    const source = pulse.materialize(pulse.SOURCE).source,\n          groups = partition$1(source, _.groupby, _.field),\n          names = (_.groupby || []).map(vega_util__WEBPACK_IMPORTED_MODULE_0__[\"accessorName\"]),\n          values = [],\n          step = _.step || 0.01,\n          p = _.probs || Object(d3_array__WEBPACK_IMPORTED_MODULE_3__[\"range\"])(step / 2, 1 - EPSILON, step),\n          n = p.length;\n    groups.forEach(g => {\n      const q = Object(vega_statistics__WEBPACK_IMPORTED_MODULE_2__[\"quantiles\"])(g, p);\n\n      for (let i = 0; i < n; ++i) {\n        const t = {};\n\n        for (let i = 0; i < names.length; ++i) {\n          t[names[i]] = g.dims[i];\n        }\n\n        t[as[0]] = p[i];\n        t[as[1]] = q[i];\n        values.push(Object(vega_dataflow__WEBPACK_IMPORTED_MODULE_1__[\"ingest\"])(t));\n      }\n    });\n    if (this.value) out.rem = this.value;\n    this.value = out.add = out.source = values;\n    return out;\n  }\n\n});\n\n/**\n * Relays a data stream between data processing pipelines.\n * If the derive parameter is set, this transform will create derived\n * copies of observed tuples. This provides derived data streams in which\n * modifications to the tuples do not pollute an upstream data source.\n * @param {object} params - The parameters for this operator.\n * @param {number} [params.derive=false] - Boolean flag indicating if\n *   the transform should make derived copies of incoming tuples.\n * @constructor\n */\n\nfunction Relay(params) {\n  vega_dataflow__WEBPACK_IMPORTED_MODULE_1__[\"Transform\"].call(this, null, params);\n}\nObject(vega_util__WEBPACK_IMPORTED_MODULE_0__[\"inherits\"])(Relay, vega_dataflow__WEBPACK_IMPORTED_MODULE_1__[\"Transform\"], {\n  transform(_, pulse) {\n    let out, lut;\n\n    if (this.value) {\n      lut = this.value;\n    } else {\n      out = pulse = pulse.addAll();\n      lut = this.value = {};\n    }\n\n    if (_.derive) {\n      out = pulse.fork(pulse.NO_SOURCE);\n      pulse.visit(pulse.REM, t => {\n        const id = Object(vega_dataflow__WEBPACK_IMPORTED_MODULE_1__[\"tupleid\"])(t);\n        out.rem.push(lut[id]);\n        lut[id] = null;\n      });\n      pulse.visit(pulse.ADD, t => {\n        const dt = Object(vega_dataflow__WEBPACK_IMPORTED_MODULE_1__[\"derive\"])(t);\n        lut[Object(vega_dataflow__WEBPACK_IMPORTED_MODULE_1__[\"tupleid\"])(t)] = dt;\n        out.add.push(dt);\n      });\n      pulse.visit(pulse.MOD, t => {\n        const dt = lut[Object(vega_dataflow__WEBPACK_IMPORTED_MODULE_1__[\"tupleid\"])(t)];\n\n        for (const k in t) {\n          dt[k] = t[k]; // down stream writes may overwrite re-derived tuples\n          // conservatively mark all source fields as modified\n\n          out.modifies(k);\n        }\n\n        out.mod.push(dt);\n      });\n    }\n\n    return out;\n  }\n\n});\n\n/**\n * Samples tuples passing through this operator.\n * Uses reservoir sampling to maintain a representative sample.\n * @constructor\n * @param {object} params - The parameters for this operator.\n * @param {number} [params.size=1000] - The maximum number of samples.\n */\n\nfunction Sample(params) {\n  vega_dataflow__WEBPACK_IMPORTED_MODULE_1__[\"Transform\"].call(this, [], params);\n  this.count = 0;\n}\nSample.Definition = {\n  'type': 'Sample',\n  'metadata': {},\n  'params': [{\n    'name': 'size',\n    'type': 'number',\n    'default': 1000\n  }]\n};\nObject(vega_util__WEBPACK_IMPORTED_MODULE_0__[\"inherits\"])(Sample, vega_dataflow__WEBPACK_IMPORTED_MODULE_1__[\"Transform\"], {\n  transform(_, pulse) {\n    const out = pulse.fork(pulse.NO_SOURCE),\n          mod = _.modified('size'),\n          num = _.size,\n          map = this.value.reduce((m, t) => (m[Object(vega_dataflow__WEBPACK_IMPORTED_MODULE_1__[\"tupleid\"])(t)] = 1, m), {});\n\n    let res = this.value,\n        cnt = this.count,\n        cap = 0; // sample reservoir update function\n\n    function update(t) {\n      let p, idx;\n\n      if (res.length < num) {\n        res.push(t);\n      } else {\n        idx = ~~((cnt + 1) * Object(vega_statistics__WEBPACK_IMPORTED_MODULE_2__[\"random\"])());\n\n        if (idx < res.length && idx >= cap) {\n          p = res[idx];\n          if (map[Object(vega_dataflow__WEBPACK_IMPORTED_MODULE_1__[\"tupleid\"])(p)]) out.rem.push(p); // eviction\n\n          res[idx] = t;\n        }\n      }\n\n      ++cnt;\n    }\n\n    if (pulse.rem.length) {\n      // find all tuples that should be removed, add to output\n      pulse.visit(pulse.REM, t => {\n        const id = Object(vega_dataflow__WEBPACK_IMPORTED_MODULE_1__[\"tupleid\"])(t);\n\n        if (map[id]) {\n          map[id] = -1;\n          out.rem.push(t);\n        }\n\n        --cnt;\n      }); // filter removed tuples out of the sample reservoir\n\n      res = res.filter(t => map[Object(vega_dataflow__WEBPACK_IMPORTED_MODULE_1__[\"tupleid\"])(t)] !== -1);\n    }\n\n    if ((pulse.rem.length || mod) && res.length < num && pulse.source) {\n      // replenish sample if backing data source is available\n      cap = cnt = res.length;\n      pulse.visit(pulse.SOURCE, t => {\n        // update, but skip previously sampled tuples\n        if (!map[Object(vega_dataflow__WEBPACK_IMPORTED_MODULE_1__[\"tupleid\"])(t)]) update(t);\n      });\n      cap = -1;\n    }\n\n    if (mod && res.length > num) {\n      const n = res.length - num;\n\n      for (let i = 0; i < n; ++i) {\n        map[Object(vega_dataflow__WEBPACK_IMPORTED_MODULE_1__[\"tupleid\"])(res[i])] = -1;\n        out.rem.push(res[i]);\n      }\n\n      res = res.slice(n);\n    }\n\n    if (pulse.mod.length) {\n      // propagate modified tuples in the sample reservoir\n      pulse.visit(pulse.MOD, t => {\n        if (map[Object(vega_dataflow__WEBPACK_IMPORTED_MODULE_1__[\"tupleid\"])(t)]) out.mod.push(t);\n      });\n    }\n\n    if (pulse.add.length) {\n      // update sample reservoir\n      pulse.visit(pulse.ADD, update);\n    }\n\n    if (pulse.add.length || cap < 0) {\n      // output newly added tuples\n      out.add = res.filter(t => !map[Object(vega_dataflow__WEBPACK_IMPORTED_MODULE_1__[\"tupleid\"])(t)]);\n    }\n\n    this.count = cnt;\n    this.value = out.source = res;\n    return out;\n  }\n\n});\n\n/**\n * Generates data tuples for a specified sequence range of numbers.\n * @constructor\n * @param {object} params - The parameters for this operator.\n * @param {number} params.start - The first number in the sequence.\n * @param {number} params.stop - The last number (exclusive) in the sequence.\n * @param {number} [params.step=1] - The step size between numbers in the sequence.\n */\n\nfunction Sequence(params) {\n  vega_dataflow__WEBPACK_IMPORTED_MODULE_1__[\"Transform\"].call(this, null, params);\n}\nSequence.Definition = {\n  'type': 'Sequence',\n  'metadata': {\n    'generates': true,\n    'changes': true\n  },\n  'params': [{\n    'name': 'start',\n    'type': 'number',\n    'required': true\n  }, {\n    'name': 'stop',\n    'type': 'number',\n    'required': true\n  }, {\n    'name': 'step',\n    'type': 'number',\n    'default': 1\n  }, {\n    'name': 'as',\n    'type': 'string',\n    'default': 'data'\n  }]\n};\nObject(vega_util__WEBPACK_IMPORTED_MODULE_0__[\"inherits\"])(Sequence, vega_dataflow__WEBPACK_IMPORTED_MODULE_1__[\"Transform\"], {\n  transform(_, pulse) {\n    if (this.value && !_.modified()) return;\n    const out = pulse.materialize().fork(pulse.MOD),\n          as = _.as || 'data';\n    out.rem = this.value ? pulse.rem.concat(this.value) : pulse.rem;\n    this.value = Object(d3_array__WEBPACK_IMPORTED_MODULE_3__[\"range\"])(_.start, _.stop, _.step || 1).map(v => {\n      const t = {};\n      t[as] = v;\n      return Object(vega_dataflow__WEBPACK_IMPORTED_MODULE_1__[\"ingest\"])(t);\n    });\n    out.add = pulse.add.concat(this.value);\n    return out;\n  }\n\n});\n\n/**\n * Propagates a new pulse without any tuples so long as the input\n * pulse contains some added, removed or modified tuples.\n * @param {object} params - The parameters for this operator.\n * @constructor\n */\n\nfunction Sieve(params) {\n  vega_dataflow__WEBPACK_IMPORTED_MODULE_1__[\"Transform\"].call(this, null, params);\n  this.modified(true); // always treat as modified\n}\nObject(vega_util__WEBPACK_IMPORTED_MODULE_0__[\"inherits\"])(Sieve, vega_dataflow__WEBPACK_IMPORTED_MODULE_1__[\"Transform\"], {\n  transform(_, pulse) {\n    this.value = pulse.source;\n    return pulse.changed() ? pulse.fork(pulse.NO_SOURCE | pulse.NO_FIELDS) : pulse.StopPropagation;\n  }\n\n});\n\n/**\n * Discretize dates to specific time units.\n * @constructor\n * @param {object} params - The parameters for this operator.\n * @param {function(object): *} params.field - The data field containing date/time values.\n */\n\nfunction TimeUnit(params) {\n  vega_dataflow__WEBPACK_IMPORTED_MODULE_1__[\"Transform\"].call(this, null, params);\n}\nconst OUTPUT = ['unit0', 'unit1'];\nTimeUnit.Definition = {\n  'type': 'TimeUnit',\n  'metadata': {\n    'modifies': true\n  },\n  'params': [{\n    'name': 'field',\n    'type': 'field',\n    'required': true\n  }, {\n    'name': 'interval',\n    'type': 'boolean',\n    'default': true\n  }, {\n    'name': 'units',\n    'type': 'enum',\n    'values': vega_time__WEBPACK_IMPORTED_MODULE_4__[\"TIME_UNITS\"],\n    'array': true\n  }, {\n    'name': 'step',\n    'type': 'number',\n    'default': 1\n  }, {\n    'name': 'maxbins',\n    'type': 'number',\n    'default': 40\n  }, {\n    'name': 'extent',\n    'type': 'date',\n    'array': true\n  }, {\n    'name': 'timezone',\n    'type': 'enum',\n    'default': 'local',\n    'values': ['local', 'utc']\n  }, {\n    'name': 'as',\n    'type': 'string',\n    'array': true,\n    'length': 2,\n    'default': OUTPUT\n  }]\n};\nObject(vega_util__WEBPACK_IMPORTED_MODULE_0__[\"inherits\"])(TimeUnit, vega_dataflow__WEBPACK_IMPORTED_MODULE_1__[\"Transform\"], {\n  transform(_, pulse) {\n    const field = _.field,\n          band = _.interval !== false,\n          utc = _.timezone === 'utc',\n          floor = this._floor(_, pulse),\n          offset = (utc ? vega_time__WEBPACK_IMPORTED_MODULE_4__[\"utcInterval\"] : vega_time__WEBPACK_IMPORTED_MODULE_4__[\"timeInterval\"])(floor.unit).offset,\n          as = _.as || OUTPUT,\n          u0 = as[0],\n          u1 = as[1],\n          step = floor.step;\n\n    let min = floor.start || Infinity,\n        max = floor.stop || -Infinity,\n        flag = pulse.ADD;\n\n    if (_.modified() || pulse.modified(Object(vega_util__WEBPACK_IMPORTED_MODULE_0__[\"accessorFields\"])(field))) {\n      pulse = pulse.reflow(true);\n      flag = pulse.SOURCE;\n      min = Infinity;\n      max = -Infinity;\n    }\n\n    pulse.visit(flag, t => {\n      const v = field(t);\n      let a, b;\n\n      if (v == null) {\n        t[u0] = null;\n        if (band) t[u1] = null;\n      } else {\n        t[u0] = a = b = floor(v);\n        if (band) t[u1] = b = offset(a, step);\n        if (a < min) min = a;\n        if (b > max) max = b;\n      }\n    });\n    floor.start = min;\n    floor.stop = max;\n    return pulse.modifies(band ? as : u0);\n  },\n\n  _floor(_, pulse) {\n    const utc = _.timezone === 'utc'; // get parameters\n\n    const {\n      units,\n      step\n    } = _.units ? {\n      units: _.units,\n      step: _.step || 1\n    } : Object(vega_time__WEBPACK_IMPORTED_MODULE_4__[\"timeBin\"])({\n      extent: _.extent || Object(vega_util__WEBPACK_IMPORTED_MODULE_0__[\"extent\"])(pulse.materialize(pulse.SOURCE).source, _.field),\n      maxbins: _.maxbins\n    }); // check / standardize time units\n\n    const tunits = Object(vega_time__WEBPACK_IMPORTED_MODULE_4__[\"timeUnits\"])(units),\n          prev = this.value || {},\n          floor = (utc ? vega_time__WEBPACK_IMPORTED_MODULE_4__[\"utcFloor\"] : vega_time__WEBPACK_IMPORTED_MODULE_4__[\"timeFloor\"])(tunits, step);\n    floor.unit = Object(vega_util__WEBPACK_IMPORTED_MODULE_0__[\"peek\"])(tunits);\n    floor.units = tunits;\n    floor.step = step;\n    floor.start = prev.start;\n    floor.stop = prev.stop;\n    return this.value = floor;\n  }\n\n});\n\n/**\n * An index that maps from unique, string-coerced, field values to tuples.\n * Assumes that the field serves as a unique key with no duplicate values.\n * @constructor\n * @param {object} params - The parameters for this operator.\n * @param {function(object): *} params.field - The field accessor to index.\n */\n\nfunction TupleIndex(params) {\n  vega_dataflow__WEBPACK_IMPORTED_MODULE_1__[\"Transform\"].call(this, Object(vega_util__WEBPACK_IMPORTED_MODULE_0__[\"fastmap\"])(), params);\n}\nObject(vega_util__WEBPACK_IMPORTED_MODULE_0__[\"inherits\"])(TupleIndex, vega_dataflow__WEBPACK_IMPORTED_MODULE_1__[\"Transform\"], {\n  transform(_, pulse) {\n    const df = pulse.dataflow,\n          field = _.field,\n          index = this.value,\n          set = t => index.set(field(t), t);\n\n    let mod = true;\n\n    if (_.modified('field') || pulse.modified(field.fields)) {\n      index.clear();\n      pulse.visit(pulse.SOURCE, set);\n    } else if (pulse.changed()) {\n      pulse.visit(pulse.REM, t => index.delete(field(t)));\n      pulse.visit(pulse.ADD, set);\n    } else {\n      mod = false;\n    }\n\n    this.modified(mod);\n    if (index.empty > df.cleanThreshold) df.runAfter(index.clean);\n    return pulse.fork();\n  }\n\n});\n\n/**\n * Extracts an array of values. Assumes the source data has already been\n * reduced as needed (e.g., by an upstream Aggregate transform).\n * @constructor\n * @param {object} params - The parameters for this operator.\n * @param {function(object): *} params.field - The domain field to extract.\n * @param {function(*,*): number} [params.sort] - An optional\n *   comparator function for sorting the values. The comparator will be\n *   applied to backing tuples prior to value extraction.\n */\n\nfunction Values(params) {\n  vega_dataflow__WEBPACK_IMPORTED_MODULE_1__[\"Transform\"].call(this, null, params);\n}\nObject(vega_util__WEBPACK_IMPORTED_MODULE_0__[\"inherits\"])(Values, vega_dataflow__WEBPACK_IMPORTED_MODULE_1__[\"Transform\"], {\n  transform(_, pulse) {\n    const run = !this.value || _.modified('field') || _.modified('sort') || pulse.changed() || _.sort && pulse.modified(_.sort.fields);\n\n    if (run) {\n      this.value = (_.sort ? pulse.source.slice().sort(Object(vega_dataflow__WEBPACK_IMPORTED_MODULE_1__[\"stableCompare\"])(_.sort)) : pulse.source).map(_.field);\n    }\n  }\n\n});\n\nfunction WindowOp(op, field, param, as) {\n  const fn = WindowOps[op](field, param);\n  return {\n    init: fn.init || vega_util__WEBPACK_IMPORTED_MODULE_0__[\"zero\"],\n    update: function (w, t) {\n      t[as] = fn.next(w);\n    }\n  };\n}\nconst WindowOps = {\n  row_number: function () {\n    return {\n      next: w => w.index + 1\n    };\n  },\n  rank: function () {\n    let rank;\n    return {\n      init: () => rank = 1,\n      next: w => {\n        const i = w.index,\n              data = w.data;\n        return i && w.compare(data[i - 1], data[i]) ? rank = i + 1 : rank;\n      }\n    };\n  },\n  dense_rank: function () {\n    let drank;\n    return {\n      init: () => drank = 1,\n      next: w => {\n        const i = w.index,\n              d = w.data;\n        return i && w.compare(d[i - 1], d[i]) ? ++drank : drank;\n      }\n    };\n  },\n  percent_rank: function () {\n    const rank = WindowOps.rank(),\n          next = rank.next;\n    return {\n      init: rank.init,\n      next: w => (next(w) - 1) / (w.data.length - 1)\n    };\n  },\n  cume_dist: function () {\n    let cume;\n    return {\n      init: () => cume = 0,\n      next: w => {\n        const d = w.data,\n              c = w.compare;\n        let i = w.index;\n\n        if (cume < i) {\n          while (i + 1 < d.length && !c(d[i], d[i + 1])) ++i;\n\n          cume = i;\n        }\n\n        return (1 + cume) / d.length;\n      }\n    };\n  },\n  ntile: function (field, num) {\n    num = +num;\n    if (!(num > 0)) Object(vega_util__WEBPACK_IMPORTED_MODULE_0__[\"error\"])('ntile num must be greater than zero.');\n    const cume = WindowOps.cume_dist(),\n          next = cume.next;\n    return {\n      init: cume.init,\n      next: w => Math.ceil(num * next(w))\n    };\n  },\n  lag: function (field, offset) {\n    offset = +offset || 1;\n    return {\n      next: w => {\n        const i = w.index - offset;\n        return i >= 0 ? field(w.data[i]) : null;\n      }\n    };\n  },\n  lead: function (field, offset) {\n    offset = +offset || 1;\n    return {\n      next: w => {\n        const i = w.index + offset,\n              d = w.data;\n        return i < d.length ? field(d[i]) : null;\n      }\n    };\n  },\n  first_value: function (field) {\n    return {\n      next: w => field(w.data[w.i0])\n    };\n  },\n  last_value: function (field) {\n    return {\n      next: w => field(w.data[w.i1 - 1])\n    };\n  },\n  nth_value: function (field, nth) {\n    nth = +nth;\n    if (!(nth > 0)) Object(vega_util__WEBPACK_IMPORTED_MODULE_0__[\"error\"])('nth_value nth must be greater than zero.');\n    return {\n      next: w => {\n        const i = w.i0 + (nth - 1);\n        return i < w.i1 ? field(w.data[i]) : null;\n      }\n    };\n  },\n  prev_value: function (field) {\n    let prev;\n    return {\n      init: () => prev = null,\n      next: w => {\n        const v = field(w.data[w.index]);\n        return v != null ? prev = v : prev;\n      }\n    };\n  },\n  next_value: function (field) {\n    let v, i;\n    return {\n      init: () => (v = null, i = -1),\n      next: w => {\n        const d = w.data;\n        return w.index <= i ? v : (i = find(field, d, w.index)) < 0 ? (i = d.length, v = null) : v = field(d[i]);\n      }\n    };\n  }\n};\n\nfunction find(field, data, index) {\n  for (let n = data.length; index < n; ++index) {\n    const v = field(data[index]);\n    if (v != null) return index;\n  }\n\n  return -1;\n}\n\nconst ValidWindowOps = Object.keys(WindowOps);\n\nfunction WindowState(_) {\n  const ops = Object(vega_util__WEBPACK_IMPORTED_MODULE_0__[\"array\"])(_.ops),\n        fields = Object(vega_util__WEBPACK_IMPORTED_MODULE_0__[\"array\"])(_.fields),\n        params = Object(vega_util__WEBPACK_IMPORTED_MODULE_0__[\"array\"])(_.params),\n        as = Object(vega_util__WEBPACK_IMPORTED_MODULE_0__[\"array\"])(_.as),\n        outputs = this.outputs = [],\n        windows = this.windows = [],\n        inputs = {},\n        map = {},\n        counts = [],\n        measures = [];\n  let countOnly = true;\n\n  function visitInputs(f) {\n    Object(vega_util__WEBPACK_IMPORTED_MODULE_0__[\"array\"])(Object(vega_util__WEBPACK_IMPORTED_MODULE_0__[\"accessorFields\"])(f)).forEach(_ => inputs[_] = 1);\n  }\n\n  visitInputs(_.sort);\n  ops.forEach((op, i) => {\n    const field = fields[i],\n          mname = Object(vega_util__WEBPACK_IMPORTED_MODULE_0__[\"accessorName\"])(field),\n          name = measureName(op, mname, as[i]);\n    visitInputs(field);\n    outputs.push(name); // Window operation\n\n    if (Object(vega_util__WEBPACK_IMPORTED_MODULE_0__[\"hasOwnProperty\"])(WindowOps, op)) {\n      windows.push(WindowOp(op, fields[i], params[i], name));\n    } // Aggregate operation\n    else {\n        if (field == null && op !== 'count') {\n          Object(vega_util__WEBPACK_IMPORTED_MODULE_0__[\"error\"])('Null aggregate field specified.');\n        }\n\n        if (op === 'count') {\n          counts.push(name);\n          return;\n        }\n\n        countOnly = false;\n        let m = map[mname];\n\n        if (!m) {\n          m = map[mname] = [];\n          m.field = field;\n          measures.push(m);\n        }\n\n        m.push(createMeasure(op, name));\n      }\n  });\n\n  if (counts.length || measures.length) {\n    this.cell = cell(measures, counts, countOnly);\n  }\n\n  this.inputs = Object.keys(inputs);\n}\nconst prototype = WindowState.prototype;\n\nprototype.init = function () {\n  this.windows.forEach(_ => _.init());\n  if (this.cell) this.cell.init();\n};\n\nprototype.update = function (w, t) {\n  const cell = this.cell,\n        wind = this.windows,\n        data = w.data,\n        m = wind && wind.length;\n  let j;\n\n  if (cell) {\n    for (j = w.p0; j < w.i0; ++j) cell.rem(data[j]);\n\n    for (j = w.p1; j < w.i1; ++j) cell.add(data[j]);\n\n    cell.set(t);\n  }\n\n  for (j = 0; j < m; ++j) wind[j].update(w, t);\n};\n\nfunction cell(measures, counts, countOnly) {\n  measures = measures.map(m => compileMeasures(m, m.field));\n  const cell = {\n    num: 0,\n    agg: null,\n    store: false,\n    count: counts\n  };\n\n  if (!countOnly) {\n    var n = measures.length,\n        a = cell.agg = Array(n),\n        i = 0;\n\n    for (; i < n; ++i) a[i] = new measures[i](cell);\n  }\n\n  if (cell.store) {\n    var store = cell.data = new TupleStore();\n  }\n\n  cell.add = function (t) {\n    cell.num += 1;\n    if (countOnly) return;\n    if (store) store.add(t);\n\n    for (let i = 0; i < n; ++i) {\n      a[i].add(a[i].get(t), t);\n    }\n  };\n\n  cell.rem = function (t) {\n    cell.num -= 1;\n    if (countOnly) return;\n    if (store) store.rem(t);\n\n    for (let i = 0; i < n; ++i) {\n      a[i].rem(a[i].get(t), t);\n    }\n  };\n\n  cell.set = function (t) {\n    let i, n; // consolidate stored values\n\n    if (store) store.values(); // update tuple properties\n\n    for (i = 0, n = counts.length; i < n; ++i) t[counts[i]] = cell.num;\n\n    if (!countOnly) for (i = 0, n = a.length; i < n; ++i) a[i].set(t);\n  };\n\n  cell.init = function () {\n    cell.num = 0;\n    if (store) store.reset();\n\n    for (let i = 0; i < n; ++i) a[i].init();\n  };\n\n  return cell;\n}\n\n/**\n * Perform window calculations and write results to the input stream.\n * @constructor\n * @param {object} params - The parameters for this operator.\n * @param {function(*,*): number} [params.sort] - A comparator function for sorting tuples within a window.\n * @param {Array<function(object): *>} [params.groupby] - An array of accessors by which to partition tuples into separate windows.\n * @param {Array<string>} params.ops - An array of strings indicating window operations to perform.\n * @param {Array<function(object): *>} [params.fields] - An array of accessors\n *   for data fields to use as inputs to window operations.\n * @param {Array<*>} [params.params] - An array of parameter values for window operations.\n * @param {Array<string>} [params.as] - An array of output field names for window operations.\n * @param {Array<number>} [params.frame] - Window frame definition as two-element array.\n * @param {boolean} [params.ignorePeers=false] - If true, base window frame boundaries on row\n *   number alone, ignoring peers with identical sort values. If false (default),\n *   the window boundaries will be adjusted to include peer values.\n */\n\nfunction Window(params) {\n  vega_dataflow__WEBPACK_IMPORTED_MODULE_1__[\"Transform\"].call(this, {}, params);\n  this._mlen = 0;\n  this._mods = [];\n}\nWindow.Definition = {\n  'type': 'Window',\n  'metadata': {\n    'modifies': true\n  },\n  'params': [{\n    'name': 'sort',\n    'type': 'compare'\n  }, {\n    'name': 'groupby',\n    'type': 'field',\n    'array': true\n  }, {\n    'name': 'ops',\n    'type': 'enum',\n    'array': true,\n    'values': ValidWindowOps.concat(ValidAggregateOps)\n  }, {\n    'name': 'params',\n    'type': 'number',\n    'null': true,\n    'array': true\n  }, {\n    'name': 'fields',\n    'type': 'field',\n    'null': true,\n    'array': true\n  }, {\n    'name': 'as',\n    'type': 'string',\n    'null': true,\n    'array': true\n  }, {\n    'name': 'frame',\n    'type': 'number',\n    'null': true,\n    'array': true,\n    'length': 2,\n    'default': [null, 0]\n  }, {\n    'name': 'ignorePeers',\n    'type': 'boolean',\n    'default': false\n  }]\n};\nObject(vega_util__WEBPACK_IMPORTED_MODULE_0__[\"inherits\"])(Window, vega_dataflow__WEBPACK_IMPORTED_MODULE_1__[\"Transform\"], {\n  transform(_, pulse) {\n    this.stamp = pulse.stamp;\n\n    const mod = _.modified(),\n          cmp = Object(vega_dataflow__WEBPACK_IMPORTED_MODULE_1__[\"stableCompare\"])(_.sort),\n          key = groupkey(_.groupby),\n          group = t => this.group(key(t)); // initialize window state\n\n\n    let state = this.state;\n\n    if (!state || mod) {\n      state = this.state = new WindowState(_);\n    } // partition input tuples\n\n\n    if (mod || pulse.modified(state.inputs)) {\n      this.value = {};\n      pulse.visit(pulse.SOURCE, t => group(t).add(t));\n    } else {\n      pulse.visit(pulse.REM, t => group(t).remove(t));\n      pulse.visit(pulse.ADD, t => group(t).add(t));\n    } // perform window calculations for each modified partition\n\n\n    for (let i = 0, n = this._mlen; i < n; ++i) {\n      processPartition(this._mods[i], state, cmp, _);\n    }\n\n    this._mlen = 0;\n    this._mods = []; // TODO don't reflow everything?\n\n    return pulse.reflow(mod).modifies(state.outputs);\n  },\n\n  group(key) {\n    let group = this.value[key];\n\n    if (!group) {\n      group = this.value[key] = SortedList(vega_dataflow__WEBPACK_IMPORTED_MODULE_1__[\"tupleid\"]);\n      group.stamp = -1;\n    }\n\n    if (group.stamp < this.stamp) {\n      group.stamp = this.stamp;\n      this._mods[this._mlen++] = group;\n    }\n\n    return group;\n  }\n\n});\n\nfunction processPartition(list, state, cmp, _) {\n  const sort = _.sort,\n        range = sort && !_.ignorePeers,\n        frame = _.frame || [null, 0],\n        data = list.data(cmp),\n        // use cmp for stable sort\n  n = data.length,\n        b = range ? Object(d3_array__WEBPACK_IMPORTED_MODULE_3__[\"bisector\"])(sort) : null,\n        w = {\n    i0: 0,\n    i1: 0,\n    p0: 0,\n    p1: 0,\n    index: 0,\n    data: data,\n    compare: sort || Object(vega_util__WEBPACK_IMPORTED_MODULE_0__[\"constant\"])(-1)\n  };\n  state.init();\n\n  for (let i = 0; i < n; ++i) {\n    setWindow(w, frame, i, n);\n    if (range) adjustRange(w, b);\n    state.update(w, data[i]);\n  }\n}\n\nfunction setWindow(w, f, i, n) {\n  w.p0 = w.i0;\n  w.p1 = w.i1;\n  w.i0 = f[0] == null ? 0 : Math.max(0, i - Math.abs(f[0]));\n  w.i1 = f[1] == null ? n : Math.min(n, i + Math.abs(f[1]) + 1);\n  w.index = i;\n} // if frame type is 'range', adjust window for peer values\n\n\nfunction adjustRange(w, bisect) {\n  const r0 = w.i0,\n        r1 = w.i1 - 1,\n        c = w.compare,\n        d = w.data,\n        n = d.length - 1;\n  if (r0 > 0 && !c(d[r0], d[r0 - 1])) w.i0 = bisect.left(d, d[r0]);\n  if (r1 < n && !c(d[r1], d[r1 + 1])) w.i1 = bisect.right(d, d[r1]);\n}\n\n\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,[encoded data, 169428 characters]\n//# sourceURL=webpack-internal:///./node_modules/vega/node_modules/vega-transforms/build/vega-transforms.module.js\n");

/***/ }),

/***/ "./node_modules/vega/node_modules/vega-util/build/vega-util.module.js":
/*!****************************************************************************!*\
  !*** ./node_modules/vega/node_modules/vega-util/build/vega-util.module.js ***!
  \****************************************************************************/
/*! exports provided: Debug, Error, Info, None, Warn, accessor, accessorFields, accessorName, array, ascending, clampRange, compare, constant, debounce, error, extend, extent, extentIndex, falsy, fastmap, field, flush, hasOwnProperty, id, identity, inherits, inrange, isArray, isBoolean, isDate, isFunction, isIterable, isNumber, isObject, isRegExp, isString, key, lerp, logger, lruCache, merge, mergeConfig, one, pad, panLinear, panLog, panPow, panSymlog, peek, quarter, repeat, span, splitAccessPath, stringValue, toBoolean, toDate, toNumber, toSet, toString, truncate, truthy, utcquarter, visitArray, writeConfig, zero, zoomLinear, zoomLog, zoomPow, zoomSymlog */
/***/ (function(module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"Debug\", function() { return Debug; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"Error\", function() { return Error$1; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"Info\", function() { return Info; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"None\", function() { return None; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"Warn\", function() { return Warn; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"accessor\", function() { return accessor; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"accessorFields\", function() { return accessorFields; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"accessorName\", function() { return accessorName; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"array\", function() { return array; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"ascending\", function() { return ascending; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"clampRange\", function() { return clampRange; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"compare\", function() { return compare; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"constant\", function() { return constant; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"debounce\", function() { return debounce; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"error\", function() { return error; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"extend\", function() { return extend; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"extent\", function() { return extent; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"extentIndex\", function() { return extentIndex; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"falsy\", function() { return falsy; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"fastmap\", function() { return fastmap; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"field\", function() { return field; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"flush\", function() { return flush; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"hasOwnProperty\", function() { return has; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"id\", function() { return id; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"identity\", function() { return identity; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"inherits\", function() { return inherits; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"inrange\", function() { return inrange; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"isArray\", function() { return isArray; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"isBoolean\", function() { return isBoolean; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"isDate\", function() { return isDate; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"isFunction\", function() { return isFunction; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"isIterable\", function() { return isIterable; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"isNumber\", function() { return isNumber; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"isObject\", function() { return isObject; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"isRegExp\", function() { return isRegExp; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"isString\", function() { return isString; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"key\", function() { return key; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"lerp\", function() { return lerp; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"logger\", function() { return logger; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"lruCache\", function() { return lruCache; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"merge\", function() { return merge; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"mergeConfig\", function() { return mergeConfig; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"one\", function() { return one; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"pad\", function() { return pad; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"panLinear\", function() { return panLinear; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"panLog\", function() { return panLog; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"panPow\", function() { return panPow; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"panSymlog\", function() { return panSymlog; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"peek\", function() { return peek; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"quarter\", function() { return quarter; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"repeat\", function() { return repeat; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"span\", function() { return span; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"splitAccessPath\", function() { return splitAccessPath; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"stringValue\", function() { return $; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"toBoolean\", function() { return toBoolean; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"toDate\", function() { return toDate; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"toNumber\", function() { return toNumber; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"toSet\", function() { return toSet; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"toString\", function() { return toString; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"truncate\", function() { return truncate; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"truthy\", function() { return truthy; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"utcquarter\", function() { return utcquarter; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"visitArray\", function() { return visitArray; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"writeConfig\", function() { return writeConfig; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"zero\", function() { return zero; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"zoomLinear\", function() { return zoomLinear; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"zoomLog\", function() { return zoomLog; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"zoomPow\", function() { return zoomPow; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"zoomSymlog\", function() { return zoomSymlog; });\nfunction accessor (fn, fields, name) {\n  fn.fields = fields || [];\n  fn.fname = name;\n  return fn;\n}\nfunction accessorName(fn) {\n  return fn == null ? null : fn.fname;\n}\nfunction accessorFields(fn) {\n  return fn == null ? null : fn.fields;\n}\n\nfunction getter (path) {\n  return path.length === 1 ? get1(path[0]) : getN(path);\n}\n\nconst get1 = field => function (obj) {\n  return obj[field];\n};\n\nconst getN = path => {\n  const len = path.length;\n  return function (obj) {\n    for (let i = 0; i < len; ++i) {\n      obj = obj[path[i]];\n    }\n\n    return obj;\n  };\n};\n\nfunction error (message) {\n  throw Error(message);\n}\n\nfunction splitAccessPath (p) {\n  const path = [],\n        n = p.length;\n  let q = null,\n      b = 0,\n      s = '',\n      i,\n      j,\n      c;\n  p = p + '';\n\n  function push() {\n    path.push(s + p.substring(i, j));\n    s = '';\n    i = j + 1;\n  }\n\n  for (i = j = 0; j < n; ++j) {\n    c = p[j];\n\n    if (c === '\\\\') {\n      s += p.substring(i, j);\n      s += p.substring(++j, ++j);\n      i = j;\n    } else if (c === q) {\n      push();\n      q = null;\n      b = -1;\n    } else if (q) {\n      continue;\n    } else if (i === b && c === '\"') {\n      i = j + 1;\n      q = c;\n    } else if (i === b && c === \"'\") {\n      i = j + 1;\n      q = c;\n    } else if (c === '.' && !b) {\n      if (j > i) {\n        push();\n      } else {\n        i = j + 1;\n      }\n    } else if (c === '[') {\n      if (j > i) push();\n      b = i = j + 1;\n    } else if (c === ']') {\n      if (!b) error('Access path missing open bracket: ' + p);\n      if (b > 0) push();\n      b = 0;\n      i = j + 1;\n    }\n  }\n\n  if (b) error('Access path missing closing bracket: ' + p);\n  if (q) error('Access path missing closing quote: ' + p);\n\n  if (j > i) {\n    j++;\n    push();\n  }\n\n  return path;\n}\n\nfunction field (field, name, opt) {\n  const path = splitAccessPath(field);\n  field = path.length === 1 ? path[0] : field;\n  return accessor((opt && opt.get || getter)(path), [field], name || field);\n}\n\nconst id = field('id');\nconst identity = accessor(_ => _, [], 'identity');\nconst zero = accessor(() => 0, [], 'zero');\nconst one = accessor(() => 1, [], 'one');\nconst truthy = accessor(() => true, [], 'true');\nconst falsy = accessor(() => false, [], 'false');\n\nfunction log$1(method, level, input) {\n  const args = [level].concat([].slice.call(input));\n  console[method].apply(console, args); // eslint-disable-line no-console\n}\n\nconst None = 0;\nconst Error$1 = 1;\nconst Warn = 2;\nconst Info = 3;\nconst Debug = 4;\nfunction logger (_, method) {\n  let level = _ || None;\n  return {\n    level(_) {\n      if (arguments.length) {\n        level = +_;\n        return this;\n      } else {\n        return level;\n      }\n    },\n\n    error() {\n      if (level >= Error$1) log$1(method || 'error', 'ERROR', arguments);\n      return this;\n    },\n\n    warn() {\n      if (level >= Warn) log$1(method || 'warn', 'WARN', arguments);\n      return this;\n    },\n\n    info() {\n      if (level >= Info) log$1(method || 'log', 'INFO', arguments);\n      return this;\n    },\n\n    debug() {\n      if (level >= Debug) log$1(method || 'log', 'DEBUG', arguments);\n      return this;\n    }\n\n  };\n}\n\nvar isArray = Array.isArray;\n\nfunction isObject (_) {\n  return _ === Object(_);\n}\n\nconst isLegalKey = key => key !== '__proto__';\n\nfunction mergeConfig(...configs) {\n  return configs.reduce((out, source) => {\n    for (const key in source) {\n      if (key === 'signals') {\n        // for signals, we merge the signals arrays\n        // source signals take precedence over\n        // existing signals with the same name\n        out.signals = mergeNamed(out.signals, source.signals);\n      } else {\n        // otherwise, merge objects subject to recursion constraints\n        // for legend block, recurse for the layout entry only\n        // for style block, recurse for all properties\n        // otherwise, no recursion: objects overwrite, no merging\n        const r = key === 'legend' ? {\n          layout: 1\n        } : key === 'style' ? true : null;\n        writeConfig(out, key, source[key], r);\n      }\n    }\n\n    return out;\n  }, {});\n}\nfunction writeConfig(output, key, value, recurse) {\n  if (!isLegalKey(key)) return;\n  let k, o;\n\n  if (isObject(value) && !isArray(value)) {\n    o = isObject(output[key]) ? output[key] : output[key] = {};\n\n    for (k in value) {\n      if (recurse && (recurse === true || recurse[k])) {\n        writeConfig(o, k, value[k]);\n      } else if (isLegalKey(k)) {\n        o[k] = value[k];\n      }\n    }\n  } else {\n    output[key] = value;\n  }\n}\n\nfunction mergeNamed(a, b) {\n  if (a == null) return b;\n  const map = {},\n        out = [];\n\n  function add(_) {\n    if (!map[_.name]) {\n      map[_.name] = 1;\n      out.push(_);\n    }\n  }\n\n  b.forEach(add);\n  a.forEach(add);\n  return out;\n}\n\nfunction peek (array) {\n  return array[array.length - 1];\n}\n\nfunction toNumber (_) {\n  return _ == null || _ === '' ? null : +_;\n}\n\nconst exp = sign => x => sign * Math.exp(x);\n\nconst log = sign => x => Math.log(sign * x);\n\nconst symlog = c => x => Math.sign(x) * Math.log1p(Math.abs(x / c));\n\nconst symexp = c => x => Math.sign(x) * Math.expm1(Math.abs(x)) * c;\n\nconst pow = exponent => x => x < 0 ? -Math.pow(-x, exponent) : Math.pow(x, exponent);\n\nfunction pan(domain, delta, lift, ground) {\n  const d0 = lift(domain[0]),\n        d1 = lift(peek(domain)),\n        dd = (d1 - d0) * delta;\n  return [ground(d0 - dd), ground(d1 - dd)];\n}\n\nfunction panLinear(domain, delta) {\n  return pan(domain, delta, toNumber, identity);\n}\nfunction panLog(domain, delta) {\n  var sign = Math.sign(domain[0]);\n  return pan(domain, delta, log(sign), exp(sign));\n}\nfunction panPow(domain, delta, exponent) {\n  return pan(domain, delta, pow(exponent), pow(1 / exponent));\n}\nfunction panSymlog(domain, delta, constant) {\n  return pan(domain, delta, symlog(constant), symexp(constant));\n}\n\nfunction zoom(domain, anchor, scale, lift, ground) {\n  const d0 = lift(domain[0]),\n        d1 = lift(peek(domain)),\n        da = anchor != null ? lift(anchor) : (d0 + d1) / 2;\n  return [ground(da + (d0 - da) * scale), ground(da + (d1 - da) * scale)];\n}\n\nfunction zoomLinear(domain, anchor, scale) {\n  return zoom(domain, anchor, scale, toNumber, identity);\n}\nfunction zoomLog(domain, anchor, scale) {\n  const sign = Math.sign(domain[0]);\n  return zoom(domain, anchor, scale, log(sign), exp(sign));\n}\nfunction zoomPow(domain, anchor, scale, exponent) {\n  return zoom(domain, anchor, scale, pow(exponent), pow(1 / exponent));\n}\nfunction zoomSymlog(domain, anchor, scale, constant) {\n  return zoom(domain, anchor, scale, symlog(constant), symexp(constant));\n}\n\nfunction quarter(date) {\n  return 1 + ~~(new Date(date).getMonth() / 3);\n}\nfunction utcquarter(date) {\n  return 1 + ~~(new Date(date).getUTCMonth() / 3);\n}\n\nfunction array (_) {\n  return _ != null ? isArray(_) ? _ : [_] : [];\n}\n\n/**\n * Span-preserving range clamp. If the span of the input range is less\n * than (max - min) and an endpoint exceeds either the min or max value,\n * the range is translated such that the span is preserved and one\n * endpoint touches the boundary of the min/max range.\n * If the span exceeds (max - min), the range [min, max] is returned.\n */\nfunction clampRange (range, min, max) {\n  let lo = range[0],\n      hi = range[1],\n      span;\n\n  if (hi < lo) {\n    span = hi;\n    hi = lo;\n    lo = span;\n  }\n\n  span = hi - lo;\n  return span >= max - min ? [min, max] : [lo = Math.min(Math.max(lo, min), max - span), lo + span];\n}\n\nfunction isFunction (_) {\n  return typeof _ === 'function';\n}\n\nconst DESCENDING = 'descending';\nfunction compare (fields, orders, opt) {\n  opt = opt || {};\n  orders = array(orders) || [];\n  const ord = [],\n        get = [],\n        fmap = {},\n        gen = opt.comparator || comparator;\n  array(fields).forEach((f, i) => {\n    if (f == null) return;\n    ord.push(orders[i] === DESCENDING ? -1 : 1);\n    get.push(f = isFunction(f) ? f : field(f, null, opt));\n    (accessorFields(f) || []).forEach(_ => fmap[_] = 1);\n  });\n  return get.length === 0 ? null : accessor(gen(get, ord), Object.keys(fmap));\n}\nconst ascending = (u, v) => (u < v || u == null) && v != null ? -1 : (u > v || v == null) && u != null ? 1 : (v = v instanceof Date ? +v : v, u = u instanceof Date ? +u : u) !== u && v === v ? -1 : v !== v && u === u ? 1 : 0;\n\nconst comparator = (fields, orders) => fields.length === 1 ? compare1(fields[0], orders[0]) : compareN(fields, orders, fields.length);\n\nconst compare1 = (field, order) => function (a, b) {\n  return ascending(field(a), field(b)) * order;\n};\n\nconst compareN = (fields, orders, n) => {\n  orders.push(0); // pad zero for convenient lookup\n\n  return function (a, b) {\n    let f,\n        c = 0,\n        i = -1;\n\n    while (c === 0 && ++i < n) {\n      f = fields[i];\n      c = ascending(f(a), f(b));\n    }\n\n    return c * orders[i];\n  };\n};\n\nfunction constant (_) {\n  return isFunction(_) ? _ : () => _;\n}\n\nfunction debounce (delay, handler) {\n  let tid;\n  return e => {\n    if (tid) clearTimeout(tid);\n    tid = setTimeout(() => (handler(e), tid = null), delay);\n  };\n}\n\nfunction extend (_) {\n  for (let x, k, i = 1, len = arguments.length; i < len; ++i) {\n    x = arguments[i];\n\n    for (k in x) {\n      _[k] = x[k];\n    }\n  }\n\n  return _;\n}\n\n/**\n * Return an array with minimum and maximum values, in the\n * form [min, max]. Ignores null, undefined, and NaN values.\n */\nfunction extent (array, f) {\n  let i = 0,\n      n,\n      v,\n      min,\n      max;\n\n  if (array && (n = array.length)) {\n    if (f == null) {\n      // find first valid value\n      for (v = array[i]; i < n && (v == null || v !== v); v = array[++i]);\n\n      min = max = v; // visit all other values\n\n      for (; i < n; ++i) {\n        v = array[i]; // skip null/undefined; NaN will fail all comparisons\n\n        if (v != null) {\n          if (v < min) min = v;\n          if (v > max) max = v;\n        }\n      }\n    } else {\n      // find first valid value\n      for (v = f(array[i]); i < n && (v == null || v !== v); v = f(array[++i]));\n\n      min = max = v; // visit all other values\n\n      for (; i < n; ++i) {\n        v = f(array[i]); // skip null/undefined; NaN will fail all comparisons\n\n        if (v != null) {\n          if (v < min) min = v;\n          if (v > max) max = v;\n        }\n      }\n    }\n  }\n\n  return [min, max];\n}\n\nfunction extentIndex (array, f) {\n  const n = array.length;\n  let i = -1,\n      a,\n      b,\n      c,\n      u,\n      v;\n\n  if (f == null) {\n    while (++i < n) {\n      b = array[i];\n\n      if (b != null && b >= b) {\n        a = c = b;\n        break;\n      }\n    }\n\n    if (i === n) return [-1, -1];\n    u = v = i;\n\n    while (++i < n) {\n      b = array[i];\n\n      if (b != null) {\n        if (a > b) {\n          a = b;\n          u = i;\n        }\n\n        if (c < b) {\n          c = b;\n          v = i;\n        }\n      }\n    }\n  } else {\n    while (++i < n) {\n      b = f(array[i], i, array);\n\n      if (b != null && b >= b) {\n        a = c = b;\n        break;\n      }\n    }\n\n    if (i === n) return [-1, -1];\n    u = v = i;\n\n    while (++i < n) {\n      b = f(array[i], i, array);\n\n      if (b != null) {\n        if (a > b) {\n          a = b;\n          u = i;\n        }\n\n        if (c < b) {\n          c = b;\n          v = i;\n        }\n      }\n    }\n  }\n\n  return [u, v];\n}\n\nconst hop = Object.prototype.hasOwnProperty;\nfunction has (object, property) {\n  return hop.call(object, property);\n}\n\nconst NULL = {};\nfunction fastmap (input) {\n  let obj = {},\n      test;\n\n  function has$1(key) {\n    return has(obj, key) && obj[key] !== NULL;\n  }\n\n  const map = {\n    size: 0,\n    empty: 0,\n    object: obj,\n    has: has$1,\n\n    get(key) {\n      return has$1(key) ? obj[key] : undefined;\n    },\n\n    set(key, value) {\n      if (!has$1(key)) {\n        ++map.size;\n        if (obj[key] === NULL) --map.empty;\n      }\n\n      obj[key] = value;\n      return this;\n    },\n\n    delete(key) {\n      if (has$1(key)) {\n        --map.size;\n        ++map.empty;\n        obj[key] = NULL;\n      }\n\n      return this;\n    },\n\n    clear() {\n      map.size = map.empty = 0;\n      map.object = obj = {};\n    },\n\n    test(_) {\n      if (arguments.length) {\n        test = _;\n        return map;\n      } else {\n        return test;\n      }\n    },\n\n    clean() {\n      const next = {};\n      let size = 0;\n\n      for (const key in obj) {\n        const value = obj[key];\n\n        if (value !== NULL && (!test || !test(value))) {\n          next[key] = value;\n          ++size;\n        }\n      }\n\n      map.size = size;\n      map.empty = 0;\n      map.object = obj = next;\n    }\n\n  };\n  if (input) Object.keys(input).forEach(key => {\n    map.set(key, input[key]);\n  });\n  return map;\n}\n\nfunction flush (range, value, threshold, left, right, center) {\n  if (!threshold && threshold !== 0) return center;\n  const t = +threshold;\n  let a = range[0],\n      b = peek(range),\n      l; // swap endpoints if range is reversed\n\n  if (b < a) {\n    l = a;\n    a = b;\n    b = l;\n  } // compare value to endpoints\n\n\n  l = Math.abs(value - a);\n  const r = Math.abs(b - value); // adjust if value is within threshold distance of endpoint\n\n  return l < r && l <= t ? left : r <= t ? right : center;\n}\n\nfunction inherits (child, parent, members) {\n  const proto = child.prototype = Object.create(parent.prototype);\n  Object.defineProperty(proto, 'constructor', {\n    value: child,\n    writable: true,\n    enumerable: true,\n    configurable: true\n  });\n  return extend(proto, members);\n}\n\n/**\n * Predicate that returns true if the value lies within the span\n * of the given range. The left and right flags control the use\n * of inclusive (true) or exclusive (false) comparisons.\n */\nfunction inrange (value, range, left, right) {\n  let r0 = range[0],\n      r1 = range[range.length - 1],\n      t;\n\n  if (r0 > r1) {\n    t = r0;\n    r0 = r1;\n    r1 = t;\n  }\n\n  left = left === undefined || left;\n  right = right === undefined || right;\n  return (left ? r0 <= value : r0 < value) && (right ? value <= r1 : value < r1);\n}\n\nfunction isBoolean (_) {\n  return typeof _ === 'boolean';\n}\n\nfunction isDate (_) {\n  return Object.prototype.toString.call(_) === '[object Date]';\n}\n\nfunction isIterable (_) {\n  return _ && isFunction(_[Symbol.iterator]);\n}\n\nfunction isNumber (_) {\n  return typeof _ === 'number';\n}\n\nfunction isRegExp (_) {\n  return Object.prototype.toString.call(_) === '[object RegExp]';\n}\n\nfunction isString (_) {\n  return typeof _ === 'string';\n}\n\nfunction key (fields, flat, opt) {\n  if (fields) {\n    fields = flat ? array(fields).map(f => f.replace(/\\\\(.)/g, '$1')) : array(fields);\n  }\n\n  const len = fields && fields.length,\n        gen = opt && opt.get || getter,\n        map = f => gen(flat ? [f] : splitAccessPath(f));\n\n  let fn;\n\n  if (!len) {\n    fn = function () {\n      return '';\n    };\n  } else if (len === 1) {\n    const get = map(fields[0]);\n\n    fn = function (_) {\n      return '' + get(_);\n    };\n  } else {\n    const get = fields.map(map);\n\n    fn = function (_) {\n      let s = '' + get[0](_),\n          i = 0;\n\n      while (++i < len) s += '|' + get[i](_);\n\n      return s;\n    };\n  }\n\n  return accessor(fn, fields, 'key');\n}\n\nfunction lerp (array, frac) {\n  const lo = array[0],\n        hi = peek(array),\n        f = +frac;\n  return !f ? lo : f === 1 ? hi : lo + f * (hi - lo);\n}\n\nconst DEFAULT_MAX_SIZE = 10000; // adapted from https://github.com/dominictarr/hashlru/ (MIT License)\n\nfunction lruCache (maxsize) {\n  maxsize = +maxsize || DEFAULT_MAX_SIZE;\n  let curr, prev, size;\n\n  const clear = () => {\n    curr = {};\n    prev = {};\n    size = 0;\n  };\n\n  const update = (key, value) => {\n    if (++size > maxsize) {\n      prev = curr;\n      curr = {};\n      size = 1;\n    }\n\n    return curr[key] = value;\n  };\n\n  clear();\n  return {\n    clear,\n    has: key => has(curr, key) || has(prev, key),\n    get: key => has(curr, key) ? curr[key] : has(prev, key) ? update(key, prev[key]) : undefined,\n    set: (key, value) => has(curr, key) ? curr[key] = value : update(key, value)\n  };\n}\n\nfunction merge (compare, array0, array1, output) {\n  const n0 = array0.length,\n        n1 = array1.length;\n  if (!n1) return array0;\n  if (!n0) return array1;\n  const merged = output || new array0.constructor(n0 + n1);\n  let i0 = 0,\n      i1 = 0,\n      i = 0;\n\n  for (; i0 < n0 && i1 < n1; ++i) {\n    merged[i] = compare(array0[i0], array1[i1]) > 0 ? array1[i1++] : array0[i0++];\n  }\n\n  for (; i0 < n0; ++i0, ++i) {\n    merged[i] = array0[i0];\n  }\n\n  for (; i1 < n1; ++i1, ++i) {\n    merged[i] = array1[i1];\n  }\n\n  return merged;\n}\n\nfunction repeat (str, reps) {\n  let s = '';\n\n  while (--reps >= 0) s += str;\n\n  return s;\n}\n\nfunction pad (str, length, padchar, align) {\n  const c = padchar || ' ',\n        s = str + '',\n        n = length - s.length;\n  return n <= 0 ? s : align === 'left' ? repeat(c, n) + s : align === 'center' ? repeat(c, ~~(n / 2)) + s + repeat(c, Math.ceil(n / 2)) : s + repeat(c, n);\n}\n\n/**\n * Return the numerical span of an array: the difference between\n * the last and first values.\n */\n\nfunction span (array) {\n  return array && peek(array) - array[0] || 0;\n}\n\nfunction $(x) {\n  return isArray(x) ? '[' + x.map($) + ']' : isObject(x) || isString(x) ? // Output valid JSON and JS source strings.\n  // See http://timelessrepo.com/json-isnt-a-javascript-subset\n  JSON.stringify(x).replace('\\u2028', '\\\\u2028').replace('\\u2029', '\\\\u2029') : x;\n}\n\nfunction toBoolean (_) {\n  return _ == null || _ === '' ? null : !_ || _ === 'false' || _ === '0' ? false : !!_;\n}\n\nconst defaultParser = _ => isNumber(_) ? _ : isDate(_) ? _ : Date.parse(_);\n\nfunction toDate (_, parser) {\n  parser = parser || defaultParser;\n  return _ == null || _ === '' ? null : parser(_);\n}\n\nfunction toString (_) {\n  return _ == null || _ === '' ? null : _ + '';\n}\n\nfunction toSet (_) {\n  const s = {},\n        n = _.length;\n\n  for (let i = 0; i < n; ++i) s[_[i]] = true;\n\n  return s;\n}\n\nfunction truncate (str, length, align, ellipsis) {\n  const e = ellipsis != null ? ellipsis : '\\u2026',\n        s = str + '',\n        n = s.length,\n        l = Math.max(0, length - e.length);\n  return n <= length ? s : align === 'left' ? e + s.slice(n - l) : align === 'center' ? s.slice(0, Math.ceil(l / 2)) + e + s.slice(n - ~~(l / 2)) : s.slice(0, l) + e;\n}\n\nfunction visitArray (array, filter, visitor) {\n  if (array) {\n    if (filter) {\n      const n = array.length;\n\n      for (let i = 0; i < n; ++i) {\n        const t = filter(array[i]);\n        if (t) visitor(t, i, array);\n      }\n    } else {\n      array.forEach(visitor);\n    }\n  }\n}\n\n\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,[encoded data, 33048 characters]\n//# sourceURL=webpack-internal:///./node_modules/vega/node_modules/vega-util/build/vega-util.module.js\n");

/***/ }),

/***/ "./node_modules/vega/node_modules/vega-view-transforms/build/vega-view-transforms.module.js":
/*!**************************************************************************************************!*\
  !*** ./node_modules/vega/node_modules/vega-view-transforms/build/vega-view-transforms.module.js ***!
  \**************************************************************************************************/
/*! exports provided: bound, identifier, mark, overlap, render, viewlayout */
/***/ (function(module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"bound\", function() { return Bound; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"identifier\", function() { return Identifier; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"mark\", function() { return Mark; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"overlap\", function() { return Overlap; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"render\", function() { return Render; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"viewlayout\", function() { return ViewLayout; });\n/* harmony import */ var vega_dataflow__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! vega-dataflow */ \"./node_modules/vega/node_modules/vega-dataflow/build/vega-dataflow.module.js\");\n/* harmony import */ var vega_scenegraph__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! vega-scenegraph */ \"./node_modules/vega/node_modules/vega-scenegraph/build/vega-scenegraph.module.js\");\n/* harmony import */ var vega_util__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! vega-util */ \"./node_modules/vega/node_modules/vega-util/build/vega-util.module.js\");\n\n\n\n\nconst Top = 'top';\nconst Left = 'left';\nconst Right = 'right';\nconst Bottom = 'bottom';\nconst TopLeft = 'top-left';\nconst TopRight = 'top-right';\nconst BottomLeft = 'bottom-left';\nconst BottomRight = 'bottom-right';\nconst Start = 'start';\nconst Middle = 'middle';\nconst End = 'end';\nconst X = 'x';\nconst Y = 'y';\nconst Group = 'group';\nconst AxisRole = 'axis';\nconst TitleRole = 'title';\nconst FrameRole = 'frame';\nconst ScopeRole = 'scope';\nconst LegendRole = 'legend';\nconst RowHeader = 'row-header';\nconst RowFooter = 'row-footer';\nconst RowTitle = 'row-title';\nconst ColHeader = 'column-header';\nconst ColFooter = 'column-footer';\nconst ColTitle = 'column-title';\nconst Padding = 'padding';\nconst Symbols = 'symbol';\nconst Fit = 'fit';\nconst FitX = 'fit-x';\nconst FitY = 'fit-y';\nconst Pad = 'pad';\nconst None = 'none';\nconst All = 'all';\nconst Each = 'each';\nconst Flush = 'flush';\nconst Column = 'column';\nconst Row = 'row';\n\n/**\n * Calculate bounding boxes for scenegraph items.\n * @constructor\n * @param {object} params - The parameters for this operator.\n * @param {object} params.mark - The scenegraph mark instance to bound.\n */\n\nfunction Bound(params) {\n  vega_dataflow__WEBPACK_IMPORTED_MODULE_0__[\"Transform\"].call(this, null, params);\n}\nObject(vega_util__WEBPACK_IMPORTED_MODULE_2__[\"inherits\"])(Bound, vega_dataflow__WEBPACK_IMPORTED_MODULE_0__[\"Transform\"], {\n  transform(_, pulse) {\n    const view = pulse.dataflow,\n          mark = _.mark,\n          type = mark.marktype,\n          entry = vega_scenegraph__WEBPACK_IMPORTED_MODULE_1__[\"Marks\"][type],\n          bound = entry.bound;\n    let markBounds = mark.bounds,\n        rebound;\n\n    if (entry.nested) {\n      // multi-item marks have a single bounds instance\n      if (mark.items.length) view.dirty(mark.items[0]);\n      markBounds = boundItem(mark, bound);\n      mark.items.forEach(item => {\n        item.bounds.clear().union(markBounds);\n      });\n    } else if (type === Group || _.modified()) {\n      // operator parameters modified -> re-bound all items\n      // updates group bounds in response to modified group content\n      pulse.visit(pulse.MOD, item => view.dirty(item));\n      markBounds.clear();\n      mark.items.forEach(item => markBounds.union(boundItem(item, bound))); // force reflow for axes/legends/titles to propagate any layout changes\n\n      switch (mark.role) {\n        case AxisRole:\n        case LegendRole:\n        case TitleRole:\n          pulse.reflow();\n      }\n    } else {\n      // incrementally update bounds, re-bound mark as needed\n      rebound = pulse.changed(pulse.REM);\n      pulse.visit(pulse.ADD, item => {\n        markBounds.union(boundItem(item, bound));\n      });\n      pulse.visit(pulse.MOD, item => {\n        rebound = rebound || markBounds.alignsWith(item.bounds);\n        view.dirty(item);\n        markBounds.union(boundItem(item, bound));\n      });\n\n      if (rebound) {\n        markBounds.clear();\n        mark.items.forEach(item => markBounds.union(item.bounds));\n      }\n    } // ensure mark bounds do not exceed any clipping region\n\n\n    Object(vega_scenegraph__WEBPACK_IMPORTED_MODULE_1__[\"boundClip\"])(mark);\n    return pulse.modifies('bounds');\n  }\n\n});\n\nfunction boundItem(item, bound, opt) {\n  return bound(item.bounds.clear(), item, opt);\n}\n\nconst COUNTER_NAME = ':vega_identifier:';\n/**\n * Adds a unique identifier to all added tuples.\n * This transform creates a new signal that serves as an id counter.\n * As a result, the id counter is shared across all instances of this\n * transform, generating unique ids across multiple data streams. In\n * addition, this signal value can be included in a snapshot of the\n * dataflow state, enabling correct resumption of id allocation.\n * @constructor\n * @param {object} params - The parameters for this operator.\n * @param {string} params.as - The field name for the generated identifier.\n */\n\nfunction Identifier(params) {\n  vega_dataflow__WEBPACK_IMPORTED_MODULE_0__[\"Transform\"].call(this, 0, params);\n}\nIdentifier.Definition = {\n  'type': 'Identifier',\n  'metadata': {\n    'modifies': true\n  },\n  'params': [{\n    'name': 'as',\n    'type': 'string',\n    'required': true\n  }]\n};\nObject(vega_util__WEBPACK_IMPORTED_MODULE_2__[\"inherits\"])(Identifier, vega_dataflow__WEBPACK_IMPORTED_MODULE_0__[\"Transform\"], {\n  transform(_, pulse) {\n    const counter = getCounter(pulse.dataflow),\n          as = _.as;\n    let id = counter.value;\n    pulse.visit(pulse.ADD, t => t[as] = t[as] || ++id);\n    counter.set(this.value = id);\n    return pulse;\n  }\n\n});\n\nfunction getCounter(view) {\n  return view._signals[COUNTER_NAME] || (view._signals[COUNTER_NAME] = view.add(0));\n}\n\n/**\n * Bind scenegraph items to a scenegraph mark instance.\n * @constructor\n * @param {object} params - The parameters for this operator.\n * @param {object} params.markdef - The mark definition for creating the mark.\n *   This is an object of legal scenegraph mark properties which *must* include\n *   the 'marktype' property.\n */\n\nfunction Mark(params) {\n  vega_dataflow__WEBPACK_IMPORTED_MODULE_0__[\"Transform\"].call(this, null, params);\n}\nObject(vega_util__WEBPACK_IMPORTED_MODULE_2__[\"inherits\"])(Mark, vega_dataflow__WEBPACK_IMPORTED_MODULE_0__[\"Transform\"], {\n  transform(_, pulse) {\n    let mark = this.value; // acquire mark on first invocation, bind context and group\n\n    if (!mark) {\n      mark = pulse.dataflow.scenegraph().mark(_.markdef, lookup(_), _.index);\n      mark.group.context = _.context;\n      if (!_.context.group) _.context.group = mark.group;\n      mark.source = this.source; // point to upstream collector\n\n      mark.clip = _.clip;\n      mark.interactive = _.interactive;\n      this.value = mark;\n    } // initialize entering items\n\n\n    const Init = mark.marktype === Group ? vega_scenegraph__WEBPACK_IMPORTED_MODULE_1__[\"GroupItem\"] : vega_scenegraph__WEBPACK_IMPORTED_MODULE_1__[\"Item\"];\n    pulse.visit(pulse.ADD, item => Init.call(item, mark)); // update clipping and/or interactive status\n\n    if (_.modified('clip') || _.modified('interactive')) {\n      mark.clip = _.clip;\n      mark.interactive = !!_.interactive;\n      mark.zdirty = true; // force scenegraph re-eval\n\n      pulse.reflow();\n    } // bind items array to scenegraph mark\n\n\n    mark.items = pulse.source;\n    return pulse;\n  }\n\n});\n\nfunction lookup(_) {\n  const g = _.groups,\n        p = _.parent;\n  return g && g.size === 1 ? g.get(Object.keys(g.object)[0]) : g && p ? g.lookup(p) : null;\n}\n\n/**\n * Analyze items for overlap, changing opacity to hide items with\n * overlapping bounding boxes. This transform will preserve at least\n * two items (e.g., first and last) even if overlap persists.\n * @param {object} params - The parameters for this operator.\n * @param {function(*,*): number} [params.sort] - A comparator\n *   function for sorting items.\n * @param {object} [params.method] - The overlap removal method to apply.\n *   One of 'parity' (default, hide every other item until there is no\n *   more overlap) or 'greedy' (sequentially scan and hide and items that\n *   overlap with the last visible item).\n * @param {object} [params.boundScale] - A scale whose range should be used\n *   to bound the items. Items exceeding the bounds of the scale range\n *   will be treated as overlapping. If null or undefined, no bounds check\n *   will be applied.\n * @param {object} [params.boundOrient] - The orientation of the scale\n *   (top, bottom, left, or right) used to bound items. This parameter is\n *   ignored if boundScale is null or undefined.\n * @param {object} [params.boundTolerance] - The tolerance in pixels for\n *   bound inclusion testing (default 1). This specifies by how many pixels\n *   an item's bounds may exceed the scale range bounds and not be culled.\n * @constructor\n */\n\nfunction Overlap(params) {\n  vega_dataflow__WEBPACK_IMPORTED_MODULE_0__[\"Transform\"].call(this, null, params);\n}\nconst methods = {\n  parity: items => items.filter((item, i) => i % 2 ? item.opacity = 0 : 1),\n  greedy: (items, sep) => {\n    let a;\n    return items.filter((b, i) => !i || !intersect(a.bounds, b.bounds, sep) ? (a = b, 1) : b.opacity = 0);\n  }\n}; // compute bounding box intersection\n// including padding pixels of separation\n\nconst intersect = (a, b, sep) => sep > Math.max(b.x1 - a.x2, a.x1 - b.x2, b.y1 - a.y2, a.y1 - b.y2);\n\nconst hasOverlap = (items, pad) => {\n  for (var i = 1, n = items.length, a = items[0].bounds, b; i < n; a = b, ++i) {\n    if (intersect(a, b = items[i].bounds, pad)) return true;\n  }\n};\n\nconst hasBounds = item => {\n  const b = item.bounds;\n  return b.width() > 1 && b.height() > 1;\n};\n\nconst boundTest = (scale, orient, tolerance) => {\n  var range = scale.range(),\n      b = new vega_scenegraph__WEBPACK_IMPORTED_MODULE_1__[\"Bounds\"]();\n\n  if (orient === Top || orient === Bottom) {\n    b.set(range[0], -Infinity, range[1], +Infinity);\n  } else {\n    b.set(-Infinity, range[0], +Infinity, range[1]);\n  }\n\n  b.expand(tolerance || 1);\n  return item => b.encloses(item.bounds);\n}; // reset all items to be fully opaque\n\n\nconst reset = source => {\n  source.forEach(item => item.opacity = 1);\n  return source;\n}; // add all tuples to mod, fork pulse if parameters were modified\n// fork prevents cross-stream tuple pollution (e.g., pulse from scale)\n\n\nconst reflow = (pulse, _) => pulse.reflow(_.modified()).modifies('opacity');\n\nObject(vega_util__WEBPACK_IMPORTED_MODULE_2__[\"inherits\"])(Overlap, vega_dataflow__WEBPACK_IMPORTED_MODULE_0__[\"Transform\"], {\n  transform(_, pulse) {\n    const reduce = methods[_.method] || methods.parity,\n          sep = _.separation || 0;\n    let source = pulse.materialize(pulse.SOURCE).source,\n        items,\n        test;\n    if (!source || !source.length) return;\n\n    if (!_.method) {\n      // early exit if method is falsy\n      if (_.modified('method')) {\n        reset(source);\n        pulse = reflow(pulse, _);\n      }\n\n      return pulse;\n    } // skip labels with no content\n\n\n    source = source.filter(hasBounds); // early exit, nothing to do\n\n    if (!source.length) return;\n\n    if (_.sort) {\n      source = source.slice().sort(_.sort);\n    }\n\n    items = reset(source);\n    pulse = reflow(pulse, _);\n\n    if (items.length >= 3 && hasOverlap(items, sep)) {\n      do {\n        items = reduce(items, sep);\n      } while (items.length >= 3 && hasOverlap(items, sep));\n\n      if (items.length < 3 && !Object(vega_util__WEBPACK_IMPORTED_MODULE_2__[\"peek\"])(source).opacity) {\n        if (items.length > 1) Object(vega_util__WEBPACK_IMPORTED_MODULE_2__[\"peek\"])(items).opacity = 0;\n        Object(vega_util__WEBPACK_IMPORTED_MODULE_2__[\"peek\"])(source).opacity = 1;\n      }\n    }\n\n    if (_.boundScale && _.boundTolerance >= 0) {\n      test = boundTest(_.boundScale, _.boundOrient, +_.boundTolerance);\n      source.forEach(item => {\n        if (!test(item)) item.opacity = 0;\n      });\n    } // re-calculate mark bounds\n\n\n    const bounds = items[0].mark.bounds.clear();\n    source.forEach(item => {\n      if (item.opacity) bounds.union(item.bounds);\n    });\n    return pulse;\n  }\n\n});\n\n/**\n * Queue modified scenegraph items for rendering.\n * @constructor\n */\n\nfunction Render(params) {\n  vega_dataflow__WEBPACK_IMPORTED_MODULE_0__[\"Transform\"].call(this, null, params);\n}\nObject(vega_util__WEBPACK_IMPORTED_MODULE_2__[\"inherits\"])(Render, vega_dataflow__WEBPACK_IMPORTED_MODULE_0__[\"Transform\"], {\n  transform(_, pulse) {\n    const view = pulse.dataflow;\n    pulse.visit(pulse.ALL, item => view.dirty(item)); // set z-index dirty flag as needed\n\n    if (pulse.fields && pulse.fields['zindex']) {\n      const item = pulse.source && pulse.source[0];\n      if (item) item.mark.zdirty = true;\n    }\n  }\n\n});\n\nconst tempBounds = new vega_scenegraph__WEBPACK_IMPORTED_MODULE_1__[\"Bounds\"]();\nfunction set(item, property, value) {\n  return item[property] === value ? 0 : (item[property] = value, 1);\n}\n\nfunction isYAxis(mark) {\n  var orient = mark.items[0].orient;\n  return orient === Left || orient === Right;\n}\n\nfunction axisIndices(datum) {\n  let index = +datum.grid;\n  return [datum.ticks ? index++ : -1, // ticks index\n  datum.labels ? index++ : -1, // labels index\n  index + +datum.domain // title index\n  ];\n}\n\nfunction axisLayout(view, axis, width, height) {\n  var item = axis.items[0],\n      datum = item.datum,\n      delta = item.translate != null ? item.translate : 0.5,\n      orient = item.orient,\n      indices = axisIndices(datum),\n      range = item.range,\n      offset = item.offset,\n      position = item.position,\n      minExtent = item.minExtent,\n      maxExtent = item.maxExtent,\n      title = datum.title && item.items[indices[2]].items[0],\n      titlePadding = item.titlePadding,\n      bounds = item.bounds,\n      dl = title && Object(vega_scenegraph__WEBPACK_IMPORTED_MODULE_1__[\"multiLineOffset\"])(title),\n      x = 0,\n      y = 0,\n      i,\n      s;\n  tempBounds.clear().union(bounds);\n  bounds.clear();\n  if ((i = indices[0]) > -1) bounds.union(item.items[i].bounds);\n  if ((i = indices[1]) > -1) bounds.union(item.items[i].bounds); // position axis group and title\n\n  switch (orient) {\n    case Top:\n      x = position || 0;\n      y = -offset;\n      s = Math.max(minExtent, Math.min(maxExtent, -bounds.y1));\n      bounds.add(0, -s).add(range, 0);\n      if (title) axisTitleLayout(view, title, s, titlePadding, dl, 0, -1, bounds);\n      break;\n\n    case Left:\n      x = -offset;\n      y = position || 0;\n      s = Math.max(minExtent, Math.min(maxExtent, -bounds.x1));\n      bounds.add(-s, 0).add(0, range);\n      if (title) axisTitleLayout(view, title, s, titlePadding, dl, 1, -1, bounds);\n      break;\n\n    case Right:\n      x = width + offset;\n      y = position || 0;\n      s = Math.max(minExtent, Math.min(maxExtent, bounds.x2));\n      bounds.add(0, 0).add(s, range);\n      if (title) axisTitleLayout(view, title, s, titlePadding, dl, 1, 1, bounds);\n      break;\n\n    case Bottom:\n      x = position || 0;\n      y = height + offset;\n      s = Math.max(minExtent, Math.min(maxExtent, bounds.y2));\n      bounds.add(0, 0).add(range, s);\n      if (title) axisTitleLayout(view, title, s, titlePadding, 0, 0, 1, bounds);\n      break;\n\n    default:\n      x = item.x;\n      y = item.y;\n  } // update bounds\n\n\n  Object(vega_scenegraph__WEBPACK_IMPORTED_MODULE_1__[\"boundStroke\"])(bounds.translate(x, y), item);\n\n  if (set(item, 'x', x + delta) | set(item, 'y', y + delta)) {\n    item.bounds = tempBounds;\n    view.dirty(item);\n    item.bounds = bounds;\n    view.dirty(item);\n  }\n\n  return item.mark.bounds.clear().union(bounds);\n}\n\nfunction axisTitleLayout(view, title, offset, pad, dl, isYAxis, sign, bounds) {\n  const b = title.bounds;\n\n  if (title.auto) {\n    const v = sign * (offset + dl + pad);\n    let dx = 0,\n        dy = 0;\n    view.dirty(title);\n    isYAxis ? dx = (title.x || 0) - (title.x = v) : dy = (title.y || 0) - (title.y = v);\n    title.mark.bounds.clear().union(b.translate(-dx, -dy));\n    view.dirty(title);\n  }\n\n  bounds.union(b);\n}\n\nconst min = (a, b) => Math.floor(Math.min(a, b));\n\nconst max = (a, b) => Math.ceil(Math.max(a, b));\n\nfunction gridLayoutGroups(group) {\n  var groups = group.items,\n      n = groups.length,\n      i = 0,\n      mark,\n      items;\n  const views = {\n    marks: [],\n    rowheaders: [],\n    rowfooters: [],\n    colheaders: [],\n    colfooters: [],\n    rowtitle: null,\n    coltitle: null\n  }; // layout axes, gather legends, collect bounds\n\n  for (; i < n; ++i) {\n    mark = groups[i];\n    items = mark.items;\n\n    if (mark.marktype === Group) {\n      switch (mark.role) {\n        case AxisRole:\n        case LegendRole:\n        case TitleRole:\n          break;\n\n        case RowHeader:\n          views.rowheaders.push(...items);\n          break;\n\n        case RowFooter:\n          views.rowfooters.push(...items);\n          break;\n\n        case ColHeader:\n          views.colheaders.push(...items);\n          break;\n\n        case ColFooter:\n          views.colfooters.push(...items);\n          break;\n\n        case RowTitle:\n          views.rowtitle = items[0];\n          break;\n\n        case ColTitle:\n          views.coltitle = items[0];\n          break;\n\n        default:\n          views.marks.push(...items);\n      }\n    }\n  }\n\n  return views;\n}\n\nfunction bboxFlush(item) {\n  return new vega_scenegraph__WEBPACK_IMPORTED_MODULE_1__[\"Bounds\"]().set(0, 0, item.width || 0, item.height || 0);\n}\n\nfunction bboxFull(item) {\n  const b = item.bounds.clone();\n  return b.empty() ? b.set(0, 0, 0, 0) : b.translate(-(item.x || 0), -(item.y || 0));\n}\n\nfunction get(opt, key, d) {\n  const v = Object(vega_util__WEBPACK_IMPORTED_MODULE_2__[\"isObject\"])(opt) ? opt[key] : opt;\n  return v != null ? v : d !== undefined ? d : 0;\n}\n\nfunction offsetValue(v) {\n  return v < 0 ? Math.ceil(-v) : 0;\n}\n\nfunction gridLayout(view, groups, opt) {\n  var dirty = !opt.nodirty,\n      bbox = opt.bounds === Flush ? bboxFlush : bboxFull,\n      bounds = tempBounds.set(0, 0, 0, 0),\n      alignCol = get(opt.align, Column),\n      alignRow = get(opt.align, Row),\n      padCol = get(opt.padding, Column),\n      padRow = get(opt.padding, Row),\n      ncols = opt.columns || groups.length,\n      nrows = ncols <= 0 ? 1 : Math.ceil(groups.length / ncols),\n      n = groups.length,\n      xOffset = Array(n),\n      xExtent = Array(ncols),\n      xMax = 0,\n      yOffset = Array(n),\n      yExtent = Array(nrows),\n      yMax = 0,\n      dx = Array(n),\n      dy = Array(n),\n      boxes = Array(n),\n      m,\n      i,\n      c,\n      r,\n      b,\n      g,\n      px,\n      py,\n      x,\n      y,\n      offset;\n\n  for (i = 0; i < ncols; ++i) xExtent[i] = 0;\n\n  for (i = 0; i < nrows; ++i) yExtent[i] = 0; // determine offsets for each group\n\n\n  for (i = 0; i < n; ++i) {\n    g = groups[i];\n    b = boxes[i] = bbox(g);\n    g.x = g.x || 0;\n    dx[i] = 0;\n    g.y = g.y || 0;\n    dy[i] = 0;\n    c = i % ncols;\n    r = ~~(i / ncols);\n    xMax = Math.max(xMax, px = Math.ceil(b.x2));\n    yMax = Math.max(yMax, py = Math.ceil(b.y2));\n    xExtent[c] = Math.max(xExtent[c], px);\n    yExtent[r] = Math.max(yExtent[r], py);\n    xOffset[i] = padCol + offsetValue(b.x1);\n    yOffset[i] = padRow + offsetValue(b.y1);\n    if (dirty) view.dirty(groups[i]);\n  } // set initial alignment offsets\n\n\n  for (i = 0; i < n; ++i) {\n    if (i % ncols === 0) xOffset[i] = 0;\n    if (i < ncols) yOffset[i] = 0;\n  } // enforce column alignment constraints\n\n\n  if (alignCol === Each) {\n    for (c = 1; c < ncols; ++c) {\n      for (offset = 0, i = c; i < n; i += ncols) {\n        if (offset < xOffset[i]) offset = xOffset[i];\n      }\n\n      for (i = c; i < n; i += ncols) {\n        xOffset[i] = offset + xExtent[c - 1];\n      }\n    }\n  } else if (alignCol === All) {\n    for (offset = 0, i = 0; i < n; ++i) {\n      if (i % ncols && offset < xOffset[i]) offset = xOffset[i];\n    }\n\n    for (i = 0; i < n; ++i) {\n      if (i % ncols) xOffset[i] = offset + xMax;\n    }\n  } else {\n    for (alignCol = false, c = 1; c < ncols; ++c) {\n      for (i = c; i < n; i += ncols) {\n        xOffset[i] += xExtent[c - 1];\n      }\n    }\n  } // enforce row alignment constraints\n\n\n  if (alignRow === Each) {\n    for (r = 1; r < nrows; ++r) {\n      for (offset = 0, i = r * ncols, m = i + ncols; i < m; ++i) {\n        if (offset < yOffset[i]) offset = yOffset[i];\n      }\n\n      for (i = r * ncols; i < m; ++i) {\n        yOffset[i] = offset + yExtent[r - 1];\n      }\n    }\n  } else if (alignRow === All) {\n    for (offset = 0, i = ncols; i < n; ++i) {\n      if (offset < yOffset[i]) offset = yOffset[i];\n    }\n\n    for (i = ncols; i < n; ++i) {\n      yOffset[i] = offset + yMax;\n    }\n  } else {\n    for (alignRow = false, r = 1; r < nrows; ++r) {\n      for (i = r * ncols, m = i + ncols; i < m; ++i) {\n        yOffset[i] += yExtent[r - 1];\n      }\n    }\n  } // perform horizontal grid layout\n\n\n  for (x = 0, i = 0; i < n; ++i) {\n    x = xOffset[i] + (i % ncols ? x : 0);\n    dx[i] += x - groups[i].x;\n  } // perform vertical grid layout\n\n\n  for (c = 0; c < ncols; ++c) {\n    for (y = 0, i = c; i < n; i += ncols) {\n      y += yOffset[i];\n      dy[i] += y - groups[i].y;\n    }\n  } // perform horizontal centering\n\n\n  if (alignCol && get(opt.center, Column) && nrows > 1) {\n    for (i = 0; i < n; ++i) {\n      b = alignCol === All ? xMax : xExtent[i % ncols];\n      x = b - boxes[i].x2 - groups[i].x - dx[i];\n      if (x > 0) dx[i] += x / 2;\n    }\n  } // perform vertical centering\n\n\n  if (alignRow && get(opt.center, Row) && ncols !== 1) {\n    for (i = 0; i < n; ++i) {\n      b = alignRow === All ? yMax : yExtent[~~(i / ncols)];\n      y = b - boxes[i].y2 - groups[i].y - dy[i];\n      if (y > 0) dy[i] += y / 2;\n    }\n  } // position grid relative to anchor\n\n\n  for (i = 0; i < n; ++i) {\n    bounds.union(boxes[i].translate(dx[i], dy[i]));\n  }\n\n  x = get(opt.anchor, X);\n  y = get(opt.anchor, Y);\n\n  switch (get(opt.anchor, Column)) {\n    case End:\n      x -= bounds.width();\n      break;\n\n    case Middle:\n      x -= bounds.width() / 2;\n  }\n\n  switch (get(opt.anchor, Row)) {\n    case End:\n      y -= bounds.height();\n      break;\n\n    case Middle:\n      y -= bounds.height() / 2;\n  }\n\n  x = Math.round(x);\n  y = Math.round(y); // update mark positions, bounds, dirty\n\n  bounds.clear();\n\n  for (i = 0; i < n; ++i) {\n    groups[i].mark.bounds.clear();\n  }\n\n  for (i = 0; i < n; ++i) {\n    g = groups[i];\n    g.x += dx[i] += x;\n    g.y += dy[i] += y;\n    bounds.union(g.mark.bounds.union(g.bounds.translate(dx[i], dy[i])));\n    if (dirty) view.dirty(g);\n  }\n\n  return bounds;\n}\nfunction trellisLayout(view, group, opt) {\n  var views = gridLayoutGroups(group),\n      groups = views.marks,\n      bbox = opt.bounds === Flush ? boundFlush : boundFull,\n      off = opt.offset,\n      ncols = opt.columns || groups.length,\n      nrows = ncols <= 0 ? 1 : Math.ceil(groups.length / ncols),\n      cells = nrows * ncols,\n      x,\n      y,\n      x2,\n      y2,\n      anchor,\n      band,\n      offset; // -- initial grid layout\n\n  const bounds = gridLayout(view, groups, opt);\n  if (bounds.empty()) bounds.set(0, 0, 0, 0); // empty grid\n  // -- layout grid headers and footers --\n  // perform row header layout\n\n  if (views.rowheaders) {\n    band = get(opt.headerBand, Row, null);\n    x = layoutHeaders(view, views.rowheaders, groups, ncols, nrows, -get(off, 'rowHeader'), min, 0, bbox, 'x1', 0, ncols, 1, band);\n  } // perform column header layout\n\n\n  if (views.colheaders) {\n    band = get(opt.headerBand, Column, null);\n    y = layoutHeaders(view, views.colheaders, groups, ncols, ncols, -get(off, 'columnHeader'), min, 1, bbox, 'y1', 0, 1, ncols, band);\n  } // perform row footer layout\n\n\n  if (views.rowfooters) {\n    band = get(opt.footerBand, Row, null);\n    x2 = layoutHeaders(view, views.rowfooters, groups, ncols, nrows, get(off, 'rowFooter'), max, 0, bbox, 'x2', ncols - 1, ncols, 1, band);\n  } // perform column footer layout\n\n\n  if (views.colfooters) {\n    band = get(opt.footerBand, Column, null);\n    y2 = layoutHeaders(view, views.colfooters, groups, ncols, ncols, get(off, 'columnFooter'), max, 1, bbox, 'y2', cells - ncols, 1, ncols, band);\n  } // perform row title layout\n\n\n  if (views.rowtitle) {\n    anchor = get(opt.titleAnchor, Row);\n    offset = get(off, 'rowTitle');\n    offset = anchor === End ? x2 + offset : x - offset;\n    band = get(opt.titleBand, Row, 0.5);\n    layoutTitle(view, views.rowtitle, offset, 0, bounds, band);\n  } // perform column title layout\n\n\n  if (views.coltitle) {\n    anchor = get(opt.titleAnchor, Column);\n    offset = get(off, 'columnTitle');\n    offset = anchor === End ? y2 + offset : y - offset;\n    band = get(opt.titleBand, Column, 0.5);\n    layoutTitle(view, views.coltitle, offset, 1, bounds, band);\n  }\n}\n\nfunction boundFlush(item, field) {\n  return field === 'x1' ? item.x || 0 : field === 'y1' ? item.y || 0 : field === 'x2' ? (item.x || 0) + (item.width || 0) : field === 'y2' ? (item.y || 0) + (item.height || 0) : undefined;\n}\n\nfunction boundFull(item, field) {\n  return item.bounds[field];\n}\n\nfunction layoutHeaders(view, headers, groups, ncols, limit, offset, agg, isX, bound, bf, start, stride, back, band) {\n  var n = groups.length,\n      init = 0,\n      edge = 0,\n      i,\n      j,\n      k,\n      m,\n      b,\n      h,\n      g,\n      x,\n      y; // if no groups, early exit and return 0\n\n  if (!n) return init; // compute margin\n\n  for (i = start; i < n; i += stride) {\n    if (groups[i]) init = agg(init, bound(groups[i], bf));\n  } // if no headers, return margin calculation\n\n\n  if (!headers.length) return init; // check if number of headers exceeds number of rows or columns\n\n  if (headers.length > limit) {\n    view.warn('Grid headers exceed limit: ' + limit);\n    headers = headers.slice(0, limit);\n  } // apply offset\n\n\n  init += offset; // clear mark bounds for all headers\n\n  for (j = 0, m = headers.length; j < m; ++j) {\n    view.dirty(headers[j]);\n    headers[j].mark.bounds.clear();\n  } // layout each header\n\n\n  for (i = start, j = 0, m = headers.length; j < m; ++j, i += stride) {\n    h = headers[j];\n    b = h.mark.bounds; // search for nearest group to align to\n    // necessary if table has empty cells\n\n    for (k = i; k >= 0 && (g = groups[k]) == null; k -= back); // assign coordinates and update bounds\n\n\n    if (isX) {\n      x = band == null ? g.x : Math.round(g.bounds.x1 + band * g.bounds.width());\n      y = init;\n    } else {\n      x = init;\n      y = band == null ? g.y : Math.round(g.bounds.y1 + band * g.bounds.height());\n    }\n\n    b.union(h.bounds.translate(x - (h.x || 0), y - (h.y || 0)));\n    h.x = x;\n    h.y = y;\n    view.dirty(h); // update current edge of layout bounds\n\n    edge = agg(edge, b[bf]);\n  }\n\n  return edge;\n}\n\nfunction layoutTitle(view, g, offset, isX, bounds, band) {\n  if (!g) return;\n  view.dirty(g); // compute title coordinates\n\n  var x = offset,\n      y = offset;\n  isX ? x = Math.round(bounds.x1 + band * bounds.width()) : y = Math.round(bounds.y1 + band * bounds.height()); // assign coordinates and update bounds\n\n  g.bounds.translate(x - (g.x || 0), y - (g.y || 0));\n  g.mark.bounds.clear().union(g.bounds);\n  g.x = x;\n  g.y = y; // queue title for redraw\n\n  view.dirty(g);\n}\n\nfunction lookup$1(config, orient) {\n  const opt = config[orient] || {};\n  return (key, d) => opt[key] != null ? opt[key] : config[key] != null ? config[key] : d;\n} // if legends specify offset directly, use the maximum specified value\n\n\nfunction offsets(legends, value) {\n  let max = -Infinity;\n  legends.forEach(item => {\n    if (item.offset != null) max = Math.max(max, item.offset);\n  });\n  return max > -Infinity ? max : value;\n}\n\nfunction legendParams(g, orient, config, xb, yb, w, h) {\n  const _ = lookup$1(config, orient),\n        offset = offsets(g, _('offset', 0)),\n        anchor = _('anchor', Start),\n        mult = anchor === End ? 1 : anchor === Middle ? 0.5 : 0;\n\n  const p = {\n    align: Each,\n    bounds: _('bounds', Flush),\n    columns: _('direction') === 'vertical' ? 1 : g.length,\n    padding: _('margin', 8),\n    center: _('center'),\n    nodirty: true\n  };\n\n  switch (orient) {\n    case Left:\n      p.anchor = {\n        x: Math.floor(xb.x1) - offset,\n        column: End,\n        y: mult * (h || xb.height() + 2 * xb.y1),\n        row: anchor\n      };\n      break;\n\n    case Right:\n      p.anchor = {\n        x: Math.ceil(xb.x2) + offset,\n        y: mult * (h || xb.height() + 2 * xb.y1),\n        row: anchor\n      };\n      break;\n\n    case Top:\n      p.anchor = {\n        y: Math.floor(yb.y1) - offset,\n        row: End,\n        x: mult * (w || yb.width() + 2 * yb.x1),\n        column: anchor\n      };\n      break;\n\n    case Bottom:\n      p.anchor = {\n        y: Math.ceil(yb.y2) + offset,\n        x: mult * (w || yb.width() + 2 * yb.x1),\n        column: anchor\n      };\n      break;\n\n    case TopLeft:\n      p.anchor = {\n        x: offset,\n        y: offset\n      };\n      break;\n\n    case TopRight:\n      p.anchor = {\n        x: w - offset,\n        y: offset,\n        column: End\n      };\n      break;\n\n    case BottomLeft:\n      p.anchor = {\n        x: offset,\n        y: h - offset,\n        row: End\n      };\n      break;\n\n    case BottomRight:\n      p.anchor = {\n        x: w - offset,\n        y: h - offset,\n        column: End,\n        row: End\n      };\n      break;\n  }\n\n  return p;\n}\nfunction legendLayout(view, legend) {\n  var item = legend.items[0],\n      datum = item.datum,\n      orient = item.orient,\n      bounds = item.bounds,\n      x = item.x,\n      y = item.y,\n      w,\n      h; // cache current bounds for later comparison\n\n  item._bounds ? item._bounds.clear().union(bounds) : item._bounds = bounds.clone();\n  bounds.clear(); // adjust legend to accommodate padding and title\n\n  legendGroupLayout(view, item, item.items[0].items[0]); // aggregate bounds to determine size, and include origin\n\n  bounds = legendBounds(item, bounds);\n  w = 2 * item.padding;\n  h = 2 * item.padding;\n\n  if (!bounds.empty()) {\n    w = Math.ceil(bounds.width() + w);\n    h = Math.ceil(bounds.height() + h);\n  }\n\n  if (datum.type === Symbols) {\n    legendEntryLayout(item.items[0].items[0].items[0].items);\n  }\n\n  if (orient !== None) {\n    item.x = x = 0;\n    item.y = y = 0;\n  }\n\n  item.width = w;\n  item.height = h;\n  Object(vega_scenegraph__WEBPACK_IMPORTED_MODULE_1__[\"boundStroke\"])(bounds.set(x, y, x + w, y + h), item);\n  item.mark.bounds.clear().union(bounds);\n  return item;\n}\n\nfunction legendBounds(item, b) {\n  // aggregate item bounds\n  item.items.forEach(_ => b.union(_.bounds)); // anchor to legend origin\n\n  b.x1 = item.padding;\n  b.y1 = item.padding;\n  return b;\n}\n\nfunction legendGroupLayout(view, item, entry) {\n  var pad = item.padding,\n      ex = pad - entry.x,\n      ey = pad - entry.y;\n\n  if (!item.datum.title) {\n    if (ex || ey) translate(view, entry, ex, ey);\n  } else {\n    var title = item.items[1].items[0],\n        anchor = title.anchor,\n        tpad = item.titlePadding || 0,\n        tx = pad - title.x,\n        ty = pad - title.y;\n\n    switch (title.orient) {\n      case Left:\n        ex += Math.ceil(title.bounds.width()) + tpad;\n        break;\n\n      case Right:\n      case Bottom:\n        break;\n\n      default:\n        ey += title.bounds.height() + tpad;\n    }\n\n    if (ex || ey) translate(view, entry, ex, ey);\n\n    switch (title.orient) {\n      case Left:\n        ty += legendTitleOffset(item, entry, title, anchor, 1, 1);\n        break;\n\n      case Right:\n        tx += legendTitleOffset(item, entry, title, End, 0, 0) + tpad;\n        ty += legendTitleOffset(item, entry, title, anchor, 1, 1);\n        break;\n\n      case Bottom:\n        tx += legendTitleOffset(item, entry, title, anchor, 0, 0);\n        ty += legendTitleOffset(item, entry, title, End, -1, 0, 1) + tpad;\n        break;\n\n      default:\n        tx += legendTitleOffset(item, entry, title, anchor, 0, 0);\n    }\n\n    if (tx || ty) translate(view, title, tx, ty); // translate legend if title pushes into negative coordinates\n\n    if ((tx = Math.round(title.bounds.x1 - pad)) < 0) {\n      translate(view, entry, -tx, 0);\n      translate(view, title, -tx, 0);\n    }\n  }\n}\n\nfunction legendTitleOffset(item, entry, title, anchor, y, lr, noBar) {\n  const grad = item.datum.type !== 'symbol',\n        vgrad = title.datum.vgrad,\n        e = grad && (lr || !vgrad) && !noBar ? entry.items[0] : entry,\n        s = e.bounds[y ? 'y2' : 'x2'] - item.padding,\n        u = vgrad && lr ? s : 0,\n        v = vgrad && lr ? 0 : s,\n        o = y <= 0 ? 0 : Object(vega_scenegraph__WEBPACK_IMPORTED_MODULE_1__[\"multiLineOffset\"])(title);\n  return Math.round(anchor === Start ? u : anchor === End ? v - o : 0.5 * (s - o));\n}\n\nfunction translate(view, item, dx, dy) {\n  item.x += dx;\n  item.y += dy;\n  item.bounds.translate(dx, dy);\n  item.mark.bounds.translate(dx, dy);\n  view.dirty(item);\n}\n\nfunction legendEntryLayout(entries) {\n  // get max widths for each column\n  const widths = entries.reduce((w, g) => {\n    w[g.column] = Math.max(g.bounds.x2 - g.x, w[g.column] || 0);\n    return w;\n  }, {}); // set dimensions of legend entry groups\n\n  entries.forEach(g => {\n    g.width = widths[g.column];\n    g.height = g.bounds.y2 - g.y;\n  });\n}\n\nfunction titleLayout(view, mark, width, height, viewBounds) {\n  var group = mark.items[0],\n      frame = group.frame,\n      orient = group.orient,\n      anchor = group.anchor,\n      offset = group.offset,\n      padding = group.padding,\n      title = group.items[0].items[0],\n      subtitle = group.items[1] && group.items[1].items[0],\n      end = orient === Left || orient === Right ? height : width,\n      start = 0,\n      x = 0,\n      y = 0,\n      sx = 0,\n      sy = 0,\n      pos;\n\n  if (frame !== Group) {\n    orient === Left ? (start = viewBounds.y2, end = viewBounds.y1) : orient === Right ? (start = viewBounds.y1, end = viewBounds.y2) : (start = viewBounds.x1, end = viewBounds.x2);\n  } else if (orient === Left) {\n    start = height, end = 0;\n  }\n\n  pos = anchor === Start ? start : anchor === End ? end : (start + end) / 2;\n\n  if (subtitle && subtitle.text) {\n    // position subtitle\n    switch (orient) {\n      case Top:\n      case Bottom:\n        sy = title.bounds.height() + padding;\n        break;\n\n      case Left:\n        sx = title.bounds.width() + padding;\n        break;\n\n      case Right:\n        sx = -title.bounds.width() - padding;\n        break;\n    }\n\n    tempBounds.clear().union(subtitle.bounds);\n    tempBounds.translate(sx - (subtitle.x || 0), sy - (subtitle.y || 0));\n\n    if (set(subtitle, 'x', sx) | set(subtitle, 'y', sy)) {\n      view.dirty(subtitle);\n      subtitle.bounds.clear().union(tempBounds);\n      subtitle.mark.bounds.clear().union(tempBounds);\n      view.dirty(subtitle);\n    }\n\n    tempBounds.clear().union(subtitle.bounds);\n  } else {\n    tempBounds.clear();\n  }\n\n  tempBounds.union(title.bounds); // position title group\n\n  switch (orient) {\n    case Top:\n      x = pos;\n      y = viewBounds.y1 - tempBounds.height() - offset;\n      break;\n\n    case Left:\n      x = viewBounds.x1 - tempBounds.width() - offset;\n      y = pos;\n      break;\n\n    case Right:\n      x = viewBounds.x2 + tempBounds.width() + offset;\n      y = pos;\n      break;\n\n    case Bottom:\n      x = pos;\n      y = viewBounds.y2 + offset;\n      break;\n\n    default:\n      x = group.x;\n      y = group.y;\n  }\n\n  if (set(group, 'x', x) | set(group, 'y', y)) {\n    tempBounds.translate(x, y);\n    view.dirty(group);\n    group.bounds.clear().union(tempBounds);\n    mark.bounds.clear().union(tempBounds);\n    view.dirty(group);\n  }\n\n  return group.bounds;\n}\n\n/**\n * Layout view elements such as axes and legends.\n * Also performs size adjustments.\n * @constructor\n * @param {object} params - The parameters for this operator.\n * @param {object} params.mark - Scenegraph mark of groups to layout.\n */\n\nfunction ViewLayout(params) {\n  vega_dataflow__WEBPACK_IMPORTED_MODULE_0__[\"Transform\"].call(this, null, params);\n}\nObject(vega_util__WEBPACK_IMPORTED_MODULE_2__[\"inherits\"])(ViewLayout, vega_dataflow__WEBPACK_IMPORTED_MODULE_0__[\"Transform\"], {\n  transform(_, pulse) {\n    const view = pulse.dataflow;\n\n    _.mark.items.forEach(group => {\n      if (_.layout) trellisLayout(view, group, _.layout);\n      layoutGroup(view, group, _);\n    });\n\n    return shouldReflow(_.mark.group) ? pulse.reflow() : pulse;\n  }\n\n});\n\nfunction shouldReflow(group) {\n  // We typically should reflow if layout is invoked (#2568), as child items\n  // may have resized and reflow ensures group bounds are re-calculated.\n  // However, legend entries have a special exception to avoid instability.\n  // For example, if a selected legend symbol gains a stroke on hover,\n  // we don't want to re-position subsequent elements in the legend.\n  return group && group.mark.role !== 'legend-entry';\n}\n\nfunction layoutGroup(view, group, _) {\n  var items = group.items,\n      width = Math.max(0, group.width || 0),\n      height = Math.max(0, group.height || 0),\n      viewBounds = new vega_scenegraph__WEBPACK_IMPORTED_MODULE_1__[\"Bounds\"]().set(0, 0, width, height),\n      xBounds = viewBounds.clone(),\n      yBounds = viewBounds.clone(),\n      legends = [],\n      title,\n      mark,\n      orient,\n      b,\n      i,\n      n; // layout axes, gather legends, collect bounds\n\n  for (i = 0, n = items.length; i < n; ++i) {\n    mark = items[i];\n\n    switch (mark.role) {\n      case AxisRole:\n        b = isYAxis(mark) ? xBounds : yBounds;\n        b.union(axisLayout(view, mark, width, height));\n        break;\n\n      case TitleRole:\n        title = mark;\n        break;\n\n      case LegendRole:\n        legends.push(legendLayout(view, mark));\n        break;\n\n      case FrameRole:\n      case ScopeRole:\n      case RowHeader:\n      case RowFooter:\n      case RowTitle:\n      case ColHeader:\n      case ColFooter:\n      case ColTitle:\n        xBounds.union(mark.bounds);\n        yBounds.union(mark.bounds);\n        break;\n\n      default:\n        viewBounds.union(mark.bounds);\n    }\n  } // layout legends, adjust viewBounds\n\n\n  if (legends.length) {\n    // group legends by orient\n    const l = {};\n    legends.forEach(item => {\n      orient = item.orient || Right;\n      if (orient !== None) (l[orient] || (l[orient] = [])).push(item);\n    }); // perform grid layout for each orient group\n\n    for (const orient in l) {\n      const g = l[orient];\n      gridLayout(view, g, legendParams(g, orient, _.legends, xBounds, yBounds, width, height));\n    } // update view bounds\n\n\n    legends.forEach(item => {\n      const b = item.bounds;\n\n      if (!b.equals(item._bounds)) {\n        item.bounds = item._bounds;\n        view.dirty(item); // dirty previous location\n\n        item.bounds = b;\n        view.dirty(item);\n      }\n\n      if (_.autosize && _.autosize.type === Fit) {\n        // For autosize fit, incorporate the orthogonal dimension only.\n        // Legends that overrun the chart area will then be clipped;\n        // otherwise the chart area gets reduced to nothing!\n        switch (item.orient) {\n          case Left:\n          case Right:\n            viewBounds.add(b.x1, 0).add(b.x2, 0);\n            break;\n\n          case Top:\n          case Bottom:\n            viewBounds.add(0, b.y1).add(0, b.y2);\n        }\n      } else {\n        viewBounds.union(b);\n      }\n    });\n  } // combine bounding boxes\n\n\n  viewBounds.union(xBounds).union(yBounds); // layout title, adjust bounds\n\n  if (title) {\n    viewBounds.union(titleLayout(view, title, width, height, viewBounds));\n  } // override aggregated view bounds if content is clipped\n\n\n  if (group.clip) {\n    viewBounds.set(0, 0, group.width || 0, group.height || 0);\n  } // perform size adjustment\n\n\n  viewSizeLayout(view, group, viewBounds, _);\n}\n\nfunction viewSizeLayout(view, group, viewBounds, _) {\n  const auto = _.autosize || {},\n        type = auto.type;\n  if (view._autosize < 1 || !type) return;\n  let viewWidth = view._width,\n      viewHeight = view._height,\n      width = Math.max(0, group.width || 0),\n      left = Math.max(0, Math.ceil(-viewBounds.x1)),\n      height = Math.max(0, group.height || 0),\n      top = Math.max(0, Math.ceil(-viewBounds.y1));\n  const right = Math.max(0, Math.ceil(viewBounds.x2 - width)),\n        bottom = Math.max(0, Math.ceil(viewBounds.y2 - height));\n\n  if (auto.contains === Padding) {\n    const padding = view.padding();\n    viewWidth -= padding.left + padding.right;\n    viewHeight -= padding.top + padding.bottom;\n  }\n\n  if (type === None) {\n    left = 0;\n    top = 0;\n    width = viewWidth;\n    height = viewHeight;\n  } else if (type === Fit) {\n    width = Math.max(0, viewWidth - left - right);\n    height = Math.max(0, viewHeight - top - bottom);\n  } else if (type === FitX) {\n    width = Math.max(0, viewWidth - left - right);\n    viewHeight = height + top + bottom;\n  } else if (type === FitY) {\n    viewWidth = width + left + right;\n    height = Math.max(0, viewHeight - top - bottom);\n  } else if (type === Pad) {\n    viewWidth = width + left + right;\n    viewHeight = height + top + bottom;\n  }\n\n  view._resizeView(viewWidth, viewHeight, width, height, [left, top], auto.resize);\n}\n\n\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,[encoded data, 63024 characters]\n//# sourceURL=webpack-internal:///./node_modules/vega/node_modules/vega-view-transforms/build/vega-view-transforms.module.js\n");

/***/ }),

/***/ "./node_modules/vega/node_modules/vega-view/build/vega-view.module.js":
/*!****************************************************************************!*\
  !*** ./node_modules/vega/node_modules/vega-view/build/vega-view.module.js ***!
  \****************************************************************************/
/*! exports provided: View */
/***/ (function(module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"View\", function() { return View; });\n/* harmony import */ var vega_util__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! vega-util */ \"./node_modules/vega/node_modules/vega-util/build/vega-util.module.js\");\n/* harmony import */ var vega_dataflow__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! vega-dataflow */ \"./node_modules/vega/node_modules/vega-dataflow/build/vega-dataflow.module.js\");\n/* harmony import */ var vega_scenegraph__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! vega-scenegraph */ \"./node_modules/vega/node_modules/vega-scenegraph/build/vega-scenegraph.module.js\");\n/* harmony import */ var d3_array__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! d3-array */ \"./node_modules/d3-array/src/index.js\");\n/* harmony import */ var vega_functions__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! vega-functions */ \"./node_modules/vega-functions/build/vega-functions.module.js\");\n/* harmony import */ var vega_runtime__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! vega-runtime */ \"./node_modules/vega/node_modules/vega-runtime/build/vega-runtime.module.js\");\n/* harmony import */ var d3_timer__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! d3-timer */ \"./node_modules/vega/node_modules/vega-view/node_modules/d3-timer/src/index.js\");\n/* harmony import */ var vega_format__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! vega-format */ \"./node_modules/vega-format/build/vega-format.module.js\");\n\n\n\n\n\n\n\n\n\n// initialize aria role and label attributes\nfunction initializeAria(view) {\n  const el = view.container();\n\n  if (el) {\n    el.setAttribute('role', 'graphics-document');\n    el.setAttribute('aria-roleDescription', 'visualization');\n    ariaLabel(el, view.description());\n  }\n} // update aria-label if we have a DOM container element\n\nfunction ariaLabel(el, desc) {\n  if (el) desc == null ? el.removeAttribute('aria-label') : el.setAttribute('aria-label', desc);\n}\n\nfunction background (view) {\n  // respond to background signal\n  view.add(null, _ => {\n    view._background = _.bg;\n    view._resize = 1;\n    return _.bg;\n  }, {\n    bg: view._signals.background\n  });\n}\n\nconst Default = 'default';\nfunction cursor (view) {\n  // get cursor signal, add to dataflow if needed\n  const cursor = view._signals.cursor || (view._signals.cursor = view.add({\n    user: Default,\n    item: null\n  })); // evaluate cursor on each mousemove event\n\n  view.on(view.events('view', 'mousemove'), cursor, (_, event) => {\n    const value = cursor.value,\n          user = value ? Object(vega_util__WEBPACK_IMPORTED_MODULE_0__[\"isString\"])(value) ? value : value.user : Default,\n          item = event.item && event.item.cursor || null;\n    return value && user === value.user && item == value.item ? value : {\n      user: user,\n      item: item\n    };\n  }); // when cursor signal updates, set visible cursor\n\n  view.add(null, function (_) {\n    let user = _.cursor,\n        item = this.value;\n\n    if (!Object(vega_util__WEBPACK_IMPORTED_MODULE_0__[\"isString\"])(user)) {\n      item = user.item;\n      user = user.user;\n    }\n\n    setCursor(view, user && user !== Default ? user : item || user);\n    return item;\n  }, {\n    cursor: cursor\n  });\n}\nfunction setCursor(view, cursor) {\n  const el = view.globalCursor() ? typeof document !== 'undefined' && document.body : view.container();\n\n  if (el) {\n    return cursor == null ? el.style.removeProperty('cursor') : el.style.cursor = cursor;\n  }\n}\n\nfunction dataref(view, name) {\n  var data = view._runtime.data;\n\n  if (!Object(vega_util__WEBPACK_IMPORTED_MODULE_0__[\"hasOwnProperty\"])(data, name)) {\n    Object(vega_util__WEBPACK_IMPORTED_MODULE_0__[\"error\"])('Unrecognized data set: ' + name);\n  }\n\n  return data[name];\n}\nfunction data(name, values) {\n  return arguments.length < 2 ? dataref(this, name).values.value : change.call(this, name, Object(vega_dataflow__WEBPACK_IMPORTED_MODULE_1__[\"changeset\"])().remove(vega_util__WEBPACK_IMPORTED_MODULE_0__[\"truthy\"]).insert(values));\n}\nfunction change(name, changes) {\n  if (!Object(vega_dataflow__WEBPACK_IMPORTED_MODULE_1__[\"isChangeSet\"])(changes)) {\n    Object(vega_util__WEBPACK_IMPORTED_MODULE_0__[\"error\"])('Second argument to changes must be a changeset.');\n  }\n\n  const dataset = dataref(this, name);\n  dataset.modified = true;\n  return this.pulse(dataset.input, changes);\n}\nfunction insert(name, _) {\n  return change.call(this, name, Object(vega_dataflow__WEBPACK_IMPORTED_MODULE_1__[\"changeset\"])().insert(_));\n}\nfunction remove(name, _) {\n  return change.call(this, name, Object(vega_dataflow__WEBPACK_IMPORTED_MODULE_1__[\"changeset\"])().remove(_));\n}\n\nfunction width(view) {\n  var padding = view.padding();\n  return Math.max(0, view._viewWidth + padding.left + padding.right);\n}\nfunction height(view) {\n  var padding = view.padding();\n  return Math.max(0, view._viewHeight + padding.top + padding.bottom);\n}\nfunction offset(view) {\n  var padding = view.padding(),\n      origin = view._origin;\n  return [padding.left + origin[0], padding.top + origin[1]];\n}\nfunction resizeRenderer(view) {\n  var origin = offset(view),\n      w = width(view),\n      h = height(view);\n\n  view._renderer.background(view.background());\n\n  view._renderer.resize(w, h, origin);\n\n  view._handler.origin(origin);\n\n  view._resizeListeners.forEach(handler => {\n    try {\n      handler(w, h);\n    } catch (error) {\n      view.error(error);\n    }\n  });\n}\n\n/**\n * Extend an event with additional view-specific methods.\n * Adds a new property ('vega') to an event that provides a number\n * of methods for querying information about the current interaction.\n * The vega object provides the following methods:\n *   view - Returns the backing View instance.\n *   item - Returns the currently active scenegraph item (if any).\n *   group - Returns the currently active scenegraph group (if any).\n *     This method accepts a single string-typed argument indicating the name\n *     of the desired parent group. The scenegraph will be traversed from\n *     the item up towards the root to search for a matching group. If no\n *     argument is provided the enclosing group for the active item is\n *     returned, unless the item it itself a group, in which case it is\n *     returned directly.\n *   xy - Returns a two-element array containing the x and y coordinates for\n *     mouse or touch events. For touch events, this is based on the first\n *     elements in the changedTouches array. This method accepts a single\n *     argument: either an item instance or mark name that should serve as\n *     the reference coordinate system. If no argument is provided the\n *     top-level view coordinate system is assumed.\n *   x - Returns the current x-coordinate, accepts the same arguments as xy.\n *   y - Returns the current y-coordinate, accepts the same arguments as xy.\n * @param {Event} event - The input event to extend.\n * @param {Item} item - The currently active scenegraph item (if any).\n * @return {Event} - The extended input event.\n */\n\nfunction eventExtend (view, event, item) {\n  var r = view._renderer,\n      el = r && r.canvas(),\n      p,\n      e,\n      translate;\n\n  if (el) {\n    translate = offset(view);\n    e = event.changedTouches ? event.changedTouches[0] : event;\n    p = Object(vega_scenegraph__WEBPACK_IMPORTED_MODULE_2__[\"point\"])(e, el);\n    p[0] -= translate[0];\n    p[1] -= translate[1];\n  }\n\n  event.dataflow = view;\n  event.item = item;\n  event.vega = extension(view, item, p);\n  return event;\n}\n\nfunction extension(view, item, point) {\n  const itemGroup = item ? item.mark.marktype === 'group' ? item : item.mark.group : null;\n\n  function group(name) {\n    var g = itemGroup,\n        i;\n    if (name) for (i = item; i; i = i.mark.group) {\n      if (i.mark.name === name) {\n        g = i;\n        break;\n      }\n    }\n    return g && g.mark && g.mark.interactive ? g : {};\n  }\n\n  function xy(item) {\n    if (!item) return point;\n    if (Object(vega_util__WEBPACK_IMPORTED_MODULE_0__[\"isString\"])(item)) item = group(item);\n    const p = point.slice();\n\n    while (item) {\n      p[0] -= item.x || 0;\n      p[1] -= item.y || 0;\n      item = item.mark && item.mark.group;\n    }\n\n    return p;\n  }\n\n  return {\n    view: Object(vega_util__WEBPACK_IMPORTED_MODULE_0__[\"constant\"])(view),\n    item: Object(vega_util__WEBPACK_IMPORTED_MODULE_0__[\"constant\"])(item || {}),\n    group: group,\n    xy: xy,\n    x: item => xy(item)[0],\n    y: item => xy(item)[1]\n  };\n}\n\nconst VIEW = 'view',\n      TIMER = 'timer',\n      WINDOW = 'window',\n      NO_TRAP = {\n  trap: false\n};\n/**\n * Initialize event handling configuration.\n * @param {object} config - The configuration settings.\n * @return {object}\n */\n\nfunction initializeEventConfig(config) {\n  const events = Object(vega_util__WEBPACK_IMPORTED_MODULE_0__[\"extend\"])({\n    defaults: {}\n  }, config);\n\n  const unpack = (obj, keys) => {\n    keys.forEach(k => {\n      if (Object(vega_util__WEBPACK_IMPORTED_MODULE_0__[\"isArray\"])(obj[k])) obj[k] = Object(vega_util__WEBPACK_IMPORTED_MODULE_0__[\"toSet\"])(obj[k]);\n    });\n  };\n\n  unpack(events.defaults, ['prevent', 'allow']);\n  unpack(events, ['view', 'window', 'selector']);\n  return events;\n}\nfunction trackEventListener(view, sources, type, handler) {\n  view._eventListeners.push({\n    type: type,\n    sources: Object(vega_util__WEBPACK_IMPORTED_MODULE_0__[\"array\"])(sources),\n    handler: handler\n  });\n}\n\nfunction prevent(view, type) {\n  var def = view._eventConfig.defaults,\n      prevent = def.prevent,\n      allow = def.allow;\n  return prevent === false || allow === true ? false : prevent === true || allow === false ? true : prevent ? prevent[type] : allow ? !allow[type] : view.preventDefault();\n}\n\nfunction permit(view, key, type) {\n  const rule = view._eventConfig && view._eventConfig[key];\n\n  if (rule === false || Object(vega_util__WEBPACK_IMPORTED_MODULE_0__[\"isObject\"])(rule) && !rule[type]) {\n    view.warn(`Blocked ${key} ${type} event listener.`);\n    return false;\n  }\n\n  return true;\n}\n/**\n * Create a new event stream from an event source.\n * @param {object} source - The event source to monitor.\n * @param {string} type - The event type.\n * @param {function(object): boolean} [filter] - Event filter function.\n * @return {EventStream}\n */\n\n\nfunction events(source, type, filter) {\n  var view = this,\n      s = new vega_dataflow__WEBPACK_IMPORTED_MODULE_1__[\"EventStream\"](filter),\n      send = function (e, item) {\n    view.runAsync(null, () => {\n      if (source === VIEW && prevent(view, type)) {\n        e.preventDefault();\n      }\n\n      s.receive(eventExtend(view, e, item));\n    });\n  },\n      sources;\n\n  if (source === TIMER) {\n    if (permit(view, 'timer', type)) {\n      view.timer(send, type);\n    }\n  } else if (source === VIEW) {\n    if (permit(view, 'view', type)) {\n      // send traps errors, so use {trap: false} option\n      view.addEventListener(type, send, NO_TRAP);\n    }\n  } else {\n    if (source === WINDOW) {\n      if (permit(view, 'window', type) && typeof window !== 'undefined') {\n        sources = [window];\n      }\n    } else if (typeof document !== 'undefined') {\n      if (permit(view, 'selector', type)) {\n        sources = document.querySelectorAll(source);\n      }\n    }\n\n    if (!sources) {\n      view.warn('Can not resolve event source: ' + source);\n    } else {\n      for (var i = 0, n = sources.length; i < n; ++i) {\n        sources[i].addEventListener(type, send);\n      }\n\n      trackEventListener(view, sources, type, send);\n    }\n  }\n\n  return s;\n}\n\nfunction itemFilter(event) {\n  return event.item;\n}\n\nfunction markTarget(event) {\n  // grab upstream collector feeding the mark operator\n  return event.item.mark.source;\n}\n\nfunction invoke(name) {\n  return function (_, event) {\n    return event.vega.view().changeset().encode(event.item, name);\n  };\n}\n\nfunction hover (hoverSet, leaveSet) {\n  hoverSet = [hoverSet || 'hover'];\n  leaveSet = [leaveSet || 'update', hoverSet[0]]; // invoke hover set upon mouseover\n\n  this.on(this.events('view', 'mouseover', itemFilter), markTarget, invoke(hoverSet)); // invoke leave set upon mouseout\n\n  this.on(this.events('view', 'mouseout', itemFilter), markTarget, invoke(leaveSet));\n  return this;\n}\n\n/**\n * Finalize a View instance that is being removed.\n * Cancel any running timers.\n * Remove all external event listeners.\n * Remove any currently displayed tooltip.\n */\nfunction finalize () {\n  var tooltip = this._tooltip,\n      timers = this._timers,\n      listeners = this._eventListeners,\n      n,\n      m,\n      e;\n  n = timers.length;\n\n  while (--n >= 0) {\n    timers[n].stop();\n  }\n\n  n = listeners.length;\n\n  while (--n >= 0) {\n    e = listeners[n];\n    m = e.sources.length;\n\n    while (--m >= 0) {\n      e.sources[m].removeEventListener(e.type, e.handler);\n    }\n  }\n\n  if (tooltip) {\n    tooltip.call(this, this._handler, null, null, null);\n  }\n\n  return this;\n}\n\nfunction element (tag, attr, text) {\n  const el = document.createElement(tag);\n\n  for (const key in attr) el.setAttribute(key, attr[key]);\n\n  if (text != null) el.textContent = text;\n  return el;\n}\n\nconst BindClass = 'vega-bind',\n      NameClass = 'vega-bind-name',\n      RadioClass = 'vega-bind-radio';\n/**\n * Bind a signal to an external HTML input element. The resulting two-way\n * binding will propagate input changes to signals, and propagate signal\n * changes to the input element state. If this view instance has no parent\n * element, we assume the view is headless and no bindings are created.\n * @param {Element|string} el - The parent DOM element to which the input\n *   element should be appended as a child. If string-valued, this argument\n *   will be treated as a CSS selector. If null or undefined, the parent\n *   element of this view will be used as the element.\n * @param {object} param - The binding parameters which specify the signal\n *   to bind to, the input element type, and type-specific configuration.\n * @return {View} - This view instance.\n */\n\nfunction bind (view, el, binding) {\n  if (!el) return;\n  const param = binding.param;\n  let bind = binding.state;\n\n  if (!bind) {\n    bind = binding.state = {\n      elements: null,\n      active: false,\n      set: null,\n      update: value => {\n        if (value != view.signal(param.signal)) {\n          view.runAsync(null, () => {\n            bind.source = true;\n            view.signal(param.signal, value);\n          });\n        }\n      }\n    };\n\n    if (param.debounce) {\n      bind.update = Object(vega_util__WEBPACK_IMPORTED_MODULE_0__[\"debounce\"])(param.debounce, bind.update);\n    }\n  }\n\n  const create = param.input == null && param.element ? target : generate;\n  create(bind, el, param, view);\n\n  if (!bind.active) {\n    view.on(view._signals[param.signal], null, () => {\n      bind.source ? bind.source = false : bind.set(view.signal(param.signal));\n    });\n    bind.active = true;\n  }\n\n  return bind;\n}\n/**\n * Bind the signal to an external EventTarget.\n */\n\nfunction target(bind, node, param, view) {\n  const type = param.event || 'input';\n\n  const handler = () => bind.update(node.value); // initialize signal value to external input value\n\n\n  view.signal(param.signal, node.value); // listen for changes on the element\n\n  node.addEventListener(type, handler); // register with view, so we can remove it upon finalization\n\n  trackEventListener(view, node, type, handler); // propagate change to element\n\n  bind.set = value => {\n    node.value = value;\n    node.dispatchEvent(event(type));\n  };\n}\n\nfunction event(type) {\n  return typeof Event !== 'undefined' ? new Event(type) : {\n    type\n  };\n}\n/**\n * Generate an HTML input form element and bind it to a signal.\n */\n\n\nfunction generate(bind, el, param, view) {\n  const value = view.signal(param.signal);\n  const div = element('div', {\n    'class': BindClass\n  });\n  const wrapper = param.input === 'radio' ? div : div.appendChild(element('label'));\n  wrapper.appendChild(element('span', {\n    'class': NameClass\n  }, param.name || param.signal));\n  el.appendChild(div);\n  let input = form;\n\n  switch (param.input) {\n    case 'checkbox':\n      input = checkbox;\n      break;\n\n    case 'select':\n      input = select;\n      break;\n\n    case 'radio':\n      input = radio;\n      break;\n\n    case 'range':\n      input = range;\n      break;\n  }\n\n  input(bind, wrapper, param, value);\n}\n/**\n * Generates an arbitrary input form element.\n * The input type is controlled via user-provided parameters.\n */\n\n\nfunction form(bind, el, param, value) {\n  const node = element('input');\n\n  for (const key in param) {\n    if (key !== 'signal' && key !== 'element') {\n      node.setAttribute(key === 'input' ? 'type' : key, param[key]);\n    }\n  }\n\n  node.setAttribute('name', param.signal);\n  node.value = value;\n  el.appendChild(node);\n  node.addEventListener('input', () => bind.update(node.value));\n  bind.elements = [node];\n\n  bind.set = value => node.value = value;\n}\n/**\n * Generates a checkbox input element.\n */\n\n\nfunction checkbox(bind, el, param, value) {\n  const attr = {\n    type: 'checkbox',\n    name: param.signal\n  };\n  if (value) attr.checked = true;\n  const node = element('input', attr);\n  el.appendChild(node);\n  node.addEventListener('change', () => bind.update(node.checked));\n  bind.elements = [node];\n\n  bind.set = value => node.checked = !!value || null;\n}\n/**\n * Generates a selection list input element.\n */\n\n\nfunction select(bind, el, param, value) {\n  const node = element('select', {\n    name: param.signal\n  }),\n        labels = param.labels || [];\n  param.options.forEach((option, i) => {\n    const attr = {\n      value: option\n    };\n    if (valuesEqual(option, value)) attr.selected = true;\n    node.appendChild(element('option', attr, (labels[i] || option) + ''));\n  });\n  el.appendChild(node);\n  node.addEventListener('change', () => {\n    bind.update(param.options[node.selectedIndex]);\n  });\n  bind.elements = [node];\n\n  bind.set = value => {\n    for (let i = 0, n = param.options.length; i < n; ++i) {\n      if (valuesEqual(param.options[i], value)) {\n        node.selectedIndex = i;\n        return;\n      }\n    }\n  };\n}\n/**\n * Generates a radio button group.\n */\n\n\nfunction radio(bind, el, param, value) {\n  const group = element('span', {\n    'class': RadioClass\n  }),\n        labels = param.labels || [];\n  el.appendChild(group);\n  bind.elements = param.options.map((option, i) => {\n    const attr = {\n      type: 'radio',\n      name: param.signal,\n      value: option\n    };\n    if (valuesEqual(option, value)) attr.checked = true;\n    const input = element('input', attr);\n    input.addEventListener('change', () => bind.update(option));\n    const label = element('label', {}, (labels[i] || option) + '');\n    label.prepend(input);\n    group.appendChild(label);\n    return input;\n  });\n\n  bind.set = value => {\n    const nodes = bind.elements,\n          n = nodes.length;\n\n    for (let i = 0; i < n; ++i) {\n      if (valuesEqual(nodes[i].value, value)) nodes[i].checked = true;\n    }\n  };\n}\n/**\n * Generates a slider input element.\n */\n\n\nfunction range(bind, el, param, value) {\n  value = value !== undefined ? value : (+param.max + +param.min) / 2;\n  const max = param.max != null ? param.max : Math.max(100, +value) || 100,\n        min = param.min || Math.min(0, max, +value) || 0,\n        step = param.step || Object(d3_array__WEBPACK_IMPORTED_MODULE_3__[\"tickStep\"])(min, max, 100);\n  const node = element('input', {\n    type: 'range',\n    name: param.signal,\n    min: min,\n    max: max,\n    step: step\n  });\n  node.value = value;\n  const span = element('span', {}, +value);\n  el.appendChild(node);\n  el.appendChild(span);\n\n  const update = () => {\n    span.textContent = node.value;\n    bind.update(+node.value);\n  }; // subscribe to both input and change\n\n\n  node.addEventListener('input', update);\n  node.addEventListener('change', update);\n  bind.elements = [node];\n\n  bind.set = value => {\n    node.value = value;\n    span.textContent = value;\n  };\n}\n\nfunction valuesEqual(a, b) {\n  return a === b || a + '' === b + '';\n}\n\nfunction initializeRenderer (view, r, el, constructor, scaleFactor, opt) {\n  r = r || new constructor(view.loader());\n  return r.initialize(el, width(view), height(view), offset(view), scaleFactor, opt).background(view.background());\n}\n\nfunction trap (view, fn) {\n  return !fn ? null : function () {\n    try {\n      fn.apply(this, arguments);\n    } catch (error) {\n      view.error(error);\n    }\n  };\n}\n\nfunction initializeHandler (view, prevHandler, el, constructor) {\n  // instantiate scenegraph handler\n  const handler = new constructor(view.loader(), trap(view, view.tooltip())).scene(view.scenegraph().root).initialize(el, offset(view), view); // transfer event handlers\n\n  if (prevHandler) {\n    prevHandler.handlers().forEach(h => {\n      handler.on(h.type, h.handler);\n    });\n  }\n\n  return handler;\n}\n\nfunction initialize (el, elBind) {\n  const view = this,\n        type = view._renderType,\n        config = view._eventConfig.bind,\n        module = Object(vega_scenegraph__WEBPACK_IMPORTED_MODULE_2__[\"renderModule\"])(type); // containing dom element\n\n  el = view._el = el ? lookup(view, el, true) : null; // initialize aria attributes\n\n  initializeAria(view); // select appropriate renderer & handler\n\n  if (!module) view.error('Unrecognized renderer type: ' + type);\n  const Handler = module.handler || vega_scenegraph__WEBPACK_IMPORTED_MODULE_2__[\"CanvasHandler\"],\n        Renderer = el ? module.renderer : module.headless; // initialize renderer and input handler\n\n  view._renderer = !Renderer ? null : initializeRenderer(view, view._renderer, el, Renderer);\n  view._handler = initializeHandler(view, view._handler, el, Handler);\n  view._redraw = true; // initialize signal bindings\n\n  if (el && config !== 'none') {\n    elBind = elBind ? view._elBind = lookup(view, elBind, true) : el.appendChild(element('form', {\n      'class': 'vega-bindings'\n    }));\n\n    view._bind.forEach(_ => {\n      if (_.param.element && config !== 'container') {\n        _.element = lookup(view, _.param.element, !!_.param.input);\n      }\n    });\n\n    view._bind.forEach(_ => {\n      bind(view, _.element || elBind, _);\n    });\n  }\n\n  return view;\n}\n\nfunction lookup(view, el, clear) {\n  if (typeof el === 'string') {\n    if (typeof document !== 'undefined') {\n      el = document.querySelector(el);\n\n      if (!el) {\n        view.error('Signal bind element not found: ' + el);\n        return null;\n      }\n    } else {\n      view.error('DOM document instance not found.');\n      return null;\n    }\n  }\n\n  if (el && clear) {\n    try {\n      el.innerHTML = '';\n    } catch (e) {\n      el = null;\n      view.error(e);\n    }\n  }\n\n  return el;\n}\n\nconst number = _ => +_ || 0;\n\nconst paddingObject = _ => ({\n  top: _,\n  bottom: _,\n  left: _,\n  right: _\n});\n\nfunction padding (_) {\n  return Object(vega_util__WEBPACK_IMPORTED_MODULE_0__[\"isObject\"])(_) ? {\n    top: number(_.top),\n    bottom: number(_.bottom),\n    left: number(_.left),\n    right: number(_.right)\n  } : paddingObject(number(_));\n}\n\n/**\n * Render the current scene in a headless fashion.\n * This method is asynchronous, returning a Promise instance.\n * @return {Promise} - A Promise that resolves to a renderer.\n */\n\nasync function renderHeadless (view, type, scaleFactor, opt) {\n  const module = Object(vega_scenegraph__WEBPACK_IMPORTED_MODULE_2__[\"renderModule\"])(type),\n        ctr = module && module.headless;\n  if (!ctr) Object(vega_util__WEBPACK_IMPORTED_MODULE_0__[\"error\"])('Unrecognized renderer type: ' + type);\n  await view.runAsync();\n  return initializeRenderer(view, null, null, ctr, scaleFactor, opt).renderAsync(view._scenegraph.root);\n}\n\n/**\n * Produce an image URL for the visualization. Depending on the type\n * parameter, the generated URL contains data for either a PNG or SVG image.\n * The URL can be used (for example) to download images of the visualization.\n * This method is asynchronous, returning a Promise instance.\n * @param {string} type - The image type. One of 'svg', 'png' or 'canvas'.\n *   The 'canvas' and 'png' types are synonyms for a PNG image.\n * @return {Promise} - A promise that resolves to an image URL.\n */\n\nasync function renderToImageURL (type, scaleFactor) {\n  if (type !== vega_scenegraph__WEBPACK_IMPORTED_MODULE_2__[\"RenderType\"].Canvas && type !== vega_scenegraph__WEBPACK_IMPORTED_MODULE_2__[\"RenderType\"].SVG && type !== vega_scenegraph__WEBPACK_IMPORTED_MODULE_2__[\"RenderType\"].PNG) {\n    Object(vega_util__WEBPACK_IMPORTED_MODULE_0__[\"error\"])('Unrecognized image type: ' + type);\n  }\n\n  const r = await renderHeadless(this, type, scaleFactor);\n  return type === vega_scenegraph__WEBPACK_IMPORTED_MODULE_2__[\"RenderType\"].SVG ? toBlobURL(r.svg(), 'image/svg+xml') : r.canvas().toDataURL('image/png');\n}\n\nfunction toBlobURL(data, mime) {\n  const blob = new Blob([data], {\n    type: mime\n  });\n  return window.URL.createObjectURL(blob);\n}\n\n/**\n * Produce a Canvas instance containing a rendered visualization.\n * This method is asynchronous, returning a Promise instance.\n * @return {Promise} - A promise that resolves to a Canvas instance.\n */\n\nasync function renderToCanvas (scaleFactor, opt) {\n  const r = await renderHeadless(this, vega_scenegraph__WEBPACK_IMPORTED_MODULE_2__[\"RenderType\"].Canvas, scaleFactor, opt);\n  return r.canvas();\n}\n\n/**\n * Produce a rendered SVG string of the visualization.\n * This method is asynchronous, returning a Promise instance.\n * @return {Promise} - A promise that resolves to an SVG string.\n */\n\nasync function renderToSVG (scaleFactor) {\n  const r = await renderHeadless(this, vega_scenegraph__WEBPACK_IMPORTED_MODULE_2__[\"RenderType\"].SVG, scaleFactor);\n  return r.svg();\n}\n\nfunction runtime (view, spec, expr) {\n  return Object(vega_runtime__WEBPACK_IMPORTED_MODULE_5__[\"context\"])(view, vega_dataflow__WEBPACK_IMPORTED_MODULE_1__[\"transforms\"], vega_functions__WEBPACK_IMPORTED_MODULE_4__[\"functionContext\"], expr).parse(spec);\n}\n\nfunction scale(name) {\n  var scales = this._runtime.scales;\n\n  if (!Object(vega_util__WEBPACK_IMPORTED_MODULE_0__[\"hasOwnProperty\"])(scales, name)) {\n    Object(vega_util__WEBPACK_IMPORTED_MODULE_0__[\"error\"])('Unrecognized scale or projection: ' + name);\n  }\n\n  return scales[name].value;\n}\n\nvar Width = 'width',\n    Height = 'height',\n    Padding = 'padding',\n    Skip = {\n  skip: true\n};\nfunction viewWidth(view, width) {\n  var a = view.autosize(),\n      p = view.padding();\n  return width - (a && a.contains === Padding ? p.left + p.right : 0);\n}\nfunction viewHeight(view, height) {\n  var a = view.autosize(),\n      p = view.padding();\n  return height - (a && a.contains === Padding ? p.top + p.bottom : 0);\n}\nfunction initializeResize(view) {\n  var s = view._signals,\n      w = s[Width],\n      h = s[Height],\n      p = s[Padding];\n\n  function resetSize() {\n    view._autosize = view._resize = 1;\n  } // respond to width signal\n\n\n  view._resizeWidth = view.add(null, _ => {\n    view._width = _.size;\n    view._viewWidth = viewWidth(view, _.size);\n    resetSize();\n  }, {\n    size: w\n  }); // respond to height signal\n\n  view._resizeHeight = view.add(null, _ => {\n    view._height = _.size;\n    view._viewHeight = viewHeight(view, _.size);\n    resetSize();\n  }, {\n    size: h\n  }); // respond to padding signal\n\n  const resizePadding = view.add(null, resetSize, {\n    pad: p\n  }); // set rank to run immediately after source signal\n\n  view._resizeWidth.rank = w.rank + 1;\n  view._resizeHeight.rank = h.rank + 1;\n  resizePadding.rank = p.rank + 1;\n}\nfunction resizeView(viewWidth, viewHeight, width, height, origin, auto) {\n  this.runAfter(view => {\n    let rerun = 0; // reset autosize flag\n\n    view._autosize = 0; // width value changed: update signal, skip resize op\n\n    if (view.width() !== width) {\n      rerun = 1;\n      view.signal(Width, width, Skip); // set width, skip update calc\n\n      view._resizeWidth.skip(true); // skip width resize handler\n\n    } // height value changed: update signal, skip resize op\n\n\n    if (view.height() !== height) {\n      rerun = 1;\n      view.signal(Height, height, Skip); // set height, skip update calc\n\n      view._resizeHeight.skip(true); // skip height resize handler\n\n    } // view width changed: update view property, set resize flag\n\n\n    if (view._viewWidth !== viewWidth) {\n      view._resize = 1;\n      view._viewWidth = viewWidth;\n    } // view height changed: update view property, set resize flag\n\n\n    if (view._viewHeight !== viewHeight) {\n      view._resize = 1;\n      view._viewHeight = viewHeight;\n    } // origin changed: update view property, set resize flag\n\n\n    if (view._origin[0] !== origin[0] || view._origin[1] !== origin[1]) {\n      view._resize = 1;\n      view._origin = origin;\n    } // run dataflow on width/height signal change\n\n\n    if (rerun) view.run('enter');\n    if (auto) view.runAfter(v => v.resize());\n  }, false, 1);\n}\n\n/**\n * Get the current view state, consisting of signal values and/or data sets.\n * @param {object} [options] - Options flags indicating which state to export.\n *   If unspecified, all signals and data sets will be exported.\n * @param {function(string, Operator):boolean} [options.signals] - Optional\n *   predicate function for testing if a signal should be included in the\n *   exported state. If unspecified, all signals will be included, except for\n *   those named 'parent' or those which refer to a Transform value.\n * @param {function(string, object):boolean} [options.data] - Optional\n *   predicate function for testing if a data set's input should be included\n *   in the exported state. If unspecified, all data sets that have been\n *   explicitly modified will be included.\n * @param {boolean} [options.recurse=true] - Flag indicating if the exported\n *   state should recursively include state from group mark sub-contexts.\n * @return {object} - An object containing the exported state values.\n */\n\nfunction getState(options) {\n  return this._runtime.getState(options || {\n    data: dataTest,\n    signals: signalTest,\n    recurse: true\n  });\n}\n\nfunction dataTest(name, data) {\n  return data.modified && Object(vega_util__WEBPACK_IMPORTED_MODULE_0__[\"isArray\"])(data.input.value) && name.indexOf('_:vega:_');\n}\n\nfunction signalTest(name, op) {\n  return !(name === 'parent' || op instanceof vega_dataflow__WEBPACK_IMPORTED_MODULE_1__[\"transforms\"].proxy);\n}\n/**\n * Sets the current view state and updates the view by invoking run.\n * @param {object} state - A state object containing signal and/or\n *   data set values, following the format used by the getState method.\n * @return {View} - This view instance.\n */\n\n\nfunction setState(state) {\n  this.runAsync(null, v => {\n    v._trigger = false;\n\n    v._runtime.setState(state);\n  }, v => {\n    v._trigger = true;\n  });\n  return this;\n}\n\nfunction timer (callback, delay) {\n  function tick(elapsed) {\n    callback({\n      timestamp: Date.now(),\n      elapsed: elapsed\n    });\n  }\n\n  this._timers.push(Object(d3_timer__WEBPACK_IMPORTED_MODULE_6__[\"interval\"])(tick, delay));\n}\n\nfunction defaultTooltip (handler, event, item, value) {\n  const el = handler.element();\n  if (el) el.setAttribute('title', formatTooltip(value));\n}\n\nfunction formatTooltip(value) {\n  return value == null ? '' : Object(vega_util__WEBPACK_IMPORTED_MODULE_0__[\"isArray\"])(value) ? formatArray(value) : Object(vega_util__WEBPACK_IMPORTED_MODULE_0__[\"isObject\"])(value) && !Object(vega_util__WEBPACK_IMPORTED_MODULE_0__[\"isDate\"])(value) ? formatObject(value) : value + '';\n}\n\nfunction formatObject(obj) {\n  return Object.keys(obj).map(key => {\n    const v = obj[key];\n    return key + ': ' + (Object(vega_util__WEBPACK_IMPORTED_MODULE_0__[\"isArray\"])(v) ? formatArray(v) : formatValue(v));\n  }).join('\\n');\n}\n\nfunction formatArray(value) {\n  return '[' + value.map(formatValue).join(', ') + ']';\n}\n\nfunction formatValue(value) {\n  return Object(vega_util__WEBPACK_IMPORTED_MODULE_0__[\"isArray\"])(value) ? '[\\u2026]' : Object(vega_util__WEBPACK_IMPORTED_MODULE_0__[\"isObject\"])(value) && !Object(vega_util__WEBPACK_IMPORTED_MODULE_0__[\"isDate\"])(value) ? '{\\u2026}' : value;\n}\n\n/**\n * Create a new View instance from a Vega dataflow runtime specification.\n * The generated View will not immediately be ready for display. Callers\n * should also invoke the initialize method (e.g., to set the parent\n * DOM element in browser-based deployment) and then invoke the run\n * method to evaluate the dataflow graph. Rendering will automatically\n * be performed upon dataflow runs.\n * @constructor\n * @param {object} spec - The Vega dataflow runtime specification.\n */\n\nfunction View(spec, options) {\n  const view = this;\n  options = options || {};\n  vega_dataflow__WEBPACK_IMPORTED_MODULE_1__[\"Dataflow\"].call(view);\n  if (options.loader) view.loader(options.loader);\n  if (options.logger) view.logger(options.logger);\n  if (options.logLevel != null) view.logLevel(options.logLevel);\n\n  if (options.locale || spec.locale) {\n    const loc = Object(vega_util__WEBPACK_IMPORTED_MODULE_0__[\"extend\"])({}, spec.locale, options.locale);\n    view.locale(Object(vega_format__WEBPACK_IMPORTED_MODULE_7__[\"locale\"])(loc.number, loc.time));\n  }\n\n  view._el = null;\n  view._elBind = null;\n  view._renderType = options.renderer || vega_scenegraph__WEBPACK_IMPORTED_MODULE_2__[\"RenderType\"].Canvas;\n  view._scenegraph = new vega_scenegraph__WEBPACK_IMPORTED_MODULE_2__[\"Scenegraph\"]();\n  const root = view._scenegraph.root; // initialize renderer, handler and event management\n\n  view._renderer = null;\n  view._tooltip = options.tooltip || defaultTooltip, view._redraw = true;\n  view._handler = new vega_scenegraph__WEBPACK_IMPORTED_MODULE_2__[\"CanvasHandler\"]().scene(root);\n  view._globalCursor = false;\n  view._preventDefault = false;\n  view._timers = [];\n  view._eventListeners = [];\n  view._resizeListeners = []; // initialize event configuration\n\n  view._eventConfig = initializeEventConfig(spec.eventConfig);\n  view.globalCursor(view._eventConfig.globalCursor); // initialize dataflow graph\n\n  const ctx = runtime(view, spec, options.expr);\n  view._runtime = ctx;\n  view._signals = ctx.signals;\n  view._bind = (spec.bindings || []).map(_ => ({\n    state: null,\n    param: Object(vega_util__WEBPACK_IMPORTED_MODULE_0__[\"extend\"])({}, _)\n  })); // initialize scenegraph\n\n  if (ctx.root) ctx.root.set(root);\n  root.source = ctx.data.root.input;\n  view.pulse(ctx.data.root.input, view.changeset().insert(root.items)); // initialize view size\n\n  view._width = view.width();\n  view._height = view.height();\n  view._viewWidth = viewWidth(view, view._width);\n  view._viewHeight = viewHeight(view, view._height);\n  view._origin = [0, 0];\n  view._resize = 0;\n  view._autosize = 1;\n  initializeResize(view); // initialize background color\n\n  background(view); // initialize cursor\n\n  cursor(view); // initialize view description\n\n  view.description(spec.description); // initialize hover proessing, if requested\n\n  if (options.hover) view.hover(); // initialize DOM container(s) and renderer\n\n  if (options.container) view.initialize(options.container, options.bind);\n}\n\nfunction lookupSignal(view, name) {\n  return Object(vega_util__WEBPACK_IMPORTED_MODULE_0__[\"hasOwnProperty\"])(view._signals, name) ? view._signals[name] : Object(vega_util__WEBPACK_IMPORTED_MODULE_0__[\"error\"])('Unrecognized signal name: ' + Object(vega_util__WEBPACK_IMPORTED_MODULE_0__[\"stringValue\"])(name));\n}\n\nfunction findOperatorHandler(op, handler) {\n  const h = (op._targets || []).filter(op => op._update && op._update.handler === handler);\n  return h.length ? h[0] : null;\n}\n\nfunction addOperatorListener(view, name, op, handler) {\n  let h = findOperatorHandler(op, handler);\n\n  if (!h) {\n    h = trap(view, () => handler(name, op.value));\n    h.handler = handler;\n    view.on(op, null, h);\n  }\n\n  return view;\n}\n\nfunction removeOperatorListener(view, op, handler) {\n  const h = findOperatorHandler(op, handler);\n  if (h) op._targets.remove(h);\n  return view;\n}\n\nObject(vega_util__WEBPACK_IMPORTED_MODULE_0__[\"inherits\"])(View, vega_dataflow__WEBPACK_IMPORTED_MODULE_1__[\"Dataflow\"], {\n  // -- DATAFLOW / RENDERING ----\n  async evaluate(encode, prerun, postrun) {\n    // evaluate dataflow and prerun\n    await vega_dataflow__WEBPACK_IMPORTED_MODULE_1__[\"Dataflow\"].prototype.evaluate.call(this, encode, prerun); // render as needed\n\n    if (this._redraw || this._resize) {\n      try {\n        if (this._renderer) {\n          if (this._resize) {\n            this._resize = 0;\n            resizeRenderer(this);\n          }\n\n          await this._renderer.renderAsync(this._scenegraph.root);\n        }\n\n        this._redraw = false;\n      } catch (e) {\n        this.error(e);\n      }\n    } // evaluate postrun\n\n\n    if (postrun) Object(vega_dataflow__WEBPACK_IMPORTED_MODULE_1__[\"asyncCallback\"])(this, postrun);\n    return this;\n  },\n\n  dirty(item) {\n    this._redraw = true;\n    this._renderer && this._renderer.dirty(item);\n  },\n\n  // -- GET / SET ----\n  description(text) {\n    if (arguments.length) {\n      const desc = text != null ? text + '' : null;\n      if (desc !== this._desc) ariaLabel(this._el, this._desc = desc);\n      return this;\n    }\n\n    return this._desc;\n  },\n\n  container() {\n    return this._el;\n  },\n\n  scenegraph() {\n    return this._scenegraph;\n  },\n\n  origin() {\n    return this._origin.slice();\n  },\n\n  signal(name, value, options) {\n    const op = lookupSignal(this, name);\n    return arguments.length === 1 ? op.value : this.update(op, value, options);\n  },\n\n  width(_) {\n    return arguments.length ? this.signal('width', _) : this.signal('width');\n  },\n\n  height(_) {\n    return arguments.length ? this.signal('height', _) : this.signal('height');\n  },\n\n  padding(_) {\n    return arguments.length ? this.signal('padding', padding(_)) : padding(this.signal('padding'));\n  },\n\n  autosize(_) {\n    return arguments.length ? this.signal('autosize', _) : this.signal('autosize');\n  },\n\n  background(_) {\n    return arguments.length ? this.signal('background', _) : this.signal('background');\n  },\n\n  renderer(type) {\n    if (!arguments.length) return this._renderType;\n    if (!Object(vega_scenegraph__WEBPACK_IMPORTED_MODULE_2__[\"renderModule\"])(type)) Object(vega_util__WEBPACK_IMPORTED_MODULE_0__[\"error\"])('Unrecognized renderer type: ' + type);\n\n    if (type !== this._renderType) {\n      this._renderType = type;\n\n      this._resetRenderer();\n    }\n\n    return this;\n  },\n\n  tooltip(handler) {\n    if (!arguments.length) return this._tooltip;\n\n    if (handler !== this._tooltip) {\n      this._tooltip = handler;\n\n      this._resetRenderer();\n    }\n\n    return this;\n  },\n\n  loader(loader) {\n    if (!arguments.length) return this._loader;\n\n    if (loader !== this._loader) {\n      vega_dataflow__WEBPACK_IMPORTED_MODULE_1__[\"Dataflow\"].prototype.loader.call(this, loader);\n\n      this._resetRenderer();\n    }\n\n    return this;\n  },\n\n  resize() {\n    // set flag to perform autosize\n    this._autosize = 1; // touch autosize signal to ensure top-level ViewLayout runs\n\n    return this.touch(lookupSignal(this, 'autosize'));\n  },\n\n  _resetRenderer() {\n    if (this._renderer) {\n      this._renderer = null;\n      this.initialize(this._el, this._elBind);\n    }\n  },\n\n  // -- SIZING ----\n  _resizeView: resizeView,\n\n  // -- EVENT HANDLING ----\n  addEventListener(type, handler, options) {\n    let callback = handler;\n\n    if (!(options && options.trap === false)) {\n      // wrap callback in error handler\n      callback = trap(this, handler);\n      callback.raw = handler;\n    }\n\n    this._handler.on(type, callback);\n\n    return this;\n  },\n\n  removeEventListener(type, handler) {\n    var handlers = this._handler.handlers(type),\n        i = handlers.length,\n        h,\n        t; // search registered handlers, remove if match found\n\n\n    while (--i >= 0) {\n      t = handlers[i].type;\n      h = handlers[i].handler;\n\n      if (type === t && (handler === h || handler === h.raw)) {\n        this._handler.off(t, h);\n\n        break;\n      }\n    }\n\n    return this;\n  },\n\n  addResizeListener(handler) {\n    const l = this._resizeListeners;\n\n    if (l.indexOf(handler) < 0) {\n      // add handler if it isn't already registered\n      // note: error trapping handled elsewhere, so\n      // no need to wrap handlers here\n      l.push(handler);\n    }\n\n    return this;\n  },\n\n  removeResizeListener(handler) {\n    var l = this._resizeListeners,\n        i = l.indexOf(handler);\n\n    if (i >= 0) {\n      l.splice(i, 1);\n    }\n\n    return this;\n  },\n\n  addSignalListener(name, handler) {\n    return addOperatorListener(this, name, lookupSignal(this, name), handler);\n  },\n\n  removeSignalListener(name, handler) {\n    return removeOperatorListener(this, lookupSignal(this, name), handler);\n  },\n\n  addDataListener(name, handler) {\n    return addOperatorListener(this, name, dataref(this, name).values, handler);\n  },\n\n  removeDataListener(name, handler) {\n    return removeOperatorListener(this, dataref(this, name).values, handler);\n  },\n\n  globalCursor(_) {\n    if (arguments.length) {\n      if (this._globalCursor !== !!_) {\n        const prev = setCursor(this, null); // clear previous cursor\n\n        this._globalCursor = !!_;\n        if (prev) setCursor(this, prev); // swap cursor\n      }\n\n      return this;\n    } else {\n      return this._globalCursor;\n    }\n  },\n\n  preventDefault(_) {\n    if (arguments.length) {\n      this._preventDefault = _;\n      return this;\n    } else {\n      return this._preventDefault;\n    }\n  },\n\n  timer,\n  events,\n  finalize,\n  hover,\n  // -- DATA ----\n  data,\n  change,\n  insert,\n  remove,\n  // -- SCALES --\n  scale,\n  // -- INITIALIZATION ----\n  initialize,\n  // -- HEADLESS RENDERING ----\n  toImageURL: renderToImageURL,\n  toCanvas: renderToCanvas,\n  toSVG: renderToSVG,\n  // -- SAVE / RESTORE STATE ----\n  getState,\n  setState\n});\n\n\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,[encoded data, 61488 characters]\n//# sourceURL=webpack-internal:///./node_modules/vega/node_modules/vega-view/build/vega-view.module.js\n");

/***/ }),

/***/ "./node_modules/vega/node_modules/vega-view/node_modules/d3-timer/src/index.js":
/*!*************************************************************************************!*\
  !*** ./node_modules/vega/node_modules/vega-view/node_modules/d3-timer/src/index.js ***!
  \*************************************************************************************/
/*! exports provided: now, timer, timerFlush, timeout, interval */
/***/ (function(module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _timer_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./timer.js */ \"./node_modules/vega/node_modules/vega-view/node_modules/d3-timer/src/timer.js\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"now\", function() { return _timer_js__WEBPACK_IMPORTED_MODULE_0__[\"now\"]; });\n\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"timer\", function() { return _timer_js__WEBPACK_IMPORTED_MODULE_0__[\"timer\"]; });\n\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"timerFlush\", function() { return _timer_js__WEBPACK_IMPORTED_MODULE_0__[\"timerFlush\"]; });\n\n/* harmony import */ var _timeout_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./timeout.js */ \"./node_modules/vega/node_modules/vega-view/node_modules/d3-timer/src/timeout.js\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"timeout\", function() { return _timeout_js__WEBPACK_IMPORTED_MODULE_1__[\"default\"]; });\n\n/* harmony import */ var _interval_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./interval.js */ \"./node_modules/vega/node_modules/vega-view/node_modules/d3-timer/src/interval.js\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"interval\", function() { return _interval_js__WEBPACK_IMPORTED_MODULE_2__[\"default\"]; });\n\n\n\n\n\n\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvdmVnYS9ub2RlX21vZHVsZXMvdmVnYS12aWV3L25vZGVfbW9kdWxlcy9kMy10aW1lci9zcmMvaW5kZXguanMuanMiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvdmVnYS9ub2RlX21vZHVsZXMvdmVnYS12aWV3L25vZGVfbW9kdWxlcy9kMy10aW1lci9zcmMvaW5kZXguanM/NDdiNyJdLCJzb3VyY2VzQ29udGVudCI6WyJleHBvcnQge1xuICBub3csXG4gIHRpbWVyLFxuICB0aW1lckZsdXNoXG59IGZyb20gXCIuL3RpbWVyLmpzXCI7XG5cbmV4cG9ydCB7XG4gIGRlZmF1bHQgYXMgdGltZW91dFxufSBmcm9tIFwiLi90aW1lb3V0LmpzXCI7XG5cbmV4cG9ydCB7XG4gIGRlZmF1bHQgYXMgaW50ZXJ2YWxcbn0gZnJvbSBcIi4vaW50ZXJ2YWwuanNcIjtcbiJdLCJtYXBwaW5ncyI6IkFBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUlBO0FBQ0E7QUFHQTtBQUNBO0FBR0E7Iiwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///./node_modules/vega/node_modules/vega-view/node_modules/d3-timer/src/index.js\n");

/***/ }),

/***/ "./node_modules/vega/node_modules/vega-view/node_modules/d3-timer/src/interval.js":
/*!****************************************************************************************!*\
  !*** ./node_modules/vega/node_modules/vega-view/node_modules/d3-timer/src/interval.js ***!
  \****************************************************************************************/
/*! exports provided: default */
/***/ (function(module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _timer_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./timer.js */ \"./node_modules/vega/node_modules/vega-view/node_modules/d3-timer/src/timer.js\");\n\n\n/* harmony default export */ __webpack_exports__[\"default\"] = (function(callback, delay, time) {\n  var t = new _timer_js__WEBPACK_IMPORTED_MODULE_0__[\"Timer\"], total = delay;\n  if (delay == null) return t.restart(callback, delay, time), t;\n  t._restart = t.restart;\n  t.restart = function(callback, delay, time) {\n    delay = +delay, time = time == null ? Object(_timer_js__WEBPACK_IMPORTED_MODULE_0__[\"now\"])() : +time;\n    t._restart(function tick(elapsed) {\n      elapsed += total;\n      t._restart(tick, total += delay, time);\n      callback(elapsed);\n    }, delay, time);\n  }\n  t.restart(callback, delay, time);\n  return t;\n});\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvdmVnYS9ub2RlX21vZHVsZXMvdmVnYS12aWV3L25vZGVfbW9kdWxlcy9kMy10aW1lci9zcmMvaW50ZXJ2YWwuanMuanMiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvdmVnYS9ub2RlX21vZHVsZXMvdmVnYS12aWV3L25vZGVfbW9kdWxlcy9kMy10aW1lci9zcmMvaW50ZXJ2YWwuanM/MmU2NiJdLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge1RpbWVyLCBub3d9IGZyb20gXCIuL3RpbWVyLmpzXCI7XG5cbmV4cG9ydCBkZWZhdWx0IGZ1bmN0aW9uKGNhbGxiYWNrLCBkZWxheSwgdGltZSkge1xuICB2YXIgdCA9IG5ldyBUaW1lciwgdG90YWwgPSBkZWxheTtcbiAgaWYgKGRlbGF5ID09IG51bGwpIHJldHVybiB0LnJlc3RhcnQoY2FsbGJhY2ssIGRlbGF5LCB0aW1lKSwgdDtcbiAgdC5fcmVzdGFydCA9IHQucmVzdGFydDtcbiAgdC5yZXN0YXJ0ID0gZnVuY3Rpb24oY2FsbGJhY2ssIGRlbGF5LCB0aW1lKSB7XG4gICAgZGVsYXkgPSArZGVsYXksIHRpbWUgPSB0aW1lID09IG51bGwgPyBub3coKSA6ICt0aW1lO1xuICAgIHQuX3Jlc3RhcnQoZnVuY3Rpb24gdGljayhlbGFwc2VkKSB7XG4gICAgICBlbGFwc2VkICs9IHRvdGFsO1xuICAgICAgdC5fcmVzdGFydCh0aWNrLCB0b3RhbCArPSBkZWxheSwgdGltZSk7XG4gICAgICBjYWxsYmFjayhlbGFwc2VkKTtcbiAgICB9LCBkZWxheSwgdGltZSk7XG4gIH1cbiAgdC5yZXN0YXJ0KGNhbGxiYWNrLCBkZWxheSwgdGltZSk7XG4gIHJldHVybiB0O1xufVxuIl0sIm1hcHBpbmdzIjoiQUFBQTtBQUFBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTsiLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///./node_modules/vega/node_modules/vega-view/node_modules/d3-timer/src/interval.js\n");

/***/ }),

/***/ "./node_modules/vega/node_modules/vega-view/node_modules/d3-timer/src/timeout.js":
/*!***************************************************************************************!*\
  !*** ./node_modules/vega/node_modules/vega-view/node_modules/d3-timer/src/timeout.js ***!
  \***************************************************************************************/
/*! exports provided: default */
/***/ (function(module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _timer_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./timer.js */ \"./node_modules/vega/node_modules/vega-view/node_modules/d3-timer/src/timer.js\");\n\n\n/* harmony default export */ __webpack_exports__[\"default\"] = (function(callback, delay, time) {\n  var t = new _timer_js__WEBPACK_IMPORTED_MODULE_0__[\"Timer\"];\n  delay = delay == null ? 0 : +delay;\n  t.restart(elapsed => {\n    t.stop();\n    callback(elapsed + delay);\n  }, delay, time);\n  return t;\n});\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvdmVnYS9ub2RlX21vZHVsZXMvdmVnYS12aWV3L25vZGVfbW9kdWxlcy9kMy10aW1lci9zcmMvdGltZW91dC5qcy5qcyIsInNvdXJjZXMiOlsid2VicGFjazovLy8uL25vZGVfbW9kdWxlcy92ZWdhL25vZGVfbW9kdWxlcy92ZWdhLXZpZXcvbm9kZV9tb2R1bGVzL2QzLXRpbWVyL3NyYy90aW1lb3V0LmpzP2NlMGEiXSwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtUaW1lcn0gZnJvbSBcIi4vdGltZXIuanNcIjtcblxuZXhwb3J0IGRlZmF1bHQgZnVuY3Rpb24oY2FsbGJhY2ssIGRlbGF5LCB0aW1lKSB7XG4gIHZhciB0ID0gbmV3IFRpbWVyO1xuICBkZWxheSA9IGRlbGF5ID09IG51bGwgPyAwIDogK2RlbGF5O1xuICB0LnJlc3RhcnQoZWxhcHNlZCA9PiB7XG4gICAgdC5zdG9wKCk7XG4gICAgY2FsbGJhY2soZWxhcHNlZCArIGRlbGF5KTtcbiAgfSwgZGVsYXksIHRpbWUpO1xuICByZXR1cm4gdDtcbn1cbiJdLCJtYXBwaW5ncyI6IkFBQUE7QUFBQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7Iiwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///./node_modules/vega/node_modules/vega-view/node_modules/d3-timer/src/timeout.js\n");

/***/ }),

/***/ "./node_modules/vega/node_modules/vega-view/node_modules/d3-timer/src/timer.js":
/*!*************************************************************************************!*\
  !*** ./node_modules/vega/node_modules/vega-view/node_modules/d3-timer/src/timer.js ***!
  \*************************************************************************************/
/*! exports provided: now, Timer, timer, timerFlush */
/***/ (function(module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"now\", function() { return now; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"Timer\", function() { return Timer; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"timer\", function() { return timer; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"timerFlush\", function() { return timerFlush; });\nvar frame = 0, // is an animation frame pending?\n    timeout = 0, // is a timeout pending?\n    interval = 0, // are any timers active?\n    pokeDelay = 1000, // how frequently we check for clock skew\n    taskHead,\n    taskTail,\n    clockLast = 0,\n    clockNow = 0,\n    clockSkew = 0,\n    clock = typeof performance === \"object\" && performance.now ? performance : Date,\n    setFrame = typeof window === \"object\" && window.requestAnimationFrame ? window.requestAnimationFrame.bind(window) : function(f) { setTimeout(f, 17); };\n\nfunction now() {\n  return clockNow || (setFrame(clearNow), clockNow = clock.now() + clockSkew);\n}\n\nfunction clearNow() {\n  clockNow = 0;\n}\n\nfunction Timer() {\n  this._call =\n  this._time =\n  this._next = null;\n}\n\nTimer.prototype = timer.prototype = {\n  constructor: Timer,\n  restart: function(callback, delay, time) {\n    if (typeof callback !== \"function\") throw new TypeError(\"callback is not a function\");\n    time = (time == null ? now() : +time) + (delay == null ? 0 : +delay);\n    if (!this._next && taskTail !== this) {\n      if (taskTail) taskTail._next = this;\n      else taskHead = this;\n      taskTail = this;\n    }\n    this._call = callback;\n    this._time = time;\n    sleep();\n  },\n  stop: function() {\n    if (this._call) {\n      this._call = null;\n      this._time = Infinity;\n      sleep();\n    }\n  }\n};\n\nfunction timer(callback, delay, time) {\n  var t = new Timer;\n  t.restart(callback, delay, time);\n  return t;\n}\n\nfunction timerFlush() {\n  now(); // Get the current time, if not already set.\n  ++frame; // Pretend we’ve set an alarm, if we haven’t already.\n  var t = taskHead, e;\n  while (t) {\n    if ((e = clockNow - t._time) >= 0) t._call.call(null, e);\n    t = t._next;\n  }\n  --frame;\n}\n\nfunction wake() {\n  clockNow = (clockLast = clock.now()) + clockSkew;\n  frame = timeout = 0;\n  try {\n    timerFlush();\n  } finally {\n    frame = 0;\n    nap();\n    clockNow = 0;\n  }\n}\n\nfunction poke() {\n  var now = clock.now(), delay = now - clockLast;\n  if (delay > pokeDelay) clockSkew -= delay, clockLast = now;\n}\n\nfunction nap() {\n  var t0, t1 = taskHead, t2, time = Infinity;\n  while (t1) {\n    if (t1._call) {\n      if (time > t1._time) time = t1._time;\n      t0 = t1, t1 = t1._next;\n    } else {\n      t2 = t1._next, t1._next = null;\n      t1 = t0 ? t0._next = t2 : taskHead = t2;\n    }\n  }\n  taskTail = t0;\n  sleep(time);\n}\n\nfunction sleep(time) {\n  if (frame) return; // Soonest alarm already set, or will be.\n  if (timeout) timeout = clearTimeout(timeout);\n  var delay = time - clockNow; // Strictly less than if we recomputed clockNow.\n  if (delay > 24) {\n    if (time < Infinity) timeout = setTimeout(wake, time - clock.now() - clockSkew);\n    if (interval) interval = clearInterval(interval);\n  } else {\n    if (!interval) clockLast = clock.now(), interval = setInterval(poke, pokeDelay);\n    frame = 1, setFrame(wake);\n  }\n}\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,[encoded data, 5148 characters]\n//# sourceURL=webpack-internal:///./node_modules/vega/node_modules/vega-view/node_modules/d3-timer/src/timer.js\n");

/***/ }),

/***/ "./node_modules/vega/node_modules/vega-voronoi/build/vega-voronoi.module.js":
/*!**********************************************************************************!*\
  !*** ./node_modules/vega/node_modules/vega-voronoi/build/vega-voronoi.module.js ***!
  \**********************************************************************************/
/*! exports provided: voronoi */
/***/ (function(module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"voronoi\", function() { return Voronoi; });\n/* harmony import */ var vega_dataflow__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! vega-dataflow */ \"./node_modules/vega/node_modules/vega-dataflow/build/vega-dataflow.module.js\");\n/* harmony import */ var vega_util__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! vega-util */ \"./node_modules/vega/node_modules/vega-util/build/vega-util.module.js\");\n/* harmony import */ var d3_delaunay__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! d3-delaunay */ \"./node_modules/d3-delaunay/src/index.js\");\n\n\n\n\nfunction Voronoi(params) {\n  vega_dataflow__WEBPACK_IMPORTED_MODULE_0__[\"Transform\"].call(this, null, params);\n}\nVoronoi.Definition = {\n  'type': 'Voronoi',\n  'metadata': {\n    'modifies': true\n  },\n  'params': [{\n    'name': 'x',\n    'type': 'field',\n    'required': true\n  }, {\n    'name': 'y',\n    'type': 'field',\n    'required': true\n  }, {\n    'name': 'size',\n    'type': 'number',\n    'array': true,\n    'length': 2\n  }, {\n    'name': 'extent',\n    'type': 'array',\n    'array': true,\n    'length': 2,\n    'default': [[-1e5, -1e5], [1e5, 1e5]],\n    'content': {\n      'type': 'number',\n      'array': true,\n      'length': 2\n    }\n  }, {\n    'name': 'as',\n    'type': 'string',\n    'default': 'path'\n  }]\n};\nconst defaultExtent = [-1e5, -1e5, 1e5, 1e5];\nObject(vega_util__WEBPACK_IMPORTED_MODULE_1__[\"inherits\"])(Voronoi, vega_dataflow__WEBPACK_IMPORTED_MODULE_0__[\"Transform\"], {\n  transform(_, pulse) {\n    const as = _.as || 'path',\n          data = pulse.source; // nothing to do if no data\n\n    if (!data || !data.length) return pulse; // configure and construct voronoi diagram\n\n    let s = _.size;\n    s = s ? [0, 0, s[0], s[1]] : (s = _.extent) ? [s[0][0], s[0][1], s[1][0], s[1][1]] : defaultExtent;\n    const voronoi = this.value = d3_delaunay__WEBPACK_IMPORTED_MODULE_2__[\"Delaunay\"].from(data, _.x, _.y).voronoi(s); // map polygons to paths\n\n    for (let i = 0, n = data.length; i < n; ++i) {\n      const polygon = voronoi.cellPolygon(i);\n      data[i][as] = polygon ? toPathString(polygon) : null;\n    }\n\n    return pulse.reflow(_.modified()).modifies(as);\n  }\n\n}); // suppress duplicated end point vertices\n\nfunction toPathString(p) {\n  const x = p[0][0],\n        y = p[0][1];\n  let n = p.length - 1;\n\n  for (; p[n][0] === x && p[n][1] === y; --n);\n\n  return 'M' + p.slice(0, n + 1).join('L') + 'Z';\n}\n\n\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvdmVnYS9ub2RlX21vZHVsZXMvdmVnYS12b3Jvbm9pL2J1aWxkL3ZlZ2Etdm9yb25vaS5tb2R1bGUuanMuanMiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvdmVnYS9ub2RlX21vZHVsZXMvdmVnYS12b3Jvbm9pL2J1aWxkL3ZlZ2Etdm9yb25vaS5tb2R1bGUuanM/M2E4ZSJdLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBUcmFuc2Zvcm0gfSBmcm9tICd2ZWdhLWRhdGFmbG93JztcbmltcG9ydCB7IGluaGVyaXRzIH0gZnJvbSAndmVnYS11dGlsJztcbmltcG9ydCB7IERlbGF1bmF5IH0gZnJvbSAnZDMtZGVsYXVuYXknO1xuXG5mdW5jdGlvbiBWb3Jvbm9pKHBhcmFtcykge1xuICBUcmFuc2Zvcm0uY2FsbCh0aGlzLCBudWxsLCBwYXJhbXMpO1xufVxuVm9yb25vaS5EZWZpbml0aW9uID0ge1xuICAndHlwZSc6ICdWb3Jvbm9pJyxcbiAgJ21ldGFkYXRhJzoge1xuICAgICdtb2RpZmllcyc6IHRydWVcbiAgfSxcbiAgJ3BhcmFtcyc6IFt7XG4gICAgJ25hbWUnOiAneCcsXG4gICAgJ3R5cGUnOiAnZmllbGQnLFxuICAgICdyZXF1aXJlZCc6IHRydWVcbiAgfSwge1xuICAgICduYW1lJzogJ3knLFxuICAgICd0eXBlJzogJ2ZpZWxkJyxcbiAgICAncmVxdWlyZWQnOiB0cnVlXG4gIH0sIHtcbiAgICAnbmFtZSc6ICdzaXplJyxcbiAgICAndHlwZSc6ICdudW1iZXInLFxuICAgICdhcnJheSc6IHRydWUsXG4gICAgJ2xlbmd0aCc6IDJcbiAgfSwge1xuICAgICduYW1lJzogJ2V4dGVudCcsXG4gICAgJ3R5cGUnOiAnYXJyYXknLFxuICAgICdhcnJheSc6IHRydWUsXG4gICAgJ2xlbmd0aCc6IDIsXG4gICAgJ2RlZmF1bHQnOiBbWy0xZTUsIC0xZTVdLCBbMWU1LCAxZTVdXSxcbiAgICAnY29udGVudCc6IHtcbiAgICAgICd0eXBlJzogJ251bWJlcicsXG4gICAgICAnYXJyYXknOiB0cnVlLFxuICAgICAgJ2xlbmd0aCc6IDJcbiAgICB9XG4gIH0sIHtcbiAgICAnbmFtZSc6ICdhcycsXG4gICAgJ3R5cGUnOiAnc3RyaW5nJyxcbiAgICAnZGVmYXVsdCc6ICdwYXRoJ1xuICB9XVxufTtcbmNvbnN0IGRlZmF1bHRFeHRlbnQgPSBbLTFlNSwgLTFlNSwgMWU1LCAxZTVdO1xuaW5oZXJpdHMoVm9yb25vaSwgVHJhbnNmb3JtLCB7XG4gIHRyYW5zZm9ybShfLCBwdWxzZSkge1xuICAgIGNvbnN0IGFzID0gXy5hcyB8fCAncGF0aCcsXG4gICAgICAgICAgZGF0YSA9IHB1bHNlLnNvdXJjZTsgLy8gbm90aGluZyB0byBkbyBpZiBubyBkYXRhXG5cbiAgICBpZiAoIWRhdGEgfHwgIWRhdGEubGVuZ3RoKSByZXR1cm4gcHVsc2U7IC8vIGNvbmZpZ3VyZSBhbmQgY29uc3RydWN0IHZvcm9ub2kgZGlhZ3JhbVxuXG4gICAgbGV0IHMgPSBfLnNpemU7XG4gICAgcyA9IHMgPyBbMCwgMCwgc1swXSwgc1sxXV0gOiAocyA9IF8uZXh0ZW50KSA/IFtzWzBdWzBdLCBzWzBdWzFdLCBzWzFdWzBdLCBzWzFdWzFdXSA6IGRlZmF1bHRFeHRlbnQ7XG4gICAgY29uc3Qgdm9yb25vaSA9IHRoaXMudmFsdWUgPSBEZWxhdW5heS5mcm9tKGRhdGEsIF8ueCwgXy55KS52b3Jvbm9pKHMpOyAvLyBtYXAgcG9seWdvbnMgdG8gcGF0aHNcblxuICAgIGZvciAobGV0IGkgPSAwLCBuID0gZGF0YS5sZW5ndGg7IGkgPCBuOyArK2kpIHtcbiAgICAgIGNvbnN0IHBvbHlnb24gPSB2b3Jvbm9pLmNlbGxQb2x5Z29uKGkpO1xuICAgICAgZGF0YVtpXVthc10gPSBwb2x5Z29uID8gdG9QYXRoU3RyaW5nKHBvbHlnb24pIDogbnVsbDtcbiAgICB9XG5cbiAgICByZXR1cm4gcHVsc2UucmVmbG93KF8ubW9kaWZpZWQoKSkubW9kaWZpZXMoYXMpO1xuICB9XG5cbn0pOyAvLyBzdXBwcmVzcyBkdXBsaWNhdGVkIGVuZCBwb2ludCB2ZXJ0aWNlc1xuXG5mdW5jdGlvbiB0b1BhdGhTdHJpbmcocCkge1xuICBjb25zdCB4ID0gcFswXVswXSxcbiAgICAgICAgeSA9IHBbMF1bMV07XG4gIGxldCBuID0gcC5sZW5ndGggLSAxO1xuXG4gIGZvciAoOyBwW25dWzBdID09PSB4ICYmIHBbbl1bMV0gPT09IHk7IC0tbik7XG5cbiAgcmV0dXJuICdNJyArIHAuc2xpY2UoMCwgbiArIDEpLmpvaW4oJ0wnKSArICdaJztcbn1cblxuZXhwb3J0IHsgVm9yb25vaSBhcyB2b3Jvbm9pIH07XG4iXSwibWFwcGluZ3MiOiJBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7Iiwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///./node_modules/vega/node_modules/vega-voronoi/build/vega-voronoi.module.js\n");

/***/ }),

/***/ "./node_modules/vega/node_modules/vega-wordcloud/build/vega-wordcloud.module.js":
/*!**************************************************************************************!*\
  !*** ./node_modules/vega/node_modules/vega-wordcloud/build/vega-wordcloud.module.js ***!
  \**************************************************************************************/
/*! exports provided: wordcloud */
/***/ (function(module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"wordcloud\", function() { return Wordcloud; });\n/* harmony import */ var vega_canvas__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! vega-canvas */ \"./node_modules/vega-canvas/index.browser.js\");\n/* harmony import */ var vega_dataflow__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! vega-dataflow */ \"./node_modules/vega/node_modules/vega-dataflow/build/vega-dataflow.module.js\");\n/* harmony import */ var vega_util__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! vega-util */ \"./node_modules/vega/node_modules/vega-util/build/vega-util.module.js\");\n/* harmony import */ var vega_scale__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! vega-scale */ \"./node_modules/vega/node_modules/vega-scale/build/vega-scale.module.js\");\n/* harmony import */ var vega_statistics__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! vega-statistics */ \"./node_modules/vega-statistics/build/vega-statistics.module.js\");\n\n\n\n\n\n\n/*\nCopyright (c) 2013, Jason Davies.\nAll rights reserved.\n\nRedistribution and use in source and binary forms, with or without\nmodification, are permitted provided that the following conditions are met:\n\n  * Redistributions of source code must retain the above copyright notice, this\n    list of conditions and the following disclaimer.\n\n  * Redistributions in binary form must reproduce the above copyright notice,\n    this list of conditions and the following disclaimer in the documentation\n    and/or other materials provided with the distribution.\n\n  * The name Jason Davies may not be used to endorse or promote products\n    derived from this software without specific prior written permission.\n\nTHIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS \"AS IS\" AND\nANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED\nWARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE\nDISCLAIMED. IN NO EVENT SHALL JASON DAVIES BE LIABLE FOR ANY DIRECT, INDIRECT,\nINCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT\nLIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR\nPROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF\nLIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE\nOR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF\nADVISED OF THE POSSIBILITY OF SUCH DAMAGE.\n*/\n// Word cloud layout by Jason Davies, https://www.jasondavies.com/wordcloud/\n// Algorithm due to Jonathan Feinberg, http://static.mrfeinberg.com/bv_ch03.pdf\n\nvar cloudRadians = Math.PI / 180,\n    cw = 1 << 11 >> 5,\n    ch = 1 << 11;\nfunction cloud () {\n  var size = [256, 256],\n      text,\n      font,\n      fontSize,\n      fontStyle,\n      fontWeight,\n      rotate,\n      padding,\n      spiral = archimedeanSpiral,\n      words = [],\n      random = Math.random,\n      cloud = {};\n\n  cloud.layout = function () {\n    var contextAndRatio = getContext(Object(vega_canvas__WEBPACK_IMPORTED_MODULE_0__[\"canvas\"])()),\n        board = zeroArray((size[0] >> 5) * size[1]),\n        bounds = null,\n        n = words.length,\n        i = -1,\n        tags = [],\n        data = words.map(d => ({\n      text: text(d),\n      font: font(d),\n      style: fontStyle(d),\n      weight: fontWeight(d),\n      rotate: rotate(d),\n      size: ~~(fontSize(d) + 1e-14),\n      padding: padding(d),\n      xoff: 0,\n      yoff: 0,\n      x1: 0,\n      y1: 0,\n      x0: 0,\n      y0: 0,\n      hasText: false,\n      sprite: null,\n      datum: d\n    })).sort((a, b) => b.size - a.size);\n\n    while (++i < n) {\n      var d = data[i];\n      d.x = size[0] * (random() + .5) >> 1;\n      d.y = size[1] * (random() + .5) >> 1;\n      cloudSprite(contextAndRatio, d, data, i);\n\n      if (d.hasText && place(board, d, bounds)) {\n        tags.push(d);\n        if (bounds) cloudBounds(bounds, d);else bounds = [{\n          x: d.x + d.x0,\n          y: d.y + d.y0\n        }, {\n          x: d.x + d.x1,\n          y: d.y + d.y1\n        }]; // Temporary hack\n\n        d.x -= size[0] >> 1;\n        d.y -= size[1] >> 1;\n      }\n    }\n\n    return tags;\n  };\n\n  function getContext(canvas) {\n    canvas.width = canvas.height = 1;\n    var ratio = Math.sqrt(canvas.getContext('2d').getImageData(0, 0, 1, 1).data.length >> 2);\n    canvas.width = (cw << 5) / ratio;\n    canvas.height = ch / ratio;\n    var context = canvas.getContext('2d');\n    context.fillStyle = context.strokeStyle = 'red';\n    context.textAlign = 'center';\n    return {\n      context: context,\n      ratio: ratio\n    };\n  }\n\n  function place(board, tag, bounds) {\n    var startX = tag.x,\n        startY = tag.y,\n        maxDelta = Math.sqrt(size[0] * size[0] + size[1] * size[1]),\n        s = spiral(size),\n        dt = random() < .5 ? 1 : -1,\n        t = -dt,\n        dxdy,\n        dx,\n        dy;\n\n    while (dxdy = s(t += dt)) {\n      dx = ~~dxdy[0];\n      dy = ~~dxdy[1];\n      if (Math.min(Math.abs(dx), Math.abs(dy)) >= maxDelta) break;\n      tag.x = startX + dx;\n      tag.y = startY + dy;\n      if (tag.x + tag.x0 < 0 || tag.y + tag.y0 < 0 || tag.x + tag.x1 > size[0] || tag.y + tag.y1 > size[1]) continue; // TODO only check for collisions within current bounds.\n\n      if (!bounds || !cloudCollide(tag, board, size[0])) {\n        if (!bounds || collideRects(tag, bounds)) {\n          var sprite = tag.sprite,\n              w = tag.width >> 5,\n              sw = size[0] >> 5,\n              lx = tag.x - (w << 4),\n              sx = lx & 0x7f,\n              msx = 32 - sx,\n              h = tag.y1 - tag.y0,\n              x = (tag.y + tag.y0) * sw + (lx >> 5),\n              last;\n\n          for (var j = 0; j < h; j++) {\n            last = 0;\n\n            for (var i = 0; i <= w; i++) {\n              board[x + i] |= last << msx | (i < w ? (last = sprite[j * w + i]) >>> sx : 0);\n            }\n\n            x += sw;\n          }\n\n          tag.sprite = null;\n          return true;\n        }\n      }\n    }\n\n    return false;\n  }\n\n  cloud.words = function (_) {\n    if (arguments.length) {\n      words = _;\n      return cloud;\n    } else {\n      return words;\n    }\n  };\n\n  cloud.size = function (_) {\n    if (arguments.length) {\n      size = [+_[0], +_[1]];\n      return cloud;\n    } else {\n      return size;\n    }\n  };\n\n  cloud.font = function (_) {\n    if (arguments.length) {\n      font = functor(_);\n      return cloud;\n    } else {\n      return font;\n    }\n  };\n\n  cloud.fontStyle = function (_) {\n    if (arguments.length) {\n      fontStyle = functor(_);\n      return cloud;\n    } else {\n      return fontStyle;\n    }\n  };\n\n  cloud.fontWeight = function (_) {\n    if (arguments.length) {\n      fontWeight = functor(_);\n      return cloud;\n    } else {\n      return fontWeight;\n    }\n  };\n\n  cloud.rotate = function (_) {\n    if (arguments.length) {\n      rotate = functor(_);\n      return cloud;\n    } else {\n      return rotate;\n    }\n  };\n\n  cloud.text = function (_) {\n    if (arguments.length) {\n      text = functor(_);\n      return cloud;\n    } else {\n      return text;\n    }\n  };\n\n  cloud.spiral = function (_) {\n    if (arguments.length) {\n      spiral = spirals[_] || _;\n      return cloud;\n    } else {\n      return spiral;\n    }\n  };\n\n  cloud.fontSize = function (_) {\n    if (arguments.length) {\n      fontSize = functor(_);\n      return cloud;\n    } else {\n      return fontSize;\n    }\n  };\n\n  cloud.padding = function (_) {\n    if (arguments.length) {\n      padding = functor(_);\n      return cloud;\n    } else {\n      return padding;\n    }\n  };\n\n  cloud.random = function (_) {\n    if (arguments.length) {\n      random = _;\n      return cloud;\n    } else {\n      return random;\n    }\n  };\n\n  return cloud;\n} // Fetches a monochrome sprite bitmap for the specified text.\n// Load in batches for speed.\n\nfunction cloudSprite(contextAndRatio, d, data, di) {\n  if (d.sprite) return;\n  var c = contextAndRatio.context,\n      ratio = contextAndRatio.ratio;\n  c.clearRect(0, 0, (cw << 5) / ratio, ch / ratio);\n  var x = 0,\n      y = 0,\n      maxh = 0,\n      n = data.length,\n      w,\n      w32,\n      h,\n      i,\n      j;\n  --di;\n\n  while (++di < n) {\n    d = data[di];\n    c.save();\n    c.font = d.style + ' ' + d.weight + ' ' + ~~((d.size + 1) / ratio) + 'px ' + d.font;\n    w = c.measureText(d.text + 'm').width * ratio;\n    h = d.size << 1;\n\n    if (d.rotate) {\n      var sr = Math.sin(d.rotate * cloudRadians),\n          cr = Math.cos(d.rotate * cloudRadians),\n          wcr = w * cr,\n          wsr = w * sr,\n          hcr = h * cr,\n          hsr = h * sr;\n      w = Math.max(Math.abs(wcr + hsr), Math.abs(wcr - hsr)) + 0x1f >> 5 << 5;\n      h = ~~Math.max(Math.abs(wsr + hcr), Math.abs(wsr - hcr));\n    } else {\n      w = w + 0x1f >> 5 << 5;\n    }\n\n    if (h > maxh) maxh = h;\n\n    if (x + w >= cw << 5) {\n      x = 0;\n      y += maxh;\n      maxh = 0;\n    }\n\n    if (y + h >= ch) break;\n    c.translate((x + (w >> 1)) / ratio, (y + (h >> 1)) / ratio);\n    if (d.rotate) c.rotate(d.rotate * cloudRadians);\n    c.fillText(d.text, 0, 0);\n\n    if (d.padding) {\n      c.lineWidth = 2 * d.padding;\n      c.strokeText(d.text, 0, 0);\n    }\n\n    c.restore();\n    d.width = w;\n    d.height = h;\n    d.xoff = x;\n    d.yoff = y;\n    d.x1 = w >> 1;\n    d.y1 = h >> 1;\n    d.x0 = -d.x1;\n    d.y0 = -d.y1;\n    d.hasText = true;\n    x += w;\n  }\n\n  var pixels = c.getImageData(0, 0, (cw << 5) / ratio, ch / ratio).data,\n      sprite = [];\n\n  while (--di >= 0) {\n    d = data[di];\n    if (!d.hasText) continue;\n    w = d.width;\n    w32 = w >> 5;\n    h = d.y1 - d.y0; // Zero the buffer\n\n    for (i = 0; i < h * w32; i++) sprite[i] = 0;\n\n    x = d.xoff;\n    if (x == null) return;\n    y = d.yoff;\n    var seen = 0,\n        seenRow = -1;\n\n    for (j = 0; j < h; j++) {\n      for (i = 0; i < w; i++) {\n        var k = w32 * j + (i >> 5),\n            m = pixels[(y + j) * (cw << 5) + (x + i) << 2] ? 1 << 31 - i % 32 : 0;\n        sprite[k] |= m;\n        seen |= m;\n      }\n\n      if (seen) seenRow = j;else {\n        d.y0++;\n        h--;\n        j--;\n        y++;\n      }\n    }\n\n    d.y1 = d.y0 + seenRow;\n    d.sprite = sprite.slice(0, (d.y1 - d.y0) * w32);\n  }\n} // Use mask-based collision detection.\n\n\nfunction cloudCollide(tag, board, sw) {\n  sw >>= 5;\n  var sprite = tag.sprite,\n      w = tag.width >> 5,\n      lx = tag.x - (w << 4),\n      sx = lx & 0x7f,\n      msx = 32 - sx,\n      h = tag.y1 - tag.y0,\n      x = (tag.y + tag.y0) * sw + (lx >> 5),\n      last;\n\n  for (var j = 0; j < h; j++) {\n    last = 0;\n\n    for (var i = 0; i <= w; i++) {\n      if ((last << msx | (i < w ? (last = sprite[j * w + i]) >>> sx : 0)) & board[x + i]) return true;\n    }\n\n    x += sw;\n  }\n\n  return false;\n}\n\nfunction cloudBounds(bounds, d) {\n  var b0 = bounds[0],\n      b1 = bounds[1];\n  if (d.x + d.x0 < b0.x) b0.x = d.x + d.x0;\n  if (d.y + d.y0 < b0.y) b0.y = d.y + d.y0;\n  if (d.x + d.x1 > b1.x) b1.x = d.x + d.x1;\n  if (d.y + d.y1 > b1.y) b1.y = d.y + d.y1;\n}\n\nfunction collideRects(a, b) {\n  return a.x + a.x1 > b[0].x && a.x + a.x0 < b[1].x && a.y + a.y1 > b[0].y && a.y + a.y0 < b[1].y;\n}\n\nfunction archimedeanSpiral(size) {\n  var e = size[0] / size[1];\n  return function (t) {\n    return [e * (t *= .1) * Math.cos(t), t * Math.sin(t)];\n  };\n}\n\nfunction rectangularSpiral(size) {\n  var dy = 4,\n      dx = dy * size[0] / size[1],\n      x = 0,\n      y = 0;\n  return function (t) {\n    var sign = t < 0 ? -1 : 1; // See triangular numbers: T_n = n * (n + 1) / 2.\n\n    switch (Math.sqrt(1 + 4 * sign * t) - sign & 3) {\n      case 0:\n        x += dx;\n        break;\n\n      case 1:\n        y += dy;\n        break;\n\n      case 2:\n        x -= dx;\n        break;\n\n      default:\n        y -= dy;\n        break;\n    }\n\n    return [x, y];\n  };\n} // TODO reuse arrays?\n\n\nfunction zeroArray(n) {\n  var a = [],\n      i = -1;\n\n  while (++i < n) a[i] = 0;\n\n  return a;\n}\n\nfunction functor(d) {\n  return typeof d === 'function' ? d : function () {\n    return d;\n  };\n}\n\nvar spirals = {\n  archimedean: archimedeanSpiral,\n  rectangular: rectangularSpiral\n};\n\nconst Output = ['x', 'y', 'font', 'fontSize', 'fontStyle', 'fontWeight', 'angle'];\nconst Params = ['text', 'font', 'rotate', 'fontSize', 'fontStyle', 'fontWeight'];\nfunction Wordcloud(params) {\n  vega_dataflow__WEBPACK_IMPORTED_MODULE_1__[\"Transform\"].call(this, cloud(), params);\n}\nWordcloud.Definition = {\n  'type': 'Wordcloud',\n  'metadata': {\n    'modifies': true\n  },\n  'params': [{\n    'name': 'size',\n    'type': 'number',\n    'array': true,\n    'length': 2\n  }, {\n    'name': 'font',\n    'type': 'string',\n    'expr': true,\n    'default': 'sans-serif'\n  }, {\n    'name': 'fontStyle',\n    'type': 'string',\n    'expr': true,\n    'default': 'normal'\n  }, {\n    'name': 'fontWeight',\n    'type': 'string',\n    'expr': true,\n    'default': 'normal'\n  }, {\n    'name': 'fontSize',\n    'type': 'number',\n    'expr': true,\n    'default': 14\n  }, {\n    'name': 'fontSizeRange',\n    'type': 'number',\n    'array': 'nullable',\n    'default': [10, 50]\n  }, {\n    'name': 'rotate',\n    'type': 'number',\n    'expr': true,\n    'default': 0\n  }, {\n    'name': 'text',\n    'type': 'field'\n  }, {\n    'name': 'spiral',\n    'type': 'string',\n    'values': ['archimedean', 'rectangular']\n  }, {\n    'name': 'padding',\n    'type': 'number',\n    'expr': true\n  }, {\n    'name': 'as',\n    'type': 'string',\n    'array': true,\n    'length': 7,\n    'default': Output\n  }]\n};\nObject(vega_util__WEBPACK_IMPORTED_MODULE_2__[\"inherits\"])(Wordcloud, vega_dataflow__WEBPACK_IMPORTED_MODULE_1__[\"Transform\"], {\n  transform(_, pulse) {\n    if (_.size && !(_.size[0] && _.size[1])) {\n      Object(vega_util__WEBPACK_IMPORTED_MODULE_2__[\"error\"])('Wordcloud size dimensions must be non-zero.');\n    }\n\n    function modp(param) {\n      const p = _[param];\n      return Object(vega_util__WEBPACK_IMPORTED_MODULE_2__[\"isFunction\"])(p) && pulse.modified(p.fields);\n    }\n\n    const mod = _.modified();\n\n    if (!(mod || pulse.changed(pulse.ADD_REM) || Params.some(modp))) return;\n    const data = pulse.materialize(pulse.SOURCE).source,\n          layout = this.value,\n          as = _.as || Output;\n    let fontSize = _.fontSize || 14,\n        range;\n    Object(vega_util__WEBPACK_IMPORTED_MODULE_2__[\"isFunction\"])(fontSize) ? range = _.fontSizeRange : fontSize = Object(vega_util__WEBPACK_IMPORTED_MODULE_2__[\"constant\"])(fontSize); // create font size scaling function as needed\n\n    if (range) {\n      const fsize = fontSize,\n            sizeScale = Object(vega_scale__WEBPACK_IMPORTED_MODULE_3__[\"scale\"])('sqrt')().domain(Object(vega_util__WEBPACK_IMPORTED_MODULE_2__[\"extent\"])(data, fsize)).range(range);\n\n      fontSize = x => sizeScale(fsize(x));\n    }\n\n    data.forEach(t => {\n      t[as[0]] = NaN;\n      t[as[1]] = NaN;\n      t[as[3]] = 0;\n    }); // configure layout\n\n    const words = layout.words(data).text(_.text).size(_.size || [500, 500]).padding(_.padding || 1).spiral(_.spiral || 'archimedean').rotate(_.rotate || 0).font(_.font || 'sans-serif').fontStyle(_.fontStyle || 'normal').fontWeight(_.fontWeight || 'normal').fontSize(fontSize).random(vega_statistics__WEBPACK_IMPORTED_MODULE_4__[\"random\"]).layout();\n    const size = layout.size(),\n          dx = size[0] >> 1,\n          dy = size[1] >> 1,\n          n = words.length;\n\n    for (let i = 0, w, t; i < n; ++i) {\n      w = words[i];\n      t = w.datum;\n      t[as[0]] = w.x + dx;\n      t[as[1]] = w.y + dy;\n      t[as[2]] = w.font;\n      t[as[3]] = w.size;\n      t[as[4]] = w.style;\n      t[as[5]] = w.weight;\n      t[as[6]] = w.rotate;\n    }\n\n    return pulse.reflow(mod).modifies(as);\n  }\n\n});\n\n\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,[encoded data, 24180 characters]\n//# sourceURL=webpack-internal:///./node_modules/vega/node_modules/vega-wordcloud/build/vega-wordcloud.module.js\n");

/***/ }),

/***/ "./node_modules/yallist/iterator.js":
/*!******************************************!*\
  !*** ./node_modules/yallist/iterator.js ***!
  \******************************************/
/*! no static exports found */
/***/ (function(module, exports, __webpack_require__) {

"use strict";
eval("\nmodule.exports = function (Yallist) {\n  Yallist.prototype[Symbol.iterator] = function* () {\n    for (let walker = this.head; walker; walker = walker.next) {\n      yield walker.value\n    }\n  }\n}\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMveWFsbGlzdC9pdGVyYXRvci5qcy5qcyIsInNvdXJjZXMiOlsid2VicGFjazovLy8uL25vZGVfbW9kdWxlcy95YWxsaXN0L2l0ZXJhdG9yLmpzPzFmMDMiXSwic291cmNlc0NvbnRlbnQiOlsiJ3VzZSBzdHJpY3QnXG5tb2R1bGUuZXhwb3J0cyA9IGZ1bmN0aW9uIChZYWxsaXN0KSB7XG4gIFlhbGxpc3QucHJvdG90eXBlW1N5bWJvbC5pdGVyYXRvcl0gPSBmdW5jdGlvbiogKCkge1xuICAgIGZvciAobGV0IHdhbGtlciA9IHRoaXMuaGVhZDsgd2Fsa2VyOyB3YWxrZXIgPSB3YWxrZXIubmV4dCkge1xuICAgICAgeWllbGQgd2Fsa2VyLnZhbHVlXG4gICAgfVxuICB9XG59XG4iXSwibWFwcGluZ3MiOiJBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7Iiwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///./node_modules/yallist/iterator.js\n");

/***/ }),

/***/ "./node_modules/yallist/yallist.js":
/*!*****************************************!*\
  !*** ./node_modules/yallist/yallist.js ***!
  \*****************************************/
/*! no static exports found */
/***/ (function(module, exports, __webpack_require__) {

"use strict";
eval("\nmodule.exports = Yallist\n\nYallist.Node = Node\nYallist.create = Yallist\n\nfunction Yallist (list) {\n  var self = this\n  if (!(self instanceof Yallist)) {\n    self = new Yallist()\n  }\n\n  self.tail = null\n  self.head = null\n  self.length = 0\n\n  if (list && typeof list.forEach === 'function') {\n    list.forEach(function (item) {\n      self.push(item)\n    })\n  } else if (arguments.length > 0) {\n    for (var i = 0, l = arguments.length; i < l; i++) {\n      self.push(arguments[i])\n    }\n  }\n\n  return self\n}\n\nYallist.prototype.removeNode = function (node) {\n  if (node.list !== this) {\n    throw new Error('removing node which does not belong to this list')\n  }\n\n  var next = node.next\n  var prev = node.prev\n\n  if (next) {\n    next.prev = prev\n  }\n\n  if (prev) {\n    prev.next = next\n  }\n\n  if (node === this.head) {\n    this.head = next\n  }\n  if (node === this.tail) {\n    this.tail = prev\n  }\n\n  node.list.length--\n  node.next = null\n  node.prev = null\n  node.list = null\n\n  return next\n}\n\nYallist.prototype.unshiftNode = function (node) {\n  if (node === this.head) {\n    return\n  }\n\n  if (node.list) {\n    node.list.removeNode(node)\n  }\n\n  var head = this.head\n  node.list = this\n  node.next = head\n  if (head) {\n    head.prev = node\n  }\n\n  this.head = node\n  if (!this.tail) {\n    this.tail = node\n  }\n  this.length++\n}\n\nYallist.prototype.pushNode = function (node) {\n  if (node === this.tail) {\n    return\n  }\n\n  if (node.list) {\n    node.list.removeNode(node)\n  }\n\n  var tail = this.tail\n  node.list = this\n  node.prev = tail\n  if (tail) {\n    tail.next = node\n  }\n\n  this.tail = node\n  if (!this.head) {\n    this.head = node\n  }\n  this.length++\n}\n\nYallist.prototype.push = function () {\n  for (var i = 0, l = arguments.length; i < l; i++) {\n    push(this, arguments[i])\n  }\n  return this.length\n}\n\nYallist.prototype.unshift = function () {\n  for (var i = 0, l = arguments.length; i < l; i++) {\n    unshift(this, arguments[i])\n  }\n  return this.length\n}\n\nYallist.prototype.pop = function () {\n  if (!this.tail) {\n    return undefined\n  }\n\n  var res = this.tail.value\n  this.tail = this.tail.prev\n  if (this.tail) {\n    this.tail.next = null\n  } else {\n    this.head = null\n  }\n  this.length--\n  return res\n}\n\nYallist.prototype.shift = function () {\n  if (!this.head) {\n    return undefined\n  }\n\n  var res = this.head.value\n  this.head = this.head.next\n  if (this.head) {\n    this.head.prev = null\n  } else {\n    this.tail = null\n  }\n  this.length--\n  return res\n}\n\nYallist.prototype.forEach = function (fn, thisp) {\n  thisp = thisp || this\n  for (var walker = this.head, i = 0; walker !== null; i++) {\n    fn.call(thisp, walker.value, i, this)\n    walker = walker.next\n  }\n}\n\nYallist.prototype.forEachReverse = function (fn, thisp) {\n  thisp = thisp || this\n  for (var walker = this.tail, i = this.length - 1; walker !== null; i--) {\n    fn.call(thisp, walker.value, i, this)\n    walker = walker.prev\n  }\n}\n\nYallist.prototype.get = function (n) {\n  for (var i = 0, walker = this.head; walker !== null && i < n; i++) {\n    // abort out of the list early if we hit a cycle\n    walker = walker.next\n  }\n  if (i === n && walker !== null) {\n    return walker.value\n  }\n}\n\nYallist.prototype.getReverse = function (n) {\n  for (var i = 0, walker = this.tail; walker !== null && i < n; i++) {\n    // abort out of the list early if we hit a cycle\n    walker = walker.prev\n  }\n  if (i === n && walker !== null) {\n    return walker.value\n  }\n}\n\nYallist.prototype.map = function (fn, thisp) {\n  thisp = thisp || this\n  var res = new Yallist()\n  for (var walker = this.head; walker !== null;) {\n    res.push(fn.call(thisp, walker.value, this))\n    walker = walker.next\n  }\n  return res\n}\n\nYallist.prototype.mapReverse = function (fn, thisp) {\n  thisp = thisp || this\n  var res = new Yallist()\n  for (var walker = this.tail; walker !== null;) {\n    res.push(fn.call(thisp, walker.value, this))\n    walker = walker.prev\n  }\n  return res\n}\n\nYallist.prototype.reduce = function (fn, initial) {\n  var acc\n  var walker = this.head\n  if (arguments.length > 1) {\n    acc = initial\n  } else if (this.head) {\n    walker = this.head.next\n    acc = this.head.value\n  } else {\n    throw new TypeError('Reduce of empty list with no initial value')\n  }\n\n  for (var i = 0; walker !== null; i++) {\n    acc = fn(acc, walker.value, i)\n    walker = walker.next\n  }\n\n  return acc\n}\n\nYallist.prototype.reduceReverse = function (fn, initial) {\n  var acc\n  var walker = this.tail\n  if (arguments.length > 1) {\n    acc = initial\n  } else if (this.tail) {\n    walker = this.tail.prev\n    acc = this.tail.value\n  } else {\n    throw new TypeError('Reduce of empty list with no initial value')\n  }\n\n  for (var i = this.length - 1; walker !== null; i--) {\n    acc = fn(acc, walker.value, i)\n    walker = walker.prev\n  }\n\n  return acc\n}\n\nYallist.prototype.toArray = function () {\n  var arr = new Array(this.length)\n  for (var i = 0, walker = this.head; walker !== null; i++) {\n    arr[i] = walker.value\n    walker = walker.next\n  }\n  return arr\n}\n\nYallist.prototype.toArrayReverse = function () {\n  var arr = new Array(this.length)\n  for (var i = 0, walker = this.tail; walker !== null; i++) {\n    arr[i] = walker.value\n    walker = walker.prev\n  }\n  return arr\n}\n\nYallist.prototype.slice = function (from, to) {\n  to = to || this.length\n  if (to < 0) {\n    to += this.length\n  }\n  from = from || 0\n  if (from < 0) {\n    from += this.length\n  }\n  var ret = new Yallist()\n  if (to < from || to < 0) {\n    return ret\n  }\n  if (from < 0) {\n    from = 0\n  }\n  if (to > this.length) {\n    to = this.length\n  }\n  for (var i = 0, walker = this.head; walker !== null && i < from; i++) {\n    walker = walker.next\n  }\n  for (; walker !== null && i < to; i++, walker = walker.next) {\n    ret.push(walker.value)\n  }\n  return ret\n}\n\nYallist.prototype.sliceReverse = function (from, to) {\n  to = to || this.length\n  if (to < 0) {\n    to += this.length\n  }\n  from = from || 0\n  if (from < 0) {\n    from += this.length\n  }\n  var ret = new Yallist()\n  if (to < from || to < 0) {\n    return ret\n  }\n  if (from < 0) {\n    from = 0\n  }\n  if (to > this.length) {\n    to = this.length\n  }\n  for (var i = this.length, walker = this.tail; walker !== null && i > to; i--) {\n    walker = walker.prev\n  }\n  for (; walker !== null && i > from; i--, walker = walker.prev) {\n    ret.push(walker.value)\n  }\n  return ret\n}\n\nYallist.prototype.splice = function (start, deleteCount, ...nodes) {\n  if (start > this.length) {\n    start = this.length - 1\n  }\n  if (start < 0) {\n    start = this.length + start;\n  }\n\n  for (var i = 0, walker = this.head; walker !== null && i < start; i++) {\n    walker = walker.next\n  }\n\n  var ret = []\n  for (var i = 0; walker && i < deleteCount; i++) {\n    ret.push(walker.value)\n    walker = this.removeNode(walker)\n  }\n  if (walker === null) {\n    walker = this.tail\n  }\n\n  if (walker !== this.head && walker !== this.tail) {\n    walker = walker.prev\n  }\n\n  for (var i = 0; i < nodes.length; i++) {\n    walker = insert(this, walker, nodes[i])\n  }\n  return ret;\n}\n\nYallist.prototype.reverse = function () {\n  var head = this.head\n  var tail = this.tail\n  for (var walker = head; walker !== null; walker = walker.prev) {\n    var p = walker.prev\n    walker.prev = walker.next\n    walker.next = p\n  }\n  this.head = tail\n  this.tail = head\n  return this\n}\n\nfunction insert (self, node, value) {\n  var inserted = node === self.head ?\n    new Node(value, null, node, self) :\n    new Node(value, node, node.next, self)\n\n  if (inserted.next === null) {\n    self.tail = inserted\n  }\n  if (inserted.prev === null) {\n    self.head = inserted\n  }\n\n  self.length++\n\n  return inserted\n}\n\nfunction push (self, item) {\n  self.tail = new Node(item, self.tail, null, self)\n  if (!self.head) {\n    self.head = self.tail\n  }\n  self.length++\n}\n\nfunction unshift (self, item) {\n  self.head = new Node(item, null, self.head, self)\n  if (!self.tail) {\n    self.tail = self.head\n  }\n  self.length++\n}\n\nfunction Node (value, prev, next, list) {\n  if (!(this instanceof Node)) {\n    return new Node(value, prev, next, list)\n  }\n\n  this.list = list\n  this.value = value\n\n  if (prev) {\n    prev.next = this\n    this.prev = prev\n  } else {\n    this.prev = null\n  }\n\n  if (next) {\n    next.prev = this\n    this.next = next\n  } else {\n    this.next = null\n  }\n}\n\ntry {\n  // add if support for Symbol.iterator is present\n  __webpack_require__(/*! ./iterator.js */ \"./node_modules/yallist/iterator.js\")(Yallist)\n} catch (er) {}\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,[encoded data, 14856 characters]\n//# sourceURL=webpack-internal:///./node_modules/yallist/yallist.js\n");

/***/ })

}]);